@jterrats/open-orchestra 0.4.2-beta.1 → 0.5.0-beta.0

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 (170) hide show
  1. package/AGENTS.md +5 -3
  2. package/README.md +29 -5
  3. package/dist/advisory-artifacts.d.ts +20 -0
  4. package/dist/advisory-artifacts.js +136 -0
  5. package/dist/advisory-artifacts.js.map +1 -0
  6. package/dist/assets/web-console.js +436 -4
  7. package/dist/cli.js +16 -117
  8. package/dist/cli.js.map +1 -1
  9. package/dist/command-manifest.d.ts +6 -0
  10. package/dist/command-manifest.js +141 -43
  11. package/dist/command-manifest.js.map +1 -1
  12. package/dist/command-utils.d.ts +5 -0
  13. package/dist/command-utils.js +23 -0
  14. package/dist/command-utils.js.map +1 -1
  15. package/dist/commands.d.ts +7 -42
  16. package/dist/commands.js +214 -1356
  17. package/dist/commands.js.map +1 -1
  18. package/dist/constants.js +3 -0
  19. package/dist/constants.js.map +1 -1
  20. package/dist/context-budget.d.ts +4 -0
  21. package/dist/context-budget.js +119 -0
  22. package/dist/context-budget.js.map +1 -0
  23. package/dist/delivery-commands.d.ts +10 -0
  24. package/dist/delivery-commands.js +152 -0
  25. package/dist/delivery-commands.js.map +1 -0
  26. package/dist/github.d.ts +50 -1
  27. package/dist/github.js +234 -0
  28. package/dist/github.js.map +1 -1
  29. package/dist/health-checks.d.ts +1 -0
  30. package/dist/health-checks.js +11 -1
  31. package/dist/health-checks.js.map +1 -1
  32. package/dist/health-commands.js +2 -0
  33. package/dist/health-commands.js.map +1 -1
  34. package/dist/mcp-oauth-proxy.d.ts +32 -0
  35. package/dist/mcp-oauth-proxy.js +120 -0
  36. package/dist/mcp-oauth-proxy.js.map +1 -1
  37. package/dist/memory.d.ts +2 -1
  38. package/dist/memory.js +71 -10
  39. package/dist/memory.js.map +1 -1
  40. package/dist/package-update-check.d.ts +5 -1
  41. package/dist/package-update-check.js +20 -8
  42. package/dist/package-update-check.js.map +1 -1
  43. package/dist/planning-commands.d.ts +14 -0
  44. package/dist/planning-commands.js +372 -0
  45. package/dist/planning-commands.js.map +1 -0
  46. package/dist/release-candidate.d.ts +2 -0
  47. package/dist/release-candidate.js +9 -14
  48. package/dist/release-candidate.js.map +1 -1
  49. package/dist/release-commands.d.ts +2 -0
  50. package/dist/release-commands.js +58 -6
  51. package/dist/release-commands.js.map +1 -1
  52. package/dist/release-readiness.d.ts +49 -0
  53. package/dist/release-readiness.js +172 -0
  54. package/dist/release-readiness.js.map +1 -0
  55. package/dist/runtime-commands.js +11 -4
  56. package/dist/runtime-commands.js.map +1 -1
  57. package/dist/runtime-execution-renderer.js +2 -0
  58. package/dist/runtime-execution-renderer.js.map +1 -1
  59. package/dist/runtime-execution.d.ts +4 -2
  60. package/dist/runtime-execution.js +11 -4
  61. package/dist/runtime-execution.js.map +1 -1
  62. package/dist/setup-agents-import.d.ts +42 -0
  63. package/dist/setup-agents-import.js +335 -0
  64. package/dist/setup-agents-import.js.map +1 -0
  65. package/dist/skills-catalog-service.d.ts +2 -0
  66. package/dist/skills-catalog-service.js +8 -0
  67. package/dist/skills-catalog-service.js.map +1 -0
  68. package/dist/skills-catalog.d.ts +2 -0
  69. package/dist/skills-catalog.js +389 -0
  70. package/dist/skills-catalog.js.map +1 -0
  71. package/dist/skills-commands.js +1 -11
  72. package/dist/skills-commands.js.map +1 -1
  73. package/dist/skills-events.d.ts +9 -0
  74. package/dist/skills-events.js +50 -0
  75. package/dist/skills-events.js.map +1 -0
  76. package/dist/skills-memory.d.ts +18 -0
  77. package/dist/skills-memory.js +127 -0
  78. package/dist/skills-memory.js.map +1 -0
  79. package/dist/skills-planning.d.ts +2 -0
  80. package/dist/skills-planning.js +87 -0
  81. package/dist/skills-planning.js.map +1 -0
  82. package/dist/skills-render.d.ts +14 -0
  83. package/dist/skills-render.js +83 -0
  84. package/dist/skills-render.js.map +1 -0
  85. package/dist/skills-validation.d.ts +2 -0
  86. package/dist/skills-validation.js +49 -0
  87. package/dist/skills-validation.js.map +1 -0
  88. package/dist/skills.d.ts +6 -42
  89. package/dist/skills.js +6 -773
  90. package/dist/skills.js.map +1 -1
  91. package/dist/task-graph-commands.d.ts +14 -0
  92. package/dist/task-graph-commands.js +367 -0
  93. package/dist/task-graph-commands.js.map +1 -0
  94. package/dist/tool-commands.js +8 -0
  95. package/dist/tool-commands.js.map +1 -1
  96. package/dist/types/context.d.ts +12 -0
  97. package/dist/types/context.js +2 -0
  98. package/dist/types/context.js.map +1 -0
  99. package/dist/types/metrics.d.ts +114 -0
  100. package/dist/types/metrics.js +2 -0
  101. package/dist/types/metrics.js.map +1 -0
  102. package/dist/types/model-config.d.ts +212 -0
  103. package/dist/types/model-config.js +2 -0
  104. package/dist/types/model-config.js.map +1 -0
  105. package/dist/types/runtime.d.ts +93 -0
  106. package/dist/types/runtime.js +2 -0
  107. package/dist/types/runtime.js.map +1 -0
  108. package/dist/types/skills.d.ts +147 -0
  109. package/dist/types/skills.js +2 -0
  110. package/dist/types/skills.js.map +1 -0
  111. package/dist/types/tasks.d.ts +171 -0
  112. package/dist/types/tasks.js +2 -0
  113. package/dist/types/tasks.js.map +1 -0
  114. package/dist/types/workflow-run.d.ts +79 -0
  115. package/dist/types/workflow-run.js +2 -0
  116. package/dist/types/workflow-run.js.map +1 -0
  117. package/dist/types.d.ts +13 -798
  118. package/dist/types.js +1 -1
  119. package/dist/types.js.map +1 -1
  120. package/dist/upgrade-commands.d.ts +2 -0
  121. package/dist/upgrade-commands.js +65 -0
  122. package/dist/upgrade-commands.js.map +1 -0
  123. package/dist/web-api-read-routes.d.ts +5 -0
  124. package/dist/web-api-read-routes.js +37 -0
  125. package/dist/web-api-read-routes.js.map +1 -0
  126. package/dist/web-api.d.ts +1 -3
  127. package/dist/web-api.js +145 -44
  128. package/dist/web-api.js.map +1 -1
  129. package/dist/web-console-sections.d.ts +2 -0
  130. package/dist/web-console-sections.js +7 -0
  131. package/dist/web-console-sections.js.map +1 -0
  132. package/dist/web-console.js +23 -3
  133. package/dist/web-console.js.map +1 -1
  134. package/dist/workflow-approval-service.d.ts +9 -0
  135. package/dist/workflow-approval-service.js +126 -0
  136. package/dist/workflow-approval-service.js.map +1 -0
  137. package/dist/workflow-approval-utils.d.ts +10 -0
  138. package/dist/workflow-approval-utils.js +82 -0
  139. package/dist/workflow-approval-utils.js.map +1 -0
  140. package/dist/workflow-budget-utils.d.ts +7 -0
  141. package/dist/workflow-budget-utils.js +96 -0
  142. package/dist/workflow-budget-utils.js.map +1 -0
  143. package/dist/workflow-evidence-service.d.ts +7 -0
  144. package/dist/workflow-evidence-service.js +100 -0
  145. package/dist/workflow-evidence-service.js.map +1 -0
  146. package/dist/workflow-run-commands.d.ts +8 -0
  147. package/dist/workflow-run-commands.js +479 -0
  148. package/dist/workflow-run-commands.js.map +1 -0
  149. package/dist/workflow-services.d.ts +8 -18
  150. package/dist/workflow-services.js +30 -481
  151. package/dist/workflow-services.js.map +1 -1
  152. package/dist/workflow-summary-service.d.ts +4 -0
  153. package/dist/workflow-summary-service.js +82 -0
  154. package/dist/workflow-summary-service.js.map +1 -0
  155. package/dist/workflow-templates.d.ts +1 -0
  156. package/dist/workflow-templates.js +1 -0
  157. package/dist/workflow-templates.js.map +1 -1
  158. package/dist/workspace.d.ts +18 -1
  159. package/dist/workspace.js +72 -4
  160. package/dist/workspace.js.map +1 -1
  161. package/docs/command-contracts.md +22 -0
  162. package/docs/mcp-oauth-proxy-evaluation.md +14 -0
  163. package/docs/orchestra-mvp.md +158 -114
  164. package/docs/package-naming.md +20 -0
  165. package/docs/persona-workflows.md +209 -0
  166. package/docs/runtime-adapters.md +19 -14
  167. package/docs/runtime-llm-flow.md +29 -28
  168. package/docs/setup-agents-bridge.md +61 -0
  169. package/docs/traceability-flow.md +89 -0
  170. package/package.json +9 -7
