@telora/daemon 0.20.4 → 0.20.19
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 +13 -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 +2 -0
- package/dist/completion/review-exit-phase.d.ts.map +1 -1
- package/dist/completion/review-exit-phase.js +86 -30
- package/dist/completion/review-exit-phase.js.map +1 -1
- package/dist/completion/review-exit-shortfall.d.ts +62 -0
- package/dist/completion/review-exit-shortfall.d.ts.map +1 -0
- package/dist/completion/review-exit-shortfall.js +84 -0
- package/dist/completion/review-exit-shortfall.js.map +1 -0
- 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 +39 -37
- 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/drift-ratify-loop.d.ts +68 -0
- package/dist/drift-ratify-loop.d.ts.map +1 -0
- package/dist/drift-ratify-loop.js +161 -0
- package/dist/drift-ratify-loop.js.map +1 -0
- package/dist/drift-ratify-policy.d.ts +101 -0
- package/dist/drift-ratify-policy.d.ts.map +1 -0
- package/dist/drift-ratify-policy.js +178 -0
- package/dist/drift-ratify-policy.js.map +1 -0
- 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 +1 -0
- package/dist/focus-executor.d.ts.map +1 -1
- package/dist/focus-executor.js +16 -14
- 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 +87 -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/prompt-sections/persona-sections.d.ts.map +1 -1
- package/dist/prompt-sections/persona-sections.js +41 -4
- package/dist/prompt-sections/persona-sections.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 +22 -0
- package/dist/queries/deliveries.d.ts.map +1 -1
- package/dist/queries/deliveries.js +13 -5
- package/dist/queries/deliveries.js.map +1 -1
- package/dist/queries/focuses.d.ts +9 -0
- package/dist/queries/focuses.d.ts.map +1 -1
- package/dist/queries/focuses.js +17 -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/reality-tree.d.ts +22 -0
- package/dist/queries/reality-tree.d.ts.map +1 -1
- package/dist/queries/reality-tree.js +32 -0
- package/dist/queries/reality-tree.js.map +1 -1
- package/dist/queries/schemas.d.ts +2 -0
- package/dist/queries/schemas.d.ts.map +1 -1
- package/dist/queries/schemas.js +5 -0
- package/dist/queries/schemas.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/drift-shortfall-proposals.d.ts +27 -0
- package/dist/resolvers/drift-shortfall-proposals.d.ts.map +1 -0
- package/dist/resolvers/drift-shortfall-proposals.js +90 -0
- package/dist/resolvers/drift-shortfall-proposals.js.map +1 -0
- 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/index.d.ts.map +1 -1
- package/dist/resolvers/index.js +2 -0
- package/dist/resolvers/index.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/shortfall-disposition-config.d.ts +34 -0
- package/dist/shortfall-disposition-config.d.ts.map +1 -0
- package/dist/shortfall-disposition-config.js +46 -0
- package/dist/shortfall-disposition-config.js.map +1 -0
- package/dist/shortfall-disposition-loop.d.ts +86 -0
- package/dist/shortfall-disposition-loop.d.ts.map +1 -0
- package/dist/shortfall-disposition-loop.js +309 -0
- package/dist/shortfall-disposition-loop.js.map +1 -0
- package/dist/spawn/model-routing.d.ts.map +1 -1
- package/dist/spawn/model-routing.js +19 -16
- 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
|
@@ -22,10 +22,14 @@ import { runCascadeProseTick, runNegativeBranchTick } from './cascade-restatemen
|
|
|
22
22
|
import { runPrdControllerTickAll } from './prd/index.js';
|
|
23
23
|
import { runMergeBackTick } from './merge-back-loop.js';
|
|
24
24
|
import { runDriftEvalTick, runPendingDriftEvalRequestsTick } from './drift-eval-loop.js';
|
|
25
|
+
import { runDriftRatifyTick } from './drift-ratify-loop.js';
|
|
26
|
+
import { runShortfallDispositionTick } from './shortfall-disposition-loop.js';
|
|
25
27
|
import { runSensorSweepTick } from './sensor-sweep.js';
|
|
26
28
|
import { runCiSensorTick } from './ci-sensor-loop.js';
|
|
27
29
|
import { reconcileDaemonProducts, buildReconcileDeps } from './config-reconcile.js';
|
|
28
30
|
import { buildDefaultSecurityScanDeps, runSecurityScanTick, } from './security-scan-engine.js';
|
|
31
|
+
import { createLogger } from './log.js';
|
|
32
|
+
const log = createLogger({ module: 'prd-controller' });
|
|
29
33
|
export const LOOP_REGISTRY = [
|
|
30
34
|
// 1. Stuck-team watchdog (60s). Defense-in-depth for the session-slot
|
|
31
35
|
// pipeline: a team wedged in `shutting_down` pins its governor slot
|
|
@@ -43,10 +47,10 @@ export const LOOP_REGISTRY = [
|
|
|
43
47
|
thresholdMs: stuckShutdownTimeoutMs,
|
|
44
48
|
});
|
|
45
49
|
if (result.reaped > 0) {
|
|
46
|
-
|
|
50
|
+
log.warn(`[stuck-shutdown-watchdog] reaped ${result.reaped} team(s) stuck in ` +
|
|
47
51
|
`shutting_down past ${stuckShutdownTimeoutMs}ms: ${result.reapedFocusIds.join(', ')}`);
|
|
48
52
|
}
|
|
49
|
-
}, 60_000, 'stuck-shutdown-watchdog'));
|
|
53
|
+
}, 60_000, 'stuck-shutdown-watchdog', { skipIfRunning: true }));
|
|
50
54
|
},
|
|
51
55
|
},
|
|
52
56
|
// 2. Differential Focus Spec: cybernetic loop tick (60s).
|
|
@@ -59,7 +63,7 @@ export const LOOP_REGISTRY = [
|
|
|
59
63
|
register(engine, config) {
|
|
60
64
|
engine.intervals.push(safeInterval(async () => {
|
|
61
65
|
await engine.tickFocusLoop(config);
|
|
62
|
-
}, 60_000, 'focus-loop'));
|
|
66
|
+
}, 60_000, 'focus-loop', { skipIfRunning: true }));
|
|
63
67
|
},
|
|
64
68
|
},
|
|
65
69
|
// 3. Differential Focus Spec: pluggable delivery verification tick (60s).
|
|
@@ -74,13 +78,13 @@ export const LOOP_REGISTRY = [
|
|
|
74
78
|
try {
|
|
75
79
|
const counts = await runVerificationTick(config);
|
|
76
80
|
if (counts.checked > 0) {
|
|
77
|
-
|
|
81
|
+
log.info(`[verification] tick: checked=${counts.checked} passed=${counts.passed} failed=${counts.failed} pending=${counts.pending} escalated=${counts.escalated}`);
|
|
78
82
|
}
|
|
79
83
|
}
|
|
80
84
|
catch (err) {
|
|
81
|
-
|
|
85
|
+
log.warn('[verification] tick failed:', err.message);
|
|
82
86
|
}
|
|
83
|
-
}, 60_000, 'verification-loop'));
|
|
87
|
+
}, 60_000, 'verification-loop', { skipIfRunning: true }));
|
|
84
88
|
},
|
|
85
89
|
},
|
|
86
90
|
// 4. FRT-rethink-on-flip: eager cascade-prose reconciliation tick (60s).
|
|
@@ -95,13 +99,13 @@ export const LOOP_REGISTRY = [
|
|
|
95
99
|
try {
|
|
96
100
|
const counts = await runCascadeProseTick(config);
|
|
97
101
|
if (counts.authored > 0) {
|
|
98
|
-
|
|
102
|
+
log.info(`[frt-prose] tick: treesScanned=${counts.treesScanned} authored=${counts.authored}`);
|
|
99
103
|
}
|
|
100
104
|
}
|
|
101
105
|
catch (err) {
|
|
102
|
-
|
|
106
|
+
log.warn('[frt-prose] tick failed:', err.message);
|
|
103
107
|
}
|
|
104
|
-
}, 60_000, 'frt-prose-loop'));
|
|
108
|
+
}, 60_000, 'frt-prose-loop', { skipIfRunning: true }));
|
|
105
109
|
},
|
|
106
110
|
},
|
|
107
111
|
// 5. Negative-branch reservation tick (5 minutes). Shares the
|
|
@@ -114,13 +118,13 @@ export const LOOP_REGISTRY = [
|
|
|
114
118
|
try {
|
|
115
119
|
const counts = await runNegativeBranchTick(config);
|
|
116
120
|
if (counts.proposed > 0) {
|
|
117
|
-
|
|
121
|
+
log.info(`[negative-branch] tick: treesScanned=${counts.treesScanned} proposed=${counts.proposed}`);
|
|
118
122
|
}
|
|
119
123
|
}
|
|
120
124
|
catch (err) {
|
|
121
|
-
|
|
125
|
+
log.warn('[negative-branch] tick failed:', err.message);
|
|
122
126
|
}
|
|
123
|
-
}, 300_000, 'negative-branch-loop'));
|
|
127
|
+
}, 300_000, 'negative-branch-loop', { skipIfRunning: true }));
|
|
124
128
|
},
|
|
125
129
|
},
|
|
126
130
|
// 6. Staged Assembly PRD layer: PRD-lifecycle controller tick (60s).
|
|
@@ -138,7 +142,7 @@ export const LOOP_REGISTRY = [
|
|
|
138
142
|
counts.armed > 0 ||
|
|
139
143
|
counts.obstaclesCleared > 0 ||
|
|
140
144
|
counts.prdsDone > 0) {
|
|
141
|
-
|
|
145
|
+
log.info(`[prd-controller] tick: obstaclesEvaluated=${counts.obstaclesEvaluated} ` +
|
|
142
146
|
`obstaclesCleared=${counts.obstaclesCleared} materialized=${counts.materialized} ` +
|
|
143
147
|
`armed=${counts.armed} skippedNoRole=${counts.skippedNoRole} prdsDone=${counts.prdsDone}`);
|
|
144
148
|
}
|
|
@@ -147,16 +151,16 @@ export const LOOP_REGISTRY = [
|
|
|
147
151
|
// (no materialize/arm/clear/done happened). Warn loudly and name the
|
|
148
152
|
// fix so an operator who is not filing-escalation-watching still sees it.
|
|
149
153
|
if (counts.skippedNoRole > 0) {
|
|
150
|
-
|
|
154
|
+
log.warn(`[prd-controller] ${counts.skippedNoRole} frontier focus/foci could NOT be armed: ` +
|
|
151
155
|
'No arm role is set on the PRD (prds.assigned_agent_role_id is null -- PRD is not Played). ' +
|
|
152
156
|
'Play the PRD: telora_prd update prdId=<uuid> assignedAgentRoleId=<agent_roles uuid>. ' +
|
|
153
157
|
`(prdsBlockedNoRole=${counts.prdsBlockedNoRole})`);
|
|
154
158
|
}
|
|
155
159
|
}
|
|
156
160
|
catch (err) {
|
|
157
|
-
|
|
161
|
+
log.warn('tick failed:', err.message);
|
|
158
162
|
}
|
|
159
|
-
}, 60_000, 'prd-controller'));
|
|
163
|
+
}, 60_000, 'prd-controller', { skipIfRunning: true }));
|
|
160
164
|
},
|
|
161
165
|
},
|
|
162
166
|
// 7. Continuous merge-back loop (60s).
|
|
@@ -172,9 +176,9 @@ export const LOOP_REGISTRY = [
|
|
|
172
176
|
await runMergeBackTick(config);
|
|
173
177
|
}
|
|
174
178
|
catch (err) {
|
|
175
|
-
|
|
179
|
+
log.warn('[merge-back-loop] tick failed:', err.message);
|
|
176
180
|
}
|
|
177
|
-
}, 60_000, 'merge-back-loop'));
|
|
181
|
+
}, 60_000, 'merge-back-loop', { skipIfRunning: true }));
|
|
178
182
|
},
|
|
179
183
|
},
|
|
180
184
|
// 8. Differential Surface: drift-evaluation loop (10 minutes) + on-demand
|
|
@@ -191,9 +195,9 @@ export const LOOP_REGISTRY = [
|
|
|
191
195
|
await runDriftEvalTick(config);
|
|
192
196
|
}
|
|
193
197
|
catch (err) {
|
|
194
|
-
|
|
198
|
+
log.warn('[drift-eval-loop] tick failed:', err.message);
|
|
195
199
|
}
|
|
196
|
-
}, 600_000, 'drift-eval-loop'));
|
|
200
|
+
}, 600_000, 'drift-eval-loop', { skipIfRunning: true }));
|
|
197
201
|
// On-demand requests poll (30 seconds). Drains
|
|
198
202
|
// product_focuses.drift_eval_requested_at signals emitted by the
|
|
199
203
|
// Re-evaluate button so the user sees results within seconds rather
|
|
@@ -203,9 +207,56 @@ export const LOOP_REGISTRY = [
|
|
|
203
207
|
await runPendingDriftEvalRequestsTick(config);
|
|
204
208
|
}
|
|
205
209
|
catch (err) {
|
|
206
|
-
|
|
210
|
+
log.warn('[drift-eval-loop] request tick failed:', err.message);
|
|
207
211
|
}
|
|
208
|
-
}, 30_000, 'drift-eval-requests'));
|
|
212
|
+
}, 30_000, 'drift-eval-requests', { skipIfRunning: true }));
|
|
213
|
+
},
|
|
214
|
+
},
|
|
215
|
+
// 8b. Drift auto-ratification loop (60 seconds). Ratifies the safe majority
|
|
216
|
+
// of the drift stream (per drift-ratify-policy.ts) with a system actor so
|
|
217
|
+
// the tree tracks observed reality at machine speed instead of pooling in
|
|
218
|
+
// `proposed`. Inward shortfalls and anything unclassifiable are left
|
|
219
|
+
// untouched. Cadence is tight because the whole point is that the queue
|
|
220
|
+
// never pools beyond the current tick; the work per tick is one list plus
|
|
221
|
+
// one ratify per safe proposal.
|
|
222
|
+
{
|
|
223
|
+
guard: 'TELORA_DRIFT_RATIFY_LOOP',
|
|
224
|
+
announce: {
|
|
225
|
+
enabled: 'Drift auto-ratify loop tick: enabled (set TELORA_DRIFT_RATIFY_LOOP=0 to disable)',
|
|
226
|
+
disabled: 'Drift auto-ratify loop tick: disabled (TELORA_DRIFT_RATIFY_LOOP=0)',
|
|
227
|
+
},
|
|
228
|
+
register(engine, config) {
|
|
229
|
+
engine.intervals.push(safeInterval(async () => {
|
|
230
|
+
try {
|
|
231
|
+
await runDriftRatifyTick(config);
|
|
232
|
+
}
|
|
233
|
+
catch (err) {
|
|
234
|
+
log.warn('[drift-ratify-loop] tick failed:', err.message);
|
|
235
|
+
}
|
|
236
|
+
}, 60_000, 'drift-ratify-loop', { skipIfRunning: true }));
|
|
237
|
+
},
|
|
238
|
+
},
|
|
239
|
+
// 8c. Scoped shortfall-disposition pass (5 minutes). A focus carrying an
|
|
240
|
+
// undisposed shortfall cannot converge -- the completion gate withholds
|
|
241
|
+
// done. This arms a one-shot pass whose only mandate is disposing them, so
|
|
242
|
+
// the hold self-heals instead of wedging. Slower cadence than the ratify
|
|
243
|
+
// tick: arming spawns a team, so this is expensive work, and a held focus
|
|
244
|
+
// is not urgent by the second.
|
|
245
|
+
{
|
|
246
|
+
guard: 'TELORA_SHORTFALL_DISPOSITION_LOOP',
|
|
247
|
+
announce: {
|
|
248
|
+
enabled: 'Shortfall-disposition loop tick: enabled (set TELORA_SHORTFALL_DISPOSITION_LOOP=0 to disable)',
|
|
249
|
+
disabled: 'Shortfall-disposition loop tick: disabled (TELORA_SHORTFALL_DISPOSITION_LOOP=0)',
|
|
250
|
+
},
|
|
251
|
+
register(engine, config) {
|
|
252
|
+
engine.intervals.push(safeInterval(async () => {
|
|
253
|
+
try {
|
|
254
|
+
await runShortfallDispositionTick(config);
|
|
255
|
+
}
|
|
256
|
+
catch (err) {
|
|
257
|
+
log.warn('[shortfall-disposition] tick failed:', err.message);
|
|
258
|
+
}
|
|
259
|
+
}, 300_000, 'shortfall-disposition-loop', { skipIfRunning: true }));
|
|
209
260
|
},
|
|
210
261
|
},
|
|
211
262
|
// 9. Artifact-health sensor sweep (30 minutes).
|
|
@@ -220,14 +271,14 @@ export const LOOP_REGISTRY = [
|
|
|
220
271
|
try {
|
|
221
272
|
const counts = await runSensorSweepTick(config);
|
|
222
273
|
if (counts.snapshotsWritten > 0) {
|
|
223
|
-
|
|
274
|
+
log.info(`[sensor-sweep] tick: productsScanned=${counts.productsScanned} ` +
|
|
224
275
|
`snapshotsWritten=${counts.snapshotsWritten} skippedUnchanged=${counts.skippedUnchanged}`);
|
|
225
276
|
}
|
|
226
277
|
}
|
|
227
278
|
catch (err) {
|
|
228
|
-
|
|
279
|
+
log.warn('[sensor-sweep] tick failed:', err.message);
|
|
229
280
|
}
|
|
230
|
-
}, 1_800_000, 'sensor-sweep-loop'));
|
|
281
|
+
}, 1_800_000, 'sensor-sweep-loop', { skipIfRunning: true }));
|
|
231
282
|
},
|
|
232
283
|
},
|
|
233
284
|
// 9b. CI-result sensor (5 minutes). Reads the integration tip's git-native CI
|
|
@@ -244,14 +295,14 @@ export const LOOP_REGISTRY = [
|
|
|
244
295
|
try {
|
|
245
296
|
const counts = await runCiSensorTick(config);
|
|
246
297
|
if (counts.escalationsFiled > 0 || counts.escalationsResolved > 0) {
|
|
247
|
-
|
|
298
|
+
log.info(`[ci-sensor] tick: productsChecked=${counts.productsChecked} ` +
|
|
248
299
|
`filed=${counts.escalationsFiled} resolved=${counts.escalationsResolved}`);
|
|
249
300
|
}
|
|
250
301
|
}
|
|
251
302
|
catch (err) {
|
|
252
|
-
|
|
303
|
+
log.warn('[ci-sensor] tick failed:', err.message);
|
|
253
304
|
}
|
|
254
|
-
}, 300_000, 'ci-sensor-loop'));
|
|
305
|
+
}, 300_000, 'ci-sensor-loop', { skipIfRunning: true }));
|
|
255
306
|
},
|
|
256
307
|
},
|
|
257
308
|
// 10. Security scan loop (per-product cron cadence inside) + on-demand
|
|
@@ -266,7 +317,7 @@ export const LOOP_REGISTRY = [
|
|
|
266
317
|
register(engine, config) {
|
|
267
318
|
const intervalHours = loadEnvConfig().TELORA_SECURITY_SCAN_INTERVAL_HOURS;
|
|
268
319
|
const intervalMs = Math.round(intervalHours * 3_600_000);
|
|
269
|
-
|
|
320
|
+
log.info(`Security scan loop tick: enabled, every ${intervalHours}h ` +
|
|
270
321
|
'(set TELORA_SECURITY_SCAN_LOOP=0 to disable, ' +
|
|
271
322
|
'TELORA_SECURITY_SCAN_INTERVAL_HOURS=<hours> to retune) ' +
|
|
272
323
|
'-- priming on startup so cron is honored across daemon restarts');
|
|
@@ -282,9 +333,9 @@ export const LOOP_REGISTRY = [
|
|
|
282
333
|
await runSecurityScanTick(securityScanDeps);
|
|
283
334
|
}
|
|
284
335
|
catch (err) {
|
|
285
|
-
|
|
336
|
+
log.warn('[security-scan-loop] tick failed:', err.message);
|
|
286
337
|
}
|
|
287
|
-
}, intervalMs, 'security-scan-loop', { immediate: true }));
|
|
338
|
+
}, intervalMs, 'security-scan-loop', { immediate: true, skipIfRunning: true }));
|
|
288
339
|
// On-demand requests poll (30 seconds). Drains
|
|
289
340
|
// security_scan_configs.manual_run_requested_at signals emitted by
|
|
290
341
|
// the "Run scan now" button so the user sees the scan start within
|
|
@@ -296,9 +347,9 @@ export const LOOP_REGISTRY = [
|
|
|
296
347
|
await runSecurityScanTick(securityScanDeps, { manualOnly: true });
|
|
297
348
|
}
|
|
298
349
|
catch (err) {
|
|
299
|
-
|
|
350
|
+
log.warn('[security-scan-requests] tick failed:', err.message);
|
|
300
351
|
}
|
|
301
|
-
}, 30_000, 'security-scan-requests'));
|
|
352
|
+
}, 30_000, 'security-scan-requests', { skipIfRunning: true }));
|
|
302
353
|
},
|
|
303
354
|
},
|
|
304
355
|
// 11. Config self-heal: prune products deleted from the backend (60s).
|
|
@@ -314,14 +365,14 @@ export const LOOP_REGISTRY = [
|
|
|
314
365
|
try {
|
|
315
366
|
const result = await reconcileDaemonProducts(config, reconcileDeps);
|
|
316
367
|
if (result.pruned.length > 0) {
|
|
317
|
-
|
|
368
|
+
log.info(`[config-reconcile] tick: checked=${result.checked} pruned=${result.pruned.length} ` +
|
|
318
369
|
`(${result.pruned.join(', ')}) kept=${result.kept}`);
|
|
319
370
|
}
|
|
320
371
|
}
|
|
321
372
|
catch (err) {
|
|
322
|
-
|
|
373
|
+
log.warn('[config-reconcile] tick failed:', err.message);
|
|
323
374
|
}
|
|
324
|
-
}, 60_000, 'config-reconcile'));
|
|
375
|
+
}, 60_000, 'config-reconcile', { skipIfRunning: true }));
|
|
325
376
|
},
|
|
326
377
|
},
|
|
327
378
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus-loop-registry.js","sourceRoot":"","sources":["../src/focus-loop-registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"focus-loop-registry.js","sourceRoot":"","sources":["../src/focus-loop-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus-merge.d.ts","sourceRoot":"","sources":["../src/focus-merge.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EAEd,6BAA6B,EAC9B,MAAM,YAAY,CAAC;AAEpB,OAAO,EAA0B,cAAc,EAA8B,MAAM,eAAe,CAAC;AAInG,OAAO,EACL,gBAAgB,EAChB,8BAA8B,EAI/B,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"focus-merge.d.ts","sourceRoot":"","sources":["../src/focus-merge.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EAEd,6BAA6B,EAC9B,MAAM,YAAY,CAAC;AAEpB,OAAO,EAA0B,cAAc,EAA8B,MAAM,eAAe,CAAC;AAInG,OAAO,EACL,gBAAgB,EAChB,8BAA8B,EAI/B,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AAMpE;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,6BAA6B,CAAC,EAAE,OAAO,6BAA6B,CAAC;IACrE,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,CAAC;IAC3C,8BAA8B,CAAC,EAAE,OAAO,8BAA8B,CAAC;CACxE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE;IACN,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACxC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,EACD,IAAI,GAAE,sBAA2B,GAChC,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAkE/B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CASf;AAED;;;;GAIG;AACH,MAAM,WAAW,2BAA2B;IAC1C,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,CAAC;IAC3C,8BAA8B,CAAC,EAAE,OAAO,8BAA8B,CAAC;IACvE,cAAc,CAAC,EAAE,OAAO,cAAc,CAAC;CACxC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,mBAAmB,EAC3B,IAAI,GAAE,2BAAgC,GACrC,OAAO,CAAC,IAAI,CAAC,CA4Df;AAiCD;;;;;;;;;;GAUG;AACH,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,IAAI,CAAC,CAiHf;AAUD;;;;;;;;GAQG;AACH,wBAAsB,yBAAyB,CAC7C,SAAS,EAAE,cAAc,EACzB,aAAa,EAAE,MAAM,EAAE,EACvB,UAAU,EAAE,MAAM,EAClB,iBAAiB,EAAE,MAAM,EACzB,SAAS,GAAE,MAA6C,GACvD,OAAO,CAAC,6BAA6B,CAAC,CA4DxC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,cAAc,EACzB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,iBAAiB,EAAE,MAAM,EAAE,GAC1B,OAAO,CAAC;IAAE,cAAc,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAyL1D"}
|
package/dist/focus-merge.js
CHANGED
|
@@ -15,6 +15,8 @@ import { withRetry, sendMessage, ESCALATION_REASONS, ESCALATION_DISPOSITIONS } f
|
|
|
15
15
|
import { spawnResolutionAgent } from './spawner/index.js';
|
|
16
16
|
import { getFocusWorktree } from './focus-worktree-state.js';
|
|
17
17
|
import { worktreeHasUncommittedChanges } from './worktree/index.js';
|
|
18
|
+
import { createLogger } from './log.js';
|
|
19
|
+
const log = createLogger({ module: 'focus-merge' });
|
|
18
20
|
/**
|
|
19
21
|
* Refuse a focus-branch merge when the worktree still has uncommitted changes.
|
|
20
22
|
*
|
|
@@ -37,7 +39,7 @@ export async function refuseMergeIfWorktreeDirty(params, deps = {}) {
|
|
|
37
39
|
if (!worktreePath || !hasUncommitted(worktreePath)) {
|
|
38
40
|
return { refused: false };
|
|
39
41
|
}
|
|
40
|
-
|
|
42
|
+
log.warn(`[focus-merge] REFUSING merge of "${deliveryName}" (${branchName} -> ${integrationBranch}): ` +
|
|
41
43
|
`worktree ${worktreePath} has uncommitted changes.`);
|
|
42
44
|
// Durable, focus-grain dedup: at most one open worktree-dirty escalation per
|
|
43
45
|
// FOCUS, collapsed across the sibling classes (advance_blocked /
|
|
@@ -51,7 +53,7 @@ export async function refuseMergeIfWorktreeDirty(params, deps = {}) {
|
|
|
51
53
|
alreadyOpen = await hasOpenEsc(focusId);
|
|
52
54
|
}
|
|
53
55
|
catch (err) {
|
|
54
|
-
|
|
56
|
+
log.warn(`[focus-merge] Open worktree-dirty escalation lookup failed for "${deliveryName}", proceeding to file: ${err.message}`);
|
|
55
57
|
}
|
|
56
58
|
if (alreadyOpen) {
|
|
57
59
|
return { refused: true };
|
|
@@ -76,10 +78,10 @@ export async function refuseMergeIfWorktreeDirty(params, deps = {}) {
|
|
|
76
78
|
whatWasTried: `Daemon was about to merge ${branchName} into ${integrationBranch} but \`git status --porcelain\` reported uncommitted changes in ${worktreePath}.`,
|
|
77
79
|
helpNeeded: `Inspect ${worktreePath}; commit or discard the uncommitted changes (for a read-only audit, discard them), then the merge can be retried.`,
|
|
78
80
|
}), { maxAttempts: 3, label: `escalation-dirty-worktree-merge-${deliveryId}` });
|
|
79
|
-
|
|
81
|
+
log.info(`Filed dirty-worktree merge-refusal escalation for "${deliveryName}"`);
|
|
80
82
|
}
|
|
81
83
|
catch (err) {
|
|
82
|
-
|
|
84
|
+
log.error(`[focus-merge] Failed to file dirty-worktree merge-refusal escalation for "${deliveryName}": ${err.message}`);
|
|
83
85
|
}
|
|
84
86
|
return { refused: true };
|
|
85
87
|
}
|
|
@@ -93,7 +95,7 @@ export async function reportMergeConflictState(deliveryId, branchName) {
|
|
|
93
95
|
await reportGitState(deliveryId, 'merge_conflict', branchName);
|
|
94
96
|
}
|
|
95
97
|
catch (err) {
|
|
96
|
-
|
|
98
|
+
log.warn(`[focus-merge] reportGitState merge_conflict failed for ${deliveryId}:`, err.message);
|
|
97
99
|
}
|
|
98
100
|
}
|
|
99
101
|
/**
|
|
@@ -119,7 +121,7 @@ export async function escalateMergeConflict(params, deps = {}) {
|
|
|
119
121
|
await reportState(deliveryId, 'merge_conflict', branchName);
|
|
120
122
|
}
|
|
121
123
|
catch (err) {
|
|
122
|
-
|
|
124
|
+
log.warn(`[focus-merge] reportGitState merge_conflict failed for ${deliveryId}:`, err.message);
|
|
123
125
|
}
|
|
124
126
|
// Durable, focus-grain dedup across the sibling classes. Fail open: if the
|
|
125
127
|
// lookup errors we proceed to file rather than swallow a genuine first
|
|
@@ -129,10 +131,10 @@ export async function escalateMergeConflict(params, deps = {}) {
|
|
|
129
131
|
alreadyOpen = await hasOpenEsc(focusId);
|
|
130
132
|
}
|
|
131
133
|
catch (err) {
|
|
132
|
-
|
|
134
|
+
log.warn(`[focus-merge] Open worktree-dirty escalation lookup failed for "${deliveryName}", proceeding to file: ${err.message}`);
|
|
133
135
|
}
|
|
134
136
|
if (alreadyOpen) {
|
|
135
|
-
|
|
137
|
+
log.info(`Worktree-dirty escalation already open for focus ${focusId}, skipping duplicate merge-conflict row`);
|
|
136
138
|
return;
|
|
137
139
|
}
|
|
138
140
|
try {
|
|
@@ -153,10 +155,10 @@ export async function escalateMergeConflict(params, deps = {}) {
|
|
|
153
155
|
whatWasTried: `Attempted automatic merge of ${branchName} into ${integrationBranch}.`,
|
|
154
156
|
helpNeeded: `Resolve the merge conflicts between ${branchName} and ${integrationBranch}, then mark this escalation as resolved.`,
|
|
155
157
|
}), { maxAttempts: 3, label: `escalation-focus-merge-conflict-${deliveryId}` });
|
|
156
|
-
|
|
158
|
+
log.info(`Created merge conflict escalation for delivery "${deliveryName}"`);
|
|
157
159
|
}
|
|
158
160
|
catch (err) {
|
|
159
|
-
|
|
161
|
+
log.error(`[focus-merge] Failed to create merge conflict escalation for "${deliveryName}": ${err.message}`);
|
|
160
162
|
}
|
|
161
163
|
}
|
|
162
164
|
/**
|
|
@@ -173,10 +175,10 @@ function resolveMergeConflictEscalations(deliveries) {
|
|
|
173
175
|
resolveOpenWorktreeDirtyEscalations(focusId, [MERGE_CONFLICT_ESCALATION_KIND])
|
|
174
176
|
.then((n) => {
|
|
175
177
|
if (n > 0) {
|
|
176
|
-
|
|
178
|
+
log.info(`[focus-merge] Merge resolved for focus ${focusId}; auto-resolved ${n} merge-conflict escalation(s).`);
|
|
177
179
|
}
|
|
178
180
|
})
|
|
179
|
-
.catch((err) =>
|
|
181
|
+
.catch((err) => log.warn(`[focus-merge] Auto-resolve of merge-conflict escalation failed for focus ${focusId}: ${err.message}`));
|
|
180
182
|
}
|
|
181
183
|
}
|
|
182
184
|
/**
|
|
@@ -196,7 +198,7 @@ export async function checkResolvedMergeConflicts(config) {
|
|
|
196
198
|
conflictDeliveries = await getMergeConflictDeliveries(config.organizationId, config.productId);
|
|
197
199
|
}
|
|
198
200
|
catch (err) {
|
|
199
|
-
|
|
201
|
+
log.warn(`[focus-merge] Failed to fetch merge conflict deliveries:`, err.message);
|
|
200
202
|
return;
|
|
201
203
|
}
|
|
202
204
|
if (conflictDeliveries.length === 0)
|
|
@@ -212,7 +214,7 @@ export async function checkResolvedMergeConflicts(config) {
|
|
|
212
214
|
}
|
|
213
215
|
for (const [branchName, deliveries] of byBranch) {
|
|
214
216
|
const representative = deliveries[0];
|
|
215
|
-
|
|
217
|
+
log.info(`[focus-merge] Retrying merge for branch ${branchName} ` +
|
|
216
218
|
`(${deliveries.length} delivery/ies in merge_conflict state)`);
|
|
217
219
|
const mergeResult = await mergeToIntegration({
|
|
218
220
|
config,
|
|
@@ -221,23 +223,23 @@ export async function checkResolvedMergeConflicts(config) {
|
|
|
221
223
|
deliveryId: representative.delivery_id,
|
|
222
224
|
});
|
|
223
225
|
if (mergeResult.success) {
|
|
224
|
-
|
|
226
|
+
log.info(`[focus-merge] Merge retry succeeded for branch ${branchName}`);
|
|
225
227
|
// Update all deliveries in this branch group. Dedup is durable now (an
|
|
226
228
|
// open escalation suppresses re-filing); now that the merge succeeded we
|
|
227
229
|
// also auto-resolve the open merge_conflict escalation(s) for the focus so
|
|
228
230
|
// a resolved-in-fact conflict stops sitting in the human inbox.
|
|
229
231
|
for (const d of deliveries) {
|
|
230
|
-
reportGitState(d.delivery_id, 'merged_to_integration').catch((err) =>
|
|
232
|
+
reportGitState(d.delivery_id, 'merged_to_integration').catch((err) => log.warn(`[focus-merge] reportGitState merged_to_integration failed for ${d.delivery_id}:`, err.message));
|
|
231
233
|
}
|
|
232
234
|
resolveMergeConflictEscalations(deliveries);
|
|
233
235
|
}
|
|
234
236
|
else {
|
|
235
|
-
|
|
237
|
+
log.info(`[focus-merge] Merge retry still failing for branch ${branchName}: ${mergeResult.error ?? 'unknown'}`);
|
|
236
238
|
// Attempt fallback resolution agent if a worktree exists for this focus
|
|
237
239
|
if (representative.focus_id) {
|
|
238
240
|
const worktreeInfo = getFocusWorktree(representative.focus_id);
|
|
239
241
|
if (worktreeInfo) {
|
|
240
|
-
|
|
242
|
+
log.info(`[focus-merge] Spawning fallback resolution agent for branch ${branchName}`);
|
|
241
243
|
// Merge integration back into the focus worktree to surface conflicts
|
|
242
244
|
const mergeBackResult = await mergeBackFromIntegration({
|
|
243
245
|
worktreePath: worktreeInfo.worktreePath,
|
|
@@ -263,9 +265,9 @@ export async function checkResolvedMergeConflicts(config) {
|
|
|
263
265
|
deliveryId: representative.delivery_id,
|
|
264
266
|
});
|
|
265
267
|
if (retryResult.success) {
|
|
266
|
-
|
|
268
|
+
log.info(`Merge succeeded after fallback resolution for branch ${branchName}`);
|
|
267
269
|
for (const d of deliveries) {
|
|
268
|
-
reportGitState(d.delivery_id, 'merged_to_integration').catch((err) =>
|
|
270
|
+
reportGitState(d.delivery_id, 'merged_to_integration').catch((err) => log.warn(`reportGitState failed for ${d.delivery_id}:`, err.message));
|
|
269
271
|
}
|
|
270
272
|
resolveMergeConflictEscalations(deliveries);
|
|
271
273
|
}
|
|
@@ -312,7 +314,7 @@ export async function requestTeamLeadResolution(teamState, conflictFiles, branch
|
|
|
312
314
|
`5. If typecheck or the targeted tests fail, fix the issues, commit, and re-run\n\n` +
|
|
313
315
|
`Do NOT run git merge --abort. Your goal is to produce a clean merge commit that passes typecheck and the targeted tests.`;
|
|
314
316
|
sendMessage(leadStdin, message);
|
|
315
|
-
|
|
317
|
+
log.info(`Sent merge conflict resolution request to team lead for "${focusName}"`);
|
|
316
318
|
// Poll git state to detect resolution
|
|
317
319
|
const deadline = Date.now() + timeoutMs;
|
|
318
320
|
const preResolutionHead = runGitSync(['rev-parse', 'HEAD'], worktreePath).output;
|
|
@@ -327,13 +329,13 @@ export async function requestTeamLeadResolution(teamState, conflictFiles, branch
|
|
|
327
329
|
// No unmerged files -- check if HEAD advanced (merge commit created)
|
|
328
330
|
const currentHead = runGitSync(['rev-parse', 'HEAD'], worktreePath).output;
|
|
329
331
|
if (currentHead !== preResolutionHead) {
|
|
330
|
-
|
|
332
|
+
log.info(`Team lead resolved merge conflicts for "${focusName}"`);
|
|
331
333
|
return { resolved: true };
|
|
332
334
|
}
|
|
333
335
|
}
|
|
334
336
|
}
|
|
335
337
|
// Timeout expired
|
|
336
|
-
|
|
338
|
+
log.warn(`[focus-merge] Team lead did not resolve merge conflicts within ${timeoutMs / 1000}s for "${focusName}"`);
|
|
337
339
|
return { resolved: false, reason: `Resolution timeout (${timeoutMs / 1000}s)` };
|
|
338
340
|
}
|
|
339
341
|
finally {
|
|
@@ -356,6 +358,10 @@ export async function requestTeamLeadResolution(teamState, conflictFiles, branch
|
|
|
356
358
|
* `shouldAttemptMerge`, not here.
|
|
357
359
|
*/
|
|
358
360
|
export async function mergeFocusBranch(config, teamState, sessionId, branchName, workedDeliveryIds) {
|
|
361
|
+
log.info(`Merging focus branch ${branchName} for "${teamState.focusName}"`, {
|
|
362
|
+
focusId: teamState.focusId,
|
|
363
|
+
sessionId,
|
|
364
|
+
});
|
|
359
365
|
// Pick a representative delivery for merge operations (workflow lookup,
|
|
360
366
|
// escalation references, mergeDeliveryBranch). Prefer a worked delivery;
|
|
361
367
|
// fall back to any known delivery on the focus. Only return early if the
|
|
@@ -389,7 +395,7 @@ export async function mergeFocusBranch(config, teamState, sessionId, branchName,
|
|
|
389
395
|
workflow = await fetchEffectiveWorkflow(representativeDeliveryId);
|
|
390
396
|
}
|
|
391
397
|
catch (err) {
|
|
392
|
-
|
|
398
|
+
log.warn(`[focus-executor] Failed to fetch workflow for merge, using fallback:`, err.message);
|
|
393
399
|
workflow = { id: 'fallback', stages: [] };
|
|
394
400
|
}
|
|
395
401
|
// ── Merge-back: sync integration into focus branch before merging out ──
|
|
@@ -402,14 +408,14 @@ export async function mergeFocusBranch(config, teamState, sessionId, branchName,
|
|
|
402
408
|
});
|
|
403
409
|
if (mergeBackResult.status === 'conflict') {
|
|
404
410
|
const conflictFiles = mergeBackResult.conflictFiles ?? [];
|
|
405
|
-
|
|
411
|
+
log.info(`[focus-merge] Merge-back produced conflicts for "${teamState.focusName}": ` +
|
|
406
412
|
`${conflictFiles.join(', ') || 'unknown files'}`);
|
|
407
413
|
// If team lead is alive, delegate resolution to them
|
|
408
414
|
if (teamState.leadStdin && teamState.phase === 'executing') {
|
|
409
415
|
const resolution = await requestTeamLeadResolution(teamState, conflictFiles, branchName, config.integrationBranch);
|
|
410
416
|
if (resolution.resolved) {
|
|
411
417
|
// Agent committed the merge resolution, proceed to integration merge
|
|
412
|
-
|
|
418
|
+
log.info(`Conflict resolved by team lead for "${teamState.focusName}", proceeding`);
|
|
413
419
|
}
|
|
414
420
|
else {
|
|
415
421
|
// Team lead could not resolve -- escalate
|
|
@@ -428,11 +434,11 @@ export async function mergeFocusBranch(config, teamState, sessionId, branchName,
|
|
|
428
434
|
}
|
|
429
435
|
else {
|
|
430
436
|
// No active team lead -- spawn a short-lived resolution agent
|
|
431
|
-
|
|
437
|
+
log.info(`No active team lead for "${teamState.focusName}", spawning fallback resolution agent`);
|
|
432
438
|
// Report resolving_conflict state for all unmerged deliveries
|
|
433
439
|
for (const deliveryId of teamState.knownDeliveryIds) {
|
|
434
440
|
if (!teamState.mergedDeliveryIds.has(deliveryId)) {
|
|
435
|
-
reportGitState(deliveryId, 'resolving_conflict').catch(err =>
|
|
441
|
+
reportGitState(deliveryId, 'resolving_conflict').catch(err => log.warn(`reportGitState resolving_conflict failed for ${deliveryId}:`, err.message));
|
|
436
442
|
}
|
|
437
443
|
}
|
|
438
444
|
const fallbackResult = await spawnResolutionAgent({
|
|
@@ -446,7 +452,7 @@ export async function mergeFocusBranch(config, teamState, sessionId, branchName,
|
|
|
446
452
|
focusId: teamState.focusId,
|
|
447
453
|
});
|
|
448
454
|
if (fallbackResult.success) {
|
|
449
|
-
|
|
455
|
+
log.info(`Fallback resolution agent resolved conflicts for "${teamState.focusName}", proceeding`);
|
|
450
456
|
}
|
|
451
457
|
else {
|
|
452
458
|
await escalateMergeConflict({
|
|
@@ -464,11 +470,11 @@ export async function mergeFocusBranch(config, teamState, sessionId, branchName,
|
|
|
464
470
|
}
|
|
465
471
|
}
|
|
466
472
|
if (mergeBackResult.status === 'error') {
|
|
467
|
-
|
|
473
|
+
log.error(`[focus-merge] Merge-back error for "${teamState.focusName}": ${mergeBackResult.message}`);
|
|
468
474
|
return { mergeSucceeded: false, exitReason: mergeBackResult.message };
|
|
469
475
|
}
|
|
470
476
|
// status === 'clean' -- proceed to merge to integration
|
|
471
|
-
|
|
477
|
+
log.info(`Merge-back clean for "${teamState.focusName}", proceeding to integration merge`);
|
|
472
478
|
}
|
|
473
479
|
const mergeOutcome = await mergeDeliveryBranch({
|
|
474
480
|
config,
|
|
@@ -486,11 +492,11 @@ export async function mergeFocusBranch(config, teamState, sessionId, branchName,
|
|
|
486
492
|
if (mergeOutcome.mergeSucceeded) {
|
|
487
493
|
for (const deliveryId of deliveryIdsForGitState) {
|
|
488
494
|
if (!teamState.mergedDeliveryIds.has(deliveryId)) {
|
|
489
|
-
reportGitState(deliveryId, 'merged_to_integration').catch(err =>
|
|
495
|
+
reportGitState(deliveryId, 'merged_to_integration').catch(err => log.warn(`[focus-executor] reportGitState merged_to_integration failed for ${deliveryId}:`, err.message));
|
|
490
496
|
// Propagate the merge commit SHA to all deliveries so the git state
|
|
491
497
|
// detector can track their containment in main/remote independently.
|
|
492
498
|
if (mergeOutcome.commitSha) {
|
|
493
|
-
updateDeliveryMergeCommitSha(deliveryId, mergeOutcome.commitSha).catch(err =>
|
|
499
|
+
updateDeliveryMergeCommitSha(deliveryId, mergeOutcome.commitSha).catch(err => log.warn(`updateDeliveryMergeCommitSha failed for ${deliveryId}:`, err.message));
|
|
494
500
|
}
|
|
495
501
|
}
|
|
496
502
|
}
|
|
@@ -499,7 +505,7 @@ export async function mergeFocusBranch(config, teamState, sessionId, branchName,
|
|
|
499
505
|
// Report merge_conflict state for worked deliveries only
|
|
500
506
|
for (const deliveryId of deliveryIdsForGitState) {
|
|
501
507
|
if (!teamState.mergedDeliveryIds.has(deliveryId)) {
|
|
502
|
-
reportMergeConflictState(deliveryId, branchName).catch(err =>
|
|
508
|
+
reportMergeConflictState(deliveryId, branchName).catch(err => log.warn(`reportMergeConflictState failed for ${deliveryId}:`, err.message));
|
|
503
509
|
}
|
|
504
510
|
}
|
|
505
511
|
}
|