@openagt/dashboard 0.8.0 → 0.9.0
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/README.md +6 -6
- package/dist/agent-view.d.ts +3 -3
- package/dist/bridge-browser.d.ts +4 -4
- package/dist/bridge-browser.d.ts.map +1 -1
- package/dist/bridge-browser.js +8 -8
- package/dist/bridge-browser.js.map +1 -1
- package/dist/built-in.d.ts +13 -4
- package/dist/built-in.d.ts.map +1 -1
- package/dist/built-in.js +45 -4
- package/dist/built-in.js.map +1 -1
- package/dist/chrome-extension/background.js +11 -11
- package/dist/chrome-extension/content.js +37 -37
- package/dist/chrome-extension/driver-plan.js +1 -1
- package/dist/chrome-extension/fingerprint.js +1 -1
- package/dist/chrome-extension/manifest.json +3 -3
- package/dist/chrome-extension/options.html +4 -4
- package/dist/chrome-extension/options.js +4 -4
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +7 -7
- package/dist/cli.js.map +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/client.js +2 -2
- package/dist/cloud-run-state.d.ts +1 -1
- package/dist/cloud-scratch-refs.js +7 -7
- package/dist/cloud-scratch-refs.js.map +1 -1
- package/dist/cloud-work.js +2 -2
- package/dist/daemon-runtime.d.ts +5 -4
- package/dist/daemon-runtime.d.ts.map +1 -1
- package/dist/daemon-runtime.js +59 -9
- package/dist/daemon-runtime.js.map +1 -1
- package/dist/daemon-services.d.ts +4 -3
- package/dist/daemon-services.d.ts.map +1 -1
- package/dist/daemon-services.js +14 -8
- package/dist/daemon-services.js.map +1 -1
- package/dist/daemon-tick.js +1 -1
- package/dist/daemon.d.ts +1 -12
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +9 -32
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/agent-handoff.d.ts +4 -4
- package/dist/dashboard/agent-handoff.js +7 -7
- package/dist/dashboard/agent-handoff.js.map +1 -1
- package/dist/dashboard/bridge-endpoints.d.ts +3 -3
- package/dist/dashboard/bridge-endpoints.js +3 -3
- package/dist/dashboard/content-type.js +1 -1
- package/dist/dashboard/docs.d.ts +1 -1
- package/dist/dashboard/docs.js +1 -1
- package/dist/dashboard/git-status.d.ts +1 -1
- package/dist/dashboard/index.d.ts +1 -1
- package/dist/dashboard/index.d.ts.map +1 -1
- package/dist/dashboard/interventions.d.ts +2 -2
- package/dist/dashboard/open-in-app.d.ts +3 -3
- package/dist/dashboard/open-in-app.js +4 -4
- package/dist/dashboard/open-questions.d.ts +2 -2
- package/dist/dashboard/projects.d.ts +6 -5
- package/dist/dashboard/projects.d.ts.map +1 -1
- package/dist/dashboard/projects.js.map +1 -1
- package/dist/dashboard/pull-requests.d.ts +5 -5
- package/dist/dashboard/pull-requests.d.ts.map +1 -1
- package/dist/dashboard/pull-requests.js +2 -2
- package/dist/dashboard/pull-requests.js.map +1 -1
- package/dist/dashboard/relay-endpoints.d.ts +3 -3
- package/dist/dashboard/relay-endpoints.js +1 -1
- package/dist/dashboard/remote-run.d.ts +5 -5
- package/dist/dashboard/remote-run.js +3 -3
- package/dist/dashboard/rpc-serve.d.ts +7 -4
- package/dist/dashboard/rpc-serve.d.ts.map +1 -1
- package/dist/dashboard/rpc-serve.js.map +1 -1
- package/dist/dashboard/run-inbox.d.ts +2 -2
- package/dist/dashboard/run-inbox.js +4 -4
- package/dist/dashboard/run-inbox.js.map +1 -1
- package/dist/dashboard/server.d.ts +6 -4
- package/dist/dashboard/server.d.ts.map +1 -1
- package/dist/dashboard/server.js +3 -2
- package/dist/dashboard/server.js.map +1 -1
- package/dist/dashboard/static.js +1 -1
- package/dist/dashboard/types.d.ts +29 -3
- package/dist/dashboard/types.d.ts.map +1 -1
- package/dist/dashboard/web-start-endpoints.d.ts +1 -1
- package/dist/dashboard/web-start-endpoints.d.ts.map +1 -1
- package/dist/dashboard/web-start-endpoints.js +1 -1
- package/dist/dashboard/web-start-endpoints.js.map +1 -1
- package/dist/dashboard-bundle/assets/{main-om0WOAku.js → main-B98UOA3_.js} +48 -48
- package/dist/dashboard-bundle/assets/main-ByRjbCiA.css +2 -0
- package/dist/dashboard-bundle/assets/{module-jASZmfSB.js → module-v213KWfH.js} +4 -4
- package/dist/dashboard-bundle/host/module.js +1 -1
- package/dist/dashboard-bundle/index.html +6 -6
- package/dist/dashboard-rpc/context.d.ts +2 -0
- package/dist/dashboard-rpc/context.d.ts.map +1 -1
- package/dist/dashboard-rpc/context.js +4 -0
- package/dist/dashboard-rpc/context.js.map +1 -1
- package/dist/dashboard-rpc/control.d.ts +1 -1
- package/dist/dashboard-rpc/control.js +3 -3
- package/dist/dashboard-rpc/control.js.map +1 -1
- package/dist/dashboard-rpc/events.d.ts +3 -3
- package/dist/dashboard-rpc/index.d.ts +1 -1
- package/dist/dashboard-rpc/index.d.ts.map +1 -1
- package/dist/dashboard-rpc/index.js +1 -1
- package/dist/dashboard-rpc/index.js.map +1 -1
- package/dist/dashboard-rpc/modules.d.ts +8 -6
- package/dist/dashboard-rpc/modules.d.ts.map +1 -1
- package/dist/dashboard-rpc/modules.js +8 -6
- package/dist/dashboard-rpc/modules.js.map +1 -1
- package/dist/dashboard-rpc/preferences.d.ts +2 -2
- package/dist/dashboard-rpc/preferences.d.ts.map +1 -1
- package/dist/dashboard-rpc/preferences.js +2 -2
- package/dist/dashboard-rpc/preferences.js.map +1 -1
- package/dist/dashboard-rpc/projects.d.ts +29 -3
- package/dist/dashboard-rpc/projects.d.ts.map +1 -1
- package/dist/dashboard-rpc/projects.js +49 -7
- package/dist/dashboard-rpc/projects.js.map +1 -1
- package/dist/dashboard-rpc/reads.d.ts +3 -3
- package/dist/dashboard-rpc/reads.js +1 -1
- package/dist/dashboard-rpc/test-context.d.ts.map +1 -1
- package/dist/dashboard-rpc/test-context.js +4 -3
- package/dist/dashboard-rpc/test-context.js.map +1 -1
- package/dist/event-stream.d.ts +1 -1
- package/dist/event-stream.js +1 -1
- package/dist/events.d.ts +8 -8
- package/dist/events.d.ts.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/install.d.ts +9 -7
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +28 -14
- package/dist/install.js.map +1 -1
- package/dist/module-server.d.ts +1 -1
- package/dist/module-types/dashboard/lib/route.d.ts +2 -1
- package/dist/module-types/dashboard/lib/use-modules.d.ts +4 -3
- package/dist/module-types/dashboard/module/index.d.ts +5 -5
- package/dist/module-types/src/agent-view.d.ts +3 -3
- package/dist/module-types/src/bridge-browser.d.ts +4 -4
- package/dist/module-types/src/built-in.d.ts +13 -4
- package/dist/module-types/src/client.d.ts +1 -1
- package/dist/module-types/src/cloud-run-state.d.ts +1 -1
- package/dist/module-types/src/dashboard/agent-handoff.d.ts +4 -4
- package/dist/module-types/src/dashboard/bridge-endpoints.d.ts +3 -3
- package/dist/module-types/src/dashboard/docs.d.ts +1 -1
- package/dist/module-types/src/dashboard/git-status.d.ts +1 -1
- package/dist/module-types/src/dashboard/interventions.d.ts +2 -2
- package/dist/module-types/src/dashboard/open-in-app.d.ts +3 -3
- package/dist/module-types/src/dashboard/open-questions.d.ts +2 -2
- package/dist/module-types/src/dashboard/projects.d.ts +6 -5
- package/dist/module-types/src/dashboard/pull-requests.d.ts +5 -5
- package/dist/module-types/src/dashboard/remote-run.d.ts +5 -5
- package/dist/module-types/src/dashboard/rpc-serve.d.ts +7 -4
- package/dist/module-types/src/dashboard/run-inbox.d.ts +2 -2
- package/dist/module-types/src/dashboard/types.d.ts +29 -3
- package/dist/module-types/src/dashboard-rpc/context.d.ts +2 -0
- package/dist/module-types/src/dashboard-rpc/control.d.ts +1 -1
- package/dist/module-types/src/dashboard-rpc/events.d.ts +3 -3
- package/dist/module-types/src/dashboard-rpc/index.d.ts +1 -1
- package/dist/module-types/src/dashboard-rpc/modules.d.ts +8 -6
- package/dist/module-types/src/dashboard-rpc/preferences.d.ts +2 -2
- package/dist/module-types/src/dashboard-rpc/projects.d.ts +29 -3
- package/dist/module-types/src/dashboard-rpc/reads.d.ts +3 -3
- package/dist/module-types/src/event-stream.d.ts +1 -1
- package/dist/module-types/src/events.d.ts +8 -8
- package/dist/module-types/src/index.d.ts +3 -2
- package/dist/module-types/src/open-choices.d.ts +2 -2
- package/dist/module-types/src/{framework-dir.d.ts → openagent-dir.d.ts} +2 -2
- package/dist/module-types/src/openagent-gitignore.d.ts +11 -0
- package/dist/module-types/src/project-commands.d.ts +1 -1
- package/dist/module-types/src/project-errors.d.ts +11 -7
- package/dist/module-types/src/project-hooks.d.ts +4 -4
- package/dist/module-types/src/project-modules.d.ts +5 -5
- package/dist/module-types/src/project-presets.d.ts +4 -4
- package/dist/module-types/src/project.d.ts +6 -6
- package/dist/module-types/src/publish-levels.d.ts +4 -4
- package/dist/module-types/src/quota-boundary.d.ts +2 -2
- package/dist/module-types/src/registry.d.ts +13 -7
- package/dist/module-types/src/store/agent-checkout.d.ts +1 -1
- package/dist/module-types/src/store/agent-store.d.ts +6 -6
- package/dist/module-types/src/store/branches.d.ts +7 -7
- package/dist/module-types/src/store/git-host.d.ts +7 -7
- package/dist/module-types/src/store/provided.d.ts +3 -3
- package/dist/module-types/src/store/queue.d.ts +8 -8
- package/dist/module-types/src/store/repository.d.ts +2 -2
- package/dist/module-types/src/store/run-record.d.ts +10 -10
- package/dist/module-types/src/store/runs.d.ts +6 -6
- package/dist/module-types/src/store/tickets.d.ts +7 -7
- package/dist/module-types/src/terminal.d.ts +3 -3
- package/dist/open-choices.d.ts +2 -2
- package/dist/{framework-dir.js → openagent-dir.d.ts} +3 -3
- package/dist/openagent-dir.d.ts.map +1 -0
- package/dist/{framework-dir.d.ts → openagent-dir.js} +3 -3
- package/dist/openagent-dir.js.map +1 -0
- package/dist/openagent-gitignore.d.ts +12 -0
- package/dist/openagent-gitignore.d.ts.map +1 -0
- package/dist/openagent-gitignore.js +19 -0
- package/dist/openagent-gitignore.js.map +1 -0
- package/dist/pick-directory.js +2 -2
- package/dist/pick-directory.js.map +1 -1
- package/dist/project-commands.d.ts +1 -1
- package/dist/project-commands.js +1 -1
- package/dist/project-errors.d.ts +11 -7
- package/dist/project-errors.d.ts.map +1 -1
- package/dist/project-errors.js +10 -8
- package/dist/project-errors.js.map +1 -1
- package/dist/project-hooks.d.ts +4 -4
- package/dist/project-hooks.d.ts.map +1 -1
- package/dist/project-hooks.js +8 -8
- package/dist/project-hooks.js.map +1 -1
- package/dist/project-modules.d.ts +5 -5
- package/dist/project-modules.js +2 -2
- package/dist/project-presets.d.ts +4 -4
- package/dist/project-presets.d.ts.map +1 -1
- package/dist/project-presets.js +9 -9
- package/dist/project-presets.js.map +1 -1
- package/dist/project.d.ts +6 -6
- package/dist/project.js +6 -6
- package/dist/publish-levels.d.ts +4 -4
- package/dist/publish-levels.d.ts.map +1 -1
- package/dist/publish-levels.js +7 -5
- package/dist/publish-levels.js.map +1 -1
- package/dist/quota-boundary.d.ts +2 -2
- package/dist/quota-boundary.js +2 -2
- package/dist/registry.d.ts +13 -7
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +19 -3
- package/dist/registry.js.map +1 -1
- package/dist/remove-files.d.ts +24 -0
- package/dist/remove-files.d.ts.map +1 -0
- package/dist/remove-files.js +98 -0
- package/dist/remove-files.js.map +1 -0
- package/dist/store/agent-checkout.d.ts +1 -1
- package/dist/store/agent-checkout.js +3 -3
- package/dist/store/agent-checkout.js.map +1 -1
- package/dist/store/agent-store.d.ts +6 -6
- package/dist/store/agent-store.js +8 -8
- package/dist/store/agent-store.js.map +1 -1
- package/dist/store/branches.d.ts +7 -7
- package/dist/store/branches.d.ts.map +1 -1
- package/dist/store/branches.js +1 -1
- package/dist/store/branches.js.map +1 -1
- package/dist/store/git-host.d.ts +7 -7
- package/dist/store/git-host.d.ts.map +1 -1
- package/dist/store/git-host.js +1 -1
- package/dist/store/git-host.js.map +1 -1
- package/dist/store/provided.d.ts +3 -3
- package/dist/store/provided.d.ts.map +1 -1
- package/dist/store/provided.js +3 -3
- package/dist/store/provided.js.map +1 -1
- package/dist/store/queue.d.ts +8 -8
- package/dist/store/queue.d.ts.map +1 -1
- package/dist/store/queue.js +1 -1
- package/dist/store/queue.js.map +1 -1
- package/dist/store/repository.d.ts +2 -2
- package/dist/store/run-record.d.ts +10 -10
- package/dist/store/run-record.d.ts.map +1 -1
- package/dist/store/run-record.js +7 -7
- package/dist/store/run-record.js.map +1 -1
- package/dist/store/runs.d.ts +6 -6
- package/dist/store/runs.d.ts.map +1 -1
- package/dist/store/runs.js +2 -2
- package/dist/store/runs.js.map +1 -1
- package/dist/store/tickets.d.ts +7 -7
- package/dist/store/tickets.d.ts.map +1 -1
- package/dist/store/tickets.js +1 -1
- package/dist/store/tickets.js.map +1 -1
- package/dist/terminal.d.ts +3 -3
- package/dist/terminal.js +3 -3
- package/package.json +19 -19
- package/dist/agent-archive.d.ts +0 -35
- package/dist/agent-archive.d.ts.map +0 -1
- package/dist/agent-archive.js +0 -67
- package/dist/agent-archive.js.map +0 -1
- package/dist/agent-commit.d.ts +0 -140
- package/dist/agent-commit.d.ts.map +0 -1
- package/dist/agent-commit.js +0 -254
- package/dist/agent-commit.js.map +0 -1
- package/dist/agent-driver.d.ts +0 -28
- package/dist/agent-driver.d.ts.map +0 -1
- package/dist/agent-driver.js +0 -18
- package/dist/agent-driver.js.map +0 -1
- package/dist/agent-location.d.ts +0 -11
- package/dist/agent-location.d.ts.map +0 -1
- package/dist/agent-location.js +0 -10
- package/dist/agent-location.js.map +0 -1
- package/dist/agent-messages.d.ts +0 -55
- package/dist/agent-messages.d.ts.map +0 -1
- package/dist/agent-messages.js +0 -73
- package/dist/agent-messages.js.map +0 -1
- package/dist/agent-names.d.ts +0 -24
- package/dist/agent-names.d.ts.map +0 -1
- package/dist/agent-names.js +0 -33
- package/dist/agent-names.js.map +0 -1
- package/dist/agent-options.d.ts +0 -45
- package/dist/agent-options.d.ts.map +0 -1
- package/dist/agent-options.js +0 -83
- package/dist/agent-options.js.map +0 -1
- package/dist/agent-spec.d.ts +0 -56
- package/dist/agent-spec.d.ts.map +0 -1
- package/dist/agent-spec.js +0 -56
- package/dist/agent-spec.js.map +0 -1
- package/dist/agent-telemetry.d.ts +0 -88
- package/dist/agent-telemetry.d.ts.map +0 -1
- package/dist/agent-telemetry.js +0 -97
- package/dist/agent-telemetry.js.map +0 -1
- package/dist/agent.d.ts +0 -113
- package/dist/agent.d.ts.map +0 -1
- package/dist/agent.js +0 -168
- package/dist/agent.js.map +0 -1
- package/dist/archived-agent-patch.d.ts +0 -14
- package/dist/archived-agent-patch.d.ts.map +0 -1
- package/dist/archived-agent-patch.js +0 -22
- package/dist/archived-agent-patch.js.map +0 -1
- package/dist/auto-pm.d.ts +0 -538
- package/dist/auto-pm.d.ts.map +0 -1
- package/dist/auto-pm.js +0 -707
- package/dist/auto-pm.js.map +0 -1
- package/dist/await-gate.d.ts +0 -184
- package/dist/await-gate.d.ts.map +0 -1
- package/dist/await-gate.js +0 -252
- package/dist/await-gate.js.map +0 -1
- package/dist/branch-links-pass.d.ts +0 -15
- package/dist/branch-links-pass.d.ts.map +0 -1
- package/dist/branch-links-pass.js +0 -13
- package/dist/branch-links-pass.js.map +0 -1
- package/dist/branch-links.d.ts +0 -53
- package/dist/branch-links.d.ts.map +0 -1
- package/dist/branch-links.js +0 -94
- package/dist/branch-links.js.map +0 -1
- package/dist/branch-names.d.ts +0 -57
- package/dist/branch-names.d.ts.map +0 -1
- package/dist/branch-names.js +0 -72
- package/dist/branch-names.js.map +0 -1
- package/dist/ci-watch.d.ts +0 -123
- package/dist/ci-watch.d.ts.map +0 -1
- package/dist/ci-watch.js +0 -228
- package/dist/ci-watch.js.map +0 -1
- package/dist/claude-trust.d.ts +0 -16
- package/dist/claude-trust.d.ts.map +0 -1
- package/dist/claude-trust.js +0 -72
- package/dist/claude-trust.js.map +0 -1
- package/dist/cli-exec.d.ts +0 -36
- package/dist/cli-exec.d.ts.map +0 -1
- package/dist/cli-exec.js +0 -44
- package/dist/cli-exec.js.map +0 -1
- package/dist/closing-keywords.d.ts +0 -28
- package/dist/closing-keywords.d.ts.map +0 -1
- package/dist/closing-keywords.js +0 -49
- package/dist/closing-keywords.js.map +0 -1
- package/dist/config-layers.d.ts +0 -62
- package/dist/config-layers.d.ts.map +0 -1
- package/dist/config-layers.js +0 -70
- package/dist/config-layers.js.map +0 -1
- package/dist/config.d.ts +0 -54
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -78
- package/dist/config.js.map +0 -1
- package/dist/consumption-guard.d.ts +0 -53
- package/dist/consumption-guard.d.ts.map +0 -1
- package/dist/consumption-guard.js +0 -69
- package/dist/consumption-guard.js.map +0 -1
- package/dist/control.d.ts +0 -75
- package/dist/control.d.ts.map +0 -1
- package/dist/control.js +0 -68
- package/dist/control.js.map +0 -1
- package/dist/conversation-commit.d.ts +0 -166
- package/dist/conversation-commit.d.ts.map +0 -1
- package/dist/conversation-commit.js +0 -309
- package/dist/conversation-commit.js.map +0 -1
- package/dist/conversations.d.ts +0 -93
- package/dist/conversations.d.ts.map +0 -1
- package/dist/conversations.js +0 -176
- package/dist/conversations.js.map +0 -1
- package/dist/daemon-writes.d.ts +0 -33
- package/dist/daemon-writes.d.ts.map +0 -1
- package/dist/daemon-writes.js +0 -45
- package/dist/daemon-writes.js.map +0 -1
- package/dist/dashboard/agent-tree.d.ts +0 -106
- package/dist/dashboard/agent-tree.d.ts.map +0 -1
- package/dist/dashboard/agent-tree.js +0 -180
- package/dist/dashboard/agent-tree.js.map +0 -1
- package/dist/dashboard/browser-proxy.d.ts +0 -41
- package/dist/dashboard/browser-proxy.d.ts.map +0 -1
- package/dist/dashboard/browser-proxy.js +0 -96
- package/dist/dashboard/browser-proxy.js.map +0 -1
- package/dist/dashboard/discord-webhook.d.ts +0 -17
- package/dist/dashboard/discord-webhook.d.ts.map +0 -1
- package/dist/dashboard/discord-webhook.js +0 -36
- package/dist/dashboard/discord-webhook.js.map +0 -1
- package/dist/dashboard/file-diff.d.ts +0 -67
- package/dist/dashboard/file-diff.d.ts.map +0 -1
- package/dist/dashboard/file-diff.js +0 -132
- package/dist/dashboard/file-diff.js.map +0 -1
- package/dist/dashboard/file-read.d.ts +0 -42
- package/dist/dashboard/file-read.d.ts.map +0 -1
- package/dist/dashboard/file-read.js +0 -69
- package/dist/dashboard/file-read.js.map +0 -1
- package/dist/dashboard/file-status.d.ts +0 -21
- package/dist/dashboard/file-status.d.ts.map +0 -1
- package/dist/dashboard/file-status.js +0 -37
- package/dist/dashboard/file-status.js.map +0 -1
- package/dist/dashboard/gh.d.ts +0 -131
- package/dist/dashboard/gh.d.ts.map +0 -1
- package/dist/dashboard/gh.js +0 -150
- package/dist/dashboard/gh.js.map +0 -1
- package/dist/dashboard/github.d.ts +0 -11
- package/dist/dashboard/github.d.ts.map +0 -1
- package/dist/dashboard/github.js +0 -33
- package/dist/dashboard/github.js.map +0 -1
- package/dist/dashboard/run-handoff.d.ts +0 -311
- package/dist/dashboard/run-handoff.d.ts.map +0 -1
- package/dist/dashboard/run-handoff.js +0 -485
- package/dist/dashboard/run-handoff.js.map +0 -1
- package/dist/dashboard/scheduler-state.d.ts +0 -73
- package/dist/dashboard/scheduler-state.d.ts.map +0 -1
- package/dist/dashboard/scheduler-state.js +0 -120
- package/dist/dashboard/scheduler-state.js.map +0 -1
- package/dist/dashboard/subagent-settings.d.ts +0 -26
- package/dist/dashboard/subagent-settings.d.ts.map +0 -1
- package/dist/dashboard/subagent-settings.js +0 -52
- package/dist/dashboard/subagent-settings.js.map +0 -1
- package/dist/dashboard/telefunc-serve.d.ts +0 -118
- package/dist/dashboard/telefunc-serve.d.ts.map +0 -1
- package/dist/dashboard/telefunc-serve.js +0 -108
- package/dist/dashboard/telefunc-serve.js.map +0 -1
- package/dist/dashboard/tickets.d.ts +0 -29
- package/dist/dashboard/tickets.d.ts.map +0 -1
- package/dist/dashboard/tickets.js +0 -38
- package/dist/dashboard/tickets.js.map +0 -1
- package/dist/dashboard/widget-serve.d.ts +0 -15
- package/dist/dashboard/widget-serve.d.ts.map +0 -1
- package/dist/dashboard/widget-serve.js +0 -45
- package/dist/dashboard/widget-serve.js.map +0 -1
- package/dist/dashboard-bundle/assets/main-B3HghPQy.css +0 -2
- package/dist/dashboard-client/assets/chunks/chunk-BF9pJudf.js +0 -4
- package/dist/dashboard-client/assets/entries/entry-client-routing.CT1e9F0o.js +0 -1
- package/dist/dashboard-client/assets/entries/pages_index.CkW5JQ8X.js +0 -428
- package/dist/dashboard-client/assets/static/layouts_tailwind-00e65532.8OjKGAbA.css +0 -2
- package/dist/dashboard-client/index.html +0 -27
- package/dist/dashboard-client/index.pageContext.json +0 -1
- package/dist/dashboard-client/logo-animated.svg +0 -34
- package/dist/dashboard-client/logo.svg +0 -16
- package/dist/dashboard-rpc/control.telefunc.d.ts +0 -176
- package/dist/dashboard-rpc/control.telefunc.d.ts.map +0 -1
- package/dist/dashboard-rpc/control.telefunc.js +0 -373
- package/dist/dashboard-rpc/control.telefunc.js.map +0 -1
- package/dist/dashboard-rpc/devices.telefunc.d.ts +0 -9
- package/dist/dashboard-rpc/devices.telefunc.d.ts.map +0 -1
- package/dist/dashboard-rpc/devices.telefunc.js +0 -12
- package/dist/dashboard-rpc/devices.telefunc.js.map +0 -1
- package/dist/dashboard-rpc/events.telefunc.d.ts +0 -36
- package/dist/dashboard-rpc/events.telefunc.d.ts.map +0 -1
- package/dist/dashboard-rpc/events.telefunc.js +0 -70
- package/dist/dashboard-rpc/events.telefunc.js.map +0 -1
- package/dist/dashboard-rpc/preferences.telefunc.d.ts +0 -97
- package/dist/dashboard-rpc/preferences.telefunc.d.ts.map +0 -1
- package/dist/dashboard-rpc/preferences.telefunc.js +0 -157
- package/dist/dashboard-rpc/preferences.telefunc.js.map +0 -1
- package/dist/dashboard-rpc/projects.telefunc.d.ts +0 -56
- package/dist/dashboard-rpc/projects.telefunc.d.ts.map +0 -1
- package/dist/dashboard-rpc/projects.telefunc.js +0 -96
- package/dist/dashboard-rpc/projects.telefunc.js.map +0 -1
- package/dist/dashboard-rpc/quota.telefunc.d.ts +0 -40
- package/dist/dashboard-rpc/quota.telefunc.d.ts.map +0 -1
- package/dist/dashboard-rpc/quota.telefunc.js +0 -84
- package/dist/dashboard-rpc/quota.telefunc.js.map +0 -1
- package/dist/dashboard-rpc/reads.telefunc.d.ts +0 -197
- package/dist/dashboard-rpc/reads.telefunc.d.ts.map +0 -1
- package/dist/dashboard-rpc/reads.telefunc.js +0 -403
- package/dist/dashboard-rpc/reads.telefunc.js.map +0 -1
- package/dist/dashboard-rpc/register.d.ts +0 -18
- package/dist/dashboard-rpc/register.d.ts.map +0 -1
- package/dist/dashboard-rpc/register.js +0 -66
- package/dist/dashboard-rpc/register.js.map +0 -1
- package/dist/dashboard-rpc/relay-run.d.ts +0 -9
- package/dist/dashboard-rpc/relay-run.d.ts.map +0 -1
- package/dist/dashboard-rpc/relay-run.js +0 -21
- package/dist/dashboard-rpc/relay-run.js.map +0 -1
- package/dist/dashboard-rpc/stream-channel.d.ts +0 -23
- package/dist/dashboard-rpc/stream-channel.d.ts.map +0 -1
- package/dist/dashboard-rpc/stream-channel.js +0 -52
- package/dist/dashboard-rpc/stream-channel.js.map +0 -1
- package/dist/dashboard-rpc/subagents.d.ts +0 -12
- package/dist/dashboard-rpc/subagents.d.ts.map +0 -1
- package/dist/dashboard-rpc/subagents.js +0 -13
- package/dist/dashboard-rpc/subagents.js.map +0 -1
- package/dist/dashboard-rpc/widgets.d.ts +0 -33
- package/dist/dashboard-rpc/widgets.d.ts.map +0 -1
- package/dist/dashboard-rpc/widgets.js +0 -54
- package/dist/dashboard-rpc/widgets.js.map +0 -1
- package/dist/data-branch.d.ts +0 -120
- package/dist/data-branch.d.ts.map +0 -1
- package/dist/data-branch.js +0 -319
- package/dist/data-branch.js.map +0 -1
- package/dist/discord/bot.d.ts +0 -61
- package/dist/discord/bot.d.ts.map +0 -1
- package/dist/discord/bot.js +0 -94
- package/dist/discord/bot.js.map +0 -1
- package/dist/discord/gateway.d.ts +0 -137
- package/dist/discord/gateway.d.ts.map +0 -1
- package/dist/discord/gateway.js +0 -315
- package/dist/discord/gateway.js.map +0 -1
- package/dist/discord/live-run.d.ts +0 -31
- package/dist/discord/live-run.d.ts.map +0 -1
- package/dist/discord/live-run.js +0 -57
- package/dist/discord/live-run.js.map +0 -1
- package/dist/discord/reply-mirror.d.ts +0 -83
- package/dist/discord/reply-mirror.d.ts.map +0 -1
- package/dist/discord/reply-mirror.js +0 -84
- package/dist/discord/reply-mirror.js.map +0 -1
- package/dist/discord/rest.d.ts +0 -20
- package/dist/discord/rest.d.ts.map +0 -1
- package/dist/discord/rest.js +0 -41
- package/dist/discord/rest.js.map +0 -1
- package/dist/discord/routing.d.ts +0 -81
- package/dist/discord/routing.d.ts.map +0 -1
- package/dist/discord/routing.js +0 -91
- package/dist/discord/routing.js.map +0 -1
- package/dist/discord-credentials-store.d.ts +0 -14
- package/dist/discord-credentials-store.d.ts.map +0 -1
- package/dist/discord-credentials-store.js +0 -53
- package/dist/discord-credentials-store.js.map +0 -1
- package/dist/discord-credentials.d.ts +0 -80
- package/dist/discord-credentials.d.ts.map +0 -1
- package/dist/discord-credentials.js +0 -55
- package/dist/discord-credentials.js.map +0 -1
- package/dist/driver/actions-zip.d.ts +0 -2
- package/dist/driver/actions-zip.d.ts.map +0 -1
- package/dist/driver/actions-zip.js +0 -70
- package/dist/driver/actions-zip.js.map +0 -1
- package/dist/driver/actions.d.ts +0 -130
- package/dist/driver/actions.d.ts.map +0 -1
- package/dist/driver/actions.js +0 -261
- package/dist/driver/actions.js.map +0 -1
- package/dist/driver/agent-cli.d.ts +0 -57
- package/dist/driver/agent-cli.d.ts.map +0 -1
- package/dist/driver/agent-cli.js +0 -134
- package/dist/driver/agent-cli.js.map +0 -1
- package/dist/driver/child-registry.d.ts +0 -25
- package/dist/driver/child-registry.d.ts.map +0 -1
- package/dist/driver/child-registry.js +0 -53
- package/dist/driver/child-registry.js.map +0 -1
- package/dist/driver/claude-code-quota.d.ts +0 -40
- package/dist/driver/claude-code-quota.d.ts.map +0 -1
- package/dist/driver/claude-code-quota.js +0 -144
- package/dist/driver/claude-code-quota.js.map +0 -1
- package/dist/driver/claude-code.d.ts +0 -104
- package/dist/driver/claude-code.d.ts.map +0 -1
- package/dist/driver/claude-code.js +0 -314
- package/dist/driver/claude-code.js.map +0 -1
- package/dist/driver/cli-session.d.ts +0 -57
- package/dist/driver/cli-session.d.ts.map +0 -1
- package/dist/driver/cli-session.js +0 -134
- package/dist/driver/cli-session.js.map +0 -1
- package/dist/driver/cloud.d.ts +0 -109
- package/dist/driver/cloud.d.ts.map +0 -1
- package/dist/driver/cloud.js +0 -232
- package/dist/driver/cloud.js.map +0 -1
- package/dist/driver/codex.d.ts +0 -99
- package/dist/driver/codex.d.ts.map +0 -1
- package/dist/driver/codex.js +0 -190
- package/dist/driver/codex.js.map +0 -1
- package/dist/driver/fake.d.ts +0 -54
- package/dist/driver/fake.d.ts.map +0 -1
- package/dist/driver/fake.js +0 -73
- package/dist/driver/fake.js.map +0 -1
- package/dist/driver/index.d.ts +0 -10
- package/dist/driver/index.d.ts.map +0 -1
- package/dist/driver/index.js +0 -14
- package/dist/driver/index.js.map +0 -1
- package/dist/driver/session-support.d.ts +0 -14
- package/dist/driver/session-support.d.ts.map +0 -1
- package/dist/driver/session-support.js +0 -37
- package/dist/driver/session-support.js.map +0 -1
- package/dist/driver/types.d.ts +0 -310
- package/dist/driver/types.d.ts.map +0 -1
- package/dist/driver/types.js +0 -5
- package/dist/driver/types.js.map +0 -1
- package/dist/driver-cli.d.ts +0 -61
- package/dist/driver-cli.d.ts.map +0 -1
- package/dist/driver-cli.js +0 -66
- package/dist/driver-cli.js.map +0 -1
- package/dist/fake-script.d.ts +0 -15
- package/dist/fake-script.d.ts.map +0 -1
- package/dist/fake-script.js +0 -58
- package/dist/fake-script.js.map +0 -1
- package/dist/framework-dir.d.ts.map +0 -1
- package/dist/framework-dir.js.map +0 -1
- package/dist/framework-gitignore.d.ts +0 -12
- package/dist/framework-gitignore.d.ts.map +0 -1
- package/dist/framework-gitignore.js +0 -19
- package/dist/framework-gitignore.js.map +0 -1
- package/dist/gate-keepalive.d.ts +0 -47
- package/dist/gate-keepalive.d.ts.map +0 -1
- package/dist/gate-keepalive.js +0 -62
- package/dist/gate-keepalive.js.map +0 -1
- package/dist/git-exclude.d.ts +0 -11
- package/dist/git-exclude.d.ts.map +0 -1
- package/dist/git-exclude.js +0 -23
- package/dist/git-exclude.js.map +0 -1
- package/dist/handoff-level.d.ts +0 -56
- package/dist/handoff-level.d.ts.map +0 -1
- package/dist/handoff-level.js +0 -62
- package/dist/handoff-level.js.map +0 -1
- package/dist/host-exec.d.ts +0 -21
- package/dist/host-exec.d.ts.map +0 -1
- package/dist/host-exec.js +0 -30
- package/dist/host-exec.js.map +0 -1
- package/dist/layout.d.ts +0 -41
- package/dist/layout.d.ts.map +0 -1
- package/dist/layout.js +0 -69
- package/dist/layout.js.map +0 -1
- package/dist/logs.d.ts +0 -73
- package/dist/logs.d.ts.map +0 -1
- package/dist/logs.js +0 -218
- package/dist/logs.js.map +0 -1
- package/dist/maintenance.d.ts +0 -90
- package/dist/maintenance.d.ts.map +0 -1
- package/dist/maintenance.js +0 -141
- package/dist/maintenance.js.map +0 -1
- package/dist/merged-worktrees.d.ts +0 -74
- package/dist/merged-worktrees.d.ts.map +0 -1
- package/dist/merged-worktrees.js +0 -84
- package/dist/merged-worktrees.js.map +0 -1
- package/dist/module-types/src/dashboard/agent-tree.d.ts +0 -105
- package/dist/module-types/src/dashboard/file-diff.d.ts +0 -66
- package/dist/module-types/src/dashboard/file-read.d.ts +0 -41
- package/dist/module-types/src/dashboard/file-status.d.ts +0 -20
- package/dist/module-types/src/dashboard/scheduler-state.d.ts +0 -72
- package/dist/module-types/src/dashboard/subagent-settings.d.ts +0 -25
- package/dist/module-types/src/dashboard-rpc/subagents.d.ts +0 -11
- package/dist/module-types/src/framework-gitignore.d.ts +0 -11
- package/dist/module-types/src/subagent-settings.d.ts +0 -26
- package/dist/on-before-mergeable-prompt.d.ts +0 -32
- package/dist/on-before-mergeable-prompt.d.ts.map +0 -1
- package/dist/on-before-mergeable-prompt.js +0 -26
- package/dist/on-before-mergeable-prompt.js.map +0 -1
- package/dist/planned-quick-wins.d.ts +0 -102
- package/dist/planned-quick-wins.d.ts.map +0 -1
- package/dist/planned-quick-wins.js +0 -171
- package/dist/planned-quick-wins.js.map +0 -1
- package/dist/preflight.d.ts +0 -77
- package/dist/preflight.d.ts.map +0 -1
- package/dist/preflight.js +0 -91
- package/dist/preflight.js.map +0 -1
- package/dist/preset-catalog.d.ts +0 -98
- package/dist/preset-catalog.d.ts.map +0 -1
- package/dist/preset-catalog.js +0 -129
- package/dist/preset-catalog.js.map +0 -1
- package/dist/preset-prompt.d.ts +0 -81
- package/dist/preset-prompt.d.ts.map +0 -1
- package/dist/preset-prompt.js +0 -51
- package/dist/preset-prompt.js.map +0 -1
- package/dist/preset-registry.d.ts +0 -32
- package/dist/preset-registry.d.ts.map +0 -1
- package/dist/preset-registry.js +0 -35
- package/dist/preset-registry.js.map +0 -1
- package/dist/presets.d.ts +0 -20
- package/dist/presets.d.ts.map +0 -1
- package/dist/presets.js +0 -33
- package/dist/presets.js.map +0 -1
- package/dist/preview-runtime.d.ts +0 -33
- package/dist/preview-runtime.d.ts.map +0 -1
- package/dist/preview-runtime.js +0 -96
- package/dist/preview-runtime.js.map +0 -1
- package/dist/preview.d.ts +0 -78
- package/dist/preview.d.ts.map +0 -1
- package/dist/preview.js +0 -301
- package/dist/preview.js.map +0 -1
- package/dist/project-widgets.d.ts +0 -46
- package/dist/project-widgets.d.ts.map +0 -1
- package/dist/project-widgets.js +0 -93
- package/dist/project-widgets.js.map +0 -1
- package/dist/prompt-run.d.ts +0 -104
- package/dist/prompt-run.d.ts.map +0 -1
- package/dist/prompt-run.js +0 -112
- package/dist/prompt-run.js.map +0 -1
- package/dist/prompt-template.d.ts +0 -16
- package/dist/prompt-template.d.ts.map +0 -1
- package/dist/prompt-template.js +0 -56
- package/dist/prompt-template.js.map +0 -1
- package/dist/prompts.generated.d.ts +0 -53
- package/dist/prompts.generated.d.ts.map +0 -1
- package/dist/prompts.generated.js +0 -55
- package/dist/prompts.generated.js.map +0 -1
- package/dist/queue-promote.d.ts +0 -70
- package/dist/queue-promote.d.ts.map +0 -1
- package/dist/queue-promote.js +0 -118
- package/dist/queue-promote.js.map +0 -1
- package/dist/relay.d.ts +0 -84
- package/dist/relay.d.ts.map +0 -1
- package/dist/relay.js +0 -199
- package/dist/relay.js.map +0 -1
- package/dist/repos-directory.d.ts +0 -19
- package/dist/repos-directory.d.ts.map +0 -1
- package/dist/repos-directory.js +0 -23
- package/dist/repos-directory.js.map +0 -1
- package/dist/retired-project-settings.d.ts +0 -43
- package/dist/retired-project-settings.d.ts.map +0 -1
- package/dist/retired-project-settings.js +0 -125
- package/dist/retired-project-settings.js.map +0 -1
- package/dist/routine-locks.d.ts +0 -53
- package/dist/routine-locks.d.ts.map +0 -1
- package/dist/routine-locks.js +0 -125
- package/dist/routine-locks.js.map +0 -1
- package/dist/run-driver.d.ts +0 -26
- package/dist/run-driver.d.ts.map +0 -1
- package/dist/run-driver.js +0 -17
- package/dist/run-driver.js.map +0 -1
- package/dist/run-locks.d.ts +0 -3
- package/dist/run-locks.d.ts.map +0 -1
- package/dist/run-locks.js +0 -39
- package/dist/run-locks.js.map +0 -1
- package/dist/run-messages.d.ts +0 -64
- package/dist/run-messages.d.ts.map +0 -1
- package/dist/run-messages.js +0 -76
- package/dist/run-messages.js.map +0 -1
- package/dist/run-options.d.ts +0 -53
- package/dist/run-options.d.ts.map +0 -1
- package/dist/run-options.js +0 -110
- package/dist/run-options.js.map +0 -1
- package/dist/run-telemetry.d.ts +0 -115
- package/dist/run-telemetry.d.ts.map +0 -1
- package/dist/run-telemetry.js +0 -137
- package/dist/run-telemetry.js.map +0 -1
- package/dist/run-view.d.ts +0 -109
- package/dist/run-view.d.ts.map +0 -1
- package/dist/run-view.js +0 -118
- package/dist/run-view.js.map +0 -1
- package/dist/run.d.ts +0 -261
- package/dist/run.d.ts.map +0 -1
- package/dist/run.js +0 -420
- package/dist/run.js.map +0 -1
- package/dist/runtime-keys.d.ts +0 -17
- package/dist/runtime-keys.d.ts.map +0 -1
- package/dist/runtime-keys.js +0 -17
- package/dist/runtime-keys.js.map +0 -1
- package/dist/sandbox.d.ts +0 -27
- package/dist/sandbox.d.ts.map +0 -1
- package/dist/sandbox.js +0 -63
- package/dist/sandbox.js.map +0 -1
- package/dist/session-link.d.ts +0 -19
- package/dist/session-link.d.ts.map +0 -1
- package/dist/session-link.js +0 -26
- package/dist/session-link.js.map +0 -1
- package/dist/sessions.d.ts +0 -77
- package/dist/sessions.d.ts.map +0 -1
- package/dist/sessions.js +0 -146
- package/dist/sessions.js.map +0 -1
- package/dist/spike-locks.d.ts +0 -75
- package/dist/spike-locks.d.ts.map +0 -1
- package/dist/spike-locks.js +0 -208
- package/dist/spike-locks.js.map +0 -1
- package/dist/stale-branch.d.ts +0 -21
- package/dist/stale-branch.d.ts.map +0 -1
- package/dist/stale-branch.js +0 -32
- package/dist/stale-branch.js.map +0 -1
- package/dist/steps.d.ts +0 -9
- package/dist/steps.d.ts.map +0 -1
- package/dist/steps.js +0 -13
- package/dist/steps.js.map +0 -1
- package/dist/store/forge.d.ts +0 -110
- package/dist/store/forge.d.ts.map +0 -1
- package/dist/store/forge.js +0 -97
- package/dist/store/forge.js.map +0 -1
- package/dist/store/run-checkout.d.ts +0 -33
- package/dist/store/run-checkout.d.ts.map +0 -1
- package/dist/store/run-checkout.js +0 -59
- package/dist/store/run-checkout.js.map +0 -1
- package/dist/store/run-store.d.ts +0 -501
- package/dist/store/run-store.d.ts.map +0 -1
- package/dist/store/run-store.js +0 -806
- package/dist/store/run-store.js.map +0 -1
- package/dist/store/suspend.d.ts +0 -38
- package/dist/store/suspend.d.ts.map +0 -1
- package/dist/store/suspend.js +0 -45
- package/dist/store/suspend.js.map +0 -1
- package/dist/store/worktree-deps.d.ts +0 -30
- package/dist/store/worktree-deps.d.ts.map +0 -1
- package/dist/store/worktree-deps.js +0 -115
- package/dist/store/worktree-deps.js.map +0 -1
- package/dist/store/worktree.d.ts +0 -194
- package/dist/store/worktree.d.ts.map +0 -1
- package/dist/store/worktree.js +0 -331
- package/dist/store/worktree.js.map +0 -1
- package/dist/subagent-settings.d.ts +0 -27
- package/dist/subagent-settings.d.ts.map +0 -1
- package/dist/subagent-settings.js +0 -35
- package/dist/subagent-settings.js.map +0 -1
- package/dist/system-prompt-file.d.ts +0 -18
- package/dist/system-prompt-file.d.ts.map +0 -1
- package/dist/system-prompt-file.js +0 -28
- package/dist/system-prompt-file.js.map +0 -1
- package/dist/system-prompt.d.ts +0 -148
- package/dist/system-prompt.d.ts.map +0 -1
- package/dist/system-prompt.js +0 -170
- package/dist/system-prompt.js.map +0 -1
- package/dist/target-driver.d.ts +0 -28
- package/dist/target-driver.d.ts.map +0 -1
- package/dist/target-driver.js +0 -18
- package/dist/target-driver.js.map +0 -1
- package/dist/ticket-locks.d.ts +0 -61
- package/dist/ticket-locks.d.ts.map +0 -1
- package/dist/ticket-locks.js +0 -137
- package/dist/ticket-locks.js.map +0 -1
- package/dist/tickets-file.d.ts +0 -7
- package/dist/tickets-file.d.ts.map +0 -1
- package/dist/tickets-file.js +0 -21
- package/dist/tickets-file.js.map +0 -1
- package/dist/tickets.d.ts +0 -18
- package/dist/tickets.d.ts.map +0 -1
- package/dist/tickets.js +0 -23
- package/dist/tickets.js.map +0 -1
- package/dist/todo-loop.d.ts +0 -110
- package/dist/todo-loop.d.ts.map +0 -1
- package/dist/todo-loop.js +0 -175
- package/dist/todo-loop.js.map +0 -1
- package/dist/turn-gate.d.ts +0 -144
- package/dist/turn-gate.d.ts.map +0 -1
- package/dist/turn-gate.js +0 -217
- package/dist/turn-gate.js.map +0 -1
- package/dist/usage.d.ts +0 -32
- package/dist/usage.d.ts.map +0 -1
- package/dist/usage.js +0 -46
- package/dist/usage.js.map +0 -1
- package/dist/widget-types/dashboard/components/LinkActions.d.ts +0 -26
- package/dist/widget-types/dashboard/components/Markdown.d.ts +0 -4
- package/dist/widget-types/dashboard/components/StartAgentButton.d.ts +0 -39
- package/dist/widget-types/dashboard/components/ui/badge.d.ts +0 -2
- package/dist/widget-types/dashboard/components/ui/button.d.ts +0 -10
- package/dist/widget-types/dashboard/components/ui/card.d.ts +0 -5
- package/dist/widget-types/dashboard/components/ui/checkbox.d.ts +0 -7
- package/dist/widget-types/dashboard/components/ui/dropdown-menu.d.ts +0 -16
- package/dist/widget-types/dashboard/components/ui/input.d.ts +0 -2
- package/dist/widget-types/dashboard/components/ui/option-label.d.ts +0 -4
- package/dist/widget-types/dashboard/components/ui/popover.d.ts +0 -8
- package/dist/widget-types/dashboard/components/ui/scroll-area.d.ts +0 -10
- package/dist/widget-types/dashboard/components/ui/separator.d.ts +0 -3
- package/dist/widget-types/dashboard/components/ui/skeleton.d.ts +0 -2
- package/dist/widget-types/dashboard/components/ui/slider.d.ts +0 -9
- package/dist/widget-types/dashboard/components/ui/tooltip.d.ts +0 -11
- package/dist/widget-types/dashboard/lib/draft-handoff.d.ts +0 -15
- package/dist/widget-types/dashboard/lib/format-date.d.ts +0 -51
- package/dist/widget-types/dashboard/lib/host-services.d.ts +0 -12
- package/dist/widget-types/dashboard/lib/route.d.ts +0 -24
- package/dist/widget-types/dashboard/lib/rpc.d.ts +0 -31
- package/dist/widget-types/dashboard/lib/use-action.d.ts +0 -25
- package/dist/widget-types/dashboard/lib/use-async.d.ts +0 -39
- package/dist/widget-types/dashboard/lib/use-widgets.d.ts +0 -42
- package/dist/widget-types/dashboard/lib/utils.d.ts +0 -3
- package/dist/widget-types/dashboard/rpc/widgets.d.ts +0 -4
- package/dist/widget-types/dashboard/widget/index.d.ts +0 -207
- package/dist/widget-types/src/agent-id.d.ts +0 -12
- package/dist/widget-types/src/agent-locks.d.ts +0 -2
- package/dist/widget-types/src/agent-view.d.ts +0 -38
- package/dist/widget-types/src/bridge-browser.d.ts +0 -216
- package/dist/widget-types/src/browser-stream.d.ts +0 -19
- package/dist/widget-types/src/browser.d.ts +0 -15
- package/dist/widget-types/src/cli-exec.d.ts +0 -35
- package/dist/widget-types/src/cloud-run-state.d.ts +0 -26
- package/dist/widget-types/src/dashboard/activity.d.ts +0 -40
- package/dist/widget-types/src/dashboard/agent-handoff.d.ts +0 -211
- package/dist/widget-types/src/dashboard/agent-tree.d.ts +0 -105
- package/dist/widget-types/src/dashboard/bridge-endpoints.d.ts +0 -157
- package/dist/widget-types/src/dashboard/bridge-question.d.ts +0 -32
- package/dist/widget-types/src/dashboard/bridge-store.d.ts +0 -178
- package/dist/widget-types/src/dashboard/cache.d.ts +0 -46
- package/dist/widget-types/src/dashboard/content-type.d.ts +0 -2
- package/dist/widget-types/src/dashboard/dashboard.d.ts +0 -37
- package/dist/widget-types/src/dashboard/discord-webhook.d.ts +0 -16
- package/dist/widget-types/src/dashboard/docs.d.ts +0 -38
- package/dist/widget-types/src/dashboard/file-diff.d.ts +0 -66
- package/dist/widget-types/src/dashboard/file-read.d.ts +0 -41
- package/dist/widget-types/src/dashboard/file-status.d.ts +0 -20
- package/dist/widget-types/src/dashboard/gh.d.ts +0 -130
- package/dist/widget-types/src/dashboard/git-status.d.ts +0 -32
- package/dist/widget-types/src/dashboard/github.d.ts +0 -10
- package/dist/widget-types/src/dashboard/http.d.ts +0 -28
- package/dist/widget-types/src/dashboard/interventions.d.ts +0 -66
- package/dist/widget-types/src/dashboard/keys.d.ts +0 -30
- package/dist/widget-types/src/dashboard/models.d.ts +0 -24
- package/dist/widget-types/src/dashboard/open-in-app.d.ts +0 -42
- package/dist/widget-types/src/dashboard/open-questions.d.ts +0 -52
- package/dist/widget-types/src/dashboard/overview.d.ts +0 -77
- package/dist/widget-types/src/dashboard/projects.d.ts +0 -89
- package/dist/widget-types/src/dashboard/pull-requests.d.ts +0 -126
- package/dist/widget-types/src/dashboard/queue.d.ts +0 -16
- package/dist/widget-types/src/dashboard/quota.d.ts +0 -59
- package/dist/widget-types/src/dashboard/remote-run.d.ts +0 -94
- package/dist/widget-types/src/dashboard/rpc-serve.d.ts +0 -102
- package/dist/widget-types/src/dashboard/run-inbox.d.ts +0 -30
- package/dist/widget-types/src/dashboard/scheduler-state.d.ts +0 -64
- package/dist/widget-types/src/dashboard/tickets.d.ts +0 -28
- package/dist/widget-types/src/dashboard/types.d.ts +0 -99
- package/dist/widget-types/src/dashboard/widget-serve.d.ts +0 -14
- package/dist/widget-types/src/dashboard-rpc/context.d.ts +0 -53
- package/dist/widget-types/src/dashboard-rpc/control.d.ts +0 -108
- package/dist/widget-types/src/dashboard-rpc/devices.d.ts +0 -8
- package/dist/widget-types/src/dashboard-rpc/events-tail.d.ts +0 -53
- package/dist/widget-types/src/dashboard-rpc/events.d.ts +0 -29
- package/dist/widget-types/src/dashboard-rpc/index.d.ts +0 -28
- package/dist/widget-types/src/dashboard-rpc/models.d.ts +0 -3
- package/dist/widget-types/src/dashboard-rpc/preferences.d.ts +0 -40
- package/dist/widget-types/src/dashboard-rpc/projects.d.ts +0 -54
- package/dist/widget-types/src/dashboard-rpc/quota.d.ts +0 -26
- package/dist/widget-types/src/dashboard-rpc/reads.d.ts +0 -227
- package/dist/widget-types/src/dashboard-rpc/relay-agent.d.ts +0 -8
- package/dist/widget-types/src/dashboard-rpc/stream-forward.d.ts +0 -16
- package/dist/widget-types/src/dashboard-rpc/widgets.d.ts +0 -32
- package/dist/widget-types/src/discord-credentials.d.ts +0 -79
- package/dist/widget-types/src/driver-names.d.ts +0 -21
- package/dist/widget-types/src/error-message.d.ts +0 -7
- package/dist/widget-types/src/event-stream.d.ts +0 -32
- package/dist/widget-types/src/events.d.ts +0 -235
- package/dist/widget-types/src/framework-dir.d.ts +0 -10
- package/dist/widget-types/src/framework-gitignore.d.ts +0 -11
- package/dist/widget-types/src/index.d.ts +0 -42
- package/dist/widget-types/src/jsonl-tail.d.ts +0 -54
- package/dist/widget-types/src/loopback-host.d.ts +0 -19
- package/dist/widget-types/src/node-fs.d.ts +0 -32
- package/dist/widget-types/src/open-choices.d.ts +0 -14
- package/dist/widget-types/src/pick-directory.d.ts +0 -29
- package/dist/widget-types/src/preference-defaults.d.ts +0 -53
- package/dist/widget-types/src/project-commands.d.ts +0 -23
- package/dist/widget-types/src/project-errors.d.ts +0 -43
- package/dist/widget-types/src/project-hooks.d.ts +0 -133
- package/dist/widget-types/src/project-presets.d.ts +0 -29
- package/dist/widget-types/src/project-widgets.d.ts +0 -45
- package/dist/widget-types/src/project.d.ts +0 -28
- package/dist/widget-types/src/quota-boundary.d.ts +0 -115
- package/dist/widget-types/src/quota-poller.d.ts +0 -82
- package/dist/widget-types/src/registry.d.ts +0 -210
- package/dist/widget-types/src/store/agent-checkout.d.ts +0 -46
- package/dist/widget-types/src/store/agent-store.d.ts +0 -237
- package/dist/widget-types/src/store/branches.d.ts +0 -133
- package/dist/widget-types/src/store/forge.d.ts +0 -109
- package/dist/widget-types/src/store/git-host.d.ts +0 -111
- package/dist/widget-types/src/store/index.d.ts +0 -9
- package/dist/widget-types/src/store/provided.d.ts +0 -16
- package/dist/widget-types/src/store/queue.d.ts +0 -45
- package/dist/widget-types/src/store/run-record.d.ts +0 -21
- package/dist/widget-types/src/store/runs.d.ts +0 -101
- package/dist/widget-types/src/store/tickets.d.ts +0 -72
- package/dist/widget-types/src/tickets.d.ts +0 -17
- package/dist/widget-types/src/worktrees.d.ts +0 -89
- package/dist/widget.css +0 -50
package/dist/driver/actions.d.ts
DELETED
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import type { Driver, DriverEvent, DriverPromptOptions, DriverSession, DriverStartOptions, DriverTurn } from './types.js';
|
|
2
|
-
/**
|
|
3
|
-
* A {@link Driver} that runs the agent on **GitHub Actions** instead of on this
|
|
4
|
-
* machine (#610): dispatch a workflow, poll it, read the transcript it uploads.
|
|
5
|
-
*
|
|
6
|
-
* This is the answer to "drive Claude Code on the web". The routines fire API was
|
|
7
|
-
* the obvious candidate and turned out unusable — the prompt arrives wrapped as
|
|
8
|
-
* untrusted data, and there is no read-back of any kind. The official
|
|
9
|
-
* `anthropics/claude-code-action@v1` has neither problem: the prompt is passed
|
|
10
|
-
* verbatim, and the run publishes its full transcript. Auth is the same
|
|
11
|
-
* subscription posture as everywhere else (#495): a `claude setup-token` OAuth
|
|
12
|
-
* token held by the repo, never an API key of ours.
|
|
13
|
-
*
|
|
14
|
-
* It fits `Driver`/`DriverSession` as written, with no new methods. What changes is
|
|
15
|
-
* not the shape but the tempo, and those costs are real:
|
|
16
|
-
*
|
|
17
|
-
* - **Minutes, not seconds.** Every `prompt` is a fresh runner and a fresh
|
|
18
|
-
* checkout. Continuity comes from the branch the previous turn pushed, which the
|
|
19
|
-
* session tracks and dispatches onto next time.
|
|
20
|
-
* - **No live stream.** The transcript arrives once, at the end, so the dashboard's
|
|
21
|
-
* {@link DriverStartOptions.onEvent} feed replays in a burst rather than trickling.
|
|
22
|
-
* - **Quota is the account's, not the runner's.** Free minutes on a public repo
|
|
23
|
-
* change nothing about the subscription window every run draws down.
|
|
24
|
-
*
|
|
25
|
-
* The workspace lives on a runner that is gone by the time we read it, so
|
|
26
|
-
* {@link ActionsSession.readCode} reads from the pushed branch over the contents
|
|
27
|
-
* API rather than from disk.
|
|
28
|
-
*/
|
|
29
|
-
export declare class ActionsDriver implements Driver {
|
|
30
|
-
private readonly opts;
|
|
31
|
-
readonly id = "github-actions";
|
|
32
|
-
constructor(opts: ActionsDriverOptions);
|
|
33
|
-
start(opts: DriverStartOptions): Promise<DriverSession>;
|
|
34
|
-
}
|
|
35
|
-
/** Options for {@link ActionsDriver}. */
|
|
36
|
-
export interface ActionsDriverOptions {
|
|
37
|
-
/** Repository owner (user or org) that runs the workflow. */
|
|
38
|
-
owner: string;
|
|
39
|
-
/** Repository name. */
|
|
40
|
-
repo: string;
|
|
41
|
-
/**
|
|
42
|
-
* GitHub token used to dispatch and to read runs, artifacts, and file contents.
|
|
43
|
-
* Needs `repo` + `workflow` scope. Must belong to a **user**, not an App: the
|
|
44
|
-
* action's `checkHumanActor` rejects a bot-triggered agent run unless the bot is
|
|
45
|
-
* in its `allowed_bots`.
|
|
46
|
-
*/
|
|
47
|
-
token: string;
|
|
48
|
-
/** Workflow file to dispatch. Default `"framework-agent.yml"`. */
|
|
49
|
-
workflow?: string;
|
|
50
|
-
/** Git ref the first turn runs on. Later turns follow the branch the agent pushed. */
|
|
51
|
-
ref?: string;
|
|
52
|
-
/** How often to poll the run, in ms. Default 5000. */
|
|
53
|
-
pollIntervalMs?: number;
|
|
54
|
-
/** Give up on a run after this long, in ms. Default 1 hour (the job cap is 6). */
|
|
55
|
-
timeoutMs?: number;
|
|
56
|
-
/** REST base. Default `"https://api.github.com"`. */
|
|
57
|
-
apiBase?: string;
|
|
58
|
-
/** `fetch` override for tests. Default the global. */
|
|
59
|
-
fetch?: FetchLike;
|
|
60
|
-
/** Clock override for tests. Default `Date.now`. */
|
|
61
|
-
now?: () => number;
|
|
62
|
-
/** Sleep override for tests. Default a real timer. */
|
|
63
|
-
sleep?: (ms: number) => Promise<void>;
|
|
64
|
-
/**
|
|
65
|
-
* Unique tag mixed into the correlation id. Default a random token; injected in tests for
|
|
66
|
-
* a stable id. Without it a fresh driver process restarts the session counter at 1, so
|
|
67
|
-
* every run's first turn is `actions-1-turn-1` and runs collide (see {@link ActionsSession}).
|
|
68
|
-
*/
|
|
69
|
-
runTag?: () => string;
|
|
70
|
-
/**
|
|
71
|
-
* Prefix for the branch each run pushes its work to (#1085). Default `"claude/"`. The
|
|
72
|
-
* driver names the branch (prefix + session id) and passes it to the workflow, rather than
|
|
73
|
-
* discovering it after the fact: the action leaves `branch_name` empty for a
|
|
74
|
-
* `workflow_dispatch` run, so there is nothing to discover.
|
|
75
|
-
*/
|
|
76
|
-
branchPrefix?: string;
|
|
77
|
-
}
|
|
78
|
-
/** The slice of `fetch` this driver uses. */
|
|
79
|
-
export type FetchLike = (url: string, init?: RequestInit) => Promise<Response>;
|
|
80
|
-
/** One Actions-backed session. Each `prompt` is one workflow run. */
|
|
81
|
-
export declare class ActionsSession implements DriverSession {
|
|
82
|
-
private readonly config;
|
|
83
|
-
private readonly startOpts;
|
|
84
|
-
readonly id: string;
|
|
85
|
-
readonly cwd: string;
|
|
86
|
-
/** The branch the last run pushed; set once the run reports it, and the next turn builds on it. */
|
|
87
|
-
private branch;
|
|
88
|
-
/** The branch this session asks each run to push to. Stable across turns, so they chain. */
|
|
89
|
-
private readonly runBranch;
|
|
90
|
-
/** The agent's own session id, carried across turns so `resume` can continue it. */
|
|
91
|
-
private lastSessionId;
|
|
92
|
-
private turnCounter;
|
|
93
|
-
constructor(config: ActionsDriverOptions, startOpts: DriverStartOptions);
|
|
94
|
-
prompt(text: string, opts?: DriverPromptOptions): Promise<DriverTurn>;
|
|
95
|
-
/**
|
|
96
|
-
* Read a file the agent produced. The runner is gone, so this reads the branch the
|
|
97
|
-
* run pushed rather than the local workspace — the seam is still the code, just
|
|
98
|
-
* fetched over the contents API.
|
|
99
|
-
*/
|
|
100
|
-
readCode(path: string): Promise<string>;
|
|
101
|
-
dispose(): Promise<void>;
|
|
102
|
-
/** Fire the workflow. Returns nothing useful: dispatch is 204 with no body, hence the correlation id. */
|
|
103
|
-
private dispatch;
|
|
104
|
-
/** Poll until our run appears and finishes. Identified by the correlation id in its `run-name`. */
|
|
105
|
-
private awaitWorkflowRun;
|
|
106
|
-
/** Our run among the workflow's recent ones, or undefined while GitHub is still creating it. */
|
|
107
|
-
private findWorkflowRun;
|
|
108
|
-
/** Download the run's artifact and pull the transcript and the pushed branch out of it. */
|
|
109
|
-
private readRunArtifact;
|
|
110
|
-
private get owner();
|
|
111
|
-
/** The session-wide signal or the per-prompt one (`DriverPromptOptions.signal`) both stop the poll. */
|
|
112
|
-
private throwIfAborted;
|
|
113
|
-
/** A REST call that expects JSON back. */
|
|
114
|
-
private api;
|
|
115
|
-
/** A REST call, with auth and error handling. */
|
|
116
|
-
private request;
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Turn the action's `execution_file` into a turn, replaying its events on the way.
|
|
120
|
-
*
|
|
121
|
-
* The adapter is thin on purpose: the file is a JSON **array** of exactly the
|
|
122
|
-
* SDKMessage objects the CLI emits one-per-line, so the existing
|
|
123
|
-
* {@link StreamJsonParser} reads it verbatim once the array is unwrapped. The whole
|
|
124
|
-
* difference between running locally and running on a runner is array-vs-JSONL.
|
|
125
|
-
*
|
|
126
|
-
* Events replay in a burst at the end rather than live — that is the honest cost of
|
|
127
|
-
* this driver, and the dashboard sees the same event stream either way.
|
|
128
|
-
*/
|
|
129
|
-
export declare function replayTranscript(json: string, emit?: (event: DriverEvent) => void): DriverTurn;
|
|
130
|
-
//# sourceMappingURL=actions.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/driver/actions.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE,aAAa,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAEzH;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,aAAc,YAAW,MAAM;IAE9B,OAAO,CAAC,QAAQ,CAAC,IAAI;IADjC,QAAQ,CAAC,EAAE,oBAAmB;IAC9B,YAA6B,IAAI,EAAE,oBAAoB,EAAI;IAE3D,KAAK,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC,CAEtD;CAIF;AAED,yCAAyC;AACzC,MAAM,WAAW,oBAAoB;IACnC,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAA;IACb,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ;;;;;OAKG;IACH,KAAK,EAAE,MAAM,CAAA;IACb,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,sFAAsF;IACtF,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,sDAAsD;IACtD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,sDAAsD;IACtD,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,oDAAoD;IACpD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAClB,sDAAsD;IACtD,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,MAAM,CAAA;IACrB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,6CAA6C;AAC7C,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAO9E,qEAAqE;AACrE,qBAAa,cAAe,YAAW,aAAa;IAYhD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAZ5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,mGAAmG;IACnG,OAAO,CAAC,MAAM,CAAoB;IAClC,4FAA4F;IAC5F,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,oFAAoF;IACpF,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,WAAW,CAAI;IAEvB,YACmB,MAAM,EAAE,oBAAoB,EAC5B,SAAS,EAAE,kBAAkB,EAQ/C;IAEK,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAAC,UAAU,CAAC,CA2B9E;IAED;;;;OAIG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAM5C;IAED,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAGvB;IAED,yGAAyG;YAC3F,QAAQ;IAatB,mGAAmG;YACrF,gBAAgB;IA8B9B,gGAAgG;YAClF,eAAe;IAK7B,2FAA2F;YAC7E,eAAe;IAe7B,OAAO,KAAK,KAAK,GAEhB;IAED,uGAAuG;IACvG,OAAO,CAAC,cAAc;IAKtB,0CAA0C;YAC5B,GAAG;IAMjB,iDAAiD;YACnC,OAAO;CAetB;AAWD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAe,GAAG,UAAU,CAcxG"}
|
package/dist/driver/actions.js
DELETED
|
@@ -1,261 +0,0 @@
|
|
|
1
|
-
import { randomUUID } from 'node:crypto';
|
|
2
|
-
import { StreamJsonParser } from './claude-code.js';
|
|
3
|
-
import { readZip } from './actions-zip.js';
|
|
4
|
-
import { combineFraming, makeEmit } from './session-support.js';
|
|
5
|
-
/**
|
|
6
|
-
* A {@link Driver} that runs the agent on **GitHub Actions** instead of on this
|
|
7
|
-
* machine (#610): dispatch a workflow, poll it, read the transcript it uploads.
|
|
8
|
-
*
|
|
9
|
-
* This is the answer to "drive Claude Code on the web". The routines fire API was
|
|
10
|
-
* the obvious candidate and turned out unusable — the prompt arrives wrapped as
|
|
11
|
-
* untrusted data, and there is no read-back of any kind. The official
|
|
12
|
-
* `anthropics/claude-code-action@v1` has neither problem: the prompt is passed
|
|
13
|
-
* verbatim, and the run publishes its full transcript. Auth is the same
|
|
14
|
-
* subscription posture as everywhere else (#495): a `claude setup-token` OAuth
|
|
15
|
-
* token held by the repo, never an API key of ours.
|
|
16
|
-
*
|
|
17
|
-
* It fits `Driver`/`DriverSession` as written, with no new methods. What changes is
|
|
18
|
-
* not the shape but the tempo, and those costs are real:
|
|
19
|
-
*
|
|
20
|
-
* - **Minutes, not seconds.** Every `prompt` is a fresh runner and a fresh
|
|
21
|
-
* checkout. Continuity comes from the branch the previous turn pushed, which the
|
|
22
|
-
* session tracks and dispatches onto next time.
|
|
23
|
-
* - **No live stream.** The transcript arrives once, at the end, so the dashboard's
|
|
24
|
-
* {@link DriverStartOptions.onEvent} feed replays in a burst rather than trickling.
|
|
25
|
-
* - **Quota is the account's, not the runner's.** Free minutes on a public repo
|
|
26
|
-
* change nothing about the subscription window every run draws down.
|
|
27
|
-
*
|
|
28
|
-
* The workspace lives on a runner that is gone by the time we read it, so
|
|
29
|
-
* {@link ActionsSession.readCode} reads from the pushed branch over the contents
|
|
30
|
-
* API rather than from disk.
|
|
31
|
-
*/
|
|
32
|
-
export class ActionsDriver {
|
|
33
|
-
opts;
|
|
34
|
-
id = 'github-actions';
|
|
35
|
-
constructor(opts) {
|
|
36
|
-
this.opts = opts;
|
|
37
|
-
}
|
|
38
|
-
start(opts) {
|
|
39
|
-
return Promise.resolve(new ActionsSession(this.opts, opts));
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
let sessionCounter = 0;
|
|
43
|
-
/** A short random tag so correlation ids stay unique across driver processes. */
|
|
44
|
-
const randomRunTag = () => randomUUID().slice(0, 8);
|
|
45
|
-
/** One Actions-backed session. Each `prompt` is one workflow run. */
|
|
46
|
-
export class ActionsSession {
|
|
47
|
-
config;
|
|
48
|
-
startOpts;
|
|
49
|
-
id;
|
|
50
|
-
cwd;
|
|
51
|
-
/** The branch the last run pushed; set once the run reports it, and the next turn builds on it. */
|
|
52
|
-
branch;
|
|
53
|
-
/** The branch this session asks each run to push to. Stable across turns, so they chain. */
|
|
54
|
-
runBranch;
|
|
55
|
-
/** The agent's own session id, carried across turns so `resume` can continue it. */
|
|
56
|
-
lastSessionId;
|
|
57
|
-
turnCounter = 0;
|
|
58
|
-
constructor(config, startOpts) {
|
|
59
|
-
this.config = config;
|
|
60
|
-
this.startOpts = startOpts;
|
|
61
|
-
this.cwd = startOpts.cwd;
|
|
62
|
-
// The counter reads well in logs within one process; the random tag is what keeps the
|
|
63
|
-
// correlation id unique across processes, since the daemon spawns a fresh one per run.
|
|
64
|
-
this.id = `actions-${++sessionCounter}-${(config.runTag ?? randomRunTag)()}`;
|
|
65
|
-
this.runBranch = `${config.branchPrefix ?? 'claude/'}framework-${this.id}`;
|
|
66
|
-
this.lastSessionId = startOpts.resumeSessionId;
|
|
67
|
-
}
|
|
68
|
-
async prompt(text, opts = {}) {
|
|
69
|
-
const emit = makeEmit(this.startOpts.onEvent, 'github-actions');
|
|
70
|
-
// The action takes `prompt` as an action input, not through a shell, so a
|
|
71
|
-
// multi-line prompt is safe. The framing rides in front of it (as with Codex):
|
|
72
|
-
// `--append-system-prompt` would have to survive shell-quoting inside the
|
|
73
|
-
// workflow, and a system prompt is not worth an injection seam.
|
|
74
|
-
const framing = combineFraming(this.startOpts.system, opts.system);
|
|
75
|
-
const prompt = framing ? `${framing}\n\n${text}` : text;
|
|
76
|
-
emit({ type: 'start', prompt });
|
|
77
|
-
// How we find our run: the dispatch API returns no run id, so the workflow echoes this
|
|
78
|
-
// into its run-name and artifact name and we match on it. It must be unique per run (the
|
|
79
|
-
// session's random tag) so a fresh process never latches onto a stale same-named run.
|
|
80
|
-
const correlationId = `${this.id}-turn-${++this.turnCounter}`;
|
|
81
|
-
const resume = opts.resume ? this.lastSessionId : undefined;
|
|
82
|
-
await this.dispatch(prompt, correlationId, resume);
|
|
83
|
-
emit({ type: 'notice', message: `Dispatched ${correlationId} to ${this.config.owner}/${this.config.repo}; waiting for the runner.` });
|
|
84
|
-
const run = await this.awaitWorkflowRun(correlationId, emit, opts.signal);
|
|
85
|
-
const artifact = await this.readRunArtifact(run.id, correlationId);
|
|
86
|
-
if (artifact.branch)
|
|
87
|
-
this.branch = artifact.branch;
|
|
88
|
-
const turn = replayTranscript(artifact.execution, emit);
|
|
89
|
-
if (turn.sessionId)
|
|
90
|
-
this.lastSessionId = turn.sessionId;
|
|
91
|
-
emit({ type: 'result', text: turn.text, ...(turn.sessionId ? { sessionId: turn.sessionId } : {}), ...(turn.usage ? { usage: turn.usage } : {}) });
|
|
92
|
-
return turn;
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Read a file the agent produced. The runner is gone, so this reads the branch the
|
|
96
|
-
* run pushed rather than the local workspace — the seam is still the code, just
|
|
97
|
-
* fetched over the contents API.
|
|
98
|
-
*/
|
|
99
|
-
async readCode(path) {
|
|
100
|
-
if (!this.branch)
|
|
101
|
-
throw new Error('No branch yet: readCode is only available after a run has pushed one.');
|
|
102
|
-
const encoded = path.split('/').map(encodeURIComponent).join('/');
|
|
103
|
-
const body = await this.api(`/repos/${this.owner}/contents/${encoded}?ref=${encodeURIComponent(this.branch)}`);
|
|
104
|
-
if (typeof body.content !== 'string')
|
|
105
|
-
throw new Error(`${path} is not a file on ${this.branch}`);
|
|
106
|
-
return Buffer.from(body.content, body.encoding === 'base64' ? 'base64' : 'utf8').toString('utf8');
|
|
107
|
-
}
|
|
108
|
-
dispose() {
|
|
109
|
-
// Every run reaps itself on the runner; there is nothing here to free.
|
|
110
|
-
return Promise.resolve();
|
|
111
|
-
}
|
|
112
|
-
/** Fire the workflow. Returns nothing useful: dispatch is 204 with no body, hence the correlation id. */
|
|
113
|
-
async dispatch(prompt, correlationId, resume) {
|
|
114
|
-
const workflow = this.config.workflow ?? 'framework-agent.yml';
|
|
115
|
-
const inputs = { prompt, correlation_id: correlationId, branch: this.runBranch };
|
|
116
|
-
// These reach a shell on the runner as environment variables. They are ids and
|
|
117
|
-
// model names, so anything outside that alphabet is a bug or an attack.
|
|
118
|
-
if (this.startOpts.model)
|
|
119
|
-
inputs['model'] = assertToken(this.startOpts.model, 'model');
|
|
120
|
-
if (resume)
|
|
121
|
-
inputs['resume_session_id'] = assertToken(resume, 'resume session id');
|
|
122
|
-
await this.api(`/repos/${this.owner}/actions/workflows/${encodeURIComponent(workflow)}/dispatches`, {
|
|
123
|
-
method: 'POST',
|
|
124
|
-
body: JSON.stringify({ ref: this.branch ?? this.config.ref ?? 'main', inputs }),
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
/** Poll until our run appears and finishes. Identified by the correlation id in its `run-name`. */
|
|
128
|
-
async awaitWorkflowRun(correlationId, emit, promptSignal) {
|
|
129
|
-
const now = this.config.now ?? Date.now;
|
|
130
|
-
const sleep = this.config.sleep ?? (ms => new Promise(r => setTimeout(r, ms)));
|
|
131
|
-
const interval = this.config.pollIntervalMs ?? 5000;
|
|
132
|
-
const deadline = now() + (this.config.timeoutMs ?? 60 * 60 * 1000);
|
|
133
|
-
let announced = false;
|
|
134
|
-
for (;;) {
|
|
135
|
-
const found = await this.findWorkflowRun(correlationId);
|
|
136
|
-
if (found) {
|
|
137
|
-
if (!announced) {
|
|
138
|
-
announced = true;
|
|
139
|
-
emit({ type: 'action', label: `run ${found.html_url}` });
|
|
140
|
-
}
|
|
141
|
-
if (found.status === 'completed') {
|
|
142
|
-
if (found.conclusion !== 'success')
|
|
143
|
-
throw new Error(`GitHub Actions run concluded "${found.conclusion}": ${found.html_url}`);
|
|
144
|
-
return found;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
if (now() >= deadline)
|
|
148
|
-
throw new Error(`Timed out waiting for the GitHub Actions run (${correlationId}).`);
|
|
149
|
-
this.throwIfAborted(promptSignal);
|
|
150
|
-
await sleep(interval);
|
|
151
|
-
this.throwIfAborted(promptSignal);
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
/** Our run among the workflow's recent ones, or undefined while GitHub is still creating it. */
|
|
155
|
-
async findWorkflowRun(correlationId) {
|
|
156
|
-
const body = await this.api(`/repos/${this.owner}/actions/runs?event=workflow_dispatch&per_page=50`);
|
|
157
|
-
return (body.workflow_runs ?? []).find(run => typeof run.name === 'string' && run.name.includes(correlationId));
|
|
158
|
-
}
|
|
159
|
-
/** Download the run's artifact and pull the transcript and the pushed branch out of it. */
|
|
160
|
-
async readRunArtifact(runId, correlationId) {
|
|
161
|
-
const list = await this.api(`/repos/${this.owner}/actions/runs/${runId}/artifacts`);
|
|
162
|
-
const artifact = (list.artifacts ?? []).find(a => a.name.includes(correlationId)) ?? list.artifacts?.[0];
|
|
163
|
-
if (!artifact)
|
|
164
|
-
throw new Error(`Run ${runId} uploaded no artifact; the workflow's collect step did not run.`);
|
|
165
|
-
const res = await this.request(`/repos/${this.owner}/actions/artifacts/${artifact.id}/zip`);
|
|
166
|
-
const entries = readZip(Buffer.from(await res.arrayBuffer()));
|
|
167
|
-
const execution = entries.find(e => e.name.endsWith('execution.json'));
|
|
168
|
-
if (!execution)
|
|
169
|
-
throw new Error(`Artifact ${artifact.name} has no execution.json (entries: ${entries.map(e => e.name).join(', ') || 'none'})`);
|
|
170
|
-
const meta = entries.find(e => e.name.endsWith('meta.json'));
|
|
171
|
-
const branch = meta ? readBranch(meta.data.toString('utf8')) : undefined;
|
|
172
|
-
return { execution: execution.data.toString('utf8'), ...(branch ? { branch } : {}) };
|
|
173
|
-
}
|
|
174
|
-
get owner() {
|
|
175
|
-
return `${this.config.owner}/${this.config.repo}`;
|
|
176
|
-
}
|
|
177
|
-
/** The session-wide signal or the per-prompt one (`DriverPromptOptions.signal`) both stop the poll. */
|
|
178
|
-
throwIfAborted(promptSignal) {
|
|
179
|
-
if (this.startOpts.signal?.aborted || promptSignal?.aborted)
|
|
180
|
-
throw new Error('Session aborted while waiting for the GitHub Actions run.');
|
|
181
|
-
}
|
|
182
|
-
/** A REST call that expects JSON back. */
|
|
183
|
-
async api(path, init) {
|
|
184
|
-
const res = await this.request(path, init);
|
|
185
|
-
if (res.status === 204)
|
|
186
|
-
return undefined;
|
|
187
|
-
return (await res.json());
|
|
188
|
-
}
|
|
189
|
-
/** A REST call, with auth and error handling. */
|
|
190
|
-
async request(path, init = {}) {
|
|
191
|
-
const doFetch = this.config.fetch ?? globalThis.fetch;
|
|
192
|
-
const res = await doFetch(`${this.config.apiBase ?? 'https://api.github.com'}${path}`, {
|
|
193
|
-
...init,
|
|
194
|
-
headers: {
|
|
195
|
-
accept: 'application/vnd.github+json',
|
|
196
|
-
authorization: `Bearer ${this.config.token}`,
|
|
197
|
-
'x-github-api-version': '2022-11-28',
|
|
198
|
-
...(init.body ? { 'content-type': 'application/json' } : {}),
|
|
199
|
-
...init.headers,
|
|
200
|
-
},
|
|
201
|
-
});
|
|
202
|
-
if (!res.ok)
|
|
203
|
-
throw new Error(`GitHub API ${init.method ?? 'GET'} ${path} failed (${res.status} ${res.statusText}): ${await safeText(res)}`);
|
|
204
|
-
return res;
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
/**
|
|
208
|
-
* Turn the action's `execution_file` into a turn, replaying its events on the way.
|
|
209
|
-
*
|
|
210
|
-
* The adapter is thin on purpose: the file is a JSON **array** of exactly the
|
|
211
|
-
* SDKMessage objects the CLI emits one-per-line, so the existing
|
|
212
|
-
* {@link StreamJsonParser} reads it verbatim once the array is unwrapped. The whole
|
|
213
|
-
* difference between running locally and running on a runner is array-vs-JSONL.
|
|
214
|
-
*
|
|
215
|
-
* Events replay in a burst at the end rather than live — that is the honest cost of
|
|
216
|
-
* this driver, and the dashboard sees the same event stream either way.
|
|
217
|
-
*/
|
|
218
|
-
export function replayTranscript(json, emit = () => { }) {
|
|
219
|
-
let messages;
|
|
220
|
-
try {
|
|
221
|
-
messages = JSON.parse(json);
|
|
222
|
-
}
|
|
223
|
-
catch (err) {
|
|
224
|
-
throw new Error(`Could not parse the run transcript as JSON: ${err.message}`);
|
|
225
|
-
}
|
|
226
|
-
if (!Array.isArray(messages))
|
|
227
|
-
throw new Error('The run transcript is not a JSON array of messages.');
|
|
228
|
-
const parser = new StreamJsonParser();
|
|
229
|
-
for (const message of messages) {
|
|
230
|
-
for (const event of parser.push(JSON.stringify(message)))
|
|
231
|
-
emit(event);
|
|
232
|
-
}
|
|
233
|
-
return parser.result();
|
|
234
|
-
}
|
|
235
|
-
/** The branch the run pushed, from the workflow's `meta.json`. Absent when the agent pushed nothing. */
|
|
236
|
-
function readBranch(json) {
|
|
237
|
-
try {
|
|
238
|
-
const meta = JSON.parse(json);
|
|
239
|
-
const branch = meta['branch'];
|
|
240
|
-
return typeof branch === 'string' && branch ? branch : undefined;
|
|
241
|
-
}
|
|
242
|
-
catch {
|
|
243
|
-
return undefined; // A malformed meta file costs us `readCode`, not the turn.
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
/** Reject anything that is not an opaque id, since these reach a shell on the runner. */
|
|
247
|
-
function assertToken(value, what) {
|
|
248
|
-
if (!/^[A-Za-z0-9._:-]+$/.test(value))
|
|
249
|
-
throw new Error(`Refusing to pass an unsafe ${what} to the workflow: ${value}`);
|
|
250
|
-
return value;
|
|
251
|
-
}
|
|
252
|
-
/** An error body, best-effort — a failure to read one must not replace the real error. */
|
|
253
|
-
async function safeText(res) {
|
|
254
|
-
try {
|
|
255
|
-
return (await res.text()).slice(0, 500);
|
|
256
|
-
}
|
|
257
|
-
catch {
|
|
258
|
-
return '<no body>';
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
//# sourceMappingURL=actions.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/driver/actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import type { DriverEvent, DriverTurn } from './types.js';
|
|
2
|
-
/** The slice of `child_process.spawn` a driver needs. Injectable for tests. */
|
|
3
|
-
export type SpawnLike = (command: string, args: readonly string[], options: {
|
|
4
|
-
cwd: string;
|
|
5
|
-
env: NodeJS.ProcessEnv;
|
|
6
|
-
detached?: boolean;
|
|
7
|
-
}) => SpawnedProcess;
|
|
8
|
-
/** The slice of a spawned process a driver reads. */
|
|
9
|
-
export interface SpawnedProcess {
|
|
10
|
-
/** OS pid; present for a real child, absent for in-memory test fakes. */
|
|
11
|
-
pid?: number | undefined;
|
|
12
|
-
stdout: NodeJS.ReadableStream | null;
|
|
13
|
-
stderr: NodeJS.ReadableStream | null;
|
|
14
|
-
stdin: NodeJS.WritableStream | null;
|
|
15
|
-
on(event: 'close', listener: (code: number | null) => void): unknown;
|
|
16
|
-
on(event: 'error', listener: (err: Error) => void): unknown;
|
|
17
|
-
kill(signal?: NodeJS.Signals): unknown;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* The slice of a driver's output parser {@link runAgentCli} drives: fed one line
|
|
21
|
-
* at a time, asked for the turn at the end. Each wrapped agent speaks its own
|
|
22
|
-
* dialect ({@link StreamJsonParser} for Claude Code, `CodexJsonParser` for
|
|
23
|
-
* Codex), but the process handling around it is identical.
|
|
24
|
-
*/
|
|
25
|
-
export interface AgentCliParser {
|
|
26
|
-
/** Fold one line of the agent's output in, and surface anything worth emitting. */
|
|
27
|
-
push(line: string): DriverEvent[];
|
|
28
|
-
/** The turn the lines added up to. */
|
|
29
|
-
result(): DriverTurn;
|
|
30
|
-
}
|
|
31
|
-
/** How to run one agent-CLI invocation. */
|
|
32
|
-
export interface RunAgentCliOptions {
|
|
33
|
-
bin: string;
|
|
34
|
-
args: string[];
|
|
35
|
-
cwd: string;
|
|
36
|
-
env: NodeJS.ProcessEnv;
|
|
37
|
-
prompt: string;
|
|
38
|
-
spawn: SpawnLike;
|
|
39
|
-
emit: (event: DriverEvent) => void;
|
|
40
|
-
signals: AbortSignal[];
|
|
41
|
-
/** The agent's own output dialect. */
|
|
42
|
-
parser: AgentCliParser;
|
|
43
|
-
/** The agent's name, for error messages. Default `"claude-code"`. */
|
|
44
|
-
agent?: string;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Spawn one agent-CLI invocation and resolve with its final turn.
|
|
48
|
-
*
|
|
49
|
-
* Everything here is about the *process*, not the agent: its own process group
|
|
50
|
-
* so an interrupt kills the whole tree rather than orphaning it, a SIGTERM/
|
|
51
|
-
* SIGKILL grace window, abort wiring, and a non-zero exit failing the turn even
|
|
52
|
-
* when text was streamed first. Only {@link RunAgentCliOptions.parser} knows
|
|
53
|
-
* which agent is on the other end — a second agent gets all of this for free
|
|
54
|
-
* rather than a second copy of it.
|
|
55
|
-
*/
|
|
56
|
-
export declare function runAgentCli(opts: RunAgentCliOptions): Promise<DriverTurn>;
|
|
57
|
-
//# sourceMappingURL=agent-cli.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-cli.d.ts","sourceRoot":"","sources":["../../src/driver/agent-cli.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAWzD,+EAA+E;AAC/E,MAAM,MAAM,SAAS,GAAG,CACtB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,KACjE,cAAc,CAAA;AAEnB,qDAAqD;AACrD,MAAM,WAAW,cAAc;IAC7B,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACxB,MAAM,EAAE,MAAM,CAAC,cAAc,GAAG,IAAI,CAAA;IACpC,MAAM,EAAE,MAAM,CAAC,cAAc,GAAG,IAAI,CAAA;IACpC,KAAK,EAAE,MAAM,CAAC,cAAc,GAAG,IAAI,CAAA;IACnC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,OAAO,CAAA;IACpE,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAA;IAC3D,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAA;CACvC;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,mFAAmF;IACnF,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAAA;IACjC,sCAAsC;IACtC,MAAM,IAAI,UAAU,CAAA;CACrB;AAED,2CAA2C;AAC3C,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,SAAS,CAAA;IAChB,IAAI,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;IAClC,OAAO,EAAE,WAAW,EAAE,CAAA;IACtB,sCAAsC;IACtC,MAAM,EAAE,cAAc,CAAA;IACtB,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,CA8GzE"}
|
package/dist/driver/agent-cli.js
DELETED
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
import { createInterface } from 'node:readline';
|
|
2
|
-
import { killTree, registerChild, unregisterChild } from './child-registry.js';
|
|
3
|
-
// The agent-agnostic core for running one wrapped coding-agent CLI: spawn it in its own
|
|
4
|
-
// process group, stream its output through a parser, and gate the turn on its exit. Each
|
|
5
|
-
// concrete driver (claude-code, codex) supplies the argv and an AgentCliParser for its own
|
|
6
|
-
// output dialect; everything about the *process* lives here, so a second driver reuses it
|
|
7
|
-
// rather than reaching into the first driver's file for it.
|
|
8
|
-
/** Grace between SIGTERM and the SIGKILL that forces a hung agent tree down. */
|
|
9
|
-
const TERMINATE_GRACE_MS = 5000;
|
|
10
|
-
/**
|
|
11
|
-
* Spawn one agent-CLI invocation and resolve with its final turn.
|
|
12
|
-
*
|
|
13
|
-
* Everything here is about the *process*, not the agent: its own process group
|
|
14
|
-
* so an interrupt kills the whole tree rather than orphaning it, a SIGTERM/
|
|
15
|
-
* SIGKILL grace window, abort wiring, and a non-zero exit failing the turn even
|
|
16
|
-
* when text was streamed first. Only {@link RunAgentCliOptions.parser} knows
|
|
17
|
-
* which agent is on the other end — a second agent gets all of this for free
|
|
18
|
-
* rather than a second copy of it.
|
|
19
|
-
*/
|
|
20
|
-
export function runAgentCli(opts) {
|
|
21
|
-
return new Promise((resolvePromise, rejectPromise) => {
|
|
22
|
-
for (const s of opts.signals) {
|
|
23
|
-
if (s.aborted) {
|
|
24
|
-
rejectPromise(new Error(`[framework] ${opts.agent ?? 'claude-code'} prompt aborted`));
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
opts.emit({ type: 'start', prompt: opts.prompt });
|
|
29
|
-
// `detached` makes the child its own process-group leader so we can kill the
|
|
30
|
-
// whole agent subtree (claude + node workers + tool calls) at once, not just
|
|
31
|
-
// the top process — otherwise an interrupt orphans the tree (the leak).
|
|
32
|
-
const child = opts.spawn(opts.bin, opts.args, { cwd: opts.cwd, env: opts.env, detached: true });
|
|
33
|
-
const pid = child.pid;
|
|
34
|
-
if (pid != null)
|
|
35
|
-
registerChild(pid);
|
|
36
|
-
const parser = opts.parser;
|
|
37
|
-
const agent = opts.agent ?? 'claude-code';
|
|
38
|
-
let settled = false;
|
|
39
|
-
let hardKillTimer;
|
|
40
|
-
// Raw bytes, decoded once at close: a per-chunk `String(chunk)` corrupts a multibyte
|
|
41
|
-
// UTF-8 codepoint split across two chunks, and this text becomes the turn's error detail.
|
|
42
|
-
const stderrChunks = [];
|
|
43
|
-
// Kill the agent's whole process group: SIGTERM to let it flush, then a
|
|
44
|
-
// SIGKILL after a grace window in case it ignores the term (mid tool-call).
|
|
45
|
-
const terminate = () => {
|
|
46
|
-
if (pid != null)
|
|
47
|
-
killTree(pid, 'SIGTERM');
|
|
48
|
-
else
|
|
49
|
-
child.kill('SIGTERM');
|
|
50
|
-
hardKillTimer = setTimeout(() => {
|
|
51
|
-
if (pid != null)
|
|
52
|
-
killTree(pid, 'SIGKILL');
|
|
53
|
-
else
|
|
54
|
-
child.kill('SIGKILL');
|
|
55
|
-
}, TERMINATE_GRACE_MS);
|
|
56
|
-
hardKillTimer.unref?.();
|
|
57
|
-
};
|
|
58
|
-
// Runs exactly once the process is done with (closed, errored, or killed):
|
|
59
|
-
// stop tracking it and cancel any pending hard-kill.
|
|
60
|
-
const cleanup = () => {
|
|
61
|
-
if (pid != null)
|
|
62
|
-
unregisterChild(pid);
|
|
63
|
-
if (hardKillTimer)
|
|
64
|
-
clearTimeout(hardKillTimer);
|
|
65
|
-
};
|
|
66
|
-
const finish = (fn) => {
|
|
67
|
-
if (settled)
|
|
68
|
-
return;
|
|
69
|
-
settled = true;
|
|
70
|
-
for (const { signal, handler } of aborts)
|
|
71
|
-
signal.removeEventListener('abort', handler);
|
|
72
|
-
fn();
|
|
73
|
-
};
|
|
74
|
-
const aborts = opts.signals.map(signal => {
|
|
75
|
-
const handler = () => {
|
|
76
|
-
if (settled)
|
|
77
|
-
return;
|
|
78
|
-
terminate();
|
|
79
|
-
finish(() => rejectPromise(new Error(`[framework] ${agent} prompt aborted`)));
|
|
80
|
-
};
|
|
81
|
-
signal.addEventListener('abort', handler);
|
|
82
|
-
return { signal, handler };
|
|
83
|
-
});
|
|
84
|
-
child.on('error', err => {
|
|
85
|
-
cleanup();
|
|
86
|
-
finish(() => rejectPromise(err));
|
|
87
|
-
});
|
|
88
|
-
if (child.stdout) {
|
|
89
|
-
const rl = createInterface({ input: child.stdout });
|
|
90
|
-
rl.on('line', line => {
|
|
91
|
-
for (const event of parser.push(line))
|
|
92
|
-
opts.emit(event);
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
if (child.stderr) {
|
|
96
|
-
child.stderr.on('data', (chunk) => stderrChunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)));
|
|
97
|
-
}
|
|
98
|
-
child.on('close', code => {
|
|
99
|
-
cleanup();
|
|
100
|
-
// An abort (or a spawn error) already settled and reported the turn; the process
|
|
101
|
-
// still closes afterward, but its late exit must not emit a second telemetry event.
|
|
102
|
-
if (settled)
|
|
103
|
-
return;
|
|
104
|
-
const turn = parser.result();
|
|
105
|
-
// A non-zero exit is a failed turn even when the agent streamed some text
|
|
106
|
-
// first: the loop gates on the outcome, so a crash mid-build must not pass
|
|
107
|
-
// as a result. Surface stderr, else the partial text, as context.
|
|
108
|
-
if (code !== 0) {
|
|
109
|
-
const detail = Buffer.concat(stderrChunks).toString('utf8').trim() || turn.text.trim() || `exit code ${code ?? 'null'}`;
|
|
110
|
-
opts.emit({ type: 'error', message: detail });
|
|
111
|
-
finish(() => rejectPromise(new Error(`[framework] ${agent} exited (${code ?? 'null'}): ${detail}`)));
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
opts.emit({
|
|
115
|
-
type: 'result',
|
|
116
|
-
text: turn.text,
|
|
117
|
-
...(turn.sessionId ? { sessionId: turn.sessionId } : {}),
|
|
118
|
-
...(turn.usage ? { usage: turn.usage } : {}),
|
|
119
|
-
});
|
|
120
|
-
finish(() => resolvePromise(turn));
|
|
121
|
-
});
|
|
122
|
-
// Feed the prompt over stdin so long prompts never hit arg-length limits.
|
|
123
|
-
if (child.stdin) {
|
|
124
|
-
// A CLI that exits before reading stdin (bad flag, instant crash) surfaces an async
|
|
125
|
-
// EPIPE on the stream; with no listener that is an uncaught exception in the daemon
|
|
126
|
-
// (#943). The close handler already reports the failed turn, so the error carries
|
|
127
|
-
// nothing the caller needs.
|
|
128
|
-
child.stdin.on('error', () => { });
|
|
129
|
-
child.stdin.write(opts.prompt);
|
|
130
|
-
child.stdin.end();
|
|
131
|
-
}
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
//# sourceMappingURL=agent-cli.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-cli.js","sourceRoot":"","sources":["../../src/driver/agent-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAG9E,wFAAwF;AACxF,yFAAyF;AACzF,2FAA2F;AAC3F,0FAA0F;AAC1F,4DAA4D;AAE5D,gFAAgF;AAChF,MAAM,kBAAkB,GAAG,IAAI,CAAA;AAkD/B;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CAAC,IAAwB;IAClD,OAAO,IAAI,OAAO,CAAa,CAAC,cAAc,EAAE,aAAa,EAAE,EAAE;QAC/D,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;gBACd,aAAa,CAAC,IAAI,KAAK,CAAC,eAAe,IAAI,CAAC,KAAK,IAAI,aAAa,iBAAiB,CAAC,CAAC,CAAA;gBACrF,OAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;QACjD,6EAA6E;QAC7E,6EAA6E;QAC7E,wEAAwE;QACxE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;QAC/F,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAA;QACrB,IAAI,GAAG,IAAI,IAAI;YAAE,aAAa,CAAC,GAAG,CAAC,CAAA;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,aAAa,CAAA;QACzC,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,IAAI,aAAwD,CAAA;QAC5D,qFAAqF;QACrF,0FAA0F;QAC1F,MAAM,YAAY,GAAa,EAAE,CAAA;QAEjC,wEAAwE;QACxE,4EAA4E;QAC5E,MAAM,SAAS,GAAG,GAAG,EAAE;YACrB,IAAI,GAAG,IAAI,IAAI;gBAAE,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;;gBACpC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAC1B,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC9B,IAAI,GAAG,IAAI,IAAI;oBAAE,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;;oBACpC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAC5B,CAAC,EAAE,kBAAkB,CAAC,CAAA;YACtB,aAAa,CAAC,KAAK,EAAE,EAAE,CAAA;QACzB,CAAC,CAAA;QAED,2EAA2E;QAC3E,qDAAqD;QACrD,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,IAAI,GAAG,IAAI,IAAI;gBAAE,eAAe,CAAC,GAAG,CAAC,CAAA;YACrC,IAAI,aAAa;gBAAE,YAAY,CAAC,aAAa,CAAC,CAAA;QAChD,CAAC,CAAA;QAED,MAAM,MAAM,GAAG,CAAC,EAAc,EAAE,EAAE;YAChC,IAAI,OAAO;gBAAE,OAAM;YACnB,OAAO,GAAG,IAAI,CAAA;YACd,KAAK,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,MAAM;gBAAE,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YACtF,EAAE,EAAE,CAAA;QACN,CAAC,CAAA;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YACvC,MAAM,OAAO,GAAG,GAAG,EAAE;gBACnB,IAAI,OAAO;oBAAE,OAAM;gBACnB,SAAS,EAAE,CAAA;gBACX,MAAM,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,eAAe,KAAK,iBAAiB,CAAC,CAAC,CAAC,CAAA;YAC/E,CAAC,CAAA;YACD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YACzC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;QAC5B,CAAC,CAAC,CAAA;QAEF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;YACtB,OAAO,EAAE,CAAA;YACT,MAAM,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAA;QAClC,CAAC,CAAC,CAAA;QAEF,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;YACnD,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;gBACnB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;oBAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACzD,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAsB,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAC7H,CAAC;QAED,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;YACvB,OAAO,EAAE,CAAA;YACT,iFAAiF;YACjF,oFAAoF;YACpF,IAAI,OAAO;gBAAE,OAAM;YACnB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,CAAA;YAC5B,0EAA0E;YAC1E,2EAA2E;YAC3E,kEAAkE;YAClE,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,aAAa,IAAI,IAAI,MAAM,EAAE,CAAA;gBACvH,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAA;gBAC7C,MAAM,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,eAAe,KAAK,YAAY,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,CAAC,CAAC,CAAC,CAAA;gBACpG,OAAM;YACR,CAAC;YACD,IAAI,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC7C,CAAC,CAAA;YACF,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAA;QACpC,CAAC,CAAC,CAAA;QAEF,0EAA0E;QAC1E,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,oFAAoF;YACpF,oFAAoF;YACpF,kFAAkF;YAClF,4BAA4B;YAC5B,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;YACjC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC9B,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;QACnB,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Process-tree kill registry.
|
|
3
|
-
*
|
|
4
|
-
* The framework spawns the Claude Code CLI, which in turn spawns a deep subtree
|
|
5
|
-
* (node workers, ripgrep, bash tool calls, MCP servers). Signaling only the
|
|
6
|
-
* top-level `claude` orphans that subtree: it reparents to init and keeps
|
|
7
|
-
* burning CPU — the runaway-process leak we hit (a swarm of stray `claude`
|
|
8
|
-
* processes after an agent was interrupted).
|
|
9
|
-
*
|
|
10
|
-
* Fix: spawn each long-lived child as its own process-group leader (`detached`)
|
|
11
|
-
* and signal the whole group at once via a negative pid. Register every live
|
|
12
|
-
* child here so a hard framework exit (crash, uncaught error, process.exit)
|
|
13
|
-
* still reaps the trees on the way out.
|
|
14
|
-
*/
|
|
15
|
-
/**
|
|
16
|
-
* Signal an entire process group. `pid` must be a group leader (spawned
|
|
17
|
-
* `detached`); the negative pid targets the group, reaping the whole subtree in
|
|
18
|
-
* one shot. Never throws — a group that already exited is not an error.
|
|
19
|
-
*/
|
|
20
|
-
export declare function killTree(pid: number, signal: NodeJS.Signals): void;
|
|
21
|
-
/** Track a detached child so it is force-killed if the framework exits first. */
|
|
22
|
-
export declare function registerChild(pid: number): void;
|
|
23
|
-
/** Stop tracking a child that has already exited (or been killed). */
|
|
24
|
-
export declare function unregisterChild(pid: number): void;
|
|
25
|
-
//# sourceMappingURL=child-registry.d.ts.map
|