@jterrats/open-orchestra 0.4.1 → 0.4.2-beta.2

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.
Files changed (100) hide show
  1. package/AGENTS.md +5 -3
  2. package/dist/advisory-artifacts.d.ts +14 -0
  3. package/dist/advisory-artifacts.js +100 -0
  4. package/dist/advisory-artifacts.js.map +1 -0
  5. package/dist/assets/web-console.js +230 -1
  6. package/dist/autonomous-phase-lifecycle.d.ts +3 -2
  7. package/dist/autonomous-phase-lifecycle.js +28 -8
  8. package/dist/autonomous-phase-lifecycle.js.map +1 -1
  9. package/dist/autonomous-run-state.d.ts +6 -4
  10. package/dist/autonomous-run-state.js +82 -11
  11. package/dist/autonomous-run-state.js.map +1 -1
  12. package/dist/autonomous-run-store.d.ts +5 -0
  13. package/dist/autonomous-run-store.js +27 -2
  14. package/dist/autonomous-run-store.js.map +1 -1
  15. package/dist/autonomous-workflow-constants.d.ts +1 -0
  16. package/dist/autonomous-workflow-constants.js.map +1 -1
  17. package/dist/autonomous-workflow.d.ts +2 -2
  18. package/dist/autonomous-workflow.js +2 -2
  19. package/dist/autonomous-workflow.js.map +1 -1
  20. package/dist/benchmark.js +16 -0
  21. package/dist/benchmark.js.map +1 -1
  22. package/dist/clarification.d.ts +2 -0
  23. package/dist/clarification.js +23 -5
  24. package/dist/clarification.js.map +1 -1
  25. package/dist/cli.js +97 -18
  26. package/dist/cli.js.map +1 -1
  27. package/dist/command-manifest.d.ts +3 -0
  28. package/dist/command-manifest.js +17 -1
  29. package/dist/command-manifest.js.map +1 -1
  30. package/dist/commands.d.ts +10 -2
  31. package/dist/commands.js +484 -49
  32. package/dist/commands.js.map +1 -1
  33. package/dist/constants.js +13 -0
  34. package/dist/constants.js.map +1 -1
  35. package/dist/context-budget.d.ts +4 -0
  36. package/dist/context-budget.js +119 -0
  37. package/dist/context-budget.js.map +1 -0
  38. package/dist/mcp-oauth-proxy.d.ts +79 -0
  39. package/dist/mcp-oauth-proxy.js +396 -0
  40. package/dist/mcp-oauth-proxy.js.map +1 -1
  41. package/dist/memory.d.ts +11 -0
  42. package/dist/memory.js +224 -0
  43. package/dist/memory.js.map +1 -0
  44. package/dist/metrics-commands.js +9 -0
  45. package/dist/metrics-commands.js.map +1 -1
  46. package/dist/model-commands.js +18 -1
  47. package/dist/model-commands.js.map +1 -1
  48. package/dist/notifications.d.ts +25 -0
  49. package/dist/notifications.js +187 -11
  50. package/dist/notifications.js.map +1 -1
  51. package/dist/package-update-check.d.ts +19 -0
  52. package/dist/package-update-check.js +123 -0
  53. package/dist/package-update-check.js.map +1 -0
  54. package/dist/runtime-bootstrap.js +4 -2
  55. package/dist/runtime-bootstrap.js.map +1 -1
  56. package/dist/runtime-commands.js +10 -0
  57. package/dist/runtime-commands.js.map +1 -1
  58. package/dist/runtime-execution-renderer.js +5 -0
  59. package/dist/runtime-execution-renderer.js.map +1 -1
  60. package/dist/runtime-execution.d.ts +4 -2
  61. package/dist/runtime-execution.js +17 -4
  62. package/dist/runtime-execution.js.map +1 -1
  63. package/dist/setup-agents-import.d.ts +42 -0
  64. package/dist/setup-agents-import.js +337 -0
  65. package/dist/setup-agents-import.js.map +1 -0
  66. package/dist/skills-commands.d.ts +1 -0
  67. package/dist/skills-commands.js +9 -1
  68. package/dist/skills-commands.js.map +1 -1
  69. package/dist/skills.d.ts +7 -1
  70. package/dist/skills.js +120 -11
  71. package/dist/skills.js.map +1 -1
  72. package/dist/subagent-protocol.js +6 -0
  73. package/dist/subagent-protocol.js.map +1 -1
  74. package/dist/tool-commands.d.ts +2 -0
  75. package/dist/tool-commands.js +113 -13
  76. package/dist/tool-commands.js.map +1 -1
  77. package/dist/types.d.ts +163 -4
  78. package/dist/types.js.map +1 -1
  79. package/dist/web-api.js +216 -1
  80. package/dist/web-api.js.map +1 -1
  81. package/dist/web-chart-contracts.d.ts +3 -1
  82. package/dist/web-chart-contracts.js +6 -0
  83. package/dist/web-chart-contracts.js.map +1 -1
  84. package/dist/web-console.js +2 -2
  85. package/dist/workflow-services.d.ts +24 -4
  86. package/dist/workflow-services.js +478 -12
  87. package/dist/workflow-services.js.map +1 -1
  88. package/dist/workflow-templates.d.ts +1 -0
  89. package/dist/workflow-templates.js +1 -0
  90. package/dist/workflow-templates.js.map +1 -1
  91. package/dist/workspace.js +6 -0
  92. package/dist/workspace.js.map +1 -1
  93. package/docs/command-contracts.md +22 -0
  94. package/docs/mcp-oauth-proxy-evaluation.md +14 -0
  95. package/docs/runtime-adapters.md +4 -0
  96. package/docs/setup-agents-bridge.md +61 -0
  97. package/docs/traceability-flow.md +89 -0
  98. package/package.json +8 -6
  99. package/skills/proactive-orchestra/SKILL.md +27 -0
  100. package/skills/proactive-orchestra/manifest.json +41 -0
