@telora/daemon 0.21.7 → 0.21.26

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 (168) hide show
  1. package/build-info.json +14 -3
  2. package/dist/audit-hooks.d.ts +62 -3
  3. package/dist/audit-hooks.d.ts.map +1 -1
  4. package/dist/audit-hooks.js +123 -3
  5. package/dist/audit-hooks.js.map +1 -1
  6. package/dist/completion/event.d.ts +1 -0
  7. package/dist/completion/event.d.ts.map +1 -1
  8. package/dist/completion/event.js.map +1 -1
  9. package/dist/completion/review-exit-phase.d.ts +12 -0
  10. package/dist/completion/review-exit-phase.d.ts.map +1 -1
  11. package/dist/completion/review-exit-phase.js +45 -10
  12. package/dist/completion/review-exit-phase.js.map +1 -1
  13. package/dist/completion/team-completion.d.ts.map +1 -1
  14. package/dist/completion/team-completion.js +6 -0
  15. package/dist/completion/team-completion.js.map +1 -1
  16. package/dist/completion/team-lifecycle.d.ts.map +1 -1
  17. package/dist/completion/team-lifecycle.js +2 -1
  18. package/dist/completion/team-lifecycle.js.map +1 -1
  19. package/dist/delivery-advance-block.d.ts +9 -1
  20. package/dist/delivery-advance-block.d.ts.map +1 -1
  21. package/dist/delivery-advance-block.js +37 -1
  22. package/dist/delivery-advance-block.js.map +1 -1
  23. package/dist/delivery-lifecycle.d.ts.map +1 -1
  24. package/dist/delivery-lifecycle.js +9 -0
  25. package/dist/delivery-lifecycle.js.map +1 -1
  26. package/dist/delivery-reconciler.d.ts +16 -0
  27. package/dist/delivery-reconciler.d.ts.map +1 -1
  28. package/dist/delivery-reconciler.js +12 -0
  29. package/dist/delivery-reconciler.js.map +1 -1
  30. package/dist/external-hold.d.ts +42 -0
  31. package/dist/external-hold.d.ts.map +1 -1
  32. package/dist/external-hold.js +85 -11
  33. package/dist/external-hold.js.map +1 -1
  34. package/dist/focus-engine.d.ts.map +1 -1
  35. package/dist/focus-engine.js +10 -1
  36. package/dist/focus-engine.js.map +1 -1
  37. package/dist/focus-executor.d.ts.map +1 -1
  38. package/dist/focus-executor.js +5 -0
  39. package/dist/focus-executor.js.map +1 -1
  40. package/dist/focus-lifecycle.d.ts.map +1 -1
  41. package/dist/focus-lifecycle.js +9 -11
  42. package/dist/focus-lifecycle.js.map +1 -1
  43. package/dist/focus-provisioning.d.ts.map +1 -1
  44. package/dist/focus-provisioning.js +9 -11
  45. package/dist/focus-provisioning.js.map +1 -1
  46. package/dist/focus-team-state.d.ts +23 -0
  47. package/dist/focus-team-state.d.ts.map +1 -1
  48. package/dist/focus-team-state.js +42 -0
  49. package/dist/focus-team-state.js.map +1 -1
  50. package/dist/git/merge.d.ts +24 -0
  51. package/dist/git/merge.d.ts.map +1 -1
  52. package/dist/git/merge.js +45 -5
  53. package/dist/git/merge.js.map +1 -1
  54. package/dist/git/types.d.ts +9 -0
  55. package/dist/git/types.d.ts.map +1 -1
  56. package/dist/git/types.js.map +1 -1
  57. package/dist/heartbeat.d.ts +53 -0
  58. package/dist/heartbeat.d.ts.map +1 -1
  59. package/dist/heartbeat.js +100 -7
  60. package/dist/heartbeat.js.map +1 -1
  61. package/dist/listener-auto-advance.d.ts.map +1 -1
  62. package/dist/listener-auto-advance.js +12 -2
  63. package/dist/listener-auto-advance.js.map +1 -1
  64. package/dist/nexus/escalation-bridge.d.ts +8 -0
  65. package/dist/nexus/escalation-bridge.d.ts.map +1 -1
  66. package/dist/nexus/escalation-bridge.js +8 -0
  67. package/dist/nexus/escalation-bridge.js.map +1 -1
  68. package/dist/nexus/return.d.ts +28 -2
  69. package/dist/nexus/return.d.ts.map +1 -1
  70. package/dist/nexus/return.js +53 -2
  71. package/dist/nexus/return.js.map +1 -1
  72. package/dist/output-monitor.d.ts.map +1 -1
  73. package/dist/output-monitor.js +14 -0
  74. package/dist/output-monitor.js.map +1 -1
  75. package/dist/prompt-sections/execution-sections.d.ts.map +1 -1
  76. package/dist/prompt-sections/execution-sections.js +7 -0
  77. package/dist/prompt-sections/execution-sections.js.map +1 -1
  78. package/dist/prompt-sections/persona-sections.d.ts +10 -0
  79. package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
  80. package/dist/prompt-sections/persona-sections.js +4 -2
  81. package/dist/prompt-sections/persona-sections.js.map +1 -1
  82. package/dist/prompt-sections/scoping-sections.d.ts.map +1 -1
  83. package/dist/prompt-sections/scoping-sections.js +8 -0
  84. package/dist/prompt-sections/scoping-sections.js.map +1 -1
  85. package/dist/queries/agent-resolvable-promotion.d.ts +17 -5
  86. package/dist/queries/agent-resolvable-promotion.d.ts.map +1 -1
  87. package/dist/queries/agent-resolvable-promotion.js +24 -10
  88. package/dist/queries/agent-resolvable-promotion.js.map +1 -1
  89. package/dist/queries/daemon-connection.d.ts +21 -1
  90. package/dist/queries/daemon-connection.d.ts.map +1 -1
  91. package/dist/queries/daemon-connection.js +4 -1
  92. package/dist/queries/daemon-connection.js.map +1 -1
  93. package/dist/queries/deliveries.d.ts +44 -12
  94. package/dist/queries/deliveries.d.ts.map +1 -1
  95. package/dist/queries/deliveries.js +32 -15
  96. package/dist/queries/deliveries.js.map +1 -1
  97. package/dist/queries/delivery-gate-state.d.ts +23 -0
  98. package/dist/queries/delivery-gate-state.d.ts.map +1 -1
  99. package/dist/queries/issues.d.ts.map +1 -1
  100. package/dist/queries/issues.js +6 -0
  101. package/dist/queries/issues.js.map +1 -1
  102. package/dist/queries/requests.d.ts +30 -0
  103. package/dist/queries/requests.d.ts.map +1 -0
  104. package/dist/queries/requests.js +32 -0
  105. package/dist/queries/requests.js.map +1 -0
  106. package/dist/resolvers/shared/git-diff.d.ts +32 -3
  107. package/dist/resolvers/shared/git-diff.d.ts.map +1 -1
  108. package/dist/resolvers/shared/git-diff.js +120 -16
  109. package/dist/resolvers/shared/git-diff.js.map +1 -1
  110. package/dist/retention-observation.d.ts +126 -0
  111. package/dist/retention-observation.d.ts.map +1 -0
  112. package/dist/retention-observation.js +143 -0
  113. package/dist/retention-observation.js.map +1 -0
  114. package/dist/spawn/prompt-assembly.d.ts +9 -0
  115. package/dist/spawn/prompt-assembly.d.ts.map +1 -1
  116. package/dist/spawn/prompt-assembly.js +2 -1
  117. package/dist/spawn/prompt-assembly.js.map +1 -1
  118. package/dist/spawn/worktree-session.d.ts.map +1 -1
  119. package/dist/spawn/worktree-session.js +13 -14
  120. package/dist/spawn/worktree-session.js.map +1 -1
  121. package/dist/stall-detector-config.d.ts +2 -0
  122. package/dist/stall-detector-config.d.ts.map +1 -1
  123. package/dist/stall-detector-config.js +4 -0
  124. package/dist/stall-detector-config.js.map +1 -1
  125. package/dist/stall-detectors.d.ts +55 -0
  126. package/dist/stall-detectors.d.ts.map +1 -1
  127. package/dist/stall-detectors.js +63 -2
  128. package/dist/stall-detectors.js.map +1 -1
  129. package/dist/state-cascade.d.ts.map +1 -1
  130. package/dist/state-cascade.js +5 -1
  131. package/dist/state-cascade.js.map +1 -1
  132. package/dist/templates/claude-md.d.ts +1 -1
  133. package/dist/templates/claude-md.d.ts.map +1 -1
  134. package/dist/templates/claude-md.js +25 -0
  135. package/dist/templates/claude-md.js.map +1 -1
  136. package/dist/types/focus.d.ts +14 -0
  137. package/dist/types/focus.d.ts.map +1 -1
  138. package/dist/unified-shell.d.ts.map +1 -1
  139. package/dist/unified-shell.js +8 -0
  140. package/dist/unified-shell.js.map +1 -1
  141. package/dist/verification-deps.d.ts +14 -0
  142. package/dist/verification-deps.d.ts.map +1 -1
  143. package/dist/verification-deterministic.d.ts.map +1 -1
  144. package/dist/verification-deterministic.js +31 -4
  145. package/dist/verification-deterministic.js.map +1 -1
  146. package/dist/verification-engine.d.ts.map +1 -1
  147. package/dist/verification-engine.js +78 -21
  148. package/dist/verification-engine.js.map +1 -1
  149. package/dist/verification-evidence.d.ts.map +1 -1
  150. package/dist/verification-evidence.js +2 -2
  151. package/dist/verification-evidence.js.map +1 -1
  152. package/dist/worktree/index.d.ts +1 -0
  153. package/dist/worktree/index.d.ts.map +1 -1
  154. package/dist/worktree/index.js +1 -0
  155. package/dist/worktree/index.js.map +1 -1
  156. package/dist/worktree/safety.d.ts +14 -6
  157. package/dist/worktree/safety.d.ts.map +1 -1
  158. package/dist/worktree/safety.js +17 -13
  159. package/dist/worktree/safety.js.map +1 -1
  160. package/dist/worktree/scratch-guard.d.ts +57 -0
  161. package/dist/worktree/scratch-guard.d.ts.map +1 -1
  162. package/dist/worktree/scratch-guard.js +168 -21
  163. package/dist/worktree/scratch-guard.js.map +1 -1
  164. package/dist/worktree/verify-interlock.d.ts +52 -0
  165. package/dist/worktree/verify-interlock.d.ts.map +1 -0
  166. package/dist/worktree/verify-interlock.js +94 -0
  167. package/dist/worktree/verify-interlock.js.map +1 -0
  168. package/package.json +3 -3
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Retention observation — the daemon's client-side read of the retention
3
+ * picture the product-api heartbeat response already carries.
4
+ *
5
+ * The heartbeat response body includes `retentionSchedules` (an array of
6
+ * per-horizon status). The edge function (supabase/functions/product-api/
7
+ * handlers/daemon-session-handlers.ts) already computes the two states this
8
+ * focus exists because nothing could tell apart:
9
+ * - a horizon declared but neither heartbeat-enforced nor pg_cron-scheduled
10
+ * (classifyRetentionDetection -> `unenforced`), and
11
+ * - a horizon wired to an enforcer that has never actually removed a row
12
+ * (classifyNeverSwept -> `neverSwept`).
13
+ * It only console-logs them; nothing on the daemon side read the field at all
14
+ * (`git grep retentionSchedule -- packages` was empty). This module closes that:
15
+ * it parses the field the daemon already receives, classifies each horizon with
16
+ * the SAME conditions as the edge (mirrored below, not re-derived differently),
17
+ * records the per-beat classification into a bounded window, and evaluates the
18
+ * precondition that gates retiring the pg_cron fallback -- "this environment's
19
+ * horizons are being held by the app-side sweep" -- from that recorded window.
20
+ *
21
+ * Everything here is pure and independently testable. The heartbeat module owns
22
+ * the window state and feeds observations in on each successful beat.
23
+ *
24
+ * DEGRADE-TO-UNKNOWN: a daemon shipped from this repo (via npm) routinely beats
25
+ * against an environment whose deployed edge bundle predates the field and omits
26
+ * `retentionSchedules`, or returns a malformed one. That is the ordinary case
27
+ * for a while, not an edge case: an absent/malformed field yields an `unknown`
28
+ * observation and never throws, so it can never disturb the heartbeat or the
29
+ * daemon's own liveness.
30
+ */
31
+ /**
32
+ * Per-environment state of ONE declared retention horizon. Daemon-side mirror of
33
+ * the edge `RetentionJobStatus` interface (daemon-session-handlers.ts). The edge
34
+ * normalizes snake_case rows to this camelCase shape before returning it on the
35
+ * heartbeat response, so the daemon receives it camelCase.
36
+ */
37
+ export interface RetentionJobStatus {
38
+ job: string;
39
+ pgCronAvailable: boolean;
40
+ scheduleInstalled: boolean;
41
+ horizonDays: number | null;
42
+ enforcedByHeartbeat: boolean;
43
+ /** When this horizon was last actually swept, or null if it has never been swept. */
44
+ lastSweptAt: string | null;
45
+ /** Rows removed by the most recent recorded sweep, or null if never swept. */
46
+ lastRowsRemoved: number | null;
47
+ }
48
+ /**
49
+ * Parse the `retentionSchedules` array off a heartbeat response body.
50
+ *
51
+ * Returns the validated array when present and well-formed, or `null` when the
52
+ * field is absent (older edge bundle) or malformed. Never throws -- reads the
53
+ * body the daemon already received, adds no round trip.
54
+ */
55
+ export declare function parseRetentionSchedules(body: unknown): RetentionJobStatus[] | null;
56
+ /**
57
+ * Classification of a single declared horizon. Mirrors the edge's two pure
58
+ * classifiers, collapsed into one mutually-exclusive verdict per horizon:
59
+ * - `declared_unenforced` = edge `classifyRetentionDetection` unenforced:
60
+ * nothing runs it (no heartbeat sweep AND no installed pg_cron schedule).
61
+ * - `never_swept` = edge `classifyNeverSwept`: an enforcer is wired
62
+ * (heartbeat and/or installed pg_cron) but no sweep has ever been recorded.
63
+ * - `healthy` = enforced AND a sweep has actually run (lastSweptAt set).
64
+ */
65
+ export type RetentionClassification = 'healthy' | 'declared_unenforced' | 'never_swept';
66
+ /** Classify one horizon. Pure. Mirrors the edge conditions exactly. */
67
+ export declare function classifyRetentionJob(s: RetentionJobStatus): RetentionClassification;
68
+ /**
69
+ * One beat's retention observation. `jobs` is `null` when the beat produced no
70
+ * usable retention field (older edge bundle / malformed) -- the "unknown"
71
+ * observation. Otherwise it is the per-horizon classification for that beat.
72
+ */
73
+ export interface RetentionBeatObservation {
74
+ atMs: number;
75
+ jobs: ReadonlyArray<{
76
+ job: string;
77
+ classification: RetentionClassification;
78
+ }> | null;
79
+ }
80
+ /**
81
+ * Turn a heartbeat response body into a beat observation. Total: an absent or
82
+ * malformed field yields `{ jobs: null }` (unknown), never a throw.
83
+ */
84
+ export declare function observeRetentionBeat(body: unknown, atMs: number): RetentionBeatObservation;
85
+ /** How many beats of observation are kept. Bounded so the window never grows. */
86
+ export declare const RETENTION_WINDOW_SIZE = 10;
87
+ /**
88
+ * Append an observation to the rolling window, bounded to `maxSize`. Pure --
89
+ * returns a new array; the caller owns the state cell.
90
+ */
91
+ export declare function recordRetentionObservation(window: readonly RetentionBeatObservation[], obs: RetentionBeatObservation, maxSize?: number): RetentionBeatObservation[];
92
+ /**
93
+ * How many consecutive most-recent beats must all show every declared horizon
94
+ * healthy before the retirement precondition is considered held. Keying the
95
+ * decision to a window (not a single beat) is what makes it a recorded
96
+ * observation rather than an assumption.
97
+ */
98
+ export declare const RETENTION_MIN_HEALTHY_BEATS = 3;
99
+ /**
100
+ * Verdict on the pg_cron-retirement precondition: "this environment's horizons
101
+ * are being held by the app-side sweep".
102
+ * - `yes` -- every declared horizon observed healthy across the window.
103
+ * - `no` -- at least one horizon is unenforced or never-swept.
104
+ * - `unknown` -- too few beats yet, an older/malformed bundle in the window,
105
+ * or no declared horizons observed. Never conflated with `yes`.
106
+ */
107
+ export type RetirementPreconditionVerdict = {
108
+ held: 'yes';
109
+ observedBeats: number;
110
+ } | {
111
+ held: 'no';
112
+ reason: string;
113
+ unhealthyJobs: string[];
114
+ } | {
115
+ held: 'unknown';
116
+ reason: string;
117
+ };
118
+ /**
119
+ * Evaluate the retirement precondition from the recorded window. Pure. The
120
+ * verdict flips to `yes` ONLY on recorded healthy observations across the
121
+ * required number of beats; a single `unknown` beat in the required span, or too
122
+ * few beats, holds it at `unknown` -- it can never claim `held: yes` from an
123
+ * environment it has not actually observed enforcing.
124
+ */
125
+ export declare function evaluateRetirementPrecondition(window: readonly RetentionBeatObservation[], minHealthyBeats?: number): RetirementPreconditionVerdict;
126
+ //# sourceMappingURL=retention-observation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retention-observation.d.ts","sourceRoot":"","sources":["../src/retention-observation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAIH;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,EAAE,OAAO,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,qFAAqF;IACrF,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,8EAA8E;IAC9E,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAuBD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,kBAAkB,EAAE,GAAG,IAAI,CAGlF;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,uBAAuB,GAC/B,SAAS,GACT,qBAAqB,GACrB,aAAa,CAAC;AAElB,uEAAuE;AACvE,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,kBAAkB,GAAG,uBAAuB,CAKnF;AAED;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,aAAa,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,uBAAuB,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;CACtF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,wBAAwB,CAO1F;AAED,iFAAiF;AACjF,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,wBAAwB,EAAE,EAC3C,GAAG,EAAE,wBAAwB,EAC7B,OAAO,SAAwB,GAC9B,wBAAwB,EAAE,CAG5B;AAED;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C;;;;;;;GAOG;AACH,MAAM,MAAM,6BAA6B,GACrC;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,EAAE,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAExC;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,SAAS,wBAAwB,EAAE,EAC3C,eAAe,SAA8B,GAC5C,6BAA6B,CAiC/B"}
@@ -0,0 +1,143 @@
1
+ /**
2
+ * Retention observation — the daemon's client-side read of the retention
3
+ * picture the product-api heartbeat response already carries.
4
+ *
5
+ * The heartbeat response body includes `retentionSchedules` (an array of
6
+ * per-horizon status). The edge function (supabase/functions/product-api/
7
+ * handlers/daemon-session-handlers.ts) already computes the two states this
8
+ * focus exists because nothing could tell apart:
9
+ * - a horizon declared but neither heartbeat-enforced nor pg_cron-scheduled
10
+ * (classifyRetentionDetection -> `unenforced`), and
11
+ * - a horizon wired to an enforcer that has never actually removed a row
12
+ * (classifyNeverSwept -> `neverSwept`).
13
+ * It only console-logs them; nothing on the daemon side read the field at all
14
+ * (`git grep retentionSchedule -- packages` was empty). This module closes that:
15
+ * it parses the field the daemon already receives, classifies each horizon with
16
+ * the SAME conditions as the edge (mirrored below, not re-derived differently),
17
+ * records the per-beat classification into a bounded window, and evaluates the
18
+ * precondition that gates retiring the pg_cron fallback -- "this environment's
19
+ * horizons are being held by the app-side sweep" -- from that recorded window.
20
+ *
21
+ * Everything here is pure and independently testable. The heartbeat module owns
22
+ * the window state and feeds observations in on each successful beat.
23
+ *
24
+ * DEGRADE-TO-UNKNOWN: a daemon shipped from this repo (via npm) routinely beats
25
+ * against an environment whose deployed edge bundle predates the field and omits
26
+ * `retentionSchedules`, or returns a malformed one. That is the ordinary case
27
+ * for a while, not an edge case: an absent/malformed field yields an `unknown`
28
+ * observation and never throws, so it can never disturb the heartbeat or the
29
+ * daemon's own liveness.
30
+ */
31
+ import { z } from 'zod';
32
+ /**
33
+ * Strict validator for one horizon status. Strictness is deliberate: the edge
34
+ * already normalized every field, so any deviation from this exact shape means
35
+ * an older/malformed bundle, which must degrade to "unknown" rather than be
36
+ * half-read.
37
+ */
38
+ const retentionJobStatusSchema = z.object({
39
+ job: z.string(),
40
+ pgCronAvailable: z.boolean(),
41
+ scheduleInstalled: z.boolean(),
42
+ horizonDays: z.number().nullable(),
43
+ enforcedByHeartbeat: z.boolean(),
44
+ lastSweptAt: z.string().nullable(),
45
+ lastRowsRemoved: z.number().nullable(),
46
+ });
47
+ /** The `retentionSchedules` field as it appears on the heartbeat response body. */
48
+ const heartbeatBodySchema = z.object({
49
+ retentionSchedules: z.array(retentionJobStatusSchema),
50
+ });
51
+ /**
52
+ * Parse the `retentionSchedules` array off a heartbeat response body.
53
+ *
54
+ * Returns the validated array when present and well-formed, or `null` when the
55
+ * field is absent (older edge bundle) or malformed. Never throws -- reads the
56
+ * body the daemon already received, adds no round trip.
57
+ */
58
+ export function parseRetentionSchedules(body) {
59
+ const result = heartbeatBodySchema.safeParse(body);
60
+ return result.success ? result.data.retentionSchedules : null;
61
+ }
62
+ /** Classify one horizon. Pure. Mirrors the edge conditions exactly. */
63
+ export function classifyRetentionJob(s) {
64
+ const enforced = s.enforcedByHeartbeat || (s.pgCronAvailable && s.scheduleInstalled);
65
+ if (!enforced)
66
+ return 'declared_unenforced';
67
+ if (s.lastSweptAt === null)
68
+ return 'never_swept';
69
+ return 'healthy';
70
+ }
71
+ /**
72
+ * Turn a heartbeat response body into a beat observation. Total: an absent or
73
+ * malformed field yields `{ jobs: null }` (unknown), never a throw.
74
+ */
75
+ export function observeRetentionBeat(body, atMs) {
76
+ const schedules = parseRetentionSchedules(body);
77
+ if (schedules === null)
78
+ return { atMs, jobs: null };
79
+ return {
80
+ atMs,
81
+ jobs: schedules.map((s) => ({ job: s.job, classification: classifyRetentionJob(s) })),
82
+ };
83
+ }
84
+ /** How many beats of observation are kept. Bounded so the window never grows. */
85
+ export const RETENTION_WINDOW_SIZE = 10;
86
+ /**
87
+ * Append an observation to the rolling window, bounded to `maxSize`. Pure --
88
+ * returns a new array; the caller owns the state cell.
89
+ */
90
+ export function recordRetentionObservation(window, obs, maxSize = RETENTION_WINDOW_SIZE) {
91
+ const next = [...window, obs];
92
+ return next.length > maxSize ? next.slice(next.length - maxSize) : next;
93
+ }
94
+ /**
95
+ * How many consecutive most-recent beats must all show every declared horizon
96
+ * healthy before the retirement precondition is considered held. Keying the
97
+ * decision to a window (not a single beat) is what makes it a recorded
98
+ * observation rather than an assumption.
99
+ */
100
+ export const RETENTION_MIN_HEALTHY_BEATS = 3;
101
+ /**
102
+ * Evaluate the retirement precondition from the recorded window. Pure. The
103
+ * verdict flips to `yes` ONLY on recorded healthy observations across the
104
+ * required number of beats; a single `unknown` beat in the required span, or too
105
+ * few beats, holds it at `unknown` -- it can never claim `held: yes` from an
106
+ * environment it has not actually observed enforcing.
107
+ */
108
+ export function evaluateRetirementPrecondition(window, minHealthyBeats = RETENTION_MIN_HEALTHY_BEATS) {
109
+ const recent = window.slice(-minHealthyBeats);
110
+ if (recent.length < minHealthyBeats) {
111
+ return {
112
+ held: 'unknown',
113
+ reason: `insufficient observations (${recent.length}/${minHealthyBeats} beats recorded)`,
114
+ };
115
+ }
116
+ if (recent.some((b) => b.jobs === null)) {
117
+ return {
118
+ held: 'unknown',
119
+ reason: 'a recent beat returned no retention field (older edge bundle or malformed response)',
120
+ };
121
+ }
122
+ // Every recent beat must carry at least one declared horizon; an all-empty
123
+ // window has nothing to vouch for and is not "held".
124
+ if (!recent.every((b) => (b.jobs?.length ?? 0) > 0)) {
125
+ return { held: 'unknown', reason: 'no declared retention horizons observed' };
126
+ }
127
+ const unhealthy = new Set();
128
+ for (const beat of recent) {
129
+ for (const j of beat.jobs ?? []) {
130
+ if (j.classification !== 'healthy')
131
+ unhealthy.add(j.job);
132
+ }
133
+ }
134
+ if (unhealthy.size > 0) {
135
+ return {
136
+ held: 'no',
137
+ reason: 'one or more declared horizons were not healthy across the window',
138
+ unhealthyJobs: [...unhealthy].sort(),
139
+ };
140
+ }
141
+ return { held: 'yes', observedBeats: recent.length };
142
+ }
143
+ //# sourceMappingURL=retention-observation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retention-observation.js","sourceRoot":"","sources":["../src/retention-observation.ts"],"names":[],"mappings":"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"}
@@ -134,6 +134,15 @@ export declare function buildSpawnMessage(args: {
134
134
  * that only need the message string are unaffected.
135
135
  */
136
136
  gitDiffManifestSink?: AssemblyManifestEntry[];
137
+ /**
138
+ * The review pass's own Telora agent_sessions.id, carried onto the resume-delta
139
+ * shape (review lineage only) so a resumed reviewer is handed the active id it
140
+ * must pass to focus_review_complete. The fresh-prompt shape already bakes this
141
+ * into `prompt` via buildSpawnPrompt(agentSessionId); this threads it to the
142
+ * resume-delta shape too. Optional so message-shape unit tests need not supply
143
+ * it; the production spawn path always passes session.id.
144
+ */
145
+ agentSessionId?: string;
137
146
  }): Promise<string>;
