@jterrats/open-orchestra 0.5.4 → 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 (159) hide show
  1. package/dist/assets/web-console.js +35 -5
  2. package/dist/autonomous-phase-lifecycle.js +3 -2
  3. package/dist/autonomous-phase-lifecycle.js.map +1 -1
  4. package/dist/autonomous-run-state.d.ts +4 -1
  5. package/dist/autonomous-run-state.js +8 -2
  6. package/dist/autonomous-run-state.js.map +1 -1
  7. package/dist/autonomous-run-store.d.ts +3 -1
  8. package/dist/autonomous-run-store.js +8 -1
  9. package/dist/autonomous-run-store.js.map +1 -1
  10. package/dist/autonomous-workflow-constants.js +5 -1
  11. package/dist/autonomous-workflow-constants.js.map +1 -1
  12. package/dist/benchmark.js +101 -9
  13. package/dist/benchmark.js.map +1 -1
  14. package/dist/cli.js +16 -1
  15. package/dist/cli.js.map +1 -1
  16. package/dist/collaboration-flows.js +5 -29
  17. package/dist/collaboration-flows.js.map +1 -1
  18. package/dist/command-manifest.js +7 -2
  19. package/dist/command-manifest.js.map +1 -1
  20. package/dist/commands.d.ts +5 -2
  21. package/dist/commands.js +64 -24
  22. package/dist/commands.js.map +1 -1
  23. package/dist/constants.d.ts +1 -0
  24. package/dist/constants.js +4 -0
  25. package/dist/constants.js.map +1 -1
  26. package/dist/cursor-canvas.d.ts +20 -0
  27. package/dist/cursor-canvas.js +119 -0
  28. package/dist/cursor-canvas.js.map +1 -0
  29. package/dist/defaults.d.ts +4 -0
  30. package/dist/defaults.js +4 -0
  31. package/dist/defaults.js.map +1 -1
  32. package/dist/delegation-decision.js +2 -10
  33. package/dist/delegation-decision.js.map +1 -1
  34. package/dist/doc-sync.d.ts +25 -0
  35. package/dist/doc-sync.js +79 -0
  36. package/dist/doc-sync.js.map +1 -0
  37. package/dist/gemini-provider.d.ts +3 -6
  38. package/dist/gemini-provider.js +14 -38
  39. package/dist/gemini-provider.js.map +1 -1
  40. package/dist/metrics-commands.js +16 -2
  41. package/dist/metrics-commands.js.map +1 -1
  42. package/dist/model-providers.d.ts +5 -12
  43. package/dist/model-providers.js +23 -64
  44. package/dist/model-providers.js.map +1 -1
  45. package/dist/network-policy.d.ts +2 -0
  46. package/dist/network-policy.js +6 -0
  47. package/dist/network-policy.js.map +1 -0
  48. package/dist/ollama-provider.d.ts +3 -6
  49. package/dist/ollama-provider.js +14 -38
  50. package/dist/ollama-provider.js.map +1 -1
  51. package/dist/package-update-check.d.ts +1 -0
  52. package/dist/package-update-check.js +4 -0
  53. package/dist/package-update-check.js.map +1 -1
  54. package/dist/phase-executor.js +305 -9
  55. package/dist/phase-executor.js.map +1 -1
  56. package/dist/phase-playbooks.d.ts +11 -0
  57. package/dist/phase-playbooks.js +200 -0
  58. package/dist/phase-playbooks.js.map +1 -0
  59. package/dist/planning-commands.js +18 -35
  60. package/dist/planning-commands.js.map +1 -1
  61. package/dist/policy-commands.d.ts +2 -0
  62. package/dist/policy-commands.js +29 -0
  63. package/dist/policy-commands.js.map +1 -0
  64. package/dist/policy-defaults.d.ts +2 -0
  65. package/dist/policy-defaults.js +42 -0
  66. package/dist/policy-defaults.js.map +1 -0
  67. package/dist/policy.d.ts +20 -0
  68. package/dist/policy.js +155 -0
  69. package/dist/policy.js.map +1 -0
  70. package/dist/prompt-registry-validation.d.ts +3 -0
  71. package/dist/prompt-registry-validation.js +24 -21
  72. package/dist/prompt-registry-validation.js.map +1 -1
  73. package/dist/provider-utils.d.ts +21 -0
  74. package/dist/provider-utils.js +45 -0
  75. package/dist/provider-utils.js.map +1 -0
  76. package/dist/refresh-generated.d.ts +23 -0
  77. package/dist/refresh-generated.js +103 -0
  78. package/dist/refresh-generated.js.map +1 -0
  79. package/dist/role-aliases.d.ts +2 -0
  80. package/dist/role-aliases.js +20 -0
  81. package/dist/role-aliases.js.map +1 -0
  82. package/dist/runtime-adapters.d.ts +2 -1
  83. package/dist/runtime-adapters.js +16 -0
  84. package/dist/runtime-adapters.js.map +1 -1
  85. package/dist/runtime-commands.js +8 -3
  86. package/dist/runtime-commands.js.map +1 -1
  87. package/dist/runtime-execution-adapters.js +40 -0
  88. package/dist/runtime-execution-adapters.js.map +1 -1
  89. package/dist/runtime-execution-renderer.d.ts +4 -3
  90. package/dist/runtime-execution-renderer.js +35 -9
  91. package/dist/runtime-execution-renderer.js.map +1 -1
  92. package/dist/runtime-execution.d.ts +6 -1
  93. package/dist/runtime-execution.js +43 -1
  94. package/dist/runtime-execution.js.map +1 -1
  95. package/dist/skills-catalog.js +1 -0
  96. package/dist/skills-catalog.js.map +1 -1
  97. package/dist/skills-commands.d.ts +1 -0
  98. package/dist/skills-commands.js +24 -0
  99. package/dist/skills-commands.js.map +1 -1
  100. package/dist/skills-planning.js +7 -18
  101. package/dist/skills-planning.js.map +1 -1
  102. package/dist/subagent-protocol.js +2 -13
  103. package/dist/subagent-protocol.js.map +1 -1
  104. package/dist/task-graph-commands.js +1 -11
  105. package/dist/task-graph-commands.js.map +1 -1
  106. package/dist/task-text.d.ts +8 -0
  107. package/dist/task-text.js +18 -0
  108. package/dist/task-text.js.map +1 -0
  109. package/dist/types/metrics.d.ts +2 -0
  110. package/dist/types/model-config.d.ts +18 -4
  111. package/dist/types/runtime.d.ts +27 -0
  112. package/dist/types/skills.d.ts +7 -0
  113. package/dist/types/tasks.d.ts +4 -0
  114. package/dist/types/workflow-run.d.ts +18 -0
  115. package/dist/types.d.ts +12 -4
  116. package/dist/types.js.map +1 -1
  117. package/dist/web-api-read-routes.js +14 -2
  118. package/dist/web-api-read-routes.js.map +1 -1
  119. package/dist/web-api.js +6 -0
  120. package/dist/web-api.js.map +1 -1
  121. package/dist/workflow-approval-service.js +11 -4
  122. package/dist/workflow-approval-service.js.map +1 -1
  123. package/dist/workflow-approval-utils.js +13 -3
  124. package/dist/workflow-approval-utils.js.map +1 -1
  125. package/dist/workflow-event-query.d.ts +2 -0
  126. package/dist/workflow-event-query.js +6 -0
  127. package/dist/workflow-event-query.js.map +1 -0
  128. package/dist/workflow-evidence-service.js +10 -8
  129. package/dist/workflow-evidence-service.js.map +1 -1
  130. package/dist/workflow-gates.d.ts +1 -0
  131. package/dist/workflow-gates.js +48 -11
  132. package/dist/workflow-gates.js.map +1 -1
  133. package/dist/workflow-markdown.d.ts +6 -0
  134. package/dist/workflow-markdown.js +25 -0
  135. package/dist/workflow-markdown.js.map +1 -0
  136. package/dist/workflow-phase-planner.d.ts +19 -0
  137. package/dist/workflow-phase-planner.js +133 -0
  138. package/dist/workflow-phase-planner.js.map +1 -0
  139. package/dist/workflow-run-commands.d.ts +1 -0
  140. package/dist/workflow-run-commands.js +266 -23
  141. package/dist/workflow-run-commands.js.map +1 -1
  142. package/dist/workflow-services.d.ts +6 -1
  143. package/dist/workflow-services.js +72 -26
  144. package/dist/workflow-services.js.map +1 -1
  145. package/dist/workflow-templates.d.ts +2 -1
  146. package/dist/workflow-templates.js +6 -16
  147. package/dist/workflow-templates.js.map +1 -1
  148. package/dist/workspace-validator.js +24 -2
  149. package/dist/workspace-validator.js.map +1 -1
  150. package/dist/workspace.js +6 -0
  151. package/dist/workspace.js.map +1 -1
  152. package/docs/autonomous-workflow.md +71 -2
  153. package/docs/benchmark.md +2 -2
  154. package/docs/core-command-surface.md +3 -0
  155. package/docs/orchestra-mvp.md +3 -0
  156. package/docs/runtime-adapters.md +21 -0
  157. package/docs/skill-loading-strategy.md +1 -0
  158. package/package.json +1 -1
  159. package/skills/doc-sync/SKILL.md +2 -0
