@telora/daemon 0.20.2 → 0.20.9
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 +7 -3
- package/dist/ai-inspection-context.d.ts.map +1 -1
- package/dist/ai-inspection-context.js +5 -3
- package/dist/ai-inspection-context.js.map +1 -1
- package/dist/assembly-engine.d.ts.map +1 -1
- package/dist/assembly-engine.js +4 -2
- package/dist/assembly-engine.js.map +1 -1
- package/dist/audit-hooks.d.ts.map +1 -1
- package/dist/audit-hooks.js +3 -1
- package/dist/audit-hooks.js.map +1 -1
- package/dist/auth-liveness.d.ts.map +1 -1
- package/dist/auth-liveness.js +4 -2
- package/dist/auth-liveness.js.map +1 -1
- package/dist/auto-update.d.ts.map +1 -1
- package/dist/auto-update.js +14 -12
- package/dist/auto-update.js.map +1 -1
- package/dist/backends/codex/codex-backend.d.ts.map +1 -1
- package/dist/backends/codex/codex-backend.js +4 -2
- package/dist/backends/codex/codex-backend.js.map +1 -1
- package/dist/backends/codex/codex-mcp-proxy.d.ts.map +1 -1
- package/dist/backends/codex/codex-mcp-proxy.js +3 -1
- package/dist/backends/codex/codex-mcp-proxy.js.map +1 -1
- package/dist/backends/lacuna/lifecycle.d.ts.map +1 -1
- package/dist/backends/lacuna/lifecycle.js +4 -2
- package/dist/backends/lacuna/lifecycle.js.map +1 -1
- package/dist/backends/resolve.d.ts.map +1 -1
- package/dist/backends/resolve.js +3 -1
- package/dist/backends/resolve.js.map +1 -1
- package/dist/cascade-restatement.d.ts.map +1 -1
- package/dist/cascade-restatement.js +15 -13
- package/dist/cascade-restatement.js.map +1 -1
- package/dist/ci-escalation.d.ts.map +1 -1
- package/dist/ci-escalation.js +4 -2
- package/dist/ci-escalation.js.map +1 -1
- package/dist/ci-sensor-loop.d.ts.map +1 -1
- package/dist/ci-sensor-loop.js +6 -4
- package/dist/ci-sensor-loop.js.map +1 -1
- package/dist/ci-status-git.d.ts +5 -6
- package/dist/ci-status-git.d.ts.map +1 -1
- package/dist/ci-status-git.js +7 -7
- package/dist/ci-status-git.js.map +1 -1
- package/dist/cli/connect.d.ts.map +1 -1
- package/dist/cli/connect.js +9 -2
- package/dist/cli/connect.js.map +1 -1
- package/dist/cli/open.d.ts.map +1 -1
- package/dist/cli/open.js +9 -2
- package/dist/cli/open.js.map +1 -1
- package/dist/cli/session-state.d.ts.map +1 -1
- package/dist/cli/session-state.js +2 -0
- package/dist/cli/session-state.js.map +1 -1
- package/dist/cli/verify-setup.d.ts.map +1 -1
- package/dist/cli/verify-setup.js +9 -4
- package/dist/cli/verify-setup.js.map +1 -1
- package/dist/close-loop-dispatcher.d.ts.map +1 -1
- package/dist/close-loop-dispatcher.js +6 -4
- package/dist/close-loop-dispatcher.js.map +1 -1
- package/dist/completion/advanceability.d.ts.map +1 -1
- package/dist/completion/advanceability.js +3 -1
- package/dist/completion/advanceability.js.map +1 -1
- package/dist/completion/agent-completion.d.ts.map +1 -1
- package/dist/completion/agent-completion.js +11 -9
- package/dist/completion/agent-completion.js.map +1 -1
- package/dist/completion/event-escalations.d.ts.map +1 -1
- package/dist/completion/event-escalations.js +10 -8
- package/dist/completion/event-escalations.js.map +1 -1
- package/dist/completion/event-phases.d.ts +104 -0
- package/dist/completion/event-phases.d.ts.map +1 -0
- package/dist/completion/event-phases.js +572 -0
- package/dist/completion/event-phases.js.map +1 -0
- package/dist/completion/event.d.ts +1 -1
- package/dist/completion/event.d.ts.map +1 -1
- package/dist/completion/event.js +36 -592
- package/dist/completion/event.js.map +1 -1
- package/dist/completion/merge-phase.d.ts.map +1 -1
- package/dist/completion/merge-phase.js +14 -12
- package/dist/completion/merge-phase.js.map +1 -1
- package/dist/completion/read-only-pristine.d.ts.map +1 -1
- package/dist/completion/read-only-pristine.js +6 -4
- package/dist/completion/read-only-pristine.js.map +1 -1
- package/dist/completion/review-exit-phase.d.ts.map +1 -1
- package/dist/completion/review-exit-phase.js +28 -26
- package/dist/completion/review-exit-phase.js.map +1 -1
- package/dist/completion/status-advance-phase.d.ts.map +1 -1
- package/dist/completion/status-advance-phase.js +16 -14
- package/dist/completion/status-advance-phase.js.map +1 -1
- package/dist/completion/team-completion.d.ts.map +1 -1
- package/dist/completion/team-completion.js +16 -14
- package/dist/completion/team-completion.js.map +1 -1
- package/dist/completion/team-lifecycle.d.ts.map +1 -1
- package/dist/completion/team-lifecycle.js +32 -33
- package/dist/completion/team-lifecycle.js.map +1 -1
- package/dist/completion/terminated-work-reconcile.d.ts.map +1 -1
- package/dist/completion/terminated-work-reconcile.js +11 -9
- package/dist/completion/terminated-work-reconcile.js.map +1 -1
- package/dist/condition-evaluators.d.ts.map +1 -1
- package/dist/condition-evaluators.js +3 -1
- package/dist/condition-evaluators.js.map +1 -1
- package/dist/config-reconcile.d.ts.map +1 -1
- package/dist/config-reconcile.js +3 -1
- package/dist/config-reconcile.js.map +1 -1
- package/dist/config.d.ts +4 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +56 -42
- package/dist/config.js.map +1 -1
- package/dist/control-state.d.ts.map +1 -1
- package/dist/control-state.js +26 -24
- package/dist/control-state.js.map +1 -1
- package/dist/crash-recovery.d.ts.map +1 -1
- package/dist/crash-recovery.js +43 -41
- package/dist/crash-recovery.js.map +1 -1
- package/dist/daemon-logs.d.ts.map +1 -1
- package/dist/daemon-logs.js +21 -3
- package/dist/daemon-logs.js.map +1 -1
- package/dist/daemon-process.d.ts +0 -1
- package/dist/daemon-process.d.ts.map +1 -1
- package/dist/daemon-process.js +15 -10
- package/dist/daemon-process.js.map +1 -1
- package/dist/delivery-advance-block.d.ts +4 -4
- package/dist/delivery-advance-block.d.ts.map +1 -1
- package/dist/delivery-advance-block.js +25 -18
- package/dist/delivery-advance-block.js.map +1 -1
- package/dist/delivery-guards.d.ts.map +1 -1
- package/dist/delivery-guards.js +11 -9
- package/dist/delivery-guards.js.map +1 -1
- package/dist/delivery-lifecycle.d.ts.map +1 -1
- package/dist/delivery-lifecycle.js +23 -21
- package/dist/delivery-lifecycle.js.map +1 -1
- package/dist/delivery-merge.d.ts.map +1 -1
- package/dist/delivery-merge.js +10 -8
- package/dist/delivery-merge.js.map +1 -1
- package/dist/delivery-reconciler-apply.d.ts.map +1 -1
- package/dist/delivery-reconciler-apply.js +5 -8
- package/dist/delivery-reconciler-apply.js.map +1 -1
- package/dist/delivery-reconciler-shadow.d.ts.map +1 -1
- package/dist/delivery-reconciler-shadow.js +5 -6
- package/dist/delivery-reconciler-shadow.js.map +1 -1
- package/dist/directive/close-loop-stage.d.ts.map +1 -1
- package/dist/directive/close-loop-stage.js +9 -7
- package/dist/directive/close-loop-stage.js.map +1 -1
- package/dist/directive/directive-assembly.d.ts.map +1 -1
- package/dist/directive/directive-assembly.js +3 -1
- package/dist/directive/directive-assembly.js.map +1 -1
- package/dist/directive/directive-dispatch.d.ts.map +1 -1
- package/dist/directive/directive-dispatch.js +16 -14
- package/dist/directive/directive-dispatch.js.map +1 -1
- package/dist/directive/directive-queue.d.ts +27 -0
- package/dist/directive/directive-queue.d.ts.map +1 -1
- package/dist/directive/directive-queue.js +28 -0
- package/dist/directive/directive-queue.js.map +1 -1
- package/dist/directive/phase-sync.d.ts.map +1 -1
- package/dist/directive/phase-sync.js +8 -6
- package/dist/directive/phase-sync.js.map +1 -1
- package/dist/directive-executor.d.ts +1 -1
- package/dist/directive-executor.d.ts.map +1 -1
- package/dist/directive-executor.js +12 -10
- package/dist/directive-executor.js.map +1 -1
- package/dist/discovery-poll.d.ts.map +1 -1
- package/dist/discovery-poll.js +8 -6
- package/dist/discovery-poll.js.map +1 -1
- package/dist/drain-teardown.d.ts.map +1 -1
- package/dist/drain-teardown.js +6 -19
- package/dist/drain-teardown.js.map +1 -1
- package/dist/drift-eval-loop.d.ts.map +1 -1
- package/dist/drift-eval-loop.js +10 -8
- package/dist/drift-eval-loop.js.map +1 -1
- package/dist/escalation-provenance.d.ts.map +1 -1
- package/dist/escalation-provenance.js +8 -3
- package/dist/escalation-provenance.js.map +1 -1
- package/dist/focus-engine.d.ts.map +1 -1
- package/dist/focus-engine.js +36 -34
- package/dist/focus-engine.js.map +1 -1
- package/dist/focus-executor.d.ts +2 -1
- package/dist/focus-executor.d.ts.map +1 -1
- package/dist/focus-executor.js +17 -15
- package/dist/focus-executor.js.map +1 -1
- package/dist/focus-lifecycle.d.ts.map +1 -1
- package/dist/focus-lifecycle.js +56 -44
- package/dist/focus-lifecycle.js.map +1 -1
- package/dist/focus-loop-registry.d.ts.map +1 -1
- package/dist/focus-loop-registry.js +38 -36
- package/dist/focus-loop-registry.js.map +1 -1
- package/dist/focus-merge.d.ts.map +1 -1
- package/dist/focus-merge.js +40 -34
- package/dist/focus-merge.js.map +1 -1
- package/dist/focus-provisioning.d.ts.map +1 -1
- package/dist/focus-provisioning.js +15 -13
- package/dist/focus-provisioning.js.map +1 -1
- package/dist/focus-respawn-guard.d.ts.map +1 -1
- package/dist/focus-respawn-guard.js +4 -2
- package/dist/focus-respawn-guard.js.map +1 -1
- package/dist/focus-stage-lifecycle/planning-release.d.ts.map +1 -1
- package/dist/focus-stage-lifecycle/planning-release.js +10 -8
- package/dist/focus-stage-lifecycle/planning-release.js.map +1 -1
- package/dist/focus-stage-lifecycle/review-convergence.d.ts.map +1 -1
- package/dist/focus-stage-lifecycle/review-convergence.js +11 -9
- package/dist/focus-stage-lifecycle/review-convergence.js.map +1 -1
- package/dist/focus-stage-lifecycle/wedge-watchdog.d.ts.map +1 -1
- package/dist/focus-stage-lifecycle/wedge-watchdog.js +7 -5
- package/dist/focus-stage-lifecycle/wedge-watchdog.js.map +1 -1
- package/dist/focus-stage-lifecycle.d.ts.map +1 -1
- package/dist/focus-stage-lifecycle.js +7 -5
- package/dist/focus-stage-lifecycle.js.map +1 -1
- package/dist/focus-team-state.d.ts +18 -9
- package/dist/focus-team-state.d.ts.map +1 -1
- package/dist/focus-team-state.js +37 -18
- package/dist/focus-team-state.js.map +1 -1
- package/dist/focus-worktree-state.d.ts.map +1 -1
- package/dist/focus-worktree-state.js +6 -4
- package/dist/focus-worktree-state.js.map +1 -1
- package/dist/git/branch.d.ts.map +1 -1
- package/dist/git/branch.js +7 -5
- package/dist/git/branch.js.map +1 -1
- package/dist/git/genesis.d.ts.map +1 -1
- package/dist/git/genesis.js +3 -1
- package/dist/git/genesis.js.map +1 -1
- package/dist/git/integration.d.ts.map +1 -1
- package/dist/git/integration.js +4 -2
- package/dist/git/integration.js.map +1 -1
- package/dist/git/merge-helpers.d.ts.map +1 -1
- package/dist/git/merge-helpers.js +6 -4
- package/dist/git/merge-helpers.js.map +1 -1
- package/dist/git/merge-lock.d.ts +0 -7
- package/dist/git/merge-lock.d.ts.map +1 -1
- package/dist/git/merge-lock.js +5 -3
- package/dist/git/merge-lock.js.map +1 -1
- package/dist/git/merge.d.ts.map +1 -1
- package/dist/git/merge.js +10 -8
- package/dist/git/merge.js.map +1 -1
- package/dist/git/state-detector.d.ts.map +1 -1
- package/dist/git/state-detector.js +9 -7
- package/dist/git/state-detector.js.map +1 -1
- package/dist/git/utils.d.ts.map +1 -1
- package/dist/git/utils.js +6 -4
- package/dist/git/utils.js.map +1 -1
- package/dist/git.d.ts.map +1 -1
- package/dist/git.js +16 -14
- package/dist/git.js.map +1 -1
- package/dist/guard-evaluator.d.ts.map +1 -1
- package/dist/guard-evaluator.js +3 -1
- package/dist/guard-evaluator.js.map +1 -1
- package/dist/heartbeat.d.ts.map +1 -1
- package/dist/heartbeat.js +14 -11
- package/dist/heartbeat.js.map +1 -1
- package/dist/host-control/catalog.d.ts.map +1 -1
- package/dist/host-control/catalog.js +4 -2
- package/dist/host-control/catalog.js.map +1 -1
- package/dist/host-control/client.d.ts.map +1 -1
- package/dist/host-control/client.js +3 -1
- package/dist/host-control/client.js.map +1 -1
- package/dist/host-control/sizing.d.ts.map +1 -1
- package/dist/host-control/sizing.js +4 -1
- package/dist/host-control/sizing.js.map +1 -1
- package/dist/index.js +110 -127
- package/dist/index.js.map +1 -1
- package/dist/install-probe-tick.d.ts.map +1 -1
- package/dist/install-probe-tick.js +6 -4
- package/dist/install-probe-tick.js.map +1 -1
- package/dist/intake-control.d.ts +0 -16
- package/dist/intake-control.d.ts.map +1 -1
- package/dist/intake-control.js +4 -2
- package/dist/intake-control.js.map +1 -1
- package/dist/listener-auto-advance.d.ts.map +1 -1
- package/dist/listener-auto-advance.js +26 -24
- package/dist/listener-auto-advance.js.map +1 -1
- package/dist/listener.d.ts.map +1 -1
- package/dist/listener.js +59 -39
- package/dist/listener.js.map +1 -1
- package/dist/log.d.ts +84 -0
- package/dist/log.d.ts.map +1 -0
- package/dist/log.js +182 -0
- package/dist/log.js.map +1 -0
- package/dist/loops/context-audit-pass.d.ts.map +1 -1
- package/dist/loops/context-audit-pass.js +8 -5
- package/dist/loops/context-audit-pass.js.map +1 -1
- package/dist/loops/engine.d.ts.map +1 -1
- package/dist/loops/engine.js +26 -24
- package/dist/loops/engine.js.map +1 -1
- package/dist/loops/llm-client.d.ts.map +1 -1
- package/dist/loops/llm-client.js +4 -2
- package/dist/loops/llm-client.js.map +1 -1
- package/dist/loops/llm-flag.d.ts +4 -28
- package/dist/loops/llm-flag.d.ts.map +1 -1
- package/dist/loops/llm-flag.js +11 -30
- package/dist/loops/llm-flag.js.map +1 -1
- package/dist/loops/prompt-builder.d.ts.map +1 -1
- package/dist/loops/prompt-builder.js +3 -1
- package/dist/loops/prompt-builder.js.map +1 -1
- package/dist/merge-back-loop.d.ts.map +1 -1
- package/dist/merge-back-loop.js +20 -18
- package/dist/merge-back-loop.js.map +1 -1
- package/dist/merge-detector.d.ts.map +1 -1
- package/dist/merge-detector.js +7 -5
- package/dist/merge-detector.js.map +1 -1
- package/dist/nexus/endpoint-clearance.d.ts.map +1 -1
- package/dist/nexus/endpoint-clearance.js +3 -1
- package/dist/nexus/endpoint-clearance.js.map +1 -1
- package/dist/nexus/escalation-bridge.d.ts.map +1 -1
- package/dist/nexus/escalation-bridge.js +3 -1
- package/dist/nexus/escalation-bridge.js.map +1 -1
- package/dist/nexus/incoming.d.ts.map +1 -1
- package/dist/nexus/incoming.js +3 -1
- package/dist/nexus/incoming.js.map +1 -1
- package/dist/nexus/intake-spawn.d.ts.map +1 -1
- package/dist/nexus/intake-spawn.js +6 -4
- package/dist/nexus/intake-spawn.js.map +1 -1
- package/dist/nexus/intake.d.ts.map +1 -1
- package/dist/nexus/intake.js +3 -1
- package/dist/nexus/intake.js.map +1 -1
- package/dist/nexus/return.d.ts.map +1 -1
- package/dist/nexus/return.js +3 -1
- package/dist/nexus/return.js.map +1 -1
- package/dist/non-interactive-init.d.ts.map +1 -1
- package/dist/non-interactive-init.js +0 -0
- package/dist/non-interactive-init.js.map +1 -1
- package/dist/otlp/port-manager.d.ts.map +1 -1
- package/dist/otlp/port-manager.js +7 -5
- package/dist/otlp/port-manager.js.map +1 -1
- package/dist/otlp/receiver.d.ts.map +1 -1
- package/dist/otlp/receiver.js +14 -12
- package/dist/otlp/receiver.js.map +1 -1
- package/dist/output-monitor.d.ts.map +1 -1
- package/dist/output-monitor.js +6 -4
- package/dist/output-monitor.js.map +1 -1
- package/dist/prd/controller.d.ts.map +1 -1
- package/dist/prd/controller.js +7 -5
- package/dist/prd/controller.js.map +1 -1
- package/dist/prd/focus-pushdown.d.ts.map +1 -1
- package/dist/prd/focus-pushdown.js +3 -1
- package/dist/prd/focus-pushdown.js.map +1 -1
- package/dist/product-scaffold.d.ts.map +1 -1
- package/dist/product-scaffold.js +8 -6
- package/dist/product-scaffold.js.map +1 -1
- package/dist/queries/context-assembly.d.ts.map +1 -1
- package/dist/queries/context-assembly.js +3 -1
- package/dist/queries/context-assembly.js.map +1 -1
- package/dist/queries/deliveries.d.ts.map +1 -1
- package/dist/queries/deliveries.js +7 -5
- package/dist/queries/deliveries.js.map +1 -1
- package/dist/queries/focuses.d.ts.map +1 -1
- package/dist/queries/focuses.js +3 -1
- package/dist/queries/focuses.js.map +1 -1
- package/dist/queries/guards.d.ts.map +1 -1
- package/dist/queries/guards.js +3 -1
- package/dist/queries/guards.js.map +1 -1
- package/dist/queries/issues.d.ts.map +1 -1
- package/dist/queries/issues.js +3 -1
- package/dist/queries/issues.js.map +1 -1
- package/dist/queries/system-session.d.ts.map +1 -1
- package/dist/queries/system-session.js +5 -3
- package/dist/queries/system-session.js.map +1 -1
- package/dist/queries/verification.d.ts.map +1 -1
- package/dist/queries/verification.js +6 -4
- package/dist/queries/verification.js.map +1 -1
- package/dist/reality-pole-capture.d.ts.map +1 -1
- package/dist/reality-pole-capture.js +7 -4
- package/dist/reality-pole-capture.js.map +1 -1
- package/dist/reality-pole.d.ts.map +1 -1
- package/dist/reality-pole.js +4 -2
- package/dist/reality-pole.js.map +1 -1
- package/dist/resolvers/agent-escalations.d.ts.map +1 -1
- package/dist/resolvers/agent-escalations.js +3 -1
- package/dist/resolvers/agent-escalations.js.map +1 -1
- package/dist/resolvers/agent-session-summaries.d.ts.map +1 -1
- package/dist/resolvers/agent-session-summaries.js +3 -1
- package/dist/resolvers/agent-session-summaries.js.map +1 -1
- package/dist/resolvers/deployment-profile.d.ts.map +1 -1
- package/dist/resolvers/deployment-profile.js +3 -1
- package/dist/resolvers/deployment-profile.js.map +1 -1
- package/dist/resolvers/escalation-answers.d.ts.map +1 -1
- package/dist/resolvers/escalation-answers.js +4 -2
- package/dist/resolvers/escalation-answers.js.map +1 -1
- package/dist/resolvers/focus-anchoring-injections.d.ts.map +1 -1
- package/dist/resolvers/focus-anchoring-injections.js +3 -1
- package/dist/resolvers/focus-anchoring-injections.js.map +1 -1
- package/dist/resolvers/focus-injections.d.ts.map +1 -1
- package/dist/resolvers/focus-injections.js +3 -1
- package/dist/resolvers/focus-injections.js.map +1 -1
- package/dist/resolvers/focus-last-review-report.d.ts.map +1 -1
- package/dist/resolvers/focus-last-review-report.js +3 -1
- package/dist/resolvers/focus-last-review-report.js.map +1 -1
- package/dist/resolvers/focus-reality-tree.d.ts.map +1 -1
- package/dist/resolvers/focus-reality-tree.js +3 -1
- package/dist/resolvers/focus-reality-tree.js.map +1 -1
- package/dist/resolvers/git-diff-against-base.d.ts.map +1 -1
- package/dist/resolvers/git-diff-against-base.js +3 -1
- package/dist/resolvers/git-diff-against-base.js.map +1 -1
- package/dist/resolvers/guards-evaluation-results.d.ts.map +1 -1
- package/dist/resolvers/guards-evaluation-results.js +3 -1
- package/dist/resolvers/guards-evaluation-results.js.map +1 -1
- package/dist/resolvers/loop-context.d.ts.map +1 -1
- package/dist/resolvers/loop-context.js +6 -2
- package/dist/resolvers/loop-context.js.map +1 -1
- package/dist/resolvers/loop-delivery-index.d.ts.map +1 -1
- package/dist/resolvers/loop-delivery-index.js +3 -1
- package/dist/resolvers/loop-delivery-index.js.map +1 -1
- package/dist/resolvers/loop-documents.d.ts.map +1 -1
- package/dist/resolvers/loop-documents.js +3 -1
- package/dist/resolvers/loop-documents.js.map +1 -1
- package/dist/resolvers/loop-expected-effects.d.ts.map +1 -1
- package/dist/resolvers/loop-expected-effects.js +3 -1
- package/dist/resolvers/loop-expected-effects.js.map +1 -1
- package/dist/resolvers/loop-frt-statement.d.ts.map +1 -1
- package/dist/resolvers/loop-frt-statement.js +3 -1
- package/dist/resolvers/loop-frt-statement.js.map +1 -1
- package/dist/resolvers/loop-injection.d.ts.map +1 -1
- package/dist/resolvers/loop-injection.js +3 -1
- package/dist/resolvers/loop-injection.js.map +1 -1
- package/dist/resolvers/loop-persona.d.ts.map +1 -1
- package/dist/resolvers/loop-persona.js +3 -1
- package/dist/resolvers/loop-persona.js.map +1 -1
- package/dist/resolvers/loop-questions.d.ts.map +1 -1
- package/dist/resolvers/loop-questions.js +3 -1
- package/dist/resolvers/loop-questions.js.map +1 -1
- package/dist/resolvers/loop-upstream-udes.d.ts.map +1 -1
- package/dist/resolvers/loop-upstream-udes.js +3 -1
- package/dist/resolvers/loop-upstream-udes.js.map +1 -1
- package/dist/resolvers/prd-context.d.ts.map +1 -1
- package/dist/resolvers/prd-context.js +3 -1
- package/dist/resolvers/prd-context.js.map +1 -1
- package/dist/resolvers/reality-metrics.d.ts.map +1 -1
- package/dist/resolvers/reality-metrics.js +3 -1
- package/dist/resolvers/reality-metrics.js.map +1 -1
- package/dist/resolvers/reality-projections.d.ts.map +1 -1
- package/dist/resolvers/reality-projections.js +3 -1
- package/dist/resolvers/reality-projections.js.map +1 -1
- package/dist/resolvers/reality-tree-snapshot.d.ts.map +1 -1
- package/dist/resolvers/reality-tree-snapshot.js +3 -1
- package/dist/resolvers/reality-tree-snapshot.js.map +1 -1
- package/dist/resolvers/retired-injections.d.ts.map +1 -1
- package/dist/resolvers/retired-injections.js +3 -1
- package/dist/resolvers/retired-injections.js.map +1 -1
- package/dist/resolvers/review-outcomes.d.ts.map +1 -1
- package/dist/resolvers/review-outcomes.js +3 -1
- package/dist/resolvers/review-outcomes.js.map +1 -1
- package/dist/resolvers/security-advisory.d.ts.map +1 -1
- package/dist/resolvers/security-advisory.js +3 -1
- package/dist/resolvers/security-advisory.js.map +1 -1
- package/dist/resolvers/shared/wiki.d.ts.map +1 -1
- package/dist/resolvers/shared/wiki.js +5 -3
- package/dist/resolvers/shared/wiki.js.map +1 -1
- package/dist/resolvers/wiki-topic.d.ts.map +1 -1
- package/dist/resolvers/wiki-topic.js +3 -1
- package/dist/resolvers/wiki-topic.js.map +1 -1
- package/dist/resolvers/workflow-stages.d.ts.map +1 -1
- package/dist/resolvers/workflow-stages.js +3 -1
- package/dist/resolvers/workflow-stages.js.map +1 -1
- package/dist/schema-version-gate.d.ts.map +1 -1
- package/dist/schema-version-gate.js +16 -18
- package/dist/schema-version-gate.js.map +1 -1
- package/dist/security-finding-gate.d.ts.map +1 -1
- package/dist/security-finding-gate.js +3 -1
- package/dist/security-finding-gate.js.map +1 -1
- package/dist/security-rescan-resolution.d.ts.map +1 -1
- package/dist/security-rescan-resolution.js +4 -2
- package/dist/security-rescan-resolution.js.map +1 -1
- package/dist/security-scan-engine.d.ts.map +1 -1
- package/dist/security-scan-engine.js +9 -6
- package/dist/security-scan-engine.js.map +1 -1
- package/dist/self-update.d.ts.map +1 -1
- package/dist/self-update.js +48 -39
- package/dist/self-update.js.map +1 -1
- package/dist/sensor-sweep.d.ts.map +1 -1
- package/dist/sensor-sweep.js +5 -2
- package/dist/sensor-sweep.js.map +1 -1
- package/dist/session-stamp.d.ts.map +1 -1
- package/dist/session-stamp.js +4 -2
- package/dist/session-stamp.js.map +1 -1
- package/dist/spawn/model-routing.d.ts +18 -0
- package/dist/spawn/model-routing.d.ts.map +1 -1
- package/dist/spawn/model-routing.js +53 -18
- package/dist/spawn/model-routing.js.map +1 -1
- package/dist/spawn/process-spawn.d.ts.map +1 -1
- package/dist/spawn/process-spawn.js +29 -22
- package/dist/spawn/process-spawn.js.map +1 -1
- package/dist/spawn/prompt-assembly.d.ts.map +1 -1
- package/dist/spawn/prompt-assembly.js +6 -4
- package/dist/spawn/prompt-assembly.js.map +1 -1
- package/dist/spawn/spawn-decision.d.ts.map +1 -1
- package/dist/spawn/spawn-decision.js +16 -14
- package/dist/spawn/spawn-decision.js.map +1 -1
- package/dist/spawn/worktree-session.d.ts.map +1 -1
- package/dist/spawn/worktree-session.js +13 -11
- package/dist/spawn/worktree-session.js.map +1 -1
- package/dist/spawn-cooldown.d.ts +0 -7
- package/dist/spawn-cooldown.d.ts.map +1 -1
- package/dist/spawn-cooldown.js +3 -1
- package/dist/spawn-cooldown.js.map +1 -1
- package/dist/spawn-environment.d.ts.map +1 -1
- package/dist/spawn-environment.js +4 -1
- package/dist/spawn-environment.js.map +1 -1
- package/dist/spawner/helpers.d.ts.map +1 -1
- package/dist/spawner/helpers.js +19 -17
- package/dist/spawner/helpers.js.map +1 -1
- package/dist/spawner/lifecycle.d.ts.map +1 -1
- package/dist/spawner/lifecycle.js +17 -13
- package/dist/spawner/lifecycle.js.map +1 -1
- package/dist/spawner/liveness.d.ts.map +1 -1
- package/dist/spawner/liveness.js +7 -5
- package/dist/spawner/liveness.js.map +1 -1
- package/dist/spawner/resolution.d.ts.map +1 -1
- package/dist/spawner/resolution.js +7 -5
- package/dist/spawner/resolution.js.map +1 -1
- package/dist/spawner/stream-handlers.d.ts +6 -55
- package/dist/spawner/stream-handlers.d.ts.map +1 -1
- package/dist/spawner/stream-handlers.js +10 -172
- package/dist/spawner/stream-handlers.js.map +1 -1
- package/dist/spawner/timeout.d.ts.map +1 -1
- package/dist/spawner/timeout.js +11 -9
- package/dist/spawner/timeout.js.map +1 -1
- package/dist/staleness.d.ts.map +1 -1
- package/dist/staleness.js +4 -1
- package/dist/staleness.js.map +1 -1
- package/dist/stall-detector-config.d.ts +6 -17
- package/dist/stall-detector-config.d.ts.map +1 -1
- package/dist/stall-detector-config.js +10 -36
- package/dist/stall-detector-config.js.map +1 -1
- package/dist/stall-detectors.d.ts.map +1 -1
- package/dist/stall-detectors.js +6 -4
- package/dist/stall-detectors.js.map +1 -1
- package/dist/state-cascade.d.ts.map +1 -1
- package/dist/state-cascade.js +9 -7
- package/dist/state-cascade.js.map +1 -1
- package/dist/stop-request.d.ts.map +1 -1
- package/dist/stop-request.js +6 -2
- package/dist/stop-request.js.map +1 -1
- package/dist/supabase.d.ts.map +1 -1
- package/dist/supabase.js +3 -1
- package/dist/supabase.js.map +1 -1
- package/dist/telemetry-writer.d.ts.map +1 -1
- package/dist/telemetry-writer.js +11 -9
- package/dist/telemetry-writer.js.map +1 -1
- package/dist/trigger-executor.d.ts.map +1 -1
- package/dist/trigger-executor.js +28 -26
- package/dist/trigger-executor.js.map +1 -1
- package/dist/unified-engine-lifecycle.d.ts +19 -11
- package/dist/unified-engine-lifecycle.d.ts.map +1 -1
- package/dist/unified-engine-lifecycle.js +71 -70
- package/dist/unified-engine-lifecycle.js.map +1 -1
- package/dist/unified-init.d.ts.map +1 -1
- package/dist/unified-init.js +41 -36
- package/dist/unified-init.js.map +1 -1
- package/dist/unified-shell-config.d.ts +8 -1
- package/dist/unified-shell-config.d.ts.map +1 -1
- package/dist/unified-shell-config.js +57 -34
- package/dist/unified-shell-config.js.map +1 -1
- package/dist/unified-shell-status.d.ts.map +1 -1
- package/dist/unified-shell-status.js +39 -37
- package/dist/unified-shell-status.js.map +1 -1
- package/dist/unified-shell.d.ts.map +1 -1
- package/dist/unified-shell.js +37 -41
- package/dist/unified-shell.js.map +1 -1
- package/dist/verification-baseline.d.ts.map +1 -1
- package/dist/verification-baseline.js +7 -4
- package/dist/verification-baseline.js.map +1 -1
- package/dist/verification-config.d.ts +3 -3
- package/dist/verification-config.d.ts.map +1 -1
- package/dist/verification-config.js +8 -19
- package/dist/verification-config.js.map +1 -1
- package/dist/verification-default-on.d.ts +6 -6
- package/dist/verification-default-on.d.ts.map +1 -1
- package/dist/verification-default-on.js +9 -7
- package/dist/verification-default-on.js.map +1 -1
- package/dist/verification-deterministic.d.ts.map +1 -1
- package/dist/verification-deterministic.js +6 -3
- package/dist/verification-deterministic.js.map +1 -1
- package/dist/verification-engine.d.ts.map +1 -1
- package/dist/verification-engine.js +20 -16
- package/dist/verification-engine.js.map +1 -1
- package/dist/verification-feedback.d.ts.map +1 -1
- package/dist/verification-feedback.js +4 -2
- package/dist/verification-feedback.js.map +1 -1
- package/dist/version-check.d.ts.map +1 -1
- package/dist/version-check.js +5 -3
- package/dist/version-check.js.map +1 -1
- package/dist/worker-pidfile.d.ts.map +1 -1
- package/dist/worker-pidfile.js +8 -3
- package/dist/worker-pidfile.js.map +1 -1
- package/dist/worktree/focus.d.ts.map +1 -1
- package/dist/worktree/focus.js +15 -13
- package/dist/worktree/focus.js.map +1 -1
- package/dist/worktree/safety.d.ts.map +1 -1
- package/dist/worktree/safety.js +13 -11
- package/dist/worktree/safety.js.map +1 -1
- package/dist/worktree.d.ts.map +1 -1
- package/dist/worktree.js +41 -39
- package/dist/worktree.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,572 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Named phases of the completion-event pipeline.
|
|
3
|
+
*
|
|
4
|
+
* Extracted VERBATIM from the former ~690-line handleCompletionEvent body
|
|
5
|
+
* (completion/event.ts) so each sub-decision is independently testable
|
|
6
|
+
* without constructing the whole completion world:
|
|
7
|
+
*
|
|
8
|
+
* 1. applyPlanningRefresh planning-team delivery discovery / failure
|
|
9
|
+
* 2. routeReviewWindowCompletion review routing (review pass vs coding pass)
|
|
10
|
+
* 3. runWakeCycleSelfHeal pre-guard advanceDeliveryStatuses self-heal
|
|
11
|
+
* 4. computeCompletionFacts the post-advance factual picture
|
|
12
|
+
* 5. checkDeliveryAdvancementStall cross-respawn advancement watchdog
|
|
13
|
+
* 6. executeCompletionAction side effects of the chosen action
|
|
14
|
+
*
|
|
15
|
+
* The decision itself stays pure in completion-decision.ts. Behavior is
|
|
16
|
+
* preserved exactly: same reads, same order, same log lines, same early
|
|
17
|
+
* returns; delivery execution_status transition semantics are untouched
|
|
18
|
+
* (single-writer reconciler).
|
|
19
|
+
*/
|
|
20
|
+
import { sendMessage, DELIVERY_STATUS } from '@telora/daemon-core';
|
|
21
|
+
import { isStatusCascadable, isStatusAgentActionable } from '../stage-classifier.js';
|
|
22
|
+
import { buildWakeMessage, buildReEngagementMessage } from '../focus-prompt-builder.js';
|
|
23
|
+
import { OPEN_ISSUE_STATUSES } from '../constants.js';
|
|
24
|
+
import { isAuditPhaseFocus } from '../audit-shape.js';
|
|
25
|
+
import { shouldCheckNonAdvanceable } from './completion-decision.js';
|
|
26
|
+
import { takeProgressSnapshot, snapshotsEqual } from './progress-snapshot.js';
|
|
27
|
+
import { isInReviewWindow, findNonAdvanceableDelivery } from './advanceability.js';
|
|
28
|
+
import { getFocusWorktree as defaultGetFocusWorktree } from '../focus-worktree-state.js';
|
|
29
|
+
import { worktreeHasUncommittedChanges as defaultWorktreeHasUncommittedChanges } from '../worktree/index.js';
|
|
30
|
+
import { readWorktreeHeadSha as defaultReadWorktreeHeadSha } from '../git/index.js';
|
|
31
|
+
import { resolveAutoRemediationBudget } from '../delivery-advance-block.js';
|
|
32
|
+
import { escalatePlanningFailure, escalateNoProgress, escalateNonAdvanceable, escalateDeliveryAdvancementStalled, } from './event-escalations.js';
|
|
33
|
+
import { recordDeliveryAdvancementCycle } from './delivery-advancement-guard.js';
|
|
34
|
+
import { reconcileTerminatedTeamWork as defaultReconcileTerminatedTeamWork, } from './terminated-work-reconcile.js';
|
|
35
|
+
import { createLogger } from '../log.js';
|
|
36
|
+
const log = createLogger({ module: 'focus-executor' });
|
|
37
|
+
// ── Phase 1: planning refresh ───────────────────────────────────────────
|
|
38
|
+
/**
|
|
39
|
+
* Wake-cycle refresh (Option A): planning teams spawn with knownDeliveryIds
|
|
40
|
+
* empty. The MCP-driven planning turn writes deliveries to the DB, so we
|
|
41
|
+
* re-snapshot them here before any downstream merge/completion logic looks
|
|
42
|
+
* at the set. WHY Option A: keeps the refresh on the existing wake path
|
|
43
|
+
* instead of polling, so it runs exactly when new deliveries become visible.
|
|
44
|
+
*
|
|
45
|
+
* Returns true when the team was terminated (planning produced nothing).
|
|
46
|
+
*/
|
|
47
|
+
export async function applyPlanningRefresh(ctx, deps, currentDeliveries) {
|
|
48
|
+
const { focusId, focusName, teamState } = ctx;
|
|
49
|
+
if (!teamState.planningPhase)
|
|
50
|
+
return false;
|
|
51
|
+
if (currentDeliveries.length === 0) {
|
|
52
|
+
log.warn(`Planning team for "${focusName}" produced no deliveries ` +
|
|
53
|
+
`-- escalating and terminating`);
|
|
54
|
+
await escalatePlanningFailure({
|
|
55
|
+
organizationId: teamState.organizationId,
|
|
56
|
+
sessionId: teamState.leadSessionId ?? '',
|
|
57
|
+
focusId,
|
|
58
|
+
focusName,
|
|
59
|
+
agentRoleId: teamState.roleId,
|
|
60
|
+
}, deps);
|
|
61
|
+
teamState.shutdownReason = 'work_complete';
|
|
62
|
+
deps.terminateTeam(focusId);
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
for (const d of currentDeliveries) {
|
|
66
|
+
teamState.knownDeliveryIds.add(d.id);
|
|
67
|
+
teamState.deliveryStageIds.set(d.id, d.currentWorkflowStageId);
|
|
68
|
+
}
|
|
69
|
+
teamState.planningPhase = false;
|
|
70
|
+
log.info(`Planning refresh for "${focusName}": ` +
|
|
71
|
+
`${currentDeliveries.length} delivery(ies) discovered`);
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Review-window handling. Resolves review_requested_at FRESH because it can
|
|
76
|
+
* be set/cleared between spawn and this event.
|
|
77
|
+
*
|
|
78
|
+
* - A completing REVIEW pass routes verify deliveries deterministically
|
|
79
|
+
* (runReviewExitHandler) and terminates -> 'terminated'.
|
|
80
|
+
* - A completing CODING pass during a review window is left alive so the
|
|
81
|
+
* review's own completion closes the focus -> 'leave_running'.
|
|
82
|
+
* - Otherwise -> 'not_in_review' and the pipeline continues.
|
|
83
|
+
*/
|
|
84
|
+
export async function routeReviewWindowCompletion(ctx, deps, currentDeliveries) {
|
|
85
|
+
const { focusId, focusName, teamState } = ctx;
|
|
86
|
+
let reviewRequestedAt = null;
|
|
87
|
+
if (deps.getReviewRequestedAt) {
|
|
88
|
+
try {
|
|
89
|
+
reviewRequestedAt = await deps.getReviewRequestedAt(ctx.config, focusId);
|
|
90
|
+
}
|
|
91
|
+
catch (err) {
|
|
92
|
+
log.warn(`getReviewRequestedAt failed for "${focusName}": ${err.message}`);
|
|
93
|
+
// Fail open: a read failure must not block the existing teardown logic.
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (!isInReviewWindow(reviewRequestedAt, currentDeliveries))
|
|
97
|
+
return 'not_in_review';
|
|
98
|
+
const verifyCount = currentDeliveries.filter(d => d.executionStatus === DELIVERY_STATUS.VERIFY).length;
|
|
99
|
+
if (teamState.sessionType === 'review') {
|
|
100
|
+
// A REVIEW pass just completed -- it emitted its result, which IS the
|
|
101
|
+
// "a review cycle ran" signal. Close the focus DETERMINISTICALLY now,
|
|
102
|
+
// keyed on THIS completion event rather than on process exit. A review
|
|
103
|
+
// resumes its prior session to preserve context (INJ-D) and runs as an
|
|
104
|
+
// interactive stream-json process that emits a result but never exits;
|
|
105
|
+
// the old exit-keyed close therefore waited forever (the review-resume
|
|
106
|
+
// deadlock). runReviewExitHandler routes verify deliveries by the
|
|
107
|
+
// deterministic signal -- a pass that filed zero new issues and has no
|
|
108
|
+
// open work closes verify->done; open work routes verify->verify_failed
|
|
109
|
+
// to re-iterate -- and clears review_requested_at. The review team is then
|
|
110
|
+
// torn down: closure has ALREADY happened, so it no longer matters whether
|
|
111
|
+
// the process exits cleanly or is SIGTERM'd, and the next review cycle
|
|
112
|
+
// resumes the same session id to review only the new delta.
|
|
113
|
+
//
|
|
114
|
+
// succeeded is the ACTUAL result of the review turn (!isError), NOT a
|
|
115
|
+
// hardcoded true. A review that erred (e.g. the CLI failed to start, or a
|
|
116
|
+
// model/engine mismatch) emits a result event with isError=true and files
|
|
117
|
+
// no defects -- the old `succeeded: true` made that indistinguishable from
|
|
118
|
+
// a genuinely clean review, so an errored/no-op review auto-approved
|
|
119
|
+
// verify->done WITHOUT a real review. With the real flag, an errored
|
|
120
|
+
// review leaves the delivery in verify; the next auto-review poll
|
|
121
|
+
// re-triggers, and a persistently failing review is bounded by the
|
|
122
|
+
// review_window_stalled escalation.
|
|
123
|
+
const reviewSucceeded = !ctx.completionInfo.result.isError;
|
|
124
|
+
log.info(`Review pass completed for "${focusName}" (${verifyCount} ` +
|
|
125
|
+
`delivery(ies) in verify, succeeded=${reviewSucceeded}) -- routing deterministically ` +
|
|
126
|
+
`by filed issues, then terminating.`);
|
|
127
|
+
// Coverage evidence: spawn-tip (what the review saw, carried on the team
|
|
128
|
+
// state) is stamped as the watermark; exit-tip (HEAD now) is compared to
|
|
129
|
+
// it to detect mid-review drift. Exit-tip is best-effort via injected git
|
|
130
|
+
// deps; null makes coverage unconfirmable (auto-approve withheld).
|
|
131
|
+
const reviewSpawnTip = teamState.reviewSpawnTip;
|
|
132
|
+
let currentBranchTip = null;
|
|
133
|
+
try {
|
|
134
|
+
const wt = deps.getFocusWorktree?.(focusId);
|
|
135
|
+
if (wt?.worktreePath) {
|
|
136
|
+
currentBranchTip = deps.readWorktreeHeadSha?.(wt.worktreePath) ?? null;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
catch (err) {
|
|
140
|
+
log.warn(`Could not resolve exit-tip for "${focusName}" coverage gate: ${err.message}`);
|
|
141
|
+
}
|
|
142
|
+
try {
|
|
143
|
+
await deps.runReviewExitHandler({
|
|
144
|
+
focusId,
|
|
145
|
+
focusName,
|
|
146
|
+
organizationId: teamState.organizationId,
|
|
147
|
+
productId: teamState.productId,
|
|
148
|
+
sessionId: teamState.leadSessionId ?? '',
|
|
149
|
+
sessionType: 'review',
|
|
150
|
+
succeeded: reviewSucceeded,
|
|
151
|
+
reviewSpawnTip,
|
|
152
|
+
currentBranchTip,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
catch (err) {
|
|
156
|
+
log.warn(`Deterministic review routing failed for "${focusName}": ${err.message}`);
|
|
157
|
+
}
|
|
158
|
+
teamState.shutdownReason = 'work_complete';
|
|
159
|
+
deps.terminateTeam(focusId);
|
|
160
|
+
return 'terminated';
|
|
161
|
+
}
|
|
162
|
+
// A non-review (coding) team completed a cycle while a review is in flight.
|
|
163
|
+
// Do NOT tear it down on the all-terminal / no-actionable-work branches
|
|
164
|
+
// below: `verify` is cascadable, so they would SIGTERM the team mid-review.
|
|
165
|
+
// Leave it running; the review team's own completion closes the focus.
|
|
166
|
+
log.info(`"${focusName}" is in a review window (review_requested_at set, ` +
|
|
167
|
+
`${verifyCount} delivery(ies) in verify) and the completing session is a ` +
|
|
168
|
+
`${teamState.sessionType} pass -- not tearing down; the review pass completion routes ` +
|
|
169
|
+
`the verify deliveries.`);
|
|
170
|
+
return 'leave_running';
|
|
171
|
+
}
|
|
172
|
+
// ── Phase 3: wake-cycle self-heal advance ───────────────────────────────
|
|
173
|
+
/**
|
|
174
|
+
* Self-heal BEFORE the no-progress guard. When actionable deliveries exist
|
|
175
|
+
* but none carry open issues, the team has nothing left to code. The common
|
|
176
|
+
* cause is a review that bounced a delivery to verify_failed while all its
|
|
177
|
+
* issues are already Done. The daemon's transparent
|
|
178
|
+
* verify_failed -> coding -> verify stepping (advanceDeliveryStatuses) clears
|
|
179
|
+
* that. Running it here -- before snapshotting -- means a benign "no work to
|
|
180
|
+
* do" cycle either terminates the team cleanly (all deliveries now terminal)
|
|
181
|
+
* or shows up as real progress (the delivery status moved), instead of being
|
|
182
|
+
* counted as coder no-progress. Either way it can no longer accrue toward a
|
|
183
|
+
* spurious team_failure escalation. (Previously this advance ran only AFTER
|
|
184
|
+
* the guard, so the counter could reach the limit and escalate first.)
|
|
185
|
+
*/
|
|
186
|
+
export async function runWakeCycleSelfHeal(ctx, deps, currentDeliveries, currentIssues) {
|
|
187
|
+
const { focusId, focusName, teamState } = ctx;
|
|
188
|
+
const actionableDeliveryIds = new Set(currentDeliveries
|
|
189
|
+
.filter(d => isStatusAgentActionable(d.executionStatus ?? ''))
|
|
190
|
+
.map(d => d.id));
|
|
191
|
+
const hasActionableWithOpenIssues = currentIssues.some(i => actionableDeliveryIds.has(i.deliveryId) && OPEN_ISSUE_STATUSES.has(i.status));
|
|
192
|
+
let effectiveDeliveries = currentDeliveries;
|
|
193
|
+
if (actionableDeliveryIds.size > 0 && !hasActionableWithOpenIssues) {
|
|
194
|
+
try {
|
|
195
|
+
await deps.advanceDeliveryStatuses(ctx.config, teamState, teamState.leadSessionId ?? '');
|
|
196
|
+
}
|
|
197
|
+
catch (err) {
|
|
198
|
+
log.warn(`Wake-cycle advanceDeliveryStatuses failed for "${focusName}": ${err.message}`);
|
|
199
|
+
}
|
|
200
|
+
// Re-fetch and re-check termination after the advance -- if every delivery
|
|
201
|
+
// is now terminal-for-the-team, exit cleanly and hand off to review
|
|
202
|
+
// routing / verification instead of sending a stale re-engagement.
|
|
203
|
+
try {
|
|
204
|
+
effectiveDeliveries = await deps.getFocusDeliveries(focusId);
|
|
205
|
+
const stillNonTerminal = effectiveDeliveries.filter(d => !isStatusCascadable(d.executionStatus ?? ''));
|
|
206
|
+
if (stillNonTerminal.length === 0) {
|
|
207
|
+
log.info(`All deliveries terminal after wake-cycle advance for "${focusName}" -- terminating team`);
|
|
208
|
+
teamState.shutdownReason = 'work_complete';
|
|
209
|
+
deps.terminateTeam(focusId);
|
|
210
|
+
return { terminated: true, effectiveDeliveries };
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
catch (err) {
|
|
214
|
+
log.warn(`Failed to re-fetch deliveries after wake-cycle advance for "${focusName}": ${err.message}`);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return { terminated: false, effectiveDeliveries };
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Recompute the picture on the post-advance state. The team owns exactly two
|
|
221
|
+
* kinds of non-terminal work: planning deliveries (it scopes them) and
|
|
222
|
+
* agent-actionable deliveries that still carry open issues (it codes them).
|
|
223
|
+
* See the inline notes for the audit-phase, verify_failed-pending-requeue,
|
|
224
|
+
* and advancedThisCycle subtleties -- each guards a specific production
|
|
225
|
+
* failure mode and is preserved exactly.
|
|
226
|
+
*/
|
|
227
|
+
export async function computeCompletionFacts(ctx, deps, currentDeliveries, effectiveDeliveries, currentIssues) {
|
|
228
|
+
const { focusId, focusName, teamState } = ctx;
|
|
229
|
+
const postNonTerminal = effectiveDeliveries.filter(d => !isStatusCascadable(d.executionStatus ?? ''));
|
|
230
|
+
const postActionableIds = new Set(effectiveDeliveries
|
|
231
|
+
.filter(d => isStatusAgentActionable(d.executionStatus ?? ''))
|
|
232
|
+
.map(d => d.id));
|
|
233
|
+
const postHasActionableOpen = currentIssues.some(i => postActionableIds.has(i.deliveryId) && OPEN_ISSUE_STATUSES.has(i.status));
|
|
234
|
+
// A read_only focus is awaiting the human ratify gate (audit intake): its
|
|
235
|
+
// `planning` deliveries are held, not team work the team is failing to
|
|
236
|
+
// advance. Counting them as actionable made a not-yet-ratified audit focus
|
|
237
|
+
// accrue no-progress cycles it could never clear -> a spurious no-progress
|
|
238
|
+
// team_failure (escalation aa58d9c3, focus "Test Quality Audit"). Resolve the
|
|
239
|
+
// audit-phase state FRESH: an explicit read_only=true, OR the second
|
|
240
|
+
// structural signal (audit-origin AND not-yet-ratified). The second signal
|
|
241
|
+
// makes a flag-absent audit focus (read_only silently null) still count as
|
|
242
|
+
// audit-phase here, so its held `planning` deliveries are NOT treated as
|
|
243
|
+
// team-actionable -- degrading gracefully instead of the spurious no-progress
|
|
244
|
+
// team_failure (injection #7; escalation aa58d9c3 does not reproduce). Fail
|
|
245
|
+
// open to NOT-audit-phase so a lookup failure preserves the prior
|
|
246
|
+
// (escalate-eligible) behavior rather than silently muting the guard.
|
|
247
|
+
let focusAuditPhase = false;
|
|
248
|
+
if (deps.getFocusRatificationState) {
|
|
249
|
+
try {
|
|
250
|
+
const st = await deps.getFocusRatificationState(ctx.config, focusId);
|
|
251
|
+
focusAuditPhase = isAuditPhaseFocus({
|
|
252
|
+
readOnly: st.readOnly,
|
|
253
|
+
auditOrigin: st.auditOrigin ?? false,
|
|
254
|
+
ratified: st.ratifiedAt != null,
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
catch (err) {
|
|
258
|
+
log.warn(`getFocusRatificationState failed for "${focusName}", ` +
|
|
259
|
+
`treating as not-audit-phase: ${err.message}`);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
// Planning deliveries count as team-actionable ONLY on a non-audit-phase focus
|
|
263
|
+
// (where the team is expected to scope them). On an audit-phase focus they await
|
|
264
|
+
// ratification, so they do not keep the team on the no-progress path. A
|
|
265
|
+
// genuinely stuck planning delivery on a NORMAL focus still escalates
|
|
266
|
+
// (true-positive preserved). Queued deliveries with zero open issues already
|
|
267
|
+
// contribute nothing here -- postHasActionableOpen requires an open issue on an
|
|
268
|
+
// agent-actionable delivery -- so a freshly-scoped, not-yet-started queued
|
|
269
|
+
// delivery does not, on its own, accrue no-progress cycles.
|
|
270
|
+
const hasPlanning = !focusAuditPhase && effectiveDeliveries.some(d => (d.executionStatus ?? '') === 'planning');
|
|
271
|
+
const teamHasActionableWork = hasPlanning || postHasActionableOpen;
|
|
272
|
+
// Resolve the focus worktree once for BOTH the git-activity snapshot
|
|
273
|
+
// dimension and the dirty re-wake guard. A team that wrote AND committed
|
|
274
|
+
// code this cycle moved the focus branch HEAD even when no DB state moved;
|
|
275
|
+
// feeding that sha into the snapshot makes the commit reset the no-progress
|
|
276
|
+
// counter through the EXISTING madeProgress/snapshotsEqual machinery. null
|
|
277
|
+
// when no worktree is registered or git could not be read.
|
|
278
|
+
const resolveWorktree = deps.getFocusWorktree ?? defaultGetFocusWorktree;
|
|
279
|
+
const readHeadSha = deps.readWorktreeHeadSha ?? defaultReadWorktreeHeadSha;
|
|
280
|
+
const focusWorktreePath = resolveWorktree(focusId)?.worktreePath ?? null;
|
|
281
|
+
const focusHeadSha = focusWorktreePath !== null ? readHeadSha(focusWorktreePath) : null;
|
|
282
|
+
// Capture the (post-advance) snapshot for progress detection. Treat both null
|
|
283
|
+
// and undefined as "no prior snapshot" -- legacy test fixtures may not set
|
|
284
|
+
// the field, and a fresh team has lastProgressSnapshot=null.
|
|
285
|
+
const snapshot = takeProgressSnapshot(effectiveDeliveries, currentIssues, focusHeadSha);
|
|
286
|
+
const priorSnapshot = teamState.lastProgressSnapshot ?? null;
|
|
287
|
+
// verify_failed-pending-requeue is daemon-owned advancement: a delivery left
|
|
288
|
+
// in verify_failed is waiting on the daemon's transparent requeue
|
|
289
|
+
// (listener-auto-advance); the TEAM cannot move it. It resets the no-progress
|
|
290
|
+
// counter (madeProgress) but is deliberately NOT folded into
|
|
291
|
+
// advancedThisCycle -- a NULL-stage verify_failed is wedged, not pending, and
|
|
292
|
+
// must remain eligible for the non-advanceable dead-end escalation.
|
|
293
|
+
const verifyFailedPendingRequeue = effectiveDeliveries.some(d => (d.executionStatus ?? '') === 'verify_failed');
|
|
294
|
+
const madeProgress = verifyFailedPendingRequeue || priorSnapshot === null
|
|
295
|
+
? true
|
|
296
|
+
: !snapshotsEqual(priorSnapshot, snapshot);
|
|
297
|
+
// Did the team *positively advance* state this cycle? Distinct from
|
|
298
|
+
// madeProgress: a null prior snapshot (a FRESH or RESPAWNED team) is NOT
|
|
299
|
+
// evidence of advancement. The daemon respawns a wedged focus's team every
|
|
300
|
+
// poll, so the handler always sees priorSnapshot === null there -- gating the
|
|
301
|
+
// dead-end guard on !madeProgress made it unreachable and the focus churned
|
|
302
|
+
// forever; !advancedThisCycle keeps it reachable.
|
|
303
|
+
const advancedThisCycle = priorSnapshot !== null && !snapshotsEqual(priorSnapshot, snapshot);
|
|
304
|
+
// Non-advanceability lookup, gated by shouldCheckNonAdvanceable: scoped to
|
|
305
|
+
// agent-actionable deliveries (queued / coding / verify_failed) -- the states
|
|
306
|
+
// the team is *expected* to move. Daemon/review-managed states (in_review,
|
|
307
|
+
// paused) are deliberately excluded: another subsystem owns advancing them.
|
|
308
|
+
let stuck = null;
|
|
309
|
+
if (shouldCheckNonAdvanceable({ teamHasActionableWork, advancedThisCycle })) {
|
|
310
|
+
const candidates = postNonTerminal.filter(d => isStatusAgentActionable(d.executionStatus ?? ''));
|
|
311
|
+
stuck = await findNonAdvanceableDelivery(candidates, deps.fetchEffectiveWorkflow);
|
|
312
|
+
}
|
|
313
|
+
// The no-progress counter value AFTER this cycle's reset-or-increment.
|
|
314
|
+
// Only committed to teamState on the actionable-work paths in
|
|
315
|
+
// executeCompletionAction -- the no-actionable-work terminations deliberately
|
|
316
|
+
// do not touch the counter.
|
|
317
|
+
const updatedNoProgressCycles = madeProgress ? 0 : (teamState.noProgressCycles ?? 0) + 1;
|
|
318
|
+
// Measurable progress this cycle means the prior dirty episode -- if any --
|
|
319
|
+
// is no longer stalled, so the commit-nudge budget resets alongside the
|
|
320
|
+
// no-progress counter.
|
|
321
|
+
if (madeProgress) {
|
|
322
|
+
teamState.commitNudgeAttempts = 0;
|
|
323
|
+
}
|
|
324
|
+
return {
|
|
325
|
+
currentDeliveries,
|
|
326
|
+
effectiveDeliveries,
|
|
327
|
+
currentIssues,
|
|
328
|
+
postNonTerminal,
|
|
329
|
+
postHasActionableOpen,
|
|
330
|
+
teamHasActionableWork,
|
|
331
|
+
focusWorktreePath,
|
|
332
|
+
focusHeadSha,
|
|
333
|
+
snapshot,
|
|
334
|
+
priorSnapshot,
|
|
335
|
+
madeProgress,
|
|
336
|
+
advancedThisCycle,
|
|
337
|
+
stuck,
|
|
338
|
+
updatedNoProgressCycles,
|
|
339
|
+
};
|
|
340
|
+
}
|
|
341
|
+
// ── Phase 5: cross-respawn delivery-advancement watchdog ────────────────
|
|
342
|
+
/**
|
|
343
|
+
* Records this cycle on the persistent delivery-advancement guard and, when
|
|
344
|
+
* the threshold is reached, files ONE delivery-advancement-stalled escalation
|
|
345
|
+
* (idempotent against an open team_failure) and terminates.
|
|
346
|
+
*
|
|
347
|
+
* Returns true when the team was terminated.
|
|
348
|
+
*/
|
|
349
|
+
export async function checkDeliveryAdvancementStall(ctx, deps, facts, action, noProgressLimit) {
|
|
350
|
+
const { focusId, focusName, teamState } = ctx;
|
|
351
|
+
const shouldRecord = facts.teamHasActionableWork &&
|
|
352
|
+
action.kind !== 'escalate_no_progress_and_terminate' &&
|
|
353
|
+
(facts.priorSnapshot === null || !facts.madeProgress);
|
|
354
|
+
const deliveryAdvancement = shouldRecord
|
|
355
|
+
? recordDeliveryAdvancementCycle(focusId, facts.effectiveDeliveries,
|
|
356
|
+
// Reuse the SAME issue + head-sha values computeCompletionFacts already
|
|
357
|
+
// derived for the madeProgress snapshot -- passed through, never
|
|
358
|
+
// re-derived -- so the guard's cross-respawn progress axes stay
|
|
359
|
+
// consistent with madeProgress without a second issue fetch or git read.
|
|
360
|
+
facts.currentIssues, facts.focusHeadSha, noProgressLimit)
|
|
361
|
+
: null;
|
|
362
|
+
if (!deliveryAdvancement?.thresholdReached)
|
|
363
|
+
return false;
|
|
364
|
+
let alreadyEscalated = false;
|
|
365
|
+
try {
|
|
366
|
+
alreadyEscalated = await deps.hasOpenTeamFailureEscalation(focusId);
|
|
367
|
+
}
|
|
368
|
+
catch (err) {
|
|
369
|
+
log.warn(`Open-escalation check failed for "${focusName}", proceeding to escalate delivery-advancement stall: ${err.message}`);
|
|
370
|
+
}
|
|
371
|
+
if (!alreadyEscalated) {
|
|
372
|
+
await escalateDeliveryAdvancementStalled({
|
|
373
|
+
organizationId: teamState.organizationId,
|
|
374
|
+
sessionId: teamState.leadSessionId ?? '',
|
|
375
|
+
focusId,
|
|
376
|
+
focusName,
|
|
377
|
+
agentRoleId: teamState.roleId,
|
|
378
|
+
cycles: deliveryAdvancement.noAdvancementCycles,
|
|
379
|
+
deliveries: facts.effectiveDeliveries,
|
|
380
|
+
}, deps);
|
|
381
|
+
}
|
|
382
|
+
else {
|
|
383
|
+
log.info(`Delivery-advancement stall for "${focusName}" but an open ` +
|
|
384
|
+
`team_failure escalation already exists -- terminating without filing a duplicate`);
|
|
385
|
+
}
|
|
386
|
+
teamState.shutdownReason = 'work_complete';
|
|
387
|
+
deps.terminateTeam(focusId);
|
|
388
|
+
return true;
|
|
389
|
+
}
|
|
390
|
+
// ── Phase 6: action side effects ────────────────────────────────────────
|
|
391
|
+
/**
|
|
392
|
+
* Execute the chosen action's side effects. The decision (completion-decision)
|
|
393
|
+
* is pure; every mutation of team state and every escalation lives here, with
|
|
394
|
+
* the branch semantics preserved exactly -- including the commit-nudge re-wake
|
|
395
|
+
* and terminated-work reconciliation on the no-progress path.
|
|
396
|
+
*/
|
|
397
|
+
export async function executeCompletionAction(ctx, deps, facts, action, noProgressLimit) {
|
|
398
|
+
const { focusId, focusName, teamState, completionDetector, proc } = ctx;
|
|
399
|
+
const { currentDeliveries, effectiveDeliveries, currentIssues, postNonTerminal, snapshot, focusWorktreePath, stuck, updatedNoProgressCycles, } = facts;
|
|
400
|
+
switch (action.kind) {
|
|
401
|
+
case 'escalate_non_advanceable_and_terminate': {
|
|
402
|
+
// No team-actionable work AND the team did not advance state this cycle
|
|
403
|
+
// AND at least one remaining non-terminal delivery is *non-advanceable*
|
|
404
|
+
// (NULL stage, or no automatic transition out of its current stage):
|
|
405
|
+
// nothing -- not the team, not the daemon -- will ever move it.
|
|
406
|
+
// Terminating cleanly would just feed the spawn -> idle-exit -> respawn
|
|
407
|
+
// thrash loop. Per the asymmetry principle the daemon must escalate,
|
|
408
|
+
// never silently churn. File EXACTLY ONE escalation (idempotent: skip if
|
|
409
|
+
// one is already open) and terminate.
|
|
410
|
+
let alreadyEscalated = false;
|
|
411
|
+
try {
|
|
412
|
+
alreadyEscalated = await deps.hasOpenTeamFailureEscalation(focusId);
|
|
413
|
+
}
|
|
414
|
+
catch (err) {
|
|
415
|
+
log.warn(`Open-escalation check failed for "${focusName}", proceeding to escalate: ${err.message}`);
|
|
416
|
+
}
|
|
417
|
+
if (!alreadyEscalated) {
|
|
418
|
+
log.warn(`Non-advanceable delivery for "${focusName}" -- ` +
|
|
419
|
+
`"${stuck.name}" [${stuck.executionStatus ?? 'draft'}] cannot be advanced ` +
|
|
420
|
+
`(stage=${stuck.currentWorkflowStageId ?? 'NULL'}); escalating and terminating ` +
|
|
421
|
+
`instead of respawning`);
|
|
422
|
+
await escalateNonAdvanceable({
|
|
423
|
+
organizationId: teamState.organizationId,
|
|
424
|
+
sessionId: teamState.leadSessionId ?? '',
|
|
425
|
+
focusId,
|
|
426
|
+
focusName,
|
|
427
|
+
agentRoleId: teamState.roleId,
|
|
428
|
+
stuck: stuck,
|
|
429
|
+
remaining: postNonTerminal,
|
|
430
|
+
}, deps);
|
|
431
|
+
}
|
|
432
|
+
else {
|
|
433
|
+
log.info(`Non-advanceable delivery for "${focusName}" but an open ` +
|
|
434
|
+
`escalation already exists -- terminating without filing a duplicate`);
|
|
435
|
+
}
|
|
436
|
+
teamState.lastProgressSnapshot = snapshot;
|
|
437
|
+
teamState.shutdownReason = 'work_complete';
|
|
438
|
+
deps.terminateTeam(focusId);
|
|
439
|
+
return;
|
|
440
|
+
}
|
|
441
|
+
case 'terminate_no_actionable_work': {
|
|
442
|
+
// Every remaining non-terminal delivery is in a daemon/review-managed
|
|
443
|
+
// state the coding team cannot advance (in_review, paused, or a
|
|
444
|
+
// verify_failed the self-heal could not yet clear). The team is NOT
|
|
445
|
+
// stuck on work it can do -- it has nothing to do. Terminate cleanly
|
|
446
|
+
// and let the daemon (on-exit advance), the listener auto-advance, and
|
|
447
|
+
// the review routing move these deliveries.
|
|
448
|
+
log.info(`No team-actionable work remains for "${focusName}" -- ` +
|
|
449
|
+
`${postNonTerminal.length} non-terminal delivery(ies) in daemon-managed states ` +
|
|
450
|
+
`(in_review / paused / verify-pending); terminating cleanly without escalation`);
|
|
451
|
+
teamState.shutdownReason = 'work_complete';
|
|
452
|
+
deps.terminateTeam(focusId);
|
|
453
|
+
return;
|
|
454
|
+
}
|
|
455
|
+
case 'escalate_no_progress_and_terminate': {
|
|
456
|
+
// ── Git-aware re-wake-before-terminate ────────────────────────────────
|
|
457
|
+
// This is the path that was KILLING PRODUCERS: a coding team that wrote
|
|
458
|
+
// all its code but did not commit it sees no delivery/issue STATE move, so
|
|
459
|
+
// it crosses the no-progress threshold and -- without this guard -- is
|
|
460
|
+
// escalated + terminated. Once it is dead the commit-gate has no live team
|
|
461
|
+
// to re-wake, so the uncommitted work is stranded until a human commits.
|
|
462
|
+
//
|
|
463
|
+
// Before escalating, check whether the team actually PRODUCED work: a
|
|
464
|
+
// dirty focus worktree (uncommitted changes) means there is real work to
|
|
465
|
+
// preserve. If so AND a live lead is still reachable AND the commit-nudge
|
|
466
|
+
// budget is not exhausted, nudge the lead to commit instead of killing it.
|
|
467
|
+
const worktreeIsDirty = focusWorktreePath !== null &&
|
|
468
|
+
(deps.worktreeHasUncommittedChanges ?? defaultWorktreeHasUncommittedChanges)(focusWorktreePath);
|
|
469
|
+
const liveLead = teamState.leadStdin;
|
|
470
|
+
// Budget mirrors the advance-block auto-remediation budget so the two
|
|
471
|
+
// re-wake paths bound retries the same way.
|
|
472
|
+
const commitNudgeBudget = resolveAutoRemediationBudget();
|
|
473
|
+
const nudgesSpent = teamState.commitNudgeAttempts ?? 0;
|
|
474
|
+
if (worktreeIsDirty && liveLead && nudgesSpent < commitNudgeBudget) {
|
|
475
|
+
teamState.commitNudgeAttempts = nudgesSpent + 1;
|
|
476
|
+
teamState.lastProgressSnapshot = snapshot;
|
|
477
|
+
log.warn(`No-progress threshold reached for "${focusName}", but the ` +
|
|
478
|
+
`focus worktree has uncommitted changes and a live lead is reachable -- ` +
|
|
479
|
+
`re-waking the team to commit instead of terminating ` +
|
|
480
|
+
`(commit-nudge attempt ${teamState.commitNudgeAttempts}/${commitNudgeBudget}).`);
|
|
481
|
+
sendMessage(liveLead, `Your focus worktree has uncommitted changes, so the daemon cannot advance ` +
|
|
482
|
+
`the delivery and will not terminate the team yet. Please commit your work in ` +
|
|
483
|
+
`${focusWorktreePath}, and move every finished issue to In Review (its delivery ` +
|
|
484
|
+
`advances out of coding once its work issues are Done/Verified/In Review). The ` +
|
|
485
|
+
`daemon advances automatically once the worktree is clean. (commit-nudge attempt ` +
|
|
486
|
+
`${teamState.commitNudgeAttempts}/${commitNudgeBudget})`);
|
|
487
|
+
completionDetector.reset();
|
|
488
|
+
return;
|
|
489
|
+
}
|
|
490
|
+
// ── Reconcile captured work into the verify gate ──────────────────────
|
|
491
|
+
// The commit-nudge re-wake did not fire (clean tree, OR no live lead, OR
|
|
492
|
+
// budget exhausted). Before escalating, rescue any committed work; the
|
|
493
|
+
// no-progress team_failure escalation fires ONLY when nothing was
|
|
494
|
+
// reconciled -- i.e. genuinely nothing was produced.
|
|
495
|
+
const reconcile = deps.reconcileTerminatedTeamWork ?? defaultReconcileTerminatedTeamWork;
|
|
496
|
+
let reconciled = { reconciledCount: 0, workCaptured: false };
|
|
497
|
+
try {
|
|
498
|
+
reconciled = await reconcile({
|
|
499
|
+
config: ctx.config,
|
|
500
|
+
teamState,
|
|
501
|
+
deliveries: effectiveDeliveries,
|
|
502
|
+
issues: currentIssues,
|
|
503
|
+
worktreePath: focusWorktreePath,
|
|
504
|
+
sessionId: teamState.leadSessionId ?? '',
|
|
505
|
+
});
|
|
506
|
+
}
|
|
507
|
+
catch (err) {
|
|
508
|
+
log.warn(`Terminated-work reconciliation failed for "${focusName}": ${err.message}`);
|
|
509
|
+
}
|
|
510
|
+
if (reconciled.reconciledCount > 0) {
|
|
511
|
+
// Committed work re-entered the gate -- terminate cleanly, NO team_failure.
|
|
512
|
+
teamState.commitNudgeAttempts = 0;
|
|
513
|
+
teamState.noProgressCycles = updatedNoProgressCycles;
|
|
514
|
+
teamState.lastProgressSnapshot = snapshot;
|
|
515
|
+
log.info(`Terminated team for "${focusName}" had committed work -- ` +
|
|
516
|
+
`reconciled ${reconciled.reconciledCount} coding delivery(ies) into verify; ` +
|
|
517
|
+
`terminating WITHOUT a team_failure escalation.`);
|
|
518
|
+
teamState.shutdownReason = 'work_complete';
|
|
519
|
+
deps.terminateTeam(focusId);
|
|
520
|
+
return;
|
|
521
|
+
}
|
|
522
|
+
// Crossed the no-progress threshold: escalate and shut the team down so
|
|
523
|
+
// a human can intervene. Reached only when the team HAS actionable work
|
|
524
|
+
// it owns yet has not moved it for N consecutive cycles.
|
|
525
|
+
teamState.commitNudgeAttempts = 0;
|
|
526
|
+
teamState.noProgressCycles = updatedNoProgressCycles;
|
|
527
|
+
teamState.lastProgressSnapshot = snapshot;
|
|
528
|
+
log.warn(`Scope-coverage guard tripped for "${focusName}" -- ` +
|
|
529
|
+
`${teamState.noProgressCycles} consecutive cycles with no progress on ${postNonTerminal.length} ` +
|
|
530
|
+
`non-terminal delivery(ies); escalating and terminating`);
|
|
531
|
+
await escalateNoProgress({
|
|
532
|
+
organizationId: teamState.organizationId,
|
|
533
|
+
sessionId: teamState.leadSessionId ?? '',
|
|
534
|
+
focusId,
|
|
535
|
+
focusName,
|
|
536
|
+
agentRoleId: teamState.roleId,
|
|
537
|
+
cycles: teamState.noProgressCycles,
|
|
538
|
+
remaining: postNonTerminal,
|
|
539
|
+
}, deps);
|
|
540
|
+
teamState.shutdownReason = 'work_complete';
|
|
541
|
+
deps.terminateTeam(focusId);
|
|
542
|
+
return;
|
|
543
|
+
}
|
|
544
|
+
case 'handoff_new_work':
|
|
545
|
+
case 'reengage': {
|
|
546
|
+
teamState.noProgressCycles = updatedNoProgressCycles;
|
|
547
|
+
teamState.lastProgressSnapshot = snapshot;
|
|
548
|
+
// Actionable deliveries with open issues -> wake message with the new
|
|
549
|
+
// work. Otherwise (planning deliveries remain) -> re-engagement nudge to
|
|
550
|
+
// scope them.
|
|
551
|
+
let message;
|
|
552
|
+
if (action.kind === 'handoff_new_work') {
|
|
553
|
+
log.info(`Mid-focus handoff for "${focusName}" -- sending new work`);
|
|
554
|
+
message = buildWakeMessage(effectiveDeliveries, currentIssues, teamState.knownDeliveryIds);
|
|
555
|
+
}
|
|
556
|
+
else {
|
|
557
|
+
log.info(`Re-engaging "${focusName}" -- ${postNonTerminal.length} non-terminal ` +
|
|
558
|
+
`delivery(ies) remain (cycle ${teamState.noProgressCycles}/${noProgressLimit})`);
|
|
559
|
+
message = buildReEngagementMessage(postNonTerminal, currentIssues);
|
|
560
|
+
}
|
|
561
|
+
// Update tracking state
|
|
562
|
+
for (const d of currentDeliveries) {
|
|
563
|
+
teamState.knownDeliveryIds.add(d.id);
|
|
564
|
+
teamState.deliveryStageIds.set(d.id, d.currentWorkflowStageId);
|
|
565
|
+
}
|
|
566
|
+
completionDetector.reset();
|
|
567
|
+
sendMessage(proc.stdin, message);
|
|
568
|
+
return;
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
//# sourceMappingURL=event-phases.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-phases.js","sourceRoot":"","sources":["../../src/completion/event-phases.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAyB,MAAM,0BAA0B,CAAC;AAC5F,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACnF,OAAO,EAAE,gBAAgB,IAAI,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACzF,OAAO,EAAE,6BAA6B,IAAI,oCAAoC,EAAE,MAAM,sBAAsB,CAAC;AAC7G,OAAO,EAAE,mBAAmB,IAAI,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AACpF,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,kCAAkC,GACnC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,EACL,2BAA2B,IAAI,kCAAkC,GAElE,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAEvD,2EAA2E;AAE3E;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,GAA2B,EAC3B,IAAyB,EACzB,iBAAsC;IAEtC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC;IAC9C,IAAI,CAAC,SAAS,CAAC,aAAa;QAAE,OAAO,KAAK,CAAC;IAE3C,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,GAAG,CAAC,IAAI,CACN,sBAAsB,SAAS,2BAA2B;YAC1D,+BAA+B,CAChC,CAAC;QACF,MAAM,uBAAuB,CAAC;YAC5B,cAAc,EAAE,SAAS,CAAC,cAAc;YACxC,SAAS,EAAE,SAAS,CAAC,aAAa,IAAI,EAAE;YACxC,OAAO;YACP,SAAS;YACT,WAAW,EAAE,SAAS,CAAC,MAAM;SAC9B,EAAE,IAAI,CAAC,CAAC;QACT,SAAS,CAAC,cAAc,GAAG,eAAe,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,iBAAiB,EAAE,CAAC;QAClC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACrC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,sBAAsB,CAAC,CAAC;IACjE,CAAC;IACD,SAAS,CAAC,aAAa,GAAG,KAAK,CAAC;IAChC,GAAG,CAAC,IAAI,CACN,yBAAyB,SAAS,KAAK;QACvC,GAAG,iBAAiB,CAAC,MAAM,2BAA2B,CACvD,CAAC;IACF,OAAO,KAAK,CAAC;AACf,CAAC;AAMD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,GAA2B,EAC3B,IAAyB,EACzB,iBAAsC;IAEtC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC;IAE9C,IAAI,iBAAiB,GAAkB,IAAI,CAAC;IAC5C,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,iBAAiB,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CACN,oCAAoC,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CAC5E,CAAC;YACF,wEAAwE;QAC1E,CAAC;IACH,CAAC;IACD,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;QAAE,OAAO,eAAe,CAAC;IAEpF,MAAM,WAAW,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,eAAe,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;IACvG,IAAI,SAAS,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;QACvC,sEAAsE;QACtE,sEAAsE;QACtE,uEAAuE;QACvE,uEAAuE;QACvE,uEAAuE;QACvE,uEAAuE;QACvE,kEAAkE;QAClE,uEAAuE;QACvE,wEAAwE;QACxE,2EAA2E;QAC3E,2EAA2E;QAC3E,uEAAuE;QACvE,4DAA4D;QAC5D,EAAE;QACF,sEAAsE;QACtE,0EAA0E;QAC1E,0EAA0E;QAC1E,2EAA2E;QAC3E,qEAAqE;QACrE,qEAAqE;QACrE,kEAAkE;QAClE,mEAAmE;QACnE,oCAAoC;QACpC,MAAM,eAAe,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC;QAC3D,GAAG,CAAC,IAAI,CACN,8BAA8B,SAAS,MAAM,WAAW,GAAG;YAC3D,sCAAsC,eAAe,iCAAiC;YACtF,oCAAoC,CACrC,CAAC;QACF,yEAAyE;QACzE,yEAAyE;QACzE,0EAA0E;QAC1E,mEAAmE;QACnE,MAAM,cAAc,GAAG,SAAS,CAAC,cAAc,CAAC;QAChD,IAAI,gBAAgB,GAAkB,IAAI,CAAC;QAC3C,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,EAAE,EAAE,YAAY,EAAE,CAAC;gBACrB,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC;YACzE,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CACN,mCAAmC,SAAS,oBAAqB,GAAa,CAAC,OAAO,EAAE,CACzF,CAAC;QACJ,CAAC;QACD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,oBAAoB,CAAC;gBAC9B,OAAO;gBACP,SAAS;gBACT,cAAc,EAAE,SAAS,CAAC,cAAc;gBACxC,SAAS,EAAE,SAAS,CAAC,SAAS;gBAC9B,SAAS,EAAE,SAAS,CAAC,aAAa,IAAI,EAAE;gBACxC,WAAW,EAAE,QAAQ;gBACrB,SAAS,EAAE,eAAe;gBAC1B,cAAc;gBACd,gBAAgB;aACjB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CACN,4CAA4C,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CACpF,CAAC;QACJ,CAAC;QACD,SAAS,CAAC,cAAc,GAAG,eAAe,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,4EAA4E;IAC5E,wEAAwE;IACxE,4EAA4E;IAC5E,uEAAuE;IACvE,GAAG,CAAC,IAAI,CACN,IAAI,SAAS,oDAAoD;QACjE,GAAG,WAAW,4DAA4D;QAC1E,GAAG,SAAS,CAAC,WAAW,+DAA+D;QACvF,wBAAwB,CACzB,CAAC;IACF,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,2EAA2E;AAE3E;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,GAA2B,EAC3B,IAAyB,EACzB,iBAAsC,EACtC,aAA+B;IAE/B,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC;IAE9C,MAAM,qBAAqB,GAAG,IAAI,GAAG,CACnC,iBAAiB;SACd,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;SAC7D,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAClB,CAAC;IACF,MAAM,2BAA2B,GAAG,aAAa,CAAC,IAAI,CACpD,CAAC,CAAC,EAAE,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAClF,CAAC;IAEF,IAAI,mBAAmB,GAAG,iBAAiB,CAAC;IAC5C,IAAI,qBAAqB,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnE,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,uBAAuB,CAChC,GAAG,CAAC,MAAM,EACV,SAAS,EACT,SAAS,CAAC,aAAa,IAAI,EAAE,CAC9B,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CACN,kDAAkD,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CAC1F,CAAC;QACJ,CAAC;QAED,2EAA2E;QAC3E,oEAAoE;QACpE,mEAAmE;QACnE,IAAI,CAAC;YACH,mBAAmB,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAC7D,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,MAAM,CACjD,CAAC,CAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC,CAClD,CAAC;YACF,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClC,GAAG,CAAC,IAAI,CACN,yDAAyD,SAAS,uBAAuB,CAC1F,CAAC;gBACF,SAAS,CAAC,cAAc,GAAG,eAAe,CAAC;gBAC3C,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAC5B,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC;YACnD,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CACN,+DAA+D,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CACvG,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;AACpD,CAAC;AAuBD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,GAA2B,EAC3B,IAAyB,EACzB,iBAAsC,EACtC,mBAAwC,EACxC,aAA+B;IAE/B,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC;IAE9C,MAAM,eAAe,GAAG,mBAAmB,CAAC,MAAM,CAChD,CAAC,CAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC,CAClD,CAAC;IACF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAC/B,mBAAmB;SAChB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;SAC7D,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAClB,CAAC;IACF,MAAM,qBAAqB,GAAG,aAAa,CAAC,IAAI,CAC9C,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAC9E,CAAC;IACF,0EAA0E;IAC1E,uEAAuE;IACvE,2EAA2E;IAC3E,2EAA2E;IAC3E,8EAA8E;IAC9E,qEAAqE;IACrE,2EAA2E;IAC3E,2EAA2E;IAC3E,yEAAyE;IACzE,8EAA8E;IAC9E,4EAA4E;IAC5E,kEAAkE;IAClE,sEAAsE;IACtE,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,IAAI,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACrE,eAAe,GAAG,iBAAiB,CAAC;gBAClC,QAAQ,EAAE,EAAE,CAAC,QAAQ;gBACrB,WAAW,EAAE,EAAE,CAAC,WAAW,IAAI,KAAK;gBACpC,QAAQ,EAAE,EAAE,CAAC,UAAU,IAAI,IAAI;aAChC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CACN,yCAAyC,SAAS,KAAK;gBACvD,gCAAiC,GAAa,CAAC,OAAO,EAAE,CACzD,CAAC;QACJ,CAAC;IACH,CAAC;IACD,+EAA+E;IAC/E,iFAAiF;IACjF,wEAAwE;IACxE,sEAAsE;IACtE,6EAA6E;IAC7E,gFAAgF;IAChF,2EAA2E;IAC3E,4DAA4D;IAC5D,MAAM,WAAW,GAAG,CAAC,eAAe,IAAI,mBAAmB,CAAC,IAAI,CAC9D,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC,KAAK,UAAU,CAC9C,CAAC;IACF,MAAM,qBAAqB,GAAG,WAAW,IAAI,qBAAqB,CAAC;IAEnE,qEAAqE;IACrE,yEAAyE;IACzE,2EAA2E;IAC3E,4EAA4E;IAC5E,2EAA2E;IAC3E,2DAA2D;IAC3D,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,IAAI,uBAAuB,CAAC;IACzE,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,IAAI,0BAA0B,CAAC;IAC3E,MAAM,iBAAiB,GAAG,eAAe,CAAC,OAAO,CAAC,EAAE,YAAY,IAAI,IAAI,CAAC;IACzE,MAAM,YAAY,GAAG,iBAAiB,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAExF,8EAA8E;IAC9E,2EAA2E;IAC3E,6DAA6D;IAC7D,MAAM,QAAQ,GAAG,oBAAoB,CAAC,mBAAmB,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;IACxF,MAAM,aAAa,GAAG,SAAS,CAAC,oBAAoB,IAAI,IAAI,CAAC;IAE7D,6EAA6E;IAC7E,kEAAkE;IAClE,8EAA8E;IAC9E,6DAA6D;IAC7D,8EAA8E;IAC9E,oEAAoE;IACpE,MAAM,0BAA0B,GAAG,mBAAmB,CAAC,IAAI,CACzD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC,KAAK,eAAe,CACnD,CAAC;IAEF,MAAM,YAAY,GAAG,0BAA0B,IAAI,aAAa,KAAK,IAAI;QACvE,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,CAAC,cAAc,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAE7C,oEAAoE;IACpE,yEAAyE;IACzE,2EAA2E;IAC3E,8EAA8E;IAC9E,4EAA4E;IAC5E,kDAAkD;IAClD,MAAM,iBAAiB,GACrB,aAAa,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAErE,2EAA2E;IAC3E,8EAA8E;IAC9E,2EAA2E;IAC3E,4EAA4E;IAC5E,IAAI,KAAK,GAA6B,IAAI,CAAC;IAC3C,IAAI,yBAAyB,CAAC,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;QAC5E,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CACvC,CAAC,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC,CACtD,CAAC;QACF,KAAK,GAAG,MAAM,0BAA0B,CAAC,UAAU,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACpF,CAAC;IAED,uEAAuE;IACvE,8DAA8D;IAC9D,8EAA8E;IAC9E,4BAA4B;IAC5B,MAAM,uBAAuB,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAgB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAEzF,4EAA4E;IAC5E,wEAAwE;IACxE,uBAAuB;IACvB,IAAI,YAAY,EAAE,CAAC;QACjB,SAAS,CAAC,mBAAmB,GAAG,CAAC,CAAC;IACpC,CAAC;IAED,OAAO;QACL,iBAAiB;QACjB,mBAAmB;QACnB,aAAa;QACb,eAAe;QACf,qBAAqB;QACrB,qBAAqB;QACrB,iBAAiB;QACjB,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,YAAY;QACZ,iBAAiB;QACjB,KAAK;QACL,uBAAuB;KACxB,CAAC;AACJ,CAAC;AAED,2EAA2E;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,GAA2B,EAC3B,IAAyB,EACzB,KAAsB,EACtB,MAAwB,EACxB,eAAuB;IAEvB,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC;IAE9C,MAAM,YAAY,GAChB,KAAK,CAAC,qBAAqB;QAC3B,MAAM,CAAC,IAAI,KAAK,oCAAoC;QACpD,CAAC,KAAK,CAAC,aAAa,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACxD,MAAM,mBAAmB,GAAG,YAAY;QACtC,CAAC,CAAC,8BAA8B,CAC9B,OAAO,EACP,KAAK,CAAC,mBAAmB;QACzB,wEAAwE;QACxE,iEAAiE;QACjE,gEAAgE;QAChE,yEAAyE;QACzE,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,YAAY,EAClB,eAAe,CAChB;QACD,CAAC,CAAC,IAAI,CAAC;IACT,IAAI,CAAC,mBAAmB,EAAE,gBAAgB;QAAE,OAAO,KAAK,CAAC;IAEzD,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,IAAI,CAAC;QACH,gBAAgB,GAAG,MAAM,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC;IACtE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CACN,qCAAqC,SAAS,yDAA0D,GAAa,CAAC,OAAO,EAAE,CAChI,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,MAAM,kCAAkC,CAAC;YACvC,cAAc,EAAE,SAAS,CAAC,cAAc;YACxC,SAAS,EAAE,SAAS,CAAC,aAAa,IAAI,EAAE;YACxC,OAAO;YACP,SAAS;YACT,WAAW,EAAE,SAAS,CAAC,MAAM;YAC7B,MAAM,EAAE,mBAAmB,CAAC,mBAAmB;YAC/C,UAAU,EAAE,KAAK,CAAC,mBAAmB;SACtC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,IAAI,CACN,mCAAmC,SAAS,gBAAgB;YAC5D,kFAAkF,CACnF,CAAC;IACJ,CAAC;IACD,SAAS,CAAC,cAAc,GAAG,eAAe,CAAC;IAC3C,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC5B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,2EAA2E;AAE3E;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,GAA2B,EAC3B,IAAyB,EACzB,KAAsB,EACtB,MAAwB,EACxB,eAAuB;IAEvB,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;IACxE,MAAM,EACJ,iBAAiB,EAAE,mBAAmB,EAAE,aAAa,EAAE,eAAe,EACtE,QAAQ,EAAE,iBAAiB,EAAE,KAAK,EAAE,uBAAuB,GAC5D,GAAG,KAAK,CAAC;IAEV,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,wCAAwC,CAAC,CAAC,CAAC;YAC9C,wEAAwE;YACxE,wEAAwE;YACxE,qEAAqE;YACrE,gEAAgE;YAChE,wEAAwE;YACxE,qEAAqE;YACrE,yEAAyE;YACzE,sCAAsC;YACtC,IAAI,gBAAgB,GAAG,KAAK,CAAC;YAC7B,IAAI,CAAC;gBACH,gBAAgB,GAAG,MAAM,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC;YACtE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,IAAI,CACN,qCAAqC,SAAS,8BAA+B,GAAa,CAAC,OAAO,EAAE,CACrG,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,GAAG,CAAC,IAAI,CACN,iCAAiC,SAAS,OAAO;oBACjD,IAAI,KAAM,CAAC,IAAI,MAAM,KAAM,CAAC,eAAe,IAAI,OAAO,uBAAuB;oBAC7E,UAAU,KAAM,CAAC,sBAAsB,IAAI,MAAM,gCAAgC;oBACjF,uBAAuB,CACxB,CAAC;gBACF,MAAM,sBAAsB,CAAC;oBAC3B,cAAc,EAAE,SAAS,CAAC,cAAc;oBACxC,SAAS,EAAE,SAAS,CAAC,aAAa,IAAI,EAAE;oBACxC,OAAO;oBACP,SAAS;oBACT,WAAW,EAAE,SAAS,CAAC,MAAM;oBAC7B,KAAK,EAAE,KAAM;oBACb,SAAS,EAAE,eAAe;iBAC3B,EAAE,IAAI,CAAC,CAAC;YACX,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,IAAI,CACN,iCAAiC,SAAS,gBAAgB;oBAC1D,qEAAqE,CACtE,CAAC;YACJ,CAAC;YACD,SAAS,CAAC,oBAAoB,GAAG,QAAQ,CAAC;YAC1C,SAAS,CAAC,cAAc,GAAG,eAAe,CAAC;YAC3C,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC5B,OAAO;QACT,CAAC;QACD,KAAK,8BAA8B,CAAC,CAAC,CAAC;YACpC,sEAAsE;YACtE,gEAAgE;YAChE,oEAAoE;YACpE,qEAAqE;YACrE,uEAAuE;YACvE,4CAA4C;YAC5C,GAAG,CAAC,IAAI,CACN,wCAAwC,SAAS,OAAO;gBACxD,GAAG,eAAe,CAAC,MAAM,uDAAuD;gBAChF,+EAA+E,CAChF,CAAC;YACF,SAAS,CAAC,cAAc,GAAG,eAAe,CAAC;YAC3C,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC5B,OAAO;QACT,CAAC;QACD,KAAK,oCAAoC,CAAC,CAAC,CAAC;YAC1C,yEAAyE;YACzE,wEAAwE;YACxE,2EAA2E;YAC3E,uEAAuE;YACvE,2EAA2E;YAC3E,yEAAyE;YACzE,EAAE;YACF,sEAAsE;YACtE,yEAAyE;YACzE,0EAA0E;YAC1E,2EAA2E;YAC3E,MAAM,eAAe,GACnB,iBAAiB,KAAK,IAAI;gBAC1B,CAAC,IAAI,CAAC,6BAA6B,IAAI,oCAAoC,CAAC,CAC1E,iBAAiB,CAClB,CAAC;YACJ,MAAM,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC;YACrC,sEAAsE;YACtE,4CAA4C;YAC5C,MAAM,iBAAiB,GAAG,4BAA4B,EAAE,CAAC;YACzD,MAAM,WAAW,GAAG,SAAS,CAAC,mBAAmB,IAAI,CAAC,CAAC;YACvD,IAAI,eAAe,IAAI,QAAQ,IAAI,WAAW,GAAG,iBAAiB,EAAE,CAAC;gBACnE,SAAS,CAAC,mBAAmB,GAAG,WAAW,GAAG,CAAC,CAAC;gBAChD,SAAS,CAAC,oBAAoB,GAAG,QAAQ,CAAC;gBAC1C,GAAG,CAAC,IAAI,CACN,sCAAsC,SAAS,aAAa;oBAC5D,yEAAyE;oBACzE,sDAAsD;oBACtD,yBAAyB,SAAS,CAAC,mBAAmB,IAAI,iBAAiB,IAAI,CAChF,CAAC;gBACF,WAAW,CACT,QAAQ,EACR,4EAA4E;oBAC5E,+EAA+E;oBAC/E,GAAG,iBAAiB,6DAA6D;oBACjF,gFAAgF;oBAChF,kFAAkF;oBAClF,GAAG,SAAS,CAAC,mBAAmB,IAAI,iBAAiB,GAAG,CACzD,CAAC;gBACF,kBAAkB,CAAC,KAAK,EAAE,CAAC;gBAC3B,OAAO;YACT,CAAC;YAED,yEAAyE;YACzE,yEAAyE;YACzE,uEAAuE;YACvE,kEAAkE;YAClE,qDAAqD;YACrD,MAAM,SAAS,GAAG,IAAI,CAAC,2BAA2B,IAAI,kCAAkC,CAAC;YACzF,IAAI,UAAU,GAAkC,EAAE,eAAe,EAAE,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;YAC5F,IAAI,CAAC;gBACH,UAAU,GAAG,MAAM,SAAS,CAAC;oBAC3B,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,SAAS;oBACT,UAAU,EAAE,mBAAmB;oBAC/B,MAAM,EAAE,aAAa;oBACrB,YAAY,EAAE,iBAAiB;oBAC/B,SAAS,EAAE,SAAS,CAAC,aAAa,IAAI,EAAE;iBACzC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,IAAI,CACN,8CAA8C,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CACtF,CAAC;YACJ,CAAC;YACD,IAAI,UAAU,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;gBACnC,4EAA4E;gBAC5E,SAAS,CAAC,mBAAmB,GAAG,CAAC,CAAC;gBAClC,SAAS,CAAC,gBAAgB,GAAG,uBAAuB,CAAC;gBACrD,SAAS,CAAC,oBAAoB,GAAG,QAAQ,CAAC;gBAC1C,GAAG,CAAC,IAAI,CACN,wBAAwB,SAAS,0BAA0B;oBAC3D,cAAc,UAAU,CAAC,eAAe,qCAAqC;oBAC7E,gDAAgD,CACjD,CAAC;gBACF,SAAS,CAAC,cAAc,GAAG,eAAe,CAAC;gBAC3C,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAC5B,OAAO;YACT,CAAC;YAED,wEAAwE;YACxE,wEAAwE;YACxE,yDAAyD;YACzD,SAAS,CAAC,mBAAmB,GAAG,CAAC,CAAC;YAClC,SAAS,CAAC,gBAAgB,GAAG,uBAAuB,CAAC;YACrD,SAAS,CAAC,oBAAoB,GAAG,QAAQ,CAAC;YAC1C,GAAG,CAAC,IAAI,CACN,qCAAqC,SAAS,OAAO;gBACrD,GAAG,SAAS,CAAC,gBAAgB,2CAA2C,eAAe,CAAC,MAAM,GAAG;gBACjG,wDAAwD,CACzD,CAAC;YACF,MAAM,kBAAkB,CAAC;gBACvB,cAAc,EAAE,SAAS,CAAC,cAAc;gBACxC,SAAS,EAAE,SAAS,CAAC,aAAa,IAAI,EAAE;gBACxC,OAAO;gBACP,SAAS;gBACT,WAAW,EAAE,SAAS,CAAC,MAAM;gBAC7B,MAAM,EAAE,SAAS,CAAC,gBAAgB;gBAClC,SAAS,EAAE,eAAe;aAC3B,EAAE,IAAI,CAAC,CAAC;YACT,SAAS,CAAC,cAAc,GAAG,eAAe,CAAC;YAC3C,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC5B,OAAO;QACT,CAAC;QACD,KAAK,kBAAkB,CAAC;QACxB,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,SAAS,CAAC,gBAAgB,GAAG,uBAAuB,CAAC;YACrD,SAAS,CAAC,oBAAoB,GAAG,QAAQ,CAAC;YAE1C,sEAAsE;YACtE,yEAAyE;YACzE,cAAc;YACd,IAAI,OAAe,CAAC;YACpB,IAAI,MAAM,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;gBACvC,GAAG,CAAC,IAAI,CACN,0BAA0B,SAAS,uBAAuB,CAC3D,CAAC;gBACF,OAAO,GAAG,gBAAgB,CAAC,mBAAmB,EAAE,aAAa,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;YAC7F,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,IAAI,CACN,gBAAgB,SAAS,QAAQ,eAAe,CAAC,MAAM,gBAAgB;oBACvE,+BAA+B,SAAS,CAAC,gBAAgB,IAAI,eAAe,GAAG,CAChF,CAAC;gBACF,OAAO,GAAG,wBAAwB,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;YACrE,CAAC;YAED,wBAAwB;YACxB,KAAK,MAAM,CAAC,IAAI,iBAAiB,EAAE,CAAC;gBAClC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACrC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,sBAAsB,CAAC,CAAC;YACjE,CAAC;YAED,kBAAkB,CAAC,KAAK,EAAE,CAAC;YAC3B,WAAW,CAAC,IAAI,CAAC,KAAM,EAAE,OAAO,CAAC,CAAC;YAClC,OAAO;QACT,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -21,7 +21,7 @@ import { type ReconcileTerminatedWorkParams, type ReconcileTerminatedWorkResult
|
|
|
21
21
|
* relax or tighten the bound without a code change.
|
|
22
22
|
*/
|
|
23
23
|
export declare const SCOPE_COVERAGE_NO_PROGRESS_LIMIT: number;
|
|
24
|
-
export declare function resolveDeliveryAdvancementNoProgressLimit(envConfig?: ReturnType<typeof loadEnvConfig
|
|
24
|
+
export declare function resolveDeliveryAdvancementNoProgressLimit(envConfig?: ReturnType<typeof loadEnvConfig>): number;
|
|
25
25
|
export declare const DELIVERY_ADVANCEMENT_NO_PROGRESS_LIMIT: number;
|
|
26
26
|
export interface CompletionEventContext {
|
|
27
27
|
config: DaemonConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../src/completion/event.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC7G,OAAO,
|
|
1
|
+
{"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../src/completion/event.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC7G,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAKxE,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAK9E,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,0BAA0B,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,CAAC;AAOlF,OAAO,EACL,6BAA6B,EAC7B,6BAA6B,EAC7B,iCAAiC,EACjC,qBAAqB,EACrB,mCAAmC,EACnC,kCAAkC,EAClC,KAAK,cAAc,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,kCAAkC,GACnC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,KAAK,6BAA6B,EAClC,KAAK,6BAA6B,EACnC,MAAM,gCAAgC,CAAC;AAcxC;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,EAAE,MACU,CAAC;AAE1D,wBAAgB,yCAAyC,CACvD,SAAS,GAAE,UAAU,CAAC,OAAO,aAAa,CAAmB,GAC5D,MAAM,CAER;AAED,eAAO,MAAM,sCAAsC,EAAE,MACR,CAAC;AAI9C,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,cAAc,CAAC;IAC1B,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,IAAI,EAAE,YAAY,CAAC;IACnB,cAAc,EAAE,cAAc,CAAC;CAChC;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACtE,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC/D,gBAAgB,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IACtG,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5C,uBAAuB,EAAE,CACvB,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,cAAc,EACzB,SAAS,EAAE,MAAM,KACd,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB;;;;;OAKG;IACH,sBAAsB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClE;;;;OAIG;IACH,4BAA4B,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACpE;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACzF;;;;;;;;OAQG;IACH,yBAAyB,CAAC,EAAE,CAC1B,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IACtF;;;;;;;OAOG;IACH,oBAAoB,EAAE,CAAC,MAAM,EAAE;QAC7B,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,QAAQ,GAAG,QAAQ,CAAC;QACjC,SAAS,EAAE,OAAO,CAAC;QACnB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC/B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAClC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAC7E;;;;;OAKG;IACH,6BAA6B,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC;IAClE;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC9D;;;;;;;;OAQG;IACH,2BAA2B,CAAC,EAAE,CAC5B,MAAM,EAAE,6BAA6B,KAClC,OAAO,CAAC,6BAA6B,CAAC,CAAC;CAC7C;AA0CD;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,sBAAsB,EAC3B,IAAI,GAAE,mBAAiC,GACtC,OAAO,CAAC,IAAI,CAAC,CAwDf;AAMD,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,CAAC"}
|