@telora/daemon 0.17.33 → 0.17.40

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 (344) hide show
  1. package/build-info.json +5 -3
  2. package/dist/assembly-engine.d.ts +6 -0
  3. package/dist/assembly-engine.d.ts.map +1 -1
  4. package/dist/assembly-engine.js +19 -0
  5. package/dist/assembly-engine.js.map +1 -1
  6. package/dist/assembly-resolvers.d.ts +17 -8
  7. package/dist/assembly-resolvers.d.ts.map +1 -1
  8. package/dist/assembly-resolvers.js +19 -8
  9. package/dist/assembly-resolvers.js.map +1 -1
  10. package/dist/cli/connect.d.ts.map +1 -1
  11. package/dist/cli/connect.js +4 -0
  12. package/dist/cli/connect.js.map +1 -1
  13. package/dist/cli/session-state.d.ts +10 -0
  14. package/dist/cli/session-state.d.ts.map +1 -1
  15. package/dist/cli/session-state.js +31 -0
  16. package/dist/cli/session-state.js.map +1 -1
  17. package/dist/completion/completion-decision.d.ts +83 -0
  18. package/dist/completion/completion-decision.d.ts.map +1 -0
  19. package/dist/completion/completion-decision.js +48 -0
  20. package/dist/completion/completion-decision.js.map +1 -0
  21. package/dist/completion/event-escalations.d.ts +97 -0
  22. package/dist/completion/event-escalations.d.ts.map +1 -0
  23. package/dist/completion/event-escalations.js +213 -0
  24. package/dist/completion/event-escalations.js.map +1 -0
  25. package/dist/completion/event.d.ts +1 -72
  26. package/dist/completion/event.d.ts.map +1 -1
  27. package/dist/completion/event.js +149 -329
  28. package/dist/completion/event.js.map +1 -1
  29. package/dist/completion/exit-classification.d.ts +82 -0
  30. package/dist/completion/exit-classification.d.ts.map +1 -0
  31. package/dist/completion/exit-classification.js +61 -0
  32. package/dist/completion/exit-classification.js.map +1 -0
  33. package/dist/completion/index.d.ts +14 -5
  34. package/dist/completion/index.d.ts.map +1 -1
  35. package/dist/completion/index.js +14 -5
  36. package/dist/completion/index.js.map +1 -1
  37. package/dist/completion/merge-phase.d.ts +114 -0
  38. package/dist/completion/merge-phase.d.ts.map +1 -0
  39. package/dist/completion/merge-phase.js +198 -0
  40. package/dist/completion/merge-phase.js.map +1 -0
  41. package/dist/completion/review-exit-phase.d.ts +82 -0
  42. package/dist/completion/review-exit-phase.d.ts.map +1 -0
  43. package/dist/completion/review-exit-phase.js +228 -0
  44. package/dist/completion/review-exit-phase.js.map +1 -0
  45. package/dist/completion/status-advance-phase.d.ts +61 -0
  46. package/dist/completion/status-advance-phase.d.ts.map +1 -0
  47. package/dist/completion/status-advance-phase.js +182 -0
  48. package/dist/completion/status-advance-phase.js.map +1 -0
  49. package/dist/completion/team-completion.d.ts +28 -269
  50. package/dist/completion/team-completion.d.ts.map +1 -1
  51. package/dist/completion/team-completion.js +145 -676
  52. package/dist/completion/team-completion.js.map +1 -1
  53. package/dist/config.d.ts.map +1 -1
  54. package/dist/config.js +70 -41
  55. package/dist/config.js.map +1 -1
  56. package/dist/daemon-process.d.ts +18 -2
  57. package/dist/daemon-process.d.ts.map +1 -1
  58. package/dist/daemon-process.js +15 -2
  59. package/dist/daemon-process.js.map +1 -1
  60. package/dist/directive/close-loop-stage.d.ts +50 -0
  61. package/dist/directive/close-loop-stage.d.ts.map +1 -0
  62. package/dist/directive/close-loop-stage.js +196 -0
  63. package/dist/directive/close-loop-stage.js.map +1 -0
  64. package/dist/directive/directive-assembly.d.ts +33 -0
  65. package/dist/directive/directive-assembly.d.ts.map +1 -0
  66. package/dist/directive/directive-assembly.js +77 -0
  67. package/dist/directive/directive-assembly.js.map +1 -0
  68. package/dist/directive/directive-dispatch.d.ts +103 -0
  69. package/dist/directive/directive-dispatch.d.ts.map +1 -0
  70. package/dist/directive/directive-dispatch.js +279 -0
  71. package/dist/directive/directive-dispatch.js.map +1 -0
  72. package/dist/directive/phase-sync.d.ts +89 -0
  73. package/dist/directive/phase-sync.d.ts.map +1 -0
  74. package/dist/directive/phase-sync.js +173 -0
  75. package/dist/directive/phase-sync.js.map +1 -0
  76. package/dist/directive-executor.d.ts +21 -223
  77. package/dist/directive-executor.d.ts.map +1 -1
  78. package/dist/directive-executor.js +28 -687
  79. package/dist/directive-executor.js.map +1 -1
  80. package/dist/focus-engine.d.ts.map +1 -1
  81. package/dist/focus-engine.js +16 -10
  82. package/dist/focus-engine.js.map +1 -1
  83. package/dist/focus-executor.d.ts +29 -8
  84. package/dist/focus-executor.d.ts.map +1 -1
  85. package/dist/focus-executor.js +29 -10
  86. package/dist/focus-executor.js.map +1 -1
  87. package/dist/focus-stage-lifecycle.d.ts +7 -5
  88. package/dist/focus-stage-lifecycle.d.ts.map +1 -1
  89. package/dist/focus-stage-lifecycle.js +11 -6
  90. package/dist/focus-stage-lifecycle.js.map +1 -1
  91. package/dist/index.js +8 -0
  92. package/dist/index.js.map +1 -1
  93. package/dist/merge-back-loop.d.ts.map +1 -1
  94. package/dist/merge-back-loop.js +4 -10
  95. package/dist/merge-back-loop.js.map +1 -1
  96. package/dist/pipeline-config.d.ts +13 -0
  97. package/dist/pipeline-config.d.ts.map +1 -1
  98. package/dist/pipeline-config.js +15 -0
  99. package/dist/pipeline-config.js.map +1 -1
  100. package/dist/resolvers/agent-escalations.d.ts +8 -1
  101. package/dist/resolvers/agent-escalations.d.ts.map +1 -1
  102. package/dist/resolvers/agent-escalations.js +25 -22
  103. package/dist/resolvers/agent-escalations.js.map +1 -1
  104. package/dist/resolvers/agent-session-summaries.d.ts +8 -1
  105. package/dist/resolvers/agent-session-summaries.d.ts.map +1 -1
  106. package/dist/resolvers/agent-session-summaries.js +21 -18
  107. package/dist/resolvers/agent-session-summaries.js.map +1 -1
  108. package/dist/resolvers/delivery-acceptance-criteria.d.ts +7 -1
  109. package/dist/resolvers/delivery-acceptance-criteria.d.ts.map +1 -1
  110. package/dist/resolvers/delivery-acceptance-criteria.js +14 -11
  111. package/dist/resolvers/delivery-acceptance-criteria.js.map +1 -1
  112. package/dist/resolvers/delivery-description.d.ts +7 -1
  113. package/dist/resolvers/delivery-description.d.ts.map +1 -1
  114. package/dist/resolvers/delivery-description.js +14 -11
  115. package/dist/resolvers/delivery-description.js.map +1 -1
  116. package/dist/resolvers/delivery-issues.d.ts +8 -1
  117. package/dist/resolvers/delivery-issues.d.ts.map +1 -1
  118. package/dist/resolvers/delivery-issues.js +51 -48
  119. package/dist/resolvers/delivery-issues.js.map +1 -1
  120. package/dist/resolvers/delivery-listing.d.ts +16 -1
  121. package/dist/resolvers/delivery-listing.d.ts.map +1 -1
  122. package/dist/resolvers/delivery-listing.js +36 -33
  123. package/dist/resolvers/delivery-listing.js.map +1 -1
  124. package/dist/resolvers/delivery-tech-context.d.ts +7 -1
  125. package/dist/resolvers/delivery-tech-context.d.ts.map +1 -1
  126. package/dist/resolvers/delivery-tech-context.js +14 -11
  127. package/dist/resolvers/delivery-tech-context.js.map +1 -1
  128. package/dist/resolvers/deployment-profile.d.ts +8 -1
  129. package/dist/resolvers/deployment-profile.d.ts.map +1 -1
  130. package/dist/resolvers/deployment-profile.js +20 -17
  131. package/dist/resolvers/deployment-profile.js.map +1 -1
  132. package/dist/resolvers/focus-anchoring-injections.d.ts +26 -1
  133. package/dist/resolvers/focus-anchoring-injections.d.ts.map +1 -1
  134. package/dist/resolvers/focus-anchoring-injections.js +91 -88
  135. package/dist/resolvers/focus-anchoring-injections.js.map +1 -1
  136. package/dist/resolvers/focus-context.d.ts +9 -1
  137. package/dist/resolvers/focus-context.d.ts.map +1 -1
  138. package/dist/resolvers/focus-context.js +38 -35
  139. package/dist/resolvers/focus-context.js.map +1 -1
  140. package/dist/resolvers/focus-injections.d.ts +13 -1
  141. package/dist/resolvers/focus-injections.d.ts.map +1 -1
  142. package/dist/resolvers/focus-injections.js +60 -57
  143. package/dist/resolvers/focus-injections.js.map +1 -1
  144. package/dist/resolvers/focus-last-review-report.d.ts +2 -1
  145. package/dist/resolvers/focus-last-review-report.d.ts.map +1 -1
  146. package/dist/resolvers/focus-last-review-report.js +33 -30
  147. package/dist/resolvers/focus-last-review-report.js.map +1 -1
  148. package/dist/resolvers/focus-reality-tree.d.ts +15 -1
  149. package/dist/resolvers/focus-reality-tree.d.ts.map +1 -1
  150. package/dist/resolvers/focus-reality-tree.js +35 -32
  151. package/dist/resolvers/focus-reality-tree.js.map +1 -1
  152. package/dist/resolvers/git-diff-against-base.d.ts +8 -1
  153. package/dist/resolvers/git-diff-against-base.d.ts.map +1 -1
  154. package/dist/resolvers/git-diff-against-base.js +33 -30
  155. package/dist/resolvers/git-diff-against-base.js.map +1 -1
  156. package/dist/resolvers/guards-evaluation-results.d.ts +7 -1
  157. package/dist/resolvers/guards-evaluation-results.d.ts.map +1 -1
  158. package/dist/resolvers/guards-evaluation-results.js +25 -22
  159. package/dist/resolvers/guards-evaluation-results.js.map +1 -1
  160. package/dist/resolvers/index.d.ts +22 -40
  161. package/dist/resolvers/index.d.ts.map +1 -1
  162. package/dist/resolvers/index.js +112 -41
  163. package/dist/resolvers/index.js.map +1 -1
  164. package/dist/resolvers/loop-context.d.ts +18 -1
  165. package/dist/resolvers/loop-context.d.ts.map +1 -1
  166. package/dist/resolvers/loop-context.js +21 -18
  167. package/dist/resolvers/loop-context.js.map +1 -1
  168. package/dist/resolvers/loop-delivery-index.d.ts +17 -1
  169. package/dist/resolvers/loop-delivery-index.d.ts.map +1 -1
  170. package/dist/resolvers/loop-delivery-index.js +51 -48
  171. package/dist/resolvers/loop-delivery-index.js.map +1 -1
  172. package/dist/resolvers/loop-documents.d.ts +9 -1
  173. package/dist/resolvers/loop-documents.d.ts.map +1 -1
  174. package/dist/resolvers/loop-documents.js +22 -19
  175. package/dist/resolvers/loop-documents.js.map +1 -1
  176. package/dist/resolvers/loop-expected-effects.d.ts +11 -1
  177. package/dist/resolvers/loop-expected-effects.d.ts.map +1 -1
  178. package/dist/resolvers/loop-expected-effects.js +53 -50
  179. package/dist/resolvers/loop-expected-effects.js.map +1 -1
  180. package/dist/resolvers/loop-frt-statement.d.ts +11 -1
  181. package/dist/resolvers/loop-frt-statement.d.ts.map +1 -1
  182. package/dist/resolvers/loop-frt-statement.js +28 -25
  183. package/dist/resolvers/loop-frt-statement.js.map +1 -1
  184. package/dist/resolvers/loop-injection.d.ts +10 -1
  185. package/dist/resolvers/loop-injection.d.ts.map +1 -1
  186. package/dist/resolvers/loop-injection.js +38 -35
  187. package/dist/resolvers/loop-injection.js.map +1 -1
  188. package/dist/resolvers/loop-persona.d.ts +20 -1
  189. package/dist/resolvers/loop-persona.d.ts.map +1 -1
  190. package/dist/resolvers/loop-persona.js +20 -17
  191. package/dist/resolvers/loop-persona.js.map +1 -1
  192. package/dist/resolvers/loop-questions.d.ts +8 -1
  193. package/dist/resolvers/loop-questions.d.ts.map +1 -1
  194. package/dist/resolvers/loop-questions.js +39 -36
  195. package/dist/resolvers/loop-questions.js.map +1 -1
  196. package/dist/resolvers/loop-upstream-udes.d.ts +11 -1
  197. package/dist/resolvers/loop-upstream-udes.d.ts.map +1 -1
  198. package/dist/resolvers/loop-upstream-udes.js +74 -71
  199. package/dist/resolvers/loop-upstream-udes.js.map +1 -1
  200. package/dist/resolvers/prd-context.d.ts +2 -0
  201. package/dist/resolvers/prd-context.d.ts.map +1 -1
  202. package/dist/resolvers/prd-context.js +16 -13
  203. package/dist/resolvers/prd-context.js.map +1 -1
  204. package/dist/resolvers/prd-persona.d.ts +2 -0
  205. package/dist/resolvers/prd-persona.d.ts.map +1 -1
  206. package/dist/resolvers/prd-persona.js +6 -3
  207. package/dist/resolvers/prd-persona.js.map +1 -1
  208. package/dist/resolvers/reality-metrics.d.ts +8 -1
  209. package/dist/resolvers/reality-metrics.d.ts.map +1 -1
  210. package/dist/resolvers/reality-metrics.js +73 -70
  211. package/dist/resolvers/reality-metrics.js.map +1 -1
  212. package/dist/resolvers/reality-projections.d.ts +7 -1
  213. package/dist/resolvers/reality-projections.d.ts.map +1 -1
  214. package/dist/resolvers/reality-projections.js +35 -32
  215. package/dist/resolvers/reality-projections.js.map +1 -1
  216. package/dist/resolvers/reality-tree-snapshot.d.ts +10 -1
  217. package/dist/resolvers/reality-tree-snapshot.d.ts.map +1 -1
  218. package/dist/resolvers/reality-tree-snapshot.js +34 -31
  219. package/dist/resolvers/reality-tree-snapshot.js.map +1 -1
  220. package/dist/resolvers/retired-injections.d.ts +10 -1
  221. package/dist/resolvers/retired-injections.d.ts.map +1 -1
  222. package/dist/resolvers/retired-injections.js +68 -65
  223. package/dist/resolvers/retired-injections.js.map +1 -1
  224. package/dist/resolvers/review-outcomes.d.ts +11 -1
  225. package/dist/resolvers/review-outcomes.d.ts.map +1 -1
  226. package/dist/resolvers/review-outcomes.js +27 -24
  227. package/dist/resolvers/review-outcomes.js.map +1 -1
  228. package/dist/resolvers/security-advisory.d.ts +2 -1
  229. package/dist/resolvers/security-advisory.d.ts.map +1 -1
  230. package/dist/resolvers/security-advisory.js +47 -44
  231. package/dist/resolvers/security-advisory.js.map +1 -1
  232. package/dist/resolvers/wiki-search.d.ts +8 -1
  233. package/dist/resolvers/wiki-search.d.ts.map +1 -1
  234. package/dist/resolvers/wiki-search.js +17 -14
  235. package/dist/resolvers/wiki-search.js.map +1 -1
  236. package/dist/resolvers/wiki-topic.d.ts +9 -1
  237. package/dist/resolvers/wiki-topic.d.ts.map +1 -1
  238. package/dist/resolvers/wiki-topic.js +21 -18
  239. package/dist/resolvers/wiki-topic.js.map +1 -1
  240. package/dist/resolvers/workflow-stages.d.ts +7 -1
  241. package/dist/resolvers/workflow-stages.d.ts.map +1 -1
  242. package/dist/resolvers/workflow-stages.js +20 -17
  243. package/dist/resolvers/workflow-stages.js.map +1 -1
  244. package/dist/review-defect-detector.d.ts +4 -1
  245. package/dist/review-defect-detector.d.ts.map +1 -1
  246. package/dist/review-defect-detector.js +6 -8
  247. package/dist/review-defect-detector.js.map +1 -1
  248. package/dist/self-update.d.ts +6 -0
  249. package/dist/self-update.d.ts.map +1 -1
  250. package/dist/self-update.js +6 -1
  251. package/dist/self-update.js.map +1 -1
  252. package/dist/spawner/index.d.ts +2 -1
  253. package/dist/spawner/index.d.ts.map +1 -1
  254. package/dist/spawner/index.js +2 -1
  255. package/dist/spawner/index.js.map +1 -1
  256. package/dist/spawner/spawn-team.d.ts +14 -52
  257. package/dist/spawner/spawn-team.d.ts.map +1 -1
  258. package/dist/spawner/spawn-team.js +14 -469
  259. package/dist/spawner/spawn-team.js.map +1 -1
  260. package/dist/staleness.d.ts +124 -0
  261. package/dist/staleness.d.ts.map +1 -0
  262. package/dist/staleness.js +215 -0
  263. package/dist/staleness.js.map +1 -0
  264. package/dist/state-cascade.d.ts +3 -2
  265. package/dist/state-cascade.d.ts.map +1 -1
  266. package/dist/state-cascade.js +7 -3
  267. package/dist/state-cascade.js.map +1 -1
  268. package/dist/types/focus.d.ts +5 -4
  269. package/dist/types/focus.d.ts.map +1 -1
  270. package/dist/types/index.d.ts +0 -1
  271. package/dist/types/index.d.ts.map +1 -1
  272. package/dist/types/index.js +0 -1
  273. package/dist/types/index.js.map +1 -1
  274. package/dist/types/session.d.ts +2 -3
  275. package/dist/types/session.d.ts.map +1 -1
  276. package/dist/unified-engine-lifecycle.d.ts.map +1 -1
  277. package/dist/unified-engine-lifecycle.js +2 -23
  278. package/dist/unified-engine-lifecycle.js.map +1 -1
  279. package/dist/unified-shell-config.d.ts +2 -7
  280. package/dist/unified-shell-config.d.ts.map +1 -1
  281. package/dist/unified-shell-config.js +2 -23
  282. package/dist/unified-shell-config.js.map +1 -1
  283. package/dist/unified-shell-status.d.ts.map +1 -1
  284. package/dist/unified-shell-status.js +2 -4
  285. package/dist/unified-shell-status.js.map +1 -1
  286. package/dist/unified-shell.d.ts.map +1 -1
  287. package/dist/unified-shell.js +21 -24
  288. package/dist/unified-shell.js.map +1 -1
  289. package/dist/version-check.d.ts.map +1 -1
  290. package/dist/version-check.js +6 -4
  291. package/dist/version-check.js.map +1 -1
  292. package/package.json +3 -3
  293. package/dist/pm/adaptive-poller.d.ts +0 -26
  294. package/dist/pm/adaptive-poller.d.ts.map +0 -1
  295. package/dist/pm/adaptive-poller.js +0 -53
  296. package/dist/pm/adaptive-poller.js.map +0 -1
  297. package/dist/pm/cascade-evaluator.d.ts +0 -29
  298. package/dist/pm/cascade-evaluator.d.ts.map +0 -1
  299. package/dist/pm/cascade-evaluator.js +0 -135
  300. package/dist/pm/cascade-evaluator.js.map +0 -1
  301. package/dist/pm/channel-email.d.ts +0 -42
  302. package/dist/pm/channel-email.d.ts.map +0 -1
  303. package/dist/pm/channel-email.js +0 -47
  304. package/dist/pm/channel-email.js.map +0 -1
  305. package/dist/pm/channel-slack.d.ts +0 -40
  306. package/dist/pm/channel-slack.d.ts.map +0 -1
  307. package/dist/pm/channel-slack.js +0 -46
  308. package/dist/pm/channel-slack.js.map +0 -1
  309. package/dist/pm/communication-drafter.d.ts +0 -44
  310. package/dist/pm/communication-drafter.d.ts.map +0 -1
  311. package/dist/pm/communication-drafter.js +0 -84
  312. package/dist/pm/communication-drafter.js.map +0 -1
  313. package/dist/pm/dialog-handler.d.ts +0 -32
  314. package/dist/pm/dialog-handler.d.ts.map +0 -1
  315. package/dist/pm/dialog-handler.js +0 -107
  316. package/dist/pm/dialog-handler.js.map +0 -1
  317. package/dist/pm/mitigation-correlator.d.ts +0 -29
  318. package/dist/pm/mitigation-correlator.d.ts.map +0 -1
  319. package/dist/pm/mitigation-correlator.js +0 -147
  320. package/dist/pm/mitigation-correlator.js.map +0 -1
  321. package/dist/pm/risk-scanner.d.ts +0 -28
  322. package/dist/pm/risk-scanner.d.ts.map +0 -1
  323. package/dist/pm/risk-scanner.js +0 -112
  324. package/dist/pm/risk-scanner.js.map +0 -1
  325. package/dist/pm-engine.d.ts +0 -96
  326. package/dist/pm-engine.d.ts.map +0 -1
  327. package/dist/pm-engine.js +0 -540
  328. package/dist/pm-engine.js.map +0 -1
  329. package/dist/pm-process.d.ts +0 -45
  330. package/dist/pm-process.d.ts.map +0 -1
  331. package/dist/pm-process.js +0 -195
  332. package/dist/pm-process.js.map +0 -1
  333. package/dist/pm-prompt-builder.d.ts +0 -23
  334. package/dist/pm-prompt-builder.d.ts.map +0 -1
  335. package/dist/pm-prompt-builder.js +0 -64
  336. package/dist/pm-prompt-builder.js.map +0 -1
  337. package/dist/session-lifecycle.d.ts +0 -78
  338. package/dist/session-lifecycle.d.ts.map +0 -1
  339. package/dist/session-lifecycle.js +0 -382
  340. package/dist/session-lifecycle.js.map +0 -1
  341. package/dist/types/pm.d.ts +0 -53
  342. package/dist/types/pm.d.ts.map +0 -1
  343. package/dist/types/pm.js +0 -10
  344. package/dist/types/pm.js.map +0 -1
