@telora/daemon 0.21.83 → 0.21.134

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 (267) hide show
  1. package/build-info.json +10 -3
  2. package/dist/audit/audit-hooks.d.ts +106 -0
  3. package/dist/audit/audit-hooks.d.ts.map +1 -1
  4. package/dist/audit/audit-hooks.js +149 -17
  5. package/dist/audit/audit-hooks.js.map +1 -1
  6. package/dist/ci/ci-sensor-loop.d.ts +6 -0
  7. package/dist/ci/ci-sensor-loop.d.ts.map +1 -1
  8. package/dist/ci/ci-sensor-loop.js +50 -3
  9. package/dist/ci/ci-sensor-loop.js.map +1 -1
  10. package/dist/ci/ci-status.d.ts +63 -11
  11. package/dist/ci/ci-status.d.ts.map +1 -1
  12. package/dist/ci/ci-status.js +94 -27
  13. package/dist/ci/ci-status.js.map +1 -1
  14. package/dist/completion/coverage-drift-state.d.ts +29 -2
  15. package/dist/completion/coverage-drift-state.d.ts.map +1 -1
  16. package/dist/completion/coverage-drift-state.js +42 -2
  17. package/dist/completion/coverage-drift-state.js.map +1 -1
  18. package/dist/completion/coverage-stabilized.d.ts +58 -0
  19. package/dist/completion/coverage-stabilized.d.ts.map +1 -0
  20. package/dist/completion/coverage-stabilized.js +84 -0
  21. package/dist/completion/coverage-stabilized.js.map +1 -0
  22. package/dist/completion/delivery-advancement-guard.d.ts +21 -0
  23. package/dist/completion/delivery-advancement-guard.d.ts.map +1 -1
  24. package/dist/completion/delivery-advancement-guard.js +31 -3
  25. package/dist/completion/delivery-advancement-guard.js.map +1 -1
  26. package/dist/completion/event-escalations.d.ts +15 -0
  27. package/dist/completion/event-escalations.d.ts.map +1 -1
  28. package/dist/completion/event-escalations.js +42 -4
  29. package/dist/completion/event-escalations.js.map +1 -1
  30. package/dist/completion/event-phases.d.ts.map +1 -1
  31. package/dist/completion/event-phases.js +10 -5
  32. package/dist/completion/event-phases.js.map +1 -1
  33. package/dist/completion/machine-remediable-demotion.d.ts +74 -0
  34. package/dist/completion/machine-remediable-demotion.d.ts.map +1 -0
  35. package/dist/completion/machine-remediable-demotion.js +147 -0
  36. package/dist/completion/machine-remediable-demotion.js.map +1 -0
  37. package/dist/completion/review-exit-escalations.d.ts +36 -1
  38. package/dist/completion/review-exit-escalations.d.ts.map +1 -1
  39. package/dist/completion/review-exit-escalations.js +81 -0
  40. package/dist/completion/review-exit-escalations.js.map +1 -1
  41. package/dist/completion/review-exit-phase.d.ts +4 -2
  42. package/dist/completion/review-exit-phase.d.ts.map +1 -1
  43. package/dist/completion/review-exit-phase.js +49 -54
  44. package/dist/completion/review-exit-phase.js.map +1 -1
  45. package/dist/completion/settle-injection-sweep.d.ts +55 -0
  46. package/dist/completion/settle-injection-sweep.d.ts.map +1 -0
  47. package/dist/completion/settle-injection-sweep.js +88 -0
  48. package/dist/completion/settle-injection-sweep.js.map +1 -0
  49. package/dist/completion/state-cascade.d.ts.map +1 -1
  50. package/dist/completion/state-cascade.js +41 -0
  51. package/dist/completion/state-cascade.js.map +1 -1
  52. package/dist/completion/status-advance-phase.d.ts.map +1 -1
  53. package/dist/completion/status-advance-phase.js +28 -30
  54. package/dist/completion/status-advance-phase.js.map +1 -1
  55. package/dist/completion/team-lifecycle.d.ts +42 -0
  56. package/dist/completion/team-lifecycle.d.ts.map +1 -1
  57. package/dist/completion/team-lifecycle.js +79 -2
  58. package/dist/completion/team-lifecycle.js.map +1 -1
  59. package/dist/delivery/delivery-lifecycle.d.ts +19 -33
  60. package/dist/delivery/delivery-lifecycle.d.ts.map +1 -1
  61. package/dist/delivery/delivery-lifecycle.js +26 -160
  62. package/dist/delivery/delivery-lifecycle.js.map +1 -1
  63. package/dist/delivery/delivery-merge-ops.d.ts +46 -0
  64. package/dist/delivery/delivery-merge-ops.d.ts.map +1 -0
  65. package/dist/delivery/delivery-merge-ops.js +154 -0
  66. package/dist/delivery/delivery-merge-ops.js.map +1 -0
  67. package/dist/delivery/delivery-reconciler-apply.d.ts +108 -66
  68. package/dist/delivery/delivery-reconciler-apply.d.ts.map +1 -1
  69. package/dist/delivery/delivery-reconciler-apply.js +87 -61
  70. package/dist/delivery/delivery-reconciler-apply.js.map +1 -1
  71. package/dist/delivery/delivery-reconciler.d.ts +7 -2
  72. package/dist/delivery/delivery-reconciler.d.ts.map +1 -1
  73. package/dist/delivery/delivery-reconciler.js +34 -5
  74. package/dist/delivery/delivery-reconciler.js.map +1 -1
  75. package/dist/delivery/external-hold-surface.d.ts +32 -0
  76. package/dist/delivery/external-hold-surface.d.ts.map +1 -0
  77. package/dist/delivery/external-hold-surface.js +67 -0
  78. package/dist/delivery/external-hold-surface.js.map +1 -0
  79. package/dist/delivery/external-hold.d.ts +38 -0
  80. package/dist/delivery/external-hold.d.ts.map +1 -1
  81. package/dist/delivery/external-hold.js +69 -6
  82. package/dist/delivery/external-hold.js.map +1 -1
  83. package/dist/delivery/operator-hold.d.ts +1 -2
  84. package/dist/delivery/operator-hold.d.ts.map +1 -1
  85. package/dist/delivery/operator-hold.js +1 -2
  86. package/dist/delivery/operator-hold.js.map +1 -1
  87. package/dist/delivery/paused-revival.d.ts +140 -0
  88. package/dist/delivery/paused-revival.d.ts.map +1 -0
  89. package/dist/delivery/paused-revival.js +229 -0
  90. package/dist/delivery/paused-revival.js.map +1 -0
  91. package/dist/delivery/wait-reachability.d.ts +149 -0
  92. package/dist/delivery/wait-reachability.d.ts.map +1 -0
  93. package/dist/delivery/wait-reachability.js +193 -0
  94. package/dist/delivery/wait-reachability.js.map +1 -0
  95. package/dist/directive/close-loop-dispatcher.d.ts +16 -263
  96. package/dist/directive/close-loop-dispatcher.d.ts.map +1 -1
  97. package/dist/directive/close-loop-dispatcher.js +21 -259
  98. package/dist/directive/close-loop-dispatcher.js.map +1 -1
  99. package/dist/directive/directive-dispatch.d.ts +19 -0
  100. package/dist/directive/directive-dispatch.d.ts.map +1 -1
  101. package/dist/directive/directive-dispatch.js +18 -0
  102. package/dist/directive/directive-dispatch.js.map +1 -1
  103. package/dist/directive/directive-executor.d.ts +1 -3
  104. package/dist/directive/directive-executor.d.ts.map +1 -1
  105. package/dist/directive/directive-executor.js +23 -21
  106. package/dist/directive/directive-executor.js.map +1 -1
  107. package/dist/directive/phase-sync.d.ts +28 -15
  108. package/dist/directive/phase-sync.d.ts.map +1 -1
  109. package/dist/directive/phase-sync.js +28 -36
  110. package/dist/directive/phase-sync.js.map +1 -1
  111. package/dist/directive/resolver-dispatch.d.ts +19 -92
  112. package/dist/directive/resolver-dispatch.d.ts.map +1 -1
  113. package/dist/directive/resolver-dispatch.js +19 -65
  114. package/dist/directive/resolver-dispatch.js.map +1 -1
  115. package/dist/focus/focus-engine.d.ts.map +1 -1
  116. package/dist/focus/focus-engine.js +26 -0
  117. package/dist/focus/focus-engine.js.map +1 -1
  118. package/dist/focus/focus-executor.d.ts.map +1 -1
  119. package/dist/focus/focus-executor.js +290 -256
  120. package/dist/focus/focus-executor.js.map +1 -1
  121. package/dist/focus/focus-loop-registry.d.ts.map +1 -1
  122. package/dist/focus/focus-loop-registry.js +43 -1
  123. package/dist/focus/focus-loop-registry.js.map +1 -1
  124. package/dist/focus/focus-respawn-guard.d.ts.map +1 -1
  125. package/dist/focus/focus-respawn-guard.js +11 -2
  126. package/dist/focus/focus-respawn-guard.js.map +1 -1
  127. package/dist/focus/focus-team-state.d.ts +11 -0
  128. package/dist/focus/focus-team-state.d.ts.map +1 -1
  129. package/dist/focus/focus-team-state.js +17 -0
  130. package/dist/focus/focus-team-state.js.map +1 -1
  131. package/dist/focus/listener-auto-advance.d.ts +13 -1
  132. package/dist/focus/listener-auto-advance.d.ts.map +1 -1
  133. package/dist/focus/listener-auto-advance.js +112 -76
  134. package/dist/focus/listener-auto-advance.js.map +1 -1
  135. package/dist/focus/listener.d.ts.map +1 -1
  136. package/dist/focus/listener.js +141 -75
  137. package/dist/focus/listener.js.map +1 -1
  138. package/dist/focus/tick-deadline.d.ts +55 -0
  139. package/dist/focus/tick-deadline.d.ts.map +1 -0
  140. package/dist/focus/tick-deadline.js +91 -0
  141. package/dist/focus/tick-deadline.js.map +1 -0
  142. package/dist/focus-stage-lifecycle/index.d.ts +18 -25
  143. package/dist/focus-stage-lifecycle/index.d.ts.map +1 -1
  144. package/dist/focus-stage-lifecycle/index.js +26 -38
  145. package/dist/focus-stage-lifecycle/index.js.map +1 -1
  146. package/dist/focus-stage-lifecycle/wedge-cause-arbiter.d.ts +52 -0
  147. package/dist/focus-stage-lifecycle/wedge-cause-arbiter.d.ts.map +1 -0
  148. package/dist/focus-stage-lifecycle/wedge-cause-arbiter.js +94 -0
  149. package/dist/focus-stage-lifecycle/wedge-cause-arbiter.js.map +1 -0
  150. package/dist/focus-stage-lifecycle/wedge-watchdog.d.ts +18 -1
  151. package/dist/focus-stage-lifecycle/wedge-watchdog.d.ts.map +1 -1
  152. package/dist/focus-stage-lifecycle/wedge-watchdog.js +57 -7
  153. package/dist/focus-stage-lifecycle/wedge-watchdog.js.map +1 -1
  154. package/dist/git/merge.d.ts.map +1 -1
  155. package/dist/git/merge.js +12 -3
  156. package/dist/git/merge.js.map +1 -1
  157. package/dist/guard/condition-evaluators.d.ts +9 -0
  158. package/dist/guard/condition-evaluators.d.ts.map +1 -1
  159. package/dist/guard/condition-evaluators.js +15 -0
  160. package/dist/guard/condition-evaluators.js.map +1 -1
  161. package/dist/guard/guard-evaluator.d.ts +17 -1
  162. package/dist/guard/guard-evaluator.d.ts.map +1 -1
  163. package/dist/guard/guard-evaluator.js +61 -2
  164. package/dist/guard/guard-evaluator.js.map +1 -1
  165. package/dist/guard/trigger-executor.d.ts +30 -18
  166. package/dist/guard/trigger-executor.d.ts.map +1 -1
  167. package/dist/guard/trigger-executor.js +55 -31
  168. package/dist/guard/trigger-executor.js.map +1 -1
  169. package/dist/prompt/team-prompt-base.d.ts +1 -1
  170. package/dist/prompt/team-prompt-base.d.ts.map +1 -1
  171. package/dist/prompt/team-prompt-base.js +1 -1
  172. package/dist/prompt/team-prompt-base.js.map +1 -1
  173. package/dist/prompt-sections/persona-sections.d.ts +0 -32
  174. package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
  175. package/dist/prompt-sections/persona-sections.js +19 -88
  176. package/dist/prompt-sections/persona-sections.js.map +1 -1
  177. package/dist/queries/deliveries.d.ts +33 -0
  178. package/dist/queries/deliveries.d.ts.map +1 -1
  179. package/dist/queries/deliveries.js +7 -0
  180. package/dist/queries/deliveries.js.map +1 -1
  181. package/dist/queries/focuses.d.ts +46 -0
  182. package/dist/queries/focuses.d.ts.map +1 -1
  183. package/dist/queries/focuses.js +60 -0
  184. package/dist/queries/focuses.js.map +1 -1
  185. package/dist/queries/guards.d.ts +10 -0
  186. package/dist/queries/guards.d.ts.map +1 -1
  187. package/dist/queries/guards.js +14 -1
  188. package/dist/queries/guards.js.map +1 -1
  189. package/dist/queries/issues.d.ts +65 -1
  190. package/dist/queries/issues.d.ts.map +1 -1
  191. package/dist/queries/issues.js +135 -2
  192. package/dist/queries/issues.js.map +1 -1
  193. package/dist/queries/schemas.d.ts +53 -0
  194. package/dist/queries/schemas.d.ts.map +1 -1
  195. package/dist/queries/schemas.js +38 -0
  196. package/dist/queries/schemas.js.map +1 -1
  197. package/dist/queries/verification.d.ts +5 -6
  198. package/dist/queries/verification.d.ts.map +1 -1
  199. package/dist/queries/verification.js +5 -6
  200. package/dist/queries/verification.js.map +1 -1
  201. package/dist/resolvers/loop-persona.d.ts +1 -11
  202. package/dist/resolvers/loop-persona.d.ts.map +1 -1
  203. package/dist/resolvers/loop-persona.js +2 -16
  204. package/dist/resolvers/loop-persona.js.map +1 -1
  205. package/dist/shell/heartbeat.d.ts +7 -0
  206. package/dist/shell/heartbeat.d.ts.map +1 -1
  207. package/dist/shell/heartbeat.js +1 -1
  208. package/dist/shell/heartbeat.js.map +1 -1
  209. package/dist/shell/unified-shell-provisioning.d.ts +40 -0
  210. package/dist/shell/unified-shell-provisioning.d.ts.map +1 -1
  211. package/dist/shell/unified-shell-provisioning.js +72 -0
  212. package/dist/shell/unified-shell-provisioning.js.map +1 -1
  213. package/dist/shell/unified-shell.d.ts.map +1 -1
  214. package/dist/shell/unified-shell.js +18 -1
  215. package/dist/shell/unified-shell.js.map +1 -1
  216. package/dist/spawn/helpers.d.ts.map +1 -1
  217. package/dist/spawn/helpers.js +6 -1
  218. package/dist/spawn/helpers.js.map +1 -1
  219. package/dist/spawn/process-spawn.d.ts.map +1 -1
  220. package/dist/spawn/process-spawn.js +7 -0
  221. package/dist/spawn/process-spawn.js.map +1 -1
  222. package/dist/spawn/respawn-cycle-escalation.d.ts +41 -0
  223. package/dist/spawn/respawn-cycle-escalation.d.ts.map +1 -0
  224. package/dist/spawn/respawn-cycle-escalation.js +83 -0
  225. package/dist/spawn/respawn-cycle-escalation.js.map +1 -0
  226. package/dist/spawn/spawn-cooldown.d.ts +119 -2
  227. package/dist/spawn/spawn-cooldown.d.ts.map +1 -1
  228. package/dist/spawn/spawn-cooldown.js +120 -10
  229. package/dist/spawn/spawn-cooldown.js.map +1 -1
  230. package/dist/spawn/spawn-decision.d.ts.map +1 -1
  231. package/dist/spawn/spawn-decision.js +33 -1
  232. package/dist/spawn/spawn-decision.js.map +1 -1
  233. package/dist/testing/fixtures/index.d.ts +64 -0
  234. package/dist/testing/fixtures/index.d.ts.map +1 -0
  235. package/dist/testing/fixtures/index.js +220 -0
  236. package/dist/testing/fixtures/index.js.map +1 -0
  237. package/dist/update/build-info.d.ts +1 -0
  238. package/dist/update/build-info.d.ts.map +1 -1
  239. package/dist/update/build-info.js +1 -1
  240. package/dist/update/build-info.js.map +1 -1
  241. package/dist/verify/stall-detector-config.d.ts +8 -0
  242. package/dist/verify/stall-detector-config.d.ts.map +1 -1
  243. package/dist/verify/stall-detector-config.js +40 -0
  244. package/dist/verify/stall-detector-config.js.map +1 -1
  245. package/dist/verify/stall-detectors.d.ts +57 -14
  246. package/dist/verify/stall-detectors.d.ts.map +1 -1
  247. package/dist/verify/stall-detectors.js +72 -55
  248. package/dist/verify/stall-detectors.js.map +1 -1
  249. package/dist/verify/verification-feedback.d.ts +3 -4
  250. package/dist/verify/verification-feedback.d.ts.map +1 -1
  251. package/dist/verify/verification-feedback.js +3 -12
  252. package/dist/verify/verification-feedback.js.map +1 -1
  253. package/dist/workflow/gate-failure-policy.d.ts +48 -0
  254. package/dist/workflow/gate-failure-policy.d.ts.map +1 -0
  255. package/dist/workflow/gate-failure-policy.js +57 -0
  256. package/dist/workflow/gate-failure-policy.js.map +1 -0
  257. package/dist/workflow/pipeline-config.d.ts +2 -2
  258. package/dist/workflow/pipeline-config.js +2 -2
  259. package/package.json +3 -3
  260. package/dist/directive/close-loop-stage.d.ts +0 -50
  261. package/dist/directive/close-loop-stage.d.ts.map +0 -1
  262. package/dist/directive/close-loop-stage.js +0 -210
  263. package/dist/directive/close-loop-stage.js.map +0 -1
  264. package/dist/focus-stage-lifecycle/review-convergence.d.ts +0 -133
  265. package/dist/focus-stage-lifecycle/review-convergence.d.ts.map +0 -1
  266. package/dist/focus-stage-lifecycle/review-convergence.js +0 -237
  267. package/dist/focus-stage-lifecycle/review-convergence.js.map +0 -1
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Shared test fixtures: typed builders for the daemon's core domain objects.
3
+ *
4
+ * Before this module, makeDelivery / makeIssue / makeConfig were copy-pasted
5
+ * into ~30 test files each, so a single field change to FocusDeliveryInfo /
6
+ * FocusIssueInfo / DaemonConfig meant editing dozens of files. These builders
7
+ * are the single source of truth; a type change is now one edit here.
8
+ *
9
+ * Each builder is a SUPERSET: it takes a `Partial<T>` of overrides spread last,
10
+ * so every existing call site keeps its specificity. The defaults below are the
11
+ * MAJORITY defaults observed across the suite; a file whose local builder used a
12
+ * different default keeps that default by passing it as an override (often via a
13
+ * thin file-local wrapper) so no test changes meaning.
14
+ *
15
+ * NOT included by design: `makeDeps` and `makeContext`. Those names collide
16
+ * across UNRELATED types -- makeDeps builds AdvanceDeliveryDeps /
17
+ * WorktreeStateDeps / SessionHealthDeps / various per-module `opts`; makeContext
18
+ * builds FocusTeamPromptContext / AssemblyContext / EvaluationContext. They are
19
+ * not one builder and cannot be merged into one typed function without a union
20
+ * or `any`, so they stay per-file. (See the delivery loop doc for the survey.)
21
+ */
22
+ import type { DaemonConfig, FocusDeliveryInfo, FocusIssueInfo, FocusExecutionConfig, FocusTeamState } from '../../types/index.js';
23
+ import type { VerificationDeps } from '../../verify/verification-deps.js';
24
+ import type { AutoInjectDeps } from '../../security/security-auto-inject.js';
25
+ import type { CompletionEventDeps } from '../../completion/event.js';
26
+ import type { PrdControllerDeps } from '../../prd/controller.js';
27
+ /**
28
+ * Build a FocusDeliveryInfo. Default executionStatus is 'queued' (the majority
29
+ * default across the suite); pass `{ executionStatus: ... }` for other states.
30
+ */
31
+ export declare function makeDelivery(overrides?: Partial<FocusDeliveryInfo>): FocusDeliveryInfo;
32
+ /**
33
+ * Build a FocusIssueInfo. Defaults to a To Do / Task issue on delivery-1.
34
+ */
35
+ export declare function makeIssue(overrides?: Partial<FocusIssueInfo>): FocusIssueInfo;
36
+ /**
37
+ * Build a DaemonConfig. Single-product, telemetry disabled, integration branch
38
+ * 'integration'. Pass overrides for product/branch/limits specifics.
39
+ */
40
+ export declare function makeConfig(overrides?: Partial<DaemonConfig>): DaemonConfig;
41
+ /**
42
+ * Build a FocusExecutionConfig. Defaults match DEFAULT_EXECUTION_CONFIG
43
+ * (maxWorkers 3, idle 30s, active 60s).
44
+ */
45
+ export declare function makeFocusExecutionConfig(overrides?: Partial<FocusExecutionConfig>): FocusExecutionConfig;
46
+ /**
47
+ * Build a FocusTeamState -- the wide in-memory team record. Centralizes the
48
+ * `makeTeam` / `makeTeamState` helpers that were copy-pasted into the
49
+ * focus-engine / watchdog / stall test files. Defaults to an executing coding
50
+ * team with no live process (leadPid/leadStdin null); pass overrides for the
51
+ * dimension under test. The many OPTIONAL clocks (lastActivityAt, shuttingDownAt,
52
+ * lastHandoffAt, toolActivityCount, ...) are omitted by default -- set them via
53
+ * the focus-team-state helpers or an override.
54
+ */
55
+ export declare function makeFocusTeamState(overrides?: Partial<FocusTeamState>): FocusTeamState;
56
+ /** Seed a VerificationDeps (verify/verification-engine runVerificationTick). */
57
+ export declare function makeVerificationDeps(overrides?: Partial<VerificationDeps>): Partial<VerificationDeps>;
58
+ /** Seed a CompletionEventDeps (completion/event handleCompletionEvent). */
59
+ export declare function makeCompletionEventDeps(overrides?: Partial<CompletionEventDeps>): Partial<CompletionEventDeps>;
60
+ /** Seed an AutoInjectDeps (security/security-auto-inject). */
61
+ export declare function makeAutoInjectDeps(overrides?: Partial<AutoInjectDeps>): Partial<AutoInjectDeps>;
62
+ /** Seed a PrdControllerDeps (prd/controller). */
63
+ export declare function makePrdControllerDeps(overrides?: Partial<PrdControllerDeps>): Partial<PrdControllerDeps>;
64
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/fixtures/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,cAAc,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE;;;GAGG;AACH,wBAAgB,YAAY,CAAC,SAAS,GAAE,OAAO,CAAC,iBAAiB,CAAM,GAAG,iBAAiB,CAmB1F;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,SAAS,GAAE,OAAO,CAAC,cAAc,CAAM,GAAG,cAAc,CAkBjF;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,SAAS,GAAE,OAAO,CAAC,YAAY,CAAM,GAAG,YAAY,CA0B9E;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,GAAE,OAAO,CAAC,oBAAoB,CAAM,GAC5C,oBAAoB,CAOtB;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,GAAE,OAAO,CAAC,cAAc,CAAM,GAAG,cAAc,CAoC1F;AAcD,gFAAgF;AAChF,wBAAgB,oBAAoB,CAClC,SAAS,GAAE,OAAO,CAAC,gBAAgB,CAAM,GACxC,OAAO,CAAC,gBAAgB,CAAC,CAe3B;AAED,2EAA2E;AAC3E,wBAAgB,uBAAuB,CACrC,SAAS,GAAE,OAAO,CAAC,mBAAmB,CAAM,GAC3C,OAAO,CAAC,mBAAmB,CAAC,CAS9B;AAED,8DAA8D;AAC9D,wBAAgB,kBAAkB,CAChC,SAAS,GAAE,OAAO,CAAC,cAAc,CAAM,GACtC,OAAO,CAAC,cAAc,CAAC,CAMzB;AAED,iDAAiD;AACjD,wBAAgB,qBAAqB,CACnC,SAAS,GAAE,OAAO,CAAC,iBAAiB,CAAM,GACzC,OAAO,CAAC,iBAAiB,CAAC,CAc5B"}
@@ -0,0 +1,220 @@
1
+ /**
2
+ * Shared test fixtures: typed builders for the daemon's core domain objects.
3
+ *
4
+ * Before this module, makeDelivery / makeIssue / makeConfig were copy-pasted
5
+ * into ~30 test files each, so a single field change to FocusDeliveryInfo /
6
+ * FocusIssueInfo / DaemonConfig meant editing dozens of files. These builders
7
+ * are the single source of truth; a type change is now one edit here.
8
+ *
9
+ * Each builder is a SUPERSET: it takes a `Partial<T>` of overrides spread last,
10
+ * so every existing call site keeps its specificity. The defaults below are the
11
+ * MAJORITY defaults observed across the suite; a file whose local builder used a
12
+ * different default keeps that default by passing it as an override (often via a
13
+ * thin file-local wrapper) so no test changes meaning.
14
+ *
15
+ * NOT included by design: `makeDeps` and `makeContext`. Those names collide
16
+ * across UNRELATED types -- makeDeps builds AdvanceDeliveryDeps /
17
+ * WorktreeStateDeps / SessionHealthDeps / various per-module `opts`; makeContext
18
+ * builds FocusTeamPromptContext / AssemblyContext / EvaluationContext. They are
19
+ * not one builder and cannot be merged into one typed function without a union
20
+ * or `any`, so they stay per-file. (See the delivery loop doc for the survey.)
21
+ */
22
+ /**
23
+ * Build a FocusDeliveryInfo. Default executionStatus is 'queued' (the majority
24
+ * default across the suite); pass `{ executionStatus: ... }` for other states.
25
+ */
26
+ export function makeDelivery(overrides = {}) {
27
+ return {
28
+ id: 'd1',
29
+ name: 'Test Delivery',
30
+ description: null,
31
+ priorityRank: 0,
32
+ executionStatus: 'queued',
33
+ acceptanceCriteria: null,
34
+ techContext: null,
35
+ currentWorkflowStageId: null,
36
+ mergeCommitSha: null,
37
+ gitState: null,
38
+ injectionId: null,
39
+ stageDescription: null,
40
+ updatedAt: null,
41
+ gateState: null,
42
+ iterationCount: 0,
43
+ ...overrides,
44
+ };
45
+ }
46
+ /**
47
+ * Build a FocusIssueInfo. Defaults to a To Do / Task issue on delivery-1.
48
+ */
49
+ export function makeIssue(overrides = {}) {
50
+ return {
51
+ id: 'issue-1',
52
+ key: 'TEL-1',
53
+ title: 'Test Issue',
54
+ description: null,
55
+ status: 'To Do',
56
+ issueType: 'Task',
57
+ priority: 'P1',
58
+ deliveryId: 'delivery-1',
59
+ parentIssueId: null,
60
+ context: null,
61
+ relevantFiles: null,
62
+ dependsOn: null,
63
+ createdByRoleId: null,
64
+ createdAt: null,
65
+ ...overrides,
66
+ };
67
+ }
68
+ /**
69
+ * Build a DaemonConfig. Single-product, telemetry disabled, integration branch
70
+ * 'integration'. Pass overrides for product/branch/limits specifics.
71
+ */
72
+ export function makeConfig(overrides = {}) {
73
+ return {
74
+ teloraUrl: 'http://localhost',
75
+ trackerId: 'test-tracker',
76
+ organizationId: 'org-1',
77
+ productId: 'product-1',
78
+ repoPath: '/tmp/test-repo',
79
+ worktreeDir: '/tmp/test-repo/.telora/worktrees',
80
+ integrationBranch: 'integration',
81
+ claudeCodePath: 'claude',
82
+ logDir: '/tmp/test-repo/.telora/logs',
83
+ maxTotalSessions: 5,
84
+ sessionTimeoutMs: 3600000,
85
+ tokenLimit: 200000,
86
+ costLimit: 10.0,
87
+ mergeLockTimeoutMs: 300000,
88
+ mergeLockContentionWarningMs: 30000,
89
+ policyFailureMode: 'fail-open',
90
+ logMaxAgeDays: 7,
91
+ logMaxTotalBytes: 1073741824,
92
+ logMaxFiles: 500,
93
+ telemetry: { enabled: false, port: 4318, flushIntervalMs: 5000, retentionDays: 30 },
94
+ lacuna: { enabled: false, host: '127.0.0.1', port: 8787, compressEnabled: true, readyTimeoutMs: 30000 },
95
+ products: [{ id: 'product-1', repoPath: '/tmp/test-repo' }],
96
+ ...overrides,
97
+ };
98
+ }
99
+ /**
100
+ * Build a FocusExecutionConfig. Defaults match DEFAULT_EXECUTION_CONFIG
101
+ * (maxWorkers 3, idle 30s, active 60s).
102
+ */
103
+ export function makeFocusExecutionConfig(overrides = {}) {
104
+ return {
105
+ maxWorkers: 3,
106
+ idlePollIntervalMs: 30000,
107
+ activePollIntervalMs: 60000,
108
+ ...overrides,
109
+ };
110
+ }
111
+ /**
112
+ * Build a FocusTeamState -- the wide in-memory team record. Centralizes the
113
+ * `makeTeam` / `makeTeamState` helpers that were copy-pasted into the
114
+ * focus-engine / watchdog / stall test files. Defaults to an executing coding
115
+ * team with no live process (leadPid/leadStdin null); pass overrides for the
116
+ * dimension under test. The many OPTIONAL clocks (lastActivityAt, shuttingDownAt,
117
+ * lastHandoffAt, toolActivityCount, ...) are omitted by default -- set them via
118
+ * the focus-team-state helpers or an override.
119
+ */
120
+ export function makeFocusTeamState(overrides = {}) {
121
+ return {
122
+ focusId: 'focus-1',
123
+ focusName: 'Test Focus',
124
+ roleId: 'role-1',
125
+ roleName: 'Developer',
126
+ organizationId: 'org-1',
127
+ productId: 'product-1',
128
+ executionConfig: makeFocusExecutionConfig(),
129
+ pipelineConfig: null,
130
+ startedAt: new Date(0),
131
+ phase: 'executing',
132
+ knownDeliveryIds: new Set(),
133
+ mergedDeliveryIds: new Set(),
134
+ planningPhase: false,
135
+ leadSessionId: null,
136
+ leadPid: null,
137
+ leadStdin: null,
138
+ branchName: 'agent/dev/test',
139
+ worktreePath: null,
140
+ integrationBaseSha: null,
141
+ reviewSpawnTip: null,
142
+ deliveryStageIds: new Map(),
143
+ resolvingMergeConflict: false,
144
+ shutdownReason: null,
145
+ readOnly: false,
146
+ sessionType: 'coding',
147
+ lineage: 'coding',
148
+ completionDetector: null,
149
+ claudeSessionId: null,
150
+ lastProgressSnapshot: null,
151
+ noProgressCycles: 0,
152
+ commitNudgeAttempts: 0,
153
+ lastConsumedDirectiveHash: null,
154
+ ...overrides,
155
+ };
156
+ }
157
+ // ---------------------------------------------------------------------------
158
+ // Wide *Deps builders.
159
+ //
160
+ // Each returns a Partial<XDeps> seeded with type-trivial no-op stubs (the
161
+ // DB/IO functions tests must neutralize + the scalar identity fields), spread
162
+ // with overrides. Partial -- NOT the full type -- because every consuming engine
163
+ // takes `Partial<XDeps>` and merges its own production `defaultDeps`: a test
164
+ // passes this seed, overrides the fields it asserts on, and the module fills the
165
+ // rest. Fields with complex non-void return shapes are left to the override /
166
+ // the module default rather than faked here.
167
+ // ---------------------------------------------------------------------------
168
+ /** Seed a VerificationDeps (verify/verification-engine runVerificationTick). */
169
+ export function makeVerificationDeps(overrides = {}) {
170
+ return {
171
+ organizationId: 'org-1',
172
+ integrationBranch: 'integration',
173
+ getPendingVerifications: async () => [],
174
+ recordOutcome: async () => { },
175
+ verifyInjection: async () => { },
176
+ fileEscalation: async () => { },
177
+ emitDriftProposal: async () => { },
178
+ emitInwardDrift: async () => { },
179
+ resolveCwd: () => '/tmp/test-repo',
180
+ getActiveFocuses: async () => [],
181
+ getFocusDeliveries: async () => [],
182
+ ...overrides,
183
+ };
184
+ }
185
+ /** Seed a CompletionEventDeps (completion/event handleCompletionEvent). */
186
+ export function makeCompletionEventDeps(overrides = {}) {
187
+ return {
188
+ getFocusDeliveries: async () => [],
189
+ getFocusIssues: async () => [],
190
+ createEscalation: async () => { },
191
+ terminateTeam: () => false,
192
+ hasOpenTeamFailureEscalation: async () => false,
193
+ ...overrides,
194
+ };
195
+ }
196
+ /** Seed an AutoInjectDeps (security/security-auto-inject). */
197
+ export function makeAutoInjectDeps(overrides = {}) {
198
+ return {
199
+ linkFinding: async () => { },
200
+ writeAudit: async () => { },
201
+ ...overrides,
202
+ };
203
+ }
204
+ /** Seed a PrdControllerDeps (prd/controller). */
205
+ export function makePrdControllerDeps(overrides = {}) {
206
+ return {
207
+ organizationId: 'org-1',
208
+ worktreeDir: '/tmp/test-repo/.telora/worktrees',
209
+ loadPrtGraph: async () => ({ nodes: [], edges: [] }),
210
+ markNodeCleared: async () => { },
211
+ armFocus: async () => { },
212
+ markPrdDone: async () => { },
213
+ resolveArmRoleId: async () => null,
214
+ loadPathways: async () => [],
215
+ commitPathway: async () => { },
216
+ fileEscalation: async () => { },
217
+ ...overrides,
218
+ };
219
+ }
220
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/testing/fixtures/index.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ export interface BuildInfo {
12
12
  builtAt: string;
13
13
  expectedMigrations: string[];
14
14
  }