138
147
  /**
139
148
  * Decide whether this spawn must be forced fresh to deliver a scoping directive,
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-assembly.d.ts","sourceRoot":"","sources":["../../src/spawn/prompt-assembly.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompt-assembly.d.ts","sourceRoot":"","sources":["../../src/spawn/prompt-assembly.ts"],"names":[],"mappings":"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"}
@@ -106,7 +106,7 @@ export function buildSpawnPrompt(args) {
106
106
  * delivery-lifecycle terminalizes them instead.
107
107
  */
108
108
  export async function buildSpawnMessage(args) {
109
- const { prompt, resumeId, readOnlyFocus, role, promptContext, spawnSpec, config, focusId, focusName, deliveries, issues, worktreePath, priorFindings, answeredEscalationsSection = '', gitDiffManifestSink } = args;
109
+ const { prompt, resumeId, readOnlyFocus, role, promptContext, spawnSpec, config, focusId, focusName, deliveries, issues, worktreePath, priorFindings, answeredEscalationsSection = '', gitDiffManifestSink, agentSessionId } = args;
110
110
  const answersSuffix = answeredEscalationsSection.trim() ? `\n\n${answeredEscalationsSection}` : '';
111
111
  // Scoping directive takes priority over the fresh/resume split, but ONLY for
112
112
  // executable (non-discovery) focuses. It is returned even when resumeId is
@@ -195,6 +195,7 @@ export async function buildSpawnMessage(args) {
195
195
  gitDiff,
196
196
  priorFindings,
197
197
  ...(reviewCoverage ? { reviewCoverage } : {}),
198
+ ...(agentSessionId ? { agentSessionId } : {}),
198
199
  }) + answersSuffix;
