@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,353 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Delivery lifecycle - reusable functions for guard evaluation,
|
|
3
|
+
* stage transitions, and merge operations.
|
|
4
|
+
*
|
|
5
|
+
* Extracted from completion-handler.ts so that both the legacy
|
|
6
|
+
* per-delivery completion handler and the strategy team lead
|
|
7
|
+
* can use the same logic.
|
|
8
|
+
*
|
|
9
|
+
* Key functions:
|
|
10
|
+
* - evaluateAndTransition(): evaluate guards and determine next stage
|
|
11
|
+
* - mergeDeliveryBranch(): merge a branch to integration
|
|
12
|
+
* - advanceDeliveryStage(): update delivery to its next workflow stage
|
|
13
|
+
*/
|
|
14
|
+
import { updateDeliveryStatus, updateDeliveryMergeCommitSha, createEscalation, createTransitionEvaluation } from './supabase.js';
|
|
15
|
+
import { mergeToIntegration } from './git.js';
|
|
16
|
+
import { getStageByName, determineTransition } from './workflow-engine.js';
|
|
17
|
+
import { evaluateGuardsAtTransition, executeTriggers, GuardEvaluationError } from './guard-engine.js';
|
|
18
|
+
import { withRetry, ESCALATION_REASONS } from '@telora/daemon-core';
|
|
19
|
+
// ── Guard evaluation (unified workflow system) ──────────────────────
|
|
20
|
+
/**
|
|
21
|
+
* Evaluate guards at a stage transition for a delivery.
|
|
22
|
+
*
|
|
23
|
+
* This is the core guard evaluation logic extracted from completion-handler.ts.
|
|
24
|
+
* Can be called by:
|
|
25
|
+
* - The per-delivery completion handler (legacy)
|
|
26
|
+
* - The strategy team lead (after detecting delivery issue completion)
|
|
27
|
+
*/
|
|
28
|
+
export async function evaluateGuardsForDeliveryTransition(params) {
|
|
29
|
+
const { deliveryId, organizationId, workflowTransition, exitCode, policyFailureMode, deliveryName, sessionId, } = params;
|
|
30
|
+
const baseOutcome = {
|
|
31
|
+
blocked: false,
|
|
32
|
+
shouldMerge: false,
|
|
33
|
+
shouldTriggerRepoll: false,
|
|
34
|
+
sessionStatus: 'completed',
|
|
35
|
+
exitReason: '',
|
|
36
|
+
};
|
|
37
|
+
if (!workflowTransition) {
|
|
38
|
+
return baseOutcome;
|
|
39
|
+
}
|
|
40
|
+
try {
|
|
41
|
+
const guardResult = await evaluateGuardsAtTransition(deliveryId, organizationId, workflowTransition.id, exitCode);
|
|
42
|
+
// Log warnings (soft enforcement failures)
|
|
43
|
+
for (const warning of guardResult.warnings) {
|
|
44
|
+
console.warn(`[guard] Soft warning on "${deliveryName}": ` +
|
|
45
|
+
`guard "${warning.guard_name}" conditions not met`);
|
|
46
|
+
}
|
|
47
|
+
if (!guardResult.should_proceed) {
|
|
48
|
+
// Hard guard blocked the transition
|
|
49
|
+
console.log(`[guard] Transition blocked for "${deliveryName}": ` +
|
|
50
|
+
`${guardResult.blocks.length} hard guard(s) failed`);
|
|
51
|
+
// Execute blocking triggers
|
|
52
|
+
const triggerResult = await executeTriggers(deliveryId, organizationId, workflowTransition.id, guardResult.triggers_to_execute);
|
|
53
|
+
let exitReason = `Guard blocked: ${guardResult.blocks.map(b => b.guard_name).join(', ')}.`;
|
|
54
|
+
if (triggerResult.spawnedSessionIds.length > 0) {
|
|
55
|
+
exitReason += ` Spawned ${triggerResult.spawnedSessionIds.length} guard agent(s).`;
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
blocked: true,
|
|
59
|
+
shouldMerge: false,
|
|
60
|
+
shouldTriggerRepoll: false,
|
|
61
|
+
sessionStatus: 'completed',
|
|
62
|
+
exitReason,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
// All guards passed or only soft warnings -- execute pass/enter triggers
|
|
66
|
+
if (guardResult.triggers_to_execute.length > 0) {
|
|
67
|
+
await executeTriggers(deliveryId, organizationId, workflowTransition.id, guardResult.triggers_to_execute);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
catch (err) {
|
|
71
|
+
const guardError = err instanceof GuardEvaluationError ? err : null;
|
|
72
|
+
const effectiveMode = resolveGuardFailureMode(policyFailureMode, guardError);
|
|
73
|
+
// Record evaluation error in audit trail
|
|
74
|
+
await recordGuardEvaluationError(err, guardError, deliveryId, organizationId, workflowTransition.id, effectiveMode);
|
|
75
|
+
if (effectiveMode === 'fail-closed') {
|
|
76
|
+
return await handleGuardFailClosed({
|
|
77
|
+
err: err,
|
|
78
|
+
guardError,
|
|
79
|
+
deliveryId,
|
|
80
|
+
deliveryName,
|
|
81
|
+
organizationId,
|
|
82
|
+
sessionId,
|
|
83
|
+
transitionId: workflowTransition.id,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
// Fail-open: log and proceed
|
|
87
|
+
console.error(`[guard] GUARD EVALUATION FAILED for "${deliveryName}": ` +
|
|
88
|
+
`${err.message}. Proceeding without guard checks (fail-open).`);
|
|
89
|
+
return {
|
|
90
|
+
...baseOutcome,
|
|
91
|
+
exitReason: `Warning: guard evaluation skipped due to error.`,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
return baseOutcome;
|
|
95
|
+
}
|
|
96
|
+
// ── Stage advancement ───────────────────────────────────────────────
|
|
97
|
+
/**
|
|
98
|
+
* Advance a delivery through its workflow stage.
|
|
99
|
+
*
|
|
100
|
+
* Given a delivery's current stage and workflow, determines the next stage,
|
|
101
|
+
* evaluates any guards on the transition, and updates the delivery status.
|
|
102
|
+
*
|
|
103
|
+
* Used by the strategy team lead when all issues in a delivery are completed.
|
|
104
|
+
*/
|
|
105
|
+
export async function advanceDeliveryStage(params) {
|
|
106
|
+
const { deliveryId, deliveryName, organizationId, workflow, currentStageId, exitCode, openIssueCount, sessionCount, policyFailureMode, sessionId, } = params;
|
|
107
|
+
// Determine transition via workflow engine
|
|
108
|
+
const transition = determineTransition({
|
|
109
|
+
workflow,
|
|
110
|
+
currentStageId,
|
|
111
|
+
exitCode,
|
|
112
|
+
openIssueCount,
|
|
113
|
+
attemptCount: sessionCount,
|
|
114
|
+
maxRetries: 5,
|
|
115
|
+
});
|
|
116
|
+
// Evaluate guards if there's a transition to a new stage
|
|
117
|
+
let guardOutcome = null;
|
|
118
|
+
if (transition.nextStage && transition.workflowTransition) {
|
|
119
|
+
guardOutcome = await evaluateGuardsForDeliveryTransition({
|
|
120
|
+
deliveryId,
|
|
121
|
+
organizationId,
|
|
122
|
+
workflowTransition: transition.workflowTransition,
|
|
123
|
+
exitCode,
|
|
124
|
+
policyFailureMode,
|
|
125
|
+
deliveryName,
|
|
126
|
+
sessionId,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
// Determine final delivery status
|
|
130
|
+
let deliveryStatus;
|
|
131
|
+
let deliveryStageId;
|
|
132
|
+
let exitReason = transition.exitReason;
|
|
133
|
+
const guardBlocked = guardOutcome?.blocked ?? false;
|
|
134
|
+
if (guardBlocked) {
|
|
135
|
+
deliveryStatus = 'paused';
|
|
136
|
+
deliveryStageId = currentStageId;
|
|
137
|
+
exitReason = guardOutcome.exitReason;
|
|
138
|
+
}
|
|
139
|
+
else if (transition.nextStage) {
|
|
140
|
+
deliveryStatus = transition.nextStage.name;
|
|
141
|
+
deliveryStageId = transition.nextStage.id;
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
// Staying on current stage means re-queuing
|
|
145
|
+
const queuedStage = getStageByName(workflow, 'queued');
|
|
146
|
+
deliveryStatus = queuedStage?.name ?? 'queued';
|
|
147
|
+
deliveryStageId = queuedStage?.id;
|
|
148
|
+
}
|
|
149
|
+
// Update delivery status
|
|
150
|
+
try {
|
|
151
|
+
await updateDeliveryStatus(deliveryId, deliveryStatus, deliveryStageId);
|
|
152
|
+
console.log(`Delivery "${deliveryName}" set to ${deliveryStatus}`);
|
|
153
|
+
}
|
|
154
|
+
catch (err) {
|
|
155
|
+
console.warn(`Failed to set delivery "${deliveryName}" to ${deliveryStatus}:`, err.message);
|
|
156
|
+
}
|
|
157
|
+
return {
|
|
158
|
+
advanced: transition.nextStage !== null && !guardBlocked,
|
|
159
|
+
deliveryStatus,
|
|
160
|
+
deliveryStageId,
|
|
161
|
+
guardBlocked,
|
|
162
|
+
shouldMerge: guardBlocked ? false : transition.shouldMerge,
|
|
163
|
+
exitReason,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
// ── Merge operations ────────────────────────────────────────────────
|
|
167
|
+
/**
|
|
168
|
+
* Merge a delivery's branch to the integration branch.
|
|
169
|
+
*
|
|
170
|
+
* Handles:
|
|
171
|
+
* - Merge to integration
|
|
172
|
+
* - Conflict escalation
|
|
173
|
+
* - Git state reporting
|
|
174
|
+
*/
|
|
175
|
+
export async function mergeDeliveryBranch(params) {
|
|
176
|
+
const { config, branchName, deliveryId, deliveryName, organizationId, sessionId, workflow } = params;
|
|
177
|
+
console.log(`Attempting to merge ${branchName} into ${config.integrationBranch}...`);
|
|
178
|
+
const onRollbackFailure = (details) => {
|
|
179
|
+
withRetry(() => createEscalation({
|
|
180
|
+
organizationId,
|
|
181
|
+
sessionId: sessionId ?? '',
|
|
182
|
+
issueId: null,
|
|
183
|
+
reasonType: ESCALATION_REASONS.ERROR_ENCOUNTERED,
|
|
184
|
+
description: `CRITICAL: Push failed AND rollback failed. Integration branch is corrupt.\n\n` +
|
|
185
|
+
`**Delivery:** ${deliveryName}\n` +
|
|
186
|
+
`**Branch:** ${details.branch}\n` +
|
|
187
|
+
`**Attempted rollback to:** ${details.attemptedRollbackRef}\n` +
|
|
188
|
+
`**Current HEAD:** ${details.currentHead}\n\n` +
|
|
189
|
+
`All merge operations are blocked until manual recovery.`,
|
|
190
|
+
whatWasTried: `Push to origin failed for ${details.branch}. Attempted rollback to ${details.attemptedRollbackRef} also failed.`,
|
|
191
|
+
helpNeeded: `Manually reset the branch: git reset --hard origin/${details.branch}. Then restart the daemon.`,
|
|
192
|
+
}), { maxAttempts: 3, label: 'escalation-rollback-failure' }).catch((escErr) => {
|
|
193
|
+
console.error(`CRITICAL: Failed to create escalation for rollback failure: ${escErr.message}`);
|
|
194
|
+
});
|
|
195
|
+
};
|
|
196
|
+
const mergeResult = await mergeToIntegration({ config, branchName, deliveryName, deliveryId, onRollbackFailure });
|
|
197
|
+
if (mergeResult.success) {
|
|
198
|
+
const exitReason = `Merged to ${config.integrationBranch}.`;
|
|
199
|
+
console.log(`Successfully merged ${branchName} to ${config.integrationBranch}`);
|
|
200
|
+
// Note: merged_to_integration git state is reported by the caller
|
|
201
|
+
// (mergeStrategyBranch) for all deliveries in the strategy to avoid duplicates.
|
|
202
|
+
// Persist the merge commit SHA on the delivery record (fire-and-forget)
|
|
203
|
+
if (mergeResult.commitSha) {
|
|
204
|
+
updateDeliveryMergeCommitSha(deliveryId, mergeResult.commitSha).catch(err => console.warn(`[mergeCommitSha] Failed to record merge commit SHA:`, err.message));
|
|
205
|
+
}
|
|
206
|
+
return { mergeSucceeded: true, exitReason, commitSha: mergeResult.commitSha };
|
|
207
|
+
}
|
|
208
|
+
// Handle merge conflicts
|
|
209
|
+
const conflictedFiles = mergeResult.conflictedFiles;
|
|
210
|
+
if (conflictedFiles && conflictedFiles.length > 0) {
|
|
211
|
+
const exitReason = `Agent completed but merge had conflicts in ${conflictedFiles.length} file(s). Escalated for resolution.`;
|
|
212
|
+
console.warn(`Merge conflict: ${conflictedFiles.join(', ')}`);
|
|
213
|
+
try {
|
|
214
|
+
await withRetry(() => createEscalation({
|
|
215
|
+
organizationId,
|
|
216
|
+
sessionId: sessionId ?? '',
|
|
217
|
+
issueId: null,
|
|
218
|
+
reasonType: ESCALATION_REASONS.ERROR_ENCOUNTERED,
|
|
219
|
+
description: `Merge conflict merging agent branch into integration.\n\n` +
|
|
220
|
+
`**Delivery:** ${deliveryName}\n` +
|
|
221
|
+
`**Source branch:** ${mergeResult.sourceBranch}\n` +
|
|
222
|
+
`**Target branch:** ${mergeResult.targetBranch}\n` +
|
|
223
|
+
`**Conflicted files:**\n${conflictedFiles.map(f => `- ${f}`).join('\n')}`,
|
|
224
|
+
whatWasTried: `Attempted automatic merge of ${branchName} into ${config.integrationBranch} after agent completed successfully.`,
|
|
225
|
+
helpNeeded: `Resolve the merge conflicts between ${mergeResult.sourceBranch} and ${mergeResult.targetBranch}, then re-queue the delivery.`,
|
|
226
|
+
}), { maxAttempts: 3, label: 'escalation-merge-conflict' });
|
|
227
|
+
console.log(`Created escalation for merge conflict`);
|
|
228
|
+
}
|
|
229
|
+
catch (escErr) {
|
|
230
|
+
console.error(`CRITICAL: Failed to create escalation for merge conflict after retries: ${escErr.message}. Delivery: "${deliveryName}"`);
|
|
231
|
+
}
|
|
232
|
+
const queuedStage = getStageByName(workflow, 'queued');
|
|
233
|
+
return {
|
|
234
|
+
mergeSucceeded: false,
|
|
235
|
+
exitReason,
|
|
236
|
+
overrideDeliveryStatus: queuedStage?.name ?? 'queued',
|
|
237
|
+
overrideDeliveryStageId: queuedStage?.id,
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
// General merge failure
|
|
241
|
+
const exitReason = `Merge failed: ${mergeResult.error}. Branch ${branchName} preserved for manual merge.`;
|
|
242
|
+
console.warn(`Merge to integration failed: ${mergeResult.error}`);
|
|
243
|
+
return { mergeSucceeded: false, exitReason };
|
|
244
|
+
}
|
|
245
|
+
// ── Guard failure helpers ───────────────────────────────────────────
|
|
246
|
+
/**
|
|
247
|
+
* Resolve the effective failure mode for a guard evaluation error.
|
|
248
|
+
*/
|
|
249
|
+
function resolveGuardFailureMode(daemonMode, guardError) {
|
|
250
|
+
if (guardError?.hasHardEnforcementGuards) {
|
|
251
|
+
return 'fail-closed';
|
|
252
|
+
}
|
|
253
|
+
if (guardError?.fetchedGuards !== null && guardError?.fetchedGuards !== undefined) {
|
|
254
|
+
return 'fail-open';
|
|
255
|
+
}
|
|
256
|
+
return daemonMode;
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Handle fail-closed for guard evaluation errors.
|
|
260
|
+
*/
|
|
261
|
+
async function handleGuardFailClosed(params) {
|
|
262
|
+
const { err, guardError, deliveryId, deliveryName, organizationId, sessionId, transitionId } = params;
|
|
263
|
+
const guardNames = guardError?.guardNames ?? [];
|
|
264
|
+
const guardInfo = guardNames.length > 0
|
|
265
|
+
? ` Guards: ${guardNames.join(', ')}.`
|
|
266
|
+
: '';
|
|
267
|
+
console.error(`[guard] GUARD EVALUATION FAILED for "${deliveryName}": ` +
|
|
268
|
+
`${err.message}. Transition blocked per fail-closed configuration.${guardInfo}`);
|
|
269
|
+
const exitReason = `Guard evaluation failed, transition blocked per fail-closed configuration.${guardInfo}`;
|
|
270
|
+
try {
|
|
271
|
+
await updateDeliveryStatus(deliveryId, 'paused');
|
|
272
|
+
}
|
|
273
|
+
catch (statusErr) {
|
|
274
|
+
console.error(`[guard] Failed to pause delivery "${deliveryName}":`, statusErr.message);
|
|
275
|
+
}
|
|
276
|
+
try {
|
|
277
|
+
await withRetry(() => createEscalation({
|
|
278
|
+
organizationId,
|
|
279
|
+
sessionId: sessionId ?? '',
|
|
280
|
+
issueId: null,
|
|
281
|
+
reasonType: ESCALATION_REASONS.ERROR_ENCOUNTERED,
|
|
282
|
+
description: `Guard evaluation failed (fail-closed). Transition blocked.\n\n` +
|
|
283
|
+
`**Delivery:** ${deliveryName}\n` +
|
|
284
|
+
`**Transition:** ${transitionId}\n` +
|
|
285
|
+
`**Error:** ${err.message}\n` +
|
|
286
|
+
(guardNames.length > 0 ? `**Affected guards:** ${guardNames.join(', ')}\n` : '') +
|
|
287
|
+
`\nThe delivery has been paused. Review the error and re-queue when resolved.`,
|
|
288
|
+
whatWasTried: `Guard evaluation at stage transition failed after retries. ` +
|
|
289
|
+
`Fail-closed mode is active${guardError?.hasHardEnforcementGuards ? ' (hard enforcement guards detected)' : ''}.`,
|
|
290
|
+
helpNeeded: `Investigate the guard evaluation failure, resolve the underlying issue, then re-queue the delivery.`,
|
|
291
|
+
}), { maxAttempts: 3, label: 'escalation-guard-fail-closed' });
|
|
292
|
+
console.log(`[guard] Created escalation for guard evaluation failure (fail-closed)`);
|
|
293
|
+
}
|
|
294
|
+
catch (escErr) {
|
|
295
|
+
console.error(`CRITICAL: Failed to create escalation for guard fail-closed after retries: ${escErr.message}. ` +
|
|
296
|
+
`Delivery: "${deliveryName}"`);
|
|
297
|
+
}
|
|
298
|
+
return {
|
|
299
|
+
blocked: true,
|
|
300
|
+
shouldMerge: false,
|
|
301
|
+
shouldTriggerRepoll: false,
|
|
302
|
+
sessionStatus: 'completed',
|
|
303
|
+
exitReason,
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Record guard evaluation errors in the audit trail (best-effort).
|
|
308
|
+
*/
|
|
309
|
+
async function recordGuardEvaluationError(err, guardError, deliveryId, organizationId, transitionId, effectiveMode) {
|
|
310
|
+
const errorDetails = {
|
|
311
|
+
error: err.message,
|
|
312
|
+
failure_mode: effectiveMode,
|
|
313
|
+
};
|
|
314
|
+
if (guardError?.fetchedGuards && guardError.fetchedGuards.length > 0) {
|
|
315
|
+
for (const guard of guardError.fetchedGuards) {
|
|
316
|
+
try {
|
|
317
|
+
await createTransitionEvaluation({
|
|
318
|
+
organization_id: organizationId,
|
|
319
|
+
entity_type: 'delivery',
|
|
320
|
+
entity_id: deliveryId,
|
|
321
|
+
transition_id: transitionId,
|
|
322
|
+
guard_id: guard.id,
|
|
323
|
+
result: 'error',
|
|
324
|
+
blocked: effectiveMode === 'fail-closed',
|
|
325
|
+
enforcement_level: guard.enforcement,
|
|
326
|
+
evaluation_details: errorDetails,
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
catch (auditErr) {
|
|
330
|
+
console.warn(`[guard] Failed to record evaluation error for "${guard.name}":`, auditErr.message);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
else {
|
|
335
|
+
try {
|
|
336
|
+
await createTransitionEvaluation({
|
|
337
|
+
organization_id: organizationId,
|
|
338
|
+
entity_type: 'delivery',
|
|
339
|
+
entity_id: deliveryId,
|
|
340
|
+
transition_id: transitionId,
|
|
341
|
+
guard_id: null,
|
|
342
|
+
result: 'error',
|
|
343
|
+
blocked: effectiveMode === 'fail-closed',
|
|
344
|
+
enforcement_level: null,
|
|
345
|
+
evaluation_details: errorDetails,
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
catch (auditErr) {
|
|
349
|
+
console.warn(`[guard] Failed to record evaluation error in audit trail:`, auditErr.message);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
//# sourceMappingURL=delivery-lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delivery-lifecycle.js","sourceRoot":"","sources":["../src/delivery-lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Delivery branch merge operations.
|
|
3
|
+
*
|
|
4
|
+
* Handles merging a delivery's branch to the integration branch,
|
|
5
|
+
* conflict escalation, and git state reporting.
|
|
6
|
+
*/
|
|
7
|
+
import type { MergeOutcome, DeliveryBranchMergeParams } from './delivery-lifecycle.js';
|
|
8
|
+
/**
|
|
9
|
+
* Merge a delivery's branch to the integration branch.
|
|
10
|
+
*
|
|
11
|
+
* Handles:
|
|
12
|
+
* - Merge to integration
|
|
13
|
+
* - Conflict escalation
|
|
14
|
+
* - Git state reporting
|
|
15
|
+
*/
|
|
16
|
+
export declare function mergeDeliveryBranch(params: DeliveryBranchMergeParams): Promise<MergeOutcome>;
|
|
17
|
+
//# sourceMappingURL=delivery-merge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delivery-merge.d.ts","sourceRoot":"","sources":["../src/delivery-merge.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEvF;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,yBAAyB,GAChC,OAAO,CAAC,YAAY,CAAC,CAqFvB"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Delivery branch merge operations.
|
|
3
|
+
*
|
|
4
|
+
* Handles merging a delivery's branch to the integration branch,
|
|
5
|
+
* conflict escalation, and git state reporting.
|
|
6
|
+
*/
|
|
7
|
+
import { updateDeliveryMergeCommitSha, createEscalation } from './supabase.js';
|
|
8
|
+
import { mergeToIntegration } from './git.js';
|
|
9
|
+
import { getStageByName } from './workflow-engine.js';
|
|
10
|
+
import { withRetry, ESCALATION_REASONS } from '@telora/daemon-core';
|
|
11
|
+
/**
|
|
12
|
+
* Merge a delivery's branch to the integration branch.
|
|
13
|
+
*
|
|
14
|
+
* Handles:
|
|
15
|
+
* - Merge to integration
|
|
16
|
+
* - Conflict escalation
|
|
17
|
+
* - Git state reporting
|
|
18
|
+
*/
|
|
19
|
+
export async function mergeDeliveryBranch(params) {
|
|
20
|
+
const { config, branchName, deliveryId, deliveryName, organizationId, sessionId, workflow } = params;
|
|
21
|
+
console.log(`Attempting to merge ${branchName} into ${config.integrationBranch}...`);
|
|
22
|
+
const onRollbackFailure = (details) => {
|
|
23
|
+
withRetry(() => createEscalation({
|
|
24
|
+
organizationId,
|
|
25
|
+
sessionId: sessionId ?? '',
|
|
26
|
+
issueId: null,
|
|
27
|
+
reasonType: ESCALATION_REASONS.ERROR_ENCOUNTERED,
|
|
28
|
+
description: `CRITICAL: Push failed AND rollback failed. Integration branch is corrupt.\n\n` +
|
|
29
|
+
`**Delivery:** ${deliveryName}\n` +
|
|
30
|
+
`**Branch:** ${details.branch}\n` +
|
|
31
|
+
`**Attempted rollback to:** ${details.attemptedRollbackRef}\n` +
|
|
32
|
+
`**Current HEAD:** ${details.currentHead}\n\n` +
|
|
33
|
+
`All merge operations are blocked until manual recovery.`,
|
|
34
|
+
whatWasTried: `Push to origin failed for ${details.branch}. Attempted rollback to ${details.attemptedRollbackRef} also failed.`,
|
|
35
|
+
helpNeeded: `Manually reset the branch: git reset --hard origin/${details.branch}. Then restart the daemon.`,
|
|
36
|
+
}), { maxAttempts: 3, label: 'escalation-rollback-failure' }).catch((escErr) => {
|
|
37
|
+
console.error(`CRITICAL: Failed to create escalation for rollback failure: ${escErr.message}`);
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
const mergeResult = await mergeToIntegration({ config, branchName, deliveryName, deliveryId, onRollbackFailure });
|
|
41
|
+
if (mergeResult.success) {
|
|
42
|
+
const exitReason = `Merged to ${config.integrationBranch}.`;
|
|
43
|
+
console.log(`Successfully merged ${branchName} to ${config.integrationBranch}`);
|
|
44
|
+
// Note: merged_to_integration git state is reported by the caller
|
|
45
|
+
// (mergeStrategyBranch) for all deliveries in the strategy to avoid duplicates.
|
|
46
|
+
// Persist the merge commit SHA on the delivery record (fire-and-forget)
|
|
47
|
+
if (mergeResult.commitSha) {
|
|
48
|
+
updateDeliveryMergeCommitSha(deliveryId, mergeResult.commitSha).catch(err => console.warn(`[mergeCommitSha] Failed to record merge commit SHA:`, err.message));
|
|
49
|
+
}
|
|
50
|
+
return { mergeSucceeded: true, exitReason, commitSha: mergeResult.commitSha };
|
|
51
|
+
}
|
|
52
|
+
// Handle merge conflicts
|
|
53
|
+
const conflictedFiles = mergeResult.conflictedFiles;
|
|
54
|
+
if (conflictedFiles && conflictedFiles.length > 0) {
|
|
55
|
+
const exitReason = `Agent completed but merge had conflicts in ${conflictedFiles.length} file(s). Escalated for resolution.`;
|
|
56
|
+
console.warn(`Merge conflict: ${conflictedFiles.join(', ')}`);
|
|
57
|
+
try {
|
|
58
|
+
await withRetry(() => createEscalation({
|
|
59
|
+
organizationId,
|
|
60
|
+
sessionId: sessionId ?? '',
|
|
61
|
+
issueId: null,
|
|
62
|
+
reasonType: ESCALATION_REASONS.ERROR_ENCOUNTERED,
|
|
63
|
+
description: `Merge conflict merging agent branch into integration.\n\n` +
|
|
64
|
+
`**Delivery:** ${deliveryName}\n` +
|
|
65
|
+
`**Source branch:** ${mergeResult.sourceBranch}\n` +
|
|
66
|
+
`**Target branch:** ${mergeResult.targetBranch}\n` +
|
|
67
|
+
`**Conflicted files:**\n${conflictedFiles.map(f => `- ${f}`).join('\n')}`,
|
|
68
|
+
whatWasTried: `Attempted automatic merge of ${branchName} into ${config.integrationBranch} after agent completed successfully.`,
|
|
69
|
+
helpNeeded: `Resolve the merge conflicts between ${mergeResult.sourceBranch} and ${mergeResult.targetBranch}, then re-queue the delivery.`,
|
|
70
|
+
}), { maxAttempts: 3, label: 'escalation-merge-conflict' });
|
|
71
|
+
console.log(`Created escalation for merge conflict`);
|
|
72
|
+
}
|
|
73
|
+
catch (escErr) {
|
|
74
|
+
console.error(`CRITICAL: Failed to create escalation for merge conflict after retries: ${escErr.message}. Delivery: "${deliveryName}"`);
|
|
75
|
+
}
|
|
76
|
+
const queuedStage = getStageByName(workflow, 'queued');
|
|
77
|
+
return {
|
|
78
|
+
mergeSucceeded: false,
|
|
79
|
+
exitReason,
|
|
80
|
+
overrideDeliveryStatus: queuedStage?.name ?? 'queued',
|
|
81
|
+
overrideDeliveryStageId: queuedStage?.id,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
// General merge failure
|
|
85
|
+
const exitReason = `Merge failed: ${mergeResult.error}. Branch ${branchName} preserved for manual merge.`;
|
|
86
|
+
console.warn(`Merge to integration failed: ${mergeResult.error}`);
|
|
87
|
+
return { mergeSucceeded: false, exitReason };
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=delivery-merge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delivery-merge.js","sourceRoot":"","sources":["../src/delivery-merge.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,4BAA4B,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAGpE;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAiC;IAEjC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IACrG,OAAO,CAAC,GAAG,CAAC,uBAAuB,UAAU,SAAS,MAAM,CAAC,iBAAiB,KAAK,CAAC,CAAC;IAErF,MAAM,iBAAiB,GAAG,CAAC,OAA8E,EAAE,EAAE;QAC3G,SAAS,CACP,GAAG,EAAE,CAAC,gBAAgB,CAAC;YACrB,cAAc;YACd,SAAS,EAAE,SAAS,IAAI,EAAE;YAC1B,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,kBAAkB,CAAC,iBAAiB;YAChD,WAAW,EAAE,+EAA+E;gBAC1F,iBAAiB,YAAY,IAAI;gBACjC,eAAe,OAAO,CAAC,MAAM,IAAI;gBACjC,8BAA8B,OAAO,CAAC,oBAAoB,IAAI;gBAC9D,qBAAqB,OAAO,CAAC,WAAW,MAAM;gBAC9C,yDAAyD;YAC3D,YAAY,EAAE,6BAA6B,OAAO,CAAC,MAAM,2BAA2B,OAAO,CAAC,oBAAoB,eAAe;YAC/H,UAAU,EAAE,sDAAsD,OAAO,CAAC,MAAM,4BAA4B;SAC7G,CAAC,EACF,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,6BAA6B,EAAE,CACzD,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE;YACjB,OAAO,CAAC,KAAK,CAAC,+DAAgE,MAAgB,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5G,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,WAAW,GAAgB,MAAM,kBAAkB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAE/H,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;QACxB,MAAM,UAAU,GAAG,aAAa,MAAM,CAAC,iBAAiB,GAAG,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,uBAAuB,UAAU,OAAO,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAChF,kEAAkE;QAClE,gFAAgF;QAEhF,wEAAwE;QACxE,IAAI,WAAW,CAAC,SAAS,EAAE,CAAC;YAC1B,4BAA4B,CAAC,UAAU,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAC1E,OAAO,CAAC,IAAI,CAAC,qDAAqD,EAAG,GAAa,CAAC,OAAO,CAAC,CAC5F,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC;IAChF,CAAC;IAED,yBAAyB;IACzB,MAAM,eAAe,GAAG,WAAW,CAAC,eAAe,CAAC;IACpD,IAAI,eAAe,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,MAAM,UAAU,GAAG,8CAA8C,eAAe,CAAC,MAAM,qCAAqC,CAAC;QAC7H,OAAO,CAAC,IAAI,CAAC,mBAAmB,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE9D,IAAI,CAAC;YACH,MAAM,SAAS,CACb,GAAG,EAAE,CAAC,gBAAgB,CAAC;gBACrB,cAAc;gBACd,SAAS,EAAE,SAAS,IAAI,EAAE;gBAC1B,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,kBAAkB,CAAC,iBAAiB;gBAChD,WAAW,EAAE,2DAA2D;oBACtE,iBAAiB,YAAY,IAAI;oBACjC,sBAAsB,WAAW,CAAC,YAAY,IAAI;oBAClD,sBAAsB,WAAW,CAAC,YAAY,IAAI;oBAClD,0BAA0B,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC3E,YAAY,EAAE,gCAAgC,UAAU,SAAS,MAAM,CAAC,iBAAiB,sCAAsC;gBAC/H,UAAU,EAAE,uCAAuC,WAAW,CAAC,YAAY,QAAQ,WAAW,CAAC,YAAY,+BAA+B;aAC3I,CAAC,EACF,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAE,CACvD,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,2EAA4E,MAAgB,CAAC,OAAO,gBAAgB,YAAY,GAAG,CAAC,CAAC;QACrJ,CAAC;QAED,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACvD,OAAO;YACL,cAAc,EAAE,KAAK;YACrB,UAAU;YACV,sBAAsB,EAAE,WAAW,EAAE,IAAI,IAAI,QAAQ;YACrD,uBAAuB,EAAE,WAAW,EAAE,EAAE;SACzC,CAAC;IACJ,CAAC;IAED,wBAAwB;IACxB,MAAM,UAAU,GAAG,iBAAiB,WAAW,CAAC,KAAK,YAAY,UAAU,8BAA8B,CAAC;IAC1G,OAAO,CAAC,IAAI,CAAC,gCAAgC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;IAClE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dependency resolution for the task DAG.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from task-dag-builder.ts. Contains functions that analyze
|
|
5
|
+
* and resolve task dependencies, including cross-delivery dependencies,
|
|
6
|
+
* CG-level dependencies, and file overlap detection.
|
|
7
|
+
*
|
|
8
|
+
* Pure functions only (no side effects, no API calls).
|
|
9
|
+
*
|
|
10
|
+
* Dependency rules:
|
|
11
|
+
* 1. Delivery ordering: issues in delivery N are blocked by issues in delivery N-1
|
|
12
|
+
* (respects priorityRank ordering)
|
|
13
|
+
* 2. Within a delivery: issues under the same Context Group can run in parallel
|
|
14
|
+
* unless they share relevant files
|
|
15
|
+
* 3. File overlap detection: if two issues from different deliveries share files,
|
|
16
|
+
* the lower-priority delivery's issue is blocked by the higher-priority one
|
|
17
|
+
* 4. Context Groups themselves can run in parallel unless they share relevant files
|
|
18
|
+
*/
|
|
19
|
+
import type { TaskNode, StrategyDeliveryInfo, StrategyIssueInfo } from './types.js';
|
|
20
|
+
/**
|
|
21
|
+
* Parse relevant files from a newline-delimited string into a set of normalized paths.
|
|
22
|
+
* Supports glob patterns -- for overlap detection, we treat the base path as the key.
|
|
23
|
+
*/
|
|
24
|
+
export declare function parseRelevantFiles(relevantFiles: string | null): Set<string>;
|
|
25
|
+
/**
|
|
26
|
+
* Check if two sets of file paths have any overlap.
|
|
27
|
+
* An overlap means the two issues touch the same files and should not
|
|
28
|
+
* be worked on in parallel.
|
|
29
|
+
*/
|
|
30
|
+
export declare function hasFileOverlap(filesA: Set<string>, filesB: Set<string>): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Add cross-delivery dependencies.
|
|
33
|
+
*
|
|
34
|
+
* For each delivery after the first, its issues are blocked by the
|
|
35
|
+
* issues in the immediately preceding delivery. This ensures deliveries
|
|
36
|
+
* execute in priority order while allowing parallelism within a delivery.
|
|
37
|
+
*
|
|
38
|
+
* We also check for file overlap across non-adjacent deliveries.
|
|
39
|
+
*/
|
|
40
|
+
export declare function addCrossDeliveryDependencies(nodes: Map<string, TaskNode>, sortedDeliveries: StrategyDeliveryInfo[], issuesByDelivery: Map<string, StrategyIssueInfo[]>, _issueDeliveryRank: Map<string, number>): void;
|
|
41
|
+
/**
|
|
42
|
+
* Add CG-level dependency enforcement within each delivery.
|
|
43
|
+
*
|
|
44
|
+
* For each Context Group that has a non-null `dependsOn` array,
|
|
45
|
+
* all child issues (Tasks/Bugs) under this CG are blocked by
|
|
46
|
+
* ALL child issues under each dependency CG. This creates a
|
|
47
|
+
* CG-level DAG: dependent CGs' issues can't start until
|
|
48
|
+
* dependency CGs' issues are all complete.
|
|
49
|
+
*/
|
|
50
|
+
export declare function addCGDependencies(nodes: Map<string, TaskNode>, sortedDeliveries: StrategyDeliveryInfo[], issuesByDelivery: Map<string, StrategyIssueInfo[]>, _contextGroups: Map<string, StrategyIssueInfo>): void;
|
|
51
|
+
/**
|
|
52
|
+
* Compute CG execution waves for a delivery using topological sort.
|
|
53
|
+
* Wave 0 = CGs with no dependencies (parallelizable)
|
|
54
|
+
* Wave N = CGs whose dependencies are all in waves < N
|
|
55
|
+
* Returns Map<cgId, waveNumber>
|
|
56
|
+
*
|
|
57
|
+
* @throws Error if a cycle is detected in the CG dependency graph
|
|
58
|
+
*/
|
|
59
|
+
export declare function getCGExecutionWaves(issues: StrategyIssueInfo[], deliveryId: string): Map<string, number>;
|
|
60
|
+
/**
|
|
61
|
+
* Add file overlap dependencies within the same delivery.
|
|
62
|
+
*
|
|
63
|
+
* Within a delivery, issues that share relevant files should run sequentially.
|
|
64
|
+
* Issues under the same context group with no file overlap can run in parallel.
|
|
65
|
+
*/
|
|
66
|
+
export declare function addFileOverlapDependencies(nodes: Map<string, TaskNode>, sortedDeliveries: StrategyDeliveryInfo[], issuesByDelivery: Map<string, StrategyIssueInfo[]>, contextGroups: Map<string, StrategyIssueInfo>): void;
|
|
67
|
+
/**
|
|
68
|
+
* Add CG-level dependency enforcement for a single delivery's issues.
|
|
69
|
+
* Used by addIssuesToDAG for dynamically added deliveries.
|
|
70
|
+
*/
|
|
71
|
+
export declare function addCGDependenciesForDelivery(nodes: Map<string, TaskNode>, delivery: StrategyDeliveryInfo, issues: StrategyIssueInfo[], _contextGroups: Map<string, StrategyIssueInfo>): void;
|
|
72
|
+
/**
|
|
73
|
+
* Add file-overlap dependencies within a single delivery's issues.
|
|
74
|
+
* Used by addIssuesToDAG for dynamically added deliveries.
|
|
75
|
+
*/
|
|
76
|
+
export declare function addFileOverlapForDelivery(nodes: Map<string, TaskNode>, issues: StrategyIssueInfo[], contextGroups: Map<string, StrategyIssueInfo>): void;
|
|
77
|
+
//# sourceMappingURL=dependency-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-resolver.d.ts","sourceRoot":"","sources":["../src/dependency-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EACV,QAAQ,EACR,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAIpB;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAmB5E;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAYhF;AAID;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EAC5B,gBAAgB,EAAE,oBAAoB,EAAE,EACxC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,EAClD,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACtC,IAAI,CA4BN;AAID;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EAC5B,gBAAgB,EAAE,oBAAoB,EAAE,EACxC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,EAClD,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAC7C,IAAI,CAyCN;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,iBAAiB,EAAE,EAC3B,UAAU,EAAE,MAAM,GACjB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAyErB;AAID;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EAC5B,gBAAgB,EAAE,oBAAoB,EAAE,EACxC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,EAClD,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAC5C,IAAI,CAmCN;AAID;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EAC5B,QAAQ,EAAE,oBAAoB,EAC9B,MAAM,EAAE,iBAAiB,EAAE,EAC3B,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAC7C,IAAI,CAqCN;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EAC5B,MAAM,EAAE,iBAAiB,EAAE,EAC3B,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAC5C,IAAI,CAgCN"}
|