@telora/daemon 0.19.47 → 0.19.74
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 +6 -3
- package/dist/assembly-engine.d.ts +9 -0
- package/dist/assembly-engine.d.ts.map +1 -1
- package/dist/assembly-engine.js.map +1 -1
- package/dist/audit-hooks.js +1 -1
- package/dist/branch-status.js +2 -2
- package/dist/branch-status.js.map +1 -1
- package/dist/ci-sensor-loop.d.ts +47 -0
- package/dist/ci-sensor-loop.d.ts.map +1 -0
- package/dist/ci-sensor-loop.js +116 -0
- package/dist/ci-sensor-loop.js.map +1 -0
- package/dist/ci-status-git.d.ts +52 -0
- package/dist/ci-status-git.d.ts.map +1 -0
- package/dist/ci-status-git.js +86 -0
- package/dist/ci-status-git.js.map +1 -0
- package/dist/ci-status.d.ts +122 -0
- package/dist/ci-status.d.ts.map +1 -0
- package/dist/ci-status.js +114 -0
- package/dist/ci-status.js.map +1 -0
- package/dist/cli/connect/agents.d.ts +24 -0
- package/dist/cli/connect/agents.d.ts.map +1 -0
- package/dist/cli/connect/agents.js +65 -0
- package/dist/cli/connect/agents.js.map +1 -0
- package/dist/cli/connect/claude.d.ts +31 -0
- package/dist/cli/connect/claude.d.ts.map +1 -0
- package/dist/cli/connect/claude.js +104 -0
- package/dist/cli/connect/claude.js.map +1 -0
- package/dist/cli/connect/cline.d.ts +37 -0
- package/dist/cli/connect/cline.d.ts.map +1 -0
- package/dist/cli/connect/cline.js +115 -0
- package/dist/cli/connect/cline.js.map +1 -0
- package/dist/cli/connect/codex.d.ts +44 -0
- package/dist/cli/connect/codex.d.ts.map +1 -0
- package/dist/cli/connect/codex.js +111 -0
- package/dist/cli/connect/codex.js.map +1 -0
- package/dist/cli/connect/ide.d.ts +69 -0
- package/dist/cli/connect/ide.d.ts.map +1 -0
- package/dist/cli/connect/ide.js +134 -0
- package/dist/cli/connect/ide.js.map +1 -0
- package/dist/cli/connect/scaffolding.d.ts +31 -0
- package/dist/cli/connect/scaffolding.d.ts.map +1 -0
- package/dist/cli/connect/scaffolding.js +52 -0
- package/dist/cli/connect/scaffolding.js.map +1 -0
- package/dist/cli/connect/shared.d.ts +30 -0
- package/dist/cli/connect/shared.d.ts.map +1 -0
- package/dist/cli/connect/shared.js +11 -0
- package/dist/cli/connect/shared.js.map +1 -0
- package/dist/cli/connect.d.ts +9 -210
- package/dist/cli/connect.d.ts.map +1 -1
- package/dist/cli/connect.js +10 -526
- package/dist/cli/connect.js.map +1 -1
- package/dist/cli/open.js +2 -2
- package/dist/completion/event.d.ts +2 -0
- package/dist/completion/event.d.ts.map +1 -1
- package/dist/completion/event.js +19 -2
- package/dist/completion/event.js.map +1 -1
- package/dist/completion/merge-phase.d.ts +3 -0
- package/dist/completion/merge-phase.d.ts.map +1 -1
- package/dist/completion/merge-phase.js +35 -3
- package/dist/completion/merge-phase.js.map +1 -1
- package/dist/completion/read-only-pristine.d.ts +1 -1
- package/dist/completion/read-only-pristine.d.ts.map +1 -1
- package/dist/completion/read-only-pristine.js +1 -1
- package/dist/completion/read-only-pristine.js.map +1 -1
- package/dist/completion/review-exit-phase.d.ts +30 -3
- package/dist/completion/review-exit-phase.d.ts.map +1 -1
- package/dist/completion/review-exit-phase.js +203 -15
- package/dist/completion/review-exit-phase.js.map +1 -1
- package/dist/completion/status-advance-phase.js +1 -1
- 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 +22 -2
- package/dist/completion/team-completion.js.map +1 -1
- package/dist/completion/team-lifecycle.js +1 -1
- package/dist/completion/terminated-work-reconcile.js +1 -1
- package/dist/completion/terminated-work-reconcile.js.map +1 -1
- package/dist/condition-evaluators.d.ts +41 -2
- package/dist/condition-evaluators.d.ts.map +1 -1
- package/dist/condition-evaluators.js +37 -288
- package/dist/condition-evaluators.js.map +1 -1
- package/dist/context-audit.d.ts +1 -1
- package/dist/context-audit.d.ts.map +1 -1
- package/dist/context-lock.d.ts +1 -1
- package/dist/context-lock.d.ts.map +1 -1
- package/dist/control-state.d.ts +2 -2
- package/dist/control-state.d.ts.map +1 -1
- package/dist/control-state.js +4 -3
- package/dist/control-state.js.map +1 -1
- package/dist/daemon-process.d.ts +1 -1
- package/dist/daemon-process.d.ts.map +1 -1
- package/dist/delivery-advance-block.d.ts +1 -1
- package/dist/delivery-advance-block.d.ts.map +1 -1
- package/dist/delivery-advance-block.js +1 -1
- package/dist/delivery-advance-block.js.map +1 -1
- package/dist/delivery-lifecycle.js +1 -1
- package/dist/delivery-reconciler-shadow.d.ts +1 -1
- package/dist/delivery-reconciler-shadow.d.ts.map +1 -1
- package/dist/delivery-reconciler-shadow.js +1 -1
- package/dist/delivery-reconciler-shadow.js.map +1 -1
- package/dist/directive-executor.js +1 -1
- package/dist/directive-executor.js.map +1 -1
- package/dist/drift-eval-loop.d.ts.map +1 -1
- package/dist/drift-eval-loop.js +6 -14
- package/dist/drift-eval-loop.js.map +1 -1
- package/dist/escalations.d.ts +1 -1
- package/dist/escalations.d.ts.map +1 -1
- package/dist/escalations.js +1 -1
- package/dist/escalations.js.map +1 -1
- package/dist/evaluation-context.d.ts +2 -33
- package/dist/evaluation-context.d.ts.map +1 -1
- package/dist/evaluation-context.js +2 -56
- package/dist/evaluation-context.js.map +1 -1
- package/dist/focus-engine.d.ts +14 -5
- package/dist/focus-engine.d.ts.map +1 -1
- package/dist/focus-engine.js +35 -289
- package/dist/focus-engine.js.map +1 -1
- package/dist/focus-executor.d.ts +10 -791
- package/dist/focus-executor.d.ts.map +1 -1
- package/dist/focus-executor.js +42 -1568
- package/dist/focus-executor.js.map +1 -1
- package/dist/focus-lifecycle.js +2 -2
- package/dist/focus-lifecycle.js.map +1 -1
- package/dist/focus-loop-registry.d.ts +52 -0
- package/dist/focus-loop-registry.d.ts.map +1 -0
- package/dist/focus-loop-registry.js +328 -0
- package/dist/focus-loop-registry.js.map +1 -0
- package/dist/focus-merge.d.ts +1 -1
- package/dist/focus-merge.d.ts.map +1 -1
- package/dist/focus-merge.js +3 -3
- package/dist/focus-merge.js.map +1 -1
- package/dist/focus-phase.d.ts +4 -0
- package/dist/focus-phase.d.ts.map +1 -1
- package/dist/focus-phase.js +3 -3
- package/dist/focus-phase.js.map +1 -1
- package/dist/focus-stage-lifecycle/planning-release.d.ts +197 -0
- package/dist/focus-stage-lifecycle/planning-release.d.ts.map +1 -0
- package/dist/focus-stage-lifecycle/planning-release.js +312 -0
- package/dist/focus-stage-lifecycle/planning-release.js.map +1 -0
- package/dist/focus-stage-lifecycle/review-convergence.d.ts +133 -0
- package/dist/focus-stage-lifecycle/review-convergence.d.ts.map +1 -0
- package/dist/focus-stage-lifecycle/review-convergence.js +235 -0
- package/dist/focus-stage-lifecycle/review-convergence.js.map +1 -0
- package/dist/focus-stage-lifecycle/wedge-watchdog.d.ts +133 -0
- package/dist/focus-stage-lifecycle/wedge-watchdog.d.ts.map +1 -0
- package/dist/focus-stage-lifecycle/wedge-watchdog.js +365 -0
- package/dist/focus-stage-lifecycle/wedge-watchdog.js.map +1 -0
- package/dist/focus-stage-lifecycle.d.ts +22 -421
- package/dist/focus-stage-lifecycle.d.ts.map +1 -1
- package/dist/focus-stage-lifecycle.js +24 -832
- package/dist/focus-stage-lifecycle.js.map +1 -1
- package/dist/{git-activity.d.ts → git/activity.d.ts} +1 -1
- package/dist/git/activity.d.ts.map +1 -0
- package/dist/{git-activity.js → git/activity.js} +2 -2
- package/dist/git/activity.js.map +1 -0
- package/dist/{git-branch.d.ts → git/branch.d.ts} +2 -2
- package/dist/git/branch.d.ts.map +1 -0
- package/dist/{git-branch.js → git/branch.js} +2 -2
- package/dist/git/branch.js.map +1 -0
- package/dist/{git-fetch.d.ts → git/fetch.d.ts} +2 -2
- package/dist/git/fetch.d.ts.map +1 -0
- package/dist/{git-fetch.js → git/fetch.js} +1 -1
- package/dist/git/fetch.js.map +1 -0
- package/dist/{git-genesis.d.ts → git/genesis.d.ts} +3 -3
- package/dist/git/genesis.d.ts.map +1 -0
- package/dist/{git-genesis.js → git/genesis.js} +5 -5
- package/dist/git/genesis.js.map +1 -0
- package/dist/git/index.d.ts +36 -0
- package/dist/git/index.d.ts.map +1 -0
- package/dist/git/index.js +36 -0
- package/dist/git/index.js.map +1 -0
- package/dist/{git-integration.d.ts → git/integration.d.ts} +2 -2
- package/dist/git/integration.d.ts.map +1 -0
- package/dist/{git-integration.js → git/integration.js} +4 -4
- package/dist/git/integration.js.map +1 -0
- package/dist/{git-merge-helpers.d.ts → git/merge-helpers.d.ts} +3 -3
- package/dist/git/merge-helpers.d.ts.map +1 -0
- package/dist/{git-merge-helpers.js → git/merge-helpers.js} +3 -3
- package/dist/git/merge-helpers.js.map +1 -0
- package/dist/{git-merge-lock.d.ts → git/merge-lock.d.ts} +1 -1
- package/dist/git/merge-lock.d.ts.map +1 -0
- package/dist/{git-merge-lock.js → git/merge-lock.js} +1 -1
- package/dist/git/merge-lock.js.map +1 -0
- package/dist/{git-merge-strategies.d.ts → git/merge-strategies.d.ts} +2 -2
- package/dist/git/merge-strategies.d.ts.map +1 -0
- package/dist/{git-merge-strategies.js → git/merge-strategies.js} +3 -3
- package/dist/git/merge-strategies.js.map +1 -0
- package/dist/{git-merge.d.ts → git/merge.d.ts} +4 -4
- package/dist/git/merge.d.ts.map +1 -0
- package/dist/{git-merge.js → git/merge.js} +4 -4
- package/dist/git/merge.js.map +1 -0
- package/dist/{git-state-detector.d.ts → git/state-detector.d.ts} +2 -2
- package/dist/git/state-detector.d.ts.map +1 -0
- package/dist/{git-state-detector.js → git/state-detector.js} +7 -7
- package/dist/git/state-detector.js.map +1 -0
- package/dist/{git-types.d.ts → git/types.d.ts} +2 -2
- package/dist/git/types.d.ts.map +1 -0
- package/dist/{git-types.js → git/types.js} +1 -1
- package/dist/git/types.js.map +1 -0
- package/dist/{git-utils.d.ts → git/utils.d.ts} +1 -1
- package/dist/git/utils.d.ts.map +1 -0
- package/dist/{git-utils.js → git/utils.js} +2 -2
- package/dist/git/utils.js.map +1 -0
- package/dist/git.d.ts +5 -5
- package/dist/git.d.ts.map +1 -1
- package/dist/git.js +10 -10
- package/dist/git.js.map +1 -1
- package/dist/guard-engine.d.ts +3 -2
- package/dist/guard-engine.d.ts.map +1 -1
- package/dist/guard-engine.js +2 -2
- package/dist/guard-engine.js.map +1 -1
- package/dist/install-probe-tick.d.ts +63 -0
- package/dist/install-probe-tick.d.ts.map +1 -0
- package/dist/install-probe-tick.js +137 -0
- package/dist/install-probe-tick.js.map +1 -0
- package/dist/install-probe.d.ts +115 -0
- package/dist/install-probe.d.ts.map +1 -0
- package/dist/install-probe.js +197 -0
- package/dist/install-probe.js.map +1 -0
- package/dist/listener-auto-advance.d.ts.map +1 -1
- package/dist/listener-auto-advance.js +31 -0
- package/dist/listener-auto-advance.js.map +1 -1
- package/dist/listener.js +5 -5
- package/dist/listener.js.map +1 -1
- package/dist/{loop-context-audit-pass.d.ts → loops/context-audit-pass.d.ts} +4 -4
- package/dist/loops/context-audit-pass.d.ts.map +1 -0
- package/dist/{loop-context-audit-pass.js → loops/context-audit-pass.js} +7 -7
- package/dist/loops/context-audit-pass.js.map +1 -0
- package/dist/{loop-engine-types.d.ts → loops/engine-types.d.ts} +1 -1
- package/dist/loops/engine-types.d.ts.map +1 -0
- package/dist/{loop-engine-types.js → loops/engine-types.js} +1 -1
- package/dist/loops/engine-types.js.map +1 -0
- package/dist/{loop-engine.d.ts → loops/engine.d.ts} +6 -6
- package/dist/loops/engine.d.ts.map +1 -0
- package/dist/{loop-engine.js → loops/engine.js} +13 -13
- package/dist/loops/engine.js.map +1 -0
- package/dist/{loop-event-bus.d.ts → loops/event-bus.d.ts} +1 -1
- package/dist/loops/event-bus.d.ts.map +1 -0
- package/dist/{loop-event-bus.js → loops/event-bus.js} +1 -1
- package/dist/loops/event-bus.js.map +1 -0
- package/dist/loops/index.d.ts +33 -0
- package/dist/loops/index.d.ts.map +1 -0
- package/dist/loops/index.js +32 -0
- package/dist/loops/index.js.map +1 -0
- package/dist/{loop-llm-client.d.ts → loops/llm-client.d.ts} +3 -3
- package/dist/loops/llm-client.d.ts.map +1 -0
- package/dist/{loop-llm-client.js → loops/llm-client.js} +3 -3
- package/dist/loops/llm-client.js.map +1 -0
- package/dist/{loop-llm-flag.d.ts → loops/llm-flag.d.ts} +1 -1
- package/dist/loops/llm-flag.d.ts.map +1 -0
- package/dist/{loop-llm-flag.js → loops/llm-flag.js} +1 -1
- package/dist/loops/llm-flag.js.map +1 -0
- package/dist/{loop-operational-block.d.ts → loops/operational-block.d.ts} +1 -1
- package/dist/loops/operational-block.d.ts.map +1 -0
- package/dist/{loop-operational-block.js → loops/operational-block.js} +1 -1
- package/dist/loops/operational-block.js.map +1 -0
- package/dist/{loop-prompt-builder.d.ts → loops/prompt-builder.d.ts} +2 -2
- package/dist/loops/prompt-builder.d.ts.map +1 -0
- package/dist/{loop-prompt-builder.js → loops/prompt-builder.js} +1 -1
- package/dist/loops/prompt-builder.js.map +1 -0
- package/dist/{loop-variance.d.ts → loops/variance.d.ts} +1 -1
- package/dist/loops/variance.d.ts.map +1 -0
- package/dist/{loop-variance.js → loops/variance.js} +1 -1
- package/dist/loops/variance.js.map +1 -0
- package/dist/merge-back-loop.d.ts.map +1 -1
- package/dist/merge-back-loop.js +4 -3
- package/dist/merge-back-loop.js.map +1 -1
- package/dist/merge-detector.js +2 -2
- package/dist/merge-detector.js.map +1 -1
- package/dist/{nexus-endpoint-clearance.d.ts → nexus/endpoint-clearance.d.ts} +2 -2
- package/dist/nexus/endpoint-clearance.d.ts.map +1 -0
- package/dist/{nexus-endpoint-clearance.js → nexus/endpoint-clearance.js} +2 -2
- package/dist/nexus/endpoint-clearance.js.map +1 -0
- package/dist/{nexus-escalation-bridge.d.ts → nexus/escalation-bridge.d.ts} +1 -1
- package/dist/nexus/escalation-bridge.d.ts.map +1 -0
- package/dist/{nexus-escalation-bridge.js → nexus/escalation-bridge.js} +2 -2
- package/dist/nexus/escalation-bridge.js.map +1 -0
- package/dist/{nexus-incoming.d.ts → nexus/incoming.d.ts} +2 -2
- package/dist/nexus/incoming.d.ts.map +1 -0
- package/dist/{nexus-incoming.js → nexus/incoming.js} +2 -2
- package/dist/nexus/incoming.js.map +1 -0
- package/dist/nexus/index.d.ts +20 -0
- package/dist/nexus/index.d.ts.map +1 -0
- package/dist/nexus/index.js +20 -0
- package/dist/nexus/index.js.map +1 -0
- package/dist/{nexus-intake-spawn.d.ts → nexus/intake-spawn.d.ts} +3 -3
- package/dist/nexus/intake-spawn.d.ts.map +1 -0
- package/dist/{nexus-intake-spawn.js → nexus/intake-spawn.js} +1 -1
- package/dist/nexus/intake-spawn.js.map +1 -0
- package/dist/{nexus-intake.d.ts → nexus/intake.d.ts} +2 -2
- package/dist/nexus/intake.d.ts.map +1 -0
- package/dist/{nexus-intake.js → nexus/intake.js} +4 -4
- package/dist/nexus/intake.js.map +1 -0
- package/dist/{nexus-return.d.ts → nexus/return.d.ts} +3 -3
- package/dist/nexus/return.d.ts.map +1 -0
- package/dist/{nexus-return.js → nexus/return.js} +4 -4
- package/dist/nexus/return.js.map +1 -0
- package/dist/otlp/index.d.ts +19 -0
- package/dist/otlp/index.d.ts.map +1 -0
- package/dist/otlp/index.js +19 -0
- package/dist/otlp/index.js.map +1 -0
- package/dist/{otlp-log-parser.d.ts → otlp/log-parser.d.ts} +2 -2
- package/dist/otlp/log-parser.d.ts.map +1 -0
- package/dist/{otlp-log-parser.js → otlp/log-parser.js} +5 -6
- package/dist/otlp/log-parser.js.map +1 -0
- package/dist/{otlp-metric-parser.d.ts → otlp/metric-parser.d.ts} +2 -2
- package/dist/otlp/metric-parser.d.ts.map +1 -0
- package/dist/{otlp-metric-parser.js → otlp/metric-parser.js} +4 -5
- package/dist/otlp/metric-parser.js.map +1 -0
- package/dist/{otlp-port-manager.d.ts → otlp/port-manager.d.ts} +1 -1
- package/dist/otlp/port-manager.d.ts.map +1 -0
- package/dist/{otlp-port-manager.js → otlp/port-manager.js} +1 -1
- package/dist/otlp/port-manager.js.map +1 -0
- package/dist/{otlp-receiver.d.ts → otlp/receiver.d.ts} +2 -2
- package/dist/otlp/receiver.d.ts.map +1 -0
- package/dist/{otlp-receiver.js → otlp/receiver.js} +5 -33
- package/dist/otlp/receiver.js.map +1 -0
- package/dist/{otlp-types.d.ts → otlp/types.d.ts} +1 -9
- package/dist/otlp/types.d.ts.map +1 -0
- package/dist/{otlp-types.js → otlp/types.js} +1 -27
- package/dist/otlp/types.js.map +1 -0
- package/dist/pipeline-config.d.ts +1 -1
- package/dist/{prd-controller.d.ts → prd/controller.d.ts} +7 -7
- package/dist/prd/controller.d.ts.map +1 -0
- package/dist/{prd-controller.js → prd/controller.js} +11 -11
- package/dist/prd/controller.js.map +1 -0
- package/dist/{prd-divergence.d.ts → prd/divergence.d.ts} +2 -2
- package/dist/prd/divergence.d.ts.map +1 -0
- package/dist/{prd-divergence.js → prd/divergence.js} +1 -1
- package/dist/prd/divergence.js.map +1 -0
- package/dist/{prd-focus-pushdown.d.ts → prd/focus-pushdown.d.ts} +2 -2
- package/dist/prd/focus-pushdown.d.ts.map +1 -0
- package/dist/{prd-focus-pushdown.js → prd/focus-pushdown.js} +3 -3
- package/dist/prd/focus-pushdown.js.map +1 -0
- package/dist/{prd-frontier.d.ts → prd/frontier.d.ts} +2 -2
- package/dist/prd/frontier.d.ts.map +1 -0
- package/dist/{prd-frontier.js → prd/frontier.js} +1 -1
- package/dist/prd/frontier.js.map +1 -0
- package/dist/prd/index.d.ts +26 -0
- package/dist/prd/index.d.ts.map +1 -0
- package/dist/prd/index.js +25 -0
- package/dist/prd/index.js.map +1 -0
- package/dist/{prd-steward.d.ts → prd/steward.d.ts} +4 -4
- package/dist/prd/steward.d.ts.map +1 -0
- package/dist/{prd-steward.js → prd/steward.js} +4 -4
- package/dist/prd/steward.js.map +1 -0
- package/dist/{prd-viability.d.ts → prd/viability.d.ts} +2 -2
- package/dist/prd/viability.d.ts.map +1 -0
- package/dist/{prd-viability.js → prd/viability.js} +1 -1
- package/dist/prd/viability.js.map +1 -0
- package/dist/product-scaffold.js +2 -2
- package/dist/product-scaffold.js.map +1 -1
- package/dist/prompt-sections/persona-sections.d.ts +12 -0
- package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
- package/dist/prompt-sections/persona-sections.js +29 -2
- package/dist/prompt-sections/persona-sections.js.map +1 -1
- package/dist/queries/context-lock-queries.js +1 -1
- package/dist/queries/context-lock-queries.js.map +1 -1
- package/dist/queries/deliveries.d.ts +15 -0
- package/dist/queries/deliveries.d.ts.map +1 -1
- package/dist/queries/deliveries.js +2 -0
- package/dist/queries/deliveries.js.map +1 -1
- package/dist/queries/focuses.d.ts +17 -0
- package/dist/queries/focuses.d.ts.map +1 -1
- package/dist/queries/focuses.js +27 -0
- package/dist/queries/focuses.js.map +1 -1
- package/dist/queries/schemas.d.ts +4 -0
- package/dist/queries/schemas.d.ts.map +1 -1
- package/dist/queries/schemas.js +8 -0
- package/dist/queries/schemas.js.map +1 -1
- package/dist/reality-pole.js +1 -1
- package/dist/resolvers/git-diff-against-base.d.ts.map +1 -1
- package/dist/resolvers/git-diff-against-base.js +4 -1
- package/dist/resolvers/git-diff-against-base.js.map +1 -1
- package/dist/resolvers/prd-context.js +1 -1
- package/dist/sensor-sweep.js +1 -1
- package/dist/spawn/model-routing.d.ts +277 -0
- package/dist/spawn/model-routing.d.ts.map +1 -0
- package/dist/spawn/model-routing.js +464 -0
- package/dist/spawn/model-routing.js.map +1 -0
- package/dist/spawn/process-spawn.d.ts +128 -0
- package/dist/spawn/process-spawn.d.ts.map +1 -0
- package/dist/spawn/process-spawn.js +378 -0
- package/dist/spawn/process-spawn.js.map +1 -0
- package/dist/spawn/prompt-assembly.d.ts +143 -0
- package/dist/spawn/prompt-assembly.d.ts.map +1 -0
- package/dist/spawn/prompt-assembly.js +263 -0
- package/dist/spawn/prompt-assembly.js.map +1 -0
- package/dist/spawn/shared.d.ts +72 -0
- package/dist/spawn/shared.d.ts.map +1 -0
- package/dist/spawn/shared.js +14 -0
- package/dist/spawn/shared.js.map +1 -0
- package/dist/spawn/spawn-decision.d.ts +189 -0
- package/dist/spawn/spawn-decision.d.ts.map +1 -0
- package/dist/spawn/spawn-decision.js +361 -0
- package/dist/spawn/spawn-decision.js.map +1 -0
- package/dist/spawn/worktree-session.d.ts +105 -0
- package/dist/spawn/worktree-session.d.ts.map +1 -0
- package/dist/spawn/worktree-session.js +216 -0
- package/dist/spawn/worktree-session.js.map +1 -0
- package/dist/spawner/lifecycle.js +2 -2
- package/dist/spawner/lifecycle.js.map +1 -1
- package/dist/spawner/resolution.js +1 -1
- package/dist/stall-detector-config.d.ts +4 -0
- package/dist/stall-detector-config.d.ts.map +1 -1
- package/dist/stall-detector-config.js +6 -0
- package/dist/stall-detector-config.js.map +1 -1
- package/dist/state-cascade.js +1 -1
- package/dist/state-cascade.js.map +1 -1
- package/dist/trigger-executor.d.ts +5 -9
- package/dist/trigger-executor.d.ts.map +1 -1
- package/dist/trigger-executor.js +14 -36
- package/dist/trigger-executor.js.map +1 -1
- package/dist/types/focus.d.ts +13 -0
- package/dist/types/focus.d.ts.map +1 -1
- package/dist/types/workflow.d.ts +1 -3
- package/dist/types/workflow.d.ts.map +1 -1
- package/dist/unified-engine-lifecycle.js +1 -1
- package/dist/unified-init.d.ts +3 -3
- package/dist/unified-init.d.ts.map +1 -1
- package/dist/unified-init.js +9 -25
- package/dist/unified-init.js.map +1 -1
- package/dist/unified-shell.d.ts +3 -3
- package/dist/unified-shell.js +4 -4
- package/dist/unified-shell.js.map +1 -1
- package/dist/verification-engine.d.ts.map +1 -1
- package/dist/verification-engine.js +15 -0
- package/dist/verification-engine.js.map +1 -1
- package/dist/{worktree-focus.d.ts → worktree/focus.d.ts} +2 -2
- package/dist/worktree/focus.d.ts.map +1 -0
- package/dist/{worktree-focus.js → worktree/focus.js} +7 -7
- package/dist/worktree/focus.js.map +1 -0
- package/dist/worktree/index.d.ts +16 -0
- package/dist/worktree/index.d.ts.map +1 -0
- package/dist/worktree/index.js +16 -0
- package/dist/worktree/index.js.map +1 -0
- package/dist/{worktree-safety.d.ts → worktree/safety.d.ts} +1 -1
- package/dist/worktree/safety.d.ts.map +1 -0
- package/dist/{worktree-safety.js → worktree/safety.js} +2 -2
- package/dist/worktree/safety.js.map +1 -0
- package/dist/{worktree-state.d.ts → worktree/state.d.ts} +1 -1
- package/dist/worktree/state.d.ts.map +1 -0
- package/dist/{worktree-state.js → worktree/state.js} +6 -6
- package/dist/worktree/state.js.map +1 -0
- package/dist/worktree.d.ts +1 -1
- package/dist/worktree.js +5 -5
- package/dist/worktree.js.map +1 -1
- package/package.json +5 -4
- package/dist/git-activity.d.ts.map +0 -1
- package/dist/git-activity.js.map +0 -1
- package/dist/git-branch.d.ts.map +0 -1
- package/dist/git-branch.js.map +0 -1
- package/dist/git-fetch.d.ts.map +0 -1
- package/dist/git-fetch.js.map +0 -1
- package/dist/git-genesis.d.ts.map +0 -1
- package/dist/git-genesis.js.map +0 -1
- package/dist/git-integration.d.ts.map +0 -1
- package/dist/git-integration.js.map +0 -1
- package/dist/git-merge-helpers.d.ts.map +0 -1
- package/dist/git-merge-helpers.js.map +0 -1
- package/dist/git-merge-lock.d.ts.map +0 -1
- package/dist/git-merge-lock.js.map +0 -1
- package/dist/git-merge-strategies.d.ts.map +0 -1
- package/dist/git-merge-strategies.js.map +0 -1
- package/dist/git-merge.d.ts.map +0 -1
- package/dist/git-merge.js.map +0 -1
- package/dist/git-state-detector.d.ts.map +0 -1
- package/dist/git-state-detector.js.map +0 -1
- package/dist/git-types.d.ts.map +0 -1
- package/dist/git-types.js.map +0 -1
- package/dist/git-utils.d.ts.map +0 -1
- package/dist/git-utils.js.map +0 -1
- package/dist/loop-context-audit-pass.d.ts.map +0 -1
- package/dist/loop-context-audit-pass.js.map +0 -1
- package/dist/loop-engine-types.d.ts.map +0 -1
- package/dist/loop-engine-types.js.map +0 -1
- package/dist/loop-engine.d.ts.map +0 -1
- package/dist/loop-engine.js.map +0 -1
- package/dist/loop-event-bus.d.ts.map +0 -1
- package/dist/loop-event-bus.js.map +0 -1
- package/dist/loop-llm-client.d.ts.map +0 -1
- package/dist/loop-llm-client.js.map +0 -1
- package/dist/loop-llm-flag.d.ts.map +0 -1
- package/dist/loop-llm-flag.js.map +0 -1
- package/dist/loop-operational-block.d.ts.map +0 -1
- package/dist/loop-operational-block.js.map +0 -1
- package/dist/loop-prompt-builder.d.ts.map +0 -1
- package/dist/loop-prompt-builder.js.map +0 -1
- package/dist/loop-variance.d.ts.map +0 -1
- package/dist/loop-variance.js.map +0 -1
- package/dist/nexus-endpoint-clearance.d.ts.map +0 -1
- package/dist/nexus-endpoint-clearance.js.map +0 -1
- package/dist/nexus-escalation-bridge.d.ts.map +0 -1
- package/dist/nexus-escalation-bridge.js.map +0 -1
- package/dist/nexus-incoming.d.ts.map +0 -1
- package/dist/nexus-incoming.js.map +0 -1
- package/dist/nexus-intake-spawn.d.ts.map +0 -1
- package/dist/nexus-intake-spawn.js.map +0 -1
- package/dist/nexus-intake.d.ts.map +0 -1
- package/dist/nexus-intake.js.map +0 -1
- package/dist/nexus-return.d.ts.map +0 -1
- package/dist/nexus-return.js.map +0 -1
- package/dist/otlp-log-parser.d.ts.map +0 -1
- package/dist/otlp-log-parser.js.map +0 -1
- package/dist/otlp-metric-parser.d.ts.map +0 -1
- package/dist/otlp-metric-parser.js.map +0 -1
- package/dist/otlp-port-manager.d.ts.map +0 -1
- package/dist/otlp-port-manager.js.map +0 -1
- package/dist/otlp-receiver.d.ts.map +0 -1
- package/dist/otlp-receiver.js.map +0 -1
- package/dist/otlp-types.d.ts.map +0 -1
- package/dist/otlp-types.js.map +0 -1
- package/dist/prd-controller.d.ts.map +0 -1
- package/dist/prd-controller.js.map +0 -1
- package/dist/prd-divergence.d.ts.map +0 -1
- package/dist/prd-divergence.js.map +0 -1
- package/dist/prd-focus-pushdown.d.ts.map +0 -1
- package/dist/prd-focus-pushdown.js.map +0 -1
- package/dist/prd-frontier.d.ts.map +0 -1
- package/dist/prd-frontier.js.map +0 -1
- package/dist/prd-steward.d.ts.map +0 -1
- package/dist/prd-steward.js.map +0 -1
- package/dist/prd-viability.d.ts.map +0 -1
- package/dist/prd-viability.js.map +0 -1
- package/dist/worktree-focus.d.ts.map +0 -1
- package/dist/worktree-focus.js.map +0 -1
- package/dist/worktree-safety.d.ts.map +0 -1
- package/dist/worktree-safety.js.map +0 -1
- package/dist/worktree-state.d.ts.map +0 -1
- package/dist/worktree-state.js.map +0 -1
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spawn-decision seam for the focus-team spawn path.
|
|
3
|
+
*
|
|
4
|
+
* Extracted verbatim from focus-executor.ts (behavior-preserving): the
|
|
5
|
+
* rank-ordered pre-spawn guard (findActionableDeliveries), the Phase 1 context
|
|
6
|
+
* fetch (fetchSpawnContext), the Phase 2 actionable-delivery resolution
|
|
7
|
+
* (resolveActionableDeliveries), and the Phase A directive-or-fallback resolver
|
|
8
|
+
* (resolveDirectiveOrFallback) -- plus the SpawnFocusTeamParams input contract
|
|
9
|
+
* and the DEFAULT_LOOP_CONTEXT_RECIPE these consume. focus-executor.ts
|
|
10
|
+
* re-exports this surface for backward compatibility, so external importers keep
|
|
11
|
+
* resolving these symbols from '../focus-executor.js'.
|
|
12
|
+
*
|
|
13
|
+
* Cycle rule: this module must NOT import from '../focus-executor.js'.
|
|
14
|
+
*/
|
|
15
|
+
import { getActiveFocuses, } from '../supabase.js';
|
|
16
|
+
import { getFocusDeliveries, getFocusIssues, getProductContextForFocus, getProductDeploymentProfileSnapshot, fetchFocusWorkflow, } from '../queries/focuses.js';
|
|
17
|
+
import { consumePendingSpawnDirective, assembleDirectiveContentWithManifest, syncFocusPhase, isAgentlessDirective, } from '../directive-executor.js';
|
|
18
|
+
import { resolveAssemblyRecipeWithManifest } from '../assembly-engine.js';
|
|
19
|
+
import { resolveFocusMilestoneContext } from '../prd/index.js';
|
|
20
|
+
import { isStatusAgentActionable, isStatusBlocking } from '../stage-classifier.js';
|
|
21
|
+
/**
|
|
22
|
+
* Default loop-context assembly recipe for a focus-team spawn.
|
|
23
|
+
*
|
|
24
|
+
* Composed once per spawn into the team prompt. `focus.endpoint_catalog`
|
|
25
|
+
* is placed right after `focus.injections` so the exposed/consumed endpoint
|
|
26
|
+
* catalog reads alongside the tree context -- surfacing cross-product
|
|
27
|
+
* interrelations at scoping time (shift-left) so a dependency on another
|
|
28
|
+
* product can be mapped into the reality tree as an externally-owned obstacle
|
|
29
|
+
* rather than surfacing reactively as a blocked_by_external escalation.
|
|
30
|
+
*/
|
|
31
|
+
export const DEFAULT_LOOP_CONTEXT_RECIPE = [
|
|
32
|
+
'loop.context',
|
|
33
|
+
'focus.injections',
|
|
34
|
+
'focus.endpoint_catalog',
|
|
35
|
+
'escalation.answers',
|
|
36
|
+
];
|
|
37
|
+
/**
|
|
38
|
+
* Pre-spawn guard: rank-ordered walk that collects every agent-actionable
|
|
39
|
+
* delivery into the spawn set.
|
|
40
|
+
*
|
|
41
|
+
* "Actionable" and "blocking" are independent properties of a status:
|
|
42
|
+
*
|
|
43
|
+
* - actionable = `isStatusAgentActionable(status)` -- queued | coding |
|
|
44
|
+
* verify_failed. Work the team can pick up.
|
|
45
|
+
* - blocking = `isStatusBlocking(status)` -- statuses that gate
|
|
46
|
+
* subsequent ranks (queued, coding, planning, paused).
|
|
47
|
+
*
|
|
48
|
+
* A delivery may be actionable and blocking (queued, coding -- the common
|
|
49
|
+
* case), actionable and non-blocking (`verify_failed` -- has remediation
|
|
50
|
+
* work from a review pass, but the next-ranked queued delivery should not
|
|
51
|
+
* wait on it), or non-actionable and blocking (planning, paused -- gates
|
|
52
|
+
* the queue and the team has nothing to do here).
|
|
53
|
+
*
|
|
54
|
+
* Walk semantics:
|
|
55
|
+
* - Collect every actionable delivery into the spawn set.
|
|
56
|
+
* - Stop the walk when we hit the first blocking-and-not-actionable status
|
|
57
|
+
* (planning, paused). Lower-ranked deliveries past this point are gated.
|
|
58
|
+
* - Skip past non-blocking non-actionable statuses (done, cancelled, verify)
|
|
59
|
+
* without breaking the walk.
|
|
60
|
+
*
|
|
61
|
+
* Returns:
|
|
62
|
+
* - 'planning' when the focus has zero deliveries (agent will scope them).
|
|
63
|
+
* - 'execute' with the collected actionable deliveries.
|
|
64
|
+
* - 'skip' when the walk found zero actionable deliveries.
|
|
65
|
+
*
|
|
66
|
+
* Why verify_failed must be in the spawn set: the auto-review loop
|
|
67
|
+
* routes a delivery from `verify` -> `verify_failed` when the review
|
|
68
|
+
* agent finds remediation work, clears `review_requested_at`, and emits a
|
|
69
|
+
* `review_completed` loop trigger. The next poll re-derives phase from
|
|
70
|
+
* `ACTIVE_STATUSES` (which includes verify_failed), so the focus is
|
|
71
|
+
* eligible to spawn. If this guard then skips past `verify_failed`, no
|
|
72
|
+
* team ever picks up the remediation issues and the loop dies after the
|
|
73
|
+
* first pass. See delivery ac5c69f7.
|
|
74
|
+
*/
|
|
75
|
+
export function findActionableDeliveries(deliveries, focusName) {
|
|
76
|
+
if (deliveries.length === 0) {
|
|
77
|
+
return { kind: 'planning' };
|
|
78
|
+
}
|
|
79
|
+
const actionable = [];
|
|
80
|
+
for (const d of deliveries) {
|
|
81
|
+
const status = d.executionStatus ?? '';
|
|
82
|
+
if (isStatusAgentActionable(status)) {
|
|
83
|
+
actionable.push(d);
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
if (isStatusBlocking(status)) {
|
|
87
|
+
console.log(`[focus-executor] Delivery "${d.name}" (rank ${d.priorityRank}) ` +
|
|
88
|
+
`is in "${status}" state -- blocking subsequent deliveries in focus "${focusName}"`);
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
// non-blocking + non-actionable (done, cancelled, verify):
|
|
92
|
+
// skip past without gating
|
|
93
|
+
}
|
|
94
|
+
if (actionable.length === 0) {
|
|
95
|
+
console.log(`[focus-executor] No actionable deliveries for focus "${focusName}" -- skipping spawn`);
|
|
96
|
+
return { kind: 'skip' };
|
|
97
|
+
}
|
|
98
|
+
return { kind: 'execute', deliveries: actionable };
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Phase 1: fetch all spawn context (deliveries / issues / product-context /
|
|
102
|
+
* deployment-profile / loop-context) in one Promise.all, then resolve the PRD
|
|
103
|
+
* milestone push-down. Returns null when the context fetch rejects -- the
|
|
104
|
+
* caller treats null as "tear down the freshly-inserted team and return"
|
|
105
|
+
* (activeTeams.delete). The PRD push-down deliberately propagates on throw,
|
|
106
|
+
* matching the pre-extraction behavior (it sits after the try/catch).
|
|
107
|
+
*
|
|
108
|
+
* Behavior-preserving extraction of the original inline block; the log lines,
|
|
109
|
+
* the deployment-profile .catch fallback, the loop-context try/catch fallback,
|
|
110
|
+
* and the manifest accumulation order are byte-identical.
|
|
111
|
+
*/
|
|
112
|
+
export async function fetchSpawnContext(config, focusId, focusName) {
|
|
113
|
+
// Accumulates the assembly manifest (one entry per resolved source) across
|
|
114
|
+
// every recipe composed for this spawn, persisted after the session exists.
|
|
115
|
+
const assemblyManifest = [];
|
|
116
|
+
// Fetch all deliveries, issues, product context, deployment profile, and loop context
|
|
117
|
+
let deliveries;
|
|
118
|
+
let issues;
|
|
119
|
+
let productContextDocs;
|
|
120
|
+
let deploymentProfileSnapshot;
|
|
121
|
+
let loopContext;
|
|
122
|
+
try {
|
|
123
|
+
let loopContextResult;
|
|
124
|
+
[deliveries, issues, productContextDocs, deploymentProfileSnapshot, loopContextResult] = await Promise.all([
|
|
125
|
+
getFocusDeliveries(focusId),
|
|
126
|
+
getFocusIssues(focusId),
|
|
127
|
+
getProductContextForFocus(config.productId, focusId),
|
|
128
|
+
getProductDeploymentProfileSnapshot(config.productId).catch((err) => {
|
|
129
|
+
console.debug(`[focus-executor] Could not fetch deployment profile snapshot (non-fatal):`, err.message);
|
|
130
|
+
return null;
|
|
131
|
+
}),
|
|
132
|
+
(async () => {
|
|
133
|
+
try {
|
|
134
|
+
const assemblyCtx = {
|
|
135
|
+
focusId,
|
|
136
|
+
deliveryIds: [],
|
|
137
|
+
worktreePath: null,
|
|
138
|
+
config,
|
|
139
|
+
organizationId: config.organizationId,
|
|
140
|
+
productId: config.productId,
|
|
141
|
+
};
|
|
142
|
+
return await resolveAssemblyRecipeWithManifest(DEFAULT_LOOP_CONTEXT_RECIPE, assemblyCtx);
|
|
143
|
+
}
|
|
144
|
+
catch (err) {
|
|
145
|
+
console.debug(`[focus-executor] Could not fetch loop context (non-fatal):`, err.message);
|
|
146
|
+
return { content: '', manifest: [] };
|
|
147
|
+
}
|
|
148
|
+
})(),
|
|
149
|
+
]);
|
|
150
|
+
loopContext = loopContextResult.content;
|
|
151
|
+
assemblyManifest.push(...loopContextResult.manifest);
|
|
152
|
+
}
|
|
153
|
+
catch (err) {
|
|
154
|
+
console.error(`[focus-executor] Failed to fetch context for focus "${focusName}":`, err.message);
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
// PRD push-down: if this focus was armed by a PRD, resolve the parent PRD's
|
|
158
|
+
// prd.context (milestone goal/expansion/vision + frontier position) and carry
|
|
159
|
+
// it into the team prompt so the focus inherits coherent milestone intent.
|
|
160
|
+
// Context ONLY -- the steward persona is never pushed to a coder team. A focus
|
|
161
|
+
// not under a PRD yields '' and is unaffected (best-effort, never blocks spawn).
|
|
162
|
+
let prdMilestoneContext = '';
|
|
163
|
+
{
|
|
164
|
+
const milestoneCtx = {
|
|
165
|
+
focusId,
|
|
166
|
+
deliveryIds: [],
|
|
167
|
+
worktreePath: null,
|
|
168
|
+
config,
|
|
169
|
+
organizationId: config.organizationId,
|
|
170
|
+
productId: config.productId,
|
|
171
|
+
};
|
|
172
|
+
const milestoneResult = await resolveFocusMilestoneContext(focusId, milestoneCtx);
|
|
173
|
+
prdMilestoneContext = milestoneResult.content;
|
|
174
|
+
assemblyManifest.push(...milestoneResult.manifest);
|
|
175
|
+
}
|
|
176
|
+
return { deliveries, issues, productContextDocs, deploymentProfileSnapshot, loopContext, prdMilestoneContext, assemblyManifest };
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Phase 2: consume any pending spawn directive, enforce the rank-ordered
|
|
180
|
+
* pre-spawn guard, and record known-delivery bookkeeping on the team state.
|
|
181
|
+
*
|
|
182
|
+
* Mutates `teamState` exactly as the original inline block did
|
|
183
|
+
* (lastConsumedDirectiveHash, sessionType, planningPhase, knownDeliveryIds,
|
|
184
|
+
* deliveryStageIds, mergedDeliveryIds) and emits the same log lines. Returns
|
|
185
|
+
* 'skip' for the findActionableDeliveries skip case (the caller owns the
|
|
186
|
+
* activeTeams.delete + return so the team-state map stays the orchestrator's
|
|
187
|
+
* responsibility). Behavior byte-identical.
|
|
188
|
+
*/
|
|
189
|
+
export function resolveActionableDeliveries(args) {
|
|
190
|
+
const { focusId, focusName, deliveries, issues, forceSpawn, teamState } = args;
|
|
191
|
+
// Check for pending spawn directive (e.g., review stage spawn).
|
|
192
|
+
// Record its content hash on team state so the spawn-guard in
|
|
193
|
+
// executeSpawnDirective can detect divergent directives within the 60s
|
|
194
|
+
// skip window.
|
|
195
|
+
const pendingDirective = consumePendingSpawnDirective(focusId);
|
|
196
|
+
if (pendingDirective) {
|
|
197
|
+
teamState.lastConsumedDirectiveHash = pendingDirective.contentHash;
|
|
198
|
+
teamState.sessionType = pendingDirective.sessionType;
|
|
199
|
+
}
|
|
200
|
+
// Pre-spawn guard: enforce rank-ordered execution.
|
|
201
|
+
// Skip when a pending spawn directive exists -- the directive has its own intent.
|
|
202
|
+
let actionableDeliveries = [];
|
|
203
|
+
let isPlanningSpawn = false;
|
|
204
|
+
if (pendingDirective) {
|
|
205
|
+
actionableDeliveries = deliveries.filter(d => isStatusAgentActionable(d.executionStatus ?? ''));
|
|
206
|
+
}
|
|
207
|
+
else if (forceSpawn) {
|
|
208
|
+
// Escalation answer re-arm: spawn to consume a pending answer even when no
|
|
209
|
+
// delivery is actionable. Carry whatever deliveries ARE actionable (usually
|
|
210
|
+
// none -- the focus exited because everything is verify/done); the
|
|
211
|
+
// escalation.answers resolver in the standard recipe injects the answer.
|
|
212
|
+
actionableDeliveries = deliveries.filter(d => isStatusAgentActionable(d.executionStatus ?? ''));
|
|
213
|
+
console.log(`[focus-executor] Focus "${focusName}" force-spawning to consume escalation answer ` +
|
|
214
|
+
`(${actionableDeliveries.length} actionable deliver${actionableDeliveries.length === 1 ? 'y' : 'ies'})`);
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
const decision = findActionableDeliveries(deliveries, focusName);
|
|
218
|
+
if (decision.kind === 'skip') {
|
|
219
|
+
return { kind: 'skip' };
|
|
220
|
+
}
|
|
221
|
+
if (decision.kind === 'planning') {
|
|
222
|
+
isPlanningSpawn = true;
|
|
223
|
+
teamState.planningPhase = true;
|
|
224
|
+
console.log(`[focus-executor] Focus "${focusName}" has no deliveries -- spawning planning team`);
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
actionableDeliveries = decision.deliveries;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
// Track known deliveries, pre-populate already-completed ones.
|
|
231
|
+
// Empty deliveries (planning spawn) yields zero iterations: knownDeliveryIds
|
|
232
|
+
// stays empty until the wake-cycle refresh in handleCompletionEvent picks
|
|
233
|
+
// up MCP-written deliveries, at which point planningPhase is cleared.
|
|
234
|
+
for (const d of deliveries) {
|
|
235
|
+
teamState.knownDeliveryIds.add(d.id);
|
|
236
|
+
teamState.deliveryStageIds.set(d.id, d.currentWorkflowStageId);
|
|
237
|
+
if (!isStatusAgentActionable(d.executionStatus ?? '') && !isStatusBlocking(d.executionStatus ?? '')) {
|
|
238
|
+
teamState.mergedDeliveryIds.add(d.id);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
if (isPlanningSpawn) {
|
|
242
|
+
console.log(` Deliveries: 0 (planning required)`);
|
|
243
|
+
}
|
|
244
|
+
else {
|
|
245
|
+
console.log(` Deliveries: ${deliveries.length} (${actionableDeliveries.length} queued)`);
|
|
246
|
+
}
|
|
247
|
+
console.log(` Issues: ${issues.length}`);
|
|
248
|
+
return { kind: 'proceed', pendingDirective, actionableDeliveries, isPlanningSpawn };
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Phase A: resolve the team-lead directive body + spawn metadata (no prompt
|
|
252
|
+
* yet). Priority: pending spawn directive > current-stage directive > legacy
|
|
253
|
+
* full prompt. Pushes any assembled directive manifest entries onto the shared
|
|
254
|
+
* `assemblyManifest` accumulator.
|
|
255
|
+
*
|
|
256
|
+
* Behavior-preserving extraction of the original inline Phase A block -- the
|
|
257
|
+
* "Using pending spawn directive" / "Using stage directive" log lines, the
|
|
258
|
+
* "LEGACY PROMPT FALLBACK" warning and every fallbackReason string, and the
|
|
259
|
+
* directive-manifest accumulation are byte-identical.
|
|
260
|
+
*/
|
|
261
|
+
export async function resolveDirectiveOrFallback(args) {
|
|
262
|
+
const { config, focusId, focusName, worktreePath, pendingDirective, assemblyManifest } = args;
|
|
263
|
+
let directiveBody = null; // appended after the role framework
|
|
264
|
+
let useLegacyFullPrompt = false; // legacy full prompt (no directive)
|
|
265
|
+
let directiveModel = null;
|
|
266
|
+
// Stage directive engine + local-model (Workflow layer of the unified
|
|
267
|
+
// precedence for those two axes); null when the stage pins neither.
|
|
268
|
+
let directiveEngine = null;
|
|
269
|
+
let directiveLocalModel = null;
|
|
270
|
+
// Focus override snapshotted on the pending directive (respawn path only).
|
|
271
|
+
let pendingFocusOverrideModel = null;
|
|
272
|
+
// Workflow stage active at spawn -- stamped onto telemetry as the .stage lever.
|
|
273
|
+
let spawnStageName = null;
|
|
274
|
+
// Lineage + continuity declared by whatever is firing this spawn (pending
|
|
275
|
+
// directive, current stage directive, or none). Resolved uniformly later
|
|
276
|
+
// (INJ-B). For a pending directive these are already resolved upstream, so
|
|
277
|
+
// resolveLineageSpec is idempotent.
|
|
278
|
+
let spawnDirectiveDeclared = null;
|
|
279
|
+
if (pendingDirective && pendingDirective.message.trim()) {
|
|
280
|
+
// Spawn directive from directive-executor (e.g., review stage transition)
|
|
281
|
+
directiveBody = pendingDirective.message;
|
|
282
|
+
directiveModel = pendingDirective.model;
|
|
283
|
+
directiveEngine = pendingDirective.engine ?? null;
|
|
284
|
+
directiveLocalModel = pendingDirective.localModel ?? null;
|
|
285
|
+
pendingFocusOverrideModel = pendingDirective.focusOverrideModel;
|
|
286
|
+
spawnStageName = pendingDirective.sessionType === 'review' ? 'reviewing' : null;
|
|
287
|
+
spawnDirectiveDeclared = { lineage: pendingDirective.lineage, continuity: pendingDirective.continuity };
|
|
288
|
+
console.log(`[focus-executor] Using pending spawn directive for "${focusName}" ` +
|
|
289
|
+
`(${pendingDirective.message.length} chars directive, model: ${directiveModel ?? 'default'})`);
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
// Sync the focus's execution phase from its delivery aggregate, then
|
|
293
|
+
// assemble the matching stage directive. Every focus workflow stage is
|
|
294
|
+
// expected to carry an agent_directive (populated by migration
|
|
295
|
+
// 20260503140420_focus_phase_directives); the legacy hardcoded prompt
|
|
296
|
+
// path below is a safety net that should not fire under normal
|
|
297
|
+
// operation. When it does fire, the warning identifies which guard
|
|
298
|
+
// tripped so the gap can be fixed.
|
|
299
|
+
let stageDirectiveContent = null;
|
|
300
|
+
let stageDirectiveModel = null;
|
|
301
|
+
let fallbackReason = null;
|
|
302
|
+
try {
|
|
303
|
+
const activeFocuses = await getActiveFocuses(config.organizationId, config.productId);
|
|
304
|
+
const focusRecord = activeFocuses.find(s => s.focus_id === focusId);
|
|
305
|
+
const syncedStageId = focusRecord
|
|
306
|
+
? await syncFocusPhase(focusRecord)
|
|
307
|
+
: null;
|
|
308
|
+
const workflow = await fetchFocusWorkflow(focusId);
|
|
309
|
+
const currentStage = syncedStageId
|
|
310
|
+
? workflow.stages.find(s => s.id === syncedStageId)
|
|
311
|
+
: workflow.stages.find(s => s.is_initial);
|
|
312
|
+
if (!currentStage) {
|
|
313
|
+
fallbackReason = syncedStageId
|
|
314
|
+
? `no stage matching synced id ${syncedStageId.slice(0, 8)} in workflow`
|
|
315
|
+
: 'no synced stage and no is_initial stage in workflow';
|
|
316
|
+
}
|
|
317
|
+
else if (!currentStage.agentDirective || isAgentlessDirective(currentStage.agentDirective)) {
|
|
318
|
+
// NULL directive OR an explicit agentless hold (execution: 'none') --
|
|
319
|
+
// treat identically: no stage directive drives the spawn, fall back to
|
|
320
|
+
// the legacy focus-team prompt. Parity keeps a deliberately-agentless
|
|
321
|
+
// stage from being handed to directive assembly.
|
|
322
|
+
spawnStageName = currentStage.name ?? null;
|
|
323
|
+
fallbackReason = currentStage.agentDirective
|
|
324
|
+
? `stage "${currentStage.name}" is an explicit agentless hold (execution=none)`
|
|
325
|
+
: `stage "${currentStage.name}" has no agent_directive populated`;
|
|
326
|
+
}
|
|
327
|
+
else {
|
|
328
|
+
spawnStageName = currentStage.name ?? null;
|
|
329
|
+
// The current stage's directive declares its own lineage + continuity
|
|
330
|
+
// (INJ-B); resolved uniformly later.
|
|
331
|
+
spawnDirectiveDeclared = currentStage.agentDirective;
|
|
332
|
+
const { content: directiveContent, manifest: directiveManifest } = await assembleDirectiveContentWithManifest(config, focusId, currentStage.agentDirective, worktreePath);
|
|
333
|
+
if (directiveContent.trim()) {
|
|
334
|
+
stageDirectiveContent = directiveContent;
|
|
335
|
+
stageDirectiveModel = currentStage.agentDirective.model;
|
|
336
|
+
// The stage is the Workflow layer for engine + local model too.
|
|
337
|
+
directiveEngine = currentStage.agentDirective.engine ?? null;
|
|
338
|
+
directiveLocalModel = currentStage.agentDirective.localModel ?? null;
|
|
339
|
+
assemblyManifest.push(...directiveManifest);
|
|
340
|
+
}
|
|
341
|
+
else {
|
|
342
|
+
fallbackReason = `assembly returned empty content for stage "${currentStage.name}"`;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
catch (err) {
|
|
347
|
+
fallbackReason = `directive lookup threw: ${err.message}`;
|
|
348
|
+
}
|
|
349
|
+
if (stageDirectiveContent) {
|
|
350
|
+
directiveBody = stageDirectiveContent;
|
|
351
|
+
directiveModel = stageDirectiveModel;
|
|
352
|
+
console.log(`[focus-executor] Using stage directive for "${focusName}" (${stageDirectiveContent.length} chars)`);
|
|
353
|
+
}
|
|
354
|
+
else {
|
|
355
|
+
console.warn(`[focus-executor] LEGACY PROMPT FALLBACK for "${focusName}": ${fallbackReason ?? 'unknown reason'}`);
|
|
356
|
+
useLegacyFullPrompt = true;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
return { directiveBody, directiveModel, directiveEngine, directiveLocalModel, pendingFocusOverrideModel, spawnStageName, spawnDirectiveDeclared, useLegacyFullPrompt };
|
|
360
|
+
}
|
|
361
|
+
//# sourceMappingURL=spawn-decision.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spawn-decision.js","sourceRoot":"","sources":["../../src/spawn/spawn-decision.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Worktree + session seam for the focus-team spawn path.
|
|
3
|
+
*
|
|
4
|
+
* Extracted verbatim from focus-executor.ts (behavior-preserving): the initial
|
|
5
|
+
* team-state factory, the worktree resolver (reuse+rebase or inline-create), the
|
|
6
|
+
* team-lead session creator, the best-effort review-context resolver, and the
|
|
7
|
+
* lineage/engine-for-pass resolver. focus-executor.ts re-exports this surface for
|
|
8
|
+
* backward compatibility, so external importers keep resolving these symbols
|
|
9
|
+
* from '../focus-executor.js'.
|
|
10
|
+
*
|
|
11
|
+
* Cycle rule: this module must NOT import from '../focus-executor.js'.
|
|
12
|
+
*/
|
|
13
|
+
import type { DaemonConfig, AgentRole, FocusTeamState, PipelineConfig } from '../types.js';
|
|
14
|
+
import { createSession, type SessionType } from '../supabase.js';
|
|
15
|
+
import { getFocusIssues } from '../queries/focuses.js';
|
|
16
|
+
import { resolveLineageSpec } from '../session-lineage.js';
|
|
17
|
+
import { resolveBackend, type AgentBackend, type EngineOverride, type EnginePass } from '../backends/index.js';
|
|
18
|
+
import type { DirectiveResolution } from './shared.js';
|
|
19
|
+
/**
|
|
20
|
+
* Build the initial FocusTeamState for a spawn. Pure factory -- no side effects;
|
|
21
|
+
* the caller inserts it into the activeTeams map.
|
|
22
|
+
*/
|
|
23
|
+
export declare function createInitialTeamState(args: {
|
|
24
|
+
focusId: string;
|
|
25
|
+
focusName: string;
|
|
26
|
+
role: AgentRole;
|
|
27
|
+
config: DaemonConfig;
|
|
28
|
+
executionConfig: FocusTeamState['executionConfig'];
|
|
29
|
+
pipelineConfig: PipelineConfig | null;
|
|
30
|
+
branchName: string;
|
|
31
|
+
readOnly: boolean;
|
|
32
|
+
}): FocusTeamState;
|
|
33
|
+
/**
|
|
34
|
+
* Phase: resolve the focus worktree to spawn into. Reuses the persistent
|
|
35
|
+
* worktree (rebasing onto integration + re-asserting read-only guards) when one
|
|
36
|
+
* exists, else creates one inline. Returns null when the spawn cannot proceed
|
|
37
|
+
* (repo has no commits, or inline creation failed) -- owning its own teardown
|
|
38
|
+
* (activeTeams.delete + recordFocusTeardown) so the caller just returns.
|
|
39
|
+
* Behavior byte-identical to the original inline block.
|
|
40
|
+
*/
|
|
41
|
+
export declare function resolveSpawnWorktree(args: {
|
|
42
|
+
config: DaemonConfig;
|
|
43
|
+
focusId: string;
|
|
44
|
+
focusName: string;
|
|
45
|
+
branchName: string;
|
|
46
|
+
readOnly: boolean;
|
|
47
|
+
}): Promise<string | null>;
|
|
48
|
+
/**
|
|
49
|
+
* Phase: create the team-lead session row + register it with the telemetry
|
|
50
|
+
* persistence gate, stamping its id onto the team state. Returns null when
|
|
51
|
+
* createSession fails (owning its own activeTeams.delete teardown). The worktree
|
|
52
|
+
* is focus-owned and persists even when session creation fails.
|
|
53
|
+
*
|
|
54
|
+
* `sessionType` is the AUTHORITATIVE lineage (resolved by resolveEngineForPass,
|
|
55
|
+
* matching teamState.sessionType), so the (focus, lineage) pass this segment is
|
|
56
|
+
* opened against is on the SAME lineage the segment carries -- never a stale
|
|
57
|
+
* 'coding' default while the lineage actually resolved to 'review'.
|
|
58
|
+
*/
|
|
59
|
+
export declare function createTeamSession(args: {
|
|
60
|
+
config: DaemonConfig;
|
|
61
|
+
role: AgentRole;
|
|
62
|
+
focusId: string;
|
|
63
|
+
focusName: string;
|
|
64
|
+
branchName: string;
|
|
65
|
+
sessionType: SessionType;
|
|
66
|
+
teamState: FocusTeamState;
|
|
67
|
+
}): Promise<Awaited<ReturnType<typeof createSession>> | null>;
|
|
68
|
+
/**
|
|
69
|
+
* Phase: best-effort review context. When the focus has a recorded
|
|
70
|
+
* review_requested_at, count the open review-filed issues (the remediation
|
|
71
|
+
* directive's working set) and carry the prior findings; also resolve the focus
|
|
72
|
+
* description. A fetch failure leaves the count at zero (normal execution team).
|
|
73
|
+
*/
|
|
74
|
+
export declare function resolveReviewContext(args: {
|
|
75
|
+
config: DaemonConfig;
|
|
76
|
+
focusId: string;
|
|
77
|
+
focusName: string;
|
|
78
|
+
issues: Awaited<ReturnType<typeof getFocusIssues>>;
|
|
79
|
+
}): Promise<{
|
|
80
|
+
reviewFiledOpenCount: number;
|
|
81
|
+
priorFindings: Awaited<ReturnType<typeof getFocusIssues>>;
|
|
82
|
+
focusDescription: string | null;
|
|
83
|
+
}>;
|
|
84
|
+
/**
|
|
85
|
+
* Phase B: resolve the session lineage (pass) and the engine backend for it,
|
|
86
|
+
* stamping lineage + sessionType onto the team state. Returns the lineage spec,
|
|
87
|
+
* the derived engine pass, the resolved engine, and the backend object.
|
|
88
|
+
*/
|
|
89
|
+
export declare function resolveEngineForPass(args: {
|
|
90
|
+
spawnDirectiveDeclared: DirectiveResolution['spawnDirectiveDeclared'];
|
|
91
|
+
spawnStageName: string | null;
|
|
92
|
+
engineOverride: EngineOverride | null | undefined;
|
|
93
|
+
/** Stage directive engine (Workflow layer of the unified engine precedence). */
|
|
94
|
+
stageDirectiveEngine?: string | null;
|
|
95
|
+
config: DaemonConfig;
|
|
96
|
+
orgDefaultEngine: string | null | undefined;
|
|
97
|
+
focusName: string;
|
|
98
|
+
teamState: FocusTeamState;
|
|
99
|
+
}): {
|
|
100
|
+
spawnSpec: ReturnType<typeof resolveLineageSpec>;
|
|
101
|
+
enginePass: EnginePass;
|
|
102
|
+
resolvedEngine: ReturnType<typeof resolveBackend>;
|
|
103
|
+
backend: AgentBackend;
|
|
104
|
+
};
|
|
105
|
+
//# sourceMappingURL=worktree-session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree-session.d.ts","sourceRoot":"","sources":["../../src/spawn/worktree-session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EACT,cAAc,EACd,cAAc,EACf,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,aAAa,EACb,KAAK,WAAW,EACjB,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAK3D,OAAO,EAAc,cAAc,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAE3H,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,YAAY,CAAC;IACrB,eAAe,EAAE,cAAc,CAAC,iBAAiB,CAAC,CAAC;IACnD,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB,GAAG,cAAc,CAoCjB;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA4DzB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,MAAM,EAAE,YAAY,CAAC;IACrB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,cAAc,CAAC;CAC3B,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC,CAwB5D;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC;CACpD,GAAG,OAAO,CAAC;IACV,oBAAoB,EAAE,MAAM,CAAC;IAC7B,aAAa,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC;IAC1D,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC,CAAC,CAuBD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,sBAAsB,EAAE,mBAAmB,CAAC,wBAAwB,CAAC,CAAC;IACtE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,cAAc,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,CAAC;IAClD,gFAAgF;IAChF,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,MAAM,EAAE,YAAY,CAAC;IACrB,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,cAAc,CAAC;CAC3B,GAAG;IACF,SAAS,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;IACjD,UAAU,EAAE,UAAU,CAAC;IACvB,cAAc,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;IAClD,OAAO,EAAE,YAAY,CAAC;CACvB,CAqBA"}
|