@telora/daemon 0.21.12 → 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 (143) hide show
  1. package/build-info.json +9 -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/delivery-advance-block.d.ts +9 -1
  17. package/dist/delivery-advance-block.d.ts.map +1 -1
  18. package/dist/delivery-advance-block.js +37 -1
  19. package/dist/delivery-advance-block.js.map +1 -1
  20. package/dist/delivery-lifecycle.d.ts.map +1 -1
  21. package/dist/delivery-lifecycle.js +9 -0
  22. package/dist/delivery-lifecycle.js.map +1 -1
  23. package/dist/delivery-reconciler.d.ts +16 -0
  24. package/dist/delivery-reconciler.d.ts.map +1 -1
  25. package/dist/delivery-reconciler.js +12 -0
  26. package/dist/delivery-reconciler.js.map +1 -1
  27. package/dist/external-hold.d.ts +42 -0
  28. package/dist/external-hold.d.ts.map +1 -1
  29. package/dist/external-hold.js +85 -11
  30. package/dist/external-hold.js.map +1 -1
  31. package/dist/focus-executor.d.ts.map +1 -1
  32. package/dist/focus-executor.js +5 -0
  33. package/dist/focus-executor.js.map +1 -1
  34. package/dist/focus-lifecycle.d.ts.map +1 -1
  35. package/dist/focus-lifecycle.js +9 -11
  36. package/dist/focus-lifecycle.js.map +1 -1
  37. package/dist/focus-provisioning.d.ts.map +1 -1
  38. package/dist/focus-provisioning.js +9 -11
  39. package/dist/focus-provisioning.js.map +1 -1
  40. package/dist/git/merge.d.ts +24 -0
  41. package/dist/git/merge.d.ts.map +1 -1
  42. package/dist/git/merge.js +45 -5
  43. package/dist/git/merge.js.map +1 -1
  44. package/dist/git/types.d.ts +9 -0
  45. package/dist/git/types.d.ts.map +1 -1
  46. package/dist/git/types.js.map +1 -1
  47. package/dist/heartbeat.d.ts +36 -0
  48. package/dist/heartbeat.d.ts.map +1 -1
  49. package/dist/heartbeat.js +55 -4
  50. package/dist/heartbeat.js.map +1 -1
  51. package/dist/listener-auto-advance.d.ts.map +1 -1
  52. package/dist/listener-auto-advance.js +12 -2
  53. package/dist/listener-auto-advance.js.map +1 -1
  54. package/dist/nexus/escalation-bridge.d.ts +8 -0
  55. package/dist/nexus/escalation-bridge.d.ts.map +1 -1
  56. package/dist/nexus/escalation-bridge.js +8 -0
  57. package/dist/nexus/escalation-bridge.js.map +1 -1
  58. package/dist/nexus/return.d.ts +28 -2
  59. package/dist/nexus/return.d.ts.map +1 -1
  60. package/dist/nexus/return.js +53 -2
  61. package/dist/nexus/return.js.map +1 -1
  62. package/dist/output-monitor.js +9 -0
  63. package/dist/output-monitor.js.map +1 -1
  64. package/dist/prompt-sections/execution-sections.d.ts.map +1 -1
  65. package/dist/prompt-sections/execution-sections.js +7 -0
  66. package/dist/prompt-sections/execution-sections.js.map +1 -1
  67. package/dist/prompt-sections/persona-sections.d.ts +10 -0
  68. package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
  69. package/dist/prompt-sections/persona-sections.js +4 -2
  70. package/dist/prompt-sections/persona-sections.js.map +1 -1
  71. package/dist/prompt-sections/scoping-sections.d.ts.map +1 -1
  72. package/dist/prompt-sections/scoping-sections.js +8 -0
  73. package/dist/prompt-sections/scoping-sections.js.map +1 -1
  74. package/dist/queries/agent-resolvable-promotion.d.ts +17 -5
  75. package/dist/queries/agent-resolvable-promotion.d.ts.map +1 -1
  76. package/dist/queries/agent-resolvable-promotion.js +24 -10
  77. package/dist/queries/agent-resolvable-promotion.js.map +1 -1
  78. package/dist/queries/daemon-connection.d.ts +21 -1
  79. package/dist/queries/daemon-connection.d.ts.map +1 -1
  80. package/dist/queries/daemon-connection.js +4 -1
  81. package/dist/queries/daemon-connection.js.map +1 -1
  82. package/dist/queries/deliveries.d.ts +44 -12
  83. package/dist/queries/deliveries.d.ts.map +1 -1
  84. package/dist/queries/deliveries.js +32 -15
  85. package/dist/queries/deliveries.js.map +1 -1
  86. package/dist/queries/delivery-gate-state.d.ts +23 -0
  87. package/dist/queries/delivery-gate-state.d.ts.map +1 -1
  88. package/dist/queries/issues.d.ts.map +1 -1
  89. package/dist/queries/issues.js +6 -0
  90. package/dist/queries/issues.js.map +1 -1
  91. package/dist/queries/requests.d.ts +30 -0
  92. package/dist/queries/requests.d.ts.map +1 -0
  93. package/dist/queries/requests.js +32 -0
  94. package/dist/queries/requests.js.map +1 -0
  95. package/dist/resolvers/shared/git-diff.d.ts +32 -3
  96. package/dist/resolvers/shared/git-diff.d.ts.map +1 -1
  97. package/dist/resolvers/shared/git-diff.js +120 -16
  98. package/dist/resolvers/shared/git-diff.js.map +1 -1
  99. package/dist/retention-observation.d.ts +126 -0
  100. package/dist/retention-observation.d.ts.map +1 -0
  101. package/dist/retention-observation.js +143 -0
  102. package/dist/retention-observation.js.map +1 -0
  103. package/dist/spawn/prompt-assembly.d.ts +9 -0
  104. package/dist/spawn/prompt-assembly.d.ts.map +1 -1
  105. package/dist/spawn/prompt-assembly.js +2 -1
  106. package/dist/spawn/prompt-assembly.js.map +1 -1
  107. package/dist/spawn/worktree-session.d.ts.map +1 -1
  108. package/dist/spawn/worktree-session.js +13 -14
  109. package/dist/spawn/worktree-session.js.map +1 -1
  110. package/dist/templates/claude-md.d.ts +1 -1
  111. package/dist/templates/claude-md.d.ts.map +1 -1
  112. package/dist/templates/claude-md.js +25 -0
  113. package/dist/templates/claude-md.js.map +1 -1
  114. package/dist/types/focus.d.ts +14 -0
  115. package/dist/types/focus.d.ts.map +1 -1
  116. package/dist/verification-deps.d.ts +14 -0
  117. package/dist/verification-deps.d.ts.map +1 -1
  118. package/dist/verification-deterministic.d.ts.map +1 -1
  119. package/dist/verification-deterministic.js +31 -4
  120. package/dist/verification-deterministic.js.map +1 -1
  121. package/dist/verification-engine.d.ts.map +1 -1
  122. package/dist/verification-engine.js +78 -21
  123. package/dist/verification-engine.js.map +1 -1
  124. package/dist/verification-evidence.d.ts.map +1 -1
  125. package/dist/verification-evidence.js +2 -2
  126. package/dist/verification-evidence.js.map +1 -1
  127. package/dist/worktree/index.d.ts +1 -0
  128. package/dist/worktree/index.d.ts.map +1 -1
  129. package/dist/worktree/index.js +1 -0
  130. package/dist/worktree/index.js.map +1 -1
  131. package/dist/worktree/safety.d.ts +14 -6
  132. package/dist/worktree/safety.d.ts.map +1 -1
  133. package/dist/worktree/safety.js +17 -13
  134. package/dist/worktree/safety.js.map +1 -1
  135. package/dist/worktree/scratch-guard.d.ts +57 -0
  136. package/dist/worktree/scratch-guard.d.ts.map +1 -1
  137. package/dist/worktree/scratch-guard.js +168 -21
  138. package/dist/worktree/scratch-guard.js.map +1 -1
  139. package/dist/worktree/verify-interlock.d.ts +52 -0
  140. package/dist/worktree/verify-interlock.d.ts.map +1 -0
  141. package/dist/worktree/verify-interlock.js +94 -0
  142. package/dist/worktree/verify-interlock.js.map +1 -0
  143. package/package.json +2 -2
