@jterrats/open-orchestra 0.5.5 → 0.5.7

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 (140) hide show
  1. package/dist/assets/web-console.js +35 -5
  2. package/dist/autonomous-run-state.d.ts +4 -1
  3. package/dist/autonomous-run-state.js +8 -2
  4. package/dist/autonomous-run-state.js.map +1 -1
  5. package/dist/autonomous-run-store.d.ts +3 -1
  6. package/dist/autonomous-run-store.js +6 -0
  7. package/dist/autonomous-run-store.js.map +1 -1
  8. package/dist/autonomous-workflow-constants.js +5 -1
  9. package/dist/autonomous-workflow-constants.js.map +1 -1
  10. package/dist/benchmark.js +47 -15
  11. package/dist/benchmark.js.map +1 -1
  12. package/dist/cli.js +16 -1
  13. package/dist/cli.js.map +1 -1
  14. package/dist/collaboration-flows.js +2 -14
  15. package/dist/collaboration-flows.js.map +1 -1
  16. package/dist/command-manifest.js +6 -1
  17. package/dist/command-manifest.js.map +1 -1
  18. package/dist/commands.d.ts +5 -2
  19. package/dist/commands.js +64 -24
  20. package/dist/commands.js.map +1 -1
  21. package/dist/constants.d.ts +1 -0
  22. package/dist/constants.js +4 -0
  23. package/dist/constants.js.map +1 -1
  24. package/dist/cursor-canvas.d.ts +20 -0
  25. package/dist/cursor-canvas.js +119 -0
  26. package/dist/cursor-canvas.js.map +1 -0
  27. package/dist/doc-sync.d.ts +25 -0
  28. package/dist/doc-sync.js +79 -0
  29. package/dist/doc-sync.js.map +1 -0
  30. package/dist/gemini-provider.d.ts +3 -6
  31. package/dist/gemini-provider.js +8 -17
  32. package/dist/gemini-provider.js.map +1 -1
  33. package/dist/model-providers.d.ts +5 -12
  34. package/dist/model-providers.js +17 -42
  35. package/dist/model-providers.js.map +1 -1
  36. package/dist/network-policy.d.ts +2 -0
  37. package/dist/network-policy.js +6 -0
  38. package/dist/network-policy.js.map +1 -0
  39. package/dist/ollama-provider.d.ts +3 -6
  40. package/dist/ollama-provider.js +7 -16
  41. package/dist/ollama-provider.js.map +1 -1
  42. package/dist/package-update-check.d.ts +1 -0
  43. package/dist/package-update-check.js +4 -0
  44. package/dist/package-update-check.js.map +1 -1
  45. package/dist/phase-executor.js +300 -9
  46. package/dist/phase-executor.js.map +1 -1
  47. package/dist/phase-playbooks.d.ts +3 -1
  48. package/dist/phase-playbooks.js +64 -2
  49. package/dist/phase-playbooks.js.map +1 -1
  50. package/dist/planning-commands.js +12 -35
  51. package/dist/planning-commands.js.map +1 -1
  52. package/dist/policy-commands.d.ts +2 -0
  53. package/dist/policy-commands.js +29 -0
  54. package/dist/policy-commands.js.map +1 -0
  55. package/dist/policy-defaults.d.ts +2 -0
  56. package/dist/policy-defaults.js +42 -0
  57. package/dist/policy-defaults.js.map +1 -0
  58. package/dist/policy.d.ts +20 -0
  59. package/dist/policy.js +155 -0
  60. package/dist/policy.js.map +1 -0
  61. package/dist/prompt-registry-validation.d.ts +3 -0
  62. package/dist/prompt-registry-validation.js +24 -21
  63. package/dist/prompt-registry-validation.js.map +1 -1
  64. package/dist/provider-utils.d.ts +11 -0
  65. package/dist/provider-utils.js +14 -0
  66. package/dist/provider-utils.js.map +1 -1
  67. package/dist/refresh-generated.d.ts +23 -0
  68. package/dist/refresh-generated.js +103 -0
  69. package/dist/refresh-generated.js.map +1 -0
  70. package/dist/runtime-adapters.d.ts +2 -1
  71. package/dist/runtime-adapters.js +16 -0
  72. package/dist/runtime-adapters.js.map +1 -1
  73. package/dist/runtime-commands.js +8 -3
  74. package/dist/runtime-commands.js.map +1 -1
  75. package/dist/runtime-execution-adapters.js +40 -0
  76. package/dist/runtime-execution-adapters.js.map +1 -1
  77. package/dist/runtime-execution-renderer.js +27 -7
  78. package/dist/runtime-execution-renderer.js.map +1 -1
  79. package/dist/runtime-execution.d.ts +6 -1
  80. package/dist/runtime-execution.js +38 -0
  81. package/dist/runtime-execution.js.map +1 -1
  82. package/dist/skills-catalog.js +1 -0
  83. package/dist/skills-catalog.js.map +1 -1
  84. package/dist/skills-commands.d.ts +1 -0
  85. package/dist/skills-commands.js +24 -0
  86. package/dist/skills-commands.js.map +1 -1
  87. package/dist/skills-planning.js +7 -18
  88. package/dist/skills-planning.js.map +1 -1
  89. package/dist/task-graph-commands.js +1 -11
  90. package/dist/task-graph-commands.js.map +1 -1
  91. package/dist/task-text.d.ts +8 -0
  92. package/dist/task-text.js +18 -0
  93. package/dist/task-text.js.map +1 -0
  94. package/dist/types/metrics.d.ts +1 -1
  95. package/dist/types/model-config.d.ts +16 -4
  96. package/dist/types/runtime.d.ts +27 -0
  97. package/dist/types/tasks.d.ts +4 -0
  98. package/dist/types/workflow-run.d.ts +18 -0
  99. package/dist/types.d.ts +11 -3
  100. package/dist/types.js.map +1 -1
  101. package/dist/web-api-read-routes.js +14 -2
  102. package/dist/web-api-read-routes.js.map +1 -1
  103. package/dist/workflow-approval-service.js +11 -4
  104. package/dist/workflow-approval-service.js.map +1 -1
  105. package/dist/workflow-approval-utils.js +13 -3
  106. package/dist/workflow-approval-utils.js.map +1 -1
  107. package/dist/workflow-event-query.d.ts +2 -0
  108. package/dist/workflow-event-query.js +6 -0
  109. package/dist/workflow-event-query.js.map +1 -0
  110. package/dist/workflow-evidence-service.js +10 -8
  111. package/dist/workflow-evidence-service.js.map +1 -1
  112. package/dist/workflow-gates.d.ts +1 -0
  113. package/dist/workflow-gates.js +46 -0
  114. package/dist/workflow-gates.js.map +1 -1
  115. package/dist/workflow-markdown.d.ts +6 -0
  116. package/dist/workflow-markdown.js +25 -0
  117. package/dist/workflow-markdown.js.map +1 -0
  118. package/dist/workflow-phase-planner.d.ts +19 -0
  119. package/dist/workflow-phase-planner.js +133 -0
  120. package/dist/workflow-phase-planner.js.map +1 -0
  121. package/dist/workflow-run-commands.d.ts +1 -0
  122. package/dist/workflow-run-commands.js +235 -20
  123. package/dist/workflow-run-commands.js.map +1 -1
  124. package/dist/workflow-services.d.ts +6 -1
  125. package/dist/workflow-services.js +70 -12
  126. package/dist/workflow-services.js.map +1 -1
  127. package/dist/workflow-templates.js +2 -14
  128. package/dist/workflow-templates.js.map +1 -1
  129. package/dist/workspace-validator.js +24 -2
  130. package/dist/workspace-validator.js.map +1 -1
  131. package/dist/workspace.js +2 -0
  132. package/dist/workspace.js.map +1 -1
  133. package/docs/autonomous-workflow.md +28 -1
  134. package/docs/benchmark.md +2 -2
  135. package/docs/core-command-surface.md +3 -0
  136. package/docs/orchestra-mvp.md +3 -0
  137. package/docs/runtime-adapters.md +21 -0
  138. package/docs/skill-loading-strategy.md +1 -0
  139. package/package.json +1 -1
  140. package/skills/doc-sync/SKILL.md +2 -0