@@ -1,10 +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
+ import { loadPhasePlaybook } from "./phase-playbooks.js";
5
+ import { markdownListOrNone } from "./workflow-markdown.js";
4
6
  import { renderSkills } from "./skills.js";
5
7
  import { appendEvent, readEvents, writeArtifact } from "./workspace.js";
8
+ import { checkArchitectSizing } from "./autonomous-phase-lifecycle.js";
6
9
  import { checkUsageBudget, completeWithProviderFallback, getTaskContext, getWorkflowConfig, recordDecision, recordModelProvenance, } from "./workflow-services.js";
10
+ import { generatePlaywrightTestPlan } from "./workflow-summary-service.js";
7
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;
8
15
  export async function phaseExecutionMode(root, role) {
9
16
  const routing = await phaseRouting(root, role);
10
17
  return routing.provider === "none" ? "deterministic" : "llm";
@@ -16,6 +23,14 @@ export async function executePhaseWithLlm({ root, run, phase, phaseIndex, }) {
16
23
  }
17
24
  const routing = await phaseRouting(root, phase.role);
18
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
+ }
19
34
  return {
20
35
  mode: "deterministic",
21
36
  outcome: { kind: "done", notes: phase.summary },
@@ -31,6 +46,7 @@ export async function executePhaseWithLlm({ root, run, phase, phaseIndex, }) {
31
46
  });