@@ -502,6 +502,69 @@ function spanCoversRecordedExactly(worktreePath, span, shas) {
502
502
  const inSpan = new Set(listRangeCommits(worktreePath, span));
503
503
  return inSpan.size === shas.length && shas.every((s) => inSpan.has(s));
504
504
  }
505
+ /**
506
+ * Resolve a delivery's OWN commits by searching the BASE BRANCH for its
507
+ * `Telora-Delivery` trailer, taking NO recorded row as input. This is the
508
+ * git-sourced evidence path: the trailer is a durable per-commit fact git holds
509
+ * whether or not a focus_merges row was ever written, so it survives the exact
510
+ * failure that blinded four merged, CI-green deliveries on 2026-08-16
511
+ * (fast-forward merge-back with NO record at all -- no merge sha, no commit set,
512
+ * no pre-merge boundary). Where the recorded sources all begin from a row, this
513
+ * one begins from git.
514
+ *
515
+ * Scoped to `baseBranch` (NOT `--all`): a trailered commit on an abandoned
516
+ * branch that never merged to base must NOT contribute. `git log --grep`
517
+ * NARROWS the candidates; {@link readDeliveryTrailer} CONFIRMS each by git's own
518
+ * trailer parse -- a `Telora-Delivery:` line sitting in a commit BODY matches the
519
+ * grep but is voided as a trailer, and the read side rejects it, so this must too.
520
+ *
521
+ * Returns the delivery's commit shas (git-log order, newest first), or [] when
522
+ * none are found on base. The caller feeds this to the SAME span/commits logic
523
+ * the recorded set uses, so the interleaving guard (spanCoversRecordedExactly)
524
+ * applies unchanged -- an interleaved set resolves as `commits`, never a span.
525
+ */
526
+ export function resolveGitTrailerCommitSet(worktreePath, baseBranch, deliveryId) {
527
+ const clean = (deliveryId ?? '').trim();
528
+ if (clean === '')
529
+ return [];
530
+ let candidates;
531
+ try {
532
+ // --fixed-strings: the grep value is a literal marker, not a regex.
533
+ const out = execSync(`git log ${baseBranch} --format=%H --fixed-strings '--grep=${DELIVERY_TRAILER_KEY}: ${clean}'`, { cwd: worktreePath, maxBuffer: 10 * 1024 * 1024, encoding: 'utf-8' });
534
+ candidates = out.split('\n').map((l) => l.trim()).filter((l) => l !== '');
535
+ }
536
+ catch {
537
+ return [];
538
+ }
539
+ // Grep narrows; the trailer parse confirms. A body-line the grep matched but
540
+ // git does not parse as a trailer resolves to a different (or empty) value here.
541
+ return candidates.filter((sha) => readDeliveryTrailer(worktreePath, sha) === clean);
542
+ }
543
+ /**
544
+ * Turn a delivery's OWN commit set (from the record OR from a git trailer search)
545
+ * into a {@link DeliveryDiffSource}, applying the interleaving guard: a set whose
546
+ * span re-lists ONLY the delivery's own commits uses the cheap `range`; an
547
+ * interleaved set (a sibling's commit sits between the endpoints) or one whose
548
+ * span boundary is unreachable-but-commits-survive becomes a `commits` source
549
+ * diffed commit-by-commit. Returns null when the set is empty or neither shape is
550
+ * resolvable (caller falls through to the next source). Shared by the recorded
551
+ * and git-sourced paths so both obey the same interleaving rule (Bug TEL-6).
552
+ */
553
+ function sourceFromOwnCommitSet(worktreePath, shas) {
554
+ if (shas.length === 0)
555
+ return null;
556
+ const span = resolveRecordedCommitRange(worktreePath, shas);
557
+ if (span) {
558
+ if (spanCoversRecordedExactly(worktreePath, span, shas))
559
+ return { kind: 'range', range: span };
560
+ return { kind: 'commits', commits: shas };
561
+ }
562
+ // Span boundary unreachable (e.g. --squash, or oldest is a root): if the commits
563
+ // themselves still exist, diff them directly; else let the caller fall through.
564
+ if (shas.every((s) => commitExists(worktreePath, s)))
565
+ return { kind: 'commits', commits: shas };
566
+ return null;
567
+ }
505
568
  /**
506
569
  * Resolve HOW to produce a delivery's evidence, sourced from the DURABLE recorded
507
570
  * attribution first and live branch topology only as a fallback (defects #2/#3).
@@ -514,6 +577,13 @@ function spanCoversRecordedExactly(worktreePath, span, shas) {
514
577
  * span boundary is unreachable (e.g. --squash rewrote history) but the
515
578
  * commits themselves survive -> `{commits}` (diffed one by one, so the span
516
579
  * never re-absorbs a sibling that sits between the endpoints).
580
+ * 1c. GIT-SOURCED commit set (resolveGitTrailerCommitSet): the delivery's own
581
+ * commits found by searching `baseBranch` for its Telora-Delivery trailer,
582
+ * INDEPENDENT of any focus_merges row. Consulted when the recorded set
583
+ * produced nothing, so a missing/empty record no longer ends the search --
584
+ * git still holds the trailer. Feeds the SAME span/commits interleaving guard
585
+ * as 1/1b. This is the source that cures the 2026-08-16 blinding (four merged,
586
+ * CI-green deliveries with no record at all).
517
587
  * 2. RECORDED merge commit present -> `{range: <sha>^1...<sha>}`, ONLY for a real
518
588
  * >=2-parent merge (single-parent ff commits are refused -- see
519
589
  * resolveRecordedMergeRange).
@@ -547,22 +617,24 @@ function spanCoversRecordedExactly(worktreePath, span, shas) {
547
617
  * is the row's merge_commit_sha; `recordedPreMergeRef` is the row's pre_merge_ref.
548
618
  * Callers without a record (assembly resolvers) pass none and get the topology path.
549
619
  */
