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
package/dist/util/process.js
DELETED
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
// Unified child_process wrapper (issue 44). Owns spawn lifecycle for every
|
|
2
|
-
// host-side shell-out: git, gh, and similar tooling. Replaces seven near-
|
|
3
|
-
// identical wrappers that had each independently re-encoded the same spawn
|
|
4
|
-
// quirks (pipe both streams, accumulate with a max-bytes clamp, optional
|
|
5
|
-
// onChunk capture, optional timeout that SIGKILLs on overrun, optional
|
|
6
|
-
// cwd/env override).
|
|
7
|
-
//
|
|
8
|
-
// The single owner is what makes subprocess-management changes one-file
|
|
9
|
-
// edits — zombie reaping, prctl(PR_SET_PDEATHSIG), signal-propagation
|
|
10
|
-
// quirks all land here once instead of being applied seven times.
|
|
11
|
-
import { spawn } from 'node:child_process';
|
|
12
|
-
/**
|
|
13
|
-
* Default per-stream byte clamp. Picked to match the dominant value across
|
|
14
|
-
* the wrappers this module replaces (workspace, agent/integration,
|
|
15
|
-
* actions/executor all used 65_536). Callers needing a larger buffer
|
|
16
|
-
* (e.g. a large `git`/`gh` JSON payload) pass `maxBytes` explicitly.
|
|
17
|
-
*/
|
|
18
|
-
export const DEFAULT_MAX_BYTES = 65_536;
|
|
19
|
-
/**
|
|
20
|
-
* Run a process and capture its output. The single source of truth for
|
|
21
|
-
* spawn-lifecycle behavior in this codebase: every shell-out goes through
|
|
22
|
-
* here, so timeout, capture, env merge, and clamp all live in one place.
|
|
23
|
-
*
|
|
24
|
-
* Resolves (never rejects). Failure cases:
|
|
25
|
-
* - Spawn errored (ENOENT, EACCES): exit_code = null, stderr includes the
|
|
26
|
-
* OS error message when `appendErrorToStderr` is true.
|
|
27
|
-
* - Process timed out: timed_out = true, signal = 'SIGKILL'.
|
|
28
|
-
* - Process exited non-zero: exit_code carries the code.
|
|
29
|
-
*
|
|
30
|
-
* Callers that want a throwing variant use {@link runProcessExpect}.
|
|
31
|
-
*/
|
|
32
|
-
export function runProcess(bin, args, opts = {}) {
|
|
33
|
-
const maxBytes = opts.maxBytes ?? DEFAULT_MAX_BYTES;
|
|
34
|
-
const appendErr = opts.appendErrorToStderr ?? true;
|
|
35
|
-
const env = opts.env ? { ...process.env, ...opts.env } : process.env;
|
|
36
|
-
return new Promise((resolve) => {
|
|
37
|
-
const child = spawn(bin, args, {
|
|
38
|
-
cwd: opts.cwd,
|
|
39
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
40
|
-
env: env,
|
|
41
|
-
});
|
|
42
|
-
let stdout = '';
|
|
43
|
-
let stderr = '';
|
|
44
|
-
let timedOut = false;
|
|
45
|
-
let settled = false;
|
|
46
|
-
child.stdout?.on('data', (b) => {
|
|
47
|
-
const text = b.toString('utf8');
|
|
48
|
-
stdout += text;
|
|
49
|
-
if (stdout.length > maxBytes)
|
|
50
|
-
stdout = stdout.slice(0, maxBytes);
|
|
51
|
-
opts.capture?.onChunk?.('stdout', text);
|
|
52
|
-
});
|
|
53
|
-
child.stderr?.on('data', (b) => {
|
|
54
|
-
const text = b.toString('utf8');
|
|
55
|
-
stderr += text;
|
|
56
|
-
if (stderr.length > maxBytes)
|
|
57
|
-
stderr = stderr.slice(0, maxBytes);
|
|
58
|
-
opts.capture?.onChunk?.('stderr', text);
|
|
59
|
-
});
|
|
60
|
-
// SIGKILLing the child on timeout (or any abrupt exit) can abort the
|
|
61
|
-
// in-flight read on a stdio pipe; libuv then emits an 'error' (an
|
|
62
|
-
// AbortError/ECONNRESET/EPIPE) on stdout/stderr. The authoritative outcome
|
|
63
|
-
// already arrives via the child's 'close'/'error' handlers below, so a
|
|
64
|
-
// pipe-level read error is not actionable here — but an EventEmitter with
|
|
65
|
-
// no 'error' listener rethrows it as an uncaughtException that crashes the
|
|
66
|
-
// host. Under `node --test` that crash is non-deterministic (it depends on
|
|
67
|
-
// whether the kill races the pending read) and gets blamed on whichever
|
|
68
|
-
// test is running as an "unhandled error during cleanup". Swallow it; the
|
|
69
|
-
// result is still driven entirely by 'close'. (issue 143)
|
|
70
|
-
const ignorePipeError = () => {
|
|
71
|
-
/* read aborted on kill — outcome comes from 'close' */
|
|
72
|
-
};
|
|
73
|
-
child.stdout?.on('error', ignorePipeError);
|
|
74
|
-
child.stderr?.on('error', ignorePipeError);
|
|
75
|
-
const timer = opts.timeoutMs && opts.timeoutMs > 0
|
|
76
|
-
? setTimeout(() => {
|
|
77
|
-
timedOut = true;
|
|
78
|
-
child.kill('SIGKILL');
|
|
79
|
-
}, opts.timeoutMs)
|
|
80
|
-
: null;
|
|
81
|
-
const finish = (r) => {
|
|
82
|
-
// Spawn failures emit both `error` and `close` for the same child (Node
|
|
83
|
-
// emits ENOENT as `error` then synthesizes a `close` with code=-2). Both
|
|
84
|
-
// handlers route here, so guard against double-settling — `onResult` is
|
|
85
|
-
// documented as firing once, and downstream consumers (run-log and
|
|
86
|
-
// action results) rely on that.
|
|
87
|
-
if (settled)
|
|
88
|
-
return;
|
|
89
|
-
settled = true;
|
|
90
|
-
if (timer)
|
|
91
|
-
clearTimeout(timer);
|
|
92
|
-
opts.capture?.onResult?.(r);
|
|
93
|
-
resolve(r);
|
|
94
|
-
};
|
|
95
|
-
child.on('error', (err) => {
|
|
96
|
-
const errStderr = appendErr ? `${stderr}${stderr.length > 0 ? '\n' : ''}${err.message}` : stderr;
|
|
97
|
-
finish({
|
|
98
|
-
ran: true,
|
|
99
|
-
exit_code: null,
|
|
100
|
-
signal: null,
|
|
101
|
-
timed_out: timedOut,
|
|
102
|
-
stdout,
|
|
103
|
-
stderr: errStderr.length > maxBytes ? errStderr.slice(0, maxBytes) : errStderr,
|
|
104
|
-
});
|
|
105
|
-
});
|
|
106
|
-
child.on('close', (code, signal) => {
|
|
107
|
-
finish({
|
|
108
|
-
ran: true,
|
|
109
|
-
exit_code: code,
|
|
110
|
-
signal: signal ?? null,
|
|
111
|
-
timed_out: timedOut,
|
|
112
|
-
stdout,
|
|
113
|
-
stderr,
|
|
114
|
-
});
|
|
115
|
-
});
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Throwing variant. Rejects with a {@link RunProcessError} when the process
|
|
120
|
-
* timed out, was signalled, or exited non-zero (including `exit_code === null`
|
|
121
|
-
* from a spawn error). Thin convenience over {@link runProcess} — the result
|
|
122
|
-
* is still attached to the error so callers can inspect captured output.
|
|
123
|
-
*/
|
|
124
|
-
export async function runProcessExpect(bin, args, opts = {}) {
|
|
125
|
-
const r = await runProcess(bin, args, opts);
|
|
126
|
-
if (r.exit_code !== 0 || r.timed_out || r.signal !== null) {
|
|
127
|
-
throw new RunProcessError(bin, args, r);
|
|
128
|
-
}
|
|
129
|
-
return r;
|
|
130
|
-
}
|
|
131
|
-
export class RunProcessError extends Error {
|
|
132
|
-
bin;
|
|
133
|
-
args;
|
|
134
|
-
result;
|
|
135
|
-
constructor(bin, args, result) {
|
|
136
|
-
super(`${bin} ${args.join(' ')} ${describeRunFailure(result)}`);
|
|
137
|
-
this.bin = bin;
|
|
138
|
-
this.args = args;
|
|
139
|
-
this.result = result;
|
|
140
|
-
this.name = 'RunProcessError';
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
/** Shared phrasing for run failure causes; used by RunProcessError and callers
|
|
144
|
-
* that want to surface the same wording (e.g. workspace.ts WorkspaceError). */
|
|
145
|
-
export function describeRunFailure(r) {
|
|
146
|
-
if (r.timed_out)
|
|
147
|
-
return 'timed out';
|
|
148
|
-
if (r.signal !== null)
|
|
149
|
-
return `terminated by signal ${r.signal}`;
|
|
150
|
-
return `exited with code ${r.exit_code}`;
|
|
151
|
-
}
|
|
152
|
-
//# sourceMappingURL=process.js.map
|
package/dist/util/process.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../src/util/process.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
// Pure string helper for deriving filename-safe identifiers used as workspace keys
|
|
2
|
-
// and runlog file stems. Lives in the foundation layer so adapters (runlog) and other
|
|
3
|
-
// domain modules (issues) can depend on it without crossing the adapters↛inward
|
|
4
|
-
// boundary that previously routed both through `src/workspace.ts`.
|
|
5
|
-
//
|
|
6
|
-
// SPEC §5.5 Invariant 3: only [A-Za-z0-9._-] survive; everything else collapses to `_`.
|
|
7
|
-
export function sanitizeWorkspaceKey(identifier) {
|
|
8
|
-
return identifier.replace(/[^A-Za-z0-9._-]/g, '_');
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=workspace-key.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-key.js","sourceRoot":"","sources":["../../src/util/workspace-key.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,sFAAsF;AACtF,gFAAgF;AAChF,mEAAmE;AACnE,EAAE;AACF,wFAAwF;AAExF,MAAM,UAAU,oBAAoB,CAAC,UAAkB;IACrD,OAAO,UAAU,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;AACrD,CAAC"}
|
package/dist/workflow-loader.js
DELETED
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
// WORKFLOW.md file loader, watcher, and IO-touching dispatch validation.
|
|
2
|
-
//
|
|
3
|
-
// This module is the imperative shell around the pure `parseWorkflow`
|
|
4
|
-
// (src/workflow.ts): it reads the file off disk, captures `process.env`, and
|
|
5
|
-
// runs the fs probes (`tracker.root` existence,
|
|
6
|
-
// per-state credential readability) that the pure validator cannot. The
|
|
7
|
-
// chokidar watcher lives here too — on every reload it re-reads the file and
|
|
8
|
-
// re-invokes the pure parser, then publishes to listeners.
|
|
9
|
-
import path from 'node:path';
|
|
10
|
-
import process from 'node:process';
|
|
11
|
-
import { readFile } from 'node:fs/promises';
|
|
12
|
-
import { accessSync, constants as fsConstants, existsSync, readFileSync, statSync } from 'node:fs';
|
|
13
|
-
import chokidar from 'chokidar';
|
|
14
|
-
import { parseWorkflow, WorkflowError, } from './workflow.js';
|
|
15
|
-
import { codexCredentialAvailable, codexMissingCredentialMessage, hostClaudeCredentialPath, hostCodexCredentialPath, isKnownAdapter, } from './agent/adapter-names.js';
|
|
16
|
-
import { log } from './logging.js';
|
|
17
|
-
/**
|
|
18
|
-
* Read the workflow file and parse it. Pure-parser caller: catches read
|
|
19
|
-
* failures (re-throwing as the existing `missing_workflow_file` code so
|
|
20
|
-
* downstream error matching keeps working) and threads `process.env` in so
|
|
21
|
-
* `$VAR` expansion + `XDG_RUNTIME_DIR` default resolution see the same env
|
|
22
|
-
* the operator launched symphony under.
|
|
23
|
-
*/
|
|
24
|
-
export async function loadWorkflow(workflowPath) {
|
|
25
|
-
const abs = path.resolve(workflowPath);
|
|
26
|
-
let text;
|
|
27
|
-
try {
|
|
28
|
-
text = await readFile(abs, 'utf8');
|
|
29
|
-
}
|
|
30
|
-
catch (err) {
|
|
31
|
-
throw new WorkflowError('missing_workflow_file', `cannot read ${abs}: ${err.message}`);
|
|
32
|
-
}
|
|
33
|
-
return parseWorkflow(text, abs, process.env);
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* IO-touching dispatch checks. Run alongside the pure `validateDispatch`:
|
|
37
|
-
* tracker.root must be a real directory, and any per-state adapter override
|
|
38
|
-
* must have a readable host credential. Returns null when every probe passes.
|
|
39
|
-
*/
|
|
40
|
-
export function validateDispatchIo(cfg) {
|
|
41
|
-
if (cfg.tracker.kind === 'local' && cfg.tracker.root) {
|
|
42
|
-
if (!existsSync(cfg.tracker.root) || !statSync(cfg.tracker.root).isDirectory()) {
|
|
43
|
-
return `tracker.root not found or not a directory: ${cfg.tracker.root}`;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
for (const [name, sc] of Object.entries(cfg.states)) {
|
|
47
|
-
const credError = probeStateCredential(name, sc.adapter);
|
|
48
|
-
if (credError)
|
|
49
|
-
return credError;
|
|
50
|
-
}
|
|
51
|
-
return null;
|
|
52
|
-
}
|
|
53
|
-
// Both adapters have a host credential we can probe at load time. claude: the
|
|
54
|
-
// host reads `~/.claude/.credentials.json` and substitutes the live access token
|
|
55
|
-
// into the outbound request at Gondolin egress. codex: the host reads either a
|
|
56
|
-
// `~/.codex/auth.json` token or an `OPENAI_API_KEY` env var. A missing credential
|
|
57
|
-
// fails here at load time instead of as an opaque per-request egress failure
|
|
58
|
-
// mid-dispatch.
|
|
59
|
-
function probeStateCredential(stateName, adapter) {
|
|
60
|
-
if (adapter === undefined || !isKnownAdapter(adapter))
|
|
61
|
-
return null;
|
|
62
|
-
if (adapter === 'claude')
|
|
63
|
-
return probeClaudeStateCredential(stateName);
|
|
64
|
-
if (adapter === 'codex')
|
|
65
|
-
return probeCodexStateCredential(stateName);
|
|
66
|
-
return null;
|
|
67
|
-
}
|
|
68
|
-
function probeClaudeStateCredential(stateName) {
|
|
69
|
-
const credPath = hostClaudeCredentialPath();
|
|
70
|
-
try {
|
|
71
|
-
accessSync(credPath, fsConstants.R_OK);
|
|
72
|
-
return null;
|
|
73
|
-
}
|
|
74
|
-
catch (err) {
|
|
75
|
-
return `state "${stateName}": adapter "claude" requires a host credential at ${credPath}, but it is missing or unreadable: ${err.message}`;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
function probeCodexStateCredential(stateName) {
|
|
79
|
-
let authText = null;
|
|
80
|
-
try {
|
|
81
|
-
authText = readFileSync(hostCodexCredentialPath(), 'utf8');
|
|
82
|
-
}
|
|
83
|
-
catch {
|
|
84
|
-
authText = null;
|
|
85
|
-
}
|
|
86
|
-
if (codexCredentialAvailable(authText, process.env))
|
|
87
|
-
return null;
|
|
88
|
-
return `state "${stateName}": ${codexMissingCredentialMessage()}`;
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Build + watch a workflow source. Throws on initial load failure. Reloads
|
|
92
|
-
* call back into the pure parser; the last-good config is preserved when a
|
|
93
|
-
* reload fails so the orchestrator can keep ticking on the previous shape.
|
|
94
|
-
*/
|
|
95
|
-
export async function watchWorkflow(workflowPath) {
|
|
96
|
-
const workflowAbs = path.resolve(workflowPath);
|
|
97
|
-
let current = await loadWorkflow(workflowAbs);
|
|
98
|
-
const listeners = new Set();
|
|
99
|
-
const watcher = chokidar.watch(workflowAbs, {
|
|
100
|
-
ignoreInitial: true,
|
|
101
|
-
persistent: true,
|
|
102
|
-
});
|
|
103
|
-
let reloadInFlight = null;
|
|
104
|
-
const reload = async () => {
|
|
105
|
-
if (reloadInFlight)
|
|
106
|
-
return reloadInFlight;
|
|
107
|
-
reloadInFlight = (async () => {
|
|
108
|
-
try {
|
|
109
|
-
const next = await loadWorkflow(workflowAbs);
|
|
110
|
-
current = next;
|
|
111
|
-
log.info('workflow reloaded', { path: workflowAbs });
|
|
112
|
-
for (const cb of listeners)
|
|
113
|
-
cb({ definition: next.definition, config: next.config });
|
|
114
|
-
}
|
|
115
|
-
catch (err) {
|
|
116
|
-
const e = err instanceof WorkflowError
|
|
117
|
-
? err
|
|
118
|
-
: new WorkflowError('workflow_parse_error', err.message);
|
|
119
|
-
log.warn('workflow reload failed; keeping last good config', {
|
|
120
|
-
error: e.message,
|
|
121
|
-
code: e.code,
|
|
122
|
-
});
|
|
123
|
-
for (const cb of listeners)
|
|
124
|
-
cb({ error: e });
|
|
125
|
-
}
|
|
126
|
-
finally {
|
|
127
|
-
reloadInFlight = null;
|
|
128
|
-
}
|
|
129
|
-
})();
|
|
130
|
-
return reloadInFlight;
|
|
131
|
-
};
|
|
132
|
-
watcher.on('change', () => void reload());
|
|
133
|
-
watcher.on('add', () => void reload());
|
|
134
|
-
// §4.5: workflow read errors must block dispatch. If the file is deleted or
|
|
135
|
-
// temporarily renamed, surface a missing_workflow_file error so the
|
|
136
|
-
// orchestrator knows.
|
|
137
|
-
watcher.on('unlink', () => void reload());
|
|
138
|
-
return {
|
|
139
|
-
current: () => current,
|
|
140
|
-
onChange: (cb) => {
|
|
141
|
-
listeners.add(cb);
|
|
142
|
-
return () => listeners.delete(cb);
|
|
143
|
-
},
|
|
144
|
-
stop: () => watcher.close(),
|
|
145
|
-
};
|
|
146
|
-
}
|
|
147
|
-
//# sourceMappingURL=workflow-loader.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-loader.js","sourceRoot":"","sources":["../src/workflow-loader.ts"],"names":[],"mappings":"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"}
|