@telora/daemon 0.22.104 → 0.22.132
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.
- package/build-info.json +4 -3
- package/dist/completion/commit-verdict-release.d.ts +49 -0
- package/dist/completion/commit-verdict-release.d.ts.map +1 -0
- package/dist/completion/commit-verdict-release.js +240 -0
- package/dist/completion/commit-verdict-release.js.map +1 -0
- package/dist/completion/completion-phase-registry.d.ts +10 -4
- package/dist/completion/completion-phase-registry.d.ts.map +1 -1
- package/dist/completion/completion-phase-registry.js +19 -7
- package/dist/completion/completion-phase-registry.js.map +1 -1
- package/dist/completion/detector.d.ts.map +1 -1
- package/dist/completion/detector.js +1 -0
- package/dist/completion/detector.js.map +1 -1
- package/dist/completion/event-entry-phases.d.ts +6 -3
- package/dist/completion/event-entry-phases.d.ts.map +1 -1
- package/dist/completion/event-entry-phases.js +135 -76
- package/dist/completion/event-entry-phases.js.map +1 -1
- package/dist/completion/event-phases.d.ts +24 -3
- package/dist/completion/event-phases.d.ts.map +1 -1
- package/dist/completion/event-phases.js +9 -9
- package/dist/completion/event-phases.js.map +1 -1
- package/dist/completion/event.d.ts +8 -0
- package/dist/completion/event.d.ts.map +1 -1
- package/dist/completion/event.js +47 -21
- package/dist/completion/event.js.map +1 -1
- package/dist/completion/exit-classification.d.ts.map +1 -1
- package/dist/completion/exit-classification.js +1 -0
- package/dist/completion/exit-classification.js.map +1 -1
- package/dist/completion/merge-phase.d.ts +21 -9
- package/dist/completion/merge-phase.d.ts.map +1 -1
- package/dist/completion/merge-phase.js +35 -10
- package/dist/completion/merge-phase.js.map +1 -1
- package/dist/completion/review-auto-approval-record.d.ts +19 -0
- package/dist/completion/review-auto-approval-record.d.ts.map +1 -0
- package/dist/completion/review-auto-approval-record.js +102 -0
- package/dist/completion/review-auto-approval-record.js.map +1 -0
- package/dist/completion/review-cycle-cap.d.ts +62 -0
- package/dist/completion/review-cycle-cap.d.ts.map +1 -0
- package/dist/completion/review-cycle-cap.js +180 -0
- package/dist/completion/review-cycle-cap.js.map +1 -0
- package/dist/completion/review-exit-deps.d.ts +17 -2
- package/dist/completion/review-exit-deps.d.ts.map +1 -1
- package/dist/completion/review-exit-deps.js +19 -2
- package/dist/completion/review-exit-deps.js.map +1 -1
- package/dist/completion/review-exit-escalations.d.ts +45 -23
- package/dist/completion/review-exit-escalations.d.ts.map +1 -1
- package/dist/completion/review-exit-escalations.js +15 -74
- package/dist/completion/review-exit-escalations.js.map +1 -1
- package/dist/completion/review-exit-evidence.d.ts +9 -0
- package/dist/completion/review-exit-evidence.d.ts.map +1 -1
- package/dist/completion/review-exit-evidence.js +4 -1
- package/dist/completion/review-exit-evidence.js.map +1 -1
- package/dist/completion/review-exit-foreign-findings.d.ts +151 -0
- package/dist/completion/review-exit-foreign-findings.d.ts.map +1 -0
- package/dist/completion/review-exit-foreign-findings.js +474 -0
- package/dist/completion/review-exit-foreign-findings.js.map +1 -0
- package/dist/completion/review-exit-phase.d.ts.map +1 -1
- package/dist/completion/review-exit-phase.js +71 -64
- package/dist/completion/review-exit-phase.js.map +1 -1
- package/dist/completion/review-exit-progress.d.ts +20 -0
- package/dist/completion/review-exit-progress.d.ts.map +1 -1
- package/dist/completion/review-exit-progress.js +28 -19
- package/dist/completion/review-exit-progress.js.map +1 -1
- package/dist/completion/review-exit-rehoming.d.ts +5 -0
- package/dist/completion/review-exit-rehoming.d.ts.map +1 -1
- package/dist/completion/review-exit-rehoming.js.map +1 -1
- package/dist/completion/review-exit-verdict-gate.d.ts +202 -0
- package/dist/completion/review-exit-verdict-gate.d.ts.map +1 -0
- package/dist/completion/review-exit-verdict-gate.js +228 -0
- package/dist/completion/review-exit-verdict-gate.js.map +1 -0
- package/dist/completion/review-next-step.d.ts +62 -0
- package/dist/completion/review-next-step.d.ts.map +1 -0
- package/dist/completion/review-next-step.js +63 -0
- package/dist/completion/review-next-step.js.map +1 -0
- package/dist/completion/session-hold-sweep-deps.d.ts +17 -0
- package/dist/completion/session-hold-sweep-deps.d.ts.map +1 -0
- package/dist/completion/session-hold-sweep-deps.js +89 -0
- package/dist/completion/session-hold-sweep-deps.js.map +1 -0
- package/dist/completion/session-hold.d.ts +180 -0
- package/dist/completion/session-hold.d.ts.map +1 -0
- package/dist/completion/session-hold.js +238 -0
- package/dist/completion/session-hold.js.map +1 -0
- package/dist/completion/state-cascade.d.ts +19 -0
- package/dist/completion/state-cascade.d.ts.map +1 -1
- package/dist/completion/state-cascade.js +85 -31
- package/dist/completion/state-cascade.js.map +1 -1
- package/dist/completion/team-lifecycle.d.ts +35 -2
- package/dist/completion/team-lifecycle.d.ts.map +1 -1
- package/dist/completion/team-lifecycle.js +165 -94
- package/dist/completion/team-lifecycle.js.map +1 -1
- package/dist/completion/team-phase.d.ts +27 -15
- package/dist/completion/team-phase.d.ts.map +1 -1
- package/dist/completion/team-phase.js +34 -15
- package/dist/completion/team-phase.js.map +1 -1
- package/dist/delivery/commit-verdict-hold.d.ts +55 -0
- package/dist/delivery/commit-verdict-hold.d.ts.map +1 -0
- package/dist/delivery/commit-verdict-hold.js +118 -0
- package/dist/delivery/commit-verdict-hold.js.map +1 -0
- package/dist/directive/directive-dispatch.d.ts.map +1 -1
- package/dist/directive/directive-dispatch.js +10 -3
- package/dist/directive/directive-dispatch.js.map +1 -1
- package/dist/directive/directive-executor.d.ts.map +1 -1
- package/dist/directive/directive-executor.js +1 -0
- package/dist/directive/directive-executor.js.map +1 -1
- package/dist/directive/directive-queue.d.ts.map +1 -1
- package/dist/directive/directive-queue.js +6 -1
- package/dist/directive/directive-queue.js.map +1 -1
- package/dist/directive/phase-sync.d.ts +29 -2
- package/dist/directive/phase-sync.d.ts.map +1 -1
- package/dist/directive/phase-sync.js +30 -6
- package/dist/directive/phase-sync.js.map +1 -1
- package/dist/drift/artifact-ref-shape.d.ts +34 -0
- package/dist/drift/artifact-ref-shape.d.ts.map +1 -0
- package/dist/drift/artifact-ref-shape.js +94 -0
- package/dist/drift/artifact-ref-shape.js.map +1 -0
- package/dist/drift/drift-eval-loop.d.ts +7 -0
- package/dist/drift/drift-eval-loop.d.ts.map +1 -1
- package/dist/drift/drift-eval-loop.js +34 -5
- package/dist/drift/drift-eval-loop.js.map +1 -1
- package/dist/drift/drift-evaluator.d.ts.map +1 -1
- package/dist/drift/drift-evaluator.js +8 -3
- package/dist/drift/drift-evaluator.js.map +1 -1
- package/dist/focus/awaiting-slot.d.ts +34 -0
- package/dist/focus/awaiting-slot.d.ts.map +1 -0
- package/dist/focus/awaiting-slot.js +26 -0
- package/dist/focus/awaiting-slot.js.map +1 -0
- package/dist/focus/focus-lifecycle.js +2 -2
- package/dist/focus/focus-lifecycle.js.map +1 -1
- package/dist/focus/focus-phase.d.ts.map +1 -1
- package/dist/focus/focus-phase.js +3 -1
- package/dist/focus/focus-phase.js.map +1 -1
- package/dist/focus/focus-spawn-decision.d.ts +62 -0
- package/dist/focus/focus-spawn-decision.d.ts.map +1 -0
- package/dist/focus/focus-spawn-decision.js +41 -0
- package/dist/focus/focus-spawn-decision.js.map +1 -0
- package/dist/focus/focus-team-state.d.ts.map +1 -1
- package/dist/focus/focus-team-state.js +1 -13
- package/dist/focus/focus-team-state.js.map +1 -1
- package/dist/focus/listener-spawn.d.ts +16 -55
- package/dist/focus/listener-spawn.d.ts.map +1 -1
- package/dist/focus/listener-spawn.js +102 -64
- package/dist/focus/listener-spawn.js.map +1 -1
- package/dist/focus/listener-state.d.ts.map +1 -1
- package/dist/focus/listener-state.js +4 -1
- package/dist/focus/listener-state.js.map +1 -1
- package/dist/focus/listener.d.ts +41 -2
- package/dist/focus/listener.d.ts.map +1 -1
- package/dist/focus/listener.js +135 -83
- package/dist/focus/listener.js.map +1 -1
- package/dist/focus/pending-spawn-pass-deps.d.ts +69 -0
- package/dist/focus/pending-spawn-pass-deps.d.ts.map +1 -0
- package/dist/focus/pending-spawn-pass-deps.js +34 -0
- package/dist/focus/pending-spawn-pass-deps.js.map +1 -0
- package/dist/focus/pending-spawn-review-next-step.d.ts +83 -0
- package/dist/focus/pending-spawn-review-next-step.d.ts.map +1 -0
- package/dist/focus/pending-spawn-review-next-step.js +325 -0
- package/dist/focus/pending-spawn-review-next-step.js.map +1 -0
- package/dist/focus/review-cycle-cap-hold.d.ts +132 -0
- package/dist/focus/review-cycle-cap-hold.d.ts.map +1 -0
- package/dist/focus/review-cycle-cap-hold.js +178 -0
- package/dist/focus/review-cycle-cap-hold.js.map +1 -0
- package/dist/focus/team-actionable-work.js +2 -2
- package/dist/focus/verify-open-issues.d.ts +22 -0
- package/dist/focus/verify-open-issues.d.ts.map +1 -1
- package/dist/focus/verify-open-issues.js +118 -57
- package/dist/focus/verify-open-issues.js.map +1 -1
- package/dist/focus/verify-routing-passes.d.ts +32 -0
- package/dist/focus/verify-routing-passes.d.ts.map +1 -0
- package/dist/focus/verify-routing-passes.js +18 -0
- package/dist/focus/verify-routing-passes.js.map +1 -0
- package/dist/git/index.d.ts.map +1 -1
- package/dist/git/index.js +9 -5
- package/dist/git/index.js.map +1 -1
- package/dist/merge/focus-merge.d.ts +16 -2
- package/dist/merge/focus-merge.d.ts.map +1 -1
- package/dist/merge/focus-merge.js +53 -30
- package/dist/merge/focus-merge.js.map +1 -1
- package/dist/merge/merge-back-loop.d.ts +5 -0
- package/dist/merge/merge-back-loop.d.ts.map +1 -1
- package/dist/merge/merge-back-loop.js +17 -8
- package/dist/merge/merge-back-loop.js.map +1 -1
- package/dist/merge/merge-gate-coverage.d.ts +94 -0
- package/dist/merge/merge-gate-coverage.d.ts.map +1 -0
- package/dist/merge/merge-gate-coverage.js +217 -0
- package/dist/merge/merge-gate-coverage.js.map +1 -0
- package/dist/prompt/focus-prompt-builder.d.ts.map +1 -1
- package/dist/prompt/focus-prompt-builder.js +6 -0
- package/dist/prompt/focus-prompt-builder.js.map +1 -1
- package/dist/prompt/prompt-listing.d.ts.map +1 -1
- package/dist/prompt/prompt-listing.js +8 -0
- package/dist/prompt/prompt-listing.js.map +1 -1
- package/dist/prompt/team-prompt-base.d.ts.map +1 -1
- package/dist/prompt/team-prompt-base.js +5 -1
- package/dist/prompt/team-prompt-base.js.map +1 -1
- package/dist/prompt-sections/execution-sections.d.ts.map +1 -1
- package/dist/prompt-sections/execution-sections.js +14 -39
- package/dist/prompt-sections/execution-sections.js.map +1 -1
- package/dist/prompt-sections/gate-ownership.d.ts +36 -0
- package/dist/prompt-sections/gate-ownership.d.ts.map +1 -0
- package/dist/prompt-sections/gate-ownership.js +68 -0
- package/dist/prompt-sections/gate-ownership.js.map +1 -0
- package/dist/prompt-sections/gate-verdict-section.d.ts +58 -0
- package/dist/prompt-sections/gate-verdict-section.d.ts.map +1 -0
- package/dist/prompt-sections/gate-verdict-section.js +88 -0
- package/dist/prompt-sections/gate-verdict-section.js.map +1 -0
- package/dist/prompt-sections/persona-sections.d.ts +10 -0
- package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
- package/dist/prompt-sections/persona-sections.js +35 -11
- package/dist/prompt-sections/persona-sections.js.map +1 -1
- package/dist/prompt-sections/shared.js +1 -1
- package/dist/prompt-sections/shared.js.map +1 -1
- package/dist/queries/agent-resolvable-promotion.d.ts +6 -3
- package/dist/queries/agent-resolvable-promotion.d.ts.map +1 -1
- package/dist/queries/agent-resolvable-promotion.js +20 -9
- package/dist/queries/agent-resolvable-promotion.js.map +1 -1
- package/dist/queries/deliveries.d.ts +46 -4
- package/dist/queries/deliveries.d.ts.map +1 -1
- package/dist/queries/deliveries.js +69 -16
- package/dist/queries/deliveries.js.map +1 -1
- package/dist/queries/delivery-gate-state.d.ts +151 -1
- package/dist/queries/delivery-gate-state.d.ts.map +1 -1
- package/dist/queries/delivery-gate-state.js +95 -14
- package/dist/queries/delivery-gate-state.js.map +1 -1
- package/dist/queries/delivery-write-discipline.d.ts +65 -0
- package/dist/queries/delivery-write-discipline.d.ts.map +1 -0
- package/dist/queries/delivery-write-discipline.js +101 -0
- package/dist/queries/delivery-write-discipline.js.map +1 -0
- package/dist/queries/escalation-consumption.d.ts +11 -0
- package/dist/queries/escalation-consumption.d.ts.map +1 -1
- package/dist/queries/escalation-consumption.js +22 -0
- package/dist/queries/escalation-consumption.js.map +1 -1
- package/dist/queries/escalation-spool.d.ts +75 -0
- package/dist/queries/escalation-spool.d.ts.map +1 -0
- package/dist/queries/escalation-spool.js +232 -0
- package/dist/queries/escalation-spool.js.map +1 -0
- package/dist/queries/escalation-suppression.d.ts.map +1 -1
- package/dist/queries/escalation-suppression.js +2 -0
- package/dist/queries/escalation-suppression.js.map +1 -1
- package/dist/queries/escalations.js +1 -1
- package/dist/queries/filing-observation.d.ts.map +1 -1
- package/dist/queries/filing-observation.js +2 -0
- package/dist/queries/filing-observation.js.map +1 -1
- package/dist/queries/focus-discovery.d.ts +4 -4
- package/dist/queries/focus-discovery.d.ts.map +1 -1
- package/dist/queries/focus-discovery.js +1 -0
- package/dist/queries/focus-discovery.js.map +1 -1
- package/dist/queries/focus-review-approval.d.ts +84 -0
- package/dist/queries/focus-review-approval.d.ts.map +1 -0
- package/dist/queries/focus-review-approval.js +158 -0
- package/dist/queries/focus-review-approval.js.map +1 -0
- package/dist/queries/focuses.d.ts +6 -5
- package/dist/queries/focuses.d.ts.map +1 -1
- package/dist/queries/focuses.js +9 -5
- package/dist/queries/focuses.js.map +1 -1
- package/dist/queries/incident-correlation.d.ts +5 -4
- package/dist/queries/incident-correlation.d.ts.map +1 -1
- package/dist/queries/incident-correlation.js +11 -5
- package/dist/queries/incident-correlation.js.map +1 -1
- package/dist/queries/issues.d.ts.map +1 -1
- package/dist/queries/issues.js +2 -1
- package/dist/queries/issues.js.map +1 -1
- package/dist/queries/loop-refusal-observation.d.ts +64 -0
- package/dist/queries/loop-refusal-observation.d.ts.map +1 -0
- package/dist/queries/loop-refusal-observation.js +137 -0
- package/dist/queries/loop-refusal-observation.js.map +1 -0
- package/dist/queries/schemas.d.ts +9 -0
- package/dist/queries/schemas.d.ts.map +1 -1
- package/dist/queries/schemas.js +11 -3
- package/dist/queries/schemas.js.map +1 -1
- package/dist/queries/shared.js +1 -1
- package/dist/queries/verification.d.ts.map +1 -1
- package/dist/queries/verification.js +1 -15
- package/dist/queries/verification.js.map +1 -1
- package/dist/queries/wire-contract.generated.d.ts +3 -0
- package/dist/queries/wire-contract.generated.d.ts.map +1 -1
- package/dist/queries/wire-contract.generated.js +3 -0
- package/dist/queries/wire-contract.generated.js.map +1 -1
- package/dist/resolvers/assembly-engine.d.ts.map +1 -1
- package/dist/resolvers/assembly-engine.js +3 -1
- package/dist/resolvers/assembly-engine.js.map +1 -1
- package/dist/resolvers/git-diff-against-base.d.ts +5 -2
- package/dist/resolvers/git-diff-against-base.d.ts.map +1 -1
- package/dist/resolvers/git-diff-against-base.js +121 -39
- package/dist/resolvers/git-diff-against-base.js.map +1 -1
- package/dist/resolvers/shared/git-diff.d.ts +2 -0
- package/dist/resolvers/shared/git-diff.d.ts.map +1 -1
- package/dist/resolvers/shared/git-diff.js +5 -1
- package/dist/resolvers/shared/git-diff.js.map +1 -1
- package/dist/resolvers/shared/review-window-commits.d.ts +96 -0
- package/dist/resolvers/shared/review-window-commits.d.ts.map +1 -0
- package/dist/resolvers/shared/review-window-commits.js +262 -0
- package/dist/resolvers/shared/review-window-commits.js.map +1 -0
- package/dist/session/session-lineage.d.ts.map +1 -1
- package/dist/session/session-lineage.js +4 -1
- package/dist/session/session-lineage.js.map +1 -1
- package/dist/shell/fail-stop.d.ts +18 -0
- package/dist/shell/fail-stop.d.ts.map +1 -0
- package/dist/shell/fail-stop.js +53 -0
- package/dist/shell/fail-stop.js.map +1 -0
- package/dist/shell/graceful-shutdown.d.ts +48 -0
- package/dist/shell/graceful-shutdown.d.ts.map +1 -0
- package/dist/shell/graceful-shutdown.js +152 -0
- package/dist/shell/graceful-shutdown.js.map +1 -0
- package/dist/shell/heartbeat.d.ts.map +1 -1
- package/dist/shell/heartbeat.js +5 -4
- package/dist/shell/heartbeat.js.map +1 -1
- package/dist/shell/log.d.ts.map +1 -1
- package/dist/shell/log.js +4 -1
- package/dist/shell/log.js.map +1 -1
- package/dist/shell/stop-request.d.ts.map +1 -1
- package/dist/shell/stop-request.js +2 -1
- package/dist/shell/stop-request.js.map +1 -1
- package/dist/shell/unified-shell.d.ts.map +1 -1
- package/dist/shell/unified-shell.js +41 -114
- package/dist/shell/unified-shell.js.map +1 -1
- package/dist/spawn/lifecycle.d.ts +12 -0
- package/dist/spawn/lifecycle.d.ts.map +1 -1
- package/dist/spawn/lifecycle.js +25 -21
- package/dist/spawn/lifecycle.js.map +1 -1
- package/dist/spawn/prompt-assembly.d.ts +19 -1
- package/dist/spawn/prompt-assembly.d.ts.map +1 -1
- package/dist/spawn/prompt-assembly.js +70 -21
- package/dist/spawn/prompt-assembly.js.map +1 -1
- package/dist/spawn/review-hold-park.d.ts.map +1 -1
- package/dist/spawn/review-hold-park.js +18 -8
- package/dist/spawn/review-hold-park.js.map +1 -1
- package/dist/spawn/spawn-cooldown.d.ts.map +1 -1
- package/dist/spawn/spawn-cooldown.js +4 -0
- package/dist/spawn/spawn-cooldown.js.map +1 -1
- package/dist/spawn/spawn-decision.d.ts.map +1 -1
- package/dist/spawn/spawn-decision.js +2 -1
- package/dist/spawn/spawn-decision.js.map +1 -1
- package/dist/spawn/worktree-session.d.ts +6 -0
- package/dist/spawn/worktree-session.d.ts.map +1 -1
- package/dist/spawn/worktree-session.js +15 -2
- package/dist/spawn/worktree-session.js.map +1 -1
- package/dist/testing/fixtures/index.d.ts +10 -1
- package/dist/testing/fixtures/index.d.ts.map +1 -1
- package/dist/testing/fixtures/index.js +59 -1
- package/dist/testing/fixtures/index.js.map +1 -1
- package/dist/testing/fixtures/pending-spawn-world.d.ts +34 -0
- package/dist/testing/fixtures/pending-spawn-world.d.ts.map +1 -0
- package/dist/testing/fixtures/pending-spawn-world.js +92 -0
- package/dist/testing/fixtures/pending-spawn-world.js.map +1 -0
- package/dist/types/index.js +1 -1
- package/dist/verify/commit-gate-configured.d.ts +86 -0
- package/dist/verify/commit-gate-configured.d.ts.map +1 -0
- package/dist/verify/commit-gate-configured.js +234 -0
- package/dist/verify/commit-gate-configured.js.map +1 -0
- package/dist/verify/commit-verdict-record.d.ts +98 -0
- package/dist/verify/commit-verdict-record.d.ts.map +1 -0
- package/dist/verify/commit-verdict-record.js +297 -0
- package/dist/verify/commit-verdict-record.js.map +1 -0
- package/dist/verify/explicit-gate-outcome.d.ts +161 -0
- package/dist/verify/explicit-gate-outcome.d.ts.map +1 -0
- package/dist/verify/explicit-gate-outcome.js +215 -0
- package/dist/verify/explicit-gate-outcome.js.map +1 -0
- package/dist/verify/explicit-rearm.d.ts +27 -0
- package/dist/verify/explicit-rearm.d.ts.map +1 -0
- package/dist/verify/explicit-rearm.js +161 -0
- package/dist/verify/explicit-rearm.js.map +1 -0
- package/dist/verify/explicit-run-ledger.d.ts +26 -0
- package/dist/verify/explicit-run-ledger.d.ts.map +1 -0
- package/dist/verify/explicit-run-ledger.js +93 -0
- package/dist/verify/explicit-run-ledger.js.map +1 -0
- package/dist/verify/failure-signature.d.ts.map +1 -1
- package/dist/verify/failure-signature.js +5 -1
- package/dist/verify/failure-signature.js.map +1 -1
- package/dist/verify/gate-run-registry.d.ts +105 -0
- package/dist/verify/gate-run-registry.d.ts.map +1 -0
- package/dist/verify/gate-run-registry.js +111 -0
- package/dist/verify/gate-run-registry.js.map +1 -0
- package/dist/verify/gate-verdict-source.d.ts +68 -0
- package/dist/verify/gate-verdict-source.d.ts.map +1 -0
- package/dist/verify/gate-verdict-source.js +143 -0
- package/dist/verify/gate-verdict-source.js.map +1 -0
- package/dist/verify/judged-commit-gate.d.ts +11 -0
- package/dist/verify/judged-commit-gate.d.ts.map +1 -0
- package/dist/verify/judged-commit-gate.js +48 -0
- package/dist/verify/judged-commit-gate.js.map +1 -0
- package/dist/verify/rework-judgment.d.ts +58 -0
- package/dist/verify/rework-judgment.d.ts.map +1 -0
- package/dist/verify/rework-judgment.js +54 -0
- package/dist/verify/rework-judgment.js.map +1 -0
- package/dist/verify/verification-attribution.d.ts +105 -0
- package/dist/verify/verification-attribution.d.ts.map +1 -0
- package/dist/verify/verification-attribution.js +322 -0
- package/dist/verify/verification-attribution.js.map +1 -0
- package/dist/verify/verification-baseline-run.d.ts +123 -0
- package/dist/verify/verification-baseline-run.d.ts.map +1 -0
- package/dist/verify/verification-baseline-run.js +386 -0
- package/dist/verify/verification-baseline-run.js.map +1 -0
- package/dist/verify/verification-baseline.d.ts +79 -33
- package/dist/verify/verification-baseline.d.ts.map +1 -1
- package/dist/verify/verification-baseline.js +99 -106
- package/dist/verify/verification-baseline.js.map +1 -1
- package/dist/verify/verification-checkout.d.ts +13 -0
- package/dist/verify/verification-checkout.d.ts.map +1 -1
- package/dist/verify/verification-checkout.js +39 -2
- package/dist/verify/verification-checkout.js.map +1 -1
- package/dist/verify/verification-commit-sharing.d.ts +84 -0
- package/dist/verify/verification-commit-sharing.d.ts.map +1 -0
- package/dist/verify/verification-commit-sharing.js +416 -0
- package/dist/verify/verification-commit-sharing.js.map +1 -0
- package/dist/verify/verification-config.d.ts.map +1 -1
- package/dist/verify/verification-config.js +12 -2
- package/dist/verify/verification-config.js.map +1 -1
- package/dist/verify/verification-default-on.d.ts +27 -11
- package/dist/verify/verification-default-on.d.ts.map +1 -1
- package/dist/verify/verification-default-on.js +159 -29
- package/dist/verify/verification-default-on.js.map +1 -1
- package/dist/verify/verification-deps-default.d.ts.map +1 -1
- package/dist/verify/verification-deps-default.js +49 -42
- package/dist/verify/verification-deps-default.js.map +1 -1
- package/dist/verify/verification-deps.d.ts +69 -4
- package/dist/verify/verification-deps.d.ts.map +1 -1
- package/dist/verify/verification-deterministic.d.ts +15 -2
- package/dist/verify/verification-deterministic.d.ts.map +1 -1
- package/dist/verify/verification-deterministic.js +12 -3
- package/dist/verify/verification-deterministic.js.map +1 -1
- package/dist/verify/verification-diagnostics.d.ts +16 -0
- package/dist/verify/verification-diagnostics.d.ts.map +1 -0
- package/dist/verify/verification-diagnostics.js +219 -0
- package/dist/verify/verification-diagnostics.js.map +1 -0
- package/dist/verify/verification-engine.d.ts +12 -8
- package/dist/verify/verification-engine.d.ts.map +1 -1
- package/dist/verify/verification-engine.js +110 -92
- package/dist/verify/verification-engine.js.map +1 -1
- package/dist/verify/verification-evidence-unavailable-feedback.d.ts +2 -1
- package/dist/verify/verification-evidence-unavailable-feedback.d.ts.map +1 -1
- package/dist/verify/verification-evidence-unavailable-feedback.js +14 -4
- package/dist/verify/verification-evidence-unavailable-feedback.js.map +1 -1
- package/dist/verify/verification-failure-parser.d.ts +37 -3
- package/dist/verify/verification-failure-parser.d.ts.map +1 -1
- package/dist/verify/verification-failure-parser.js +66 -3
- package/dist/verify/verification-failure-parser.js.map +1 -1
- package/dist/verify/verification-feedback.d.ts +21 -34
- package/dist/verify/verification-feedback.d.ts.map +1 -1
- package/dist/verify/verification-feedback.js +37 -88
- package/dist/verify/verification-feedback.js.map +1 -1
- package/dist/verify/verification-gate-stages.d.ts +110 -0
- package/dist/verify/verification-gate-stages.d.ts.map +1 -0
- package/dist/verify/verification-gate-stages.js +179 -0
- package/dist/verify/verification-gate-stages.js.map +1 -0
- package/dist/verify/verification-history-reset.d.ts +61 -0
- package/dist/verify/verification-history-reset.d.ts.map +1 -0
- package/dist/verify/verification-history-reset.js +90 -0
- package/dist/verify/verification-history-reset.js.map +1 -0
- package/dist/verify/verification-manifest.d.ts.map +1 -1
- package/dist/verify/verification-manifest.js +2 -1
- package/dist/verify/verification-manifest.js.map +1 -1
- package/dist/verify/verification-rework-messages.d.ts +19 -0
- package/dist/verify/verification-rework-messages.d.ts.map +1 -0
- package/dist/verify/verification-rework-messages.js +52 -0
- package/dist/verify/verification-rework-messages.js.map +1 -0
- package/dist/worktree/install-inputs.d.ts +89 -0
- package/dist/worktree/install-inputs.d.ts.map +1 -0
- package/dist/worktree/install-inputs.js +625 -0
- package/dist/worktree/install-inputs.js.map +1 -0
- package/dist/worktree/install-script-effects.d.ts +30 -0
- package/dist/worktree/install-script-effects.d.ts.map +1 -0
- package/dist/worktree/install-script-effects.js +524 -0
- package/dist/worktree/install-script-effects.js.map +1 -0
- package/dist/worktree/install-script-tokens.d.ts +57 -0
- package/dist/worktree/install-script-tokens.d.ts.map +1 -0
- package/dist/worktree/install-script-tokens.js +299 -0
- package/dist/worktree/install-script-tokens.js.map +1 -0
- package/dist/worktree/provision.d.ts +27 -4
- package/dist/worktree/provision.d.ts.map +1 -1
- package/dist/worktree/provision.js +46 -7
- package/dist/worktree/provision.js.map +1 -1
- package/dist/worktree/safety.d.ts +11 -0
- package/dist/worktree/safety.d.ts.map +1 -1
- package/dist/worktree/safety.js +20 -3
- package/dist/worktree/safety.js.map +1 -1
- package/dist/worktree/verify-interlock.d.ts.map +1 -1
- package/dist/worktree/verify-interlock.js +3 -1
- package/dist/worktree/verify-interlock.js.map +1 -1
- package/dist/worktree/worktree-package-provisioning.d.ts +75 -0
- package/dist/worktree/worktree-package-provisioning.d.ts.map +1 -0
- package/dist/worktree/worktree-package-provisioning.js +362 -0
- package/dist/worktree/worktree-package-provisioning.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
|
+
// Pinned by: packages/daemon/src/completion/review-exit-foreign-findings.test.ts,
|
|
3
|
+
// packages/daemon/src/completion/review-exit-foreign-focus-regression.test.ts,
|
|
4
|
+
// packages/daemon/src/resolvers/shared/review-window-commits.test.ts
|
|
5
|
+
// PINNED-BY-END
|
|
6
|
+
/**
|
|
7
|
+
* Partition a review window's commits into the reviewing focus's OWN work and
|
|
8
|
+
* another focus's work, by each commit's `Telora-Delivery` trailer.
|
|
9
|
+
*
|
|
10
|
+
* The failure this serves (2026-09-15): a focus branch merges integration back
|
|
11
|
+
* in, so its incremental review range (reviewed_through_sha..tip) carries every
|
|
12
|
+
* commit a SIBLING focus merged to integration. The reviewer judged those commits
|
|
13
|
+
* as this focus's work and filed their defects on this focus's in-verify delivery
|
|
14
|
+
* -- so the focus re-entered coding for code it did not write, and could not
|
|
15
|
+
* converge while the sibling kept changing shared code (10 gaps_found cycles with
|
|
16
|
+
* every acceptance criterion met).
|
|
17
|
+
*
|
|
18
|
+
* The trailer is the per-commit fact that attributes a commit to a delivery
|
|
19
|
+
* (docs/daemon/verify-evidence-and-attribution.md section 3). A commit whose
|
|
20
|
+
* trailer names a delivery OUTSIDE the reviewing focus's delivery set is foreign.
|
|
21
|
+
* Everything else -- this focus's own trailers, the non-delivery sentinel, and an
|
|
22
|
+
* unattributed commit -- counts as the focus's own: the partition fails toward
|
|
23
|
+
* JUDGING a commit, never toward skipping one.
|
|
24
|
+
*
|
|
25
|
+
* Consumers: the git.diff_against_base resolver (a window carrying foreign
|
|
26
|
+
* commits is judged on the focus's own commit patches only -- buildOwnCommitsDiff
|
|
27
|
+
* -- with the foreign commits listed as not-judged context) and the review-exit
|
|
28
|
+
* foreign-finding backstop (completion/review-exit-foreign-findings.ts), which
|
|
29
|
+
* also attributes a sha-less file:line finding by blame (blameLineCommits).
|
|
30
|
+
*
|
|
31
|
+
* @module resolvers/shared/review-window-commits
|
|
32
|
+
*/
|
|
33
|
+
import { execFileSync } from 'node:child_process';
|
|
34
|
+
import { DELIVERY_TRAILER_KEY, classifyTrailerValue } from './git-diff.js';
|
|
35
|
+
/**
|
|
36
|
+
* The most commits one window read classifies. A window past it is truncated to
|
|
37
|
+
* its newest commits, and the rest are simply not listed as foreign -- so an
|
|
38
|
+
* oversized window fails toward judging (an unlisted commit is treated as own,
|
|
39
|
+
* and the resolver judges the aggregate diff rather than an incomplete own set).
|
|
40
|
+
*/
|
|
41
|
+
export const REVIEW_WINDOW_COMMIT_CAP = 500;
|
|
42
|
+
/**
|
|
43
|
+
* Pure: partition a window by trailer. Foreign iff the trailer names a delivery
|
|
44
|
+
* not in `ownDeliveryIds`. An EMPTY own set partitions nothing as foreign -- with
|
|
45
|
+
* no known deliveries every trailered commit would read foreign, which is a
|
|
46
|
+
* missing input, not a finding.
|
|
47
|
+
*/
|
|
48
|
+
export function partitionReviewWindowCommits(commits, ownDeliveryIds) {
|
|
49
|
+
const own = [];
|
|
50
|
+
const foreign = [];
|
|
51
|
+
for (const c of commits) {
|
|
52
|
+
if (ownDeliveryIds.size > 0 && c.attribution.kind === 'delivery' && !ownDeliveryIds.has(c.attribution.deliveryId)) {
|
|
53
|
+
foreign.push({ sha: c.sha, subject: c.subject, deliveryId: c.attribution.deliveryId });
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
own.push(c);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return { own, foreign };
|
|
60
|
+
}
|
|
61
|
+
const FIELD_SEP = '\x1f';
|
|
62
|
+
const RECORD_SEP = '\x1e';
|
|
63
|
+
const GIT_READ = { maxBuffer: 10 * 1024 * 1024, encoding: 'utf-8', stdio: ['ignore', 'pipe', 'pipe'] };
|
|
64
|
+
/**
|
|
65
|
+
* Pure: parse the batched `git log` output {@link listReviewWindowCommits} reads.
|
|
66
|
+
* Each record is `<sha> US <subject> US <trailer values, newline-separated> RS`;
|
|
67
|
+
* the first non-empty trailer value is taken, exactly as readDeliveryTrailer does.
|
|
68
|
+
*/
|
|
69
|
+
export function parseReviewWindowLog(output) {
|
|
70
|
+
const commits = [];
|
|
71
|
+
for (const record of output.split(RECORD_SEP)) {
|
|
72
|
+
const trimmed = record.replace(/^\n+/, '');
|
|
73
|
+
if (trimmed === '')
|
|
74
|
+
continue;
|
|
75
|
+
const [sha = '', subject = '', trailers = ''] = trimmed.split(FIELD_SEP);
|
|
76
|
+
const cleanSha = sha.trim();
|
|
77
|
+
if (cleanSha === '')
|
|
78
|
+
continue;
|
|
79
|
+
const raw = trailers.split('\n').map((l) => l.trim()).find((l) => l !== '') ?? '';
|
|
80
|
+
commits.push({ sha: cleanSha, subject: subject.trim(), attribution: classifyTrailerValue(raw) });
|
|
81
|
+
}
|
|
82
|
+
return commits;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* The non-merge commits in `<base>..<tip>` (newest first), each classified by its
|
|
86
|
+
* `Telora-Delivery` trailer through the same git trailer parse the per-commit read
|
|
87
|
+
* uses. One git process for the whole window. Returns null when git fails (an
|
|
88
|
+
* unreadable ref or worktree) so a caller can tell "unreadable" from "empty".
|
|
89
|
+
* Merges are excluded: a merge carries no trailer, and its own content (a conflict
|
|
90
|
+
* resolution) is the merging focus's work.
|
|
91
|
+
*/
|
|
92
|
+
export function listReviewWindowCommits(worktreePath, base, tip, cap = REVIEW_WINDOW_COMMIT_CAP) {
|
|
93
|
+
const from = (base ?? '').trim();
|
|
94
|
+
const to = (tip ?? '').trim();
|
|
95
|
+
if (worktreePath === '' || from === '' || to === '')
|
|
96
|
+
return null;
|
|
97
|
+
try {
|
|
98
|
+
const out = execFileSync('git', [
|
|
99
|
+
'log',
|
|
100
|
+
'--no-merges',
|
|
101
|
+
`--max-count=${cap}`,
|
|
102
|
+
`--format=%H${FIELD_SEP}%s${FIELD_SEP}%(trailers:key=${DELIVERY_TRAILER_KEY},valueonly)${RECORD_SEP}`,
|
|
103
|
+
`${from}..${to}`,
|
|
104
|
+
'--',
|
|
105
|
+
], { cwd: worktreePath, ...GIT_READ });
|
|
106
|
+
return parseReviewWindowLog(out);
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* The merge commits on the FIRST-PARENT chain of `<base>..<tip>` (newest first):
|
|
114
|
+
* the merges made on the focus branch itself (integration merged in). Their
|
|
115
|
+
* conflict resolutions are the focus's own work. A merge reached only through a
|
|
116
|
+
* second parent (a sibling branch merged into integration) is not listed. Null
|
|
117
|
+
* when git fails.
|
|
118
|
+
*/
|
|
119
|
+
export function listFirstParentMerges(worktreePath, base, tip) {
|
|
120
|
+
if (worktreePath === '' || base.trim() === '' || tip.trim() === '')
|
|
121
|
+
return null;
|
|
122
|
+
try {
|
|
123
|
+
const out = execFileSync('git', ['rev-list', '--merges', '--first-parent', `${base.trim()}..${tip.trim()}`, '--'], {
|
|
124
|
+
cwd: worktreePath, ...GIT_READ,
|
|
125
|
+
});
|
|
126
|
+
return out.split('\n').map((l) => l.trim()).filter((l) => l !== '');
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* One commit's own patch, headed `commit <short sha> <subject>`. A merge shows
|
|
134
|
+
* what it changed over git's automatic re-merge of its parents
|
|
135
|
+
* (`--remerge-diff`): every conflict it decided -- including one resolved to
|
|
136
|
+
* exactly one parent's side, which a dense combined diff (`--cc`) omits
|
|
137
|
+
* entirely -- and any edit beyond the merge, with the incoming side shown only
|
|
138
|
+
* inside the conflict it decided. A clean merge yields ''; a non-merge commit's
|
|
139
|
+
* patch is unchanged by the flag. Null when git fails (the caller then judges
|
|
140
|
+
* the aggregate diff).
|
|
141
|
+
*/
|
|
142
|
+
function showCommitPatch(worktreePath, sha) {
|
|
143
|
+
try {
|
|
144
|
+
const out = execFileSync('git', ['show', '--no-color', '--remerge-diff', `--format=${FIELD_SEP}%h %s${FIELD_SEP}`, sha, '--'], {
|
|
145
|
+
cwd: worktreePath, ...GIT_READ,
|
|
146
|
+
});
|
|
147
|
+
const [, header = '', ...rest] = out.split(FIELD_SEP);
|
|
148
|
+
const body = rest.join(FIELD_SEP).replace(/^\n+/, '');
|
|
149
|
+
return body.trim() === '' ? '' : `commit ${header}\n${body}`;
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
return null;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/** `git show --stat` of one commit (the truncation header). Empty on failure. */
|
|
156
|
+
function showCommitStat(worktreePath, sha) {
|
|
157
|
+
try {
|
|
158
|
+
return execFileSync('git', ['show', '--no-color', '--stat', '--format=commit %h %s', sha, '--'], {
|
|
159
|
+
cwd: worktreePath, ...GIT_READ,
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
return '';
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* The judged diff when a review window carries foreign commits: each OWN
|
|
168
|
+
* non-merge commit's patch (oldest first), then the conflict resolutions of the
|
|
169
|
+
* merges on the focus branch's first-parent chain -- never a foreign commit's
|
|
170
|
+
* hunks. Null when any git read fails, so the caller falls back to the aggregate
|
|
171
|
+
* diff (fail toward judging, never toward a silently thinner diff).
|
|
172
|
+
*/
|
|
173
|
+
export function buildOwnCommitsDiff(worktreePath, base, own) {
|
|
174
|
+
const merges = listFirstParentMerges(worktreePath, base, 'HEAD');
|
|
175
|
+
if (merges === null)
|
|
176
|
+
return null;
|
|
177
|
+
const shas = [...own.map((c) => c.sha)].reverse().concat([...merges].reverse());
|
|
178
|
+
const patches = [];
|
|
179
|
+
for (const sha of shas) {
|
|
180
|
+
const patch = showCommitPatch(worktreePath, sha);
|
|
181
|
+
if (patch === null)
|
|
182
|
+
return null;
|
|
183
|
+
if (patch !== '')
|
|
184
|
+
patches.push(patch);
|
|
185
|
+
}
|
|
186
|
+
return {
|
|
187
|
+
diff: patches.join('\n'),
|
|
188
|
+
stat: () => shas.map((sha) => showCommitStat(worktreePath, sha)).filter((s) => s.trim() !== '').join('\n'),
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Pure: the commit each line of `git blame --porcelain` output is attributed to,
|
|
193
|
+
* in line order. Every blamed line opens with a `<40-hex sha> <orig> <final>`
|
|
194
|
+
* header (the first line of a group adds a count); content lines start with a tab.
|
|
195
|
+
*/
|
|
196
|
+
export function parseBlamePorcelain(output) {
|
|
197
|
+
const shas = [];
|
|
198
|
+
for (const line of output.split('\n')) {
|
|
199
|
+
const m = /^([0-9a-f]{40}) \d+ \d+/.exec(line);
|
|
200
|
+
if (m?.[1])
|
|
201
|
+
shas.push(m[1]);
|
|
202
|
+
}
|
|
203
|
+
return shas;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* The commit that last changed each line `start..end` (1-based, inclusive) of
|
|
207
|
+
* `file` as of `tip` (`git blame --porcelain`), in line order. Null when the
|
|
208
|
+
* range is malformed or git fails (a missing file, a range past the end of the
|
|
209
|
+
* file, an unreadable ref), or when the read does not cover every requested line
|
|
210
|
+
* -- so a caller can tell "unblameable" from an attribution.
|
|
211
|
+
*/
|
|
212
|
+
export function blameLineCommits(worktreePath, tip, file, start, end) {
|
|
213
|
+
if (worktreePath === '' || tip.trim() === '' || file.trim() === '')
|
|
214
|
+
return null;
|
|
215
|
+
if (!Number.isInteger(start) || !Number.isInteger(end) || start < 1 || end < start)
|
|
216
|
+
return null;
|
|
217
|
+
try {
|
|
218
|
+
const out = execFileSync('git', ['blame', '--porcelain', '-L', `${start},${end}`, tip.trim(), '--', file], {
|
|
219
|
+
cwd: worktreePath, ...GIT_READ,
|
|
220
|
+
});
|
|
221
|
+
const shas = parseBlamePorcelain(out);
|
|
222
|
+
return shas.length === end - start + 1 ? shas : null;
|
|
223
|
+
}
|
|
224
|
+
catch {
|
|
225
|
+
return null;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Pure: the prompt section that marks foreign commits in the reviewer's range as
|
|
230
|
+
* not this focus's work. Empty string when there are none (the section is omitted).
|
|
231
|
+
* `hunksExcluded`: the judged diff left their changes out (own-commit scoping), so
|
|
232
|
+
* the list is context only; otherwise (the aggregate fallback) their hunks are in
|
|
233
|
+
* the diff and the list tells the reviewer not to judge them.
|
|
234
|
+
*/
|
|
235
|
+
export function buildForeignCommitsSection(foreign, opts = {}) {
|
|
236
|
+
if (foreign.length === 0)
|
|
237
|
+
return '';
|
|
238
|
+
const lines = [
|
|
239
|
+
'### Commits in this range that are NOT this focus\'s work',
|
|
240
|
+
'',
|
|
241
|
+
...(opts.hunksExcluded
|
|
242
|
+
? [
|
|
243
|
+
'These commits are in this review\'s range, but their `Telora-Delivery` trailer names a',
|
|
244
|
+
'delivery of ANOTHER focus (they arrived by merging integration). Their changes are NOT in',
|
|
245
|
+
'the diff below and are not judged as this focus\'s work -- this list is context only. A',
|
|
246
|
+
'blocking defect you find in one of them anyway is filed on its OWNING delivery (listed),',
|
|
247
|
+
'with the commit sha named in the issue description -- never on this focus\'s in-verify delivery.',
|
|
248
|
+
]
|
|
249
|
+
: [
|
|
250
|
+
'These commits are in the diff range above, but their `Telora-Delivery` trailer names a',
|
|
251
|
+
'delivery of ANOTHER focus (they arrived by merging integration). Do not judge them as this',
|
|
252
|
+
'focus\'s work. A blocking defect in one of them is filed on its OWNING delivery (listed),',
|
|
253
|
+
'with the commit sha named in the issue description -- never on this focus\'s in-verify delivery.',
|
|
254
|
+
]),
|
|
255
|
+
'',
|
|
256
|
+
];
|
|
257
|
+
for (const c of foreign) {
|
|
258
|
+
lines.push(`- \`${c.sha.slice(0, 12)}\` ${c.subject} (owning delivery \`${c.deliveryId}\`)`);
|
|
259
|
+
}
|
|
260
|
+
return lines.join('\n');
|
|
261
|
+
}
|
|
262
|
+
//# sourceMappingURL=review-window-commits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-window-commits.js","sourceRoot":"","sources":["../../../src/resolvers/shared/review-window-commits.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-lineage.d.ts","sourceRoot":"","sources":["../../src/session/session-lineage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session-lineage.d.ts","sourceRoot":"","sources":["../../src/session/session-lineage.ts"],"names":[],"mappings":"AAWA;;;;;;;;;;;;;;GAcG;AAEH,oDAAoD;AACpD,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEnD,8DAA8D;AAC9D,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,iBAAiB,CAAC;CAC/B;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACvC,QAAQ,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,UAAU,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,GAAG,SAAS,CAAC;IAChG,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CACtC,GAAG,WAAW,CAKd;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,iBAAiB,CAAC;CAC/B,GAAG,MAAM,GAAG,IAAI,CAGhB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,EAC9C,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAExB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,+EAA+E;IAC/E,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,8DAA8D;IAC9D,cAAc,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,aAAa,EAAE,OAAO,CAAC;CACxB,GAAG,OAAO,CAKV"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
2
|
// Pinned by: packages/daemon/src/directive/directive-executor-characterization.test.ts,
|
|
3
3
|
// packages/daemon/src/focus/focus-executor-characterization.test.ts,
|
|
4
|
+
// packages/daemon/src/integration/review-rework-resume-verdict.test.ts,
|
|
5
|
+
// packages/daemon/src/integration/verification-rework-resume-verdict.test.ts,
|
|
4
6
|
// packages/daemon/src/session/session-lineage.test.ts,
|
|
5
7
|
// packages/daemon/src/session/session-pass-close.test.ts,
|
|
6
|
-
// packages/daemon/src/session/session-pass-write-path.test.ts
|
|
8
|
+
// packages/daemon/src/session/session-pass-write-path.test.ts,
|
|
9
|
+
// packages/daemon/src/spawn/prompt-assembly-resume-verdict.test.ts
|
|
7
10
|
// PINNED-BY-END
|
|
8
11
|
/**
|
|
9
12
|
* Persisted resume-slot key for an engine + lineage pair.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-lineage.js","sourceRoot":"","sources":["../../src/session/session-lineage.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,wFAAwF;AACxF,uEAAuE;AACvE,yDAAyD;AACzD,4DAA4D;AAC5D,
|
|
1
|
+
{"version":3,"file":"session-lineage.js","sourceRoot":"","sources":["../../src/session/session-lineage.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,wFAAwF;AACxF,uEAAuE;AACvE,0EAA0E;AAC1E,gFAAgF;AAChF,yDAAyD;AACzD,4DAA4D;AAC5D,iEAAiE;AACjE,qEAAqE;AACrE,gBAAgB;AA2BhB;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,OAAe;IAC7D,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,OAAO,EAAE,CAAC;AACpE,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAGlC;IACC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO;WACjC,CAAC,IAAI,CAAC,SAAS,KAAK,WAAW,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC3F,MAAM,UAAU,GAAsB,IAAI,CAAC,QAAQ,EAAE,UAAU,IAAI,QAAQ,CAAC;IAC5E,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;AACjC,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe,CAAC,IAK/B;IACC,IAAI,IAAI,CAAC,UAAU,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IAC7C,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC;AAC/E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,GAA8C,EAC9C,QAAgB,EAChB,OAAe,EACf,SAAiB;IAEjB,OAAO,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;AAC3E,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,eAAe,CAAC,IAO/B;IACC,IAAI,IAAI,CAAC,kBAAkB,KAAK,IAAI,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,kBAAkB,KAAK,IAAI,CAAC,cAAc,CAAC;IACzD,CAAC;IACD,OAAO,IAAI,CAAC,aAAa,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** The exit code a fail-stopped daemon exits with (EX_SOFTWARE). */
|
|
2
|
+
export declare const FAIL_STOP_EXIT_CODE = 70;
|
|
3
|
+
/** Injectable seam; defaults to signalling this process. */
|
|
4
|
+
export interface FailStopDeps {
|
|
5
|
+
signalSelf?: () => void;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Request the daemon fail-stop, naming why. Returns false when one was already
|
|
9
|
+
* requested (nothing is signalled again).
|
|
10
|
+
*/
|
|
11
|
+
export declare function requestDaemonFailStop(reason: string, deps?: FailStopDeps): boolean;
|
|
12
|
+
/** Whether a fail-stop was requested: its SIGTERM tears down at once, never at a drain boundary (shell/graceful-shutdown.ts). */
|
|
13
|
+
export declare function isDaemonFailStopRequested(): boolean;
|
|
14
|
+
/** The exit code the graceful shutdown exits with: FAIL_STOP_EXIT_CODE once a fail-stop was requested, else 0. */
|
|
15
|
+
export declare function daemonExitCode(): number;
|
|
16
|
+
/** Test-only: forget a requested fail-stop. */
|
|
17
|
+
export declare function __resetFailStopForTesting(): void;
|
|
18
|
+
//# sourceMappingURL=fail-stop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fail-stop.d.ts","sourceRoot":"","sources":["../../src/shell/fail-stop.ts"],"names":[],"mappings":"AA6BA,oEAAoE;AACpE,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAEtC,4DAA4D;AAC5D,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;AAID;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,YAAiB,GAAG,OAAO,CAMtF;AAED,iIAAiI;AACjI,wBAAgB,yBAAyB,IAAI,OAAO,CAEnD;AAED,kHAAkH;AAClH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,+CAA+C;AAC/C,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
|
+
// Pinned by: packages/daemon/src/shell/fail-stop.test.ts, packages/daemon/src/shell/graceful-shutdown.test.ts
|
|
3
|
+
// PINNED-BY-END
|
|
4
|
+
/**
|
|
5
|
+
* Daemon fail-stop: the terminal act of a bounded hold when nothing can record
|
|
6
|
+
* what it owes.
|
|
7
|
+
*
|
|
8
|
+
* Every hold ends in teardown or an escalation. An escalation needs a writer: the
|
|
9
|
+
* product API, or failing that the local escalation spool (queries/escalation-spool.ts).
|
|
10
|
+
* When BOTH stay unavailable past the hold's last bound, no escalation can be
|
|
11
|
+
* recorded, and holding on would be the unbounded wait the contract forbids. The
|
|
12
|
+
* hold then fires teardown of the daemon itself. requestDaemonFailStop signals the
|
|
13
|
+
* process with SIGTERM, which runs the ordinary graceful shutdown (teams torn down
|
|
14
|
+
* within the stop budget, worktrees kept, the PID lock released), and that shutdown
|
|
15
|
+
* exits with FAIL_STOP_EXIT_CODE instead of 0. The stopped daemon is then the
|
|
16
|
+
* signal no writer could leave: its heartbeat stops, and its supervisor sees a
|
|
17
|
+
* failed exit.
|
|
18
|
+
*
|
|
19
|
+
* Requested once: a second request is a no-op, so polls that race the shutdown
|
|
20
|
+
* never re-signal.
|
|
21
|
+
*
|
|
22
|
+
* @module shell/fail-stop
|
|
23
|
+
*/
|
|
24
|
+
import { createLogger } from './log.js';
|
|
25
|
+
const log = createLogger({ module: 'shell' });
|
|
26
|
+
/** The exit code a fail-stopped daemon exits with (EX_SOFTWARE). */
|
|
27
|
+
export const FAIL_STOP_EXIT_CODE = 70;
|
|
28
|
+
let failStopReason = null;
|
|
29
|
+
/**
|
|
30
|
+
* Request the daemon fail-stop, naming why. Returns false when one was already
|
|
31
|
+
* requested (nothing is signalled again).
|
|
32
|
+
*/
|
|
33
|
+
export function requestDaemonFailStop(reason, deps = {}) {
|
|
34
|
+
if (failStopReason !== null)
|
|
35
|
+
return false;
|
|
36
|
+
failStopReason = reason;
|
|
37
|
+
log.error(`[fail-stop] stopping the daemon (exit code ${FAIL_STOP_EXIT_CODE}): ${reason}`);
|
|
38
|
+
(deps.signalSelf ?? (() => process.kill(process.pid, 'SIGTERM')))();
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
/** Whether a fail-stop was requested: its SIGTERM tears down at once, never at a drain boundary (shell/graceful-shutdown.ts). */
|
|
42
|
+
export function isDaemonFailStopRequested() {
|
|
43
|
+
return failStopReason !== null;
|
|
44
|
+
}
|
|
45
|
+
/** The exit code the graceful shutdown exits with: FAIL_STOP_EXIT_CODE once a fail-stop was requested, else 0. */
|
|
46
|
+
export function daemonExitCode() {
|
|
47
|
+
return isDaemonFailStopRequested() ? FAIL_STOP_EXIT_CODE : 0;
|
|
48
|
+
}
|
|
49
|
+
/** Test-only: forget a requested fail-stop. */
|
|
50
|
+
export function __resetFailStopForTesting() {
|
|
51
|
+
failStopReason = null;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=fail-stop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fail-stop.js","sourceRoot":"","sources":["../../src/shell/fail-stop.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,8GAA8G;AAC9G,gBAAgB;AAEhB;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;AAE9C,oEAAoE;AACpE,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAOtC,IAAI,cAAc,GAAkB,IAAI,CAAC;AAEzC;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAc,EAAE,OAAqB,EAAE;IAC3E,IAAI,cAAc,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC1C,cAAc,GAAG,MAAM,CAAC;IACxB,GAAG,CAAC,KAAK,CAAC,8CAA8C,mBAAmB,MAAM,MAAM,EAAE,CAAC,CAAC;IAC3F,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IACpE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,iIAAiI;AACjI,MAAM,UAAU,yBAAyB;IACvC,OAAO,cAAc,KAAK,IAAI,CAAC;AACjC,CAAC;AAED,kHAAkH;AAClH,MAAM,UAAU,cAAc;IAC5B,OAAO,yBAAyB,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,yBAAyB;IACvC,cAAc,GAAG,IAAI,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { type StopRequest } from './stop-request.js';
|
|
2
|
+
/** The engine surface shutdown drives. */
|
|
3
|
+
export interface ShutdownEngine {
|
|
4
|
+
name: string;
|
|
5
|
+
stop(): void;
|
|
6
|
+
shutdown(): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
/** What the graceful shutdown tears down, and the process-wide effects it takes. */
|
|
9
|
+
export interface GracefulShutdownDeps {
|
|
10
|
+
engines: ReadonlyArray<ShutdownEngine>;
|
|
11
|
+
governor: {
|
|
12
|
+
shutdown(): void;
|
|
13
|
+
};
|
|
14
|
+
pidFilePath: string;
|
|
15
|
+
/** Claim the shutdown: false when one is already under way (the flag the shell's other exits share). */
|
|
16
|
+
claimShutdown: () => boolean;
|
|
17
|
+
/** The shared stop budget the engine drain and the fleet reap fit inside together. */
|
|
18
|
+
stopDrainBudgetMs: number;
|
|
19
|
+
/** Floor for the reap budget when the engine drain overran the stop budget. */
|
|
20
|
+
reapMinBudgetMs: number;
|
|
21
|
+
reapWorkerFleet: (budgetMs: number) => Promise<unknown>;
|
|
22
|
+
clearWorkerPidfile: () => void;
|
|
23
|
+
stopCircuitWedgeWatcher: () => void;
|
|
24
|
+
stopOtlpReceiver: () => Promise<void>;
|
|
25
|
+
stopTelemetryWriter: () => Promise<void>;
|
|
26
|
+
stopLacunaSidecar: () => Promise<void>;
|
|
27
|
+
cleanupLogTee: (() => void) | null;
|
|
28
|
+
removeDaemonMeta: () => void;
|
|
29
|
+
releasePidLock: (pidFilePath: string) => void;
|
|
30
|
+
now?: () => number;
|
|
31
|
+
/** Ends the process. Defaults to process.exit. */
|
|
32
|
+
exit?: (code: number) => void;
|
|
33
|
+
}
|
|
34
|
+
/** Build the daemon's graceful shutdown (see the module header). */
|
|
35
|
+
export declare function createGracefulShutdown(deps: GracefulShutdownDeps): (signal: string) => Promise<void>;
|
|
36
|
+
/** How the stop signals reach the shutdown. */
|
|
37
|
+
export interface StopSignalDeps {
|
|
38
|
+
shutdown: (signal: string) => Promise<void>;
|
|
39
|
+
/** Defer `teardown` to the fleet's zero-team boundary (the drain-to-idle path). */
|
|
40
|
+
runDrain: (teardown: () => Promise<void>) => Promise<unknown>;
|
|
41
|
+
readStopRequest?: () => StopRequest | null;
|
|
42
|
+
clearStopRequest?: () => void;
|
|
43
|
+
/** Registers a signal handler. Defaults to process.on. */
|
|
44
|
+
onSignal?: (signal: 'SIGINT' | 'SIGTERM', handler: () => void) => void;
|
|
45
|
+
}
|
|
46
|
+
/** Route SIGINT and SIGTERM to the shutdown (see the module header). */
|
|
47
|
+
export declare function registerStopSignals(deps: StopSignalDeps): void;
|
|
48
|
+
//# sourceMappingURL=graceful-shutdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graceful-shutdown.d.ts","sourceRoot":"","sources":["../../src/shell/graceful-shutdown.ts"],"names":[],"mappings":"AAmCA,OAAO,EAAuD,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAK1G,0CAA0C;AAC1C,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,IAAI,IAAI,CAAC;IACb,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED,oFAAoF;AACpF,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IACvC,QAAQ,EAAE;QAAE,QAAQ,IAAI,IAAI,CAAA;KAAE,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,wGAAwG;IACxG,aAAa,EAAE,MAAM,OAAO,CAAC;IAC7B,sFAAsF;IACtF,iBAAiB,EAAE,MAAM,CAAC;IAC1B,+EAA+E;IAC/E,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,uBAAuB,EAAE,MAAM,IAAI,CAAC;IACpC,gBAAgB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,mBAAmB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,iBAAiB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,aAAa,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC;IACnC,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,cAAc,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,kDAAkD;IAClD,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B;AAMD,oEAAoE;AACpE,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,oBAAoB,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAoFpG;AAED,+CAA+C;AAC/C,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,mFAAmF;IACnF,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9D,eAAe,CAAC,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC;IAC3C,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;CACxE;AAED,wEAAwE;AACxE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,CA0B9D"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
|
+
// Pinned by: packages/daemon/src/shell/graceful-shutdown.test.ts
|
|
3
|
+
// PINNED-BY-END
|
|
4
|
+
/**
|
|
5
|
+
* The unified daemon's graceful shutdown and the stop signals that run it.
|
|
6
|
+
*
|
|
7
|
+
* runUnifiedDaemon (shell/unified-shell.ts) builds its shutdown with
|
|
8
|
+
* createGracefulShutdown and routes SIGINT / SIGTERM to it with
|
|
9
|
+
* registerStopSignals. They live here, with every process-wide effect injected,
|
|
10
|
+
* so the process's actual exit is observable: the exit code is the only signal a
|
|
11
|
+
* daemon fail-stop (shell/fail-stop.ts) leaves when neither the escalation API
|
|
12
|
+
* nor the local spool can record what a hold owes, and graceful-shutdown.test.ts
|
|
13
|
+
* drives both functions in a child process and reads that exit code.
|
|
14
|
+
*
|
|
15
|
+
* Shutdown sequence (idempotent; a second call is a no-op):
|
|
16
|
+
* 1. stop every engine accepting new work;
|
|
17
|
+
* 2. shut every engine down in parallel;
|
|
18
|
+
* 2.4 reap the worker fleet within what remains of the stop drain budget;
|
|
19
|
+
* 2.5 stop telemetry capture and the Lacuna sidecar;
|
|
20
|
+
* 3. release the log tee, daemon meta and PID lock, then exit with
|
|
21
|
+
* daemonExitCode() -- 0, or FAIL_STOP_EXIT_CODE after a fail-stop.
|
|
22
|
+
*
|
|
23
|
+
* Stop signals: SIGINT and an external SIGTERM (no stop-request file) tear down
|
|
24
|
+
* at once; a SIGTERM carrying a `drain` stop-request defers teardown to the
|
|
25
|
+
* zero-team boundary, and a second stop signal during that drain forces it. A
|
|
26
|
+
* requested fail-stop always tears down at once: its SIGTERM ends a bounded hold,
|
|
27
|
+
* and a stale `drain` request left beside it must not turn that into an unbounded
|
|
28
|
+
* wait for the fleet to idle.
|
|
29
|
+
*
|
|
30
|
+
* @module shell/graceful-shutdown
|
|
31
|
+
*/
|
|
32
|
+
import { daemonExitCode, isDaemonFailStopRequested } from './fail-stop.js';
|
|
33
|
+
import { setDaemonShuttingDown } from './shutdown-state.js';
|
|
34
|
+
import { clearStopRequest, decideStopAction, readStopRequest } from './stop-request.js';
|
|
35
|
+
import { createLogger } from './log.js';
|
|
36
|
+
const log = createLogger({ module: 'telemetry' });
|
|
37
|
+
function message(err) {
|
|
38
|
+
return err instanceof Error ? err.message : String(err);
|
|
39
|
+
}
|
|
40
|
+
/** Build the daemon's graceful shutdown (see the module header). */
|
|
41
|
+
export function createGracefulShutdown(deps) {
|
|
42
|
+
const now = deps.now ?? Date.now;
|
|
43
|
+
const exit = deps.exit ?? ((code) => process.exit(code));
|
|
44
|
+
return async (signal) => {
|
|
45
|
+
if (!deps.claimShutdown())
|
|
46
|
+
return;
|
|
47
|
+
setDaemonShuttingDown();
|
|
48
|
+
// Start of the graceful-stop drain budget. The engine team drain (Phase 2)
|
|
49
|
+
// and the worker-fleet reap (Phase 2.4) must TOGETHER fit inside the stop
|
|
50
|
+
// budget -- the same window the CLI's stopDaemon() waits -- so the reap is
|
|
51
|
+
// given the REMAINING budget, never a fresh one.
|
|
52
|
+
const drainStartedAt = now();
|
|
53
|
+
log.info(`\nReceived ${signal}, shutting down gracefully...`);
|
|
54
|
+
// Shut down the resource governor (reject pending acquires)
|
|
55
|
+
deps.governor.shutdown();
|
|
56
|
+
// Phase 1: Stop all engines (stop accepting new work)
|
|
57
|
+
for (const engine of deps.engines) {
|
|
58
|
+
try {
|
|
59
|
+
engine.stop();
|
|
60
|
+
log.info(`[${engine.name}] Stopped accepting new work`);
|
|
61
|
+
}
|
|
62
|
+
catch (err) {
|
|
63
|
+
log.warn(`[${engine.name}] Error during stop: ${message(err)}`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Phase 2: Shut down all engines in parallel (graceful cleanup)
|
|
67
|
+
const shutdownResults = await Promise.allSettled(deps.engines.map(async (engine) => {
|
|
68
|
+
try {
|
|
69
|
+
await engine.shutdown();
|
|
70
|
+
log.info(`[${engine.name}] Shutdown complete`);
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
log.warn(`[${engine.name}] Error during shutdown: ${message(err)}`);
|
|
74
|
+
}
|
|
75
|
+
}));
|
|
76
|
+
shutdownResults.forEach((result, i) => {
|
|
77
|
+
if (result.status === 'rejected') {
|
|
78
|
+
log.warn(`[${deps.engines[i]?.name ?? 'unknown'}] Shutdown promise rejected: ${String(result.reason)}`);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
// Phase 2.4: Reap the worker fleet within the REMAINING drain window. The
|
|
82
|
+
// engine shutdown above is the graceful path, but a wedged engine can leave
|
|
83
|
+
// team-lead AND one-shot `claude --print` processes alive. This backstop
|
|
84
|
+
// SIGTERMs every tracked worker, waits, and SIGKILL-escalates inside whatever
|
|
85
|
+
// is LEFT of the shared stop budget, clamped to a small floor so it can still
|
|
86
|
+
// land SIGKILLs if the engine drain overran -- so `telora-daemon stop` drains
|
|
87
|
+
// within its budget and no worker orphans to init (the venus incident).
|
|
88
|
+
// Best-effort: a reap error must never block PID-lock release / process exit.
|
|
89
|
+
const reapBudgetMs = Math.max(deps.reapMinBudgetMs, deps.stopDrainBudgetMs - (now() - drainStartedAt));
|
|
90
|
+
try {
|
|
91
|
+
await deps.reapWorkerFleet(reapBudgetMs);
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
log.warn(`[reap] Worker-fleet reap failed: ${message(err)}`);
|
|
95
|
+
}
|
|
96
|
+
// The fleet is reaped -- clear the persisted lead pidfile so neither the CLI
|
|
97
|
+
// nor the next boot acts on now-dead pids.
|
|
98
|
+
deps.clearWorkerPidfile();
|
|
99
|
+
// Phase 2.5: Stop telemetry capture (flush remaining buffered rows, close
|
|
100
|
+
// the OTLP receiver socket) and tear down the Lacuna sidecar (SIGTERM).
|
|
101
|
+
deps.stopCircuitWedgeWatcher();
|
|
102
|
+
try {
|
|
103
|
+
await deps.stopOtlpReceiver();
|
|
104
|
+
await deps.stopTelemetryWriter();
|
|
105
|
+
}
|
|
106
|
+
catch (err) {
|
|
107
|
+
log.warn(`Error during shutdown: ${message(err)}`);
|
|
108
|
+
}
|
|
109
|
+
try {
|
|
110
|
+
await deps.stopLacunaSidecar();
|
|
111
|
+
}
|
|
112
|
+
catch (err) {
|
|
113
|
+
log.warn(`[lacuna] Error during shutdown: ${message(err)}`);
|
|
114
|
+
}
|
|
115
|
+
// Phase 3: Release PID lock and clean up, then exit -- non-zero after a fail-stop.
|
|
116
|
+
deps.cleanupLogTee?.();
|
|
117
|
+
deps.removeDaemonMeta();
|
|
118
|
+
deps.releasePidLock(deps.pidFilePath);
|
|
119
|
+
log.info('Shutdown complete');
|
|
120
|
+
exit(daemonExitCode());
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
/** Route SIGINT and SIGTERM to the shutdown (see the module header). */
|
|
124
|
+
export function registerStopSignals(deps) {
|
|
125
|
+
const read = deps.readStopRequest ?? (() => readStopRequest());
|
|
126
|
+
const clear = deps.clearStopRequest ?? (() => clearStopRequest());
|
|
127
|
+
const onSignal = deps.onSignal ?? ((signal, handler) => { process.on(signal, handler); });
|
|
128
|
+
let stopDraining = false;
|
|
129
|
+
const onStopSignal = (signal) => {
|
|
130
|
+
const request = read();
|
|
131
|
+
clear();
|
|
132
|
+
const failStop = isDaemonFailStopRequested();
|
|
133
|
+
if (failStop || decideStopAction(signal, request, stopDraining) === 'immediate') {
|
|
134
|
+
if (failStop && request?.mode === 'drain') {
|
|
135
|
+
log.info('[drain-teardown] a daemon fail-stop was requested -- tearing down now, not at the zero-team boundary');
|
|
136
|
+
}
|
|
137
|
+
else if (stopDraining) {
|
|
138
|
+
log.info('[drain-teardown] second stop signal received -- forcing immediate teardown');
|
|
139
|
+
}
|
|
140
|
+
void deps.shutdown(signal);
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
stopDraining = true;
|
|
144
|
+
deps.runDrain(() => deps.shutdown('drain-to-idle')).catch((err) => {
|
|
145
|
+
log.error(`[drain-teardown] deferred teardown failed (${message(err)}) -- tearing down now`);
|
|
146
|
+
void deps.shutdown(signal);
|
|
147
|
+
});
|
|
148
|
+
};
|
|
149
|
+
onSignal('SIGINT', () => onStopSignal('SIGINT'));
|
|
150
|
+
onSignal('SIGTERM', () => onStopSignal('SIGTERM'));
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=graceful-shutdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graceful-shutdown.js","sourceRoot":"","sources":["../../src/shell/graceful-shutdown.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../../src/shell/heartbeat.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEhF,OAAO,EAIL,KAAK,wBAAwB,EAC7B,KAAK,6BAA6B,EACnC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAA0C,sBAAsB,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAOrI,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AA2E9D;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,aAAa,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,GAC5C,MAAM,CAER;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAEzD;AAED,uEAAuE;AACvE,wBAAgB,qBAAqB,IAAI,MAAM,GAAG,IAAI,CAErD;AAOD;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAEhE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEpD;AAGD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,CAAC;AAmB7C;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAM1C;AAcD;;GAEG;AACH,wBAAgB,eAAe,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAuBxE;AA2CD;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAU7E;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAEhD;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAGlF;AAGD,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAElC;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,IAAI;IAAE,YAAY,EAAE,iBAAiB,CAAA;CAAE,GAAG,IAAI,CAGlF;
|
|
1
|
+
{"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../../src/shell/heartbeat.ts"],"names":[],"mappings":"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"}
|
package/dist/shell/heartbeat.js
CHANGED
|
@@ -292,10 +292,11 @@ export function readOnlyMetadataField() {
|
|
|
292
292
|
}
|
|
293
293
|
/**
|
|
294
294
|
* Apply the focusId-SCOPED metadata fields (see the classification block
|
|
295
|
-
* below): `narrations` (latest team-lead text), `teamPhases` (each
|
|
296
|
-
* team
|
|
297
|
-
* cooldown -- so the dashboard's liveness badge can tell a
|
|
298
|
-
* wedged one
|
|
295
|
+
* below): `narrations` (latest team-lead text), `teamPhases` (each focus's
|
|
296
|
+
* team lifecycle phase -- executing / awaiting_slot / idle_complete /
|
|
297
|
+
* directive_pending / cooldown -- so the dashboard's liveness badge can tell a
|
|
298
|
+
* parked team from a wedged one, and an armed focus waiting for a session slot
|
|
299
|
+
* from one that is not running), and `teamClocks` (the per-team last-activity clock the daemon
|
|
299
300
|
* itself acts on, so every liveness surface classifies from the one clock the
|
|
300
301
|
* daemon trusts rather than the separately-flushed activity_summary). All three
|
|
301
302
|
* are pull-model: recomputed from live in-memory state each beat, so a change
|