package/AGENTS.md CHANGED
@@ -150,7 +150,7 @@
150
150
  - Mark breaking changes with `!` and a `BREAKING CHANGE:` footer.
151
151
  - Keep PRs <400 lines. Review your own diff before requesting review.
152
152
 
153
- <!-- open-orchestra:start block-id="runtime-bootstrap" generator="open-orchestra runtime bootstrap" version="1" target="codex" source-manifest="open-orchestra command-manifest,runtime-bootstrap" content-sha256="c215b82bf89b09651384dbee3c7bd8c4e66cab148adc844b4979788848017be5" updated-at="2026-05-06T22:12:02.623Z" -->
153
+ <!-- open-orchestra:start block-id="runtime-bootstrap" generator="open-orchestra runtime bootstrap" version="1" target="codex" source-manifest="open-orchestra command-manifest,runtime-bootstrap" content-sha256="411e2d184a03aafe61fc4b71d49011f83a4f94d33d3a64cc4cd590a979d07319" updated-at="2026-05-10T05:17:06.513Z" -->
154
154
  # Open Orchestra Runtime Bootstrap
155
155
 
156
156
  Runtime target: Codex. Reference Open Orchestra from AGENTS.md so local CLI work follows workflow gates.
@@ -210,9 +210,11 @@ orchestra benchmark --task <ID>
210
210
  ```
211
211
 
212
212
  ## Active Work
213
- - Run `orchestra health --json`.
214
- - Run `orchestra task list --json` and identify the active task.
213
+ - At session start, run `orchestra health --json` before implementation or file edits.
214
+ - Run `orchestra task list --json --status pending,blocked,in_progress` and identify resumable work before creating a new task.
215
215
  - For the active task, run context, delegation, plan, skills, protocol, and workflow render commands.
216
+ - Run `orchestra validate --pre-run --task <ID> --json` before implementation; resolve missing estimate, workflow run, evidence, or review checks.
217
+ - If a user accepts a smaller/advisory path, record it with `orchestra validate --pre-run --task <ID> --bypass --bypass-rationale "..."`.
216
218
 
217
219
  ## Task Loop
218
220
  - `orchestra health` - Check local tools and workflow readiness.
@@ -0,0 +1,14 @@
1
+ import type { WorkspaceClassification } from "./types.js";
2
+ export interface AdvisoryArtifactsResult {
3
+ files: string[];
4
+ projectTask: {
5
+ id: string;
6
+ title: string;
7
+ ownerRole: string;
8
+ acceptanceCriteria: string[];
9
+ };
10
+ }
11
+ export declare function writeAdvisoryArtifacts({ root, classification, }: {
12
+ root: string;
13
+ classification: WorkspaceClassification;
14
+ }): Promise<AdvisoryArtifactsResult>;
@@ -0,0 +1,100 @@
1
+ import { WORKFLOW_DIR } from "./constants.js";
2
+ import { defaultRoles } from "./defaults.js";
3
+ import { writeArtifact } from "./workspace.js";
4
+ const ADVISORY_DIRECTORY = "advisory";
5
+ export async function writeAdvisoryArtifacts({ root, classification, }) {
6
+ const projectTask = advisoryProjectTask();
7
+ const files = [
8
+ await writeArtifact(root, ADVISORY_DIRECTORY, "README.md", renderAdvisoryReadme(classification)),
9
+ await writeArtifact(root, ADVISORY_DIRECTORY, "role-guides.md", renderRoleGuides(defaultRoles)),
10
+ await writeArtifact(root, ADVISORY_DIRECTORY, "decisions.md", renderPortableDecisions()),
11
+ await writeArtifact(root, ADVISORY_DIRECTORY, "project-task.json", `${JSON.stringify(projectTask, null, 2)}\n`),
12
+ ];
13
+ return { files, projectTask };
14
+ }
15
+ function advisoryProjectTask() {
16
+ return {
17
+ id: "ADVISORY-CONVERSION",
18
+ title: "Convert advisory findings into a project task",
19
+ ownerRole: "product_owner",
20
+ acceptanceCriteria: [
21
+ "Target project is confirmed",
22
+ "Backlog item and scope are approved",
23
+ "Risks and assumptions are reviewed",
24
+ "Evidence from advisory artifacts is linked",
25
+ ],
26
+ };
27
+ }
28
+ function renderAdvisoryReadme(classification) {
29
+ return `# Advisory Workspace
30
+
31
+ This workspace was initialized in advisory mode. Open Orchestra created workflow
32
+ state and portable guidance under \`${WORKFLOW_DIR}/advisory\` without writing
33
+ root instruction files.
34
+
35
+ ## Use This For
36
+
37
+ - Product and technical discovery before choosing a target repository.
38
+ - Reviewing requirements, risks, acceptance criteria, and delivery evidence.
39
+ - Preparing a project task that can be copied into a real project workspace.
40
+
41
+ ## Safe Next Steps
42
+
43
+ 1. Refine findings in \`${WORKFLOW_DIR}/advisory/decisions.md\`.
44
+ 2. Review role-specific responsibilities in \`${WORKFLOW_DIR}/advisory/role-guides.md\`.
45
+ 3. Convert \`${WORKFLOW_DIR}/advisory/project-task.json\` into a project task after the target repo is confirmed.
46
+
47
+ ## Classification
48
+
49
+ - Kind: \`${classification.kind}\`
50
+ - Write policy: \`${classification.writePolicy}\`
51
+ - Signals: ${classification.signals.map((signal) => `\`${signal}\``).join(", ")}
52
+ `;
53
+ }
54
+ function renderRoleGuides(roles) {
55
+ const advisoryRoles = roles.filter((role) => [
56
+ "product_owner",
57
+ "analyst",
58
+ "architect",
59
+ "developer",
60
+ "qa",
61
+ "security",
62
+ "release_manager",
63
+ "technical_writer",
64
+ ].includes(role.id));
65
+ return `# Advisory Role Guides
66
+
67
+ ${advisoryRoles.map(renderRoleGuide).join("\n\n")}
68
+ `;
69
+ }
70
+ function renderRoleGuide(role) {
71
+ const activates = (role.activationCriteria ?? ["requested by workflow"])
72
+ .slice(0, 3)
73
+ .map((item) => `- ${item}`)
74
+ .join("\n");
75
+ return `## ${role.name}
76
+
77
+ Focus: ${role.description}
78
+
79
+ Activation:
80
+ ${activates}
81
+ `;
82
+ }
83
+ function renderPortableDecisions() {
84
+ return `# Portable Advisory Decisions
85
+
86
+ Use this file for decisions that should survive the move from advisory mode to a
87
+ project workspace.
88
+
89
+ ## Decision Template
90
+
91
+ - Title:
92
+ - Context:
93
+ - Decision:
94
+ - Consequences:
95
+ - Evidence:
96
+ - Owner:
97
+ - Status: proposed
98
+ `;
99
+ }
100
+ //# sourceMappingURL=advisory-artifacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advisory-artifacts.js","sourceRoot":"","sources":["../src/advisory-artifacts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAa/C,MAAM,kBAAkB,GAAG,UAAU,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,EAC3C,IAAI,EACJ,cAAc,GAIf;IACC,MAAM,WAAW,GAAG,mBAAmB,EAAE,CAAC;IAC1C,MAAM,KAAK,GAAG;QACZ,MAAM,aAAa,CACjB,IAAI,EACJ,kBAAkB,EAClB,WAAW,EACX,oBAAoB,CAAC,cAAc,CAAC,CACrC;QACD,MAAM,aAAa,CACjB,IAAI,EACJ,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,CAAC,YAAY,CAAC,CAC/B;QACD,MAAM,aAAa,CACjB,IAAI,EACJ,kBAAkB,EAClB,cAAc,EACd,uBAAuB,EAAE,CAC1B;QACD,MAAM,aAAa,CACjB,IAAI,EACJ,kBAAkB,EAClB,mBAAmB,EACnB,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAC5C;KACF,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,mBAAmB;IAC1B,OAAO;QACL,EAAE,EAAE,qBAAqB;QACzB,KAAK,EAAE,+CAA+C;QACtD,SAAS,EAAE,eAAe;QAC1B,kBAAkB,EAAE;YAClB,6BAA6B;YAC7B,qCAAqC;YACrC,oCAAoC;YACpC,4CAA4C;SAC7C;KACF,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,cAAuC;IACnE,OAAO;;;sCAG6B,YAAY;;;;;;;;;;;0BAWxB,YAAY;gDACU,YAAY;eAC7C,YAAY;;;;YAIf,cAAc,CAAC,IAAI;oBACX,cAAc,CAAC,WAAW;aACjC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;CAC9E,CAAC;AACF,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAsB;IAC9C,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAC1C;QACE,eAAe;QACf,SAAS;QACT,WAAW;QACX,WAAW;QACX,IAAI;QACJ,UAAU;QACV,iBAAiB;QACjB,kBAAkB;KACnB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CACpB,CAAC;IACF,OAAO;;EAEP,aAAa,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;CAChD,CAAC;AACF,CAAC;AAED,SAAS,eAAe,CAAC,IAAU;IACjC,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,uBAAuB,CAAC,CAAC;SACrE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;SAC1B,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO,MAAM,IAAI,CAAC,IAAI;;SAEf,IAAI,CAAC,WAAW;;;EAGvB,SAAS;CACV,CAAC;AACF,CAAC;AAED,SAAS,uBAAuB;IAC9B,OAAO;;;;;;;;;;;;;;CAcR,CAAC;AACF,CAAC"}
@@ -6,6 +6,10 @@ function buildDashboardChartData(input) {
6
6
  graphState: GRAPH_STATE_LABELS.map((label) => ({
7
7
  label,
8
8
  value: input.graph[label].length
9
+ })).filter((slice) => slice.value > 0),
10
+ costByProvider: (input.usage?.byProvider ?? []).map((provider) => ({
11
+ label: provider.key,
12
+ value: provider.estimatedCostUsd
9
13
  })).filter((slice) => slice.value > 0)
10
14
  };
11
15
  }
@@ -18,7 +22,10 @@ var endpoints = [
18
22
  ["roles", "/api/roles"],
19
23
  ["evidence", "/api/evidence"],
20
24
  ["approvals", "/api/approvals"],
25
+ ["usage", "/api/usage"],
26
+ ["budget", "/api/budget"],
21
27
  ["tasks", "/api/tasks"],
28
+ ["workflowRuns", "/api/workflow/runs"],
22
29
  ["evidenceView", "/api/evidence/view"],
23
30
  ["roleActivation", "/api/roles/activation"],
24
31
  ["skills", "/api/skills"],
@@ -34,12 +41,16 @@ var validation = document.querySelector("#validation");
34
41
  var workspaceView = document.querySelector("#workspace-view");
35
42
  var graph = document.querySelector("#graph");
36
43
  var actions = document.querySelector("#actions");
44
+ var taskOwner = document.querySelector("#task-owner");
37
45
  var charts = document.querySelector("#charts");
38
46
  var evidenceTask = document.querySelector("#evidence-task");
39
47
  var evidenceType = document.querySelector("#evidence-type");
40
48
  var evidenceList = document.querySelector("#evidence-list");
41
49
  var rolesView = document.querySelector("#roles-view");
42
50
  var planningView = document.querySelector("#planning-view");
51
+ var workflowTask = document.querySelector("#workflow-task");
52
+ var workflowRuns = document.querySelector("#workflow-runs");
53
+ var costView = document.querySelector("#cost-view");
43
54
  var playwrightTask = document.querySelector("#playwright-task");
44
55
  var playwrightPlan = document.querySelector("#playwright-plan");
45
56
  var skillsTask = document.querySelector("#skills-task");
@@ -56,6 +67,7 @@ var lessonPromotionResult = document.querySelector(
56
67
  );
57
68
  var taskStatusChart;
58
69
  var graphStateChart;
70
+ var providerCostChart;
59
71
  var themeToggle = document.querySelector("#theme-toggle");
60
72
  applyStoredTheme();
61
73
  themeToggle.addEventListener("click", toggleTheme);
@@ -69,6 +81,9 @@ document.querySelector("#skills-plan").addEventListener("click", loadSkillPlan);
69
81
  document.querySelector("#skills-render").addEventListener("click", loadSkillRender);
70
82
  document.querySelector("#lesson-add").addEventListener("click", addLesson);
71
83
  document.querySelector("#lesson-promote").addEventListener("click", promoteLessons);
84
+ document.querySelector("#task-add").addEventListener("click", addTaskFromWeb);
85
+ document.querySelector("#workflow-start").addEventListener("click", startWorkflowFromWeb);
86
+ workflowRuns.addEventListener("click", handleWorkflowAction);
72
87
  loadDashboard();
73
88
  function applyStoredTheme() {
74
89
  const stored = localStorage.getItem("open-orchestra-theme");
@@ -115,17 +130,22 @@ function render(data) {
115
130
  metric(String(data.roles.length), "Roles"),
116
131
  metric(String(data.evidence.length), "Evidence"),
117
132
  metric(String(data.approvals.length), "Approvals"),
133
+ metric(formatCurrency(data.usage.totals.estimatedCostUsd), "Est. Cost"),
118
134
  metric(data.validation.valid ? "Valid" : "Needs work", "Workspace")
119
135
  ]);
120
136
  renderValidation(data.validation);
121
137
  renderWorkspace(data.workspaceClassification, data.runtimeAdapters);
122
138
  renderGraph(data.graph);
123
139
  renderActions(data);
140
+ renderTaskWriteControls(data.roles);
124
141
  renderCharts(data);
125
142
  renderEvidenceControls(data);
126
143
  renderEvidence(data.evidenceView);
127
144
  renderRoles(data.roleActivation);
128
145
  renderPlanning(data.roleActivation);
146
+ renderWorkflowControls(data.tasks, data.workflowRuns);
147
+ renderWorkflowRuns(data.workflowRuns);
148
+ renderCost(data.usage, data.budget);
129
149
  renderPlaywrightTasks(data.tasks);
130
150
  renderSkillControls(data);
131
151
  renderSkillCatalog(data.skills, data.sources);
@@ -134,6 +154,46 @@ function render(data) {
134
154
  loadPlaywrightPlan();
135
155
  loadSkillPlan();
136
156
  }
157
+ function renderTaskWriteControls(roles) {
158
+ replace(
159
+ taskOwner,
160
+ roles.map(function(role) {
161
+ return option(role.id, role.id);
162
+ })
163
+ );
164
+ }
165
+ async function addTaskFromWeb() {
166
+ const id = document.querySelector("#task-id").value.trim();
167
+ const title = document.querySelector("#task-title").value.trim();
168
+ if (!id || !title || !taskOwner.value) {
169
+ setLoading("Task id, title, and owner are required", "warn");
170
+ return;
171
+ }
172
+ const response = await fetch("/api/tasks/add", {
173
+ method: "POST",
174
+ headers: { "content-type": "application/json" },
175
+ body: JSON.stringify({
176
+ id,
177
+ title,
178
+ ownerRole: taskOwner.value,
179
+ paths: csvValues(document.querySelector("#task-paths").value),
180
+ acceptanceCriteria: csvValues(
181
+ document.querySelector("#task-acceptance").value
182
+ ),
183
+ risks: csvValues(document.querySelector("#task-risks").value)
184
+ })
185
+ });
186
+ if (!response.ok) {
187
+ setLoading("Task add failed", "warn");
188
+ return;
189
+ }
190
+ ["#task-id", "#task-title", "#task-paths", "#task-acceptance", "#task-risks"].map(function(selector) {
191
+ return document.querySelector(selector);
192
+ }).forEach(function(input) {
193
+ input.value = "";
194
+ });
195
+ await loadDashboard();
196
+ }
137
197
  function renderWorkspace(classification, adapters) {
138
198
  const adapterNames = adapters.map(function(adapter) {
139
199
  return adapter.label;
@@ -149,7 +209,7 @@ function renderWorkspace(classification, adapters) {
149
209
  }
150
210
  function renderCharts(data) {
151
211
  const chartData = buildDashboardChartData(data);
152
- const hasChartData = chartData.taskStatus.length > 0 || chartData.graphState.length > 0;
212
+ const hasChartData = chartData.taskStatus.length > 0 || chartData.graphState.length > 0 || chartData.costByProvider.length > 0;
153
213
  charts.hidden = !hasChartData;
154
214
  if (!hasChartData || !globalThis.Chart) {
155
215
  return;
@@ -166,6 +226,12 @@ function renderCharts(data) {
166
226
  "bar",
167
227
  chartData.graphState
168
228
  );
229
+ providerCostChart = renderChart(
230
+ providerCostChart,
231
+ "provider-cost-chart",
232
+ "bar",
233
+ chartData.costByProvider
234
+ );
169
235
  }
170
236
  function renderChart(current, canvasId, type, slices) {
171
237
  const style = getComputedStyle(document.documentElement);
@@ -214,6 +280,166 @@ function renderChart(current, canvasId, type, slices) {
214
280
  }
215
281
  });
216
282
  }
283
+ function renderWorkflowControls(tasks, runs) {
284
+ const currentValue = workflowTask.value;
285
+ replace(
286
+ workflowTask,
287
+ tasks.length > 0 ? tasks.map(function(task) {
288
+ return option(task.id, task.id);
289
+ }) : [option("", "No tasks")]
290
+ );
291
+ if (currentValue) {
292
+ workflowTask.value = currentValue;
293
+ }
294
+ const runningTaskIds = new Set(
295
+ runs.filter(function(run) {
296
+ return run.status === "running" || run.status === "paused";
297
+ }).map(function(run) {
298
+ return run.taskId;
299
+ })
300
+ );
301
+ document.querySelector("#workflow-start").disabled = !workflowTask.value || runningTaskIds.has(workflowTask.value);
302
+ }
303
+ function renderWorkflowRuns(runs) {
304
+ replace(
305
+ workflowRuns,
306
+ runs.length > 0 ? runs.slice(0, 8).map(workflowRunItem) : [
307
+ empty(
308
+ "No workflow runs yet",
309
+ "Start a task workflow to track phases, gates, and handoffs."
310
+ )
311
+ ]
312
+ );
313
+ }
314
+ function workflowRunItem(run) {
315
+ const phases = (run.phases || []).map(function(phase) {
316
+ return phase.phase + ":" + phase.status;
317
+ }).join(" -> ");
318
+ const node = listItem(
319
+ run.id + " [" + run.status + "]",
320
+ run.taskId + " - gates " + run.gates + (phases ? " - " + phases : "")
321
+ );
322
+ const pausedGate = [...run.phases || []].reverse().find(function(phase) {
323
+ return phase.status === "gate_paused";
324
+ });
325
+ const row = document.createElement("div");
326
+ row.className = "tag-row";
327
+ if (pausedGate) {
328
+ const approve = document.createElement("button");
329
+ approve.className = "text-button";
330
+ approve.type = "button";
331
+ approve.dataset.workflowAction = "approve";
332
+ approve.dataset.run = run.id;
333
+ approve.dataset.task = run.taskId;
334
+ approve.dataset.gate = pausedGate.gateId || "";
335
+ approve.textContent = "Approve Gate";
336
+ row.append(approve);
337
+ }
338
+ if (run.status === "paused") {
339
+ const resume = document.createElement("button");
340
+ resume.className = "text-button";
341
+ resume.type = "button";
342
+ resume.dataset.workflowAction = "resume";
343
+ resume.dataset.run = run.id;
344
+ resume.dataset.task = run.taskId;
345
+ resume.textContent = "Resume";
346
+ row.append(resume);
347
+ }
348
+ node.append(row);
349
+ return node;
350
+ }
351
+ async function startWorkflowFromWeb() {
352
+ if (!workflowTask.value) {
353
+ setLoading("Select a task to start workflow", "warn");
354
+ return;
355
+ }
356
+ const response = await fetch("/api/workflow/start", {
357
+ method: "POST",
358
+ headers: { "content-type": "application/json" },
359
+ body: JSON.stringify({
360
+ task: workflowTask.value,
361
+ gates: document.querySelector("#workflow-gates").value
362
+ })
363
+ });
364
+ if (!response.ok) {
365
+ setLoading("Workflow start failed", "warn");
366
+ return;
367
+ }
368
+ await loadDashboard();
369
+ }
370
+ async function handleWorkflowAction(event) {
371
+ const button = event.target.closest("[data-workflow-action]");
372
+ if (!button) {
373
+ return;
374
+ }
375
+ if (button.dataset.workflowAction === "approve") {
376
+ await approveWorkflowGateFromWeb(button);
377
+ return;
378
+ }
379
+ if (button.dataset.workflowAction === "resume") {
380
+ await resumeWorkflowFromWeb(button);
381
+ }
382
+ }
383
+ async function approveWorkflowGateFromWeb(button) {
384
+ const response = await fetch("/api/workflow/gate-approve", {
385
+ method: "POST",
386
+ headers: { "content-type": "application/json" },
387
+ body: JSON.stringify({
388
+ run: button.dataset.run,
389
+ gate: button.dataset.gate,
390
+ approver: document.querySelector("#workflow-approver").value,
391
+ rationale: document.querySelector("#workflow-rationale").value
392
+ })
393
+ });
394
+ if (!response.ok) {
395
+ setLoading("Gate approval failed", "warn");
396
+ return;
397
+ }
398
+ await loadDashboard();
399
+ }
400
+ async function resumeWorkflowFromWeb(button) {
401
+ const response = await fetch("/api/workflow/resume", {
402
+ method: "POST",
403
+ headers: { "content-type": "application/json" },
404
+ body: JSON.stringify({
405
+ task: button.dataset.task,
406
+ run: button.dataset.run
407
+ })
408
+ });
409
+ if (!response.ok) {
410
+ setLoading("Workflow resume failed", "warn");
411
+ return;
412
+ }
413
+ await loadDashboard();
414
+ }
415
+ function renderCost(usage, budget) {
416
+ const rows = [
417
+ listItem("Requests", String(usage.totals.requests)),
418
+ listItem("Total tokens", String(usage.totals.totalTokens)),
419
+ listItem("Estimated cost", formatCurrency(usage.totals.estimatedCostUsd)),
420
+ listItem(
421
+ "Budget",
422
+ budget.passed ? "Within configured limits" : budget.violations.length + " violation(s)"
423
+ )
424
+ ];
425
+ usage.byProvider.slice(0, 6).forEach(function(provider) {
426
+ rows.push(
427
+ listItem(
428
+ provider.key,
429
+ provider.requests + " request(s) - " + provider.totalTokens + " tokens - " + formatCurrency(provider.estimatedCostUsd)
430
+ )
431
+ );
432
+ });
433
+ budget.violations.slice(0, 6).forEach(function(violation) {
434
+ rows.push(
435
+ listItem(
436
+ "Budget violation: " + violation.scope,
437
+ violation.metric + " " + violation.actual + " / " + violation.limit
438
+ )
439
+ );
440
+ });
441
+ replace(costView, rows);
442
+ }
217
443
  async function loadEvidence() {
218
444
  const query = new URLSearchParams();
219
445
  if (evidenceTask.value) {
@@ -706,6 +932,9 @@ function metric(value, label) {
706
932
  node.append(strong, span);
707
933
  return node;
708
934
  }
935
+ function formatCurrency(value) {
936
+ return "$" + Number(value || 0).toFixed(4);
937
+ }
709
938
  function listItem(title, detail) {
710
939
  const node = document.createElement("li");
711
940
  node.className = "list-item";
@@ -1,3 +1,4 @@
1
+ import type { AutonomousPhaseDefinition } from "./autonomous-workflow-constants.js";
1
2
  import type { AutonomousPhase, AutonomousRun, SizingLabel } from "./types.js";
2
3
  export type SizingCheckResult = {
3
4
  found: true;
@@ -17,8 +18,8 @@ export type PhaseOutcome = {
17
18
  kind: "qa_fail";
18
19
  notes: string;
19
20
  };
20
- export declare function initPhase(root: string, run: AutonomousRun, phaseIndex: number, retryContext?: string): Promise<AutonomousPhase>;
21
- export declare function closePhase(root: string, run: AutonomousRun, phaseIndex: number, outcome: PhaseOutcome): Promise<{
21
+ export declare function initPhase(root: string, run: AutonomousRun, phaseIndex: number, retryContext?: string, sequence?: AutonomousPhaseDefinition[]): Promise<AutonomousPhase>;
22
+ export declare function closePhase(root: string, run: AutonomousRun, phaseIndex: number, outcome: PhaseOutcome, sequence?: AutonomousPhaseDefinition[]): Promise<{
22
23
  run: AutonomousRun;
23
24
  handoffArtifact?: string;
24
25
  reviewArtifact?: string;
@@ -1,6 +1,6 @@
1
1
  import { appendEvent, readEvents, writeArtifact } from "./workspace.js";
2
2
  import { addTask, createHandoff, updateTask } from "./workflow-services.js";
3
- import { notifyGatePaused } from "./notifications.js";
3
+ import { notifyGatePaused, notifyWorkflowLifecycle } from "./notifications.js";
4
4
  import { AUTONOMOUS_PHASE_SEQUENCE, PHASE_GATES, } from "./autonomous-workflow-constants.js";
5
5
  import { persistRun } from "./autonomous-run-store.js";
6
6
  import { SIZING_LABELS } from "./types.js";
@@ -26,8 +26,8 @@ export async function checkArchitectSizing(root, taskId) {
26
26
  }
27
27
  return { found: false };
28
28
  }
29
- export async function initPhase(root, run, phaseIndex, retryContext) {
30
- const def = AUTONOMOUS_PHASE_SEQUENCE[phaseIndex];
29
+ export async function initPhase(root, run, phaseIndex, retryContext, sequence = AUTONOMOUS_PHASE_SEQUENCE) {
30
+ const def = sequence[phaseIndex];
31
31
  if (!def)
32
32
  throw new Error(`invalid phase index: ${phaseIndex}`);
33
33
  const now = new Date().toISOString();
@@ -36,7 +36,7 @@ export async function initPhase(root, run, phaseIndex, retryContext) {
36
36
  const phaseTaskId = iteration === 0
37
37
  ? `${run.taskId}-${def.phase}-${runSuffix}`
38
38
  : `${run.taskId}-${def.phase}-${runSuffix}-retry${iteration}`;
39
- const prevDef = phaseIndex > 0 ? AUTONOMOUS_PHASE_SEQUENCE[phaseIndex - 1] : undefined;
39
+ const prevDef = phaseIndex > 0 ? sequence[phaseIndex - 1] : undefined;
40
40
  const prevPhaseTaskId = prevDef
41
41
  ? `${run.taskId}-${prevDef.phase}-${runSuffix}`
42
42
  : undefined;
@@ -56,11 +56,11 @@ export async function initPhase(root, run, phaseIndex, retryContext) {
56
56
  ...(retryContext ? { notes: retryContext } : {}),
57
57
  };
58
58
  }
59
- export async function closePhase(root, run, phaseIndex, outcome) {
59
+ export async function closePhase(root, run, phaseIndex, outcome, sequence = AUTONOMOUS_PHASE_SEQUENCE) {
60
60
  let resolvedOutcome = outcome;
61
61
  const now = new Date().toISOString();
62
- const def = AUTONOMOUS_PHASE_SEQUENCE[phaseIndex];
63
- const nextDef = AUTONOMOUS_PHASE_SEQUENCE[phaseIndex + 1];
62
+ const def = sequence[phaseIndex];
63
+ const nextDef = sequence[phaseIndex + 1];
64
64
  if (!def)
65
65
  throw new Error(`invalid phase index: ${phaseIndex}`);
66
66
  const phase = run.phases.find((p) => p.phase === def.phase);
@@ -95,6 +95,9 @@ export async function closePhase(root, run, phaseIndex, outcome) {
95
95
  const updatedPhase = {
96
96
  ...phase,
97
97
  status: outcomeToPhaseStatus(resolvedOutcome),
98
+ ...(resolvedOutcome.kind === "gate_pause" && nextDef
99
+ ? { gateId: `${def.phase}->${nextDef.phase}` }
100
+ : {}),
98
101
  ...(handoffArtifact !== undefined ? { handoffArtifact } : {}),
99
102
  ...(reviewArtifact !== undefined ? { reviewArtifact } : {}),
100
103
  notes: resolvedOutcome.kind !== "gate_pause"
@@ -126,7 +129,12 @@ export async function closePhase(root, run, phaseIndex, outcome) {
126
129
  taskId: run.taskId,
127
130
  actor: def.role,
128
131
  summary: `Gate pause at ${def.phase}→${nextDef?.phase ?? "end"}`,
129
- metadata: { runId: run.id, phase: def.phase, reviewArtifact },
132
+ metadata: {
133
+ runId: run.id,
134
+ phase: def.phase,
135
+ gateId: `${def.phase}->${nextDef?.phase ?? "end"}`,
136
+ reviewArtifact,
137
+ },
130
138
  });
131
139
  if (reviewArtifact) {
132
140
  await notifyGatePaused({
@@ -147,6 +155,18 @@ export async function closePhase(root, run, phaseIndex, outcome) {
147
155
  });
148
156
  await updateTask({ id: phase.taskId, status: "done" }, root);
149
157
  }
158
+ else if (resolvedOutcome.kind === "qa_fail") {
159
+ await notifyWorkflowLifecycle({
160
+ root,
161
+ taskId: run.taskId,
162
+ kind: "qa_retry",
163
+ runId: run.id,
164
+ phase: def.phase,
165
+ actor: def.role,
166
+ detail: resolvedOutcome.notes,
167
+ idempotencyKey: `qa_retry:${run.id}:${updatedRun.qaIterations}`,
168
+ });
169
+ }
150
170
  return {
151
171
  run: updatedRun,
152
172
  ...(handoffArtifact !== undefined ? { handoffArtifact } : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"autonomous-phase-lifecycle.js","sourceRoot":"","sources":["../src/autonomous-phase-lifecycle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"autonomous-phase-lifecycle.js","sourceRoot":"","sources":["../src/autonomous-phase-lifecycle.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
+ import type { AutonomousPhaseDefinition } from "./autonomous-workflow-constants.js";
1
2
  import type { AutonomousRun } from "./types.js";
2
- export declare function markRunFailed(root: string, run: AutonomousRun, reason: string): Promise<AutonomousRun>;
3
+ export declare function cancelRun(root: string, runId: string, reason?: string): Promise<AutonomousRun>;
4
+ export declare function markRunFailed(root: string, run: AutonomousRun, reason: string, failedPhase?: string): Promise<AutonomousRun>;
3
5
  export declare function markRunDone(root: string, run: AutonomousRun): Promise<AutonomousRun>;
4
- export declare function resumePhaseIndex(run: AutonomousRun): number;
5
- export declare function suspendPhaseForClarification(root: string, run: AutonomousRun, phaseIndex: number): Promise<AutonomousRun>;
6
- export declare function resumePhaseFromClarification(root: string, run: AutonomousRun, phaseIndex: number): Promise<AutonomousRun>;
6
+ export declare function resumePhaseIndex(run: AutonomousRun, sequence?: AutonomousPhaseDefinition[]): number;
7
+ export declare function suspendPhaseForClarification(root: string, run: AutonomousRun, phaseIndex: number, sequence?: AutonomousPhaseDefinition[]): Promise<AutonomousRun>;
8
+ export declare function resumePhaseFromClarification(root: string, run: AutonomousRun, phaseIndex: number, sequence?: AutonomousPhaseDefinition[]): Promise<AutonomousRun>;