@@ -0,0 +1,389 @@
1
+ export const defaultSkills = [
2
+ {
3
+ id: "proactive-orchestra",
4
+ name: "Proactive Orchestra",
5
+ summary: "Self-bootstrap Open Orchestra workflow checks before implementation and record accepted bypasses.",
6
+ triggers: [
7
+ "orchestra",
8
+ "workflow",
9
+ "task loop",
10
+ "bootstrap",
11
+ "pre-run",
12
+ "handoff",
13
+ "evidence",
14
+ ],
15
+ roles: ["parent", "architect", "developer", "qa", "release_manager"],
16
+ capabilities: ["workflow-discipline", "pre-run-validation", "auditability"],
17
+ riskAreas: ["governance", "quality"],
18
+ sourceGroups: ["project-instructions", "agent-memory"],
19
+ entry: "skills/proactive-orchestra/SKILL.md",
20
+ assets: [],
21
+ evidence: ["command", "report", "file"],
22
+ loadBudget: "small",
23
+ instructions: [
24
+ "Start with health and task list before implementation when .agent-workflow exists.",
25
+ "Run pre-run validation before coding and resolve missing estimate, workflow, evidence, or review checks.",
26
+ "Record user-accepted deviations as decisions instead of silently skipping workflow steps.",
27
+ ],
28
+ },
29
+ {
30
+ id: "prompt-registry",
31
+ name: "Prompt Registry",
32
+ summary: "Read and update .generated-prompts registers for substantial AI-generated artifacts.",
33
+ triggers: [
34
+ "prompt",
35
+ "generated",
36
+ "artifact",
37
+ "code",
38
+ "ui",
39
+ "docs",
40
+ "diagram",
41
+ "eval",
42
+ ],
43
+ roles: [
44
+ "parent",
45
+ "developer",
46
+ "tech_lead",
47
+ "frontend_specialist",
48
+ "backend_specialist",
49
+ "mobile_specialist",
50
+ "sdet",
51
+ "qa",
52
+ "technical_writer",
53
+ "ai_evaluation_engineer",
54
+ ],
55
+ capabilities: [
56
+ "prompt-memory",
57
+ "artifact-traceability",
58
+ "context-continuity",
59
+ ],
60
+ riskAreas: ["maintainability", "governance"],
61
+ sourceGroups: ["agent-memory", "codebase"],
62
+ entry: "skills/prompt-registry/SKILL.md",
63
+ assets: [],
64
+ evidence: ["file"],
65
+ loadBudget: "small",
66
+ instructions: [
67
+ "Before substantial generation, read the relevant .generated-prompts register.",
68
+ "After substantial changes, update one entry with task, role, decisions, evidence, and prompt summary.",
69
+ "Do not update the register for typo-only, formatting-only, or single-line mechanical fixes.",
70
+ ],
71
+ },
72
+ {
73
+ id: "diagram-export",
74
+ name: "Diagram Export",
75
+ summary: "Create, validate, and export architecture, workflow, and sequence diagrams.",
76
+ triggers: [
77
+ "diagram",
78
+ "mermaid",
79
+ "architecture",
80
+ "flow",
81
+ "sequence",
82
+ "draw.io",
83
+ "lucid",
84
+ ],
85
+ roles: [
86
+ "architect",
87
+ "business_analyst",
88
+ "product_manager",
89
+ "tech_lead",
90
+ "technical_writer",
91
+ ],
92
+ capabilities: ["diagramming", "architecture-communication"],
93
+ riskAreas: ["architecture", "documentation"],
94
+ sourceGroups: ["architecture", "product-backlog", "agent-memory"],
95
+ entry: "skills/diagram-export/SKILL.md",
96
+ assets: [],
97
+ evidence: ["file", "report"],
98
+ loadBudget: "normal",
99
+ instructions: [
100
+ "Identify the diagram purpose and authoritative architecture sources before drawing.",
101
+ "Choose the diagram style from the decision matrix before drafting.",
102
+ "Prefer text-native diagrams such as Mermaid unless the project requires another format.",
103
+ "Run orchestra diagrams lint --file <diagram.mmd> before sharing Mermaid diagrams.",
104
+ "Attach lint evidence to the workflow when the diagram supports delivery.",
105
+ ],
106
+ },
107
+ {
108
+ id: "static-analysis",
109
+ name: "Static Analysis",
110
+ summary: "Run and interpret local quality, type, dependency, secret, and security checks.",
111
+ triggers: [
112
+ "lint",
113
+ "typecheck",
114
+ "secret",
115
+ "sast",
116
+ "precommit",
117
+ "dependency",
118
+ "scan",
119
+ "eslint",
120
+ "test",
121
+ ],
122
+ roles: [
123
+ "developer",
124
+ "tech_lead",
125
+ "qa",
126
+ "sdet",
127
+ "security",
128
+ "devops",
129
+ "platform_engineer",
130
+ ],
131
+ capabilities: ["quality-gate", "security-review", "commit-readiness"],
132
+ riskAreas: ["security", "release", "maintainability"],
133
+ sourceGroups: ["codebase", "quality-security", "agent-memory"],
134
+ entry: "skills/static-analysis/SKILL.md",
135
+ assets: ["skills/static-analysis/checklist.md"],
136
+ evidence: ["command", "report"],
137
+ loadBudget: "normal",
138
+ instructions: [
139
+ "Inspect configured local checks before inventing commands.",
140
+ "Run the smallest relevant check first, then the full gate before handoff or commit.",
141
+ "Record command evidence and treat failed required checks as blockers unless explicitly deferred.",
142
+ ],
143
+ },
144
+ {
145
+ id: "pr-review",
146
+ name: "PR Review",
147
+ summary: "Produce review findings, PR summaries, risks, rollout notes, and missing-test gaps.",
148
+ triggers: [
149
+ "pr",
150
+ "pull request",
151
+ "review",
152
+ "diff",
153
+ "merge",
154
+ "release summary",
155
+ ],
156
+ roles: [
157
+ "reviewer_critic",
158
+ "tech_lead",
159
+ "qa",
160
+ "security",
161
+ "release_manager",
162
+ "architect",
163
+ ],
164
+ capabilities: ["review", "risk-summary", "change-summary"],
165
+ riskAreas: ["release", "security", "maintainability"],
166
+ sourceGroups: [
167
+ "codebase",
168
+ "quality-security",
169
+ "product-backlog",
170
+ "agent-memory",
171
+ ],
172
+ entry: "skills/pr-review/SKILL.md",
173
+ assets: [],
174
+ evidence: ["file", "report"],
175
+ loadBudget: "normal",
176
+ instructions: [
177
+ "Review behavior, tests, risks, rollout, rollback, and missing evidence before summaries.",
178
+ "Lead with findings and blockers, then summarize changes.",
179
+ "Reference local files, task context, reviews, and evidence rather than generated claims.",
180
+ ],
181
+ },
182
+ {
183
+ id: "playwright-evidence",
184
+ name: "Playwright Evidence",
185
+ summary: "Plan browser automation and attach screenshots, traces, videos, and reports.",
186
+ triggers: [
187
+ "playwright",
188
+ "browser",
189
+ "e2e",
190
+ "screenshot",
191
+ "trace",
192
+ "video",
193
+ "responsive",
194
+ "web",
195
+ "ui",
196
+ ],
197
+ roles: [
198
+ "qa",
199
+ "sdet",
200
+ "frontend_specialist",
201
+ "ux_ui_designer",
202
+ "ux_researcher_accessibility",
203
+ ],
204
+ capabilities: ["e2e-testing", "browser-evidence", "accessibility-check"],
205
+ riskAreas: ["ux", "release"],
206
+ sourceGroups: [
207
+ "quality-security",
208
+ "codebase",
209
+ "product-backlog",
210
+ "agent-memory",
211
+ ],
212
+ entry: "skills/playwright-evidence/SKILL.md",
213
+ assets: [],
214
+ evidence: ["screenshot", "trace", "video", "report"],
215
+ loadBudget: "normal",
216
+ instructions: [
217
+ "Plan user-value scenarios from acceptance criteria before writing tests.",
218
+ "Use resilient locators and page objects for repeated flows.",
219
+ "Attach screenshots, traces, videos, or reports as evidence for release decisions.",
220
+ ],
221
+ },
222
+ {
223
+ id: "backlog-sync",
224
+ name: "Backlog Sync",
225
+ summary: "Keep GitHub issues, local stories, and workflow tasks aligned.",
226
+ triggers: [
227
+ "backlog",
228
+ "issue",
229
+ "story",
230
+ "epic",
231
+ "github",
232
+ "acceptance criteria",
233
+ "refine",
234
+ ],
235
+ roles: [
236
+ "product_manager",
237
+ "product_owner",
238
+ "business_analyst",
239
+ "planner",
240
+ "parent",
241
+ ],
242
+ capabilities: ["backlog-management", "story-refinement", "scope-control"],
243
+ riskAreas: ["governance", "scope"],
244
+ sourceGroups: ["product-backlog", "project-instructions", "agent-memory"],
245
+ entry: "skills/backlog-sync/SKILL.md",
246
+ assets: [],
247
+ evidence: ["file", "report"],
248
+ loadBudget: "small",
249
+ instructions: [
250
+ "Confirm backlog IDs and acceptance criteria before implementation.",
251
+ "Keep local tasks, docs, and GitHub issues aligned when one changes.",
252
+ "Surface missing refinement as a blocker instead of guessing scope.",
253
+ ],
254
+ },
255
+ {
256
+ id: "release-readiness",
257
+ name: "Release Readiness",
258
+ summary: "Validate gates, rollback, observability, support, and customer-impact evidence.",
259
+ triggers: [
260
+ "release",
261
+ "deploy",
262
+ "rollback",
263
+ "go-live",
264
+ "readiness",
265
+ "downtime",
266
+ "observability",
267
+ ],
268
+ roles: [
269
+ "release_manager",
270
+ "devops",
271
+ "sre",
272
+ "platform_engineer",
273
+ "support_customer_ops",
274
+ "security",
275
+ ],
276
+ capabilities: ["release-gate", "rollback-review", "operational-readiness"],
277
+ riskAreas: ["release", "sre", "devops", "security"],
278
+ sourceGroups: ["devops-runtime", "quality-security", "agent-memory"],
279
+ entry: "skills/release-readiness/SKILL.md",
280
+ assets: [],
281
+ evidence: ["command", "report", "file"],
282
+ loadBudget: "normal",
283
+ instructions: [
284
+ "Validate gates, evidence, locks, reviews, rollback, observability, and support readiness.",
285
+ "Treat missing rollback or unresolved critical QA/security/SRE findings as blockers.",
286
+ "Record release evidence and accepted residual risks explicitly.",
287
+ ],
288
+ },
289
+ {
290
+ id: "model-evaluation",
291
+ name: "Model Evaluation",
292
+ summary: "Run prompt, model, provider-routing, fallback, and rubric evaluations.",
293
+ triggers: [
294
+ "model",
295
+ "llm",
296
+ "prompt",
297
+ "provider",
298
+ "fallback",
299
+ "eval",
300
+ "rubric",
301
+ "routing",
302
+ ],
303
+ roles: ["ai_evaluation_engineer", "toolsmith", "architect", "parent"],
304
+ capabilities: ["llm-evaluation", "provider-routing", "prompt-quality"],
305
+ riskAreas: ["governance", "quality"],
306
+ sourceGroups: ["vendor-docs", "agent-memory", "quality-security"],
307
+ entry: "skills/model-evaluation/SKILL.md",
308
+ assets: [],
309
+ evidence: ["report", "file"],
310
+ loadBudget: "normal",
311
+ instructions: [
312
+ "Define eval objectives, cases, rubric, and expected behavior before changing prompts or routing.",
313
+ "Compare model/provider behavior for material changes and record disagreements.",
314
+ "Avoid storing raw sensitive prompts or responses in provenance artifacts.",
315
+ ],
316
+ },
317
+ {
318
+ id: "source-of-truth",
319
+ name: "Source of Truth",
320
+ summary: "Select authoritative project, vendor, and workflow sources before acting.",
321
+ triggers: [
322
+ "source",
323
+ "documentation",
324
+ "docs",
325
+ "official",
326
+ "verify",
327
+ "truth",
328
+ "context",
329
+ ],
330
+ roles: [
331
+ "parent",
332
+ "planner",
333
+ "context_curator",
334
+ "architect",
335
+ "developer",
336
+ "qa",
337
+ "security",
338
+ "devops",
339
+ ],
340
+ capabilities: ["context-selection", "provenance", "source-resolution"],
341
+ riskAreas: ["governance", "accuracy"],
342
+ sourceGroups: [
343
+ "project-instructions",
344
+ "product-backlog",
345
+ "architecture",
346
+ "codebase",
347
+ "vendor-docs",
348
+ "agent-memory",
349
+ ],
350
+ entry: "skills/source-of-truth/SKILL.md",
351
+ assets: [],
352
+ evidence: ["file", "report"],
353
+ loadBudget: "small",
354
+ instructions: [
355
+ "Select source groups before acting and load only sources relevant to the task.",
356
+ "Prefer local project sources first and official vendor docs for current APIs or tools.",
357
+ "If sources conflict, record the conflict as a blocker or decision.",
358
+ ],
359
+ },
360
+ {
361
+ id: "agent-learning",
362
+ name: "Agent Learning",
363
+ summary: "Record reusable failure lessons and promote repeated lessons into skills or rules.",
364
+ triggers: [
365
+ "failure",
366
+ "failed",
367
+ "error",
368
+ "syntax",
369
+ "escaping",
370
+ "permission",
371
+ "lesson",
372
+ "learn",
373
+ ],
374
+ roles: ["parent", "context_curator", "toolsmith", "developer", "qa"],
375
+ capabilities: ["failure-learning", "memory-hygiene", "repeat-prevention"],
376
+ riskAreas: ["maintainability", "governance"],
377
+ sourceGroups: ["agent-memory", "codebase"],
378
+ entry: "skills/agent-learning/SKILL.md",
379
+ assets: [],
380
+ evidence: ["file"],
381
+ loadBudget: "small",
382
+ instructions: [
383
+ "Search relevant lessons before repeating risky operations.",
384
+ "After reusable failures, record operation, error signature, root cause, fix, prevention, and verification.",
385
+ "Promote repeated lessons into versioned skills or rules after review.",
386
+ ],
387
+ },
388
+ ];
389
+ //# sourceMappingURL=skills-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills-catalog.js","sourceRoot":"","sources":["../src/skills-catalog.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  import { requireArg } from "./args.js";
2
- import { parseCsv, removeUndefined, stringOption } from "./command-utils.js";
3
- import { parseRuntimeTarget } from "./runtime-adapters.js";
2
+ import { parseCsv, parsePromotionTarget, parseSkillRenderTarget, removeUndefined, stringOption, } from "./command-utils.js";
4
3
  import { addAgentLesson, deleteAgentLesson, listAgentLessons, listSkills, planSkillsForTask, promoteAgentLessons, readSourceOfTruth, recordSkillPlan, recordSkillRender, renderSkills, validateSkills, } from "./skills.js";
