@telora/factory 0.4.5

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 (301) hide show
  1. package/dist/audit.d.ts +69 -0
  2. package/dist/audit.d.ts.map +1 -0
  3. package/dist/audit.js +376 -0
  4. package/dist/audit.js.map +1 -0
  5. package/dist/builder-completion.d.ts +35 -0
  6. package/dist/builder-completion.d.ts.map +1 -0
  7. package/dist/builder-completion.js +375 -0
  8. package/dist/builder-completion.js.map +1 -0
  9. package/dist/builder-spawner.d.ts +40 -0
  10. package/dist/builder-spawner.d.ts.map +1 -0
  11. package/dist/builder-spawner.js +493 -0
  12. package/dist/builder-spawner.js.map +1 -0
  13. package/dist/completion-gate.d.ts +52 -0
  14. package/dist/completion-gate.d.ts.map +1 -0
  15. package/dist/completion-gate.js +336 -0
  16. package/dist/completion-gate.js.map +1 -0
  17. package/dist/completion-report.d.ts +36 -0
  18. package/dist/completion-report.d.ts.map +1 -0
  19. package/dist/completion-report.js +348 -0
  20. package/dist/completion-report.js.map +1 -0
  21. package/dist/completion.d.ts +58 -0
  22. package/dist/completion.d.ts.map +1 -0
  23. package/dist/completion.js +287 -0
  24. package/dist/completion.js.map +1 -0
  25. package/dist/config.d.ts +16 -0
  26. package/dist/config.d.ts.map +1 -0
  27. package/dist/config.js +57 -0
  28. package/dist/config.js.map +1 -0
  29. package/dist/context-manager.d.ts +152 -0
  30. package/dist/context-manager.d.ts.map +1 -0
  31. package/dist/context-manager.js +421 -0
  32. package/dist/context-manager.js.map +1 -0
  33. package/dist/crash-detection.d.ts +70 -0
  34. package/dist/crash-detection.d.ts.map +1 -0
  35. package/dist/crash-detection.js +123 -0
  36. package/dist/crash-detection.js.map +1 -0
  37. package/dist/crash-recovery.d.ts +83 -0
  38. package/dist/crash-recovery.d.ts.map +1 -0
  39. package/dist/crash-recovery.js +522 -0
  40. package/dist/crash-recovery.js.map +1 -0
  41. package/dist/crash-resolution.d.ts +34 -0
  42. package/dist/crash-resolution.d.ts.map +1 -0
  43. package/dist/crash-resolution.js +382 -0
  44. package/dist/crash-resolution.js.map +1 -0
  45. package/dist/escalation.d.ts +150 -0
  46. package/dist/escalation.d.ts.map +1 -0
  47. package/dist/escalation.js +352 -0
  48. package/dist/escalation.js.map +1 -0
  49. package/dist/execution-target.d.ts +31 -0
  50. package/dist/execution-target.d.ts.map +1 -0
  51. package/dist/execution-target.js +71 -0
  52. package/dist/execution-target.js.map +1 -0
  53. package/dist/execution-unit-init.d.ts +28 -0
  54. package/dist/execution-unit-init.d.ts.map +1 -0
  55. package/dist/execution-unit-init.js +115 -0
  56. package/dist/execution-unit-init.js.map +1 -0
  57. package/dist/execution.d.ts +17 -0
  58. package/dist/execution.d.ts.map +1 -0
  59. package/dist/execution.js +20 -0
  60. package/dist/execution.js.map +1 -0
  61. package/dist/factory-engine.d.ts +100 -0
  62. package/dist/factory-engine.d.ts.map +1 -0
  63. package/dist/factory-engine.js +243 -0
  64. package/dist/factory-engine.js.map +1 -0
  65. package/dist/gap-detection.d.ts +43 -0
  66. package/dist/gap-detection.d.ts.map +1 -0
  67. package/dist/gap-detection.js +149 -0
  68. package/dist/gap-detection.js.map +1 -0
  69. package/dist/gate-context.d.ts +23 -0
  70. package/dist/gate-context.d.ts.map +1 -0
  71. package/dist/gate-context.js +63 -0
  72. package/dist/gate-context.js.map +1 -0
  73. package/dist/gate-engine.d.ts +55 -0
  74. package/dist/gate-engine.d.ts.map +1 -0
  75. package/dist/gate-engine.js +191 -0
  76. package/dist/gate-engine.js.map +1 -0
  77. package/dist/gates/adversarial.d.ts +59 -0
  78. package/dist/gates/adversarial.d.ts.map +1 -0
  79. package/dist/gates/adversarial.js +426 -0
  80. package/dist/gates/adversarial.js.map +1 -0
  81. package/dist/gates/adversary-spawner.d.ts +35 -0
  82. package/dist/gates/adversary-spawner.d.ts.map +1 -0
  83. package/dist/gates/adversary-spawner.js +286 -0
  84. package/dist/gates/adversary-spawner.js.map +1 -0
  85. package/dist/gates/adversary-test-dir.d.ts +41 -0
  86. package/dist/gates/adversary-test-dir.d.ts.map +1 -0
  87. package/dist/gates/adversary-test-dir.js +150 -0
  88. package/dist/gates/adversary-test-dir.js.map +1 -0
  89. package/dist/gates/behavioral-parser.d.ts +32 -0
  90. package/dist/gates/behavioral-parser.d.ts.map +1 -0
  91. package/dist/gates/behavioral-parser.js +190 -0
  92. package/dist/gates/behavioral-parser.js.map +1 -0
  93. package/dist/gates/behavioral-runner.d.ts +36 -0
  94. package/dist/gates/behavioral-runner.d.ts.map +1 -0
  95. package/dist/gates/behavioral-runner.js +306 -0
  96. package/dist/gates/behavioral-runner.js.map +1 -0
  97. package/dist/gates/behavioral.d.ts +37 -0
  98. package/dist/gates/behavioral.d.ts.map +1 -0
  99. package/dist/gates/behavioral.js +485 -0
  100. package/dist/gates/behavioral.js.map +1 -0
  101. package/dist/gates/deterministic.d.ts +24 -0
  102. package/dist/gates/deterministic.d.ts.map +1 -0
  103. package/dist/gates/deterministic.js +186 -0
  104. package/dist/gates/deterministic.js.map +1 -0
  105. package/dist/git-factory.d.ts +59 -0
  106. package/dist/git-factory.d.ts.map +1 -0
  107. package/dist/git-factory.js +102 -0
  108. package/dist/git-factory.js.map +1 -0
  109. package/dist/guard-evaluation.d.ts +48 -0
  110. package/dist/guard-evaluation.d.ts.map +1 -0
  111. package/dist/guard-evaluation.js +416 -0
  112. package/dist/guard-evaluation.js.map +1 -0
  113. package/dist/index.d.ts +30 -0
  114. package/dist/index.d.ts.map +1 -0
  115. package/dist/index.js +39 -0
  116. package/dist/index.js.map +1 -0
  117. package/dist/instance-completion.d.ts +34 -0
  118. package/dist/instance-completion.d.ts.map +1 -0
  119. package/dist/instance-completion.js +366 -0
  120. package/dist/instance-completion.js.map +1 -0
  121. package/dist/instance-lifecycle.d.ts +15 -0
  122. package/dist/instance-lifecycle.d.ts.map +1 -0
  123. package/dist/instance-lifecycle.js +18 -0
  124. package/dist/instance-lifecycle.js.map +1 -0
  125. package/dist/instance-phase-dispatch.d.ts +75 -0
  126. package/dist/instance-phase-dispatch.d.ts.map +1 -0
  127. package/dist/instance-phase-dispatch.js +674 -0
  128. package/dist/instance-phase-dispatch.js.map +1 -0
  129. package/dist/instance-poll-loop.d.ts +43 -0
  130. package/dist/instance-poll-loop.d.ts.map +1 -0
  131. package/dist/instance-poll-loop.js +360 -0
  132. package/dist/instance-poll-loop.js.map +1 -0
  133. package/dist/instance-state-machine.d.ts +52 -0
  134. package/dist/instance-state-machine.d.ts.map +1 -0
  135. package/dist/instance-state-machine.js +235 -0
  136. package/dist/instance-state-machine.js.map +1 -0
  137. package/dist/log-manager.d.ts +28 -0
  138. package/dist/log-manager.d.ts.map +1 -0
  139. package/dist/log-manager.js +71 -0
  140. package/dist/log-manager.js.map +1 -0
  141. package/dist/pipeline-evaluator.d.ts +61 -0
  142. package/dist/pipeline-evaluator.d.ts.map +1 -0
  143. package/dist/pipeline-evaluator.js +107 -0
  144. package/dist/pipeline-evaluator.js.map +1 -0
  145. package/dist/pipeline-metrics.d.ts +52 -0
  146. package/dist/pipeline-metrics.d.ts.map +1 -0
  147. package/dist/pipeline-metrics.js +40 -0
  148. package/dist/pipeline-metrics.js.map +1 -0
  149. package/dist/pipeline-traversal.d.ts +43 -0
  150. package/dist/pipeline-traversal.d.ts.map +1 -0
  151. package/dist/pipeline-traversal.js +68 -0
  152. package/dist/pipeline-traversal.js.map +1 -0
  153. package/dist/plan-parser.d.ts +76 -0
  154. package/dist/plan-parser.d.ts.map +1 -0
  155. package/dist/plan-parser.js +223 -0
  156. package/dist/plan-parser.js.map +1 -0
  157. package/dist/planning-phase.d.ts +52 -0
  158. package/dist/planning-phase.d.ts.map +1 -0
  159. package/dist/planning-phase.js +444 -0
  160. package/dist/planning-phase.js.map +1 -0
  161. package/dist/planning-prompt.d.ts +64 -0
  162. package/dist/planning-prompt.d.ts.map +1 -0
  163. package/dist/planning-prompt.js +251 -0
  164. package/dist/planning-prompt.js.map +1 -0
  165. package/dist/planning.d.ts +16 -0
  166. package/dist/planning.d.ts.map +1 -0
  167. package/dist/planning.js +17 -0
  168. package/dist/planning.js.map +1 -0
  169. package/dist/process-runner.d.ts +41 -0
  170. package/dist/process-runner.d.ts.map +1 -0
  171. package/dist/process-runner.js +81 -0
  172. package/dist/process-runner.js.map +1 -0
  173. package/dist/product-config.d.ts +34 -0
  174. package/dist/product-config.d.ts.map +1 -0
  175. package/dist/product-config.js +43 -0
  176. package/dist/product-config.js.map +1 -0
  177. package/dist/queries/cycle-evaluations.d.ts +23 -0
  178. package/dist/queries/cycle-evaluations.d.ts.map +1 -0
  179. package/dist/queries/cycle-evaluations.js +37 -0
  180. package/dist/queries/cycle-evaluations.js.map +1 -0
  181. package/dist/queries/escalations.d.ts +30 -0
  182. package/dist/queries/escalations.d.ts.map +1 -0
  183. package/dist/queries/escalations.js +42 -0
  184. package/dist/queries/escalations.js.map +1 -0
  185. package/dist/queries/execution-units.d.ts +76 -0
  186. package/dist/queries/execution-units.d.ts.map +1 -0
  187. package/dist/queries/execution-units.js +109 -0
  188. package/dist/queries/execution-units.js.map +1 -0
  189. package/dist/queries/gate-results.d.ts +32 -0
  190. package/dist/queries/gate-results.d.ts.map +1 -0
  191. package/dist/queries/gate-results.js +44 -0
  192. package/dist/queries/gate-results.js.map +1 -0
  193. package/dist/queries/instances.d.ts +51 -0
  194. package/dist/queries/instances.d.ts.map +1 -0
  195. package/dist/queries/instances.js +77 -0
  196. package/dist/queries/instances.js.map +1 -0
  197. package/dist/queries/sessions.d.ts +50 -0
  198. package/dist/queries/sessions.d.ts.map +1 -0
  199. package/dist/queries/sessions.js +81 -0
  200. package/dist/queries/sessions.js.map +1 -0
  201. package/dist/queries/shared.d.ts +38 -0
  202. package/dist/queries/shared.d.ts.map +1 -0
  203. package/dist/queries/shared.js +119 -0
  204. package/dist/queries/shared.js.map +1 -0
  205. package/dist/queries/specs.d.ts +12 -0
  206. package/dist/queries/specs.d.ts.map +1 -0
  207. package/dist/queries/specs.js +21 -0
  208. package/dist/queries/specs.js.map +1 -0
  209. package/dist/queries/strategies.d.ts +14 -0
  210. package/dist/queries/strategies.d.ts.map +1 -0
  211. package/dist/queries/strategies.js +18 -0
  212. package/dist/queries/strategies.js.map +1 -0
  213. package/dist/queries/work-units.d.ts +42 -0
  214. package/dist/queries/work-units.d.ts.map +1 -0
  215. package/dist/queries/work-units.js +57 -0
  216. package/dist/queries/work-units.js.map +1 -0
  217. package/dist/queries/workflows.d.ts +29 -0
  218. package/dist/queries/workflows.d.ts.map +1 -0
  219. package/dist/queries/workflows.js +103 -0
  220. package/dist/queries/workflows.js.map +1 -0
  221. package/dist/remediation-units.d.ts +40 -0
  222. package/dist/remediation-units.d.ts.map +1 -0
  223. package/dist/remediation-units.js +263 -0
  224. package/dist/remediation-units.js.map +1 -0
  225. package/dist/replanning.d.ts +72 -0
  226. package/dist/replanning.d.ts.map +1 -0
  227. package/dist/replanning.js +403 -0
  228. package/dist/replanning.js.map +1 -0
  229. package/dist/resource-limits.d.ts +62 -0
  230. package/dist/resource-limits.d.ts.map +1 -0
  231. package/dist/resource-limits.js +322 -0
  232. package/dist/resource-limits.js.map +1 -0
  233. package/dist/scheduler.d.ts +98 -0
  234. package/dist/scheduler.d.ts.map +1 -0
  235. package/dist/scheduler.js +203 -0
  236. package/dist/scheduler.js.map +1 -0
  237. package/dist/session-adapter.d.ts +89 -0
  238. package/dist/session-adapter.d.ts.map +1 -0
  239. package/dist/session-adapter.js +108 -0
  240. package/dist/session-adapter.js.map +1 -0
  241. package/dist/sop-generator.d.ts +29 -0
  242. package/dist/sop-generator.d.ts.map +1 -0
  243. package/dist/sop-generator.js +235 -0
  244. package/dist/sop-generator.js.map +1 -0
  245. package/dist/spec-profiles.d.ts +41 -0
  246. package/dist/spec-profiles.d.ts.map +1 -0
  247. package/dist/spec-profiles.js +131 -0
  248. package/dist/spec-profiles.js.map +1 -0
  249. package/dist/strategy-design-graph.d.ts +23 -0
  250. package/dist/strategy-design-graph.d.ts.map +1 -0
  251. package/dist/strategy-design-graph.js +205 -0
  252. package/dist/strategy-design-graph.js.map +1 -0
  253. package/dist/strategy-design-prompt.d.ts +28 -0
  254. package/dist/strategy-design-prompt.d.ts.map +1 -0
  255. package/dist/strategy-design-prompt.js +108 -0
  256. package/dist/strategy-design-prompt.js.map +1 -0
  257. package/dist/strategy-design-schema.d.ts +767 -0
  258. package/dist/strategy-design-schema.d.ts.map +1 -0
  259. package/dist/strategy-design-schema.js +126 -0
  260. package/dist/strategy-design-schema.js.map +1 -0
  261. package/dist/strategy-design.d.ts +69 -0
  262. package/dist/strategy-design.d.ts.map +1 -0
  263. package/dist/strategy-design.js +411 -0
  264. package/dist/strategy-design.js.map +1 -0
  265. package/dist/strategy-gating.d.ts +31 -0
  266. package/dist/strategy-gating.d.ts.map +1 -0
  267. package/dist/strategy-gating.js +276 -0
  268. package/dist/strategy-gating.js.map +1 -0
  269. package/dist/team-prompt-builder.d.ts +47 -0
  270. package/dist/team-prompt-builder.d.ts.map +1 -0
  271. package/dist/team-prompt-builder.js +362 -0
  272. package/dist/team-prompt-builder.js.map +1 -0
  273. package/dist/trace-engine.d.ts +40 -0
  274. package/dist/trace-engine.d.ts.map +1 -0
  275. package/dist/trace-engine.js +344 -0
  276. package/dist/trace-engine.js.map +1 -0
  277. package/dist/types.d.ts +612 -0
  278. package/dist/types.d.ts.map +1 -0
  279. package/dist/types.js +9 -0
  280. package/dist/types.js.map +1 -0
  281. package/dist/unit-session-lifecycle.d.ts +78 -0
  282. package/dist/unit-session-lifecycle.d.ts.map +1 -0
  283. package/dist/unit-session-lifecycle.js +141 -0
  284. package/dist/unit-session-lifecycle.js.map +1 -0
  285. package/dist/unit-session.d.ts +30 -0
  286. package/dist/unit-session.d.ts.map +1 -0
  287. package/dist/unit-session.js +370 -0
  288. package/dist/unit-session.js.map +1 -0
  289. package/dist/watchdogs.d.ts +33 -0
  290. package/dist/watchdogs.d.ts.map +1 -0
  291. package/dist/watchdogs.js +170 -0
  292. package/dist/watchdogs.js.map +1 -0
  293. package/dist/work-unit-scheduler.d.ts +34 -0
  294. package/dist/work-unit-scheduler.d.ts.map +1 -0
  295. package/dist/work-unit-scheduler.js +91 -0
  296. package/dist/work-unit-scheduler.js.map +1 -0
  297. package/dist/workflow-transition.d.ts +90 -0
  298. package/dist/workflow-transition.d.ts.map +1 -0
  299. package/dist/workflow-transition.js +340 -0
  300. package/dist/workflow-transition.js.map +1 -0
  301. package/package.json +65 -0
