smol-symphony 0.2.0 → 0.3.1
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/AGENTS.md +41 -22
- package/DESIGN.md +494 -273
- package/README.md +109 -57
- package/SPEC.md +33 -24
- package/WORKFLOW.minimal.yaml +34 -0
- package/{WORKFLOW.template.md → WORKFLOW.template.yaml} +409 -256
- package/WORKFLOW.yaml +487 -0
- package/assets/skills/symphony-issues/SKILL.md +136 -0
- package/assets/symphony-mise.system.toml +68 -0
- package/dist/bin/symphony.js +22 -786
- package/dist/bin/symphony.js.map +1 -1
- package/dist/core/actions/context.js +109 -0
- package/dist/core/actions/context.js.map +1 -0
- package/dist/{actions/parsing.js → core/actions/parse.js} +33 -114
- package/dist/core/actions/parse.js.map +1 -0
- package/dist/core/actions/plan.js +197 -0
- package/dist/core/actions/plan.js.map +1 -0
- package/dist/core/actions/predicates.js +111 -0
- package/dist/core/actions/predicates.js.map +1 -0
- package/dist/core/actions/run-fold.js +248 -0
- package/dist/core/actions/run-fold.js.map +1 -0
- package/dist/core/actions/template.js +118 -0
- package/dist/core/actions/template.js.map +1 -0
- package/dist/core/cli/args.js +116 -0
- package/dist/core/cli/args.js.map +1 -0
- package/dist/core/coerce.js +75 -0
- package/dist/core/coerce.js.map +1 -0
- package/dist/core/credential/account-id.js +20 -0
- package/dist/core/credential/account-id.js.map +1 -0
- package/dist/core/credential/adapter-config.js +136 -0
- package/dist/core/credential/adapter-config.js.map +1 -0
- package/dist/core/credential/availability.js +98 -0
- package/dist/core/credential/availability.js.map +1 -0
- package/dist/core/credential/extract.js +228 -0
- package/dist/core/credential/extract.js.map +1 -0
- package/dist/core/credential/fake-creds.js +171 -0
- package/dist/core/credential/fake-creds.js.map +1 -0
- package/dist/core/credential/identity.js +125 -0
- package/dist/core/credential/identity.js.map +1 -0
- package/dist/core/credential/shape.js +230 -0
- package/dist/core/credential/shape.js.map +1 -0
- package/dist/core/credential/strings.js +15 -0
- package/dist/core/credential/strings.js.map +1 -0
- package/dist/core/doctor/checks.js +303 -0
- package/dist/core/doctor/checks.js.map +1 -0
- package/dist/core/git/result.js +107 -0
- package/dist/core/git/result.js.map +1 -0
- package/dist/core/http/decisions.js +225 -0
- package/dist/core/http/decisions.js.map +1 -0
- package/dist/{http.js → core/http/render.js} +472 -738
- package/dist/core/http/render.js.map +1 -0
- package/dist/{http-handlers.js → core/http/routes.js} +52 -87
- package/dist/core/http/routes.js.map +1 -0
- package/dist/core/http/views.js +181 -0
- package/dist/core/http/views.js.map +1 -0
- package/dist/core/image/managed-image.js +95 -0
- package/dist/core/image/managed-image.js.map +1 -0
- package/dist/core/issue/file.js +149 -0
- package/dist/core/issue/file.js.map +1 -0
- package/dist/core/issue/parse.js +210 -0
- package/dist/core/issue/parse.js.map +1 -0
- package/dist/core/mcp/dispatch.js +239 -0
- package/dist/core/mcp/dispatch.js.map +1 -0
- package/dist/core/mcp/post-move.js +92 -0
- package/dist/core/mcp/post-move.js.map +1 -0
- package/dist/core/mcp/protocol.js +293 -0
- package/dist/core/mcp/protocol.js.map +1 -0
- package/dist/core/mcp/url.js +162 -0
- package/dist/core/mcp/url.js.map +1 -0
- package/dist/core/path.js +63 -0
- package/dist/core/path.js.map +1 -0
- package/dist/core/reconcile/image-decide.js +48 -0
- package/dist/core/reconcile/image-decide.js.map +1 -0
- package/dist/core/reconcile/ledger.js +142 -0
- package/dist/core/reconcile/ledger.js.map +1 -0
- package/dist/core/reconcile/pr-classify.js +62 -0
- package/dist/core/reconcile/pr-classify.js.map +1 -0
- package/dist/{reconciler → core/reconcile}/pr-decide.js +25 -12
- package/dist/core/reconcile/pr-decide.js.map +1 -0
- package/dist/core/reconcile/pr-loop.js +161 -0
- package/dist/core/reconcile/pr-loop.js.map +1 -0
- package/dist/core/reconcile/pr-notes.js +35 -0
- package/dist/core/reconcile/pr-notes.js.map +1 -0
- package/dist/core/reconcile/vm-decide.js +70 -0
- package/dist/core/reconcile/vm-decide.js.map +1 -0
- package/dist/core/reconcile/vm-reap.js +207 -0
- package/dist/core/reconcile/vm-reap.js.map +1 -0
- package/dist/core/reconcile/workspace-decide.js +162 -0
- package/dist/core/reconcile/workspace-decide.js.map +1 -0
- package/dist/core/runlog/summary.js +231 -0
- package/dist/core/runlog/summary.js.map +1 -0
- package/dist/core/runner/dispatch-config.js +95 -0
- package/dist/core/runner/dispatch-config.js.map +1 -0
- package/dist/core/runner/injection.js +61 -0
- package/dist/core/runner/injection.js.map +1 -0
- package/dist/core/runner/mise.js +210 -0
- package/dist/core/runner/mise.js.map +1 -0
- package/dist/core/runner/prompt.js +720 -0
- package/dist/core/runner/prompt.js.map +1 -0
- package/dist/core/runner/turn.js +242 -0
- package/dist/core/runner/turn.js.map +1 -0
- package/dist/core/runner/vm-plan.js +390 -0
- package/dist/core/runner/vm-plan.js.map +1 -0
- package/dist/core/schedule/admission.js +123 -0
- package/dist/core/schedule/admission.js.map +1 -0
- package/dist/core/schedule/circuit-breaker.js +111 -0
- package/dist/core/schedule/circuit-breaker.js.map +1 -0
- package/dist/core/schedule/eligibility.js +83 -0
- package/dist/core/schedule/eligibility.js.map +1 -0
- package/dist/core/schedule/reconcile-issue.js +82 -0
- package/dist/core/schedule/reconcile-issue.js.map +1 -0
- package/dist/core/schedule/retry.js +96 -0
- package/dist/core/schedule/retry.js.map +1 -0
- package/dist/core/schedule/sleep-cycle.js +133 -0
- package/dist/core/schedule/sleep-cycle.js.map +1 -0
- package/dist/core/schedule/slots.js +124 -0
- package/dist/core/schedule/slots.js.map +1 -0
- package/dist/core/schedule/tick.js +553 -0
- package/dist/core/schedule/tick.js.map +1 -0
- package/dist/core/schedule/token-fold.js +181 -0
- package/dist/core/schedule/token-fold.js.map +1 -0
- package/dist/core/state-resolve.js +86 -0
- package/dist/core/state-resolve.js.map +1 -0
- package/dist/core/vm-guards.js +278 -0
- package/dist/core/vm-guards.js.map +1 -0
- package/dist/core/workflow/derive.js +107 -0
- package/dist/core/workflow/derive.js.map +1 -0
- package/dist/core/workflow/parse.js +687 -0
- package/dist/core/workflow/parse.js.map +1 -0
- package/dist/core/workflow/prompt-probe.js +78 -0
- package/dist/core/workflow/prompt-probe.js.map +1 -0
- package/dist/core/workflow/validate.js +189 -0
- package/dist/core/workflow/validate.js.map +1 -0
- package/dist/core/workspace-key.js +19 -0
- package/dist/core/workspace-key.js.map +1 -0
- package/dist/shell/actions-runner.js +356 -0
- package/dist/shell/actions-runner.js.map +1 -0
- package/dist/shell/adapter/adapter-registry.js +45 -0
- package/dist/shell/adapter/adapter-registry.js.map +1 -0
- package/dist/shell/adapter/clock-random.js +96 -0
- package/dist/shell/adapter/clock-random.js.map +1 -0
- package/dist/shell/adapter/gondolin-dispatch-helpers.js +158 -0
- package/dist/shell/adapter/gondolin-dispatch-helpers.js.map +1 -0
- package/dist/shell/adapter/gondolin-dispatch.js +385 -0
- package/dist/shell/adapter/gondolin-dispatch.js.map +1 -0
- package/dist/shell/adapter/gondolin-image-converter.js +233 -0
- package/dist/shell/adapter/gondolin-image-converter.js.map +1 -0
- package/dist/shell/adapter/gondolin-image-fetch.js +180 -0
- package/dist/shell/adapter/gondolin-image-fetch.js.map +1 -0
- package/dist/shell/adapter/launcher-asset.js +57 -0
- package/dist/shell/adapter/launcher-asset.js.map +1 -0
- package/dist/shell/adapter/mise-config-asset.js +65 -0
- package/dist/shell/adapter/mise-config-asset.js.map +1 -0
- package/dist/shell/adapter/workflow-loader.js +304 -0
- package/dist/shell/adapter/workflow-loader.js.map +1 -0
- package/dist/shell/cli/doctor.js +268 -0
- package/dist/shell/cli/doctor.js.map +1 -0
- package/dist/shell/effect-interpreter-families.js +314 -0
- package/dist/shell/effect-interpreter-families.js.map +1 -0
- package/dist/shell/effect-interpreter.js +29 -0
- package/dist/shell/effect-interpreter.js.map +1 -0
- package/dist/shell/interp/acp-frame.js +137 -0
- package/dist/shell/interp/acp-frame.js.map +1 -0
- package/dist/shell/interp/acp-ws-conn.js +320 -0
- package/dist/shell/interp/acp-ws-conn.js.map +1 -0
- package/dist/shell/interp/acp-ws-frames.js +159 -0
- package/dist/shell/interp/acp-ws-frames.js.map +1 -0
- package/dist/shell/interp/acp-ws.js +197 -0
- package/dist/shell/interp/acp-ws.js.map +1 -0
- package/dist/shell/interp/acp.js +319 -0
- package/dist/shell/interp/acp.js.map +1 -0
- package/dist/shell/interp/credential-defaults.js +128 -0
- package/dist/shell/interp/credential-defaults.js.map +1 -0
- package/dist/shell/interp/credential-hooks.js +149 -0
- package/dist/shell/interp/credential-hooks.js.map +1 -0
- package/dist/shell/interp/credential-registry.js +226 -0
- package/dist/shell/interp/credential-registry.js.map +1 -0
- package/dist/shell/interp/credential.js +103 -0
- package/dist/shell/interp/credential.js.map +1 -0
- package/dist/shell/interp/gh.js +163 -0
- package/dist/shell/interp/gh.js.map +1 -0
- package/dist/shell/interp/git.js +28 -0
- package/dist/shell/interp/git.js.map +1 -0
- package/dist/shell/interp/log.js +213 -0
- package/dist/shell/interp/log.js.map +1 -0
- package/dist/shell/interp/process.js +178 -0
- package/dist/shell/interp/process.js.map +1 -0
- package/dist/shell/interp/runlog.js +193 -0
- package/dist/shell/interp/runlog.js.map +1 -0
- package/dist/shell/interp/timer.js +64 -0
- package/dist/shell/interp/timer.js.map +1 -0
- package/dist/shell/interp/tracker-disk.js +99 -0
- package/dist/shell/interp/tracker-disk.js.map +1 -0
- package/dist/shell/interp/tracker-parse.js +71 -0
- package/dist/shell/interp/tracker-parse.js.map +1 -0
- package/dist/shell/interp/tracker-scan.js +238 -0
- package/dist/shell/interp/tracker-scan.js.map +1 -0
- package/dist/shell/interp/tracker-write.js +91 -0
- package/dist/shell/interp/tracker-write.js.map +1 -0
- package/dist/shell/interp/tracker.js +41 -0
- package/dist/shell/interp/tracker.js.map +1 -0
- package/dist/shell/interp/tty.js +48 -0
- package/dist/shell/interp/tty.js.map +1 -0
- package/dist/shell/interp/vm.js +199 -0
- package/dist/shell/interp/vm.js.map +1 -0
- package/dist/shell/interp/workspace.js +310 -0
- package/dist/shell/interp/workspace.js.map +1 -0
- package/dist/shell/main-acp.js +78 -0
- package/dist/shell/main-acp.js.map +1 -0
- package/dist/shell/main-adapters.js +222 -0
- package/dist/shell/main-adapters.js.map +1 -0
- package/dist/shell/main-credential.js +122 -0
- package/dist/shell/main-credential.js.map +1 -0
- package/dist/shell/main-doctor.js +22 -0
- package/dist/shell/main-doctor.js.map +1 -0
- package/dist/shell/main-entry.js +46 -0
- package/dist/shell/main-entry.js.map +1 -0
- package/dist/shell/main-http-csrf.js +45 -0
- package/dist/shell/main-http-csrf.js.map +1 -0
- package/dist/shell/main-http-handler.js +389 -0
- package/dist/shell/main-http-handler.js.map +1 -0
- package/dist/shell/main-http-mcp.js +122 -0
- package/dist/shell/main-http-mcp.js.map +1 -0
- package/dist/shell/main-http-views.js +253 -0
- package/dist/shell/main-http-views.js.map +1 -0
- package/dist/shell/main-http.js +76 -0
- package/dist/shell/main-http.js.map +1 -0
- package/dist/shell/main-loops.js +130 -0
- package/dist/shell/main-loops.js.map +1 -0
- package/dist/shell/main-mcp.js +129 -0
- package/dist/shell/main-mcp.js.map +1 -0
- package/dist/shell/main-orchestrator.js +120 -0
- package/dist/shell/main-orchestrator.js.map +1 -0
- package/dist/shell/main-preflight.js +43 -0
- package/dist/shell/main-preflight.js.map +1 -0
- package/dist/shell/main-reconcilers-helpers.js +244 -0
- package/dist/shell/main-reconcilers-helpers.js.map +1 -0
- package/dist/shell/main-reconcilers-pr.js +148 -0
- package/dist/shell/main-reconcilers-pr.js.map +1 -0
- package/dist/shell/main-reconcilers.js +225 -0
- package/dist/shell/main-reconcilers.js.map +1 -0
- package/dist/shell/main-runner.js +355 -0
- package/dist/shell/main-runner.js.map +1 -0
- package/dist/shell/main-scaffold.js +116 -0
- package/dist/shell/main-scaffold.js.map +1 -0
- package/dist/shell/main-shutdown.js +115 -0
- package/dist/shell/main-shutdown.js.map +1 -0
- package/dist/shell/main-startup.js +48 -0
- package/dist/shell/main-startup.js.map +1 -0
- package/dist/shell/main-substrates.js +43 -0
- package/dist/shell/main-substrates.js.map +1 -0
- package/dist/shell/main.js +385 -0
- package/dist/shell/main.js.map +1 -0
- package/dist/shell/orchestrator-feedback.js +69 -0
- package/dist/shell/orchestrator-feedback.js.map +1 -0
- package/dist/shell/orchestrator-image.js +167 -0
- package/dist/shell/orchestrator-image.js.map +1 -0
- package/dist/shell/orchestrator-loop.js +468 -0
- package/dist/shell/orchestrator-loop.js.map +1 -0
- package/dist/shell/orchestrator-reconcile.js +36 -0
- package/dist/shell/orchestrator-reconcile.js.map +1 -0
- package/dist/shell/reconciler-loop.js +228 -0
- package/dist/shell/reconciler-loop.js.map +1 -0
- package/dist/shell/runner-loop-turn.js +301 -0
- package/dist/shell/runner-loop-turn.js.map +1 -0
- package/dist/shell/runner-loop.js +338 -0
- package/dist/shell/runner-loop.js.map +1 -0
- package/dist/shell/server/http.js +208 -0
- package/dist/shell/server/http.js.map +1 -0
- package/dist/shell/server/mcp-runtime-effects.js +237 -0
- package/dist/shell/server/mcp-runtime-effects.js.map +1 -0
- package/dist/shell/server/mcp-runtime.js +99 -0
- package/dist/shell/server/mcp-runtime.js.map +1 -0
- package/dist/shell/workspace-key.js +14 -0
- package/dist/shell/workspace-key.js.map +1 -0
- package/dist/types/acp.js +8 -0
- package/dist/types/acp.js.map +1 -0
- package/dist/types/actions/plan.js +6 -0
- package/dist/types/actions/plan.js.map +1 -0
- package/dist/types/actions/predicates.js +6 -0
- package/dist/types/actions/predicates.js.map +1 -0
- package/dist/types/actions/run-fold.js +8 -0
- package/dist/types/actions/run-fold.js.map +1 -0
- package/dist/types/actions.js +7 -0
- package/dist/types/actions.js.map +1 -0
- package/dist/types/adapter/clock-random.js +4 -0
- package/dist/types/adapter/clock-random.js.map +1 -0
- package/dist/types/adapter/gondolin-image-converter.js +5 -0
- package/dist/types/adapter/gondolin-image-converter.js.map +1 -0
- package/dist/types/adapter/gondolin-image-fetch.js +5 -0
- package/dist/types/adapter/gondolin-image-fetch.js.map +1 -0
- package/dist/types/adapter/workflow-loader.js +4 -0
- package/dist/types/adapter/workflow-loader.js.map +1 -0
- package/dist/types/cli/args.js +8 -0
- package/dist/types/cli/args.js.map +1 -0
- package/dist/types/config.js +8 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/credential-interp.js +6 -0
- package/dist/types/credential-interp.js.map +1 -0
- package/dist/types/credentials.js +10 -0
- package/dist/types/credentials.js.map +1 -0
- package/dist/types/doctor.js +7 -0
- package/dist/types/doctor.js.map +1 -0
- package/dist/types/domain.js +7 -0
- package/dist/types/domain.js.map +1 -0
- package/dist/types/effect.js +15 -0
- package/dist/types/effect.js.map +1 -0
- package/dist/types/errors.js +39 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/http/decisions.js +6 -0
- package/dist/types/http/decisions.js.map +1 -0
- package/dist/types/http/render.js +10 -0
- package/dist/types/http/render.js.map +1 -0
- package/dist/types/http/views.js +6 -0
- package/dist/types/http/views.js.map +1 -0
- package/dist/types/http.js +9 -0
- package/dist/types/http.js.map +1 -0
- package/dist/types/image/managed-image.js +7 -0
- package/dist/types/image/managed-image.js.map +1 -0
- package/dist/types/interp/effect-interpreter.js +8 -0
- package/dist/types/interp/effect-interpreter.js.map +1 -0
- package/dist/types/interp/tracker.js +7 -0
- package/dist/types/interp/tracker.js.map +1 -0
- package/dist/types/issue/file.js +6 -0
- package/dist/types/issue/file.js.map +1 -0
- package/dist/types/issue/parse.js +8 -0
- package/dist/types/issue/parse.js.map +1 -0
- package/dist/types/main-acp.js +13 -0
- package/dist/types/main-acp.js.map +1 -0
- package/dist/types/main-adapters.js +5 -0
- package/dist/types/main-adapters.js.map +1 -0
- package/dist/types/main-credential.js +21 -0
- package/dist/types/main-credential.js.map +1 -0
- package/dist/types/main-doctor.js +6 -0
- package/dist/types/main-doctor.js.map +1 -0
- package/dist/types/main-http-handler.js +12 -0
- package/dist/types/main-http-handler.js.map +1 -0
- package/dist/types/main-http.js +5 -0
- package/dist/types/main-http.js.map +1 -0
- package/dist/types/main-loops.js +5 -0
- package/dist/types/main-loops.js.map +1 -0
- package/dist/types/main-mcp.js +12 -0
- package/dist/types/main-mcp.js.map +1 -0
- package/dist/types/main-orchestrator.js +5 -0
- package/dist/types/main-orchestrator.js.map +1 -0
- package/dist/types/main-reconcilers.js +11 -0
- package/dist/types/main-reconcilers.js.map +1 -0
- package/dist/types/main-runner.js +13 -0
- package/dist/types/main-runner.js.map +1 -0
- package/dist/types/main-startup.js +5 -0
- package/dist/types/main-startup.js.map +1 -0
- package/dist/types/main-substrates.js +5 -0
- package/dist/types/main-substrates.js.map +1 -0
- package/dist/types/mcp/dispatch.js +4 -0
- package/dist/types/mcp/dispatch.js.map +1 -0
- package/dist/types/mcp/post-move.js +7 -0
- package/dist/types/mcp/post-move.js.map +1 -0
- package/dist/types/mcp.js +9 -0
- package/dist/types/mcp.js.map +1 -0
- package/dist/types/ports.js +12 -0
- package/dist/types/ports.js.map +1 -0
- package/dist/types/reconcile/image-decide.js +5 -0
- package/dist/types/reconcile/image-decide.js.map +1 -0
- package/dist/types/reconcile/ledger.js +7 -0
- package/dist/types/reconcile/ledger.js.map +1 -0
- package/dist/types/reconcile/pr-loop.js +8 -0
- package/dist/types/reconcile/pr-loop.js.map +1 -0
- package/dist/types/reconcile/vm-reap.js +8 -0
- package/dist/types/reconcile/vm-reap.js.map +1 -0
- package/dist/types/reconcile/workspace-decide.js +7 -0
- package/dist/types/reconcile/workspace-decide.js.map +1 -0
- package/dist/types/reconcile.js +9 -0
- package/dist/types/reconcile.js.map +1 -0
- package/dist/types/runlog.js +7 -0
- package/dist/types/runlog.js.map +1 -0
- package/dist/types/runner/actions-runner.js +12 -0
- package/dist/types/runner/actions-runner.js.map +1 -0
- package/dist/types/runner/gondolin-dispatch.js +5 -0
- package/dist/types/runner/gondolin-dispatch.js.map +1 -0
- package/dist/types/runner/injection.js +6 -0
- package/dist/types/runner/injection.js.map +1 -0
- package/dist/types/runner/runner-loop.js +5 -0
- package/dist/types/runner/runner-loop.js.map +1 -0
- package/dist/types/runner/turn.js +4 -0
- package/dist/types/runner/turn.js.map +1 -0
- package/dist/types/runner/vm-plan.js +4 -0
- package/dist/types/runner/vm-plan.js.map +1 -0
- package/dist/types/runtime.js +9 -0
- package/dist/types/runtime.js.map +1 -0
- package/dist/types/schedule/admission.js +7 -0
- package/dist/types/schedule/admission.js.map +1 -0
- package/dist/types/schedule/circuit-breaker.js +2 -0
- package/dist/types/schedule/circuit-breaker.js.map +1 -0
- package/dist/types/schedule/eligibility.js +9 -0
- package/dist/types/schedule/eligibility.js.map +1 -0
- package/dist/types/schedule/orchestrator-loop.js +10 -0
- package/dist/types/schedule/orchestrator-loop.js.map +1 -0
- package/dist/types/schedule/sleep-cycle.js +4 -0
- package/dist/types/schedule/sleep-cycle.js.map +1 -0
- package/dist/types/schedule/slots.js +8 -0
- package/dist/types/schedule/slots.js.map +1 -0
- package/dist/types/schedule/tick.js +9 -0
- package/dist/types/schedule/tick.js.map +1 -0
- package/dist/types/server/mcp-runtime.js +8 -0
- package/dist/types/server/mcp-runtime.js.map +1 -0
- package/dist/types/workflow/parse.js +4 -0
- package/dist/types/workflow/parse.js.map +1 -0
- package/package.json +22 -10
- package/patches/@earendil-works+gondolin+0.12.0.patch +173 -0
- package/prompts/Reflect.md +91 -0
- package/prompts/Review.md +97 -0
- package/prompts/Todo.md +96 -0
- package/prompts/_footer.md +41 -0
- package/prompts/_preamble.md +42 -0
- package/prompts-minimal/Todo.md +26 -0
- package/scripts/postinstall.mjs +63 -0
- package/scripts/vm-agent.mjs +312 -90
- package/WORKFLOW.md +0 -744
- package/dist/acp-bridge.js +0 -324
- package/dist/acp-bridge.js.map +0 -1
- package/dist/actions/cache.js +0 -191
- package/dist/actions/cache.js.map +0 -1
- package/dist/actions/effects.js +0 -41
- package/dist/actions/effects.js.map +0 -1
- package/dist/actions/executor.js +0 -570
- package/dist/actions/executor.js.map +0 -1
- package/dist/actions/index.js +0 -13
- package/dist/actions/index.js.map +0 -1
- package/dist/actions/parsing.js.map +0 -1
- package/dist/actions/predicate-env.js +0 -27
- package/dist/actions/predicate-env.js.map +0 -1
- package/dist/actions/predicates.js +0 -49
- package/dist/actions/predicates.js.map +0 -1
- package/dist/actions/templating.js +0 -66
- package/dist/actions/templating.js.map +0 -1
- package/dist/actions/types.js +0 -15
- package/dist/actions/types.js.map +0 -1
- package/dist/agent/acp.js +0 -473
- package/dist/agent/acp.js.map +0 -1
- package/dist/agent/adapter-names.js +0 -159
- package/dist/agent/adapter-names.js.map +0 -1
- package/dist/agent/adapters.js +0 -511
- package/dist/agent/adapters.js.map +0 -1
- package/dist/agent/credential-extractors.js +0 -342
- package/dist/agent/credential-extractors.js.map +0 -1
- package/dist/agent/credential-secrets.js +0 -628
- package/dist/agent/credential-secrets.js.map +0 -1
- package/dist/agent/credential-ticker.js +0 -57
- package/dist/agent/credential-ticker.js.map +0 -1
- package/dist/agent/gondolin-creds-staging.js +0 -356
- package/dist/agent/gondolin-creds-staging.js.map +0 -1
- package/dist/agent/gondolin-dispatch.js +0 -375
- package/dist/agent/gondolin-dispatch.js.map +0 -1
- package/dist/agent/gondolin.js +0 -124
- package/dist/agent/gondolin.js.map +0 -1
- package/dist/agent/runner-decisions.js +0 -134
- package/dist/agent/runner-decisions.js.map +0 -1
- package/dist/agent/runner.js +0 -1456
- package/dist/agent/runner.js.map +0 -1
- package/dist/agent/tool-call-summary.js +0 -102
- package/dist/agent/tool-call-summary.js.map +0 -1
- package/dist/agent/vm-acp-mapping.js +0 -73
- package/dist/agent/vm-acp-mapping.js.map +0 -1
- package/dist/agent/vm-guards.js +0 -262
- package/dist/agent/vm-guards.js.map +0 -1
- package/dist/agent/vm-port.js +0 -22
- package/dist/agent/vm-port.js.map +0 -1
- package/dist/agent/vm-process-registry.js +0 -79
- package/dist/agent/vm-process-registry.js.map +0 -1
- package/dist/bin/cli-args.js +0 -105
- package/dist/bin/cli-args.js.map +0 -1
- package/dist/errors.js +0 -15
- package/dist/errors.js.map +0 -1
- package/dist/http-disk.js +0 -135
- package/dist/http-disk.js.map +0 -1
- package/dist/http-handlers.js.map +0 -1
- package/dist/http.js.map +0 -1
- package/dist/issues.js +0 -178
- package/dist/issues.js.map +0 -1
- package/dist/logging.js +0 -203
- package/dist/logging.js.map +0 -1
- package/dist/mcp.js +0 -706
- package/dist/mcp.js.map +0 -1
- package/dist/memory.js +0 -85
- package/dist/memory.js.map +0 -1
- package/dist/orchestrator-decisions.js +0 -331
- package/dist/orchestrator-decisions.js.map +0 -1
- package/dist/orchestrator.js +0 -1569
- package/dist/orchestrator.js.map +0 -1
- package/dist/prompt.js +0 -65
- package/dist/prompt.js.map +0 -1
- package/dist/reconciler/cache.js +0 -65
- package/dist/reconciler/cache.js.map +0 -1
- package/dist/reconciler/index.js +0 -448
- package/dist/reconciler/index.js.map +0 -1
- package/dist/reconciler/ledger.js +0 -131
- package/dist/reconciler/ledger.js.map +0 -1
- package/dist/reconciler/pr-adapters.js +0 -174
- package/dist/reconciler/pr-adapters.js.map +0 -1
- package/dist/reconciler/pr-decide.js.map +0 -1
- package/dist/reconciler/pr.js +0 -422
- package/dist/reconciler/pr.js.map +0 -1
- package/dist/reconciler/types.js +0 -12
- package/dist/reconciler/types.js.map +0 -1
- package/dist/reconciler/vm.js +0 -243
- package/dist/reconciler/vm.js.map +0 -1
- package/dist/reconciler/workspace-defaults.js +0 -83
- package/dist/reconciler/workspace-defaults.js.map +0 -1
- package/dist/reconciler/workspace.js +0 -272
- package/dist/reconciler/workspace.js.map +0 -1
- package/dist/runlog.js +0 -403
- package/dist/runlog.js.map +0 -1
- package/dist/scaffold.js +0 -165
- package/dist/scaffold.js.map +0 -1
- package/dist/trackers/local.js +0 -445
- package/dist/trackers/local.js.map +0 -1
- package/dist/trackers/types.js +0 -10
- package/dist/trackers/types.js.map +0 -1
- package/dist/types.js +0 -3
- package/dist/types.js.map +0 -1
- package/dist/util/clock.js +0 -12
- package/dist/util/clock.js.map +0 -1
- package/dist/util/crypto.js +0 -25
- package/dist/util/crypto.js.map +0 -1
- package/dist/util/frontmatter.js +0 -70
- package/dist/util/frontmatter.js.map +0 -1
- package/dist/util/fs-issues.js +0 -22
- package/dist/util/fs-issues.js.map +0 -1
- package/dist/util/process.js +0 -152
- package/dist/util/process.js.map +0 -1
- package/dist/util/workspace-key.js +0 -10
- package/dist/util/workspace-key.js.map +0 -1
- package/dist/workflow-loader.js +0 -147
- package/dist/workflow-loader.js.map +0 -1
- package/dist/workflow.js +0 -822
- package/dist/workflow.js.map +0 -1
- package/dist/workspace-types.js +0 -8
- package/dist/workspace-types.js.map +0 -1
- package/dist/workspace.js +0 -443
- package/dist/workspace.js.map +0 -1
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
// PR autopilot adapters (shell). Concrete `gh` shell-out implementation of
|
|
2
|
-
// the {@link PrApi} port declared in `./pr.ts`. Lifted out of `pr.ts` so the
|
|
3
|
-
// core resource module stays pure domain (issue 70) — `pr.ts` no longer
|
|
4
|
-
// imports `util/process` and is free of `Date.now()`-style non-determinism.
|
|
5
|
-
//
|
|
6
|
-
// pr.ts re-exports the port interface from this module's `import type` line
|
|
7
|
-
// only; this file does not import any non-type symbol from `./pr.ts`, so the
|
|
8
|
-
// `domain ← adapters` invariant holds at runtime.
|
|
9
|
-
import { runProcess } from '../util/process.js';
|
|
10
|
-
// Thin shape adapter over the unified runProcess. `exit: -1` is the historical
|
|
11
|
-
// PR-autopilot sentinel for "spawn errored or process signalled"; map runProcess's
|
|
12
|
-
// `exit_code: null` into it so downstream gh-output parsing stays identical to
|
|
13
|
-
// the pre-refactor shape.
|
|
14
|
-
async function runShell(cmd, args, opts = {}) {
|
|
15
|
-
const r = await runProcess(cmd, args, {
|
|
16
|
-
cwd: opts.cwd,
|
|
17
|
-
timeoutMs: opts.timeoutMs,
|
|
18
|
-
// PR autopilot's gh output can be large (json blobs); keep the historical
|
|
19
|
-
// 1 MiB clamp rather than the 64 KiB default.
|
|
20
|
-
maxBytes: 1_048_576,
|
|
21
|
-
});
|
|
22
|
-
return {
|
|
23
|
-
exit: r.exit_code ?? -1,
|
|
24
|
-
stdout: r.stdout,
|
|
25
|
-
stderr: r.stderr,
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
/** Default production PrApi backed by the `gh` CLI on the host. */
|
|
29
|
-
export class GhCliPrApi {
|
|
30
|
-
opts;
|
|
31
|
-
constructor(opts = {}) {
|
|
32
|
-
this.opts = opts;
|
|
33
|
-
}
|
|
34
|
-
/** Normalize the configured slug (empty → null). */
|
|
35
|
-
currentRepo() {
|
|
36
|
-
return this.opts.repo && this.opts.repo.length > 0 ? this.opts.repo : null;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* `--repo <owner/repo>` args when a target slug is configured, else `[]`.
|
|
40
|
-
* Without this, `gh` infers the repository from the process cwd — correct
|
|
41
|
-
* when symphony runs inside the target repo, but wrong/absent in the
|
|
42
|
-
* out-of-repo (control-dir) layout the `workspace.github_repo` knob enables.
|
|
43
|
-
* Pinning the slug makes every autopilot `gh` call hit the same repository
|
|
44
|
-
* the workspace setup and Done-state actions target.
|
|
45
|
-
*/
|
|
46
|
-
repoArgs() {
|
|
47
|
-
const repo = this.currentRepo();
|
|
48
|
-
return repo ? ['--repo', repo] : [];
|
|
49
|
-
}
|
|
50
|
-
async listForBranch(branch) {
|
|
51
|
-
// `--state all` so a PR that has merged or been closed is still
|
|
52
|
-
// returned — once we have the number we drive cleanup via `view`,
|
|
53
|
-
// which works against any state. An OPEN-only filter would make a
|
|
54
|
-
// post-merge or operator-closed PR invisible to the autopilot.
|
|
55
|
-
const res = await runShell('gh', ['pr', 'list', ...this.repoArgs(), '--head', branch, '--state', 'all', '--json', 'number,url', '--limit', '1'], this.opts);
|
|
56
|
-
if (res.exit !== 0) {
|
|
57
|
-
throw new Error(`gh pr list failed (exit ${res.exit}): ${res.stderr.trim()}`);
|
|
58
|
-
}
|
|
59
|
-
let parsed;
|
|
60
|
-
try {
|
|
61
|
-
parsed = JSON.parse(res.stdout);
|
|
62
|
-
}
|
|
63
|
-
catch (err) {
|
|
64
|
-
throw new Error(`gh pr list returned non-JSON: ${err.message}`);
|
|
65
|
-
}
|
|
66
|
-
if (!Array.isArray(parsed) || parsed.length === 0)
|
|
67
|
-
return null;
|
|
68
|
-
const first = parsed[0];
|
|
69
|
-
if (typeof first.number !== 'number' || typeof first.url !== 'string')
|
|
70
|
-
return null;
|
|
71
|
-
return { number: first.number, url: first.url };
|
|
72
|
-
}
|
|
73
|
-
async view(prNumber) {
|
|
74
|
-
const res = await runShell('gh', [
|
|
75
|
-
'pr',
|
|
76
|
-
'view',
|
|
77
|
-
String(prNumber),
|
|
78
|
-
...this.repoArgs(),
|
|
79
|
-
'--json',
|
|
80
|
-
'number,url,state,mergeable,mergeStateStatus,baseRefName,baseRefOid,headRefName,headRefOid,reviewDecision,autoMergeRequest',
|
|
81
|
-
], this.opts);
|
|
82
|
-
if (res.exit !== 0) {
|
|
83
|
-
throw new Error(`gh pr view ${prNumber} failed (exit ${res.exit}): ${res.stderr.trim()}`);
|
|
84
|
-
}
|
|
85
|
-
return parseGhPrView(prNumber, res.stdout);
|
|
86
|
-
}
|
|
87
|
-
async armAutoMerge(prNumber, strategy) {
|
|
88
|
-
const flag = strategy === 'merge' ? '--merge' : strategy === 'rebase' ? '--rebase' : '--squash';
|
|
89
|
-
const res = await runShell('gh', ['pr', 'merge', String(prNumber), ...this.repoArgs(), '--auto', flag, '--delete-branch'], this.opts);
|
|
90
|
-
if (res.exit !== 0) {
|
|
91
|
-
throw new Error(`gh pr merge --auto failed (exit ${res.exit}): ${res.stderr.trim()}`);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
async updateBranch(prNumber) {
|
|
95
|
-
const res = await runShell('gh', ['pr', 'update-branch', String(prNumber), ...this.repoArgs()], this.opts);
|
|
96
|
-
if (res.exit !== 0) {
|
|
97
|
-
throw new Error(`gh pr update-branch failed (exit ${res.exit}): ${res.stderr.trim()}`);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
async closePr(prNumber) {
|
|
101
|
-
const res = await runShell('gh', ['pr', 'close', String(prNumber), ...this.repoArgs()], this.opts);
|
|
102
|
-
if (res.exit !== 0) {
|
|
103
|
-
throw new Error(`gh pr close failed (exit ${res.exit}): ${res.stderr.trim()}`);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
async deleteRemoteBranch(branch) {
|
|
107
|
-
// `gh api -X DELETE` is the most direct path; falls back to `git push :branch`
|
|
108
|
-
// via shell would require knowing the remote URL. gh is required by the
|
|
109
|
-
// existing PR-create hook anyway so we can rely on it being present.
|
|
110
|
-
// Substitute the configured slug for gh's `{owner}/{repo}` placeholder (which
|
|
111
|
-
// it would otherwise resolve from the process cwd) so the delete hits the
|
|
112
|
-
// same repository as the rest of the autopilot.
|
|
113
|
-
const repoPath = this.currentRepo() ?? '{owner}/{repo}';
|
|
114
|
-
const res = await runShell('gh', ['api', '-X', 'DELETE', `repos/${repoPath}/git/refs/heads/${branch}`], this.opts);
|
|
115
|
-
if (res.exit !== 0) {
|
|
116
|
-
// 422 / 404 from gh api is "branch already gone" — surface as a soft
|
|
117
|
-
// error so the resource records it but doesn't keep retrying.
|
|
118
|
-
throw new Error(`gh api delete branch failed (exit ${res.exit}): ${res.stderr.trim()}`);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
function parseGhPrView(prNumber, stdout) {
|
|
123
|
-
let parsed;
|
|
124
|
-
try {
|
|
125
|
-
parsed = JSON.parse(stdout);
|
|
126
|
-
}
|
|
127
|
-
catch (err) {
|
|
128
|
-
throw new Error(`gh pr view returned non-JSON: ${err.message}`);
|
|
129
|
-
}
|
|
130
|
-
return {
|
|
131
|
-
number: typeof parsed.number === 'number' ? parsed.number : prNumber,
|
|
132
|
-
url: typeof parsed.url === 'string' ? parsed.url : '',
|
|
133
|
-
state: normalizeState(parsed.state),
|
|
134
|
-
mergeable: normalizeMergeable(parsed.mergeable),
|
|
135
|
-
merge_state_status: normalizeMergeStateStatus(parsed.mergeStateStatus),
|
|
136
|
-
base_ref_name: typeof parsed.baseRefName === 'string' ? parsed.baseRefName : '',
|
|
137
|
-
base_ref_oid: typeof parsed.baseRefOid === 'string' ? parsed.baseRefOid : null,
|
|
138
|
-
head_ref_name: typeof parsed.headRefName === 'string' ? parsed.headRefName : '',
|
|
139
|
-
head_ref_oid: typeof parsed.headRefOid === 'string' ? parsed.headRefOid : '',
|
|
140
|
-
review_decision: normalizeReviewDecision(parsed.reviewDecision),
|
|
141
|
-
auto_merge_armed: parsed.autoMergeRequest !== null &&
|
|
142
|
-
parsed.autoMergeRequest !== undefined &&
|
|
143
|
-
typeof parsed.autoMergeRequest === 'object',
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
function normalizeState(raw) {
|
|
147
|
-
if (raw === 'OPEN' || raw === 'CLOSED' || raw === 'MERGED')
|
|
148
|
-
return raw;
|
|
149
|
-
return 'OPEN';
|
|
150
|
-
}
|
|
151
|
-
function normalizeMergeable(raw) {
|
|
152
|
-
if (raw === 'MERGEABLE' || raw === 'CONFLICTING' || raw === 'UNKNOWN')
|
|
153
|
-
return raw;
|
|
154
|
-
return 'UNKNOWN';
|
|
155
|
-
}
|
|
156
|
-
function normalizeMergeStateStatus(raw) {
|
|
157
|
-
if (raw === 'BEHIND' ||
|
|
158
|
-
raw === 'BLOCKED' ||
|
|
159
|
-
raw === 'CLEAN' ||
|
|
160
|
-
raw === 'DIRTY' ||
|
|
161
|
-
raw === 'DRAFT' ||
|
|
162
|
-
raw === 'HAS_HOOKS' ||
|
|
163
|
-
raw === 'UNKNOWN' ||
|
|
164
|
-
raw === 'UNSTABLE') {
|
|
165
|
-
return raw;
|
|
166
|
-
}
|
|
167
|
-
return 'UNKNOWN';
|
|
168
|
-
}
|
|
169
|
-
function normalizeReviewDecision(raw) {
|
|
170
|
-
if (raw === 'APPROVED' || raw === 'CHANGES_REQUESTED' || raw === 'REVIEW_REQUIRED')
|
|
171
|
-
return raw;
|
|
172
|
-
return null;
|
|
173
|
-
}
|
|
174
|
-
//# sourceMappingURL=pr-adapters.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pr-adapters.js","sourceRoot":"","sources":["../../src/reconciler/pr-adapters.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pr-decide.js","sourceRoot":"","sources":["../../src/reconciler/pr-decide.ts"],"names":[],"mappings":"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"}
|
package/dist/reconciler/pr.js
DELETED
|
@@ -1,422 +0,0 @@
|
|
|
1
|
-
// PR autopilot resource (issue 38 / reconciler stage 4). Owns the lifecycle of
|
|
2
|
-
// each terminal-state issue's GitHub PR: arms `gh pr merge --auto` when the
|
|
3
|
-
// PR is mergeable, routes non-mergeable PRs back to the implementing state
|
|
4
|
-
// (where the agent rebases onto a freshly-fetched base as part of its normal
|
|
5
|
-
// flow), and reaps workspace + remote branch once GitHub merges or closes
|
|
6
|
-
// the PR. Sits behind the PR engine toggle (`pr.enabled`) so a workflow that
|
|
7
|
-
// hasn't opted in observes no behavior change at runtime.
|
|
8
|
-
//
|
|
9
|
-
// Desired state per issue:
|
|
10
|
-
// - identifier in `merge_state` (e.g. Done) with a MERGEABLE open PR:
|
|
11
|
-
// `gh pr merge --auto --<strategy>` is armed.
|
|
12
|
-
// - identifier in `merge_state` with a CONFLICTING (or otherwise non-
|
|
13
|
-
// mergeable) open PR: issue is routed back to `conflict_route_to`
|
|
14
|
-
// (default: the first declared active state) with notes; the dispatched
|
|
15
|
-
// agent owns the rebase.
|
|
16
|
-
// - identifier in `merge_state` whose PR has merged or closed:
|
|
17
|
-
// local + (best-effort) remote branch deleted; workspace removed.
|
|
18
|
-
// - identifier in `close_state` (e.g. Cancelled) with an open PR:
|
|
19
|
-
// PR closed without merge; branches deleted.
|
|
20
|
-
//
|
|
21
|
-
// Actual state per issue:
|
|
22
|
-
// - PR view from `gh pr view <#> --json mergeable,base/head ref/oid,…`.
|
|
23
|
-
// Cached for `poll_interval_ms` per PR so a fast reconcile cadence does not
|
|
24
|
-
// storm the GH API.
|
|
25
|
-
//
|
|
26
|
-
// Conflict handling: the autopilot does not rebase. A non-mergeable PR is
|
|
27
|
-
// reported (notes block + state transition) and the dispatched agent does
|
|
28
|
-
// the work. This matches the workspace clone model: the host runs
|
|
29
|
-
// `git fetch origin <base>` before each dispatch so `origin/<base>` is
|
|
30
|
-
// current in the workspace, and the Todo prompt instructs the agent to
|
|
31
|
-
// `git rebase origin/<base>` as the first step.
|
|
32
|
-
//
|
|
33
|
-
// All GH I/O is behind injectable callbacks. Production wires real shell-outs
|
|
34
|
-
// (see `./pr-adapters.ts` — the shell module that implements PrApi against
|
|
35
|
-
// `gh` on the host); tests pass synchronous stubs.
|
|
36
|
-
import { log } from '../logging.js';
|
|
37
|
-
import { realClock } from '../util/clock.js';
|
|
38
|
-
import { ResourceActionLedger } from './ledger.js';
|
|
39
|
-
import { decidePr, } from './pr-decide.js';
|
|
40
|
-
const MAX_ACTION_HISTORY = 64;
|
|
41
|
-
export class PrResource {
|
|
42
|
-
opts;
|
|
43
|
-
id = 'pr';
|
|
44
|
-
dependsOn = [];
|
|
45
|
-
state = new Map();
|
|
46
|
-
lastError = null;
|
|
47
|
-
now;
|
|
48
|
-
actor;
|
|
49
|
-
ledger;
|
|
50
|
-
constructor(opts) {
|
|
51
|
-
this.opts = opts;
|
|
52
|
-
this.now = opts.now ?? realClock;
|
|
53
|
-
this.actor = opts.actor ?? 'pr-autopilot';
|
|
54
|
-
this.ledger = new ResourceActionLedger(this.id, {
|
|
55
|
-
now: this.now,
|
|
56
|
-
maxHistory: MAX_ACTION_HISTORY,
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
ready() {
|
|
60
|
-
return true;
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* One reconcile pass. Returns when every intended issue has been considered
|
|
64
|
-
* (a single in-flight action per issue is awaited in series — concurrent
|
|
65
|
-
* git operations across distinct workspaces are safe in principle, but the
|
|
66
|
-
* orchestrator's broader concurrency model expects serial action ledger
|
|
67
|
-
* writes within a single resource). Errors are caught at the action
|
|
68
|
-
* boundary so one failing issue does not block the rest.
|
|
69
|
-
*/
|
|
70
|
-
async reconcile() {
|
|
71
|
-
let intents;
|
|
72
|
-
try {
|
|
73
|
-
intents = await this.opts.intended.prIntended();
|
|
74
|
-
}
|
|
75
|
-
catch (err) {
|
|
76
|
-
const msg = err.message;
|
|
77
|
-
this.lastError = `pr_intended_fetch_failed: ${msg}`;
|
|
78
|
-
log.warn('pr reconcile: intended fetch failed', { error: msg });
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
// For identifiers no longer in the intended set, drop the per-issue
|
|
82
|
-
// state entirely — there is no counter to preserve anymore; the next
|
|
83
|
-
// return to the merge state re-resolves everything from gh.
|
|
84
|
-
const wanted = new Set(intents.map((i) => i.identifier));
|
|
85
|
-
for (const id of [...this.state.keys()]) {
|
|
86
|
-
if (!wanted.has(id))
|
|
87
|
-
this.state.delete(id);
|
|
88
|
-
}
|
|
89
|
-
// Reset per-pass error so a transient failure that has resolved doesn't
|
|
90
|
-
// keep haunting the snapshot. Per-action errors will repopulate it.
|
|
91
|
-
this.lastError = null;
|
|
92
|
-
for (const intent of intents) {
|
|
93
|
-
try {
|
|
94
|
-
await this.processIntent(intent);
|
|
95
|
-
}
|
|
96
|
-
catch (err) {
|
|
97
|
-
const msg = err.message;
|
|
98
|
-
this.lastError = msg;
|
|
99
|
-
log.warn('pr reconcile: per-issue pass threw', {
|
|
100
|
-
identifier: intent.identifier,
|
|
101
|
-
kind: intent.kind,
|
|
102
|
-
error: msg,
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
snapshot() {
|
|
108
|
-
return {
|
|
109
|
-
id: this.id,
|
|
110
|
-
ready: true,
|
|
111
|
-
desired_hash: null,
|
|
112
|
-
last_error: this.lastError,
|
|
113
|
-
actions: this.ledger.snapshot(),
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
|
-
/** Test helper: read the cached PR view (post-pass). */
|
|
117
|
-
viewFor(identifier) {
|
|
118
|
-
return this.state.get(identifier)?.prView ?? null;
|
|
119
|
-
}
|
|
120
|
-
getOrInit(identifier) {
|
|
121
|
-
let st = this.state.get(identifier);
|
|
122
|
-
if (!st) {
|
|
123
|
-
st = {
|
|
124
|
-
prSummary: undefined,
|
|
125
|
-
lastLookupAt: 0,
|
|
126
|
-
prView: null,
|
|
127
|
-
lastViewAt: 0,
|
|
128
|
-
lastObservedHeadSha: null,
|
|
129
|
-
armed: false,
|
|
130
|
-
completed: false,
|
|
131
|
-
};
|
|
132
|
-
this.state.set(identifier, st);
|
|
133
|
-
}
|
|
134
|
-
return st;
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Wipe everything except `completed`. Used when we route the issue back
|
|
138
|
-
* to the implementing state so the next return to the merge state starts
|
|
139
|
-
* with a fresh PR view.
|
|
140
|
-
*/
|
|
141
|
-
resetTransient(st) {
|
|
142
|
-
st.prSummary = undefined;
|
|
143
|
-
st.lastLookupAt = 0;
|
|
144
|
-
st.prView = null;
|
|
145
|
-
st.lastViewAt = 0;
|
|
146
|
-
st.lastObservedHeadSha = null;
|
|
147
|
-
st.armed = false;
|
|
148
|
-
st.completed = false;
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Drive one intent through the decide → apply loop. Observation is rebuilt
|
|
152
|
-
* incrementally as each effect runs: `observe_summary` / `observe_view`
|
|
153
|
-
* populate fields the next `decidePr` call consults; pure cache mutations
|
|
154
|
-
* fold straight into the next iteration's `cache` snapshot. The cap is a
|
|
155
|
-
* defensive guard — decide reduces work on every iteration (a `_resolved`
|
|
156
|
-
* flag flips, or an outcome lands) so it terminates well inside the bound.
|
|
157
|
-
*/
|
|
158
|
-
async processIntent(intent) {
|
|
159
|
-
let obs = this.buildObservation(intent);
|
|
160
|
-
for (let i = 0; i < 12; i += 1) {
|
|
161
|
-
const effects = decidePr(obs);
|
|
162
|
-
if (effects.length === 0)
|
|
163
|
-
return;
|
|
164
|
-
for (const eff of effects) {
|
|
165
|
-
obs = await this.applyEffect(eff, obs);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
log.warn('pr reconcile: decide loop iteration cap reached', {
|
|
169
|
-
identifier: intent.identifier,
|
|
170
|
-
});
|
|
171
|
-
}
|
|
172
|
-
buildObservation(intent) {
|
|
173
|
-
const st = this.getOrInit(intent.identifier);
|
|
174
|
-
return {
|
|
175
|
-
intent,
|
|
176
|
-
cache: this.cacheView(st),
|
|
177
|
-
summaryResolved: false,
|
|
178
|
-
summary: null,
|
|
179
|
-
viewResolved: false,
|
|
180
|
-
view: null,
|
|
181
|
-
closeAttempted: false,
|
|
182
|
-
closeOutcome: null,
|
|
183
|
-
halt: false,
|
|
184
|
-
config: {
|
|
185
|
-
strategy: this.opts.strategy,
|
|
186
|
-
conflictRouteTo: this.opts.conflictRouteTo,
|
|
187
|
-
},
|
|
188
|
-
};
|
|
189
|
-
}
|
|
190
|
-
cacheView(st) {
|
|
191
|
-
return {
|
|
192
|
-
completed: st.completed,
|
|
193
|
-
armed: st.armed,
|
|
194
|
-
lastObservedHeadSha: st.lastObservedHeadSha,
|
|
195
|
-
};
|
|
196
|
-
}
|
|
197
|
-
static EMPTY_CACHE = {
|
|
198
|
-
completed: false,
|
|
199
|
-
armed: false,
|
|
200
|
-
lastObservedHeadSha: null,
|
|
201
|
-
};
|
|
202
|
-
/**
|
|
203
|
-
* Apply one effect from `decidePr`. IO effects route through the existing
|
|
204
|
-
* ledger-wrapped port helpers; cache mutations land on the live
|
|
205
|
-
* `PerIssueState` and the returned observation reflects the new cache view
|
|
206
|
-
* so the next `decidePr` call sees the change.
|
|
207
|
-
*/
|
|
208
|
-
async applyEffect(eff, obs) {
|
|
209
|
-
switch (eff.kind) {
|
|
210
|
-
case 'observe_summary': {
|
|
211
|
-
const st = this.getOrInit(eff.identifier);
|
|
212
|
-
const summary = await this.lookupPrSummary(obs.intent, st);
|
|
213
|
-
return { ...obs, summaryResolved: true, summary, cache: this.cacheView(st) };
|
|
214
|
-
}
|
|
215
|
-
case 'observe_view': {
|
|
216
|
-
const st = this.getOrInit(eff.identifier);
|
|
217
|
-
const view = await this.fetchPrView(eff.identifier, eff.prNumber, st);
|
|
218
|
-
return { ...obs, viewResolved: true, view, cache: this.cacheView(st) };
|
|
219
|
-
}
|
|
220
|
-
case 'arm_auto_merge': {
|
|
221
|
-
await this.runArmAutoMerge(eff.identifier, eff.prNumber, eff.strategy);
|
|
222
|
-
const st = this.getOrInit(eff.identifier);
|
|
223
|
-
st.armed = true;
|
|
224
|
-
return { ...obs, cache: this.cacheView(st) };
|
|
225
|
-
}
|
|
226
|
-
case 'update_branch': {
|
|
227
|
-
await this.runUpdateBranch(eff.identifier, eff.prNumber);
|
|
228
|
-
// Halt the pass: the cached view still reads BEHIND so re-deciding
|
|
229
|
-
// would re-emit the effect every iteration. The per-PR poll TTL
|
|
230
|
-
// throttles the next `view()` call, by which point gh has refreshed
|
|
231
|
-
// mergeStateStatus (or the head_ref_oid moved). See issue 105.
|
|
232
|
-
return { ...obs, halt: true };
|
|
233
|
-
}
|
|
234
|
-
case 'close_pr': {
|
|
235
|
-
const ok = await this.runClosePr(eff.identifier, eff.prNumber);
|
|
236
|
-
return { ...obs, closeAttempted: true, closeOutcome: { ok } };
|
|
237
|
-
}
|
|
238
|
-
case 'delete_remote_branch': {
|
|
239
|
-
await this.runDeleteRemoteBranch(eff.identifier, eff.branch);
|
|
240
|
-
return obs;
|
|
241
|
-
}
|
|
242
|
-
case 'cleanup_workspace': {
|
|
243
|
-
await this.runCleanupWorkspace(eff.identifier);
|
|
244
|
-
return obs;
|
|
245
|
-
}
|
|
246
|
-
case 'route_conflict': {
|
|
247
|
-
await this.runConflictTransition(eff);
|
|
248
|
-
return { ...obs, halt: true };
|
|
249
|
-
}
|
|
250
|
-
case 'update_observed_head': {
|
|
251
|
-
const st = this.getOrInit(eff.identifier);
|
|
252
|
-
st.lastObservedHeadSha = eff.sha;
|
|
253
|
-
return { ...obs, cache: this.cacheView(st) };
|
|
254
|
-
}
|
|
255
|
-
case 'mark_completed': {
|
|
256
|
-
const st = this.getOrInit(eff.identifier);
|
|
257
|
-
st.completed = true;
|
|
258
|
-
return { ...obs, cache: this.cacheView(st) };
|
|
259
|
-
}
|
|
260
|
-
case 'reset_transient': {
|
|
261
|
-
const st = this.state.get(eff.identifier);
|
|
262
|
-
if (st)
|
|
263
|
-
this.resetTransient(st);
|
|
264
|
-
// Always paired with route_conflict; terminal for this pass.
|
|
265
|
-
return {
|
|
266
|
-
...obs,
|
|
267
|
-
cache: st ? this.cacheView(st) : PrResource.EMPTY_CACHE,
|
|
268
|
-
halt: true,
|
|
269
|
-
};
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
// ─── helpers: per-action wrappers with ledger + cache plumbing ──────────
|
|
274
|
-
async lookupPrSummary(intent, st) {
|
|
275
|
-
// Sticky cache once we have a number: PR numbers don't change, and the
|
|
276
|
-
// PR moving to MERGED/CLOSED must not cause us to "forget" it — that
|
|
277
|
-
// would skip the terminal observation the autopilot needs to drive
|
|
278
|
-
// cleanup. Re-listing is restricted to the never-found-yet / still-null
|
|
279
|
-
// paths below.
|
|
280
|
-
if (st.prSummary)
|
|
281
|
-
return st.prSummary;
|
|
282
|
-
const now = this.now();
|
|
283
|
-
if (st.prSummary === null &&
|
|
284
|
-
now - st.lastLookupAt < this.opts.pollIntervalMs) {
|
|
285
|
-
// Still in the null-result TTL window: defer instead of re-querying.
|
|
286
|
-
return null;
|
|
287
|
-
}
|
|
288
|
-
const actionKey = `list_pr_for_branch:${intent.identifier}`;
|
|
289
|
-
this.ledger.start(actionKey);
|
|
290
|
-
try {
|
|
291
|
-
const result = await this.opts.pr.listForBranch(intent.branch);
|
|
292
|
-
st.prSummary = result;
|
|
293
|
-
st.lastLookupAt = now;
|
|
294
|
-
this.ledger.done(actionKey);
|
|
295
|
-
return result;
|
|
296
|
-
}
|
|
297
|
-
catch (err) {
|
|
298
|
-
const msg = err.message;
|
|
299
|
-
this.lastError = `list_pr_failed: ${msg}`;
|
|
300
|
-
this.ledger.error(actionKey, msg);
|
|
301
|
-
return null;
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
async fetchPrView(identifier, prNumber, st) {
|
|
305
|
-
const now = this.now();
|
|
306
|
-
if (st.prView !== null && now - st.lastViewAt < this.opts.pollIntervalMs) {
|
|
307
|
-
return st.prView;
|
|
308
|
-
}
|
|
309
|
-
const actionKey = `view_pr:${prNumber}`;
|
|
310
|
-
this.ledger.start(actionKey);
|
|
311
|
-
try {
|
|
312
|
-
const view = await this.opts.pr.view(prNumber);
|
|
313
|
-
st.prView = view;
|
|
314
|
-
st.lastViewAt = now;
|
|
315
|
-
st.lastObservedHeadSha = view.head_ref_oid;
|
|
316
|
-
st.armed = view.auto_merge_armed;
|
|
317
|
-
this.ledger.done(actionKey);
|
|
318
|
-
return view;
|
|
319
|
-
}
|
|
320
|
-
catch (err) {
|
|
321
|
-
const msg = err.message;
|
|
322
|
-
this.lastError = `view_pr_failed: ${msg}`;
|
|
323
|
-
this.ledger.error(actionKey, msg);
|
|
324
|
-
log.warn('pr reconcile: view failed', {
|
|
325
|
-
identifier,
|
|
326
|
-
pr_number: prNumber,
|
|
327
|
-
error: msg,
|
|
328
|
-
});
|
|
329
|
-
return null;
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
async runArmAutoMerge(identifier, prNumber, strategy) {
|
|
333
|
-
const actionKey = `arm_auto_merge:${prNumber}`;
|
|
334
|
-
const res = await this.ledger.run(actionKey, () => this.opts.pr.armAutoMerge(prNumber, strategy));
|
|
335
|
-
if (res.ok) {
|
|
336
|
-
log.info('pr reconcile: armed auto-merge', {
|
|
337
|
-
identifier,
|
|
338
|
-
pr_number: prNumber,
|
|
339
|
-
strategy,
|
|
340
|
-
});
|
|
341
|
-
}
|
|
342
|
-
else {
|
|
343
|
-
this.lastError = res.error;
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
async runUpdateBranch(identifier, prNumber) {
|
|
347
|
-
const actionKey = `update_branch:${prNumber}`;
|
|
348
|
-
const res = await this.ledger.run(actionKey, () => this.opts.pr.updateBranch(prNumber));
|
|
349
|
-
if (res.ok) {
|
|
350
|
-
log.info('pr reconcile: updated branch onto base', {
|
|
351
|
-
identifier,
|
|
352
|
-
pr_number: prNumber,
|
|
353
|
-
});
|
|
354
|
-
}
|
|
355
|
-
else {
|
|
356
|
-
this.lastError = res.error;
|
|
357
|
-
}
|
|
358
|
-
}
|
|
359
|
-
async runClosePr(identifier, prNumber) {
|
|
360
|
-
const actionKey = `close_pr:${prNumber}`;
|
|
361
|
-
const res = await this.ledger.run(actionKey, () => this.opts.pr.closePr(prNumber));
|
|
362
|
-
if (res.ok) {
|
|
363
|
-
log.info('pr reconcile: closed pr', { identifier, pr_number: prNumber });
|
|
364
|
-
return true;
|
|
365
|
-
}
|
|
366
|
-
this.lastError = res.error;
|
|
367
|
-
return false;
|
|
368
|
-
}
|
|
369
|
-
async runDeleteRemoteBranch(identifier, branch) {
|
|
370
|
-
const actionKey = `delete_remote_branch:${branch}`;
|
|
371
|
-
const res = await this.ledger.run(actionKey, () => this.opts.pr.deleteRemoteBranch(branch));
|
|
372
|
-
if (!res.ok) {
|
|
373
|
-
// Remote-branch deletion is best-effort — the branch may already be
|
|
374
|
-
// gone (gh exits non-zero), or the operator may have removed it. We
|
|
375
|
-
// log at info, surface in last_error, and move on.
|
|
376
|
-
this.lastError = `delete_remote_branch_failed: ${res.error}`;
|
|
377
|
-
log.info('pr reconcile: remote branch delete failed (best-effort)', {
|
|
378
|
-
identifier,
|
|
379
|
-
branch,
|
|
380
|
-
error: res.error,
|
|
381
|
-
});
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
async runCleanupWorkspace(identifier) {
|
|
385
|
-
const actionKey = `cleanup_workspace:${identifier}`;
|
|
386
|
-
const res = await this.ledger.run(actionKey, () => this.opts.cleanup.removeWorkspace(identifier));
|
|
387
|
-
if (!res.ok)
|
|
388
|
-
this.lastError = res.error;
|
|
389
|
-
}
|
|
390
|
-
/**
|
|
391
|
-
* Apply the `route_conflict` effect: same tracker.routeIssue call shape and
|
|
392
|
-
* action-ledger key as before. State cleanup (`reset_transient`) rides as
|
|
393
|
-
* a separate effect emitted by `decidePr` so the routing logic is testable
|
|
394
|
-
* as pure data.
|
|
395
|
-
*/
|
|
396
|
-
async runConflictTransition(eff) {
|
|
397
|
-
const actionKey = `route_to_conflict:${eff.identifier}:${eff.toState.toLowerCase()}`;
|
|
398
|
-
const res = await this.ledger.run(actionKey, () => this.opts.transition.routeIssue({
|
|
399
|
-
identifier: eff.identifier,
|
|
400
|
-
fromState: eff.fromState,
|
|
401
|
-
toState: eff.toState,
|
|
402
|
-
notes: eff.notes,
|
|
403
|
-
actor: this.actor,
|
|
404
|
-
}));
|
|
405
|
-
if (res.ok) {
|
|
406
|
-
log.info('pr reconcile: routed to implementing state', {
|
|
407
|
-
identifier: eff.identifier,
|
|
408
|
-
from_state: eff.fromState,
|
|
409
|
-
to_state: eff.toState,
|
|
410
|
-
});
|
|
411
|
-
}
|
|
412
|
-
else {
|
|
413
|
-
this.lastError = res.error;
|
|
414
|
-
log.warn('pr reconcile: conflict route failed', {
|
|
415
|
-
identifier: eff.identifier,
|
|
416
|
-
to_state: eff.toState,
|
|
417
|
-
error: res.error,
|
|
418
|
-
});
|
|
419
|
-
}
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
//# sourceMappingURL=pr.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pr.js","sourceRoot":"","sources":["../../src/reconciler/pr.ts"],"names":[],"mappings":"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"}
|
package/dist/reconciler/types.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
// Reconciler types (issue 32 / future issue 31).
|
|
2
|
-
//
|
|
3
|
-
// The reconciler converges managed external resources (VM reaper, workspace
|
|
4
|
-
// janitor, PR autopilot) toward a declared desired state. Each resource
|
|
5
|
-
// describes its work as typed action records — not opaque closures — so
|
|
6
|
-
// per-action progress can be surfaced on Snapshot and the same record shape
|
|
7
|
-
// can be reused for hook-declared actions.
|
|
8
|
-
//
|
|
9
|
-
// Action records carry a discriminant `kind`; new kinds are added as more
|
|
10
|
-
// resources land in later stages of the reconciler refactor.
|
|
11
|
-
export {};
|
|
12
|
-
//# sourceMappingURL=types.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/reconciler/types.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,EAAE;AACF,4EAA4E;AAC5E,wEAAwE;AACxE,wEAAwE;AACxE,4EAA4E;AAC5E,2CAA2C;AAC3C,EAAE;AACF,0EAA0E;AAC1E,6DAA6D"}
|