5
4
  export async function skillsValidateCommand(options, io) {
6
5
  const report = await validateSkills();
@@ -126,13 +125,4 @@ export async function skillsRenderCommand(options, io) {
126
125
  }
127
126
  io.log(rendered.content);
128
127
  }
129
- function parsePromotionTarget(value) {
130
- if (["skill", "rule", "doc"].includes(value)) {
131
- return value;
132
- }
133
- throw new Error(`unknown promotion target: ${value}`);
134
- }
135
- function parseSkillRenderTarget(value) {
136
- return parseRuntimeTarget(value);
137
- }
138
128
  //# sourceMappingURL=skills-commands.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skills-commands.js","sourceRoot":"","sources":["../src/skills-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,cAAc,GACf,MAAM,aAAa,CAAC;AAGrB,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAAmB,EACnB,EAAS;IAET,MAAM,MAAM,GAAG,MAAM,cAAc,EAAE,CAAC;IACtC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC;SAAM,CAAC;QACN,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;QACzD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,EAAE,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC;QAC5B,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,EAAE,CAAC,GAAG,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAmB,EACnB,EAAS;IAET,MAAM,OAAO,GAAG,MAAM,iBAAiB,EAAE,CAAC;IAC1C,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACzC,OAAO;IACT,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,OAInB,EAAE,CAAC;QACH,EAAE,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,IAAI,SAAS,MAAM,MAAM,CAAC,IAAI,IAAI,gBAAgB,EAAE,CAAC,CAAC;QACzE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAmB,EACnB,EAAS;IAET,MAAM,OAAO,GAAG,MAAM,gBAAgB,EAAE,CAAC;IACzC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACzC,OAAO;IACT,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,EAAE,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,KAAK,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAmB,EACnB,EAAS;IAET,MAAM,MAAM,GAAG,MAAM,cAAc,CACjC,eAAe,CAAC;QACd,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC;QAClC,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,QAAQ;QAC9C,SAAS,EAAE,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC;QAC3C,YAAY,EAAE,UAAU,CAAC,OAAO,EAAE,eAAe,CAAC;QAClD,cAAc,EAAE,UAAU,CAAC,OAAO,EAAE,iBAAiB,CAAC;QACtD,SAAS,EAAE,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC;QAC5C,GAAG,EAAE,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC;QAC/B,UAAU,EAAE,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC;QAC7C,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC1C,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;KAC7C,CAAC,CACH,CAAC;IACF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO;IACT,CAAC;IACD,EAAE,CAAC,GAAG,CAAC,mBAAmB,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAAmB,EACnB,EAAS;IAET,MAAM,MAAM,GAAG,MAAM,mBAAmB,CACtC,eAAe,CAAC;QACd,EAAE,EAAE,oBAAoB,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC;QAC3D,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC;KACrC,CAAC,CACH,CAAC;IACF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO;IACT,CAAC;IACD,EAAE,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrC,EAAE,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAmB,EACnB,EAAS;IAET,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAClE,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO;IACT,CAAC;IACD,EAAE,CAAC,GAAG,CAAC,kBAAkB,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAmB,EACnB,EAAS;IAET,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO;IACT,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC;QAC5D,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7B,EAAE,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAmB,EACnB,EAAS;IAET,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IAClE,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACtC,OAAO;IACT,CAAC;IACD,EAAE,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IACrC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACjC,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,EAAE,WAAW,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACnD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpC,EAAE,CAAC,GAAG,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,EAAE,CAAC,GAAG,CAAC,kBAAkB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAmB,EACnB,EAAS;IAET,MAAM,MAAM,GAAG,sBAAsB,CACnC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,SAAS,CAC1C,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC;QAClC,MAAM;QACN,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC;QAClC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;KACnC,CAAC,CAAC;IACH,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1C,OAAO;IACT,CAAC;IACD,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAa;IACzC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7C,OAAO,KAAiC,CAAC;IAC3C,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,6BAA6B,KAAK,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAa;IAC3C,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"skills-commands.js","sourceRoot":"","sources":["../src/skills-commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { MemoryPacket, Skill, SkillPlan, SkillRenderTarget } from "./types.js";
