import test from "node:test"; import assert from "node:assert/strict"; import path from "node:path"; import { buildOmxTeamTaskExecution, getOmxTeamTaskRunnerConfig, parseOmxTeamTaskResult, shouldUseOmxTeamTaskRunner, } from "../local-agent/omx-team-task-runner.mjs"; test("dispatch execution with omx backend builds OMX runtime payload", () => { const config = getOmxTeamTaskRunnerConfig({ BOSS_OMX_ENABLED: "true", BOSS_OMX_COMMAND: process.execPath, BOSS_OMX_ARGS: "scripts/omx-team-smoke.mjs", BOSS_OMX_WORKDIR: "/Users/kris/code/boss", BOSS_OMX_TIMEOUT_MS: "32000", }); const execution = buildOmxTeamTaskExecution(config, { taskId: "mastertask-omx-1", taskType: "dispatch_execution", orchestrationBackendId: "omx-team", dispatchExecutionId: "dx-omx-1", projectId: "group-project-1", targetProjectId: "thread-project-1", targetThreadId: "thread-1", targetThreadDisplayName: "前端主线程", executionPrompt: "请执行群聊任务", requestedByAccount: "kris", requestedAt: "2026-04-03T12:00:00.000Z", }); assert.equal(execution.command, process.execPath); assert.deepEqual(execution.args, [path.resolve("/Users/kris/code/boss", "scripts/omx-team-smoke.mjs")]); assert.equal(execution.cwd, "/Users/kris/code/boss"); assert.equal(execution.timeoutMs, 32000); assert.equal(execution.stdinPayload.requestKind, "dispatch_execution"); assert.equal(execution.stdinPayload.requestId, "mastertask-omx-1"); assert.equal(execution.stdinPayload.dispatchExecutionId, "dx-omx-1"); assert.equal(execution.stdinPayload.groupProjectId, "group-project-1"); assert.equal(execution.stdinPayload.targetProjectId, "thread-project-1"); assert.equal(execution.stdinPayload.targetThreadId, "thread-1"); assert.equal(execution.stdinPayload.targetThreadDisplayName, "前端主线程"); assert.equal(execution.stdinPayload.objective, "请执行群聊任务"); assert.equal(execution.stdinPayload.workersRequested, 1); assert.equal(execution.stdinPayload.context.requestedBy, "kris"); }); test("non dispatch or non omx tasks do not use OMX runtime", () => { assert.equal( shouldUseOmxTeamTaskRunner({ taskType: "dispatch_execution", orchestrationBackendId: "boss-native-orchestrator", }), false, ); assert.equal( shouldUseOmxTeamTaskRunner({ taskType: "conversation_reply", orchestrationBackendId: "omx-team", }), false, ); }); test("OMX task result parser maps completed payload into dispatch completion fields", () => { const parsed = parseOmxTeamTaskResult( JSON.stringify({ status: "completed", backendId: "omx-team", requestId: "mastertask-omx-1", dispatchExecutionId: "dx-omx-1", rawThreadReply: "线程原始回复", replyBody: "主 Agent 汇总", }), ); assert.equal(parsed.status, "completed"); assert.equal(parsed.requestId, "mastertask-omx-1"); assert.equal(parsed.dispatchExecutionId, "dx-omx-1"); assert.equal(parsed.rawThreadReply, "线程原始回复"); assert.equal(parsed.replyBody, "主 Agent 汇总"); }); test("OMX task result parser surfaces failures", () => { const parsed = parseOmxTeamTaskResult( JSON.stringify({ status: "failed", backendId: "omx-team", requestId: "mastertask-omx-1", error: "OMX_EXECUTION_FAILED: test", }), ); assert.equal(parsed.status, "failed"); assert.equal(parsed.requestId, "mastertask-omx-1"); assert.equal(parsed.errorMessage, "OMX_EXECUTION_FAILED: test"); });