199
200
  log.info(`[focus-executor] Resuming Claude session ${resumeId} for "${focusName}" ` +
200
201
  `-- sending incremental delta (lineage ${spawnSpec.lineage}, ${messageToSend.length} chars, ` +
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-assembly.js","sourceRoot":"","sources":["../../src/spawn/prompt-assembly.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompt-assembly.js","sourceRoot":"","sources":["../../src/spawn/prompt-assembly.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAYH,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EACL,wBAAwB,EACxB,8BAA8B,EAC9B,iCAAiC,EACjC,6BAA6B,EAC7B,uBAAuB,GAExB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,OAAO,EAAE,iCAAiC,EAAoD,MAAM,uBAAuB,CAAC;AAE5H,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAGvD;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAiBvC;IACC,MAAM,EACJ,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EACjF,cAAc,EAAE,yBAAyB,EAAE,QAAQ,EAAE,WAAW,EAChE,oBAAoB,EAAE,QAAQ,EAAE,oBAAoB,GACrD,GAAG,IAAI,CAAC;IACT,OAAO;QACL,OAAO;QACP,SAAS;QACT,gBAAgB;QAChB,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,UAAU;QACV,MAAM;QACN,eAAe;QACf,cAAc;QACd,yBAAyB;QACzB,QAAQ;QACR,WAAW;QACX,oBAAoB;QACpB,QAAQ;QACR,oBAAoB;KACrB,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,IA4BhC;IACC,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,mBAAmB,EAAE,aAAa,EAAE,mBAAmB,EAAE,0BAA0B,GAAG,EAAE,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;IAE7J,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC,mBAAmB,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;QACnD,MAAM,OAAO,GAAG,8BAA8B,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzE,MAAM,GAAG,wBAAwB,CAAC,IAAI,EAAE,aAAa,CAAC;cAClD,MAAM;cACN,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;cAC/B,aAAa,CAAC;IACpB,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,oBAAoB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACrD,CAAC;IAED,8EAA8E;IAC9E,6EAA6E;IAC7E,8EAA8E;IAC9E,8DAA8D;IAC9D,IAAI,0BAA0B,CAAC,IAAI,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,MAAM,GAAG,0BAA0B,CAAC;IAChD,CAAC;IAED,2EAA2E;IAC3E,sEAAsE;IACtE,4EAA4E;IAC5E,6EAA6E;IAC7E,8DAA8D;IAC9D,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,IAAI,MAAM,GAAG,6BAA6B,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9D,MAAM,IAAI,MAAM,GAAG,iCAAiC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClF,CAAC;IAED,8EAA8E;IAC9E,6EAA6E;IAC7E,+EAA+E;IAC/E,yEAAyE;IACzE,IAAI,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/B,MAAM,IAAI,MAAM,GAAG,mBAAmB,CAAC;IACzC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAiDvC;IACC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,0BAA0B,GAAG,EAAE,EAAE,mBAAmB,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;IACpO,MAAM,aAAa,GAAG,0BAA0B,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,0BAA0B,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAEnG,6EAA6E;IAC7E,2EAA2E;IAC3E,yEAAyE;IACzE,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,kBAAkB,GAAG,qCAAqC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACrF,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,mEAAmE;YACnE,0EAA0E;YAC1E,uEAAuE;YACvE,6EAA6E;YAC7E,2EAA2E;YAC3E,wEAAwE;YACxE,MAAM,aAAa,GAAG,wBAAwB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;YACpE,MAAM,gBAAgB,GAAG,iCAAiC,CAAC;gBACzD,OAAO,EAAE,SAAS,CAAC,OAAO;gBAC1B,SAAS;gBACT,UAAU,EAAE,kBAAkB;aAC/B,CAAC,CAAC;YACH,MAAM,aAAa,GAAG,GAAG,aAAa,OAAO,gBAAgB,GAAG,aAAa,EAAE,CAAC;YAChF,GAAG,CAAC,IAAI,CACN,wDAAwD,SAAS,IAAI;gBACrE,sDAAsD,kBAAkB,CAAC,MAAM,UAAU;gBACzF,qBAAqB,kBAAkB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG;gBACrE,YAAY,SAAS,CAAC,OAAO,KAAK,aAAa,CAAC,MAAM,SAAS,CAChE,CAAC;YACF,OAAO,aAAa,CAAC;QACvB,CAAC;IACH,CAAC;IAED,IAAI,CAAC,QAAQ;QAAE,OAAO,MAAM,CAAC;IAE7B,0EAA0E;IAC1E,wEAAwE;IACxE,uEAAuE;IACvE,0EAA0E;IAC1E,qEAAqE;IACrE,IAAI,cAAmF,CAAC;IACxF,IAAI,gBAAoC,CAAC;IACzC,IAAI,SAAS,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,uEAAuE;YACvE,0EAA0E;YAC1E,6EAA6E;YAC7E,IAAI,0BAA0B,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxC,cAAc,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACR,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;gBAChF,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,EAAE,oBAAoB,IAAI,IAAI,CAAC;gBAC1F,IAAI,SAAS,EAAE,CAAC;oBACd,gBAAgB,GAAG,SAAS,CAAC;oBAC7B,cAAc,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;gBAC/D,CAAC;qBAAM,CAAC;oBACN,cAAc,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;gBACzC,CAAC;YACD,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,qEAAqE;YACrE,uEAAuE;YACvE,GAAG,CAAC,KAAK,CAAC,uDAAuD,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;YAC3F,cAAc,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;IAED,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,CAAC;QACH,MAAM,OAAO,GAAoB;YAC/B,OAAO;YACP,WAAW,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtC,YAAY;YACZ,MAAM;YACN,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClD,CAAC;QACF,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,iCAAiC,CAAC,CAAC,uBAAuB,CAAC,EAAE,OAAO,CAAC,CAAC;QAC1G,OAAO,GAAG,OAAO,CAAC;QAClB,IAAI,mBAAmB;YAAE,mBAAmB,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;IACjE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,KAAK,CAAC,gDAAgD,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,aAAa,GAAG,uBAAuB,CAAC;QAC5C,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,SAAS;QACT,OAAO;QACP,aAAa;QACb,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9C,CAAC,GAAG,aAAa,CAAC;IACnB,GAAG,CAAC,IAAI,CACN,4CAA4C,QAAQ,SAAS,SAAS,IAAI;QAC1E,yCAAyC,SAAS,CAAC,OAAO,KAAK,aAAa,CAAC,MAAM,UAAU;QAC7F,GAAG,aAAa,CAAC,MAAM,oBAAoB,CAC5C,CAAC;IACF,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAKzC;IACC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IACxD,IAAI,QAAQ;QAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;IACzD,MAAM,cAAc,GAAG,qCAAqC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5F,OAAO;QACL,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ;QAC1C,cAAc;KACf,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qCAAqC,CACnD,UAA0D,EAC1D,MAAkD;IAElD,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;IAClD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK;YAAE,SAAS;QACtE,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1F,CAAC;IACD,OAAO,UAAU,CAAC,MAAM,CACtB,QAAQ,CAAC,EAAE,CACT,CAAC,QAAQ,CAAC,eAAe,IAAI,EAAE,CAAC,KAAK,QAAQ;QAC7C,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAChD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,IAIjD;IACC,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU;SACrC,KAAK,EAAE;SACP,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;SAC/C,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC;QACxB,OAAO,KAAK,GAAG,CAAC,KAAK,QAAQ,CAAC,IAAI,EAAE;QACpC,kBAAkB,QAAQ,CAAC,EAAE,EAAE;QAC/B,oBAAoB,QAAQ,CAAC,YAAY,EAAE;QAC3C,EAAE;QACF,iBAAiB;QACjB,QAAQ,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,QAAQ;QACxC,EAAE;QACF,yBAAyB;QACzB,QAAQ,CAAC,kBAAkB,EAAE,IAAI,EAAE,IAAI,QAAQ;QAC/C,EAAE;QACF,uBAAuB;QACvB,QAAQ,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,QAAQ;KACzC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACZ,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhB,OAAO;QACL,gDAAgD;QAChD,EAAE;QACF,sCAAsC,IAAI,CAAC,OAAO,eAAe,IAAI,CAAC,SAAS,iIAAiI;QAChN,EAAE;QACF,mYAAmY;QACnY,EAAE;QACF,kLAAkL;QAClL,EAAE;QACF,gBAAgB;KACjB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"worktree-session.d.ts","sourceRoot":"","sources":["../../src/spawn/worktree-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worktree-session.d.ts","sourceRoot":"","sources":["../../src/spawn/worktree-session.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@
12
12
  */
13
13
  import { createSession, } from '../supabase.js';
14
14
  import { createWorktree, runGitSync, repoHasCommits } from '../git.js';
15
- import { installReadOnlyAuditGuards } from '../audit-hooks.js';
15
+ import { installExecutionWorktreeGuards } from '../audit-hooks.js';
16
16
  import { getFocusWorktree, setFocusWorktree } from '../focus-worktree-state.js';
17
17
  import { reconcileAgentResolvableForFocus } from '../queries/agent-resolvable-promotion.js';
18
18
  import { resolveLineageSpec } from '../session-lineage.js';
@@ -87,14 +87,14 @@ export async function resolveSpawnWorktree(args) {
87
87
  log.warn(`Rebase failed for "${focusName}", continuing with existing state`);
88
88
  }
89
89
  log.info(` Worktree (reused): ${worktreePath}`);
90
- // Re-assert read-only audit guards on the reused worktree. ensureFocusWorktrees
91
- // installs them at provisioning time, but a read-only focus may reuse a
92
- // persistent worktree across daemon restarts -- re-applying here (idempotent)
93
- // guarantees the deny overlay + pre-commit hook are present before spawn.
94
- if (readOnly) {
95
- installReadOnlyAuditGuards(worktreePath);
96
- log.info(` Re-asserted read-only audit guards (reused worktree)`);
97
- }
90
+ // Re-assert execution-worktree git guards on the reused worktree.
91
+ // ensureFocusWorktrees installs them at provisioning time, but core.hooksPath
92
+ // and the hook files are per-worktree config that does NOT survive as tree
93
+ // content, and a worktree may be reused across daemon restarts -- re-applying
94
+ // here (idempotent) guarantees the delivery-trailer commit-msg hook (and, when
95
+ // read-only, the deny overlay + pre-commit block) are present before spawn.
96
+ installExecutionWorktreeGuards(worktreePath, readOnly);
97
+ log.info(` Re-asserted execution worktree guards (reused worktree)`);
98
98
  return worktreePath;
99
99
  }
100
100
  // Guard: can't create worktrees in a repo with no commits
@@ -118,11 +118,10 @@ export async function resolveSpawnWorktree(args) {
118
118
  repoPath: config.repoPath,
119
119
  });
120
120
  log.info(` Worktree (created inline): ${worktreePath}`);
121
- // Install read-only audit guards (pre-commit hook + write-deny overlay)
122
- if (readOnly) {
123
- installReadOnlyAuditGuards(worktreePath);
124
- log.info(` Installed read-only audit guards (read-only mode)`);
125
- }
121
+ // Install execution-worktree git guards: the delivery-trailer commit-msg hook
122
+ // always, plus read-only audit guards when the focus is read-only.
123
+ installExecutionWorktreeGuards(worktreePath, readOnly);
124
+ log.info(` Installed execution worktree guards`);
126
125
  return worktreePath;
127
126
  }