15
+ export declare function defaultBuildInfoPath(): string;
15
16
  export declare function readBuildInfo(path?: string, reader?: (p: string) => string): BuildInfo;
16
17
  export declare function getExpectedMigrations(path?: string, reader?: (p: string) => string): string[];
17
18
  //# sourceMappingURL=build-info.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"build-info.d.ts","sourceRoot":"","sources":["../../src/update/build-info.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B;AAiBD,wBAAgB,aAAa,CAC3B,IAAI,GAAE,MAA+B,EACrC,MAAM,GAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAwC,GAC9D,SAAS,CAYX;AAED,wBAAgB,qBAAqB,CACnC,IAAI,CAAC,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,GAC7B,MAAM,EAAE,CAEV"}
1
+ {"version":3,"file":"build-info.d.ts","sourceRoot":"","sources":["../../src/update/build-info.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B;AAQD,wBAAgB,oBAAoB,IAAI,MAAM,CAO7C;AAED,wBAAgB,aAAa,CAC3B,IAAI,GAAE,MAA+B,EACrC,MAAM,GAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAwC,GAC9D,SAAS,CAYX;AAED,wBAAgB,qBAAqB,CACnC,IAAI,CAAC,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,GAC7B,MAAM,EAAE,CAEV"}
@@ -15,7 +15,7 @@ const EMPTY = {
15
15
  builtAt: '1970-01-01T00:00:00.000Z',
16
16
  expectedMigrations: [],
17
17
  };
18
- function defaultBuildInfoPath() {
18
+ export function defaultBuildInfoPath() {
19
19
  // packages/daemon/src/build-info.ts (source)
20
20
  // -> packages/daemon/build-info.json
21
21
  // packages/daemon/dist/build-info.js (compiled)
@@ -1 +1 @@
1
- {"version":3,"file":"build-info.js","sourceRoot":"","sources":["../../src/update/build-info.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQ7C,MAAM,KAAK,GAAc;IACvB,SAAS,EAAE,SAAS;IACpB,OAAO,EAAE,0BAA0B;IACnC,kBAAkB,EAAE,EAAE;CACvB,CAAC;AAEF,SAAS,oBAAoB;IAC3B,6CAA6C;IAC7C,uCAAuC;IACvC,gDAAgD;IAChD,uCAAuC;IACvC,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,OAAO,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,OAAe,oBAAoB,EAAE,EACrC,SAAgC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC;IAE/D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAuB,CAAC;QACrD,OAAO;YACL,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS;YAC9C,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO;YACxC,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,IAAI,EAAE;SACpD,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,IAAa,EACb,MAA8B;IAE9B,OAAO,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC;AACxD,CAAC"}
1
+ {"version":3,"file":"build-info.js","sourceRoot":"","sources":["../../src/update/build-info.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQ7C,MAAM,KAAK,GAAc;IACvB,SAAS,EAAE,SAAS;IACpB,OAAO,EAAE,0BAA0B;IACnC,kBAAkB,EAAE,EAAE;CACvB,CAAC;AAEF,MAAM,UAAU,oBAAoB;IAClC,6CAA6C;IAC7C,uCAAuC;IACvC,gDAAgD;IAChD,uCAAuC;IACvC,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,OAAO,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,OAAe,oBAAoB,EAAE,EACrC,SAAgC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC;IAE/D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAuB,CAAC;QACrD,OAAO;YACL,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS;YAC9C,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO;YACxC,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,IAAI,EAAE;SACpD,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,IAAa,EACb,MAA8B;IAE9B,OAAO,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC;AACxD,CAAC"}
@@ -16,4 +16,12 @@ export declare function resolveReviewWindowStaleHours(): number;
16
16
  export declare function resolveReviewCycleCap(): number;
17
17
  /** Resolve the idle-team stall threshold in hours (env override or default). */
18
18
  export declare function resolveIdleTeamStallHours(): number;
19
+ /** Resolve the review-exit hand-off cap (env override or default 3). */
20
+ export declare function resolveReviewHandoffCap(): number;
21
+ /** Resolve the review-liveness window in minutes (env override or default 15). */
22
+ export declare function resolveReviewLivenessWindowMinutes(): number;
23
+ /** Resolve the respawn-cycle max total duration in hours (env override or default 2). */
24
+ export declare function resolveRespawnCycleMaxHours(): number;
25
+ /** Resolve the respawn-cycle max cumulative teardown count (env override or default 12). */
26
+ export declare function resolveRespawnCycleMaxCount(): number;
19
27
  //# sourceMappingURL=stall-detector-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stall-detector-config.d.ts","sourceRoot":"","sources":["../../src/verify/stall-detector-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,uEAAuE;AACvE,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAED,wFAAwF;AACxF,wBAAgB,6BAA6B,IAAI,MAAM,CAEtD;AAED,0EAA0E;AAC1E,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,gFAAgF;AAChF,wBAAgB,yBAAyB,IAAI,MAAM,CAElD"}
1
+ {"version":3,"file":"stall-detector-config.d.ts","sourceRoot":"","sources":["../../src/verify/stall-detector-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAsBH,uEAAuE;AACvE,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAED,wFAAwF;AACxF,wBAAgB,6BAA6B,IAAI,MAAM,CAEtD;AAED,0EAA0E;AAC1E,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,gFAAgF;AAChF,wBAAgB,yBAAyB,IAAI,MAAM,CAElD;AASD,wEAAwE;AACxE,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED,kFAAkF;AAClF,wBAAgB,kCAAkC,IAAI,MAAM,CAE3D;AAED,yFAAyF;AACzF,wBAAgB,2BAA2B,IAAI,MAAM,CAEpD;AAED,4FAA4F;AAC5F,wBAAgB,2BAA2B,IAAI,MAAM,CAEpD"}
@@ -9,6 +9,24 @@
9
9
  * can no longer silently fall back to a default on a typo'd value.
10
10
  */
11
11
  import { loadEnvConfig } from '@telora/daemon-core';
12
+ /**
13
+ * Raw positive-number env read with a fallback default, for knobs whose canonical
14
+ * Zod + ENV_VAR_METADATA declaration IS in packages/daemon-core/src/env-config.ts
15
+ * but which the REGISTRY-INSTALLED daemon-core does not yet carry: the daemon
16
+ * compiles against the published dist, so loadEnvConfig() cannot see a freshly
17
+ * added field until a daemon-core republish + pin bump lands. These reads are
18
+ * allowlisted in scripts/lint-config.json under "env-reads" with that reason.
19
+ * Once daemon-core is republished + pinned, switch each caller to loadEnvConfig()
20
+ * and remove the allowlist entry (mirrors the TELORA_SHORTFALL_DISPOSITION_ATTEMPT_CAP
21
+ * precedent). Invalid (non-positive / non-numeric) values fall back to the default
22
+ * rather than throwing -- the loud-fail happens at loadEnvConfig once republished.
23
+ */
24
+ function parsePositive(raw, fallback) {
25
+ if (raw === undefined || raw === '')
26
+ return fallback;
27
+ const n = Number(raw);
28
+ return Number.isFinite(n) && n > 0 ? n : fallback;
29
+ }
12
30
  /** Resolve the verify_failed re-code cap (env override or default). */
13
31
  export function resolveVerifyFailedCap() {
14
32
  return loadEnvConfig().TELORA_VERIFY_FAILED_ITERATION_CAP;
@@ -25,4 +43,26 @@ export function resolveReviewCycleCap() {
25
43
  export function resolveIdleTeamStallHours() {
26
44
  return loadEnvConfig().TELORA_IDLE_TEAM_STALL_HOURS;
27
45
  }
46
+ // NOTE: the four resolvers below read process.env RAW (via rawPositiveNumber)
47
+ // rather than loadEnvConfig() because their knobs are PENDING a daemon-core
48
+ // republish (see rawPositiveNumber). The canonical declarations already live in
49
+ // packages/daemon-core/src/env-config.ts; switch these to loadEnvConfig() and
50
+ // drop the scripts/lint-config.json env-reads allowlist entries once daemon-core
51
+ // is republished + pinned.
52
+ /** Resolve the review-exit hand-off cap (env override or default 3). */
53
+ export function resolveReviewHandoffCap() {
54
+ return parsePositive(process.env.TELORA_REVIEW_HANDOFF_CAP, 3);
55
+ }
56
+ /** Resolve the review-liveness window in minutes (env override or default 15). */
57
+ export function resolveReviewLivenessWindowMinutes() {
58
+ return parsePositive(process.env.TELORA_REVIEW_LIVENESS_WINDOW_MINUTES, 15);
59
+ }
60
+ /** Resolve the respawn-cycle max total duration in hours (env override or default 2). */
61
+ export function resolveRespawnCycleMaxHours() {
62
+ return parsePositive(process.env.TELORA_RESPAWN_CYCLE_MAX_HOURS, 2);
63
+ }
64
+ /** Resolve the respawn-cycle max cumulative teardown count (env override or default 12). */
65
+ export function resolveRespawnCycleMaxCount() {
66
+ return parsePositive(process.env.TELORA_RESPAWN_CYCLE_MAX_COUNT, 12);
67
+ }
28
68
  //# sourceMappingURL=stall-detector-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stall-detector-config.js","sourceRoot":"","sources":["../../src/verify/stall-detector-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,uEAAuE;AACvE,MAAM,UAAU,sBAAsB;IACpC,OAAO,aAAa,EAAE,CAAC,kCAAkC,CAAC;AAC5D,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,6BAA6B;IAC3C,OAAO,aAAa,EAAE,CAAC,gCAAgC,CAAC;AAC1D,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,qBAAqB;IACnC,OAAO,aAAa,EAAE,CAAC,uBAAuB,CAAC;AACjD,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,yBAAyB;IACvC,OAAO,aAAa,EAAE,CAAC,4BAA4B,CAAC;AACtD,CAAC"}
1
+ {"version":3,"file":"stall-detector-config.js","sourceRoot":"","sources":["../../src/verify/stall-detector-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;;;;;;;;;GAWG;AACH,SAAS,aAAa,CAAC,GAAuB,EAAE,QAAgB;IAC9D,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IACrD,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACpD,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,sBAAsB;IACpC,OAAO,aAAa,EAAE,CAAC,kCAAkC,CAAC;AAC5D,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,6BAA6B;IAC3C,OAAO,aAAa,EAAE,CAAC,gCAAgC,CAAC;AAC1D,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,qBAAqB;IACnC,OAAO,aAAa,EAAE,CAAC,uBAAuB,CAAC;AACjD,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,yBAAyB;IACvC,OAAO,aAAa,EAAE,CAAC,4BAA4B,CAAC;AACtD,CAAC;AAED,8EAA8E;AAC9E,4EAA4E;AAC5E,gFAAgF;AAChF,8EAA8E;AAC9E,iFAAiF;AACjF,2BAA2B;AAE3B,wEAAwE;AACxE,MAAM,UAAU,uBAAuB;IACrC,OAAO,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,kCAAkC;IAChD,OAAO,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,2BAA2B;IACzC,OAAO,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,2BAA2B;IACzC,OAAO,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,EAAE,CAAC,CAAC;AACvE,CAAC"}
@@ -109,33 +109,76 @@ export declare function exceedsVerifyFailedCap(delivery: Pick<FocusDeliveryInfo,
109
109
  export declare function checkVerifyFailedCapForFocus(ctx: FocusStallContext, deliveries: FocusDeliveryInfo[], deps?: VerifyFailedCapDeps): Promise<void>;
110
110
  export interface ReviewWindowDeps {
111
111
  /**
112
- * File the review_window_stalled escalation through the cause-keyed idempotent
113
- * gate: at most one open row per focus, and a dismissed one keeps the same stale
114
- * review window silent (dismissal memory) until the focus's review state changes.
112
+ * Clear the focus's stale review window (review_requested_at = null). The
113
+ * daemon OWNS this act -- queries/focuses.ts clearReviewRequestedAt, already
114
+ * called from the review-exit paths -- so a stale window it detects is cleared
115
+ * by the daemon itself (TEL, delivery 7), not handed to an operator via an
116
+ * escalation that merely names `telora_product_focus update
117
+ * clearReviewRequest=true`. Injected for tests. Defaults to clearReviewRequestedAt.
115
118
  */
116
- fileEscalation: (params: FileEscalationIdempotentParams) => Promise<FileEscalationIdempotentResult>;
117
- /** Focus IDs that currently have an active REVIEW team. Defaults to live teams. */
119
+ clearReviewWindow: (focusId: string) => Promise<void>;
120
+ /** Focus IDs that currently have a REVIEW team PRESENT. Defaults to live teams. */
118
121
  activeReviewFocusIds: () => Set<string>;
122
+ /**
123
+ * The review team's per-team last-activity epoch ms, or null when nothing has
124
+ * been recorded yet. Presence alone is not liveness -- this distinguishes a
125
+ * review that is genuinely progressing from a respawn loop's idle-exiting
126
+ * teams. Defaults to the live per-team activity clock.
127
+ */
128
+ getReviewTeamLastActivityAt: (focusId: string) => number | null;
119
129
  /** Current epoch ms; injectable for tests. Defaults to Date.now. */
120
130
  now?: () => number;
121
131
  /** Override the staleness threshold (hours) for tests; defaults to env-config. */
122
132
  thresholdHours?: number;
133
+ /** Override the review-liveness window (minutes) for tests; defaults to env-config. */
134
+ livenessWindowMinutes?: number;
123
135
  }
124
136
  /** Focus IDs that currently have an active REVIEW team (live default). */
125
137
  export declare function activeReviewFocusIds(): Set<string>;
138
+ /**
139
+ * Pure decision: is a review GENUINELY active -- progressing, not merely present?
140
+ *
141
+ * Mere team presence is NOT liveness: a loop that respawns an idle review team
142
+ * every few minutes always has a team present, so presence taken as "a review is
143
+ * running" starves the very staleness escalation that exists to catch the loop.
144
+ * A review counts as genuinely active only when a team is present AND its
145
+ * per-team activity clock is fresh (last agent event within `livenessWindowMs`).
146
+ *
147
+ * A frozen clock (an idle-exiting respawn team) or a null clock (present but has
148
+ * produced no event) is NOT genuinely active. Treating null as not-active is safe
149
+ * because it only matters once review_requested_at is itself past the staleness
150
+ * threshold (isReviewWindowStale gates on that first): a just-spawned review is
151
+ * within the threshold and never trips, but a "review" that has produced zero
152
+ * events for hours is exactly the wedge. Mirrors the sibling team-idle detector's
153
+ * liveness-not-presence distinction. Exported for direct unit testing.
154
+ */
155
+ export declare function isReviewGenuinelyActive(hasReviewTeam: boolean, lastReviewActivityMs: number | null, nowMs: number, livenessWindowMs: number): boolean;
126
156
  /**
127
157
  * Pure decision: is this focus's review window stale? True when a
128
- * review_requested_at exists, is older than `thresholdMs`, and the focus has no
129
- * active review team. A completed review clears review_requested_at, so a
130
- * still-set timestamp older than the threshold with no active review team means
131
- * the review never ran (or never finished). Exported for direct unit testing.
158
+ * review_requested_at exists, is older than `thresholdMs`, and NO review is
159
+ * GENUINELY ACTIVE (progressing) on the focus. A completed review clears
160
+ * review_requested_at, so a still-set timestamp older than the threshold with no
161
+ * genuinely-active review means the review never ran, never finished, OR is stuck
162
+ * in a respawn loop whose idle-exiting teams never progress. The second argument
163
+ * is genuine liveness (isReviewGenuinelyActive), NOT mere team presence -- that is
164
+ * what stops the loop's own respawns from masking the stale window. Exported for
165
+ * direct unit testing.
132
166
  */
133
- export declare function isReviewWindowStale(reviewRequestedAt: string | null, hasActiveReview: boolean, nowMs: number, thresholdMs: number): boolean;
167
+ export declare function isReviewWindowStale(reviewRequestedAt: string | null, reviewGenuinelyActive: boolean, nowMs: number, thresholdMs: number): boolean;
134
168
  /**
135
- * Check ONE focus for a stale review window and file a review_window_stalled
136
- * escalation (needs_operator) -- at most one open per focus. The caller
137
- * (runCascadeChecks) passes the focus's review_requested_at, so this rides the
138
- * existing review-handling seam rather than fanning out its own focus scan.
169
+ * Check ONE focus for a stale review window and, when stale, CLEAR it -- the
170
+ * daemon owns the clearing act (clearReviewRequestedAt), so it does not file a
171
+ * needs_operator escalation that merely names the same operator MCP call
172
+ * (`clearReviewRequest=true`) it could perform itself (TEL, delivery 7). The
173
+ * caller (runCascadeChecks) passes the focus's review_requested_at, so this
174
+ * rides the existing review-handling seam rather than fanning out its own scan.
175
+ *
176
+ * Why clearing is the right autonomous act: a stale window (threshold exceeded,
177
+ * no genuinely-active review) means the review never ran or is stuck in a
178
+ * respawn loop. focus-phase.ts returns 'reviewing' while review_requested_at is
179
+ * set, so winding_down is unreachable until it clears. Clearing unblocks the
180
+ * phase; if a review genuinely still needs to run, the normal auto-review path
181
+ * re-opens the window -- self-healing on the same detector, never a human hold.
139
182
  */
140
183
  export declare function checkReviewWindowStaleForFocus(ctx: FocusStallContext, reviewRequestedAt: string | null, deps?: ReviewWindowDeps): Promise<void>;
141
184
  export interface IdleTeamStallDeps {
@@ -1 +1 @@
1
- {"version":3,"file":"stall-detectors.d.ts","sourceRoot":"","sources":["../../src/verify/stall-detectors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stall-detectors.d.ts","sourceRoot":"","sources":["../../src/verify/stall-detectors.ts"],"names":[],"mappings":"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"}