@jterrats/open-orchestra 0.4.0 → 0.4.2-beta.1
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/CHANGELOG.md +21 -0
- package/dist/assets/web-console.js +91 -1
- package/dist/autonomous-phase-lifecycle.d.ts +26 -0
- package/dist/autonomous-phase-lifecycle.js +214 -0
- package/dist/autonomous-phase-lifecycle.js.map +1 -0
- package/dist/autonomous-run-state.d.ts +8 -0
- package/dist/autonomous-run-state.js +162 -0
- package/dist/autonomous-run-state.js.map +1 -0
- package/dist/autonomous-run-store.d.ts +17 -0
- package/dist/autonomous-run-store.js +89 -0
- package/dist/autonomous-run-store.js.map +1 -0
- package/dist/autonomous-workflow-constants.d.ts +7 -0
- package/dist/autonomous-workflow-constants.js +36 -0
- package/dist/autonomous-workflow-constants.js.map +1 -0
- package/dist/autonomous-workflow.d.ts +6 -45
- package/dist/autonomous-workflow.js +4 -394
- package/dist/autonomous-workflow.js.map +1 -1
- package/dist/benchmark.js +16 -0
- package/dist/benchmark.js.map +1 -1
- package/dist/clarification.d.ts +2 -0
- package/dist/clarification.js +23 -5
- package/dist/clarification.js.map +1 -1
- package/dist/cli.js +101 -14
- package/dist/cli.js.map +1 -1
- package/dist/command-manifest.js +8 -0
- package/dist/command-manifest.js.map +1 -1
- package/dist/command-utils.d.ts +6 -0
- package/dist/command-utils.js +19 -0
- package/dist/command-utils.js.map +1 -0
- package/dist/commands.d.ts +15 -43
- package/dist/commands.js +466 -912
- package/dist/commands.js.map +1 -1
- package/dist/constants.js +20 -0
- package/dist/constants.js.map +1 -1
- package/dist/defaults.d.ts +11 -0
- package/dist/defaults.js +11 -0
- package/dist/defaults.js.map +1 -1
- package/dist/instruction-commands.d.ts +5 -0
- package/dist/instruction-commands.js +98 -0
- package/dist/instruction-commands.js.map +1 -0
- package/dist/mcp-oauth-proxy.d.ts +47 -0
- package/dist/mcp-oauth-proxy.js +276 -0
- package/dist/mcp-oauth-proxy.js.map +1 -1
- package/dist/memory.d.ts +11 -0
- package/dist/memory.js +224 -0
- package/dist/memory.js.map +1 -0
- package/dist/metrics-commands.d.ts +3 -0
- package/dist/metrics-commands.js +123 -0
- package/dist/metrics-commands.js.map +1 -0
- package/dist/model-commands.d.ts +13 -0
- package/dist/model-commands.js +216 -0
- package/dist/model-commands.js.map +1 -0
- package/dist/notifications.d.ts +25 -0
- package/dist/notifications.js +187 -11
- package/dist/notifications.js.map +1 -1
- package/dist/package-update-check.d.ts +19 -0
- package/dist/package-update-check.js +123 -0
- package/dist/package-update-check.js.map +1 -0
- package/dist/runtime-adapters.d.ts +5 -1
- package/dist/runtime-adapters.js +27 -0
- package/dist/runtime-adapters.js.map +1 -1
- package/dist/runtime-bootstrap.js +4 -2
- package/dist/runtime-bootstrap.js.map +1 -1
- package/dist/runtime-commands.d.ts +9 -0
- package/dist/runtime-commands.js +156 -0
- package/dist/runtime-commands.js.map +1 -0
- package/dist/runtime-execution-adapters.d.ts +2 -0
- package/dist/runtime-execution-adapters.js +163 -0
- package/dist/runtime-execution-adapters.js.map +1 -0
- package/dist/runtime-execution-renderer.d.ts +10 -0
- package/dist/runtime-execution-renderer.js +113 -0
- package/dist/runtime-execution-renderer.js.map +1 -0
- package/dist/runtime-execution.d.ts +27 -0
- package/dist/runtime-execution.js +153 -0
- package/dist/runtime-execution.js.map +1 -0
- package/dist/skills-commands.d.ts +10 -0
- package/dist/skills-commands.js +138 -0
- package/dist/skills-commands.js.map +1 -0
- package/dist/skills.d.ts +7 -1
- package/dist/skills.js +120 -11
- package/dist/skills.js.map +1 -1
- package/dist/sprint-commands.d.ts +5 -0
- package/dist/sprint-commands.js +120 -0
- package/dist/sprint-commands.js.map +1 -0
- package/dist/subagent-protocol.js +6 -0
- package/dist/subagent-protocol.js.map +1 -1
- package/dist/telemetry-commands.d.ts +7 -0
- package/dist/telemetry-commands.js +82 -0
- package/dist/telemetry-commands.js.map +1 -0
- package/dist/tool-commands.d.ts +5 -0
- package/dist/tool-commands.js +159 -0
- package/dist/tool-commands.js.map +1 -0
- package/dist/types.d.ts +206 -4
- package/dist/types.js.map +1 -1
- package/dist/web-api.js +93 -1
- package/dist/web-api.js.map +1 -1
- package/dist/web-chart-contracts.d.ts +3 -1
- package/dist/web-chart-contracts.js +6 -0
- package/dist/web-chart-contracts.js.map +1 -1
- package/dist/web-console.js +2 -2
- package/dist/workflow-services.d.ts +21 -3
- package/dist/workflow-services.js +474 -10
- package/dist/workflow-services.js.map +1 -1
- package/docs/runtime-llm-flow.md +46 -0
- package/package.json +2 -1
- package/skills/proactive-orchestra/SKILL.md +27 -0
- package/skills/proactive-orchestra/manifest.json +41 -0
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { appendFile, readFile } from "node:fs/promises";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { ensureDir, resolveWorkflowPath } from "./fs-utils.js";
|
|
5
|
+
import { appendEvent } from "./workspace.js";
|
|
6
|
+
export const AUTONOMOUS_RUNS_FILE = "workflow-runs.jsonl";
|
|
7
|
+
export function autonomousRunsPath(root) {
|
|
8
|
+
return resolveWorkflowPath(root, AUTONOMOUS_RUNS_FILE);
|
|
9
|
+
}
|
|
10
|
+
export async function createAutonomousRun(root, opts) {
|
|
11
|
+
const now = new Date().toISOString();
|
|
12
|
+
const runSuffix = `${Date.now()}-${Math.random().toString(36).slice(2, 6)}`;
|
|
13
|
+
const id = `wfrun-${runSuffix}`;
|
|
14
|
+
const skippedPhases = (opts.skippedPhases ?? []).map((phase) => ({
|
|
15
|
+
phase: phase.phase,
|
|
16
|
+
role: phase.role,
|
|
17
|
+
status: "skipped",
|
|
18
|
+
taskId: `${opts.taskId}-${phase.phase}-${runSuffix}-skipped`,
|
|
19
|
+
startedAt: now,
|
|
20
|
+
completedAt: now,
|
|
21
|
+
skippedAt: now,
|
|
22
|
+
notes: "Phase skipped by workflow phase selection",
|
|
23
|
+
}));
|
|
24
|
+
const run = {
|
|
25
|
+
id,
|
|
26
|
+
taskId: opts.taskId,
|
|
27
|
+
gates: opts.gates,
|
|
28
|
+
maxIterations: opts.maxIterations,
|
|
29
|
+
...(opts.phaseSequence ? { phaseSequence: opts.phaseSequence } : {}),
|
|
30
|
+
qaIterations: 0,
|
|
31
|
+
phases: skippedPhases,
|
|
32
|
+
status: "running",
|
|
33
|
+
createdAt: now,
|
|
34
|
+
updatedAt: now,
|
|
35
|
+
};
|
|
36
|
+
await persistRun(root, run);
|
|
37
|
+
await appendEvent(root, {
|
|
38
|
+
type: "AUTONOMOUS_RUN_STARTED",
|
|
39
|
+
taskId: opts.taskId,
|
|
40
|
+
actor: "parent",
|
|
41
|
+
summary: `Autonomous workflow started [gates=${opts.gates}]`,
|
|
42
|
+
metadata: {
|
|
43
|
+
runId: run.id,
|
|
44
|
+
gates: opts.gates,
|
|
45
|
+
maxIterations: opts.maxIterations,
|
|
46
|
+
phaseSequence: opts.phaseSequence,
|
|
47
|
+
skippedPhases: opts.skippedPhases?.map((phase) => phase.phase) ?? [],
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
return run;
|
|
51
|
+
}
|
|
52
|
+
export async function readAutonomousRun(root, id) {
|
|
53
|
+
const runs = await latestRuns(root);
|
|
54
|
+
return runs.get(id);
|
|
55
|
+
}
|
|
56
|
+
export async function listAutonomousRuns(root) {
|
|
57
|
+
return [...(await latestRuns(root)).values()];
|
|
58
|
+
}
|
|
59
|
+
export async function listActiveAutonomousRuns(root) {
|
|
60
|
+
return (await listAutonomousRuns(root)).filter((run) => !isTerminalAutonomousRunStatus(run.status));
|
|
61
|
+
}
|
|
62
|
+
export function isTerminalAutonomousRunStatus(status) {
|
|
63
|
+
return status === "done" || status === "failed" || status === "canceled";
|
|
64
|
+
}
|
|
65
|
+
export async function persistRun(root, run) {
|
|
66
|
+
const file = autonomousRunsPath(root);
|
|
67
|
+
await ensureDir(path.dirname(file));
|
|
68
|
+
const current = (await latestRuns(root)).get(run.id);
|
|
69
|
+
if (current?.status === "canceled" && run.status !== "canceled") {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
await appendFile(file, `${JSON.stringify(run)}\n`, "utf8");
|
|
73
|
+
}
|
|
74
|
+
async function latestRuns(root) {
|
|
75
|
+
const file = autonomousRunsPath(root);
|
|
76
|
+
const latest = new Map();
|
|
77
|
+
if (!existsSync(file))
|
|
78
|
+
return latest;
|
|
79
|
+
const lines = (await readFile(file, "utf8"))
|
|
80
|
+
.trim()
|
|
81
|
+
.split("\n")
|
|
82
|
+
.filter(Boolean);
|
|
83
|
+
for (const line of lines) {
|
|
84
|
+
const run = JSON.parse(line);
|
|
85
|
+
latest.set(run.id, run);
|
|
86
|
+
}
|
|
87
|
+
return latest;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=autonomous-run-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autonomous-run-store.js","sourceRoot":"","sources":["../src/autonomous-run-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// Phase graph: ordered list of [phase-id, role-id, summary]
|
|
2
|
+
export const AUTONOMOUS_PHASE_SEQUENCE = [
|
|
3
|
+
{
|
|
4
|
+
phase: "pm",
|
|
5
|
+
role: "product_manager",
|
|
6
|
+
summary: "Product framing, prioritization, and success metrics",
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
phase: "po",
|
|
10
|
+
role: "product_owner",
|
|
11
|
+
summary: "Backlog refinement, story sizing, and acceptance criteria",
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
phase: "architect",
|
|
15
|
+
role: "architect",
|
|
16
|
+
summary: "Technical tasking, design decisions, and size estimation",
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
phase: "developer",
|
|
20
|
+
role: "developer",
|
|
21
|
+
summary: "Implementation against acceptance criteria",
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
phase: "qa",
|
|
25
|
+
role: "qa",
|
|
26
|
+
summary: "Verification against acceptance criteria and edge cases",
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
phase: "release",
|
|
30
|
+
role: "release_manager",
|
|
31
|
+
summary: "Release candidate validation and PR creation",
|
|
32
|
+
},
|
|
33
|
+
];
|
|
34
|
+
// Gate transitions that require human approval in 'phase' mode.
|
|
35
|
+
export const PHASE_GATES = new Set(["po→architect", "qa→release"]);
|
|
36
|
+
//# sourceMappingURL=autonomous-workflow-constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autonomous-workflow-constants.js","sourceRoot":"","sources":["../src/autonomous-workflow-constants.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,MAAM,CAAC,MAAM,yBAAyB,GAIjC;IACH;QACE,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,sDAAsD;KAChE;IACD;QACE,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,2DAA2D;KACrE;IACD;QACE,KAAK,EAAE,WAAW;QAClB,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,0DAA0D;KACpE;IACD;QACE,KAAK,EAAE,WAAW;QAClB,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,4CAA4C;KACtD;IACD;QACE,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,yDAAyD;KACnE;IACD;QACE,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,8CAA8C;KACxD;CACF,CAAC;AAKF,gEAAgE;AAChE,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAS,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC,CAAC"}
|
|
@@ -1,45 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
7
|
-
export declare const AUTONOMOUS_RUNS_FILE = "workflow-runs.jsonl";
|
|
8
|
-
export declare function autonomousRunsPath(root: string): string;
|
|
9
|
-
export type SizingCheckResult = {
|
|
10
|
-
found: true;
|
|
11
|
-
sizing: SizingLabel;
|
|
12
|
-
points?: number;
|
|
13
|
-
} | {
|
|
14
|
-
found: false;
|
|
15
|
-
};
|
|
16
|
-
export declare function checkArchitectSizing(root: string, taskId: string): Promise<SizingCheckResult>;
|
|
17
|
-
export type AutonomousRunOptions = {
|
|
18
|
-
taskId: string;
|
|
19
|
-
gates: AutonomousGateMode;
|
|
20
|
-
maxIterations: number;
|
|
21
|
-
};
|
|
22
|
-
export declare function createAutonomousRun(root: string, opts: AutonomousRunOptions): Promise<AutonomousRun>;
|
|
23
|
-
export declare function readAutonomousRun(root: string, id: string): Promise<AutonomousRun | undefined>;
|
|
24
|
-
export declare function listAutonomousRuns(root: string): Promise<AutonomousRun[]>;
|
|
25
|
-
export type PhaseOutcome = {
|
|
26
|
-
kind: "done";
|
|
27
|
-
notes: string;
|
|
28
|
-
} | {
|
|
29
|
-
kind: "gate_pause";
|
|
30
|
-
reviewArtifact: string;
|
|
31
|
-
} | {
|
|
32
|
-
kind: "qa_fail";
|
|
33
|
-
notes: string;
|
|
34
|
-
};
|
|
35
|
-
export declare function initPhase(root: string, run: AutonomousRun, phaseIndex: number, retryContext?: string): Promise<AutonomousPhase>;
|
|
36
|
-
export declare function closePhase(root: string, run: AutonomousRun, phaseIndex: number, outcome: PhaseOutcome): Promise<{
|
|
37
|
-
run: AutonomousRun;
|
|
38
|
-
handoffArtifact?: string;
|
|
39
|
-
reviewArtifact?: string;
|
|
40
|
-
}>;
|
|
41
|
-
export declare function markRunFailed(root: string, run: AutonomousRun, reason: string): Promise<AutonomousRun>;
|
|
42
|
-
export declare function markRunDone(root: string, run: AutonomousRun): Promise<AutonomousRun>;
|
|
43
|
-
export declare function resumePhaseIndex(run: AutonomousRun): number;
|
|
44
|
-
export declare function suspendPhaseForClarification(root: string, run: AutonomousRun, phaseIndex: number): Promise<AutonomousRun>;
|
|
45
|
-
export declare function resumePhaseFromClarification(root: string, run: AutonomousRun, phaseIndex: number): Promise<AutonomousRun>;
|
|
1
|
+
export { AUTONOMOUS_PHASE_SEQUENCE, PHASE_GATES, } from "./autonomous-workflow-constants.js";
|
|
2
|
+
export { AUTONOMOUS_RUNS_FILE, autonomousRunsPath, createAutonomousRun, isTerminalAutonomousRunStatus, listActiveAutonomousRuns, listAutonomousRuns, persistRun, readAutonomousRun, } from "./autonomous-run-store.js";
|
|
3
|
+
export { checkArchitectSizing, closePhase, initPhase, } from "./autonomous-phase-lifecycle.js";
|
|
4
|
+
export { cancelRun, markRunDone, markRunFailed, resumePhaseFromClarification, resumePhaseIndex, suspendPhaseForClarification, } from "./autonomous-run-state.js";
|
|
5
|
+
export type { AutonomousRunOptions } from "./autonomous-run-store.js";
|
|
6
|
+
export type { PhaseOutcome, SizingCheckResult, } from "./autonomous-phase-lifecycle.js";
|
|
@@ -1,395 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import { appendEvent, readEvents, writeArtifact } from "./workspace.js";
|
|
6
|
-
import { addTask, createHandoff, updateTask } from "./workflow-services.js";
|
|
7
|
-
import { notifyGatePaused } from "./notifications.js";
|
|
8
|
-
import { SIZING_LABELS } from "./types.js";
|
|
9
|
-
// Phase graph: ordered list of [phase-id, role-id, summary]
|
|
10
|
-
export const AUTONOMOUS_PHASE_SEQUENCE = [
|
|
11
|
-
{
|
|
12
|
-
phase: "pm",
|
|
13
|
-
role: "product_manager",
|
|
14
|
-
summary: "Product framing, prioritization, and success metrics",
|
|
15
|
-
},
|
|
16
|
-
{
|
|
17
|
-
phase: "po",
|
|
18
|
-
role: "product_owner",
|
|
19
|
-
summary: "Backlog refinement, story sizing, and acceptance criteria",
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
phase: "architect",
|
|
23
|
-
role: "architect",
|
|
24
|
-
summary: "Technical tasking, design decisions, and size estimation",
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
phase: "developer",
|
|
28
|
-
role: "developer",
|
|
29
|
-
summary: "Implementation against acceptance criteria",
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
phase: "qa",
|
|
33
|
-
role: "qa",
|
|
34
|
-
summary: "Verification against acceptance criteria and edge cases",
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
phase: "release",
|
|
38
|
-
role: "release_manager",
|
|
39
|
-
summary: "Release candidate validation and PR creation",
|
|
40
|
-
},
|
|
41
|
-
];
|
|
42
|
-
// Gate transitions that require human approval in 'phase' mode
|
|
43
|
-
const PHASE_GATES = new Set(["po→architect", "qa→release"]);
|
|
44
|
-
export const AUTONOMOUS_RUNS_FILE = "workflow-runs.jsonl";
|
|
45
|
-
export function autonomousRunsPath(root) {
|
|
46
|
-
return resolveWorkflowPath(root, AUTONOMOUS_RUNS_FILE);
|
|
47
|
-
}
|
|
48
|
-
export async function checkArchitectSizing(root, taskId) {
|
|
49
|
-
const events = await readEvents(root);
|
|
50
|
-
for (const event of events) {
|
|
51
|
-
if (event.type === "DECISION_RECORDED" &&
|
|
52
|
-
event.taskId === taskId &&
|
|
53
|
-
event.actor === "architect") {
|
|
54
|
-
const sizing = event.metadata.sizing;
|
|
55
|
-
if (typeof sizing === "string" &&
|
|
56
|
-
SIZING_LABELS.includes(sizing)) {
|
|
57
|
-
const points = typeof event.metadata.points === "number"
|
|
58
|
-
? event.metadata.points
|
|
59
|
-
: undefined;
|
|
60
|
-
return {
|
|
61
|
-
found: true,
|
|
62
|
-
sizing: sizing,
|
|
63
|
-
...(points !== undefined ? { points } : {}),
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
return { found: false };
|
|
69
|
-
}
|
|
70
|
-
export async function createAutonomousRun(root, opts) {
|
|
71
|
-
const now = new Date().toISOString();
|
|
72
|
-
const run = {
|
|
73
|
-
id: `wfrun-${Date.now()}-${Math.random().toString(36).slice(2, 6)}`,
|
|
74
|
-
taskId: opts.taskId,
|
|
75
|
-
gates: opts.gates,
|
|
76
|
-
maxIterations: opts.maxIterations,
|
|
77
|
-
qaIterations: 0,
|
|
78
|
-
phases: [],
|
|
79
|
-
status: "running",
|
|
80
|
-
createdAt: now,
|
|
81
|
-
updatedAt: now,
|
|
82
|
-
};
|
|
83
|
-
await persistRun(root, run);
|
|
84
|
-
await appendEvent(root, {
|
|
85
|
-
type: "AUTONOMOUS_RUN_STARTED",
|
|
86
|
-
taskId: opts.taskId,
|
|
87
|
-
actor: "parent",
|
|
88
|
-
summary: `Autonomous workflow started [gates=${opts.gates}]`,
|
|
89
|
-
metadata: {
|
|
90
|
-
runId: run.id,
|
|
91
|
-
gates: opts.gates,
|
|
92
|
-
maxIterations: opts.maxIterations,
|
|
93
|
-
},
|
|
94
|
-
});
|
|
95
|
-
return run;
|
|
96
|
-
}
|
|
97
|
-
export async function readAutonomousRun(root, id) {
|
|
98
|
-
const file = autonomousRunsPath(root);
|
|
99
|
-
if (!existsSync(file))
|
|
100
|
-
return undefined;
|
|
101
|
-
const lines = (await readFile(file, "utf8"))
|
|
102
|
-
.trim()
|
|
103
|
-
.split("\n")
|
|
104
|
-
.filter(Boolean);
|
|
105
|
-
const latest = new Map();
|
|
106
|
-
for (const line of lines) {
|
|
107
|
-
const r = JSON.parse(line);
|
|
108
|
-
latest.set(r.id, r);
|
|
109
|
-
}
|
|
110
|
-
return latest.get(id);
|
|
111
|
-
}
|
|
112
|
-
export async function listAutonomousRuns(root) {
|
|
113
|
-
const file = autonomousRunsPath(root);
|
|
114
|
-
if (!existsSync(file))
|
|
115
|
-
return [];
|
|
116
|
-
const lines = (await readFile(file, "utf8"))
|
|
117
|
-
.trim()
|
|
118
|
-
.split("\n")
|
|
119
|
-
.filter(Boolean);
|
|
120
|
-
const latest = new Map();
|
|
121
|
-
for (const line of lines) {
|
|
122
|
-
const r = JSON.parse(line);
|
|
123
|
-
latest.set(r.id, r);
|
|
124
|
-
}
|
|
125
|
-
return [...latest.values()];
|
|
126
|
-
}
|
|
127
|
-
export async function initPhase(root, run, phaseIndex, retryContext) {
|
|
128
|
-
const def = AUTONOMOUS_PHASE_SEQUENCE[phaseIndex];
|
|
129
|
-
if (!def)
|
|
130
|
-
throw new Error(`invalid phase index: ${phaseIndex}`);
|
|
131
|
-
const now = new Date().toISOString();
|
|
132
|
-
// Use a run-scoped suffix so multiple runs on the same task don't collide.
|
|
133
|
-
// Short run suffix (last 6 chars of id) keeps IDs readable.
|
|
134
|
-
const runSuffix = run.id.slice(-6);
|
|
135
|
-
const iteration = run.phases.filter((p) => p.phase === def.phase).length;
|
|
136
|
-
const phaseTaskId = iteration === 0
|
|
137
|
-
? `${run.taskId}-${def.phase}-${runSuffix}`
|
|
138
|
-
: `${run.taskId}-${def.phase}-${runSuffix}-retry${iteration}`;
|
|
139
|
-
// Dependency on the previous phase task in this same run
|
|
140
|
-
const prevDef = phaseIndex > 0 ? AUTONOMOUS_PHASE_SEQUENCE[phaseIndex - 1] : undefined;
|
|
141
|
-
const prevPhaseTaskId = prevDef
|
|
142
|
-
? `${run.taskId}-${prevDef.phase}-${runSuffix}`
|
|
143
|
-
: undefined;
|
|
144
|
-
await addTask({
|
|
145
|
-
id: phaseTaskId,
|
|
146
|
-
title: `[${def.phase.toUpperCase()}] ${run.taskId}${iteration > 0 ? ` (retry ${iteration})` : ""}`,
|
|
147
|
-
ownerRole: def.role,
|
|
148
|
-
dependencies: prevPhaseTaskId ? [prevPhaseTaskId] : [],
|
|
149
|
-
...(retryContext ? { blockedReason: retryContext } : {}),
|
|
150
|
-
}, root);
|
|
151
|
-
const phase = {
|
|
152
|
-
phase: def.phase,
|
|
153
|
-
role: def.role,
|
|
154
|
-
status: "running",
|
|
155
|
-
taskId: phaseTaskId,
|
|
156
|
-
startedAt: now,
|
|
157
|
-
...(retryContext ? { notes: retryContext } : {}),
|
|
158
|
-
};
|
|
159
|
-
return phase;
|
|
160
|
-
}
|
|
161
|
-
export async function closePhase(root, run, phaseIndex, outcome) {
|
|
162
|
-
let resolvedOutcome = outcome;
|
|
163
|
-
const now = new Date().toISOString();
|
|
164
|
-
const def = AUTONOMOUS_PHASE_SEQUENCE[phaseIndex];
|
|
165
|
-
const nextDef = AUTONOMOUS_PHASE_SEQUENCE[phaseIndex + 1];
|
|
166
|
-
if (!def)
|
|
167
|
-
throw new Error(`invalid phase index: ${phaseIndex}`);
|
|
168
|
-
const phase = run.phases.find((p) => p.phase === def.phase);
|
|
169
|
-
if (!phase)
|
|
170
|
-
throw new Error(`phase not found in run: ${def.phase}`);
|
|
171
|
-
let handoffArtifact;
|
|
172
|
-
let reviewArtifact;
|
|
173
|
-
if (outcome.kind === "done" && nextDef) {
|
|
174
|
-
// Create handoff to next phase
|
|
175
|
-
const handoffResult = await createHandoff({
|
|
176
|
-
task: run.taskId,
|
|
177
|
-
from: def.role,
|
|
178
|
-
to: nextDef.role,
|
|
179
|
-
changed: `Phase ${def.phase} completed`,
|
|
180
|
-
behavior: def.summary,
|
|
181
|
-
tests: "See phase task evidence",
|
|
182
|
-
commands: "See phase task evidence",
|
|
183
|
-
status: "ready_for_review",
|
|
184
|
-
}, root);
|
|
185
|
-
handoffArtifact = handoffResult.artifact;
|
|
186
|
-
// Gate check
|
|
187
|
-
const transitionKey = `${def.phase}→${nextDef.phase}`;
|
|
188
|
-
const needsGate = run.gates === "all" ||
|
|
189
|
-
(run.gates === "phase" && PHASE_GATES.has(transitionKey));
|
|
190
|
-
if (needsGate) {
|
|
191
|
-
const reviewResult = await createGateReview(root, run, def, nextDef, transitionKey);
|
|
192
|
-
reviewArtifact = reviewResult.artifact;
|
|
193
|
-
resolvedOutcome = {
|
|
194
|
-
kind: "gate_pause",
|
|
195
|
-
reviewArtifact: reviewResult.artifact,
|
|
196
|
-
};
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
const updatedPhase = {
|
|
200
|
-
...phase,
|
|
201
|
-
status: outcomeToPhaseStatus(resolvedOutcome),
|
|
202
|
-
...(handoffArtifact !== undefined ? { handoffArtifact } : {}),
|
|
203
|
-
...(reviewArtifact !== undefined ? { reviewArtifact } : {}),
|
|
204
|
-
notes: resolvedOutcome.kind !== "gate_pause"
|
|
205
|
-
? resolvedOutcome.notes
|
|
206
|
-
: `Gate pause — review pending`,
|
|
207
|
-
completedAt: now,
|
|
208
|
-
};
|
|
209
|
-
const updatedPhases = run.phases.map((p) => p.phase === def.phase ? updatedPhase : p);
|
|
210
|
-
const allDone = resolvedOutcome.kind === "done" &&
|
|
211
|
-
!nextDef &&
|
|
212
|
-
updatedPhases.every((p) => p.status === "done");
|
|
213
|
-
const updatedRun = {
|
|
214
|
-
...run,
|
|
215
|
-
phases: updatedPhases,
|
|
216
|
-
qaIterations: def.phase === "qa" && resolvedOutcome.kind === "qa_fail"
|
|
217
|
-
? run.qaIterations + 1
|
|
218
|
-
: run.qaIterations,
|
|
219
|
-
status: resolvedOutcome.kind === "gate_pause"
|
|
220
|
-
? "paused"
|
|
221
|
-
: allDone
|
|
222
|
-
? "done"
|
|
223
|
-
: "running",
|
|
224
|
-
updatedAt: now,
|
|
225
|
-
};
|
|
226
|
-
await persistRun(root, updatedRun);
|
|
227
|
-
if (resolvedOutcome.kind === "gate_pause") {
|
|
228
|
-
await appendEvent(root, {
|
|
229
|
-
type: "AUTONOMOUS_GATE_PAUSED",
|
|
230
|
-
taskId: run.taskId,
|
|
231
|
-
actor: def.role,
|
|
232
|
-
summary: `Gate pause at ${def.phase}→${nextDef?.phase ?? "end"}`,
|
|
233
|
-
metadata: { runId: run.id, phase: def.phase, reviewArtifact },
|
|
234
|
-
});
|
|
235
|
-
if (reviewArtifact) {
|
|
236
|
-
await notifyGatePaused({
|
|
237
|
-
root,
|
|
238
|
-
run: updatedRun,
|
|
239
|
-
transitionKey: `${def.phase}→${nextDef?.phase ?? "end"}`,
|
|
240
|
-
reviewArtifact,
|
|
241
|
-
});
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
else if (resolvedOutcome.kind === "done") {
|
|
245
|
-
await appendEvent(root, {
|
|
246
|
-
type: "AUTONOMOUS_PHASE_DONE",
|
|
247
|
-
taskId: run.taskId,
|
|
248
|
-
actor: def.role,
|
|
249
|
-
summary: `Phase ${def.phase} completed`,
|
|
250
|
-
metadata: { runId: run.id, phase: def.phase, handoffArtifact },
|
|
251
|
-
});
|
|
252
|
-
await updateTask({ id: phase.taskId, status: "done" }, root);
|
|
253
|
-
}
|
|
254
|
-
return {
|
|
255
|
-
run: updatedRun,
|
|
256
|
-
...(handoffArtifact !== undefined ? { handoffArtifact } : {}),
|
|
257
|
-
...(reviewArtifact !== undefined ? { reviewArtifact } : {}),
|
|
258
|
-
};
|
|
259
|
-
}
|
|
260
|
-
export async function markRunFailed(root, run, reason) {
|
|
261
|
-
const now = new Date().toISOString();
|
|
262
|
-
const updated = { ...run, status: "failed", updatedAt: now };
|
|
263
|
-
await persistRun(root, updated);
|
|
264
|
-
await appendEvent(root, {
|
|
265
|
-
type: "AUTONOMOUS_RUN_FAILED",
|
|
266
|
-
taskId: run.taskId,
|
|
267
|
-
actor: "parent",
|
|
268
|
-
summary: reason,
|
|
269
|
-
metadata: { runId: run.id },
|
|
270
|
-
});
|
|
271
|
-
// Cancel any phase sub-tasks still in a non-terminal state
|
|
272
|
-
for (const phase of run.phases) {
|
|
273
|
-
if (phase.status === "running" || phase.status === "pending") {
|
|
274
|
-
await updateTask({ id: phase.taskId, status: "canceled" }, root).catch(() => undefined);
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
return updated;
|
|
278
|
-
}
|
|
279
|
-
export async function markRunDone(root, run) {
|
|
280
|
-
const now = new Date().toISOString();
|
|
281
|
-
const updated = { ...run, status: "done", updatedAt: now };
|
|
282
|
-
await persistRun(root, updated);
|
|
283
|
-
await appendEvent(root, {
|
|
284
|
-
type: "AUTONOMOUS_RUN_DONE",
|
|
285
|
-
taskId: run.taskId,
|
|
286
|
-
actor: "parent",
|
|
287
|
-
summary: `Autonomous workflow complete`,
|
|
288
|
-
metadata: { runId: run.id },
|
|
289
|
-
});
|
|
290
|
-
return updated;
|
|
291
|
-
}
|
|
292
|
-
// Returns the phase index to resume from, or -1 if run is already done.
|
|
293
|
-
export function resumePhaseIndex(run) {
|
|
294
|
-
for (let i = 0; i < AUTONOMOUS_PHASE_SEQUENCE.length; i++) {
|
|
295
|
-
const def = AUTONOMOUS_PHASE_SEQUENCE[i];
|
|
296
|
-
const phase = run.phases.find((p) => p.phase === def.phase);
|
|
297
|
-
// No record yet, or actively running/pending → start here
|
|
298
|
-
if (!phase || phase.status === "running" || phase.status === "pending")
|
|
299
|
-
return i;
|
|
300
|
-
if (phase.status === "qa_failed")
|
|
301
|
-
return i; // retry qa
|
|
302
|
-
if (phase.status === "awaiting_clarification")
|
|
303
|
-
return i; // resume same phase
|
|
304
|
-
// done or gate_paused (gate already approved on previous resume) → scan forward
|
|
305
|
-
if (phase.status === "done" || phase.status === "gate_paused")
|
|
306
|
-
continue;
|
|
307
|
-
}
|
|
308
|
-
return -1; // all phases accounted for
|
|
309
|
-
}
|
|
310
|
-
// Suspends a phase awaiting clarification (does not advance phase sequence).
|
|
311
|
-
export async function suspendPhaseForClarification(root, run, phaseIndex) {
|
|
312
|
-
const def = AUTONOMOUS_PHASE_SEQUENCE[phaseIndex];
|
|
313
|
-
if (!def)
|
|
314
|
-
throw new Error(`invalid phase index: ${phaseIndex}`);
|
|
315
|
-
const phase = run.phases.find((p) => p.phase === def.phase);
|
|
316
|
-
if (!phase)
|
|
317
|
-
throw new Error(`phase not found in run: ${def.phase}`);
|
|
318
|
-
const updatedPhases = run.phases.map((p) => p.phase === def.phase
|
|
319
|
-
? { ...p, status: "awaiting_clarification" }
|
|
320
|
-
: p);
|
|
321
|
-
const updated = {
|
|
322
|
-
...run,
|
|
323
|
-
phases: updatedPhases,
|
|
324
|
-
status: "paused",
|
|
325
|
-
updatedAt: new Date().toISOString(),
|
|
326
|
-
};
|
|
327
|
-
await persistRun(root, updated);
|
|
328
|
-
return updated;
|
|
329
|
-
}
|
|
330
|
-
// Resumes a phase from awaiting_clarification back to running.
|
|
331
|
-
export async function resumePhaseFromClarification(root, run, phaseIndex) {
|
|
332
|
-
const def = AUTONOMOUS_PHASE_SEQUENCE[phaseIndex];
|
|
333
|
-
if (!def)
|
|
334
|
-
throw new Error(`invalid phase index: ${phaseIndex}`);
|
|
335
|
-
const phase = run.phases.find((p) => p.phase === def.phase);
|
|
336
|
-
if (!phase)
|
|
337
|
-
throw new Error(`phase not found in run: ${def.phase}`);
|
|
338
|
-
if (phase.status !== "awaiting_clarification") {
|
|
339
|
-
throw new Error(`phase ${def.phase} is not awaiting clarification (status: ${phase.status})`);
|
|
340
|
-
}
|
|
341
|
-
const updatedPhases = run.phases.map((p) => p.phase === def.phase ? { ...p, status: "running" } : p);
|
|
342
|
-
const updated = {
|
|
343
|
-
...run,
|
|
344
|
-
phases: updatedPhases,
|
|
345
|
-
status: "running",
|
|
346
|
-
updatedAt: new Date().toISOString(),
|
|
347
|
-
};
|
|
348
|
-
await persistRun(root, updated);
|
|
349
|
-
return updated;
|
|
350
|
-
}
|
|
351
|
-
// --- helpers ---
|
|
352
|
-
async function createGateReview(root, run, from, to, transitionKey) {
|
|
353
|
-
const fileName = `${run.taskId}-gate-${transitionKey.replace("→", "-to-")}-${Date.now()}.md`;
|
|
354
|
-
const content = [
|
|
355
|
-
`# Gate Review: ${transitionKey}`,
|
|
356
|
-
"",
|
|
357
|
-
`- Run: ${run.id}`,
|
|
358
|
-
`- Task: ${run.taskId}`,
|
|
359
|
-
`- Transition: ${from.phase} → ${to.phase}`,
|
|
360
|
-
`- From role: ${from.role}`,
|
|
361
|
-
`- To role: ${to.role}`,
|
|
362
|
-
"",
|
|
363
|
-
"## Checklist",
|
|
364
|
-
`- [ ] ${from.summary}`,
|
|
365
|
-
`- [ ] Acceptance criteria verified`,
|
|
366
|
-
`- [ ] No open blockers`,
|
|
367
|
-
"",
|
|
368
|
-
"## Approval",
|
|
369
|
-
`Approve: orchestra workflow run --task ${run.taskId} --resume ${run.id}`,
|
|
370
|
-
"",
|
|
371
|
-
].join("\n");
|
|
372
|
-
const artifact = await writeArtifact(root, "approvals", fileName, content);
|
|
373
|
-
await appendEvent(root, {
|
|
374
|
-
type: "AUTONOMOUS_GATE_REQUESTED",
|
|
375
|
-
taskId: run.taskId,
|
|
376
|
-
actor: from.role,
|
|
377
|
-
summary: `Gate review requested: ${transitionKey}`,
|
|
378
|
-
artifacts: [artifact],
|
|
379
|
-
metadata: { runId: run.id, transitionKey },
|
|
380
|
-
});
|
|
381
|
-
return { artifact };
|
|
382
|
-
}
|
|
383
|
-
function outcomeToPhaseStatus(outcome) {
|
|
384
|
-
if (outcome.kind === "done")
|
|
385
|
-
return "done";
|
|
386
|
-
if (outcome.kind === "gate_pause")
|
|
387
|
-
return "gate_paused";
|
|
388
|
-
return "qa_failed";
|
|
389
|
-
}
|
|
390
|
-
async function persistRun(root, run) {
|
|
391
|
-
const file = autonomousRunsPath(root);
|
|
392
|
-
await ensureDir(path.dirname(file));
|
|
393
|
-
await appendFile(file, `${JSON.stringify(run)}\n`, "utf8");
|
|
394
|
-
}
|
|
1
|
+
export { AUTONOMOUS_PHASE_SEQUENCE, PHASE_GATES, } from "./autonomous-workflow-constants.js";
|
|
2
|
+
export { AUTONOMOUS_RUNS_FILE, autonomousRunsPath, createAutonomousRun, isTerminalAutonomousRunStatus, listActiveAutonomousRuns, listAutonomousRuns, persistRun, readAutonomousRun, } from "./autonomous-run-store.js";
|
|
3
|
+
export { checkArchitectSizing, closePhase, initPhase, } from "./autonomous-phase-lifecycle.js";
|
|
4
|
+
export { cancelRun, markRunDone, markRunFailed, resumePhaseFromClarification, resumePhaseIndex, suspendPhaseForClarification, } from "./autonomous-run-state.js";
|
|
395
5
|
//# sourceMappingURL=autonomous-workflow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autonomous-workflow.js","sourceRoot":"","sources":["../src/autonomous-workflow.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"autonomous-workflow.js","sourceRoot":"","sources":["../src/autonomous-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,WAAW,GACZ,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,6BAA6B,EAC7B,wBAAwB,EACxB,kBAAkB,EAClB,UAAU,EACV,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,oBAAoB,EACpB,UAAU,EACV,SAAS,GACV,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,SAAS,EACT,WAAW,EACX,aAAa,EACb,4BAA4B,EAC5B,gBAAgB,EAChB,4BAA4B,GAC7B,MAAM,2BAA2B,CAAC"}
|
package/dist/benchmark.js
CHANGED
|
@@ -85,6 +85,7 @@ export async function computeBenchmark(root, taskId) {
|
|
|
85
85
|
vsSoloPct: null,
|
|
86
86
|
vsAiUnguidedPct: null,
|
|
87
87
|
qaIterations: 0,
|
|
88
|
+
phaseDurations: [],
|
|
88
89
|
quality,
|
|
89
90
|
status: "pending",
|
|
90
91
|
};
|
|
@@ -102,6 +103,20 @@ export async function computeBenchmark(root, taskId) {
|
|
|
102
103
|
? Math.round(((completedAt - startedAt) / (1000 * 60 * 60 * 24)) * 100) /
|
|
103
104
|
100
|
|
104
105
|
: null;
|
|
106
|
+
const phaseDurations = taskRun.phases.map((phase) => {
|
|
107
|
+
const phaseStartedAt = new Date(phase.startedAt).getTime();
|
|
108
|
+
const phaseCompletedAt = phase.completedAt
|
|
109
|
+
? new Date(phase.completedAt).getTime()
|
|
110
|
+
: null;
|
|
111
|
+
return {
|
|
112
|
+
phase: phase.phase,
|
|
113
|
+
startedAt: phase.startedAt,
|
|
114
|
+
...(phase.completedAt ? { completedAt: phase.completedAt } : {}),
|
|
115
|
+
durationMs: phaseCompletedAt !== null
|
|
116
|
+
? Math.max(0, phaseCompletedAt - phaseStartedAt)
|
|
117
|
+
: null,
|
|
118
|
+
};
|
|
119
|
+
});
|
|
105
120
|
const vsSoloPct = actualDays !== null
|
|
106
121
|
? Math.round(((actualDays - estimate.soloEstimateDays) /
|
|
107
122
|
estimate.soloEstimateDays) *
|
|
@@ -121,6 +136,7 @@ export async function computeBenchmark(root, taskId) {
|
|
|
121
136
|
vsSoloPct,
|
|
122
137
|
vsAiUnguidedPct,
|
|
123
138
|
qaIterations: taskRun.qaIterations,
|
|
139
|
+
phaseDurations,
|
|
124
140
|
quality,
|
|
125
141
|
status: "complete",
|
|
126
142
|
};
|