@@ -1,231 +1,29 @@
1
1
  /**
2
- * Directive Executor.
2
+ * Directive Executor -- thin orchestrating entry point.
3
3
  *
4
- * Detects focus workflow stage changes and executes the stage's
5
- * agent_directive. For inject mode: writes /compact + prompt via stdin.
6
- * For spawn mode: terminates current session, assembles directive content,
7
- * and stores it for the next spawn cycle to deliver.
8
- */
9
- import type { DaemonConfig, StageDirective, DirectiveExecutionMode } from './types.js';
10
- import { type AssemblyManifestEntry } from './assembly-engine.js';
11
- import './assembly-resolvers.js';
12
- import { type LineageSpec } from './session-lineage.js';
13
- import { type CloseLoopDecision } from './close-loop-dispatcher.js';
14
- import { createEscalation } from './queries/issues.js';
15
- export { seedLastProcessedStage, getLastProcessedStages } from './directive/stage-tracker.js';
16
- export { computeDirectiveHash, SPAWN_GUARD_WINDOW_MS, shouldSkipSpawnDirective, consumePendingSpawnDirective, __setPendingSpawnDirectiveForTesting, hasPendingSpawnDirective, getPendingSpawnDirective, getPendingSpawnFocusIds, shouldSuppressRefireForPendingSpawn, type PendingSpawnDirective, } from './directive/directive-queue.js';
17
- /** Assembled directive content paired with its per-source attribution manifest. */
18
- export interface AssembledDirective {
19
- content: string;
20
- manifest: AssemblyManifestEntry[];
21
- }
22
- /**
23
- * Assemble directive content from a StageDirective's recipe and prompt.
24
- * Shared by both inject and spawn modes, and by focus-executor for
25
- * initial spawn with a stage directive.
26
- */
27
- export declare function assembleDirectiveContent(config: DaemonConfig, focusId: string, directive: StageDirective, worktreePath: string | null): Promise<string>;
28
- /**
29
- * Assemble directive content AND return the assembly manifest (one entry per
30
- * recipe source). The composed `content` is identical to
31
- * assembleDirectiveContent; the manifest lets the spawn path persist what
32
- * context was injected. The manifest covers ONLY the assembly recipe -- the
33
- * static directive.prompt / tool guidance are not assembly sources.
34
- */
35
- export declare function assembleDirectiveContentWithManifest(config: DaemonConfig, focusId: string, directive: StageDirective, worktreePath: string | null): Promise<AssembledDirective>;
36
- /**
37
- * Resolve the execution mode a directive should dispatch under.
38
- *
39
- * Pure + exported for testing. The rule:
40
- * - A valid mode ('inject' | 'spawn') passes through unchanged.
41
- * - A review-lineage directive whose execution is missing/invalid defaults
42
- * to 'spawn'. Review always spawns a fresh team, so 'spawn' is the only
43
- * sensible mode for that lineage; defaulting here self-heals malformed or
44
- * seed-drifted review directives (e.g. the focus 'review' stage whose
45
- * agent_directive lost its execution field -- see the backfill migration)
46
- * so the review-spawn path can no longer be silently stranded.
47
- * - Anything else is UNRESOLVABLE (returns null). The caller treats null as
48
- * a fail-loud condition (throw -> escalate + loop trigger) rather than a
49
- * silent no-op.
50
- *
51
- * Note: a review-lineage directive defaults to spawn even for a non-empty but
52
- * unrecognized execution value -- review is always spawnable, so we self-heal
53
- * rather than fail. Non-review lineages have no safe default and fail loud.
54
- */
55
- export declare function resolveDirectiveExecutionMode(execution: string | null | undefined, lineage: string): DirectiveExecutionMode | null;
56
- /**
57
- * Execute a stage directive for a focus.
58
- *
59
- * inject mode: sends /compact + assembled context + prompt to the active team's stdin.
60
- * spawn mode: terminates the current team, assembles directive content, stores for respawn.
61
- *
62
- * When the directive's execution mode cannot be resolved to a valid mode
63
- * (see resolveDirectiveExecutionMode), this THROWS instead of silently
64
- * no-oping. The throw propagates through runDirectiveWithRetry in
65
- * checkDirectives, which escalates and emits a loop trigger -- so a malformed
66
- * directive surfaces a signal instead of stranding the focus.
67
- *
68
- * Exported for testing.
69
- */
70
- export declare function executeDirective(config: DaemonConfig, focusId: string, directive: StageDirective, focusWorkflowStageId: string, stageName?: string): Promise<void>;
71
- /**
72
- * Inject mode: send /compact + assembled context + prompt to the active team's stdin.
73
- */
74
- export declare function executeInjectDirective(config: DaemonConfig, focusId: string, directive: StageDirective, sessionType?: 'coding' | 'review', spec?: LineageSpec): Promise<void>;
75
- /**
76
- * Decide which workflow stage name a focus should be in.
77
- *
78
- * Pure helper, exported for testing. The selection rule is:
79
- * 1. If `focus.stage` is one of the new lifecycle stage names
80
- * (`queued`/`verify`/`review`/`close_loop`/`done`), use it directly.
81
- * The denormalized stage is the authoritative signal under the new
82
- * workflow.
83
- * 2. Otherwise, fall back to the legacy phase derived from the delivery
84
- * aggregate (kickoff/coding/verifying/reviewing/winding_down/blocked).
85
- *
86
- * Note: `review_requested_at` is still read by the legacy derivation for
87
- * back-compat -- but on the new lifecycle path the `review` stage transition
88
- * is driven by writes to `product_focuses.stage`, not by writes to
89
- * `review_requested_at`. This is the Issue 1 contract.
90
- */
91
- export declare function resolveFocusStageName(input: {
92
- focusStage: string | null | undefined;
93
- deliveries: Array<{
94
- executionStatus: string | null;
95
- }>;
96
- reviewRequestedAt: string | null;
97
- }): string;
98
- /**
99
- * Decide whether to re-fire a focus's review-stage directive even though the
100
- * edge-trigger (lastProcessedStages) already marked the stage processed.
4
+ * "What happens when a stage changes" reads from here: checkDirectives
5
+ * (called from the daemon poll loop) walks active focuses, syncs each
6
+ * focus's workflow stage, and edge-triggers the stage's agent_directive.
7
+ * The real logic lives in focused modules under directive/:
101
8
  *
102
- * The edge-trigger fires a stage directive exactly once per stage entry. For
103
- * the review stage that is normally correct -- a clean review completes, clears
104
- * review_requested_at, and the focus leaves the review phase. But if the review
105
- * team never spawned or was killed (e.g. a lifecycle SIGTERM) before routing,
106
- * the focus stays in the review stage with review_requested_at still set and the
107
- * directive never re-fires: a silent stuck focus (the founding bug of this focus).
9
+ * - directive/phase-sync.ts stage detection + phase sync + transition triggers
10
+ * - directive/directive-assembly.ts assembly of directive content (recipe + prompt + tools)
11
+ * - directive/directive-dispatch.ts inject-to-stdin / spawn-queue execution + bounded retry
12
+ * - directive/close-loop-stage.ts close_loop stage dispatcher (bookkeeper + sweep)
13
+ * - directive/stage-tracker.ts lastProcessedStages map + accessors
14
+ * - directive/directive-queue.ts pendingSpawnDirectives map + identity/guard helpers
108
15
  *
109
- * A focus STILL in the review stage with review_requested_at set is provably
110
- * stranded -- any completed review clears review_requested_at and moves the
111
- * phase. So when no review team is running, re-firing the directive is the
112
- * self-healing recovery: it respawns the review team. Once a team is running the
113
- * active-team guard suppresses the re-fire, and a successful review auto-approves
114
- * and leaves the stage -- so the re-fire is bounded, not a per-poll spin.
115
- *
116
- * Pure and exported for unit testing.
117
- */
118
- export declare function shouldRefireStrandedReview(input: {
119
- stageName: string | undefined;
120
- reviewRequestedAt: string | null;
121
- hasActiveTeam: boolean;
122
- }): boolean;
123
- /**
124
- * Synchronize `product_focuses.current_workflow_stage_id` with the focus's
125
- * authoritative stage. The authoritative stage is taken from `focus.stage`
126
- * when it names one of the new lifecycle stages (Issue 1); otherwise the
127
- * legacy delivery-aggregate phase derivation applies.
128
- *
129
- * Returns the stage ID the focus should be in (post-sync). Falls back to
130
- * the recorded stage id on error so callers don't have to handle a third
131
- * "unknown" state.
132
- */
133
- export declare function syncFocusPhase(focus: {
134
- focus_id: string;
135
- current_workflow_stage_id: string | null;
136
- review_requested_at: string | null;
137
- /**
138
- * Denormalized lifecycle stage from product_focuses.stage. Optional for
139
- * back-compat with old API responses; absence is treated as "fall back to
140
- * the legacy phase derivation".
141
- */
142
- stage?: string | null;
143
- }): Promise<string | null>;
144
- /**
145
- * Result of a bounded-retry attempt to run a directive. The retry is on
146
- * ANY thrown error (assembly resolver throws, fetch failures, Supabase
147
- * timeouts) -- broader than `withRetry` from daemon-core, which classifies
148
- * by error type. Transient failures during directive execution are not
149
- * always classified as network errors, but they're still worth retrying
150
- * before treating as permanent.
16
+ * This module RE-EXPORTS the full prior public surface so existing importers
17
+ * (listener, focus-executor, spawner/spawn-team, completion/team-completion,
18
+ * tests) are unaffected.
151
19
  */
