oh-my-codex 0.15.2 → 0.15.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Cargo.lock +5 -5
- package/Cargo.toml +1 -1
- package/dist/agents/__tests__/native-config.test.js +33 -0
- package/dist/agents/__tests__/native-config.test.js.map +1 -1
- package/dist/catalog/__tests__/plugin-bundle-ssot.test.js +9 -1
- package/dist/catalog/__tests__/plugin-bundle-ssot.test.js.map +1 -1
- package/dist/cli/__tests__/doctor-context-window-warning.test.d.ts +2 -0
- package/dist/cli/__tests__/doctor-context-window-warning.test.d.ts.map +1 -0
- package/dist/cli/__tests__/doctor-context-window-warning.test.js +122 -0
- package/dist/cli/__tests__/doctor-context-window-warning.test.js.map +1 -0
- package/dist/cli/__tests__/doctor-warning-copy.test.js +2 -2
- package/dist/cli/__tests__/doctor-warning-copy.test.js.map +1 -1
- package/dist/cli/__tests__/exec.test.js +1 -0
- package/dist/cli/__tests__/exec.test.js.map +1 -1
- package/dist/cli/__tests__/explore.test.js +40 -17
- package/dist/cli/__tests__/explore.test.js.map +1 -1
- package/dist/cli/__tests__/index.test.js +141 -8
- package/dist/cli/__tests__/index.test.js.map +1 -1
- package/dist/cli/__tests__/mcp-serve.test.js +27 -1
- package/dist/cli/__tests__/mcp-serve.test.js.map +1 -1
- package/dist/cli/__tests__/ralph.test.js +59 -1
- package/dist/cli/__tests__/ralph.test.js.map +1 -1
- package/dist/cli/__tests__/setup-scope.test.js +2 -1
- package/dist/cli/__tests__/setup-scope.test.js.map +1 -1
- package/dist/cli/__tests__/team.test.js +55 -10
- package/dist/cli/__tests__/team.test.js.map +1 -1
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +46 -3
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/index.d.ts +16 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +126 -15
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/mcp-serve.d.ts +1 -0
- package/dist/cli/mcp-serve.d.ts.map +1 -1
- package/dist/cli/mcp-serve.js +8 -0
- package/dist/cli/mcp-serve.js.map +1 -1
- package/dist/cli/ralph.d.ts +2 -0
- package/dist/cli/ralph.d.ts.map +1 -1
- package/dist/cli/ralph.js +17 -1
- package/dist/cli/ralph.js.map +1 -1
- package/dist/cli/team.d.ts +4 -0
- package/dist/cli/team.d.ts.map +1 -1
- package/dist/cli/team.js +47 -22
- package/dist/cli/team.js.map +1 -1
- package/dist/config/__tests__/generator-idempotent.test.js +27 -5
- package/dist/config/__tests__/generator-idempotent.test.js.map +1 -1
- package/dist/config/generator.d.ts +11 -2
- package/dist/config/generator.d.ts.map +1 -1
- package/dist/config/generator.js +114 -58
- package/dist/config/generator.js.map +1 -1
- package/dist/hooks/__tests__/agents-overlay.test.js +59 -0
- package/dist/hooks/__tests__/agents-overlay.test.js.map +1 -1
- package/dist/hooks/__tests__/anti-slop-workflow.test.js +109 -18
- package/dist/hooks/__tests__/anti-slop-workflow.test.js.map +1 -1
- package/dist/hooks/agents-overlay.d.ts.map +1 -1
- package/dist/hooks/agents-overlay.js +21 -0
- package/dist/hooks/agents-overlay.js.map +1 -1
- package/dist/hud/__tests__/index.test.js +30 -14
- package/dist/hud/__tests__/index.test.js.map +1 -1
- package/dist/openclaw/__tests__/dispatcher.test.js +1 -1
- package/dist/openclaw/__tests__/dispatcher.test.js.map +1 -1
- package/dist/pipeline/__tests__/stages.test.js +398 -14
- package/dist/pipeline/__tests__/stages.test.js.map +1 -1
- package/dist/pipeline/stages/team-exec.d.ts +8 -4
- package/dist/pipeline/stages/team-exec.d.ts.map +1 -1
- package/dist/pipeline/stages/team-exec.js +198 -13
- package/dist/pipeline/stages/team-exec.js.map +1 -1
- package/dist/planning/__tests__/artifacts.test.js +246 -1
- package/dist/planning/__tests__/artifacts.test.js.map +1 -1
- package/dist/planning/artifact-names.d.ts +13 -0
- package/dist/planning/artifact-names.d.ts.map +1 -0
- package/dist/planning/artifact-names.js +108 -0
- package/dist/planning/artifact-names.js.map +1 -0
- package/dist/planning/artifacts.d.ts +22 -1
- package/dist/planning/artifacts.d.ts.map +1 -1
- package/dist/planning/artifacts.js +165 -50
- package/dist/planning/artifacts.js.map +1 -1
- package/dist/ralph/__tests__/persistence.test.js +21 -1
- package/dist/ralph/__tests__/persistence.test.js.map +1 -1
- package/dist/ralph/persistence.d.ts.map +1 -1
- package/dist/ralph/persistence.js +6 -4
- package/dist/ralph/persistence.js.map +1 -1
- package/dist/scripts/__tests__/codex-native-hook.test.js +352 -2
- package/dist/scripts/__tests__/codex-native-hook.test.js.map +1 -1
- package/dist/scripts/codex-native-hook.d.ts.map +1 -1
- package/dist/scripts/codex-native-hook.js +85 -6
- package/dist/scripts/codex-native-hook.js.map +1 -1
- package/dist/scripts/codex-native-pre-post.d.ts.map +1 -1
- package/dist/scripts/codex-native-pre-post.js +123 -0
- package/dist/scripts/codex-native-pre-post.js.map +1 -1
- package/dist/scripts/notify-hook/team-worker-posttooluse.js +1 -1
- package/dist/scripts/notify-hook/team-worker-posttooluse.js.map +1 -1
- package/dist/scripts/notify-hook.js +1 -1
- package/dist/scripts/notify-hook.js.map +1 -1
- package/dist/scripts/sync-plugin-mirror.d.ts +1 -0
- package/dist/scripts/sync-plugin-mirror.d.ts.map +1 -1
- package/dist/scripts/sync-plugin-mirror.js +8 -2
- package/dist/scripts/sync-plugin-mirror.js.map +1 -1
- package/dist/state/__tests__/skill-active.test.js +41 -0
- package/dist/state/__tests__/skill-active.test.js.map +1 -1
- package/dist/team/__tests__/api-interop.test.js +220 -0
- package/dist/team/__tests__/api-interop.test.js.map +1 -1
- package/dist/team/__tests__/model-contract.test.js +40 -9
- package/dist/team/__tests__/model-contract.test.js.map +1 -1
- package/dist/team/__tests__/repo-aware-decomposition.test.js +41 -0
- package/dist/team/__tests__/repo-aware-decomposition.test.js.map +1 -1
- package/dist/team/__tests__/runtime-cli.test.js +24 -0
- package/dist/team/__tests__/runtime-cli.test.js.map +1 -1
- package/dist/team/__tests__/runtime.test.js +446 -67
- package/dist/team/__tests__/runtime.test.js.map +1 -1
- package/dist/team/__tests__/state.test.js +13 -0
- package/dist/team/__tests__/state.test.js.map +1 -1
- package/dist/team/__tests__/team-identity.test.d.ts +2 -0
- package/dist/team/__tests__/team-identity.test.d.ts.map +1 -0
- package/dist/team/__tests__/team-identity.test.js +166 -0
- package/dist/team/__tests__/team-identity.test.js.map +1 -0
- package/dist/team/__tests__/tmux-session.test.js +55 -1
- package/dist/team/__tests__/tmux-session.test.js.map +1 -1
- package/dist/team/__tests__/worker-bootstrap.test.js +12 -0
- package/dist/team/__tests__/worker-bootstrap.test.js.map +1 -1
- package/dist/team/api-interop.d.ts +1 -0
- package/dist/team/api-interop.d.ts.map +1 -1
- package/dist/team/api-interop.js +159 -129
- package/dist/team/api-interop.js.map +1 -1
- package/dist/team/delivery-log.d.ts +1 -1
- package/dist/team/delivery-log.d.ts.map +1 -1
- package/dist/team/delivery-log.js.map +1 -1
- package/dist/team/repo-aware-decomposition.d.ts +3 -0
- package/dist/team/repo-aware-decomposition.d.ts.map +1 -1
- package/dist/team/repo-aware-decomposition.js +2 -0
- package/dist/team/repo-aware-decomposition.js.map +1 -1
- package/dist/team/runtime-cli.d.ts +32 -2
- package/dist/team/runtime-cli.d.ts.map +1 -1
- package/dist/team/runtime-cli.js +78 -26
- package/dist/team/runtime-cli.js.map +1 -1
- package/dist/team/runtime.d.ts +1 -1
- package/dist/team/runtime.d.ts.map +1 -1
- package/dist/team/runtime.js +338 -35
- package/dist/team/runtime.js.map +1 -1
- package/dist/team/state.d.ts +9 -0
- package/dist/team/state.d.ts.map +1 -1
- package/dist/team/state.js +21 -0
- package/dist/team/state.js.map +1 -1
- package/dist/team/team-identity.d.ts +26 -0
- package/dist/team/team-identity.d.ts.map +1 -0
- package/dist/team/team-identity.js +169 -0
- package/dist/team/team-identity.js.map +1 -0
- package/dist/team/tmux-session.d.ts +18 -0
- package/dist/team/tmux-session.d.ts.map +1 -1
- package/dist/team/tmux-session.js +61 -1
- package/dist/team/tmux-session.js.map +1 -1
- package/dist/team/worker-bootstrap.d.ts +2 -0
- package/dist/team/worker-bootstrap.d.ts.map +1 -1
- package/dist/team/worker-bootstrap.js +10 -1
- package/dist/team/worker-bootstrap.js.map +1 -1
- package/package.json +1 -1
- package/plugins/oh-my-codex/.codex-plugin/plugin.json +1 -1
- package/plugins/oh-my-codex/skills/ai-slop-cleaner/SKILL.md +30 -5
- package/skills/ai-slop-cleaner/SKILL.md +30 -5
- package/src/scripts/__tests__/codex-native-hook.test.ts +398 -2
- package/src/scripts/codex-native-hook.ts +115 -5
- package/src/scripts/codex-native-pre-post.ts +121 -0
- package/src/scripts/notify-hook/team-worker-posttooluse.ts +1 -1
- package/src/scripts/notify-hook.ts +1 -1
- package/src/scripts/sync-plugin-mirror.ts +11 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../src/hud/__tests__/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,MAAM,WAAW,GAAa;IAC5B,KAAK,EAAE,IAAI;IACX,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;CACZ,CAAC;AAEF,SAAS,QAAQ;IACf,OAAO;QACL,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,IAAI;QACb,aAAa,EAAE,IAAI;QACnB,YAAY,EAAE,IAAI;QAClB,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED,SAAS,KAAK;IACZ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../src/hud/__tests__/index.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -162,7 +162,7 @@ describe('wakeCommandGateway - command gate', () => {
|
|
|
162
162
|
const { wakeCommandGateway } = await import('../dispatcher.js');
|
|
163
163
|
process.env.OMX_OPENCLAW_COMMAND = '1';
|
|
164
164
|
process.env.OMX_OPENCLAW_COMMAND_TIMEOUT_MS = '100';
|
|
165
|
-
const result = await wakeCommandGateway('test', { type: 'command', command: "node -e \"setTimeout(() => {}, 250)\"", timeout:
|
|
165
|
+
const result = await wakeCommandGateway('test', { type: 'command', command: "node -e \"setTimeout(() => {}, 250)\"", timeout: 5000 }, {});
|
|
166
166
|
assert.equal(result.success, true);
|
|
167
167
|
});
|
|
168
168
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher.test.js","sourceRoot":"","sources":["../../../src/openclaw/__tests__/dispatcher.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"dispatcher.test.js","sourceRoot":"","sources":["../../../src/openclaw/__tests__/dispatcher.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { describe, it, beforeEach, afterEach } from 'node:test';
|
|
2
2
|
import assert from 'node:assert/strict';
|
|
3
3
|
import { mkdtemp, rm, mkdir, writeFile } from 'fs/promises';
|
|
4
|
-
import { join } from 'path';
|
|
4
|
+
import { basename, dirname, join } from 'path';
|
|
5
5
|
import { tmpdir } from 'os';
|
|
6
6
|
import { existsSync } from 'fs';
|
|
7
7
|
import { createRalplanStage } from '../stages/ralplan.js';
|
|
@@ -9,6 +9,7 @@ import { createTeamExecStage, buildTeamInstruction } from '../stages/team-exec.j
|
|
|
9
9
|
import { createRalphVerifyStage, createRalphStage, buildRalphInstruction } from '../stages/ralph-verify.js';
|
|
10
10
|
import { createCodeReviewStage, buildCodeReviewInstruction } from '../stages/code-review.js';
|
|
11
11
|
import { buildFollowupStaffingPlan } from '../../team/followup-planner.js';
|
|
12
|
+
import { packageRoot } from '../../utils/paths.js';
|
|
12
13
|
// ---------------------------------------------------------------------------
|
|
13
14
|
// Helpers
|
|
14
15
|
// ---------------------------------------------------------------------------
|
|
@@ -30,6 +31,14 @@ async function cleanup() {
|
|
|
30
31
|
await rm(tempDir, { recursive: true, force: true });
|
|
31
32
|
}
|
|
32
33
|
}
|
|
34
|
+
function decodeRuntimeCliInstructionPayload(instruction) {
|
|
35
|
+
const match = instruction.match(/--input-json-base64\s+([A-Za-z0-9_-]+)/);
|
|
36
|
+
assert.ok(match?.[1], 'expected --input-json-base64 payload');
|
|
37
|
+
return JSON.parse(Buffer.from(match[1], 'base64url').toString('utf-8'));
|
|
38
|
+
}
|
|
39
|
+
function escapeRegExp(value) {
|
|
40
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
41
|
+
}
|
|
33
42
|
// ---------------------------------------------------------------------------
|
|
34
43
|
// RALPLAN stage tests
|
|
35
44
|
// ---------------------------------------------------------------------------
|
|
@@ -166,23 +175,297 @@ describe('Team Exec Stage', () => {
|
|
|
166
175
|
it('respects custom worker count and agent type', async () => {
|
|
167
176
|
const stage = createTeamExecStage({ workerCount: 4, agentType: 'architect' });
|
|
168
177
|
const result = await stage.run(makeCtx());
|
|
178
|
+
const runtimeCliInput = decodeRuntimeCliInstructionPayload(result.artifacts.instruction);
|
|
169
179
|
const arts = result.artifacts;
|
|
170
180
|
assert.equal(arts.workerCount, 4);
|
|
171
181
|
assert.equal(arts.agentType, 'architect');
|
|
182
|
+
assert.equal(runtimeCliInput.agentType, 'architect');
|
|
183
|
+
});
|
|
184
|
+
it('derives the team-exec task from a relative latest approved PRD handoff path', async () => {
|
|
185
|
+
const plansDir = join(tempDir, '.omx', 'plans');
|
|
186
|
+
await mkdir(plansDir, { recursive: true });
|
|
187
|
+
const approvedPrdPath = join(plansDir, 'prd-zeta.md');
|
|
188
|
+
await writeFile(approvedPrdPath, '# Zeta plan\n\nLaunch via omx team 5:debugger "Execute zeta handoff"\n');
|
|
189
|
+
await writeFile(join(plansDir, 'test-spec-zeta.md'), '# Zeta test spec\n');
|
|
190
|
+
const previousCwd = process.cwd();
|
|
191
|
+
try {
|
|
192
|
+
process.chdir(tmpdir());
|
|
193
|
+
const stage = createTeamExecStage();
|
|
194
|
+
const result = await stage.run(makeCtx({
|
|
195
|
+
task: 'original request task',
|
|
196
|
+
artifacts: {
|
|
197
|
+
ralplan: {
|
|
198
|
+
task: 'original request task',
|
|
199
|
+
data: 'plan-content',
|
|
200
|
+
stage: 'ralplan',
|
|
201
|
+
latestPlanPath: join('.omx', 'plans', 'prd-zeta.md'),
|
|
202
|
+
},
|
|
203
|
+
},
|
|
204
|
+
}));
|
|
205
|
+
assert.equal(result.status, 'completed');
|
|
206
|
+
const descriptor = result.artifacts.teamDescriptor;
|
|
207
|
+
const instruction = result.artifacts.instruction;
|
|
208
|
+
assert.equal(descriptor.task, 'Execute zeta handoff');
|
|
209
|
+
assert.match(instruction, /Execute zeta handoff/);
|
|
210
|
+
assert.doesNotMatch(instruction, /plan-content/);
|
|
211
|
+
assert.ok(Array.isArray(descriptor.availableAgentTypes));
|
|
212
|
+
assert.ok(descriptor.availableAgentTypes.length > 0);
|
|
213
|
+
assert.equal(typeof descriptor.staffingPlan.staffingSummary, 'string');
|
|
214
|
+
}
|
|
215
|
+
finally {
|
|
216
|
+
process.chdir(previousCwd);
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
it('derives the team-exec task when latestPlanPath is already cwd-prefixed', async () => {
|
|
220
|
+
const plansDir = join(tempDir, '.omx', 'plans');
|
|
221
|
+
await mkdir(plansDir, { recursive: true });
|
|
222
|
+
await writeFile(join(plansDir, 'prd-zeta.md'), '# Zeta plan\n\nLaunch via omx team 5:debugger "Execute zeta handoff"\n');
|
|
223
|
+
await writeFile(join(plansDir, 'test-spec-zeta.md'), '# Zeta test spec\n');
|
|
224
|
+
const relativeCwd = basename(tempDir);
|
|
225
|
+
const previousCwd = process.cwd();
|
|
226
|
+
try {
|
|
227
|
+
process.chdir(dirname(tempDir));
|
|
228
|
+
const stage = createTeamExecStage();
|
|
229
|
+
const result = await stage.run(makeCtx({
|
|
230
|
+
cwd: relativeCwd,
|
|
231
|
+
task: 'original request task',
|
|
232
|
+
artifacts: {
|
|
233
|
+
ralplan: {
|
|
234
|
+
task: 'original request task',
|
|
235
|
+
stage: 'ralplan',
|
|
236
|
+
latestPlanPath: join(relativeCwd, '.omx', 'plans', 'prd-zeta.md'),
|
|
237
|
+
},
|
|
238
|
+
},
|
|
239
|
+
}));
|
|
240
|
+
assert.equal(result.status, 'completed');
|
|
241
|
+
const descriptor = result.artifacts.teamDescriptor;
|
|
242
|
+
assert.equal(descriptor.task, 'Execute zeta handoff');
|
|
243
|
+
}
|
|
244
|
+
finally {
|
|
245
|
+
process.chdir(previousCwd);
|
|
246
|
+
}
|
|
247
|
+
});
|
|
248
|
+
it('derives the team-exec task when latestPlanPath resolves through equivalent relative segments', async () => {
|
|
249
|
+
const plansDir = join(tempDir, '.omx', 'plans');
|
|
250
|
+
await mkdir(plansDir, { recursive: true });
|
|
251
|
+
await writeFile(join(plansDir, 'prd-zeta.md'), '# Zeta plan\n\nLaunch via omx team 5:debugger "Execute zeta handoff"\n');
|
|
252
|
+
await writeFile(join(plansDir, 'test-spec-zeta.md'), '# Zeta test spec\n');
|
|
253
|
+
const relativeCwd = basename(tempDir);
|
|
254
|
+
const previousCwd = process.cwd();
|
|
255
|
+
try {
|
|
256
|
+
process.chdir(dirname(tempDir));
|
|
257
|
+
const stage = createTeamExecStage();
|
|
258
|
+
const result = await stage.run(makeCtx({
|
|
259
|
+
cwd: relativeCwd,
|
|
260
|
+
task: 'original request task',
|
|
261
|
+
artifacts: {
|
|
262
|
+
ralplan: {
|
|
263
|
+
task: 'original request task',
|
|
264
|
+
stage: 'ralplan',
|
|
265
|
+
latestPlanPath: join('..', relativeCwd, '.omx', 'plans', 'prd-zeta.md'),
|
|
266
|
+
},
|
|
267
|
+
},
|
|
268
|
+
}));
|
|
269
|
+
assert.equal(result.status, 'completed');
|
|
270
|
+
const descriptor = result.artifacts.teamDescriptor;
|
|
271
|
+
assert.equal(descriptor.task, 'Execute zeta handoff');
|
|
272
|
+
}
|
|
273
|
+
finally {
|
|
274
|
+
process.chdir(previousCwd);
|
|
275
|
+
}
|
|
172
276
|
});
|
|
173
|
-
it('
|
|
277
|
+
it('derives the team-exec task from single-quoted approved handoff text with escapes', async () => {
|
|
278
|
+
const plansDir = join(tempDir, '.omx', 'plans');
|
|
279
|
+
await mkdir(plansDir, { recursive: true });
|
|
280
|
+
await writeFile(join(plansDir, 'prd-zeta.md'), "# Zeta plan\n\nLaunch via $team 2:executor 'Fix Bob\\'s regression'\n");
|
|
281
|
+
await writeFile(join(plansDir, 'test-spec-zeta.md'), '# Zeta test spec\n');
|
|
174
282
|
const stage = createTeamExecStage();
|
|
175
|
-
const
|
|
283
|
+
const result = await stage.run(makeCtx({
|
|
284
|
+
task: 'original request task',
|
|
176
285
|
artifacts: {
|
|
177
|
-
ralplan: {
|
|
286
|
+
ralplan: {
|
|
287
|
+
task: 'original request task',
|
|
288
|
+
stage: 'ralplan',
|
|
289
|
+
latestPlanPath: join('.omx', 'plans', 'prd-zeta.md'),
|
|
290
|
+
},
|
|
178
291
|
},
|
|
179
|
-
});
|
|
180
|
-
|
|
292
|
+
}));
|
|
293
|
+
assert.equal(result.status, 'completed');
|
|
181
294
|
const descriptor = result.artifacts.teamDescriptor;
|
|
182
|
-
|
|
183
|
-
assert.
|
|
184
|
-
assert.
|
|
185
|
-
assert.
|
|
295
|
+
const instruction = result.artifacts.instruction;
|
|
296
|
+
assert.equal(descriptor.task, "Fix Bob's regression");
|
|
297
|
+
assert.match(instruction, /Fix Bob's regression/);
|
|
298
|
+
assert.doesNotMatch(instruction, /Fix Bob\\'s regression/);
|
|
299
|
+
});
|
|
300
|
+
it('preserves literal backslashes in single-quoted approved handoff text', async () => {
|
|
301
|
+
const plansDir = join(tempDir, '.omx', 'plans');
|
|
302
|
+
await mkdir(plansDir, { recursive: true });
|
|
303
|
+
await writeFile(join(plansDir, 'prd-zeta.md'), String.raw `# Zeta plan
|
|
304
|
+
|
|
305
|
+
Launch via $team 2:executor 'Fix C:\\tmp and keep \n literal'
|
|
306
|
+
`);
|
|
307
|
+
await writeFile(join(plansDir, 'test-spec-zeta.md'), '# Zeta test spec\n');
|
|
308
|
+
const stage = createTeamExecStage();
|
|
309
|
+
const result = await stage.run(makeCtx({
|
|
310
|
+
task: 'original request task',
|
|
311
|
+
artifacts: {
|
|
312
|
+
ralplan: {
|
|
313
|
+
task: 'original request task',
|
|
314
|
+
stage: 'ralplan',
|
|
315
|
+
latestPlanPath: join('.omx', 'plans', 'prd-zeta.md'),
|
|
316
|
+
},
|
|
317
|
+
},
|
|
318
|
+
}));
|
|
319
|
+
assert.equal(result.status, 'completed');
|
|
320
|
+
const descriptor = result.artifacts.teamDescriptor;
|
|
321
|
+
const instruction = result.artifacts.instruction;
|
|
322
|
+
const expectedTask = String.raw `Fix C:\\tmp and keep \n literal`;
|
|
323
|
+
assert.equal(descriptor.task, expectedTask);
|
|
324
|
+
assert.ok(instruction.includes(JSON.stringify(expectedTask)));
|
|
325
|
+
});
|
|
326
|
+
it('derives the team-exec task from the latest ralplan draft when numeric PRD slugs sort lexically out of order', async () => {
|
|
327
|
+
const plansDir = join(tempDir, '.omx', 'plans');
|
|
328
|
+
await mkdir(plansDir, { recursive: true });
|
|
329
|
+
await writeFile(join(plansDir, 'prd-issue-9.md'), '# Issue 9 plan\n\nLaunch via omx team 2:executor "Execute issue 9 handoff"\n');
|
|
330
|
+
await writeFile(join(plansDir, 'test-spec-issue-9.md'), '# Issue 9 test spec\n');
|
|
331
|
+
await writeFile(join(plansDir, 'prd-issue-10.md'), '# Issue 10 plan\n\nLaunch via omx team 3:debugger "Execute issue 10 handoff"\n');
|
|
332
|
+
await writeFile(join(plansDir, 'test-spec-issue-10.md'), '# Issue 10 test spec\n');
|
|
333
|
+
const stage = createTeamExecStage();
|
|
334
|
+
const result = await stage.run(makeCtx({
|
|
335
|
+
task: 'original request task',
|
|
336
|
+
artifacts: {
|
|
337
|
+
ralplan: {
|
|
338
|
+
task: 'original request task',
|
|
339
|
+
stage: 'ralplan',
|
|
340
|
+
latestPlanPath: join('.omx', 'plans', 'prd-issue-10.md'),
|
|
341
|
+
drafts: [
|
|
342
|
+
{ planPath: join('.omx', 'plans', 'prd-issue-9.md') },
|
|
343
|
+
{ planPath: join('.omx', 'plans', 'prd-issue-10.md') },
|
|
344
|
+
],
|
|
345
|
+
},
|
|
346
|
+
},
|
|
347
|
+
}));
|
|
348
|
+
assert.equal(result.status, 'completed');
|
|
349
|
+
const descriptor = result.artifacts.teamDescriptor;
|
|
350
|
+
assert.equal(descriptor.task, 'Execute issue 10 handoff');
|
|
351
|
+
});
|
|
352
|
+
it('fails closed when latestPlanPath is not the selected latest approved PRD', async () => {
|
|
353
|
+
const plansDir = join(tempDir, '.omx', 'plans');
|
|
354
|
+
await mkdir(plansDir, { recursive: true });
|
|
355
|
+
const stalePrdPath = join(plansDir, 'prd-alpha.md');
|
|
356
|
+
await writeFile(stalePrdPath, '# Alpha plan\n\nLaunch via omx team 2:executor "Execute alpha handoff"\n');
|
|
357
|
+
await writeFile(join(plansDir, 'test-spec-alpha.md'), '# Alpha test spec\n');
|
|
358
|
+
await writeFile(join(plansDir, 'prd-zeta.md'), '# Zeta plan\n\nLaunch via omx team 5:debugger "Execute zeta handoff"\n');
|
|
359
|
+
await writeFile(join(plansDir, 'test-spec-zeta.md'), '# Zeta test spec\n');
|
|
360
|
+
const stage = createTeamExecStage();
|
|
361
|
+
const result = await stage.run(makeCtx({
|
|
362
|
+
task: 'original request task',
|
|
363
|
+
artifacts: {
|
|
364
|
+
ralplan: {
|
|
365
|
+
task: 'original request task',
|
|
366
|
+
data: 'plan-content',
|
|
367
|
+
stage: 'ralplan',
|
|
368
|
+
latestPlanPath: stalePrdPath,
|
|
369
|
+
},
|
|
370
|
+
},
|
|
371
|
+
}));
|
|
372
|
+
assert.equal(result.status, 'failed');
|
|
373
|
+
assert.match(result.error ?? '', /team_exec_approved_handoff_stale:/);
|
|
374
|
+
assert.deepEqual(result.artifacts, {});
|
|
375
|
+
});
|
|
376
|
+
it('keeps structural ralplan handoffs on the generic task path', async () => {
|
|
377
|
+
const stage = createTeamExecStage();
|
|
378
|
+
const result = await stage.run(makeCtx({
|
|
379
|
+
task: 'structural pipeline task',
|
|
380
|
+
artifacts: {
|
|
381
|
+
ralplan: {
|
|
382
|
+
task: 'structural pipeline task',
|
|
383
|
+
data: 'plan-content',
|
|
384
|
+
stage: 'ralplan',
|
|
385
|
+
plansDir: join(tempDir, '.omx', 'plans'),
|
|
386
|
+
specsDir: join(tempDir, '.omx', 'specs'),
|
|
387
|
+
prdPaths: [],
|
|
388
|
+
testSpecPaths: [],
|
|
389
|
+
deepInterviewSpecPaths: [],
|
|
390
|
+
planningComplete: false,
|
|
391
|
+
},
|
|
392
|
+
},
|
|
393
|
+
}));
|
|
394
|
+
assert.equal(result.status, 'completed');
|
|
395
|
+
const descriptor = result.artifacts.teamDescriptor;
|
|
396
|
+
const instruction = result.artifacts.instruction;
|
|
397
|
+
assert.equal(descriptor.task, 'structural pipeline task');
|
|
398
|
+
assert.match(instruction, /structural pipeline task/);
|
|
399
|
+
assert.doesNotMatch(instruction, /plan-content/);
|
|
400
|
+
});
|
|
401
|
+
it('does not adopt a pre-existing approved plan when latestPlanPath is absent', async () => {
|
|
402
|
+
const plansDir = join(tempDir, '.omx', 'plans');
|
|
403
|
+
await mkdir(plansDir, { recursive: true });
|
|
404
|
+
await writeFile(join(plansDir, 'prd-zeta.md'), '# Zeta plan\n\nLaunch via omx team 5:debugger "Execute zeta handoff"\n');
|
|
405
|
+
await writeFile(join(plansDir, 'test-spec-zeta.md'), '# Zeta test spec\n');
|
|
406
|
+
const stage = createTeamExecStage();
|
|
407
|
+
const result = await stage.run(makeCtx({
|
|
408
|
+
task: 'generic pipeline task',
|
|
409
|
+
artifacts: {
|
|
410
|
+
ralplan: {
|
|
411
|
+
task: 'generic pipeline task',
|
|
412
|
+
stage: 'ralplan',
|
|
413
|
+
prdPaths: [join(plansDir, 'prd-zeta.md')],
|
|
414
|
+
testSpecPaths: [join(plansDir, 'test-spec-zeta.md')],
|
|
415
|
+
planningComplete: true,
|
|
416
|
+
},
|
|
417
|
+
},
|
|
418
|
+
}));
|
|
419
|
+
assert.equal(result.status, 'completed');
|
|
420
|
+
const descriptor = result.artifacts.teamDescriptor;
|
|
421
|
+
const instruction = result.artifacts.instruction;
|
|
422
|
+
assert.equal(descriptor.task, 'generic pipeline task');
|
|
423
|
+
assert.match(instruction, /generic pipeline task/);
|
|
424
|
+
assert.doesNotMatch(instruction, /Execute zeta handoff/);
|
|
425
|
+
});
|
|
426
|
+
it('fails closed when latestPlanPath has no team launch hint', async () => {
|
|
427
|
+
const plansDir = join(tempDir, '.omx', 'plans');
|
|
428
|
+
await mkdir(plansDir, { recursive: true });
|
|
429
|
+
const prdPath = join(plansDir, 'prd-no-team-hint.md');
|
|
430
|
+
await writeFile(prdPath, '# PRD\n\nNo team launch hint here.\n');
|
|
431
|
+
const stage = createTeamExecStage();
|
|
432
|
+
const result = await stage.run(makeCtx({
|
|
433
|
+
task: 'original request task',
|
|
434
|
+
artifacts: {
|
|
435
|
+
ralplan: {
|
|
436
|
+
task: 'original request task',
|
|
437
|
+
stage: 'ralplan',
|
|
438
|
+
latestPlanPath: prdPath,
|
|
439
|
+
},
|
|
440
|
+
},
|
|
441
|
+
}));
|
|
442
|
+
assert.equal(result.status, 'failed');
|
|
443
|
+
assert.match(result.error ?? '', /team_exec_approved_handoff_missing:/);
|
|
444
|
+
});
|
|
445
|
+
it('fails closed when latestPlanPath has ambiguous team launch hints', async () => {
|
|
446
|
+
const plansDir = join(tempDir, '.omx', 'plans');
|
|
447
|
+
await mkdir(plansDir, { recursive: true });
|
|
448
|
+
const prdPath = join(plansDir, 'prd-ambiguous-team-hint.md');
|
|
449
|
+
await writeFile(prdPath, [
|
|
450
|
+
'# PRD',
|
|
451
|
+
'',
|
|
452
|
+
'Launch via omx team 2:executor "Execute first handoff"',
|
|
453
|
+
'Launch via omx team 2:executor "Execute second handoff"',
|
|
454
|
+
].join('\n'));
|
|
455
|
+
await writeFile(join(plansDir, 'test-spec-ambiguous-team-hint.md'), '# Test spec\n');
|
|
456
|
+
const stage = createTeamExecStage();
|
|
457
|
+
const result = await stage.run(makeCtx({
|
|
458
|
+
task: 'original request task',
|
|
459
|
+
artifacts: {
|
|
460
|
+
ralplan: {
|
|
461
|
+
task: 'original request task',
|
|
462
|
+
stage: 'ralplan',
|
|
463
|
+
latestPlanPath: prdPath,
|
|
464
|
+
},
|
|
465
|
+
},
|
|
466
|
+
}));
|
|
467
|
+
assert.equal(result.status, 'failed');
|
|
468
|
+
assert.match(result.error ?? '', /team_exec_approved_handoff_ambiguous:/);
|
|
186
469
|
});
|
|
187
470
|
it('falls back to raw task when no ralplan artifacts exist', async () => {
|
|
188
471
|
const stage = createTeamExecStage();
|
|
@@ -192,7 +475,7 @@ describe('Team Exec Stage', () => {
|
|
|
192
475
|
assert.equal(typeof descriptor.staffingPlan.staffingSummary, 'string');
|
|
193
476
|
});
|
|
194
477
|
describe('buildTeamInstruction', () => {
|
|
195
|
-
it('builds correct
|
|
478
|
+
it('builds correct runtime-cli instruction', () => {
|
|
196
479
|
const staffingPlan = buildFollowupStaffingPlan('team', 'implement feature', ['executor', 'test-engineer'], {
|
|
197
480
|
workerCount: 3,
|
|
198
481
|
});
|
|
@@ -205,8 +488,21 @@ describe('Team Exec Stage', () => {
|
|
|
205
488
|
useWorktrees: false,
|
|
206
489
|
cwd: '/tmp/test',
|
|
207
490
|
});
|
|
208
|
-
|
|
209
|
-
assert.match(instruction, /
|
|
491
|
+
const runtimeCliInput = decodeRuntimeCliInstructionPayload(instruction);
|
|
492
|
+
assert.match(instruction, /runtime-cli\.js/);
|
|
493
|
+
assert.match(instruction, /--input-json-base64/);
|
|
494
|
+
assert.match(instruction, new RegExp(escapeRegExp(join(packageRoot(), 'dist', 'team', 'runtime-cli.js'))));
|
|
495
|
+
assert.doesNotMatch(instruction, new RegExp(escapeRegExp(join('/tmp/test', 'dist', 'team', 'runtime-cli.js'))));
|
|
496
|
+
assert.equal(runtimeCliInput.teamName, 'implement-feature');
|
|
497
|
+
assert.equal(runtimeCliInput.workerCount, 3);
|
|
498
|
+
assert.equal(runtimeCliInput.agentType, 'executor');
|
|
499
|
+
assert.equal('agentTypes' in runtimeCliInput, false);
|
|
500
|
+
assert.equal(runtimeCliInput.cwd, '/tmp/test');
|
|
501
|
+
assert.ok(Array.isArray(runtimeCliInput.tasks));
|
|
502
|
+
assert.equal(runtimeCliInput.tasks.length > 0, true);
|
|
503
|
+
assert.equal('task' in runtimeCliInput, false);
|
|
504
|
+
assert.equal('useWorktrees' in runtimeCliInput, false);
|
|
505
|
+
assert.equal(runtimeCliInput.decompositionMetadata.decomposition_source, 'legacy_text');
|
|
210
506
|
assert.match(instruction, /staffing=/);
|
|
211
507
|
assert.match(instruction, /verify=/);
|
|
212
508
|
});
|
|
@@ -224,9 +520,97 @@ describe('Team Exec Stage', () => {
|
|
|
224
520
|
useWorktrees: false,
|
|
225
521
|
cwd: '/tmp',
|
|
226
522
|
});
|
|
227
|
-
|
|
523
|
+
const runtimeCliInput = decodeRuntimeCliInstructionPayload(instruction);
|
|
524
|
+
assert.match(instruction, /runtime-cli\.js/);
|
|
525
|
+
assert.match(instruction, /--input-json-base64/);
|
|
526
|
+
assert.equal(runtimeCliInput.workerCount, 1);
|
|
527
|
+
assert.equal(runtimeCliInput.agentType, 'executor');
|
|
228
528
|
assert.match(instruction, /staffing=/);
|
|
229
529
|
});
|
|
530
|
+
it('keeps Windows instructions free of POSIX launch comments', () => {
|
|
531
|
+
const task = `fix "quoted" paths, keep it's 100% safe & support café 运行时`;
|
|
532
|
+
const staffingPlan = buildFollowupStaffingPlan('team', task, ['executor', 'test-engineer'], {
|
|
533
|
+
workerCount: 1,
|
|
534
|
+
});
|
|
535
|
+
const instruction = buildTeamInstruction({
|
|
536
|
+
task,
|
|
537
|
+
workerCount: 1,
|
|
538
|
+
agentType: 'executor',
|
|
539
|
+
availableAgentTypes: ['executor', 'test-engineer'],
|
|
540
|
+
staffingPlan,
|
|
541
|
+
useWorktrees: false,
|
|
542
|
+
cwd: 'C:\\repo with spaces',
|
|
543
|
+
}, { platform: 'win32' });
|
|
544
|
+
const runtimeCliInput = decodeRuntimeCliInstructionPayload(instruction);
|
|
545
|
+
const commandPrefix = instruction.split('--input-json-base64')[0] ?? '';
|
|
546
|
+
const encodedPayload = instruction.match(/--input-json-base64\s+([A-Za-z0-9_-]+)/)?.[1] ?? '';
|
|
547
|
+
assert.match(instruction, /^"[^"]+"\s+"[^"]*runtime-cli\.js"\s+--input-json-base64\s+[A-Za-z0-9_-]+/);
|
|
548
|
+
assert.equal(commandPrefix.includes("'"), false);
|
|
549
|
+
assert.doesNotMatch(encodedPayload, /[%&|<>"'\s]/);
|
|
550
|
+
assert.doesNotMatch(instruction, /# staffing=/);
|
|
551
|
+
assert.doesNotMatch(instruction, /# verify=/);
|
|
552
|
+
assert.equal(runtimeCliInput.workerCount, 1);
|
|
553
|
+
assert.equal(runtimeCliInput.agentType, 'executor');
|
|
554
|
+
assert.equal('agentTypes' in runtimeCliInput, false);
|
|
555
|
+
assert.equal(runtimeCliInput.cwd, 'C:\\repo with spaces');
|
|
556
|
+
});
|
|
557
|
+
it('preserves approved DAG handoff tasks and metadata in the runtime-cli payload', async () => {
|
|
558
|
+
const plansDir = join(tempDir, '.omx', 'plans');
|
|
559
|
+
await mkdir(plansDir, { recursive: true });
|
|
560
|
+
await writeFile(join(plansDir, 'prd-demo.md'), '# Demo\n\nLaunch via omx team 2:executor "Execute approved demo plan"\n');
|
|
561
|
+
await writeFile(join(plansDir, 'test-spec-demo.md'), '# Demo Test Spec\n');
|
|
562
|
+
await writeFile(join(plansDir, 'team-dag-demo.json'), JSON.stringify({
|
|
563
|
+
schema_version: 1,
|
|
564
|
+
nodes: [
|
|
565
|
+
{
|
|
566
|
+
id: 'impl',
|
|
567
|
+
lane: 'implementation',
|
|
568
|
+
role: 'executor',
|
|
569
|
+
subject: 'Implement runtime',
|
|
570
|
+
description: 'Change runtime',
|
|
571
|
+
filePaths: ['src/team/runtime.ts'],
|
|
572
|
+
requires_code_change: true,
|
|
573
|
+
},
|
|
574
|
+
{
|
|
575
|
+
id: 'verify',
|
|
576
|
+
lane: 'verification',
|
|
577
|
+
role: 'test-engineer',
|
|
578
|
+
subject: 'Verify runtime',
|
|
579
|
+
description: 'Cover runtime',
|
|
580
|
+
depends_on: ['impl'],
|
|
581
|
+
},
|
|
582
|
+
],
|
|
583
|
+
worker_policy: { requested_count: 2, count_source: 'cli-explicit' },
|
|
584
|
+
}));
|
|
585
|
+
const staffingPlan = buildFollowupStaffingPlan('team', 'Execute approved demo plan', ['executor', 'test-engineer'], {
|
|
586
|
+
workerCount: 2,
|
|
587
|
+
});
|
|
588
|
+
const instruction = buildTeamInstruction({
|
|
589
|
+
task: 'Execute approved demo plan',
|
|
590
|
+
workerCount: 2,
|
|
591
|
+
agentType: 'executor',
|
|
592
|
+
availableAgentTypes: ['executor', 'test-engineer'],
|
|
593
|
+
staffingPlan,
|
|
594
|
+
useWorktrees: false,
|
|
595
|
+
cwd: tempDir,
|
|
596
|
+
});
|
|
597
|
+
const runtimeCliInput = decodeRuntimeCliInstructionPayload(instruction);
|
|
598
|
+
const tasks = runtimeCliInput.tasks;
|
|
599
|
+
const decompositionMetadata = runtimeCliInput.decompositionMetadata;
|
|
600
|
+
assert.equal(runtimeCliInput.teamName, 'execute-approved-demo-plan');
|
|
601
|
+
assert.equal(runtimeCliInput.workerCount, 2);
|
|
602
|
+
assert.equal(runtimeCliInput.agentType, 'executor');
|
|
603
|
+
assert.equal(tasks.length, 2);
|
|
604
|
+
assert.equal(tasks[0]?.symbolic_id, 'impl');
|
|
605
|
+
assert.deepEqual(tasks[1]?.symbolic_depends_on, ['impl']);
|
|
606
|
+
assert.deepEqual(tasks[0]?.filePaths, ['src/team/runtime.ts']);
|
|
607
|
+
assert.equal(tasks[0]?.lane, 'implementation');
|
|
608
|
+
assert.equal(decompositionMetadata.decomposition_source, 'dag_sidecar');
|
|
609
|
+
assert.deepEqual(decompositionMetadata.node_dependencies, {
|
|
610
|
+
impl: [],
|
|
611
|
+
verify: ['impl'],
|
|
612
|
+
});
|
|
613
|
+
});
|
|
230
614
|
});
|
|
231
615
|
});
|
|
232
616
|
// ---------------------------------------------------------------------------
|