@telora/daemon 0.12.33
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/.env.example +64 -0
- package/README.md +229 -0
- package/build-info.json +4 -0
- package/dist/activity-tracker.d.ts +13 -0
- package/dist/activity-tracker.d.ts.map +1 -0
- package/dist/activity-tracker.js +19 -0
- package/dist/activity-tracker.js.map +1 -0
- package/dist/agent-state.d.ts +45 -0
- package/dist/agent-state.d.ts.map +1 -0
- package/dist/agent-state.js +61 -0
- package/dist/agent-state.js.map +1 -0
- package/dist/audit-hooks.d.ts +12 -0
- package/dist/audit-hooks.d.ts.map +1 -0
- package/dist/audit-hooks.js +45 -0
- package/dist/audit-hooks.js.map +1 -0
- package/dist/auto-update.d.ts +42 -0
- package/dist/auto-update.d.ts.map +1 -0
- package/dist/auto-update.js +96 -0
- package/dist/auto-update.js.map +1 -0
- package/dist/branch-status.d.ts +40 -0
- package/dist/branch-status.d.ts.map +1 -0
- package/dist/branch-status.js +107 -0
- package/dist/branch-status.js.map +1 -0
- package/dist/completion-detector.d.ts +87 -0
- package/dist/completion-detector.d.ts.map +1 -0
- package/dist/completion-detector.js +160 -0
- package/dist/completion-detector.js.map +1 -0
- package/dist/completion-handler.d.ts +48 -0
- package/dist/completion-handler.d.ts.map +1 -0
- package/dist/completion-handler.js +200 -0
- package/dist/completion-handler.js.map +1 -0
- package/dist/condition-evaluators.d.ts +31 -0
- package/dist/condition-evaluators.d.ts.map +1 -0
- package/dist/condition-evaluators.js +416 -0
- package/dist/condition-evaluators.js.map +1 -0
- package/dist/config.d.ts +55 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +311 -0
- package/dist/config.js.map +1 -0
- package/dist/control-state.d.ts +41 -0
- package/dist/control-state.d.ts.map +1 -0
- package/dist/control-state.js +204 -0
- package/dist/control-state.js.map +1 -0
- package/dist/crash-recovery-cleanup.d.ts +21 -0
- package/dist/crash-recovery-cleanup.d.ts.map +1 -0
- package/dist/crash-recovery-cleanup.js +198 -0
- package/dist/crash-recovery-cleanup.js.map +1 -0
- package/dist/crash-recovery-scan.d.ts +19 -0
- package/dist/crash-recovery-scan.d.ts.map +1 -0
- package/dist/crash-recovery-scan.js +145 -0
- package/dist/crash-recovery-scan.js.map +1 -0
- package/dist/crash-recovery-types.d.ts +54 -0
- package/dist/crash-recovery-types.d.ts.map +1 -0
- package/dist/crash-recovery-types.js +13 -0
- package/dist/crash-recovery-types.js.map +1 -0
- package/dist/crash-recovery.d.ts +88 -0
- package/dist/crash-recovery.d.ts.map +1 -0
- package/dist/crash-recovery.js +448 -0
- package/dist/crash-recovery.js.map +1 -0
- package/dist/daemon-logs.d.ts +19 -0
- package/dist/daemon-logs.d.ts.map +1 -0
- package/dist/daemon-logs.js +81 -0
- package/dist/daemon-logs.js.map +1 -0
- package/dist/daemon-process.d.ts +154 -0
- package/dist/daemon-process.d.ts.map +1 -0
- package/dist/daemon-process.js +427 -0
- package/dist/daemon-process.js.map +1 -0
- package/dist/dag-validator.d.ts +52 -0
- package/dist/dag-validator.d.ts.map +1 -0
- package/dist/dag-validator.js +199 -0
- package/dist/dag-validator.js.map +1 -0
- package/dist/delivery-guards.d.ts +41 -0
- package/dist/delivery-guards.d.ts.map +1 -0
- package/dist/delivery-guards.js +195 -0
- package/dist/delivery-guards.js.map +1 -0
- package/dist/delivery-lifecycle.d.ts +110 -0
- package/dist/delivery-lifecycle.d.ts.map +1 -0
- package/dist/delivery-lifecycle.js +353 -0
- package/dist/delivery-lifecycle.js.map +1 -0
- package/dist/delivery-merge.d.ts +17 -0
- package/dist/delivery-merge.d.ts.map +1 -0
- package/dist/delivery-merge.js +89 -0
- package/dist/delivery-merge.js.map +1 -0
- package/dist/dependency-resolver.d.ts +77 -0
- package/dist/dependency-resolver.d.ts.map +1 -0
- package/dist/dependency-resolver.js +337 -0
- package/dist/dependency-resolver.js.map +1 -0
- package/dist/evaluation-context.d.ts +49 -0
- package/dist/evaluation-context.d.ts.map +1 -0
- package/dist/evaluation-context.js +98 -0
- package/dist/evaluation-context.js.map +1 -0
- package/dist/git-activity.d.ts +24 -0
- package/dist/git-activity.d.ts.map +1 -0
- package/dist/git-activity.js +97 -0
- package/dist/git-activity.js.map +1 -0
- package/dist/git-branch.d.ts +33 -0
- package/dist/git-branch.d.ts.map +1 -0
- package/dist/git-branch.js +88 -0
- package/dist/git-branch.js.map +1 -0
- package/dist/git-integration.d.ts +27 -0
- package/dist/git-integration.d.ts.map +1 -0
- package/dist/git-integration.js +82 -0
- package/dist/git-integration.js.map +1 -0
- package/dist/git-merge-helpers.d.ts +48 -0
- package/dist/git-merge-helpers.d.ts.map +1 -0
- package/dist/git-merge-helpers.js +105 -0
- package/dist/git-merge-helpers.js.map +1 -0
- package/dist/git-merge-lock.d.ts +67 -0
- package/dist/git-merge-lock.d.ts.map +1 -0
- package/dist/git-merge-lock.js +157 -0
- package/dist/git-merge-lock.js.map +1 -0
- package/dist/git-merge-strategies.d.ts +39 -0
- package/dist/git-merge-strategies.d.ts.map +1 -0
- package/dist/git-merge-strategies.js +127 -0
- package/dist/git-merge-strategies.js.map +1 -0
- package/dist/git-merge.d.ts +80 -0
- package/dist/git-merge.d.ts.map +1 -0
- package/dist/git-merge.js +373 -0
- package/dist/git-merge.js.map +1 -0
- package/dist/git-state-detector.d.ts +24 -0
- package/dist/git-state-detector.d.ts.map +1 -0
- package/dist/git-state-detector.js +122 -0
- package/dist/git-state-detector.js.map +1 -0
- package/dist/git-types.d.ts +40 -0
- package/dist/git-types.d.ts.map +1 -0
- package/dist/git-types.js +23 -0
- package/dist/git-types.js.map +1 -0
- package/dist/git-utils.d.ts +28 -0
- package/dist/git-utils.d.ts.map +1 -0
- package/dist/git-utils.js +57 -0
- package/dist/git-utils.js.map +1 -0
- package/dist/git.d.ts +24 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/git.js +64 -0
- package/dist/git.js.map +1 -0
- package/dist/guard-engine.d.ts +19 -0
- package/dist/guard-engine.d.ts.map +1 -0
- package/dist/guard-engine.js +21 -0
- package/dist/guard-engine.js.map +1 -0
- package/dist/guard-evaluator.d.ts +47 -0
- package/dist/guard-evaluator.d.ts.map +1 -0
- package/dist/guard-evaluator.js +193 -0
- package/dist/guard-evaluator.js.map +1 -0
- package/dist/heartbeat.d.ts +73 -0
- package/dist/heartbeat.d.ts.map +1 -0
- package/dist/heartbeat.js +306 -0
- package/dist/heartbeat.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +493 -0
- package/dist/index.js.map +1 -0
- package/dist/listener-auto-advance.d.ts +29 -0
- package/dist/listener-auto-advance.d.ts.map +1 -0
- package/dist/listener-auto-advance.js +172 -0
- package/dist/listener-auto-advance.js.map +1 -0
- package/dist/listener-review.d.ts +37 -0
- package/dist/listener-review.d.ts.map +1 -0
- package/dist/listener-review.js +217 -0
- package/dist/listener-review.js.map +1 -0
- package/dist/listener.d.ts +57 -0
- package/dist/listener.d.ts.map +1 -0
- package/dist/listener.js +361 -0
- package/dist/listener.js.map +1 -0
- package/dist/log-manager.d.ts +18 -0
- package/dist/log-manager.d.ts.map +1 -0
- package/dist/log-manager.js +18 -0
- package/dist/log-manager.js.map +1 -0
- package/dist/otlp-log-parser.d.ts +21 -0
- package/dist/otlp-log-parser.d.ts.map +1 -0
- package/dist/otlp-log-parser.js +143 -0
- package/dist/otlp-log-parser.js.map +1 -0
- package/dist/otlp-metric-parser.d.ts +20 -0
- package/dist/otlp-metric-parser.d.ts.map +1 -0
- package/dist/otlp-metric-parser.js +113 -0
- package/dist/otlp-metric-parser.js.map +1 -0
- package/dist/otlp-port-manager.d.ts +26 -0
- package/dist/otlp-port-manager.d.ts.map +1 -0
- package/dist/otlp-port-manager.js +130 -0
- package/dist/otlp-port-manager.js.map +1 -0
- package/dist/otlp-receiver.d.ts +51 -0
- package/dist/otlp-receiver.d.ts.map +1 -0
- package/dist/otlp-receiver.js +663 -0
- package/dist/otlp-receiver.js.map +1 -0
- package/dist/otlp-types.d.ts +92 -0
- package/dist/otlp-types.d.ts.map +1 -0
- package/dist/otlp-types.js +133 -0
- package/dist/otlp-types.js.map +1 -0
- package/dist/output-monitor.d.ts +33 -0
- package/dist/output-monitor.d.ts.map +1 -0
- package/dist/output-monitor.js +67 -0
- package/dist/output-monitor.js.map +1 -0
- package/dist/planning-prompt-builder.d.ts +67 -0
- package/dist/planning-prompt-builder.d.ts.map +1 -0
- package/dist/planning-prompt-builder.js +515 -0
- package/dist/planning-prompt-builder.js.map +1 -0
- package/dist/prompt-builder.d.ts +14 -0
- package/dist/prompt-builder.d.ts.map +1 -0
- package/dist/prompt-builder.js +174 -0
- package/dist/prompt-builder.js.map +1 -0
- package/dist/qa-crash-recovery.d.ts +77 -0
- package/dist/qa-crash-recovery.d.ts.map +1 -0
- package/dist/qa-crash-recovery.js +243 -0
- package/dist/qa-crash-recovery.js.map +1 -0
- package/dist/qa-dev-server.d.ts +73 -0
- package/dist/qa-dev-server.d.ts.map +1 -0
- package/dist/qa-dev-server.js +279 -0
- package/dist/qa-dev-server.js.map +1 -0
- package/dist/qa-orchestrator.d.ts +79 -0
- package/dist/qa-orchestrator.d.ts.map +1 -0
- package/dist/qa-orchestrator.js +349 -0
- package/dist/qa-orchestrator.js.map +1 -0
- package/dist/qa-port-allocator.d.ts +34 -0
- package/dist/qa-port-allocator.d.ts.map +1 -0
- package/dist/qa-port-allocator.js +75 -0
- package/dist/qa-port-allocator.js.map +1 -0
- package/dist/qa-provisioner.d.ts +33 -0
- package/dist/qa-provisioner.d.ts.map +1 -0
- package/dist/qa-provisioner.js +141 -0
- package/dist/qa-provisioner.js.map +1 -0
- package/dist/qa-state.d.ts +93 -0
- package/dist/qa-state.d.ts.map +1 -0
- package/dist/qa-state.js +74 -0
- package/dist/qa-state.js.map +1 -0
- package/dist/queries/control-state.d.ts +25 -0
- package/dist/queries/control-state.d.ts.map +1 -0
- package/dist/queries/control-state.js +34 -0
- package/dist/queries/control-state.js.map +1 -0
- package/dist/queries/daemon-connection.d.ts +25 -0
- package/dist/queries/daemon-connection.d.ts.map +1 -0
- package/dist/queries/daemon-connection.js +28 -0
- package/dist/queries/daemon-connection.js.map +1 -0
- package/dist/queries/deliveries.d.ts +100 -0
- package/dist/queries/deliveries.d.ts.map +1 -0
- package/dist/queries/deliveries.js +184 -0
- package/dist/queries/deliveries.js.map +1 -0
- package/dist/queries/git-activity.d.ts +20 -0
- package/dist/queries/git-activity.d.ts.map +1 -0
- package/dist/queries/git-activity.js +22 -0
- package/dist/queries/git-activity.js.map +1 -0
- package/dist/queries/guards.d.ts +47 -0
- package/dist/queries/guards.d.ts.map +1 -0
- package/dist/queries/guards.js +138 -0
- package/dist/queries/guards.js.map +1 -0
- package/dist/queries/index.d.ts +19 -0
- package/dist/queries/index.d.ts.map +1 -0
- package/dist/queries/index.js +17 -0
- package/dist/queries/index.js.map +1 -0
- package/dist/queries/issues.d.ts +41 -0
- package/dist/queries/issues.d.ts.map +1 -0
- package/dist/queries/issues.js +67 -0
- package/dist/queries/issues.js.map +1 -0
- package/dist/queries/qa.d.ts +79 -0
- package/dist/queries/qa.d.ts.map +1 -0
- package/dist/queries/qa.js +85 -0
- package/dist/queries/qa.js.map +1 -0
- package/dist/queries/roles.d.ts +13 -0
- package/dist/queries/roles.d.ts.map +1 -0
- package/dist/queries/roles.js +39 -0
- package/dist/queries/roles.js.map +1 -0
- package/dist/queries/schemas.d.ts +777 -0
- package/dist/queries/schemas.d.ts.map +1 -0
- package/dist/queries/schemas.js +391 -0
- package/dist/queries/schemas.js.map +1 -0
- package/dist/queries/sessions.d.ts +64 -0
- package/dist/queries/sessions.d.ts.map +1 -0
- package/dist/queries/sessions.js +100 -0
- package/dist/queries/sessions.js.map +1 -0
- package/dist/queries/shared.d.ts +61 -0
- package/dist/queries/shared.d.ts.map +1 -0
- package/dist/queries/shared.js +187 -0
- package/dist/queries/shared.js.map +1 -0
- package/dist/queries/strategies.d.ts +69 -0
- package/dist/queries/strategies.d.ts.map +1 -0
- package/dist/queries/strategies.js +80 -0
- package/dist/queries/strategies.js.map +1 -0
- package/dist/queries/workflows.d.ts +17 -0
- package/dist/queries/workflows.d.ts.map +1 -0
- package/dist/queries/workflows.js +49 -0
- package/dist/queries/workflows.js.map +1 -0
- package/dist/queries/worktrees.d.ts +38 -0
- package/dist/queries/worktrees.d.ts.map +1 -0
- package/dist/queries/worktrees.js +37 -0
- package/dist/queries/worktrees.js.map +1 -0
- package/dist/self-update.d.ts +94 -0
- package/dist/self-update.d.ts.map +1 -0
- package/dist/self-update.js +438 -0
- package/dist/self-update.js.map +1 -0
- package/dist/session-lifecycle.d.ts +77 -0
- package/dist/session-lifecycle.d.ts.map +1 -0
- package/dist/session-lifecycle.js +379 -0
- package/dist/session-lifecycle.js.map +1 -0
- package/dist/shutdown-state.d.ts +17 -0
- package/dist/shutdown-state.d.ts.map +1 -0
- package/dist/shutdown-state.js +22 -0
- package/dist/shutdown-state.js.map +1 -0
- package/dist/spawn-cooldown.d.ts +14 -0
- package/dist/spawn-cooldown.d.ts.map +1 -0
- package/dist/spawn-cooldown.js +34 -0
- package/dist/spawn-cooldown.js.map +1 -0
- package/dist/spawn-environment.d.ts +35 -0
- package/dist/spawn-environment.d.ts.map +1 -0
- package/dist/spawn-environment.js +48 -0
- package/dist/spawn-environment.js.map +1 -0
- package/dist/spawner-liveness.d.ts +23 -0
- package/dist/spawner-liveness.d.ts.map +1 -0
- package/dist/spawner-liveness.js +99 -0
- package/dist/spawner-liveness.js.map +1 -0
- package/dist/spawner-resolution.d.ts +27 -0
- package/dist/spawner-resolution.d.ts.map +1 -0
- package/dist/spawner-resolution.js +99 -0
- package/dist/spawner-resolution.js.map +1 -0
- package/dist/spawner-timeout.d.ts +32 -0
- package/dist/spawner-timeout.d.ts.map +1 -0
- package/dist/spawner-timeout.js +124 -0
- package/dist/spawner-timeout.js.map +1 -0
- package/dist/spawner.d.ts +77 -0
- package/dist/spawner.d.ts.map +1 -0
- package/dist/spawner.js +734 -0
- package/dist/spawner.js.map +1 -0
- package/dist/strategy-completion.d.ts +110 -0
- package/dist/strategy-completion.d.ts.map +1 -0
- package/dist/strategy-completion.js +434 -0
- package/dist/strategy-completion.js.map +1 -0
- package/dist/strategy-engine.d.ts +47 -0
- package/dist/strategy-engine.d.ts.map +1 -0
- package/dist/strategy-engine.js +419 -0
- package/dist/strategy-engine.js.map +1 -0
- package/dist/strategy-executor.d.ts +93 -0
- package/dist/strategy-executor.d.ts.map +1 -0
- package/dist/strategy-executor.js +775 -0
- package/dist/strategy-executor.js.map +1 -0
- package/dist/strategy-lifecycle.d.ts +61 -0
- package/dist/strategy-lifecycle.d.ts.map +1 -0
- package/dist/strategy-lifecycle.js +516 -0
- package/dist/strategy-lifecycle.js.map +1 -0
- package/dist/strategy-merge.d.ts +72 -0
- package/dist/strategy-merge.d.ts.map +1 -0
- package/dist/strategy-merge.js +371 -0
- package/dist/strategy-merge.js.map +1 -0
- package/dist/strategy-prompt-builder.d.ts +62 -0
- package/dist/strategy-prompt-builder.d.ts.map +1 -0
- package/dist/strategy-prompt-builder.js +538 -0
- package/dist/strategy-prompt-builder.js.map +1 -0
- package/dist/strategy-provisioning.d.ts +16 -0
- package/dist/strategy-provisioning.d.ts.map +1 -0
- package/dist/strategy-provisioning.js +119 -0
- package/dist/strategy-provisioning.js.map +1 -0
- package/dist/strategy-team-state.d.ts +24 -0
- package/dist/strategy-team-state.d.ts.map +1 -0
- package/dist/strategy-team-state.js +43 -0
- package/dist/strategy-team-state.js.map +1 -0
- package/dist/strategy-teardown.d.ts +24 -0
- package/dist/strategy-teardown.d.ts.map +1 -0
- package/dist/strategy-teardown.js +158 -0
- package/dist/strategy-teardown.js.map +1 -0
- package/dist/strategy-worktree-state.d.ts +47 -0
- package/dist/strategy-worktree-state.d.ts.map +1 -0
- package/dist/strategy-worktree-state.js +104 -0
- package/dist/strategy-worktree-state.js.map +1 -0
- package/dist/supabase.d.ts +36 -0
- package/dist/supabase.d.ts.map +1 -0
- package/dist/supabase.js +50 -0
- package/dist/supabase.js.map +1 -0
- package/dist/task-converter.d.ts +61 -0
- package/dist/task-converter.d.ts.map +1 -0
- package/dist/task-converter.js +286 -0
- package/dist/task-converter.js.map +1 -0
- package/dist/task-dag-builder.d.ts +14 -0
- package/dist/task-dag-builder.d.ts.map +1 -0
- package/dist/task-dag-builder.js +17 -0
- package/dist/task-dag-builder.js.map +1 -0
- package/dist/team-prompt-base.d.ts +114 -0
- package/dist/team-prompt-base.d.ts.map +1 -0
- package/dist/team-prompt-base.js +531 -0
- package/dist/team-prompt-base.js.map +1 -0
- package/dist/team-prompt-variants.d.ts +27 -0
- package/dist/team-prompt-variants.d.ts.map +1 -0
- package/dist/team-prompt-variants.js +134 -0
- package/dist/team-prompt-variants.js.map +1 -0
- package/dist/team-spawner.d.ts +50 -0
- package/dist/team-spawner.d.ts.map +1 -0
- package/dist/team-spawner.js +410 -0
- package/dist/team-spawner.js.map +1 -0
- package/dist/telemetry-writer.d.ts +66 -0
- package/dist/telemetry-writer.d.ts.map +1 -0
- package/dist/telemetry-writer.js +96 -0
- package/dist/telemetry-writer.js.map +1 -0
- package/dist/trigger-executor.d.ts +56 -0
- package/dist/trigger-executor.d.ts.map +1 -0
- package/dist/trigger-executor.js +313 -0
- package/dist/trigger-executor.js.map +1 -0
- package/dist/types/config.d.ts +60 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +5 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/dag.d.ts +53 -0
- package/dist/types/dag.d.ts.map +1 -0
- package/dist/types/dag.js +5 -0
- package/dist/types/dag.js.map +1 -0
- package/dist/types/delivery.d.ts +71 -0
- package/dist/types/delivery.d.ts.map +1 -0
- package/dist/types/delivery.js +5 -0
- package/dist/types/delivery.js.map +1 -0
- package/dist/types/index.d.ts +15 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +15 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/issue.d.ts +22 -0
- package/dist/types/issue.d.ts.map +1 -0
- package/dist/types/issue.js +5 -0
- package/dist/types/issue.js.map +1 -0
- package/dist/types/merge.d.ts +28 -0
- package/dist/types/merge.d.ts.map +1 -0
- package/dist/types/merge.js +5 -0
- package/dist/types/merge.js.map +1 -0
- package/dist/types/session.d.ts +98 -0
- package/dist/types/session.d.ts.map +1 -0
- package/dist/types/session.js +5 -0
- package/dist/types/session.js.map +1 -0
- package/dist/types/strategy.d.ts +175 -0
- package/dist/types/strategy.d.ts.map +1 -0
- package/dist/types/strategy.js +5 -0
- package/dist/types/strategy.js.map +1 -0
- package/dist/types/workflow.d.ts +34 -0
- package/dist/types/workflow.d.ts.map +1 -0
- package/dist/types/workflow.js +9 -0
- package/dist/types/workflow.js.map +1 -0
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +9 -0
- package/dist/types.js.map +1 -0
- package/dist/unified-init.d.ts +16 -0
- package/dist/unified-init.d.ts.map +1 -0
- package/dist/unified-init.js +183 -0
- package/dist/unified-init.js.map +1 -0
- package/dist/unified-shell-config.d.ts +34 -0
- package/dist/unified-shell-config.d.ts.map +1 -0
- package/dist/unified-shell-config.js +238 -0
- package/dist/unified-shell-config.js.map +1 -0
- package/dist/unified-shell-status.d.ts +15 -0
- package/dist/unified-shell-status.d.ts.map +1 -0
- package/dist/unified-shell-status.js +100 -0
- package/dist/unified-shell-status.js.map +1 -0
- package/dist/unified-shell.d.ts +50 -0
- package/dist/unified-shell.d.ts.map +1 -0
- package/dist/unified-shell.js +682 -0
- package/dist/unified-shell.js.map +1 -0
- package/dist/version-check.d.ts +19 -0
- package/dist/version-check.d.ts.map +1 -0
- package/dist/version-check.js +67 -0
- package/dist/version-check.js.map +1 -0
- package/dist/workflow-engine.d.ts +95 -0
- package/dist/workflow-engine.d.ts.map +1 -0
- package/dist/workflow-engine.js +165 -0
- package/dist/workflow-engine.js.map +1 -0
- package/dist/worktree-merge.d.ts +23 -0
- package/dist/worktree-merge.d.ts.map +1 -0
- package/dist/worktree-merge.js +57 -0
- package/dist/worktree-merge.js.map +1 -0
- package/dist/worktree-safety.d.ts +48 -0
- package/dist/worktree-safety.d.ts.map +1 -0
- package/dist/worktree-safety.js +113 -0
- package/dist/worktree-safety.js.map +1 -0
- package/dist/worktree-strategy.d.ts +69 -0
- package/dist/worktree-strategy.d.ts.map +1 -0
- package/dist/worktree-strategy.js +214 -0
- package/dist/worktree-strategy.js.map +1 -0
- package/dist/worktree.d.ts +159 -0
- package/dist/worktree.d.ts.map +1 -0
- package/dist/worktree.js +512 -0
- package/dist/worktree.js.map +1 -0
- package/package.json +76 -0
- package/scripts/telora-daemon-wrapper.sh +31 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spawner.js","sourceRoot":"","sources":["../src/spawner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Strategy team completion handling.
|
|
3
|
+
*
|
|
4
|
+
* Manages the post-execution lifecycle: advancing delivery statuses
|
|
5
|
+
* based on issue completion, merging the strategy branch, cleaning up
|
|
6
|
+
* worktrees, and updating session records.
|
|
7
|
+
*/
|
|
8
|
+
import type { DaemonConfig, StrategyTeamState, StrategyDeliveryInfo, Workflow, PolicyFailureMode } from './types.js';
|
|
9
|
+
import type { StageAdvanceResult } from './delivery-lifecycle.js';
|
|
10
|
+
/**
|
|
11
|
+
* Delivery execution statuses that indicate a delivery has reached
|
|
12
|
+
* a terminal state (all work is complete).
|
|
13
|
+
*/
|
|
14
|
+
export declare const TERMINAL_DELIVERY_STATUSES: Set<string>;
|
|
15
|
+
/**
|
|
16
|
+
* Delivery execution statuses that represent work for the agent team.
|
|
17
|
+
* 'queued' = waiting for agent pickup, 'coding' = agent actively working.
|
|
18
|
+
* All other statuses (draft, planning, iterating, verify, done, paused,
|
|
19
|
+
* cancelled) are human-owned states.
|
|
20
|
+
*/
|
|
21
|
+
export declare const TEAM_WORK_STATUSES: Set<string>;
|
|
22
|
+
export interface TeamCompletionParams {
|
|
23
|
+
config: DaemonConfig;
|
|
24
|
+
teamState: StrategyTeamState;
|
|
25
|
+
sessionId: string;
|
|
26
|
+
code: number | null;
|
|
27
|
+
signal: string | null;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Handle the team lead process exiting.
|
|
31
|
+
*
|
|
32
|
+
* Responsibilities:
|
|
33
|
+
* - Report git state for all known deliveries
|
|
34
|
+
* - Advance delivery statuses based on issue completion
|
|
35
|
+
* - Merge strategy branch to integration (if successful)
|
|
36
|
+
* - Clean up worktree
|
|
37
|
+
* - Update session record
|
|
38
|
+
* - Record heartbeat counters
|
|
39
|
+
* - Trigger re-poll for next work
|
|
40
|
+
*/
|
|
41
|
+
export declare function handleTeamCompletion(params: TeamCompletionParams): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* External dependencies for advanceDeliveryStatuses.
|
|
44
|
+
* Defaults to real implementations; overridable in tests.
|
|
45
|
+
*/
|
|
46
|
+
export interface AdvanceDeliveryDeps {
|
|
47
|
+
getStrategyDeliveries: (strategyId: string) => Promise<StrategyDeliveryInfo[]>;
|
|
48
|
+
getDeliveryIssues: (deliveryId: string) => Promise<Array<{
|
|
49
|
+
id: string;
|
|
50
|
+
title: string;
|
|
51
|
+
status: string;
|
|
52
|
+
issueType: string;
|
|
53
|
+
}>>;
|
|
54
|
+
getDeliverySessionCount: (deliveryId: string) => Promise<number>;
|
|
55
|
+
updateIssueStatus: (issueId: string, status: string) => Promise<void>;
|
|
56
|
+
fetchEffectiveWorkflow: (deliveryId: string) => Promise<Workflow>;
|
|
57
|
+
updateDeliveryStatus: (deliveryId: string, executionStatus: string, currentWorkflowStageId?: string | null) => Promise<void>;
|
|
58
|
+
advanceDeliveryStage: (params: {
|
|
59
|
+
deliveryId: string;
|
|
60
|
+
deliveryName: string;
|
|
61
|
+
organizationId: string;
|
|
62
|
+
workflow: Workflow;
|
|
63
|
+
currentStageId: string;
|
|
64
|
+
exitCode: number;
|
|
65
|
+
openIssueCount: number;
|
|
66
|
+
sessionCount: number;
|
|
67
|
+
policyFailureMode: PolicyFailureMode;
|
|
68
|
+
sessionId: string | null;
|
|
69
|
+
}) => Promise<StageAdvanceResult>;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Advance delivery statuses after team completion.
|
|
73
|
+
*
|
|
74
|
+
* Re-queries all deliveries for the strategy from the database rather
|
|
75
|
+
* than relying on the spawn-time snapshot in teamState.knownDeliveryIds.
|
|
76
|
+
* This ensures deliveries added mid-flight (after the team was spawned)
|
|
77
|
+
* are discovered and advanced, and that stale deliveryStageIds don't
|
|
78
|
+
* cause deliveries to be skipped.
|
|
79
|
+
*
|
|
80
|
+
* For each delivery in 'coding' status:
|
|
81
|
+
* - All issues Done (or no issues): advance via workflow (coding -> verify -> done)
|
|
82
|
+
* - Open issues remain: re-queue to 'queued' so the next team session picks it up
|
|
83
|
+
*/
|
|
84
|
+
export declare function advanceDeliveryStatuses(config: DaemonConfig, teamState: StrategyTeamState, sessionId: string, deps?: AdvanceDeliveryDeps): Promise<void>;
|
|
85
|
+
/**
|
|
86
|
+
* External dependencies for autoQueueIteratingDeliveries.
|
|
87
|
+
* Defaults to real implementations; overridable in tests.
|
|
88
|
+
*/
|
|
89
|
+
export interface AutoQueueDeps {
|
|
90
|
+
getStrategyDeliveries: (strategyId: string) => Promise<StrategyDeliveryInfo[]>;
|
|
91
|
+
getDeliveryIssues: (deliveryId: string) => Promise<Array<{
|
|
92
|
+
id: string;
|
|
93
|
+
title: string;
|
|
94
|
+
status: string;
|
|
95
|
+
issueType: string;
|
|
96
|
+
}>>;
|
|
97
|
+
fetchEffectiveWorkflow: (deliveryId: string) => Promise<Workflow>;
|
|
98
|
+
updateDeliveryStatus: (deliveryId: string, executionStatus: string, currentWorkflowStageId?: string | null) => Promise<void>;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Auto-queue iterating deliveries that have open issues after a review
|
|
102
|
+
* team exits. This closes the review feedback loop: the review agent
|
|
103
|
+
* creates issues (which move deliveries to iterating), and this function
|
|
104
|
+
* re-queues them so the next work cycle picks up the remediation.
|
|
105
|
+
*
|
|
106
|
+
* Only deliveries in 'iterating' with open work issues are moved.
|
|
107
|
+
* Iterating deliveries with no open issues are left for human decision.
|
|
108
|
+
*/
|
|
109
|
+
export declare function autoQueueIteratingDeliveries(strategyId: string, strategyName: string, deps?: AutoQueueDeps): Promise<void>;
|
|
110
|
+
//# sourceMappingURL=strategy-completion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strategy-completion.d.ts","sourceRoot":"","sources":["../src/strategy-completion.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,434 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Strategy team completion handling.
|
|
3
|
+
*
|
|
4
|
+
* Manages the post-execution lifecycle: advancing delivery statuses
|
|
5
|
+
* based on issue completion, merging the strategy branch, cleaning up
|
|
6
|
+
* worktrees, and updating session records.
|
|
7
|
+
*/
|
|
8
|
+
import { updateSession, reportGitState, getDeliveryIssues, getDeliverySessionCount, updateIssueStatus, fetchEffectiveWorkflow, updateDeliveryStatus, } from './supabase.js';
|
|
9
|
+
import { advanceDeliveryStage } from './delivery-lifecycle.js';
|
|
10
|
+
import { withRetry } from '@telora/daemon-core';
|
|
11
|
+
import { mergeStrategyBranch, escalateMergeConflict } from './strategy-merge.js';
|
|
12
|
+
import { recordSessionCompleted } from './heartbeat.js';
|
|
13
|
+
import { triggerCheck } from './listener.js';
|
|
14
|
+
import { getActiveTeams } from './strategy-team-state.js';
|
|
15
|
+
import { clearReviewRequest } from './queries/strategies.js';
|
|
16
|
+
import { commitWipChanges, worktreeHasUncommittedChanges, branchHasUnmergedCommits, runGitSync } from './git.js';
|
|
17
|
+
import { computeGitDiffStats } from './git-utils.js';
|
|
18
|
+
import { getStrategyDeliveries } from './queries/strategies.js';
|
|
19
|
+
// ── Constants ────────────────────────────────────────────────────────
|
|
20
|
+
/**
|
|
21
|
+
* Delivery execution statuses that indicate a delivery has reached
|
|
22
|
+
* a terminal state (all work is complete).
|
|
23
|
+
*/
|
|
24
|
+
export const TERMINAL_DELIVERY_STATUSES = new Set(['verify', 'in_review', 'done']);
|
|
25
|
+
/**
|
|
26
|
+
* Delivery execution statuses that represent work for the agent team.
|
|
27
|
+
* 'queued' = waiting for agent pickup, 'coding' = agent actively working.
|
|
28
|
+
* All other statuses (draft, planning, iterating, verify, done, paused,
|
|
29
|
+
* cancelled) are human-owned states.
|
|
30
|
+
*/
|
|
31
|
+
export const TEAM_WORK_STATUSES = new Set(['queued', 'coding']);
|
|
32
|
+
/**
|
|
33
|
+
* Handle the team lead process exiting.
|
|
34
|
+
*
|
|
35
|
+
* Responsibilities:
|
|
36
|
+
* - Report git state for all known deliveries
|
|
37
|
+
* - Advance delivery statuses based on issue completion
|
|
38
|
+
* - Merge strategy branch to integration (if successful)
|
|
39
|
+
* - Clean up worktree
|
|
40
|
+
* - Update session record
|
|
41
|
+
* - Record heartbeat counters
|
|
42
|
+
* - Trigger re-poll for next work
|
|
43
|
+
*/
|
|
44
|
+
export async function handleTeamCompletion(params) {
|
|
45
|
+
const { config, teamState, sessionId, code, signal } = params;
|
|
46
|
+
const { strategyId, strategyName, organizationId, branchName } = teamState;
|
|
47
|
+
const worktreePath = teamState.worktreePath;
|
|
48
|
+
const exitCode = code ?? 1;
|
|
49
|
+
// Proactive termination: when the daemon terminates a team because all work
|
|
50
|
+
// is done (no open issues, all deliveries terminal, etc.), it sets
|
|
51
|
+
// shutdownReason = 'work_complete' before sending SIGTERM.
|
|
52
|
+
// Node.js may report SIGTERM as either signal='SIGTERM' or code=143 (128+15)
|
|
53
|
+
const wasSigterm = signal === 'SIGTERM' || exitCode === 143;
|
|
54
|
+
const proactivelyTerminated = teamState.phase === 'shutting_down' &&
|
|
55
|
+
wasSigterm &&
|
|
56
|
+
teamState.shutdownReason === 'work_complete';
|
|
57
|
+
const succeeded = exitCode === 0 || proactivelyTerminated;
|
|
58
|
+
let exitReason = exitCode === 0
|
|
59
|
+
? 'Strategy team completed.'
|
|
60
|
+
: proactivelyTerminated
|
|
61
|
+
? teamState.mergedDeliveryIds.size > 0
|
|
62
|
+
? `Strategy team terminated: ${teamState.mergedDeliveryIds.size} deliveries merged.`
|
|
63
|
+
: 'Strategy team terminated: all work complete.'
|
|
64
|
+
: signal
|
|
65
|
+
? `Team lead terminated by signal: ${signal}`
|
|
66
|
+
: `Team lead exited with code: ${exitCode}`;
|
|
67
|
+
// Fetch fresh delivery list to include mid-flight additions
|
|
68
|
+
let allDeliveries;
|
|
69
|
+
try {
|
|
70
|
+
allDeliveries = await getStrategyDeliveries(strategyId);
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
console.warn(`[strategy-executor] Failed to fetch deliveries for gitState reporting, falling back to knownDeliveryIds:`, err.message);
|
|
74
|
+
allDeliveries = [...teamState.knownDeliveryIds].map(id => ({
|
|
75
|
+
id, name: '', description: null, priorityRank: 0,
|
|
76
|
+
executionStatus: 'coding', acceptanceCriteria: null,
|
|
77
|
+
techContext: null, currentWorkflowStageId: null,
|
|
78
|
+
mergeCommitSha: null, gitState: null,
|
|
79
|
+
stageDescription: null,
|
|
80
|
+
}));
|
|
81
|
+
}
|
|
82
|
+
// Only report git state for deliveries the team actually worked on:
|
|
83
|
+
// those in coding status (not queued — queued means work never started),
|
|
84
|
+
// excluding already-merged ones.
|
|
85
|
+
const workedDeliveryIds = allDeliveries
|
|
86
|
+
.filter(d => d.executionStatus === 'coding' &&
|
|
87
|
+
!teamState.mergedDeliveryIds.has(d.id))
|
|
88
|
+
.map(d => d.id);
|
|
89
|
+
// Report worktree_complete for worked deliveries only
|
|
90
|
+
for (const deliveryId of workedDeliveryIds) {
|
|
91
|
+
reportGitState(deliveryId, 'worktree_complete').catch(err => console.warn(`[strategy-executor] reportGitState worktree_complete failed for ${deliveryId}:`, err.message));
|
|
92
|
+
}
|
|
93
|
+
// ── Read-only audit safety net ──────────────────────────────────
|
|
94
|
+
// If this was a read-only session, revert any file modifications and
|
|
95
|
+
// block merging if the agent somehow committed despite the pre-commit hook.
|
|
96
|
+
if (teamState.readOnly) {
|
|
97
|
+
// Revert any uncommitted changes
|
|
98
|
+
const hasChanges = worktreeHasUncommittedChanges(worktreePath);
|
|
99
|
+
if (hasChanges) {
|
|
100
|
+
console.warn(`[strategy-executor] Read-only audit "${strategyName}" left uncommitted changes. Reverting.`);
|
|
101
|
+
runGitSync(['checkout', '.'], worktreePath);
|
|
102
|
+
runGitSync(['clean', '-fd'], worktreePath);
|
|
103
|
+
}
|
|
104
|
+
// Check if the agent somehow committed (bypassed hook)
|
|
105
|
+
if (branchHasUnmergedCommits(branchName, config.integrationBranch, config.repoPath)) {
|
|
106
|
+
console.error(`[strategy-executor] READ-ONLY VIOLATION: Audit "${strategyName}" has commits on ${branchName}. ` +
|
|
107
|
+
`These will NOT be merged. Manual review required.`);
|
|
108
|
+
exitReason = `Read-only audit violation: commits detected on ${branchName}. Merge skipped.`;
|
|
109
|
+
// Update session as failed due to read-only violation
|
|
110
|
+
try {
|
|
111
|
+
await withRetry(() => updateSession(sessionId, {
|
|
112
|
+
status: 'failed',
|
|
113
|
+
exit_reason: exitReason,
|
|
114
|
+
ended_at: new Date().toISOString(),
|
|
115
|
+
}), { maxAttempts: 3, baseDelayMs: 1000, label: 'session-update-readonly-violation' });
|
|
116
|
+
}
|
|
117
|
+
catch (err) {
|
|
118
|
+
console.warn(`[strategy-executor] Failed to update session after retries:`, err.message);
|
|
119
|
+
}
|
|
120
|
+
// Record heartbeat and clean up
|
|
121
|
+
recordSessionCompleted(0, 0);
|
|
122
|
+
const activeTeams = getActiveTeams();
|
|
123
|
+
teamState.phase = 'terminated';
|
|
124
|
+
activeTeams.delete(strategyId);
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
// Commit any uncommitted WIP changes left by the agent (crash, kill, timeout).
|
|
129
|
+
// Only needed when the agent didn't exit cleanly — a clean exit means the
|
|
130
|
+
// agent committed its own work.
|
|
131
|
+
if (!succeeded) {
|
|
132
|
+
try {
|
|
133
|
+
commitWipChanges(worktreePath, strategyName);
|
|
134
|
+
}
|
|
135
|
+
catch (err) {
|
|
136
|
+
console.warn(`[strategy-executor] WIP commit failed for "${strategyName}": ${err.message}`);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// Advance delivery statuses based on issue completion
|
|
140
|
+
if (succeeded) {
|
|
141
|
+
await advanceDeliveryStatuses(config, teamState, sessionId);
|
|
142
|
+
}
|
|
143
|
+
// Merge strategy branch to integration if team succeeded.
|
|
144
|
+
// For proactive terminations, this is a no-op merge since all deliveries
|
|
145
|
+
// were already merged mid-flight. The merge still runs for safety
|
|
146
|
+
// (handles any commits the team lead made after the last incremental merge).
|
|
147
|
+
// Pass workedDeliveryIds so git state is only reported for deliveries
|
|
148
|
+
// that were actually in coding status (not queued deliveries that never started).
|
|
149
|
+
let mergeSucceeded = false;
|
|
150
|
+
if (succeeded) {
|
|
151
|
+
const mergeResult = await mergeStrategyBranch(config, teamState, sessionId, branchName, workedDeliveryIds);
|
|
152
|
+
mergeSucceeded = mergeResult.mergeSucceeded;
|
|
153
|
+
if (mergeResult.exitReason) {
|
|
154
|
+
exitReason += ` ${mergeResult.exitReason}`;
|
|
155
|
+
}
|
|
156
|
+
// Escalate merge failure for worked deliveries only
|
|
157
|
+
if (!mergeSucceeded) {
|
|
158
|
+
for (const deliveryId of workedDeliveryIds) {
|
|
159
|
+
if (!teamState.mergedDeliveryIds.has(deliveryId)) {
|
|
160
|
+
escalateMergeConflict({
|
|
161
|
+
organizationId,
|
|
162
|
+
sessionId,
|
|
163
|
+
deliveryId,
|
|
164
|
+
deliveryName: strategyName,
|
|
165
|
+
branchName,
|
|
166
|
+
integrationBranch: config.integrationBranch,
|
|
167
|
+
mergeError: mergeResult.exitReason,
|
|
168
|
+
}).catch(err => console.warn(`[strategy-executor] escalateMergeConflict failed for ${deliveryId}:`, err.message));
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
// Worktree is strategy-owned — do NOT remove on team completion.
|
|
174
|
+
// It persists for the next team session or QA use.
|
|
175
|
+
// Removal only happens via coordinated teardown when strategy is deactivated.
|
|
176
|
+
// Compute git diff stats from all commits on this branch since integration
|
|
177
|
+
let diffStats = { linesAdded: 0, linesRemoved: 0 };
|
|
178
|
+
try {
|
|
179
|
+
diffStats = computeGitDiffStats(worktreePath, `${config.integrationBranch}..${branchName}`);
|
|
180
|
+
}
|
|
181
|
+
catch (err) {
|
|
182
|
+
console.debug(`[strategy-executor] Failed to compute git diff stats for "${strategyName}":`, err.message);
|
|
183
|
+
}
|
|
184
|
+
// Update session
|
|
185
|
+
try {
|
|
186
|
+
await withRetry(() => updateSession(sessionId, {
|
|
187
|
+
status: succeeded ? 'completed' : 'failed',
|
|
188
|
+
exit_reason: exitReason,
|
|
189
|
+
ended_at: new Date().toISOString(),
|
|
190
|
+
lines_added: diffStats.linesAdded,
|
|
191
|
+
lines_removed: diffStats.linesRemoved,
|
|
192
|
+
}), { maxAttempts: 3, baseDelayMs: 1000, label: 'session-update-completion' });
|
|
193
|
+
}
|
|
194
|
+
catch (err) {
|
|
195
|
+
console.warn(`[strategy-executor] Failed to update session after retries:`, err.message);
|
|
196
|
+
}
|
|
197
|
+
// Clear review flag so the UI knows the review is done
|
|
198
|
+
if (teamState.reviewMode) {
|
|
199
|
+
clearReviewRequest(strategyId).catch(err => console.warn(`[strategy-executor] clearReviewRequest failed for ${strategyId}:`, err.message));
|
|
200
|
+
// Advance remaining in_review deliveries to done.
|
|
201
|
+
// The review is over — deliveries the reviewer flagged are already in
|
|
202
|
+
// iterating. Anything still in in_review passed review with no issues.
|
|
203
|
+
await advanceCleanReviewedDeliveries(strategyId, strategyName);
|
|
204
|
+
// Auto-queue iterating deliveries that have open issues, but only when
|
|
205
|
+
// auto-review is enabled. Manual reviews leave deliveries in iterating
|
|
206
|
+
// for the human to decide when to re-queue.
|
|
207
|
+
if (teamState.pipelineConfig?.review?.enabled) {
|
|
208
|
+
await autoQueueIteratingDeliveries(strategyId, strategyName);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
// Record heartbeat
|
|
212
|
+
recordSessionCompleted(0, 0);
|
|
213
|
+
// Clean up team state
|
|
214
|
+
const activeTeams = getActiveTeams();
|
|
215
|
+
teamState.phase = 'terminated';
|
|
216
|
+
activeTeams.delete(strategyId);
|
|
217
|
+
// Trigger re-poll to pick up next work
|
|
218
|
+
if (succeeded) {
|
|
219
|
+
triggerCheck();
|
|
220
|
+
}
|
|
221
|
+
console.log(`[strategy-executor] Team for "${strategyName}" cleaned up (merge: ${mergeSucceeded ? 'yes' : 'no'})`);
|
|
222
|
+
}
|
|
223
|
+
const defaultDeps = {
|
|
224
|
+
getStrategyDeliveries,
|
|
225
|
+
getDeliveryIssues,
|
|
226
|
+
getDeliverySessionCount,
|
|
227
|
+
updateIssueStatus,
|
|
228
|
+
fetchEffectiveWorkflow,
|
|
229
|
+
updateDeliveryStatus,
|
|
230
|
+
advanceDeliveryStage,
|
|
231
|
+
};
|
|
232
|
+
/**
|
|
233
|
+
* Advance delivery statuses after team completion.
|
|
234
|
+
*
|
|
235
|
+
* Re-queries all deliveries for the strategy from the database rather
|
|
236
|
+
* than relying on the spawn-time snapshot in teamState.knownDeliveryIds.
|
|
237
|
+
* This ensures deliveries added mid-flight (after the team was spawned)
|
|
238
|
+
* are discovered and advanced, and that stale deliveryStageIds don't
|
|
239
|
+
* cause deliveries to be skipped.
|
|
240
|
+
*
|
|
241
|
+
* For each delivery in 'coding' status:
|
|
242
|
+
* - All issues Done (or no issues): advance via workflow (coding -> verify -> done)
|
|
243
|
+
* - Open issues remain: re-queue to 'queued' so the next team session picks it up
|
|
244
|
+
*/
|
|
245
|
+
export async function advanceDeliveryStatuses(config, teamState, sessionId, deps = defaultDeps) {
|
|
246
|
+
// Re-query deliveries fresh from the DB to discover mid-flight additions
|
|
247
|
+
let deliveries;
|
|
248
|
+
try {
|
|
249
|
+
deliveries = await deps.getStrategyDeliveries(teamState.strategyId);
|
|
250
|
+
}
|
|
251
|
+
catch (err) {
|
|
252
|
+
console.warn(`[strategy-executor] Failed to fetch deliveries for strategy ${teamState.strategyId}:`, err.message);
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
for (const delivery of deliveries) {
|
|
256
|
+
// Skip deliveries that were already merged mid-flight
|
|
257
|
+
if (teamState.mergedDeliveryIds.has(delivery.id)) {
|
|
258
|
+
continue;
|
|
259
|
+
}
|
|
260
|
+
// Only advance deliveries in 'coding' or 'queued' status.
|
|
261
|
+
// Queued deliveries can have all issues completed if the team worked on
|
|
262
|
+
// them before the status was advanced to coding (e.g., fast completions).
|
|
263
|
+
const ADVANCEABLE_STATUSES = new Set(['coding', 'queued']);
|
|
264
|
+
if (!ADVANCEABLE_STATUSES.has(delivery.executionStatus ?? '')) {
|
|
265
|
+
continue;
|
|
266
|
+
}
|
|
267
|
+
try {
|
|
268
|
+
const [issues, sessionCount, workflow] = await Promise.all([
|
|
269
|
+
deps.getDeliveryIssues(delivery.id),
|
|
270
|
+
deps.getDeliverySessionCount(delivery.id),
|
|
271
|
+
deps.fetchEffectiveWorkflow(delivery.id),
|
|
272
|
+
]);
|
|
273
|
+
// Context Groups are reference material, not actionable work — exclude from open count
|
|
274
|
+
const workIssues = issues.filter(i => i.issueType !== 'Context Group');
|
|
275
|
+
const contextGroups = issues.filter(i => i.issueType === 'Context Group');
|
|
276
|
+
const openCount = workIssues.filter(i => i.status !== 'Done').length;
|
|
277
|
+
const totalWork = workIssues.length;
|
|
278
|
+
// Use currentWorkflowStageId from the fresh query, falling back to
|
|
279
|
+
// the teamState cache for deliveries known at spawn time
|
|
280
|
+
const currentStageId = delivery.currentWorkflowStageId
|
|
281
|
+
?? teamState.deliveryStageIds.get(delivery.id)
|
|
282
|
+
?? null;
|
|
283
|
+
if (!currentStageId) {
|
|
284
|
+
console.warn(`[strategy-executor] Delivery ${delivery.id}: no workflow stage ID, skipping advance`);
|
|
285
|
+
continue;
|
|
286
|
+
}
|
|
287
|
+
// Re-queue deliveries with open work issues so the next team picks them up
|
|
288
|
+
if (totalWork > 0 && openCount > 0) {
|
|
289
|
+
// Already queued — leave it there
|
|
290
|
+
if (delivery.executionStatus === 'queued') {
|
|
291
|
+
continue;
|
|
292
|
+
}
|
|
293
|
+
const queuedStage = workflow.stages.find(s => s.name === 'queued');
|
|
294
|
+
if (queuedStage) {
|
|
295
|
+
console.log(`[strategy-executor] Delivery ${delivery.id}: ${openCount}/${totalWork} work issues still open, re-queuing`);
|
|
296
|
+
await deps.updateDeliveryStatus(delivery.id, 'queued', queuedStage.id);
|
|
297
|
+
teamState.deliveryStageIds.set(delivery.id, queuedStage.id);
|
|
298
|
+
}
|
|
299
|
+
else {
|
|
300
|
+
console.warn(`[strategy-executor] Delivery ${delivery.id}: ${openCount}/${totalWork} work issues still open, no queued stage in workflow — leaving in ${delivery.executionStatus}`);
|
|
301
|
+
}
|
|
302
|
+
continue;
|
|
303
|
+
}
|
|
304
|
+
// Auto-close Context Groups when all work issues are done
|
|
305
|
+
for (const cg of contextGroups) {
|
|
306
|
+
if (cg.status !== 'Done') {
|
|
307
|
+
try {
|
|
308
|
+
await deps.updateIssueStatus(cg.id, 'Done');
|
|
309
|
+
console.log(`[strategy-executor] Auto-closed Context Group "${cg.title}" (all work issues done)`);
|
|
310
|
+
}
|
|
311
|
+
catch (err) {
|
|
312
|
+
console.warn(`[strategy-executor] Failed to auto-close Context Group "${cg.title}":`, err.message);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
// If delivery is queued, step through coding first (workflow doesn't
|
|
317
|
+
// allow queued -> verify directly). Update the stage ID for the
|
|
318
|
+
// subsequent advance call.
|
|
319
|
+
let effectiveStageId = currentStageId;
|
|
320
|
+
if (delivery.executionStatus === 'queued') {
|
|
321
|
+
const codingStage = workflow.stages.find(s => s.name === 'coding');
|
|
322
|
+
if (codingStage) {
|
|
323
|
+
console.log(`[strategy-executor] Delivery ${delivery.id}: stepping queued -> coding before verify advance`);
|
|
324
|
+
await deps.updateDeliveryStatus(delivery.id, 'coding', codingStage.id);
|
|
325
|
+
effectiveStageId = codingStage.id;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
console.log(`[strategy-executor] Delivery ${delivery.id}: ${totalWork === 0 ? 'no issues' : `all ${totalWork} work issues done`}, advancing via workflow`);
|
|
329
|
+
const result = await deps.advanceDeliveryStage({
|
|
330
|
+
deliveryId: delivery.id,
|
|
331
|
+
deliveryName: delivery.name,
|
|
332
|
+
organizationId: teamState.organizationId,
|
|
333
|
+
workflow,
|
|
334
|
+
currentStageId: effectiveStageId,
|
|
335
|
+
exitCode: 0,
|
|
336
|
+
openIssueCount: openCount,
|
|
337
|
+
sessionCount,
|
|
338
|
+
policyFailureMode: config.policyFailureMode,
|
|
339
|
+
sessionId,
|
|
340
|
+
});
|
|
341
|
+
// Track the new stage ID for potential future advances
|
|
342
|
+
teamState.deliveryStageIds.set(delivery.id, result.deliveryStageId ?? null);
|
|
343
|
+
}
|
|
344
|
+
catch (err) {
|
|
345
|
+
console.warn(`[strategy-executor] Failed to check/advance delivery ${delivery.id}:`, err.message);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
// ── Advance clean in_review deliveries to done on review exit ────────
|
|
350
|
+
/**
|
|
351
|
+
* Move deliveries still in in_review to done after a review team exits.
|
|
352
|
+
*
|
|
353
|
+
* The review is over. Deliveries the reviewer flagged are already in iterating.
|
|
354
|
+
* Anything still in in_review passed review with no issues — advance to done.
|
|
355
|
+
*/
|
|
356
|
+
async function advanceCleanReviewedDeliveries(strategyId, strategyName) {
|
|
357
|
+
let deliveries;
|
|
358
|
+
try {
|
|
359
|
+
deliveries = await getStrategyDeliveries(strategyId);
|
|
360
|
+
}
|
|
361
|
+
catch (err) {
|
|
362
|
+
console.warn(`[completion] Failed to fetch deliveries for review advance (${strategyName}):`, err.message);
|
|
363
|
+
return;
|
|
364
|
+
}
|
|
365
|
+
const inReviewDeliveries = deliveries.filter(d => d.executionStatus === 'in_review');
|
|
366
|
+
if (inReviewDeliveries.length === 0)
|
|
367
|
+
return;
|
|
368
|
+
for (const delivery of inReviewDeliveries) {
|
|
369
|
+
try {
|
|
370
|
+
const workflow = await fetchEffectiveWorkflow(delivery.id);
|
|
371
|
+
const doneStage = workflow.stages.find(s => s.name === 'done');
|
|
372
|
+
if (!doneStage) {
|
|
373
|
+
console.warn(`[completion] No done stage in workflow for delivery "${delivery.name}" -- cannot advance from in_review`);
|
|
374
|
+
continue;
|
|
375
|
+
}
|
|
376
|
+
await updateDeliveryStatus(delivery.id, 'done', doneStage.id);
|
|
377
|
+
console.log(`[completion] Advanced delivery "${delivery.name}" from in_review to done (passed review)`);
|
|
378
|
+
}
|
|
379
|
+
catch (err) {
|
|
380
|
+
console.warn(`[completion] Failed to advance delivery "${delivery.name}" from in_review:`, err.message);
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
const defaultAutoQueueDeps = {
|
|
385
|
+
getStrategyDeliveries,
|
|
386
|
+
getDeliveryIssues,
|
|
387
|
+
fetchEffectiveWorkflow,
|
|
388
|
+
updateDeliveryStatus,
|
|
389
|
+
};
|
|
390
|
+
/**
|
|
391
|
+
* Auto-queue iterating deliveries that have open issues after a review
|
|
392
|
+
* team exits. This closes the review feedback loop: the review agent
|
|
393
|
+
* creates issues (which move deliveries to iterating), and this function
|
|
394
|
+
* re-queues them so the next work cycle picks up the remediation.
|
|
395
|
+
*
|
|
396
|
+
* Only deliveries in 'iterating' with open work issues are moved.
|
|
397
|
+
* Iterating deliveries with no open issues are left for human decision.
|
|
398
|
+
*/
|
|
399
|
+
export async function autoQueueIteratingDeliveries(strategyId, strategyName, deps = defaultAutoQueueDeps) {
|
|
400
|
+
let deliveries;
|
|
401
|
+
try {
|
|
402
|
+
deliveries = await deps.getStrategyDeliveries(strategyId);
|
|
403
|
+
}
|
|
404
|
+
catch (err) {
|
|
405
|
+
console.warn(`[completion] Failed to fetch deliveries for auto-queue (${strategyName}):`, err.message);
|
|
406
|
+
return;
|
|
407
|
+
}
|
|
408
|
+
const iteratingDeliveries = deliveries.filter(d => d.executionStatus === 'iterating');
|
|
409
|
+
if (iteratingDeliveries.length === 0)
|
|
410
|
+
return;
|
|
411
|
+
for (const delivery of iteratingDeliveries) {
|
|
412
|
+
try {
|
|
413
|
+
const issues = await deps.getDeliveryIssues(delivery.id);
|
|
414
|
+
const workIssues = issues.filter(i => i.issueType !== 'Context Group');
|
|
415
|
+
const openCount = workIssues.filter(i => i.status !== 'Done').length;
|
|
416
|
+
if (openCount === 0) {
|
|
417
|
+
console.log(`[completion] Delivery "${delivery.name}" is iterating with no open issues -- leaving for human decision`);
|
|
418
|
+
continue;
|
|
419
|
+
}
|
|
420
|
+
const workflow = await deps.fetchEffectiveWorkflow(delivery.id);
|
|
421
|
+
const queuedStage = workflow.stages.find(s => s.name === 'queued');
|
|
422
|
+
if (!queuedStage) {
|
|
423
|
+
console.warn(`[completion] No queued stage in workflow for delivery "${delivery.name}" -- cannot auto-queue`);
|
|
424
|
+
continue;
|
|
425
|
+
}
|
|
426
|
+
await deps.updateDeliveryStatus(delivery.id, 'queued', queuedStage.id);
|
|
427
|
+
console.log(`[completion] Auto-queued delivery "${delivery.name}" (${openCount} open issues after review)`);
|
|
428
|
+
}
|
|
429
|
+
catch (err) {
|
|
430
|
+
console.warn(`[completion] Failed to auto-queue delivery "${delivery.name}":`, err.message);
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
//# sourceMappingURL=strategy-completion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strategy-completion.js","sourceRoot":"","sources":["../src/strategy-completion.ts"],"names":[],"mappings":"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"}
|