2
+ export declare function recordSkillPlan(plan: SkillPlan, root?: string): Promise<void>;
3
+ export declare function recordSkillRender(rendered: {
4
+ target: SkillRenderTarget;
5
+ taskId: string | undefined;
6
+ skills: Skill[];
7
+ sourceGroups: string[];
8
+ memory?: MemoryPacket;
9
+ }, root?: string): Promise<void>;
@@ -0,0 +1,50 @@
1
+ import { removeUndefined } from "./command-utils.js";
2
+ import { FILES } from "./constants.js";
3
+ import { exists, resolveWorkflowPath } from "./fs-utils.js";
4
+ import { appendEvent } from "./workspace.js";
5
+ export async function recordSkillPlan(plan, root = process.cwd()) {
6
+ if (!(await hasInitializedWorkflowState(root))) {
7
+ return;
8
+ }
9
+ await appendEvent(root, {
10
+ type: "SKILLS_PLANNED",
11
+ taskId: plan.taskId,
12
+ actor: "parent",
13
+ summary: `Selected ${plan.selected.length} skills for ${plan.taskId}`,
14
+ metadata: {
15
+ selectedSkillIds: plan.selected.map((item) => item.skill.id),
16
+ sourceGroups: plan.sourceGroups,
17
+ rationale: Object.fromEntries(plan.selected.map((item) => [item.skill.id, item.rationale])),
18
+ },
19
+ });
20
+ }
21
+ export async function recordSkillRender(rendered, root = process.cwd()) {
22
+ if (!rendered.taskId) {
23
+ return;
24
+ }
25
+ if (!(await hasInitializedWorkflowState(root))) {
26
+ return;
27
+ }
28
+ await appendEvent(root, removeUndefined({
29
+ type: "SKILLS_RENDERED",
30
+ taskId: rendered.taskId,
31
+ actor: "parent",
32
+ summary: `Rendered ${rendered.skills.length} skills for ${rendered.target}`,
33
+ metadata: {
34
+ target: rendered.target,
35
+ selectedSkillIds: rendered.skills.map((skill) => skill.id),
36
+ sourceGroups: rendered.sourceGroups,
37
+ memory: rendered.memory &&
38
+ removeUndefined({
39
+ hook: rendered.memory.hook,
40
+ estimatedTokens: rendered.memory.estimatedTokens,
41
+ lessonCount: rendered.memory.lessons.length,
42
+ promptCount: rendered.memory.prompts.length,
43
+ }),
44
+ },
45
+ }));
46
+ }
47
+ async function hasInitializedWorkflowState(root) {
48
+ return exists(resolveWorkflowPath(root, FILES.config));
49
+ }
50
+ //# sourceMappingURL=skills-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills-events.js","sourceRoot":"","sources":["../src/skills-events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAQ7C,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAe,EACf,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE;IAEpB,IAAI,CAAC,CAAC,MAAM,2BAA2B,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC/C,OAAO;IACT,CAAC;IACD,MAAM,WAAW,CAAC,IAAI,EAAE;QACtB,IAAI,EAAE,gBAAgB;QACtB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,KAAK,EAAE,QAAQ;QACf,OAAO,EAAE,YAAY,IAAI,CAAC,QAAQ,CAAC,MAAM,eAAe,IAAI,CAAC,MAAM,EAAE;QACrE,QAAQ,EAAE;YACR,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5D,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS,EAAE,MAAM,CAAC,WAAW,CAC3B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAC7D;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,QAMC,EACD,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE;IAEpB,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrB,OAAO;IACT,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,2BAA2B,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC/C,OAAO;IACT,CAAC;IACD,MAAM,WAAW,CACf,IAAI,EACJ,eAAe,CAAC;QACd,IAAI,EAAE,iBAAiB;QACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,KAAK,EAAE,QAAQ;QACf,OAAO,EAAE,YAAY,QAAQ,CAAC,MAAM,CAAC,MAAM,eAAe,QAAQ,CAAC,MAAM,EAAE;QAC3E,QAAQ,EAAE;YACR,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1D,YAAY,EAAE,QAAQ,CAAC,YAAY;YACnC,MAAM,EACJ,QAAQ,CAAC,MAAM;gBACf,eAAe,CAAC;oBACd,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI;oBAC1B,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,eAAe;oBAChD,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM;oBAC3C,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM;iBAC5C,CAAC;SACL;KACF,CAAC,CACH,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,2BAA2B,CAAC,IAAY;IACrD,OAAO,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AACzD,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { AgentLesson, AgentLessonInput } from "./types.js";
2
+ export declare function readAgentLessons(root?: string): Promise<string[]>;
3
+ export declare function readSourceOfTruth(root?: string): Promise<unknown[]>;
4
+ export declare function addAgentLesson(input: AgentLessonInput, root?: string): Promise<AgentLesson>;
5
+ export declare function listAgentLessons(root?: string): Promise<AgentLesson[]>;
6
+ export declare function deleteAgentLesson(id: string, root?: string): Promise<{
7
+ deleted: true;
8
+ id: string;
9
+ }>;
10
+ export declare function promoteAgentLessons({ to, filter, root, }: {
11
+ to: "skill" | "rule" | "doc";
12
+ filter?: string;
13
+ root?: string;
14
+ }): Promise<{
15
+ artifact: string;
16
+ lessons: AgentLesson[];
17
+ }>;
18
+ export declare function writeSourceOfTruth(entries: unknown[], root?: string): Promise<void>;
@@ -0,0 +1,127 @@
1
+ import { createHash, randomUUID } from "node:crypto";
2
+ import { readFile, writeFile } from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { removeUndefined } from "./command-utils.js";
5
+ import { FILES } from "./constants.js";
6
+ import { exists, readJson, resolveWorkflowPath, writeJson, } from "./fs-utils.js";
7
+ import { appendEvent, writeArtifact } from "./workspace.js";
8
+ export async function readAgentLessons(root = process.cwd()) {
9
+ const lessonsPath = resolveWorkflowPath(root, FILES.agentLessons);
10
+ if (!(await exists(lessonsPath))) {
11
+ return [];
12
+ }
13
+ return (await readFile(lessonsPath, "utf8"))
14
+ .split("\n")
15
+ .filter((line) => line.trim() !== "");
16
+ }
17
+ export async function readSourceOfTruth(root = process.cwd()) {
18
+ return readJson(path.join(root, ".agent-workflow", FILES.sourceOfTruth), []);
19
+ }
20
+ export async function addAgentLesson(input, root = process.cwd()) {
21
+ const lesson = {
22
+ id: `lesson-${randomUUID()}`,
23
+ timestamp: new Date().toISOString(),
24
+ ...input,
25
+ };
26
+ await writeFile(resolveWorkflowPath(root, FILES.agentLessons), `${JSON.stringify(lesson)}\n`, { flag: "a" });
27
+ await appendEvent(root, removeUndefined({
28
+ type: "LESSON_RECORDED",
29
+ taskId: lesson.taskId,
30
+ actor: lesson.actor,
31
+ summary: `Recorded lesson: ${lesson.errorSignature}`,
32
+ metadata: { operation: lesson.operation, appliesTo: lesson.appliesTo },
33
+ }));
34
+ return lesson;
35
+ }
36
+ export async function listAgentLessons(root = process.cwd()) {
37
+ const lines = await readAgentLessons(root);
38
+ return lines.map((line) => normalizeAgentLesson(JSON.parse(line)));
39
+ }
40
+ export async function deleteAgentLesson(id, root = process.cwd()) {
41
+ const lines = await readAgentLessons(root);
42
+ let deletedLesson;
43
+ const retained = [];
44
+ for (const line of lines) {
45
+ const parsed = JSON.parse(line);
46
+ const lesson = normalizeAgentLesson(parsed);
47
+ if (lesson.id === id) {
48
+ deletedLesson = lesson;
49
+ }
50
+ else {
51
+ retained.push(JSON.stringify(parsed));
52
+ }
53
+ }
54
+ if (!deletedLesson) {
55
+ throw new Error(`lesson not found: ${id}`);
56
+ }
57
+ await writeFile(resolveWorkflowPath(root, FILES.agentLessons), retained.length > 0 ? `${retained.join("\n")}\n` : "", "utf8");
58
+ await appendEvent(root, removeUndefined({
59
+ type: "LESSON_DELETED",
60
+ taskId: deletedLesson.taskId,
61
+ actor: "parent",
62
+ summary: `Deleted lesson ${id}`,
63
+ metadata: {
64
+ lessonId: id,
65
+ operation: deletedLesson.operation,
66
+ errorSignature: deletedLesson.errorSignature,
67
+ },
68
+ }));
69
+ return { deleted: true, id };
70
+ }
71
+ export async function promoteAgentLessons({ to, filter, root = process.cwd(), }) {
72
+ const lessons = (await listAgentLessons(root)).filter((lesson) => {
73
+ if (!filter) {
74
+ return true;
75
+ }
76
+ const text = JSON.stringify(lesson).toLowerCase();
77
+ return text.includes(filter.toLowerCase());
78
+ });
79
+ const content = [
80
+ `# Promoted Agent Lessons (${to})`,
81
+ "",
82
+ ...lessons.flatMap((lesson) => [
83
+ `## ${lesson.operation}`,
84
+ `- Error: ${lesson.errorSignature}`,
85
+ `- Root cause: ${lesson.rootCause}`,
86
+ `- Fix: ${lesson.fix}`,
87
+ `- Prevention: ${lesson.prevention}`,
88
+ "",
89
+ ]),
90
+ ].join("\n");
91
+ const artifact = await writeArtifact(root, "decisions", `promoted-lessons-${to}.md`, content);
92
+ await appendEvent(root, {
93
+ type: "LESSON_PROMOTED",
94
+ actor: "parent",
95
+ summary: `Promoted ${lessons.length} lessons to ${to}`,
96
+ artifacts: [artifact],
97
+ metadata: { to, filter, lessonCount: lessons.length },
98
+ });
99
+ return { artifact, lessons };
100
+ }
101
+ export async function writeSourceOfTruth(entries, root = process.cwd()) {
102
+ await writeJson(path.join(root, ".agent-workflow", FILES.sourceOfTruth), entries);
103
+ }
104
+ function normalizeAgentLesson(value) {
105
+ const lesson = value;
106
+ return {
107
+ ...lesson,
108
+ id: lesson.id ?? legacyLessonId(lesson),
109
+ };
110
+ }
111
+ function legacyLessonId(lesson) {
112
+ const stablePayload = JSON.stringify({
113
+ timestamp: lesson.timestamp,
114
+ actor: lesson.actor,
115
+ operation: lesson.operation,
116
+ failedAction: lesson.failedAction,
117
+ errorSignature: lesson.errorSignature,
118
+ rootCause: lesson.rootCause,
119
+ fix: lesson.fix,
120
+ prevention: lesson.prevention,
121
+ appliesTo: lesson.appliesTo,
122
+ verifiedBy: lesson.verifiedBy,
123
+ taskId: lesson.taskId,
124
+ });
125
+ return `legacy-${createHash("sha256").update(stablePayload).digest("hex").slice(0, 16)}`;
126
+ }
127
+ //# sourceMappingURL=skills-memory.js.map