128
127
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"worktree-session.js","sourceRoot":"","sources":["../../src/spawn/worktree-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worktree-session.js","sourceRoot":"","sources":["../../src/spawn/worktree-session.ts"],"names":[],"mappings":"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"}
@@ -14,4 +14,6 @@ export declare function resolveVerifyFailedCap(): number;
14
14
  export declare function resolveReviewWindowStaleHours(): number;
15
15
  /** Resolve the focus-level review-cycle cap (env override or default). */
16
16
  export declare function resolveReviewCycleCap(): number;
17
+ /** Resolve the idle-team stall threshold in hours (env override or default). */
18
+ export declare function resolveIdleTeamStallHours(): number;
17
19
  //# sourceMappingURL=stall-detector-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stall-detector-config.d.ts","sourceRoot":"","sources":["../src/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"}
1
+ {"version":3,"file":"stall-detector-config.d.ts","sourceRoot":"","sources":["../src/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"}
@@ -21,4 +21,8 @@ export function resolveReviewWindowStaleHours() {
21
21
  export function resolveReviewCycleCap() {
22
22
  return loadEnvConfig().TELORA_REVIEW_CYCLE_CAP;
23
23
  }
24
+ /** Resolve the idle-team stall threshold in hours (env override or default). */
25
+ export function resolveIdleTeamStallHours() {
26
+ return loadEnvConfig().TELORA_IDLE_TEAM_STALL_HOURS;
27
+ }
24
28
  //# sourceMappingURL=stall-detector-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stall-detector-config.js","sourceRoot":"","sources":["../src/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"}
1
+ {"version":3,"file":"stall-detector-config.js","sourceRoot":"","sources":["../src/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"}
@@ -138,4 +138,59 @@ export declare function isReviewWindowStale(reviewRequestedAt: string | null, ha
138
138
  * existing review-handling seam rather than fanning out its own focus scan.
139
139
  */
140
140
  export declare function checkReviewWindowStaleForFocus(ctx: FocusStallContext, reviewRequestedAt: string | null, deps?: ReviewWindowDeps): Promise<void>;
141
+ export interface IdleTeamStallDeps {
142
+ /**
143
+ * The team's per-team last-activity epoch ms, or null when nothing has been
144
+ * recorded yet (a team still initializing before its first agent event).
145
+ */
146
+ getLastActivityAt: (focusId: string) => number | null;
147
+ /**
148
+ * True when the focus has a live team ELIGIBLE for idle recovery: it exists in
149
+ * activeTeams and is in the `executing` phase. A team already tearing down
150
+ * (shutting_down/terminated) must not be re-recovered every tick -- once
151
+ * recovery flips it to shutting_down this returns false, so terminateTeam is
152
+ * not re-issued on each 30s cascade pass until the reap clears the clock.
153
+ */
154
+ isTeamRecoverable: (focusId: string) => boolean;
155
+ /**
156
+ * Recover the stalled team. The default terminates it via terminateTeam (a
157
+ * controlled `teardown`), which the normal completion path then reaps: the
158
+ * activeTeams entry is dropped (un-blocking merge-back on active_team), the
159
+ * governor slot returns via the exactly-once release, and a verify_failed
160
+ * delivery re-enters the executor's normal queue. Returns true if a team was
161
+ * actually terminated.
162
+ */
163
+ recoverTeam: (focusId: string) => boolean;
164
+ /** Current epoch ms; injectable for tests. Defaults to Date.now. */
165
+ now: () => number;
166
+ /** Override the threshold (hours) for tests; defaults to env-config. */
167
+ thresholdHours?: number;
168
+ }
169
+ /** Default: a focus is recoverable when its team is live and `executing`. */
170
+ export declare function isTeamRecoverable(focusId: string): boolean;
171
+ /**
172
+ * Pure decision: has this team's activity clock frozen past the threshold?
173
+ *
174
+ * False when no activity has been recorded yet (null) -- a team still
175
+ * initializing has not stalled, it just has not produced its first event. The
176
+ * gap is measured against the LAST agent event, not spawn, so a team that keeps
177
+ * producing events never trips (its idle age stays under the threshold). The
178
+ * observed park kept phase=executing while the last-activity clock stayed frozen
179
+ * for 16h37m -- exactly what this predicate catches. Exported for direct unit
180
+ * testing.
181
+ */
182
+ export declare function isTeamIdleStalled(lastActivityMs: number | null, nowMs: number, thresholdMs: number): boolean;
183
+ /**
184
+ * Check ONE focus's team for an idle stall and RECOVER it (terminate so the
185
+ * daemon's normal execution/release paths resume) when its last agent event is
186
+ * older than the threshold. Reads the per-team last-activity clock the caller's
187
+ * seam does not need to load.
188
+ *
189
+ * Files NO escalation: the ask -- recover the parked team -- names an act the
190
+ * daemon performs itself, so this detector ACTS rather than routing a human an
191
+ * item that can only wait ("A hold must name a human act"). A genuinely working
192
+ * team is never recovered: its clock keeps advancing, so its idle age stays
193
+ * under the threshold.
194
+ */
195
+ export declare function checkIdleTeamStallForFocus(ctx: FocusStallContext, deps?: IdleTeamStallDeps): void;
141
196
  //# sourceMappingURL=stall-detectors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stall-detectors.d.ts","sourceRoot":"","sources":["../src/stall-detectors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAMpD,OAAO,EAEL,KAAK,8BAA8B,EACnC,KAAK,8BAA8B,EACpC,MAAM,qCAAqC,CAAC;AAU7C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,4BAA4B,4BAA4B,CAAC;AACtE,eAAO,MAAM,0BAA0B,0BAA0B,CAAC;AAElE,yEAAyE;AACzE,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAgCD,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,cAAc,EAAE,CAAC,MAAM,EAAE,8BAA8B,KAAK,OAAO,CAAC,8BAA8B,CAAC,CAAC;IACpG,6EAA6E;IAC7E,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAMD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAIhE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,gBAAgB,GAAG,WAAW,CAAC,EACrF,GAAG,EAAE,MAAM,GACV,OAAO,CAIT;AAED;;;;;;GAMG;AACH,wBAAsB,4BAA4B,CAChD,GAAG,EAAE,iBAAiB,EACtB,UAAU,EAAE,iBAAiB,EAAE,EAC/B,IAAI,GAAE,mBAAgD,GACrD,OAAO,CAAC,IAAI,CAAC,CAiEf;AAID,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,cAAc,EAAE,CAAC,MAAM,EAAE,8BAA8B,KAAK,OAAO,CAAC,8BAA8B,CAAC,CAAC;IACpG,mFAAmF;IACnF,oBAAoB,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC;IACxC,oEAAoE;IACpE,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,kFAAkF;IAClF,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,0EAA0E;AAC1E,wBAAgB,oBAAoB,IAAI,GAAG,CAAC,MAAM,CAAC,CAMlD;AAQD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,iBAAiB,EAAE,MAAM,GAAG,IAAI,EAChC,eAAe,EAAE,OAAO,EACxB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,OAAO,CAMT;AAED;;;;;GAKG;AACH,wBAAsB,8BAA8B,CAClD,GAAG,EAAE,iBAAiB,EACtB,iBAAiB,EAAE,MAAM,GAAG,IAAI,EAChC,IAAI,GAAE,gBAA0C,GAC/C,OAAO,CAAC,IAAI,CAAC,CA+Df"}
1
+ {"version":3,"file":"stall-detectors.d.ts","sourceRoot":"","sources":["../src/stall-detectors.ts"],"names":[],"mappings":"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"}