@@ -0,0 +1,362 @@
1
+ /**
2
+ * Team prompt builder for the persistent team session execution model.
3
+ *
4
+ * When a factory instance uses executionModel='team', a single persistent
5
+ * Claude Code session acts as the team lead. The factory engine sends work
6
+ * batch directives via stdin. The agent signals work unit completion by
7
+ * calling the `telora_factory_work_unit_update` MCP tool with
8
+ * status='completed'. The daemon polls for these DB status changes.
9
+ *
10
+ * This module builds three types of prompts:
11
+ * 1. The initial system prompt when spawning the team session
12
+ * 2. Work batch directives for ready work units
13
+ * 3. Gate results messages (pass/fail feedback)
14
+ */
15
+ import { generateFactorySOP } from './sop-generator.js';
16
+ // ============================================================================
17
+ // buildTeamLeadPrompt
18
+ // ============================================================================
19
+ /**
20
+ * Build the initial system prompt for the persistent team session.
21
+ *
22
+ * This prompt is sent once when the team session is spawned. It establishes
23
+ * the protocol, provides the factory specification and operational context,
24
+ * and explains how the team lead should coordinate work.
25
+ */
26
+ export function buildTeamLeadPrompt(state) {
27
+ const lines = [];
28
+ // Content framing -- establishes software engineering context for the API
29
+ // content filter. Game specs use terms like "race" (character species in
30
+ // tabletop RPGs), "class", "combat", "damage" etc. that are standard game
31
+ // design vocabulary. Without framing, the filter may block output.
32
+ lines.push('## Context');
33
+ lines.push('');
34
+ lines.push('You are a software engineer building an application. The specification');
35
+ lines.push('describes a software product with functional requirements. Your task is to');
36
+ lines.push('write production code (TypeScript, SQL, tests, etc.) that implements the');
37
+ lines.push('described features.');
38
+ lines.push('');
39
+ lines.push('If the spec describes a game (tabletop RPG, video game, etc.), note that');
40
+ lines.push('game design uses domain-specific vocabulary: "race" means character species');
41
+ lines.push('(e.g. Elf, Dwarf), "class" means character archetype (e.g. Fighter, Wizard),');
42
+ lines.push('"combat" and "damage" refer to game mechanics with dice rolls and hit points.');
43
+ lines.push('All such terms are standard game design concepts. Implement them as data');
44
+ lines.push('models, enums, and game engine logic.');
45
+ lines.push('');
46
+ // Protocol overview
47
+ lines.push('## Team Session Protocol');
48
+ lines.push('');
49
+ lines.push('You are a persistent team lead for a factory build session. Your session');
50
+ lines.push('stays alive across multiple work cycles. The factory engine sends you work');
51
+ lines.push('batch directives via stdin, and you signal completion via MCP tool calls.');
52
+ lines.push('');
53
+ lines.push('**How this works:**');
54
+ lines.push('1. You receive a work batch directive containing one or more work units');
55
+ lines.push('2. You implement each work unit (using the Task tool for parallel work)');
56
+ lines.push('3. When a work unit is complete and committed, call the MCP tool to mark it completed');
57
+ lines.push('4. The factory engine runs external gate evaluations on completed units');
58
+ lines.push('5. You receive gate results -- fix failures and re-signal when ready');
59
+ lines.push('6. Repeat until all work is done');
60
+ lines.push('');
61
+ // Completion protocol (MCP tool call)
62
+ lines.push('## Signaling Completion');
63
+ lines.push('');
64
+ lines.push('When you finish a work unit, call the MCP tool to mark it completed:');
65
+ lines.push('');
66
+ lines.push(' telora_factory_work_unit_update(workUnitId: "<work-unit-id>", status: "completed")');
67
+ lines.push('');
68
+ lines.push('Replace `<work-unit-id>` with the exact UUID of the work unit. Call the tool');
69
+ lines.push('ONLY after the work is implemented and committed. The factory engine detects');
70
+ lines.push('the status change and triggers gate evaluation.');
71
+ lines.push('');
72
+ lines.push('## Gate Fix Protocol');
73
+ lines.push('');
74
+ lines.push('When gates fail, you receive a gate results message with the full failure');
75
+ lines.push('output (stdout/stderr from the failing gate commands). The factory engine');
76
+ lines.push('cycles your work units back to in_progress. Do NOT re-implement them. Instead:');
77
+ lines.push('');
78
+ lines.push('1. Read the gate output to understand the specific failure');
79
+ lines.push('2. Make a targeted fix -- the gate is showing you what broke in your implementation.');
80
+ lines.push(' If a test is failing because your implementation is wrong, fix the implementation.');
81
+ lines.push(' If a test has a genuine bug (wrong assertion, wrong setup), fix the test.');
82
+ lines.push(' Do NOT change test assertions to force them to pass without fixing the underlying behavior.');
83
+ lines.push('3. Commit your changes');
84
+ lines.push('4. Mark each affected work unit as complete again:');
85
+ lines.push('');
86
+ lines.push(' telora_factory_work_unit_update(workUnitId: "<work-unit-id>", status: "completed")');
87
+ lines.push('');
88
+ lines.push('The factory engine detects when all work units return to completed status');
89
+ lines.push('and automatically re-runs all gates on the updated code.');
90
+ lines.push('');
91
+ // Session persistence rules
92
+ lines.push('## Session Rules');
93
+ lines.push('');
94
+ lines.push('- Do NOT exit or terminate. This session persists across multiple directives.');
95
+ lines.push('- After signaling completion, WAIT for gate results before moving on to');
96
+ lines.push(' unrelated work. The factory engine will send gate pass/fail feedback.');
97
+ lines.push('- If you have other independent work units in the same batch, you may');
98
+ lines.push(' continue working on those while waiting for gate results.');
99
+ lines.push('- Gate evaluation is external -- you do not run gates yourself.');
100
+ lines.push('');
101
+ // Build/test scope clarification
102
+ lines.push('## Build and Test Execution Scope');
103
+ lines.push('');
104
+ lines.push('Writing and running tests is a normal part of implementing a feature and is expected.');
105
+ lines.push('However, project-wide commands like `npm run build`, `npm test`, `npm run typecheck`,');
106
+ lines.push('`npm run lint` must NOT be run by parallel workers (subagents spawned via the Task');
107
+ lines.push('tool). Multiple workers share the same worktree, and concurrent project-wide commands');
108
+ lines.push('cause filesystem conflicts (build cache collisions, port conflicts, etc.).');
109
+ lines.push('');
110
+ lines.push('When you (the team lead) are working sequentially or after all workers have committed,');
111
+ lines.push('you may run tests normally as part of verifying your implementation.');
112
+ lines.push('');
113
+ lines.push('The factory gate engine runs the definitive quality evaluation externally after ALL');
114
+ lines.push('work units in a strategy are complete. Gates are the final quality backstop, not a');
115
+ lines.push('replacement for testing during development.');
116
+ lines.push('');
117
+ // Task tool parallelism
118
+ lines.push('## Parallel Execution');
119
+ lines.push('');
120
+ lines.push('Use the Task tool to spawn subagent workers for parallelizable work units.');
121
+ lines.push('Independent work units (no dependency between them) can be built in parallel.');
122
+ lines.push('Each worker should:');
123
+ lines.push(' - Implement the assigned work unit');
124
+ lines.push(' - Follow project coding standards');
125
+ lines.push(' - Commit changes when done');
126
+ lines.push(' - Do NOT run project-wide commands (npm test, npm run build, etc.) -- concurrency conflicts');
127
+ lines.push(' - Report back to you so you can signal completion');
128
+ lines.push('');
129
+ lines.push('You (the team lead) are responsible for calling the completion MCP tool.');
130
+ lines.push('Workers do NOT call the tool -- only you do, after verifying their work.');
131
+ lines.push('');
132
+ // Infrastructure-owned gate verification
133
+ lines.push('## Infrastructure-Owned Gate Verification');
134
+ lines.push('');
135
+ lines.push('You will see a work unit titled "Gate verification" in the work unit list.');
136
+ lines.push('This unit is pre-created and managed by the factory infrastructure. It');
137
+ lines.push('represents the external gate evaluation step (typecheck, lint, build, test)');
138
+ lines.push('that runs automatically after all agent work units are complete.');
139
+ lines.push('');
140
+ lines.push('**Do not modify, claim, or create duplicate gate-verification work units.**');
141
+ lines.push('The infrastructure resolves this unit to complete or failed based on gate');
142
+ lines.push('results. You do not need to take any action on it.');
143
+ lines.push('');
144
+ // CLAUDE.md reminder
145
+ lines.push('## Repository Conventions');
146
+ lines.push('');
147
+ lines.push('Read and follow the CLAUDE.md file at the repository root. It contains');
148
+ lines.push('critical rules for database migrations, TypeScript conventions, git');
149
+ lines.push('workflow, and project structure that all work must adhere to.');
150
+ lines.push('');
151
+ // Deployment profile: inception prompt (full operational context, initial session only)
152
+ if (state.deploymentProfileSnapshot?.inceptionPrompt) {
153
+ lines.push('## Deployment Profile: Operational Context');
154
+ lines.push('');
155
+ lines.push(state.deploymentProfileSnapshot.inceptionPrompt);
156
+ lines.push('');
157
+ }
158
+ // Deployment profile: guidelines (terse constraints, always included when present)
159
+ if (state.deploymentProfileSnapshot?.guidelines) {
160
+ lines.push('## Deployment Constraints');
161
+ lines.push('');
162
+ lines.push(state.deploymentProfileSnapshot.guidelines);
163
+ lines.push('');
164
+ }
165
+ // Pipeline SOP (generated from promise contracts)
166
+ const sop = generateFactorySOP(state.pipelineGraph);
167
+ if (sop) {
168
+ lines.push(sop);
169
+ lines.push('');
170
+ }
171
+ // Factory specification
172
+ if (state.specification) {
173
+ lines.push('## Factory Specification');
174
+ lines.push('');
175
+ lines.push(state.specification);
176
+ lines.push('');
177
+ }
178
+ // Operational notes from the blueprint
179
+ if (state.blueprint.operationalNotes) {
180
+ lines.push('## Operational Notes');
181
+ lines.push('');
182
+ lines.push(state.blueprint.operationalNotes);
183
+ lines.push('');
184
+ }
185
+ // Blueprint infrastructure requirements (non-negotiable)
186
+ if (state.blueprint.specConstraints) {
187
+ lines.push('## Blueprint Infrastructure Requirements');
188
+ lines.push('');
189
+ lines.push('The following requirements are mandated by the factory blueprint and take');
190
+ lines.push('precedence over spec requirements. Do NOT remove or modify items covered');
191
+ lines.push('here, even if the specification appears to prohibit them.');
192
+ lines.push('');
193
+ lines.push(state.blueprint.specConstraints);
194
+ lines.push('');
195
+ }
196
+ return lines.join('\n');
197
+ }
198
+ // ============================================================================
199
+ // buildWorkBatchDirective
200
+ // ============================================================================
201
+ /**
202
+ * Format a batch of ready work units as a directive for the team session.
203
+ *
204
+ * Sent via stdin when the factory engine has identified work units that are
205
+ * ready to be built (all dependencies satisfied). Groups independent units
206
+ * and suggests parallelization.
207
+ */
208
+ export function buildWorkBatchDirective(workUnits, state) {
209
+ const lines = [];
210
+ const agentUnits = workUnits.filter(u => !u.infrastructureOwned);
211
+ // Derive cycle number from the work units in this batch
212
+ const cycle = agentUnits.reduce((max, u) => Math.max(max, u.cycleNumber), 0);
213
+ lines.push(`## Work Batch Directive (Cycle ${cycle})`);
214
+ lines.push('');
215
+ lines.push(`${agentUnits.length} work unit(s) are ready for implementation.`);
216
+ lines.push('');
217
+ // Identify retries for the summary section below
218
+ const retries = agentUnits.filter((u) => u.iterationCount > 0);
219
+ // List each work unit
220
+ for (const unit of agentUnits) {
221
+ lines.push(`### Work Unit: ${unit.title}`);
222
+ lines.push(`- **ID:** ${unit.id}`);
223
+ if (unit.description) {
224
+ lines.push(`- **Description:** ${unit.description}`);
225
+ }
226
+ if (unit.blockedBy.length > 0) {
227
+ lines.push(`- **Blocked by (now completed):** ${unit.blockedBy.join(', ')}`);
228
+ }
229
+ lines.push(`- **Iteration:** ${unit.iterationCount + 1}`);
230
+ if (unit.iterationCount > 0) {
231
+ lines.push('');
232
+ lines.push(` **NOTE:** This is retry #${unit.iterationCount}. Previous attempt(s) did not pass` +
233
+ ' the quality gates. Review the gate feedback (sent separately) and fix the issues.');
234
+ }
235
+ lines.push('');
236
+ }
237
+ // Parallelization guidance
238
+ if (workUnits.length > 1) {
239
+ // Check which units are truly independent (no unit in this batch blocks another)
240
+ const batchIds = new Set(workUnits.map((u) => u.id));
241
+ const independent = [];
242
+ const dependent = [];
243
+ for (const unit of workUnits) {
244
+ const hasInBatchDep = unit.blockedBy.some((depId) => batchIds.has(depId));
245
+ if (hasInBatchDep) {
246
+ dependent.push(unit);
247
+ }
248
+ else {
249
+ independent.push(unit);
250
+ }
251
+ }
252
+ if (independent.length > 1) {
253
+ lines.push('## Parallelization');
254
+ lines.push('');
255
+ lines.push('The following work units are independent and can be built in parallel');
256
+ lines.push('using the Task tool to spawn subagent workers:');
257
+ for (const unit of independent) {
258
+ lines.push(`- ${unit.title} (${unit.id})`);
259
+ }
260
+ lines.push('');
261
+ }
262
+ if (dependent.length > 0) {
263
+ lines.push('The following work units depend on others in this batch and must be');
264
+ lines.push('built after their dependencies complete:');
265
+ for (const unit of dependent) {
266
+ lines.push(`- ${unit.title} (${unit.id}) -- depends on: ${unit.blockedBy.join(', ')}`);
267
+ }
268
+ lines.push('');
269
+ }
270
+ }
271
+ // Retry summary
272
+ if (retries.length > 0) {
273
+ lines.push('## Retry Summary');
274
+ lines.push('');
275
+ lines.push(`${retries.length} unit(s) are retries after gate failure. Gate feedback`);
276
+ lines.push('will be provided in a separate message. Focus on fixing the specific');
277
+ lines.push('issues identified by the gates.');
278
+ lines.push('');
279
+ }
280
+ // Deployment constraints reminder (cycle 2+ only -- initial session already has them)
281
+ if (cycle > 1 && state.deploymentProfileSnapshot?.guidelines) {
282
+ lines.push('## Deployment Constraints (Reminder)');
283
+ lines.push('');
284
+ lines.push(state.deploymentProfileSnapshot.guidelines);
285
+ lines.push('');
286
+ }
287
+ // Completion reminder
288
+ lines.push('## Completion');
289
+ lines.push('');
290
+ lines.push('For each work unit, after implementation is complete and committed,');
291
+ lines.push('call the MCP tool to mark it completed:');
292
+ lines.push('');
293
+ lines.push(' telora_factory_work_unit_update(workUnitId: "<work-unit-id>", status: "completed")');
294
+ lines.push('');
295
+ lines.push('Then wait for gate results.');
296
+ lines.push('');
297
+ return lines.join('\n');
298
+ }
299
+ // ============================================================================
300
+ // buildStrategyGateResultsMessage
301
+ // ============================================================================
302
+ /**
303
+ * Format strategy-level gate pass/fail results for the team session.
304
+ *
305
+ * Sent after the factory engine runs external gate evaluations on a strategy
306
+ * whose work units are all complete. On failure, includes the formatted gate
307
+ * output so the team knows what to fix. On pass, confirms the strategy is done.
308
+ *
309
+ * For failures, work units are cycled back to in_progress. The team makes
310
+ * a targeted fix and re-signals completion via MCP tool call for the affected
311
+ * work units to trigger automatic re-gating.
312
+ */
313
+ export function buildStrategyGateResultsMessage(strategyName, strategyId, passed, failureFeedback, workUnits) {
314
+ const lines = [];
315
+ lines.push(`## Strategy Gate Results: ${strategyName}`);
316
+ lines.push('');
317
+ if (passed) {
318
+ lines.push(`Strategy "${strategyName}" **PASSED** all quality gates.`);
319
+ lines.push('');
320
+ lines.push('All work units in this strategy are verified. Wait for the next');
321
+ lines.push('work batch directive or further instructions.');
322
+ lines.push('');
323
+ return lines.join('\n');
324
+ }
325
+ // Failed
326
+ lines.push(`Strategy "${strategyName}" **FAILED** quality gate evaluation.`);
327
+ lines.push('');
328
+ lines.push('**Work units have been cycled back to in_progress.** Do NOT re-implement them.');
329
+ lines.push('Review the gate output below and make a targeted fix for the specific failure.');
330
+ lines.push('');
331
+ if (failureFeedback) {
332
+ lines.push('### Gate Output');
333
+ lines.push('');
334
+ lines.push(failureFeedback);
335
+ lines.push('');
336
+ }
337
+ lines.push('### Strategy Work Units (cycled to in_progress)');
338
+ lines.push('');
339
+ for (const wu of workUnits) {
340
+ lines.push(`- **${wu.title}** (${wu.id})`);
341
+ }
342
+ lines.push('');
343
+ lines.push('### Next Steps');
344
+ lines.push('');
345
+ lines.push('1. Review the gate output above to understand what specifically failed');
346
+ lines.push('2. Make a targeted fix. The gate output shows what broke in your implementation:');
347
+ lines.push(' - If a test fails because the implementation is wrong, fix the implementation');
348
+ lines.push(' - If a test has a genuine bug (wrong assertion, wrong setup), fix the test');
349
+ lines.push(' - Do NOT change test assertions to force them to pass without fixing the underlying behavior');
350
+ lines.push('3. Commit your changes');
351
+ lines.push('4. Re-signal completion for each affected work unit via MCP:');
352
+ lines.push('');
353
+ for (const wu of workUnits) {
354
+ lines.push(` telora_factory_work_unit_update(workUnitId: "${wu.id}", status: "completed")`);
355
+ }
356
+ lines.push('');
357
+ lines.push('The factory engine detects when all work units return to completed status');
358
+ lines.push('and automatically re-runs all gates on the updated code.');
359
+ lines.push('');
360
+ return lines.join('\n');
361
+ }
362
+ //# sourceMappingURL=team-prompt-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team-prompt-builder.js","sourceRoot":"","sources":["../src/team-prompt-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Cross-boundary dependency trace engine.
3
+ *
4
+ * Scans source files for references (e.g. API call names, import symbols)
5
+ * and target files for registrations (e.g. handler names, exports), then
6
+ * reports any references that have no matching target. This catches gaps
7
+ * that are invisible to compilation and unit tests but fatal at runtime.
8
+ */
9
+ import type { TraceCheck, TraceCheckConfig, TraceResult } from './types.js';
10
+ /** Map of built-in trace type identifiers to their default TraceCheck definitions. */
11
+ export declare const BUILTIN_TRACES: Record<string, TraceCheck>;
12
+ /**
13
+ * Resolve an array of TraceCheckConfig entries into fully populated TraceCheck
14
+ * objects by merging user config with built-in defaults.
15
+ *
16
+ * Built-in types fill missing fields from BUILTIN_TRACES. Custom types require
17
+ * all fields to be present.
18
+ */
19
+ export declare function resolveTraceChecks(configs: TraceCheckConfig[]): TraceCheck[];
20
+ /**
21
+ * Recursively collect all files under basePath that match the glob pattern.
22
+ */
23
+ export declare function globFiles(basePath: string, pattern: string): string[];
24
+ /**
25
+ * Run a single trace check against the codebase at basePath.
26
+ *
27
+ * Globs source and target files, scans for pattern matches, and computes
28
+ * the set difference to find missing targets (failures) and orphaned
29
+ * targets (informational).
30
+ */
31
+ export declare function runTraceCheck(check: TraceCheck, basePath: string): Promise<TraceResult>;
32
+ /**
33
+ * Run multiple trace checks sequentially.
34
+ */
35
+ export declare function runTraceChecks(checks: TraceCheck[], basePath: string): Promise<TraceResult[]>;
36
+ /**
37
+ * Format a trace result as human-readable text for gate output.
38
+ */
39
+ export declare function formatTraceOutput(result: TraceResult): string;
40
+ //# sourceMappingURL=trace-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-engine.d.ts","sourceRoot":"","sources":["../src/trace-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAa,WAAW,EAAE,MAAM,YAAY,CAAC;AA0BvF,sFAAsF;AACtF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAGrD,CAAC;AAYF;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,UAAU,EAAE,CAoC5E;AAqED;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAsCrE;AAwDD;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,WAAW,CAAC,CAqFtB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,UAAU,EAAE,EACpB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,WAAW,EAAE,CAAC,CASxB;AAMD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAkC7D"}