550
- export function resolveDeliveryDiffSource(worktreePath, baseBranch, recordedMergeSha, recordedCommitShas, recordedPreMergeRef) {
620
+ export function resolveDeliveryDiffSource(worktreePath, baseBranch, recordedMergeSha, recordedCommitShas, recordedPreMergeRef, deliveryId) {
621
+ // 1 / 1b. RECORDED commit set (focus_merges.commit_shas, trailer-filtered per
622
+ // delivery). Preferred when present -- the exact record written at merge time.
551
623
  const shas = (recordedCommitShas ?? []).map((s) => s.trim()).filter((s) => s !== '');
552
- if (shas.length > 0) {
553
- const span = resolveRecordedCommitRange(worktreePath, shas);
554
- if (span) {
555
- // A span is exact only when it re-lists ONLY the delivery's own commits.
556
- // When a sibling interleaves, the span re-absorbs it -> diff commit-by-commit.
557
- if (spanCoversRecordedExactly(worktreePath, span, shas))
558
- return { kind: 'range', range: span };
559
- return { kind: 'commits', commits: shas };
560
- }
561
- // Span boundary unreachable (e.g. --squash, or oldest is a root): if the
562
- // commits themselves still exist, diff them directly; else fall through to
563
- // topology rather than fabricate a range from missing commits.
564
- if (shas.every((s) => commitExists(worktreePath, s)))
565
- return { kind: 'commits', commits: shas };
624
+ const recordedSource = sourceFromOwnCommitSet(worktreePath, shas);
625
+ if (recordedSource)
626
+ return recordedSource;
627
+ // 1c. GIT-SOURCED commit set: the delivery's own commits found by searching the
628
+ // base branch for its Telora-Delivery trailer, INDEPENDENT of any focus_merges
629
+ // row. Consulted whether or not a record existed, so a missing/empty record no
630
+ // longer ends the search -- git still holds the trailer. This is the source that
631
+ // cures the 2026-08-16 blinding (ff merge-back, no record). It feeds the SAME
632
+ // interleaving guard, so a sibling never leaks into the range.
633
+ const did = (deliveryId ?? '').trim();
634
+ if (did !== '') {
635
+ const gitSource = sourceFromOwnCommitSet(worktreePath, resolveGitTrailerCommitSet(worktreePath, baseBranch, did));
636
+ if (gitSource)
637
+ return gitSource;
566
638
  }
567
639
  const recordedMerge = resolveRecordedMergeRange(worktreePath, recordedMergeSha);
568
640
  if (recordedMerge)
@@ -595,7 +667,7 @@ export function resolveDeliveryDiffSource(worktreePath, baseBranch, recordedMerg
595
667
  * empty-reason, e.g. "recorded commit set empty", "recorded sha refused as
596
668
  * non-merge", "zero commits ahead", "no merge commit found".
597
669
  */
598
- export function diagnoseEmptyDiffSource(worktreePath, baseBranch, recordedMergeSha, recordedCommitShas, recordedPreMergeRef) {
670
+ export function diagnoseEmptyDiffSource(worktreePath, baseBranch, recordedMergeSha, recordedCommitShas, recordedPreMergeRef, deliveryId) {
599
671
  const probes = [];
600
672
  // 1. RECORDED commit set (focus_merges.commit_shas, trailer-filtered per delivery).
601
673
  const shas = (recordedCommitShas ?? []).map((s) => s.trim()).filter((s) => s !== '');
@@ -620,6 +692,38 @@ export function diagnoseEmptyDiffSource(worktreePath, baseBranch, recordedMergeS
620
692
  reason: `recorded commit set present (${shas.length} commit(s)) and resolvable -- unexpected in an empty-source diagnosis`,
621
693
  });
622
694
  }
695
+ // 1c. GIT-SOURCED commit set (base-branch Telora-Delivery trailer search,
696
+ // independent of any record). The source that survives a missing record.
697
+ const did = (deliveryId ?? '').trim();
698
+ if (did === '') {
699
+ probes.push({
700
+ source: 'git_trailer_commit_set',
701
+ reason: 'no delivery id supplied to search git for the Telora-Delivery trailer',
702
+ });
703
+ }
704
+ else {
705
+ const gitShas = resolveGitTrailerCommitSet(worktreePath, baseBranch, did);
706
+ if (gitShas.length === 0) {
707
+ probes.push({
708
+ source: 'git_trailer_commit_set',
709
+ reason: `no commit on ${baseBranch} carries a parseable Telora-Delivery trailer for this delivery ` +
710
+ `(work never merged to base, or its commits were stamped without the trailer)`,
711
+ });
712
+ }
713
+ else if (!sourceFromOwnCommitSet(worktreePath, gitShas)) {
714
+ probes.push({
715
+ source: 'git_trailer_commit_set',
716
+ reason: `git trailer search found ${gitShas.length} commit(s) but neither a span nor the commits ` +
717
+ `themselves are reachable in the worktree`,
718
+ });
719
+ }
720
+ else {
721
+ probes.push({
722
+ source: 'git_trailer_commit_set',
723
+ reason: `git trailer search resolvable (${gitShas.length} commit(s)) -- unexpected in an empty-source diagnosis`,
724
+ });
725
+ }
726
+ }
623
727
  // 2. RECORDED merge commit (must be a real >= 2-parent merge).
624
728
  const mergeSha = (recordedMergeSha ?? '').trim();
625
729
  if (mergeSha === '') {
@@ -1 +1 @@
1
- {"version":3,"file":"git-diff.js","sourceRoot":"","sources":["../../../src/resolvers/shared/git-diff.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git-diff.js","sourceRoot":"","sources":["../../../src/resolvers/shared/git-diff.ts"],"names":[],"mappings":"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"}
@@ -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":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EACT,cAAc,EACd,cAAc,EACf,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,kBAAkB,EAClB,cAAc,EACf,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,OAAO,EAML,KAAK,sBAAsB,EAC5B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAA2D,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC5H,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAMhD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC;IAC3D,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC;IACnD,eAAe,EAAE,cAAc,CAAC,iBAAiB,CAAC,CAAC;IACnD,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,yBAAyB,EAAE,YAAY,CAAC,2BAA2B,CAAC,CAAC;IACrE,QAAQ,EAAE,OAAO,CAAC;IAClB,gGAAgG;IAChG,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;CAC7C,GAAG,sBAAsB,CAuBzB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,IAAI,EAAE,SAAS,CAAC;IAChB,aAAa,EAAE,sBAAsB,CAAC;IACtC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B;;;;;;;OAOG;IACH,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,MAAM,CAyCT;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB;;;;;;;;OAQG;IACH,IAAI,EAAE,SAAS,CAAC;IAChB,aAAa,EAAE,sBAAsB,CAAC;IACtC,SAAS,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;IACjD,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC;IAC3D,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC;IACnD,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC;IAC1D;;;;;;;OAOG;IACH,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,qBAAqB,EAAE,CAAC;CAC/C,GAAG,OAAO,CAAC,MAAM,CAAC,CAiGlB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC;IAC3D,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC;IACnD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,GAAG;IAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,cAAc,EAAE,OAAO,CAAA;CAAE,CAQvD;AAED,wBAAgB,qCAAqC,CACnD,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,EAC1D,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,GACjD,OAAO,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAWhD;AAED,wBAAgB,iCAAiC,CAAC,IAAI,EAAE;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC;CAC5D,GAAG,MAAM,CA+BT"}
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, ` +