152
- export interface DirectiveRunResult {
153
- /** Whether the directive ran to completion within the retry bound. */
154
- ok: boolean;
155
- /** Number of attempts made (1 = first attempt succeeded). */
156
- attempts: number;
157
- /** Last error if the retry bound was exhausted, null on success. */
158
- error: Error | null;
159
- }
160
- export interface RunDirectiveOptions {
161
- maxAttempts?: number;
162
- baseDelayMs?: number;
163
- label: string;
164
- /** Sleep implementation -- override in tests to avoid real delays. */
165
- sleep?: (ms: number) => Promise<void>;
166
- /** Called once per failed attempt before the backoff sleep. */
167
- onAttemptFailed?: (attempt: number, error: Error) => void;
168
- }
169
- /**
170
- * Run a directive function with bounded retry and exponential backoff.
171
- * Returns a result tuple instead of throwing so the caller can decide
172
- * whether to escalate or continue.
173
- */
174
- export declare function runDirectiveWithRetry(fn: () => Promise<void>, options: RunDirectiveOptions): Promise<DirectiveRunResult>;
175
- /**
176
- * Escalate when bounded retry of a stage directive is exhausted.
177
- *
178
- * Visible signal so operators can find which focus + stage failed and
179
- * why, instead of a buried console.warn. Mirrors escalatePlanningFailure
180
- * from focus-completion-event.ts.
181
- */
182
- export declare function escalateDirectiveFailure(params: {
183
- organizationId: string;
184
- sessionId: string;
185
- focusId: string;
186
- focusName: string;
187
- stageName: string | undefined;
188
- error: Error;
189
- attempts: number;
190
- }, deps?: {
191
- createEscalation: typeof createEscalation;
192
- }): Promise<void>;
193
- /** Test helper: clear the bookkeeper-spawned set. */
194
- export declare function __resetCloseLoopStateForTesting(): void;
195
- /**
196
- * Inspect open escalations and return the set of injection ids that have
197
- * an active `injection_unverified` escalation (status pending or
198
- * in_review). Used by the close_loop dispatcher to classify "escalated"
199
- * injections as terminal.
200
- *
201
- * The `metadata.injection_id` field is set by the bookkeeper persona when
202
- * filing the escalation -- see the close_loop directive prompt.
203
- */
204
- export declare function getOpenInjectionUnverifiedEscalationIds(): Promise<Set<string>>;
205
- /**
206
- * Dispatch the close_loop stage for one focus.
207
- *
208
- * Reads the focus's anchored deliveries + injection statuses + open
209
- * escalations, then runs the pure `decideCloseLoop` to determine whether
210
- * to short-circuit, spawn a bookkeeper, advance to done, or hold.
211
- *
212
- * Returns the decision so the caller (or a test) can log/assert.
213
- *
214
- * Idempotent across poll cycles -- the `closeLoopBookkeeperSpawned` set
215
- * ensures the bookkeeper is spawned at most once per focus visit to
216
- * close_loop. Tests reset this via `__resetCloseLoopStateForTesting`.
217
- */
218
- export declare function dispatchCloseLoopStage(config: DaemonConfig, focus: {
219
- focus_id: string;
220
- focus_name: string;
221
- }): Promise<CloseLoopDecision>;
222
- /**
223
- * Pure helper exported for tests: build the close_loop directive and verify
224
- * it carries the expected assembly + model. The buildCloseLoopDirective
225
- * function in close-loop-dispatcher.ts already does this; this is a
226
- * dispatcher-side smoke export so the tests can grep through it.
227
- */
228
- export declare function getCloseLoopDirectiveForTesting(): StageDirective;
20
+ import type { DaemonConfig } from './types.js';
21
+ export { seedLastProcessedStage, getLastProcessedStages } from './directive/stage-tracker.js';
22
+ export { computeDirectiveHash, SPAWN_GUARD_WINDOW_MS, shouldSkipSpawnDirective, consumePendingSpawnDirective, __setPendingSpawnDirectiveForTesting, hasPendingSpawnDirective, getPendingSpawnDirective, getPendingSpawnFocusIds, shouldSuppressRefireForPendingSpawn, type PendingSpawnDirective, } from './directive/directive-queue.js';
23
+ export { type AssembledDirective, assembleDirectiveContent, assembleDirectiveContentWithManifest, } from './directive/directive-assembly.js';
24
+ export { fireFocusTransitionTriggers, resolveFocusStageName, shouldRefireStrandedReview, syncFocusPhase, } from './directive/phase-sync.js';
25
+ export { resolveDirectiveExecutionMode, executeDirective, executeInjectDirective, type DirectiveRunResult, type RunDirectiveOptions, runDirectiveWithRetry, escalateDirectiveFailure, } from './directive/directive-dispatch.js';
26
+ export { __resetCloseLoopStateForTesting, getOpenInjectionUnverifiedEscalationIds, dispatchCloseLoopStage, getCloseLoopDirectiveForTesting, } from './directive/close-loop-stage.js';
229
27
  /**
230
28
  * Check all active focuses for stage changes with directives.
231
29
  *
@@ -1 +1 @@
1
- {"version":3,"file":"directive-executor.d.ts","sourceRoot":"","sources":["../src/directive-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEvF,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,yBAAyB,CAAC;AACjC,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAU5E,OAAO,EAML,KAAK,iBAAiB,EAEvB,MAAM,4BAA4B,CAAC;AAWpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AASvD,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAe9F,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,4BAA4B,EAC5B,oCAAoC,EACpC,wBAAwB,EACxB,wBAAwB,EACxB,uBAAuB,EACvB,mCAAmC,EACnC,KAAK,qBAAqB,GAC3B,MAAM,gCAAgC,CAAC;AAIxC,mFAAmF;AACnF,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,qBAAqB,EAAE,CAAC;CACnC;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,cAAc,EACzB,YAAY,EAAE,MAAM,GAAG,IAAI,GAC1B,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED;;;;;;GAMG;AACH,wBAAsB,oCAAoC,CACxD,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,cAAc,EACzB,YAAY,EAAE,MAAM,GAAG,IAAI,GAC1B,OAAO,CAAC,kBAAkB,CAAC,CAiD7B;AAID;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACpC,OAAO,EAAE,MAAM,GACd,sBAAsB,GAAG,IAAI,CAI/B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,cAAc,EACzB,oBAAoB,EAAE,MAAM,EAC5B,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAiCf;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,cAAc,EACzB,WAAW,GAAE,QAAQ,GAAG,QAAmB,EAC3C,IAAI,GAAE,WAA+E,GACpF,OAAO,CAAC,IAAI,CAAC,CAyEf;AA2JD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACtC,UAAU,EAAE,KAAK,CAAC;QAAE,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IACtD,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,GAAG,MAAM,CAQT;AASD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,aAAa,EAAE,OAAO,CAAC;CACxB,GAAG,OAAO,CAKV;AAED;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmCzB;AAID;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC,sEAAsE;IACtE,EAAE,EAAE,OAAO,CAAC;IACZ,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,+DAA+D;IAC/D,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAC3D;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EACvB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CAuB7B;AAED;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE;IACN,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB,EACD,IAAI,GAAE;IAAE,gBAAgB,EAAE,OAAO,gBAAgB,CAAA;CAAyB,GACzE,OAAO,CAAC,IAAI,CAAC,CAsCf;AAkBD,qDAAqD;AACrD,wBAAgB,+BAA+B,IAAI,IAAI,CAEtD;AAED;;;;;;;;GAQG;AACH,wBAAsB,uCAAuC,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAWpF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC9C,OAAO,CAAC,iBAAiB,CAAC,CAyJ5B;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,IAAI,cAAc,CAEhE;AAID;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA0LzE"}
1
+ {"version":3,"file":"directive-executor.d.ts","sourceRoot":"","sources":["../src/directive-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA+B/C,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAC9F,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,4BAA4B,EAC5B,oCAAoC,EACpC,wBAAwB,EACxB,wBAAwB,EACxB,uBAAuB,EACvB,mCAAmC,EACnC,KAAK,qBAAqB,GAC3B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,KAAK,kBAAkB,EACvB,wBAAwB,EACxB,oCAAoC,GACrC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,2BAA2B,EAC3B,qBAAqB,EACrB,0BAA0B,EAC1B,cAAc,GACf,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,6BAA6B,EAC7B,gBAAgB,EAChB,sBAAsB,EACtB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,+BAA+B,EAC/B,uCAAuC,EACvC,sBAAsB,EACtB,+BAA+B,GAChC,MAAM,iCAAiC,CAAC;AAIzC;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA0LzE"}