@@ -1,11 +1,17 @@
1
- import { readFile } from "node:fs/promises";
1
+ import { chmod, readFile } from "node:fs/promises";
2
2
  import path from "node:path";
3
3
  import { ensureDir, resolveWorkflowPath } from "./fs-utils.js";
4
4
  import { loadPhasePlaybook } from "./phase-playbooks.js";
5
+ import { markdownListOrNone } from "./workflow-markdown.js";
5
6
  import { renderSkills } from "./skills.js";
6
7
  import { appendEvent, readEvents, writeArtifact } from "./workspace.js";
8
+ import { checkArchitectSizing } from "./autonomous-phase-lifecycle.js";
7
9
  import { checkUsageBudget, completeWithProviderFallback, getTaskContext, getWorkflowConfig, recordDecision, recordModelProvenance, } from "./workflow-services.js";
10
+ import { generatePlaywrightTestPlan } from "./workflow-summary-service.js";
8
11
  const DEFAULT_ARCHITECT_SIZING = "m [3 points]";
12
+ const DEFAULT_ARCHITECT_SIZING_LABEL = "m";
13
+ const DEFAULT_ARCHITECT_POINTS = 3;
14
+ const DEFAULT_DEVELOPER_POINTS = 3;
9
15
  export async function phaseExecutionMode(root, role) {
10
16
  const routing = await phaseRouting(root, role);
11
17
  return routing.provider === "none" ? "deterministic" : "llm";
@@ -17,6 +23,14 @@ export async function executePhaseWithLlm({ root, run, phase, phaseIndex, }) {
17
23
  }
18
24
  const routing = await phaseRouting(root, phase.role);
19
25
  if (routing.provider === "none") {
26
+ const output = defaultStructuredOutput(phase);
27
+ await generateQaE2eArtifactsIfApplicable({ root, run, phase, output });
28
+ if (phase.role === "architect") {
29
+ await recordArchitectSizingIfMissing(root, run.taskId, output);
30
+ }
31
+ if (phase.role === "developer") {
32
+ await recordDeveloperPointsIfMissing(root, run.taskId, output);
33
+ }
20
34
  return {
21
35
  mode: "deterministic",
22
36
  outcome: { kind: "done", notes: phase.summary },
@@ -32,6 +46,7 @@ export async function executePhaseWithLlm({ root, run, phase, phaseIndex, }) {
32
46
  });
33
47
  const response = result.response;
34
48
  const output = parsePhaseOutput(response.content);
49
+ await generateQaE2eArtifactsIfApplicable({ root, run, phase, output });
35
50
  const artifact = await writePhaseArtifact({
36
51
  root,
37
52
  run,
@@ -68,13 +83,17 @@ export async function executePhaseWithLlm({ root, run, phase, phaseIndex, }) {
68
83
  },
69
84
  });
70
85
  if (phase.role === "architect") {
71
- await recordArchitectSizing(root, run.taskId, output);
86
+ await recordArchitectSizingIfMissing(root, run.taskId, output);
87
+ }
88
+ if (phase.role === "developer") {
89
+ await recordDeveloperPointsIfMissing(root, run.taskId, output);
72
90
  }
73
91
  const outcome = phaseOutcome(phase, output);
74
92
  return { mode: "llm", artifact, output, outcome };
75
93
  }
76
94
  export async function buildPhasePrompt({ root, run, phase, phaseIndex, }) {
77
95
  const context = await getTaskContext(run.taskId, root);
96
+ const observations = observationDecisions(context.decisions);
78
97
  const skills = await renderSkills({
79
98
  target: "generic",
80
99
  taskId: run.taskId,
@@ -88,6 +107,7 @@ export async function buildPhasePrompt({ root, run, phase, phaseIndex, }) {
88
107
  system: [
89
108
  `You are the ${phase.role} phase agent for Open Orchestra.`,
90
109
  skills.content,
110
+ workflowRunModeProtocol(run.mode ?? "new", observations),
91
111
  "Phase playbook:",
92
112
  playbook.content,
93
113
  ...(playbook.warning ? [`Warning: ${playbook.warning}`] : []),
@@ -98,6 +118,7 @@ export async function buildPhasePrompt({ root, run, phase, phaseIndex, }) {
98
118
  `Phase index: ${phaseIndex}`,
99
119
  `Phase: ${phase.phase}`,
100
120
  `Role: ${phase.role}`,
121
+ `Workflow mode: ${run.mode ?? "new"}`,
101
122
  "",
102
123
  "Task context JSON:",
103
124
  JSON.stringify(context, null, 2),
@@ -112,9 +133,49 @@ export async function buildPhasePrompt({ root, run, phase, phaseIndex, }) {
112
133
  ].join("\n"),
113
134
  };
114
135
  }
136
+ function workflowRunModeProtocol(mode, observations) {
137
+ if (mode === "redo") {
138
+ return [
139
+ "Workflow redo protocol:",
140
+ "- Treat every OBSERVATION as mandatory rework input.",
141
+ "- Phase output must address each observation with quote, accept/reject/defer, reasoning, and evidence.",
142
+ "- Accepted observations require corrected output; rejected or deferred observations require explicit rationale.",
143
+ "",
144
+ "Mandatory observations:",
145
+ observations.length > 0
146
+ ? observations.map((item) => `- ${item}`).join("\n")
147
+ : "- None recorded.",
148
+ ].join("\n");
149
+ }
150
+ if (mode === "sign-off") {
151
+ return [
152
+ "Workflow sign-off protocol:",
153
+ "- Validate prior output without silently clearing unresolved OBSERVATION items.",
154
+ "- If any observation remains unresolved, return verdict fail or include a blocking finding.",
155
+ "",
156
+ "Open observations:",
157
+ observations.length > 0
158
+ ? observations.map((item) => `- ${item}`).join("\n")
159
+ : "- None recorded.",
160
+ ].join("\n");
161
+ }
162
+ return "Workflow mode: new. Produce first-pass phase output against current context.";
163
+ }
164
+ function observationDecisions(decisions) {
165
+ return decisions
166
+ .map((decision) => ({
167
+ title: String(decision.metadata.title ?? decision.summary),
168
+ decision: String(decision.metadata.decision ?? ""),
169
+ }))
170
+ .filter((decision) => decision.title.startsWith("OBSERVATION:") ||
171
+ decision.decision.startsWith("OBSERVATION:"))
172
+ .map((decision) => decision.decision
173
+ ? `${decision.title} — ${decision.decision}`
174
+ : decision.title);
175
+ }
115
176
  export function parsePhaseOutput(content) {
116
177
  const parsed = JSON.parse(extractJson(content));
117
- return {
178
+ const output = {
118
179
  summary: stringOrDefault(parsed.summary, "Phase completed"),
119
180
  notes: stringOrDefault(parsed.notes, parsed.summary ?? "Phase completed"),
120
181
  verdict: parsed.verdict === "fail" ? "fail" : "pass",
@@ -122,16 +183,164 @@ export function parsePhaseOutput(content) {
122
183
  ? parsed.findings.map((finding) => String(finding))
123
184
  : [],
124
185
  decisions: Array.isArray(parsed.decisions)
125
- ? parsed.decisions.map((decision) => String(decision))
186
+ ? parsed.decisions
187
+ .map((decision) => structuredItemToString(decision, "decision"))
188
+ .filter((decision) => decision.length > 0)
126
189
  : [],
127
190
  evidence: Array.isArray(parsed.evidence)
128
- ? parsed.evidence.map((item) => String(item))
191
+ ? parsed.evidence
192
+ .map((item) => structuredItemToString(item, "evidence"))
193
+ .filter((item) => item.length > 0)
129
194
  : [],
130
195
  handoff: stringOrDefault(parsed.handoff, parsed.notes ?? "Phase handoff ready"),
131
- sizing: typeof parsed.sizing === "string" && parsed.sizing.trim()
132
- ? parsed.sizing
133
- : DEFAULT_ARCHITECT_SIZING,
196
+ sizing: normalizeArchitectSizing(parsed.sizing),
134
197
  };
198
+ const architecturalConcerns = normalizeArchitecturalConcerns(parsed.architecturalConcerns);
199
+ if (architecturalConcerns !== undefined) {
200
+ output.architecturalConcerns = architecturalConcerns;
201
+ }
202
+ const developerPoints = normalizeDeveloperPoints(parsed.developerPoints);
203
+ if (developerPoints !== undefined) {
204
+ output.developerPoints = developerPoints;
205
+ }
206
+ return output;
207
+ }
208
+ async function generateQaE2eArtifactsIfApplicable({ root, run, phase, output, }) {
209
+ if (phase.phase !== "qa") {
210
+ return;
211
+ }
212
+ const context = await getTaskContext(run.taskId, root);
213
+ if (!needsExecutableE2eArtifacts(context)) {
214
+ return;
215
+ }
216
+ const commands = await e2eCommandsForTask(root, context.task);
217
+ if (commands.length === 0) {
218
+ output.findings.push("No project E2E script was found, so QA could not generate an executable runner.");
219
+ return;
220
+ }
221
+ const directory = path.join("runs", run.taskId, phase.phase);
222
+ await ensureDir(resolveWorkflowPath(root, directory));
223
+ const plan = await generatePlaywrightTestPlan(run.taskId, root);
224
+ const planArtifact = await writeArtifact(root, directory, `${run.id}-${phase.phase}-e2e-plan.md`, renderGeneratedE2ePlan(plan, commands));
225
+ const runnerArtifact = await writeArtifact(root, directory, `${run.id}-${phase.phase}-e2e.sh`, renderGeneratedE2eRunner(commands));
226
+ await chmod(path.join(root, runnerArtifact), 0o755);
227
+ output.evidence.push(`Generated E2E plan: ${planArtifact}`, `Generated executable E2E runner: ${runnerArtifact}`);
228
+ await appendEvent(root, {
229
+ type: "EVIDENCE_ADDED",
230
+ taskId: run.taskId,
231
+ actor: phase.role,
232
+ summary: "QA generated executable E2E artifacts",
233
+ artifacts: [planArtifact, runnerArtifact],
234
+ metadata: {
235
+ runId: run.id,
236
+ phase: phase.phase,
237
+ commands,
238
+ },
239
+ });
240
+ }
241
+ function needsExecutableE2eArtifacts(context) {
242
+ if (context.workflowTemplates.some((selection) => selection.template.id === "playwright-evidence")) {
243
+ return true;
244
+ }
245
+ const taskText = [
246
+ context.task.title,
247
+ context.task.goal,
248
+ ...(context.task.acceptanceCriteria ?? []),
249
+ ...(context.task.risks ?? []),
250
+ ...(context.task.paths ?? []),
251
+ ]
252
+ .join(" ")
253
+ .toLowerCase();
254
+ return /\b(e2e|end-to-end|playwright|browser|web|ui|site|cli)\b/.test(taskText);
255
+ }
256
+ async function e2eCommandsForTask(root, task) {
257
+ const scripts = await packageScripts(root);
258
+ const taskText = [
259
+ task.title,
260
+ task.goal,
261
+ ...(task.acceptanceCriteria ?? []),
262
+ ...(task.paths ?? []),
263
+ ]
264
+ .join(" ")
265
+ .toLowerCase();
266
+ const commands = [];
267
+ if (scripts.has("test:e2e:init") &&
268
+ /\b(cli|init|onboarding)\b/.test(taskText)) {
269
+ commands.push("npm run test:e2e:init");
270
+ }
271
+ if (scripts.has("test:e2e") &&
272
+ /\b(e2e|end-to-end|playwright|browser|web|ui|site)\b/.test(taskText)) {
273
+ commands.push("npm run test:e2e");
274
+ }
275
+ if (commands.length === 0 && /\b(e2e|end-to-end)\b/.test(taskText)) {
276
+ for (const script of [...scripts].filter((name) => name.startsWith("test:e2e"))) {
277
+ commands.push(`npm run ${script}`);
278
+ }
279
+ }
280
+ return [...new Set(commands)];
281
+ }
282
+ async function packageScripts(root) {
283
+ try {
284
+ const pkg = JSON.parse(await readFile(path.join(root, "package.json"), "utf8"));
285
+ return new Set(Object.entries(pkg.scripts ?? {})
286
+ .filter(([, value]) => typeof value === "string")
287
+ .map(([name]) => name));
288
+ }
289
+ catch {
290
+ return new Set();
291
+ }
292
+ }
293
+ function renderGeneratedE2ePlan(plan, commands) {
294
+ return [
295
+ `# Generated E2E Plan: ${plan.taskId}`,
296
+ "",
297
+ `- Title: ${plan.title}`,
298
+ `- Target user: ${plan.targetUser}`,
299
+ `- Executable runner: ./${plan.taskId}-qa-e2e.sh`,
300
+ "",
301
+ "## Commands",
302
+ ...commands.map((command) => `- ${command}`),
303
+ "",
304
+ "## Scenarios",
305
+ ...plan.scenarios.flatMap((scenario) => [
306
+ `### ${scenario.name}`,
307
+ `- Source: ${scenario.source}`,
308
+ `- Page object: ${scenario.pageObject}`,
309
+ `- Selectors: ${scenario.selectors.join("; ")}`,
310
+ `- Assertions: ${scenario.assertions.join("; ")}`,
311
+ `- Evidence: ${scenario.evidence.join(", ")}`,
312
+ "",
313
+ ]),
314
+ "## Fixtures",
315
+ ...markdownListOrNone(plan.fixtures),
316
+ "",
317
+ "## Notes",
318
+ ...markdownListOrNone(plan.notes),
319
+ "",
320
+ ].join("\n");
321
+ }
322
+ function renderGeneratedE2eRunner(commands) {
323
+ return [
324
+ "#!/usr/bin/env sh",
325
+ "set -eu",
326
+ "",
327
+ ...commands.flatMap((command) => [`echo "+ ${command}"`, command, ""]),
328
+ ].join("\n");
329
+ }
330
+ function structuredItemToString(value, fallbackKind) {
331
+ if (typeof value === "string") {
332
+ return value.trim();
333
+ }
334
+ if (isRecord(value)) {
335
+ const summary = stringOrDefault(value.summary, "");
336
+ const pathValue = stringOrDefault(value.path, "");
337
+ const kind = stringOrDefault(value.kind, fallbackKind);
338
+ if (summary || pathValue) {
339
+ return [kind, summary, pathValue].filter(Boolean).join(": ");
340
+ }
341
+ return JSON.stringify(value);
342
+ }
343
+ return String(value).trim();
135
344
  }
136
345
  async function phaseRouting(root, role) {
137
346
  const config = await getWorkflowConfig(root);
@@ -146,7 +355,11 @@ function phaseOutcome(phase, output) {
146
355
  }
147
356
  return { kind: "done", notes: output.notes };
148
357
  }
149
- async function recordArchitectSizing(root, taskId, output) {
358
+ async function recordArchitectSizingIfMissing(root, taskId, output) {
359
+ const existingSizing = await checkArchitectSizing(root, taskId);
360
+ if (existingSizing.found) {
361
+ return;
362
+ }
150
363
  await recordDecision({
151
364
  task: taskId,
152
365
  owner: "architect",
@@ -157,6 +370,74 @@ async function recordArchitectSizing(root, taskId, output) {
157
370
  status: "accepted",
158
371
  }, root);
159
372
  }
373
+ function normalizeArchitectSizing(value) {
374
+ if (typeof value !== "string") {
375
+ return DEFAULT_ARCHITECT_SIZING;
376
+ }
377
+ const match = /^\s*(xs|s|m|l|xl)\b/i.exec(value);
378
+ if (!match) {
379
+ return DEFAULT_ARCHITECT_SIZING;
380
+ }
381
+ const label = match[1]?.toLowerCase();
382
+ const pointsMatch = /\[(\d+)\s*points?\]/i.exec(value);
383
+ const points = pointsMatch && Number.isFinite(Number(pointsMatch[1]))
384
+ ? Number(pointsMatch[1])
385
+ : label === DEFAULT_ARCHITECT_SIZING_LABEL
386
+ ? DEFAULT_ARCHITECT_POINTS
387
+ : undefined;
388
+ return points === undefined ? label : `${label} [${points} points]`;
389
+ }
390
+ async function recordDeveloperPointsIfMissing(root, taskId, output) {
391
+ const existingPoints = await checkDeveloperPoints(root, taskId);
392
+ if (existingPoints !== undefined) {
393
+ return;
394
+ }
395
+ const architectSizing = await checkArchitectSizing(root, taskId);
396
+ const points = output.developerPoints ??
397
+ (architectSizing.found ? architectSizing.points : undefined) ??
398
+ DEFAULT_DEVELOPER_POINTS;
399
+ await recordDecision({
400
+ task: taskId,
401
+ owner: "developer",
402
+ title: "Implementation story points",
403
+ context: output.summary,
404
+ decision: `${points} points`,
405
+ consequences: output.handoff,
406
+ status: "accepted",
407
+ }, root);
408
+ }
409
+ async function checkDeveloperPoints(root, taskId) {
410
+ const events = await readEvents(root);
411
+ for (const event of events) {
412
+ if (event.type === "DECISION_RECORDED" &&
413
+ event.taskId === taskId &&
414
+ event.actor === "developer" &&
415
+ typeof event.metadata.points === "number") {
416
+ return event.metadata.points;
417
+ }
418
+ }
419
+ return undefined;
420
+ }
421
+ function normalizeDeveloperPoints(value) {
422
+ if (typeof value !== "number" || !Number.isFinite(value) || value <= 0) {
423
+ return undefined;
424
+ }
425
+ return Math.round(value);
426
+ }
427
+ function normalizeArchitecturalConcerns(value) {
428
+ if (!isRecord(value)) {
429
+ return undefined;
430
+ }
431
+ return {
432
+ inherited: stringArray(value.inherited),
433
+ selfImposed: stringArray(value.selfImposed),
434
+ };
435
+ }
436
+ function stringArray(value) {
437
+ return Array.isArray(value)
438
+ ? value.map((item) => String(item).trim()).filter((item) => item.length > 0)
439
+ : [];
440
+ }
160
441
  async function writePhaseArtifact({ root, run, phase, response, output, fallbackUsed, }) {
161
442
  const directory = path.join("runs", run.taskId, phase.phase);
162
443
  await ensureDir(resolveWorkflowPath(root, directory));
@@ -205,6 +486,13 @@ function defaultStructuredOutput(phase) {
205
486
  if (phase.role === "architect") {
206
487
  output.sizing = DEFAULT_ARCHITECT_SIZING;
207
488
  }
489
+ if (phase.role === "developer") {
490
+ output.developerPoints = DEFAULT_DEVELOPER_POINTS;
491
+ output.architecturalConcerns = {
492
+ inherited: [],
493
+ selfImposed: [],
494
+ };
495
+ }
208
496
  return output;
209
497
  }
210
498
  function extractJson(content) {
@@ -220,4 +508,7 @@ function extractJson(content) {
220
508
  function stringOrDefault(value, fallback) {
221
509
  return typeof value === "string" && value.trim() ? value : fallback;
222
510
  }
511
+ function isRecord(value) {
512
+ return typeof value === "object" && value !== null && !Array.isArray(value);
513
+ }
223
514
  //# sourceMappingURL=phase-executor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"phase-executor.js","sourceRoot":"","sources":["../src/phase-executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"phase-executor.js","sourceRoot":"","sources":["../src/phase-executor.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  import type { PhasePlaybook } from "./types/skills.js";
2
2
  export declare const DEFAULT_PLAYBOOKS_DIR = ".agent-workflow/playbooks";
3
3
  export declare const DEFAULT_PHASE_PLAYBOOKS: Record<string, string>;
4
- export declare function initPhasePlaybooks(root: string): Promise<string[]>;
4
+ export declare function initPhasePlaybooks(root: string, options?: {
5
+ force?: boolean;
6
+ }): Promise<string[]>;
5
7
  export declare function loadPhasePlaybook(root: string, phase: string): Promise<PhasePlaybook>;
6
8
  export declare function loadPhasePlaybookForRole(root: string, role: string): Promise<PhasePlaybook | undefined>;
7
9
  export declare function loadPhasePlaybooksForRoles(root: string, roles: string[]): Promise<Record<string, PhasePlaybook>>;
@@ -25,36 +25,96 @@ export const DEFAULT_PHASE_PLAYBOOKS = {
25
25
  "- Prefer existing project patterns before adding abstractions.",
26
26
  "- Record sizing and ADR-level decisions when the design has lasting impact.",
27
27
  ].join("\n"),
28
+ architecture_challenge: [
29
+ "# Architecture Challenge Playbook",
30
+ "",
31
+ "- Challenge over-engineered, convention-breaking, or under-specified architecture before development starts.",
32
+ "- Compare the design against existing project patterns and simpler alternatives.",
33
+ "- Record findings as pass, changes, or block with concrete recovery guidance for Architect.",
34
+ ].join("\n"),
28
35
  developer: [
29
36
  "# Developer Playbook",
30
37
  "",
31
38
  "- Implement the smallest coherent change that satisfies acceptance criteria.",
32
39
  "- Keep business logic typed, tested, and close to existing patterns.",
40
+ "- Always include `Architectural Concerns (inherited)` for upstream design drift; write `None` when empty.",
41
+ "- Always include `Architectural Concerns (self-imposed)` for new abstractions, files, metadata, APIs, config, scripts, or workflow changes; write `None` when empty.",
42
+ "- For every self-imposed concern, explain why existing project patterns or a simpler alternative are insufficient.",
43
+ "- Carry architectural concern findings in structured output as `architecturalConcerns.inherited` and `architecturalConcerns.selfImposed`.",
33
44
  "- Record evidence, changed files, known gaps, and handoff notes.",
34
45
  ].join("\n"),
35
46
  qa: [
36
47
  "# QA Playbook",
37
48
  "",
49
+ "## QA Checklist",
50
+ "",
51
+ "- Map each acceptance criterion to deterministic verification or a documented manual check.",
52
+ "- Confirm changed behavior, regression areas, edge cases, data setup, and environment assumptions.",
53
+ "- Record exact commands, pass/fail result, artifacts, known gaps, and release recommendation.",
54
+ "",
55
+ "## Regression",
56
+ "",
57
+ "- Identify critical flows, prior defects, adjacent modules, and brittle integration points.",
58
+ "- Prefer existing automated coverage before adding new tests; note any intentional manual coverage.",
59
+ "",
60
+ "## Smoke Test",
61
+ "",
62
+ "- Define the smallest high-confidence smoke path for the changed behavior.",
63
+ "- Include CLI, API, or browser smoke evidence based on the user-facing surface.",
64
+ "",
38
65
  "- Verify acceptance criteria, regressions, edge cases, and evidence quality.",
39
66
  "- Prefer deterministic automated checks; add browser evidence for UI flows.",
40
67
  "- State residual risks and whether release should proceed.",
41
68
  ].join("\n"),
69
+ docs_review: [
70
+ "# Documentation Review Playbook",
71
+ "",
72
+ "## Doc Review",
73
+ "",
74
+ "- Identify the authoritative docs, README, changelog, public site, runbook, and prompt registry surfaces affected by the change.",
75
+ "- Validate command examples against the command manifest, help output, or repo-local CLI.",
76
+ "- Keep user-facing copy concise, current, and aligned with the implemented behavior.",
77
+ "- Record docs updated, docs intentionally deferred, and any support/customer-facing notes.",
78
+ ].join("\n"),
79
+ ux_review: [
80
+ "# UX Review Playbook",
81
+ "",
82
+ "## UX Review",
83
+ "",
84
+ "- Validate end-to-end user flow, responsive behavior, accessibility, loading, empty, error, success, and recovery states.",
85
+ "- Check copy clarity, control labels, keyboard/focus behavior, and mobile-first usability.",
86
+ "- Attach screenshots, traces, or explicit notes when UI behavior is affected.",
87
+ "- Record blocking UX/accessibility findings before QA or release proceeds.",
88
+ ].join("\n"),
42
89
  release: [
43
90
  "# Release Playbook",
44
91
  "",
92
+ "## Deployment Risk Challenge",
93
+ "",
94
+ "- Challenge rollout, rollback, config, API, security-boundary, observability, and production-impact complexity before sign-off.",
95
+ "- Flag smells such as excessive rollout waves for the story size, rollback complexity disproportionate to the change, production-impacting config/API changes, security-boundary changes, and missing observability.",
96
+ "- If challenge findings exceed the project's risk threshold, record a blocking release review or action-policy approval request instead of approving the runbook.",
97
+ "- If no challenge findings exist, state `None` explicitly.",
98
+ "",
45
99
  "- Confirm CI, versioning, release notes, rollback path, and operational risk.",
46
100
  "- Verify published artifacts or deployment evidence before closing the work.",
47
101
  "- Record go/no-go rationale and any follow-up monitoring needs.",
102
+ "",
103
+ "## Release Promote",
104
+ "",
105
+ "- Validate changelog or release note impact, smoke evidence, rollback evidence, and customer/support readiness.",
106
+ "- Confirm whether the change ships alone or is batched with adjacent completed tasks.",
107
+ "- Record promote, hold, or accepted-risk rationale before closing the release phase.",
48
108
  ].join("\n"),
49
109
  };
50
- export async function initPhasePlaybooks(root) {
110
+ export async function initPhasePlaybooks(root, options = {}) {
51
111
  const playbooksDir = resolveWorkspaceWritePath(root, DEFAULT_PLAYBOOKS_DIR);
52
112
  await ensureDir(playbooksDir);
53
113
  const written = [];
54
114
  for (const [phase, content] of Object.entries(DEFAULT_PHASE_PLAYBOOKS)) {
55
115
  const relativePath = `${DEFAULT_PLAYBOOKS_DIR}/${phase}.md`;
56
116
  const filePath = resolveWorkspaceWritePath(root, relativePath);
57
- if (!(await exists(filePath))) {
117
+ if (options.force || !(await exists(filePath))) {
58
118
  await writeFile(filePath, `${content}\n`, "utf8");
59
119
  }
60
120
  written.push(relativePath);
@@ -83,6 +143,8 @@ export function phaseForRole(role) {
83
143
  architect: "architect",
84
144
  developer: "developer",
85
145
  qa: "qa",
146
+ technical_writer: "docs_review",
147
+ ux_ui_designer: "ux_review",
86
148
  release_manager: "release",
87
149
  };
88
150
  return map[role];
@@ -1 +1 @@
1
- {"version":3,"file":"phase-playbooks.js","sourceRoot":"","sources":["../src/phase-playbooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"phase-playbooks.js","sourceRoot":"","sources":["../src/phase-playbooks.ts"],"names":[],"mappings":"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"}