32
47
  const response = result.response;
33
48
  const output = parsePhaseOutput(response.content);
49
+ await generateQaE2eArtifactsIfApplicable({ root, run, phase, output });
34
50
  const artifact = await writePhaseArtifact({
35
51
  root,
36
52
  run,
@@ -67,13 +83,17 @@ export async function executePhaseWithLlm({ root, run, phase, phaseIndex, }) {
67
83
  },
68
84
  });
69
85
  if (phase.role === "architect") {
70
- 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);
71
90
  }
72
91
  const outcome = phaseOutcome(phase, output);
73
92
  return { mode: "llm", artifact, output, outcome };
74
93
  }
75
94
  export async function buildPhasePrompt({ root, run, phase, phaseIndex, }) {
76
95
  const context = await getTaskContext(run.taskId, root);
96
+ const observations = observationDecisions(context.decisions);
77
97
  const skills = await renderSkills({
78
98
  target: "generic",
79
99
  taskId: run.taskId,
@@ -81,11 +101,16 @@ export async function buildPhasePrompt({ root, run, phase, phaseIndex, }) {
81
101
  root,
82
102
  });
83
103
  const priorHandoff = await latestHandoffContent(root, run.taskId);
104
+ const playbook = await loadPhasePlaybook(root, phase.phase);
84
105
  const fakeResponse = defaultStructuredOutput(phase);
85
106
  return {
86
107
  system: [
87
108
  `You are the ${phase.role} phase agent for Open Orchestra.`,
88
109
  skills.content,
110
+ workflowRunModeProtocol(run.mode ?? "new", observations),
111
+ "Phase playbook:",
112
+ playbook.content,
113
+ ...(playbook.warning ? [`Warning: ${playbook.warning}`] : []),
89
114
  ].join("\n\n"),
90
115
  user: [
91
116
  "Use the task context and prior handoff to produce structured phase output.",
@@ -93,6 +118,7 @@ export async function buildPhasePrompt({ root, run, phase, phaseIndex, }) {
93
118
  `Phase index: ${phaseIndex}`,
94
119
  `Phase: ${phase.phase}`,
95
120
  `Role: ${phase.role}`,
121
+ `Workflow mode: ${run.mode ?? "new"}`,
96
122
  "",
97
123
  "Task context JSON:",
98
124
  JSON.stringify(context, null, 2),
@@ -107,9 +133,49 @@ export async function buildPhasePrompt({ root, run, phase, phaseIndex, }) {
107
133
  ].join("\n"),
108
134
  };
109
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
+ }
110
176
  export function parsePhaseOutput(content) {
111
177
  const parsed = JSON.parse(extractJson(content));
112
- return {
178
+ const output = {
113
179
  summary: stringOrDefault(parsed.summary, "Phase completed"),
114
180
  notes: stringOrDefault(parsed.notes, parsed.summary ?? "Phase completed"),
115
181
  verdict: parsed.verdict === "fail" ? "fail" : "pass",
@@ -117,16 +183,164 @@ export function parsePhaseOutput(content) {
117
183
  ? parsed.findings.map((finding) => String(finding))
118
184
  : [],
119
185
  decisions: Array.isArray(parsed.decisions)
120
- ? parsed.decisions.map((decision) => String(decision))
186
+ ? parsed.decisions
187
+ .map((decision) => structuredItemToString(decision, "decision"))
188
+ .filter((decision) => decision.length > 0)
121
189
  : [],
122
190
  evidence: Array.isArray(parsed.evidence)
123
- ? parsed.evidence.map((item) => String(item))
191
+ ? parsed.evidence
192
+ .map((item) => structuredItemToString(item, "evidence"))
193
+ .filter((item) => item.length > 0)
124
194
  : [],
125
195
  handoff: stringOrDefault(parsed.handoff, parsed.notes ?? "Phase handoff ready"),
126
- sizing: typeof parsed.sizing === "string" && parsed.sizing.trim()
127
- ? parsed.sizing
128
- : DEFAULT_ARCHITECT_SIZING,
196
+ sizing: normalizeArchitectSizing(parsed.sizing),
129
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();
130
344
  }
131
345
  async function phaseRouting(root, role) {
132
346
  const config = await getWorkflowConfig(root);
@@ -141,7 +355,11 @@ function phaseOutcome(phase, output) {
141
355
  }
142
356
  return { kind: "done", notes: output.notes };
143
357
  }
144
- 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
+ }
145
363
  await recordDecision({
146
364
  task: taskId,
147
365
  owner: "architect",
@@ -152,6 +370,74 @@ async function recordArchitectSizing(root, taskId, output) {
152
370
  status: "accepted",
153
371
  }, root);
154
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
+ }
155
441
  async function writePhaseArtifact({ root, run, phase, response, output, fallbackUsed, }) {
156
442
  const directory = path.join("runs", run.taskId, phase.phase);
157
443
  await ensureDir(resolveWorkflowPath(root, directory));
@@ -200,6 +486,13 @@ function defaultStructuredOutput(phase) {
200
486
  if (phase.role === "architect") {
201
487
  output.sizing = DEFAULT_ARCHITECT_SIZING;
202
488
  }
489
+ if (phase.role === "developer") {
490
+ output.developerPoints = DEFAULT_DEVELOPER_POINTS;
491
+ output.architecturalConcerns = {
492
+ inherited: [],
493
+ selfImposed: [],
494
+ };
495
+ }
203
496
  return output;
204
497
  }
205
498
  function extractJson(content) {
@@ -215,4 +508,7 @@ function extractJson(content) {
215
508
  function stringOrDefault(value, fallback) {
216
509
  return typeof value === "string" && value.trim() ? value : fallback;
217
510
  }
511
+ function isRecord(value) {
512
+ return typeof value === "object" && value !== null && !Array.isArray(value);
513
+ }
218
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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"}
@@ -0,0 +1,11 @@
1
+ import type { PhasePlaybook } from "./types/skills.js";
2
+ export declare const DEFAULT_PLAYBOOKS_DIR = ".agent-workflow/playbooks";
3
+ export declare const DEFAULT_PHASE_PLAYBOOKS: Record<string, string>;
4
+ export declare function initPhasePlaybooks(root: string, options?: {
5
+ force?: boolean;
6
+ }): Promise<string[]>;
7
+ export declare function loadPhasePlaybook(root: string, phase: string): Promise<PhasePlaybook>;
8
+ export declare function loadPhasePlaybookForRole(root: string, role: string): Promise<PhasePlaybook | undefined>;
9
+ export declare function loadPhasePlaybooksForRoles(root: string, roles: string[]): Promise<Record<string, PhasePlaybook>>;
10
+ export declare function phaseForRole(role: string): string | undefined;
11
+ export declare function renderPhasePlaybookMarkdown(playbook: PhasePlaybook, headingLevel?: number): string;