@openagt/dashboard 0.0.0-stage → 0.8.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/LICENSE +21 -0
- package/README.md +125 -2
- package/dist/agent-archive.d.ts +35 -0
- package/dist/agent-archive.d.ts.map +1 -0
- package/dist/agent-archive.js +67 -0
- package/dist/agent-archive.js.map +1 -0
- package/dist/agent-commit.d.ts +140 -0
- package/dist/agent-commit.d.ts.map +1 -0
- package/dist/agent-commit.js +254 -0
- package/dist/agent-commit.js.map +1 -0
- package/dist/agent-driver.d.ts +28 -0
- package/dist/agent-driver.d.ts.map +1 -0
- package/dist/agent-driver.js +18 -0
- package/dist/agent-driver.js.map +1 -0
- package/dist/agent-id.d.ts +13 -0
- package/dist/agent-id.d.ts.map +1 -0
- package/dist/agent-id.js +20 -0
- package/dist/agent-id.js.map +1 -0
- package/dist/agent-location.d.ts +11 -0
- package/dist/agent-location.d.ts.map +1 -0
- package/dist/agent-location.js +10 -0
- package/dist/agent-location.js.map +1 -0
- package/dist/agent-locks.d.ts +3 -0
- package/dist/agent-locks.d.ts.map +1 -0
- package/dist/agent-locks.js +40 -0
- package/dist/agent-locks.js.map +1 -0
- package/dist/agent-messages.d.ts +55 -0
- package/dist/agent-messages.d.ts.map +1 -0
- package/dist/agent-messages.js +73 -0
- package/dist/agent-messages.js.map +1 -0
- package/dist/agent-names.d.ts +24 -0
- package/dist/agent-names.d.ts.map +1 -0
- package/dist/agent-names.js +33 -0
- package/dist/agent-names.js.map +1 -0
- package/dist/agent-options.d.ts +45 -0
- package/dist/agent-options.d.ts.map +1 -0
- package/dist/agent-options.js +83 -0
- package/dist/agent-options.js.map +1 -0
- package/dist/agent-spec.d.ts +56 -0
- package/dist/agent-spec.d.ts.map +1 -0
- package/dist/agent-spec.js +56 -0
- package/dist/agent-spec.js.map +1 -0
- package/dist/agent-telemetry.d.ts +88 -0
- package/dist/agent-telemetry.d.ts.map +1 -0
- package/dist/agent-telemetry.js +97 -0
- package/dist/agent-telemetry.js.map +1 -0
- package/dist/agent-view.d.ts +39 -0
- package/dist/agent-view.d.ts.map +1 -0
- package/dist/agent-view.js +45 -0
- package/dist/agent-view.js.map +1 -0
- package/dist/agent.d.ts +113 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +168 -0
- package/dist/agent.js.map +1 -0
- package/dist/archived-agent-patch.d.ts +14 -0
- package/dist/archived-agent-patch.d.ts.map +1 -0
- package/dist/archived-agent-patch.js +22 -0
- package/dist/archived-agent-patch.js.map +1 -0
- package/dist/auto-pm.d.ts +538 -0
- package/dist/auto-pm.d.ts.map +1 -0
- package/dist/auto-pm.js +707 -0
- package/dist/auto-pm.js.map +1 -0
- package/dist/await-gate.d.ts +184 -0
- package/dist/await-gate.d.ts.map +1 -0
- package/dist/await-gate.js +252 -0
- package/dist/await-gate.js.map +1 -0
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +11 -0
- package/dist/bin.js.map +1 -0
- package/dist/branch-links-pass.d.ts +15 -0
- package/dist/branch-links-pass.d.ts.map +1 -0
- package/dist/branch-links-pass.js +13 -0
- package/dist/branch-links-pass.js.map +1 -0
- package/dist/branch-links.d.ts +53 -0
- package/dist/branch-links.d.ts.map +1 -0
- package/dist/branch-links.js +94 -0
- package/dist/branch-links.js.map +1 -0
- package/dist/branch-name.d.ts +8 -0
- package/dist/branch-name.d.ts.map +1 -0
- package/dist/branch-name.js +20 -0
- package/dist/branch-name.js.map +1 -0
- package/dist/branch-names.d.ts +57 -0
- package/dist/branch-names.d.ts.map +1 -0
- package/dist/branch-names.js +72 -0
- package/dist/branch-names.js.map +1 -0
- package/dist/bridge-browser.d.ts +217 -0
- package/dist/bridge-browser.d.ts.map +1 -0
- package/dist/bridge-browser.js +520 -0
- package/dist/bridge-browser.js.map +1 -0
- package/dist/browser-stream.d.ts +20 -0
- package/dist/browser-stream.d.ts.map +1 -0
- package/dist/browser-stream.js +51 -0
- package/dist/browser-stream.js.map +1 -0
- package/dist/browser.d.ts +16 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +38 -0
- package/dist/browser.js.map +1 -0
- package/dist/built-in.d.ts +29 -0
- package/dist/built-in.d.ts.map +1 -0
- package/dist/built-in.js +78 -0
- package/dist/built-in.js.map +1 -0
- package/dist/chrome-extension/background.js +532 -0
- package/dist/chrome-extension/content.js +1475 -0
- package/dist/chrome-extension/driver-plan.js +41 -0
- package/dist/chrome-extension/fingerprint.js +43 -0
- package/dist/chrome-extension/manifest.json +31 -0
- package/dist/chrome-extension/options.html +48 -0
- package/dist/chrome-extension/options.js +122 -0
- package/dist/ci-watch.d.ts +123 -0
- package/dist/ci-watch.d.ts.map +1 -0
- package/dist/ci-watch.js +228 -0
- package/dist/ci-watch.js.map +1 -0
- package/dist/claude-trust.d.ts +16 -0
- package/dist/claude-trust.d.ts.map +1 -0
- package/dist/claude-trust.js +72 -0
- package/dist/claude-trust.js.map +1 -0
- package/dist/cli-exec.d.ts +36 -0
- package/dist/cli-exec.d.ts.map +1 -0
- package/dist/cli-exec.js +44 -0
- package/dist/cli-exec.js.map +1 -0
- package/dist/cli.d.ts +43 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +186 -0
- package/dist/cli.js.map +1 -0
- package/dist/client.d.ts +16 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +30 -0
- package/dist/client.js.map +1 -0
- package/dist/closing-keywords.d.ts +28 -0
- package/dist/closing-keywords.d.ts.map +1 -0
- package/dist/closing-keywords.js +49 -0
- package/dist/closing-keywords.js.map +1 -0
- package/dist/cloud-run-state.d.ts +27 -0
- package/dist/cloud-run-state.d.ts.map +1 -0
- package/dist/cloud-run-state.js +36 -0
- package/dist/cloud-run-state.js.map +1 -0
- package/dist/cloud-scratch-refs.d.ts +85 -0
- package/dist/cloud-scratch-refs.d.ts.map +1 -0
- package/dist/cloud-scratch-refs.js +275 -0
- package/dist/cloud-scratch-refs.js.map +1 -0
- package/dist/cloud-work.d.ts +66 -0
- package/dist/cloud-work.d.ts.map +1 -0
- package/dist/cloud-work.js +204 -0
- package/dist/cloud-work.js.map +1 -0
- package/dist/config-layers.d.ts +62 -0
- package/dist/config-layers.d.ts.map +1 -0
- package/dist/config-layers.js +70 -0
- package/dist/config-layers.js.map +1 -0
- package/dist/config.d.ts +54 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +78 -0
- package/dist/config.js.map +1 -0
- package/dist/consumption-guard.d.ts +53 -0
- package/dist/consumption-guard.d.ts.map +1 -0
- package/dist/consumption-guard.js +69 -0
- package/dist/consumption-guard.js.map +1 -0
- package/dist/control.d.ts +75 -0
- package/dist/control.d.ts.map +1 -0
- package/dist/control.js +68 -0
- package/dist/control.js.map +1 -0
- package/dist/conversation-commit.d.ts +166 -0
- package/dist/conversation-commit.d.ts.map +1 -0
- package/dist/conversation-commit.js +309 -0
- package/dist/conversation-commit.js.map +1 -0
- package/dist/conversations.d.ts +93 -0
- package/dist/conversations.d.ts.map +1 -0
- package/dist/conversations.js +176 -0
- package/dist/conversations.js.map +1 -0
- package/dist/daemon-runtime.d.ts +41 -0
- package/dist/daemon-runtime.d.ts.map +1 -0
- package/dist/daemon-runtime.js +133 -0
- package/dist/daemon-runtime.js.map +1 -0
- package/dist/daemon-services.d.ts +36 -0
- package/dist/daemon-services.d.ts.map +1 -0
- package/dist/daemon-services.js +120 -0
- package/dist/daemon-services.js.map +1 -0
- package/dist/daemon-tick.d.ts +68 -0
- package/dist/daemon-tick.d.ts.map +1 -0
- package/dist/daemon-tick.js +97 -0
- package/dist/daemon-tick.js.map +1 -0
- package/dist/daemon-writes.d.ts +33 -0
- package/dist/daemon-writes.d.ts.map +1 -0
- package/dist/daemon-writes.js +45 -0
- package/dist/daemon-writes.js.map +1 -0
- package/dist/daemon.d.ts +76 -0
- package/dist/daemon.d.ts.map +1 -0
- package/dist/daemon.js +225 -0
- package/dist/daemon.js.map +1 -0
- package/dist/dashboard/activity.d.ts +41 -0
- package/dist/dashboard/activity.d.ts.map +1 -0
- package/dist/dashboard/activity.js +56 -0
- package/dist/dashboard/activity.js.map +1 -0
- package/dist/dashboard/agent-handoff.d.ts +244 -0
- package/dist/dashboard/agent-handoff.d.ts.map +1 -0
- package/dist/dashboard/agent-handoff.js +310 -0
- package/dist/dashboard/agent-handoff.js.map +1 -0
- package/dist/dashboard/agent-tree.d.ts +106 -0
- package/dist/dashboard/agent-tree.d.ts.map +1 -0
- package/dist/dashboard/agent-tree.js +180 -0
- package/dist/dashboard/agent-tree.js.map +1 -0
- package/dist/dashboard/bridge-endpoints.d.ts +158 -0
- package/dist/dashboard/bridge-endpoints.d.ts.map +1 -0
- package/dist/dashboard/bridge-endpoints.js +382 -0
- package/dist/dashboard/bridge-endpoints.js.map +1 -0
- package/dist/dashboard/bridge-question.d.ts +33 -0
- package/dist/dashboard/bridge-question.d.ts.map +1 -0
- package/dist/dashboard/bridge-question.js +20 -0
- package/dist/dashboard/bridge-question.js.map +1 -0
- package/dist/dashboard/bridge-sessions.d.ts +25 -0
- package/dist/dashboard/bridge-sessions.d.ts.map +1 -0
- package/dist/dashboard/bridge-sessions.js +46 -0
- package/dist/dashboard/bridge-sessions.js.map +1 -0
- package/dist/dashboard/bridge-starts.d.ts +61 -0
- package/dist/dashboard/bridge-starts.d.ts.map +1 -0
- package/dist/dashboard/bridge-starts.js +94 -0
- package/dist/dashboard/bridge-starts.js.map +1 -0
- package/dist/dashboard/bridge-store.d.ts +179 -0
- package/dist/dashboard/bridge-store.d.ts.map +1 -0
- package/dist/dashboard/bridge-store.js +262 -0
- package/dist/dashboard/bridge-store.js.map +1 -0
- package/dist/dashboard/browser-proxy.d.ts +41 -0
- package/dist/dashboard/browser-proxy.d.ts.map +1 -0
- package/dist/dashboard/browser-proxy.js +96 -0
- package/dist/dashboard/browser-proxy.js.map +1 -0
- package/dist/dashboard/bundle.d.ts +12 -0
- package/dist/dashboard/bundle.d.ts.map +1 -0
- package/dist/dashboard/bundle.js +22 -0
- package/dist/dashboard/bundle.js.map +1 -0
- package/dist/dashboard/cache.d.ts +47 -0
- package/dist/dashboard/cache.d.ts.map +1 -0
- package/dist/dashboard/cache.js +87 -0
- package/dist/dashboard/cache.js.map +1 -0
- package/dist/dashboard/content-type.d.ts +3 -0
- package/dist/dashboard/content-type.d.ts.map +1 -0
- package/dist/dashboard/content-type.js +31 -0
- package/dist/dashboard/content-type.js.map +1 -0
- package/dist/dashboard/dashboard.d.ts +38 -0
- package/dist/dashboard/dashboard.d.ts.map +1 -0
- package/dist/dashboard/dashboard.js +42 -0
- package/dist/dashboard/dashboard.js.map +1 -0
- package/dist/dashboard/discord-webhook.d.ts +17 -0
- package/dist/dashboard/discord-webhook.d.ts.map +1 -0
- package/dist/dashboard/discord-webhook.js +36 -0
- package/dist/dashboard/discord-webhook.js.map +1 -0
- package/dist/dashboard/docs.d.ts +39 -0
- package/dist/dashboard/docs.d.ts.map +1 -0
- package/dist/dashboard/docs.js +59 -0
- package/dist/dashboard/docs.js.map +1 -0
- package/dist/dashboard/file-diff.d.ts +67 -0
- package/dist/dashboard/file-diff.d.ts.map +1 -0
- package/dist/dashboard/file-diff.js +132 -0
- package/dist/dashboard/file-diff.js.map +1 -0
- package/dist/dashboard/file-read.d.ts +42 -0
- package/dist/dashboard/file-read.d.ts.map +1 -0
- package/dist/dashboard/file-read.js +69 -0
- package/dist/dashboard/file-read.js.map +1 -0
- package/dist/dashboard/file-status.d.ts +21 -0
- package/dist/dashboard/file-status.d.ts.map +1 -0
- package/dist/dashboard/file-status.js +37 -0
- package/dist/dashboard/file-status.js.map +1 -0
- package/dist/dashboard/gh.d.ts +131 -0
- package/dist/dashboard/gh.d.ts.map +1 -0
- package/dist/dashboard/gh.js +150 -0
- package/dist/dashboard/gh.js.map +1 -0
- package/dist/dashboard/git-status.d.ts +44 -0
- package/dist/dashboard/git-status.d.ts.map +1 -0
- package/dist/dashboard/git-status.js +37 -0
- package/dist/dashboard/git-status.js.map +1 -0
- package/dist/dashboard/github.d.ts +11 -0
- package/dist/dashboard/github.d.ts.map +1 -0
- package/dist/dashboard/github.js +33 -0
- package/dist/dashboard/github.js.map +1 -0
- package/dist/dashboard/http.d.ts +29 -0
- package/dist/dashboard/http.d.ts.map +1 -0
- package/dist/dashboard/http.js +74 -0
- package/dist/dashboard/http.js.map +1 -0
- package/dist/dashboard/index.d.ts +24 -0
- package/dist/dashboard/index.d.ts.map +1 -0
- package/dist/dashboard/index.js +23 -0
- package/dist/dashboard/index.js.map +1 -0
- package/dist/dashboard/interventions.d.ts +67 -0
- package/dist/dashboard/interventions.d.ts.map +1 -0
- package/dist/dashboard/interventions.js +169 -0
- package/dist/dashboard/interventions.js.map +1 -0
- package/dist/dashboard/keyed-watcher.d.ts +29 -0
- package/dist/dashboard/keyed-watcher.d.ts.map +1 -0
- package/dist/dashboard/keyed-watcher.js +42 -0
- package/dist/dashboard/keyed-watcher.js.map +1 -0
- package/dist/dashboard/keys.d.ts +31 -0
- package/dist/dashboard/keys.d.ts.map +1 -0
- package/dist/dashboard/keys.js +37 -0
- package/dist/dashboard/keys.js.map +1 -0
- package/dist/dashboard/models.d.ts +25 -0
- package/dist/dashboard/models.d.ts.map +1 -0
- package/dist/dashboard/models.js +30 -0
- package/dist/dashboard/models.js.map +1 -0
- package/dist/dashboard/module-host.d.ts +44 -0
- package/dist/dashboard/module-host.d.ts.map +1 -0
- package/dist/dashboard/module-host.js +91 -0
- package/dist/dashboard/module-host.js.map +1 -0
- package/dist/dashboard/module-serve.d.ts +15 -0
- package/dist/dashboard/module-serve.d.ts.map +1 -0
- package/dist/dashboard/module-serve.js +45 -0
- package/dist/dashboard/module-serve.js.map +1 -0
- package/dist/dashboard/open-in-app.d.ts +43 -0
- package/dist/dashboard/open-in-app.d.ts.map +1 -0
- package/dist/dashboard/open-in-app.js +98 -0
- package/dist/dashboard/open-in-app.js.map +1 -0
- package/dist/dashboard/open-questions.d.ts +45 -0
- package/dist/dashboard/open-questions.d.ts.map +1 -0
- package/dist/dashboard/open-questions.js +62 -0
- package/dist/dashboard/open-questions.js.map +1 -0
- package/dist/dashboard/overview.d.ts +78 -0
- package/dist/dashboard/overview.d.ts.map +1 -0
- package/dist/dashboard/overview.js +87 -0
- package/dist/dashboard/overview.js.map +1 -0
- package/dist/dashboard/projects.d.ts +100 -0
- package/dist/dashboard/projects.d.ts.map +1 -0
- package/dist/dashboard/projects.js +63 -0
- package/dist/dashboard/projects.js.map +1 -0
- package/dist/dashboard/pull-requests.d.ts +127 -0
- package/dist/dashboard/pull-requests.d.ts.map +1 -0
- package/dist/dashboard/pull-requests.js +137 -0
- package/dist/dashboard/pull-requests.js.map +1 -0
- package/dist/dashboard/queue.d.ts +17 -0
- package/dist/dashboard/queue.d.ts.map +1 -0
- package/dist/dashboard/queue.js +19 -0
- package/dist/dashboard/queue.js.map +1 -0
- package/dist/dashboard/quota.d.ts +53 -0
- package/dist/dashboard/quota.d.ts.map +1 -0
- package/dist/dashboard/quota.js +42 -0
- package/dist/dashboard/quota.js.map +1 -0
- package/dist/dashboard/relay-endpoints.d.ts +32 -0
- package/dist/dashboard/relay-endpoints.d.ts.map +1 -0
- package/dist/dashboard/relay-endpoints.js +115 -0
- package/dist/dashboard/relay-endpoints.js.map +1 -0
- package/dist/dashboard/remote-run.d.ts +95 -0
- package/dist/dashboard/remote-run.d.ts.map +1 -0
- package/dist/dashboard/remote-run.js +235 -0
- package/dist/dashboard/remote-run.js.map +1 -0
- package/dist/dashboard/rpc-serve.d.ts +103 -0
- package/dist/dashboard/rpc-serve.d.ts.map +1 -0
- package/dist/dashboard/rpc-serve.js +180 -0
- package/dist/dashboard/rpc-serve.js.map +1 -0
- package/dist/dashboard/run-handoff.d.ts +311 -0
- package/dist/dashboard/run-handoff.d.ts.map +1 -0
- package/dist/dashboard/run-handoff.js +485 -0
- package/dist/dashboard/run-handoff.js.map +1 -0
- package/dist/dashboard/run-inbox.d.ts +31 -0
- package/dist/dashboard/run-inbox.d.ts.map +1 -0
- package/dist/dashboard/run-inbox.js +51 -0
- package/dist/dashboard/run-inbox.js.map +1 -0
- package/dist/dashboard/scheduler-state.d.ts +73 -0
- package/dist/dashboard/scheduler-state.d.ts.map +1 -0
- package/dist/dashboard/scheduler-state.js +120 -0
- package/dist/dashboard/scheduler-state.js.map +1 -0
- package/dist/dashboard/server.d.ts +103 -0
- package/dist/dashboard/server.d.ts.map +1 -0
- package/dist/dashboard/server.js +230 -0
- package/dist/dashboard/server.js.map +1 -0
- package/dist/dashboard/static.d.ts +9 -0
- package/dist/dashboard/static.d.ts.map +1 -0
- package/dist/dashboard/static.js +54 -0
- package/dist/dashboard/static.js.map +1 -0
- package/dist/dashboard/subagent-settings.d.ts +26 -0
- package/dist/dashboard/subagent-settings.d.ts.map +1 -0
- package/dist/dashboard/subagent-settings.js +52 -0
- package/dist/dashboard/subagent-settings.js.map +1 -0
- package/dist/dashboard/telefunc-serve.d.ts +118 -0
- package/dist/dashboard/telefunc-serve.d.ts.map +1 -0
- package/dist/dashboard/telefunc-serve.js +108 -0
- package/dist/dashboard/telefunc-serve.js.map +1 -0
- package/dist/dashboard/tickets.d.ts +29 -0
- package/dist/dashboard/tickets.d.ts.map +1 -0
- package/dist/dashboard/tickets.js +38 -0
- package/dist/dashboard/tickets.js.map +1 -0
- package/dist/dashboard/types.d.ts +109 -0
- package/dist/dashboard/types.d.ts.map +1 -0
- package/dist/dashboard/types.js +2 -0
- package/dist/dashboard/types.js.map +1 -0
- package/dist/dashboard/web-start-endpoints.d.ts +32 -0
- package/dist/dashboard/web-start-endpoints.d.ts.map +1 -0
- package/dist/dashboard/web-start-endpoints.js +75 -0
- package/dist/dashboard/web-start-endpoints.js.map +1 -0
- package/dist/dashboard/widget-serve.d.ts +15 -0
- package/dist/dashboard/widget-serve.d.ts.map +1 -0
- package/dist/dashboard/widget-serve.js +45 -0
- package/dist/dashboard/widget-serve.js.map +1 -0
- package/dist/dashboard-bundle/assets/client-CbBRB9m4.js +9 -0
- package/dist/dashboard-bundle/assets/jsx-runtime-By8HlURe.js +1 -0
- package/dist/dashboard-bundle/assets/main-B3HghPQy.css +2 -0
- package/dist/dashboard-bundle/assets/main-om0WOAku.js +140 -0
- package/dist/dashboard-bundle/assets/module-jASZmfSB.js +21 -0
- package/dist/dashboard-bundle/assets/react-CZI7_Jkm.js +1 -0
- package/dist/dashboard-bundle/assets/react-dom-cJyBB_A4.js +1 -0
- package/dist/dashboard-bundle/assets/rolldown-runtime-QTnfLwEv.js +1 -0
- package/dist/dashboard-bundle/host/module.js +1 -0
- package/dist/dashboard-bundle/host/react-dom-client.js +1 -0
- package/dist/dashboard-bundle/host/react-dom.js +1 -0
- package/dist/dashboard-bundle/host/react-jsx-runtime.js +1 -0
- package/dist/dashboard-bundle/host/react.js +1 -0
- package/dist/dashboard-bundle/index.html +42 -0
- package/dist/dashboard-bundle/logo-animated.svg +34 -0
- package/dist/dashboard-bundle/logo.svg +16 -0
- package/dist/dashboard-client/assets/chunks/chunk-BF9pJudf.js +4 -0
- package/dist/dashboard-client/assets/entries/entry-client-routing.CT1e9F0o.js +1 -0
- package/dist/dashboard-client/assets/entries/pages_index.CkW5JQ8X.js +428 -0
- package/dist/dashboard-client/assets/static/layouts_tailwind-00e65532.8OjKGAbA.css +2 -0
- package/dist/dashboard-client/index.html +27 -0
- package/dist/dashboard-client/index.pageContext.json +1 -0
- package/dist/dashboard-client/logo-animated.svg +34 -0
- package/dist/dashboard-client/logo.svg +16 -0
- package/dist/dashboard-rpc/context.d.ts +54 -0
- package/dist/dashboard-rpc/context.d.ts.map +1 -0
- package/dist/dashboard-rpc/context.js +102 -0
- package/dist/dashboard-rpc/context.js.map +1 -0
- package/dist/dashboard-rpc/control.d.ts +124 -0
- package/dist/dashboard-rpc/control.d.ts.map +1 -0
- package/dist/dashboard-rpc/control.js +284 -0
- package/dist/dashboard-rpc/control.js.map +1 -0
- package/dist/dashboard-rpc/control.telefunc.d.ts +176 -0
- package/dist/dashboard-rpc/control.telefunc.d.ts.map +1 -0
- package/dist/dashboard-rpc/control.telefunc.js +373 -0
- package/dist/dashboard-rpc/control.telefunc.js.map +1 -0
- package/dist/dashboard-rpc/devices.d.ts +9 -0
- package/dist/dashboard-rpc/devices.d.ts.map +1 -0
- package/dist/dashboard-rpc/devices.js +12 -0
- package/dist/dashboard-rpc/devices.js.map +1 -0
- package/dist/dashboard-rpc/devices.telefunc.d.ts +9 -0
- package/dist/dashboard-rpc/devices.telefunc.d.ts.map +1 -0
- package/dist/dashboard-rpc/devices.telefunc.js +12 -0
- package/dist/dashboard-rpc/devices.telefunc.js.map +1 -0
- package/dist/dashboard-rpc/events-tail.d.ts +68 -0
- package/dist/dashboard-rpc/events-tail.d.ts.map +1 -0
- package/dist/dashboard-rpc/events-tail.js +257 -0
- package/dist/dashboard-rpc/events-tail.js.map +1 -0
- package/dist/dashboard-rpc/events.d.ts +39 -0
- package/dist/dashboard-rpc/events.d.ts.map +1 -0
- package/dist/dashboard-rpc/events.js +47 -0
- package/dist/dashboard-rpc/events.js.map +1 -0
- package/dist/dashboard-rpc/events.telefunc.d.ts +36 -0
- package/dist/dashboard-rpc/events.telefunc.d.ts.map +1 -0
- package/dist/dashboard-rpc/events.telefunc.js +70 -0
- package/dist/dashboard-rpc/events.telefunc.js.map +1 -0
- package/dist/dashboard-rpc/index.d.ts +29 -0
- package/dist/dashboard-rpc/index.d.ts.map +1 -0
- package/dist/dashboard-rpc/index.js +40 -0
- package/dist/dashboard-rpc/index.js.map +1 -0
- package/dist/dashboard-rpc/models.d.ts +4 -0
- package/dist/dashboard-rpc/models.d.ts.map +1 -0
- package/dist/dashboard-rpc/models.js +8 -0
- package/dist/dashboard-rpc/models.js.map +1 -0
- package/dist/dashboard-rpc/modules.d.ts +43 -0
- package/dist/dashboard-rpc/modules.d.ts.map +1 -0
- package/dist/dashboard-rpc/modules.js +77 -0
- package/dist/dashboard-rpc/modules.js.map +1 -0
- package/dist/dashboard-rpc/preferences.d.ts +41 -0
- package/dist/dashboard-rpc/preferences.d.ts.map +1 -0
- package/dist/dashboard-rpc/preferences.js +65 -0
- package/dist/dashboard-rpc/preferences.js.map +1 -0
- package/dist/dashboard-rpc/preferences.telefunc.d.ts +97 -0
- package/dist/dashboard-rpc/preferences.telefunc.d.ts.map +1 -0
- package/dist/dashboard-rpc/preferences.telefunc.js +157 -0
- package/dist/dashboard-rpc/preferences.telefunc.js.map +1 -0
- package/dist/dashboard-rpc/projects.d.ts +59 -0
- package/dist/dashboard-rpc/projects.d.ts.map +1 -0
- package/dist/dashboard-rpc/projects.js +87 -0
- package/dist/dashboard-rpc/projects.js.map +1 -0
- package/dist/dashboard-rpc/projects.telefunc.d.ts +56 -0
- package/dist/dashboard-rpc/projects.telefunc.d.ts.map +1 -0
- package/dist/dashboard-rpc/projects.telefunc.js +96 -0
- package/dist/dashboard-rpc/projects.telefunc.js.map +1 -0
- package/dist/dashboard-rpc/quota.d.ts +4 -0
- package/dist/dashboard-rpc/quota.d.ts.map +1 -0
- package/dist/dashboard-rpc/quota.js +15 -0
- package/dist/dashboard-rpc/quota.js.map +1 -0
- package/dist/dashboard-rpc/quota.telefunc.d.ts +40 -0
- package/dist/dashboard-rpc/quota.telefunc.d.ts.map +1 -0
- package/dist/dashboard-rpc/quota.telefunc.js +84 -0
- package/dist/dashboard-rpc/quota.telefunc.js.map +1 -0
- package/dist/dashboard-rpc/reads.d.ts +185 -0
- package/dist/dashboard-rpc/reads.d.ts.map +1 -0
- package/dist/dashboard-rpc/reads.js +370 -0
- package/dist/dashboard-rpc/reads.js.map +1 -0
- package/dist/dashboard-rpc/reads.telefunc.d.ts +197 -0
- package/dist/dashboard-rpc/reads.telefunc.d.ts.map +1 -0
- package/dist/dashboard-rpc/reads.telefunc.js +403 -0
- package/dist/dashboard-rpc/reads.telefunc.js.map +1 -0
- package/dist/dashboard-rpc/register.d.ts +18 -0
- package/dist/dashboard-rpc/register.d.ts.map +1 -0
- package/dist/dashboard-rpc/register.js +66 -0
- package/dist/dashboard-rpc/register.js.map +1 -0
- package/dist/dashboard-rpc/relay-agent.d.ts +9 -0
- package/dist/dashboard-rpc/relay-agent.d.ts.map +1 -0
- package/dist/dashboard-rpc/relay-agent.js +21 -0
- package/dist/dashboard-rpc/relay-agent.js.map +1 -0
- package/dist/dashboard-rpc/relay-dispatch.d.ts +9 -0
- package/dist/dashboard-rpc/relay-dispatch.d.ts.map +1 -0
- package/dist/dashboard-rpc/relay-dispatch.js +24 -0
- package/dist/dashboard-rpc/relay-dispatch.js.map +1 -0
- package/dist/dashboard-rpc/relay-run.d.ts +9 -0
- package/dist/dashboard-rpc/relay-run.d.ts.map +1 -0
- package/dist/dashboard-rpc/relay-run.js +21 -0
- package/dist/dashboard-rpc/relay-run.js.map +1 -0
- package/dist/dashboard-rpc/stream-channel.d.ts +23 -0
- package/dist/dashboard-rpc/stream-channel.d.ts.map +1 -0
- package/dist/dashboard-rpc/stream-channel.js +52 -0
- package/dist/dashboard-rpc/stream-channel.js.map +1 -0
- package/dist/dashboard-rpc/stream-forward.d.ts +17 -0
- package/dist/dashboard-rpc/stream-forward.d.ts.map +1 -0
- package/dist/dashboard-rpc/stream-forward.js +38 -0
- package/dist/dashboard-rpc/stream-forward.js.map +1 -0
- package/dist/dashboard-rpc/subagents.d.ts +12 -0
- package/dist/dashboard-rpc/subagents.d.ts.map +1 -0
- package/dist/dashboard-rpc/subagents.js +13 -0
- package/dist/dashboard-rpc/subagents.js.map +1 -0
- package/dist/dashboard-rpc/test-context.d.ts +23 -0
- package/dist/dashboard-rpc/test-context.d.ts.map +1 -0
- package/dist/dashboard-rpc/test-context.js +42 -0
- package/dist/dashboard-rpc/test-context.js.map +1 -0
- package/dist/dashboard-rpc/widgets.d.ts +33 -0
- package/dist/dashboard-rpc/widgets.d.ts.map +1 -0
- package/dist/dashboard-rpc/widgets.js +54 -0
- package/dist/dashboard-rpc/widgets.js.map +1 -0
- package/dist/data-branch.d.ts +120 -0
- package/dist/data-branch.d.ts.map +1 -0
- package/dist/data-branch.js +319 -0
- package/dist/data-branch.js.map +1 -0
- package/dist/discord/bot.d.ts +61 -0
- package/dist/discord/bot.d.ts.map +1 -0
- package/dist/discord/bot.js +94 -0
- package/dist/discord/bot.js.map +1 -0
- package/dist/discord/gateway.d.ts +137 -0
- package/dist/discord/gateway.d.ts.map +1 -0
- package/dist/discord/gateway.js +315 -0
- package/dist/discord/gateway.js.map +1 -0
- package/dist/discord/live-run.d.ts +31 -0
- package/dist/discord/live-run.d.ts.map +1 -0
- package/dist/discord/live-run.js +57 -0
- package/dist/discord/live-run.js.map +1 -0
- package/dist/discord/reply-mirror.d.ts +83 -0
- package/dist/discord/reply-mirror.d.ts.map +1 -0
- package/dist/discord/reply-mirror.js +84 -0
- package/dist/discord/reply-mirror.js.map +1 -0
- package/dist/discord/rest.d.ts +20 -0
- package/dist/discord/rest.d.ts.map +1 -0
- package/dist/discord/rest.js +41 -0
- package/dist/discord/rest.js.map +1 -0
- package/dist/discord/routing.d.ts +81 -0
- package/dist/discord/routing.d.ts.map +1 -0
- package/dist/discord/routing.js +91 -0
- package/dist/discord/routing.js.map +1 -0
- package/dist/discord-credentials-store.d.ts +14 -0
- package/dist/discord-credentials-store.d.ts.map +1 -0
- package/dist/discord-credentials-store.js +53 -0
- package/dist/discord-credentials-store.js.map +1 -0
- package/dist/discord-credentials.d.ts +80 -0
- package/dist/discord-credentials.d.ts.map +1 -0
- package/dist/discord-credentials.js +55 -0
- package/dist/discord-credentials.js.map +1 -0
- package/dist/driver/actions-zip.d.ts +2 -0
- package/dist/driver/actions-zip.d.ts.map +1 -0
- package/dist/driver/actions-zip.js +70 -0
- package/dist/driver/actions-zip.js.map +1 -0
- package/dist/driver/actions.d.ts +130 -0
- package/dist/driver/actions.d.ts.map +1 -0
- package/dist/driver/actions.js +261 -0
- package/dist/driver/actions.js.map +1 -0
- package/dist/driver/agent-cli.d.ts +57 -0
- package/dist/driver/agent-cli.d.ts.map +1 -0
- package/dist/driver/agent-cli.js +134 -0
- package/dist/driver/agent-cli.js.map +1 -0
- package/dist/driver/child-registry.d.ts +25 -0
- package/dist/driver/child-registry.d.ts.map +1 -0
- package/dist/driver/child-registry.js +53 -0
- package/dist/driver/child-registry.js.map +1 -0
- package/dist/driver/claude-code-quota.d.ts +40 -0
- package/dist/driver/claude-code-quota.d.ts.map +1 -0
- package/dist/driver/claude-code-quota.js +144 -0
- package/dist/driver/claude-code-quota.js.map +1 -0
- package/dist/driver/claude-code.d.ts +104 -0
- package/dist/driver/claude-code.d.ts.map +1 -0
- package/dist/driver/claude-code.js +314 -0
- package/dist/driver/claude-code.js.map +1 -0
- package/dist/driver/cli-session.d.ts +57 -0
- package/dist/driver/cli-session.d.ts.map +1 -0
- package/dist/driver/cli-session.js +134 -0
- package/dist/driver/cli-session.js.map +1 -0
- package/dist/driver/cloud.d.ts +109 -0
- package/dist/driver/cloud.d.ts.map +1 -0
- package/dist/driver/cloud.js +232 -0
- package/dist/driver/cloud.js.map +1 -0
- package/dist/driver/codex.d.ts +99 -0
- package/dist/driver/codex.d.ts.map +1 -0
- package/dist/driver/codex.js +190 -0
- package/dist/driver/codex.js.map +1 -0
- package/dist/driver/fake.d.ts +54 -0
- package/dist/driver/fake.d.ts.map +1 -0
- package/dist/driver/fake.js +73 -0
- package/dist/driver/fake.js.map +1 -0
- package/dist/driver/index.d.ts +10 -0
- package/dist/driver/index.d.ts.map +1 -0
- package/dist/driver/index.js +14 -0
- package/dist/driver/index.js.map +1 -0
- package/dist/driver/session-support.d.ts +14 -0
- package/dist/driver/session-support.d.ts.map +1 -0
- package/dist/driver/session-support.js +37 -0
- package/dist/driver/session-support.js.map +1 -0
- package/dist/driver/types.d.ts +310 -0
- package/dist/driver/types.d.ts.map +1 -0
- package/dist/driver/types.js +5 -0
- package/dist/driver/types.js.map +1 -0
- package/dist/driver-cli.d.ts +61 -0
- package/dist/driver-cli.d.ts.map +1 -0
- package/dist/driver-cli.js +66 -0
- package/dist/driver-cli.js.map +1 -0
- package/dist/driver-names.d.ts +22 -0
- package/dist/driver-names.d.ts.map +1 -0
- package/dist/driver-names.js +29 -0
- package/dist/driver-names.js.map +1 -0
- package/dist/error-message.d.ts +8 -0
- package/dist/error-message.d.ts.map +1 -0
- package/dist/error-message.js +10 -0
- package/dist/error-message.js.map +1 -0
- package/dist/event-stream.d.ts +33 -0
- package/dist/event-stream.d.ts.map +1 -0
- package/dist/event-stream.js +104 -0
- package/dist/event-stream.js.map +1 -0
- package/dist/events.d.ts +236 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +5 -0
- package/dist/events.js.map +1 -0
- package/dist/fake-script.d.ts +15 -0
- package/dist/fake-script.d.ts.map +1 -0
- package/dist/fake-script.js +58 -0
- package/dist/fake-script.js.map +1 -0
- package/dist/format-bytes.d.ts +3 -0
- package/dist/format-bytes.d.ts.map +1 -0
- package/dist/format-bytes.js +18 -0
- package/dist/format-bytes.js.map +1 -0
- package/dist/framework-dir.d.ts +11 -0
- package/dist/framework-dir.d.ts.map +1 -0
- package/dist/framework-dir.js +11 -0
- package/dist/framework-dir.js.map +1 -0
- package/dist/framework-gitignore.d.ts +12 -0
- package/dist/framework-gitignore.d.ts.map +1 -0
- package/dist/framework-gitignore.js +19 -0
- package/dist/framework-gitignore.js.map +1 -0
- package/dist/gate-keepalive.d.ts +47 -0
- package/dist/gate-keepalive.d.ts.map +1 -0
- package/dist/gate-keepalive.js +62 -0
- package/dist/gate-keepalive.js.map +1 -0
- package/dist/git-exclude.d.ts +11 -0
- package/dist/git-exclude.d.ts.map +1 -0
- package/dist/git-exclude.js +23 -0
- package/dist/git-exclude.js.map +1 -0
- package/dist/handoff-level.d.ts +56 -0
- package/dist/handoff-level.d.ts.map +1 -0
- package/dist/handoff-level.js +62 -0
- package/dist/handoff-level.js.map +1 -0
- package/dist/has-remote.d.ts +8 -0
- package/dist/has-remote.d.ts.map +1 -0
- package/dist/has-remote.js +10 -0
- package/dist/has-remote.js.map +1 -0
- package/dist/host-exec.d.ts +21 -0
- package/dist/host-exec.d.ts.map +1 -0
- package/dist/host-exec.js +30 -0
- package/dist/host-exec.js.map +1 -0
- package/dist/index.d.ts +41 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/install.d.ts +29 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +40 -0
- package/dist/install.js.map +1 -0
- package/dist/jsonl-tail.d.ts +59 -0
- package/dist/jsonl-tail.d.ts.map +1 -0
- package/dist/jsonl-tail.js +152 -0
- package/dist/jsonl-tail.js.map +1 -0
- package/dist/layout.d.ts +41 -0
- package/dist/layout.d.ts.map +1 -0
- package/dist/layout.js +69 -0
- package/dist/layout.js.map +1 -0
- package/dist/logs.d.ts +73 -0
- package/dist/logs.d.ts.map +1 -0
- package/dist/logs.js +218 -0
- package/dist/logs.js.map +1 -0
- package/dist/loopback-host.d.ts +20 -0
- package/dist/loopback-host.d.ts.map +1 -0
- package/dist/loopback-host.js +31 -0
- package/dist/loopback-host.js.map +1 -0
- package/dist/maintenance.d.ts +90 -0
- package/dist/maintenance.d.ts.map +1 -0
- package/dist/maintenance.js +141 -0
- package/dist/maintenance.js.map +1 -0
- package/dist/merged-worktrees.d.ts +74 -0
- package/dist/merged-worktrees.d.ts.map +1 -0
- package/dist/merged-worktrees.js +84 -0
- package/dist/merged-worktrees.js.map +1 -0
- package/dist/module-server.d.ts +56 -0
- package/dist/module-types/dashboard/components/DiffStat.d.ts +6 -0
- package/dist/module-types/dashboard/components/DriverModelMenu.d.ts +23 -0
- package/dist/module-types/dashboard/components/LinkActions.d.ts +26 -0
- package/dist/module-types/dashboard/components/Markdown.d.ts +4 -0
- package/dist/module-types/dashboard/components/SettingsRows.d.ts +37 -0
- package/dist/module-types/dashboard/components/StartAgentButton.d.ts +39 -0
- package/dist/module-types/dashboard/components/ui/badge.d.ts +2 -0
- package/dist/module-types/dashboard/components/ui/button.d.ts +10 -0
- package/dist/module-types/dashboard/components/ui/card.d.ts +5 -0
- package/dist/module-types/dashboard/components/ui/checkbox.d.ts +7 -0
- package/dist/module-types/dashboard/components/ui/dropdown-menu.d.ts +16 -0
- package/dist/module-types/dashboard/components/ui/input.d.ts +2 -0
- package/dist/module-types/dashboard/components/ui/option-label.d.ts +4 -0
- package/dist/module-types/dashboard/components/ui/popover.d.ts +8 -0
- package/dist/module-types/dashboard/components/ui/scroll-area.d.ts +10 -0
- package/dist/module-types/dashboard/components/ui/separator.d.ts +3 -0
- package/dist/module-types/dashboard/components/ui/skeleton.d.ts +2 -0
- package/dist/module-types/dashboard/components/ui/slider.d.ts +9 -0
- package/dist/module-types/dashboard/components/ui/tooltip.d.ts +11 -0
- package/dist/module-types/dashboard/lib/agent-settings.d.ts +2 -0
- package/dist/module-types/dashboard/lib/draft-handoff.d.ts +15 -0
- package/dist/module-types/dashboard/lib/format-date.d.ts +51 -0
- package/dist/module-types/dashboard/lib/host-services.d.ts +12 -0
- package/dist/module-types/dashboard/lib/models.d.ts +24 -0
- package/dist/module-types/dashboard/lib/route.d.ts +37 -0
- package/dist/module-types/dashboard/lib/rpc.d.ts +31 -0
- package/dist/module-types/dashboard/lib/use-action.d.ts +25 -0
- package/dist/module-types/dashboard/lib/use-async.d.ts +45 -0
- package/dist/module-types/dashboard/lib/use-modules.d.ts +78 -0
- package/dist/module-types/dashboard/lib/utils.d.ts +3 -0
- package/dist/module-types/dashboard/module/index.d.ts +335 -0
- package/dist/module-types/dashboard/rpc/models.d.ts +2 -0
- package/dist/module-types/dashboard/rpc/modules.d.ts +5 -0
- package/dist/module-types/src/agent-id.d.ts +12 -0
- package/dist/module-types/src/agent-locks.d.ts +2 -0
- package/dist/module-types/src/agent-view.d.ts +38 -0
- package/dist/module-types/src/bridge-browser.d.ts +216 -0
- package/dist/module-types/src/browser-stream.d.ts +19 -0
- package/dist/module-types/src/browser.d.ts +15 -0
- package/dist/module-types/src/built-in.d.ts +28 -0
- package/dist/module-types/src/client.d.ts +15 -0
- package/dist/module-types/src/cloud-run-state.d.ts +26 -0
- package/dist/module-types/src/dashboard/activity.d.ts +40 -0
- package/dist/module-types/src/dashboard/agent-handoff.d.ts +243 -0
- package/dist/module-types/src/dashboard/agent-tree.d.ts +105 -0
- package/dist/module-types/src/dashboard/bridge-endpoints.d.ts +157 -0
- package/dist/module-types/src/dashboard/bridge-question.d.ts +32 -0
- package/dist/module-types/src/dashboard/bridge-store.d.ts +178 -0
- package/dist/module-types/src/dashboard/cache.d.ts +46 -0
- package/dist/module-types/src/dashboard/content-type.d.ts +2 -0
- package/dist/module-types/src/dashboard/dashboard.d.ts +37 -0
- package/dist/module-types/src/dashboard/docs.d.ts +38 -0
- package/dist/module-types/src/dashboard/file-diff.d.ts +66 -0
- package/dist/module-types/src/dashboard/file-read.d.ts +41 -0
- package/dist/module-types/src/dashboard/file-status.d.ts +20 -0
- package/dist/module-types/src/dashboard/git-status.d.ts +43 -0
- package/dist/module-types/src/dashboard/http.d.ts +28 -0
- package/dist/module-types/src/dashboard/interventions.d.ts +66 -0
- package/dist/module-types/src/dashboard/keyed-watcher.d.ts +28 -0
- package/dist/module-types/src/dashboard/keys.d.ts +30 -0
- package/dist/module-types/src/dashboard/models.d.ts +24 -0
- package/dist/module-types/src/dashboard/module-host.d.ts +43 -0
- package/dist/module-types/src/dashboard/module-serve.d.ts +14 -0
- package/dist/module-types/src/dashboard/open-in-app.d.ts +42 -0
- package/dist/module-types/src/dashboard/open-questions.d.ts +44 -0
- package/dist/module-types/src/dashboard/overview.d.ts +77 -0
- package/dist/module-types/src/dashboard/projects.d.ts +99 -0
- package/dist/module-types/src/dashboard/pull-requests.d.ts +126 -0
- package/dist/module-types/src/dashboard/queue.d.ts +16 -0
- package/dist/module-types/src/dashboard/quota.d.ts +52 -0
- package/dist/module-types/src/dashboard/remote-run.d.ts +94 -0
- package/dist/module-types/src/dashboard/rpc-serve.d.ts +102 -0
- package/dist/module-types/src/dashboard/run-inbox.d.ts +30 -0
- package/dist/module-types/src/dashboard/scheduler-state.d.ts +72 -0
- package/dist/module-types/src/dashboard/subagent-settings.d.ts +25 -0
- package/dist/module-types/src/dashboard/types.d.ts +108 -0
- package/dist/module-types/src/dashboard-rpc/context.d.ts +53 -0
- package/dist/module-types/src/dashboard-rpc/control.d.ts +123 -0
- package/dist/module-types/src/dashboard-rpc/devices.d.ts +8 -0
- package/dist/module-types/src/dashboard-rpc/events-tail.d.ts +67 -0
- package/dist/module-types/src/dashboard-rpc/events.d.ts +38 -0
- package/dist/module-types/src/dashboard-rpc/index.d.ts +28 -0
- package/dist/module-types/src/dashboard-rpc/models.d.ts +3 -0
- package/dist/module-types/src/dashboard-rpc/modules.d.ts +42 -0
- package/dist/module-types/src/dashboard-rpc/preferences.d.ts +40 -0
- package/dist/module-types/src/dashboard-rpc/projects.d.ts +58 -0
- package/dist/module-types/src/dashboard-rpc/quota.d.ts +3 -0
- package/dist/module-types/src/dashboard-rpc/reads.d.ts +184 -0
- package/dist/module-types/src/dashboard-rpc/relay-agent.d.ts +8 -0
- package/dist/module-types/src/dashboard-rpc/stream-forward.d.ts +16 -0
- package/dist/module-types/src/dashboard-rpc/subagents.d.ts +11 -0
- package/dist/module-types/src/driver-names.d.ts +21 -0
- package/dist/module-types/src/error-message.d.ts +7 -0
- package/dist/module-types/src/event-stream.d.ts +32 -0
- package/dist/module-types/src/events.d.ts +235 -0
- package/dist/module-types/src/format-bytes.d.ts +2 -0
- package/dist/module-types/src/framework-dir.d.ts +10 -0
- package/dist/module-types/src/framework-gitignore.d.ts +11 -0
- package/dist/module-types/src/has-remote.d.ts +7 -0
- package/dist/module-types/src/index.d.ts +40 -0
- package/dist/module-types/src/jsonl-tail.d.ts +58 -0
- package/dist/module-types/src/loopback-host.d.ts +19 -0
- package/dist/module-types/src/node-fs.d.ts +32 -0
- package/dist/module-types/src/open-choices.d.ts +14 -0
- package/dist/module-types/src/pick-directory.d.ts +29 -0
- package/dist/module-types/src/preference-defaults.d.ts +42 -0
- package/dist/module-types/src/project-commands.d.ts +23 -0
- package/dist/module-types/src/project-errors.d.ts +55 -0
- package/dist/module-types/src/project-hooks.d.ts +129 -0
- package/dist/module-types/src/project-modules.d.ts +49 -0
- package/dist/module-types/src/project-presets.d.ts +29 -0
- package/dist/module-types/src/project.d.ts +28 -0
- package/dist/module-types/src/publish-levels.d.ts +32 -0
- package/dist/module-types/src/quota-boundary.d.ts +64 -0
- package/dist/module-types/src/quota-poller.d.ts +82 -0
- package/dist/module-types/src/registry.d.ts +220 -0
- package/dist/module-types/src/store/agent-checkout.d.ts +53 -0
- package/dist/module-types/src/store/agent-store.d.ts +266 -0
- package/dist/module-types/src/store/branches.d.ts +163 -0
- package/dist/module-types/src/store/git-host.d.ts +113 -0
- package/dist/module-types/src/store/index.d.ts +9 -0
- package/dist/module-types/src/store/provided.d.ts +16 -0
- package/dist/module-types/src/store/queue.d.ts +45 -0
- package/dist/module-types/src/store/repository.d.ts +32 -0
- package/dist/module-types/src/store/run-record.d.ts +21 -0
- package/dist/module-types/src/store/runs.d.ts +107 -0
- package/dist/module-types/src/store/tickets.d.ts +72 -0
- package/dist/module-types/src/subagent-settings.d.ts +26 -0
- package/dist/module-types/src/terminal.d.ts +3 -0
- package/dist/module-types/src/worktrees.d.ts +89 -0
- package/dist/module.css +50 -0
- package/dist/node-fs.d.ts +33 -0
- package/dist/node-fs.d.ts.map +1 -0
- package/dist/node-fs.js +57 -0
- package/dist/node-fs.js.map +1 -0
- package/dist/on-before-mergeable-prompt.d.ts +32 -0
- package/dist/on-before-mergeable-prompt.d.ts.map +1 -0
- package/dist/on-before-mergeable-prompt.js +26 -0
- package/dist/on-before-mergeable-prompt.js.map +1 -0
- package/dist/open-choices.d.ts +15 -0
- package/dist/open-choices.d.ts.map +1 -0
- package/dist/open-choices.js +31 -0
- package/dist/open-choices.js.map +1 -0
- package/dist/pick-directory.d.ts +30 -0
- package/dist/pick-directory.d.ts.map +1 -0
- package/dist/pick-directory.js +102 -0
- package/dist/pick-directory.js.map +1 -0
- package/dist/planned-quick-wins.d.ts +102 -0
- package/dist/planned-quick-wins.d.ts.map +1 -0
- package/dist/planned-quick-wins.js +171 -0
- package/dist/planned-quick-wins.js.map +1 -0
- package/dist/preference-defaults.d.ts +43 -0
- package/dist/preference-defaults.d.ts.map +1 -0
- package/dist/preference-defaults.js +34 -0
- package/dist/preference-defaults.js.map +1 -0
- package/dist/preflight.d.ts +77 -0
- package/dist/preflight.d.ts.map +1 -0
- package/dist/preflight.js +91 -0
- package/dist/preflight.js.map +1 -0
- package/dist/preset-catalog.d.ts +98 -0
- package/dist/preset-catalog.d.ts.map +1 -0
- package/dist/preset-catalog.js +129 -0
- package/dist/preset-catalog.js.map +1 -0
- package/dist/preset-prompt.d.ts +81 -0
- package/dist/preset-prompt.d.ts.map +1 -0
- package/dist/preset-prompt.js +51 -0
- package/dist/preset-prompt.js.map +1 -0
- package/dist/preset-registry.d.ts +32 -0
- package/dist/preset-registry.d.ts.map +1 -0
- package/dist/preset-registry.js +35 -0
- package/dist/preset-registry.js.map +1 -0
- package/dist/presets.d.ts +20 -0
- package/dist/presets.d.ts.map +1 -0
- package/dist/presets.js +33 -0
- package/dist/presets.js.map +1 -0
- package/dist/preview-runtime.d.ts +33 -0
- package/dist/preview-runtime.d.ts.map +1 -0
- package/dist/preview-runtime.js +96 -0
- package/dist/preview-runtime.js.map +1 -0
- package/dist/preview.d.ts +78 -0
- package/dist/preview.d.ts.map +1 -0
- package/dist/preview.js +301 -0
- package/dist/preview.js.map +1 -0
- package/dist/project-commands.d.ts +24 -0
- package/dist/project-commands.d.ts.map +1 -0
- package/dist/project-commands.js +57 -0
- package/dist/project-commands.js.map +1 -0
- package/dist/project-errors.d.ts +56 -0
- package/dist/project-errors.d.ts.map +1 -0
- package/dist/project-errors.js +49 -0
- package/dist/project-errors.js.map +1 -0
- package/dist/project-hooks.d.ts +130 -0
- package/dist/project-hooks.d.ts.map +1 -0
- package/dist/project-hooks.js +232 -0
- package/dist/project-hooks.js.map +1 -0
- package/dist/project-modules.d.ts +50 -0
- package/dist/project-modules.d.ts.map +1 -0
- package/dist/project-modules.js +110 -0
- package/dist/project-modules.js.map +1 -0
- package/dist/project-pass.d.ts +32 -0
- package/dist/project-pass.d.ts.map +1 -0
- package/dist/project-pass.js +45 -0
- package/dist/project-pass.js.map +1 -0
- package/dist/project-presets.d.ts +30 -0
- package/dist/project-presets.d.ts.map +1 -0
- package/dist/project-presets.js +74 -0
- package/dist/project-presets.js.map +1 -0
- package/dist/project-widgets.d.ts +46 -0
- package/dist/project-widgets.d.ts.map +1 -0
- package/dist/project-widgets.js +93 -0
- package/dist/project-widgets.js.map +1 -0
- package/dist/project.d.ts +29 -0
- package/dist/project.d.ts.map +1 -0
- package/dist/project.js +41 -0
- package/dist/project.js.map +1 -0
- package/dist/prompt-run.d.ts +104 -0
- package/dist/prompt-run.d.ts.map +1 -0
- package/dist/prompt-run.js +112 -0
- package/dist/prompt-run.js.map +1 -0
- package/dist/prompt-template.d.ts +16 -0
- package/dist/prompt-template.d.ts.map +1 -0
- package/dist/prompt-template.js +56 -0
- package/dist/prompt-template.js.map +1 -0
- package/dist/prompts.generated.d.ts +53 -0
- package/dist/prompts.generated.d.ts.map +1 -0
- package/dist/prompts.generated.js +55 -0
- package/dist/prompts.generated.js.map +1 -0
- package/dist/publish-levels.d.ts +33 -0
- package/dist/publish-levels.d.ts.map +1 -0
- package/dist/publish-levels.js +51 -0
- package/dist/publish-levels.js.map +1 -0
- package/dist/queue-promote.d.ts +70 -0
- package/dist/queue-promote.d.ts.map +1 -0
- package/dist/queue-promote.js +118 -0
- package/dist/queue-promote.js.map +1 -0
- package/dist/quota-boundary.d.ts +65 -0
- package/dist/quota-boundary.d.ts.map +1 -0
- package/dist/quota-boundary.js +135 -0
- package/dist/quota-boundary.js.map +1 -0
- package/dist/quota-poller.d.ts +83 -0
- package/dist/quota-poller.d.ts.map +1 -0
- package/dist/quota-poller.js +118 -0
- package/dist/quota-poller.js.map +1 -0
- package/dist/registry.d.ts +221 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +348 -0
- package/dist/registry.js.map +1 -0
- package/dist/relay.d.ts +84 -0
- package/dist/relay.d.ts.map +1 -0
- package/dist/relay.js +199 -0
- package/dist/relay.js.map +1 -0
- package/dist/repos-directory.d.ts +19 -0
- package/dist/repos-directory.d.ts.map +1 -0
- package/dist/repos-directory.js +23 -0
- package/dist/repos-directory.js.map +1 -0
- package/dist/request-path.d.ts +10 -0
- package/dist/request-path.d.ts.map +1 -0
- package/dist/request-path.js +16 -0
- package/dist/request-path.js.map +1 -0
- package/dist/retired-project-settings.d.ts +43 -0
- package/dist/retired-project-settings.d.ts.map +1 -0
- package/dist/retired-project-settings.js +125 -0
- package/dist/retired-project-settings.js.map +1 -0
- package/dist/routine-locks.d.ts +53 -0
- package/dist/routine-locks.d.ts.map +1 -0
- package/dist/routine-locks.js +125 -0
- package/dist/routine-locks.js.map +1 -0
- package/dist/run-driver.d.ts +26 -0
- package/dist/run-driver.d.ts.map +1 -0
- package/dist/run-driver.js +17 -0
- package/dist/run-driver.js.map +1 -0
- package/dist/run-locks.d.ts +3 -0
- package/dist/run-locks.d.ts.map +1 -0
- package/dist/run-locks.js +39 -0
- package/dist/run-locks.js.map +1 -0
- package/dist/run-messages.d.ts +64 -0
- package/dist/run-messages.d.ts.map +1 -0
- package/dist/run-messages.js +76 -0
- package/dist/run-messages.js.map +1 -0
- package/dist/run-options.d.ts +53 -0
- package/dist/run-options.d.ts.map +1 -0
- package/dist/run-options.js +110 -0
- package/dist/run-options.js.map +1 -0
- package/dist/run-telemetry.d.ts +115 -0
- package/dist/run-telemetry.d.ts.map +1 -0
- package/dist/run-telemetry.js +137 -0
- package/dist/run-telemetry.js.map +1 -0
- package/dist/run-view.d.ts +109 -0
- package/dist/run-view.d.ts.map +1 -0
- package/dist/run-view.js +118 -0
- package/dist/run-view.js.map +1 -0
- package/dist/run.d.ts +261 -0
- package/dist/run.d.ts.map +1 -0
- package/dist/run.js +420 -0
- package/dist/run.js.map +1 -0
- package/dist/runtime-keys.d.ts +17 -0
- package/dist/runtime-keys.d.ts.map +1 -0
- package/dist/runtime-keys.js +17 -0
- package/dist/runtime-keys.js.map +1 -0
- package/dist/sandbox.d.ts +27 -0
- package/dist/sandbox.d.ts.map +1 -0
- package/dist/sandbox.js +63 -0
- package/dist/sandbox.js.map +1 -0
- package/dist/session-link.d.ts +19 -0
- package/dist/session-link.d.ts.map +1 -0
- package/dist/session-link.js +26 -0
- package/dist/session-link.js.map +1 -0
- package/dist/sessions.d.ts +77 -0
- package/dist/sessions.d.ts.map +1 -0
- package/dist/sessions.js +146 -0
- package/dist/sessions.js.map +1 -0
- package/dist/spike-locks.d.ts +75 -0
- package/dist/spike-locks.d.ts.map +1 -0
- package/dist/spike-locks.js +208 -0
- package/dist/spike-locks.js.map +1 -0
- package/dist/stale-branch.d.ts +21 -0
- package/dist/stale-branch.d.ts.map +1 -0
- package/dist/stale-branch.js +32 -0
- package/dist/stale-branch.js.map +1 -0
- package/dist/steps.d.ts +9 -0
- package/dist/steps.d.ts.map +1 -0
- package/dist/steps.js +13 -0
- package/dist/steps.js.map +1 -0
- package/dist/store/agent-checkout.d.ts +54 -0
- package/dist/store/agent-checkout.d.ts.map +1 -0
- package/dist/store/agent-checkout.js +61 -0
- package/dist/store/agent-checkout.js.map +1 -0
- package/dist/store/agent-store.d.ts +267 -0
- package/dist/store/agent-store.d.ts.map +1 -0
- package/dist/store/agent-store.js +190 -0
- package/dist/store/agent-store.js.map +1 -0
- package/dist/store/branches.d.ts +164 -0
- package/dist/store/branches.d.ts.map +1 -0
- package/dist/store/branches.js +187 -0
- package/dist/store/branches.js.map +1 -0
- package/dist/store/forge.d.ts +110 -0
- package/dist/store/forge.d.ts.map +1 -0
- package/dist/store/forge.js +97 -0
- package/dist/store/forge.js.map +1 -0
- package/dist/store/git-host.d.ts +114 -0
- package/dist/store/git-host.d.ts.map +1 -0
- package/dist/store/git-host.js +103 -0
- package/dist/store/git-host.js.map +1 -0
- package/dist/store/index.d.ts +10 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +10 -0
- package/dist/store/index.js.map +1 -0
- package/dist/store/provided.d.ts +17 -0
- package/dist/store/provided.d.ts.map +1 -0
- package/dist/store/provided.js +37 -0
- package/dist/store/provided.js.map +1 -0
- package/dist/store/queue.d.ts +46 -0
- package/dist/store/queue.d.ts.map +1 -0
- package/dist/store/queue.js +61 -0
- package/dist/store/queue.js.map +1 -0
- package/dist/store/repository.d.ts +33 -0
- package/dist/store/repository.d.ts.map +1 -0
- package/dist/store/repository.js +25 -0
- package/dist/store/repository.js.map +1 -0
- package/dist/store/run-checkout.d.ts +33 -0
- package/dist/store/run-checkout.d.ts.map +1 -0
- package/dist/store/run-checkout.js +59 -0
- package/dist/store/run-checkout.js.map +1 -0
- package/dist/store/run-record.d.ts +22 -0
- package/dist/store/run-record.d.ts.map +1 -0
- package/dist/store/run-record.js +108 -0
- package/dist/store/run-record.js.map +1 -0
- package/dist/store/run-store.d.ts +501 -0
- package/dist/store/run-store.d.ts.map +1 -0
- package/dist/store/run-store.js +806 -0
- package/dist/store/run-store.js.map +1 -0
- package/dist/store/runs.d.ts +108 -0
- package/dist/store/runs.d.ts.map +1 -0
- package/dist/store/runs.js +146 -0
- package/dist/store/runs.js.map +1 -0
- package/dist/store/suspend.d.ts +38 -0
- package/dist/store/suspend.d.ts.map +1 -0
- package/dist/store/suspend.js +45 -0
- package/dist/store/suspend.js.map +1 -0
- package/dist/store/test-branches.d.ts +18 -0
- package/dist/store/test-branches.d.ts.map +1 -0
- package/dist/store/test-branches.js +59 -0
- package/dist/store/test-branches.js.map +1 -0
- package/dist/store/test-runs.d.ts +15 -0
- package/dist/store/test-runs.d.ts.map +1 -0
- package/dist/store/test-runs.js +37 -0
- package/dist/store/test-runs.js.map +1 -0
- package/dist/store/tickets.d.ts +73 -0
- package/dist/store/tickets.d.ts.map +1 -0
- package/dist/store/tickets.js +67 -0
- package/dist/store/tickets.js.map +1 -0
- package/dist/store/worktree-deps.d.ts +30 -0
- package/dist/store/worktree-deps.d.ts.map +1 -0
- package/dist/store/worktree-deps.js +115 -0
- package/dist/store/worktree-deps.js.map +1 -0
- package/dist/store/worktree.d.ts +194 -0
- package/dist/store/worktree.d.ts.map +1 -0
- package/dist/store/worktree.js +331 -0
- package/dist/store/worktree.js.map +1 -0
- package/dist/subagent-settings.d.ts +27 -0
- package/dist/subagent-settings.d.ts.map +1 -0
- package/dist/subagent-settings.js +35 -0
- package/dist/subagent-settings.js.map +1 -0
- package/dist/system-prompt-file.d.ts +18 -0
- package/dist/system-prompt-file.d.ts.map +1 -0
- package/dist/system-prompt-file.js +28 -0
- package/dist/system-prompt-file.js.map +1 -0
- package/dist/system-prompt.d.ts +148 -0
- package/dist/system-prompt.d.ts.map +1 -0
- package/dist/system-prompt.js +170 -0
- package/dist/system-prompt.js.map +1 -0
- package/dist/target-driver.d.ts +28 -0
- package/dist/target-driver.d.ts.map +1 -0
- package/dist/target-driver.js +18 -0
- package/dist/target-driver.js.map +1 -0
- package/dist/terminal.d.ts +4 -0
- package/dist/terminal.d.ts.map +1 -0
- package/dist/terminal.js +97 -0
- package/dist/terminal.js.map +1 -0
- package/dist/ticket-locks.d.ts +61 -0
- package/dist/ticket-locks.d.ts.map +1 -0
- package/dist/ticket-locks.js +137 -0
- package/dist/ticket-locks.js.map +1 -0
- package/dist/tickets-file.d.ts +7 -0
- package/dist/tickets-file.d.ts.map +1 -0
- package/dist/tickets-file.js +21 -0
- package/dist/tickets-file.js.map +1 -0
- package/dist/tickets.d.ts +18 -0
- package/dist/tickets.d.ts.map +1 -0
- package/dist/tickets.js +23 -0
- package/dist/tickets.js.map +1 -0
- package/dist/todo-loop.d.ts +110 -0
- package/dist/todo-loop.d.ts.map +1 -0
- package/dist/todo-loop.js +175 -0
- package/dist/todo-loop.js.map +1 -0
- package/dist/turn-gate.d.ts +144 -0
- package/dist/turn-gate.d.ts.map +1 -0
- package/dist/turn-gate.js +217 -0
- package/dist/turn-gate.js.map +1 -0
- package/dist/update-check.d.ts +44 -0
- package/dist/update-check.d.ts.map +1 -0
- package/dist/update-check.js +71 -0
- package/dist/update-check.js.map +1 -0
- package/dist/usage.d.ts +32 -0
- package/dist/usage.d.ts.map +1 -0
- package/dist/usage.js +46 -0
- package/dist/usage.js.map +1 -0
- package/dist/widget-types/dashboard/components/LinkActions.d.ts +26 -0
- package/dist/widget-types/dashboard/components/Markdown.d.ts +4 -0
- package/dist/widget-types/dashboard/components/StartAgentButton.d.ts +39 -0
- package/dist/widget-types/dashboard/components/ui/badge.d.ts +2 -0
- package/dist/widget-types/dashboard/components/ui/button.d.ts +10 -0
- package/dist/widget-types/dashboard/components/ui/card.d.ts +5 -0
- package/dist/widget-types/dashboard/components/ui/checkbox.d.ts +7 -0
- package/dist/widget-types/dashboard/components/ui/dropdown-menu.d.ts +16 -0
- package/dist/widget-types/dashboard/components/ui/input.d.ts +2 -0
- package/dist/widget-types/dashboard/components/ui/option-label.d.ts +4 -0
- package/dist/widget-types/dashboard/components/ui/popover.d.ts +8 -0
- package/dist/widget-types/dashboard/components/ui/scroll-area.d.ts +10 -0
- package/dist/widget-types/dashboard/components/ui/separator.d.ts +3 -0
- package/dist/widget-types/dashboard/components/ui/skeleton.d.ts +2 -0
- package/dist/widget-types/dashboard/components/ui/slider.d.ts +9 -0
- package/dist/widget-types/dashboard/components/ui/tooltip.d.ts +11 -0
- package/dist/widget-types/dashboard/lib/draft-handoff.d.ts +15 -0
- package/dist/widget-types/dashboard/lib/format-date.d.ts +51 -0
- package/dist/widget-types/dashboard/lib/host-services.d.ts +12 -0
- package/dist/widget-types/dashboard/lib/route.d.ts +24 -0
- package/dist/widget-types/dashboard/lib/rpc.d.ts +31 -0
- package/dist/widget-types/dashboard/lib/use-action.d.ts +25 -0
- package/dist/widget-types/dashboard/lib/use-async.d.ts +39 -0
- package/dist/widget-types/dashboard/lib/use-widgets.d.ts +42 -0
- package/dist/widget-types/dashboard/lib/utils.d.ts +3 -0
- package/dist/widget-types/dashboard/rpc/widgets.d.ts +4 -0
- package/dist/widget-types/dashboard/widget/index.d.ts +207 -0
- package/dist/widget-types/src/agent-id.d.ts +12 -0
- package/dist/widget-types/src/agent-locks.d.ts +2 -0
- package/dist/widget-types/src/agent-view.d.ts +38 -0
- package/dist/widget-types/src/bridge-browser.d.ts +216 -0
- package/dist/widget-types/src/browser-stream.d.ts +19 -0
- package/dist/widget-types/src/browser.d.ts +15 -0
- package/dist/widget-types/src/cli-exec.d.ts +35 -0
- package/dist/widget-types/src/cloud-run-state.d.ts +26 -0
- package/dist/widget-types/src/dashboard/activity.d.ts +40 -0
- package/dist/widget-types/src/dashboard/agent-handoff.d.ts +211 -0
- package/dist/widget-types/src/dashboard/agent-tree.d.ts +105 -0
- package/dist/widget-types/src/dashboard/bridge-endpoints.d.ts +157 -0
- package/dist/widget-types/src/dashboard/bridge-question.d.ts +32 -0
- package/dist/widget-types/src/dashboard/bridge-store.d.ts +178 -0
- package/dist/widget-types/src/dashboard/cache.d.ts +46 -0
- package/dist/widget-types/src/dashboard/content-type.d.ts +2 -0
- package/dist/widget-types/src/dashboard/dashboard.d.ts +37 -0
- package/dist/widget-types/src/dashboard/discord-webhook.d.ts +16 -0
- package/dist/widget-types/src/dashboard/docs.d.ts +38 -0
- package/dist/widget-types/src/dashboard/file-diff.d.ts +66 -0
- package/dist/widget-types/src/dashboard/file-read.d.ts +41 -0
- package/dist/widget-types/src/dashboard/file-status.d.ts +20 -0
- package/dist/widget-types/src/dashboard/gh.d.ts +130 -0
- package/dist/widget-types/src/dashboard/git-status.d.ts +32 -0
- package/dist/widget-types/src/dashboard/github.d.ts +10 -0
- package/dist/widget-types/src/dashboard/http.d.ts +28 -0
- package/dist/widget-types/src/dashboard/interventions.d.ts +66 -0
- package/dist/widget-types/src/dashboard/keys.d.ts +30 -0
- package/dist/widget-types/src/dashboard/models.d.ts +24 -0
- package/dist/widget-types/src/dashboard/open-in-app.d.ts +42 -0
- package/dist/widget-types/src/dashboard/open-questions.d.ts +52 -0
- package/dist/widget-types/src/dashboard/overview.d.ts +77 -0
- package/dist/widget-types/src/dashboard/projects.d.ts +89 -0
- package/dist/widget-types/src/dashboard/pull-requests.d.ts +126 -0
- package/dist/widget-types/src/dashboard/queue.d.ts +16 -0
- package/dist/widget-types/src/dashboard/quota.d.ts +59 -0
- package/dist/widget-types/src/dashboard/remote-run.d.ts +94 -0
- package/dist/widget-types/src/dashboard/rpc-serve.d.ts +102 -0
- package/dist/widget-types/src/dashboard/run-inbox.d.ts +30 -0
- package/dist/widget-types/src/dashboard/scheduler-state.d.ts +64 -0
- package/dist/widget-types/src/dashboard/tickets.d.ts +28 -0
- package/dist/widget-types/src/dashboard/types.d.ts +99 -0
- package/dist/widget-types/src/dashboard/widget-serve.d.ts +14 -0
- package/dist/widget-types/src/dashboard-rpc/context.d.ts +53 -0
- package/dist/widget-types/src/dashboard-rpc/control.d.ts +108 -0
- package/dist/widget-types/src/dashboard-rpc/devices.d.ts +8 -0
- package/dist/widget-types/src/dashboard-rpc/events-tail.d.ts +53 -0
- package/dist/widget-types/src/dashboard-rpc/events.d.ts +29 -0
- package/dist/widget-types/src/dashboard-rpc/index.d.ts +28 -0
- package/dist/widget-types/src/dashboard-rpc/models.d.ts +3 -0
- package/dist/widget-types/src/dashboard-rpc/preferences.d.ts +40 -0
- package/dist/widget-types/src/dashboard-rpc/projects.d.ts +54 -0
- package/dist/widget-types/src/dashboard-rpc/quota.d.ts +26 -0
- package/dist/widget-types/src/dashboard-rpc/reads.d.ts +227 -0
- package/dist/widget-types/src/dashboard-rpc/relay-agent.d.ts +8 -0
- package/dist/widget-types/src/dashboard-rpc/stream-forward.d.ts +16 -0
- package/dist/widget-types/src/dashboard-rpc/widgets.d.ts +32 -0
- package/dist/widget-types/src/discord-credentials.d.ts +79 -0
- package/dist/widget-types/src/driver-names.d.ts +21 -0
- package/dist/widget-types/src/error-message.d.ts +7 -0
- package/dist/widget-types/src/event-stream.d.ts +32 -0
- package/dist/widget-types/src/events.d.ts +235 -0
- package/dist/widget-types/src/framework-dir.d.ts +10 -0
- package/dist/widget-types/src/framework-gitignore.d.ts +11 -0
- package/dist/widget-types/src/index.d.ts +42 -0
- package/dist/widget-types/src/jsonl-tail.d.ts +54 -0
- package/dist/widget-types/src/loopback-host.d.ts +19 -0
- package/dist/widget-types/src/node-fs.d.ts +32 -0
- package/dist/widget-types/src/open-choices.d.ts +14 -0
- package/dist/widget-types/src/pick-directory.d.ts +29 -0
- package/dist/widget-types/src/preference-defaults.d.ts +53 -0
- package/dist/widget-types/src/project-commands.d.ts +23 -0
- package/dist/widget-types/src/project-errors.d.ts +43 -0
- package/dist/widget-types/src/project-hooks.d.ts +133 -0
- package/dist/widget-types/src/project-presets.d.ts +29 -0
- package/dist/widget-types/src/project-widgets.d.ts +45 -0
- package/dist/widget-types/src/project.d.ts +28 -0
- package/dist/widget-types/src/quota-boundary.d.ts +115 -0
- package/dist/widget-types/src/quota-poller.d.ts +82 -0
- package/dist/widget-types/src/registry.d.ts +210 -0
- package/dist/widget-types/src/store/agent-checkout.d.ts +46 -0
- package/dist/widget-types/src/store/agent-store.d.ts +237 -0
- package/dist/widget-types/src/store/branches.d.ts +133 -0
- package/dist/widget-types/src/store/forge.d.ts +109 -0
- package/dist/widget-types/src/store/git-host.d.ts +111 -0
- package/dist/widget-types/src/store/index.d.ts +9 -0
- package/dist/widget-types/src/store/provided.d.ts +16 -0
- package/dist/widget-types/src/store/queue.d.ts +45 -0
- package/dist/widget-types/src/store/run-record.d.ts +21 -0
- package/dist/widget-types/src/store/runs.d.ts +101 -0
- package/dist/widget-types/src/store/tickets.d.ts +72 -0
- package/dist/widget-types/src/tickets.d.ts +17 -0
- package/dist/widget-types/src/worktrees.d.ts +89 -0
- package/dist/widget.css +50 -0
- package/dist/worktrees.d.ts +90 -0
- package/dist/worktrees.d.ts.map +1 -0
- package/dist/worktrees.js +123 -0
- package/dist/worktrees.js.map +1 -0
- package/package.json +103 -3
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// Which watched sessions the Driver tab visits this cycle (#1332). Shared by the service worker,
|
|
2
|
+
// which decides, and the offline harness, which pins the rule; loaded as a plain script in both.
|
|
3
|
+
//
|
|
4
|
+
// The rule exists because claude.ai's list statuses are sticky: an in-app visit clears neither
|
|
5
|
+
// "Awaiting input" nor "Unread response" (measured 2026-08-25), so visiting every stopped session
|
|
6
|
+
// on every cycle would mean 50 visits every half minute for 50 agents. A session is visited when
|
|
7
|
+
// its status changed to awaiting, unread or idle since the last read; an awaiting one also when it
|
|
8
|
+
// has not been visited for a while — a question asked in prose carries no block, so the list's
|
|
9
|
+
// word is the only signal and a re-read is what catches it (#1707); and any session always when
|
|
10
|
+
// the dashboard queued an answer for it — that is the one thing the list cannot know.
|
|
11
|
+
|
|
12
|
+
/** How long a session the list keeps calling awaiting waits before being looked at again. */
|
|
13
|
+
const REVISIT_MS = 5 * 60_000
|
|
14
|
+
|
|
15
|
+
/** The list statuses that mean the session stopped: for its user, after a turn, or for good. */
|
|
16
|
+
const ON_CHANGE = new Set(['awaiting', 'unread', 'idle'])
|
|
17
|
+
|
|
18
|
+
/** The one status also revisited on age: the session may be asking without a block. */
|
|
19
|
+
const ON_AGE = new Set(['awaiting'])
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* `statuses`: what the list said, `[{sessionId, status}]`. `answers`: a map of session id to the
|
|
23
|
+
* queued answer. `seen`: a map of session id to `{status, visitedAt}` from earlier cycles. Returns
|
|
24
|
+
* the visits in list order, each `{id, status, answer?}`.
|
|
25
|
+
*/
|
|
26
|
+
function planVisits(statuses, answers, seen, now, revisitMs = REVISIT_MS) {
|
|
27
|
+
const visits = []
|
|
28
|
+
for (const { sessionId, status } of statuses) {
|
|
29
|
+
const answer = answers.get(sessionId)
|
|
30
|
+
const last = seen.get(sessionId)
|
|
31
|
+
const changed = !last || last.status !== status
|
|
32
|
+
const stale = !last || now - (last.visitedAt ?? 0) >= revisitMs
|
|
33
|
+
const due = (ON_CHANGE.has(status) && changed) || (ON_AGE.has(status) && stale)
|
|
34
|
+
if (answer || due) visits.push({ id: sessionId, status, ...(answer ? { answer } : {}) })
|
|
35
|
+
}
|
|
36
|
+
return visits
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// The worker loads this with importScripts, where a top-level function is already global; jsdom
|
|
40
|
+
// evaluates it the same way. Nothing else to export.
|
|
41
|
+
if (typeof globalThis !== 'undefined') globalThis.__tfPlanVisits = planVisits
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// Whether the extension's own files changed on disk (#1711). Shared by the service worker, which
|
|
2
|
+
// reloads the extension when they did, and the offline harness, which pins the rule; loaded as a
|
|
3
|
+
// plain script in both.
|
|
4
|
+
//
|
|
5
|
+
// This exists because the extension is unpacked and edited in place, and Chrome re-reads an
|
|
6
|
+
// unpacked extension's files only on a reload — which used to be a human click on
|
|
7
|
+
// chrome://extensions after every change. The worker can read its own files as they are on disk
|
|
8
|
+
// right now (measured 2026-08-26: a fetch of the extension's own URL returns the current file,
|
|
9
|
+
// not a cached copy), so it fingerprints them at start, again every beat, and reloads itself on
|
|
10
|
+
// a difference.
|
|
11
|
+
|
|
12
|
+
/** Every file Chrome loads for this extension: the manifest, the worker and what it imports, the content script, and the options page and its script. */
|
|
13
|
+
const WATCHED_FILES = ['manifest.json', 'background.js', 'driver-plan.js', 'fingerprint.js', 'content.js', 'options.html', 'options.js']
|
|
14
|
+
|
|
15
|
+
/** FNV-1a over the text, as eight hex digits. Enough to tell an edit; nobody is attacking it. */
|
|
16
|
+
function hashText(text) {
|
|
17
|
+
let hash = 0x811c9dc5
|
|
18
|
+
for (let i = 0; i < text.length; i++) {
|
|
19
|
+
hash ^= text.charCodeAt(i)
|
|
20
|
+
hash = Math.imul(hash, 0x01000193) >>> 0
|
|
21
|
+
}
|
|
22
|
+
return hash.toString(16).padStart(8, '0')
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* The hash of each watched file, read through `readText(file)`. A file that cannot be read fails
|
|
27
|
+
* the whole fingerprint rather than standing in as a change: a reload on a read that merely
|
|
28
|
+
* failed this once would loop.
|
|
29
|
+
*/
|
|
30
|
+
async function fingerprint(readText) {
|
|
31
|
+
const hashes = {}
|
|
32
|
+
for (const file of WATCHED_FILES) hashes[file] = hashText(await readText(file))
|
|
33
|
+
return hashes
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/** The watched files whose hash differs between two fingerprints, in watched order. */
|
|
37
|
+
function changedFiles(before, after) {
|
|
38
|
+
return WATCHED_FILES.filter(file => before[file] !== after[file])
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// The worker loads this with importScripts, where a top-level binding is already global; jsdom
|
|
42
|
+
// evaluates it the same way. Nothing else to export.
|
|
43
|
+
if (typeof globalThis !== 'undefined') globalThis.__tfFingerprint = { WATCHED_FILES, fingerprint, changedFiles }
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"manifest_version": 3,
|
|
3
|
+
"name": "The Framework: Claude web bridge",
|
|
4
|
+
"version": "0.12.0",
|
|
5
|
+
"description": "Drives one pinned claude.ai tab through your Claude Code cloud sessions: the question a session is parked on shows up in your local The Framework dashboard, and the answer you pick there is typed back into the session.",
|
|
6
|
+
"permissions": [
|
|
7
|
+
"storage",
|
|
8
|
+
"tabs",
|
|
9
|
+
"alarms"
|
|
10
|
+
],
|
|
11
|
+
"host_permissions": [
|
|
12
|
+
"http://localhost/*",
|
|
13
|
+
"http://127.0.0.1/*"
|
|
14
|
+
],
|
|
15
|
+
"background": {
|
|
16
|
+
"service_worker": "background.js"
|
|
17
|
+
},
|
|
18
|
+
"options_page": "options.html",
|
|
19
|
+
"content_scripts": [
|
|
20
|
+
{
|
|
21
|
+
"matches": [
|
|
22
|
+
"https://claude.ai/*"
|
|
23
|
+
],
|
|
24
|
+
"js": [
|
|
25
|
+
"content.js"
|
|
26
|
+
],
|
|
27
|
+
"run_at": "document_idle",
|
|
28
|
+
"all_frames": true
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<title>The Framework bridge</title>
|
|
6
|
+
<style>
|
|
7
|
+
body { font: 14px/1.5 ui-sans-serif, system-ui, sans-serif; margin: 24px; max-width: 560px; color: #1f2430; }
|
|
8
|
+
h1 { font-size: 17px; margin: 0 0 4px; }
|
|
9
|
+
p { color: #5b6472; margin: 0 0 16px; }
|
|
10
|
+
label { display: block; font-weight: 600; margin: 14px 0 4px; }
|
|
11
|
+
input { width: 100%; padding: 7px 9px; border: 1px solid #c9cfd8; border-radius: 6px; font: inherit; box-sizing: border-box; }
|
|
12
|
+
button { margin-top: 16px; padding: 7px 14px; border: 0; border-radius: 6px; background: #2d3441; color: #fff; font: inherit; cursor: pointer; }
|
|
13
|
+
code { background: #eef1f5; padding: 1px 5px; border-radius: 4px; }
|
|
14
|
+
#status { margin-top: 12px; min-height: 20px; color: #2f7a3f; }
|
|
15
|
+
#status.error { color: #b3261e; }
|
|
16
|
+
</style>
|
|
17
|
+
</head>
|
|
18
|
+
<body>
|
|
19
|
+
<h1>The Framework bridge</h1>
|
|
20
|
+
<p>
|
|
21
|
+
Reports the question a Claude Code cloud session is parked on to your local dashboard. Turn the
|
|
22
|
+
bridge on in The Framework first, then paste its token here.
|
|
23
|
+
</p>
|
|
24
|
+
|
|
25
|
+
<label for="daemon">Dashboard URL</label>
|
|
26
|
+
<input id="daemon" type="url" placeholder="http://localhost:4200" />
|
|
27
|
+
|
|
28
|
+
<label for="token">Bridge token</label>
|
|
29
|
+
<input id="token" type="password" placeholder="paste the token from The Framework" autocomplete="off" />
|
|
30
|
+
|
|
31
|
+
<label style="font-weight:600;margin-top:18px;display:flex;align-items:center;gap:8px">
|
|
32
|
+
<input id="autoOpen" type="checkbox" style="width:auto" />
|
|
33
|
+
Run the Driver tab
|
|
34
|
+
</label>
|
|
35
|
+
<p style="margin:4px 0 0;font-size:12px">
|
|
36
|
+
One pinned background tab that reads claude.ai's session list, visits the cloud sessions
|
|
37
|
+
waiting on you, and types your answers. Without it the bridge does nothing. Closing the tab
|
|
38
|
+
pauses it; the button below reopens it.
|
|
39
|
+
</p>
|
|
40
|
+
|
|
41
|
+
<button id="save">Save and test</button>
|
|
42
|
+
<button id="openNow" style="background:#4a5566;margin-left:8px">Open the Driver tab now</button>
|
|
43
|
+
<div id="status" role="status"></div>
|
|
44
|
+
<p id="lastCycle" style="margin:10px 0 0;font-size:12px"></p>
|
|
45
|
+
|
|
46
|
+
<script src="options.js"></script>
|
|
47
|
+
</body>
|
|
48
|
+
</html>
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
// Where the token is set. It lives in extension storage rather than in the page, so nothing on
|
|
2
|
+
// claude.ai can read the secret that talks to the daemon.
|
|
3
|
+
|
|
4
|
+
const DEFAULT_DAEMON = 'http://localhost:4200'
|
|
5
|
+
const daemonEl = document.getElementById('daemon')
|
|
6
|
+
const tokenEl = document.getElementById('token')
|
|
7
|
+
const statusEl = document.getElementById('status')
|
|
8
|
+
const autoOpenEl = document.getElementById('autoOpen')
|
|
9
|
+
const lastCycleEl = document.getElementById('lastCycle')
|
|
10
|
+
|
|
11
|
+
void chrome.storage.local.get(['daemonUrl', 'token', 'autoOpen']).then(({ daemonUrl, token, autoOpen }) => {
|
|
12
|
+
daemonEl.value = daemonUrl || DEFAULT_DAEMON
|
|
13
|
+
tokenEl.value = token || ''
|
|
14
|
+
// Default on once configured, but stored explicitly so the worker never has to guess.
|
|
15
|
+
autoOpenEl.checked = autoOpen !== false
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* What the worker's last cycle did, as it recorded it: this page is the one place to read why
|
|
20
|
+
* the bridge is doing nothing — or that the worker just reloaded the extension because its files
|
|
21
|
+
* changed on disk — without opening a service worker console. Kept live while the page is open:
|
|
22
|
+
* the worker records every cycle, and each record re-renders the line.
|
|
23
|
+
*/
|
|
24
|
+
function showLastCycle(lastCycle) {
|
|
25
|
+
if (!lastCycle) {
|
|
26
|
+
lastCycleEl.textContent = 'No cycle has run yet.'
|
|
27
|
+
return
|
|
28
|
+
}
|
|
29
|
+
const at = lastCycle.at ? ` at ${new Date(lastCycle.at).toLocaleTimeString()}` : ''
|
|
30
|
+
lastCycleEl.textContent = `Last cycle${at}: ${lastCycle.ok ? '' : 'failed — '}${lastCycle.reason ?? 'no reason recorded'}`
|
|
31
|
+
}
|
|
32
|
+
void chrome.storage.local.get('lastCycle').then(({ lastCycle }) => showLastCycle(lastCycle))
|
|
33
|
+
chrome.storage.onChanged.addListener((changes, area) => {
|
|
34
|
+
if (area === 'local' && changes.lastCycle) showLastCycle(changes.lastCycle.newValue)
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
function say(message, isError) {
|
|
38
|
+
statusEl.textContent = message
|
|
39
|
+
statusEl.className = isError ? 'error' : ''
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Are the host permissions actually granted?
|
|
44
|
+
*
|
|
45
|
+
* Declaring them in the manifest is not the same as holding them: Chrome lists each site under
|
|
46
|
+
* "Site access" with its own toggle, and for an unpacked extension they can sit off. The daemon
|
|
47
|
+
* sends no CORS headers by design, so without the localhost grant the worker's fetch is blocked
|
|
48
|
+
* before it leaves the browser and the daemon sees nothing at all. That looked like every other
|
|
49
|
+
* failure and cost an evening, so it is checked first now.
|
|
50
|
+
*/
|
|
51
|
+
async function missingHosts(daemonUrl) {
|
|
52
|
+
const wanted = [`${daemonUrl}/`, 'https://claude.ai/']
|
|
53
|
+
const missing = []
|
|
54
|
+
for (const origin of wanted) {
|
|
55
|
+
const ok = await chrome.permissions.contains({ origins: [`${origin}*`] }).catch(() => false)
|
|
56
|
+
if (!ok) missing.push(origin)
|
|
57
|
+
}
|
|
58
|
+
return missing
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
document.getElementById('save').addEventListener('click', async () => {
|
|
62
|
+
const daemonUrl = (daemonEl.value || DEFAULT_DAEMON).replace(/\/+$/, '')
|
|
63
|
+
const token = tokenEl.value.trim()
|
|
64
|
+
if (!token) return say('Paste the bridge token first.', true)
|
|
65
|
+
await chrome.storage.local.set({ daemonUrl, token, autoOpen: autoOpenEl.checked })
|
|
66
|
+
|
|
67
|
+
// Save then prove it: a token that is merely stored tells the user nothing, and the two ways
|
|
68
|
+
// this goes wrong (bridge off, wrong token) are worth telling apart before they need it.
|
|
69
|
+
say('Saved. Testing…')
|
|
70
|
+
const missing = await missingHosts(daemonUrl)
|
|
71
|
+
if (missing.length) {
|
|
72
|
+
return say(
|
|
73
|
+
`Chrome has not granted access to ${missing.join(' and ')}. Open chrome://extensions, find this extension, and switch those on under Site access.`,
|
|
74
|
+
true,
|
|
75
|
+
)
|
|
76
|
+
}
|
|
77
|
+
try {
|
|
78
|
+
const version = { 'x-tf-extension-version': chrome.runtime.getManifest().version }
|
|
79
|
+
const res = await fetch(`${daemonUrl}/_bridge/ping`, { headers: { authorization: `Bearer ${token}`, ...version } })
|
|
80
|
+
if (res.status === 401) return say('The dashboard is reachable but rejected the token.', true)
|
|
81
|
+
if (res.status === 404) return say('Reached the dashboard, but the bridge is off. Turn it on in The Framework.', true)
|
|
82
|
+
// The daemon refuses a version-skewed extension on every route (#1519); its answer names
|
|
83
|
+
// both versions and the way out, so hand it over verbatim.
|
|
84
|
+
if (res.status === 426) return say(await res.text(), true)
|
|
85
|
+
if (!res.ok) return say(`The dashboard answered ${res.status}.`, true)
|
|
86
|
+
// A 200 is not enough. The dashboard serves its single-page app for any path it does not
|
|
87
|
+
// recognise, so a build with no bridge route answers 200 and a page of HTML, and treating
|
|
88
|
+
// that as success would report "connected" to someone whose bridge does not exist.
|
|
89
|
+
const body = (await res.text()).trim()
|
|
90
|
+
if (body !== 'ok') return say('That dashboard has no bridge route. Update The Framework, then try again.', true)
|
|
91
|
+
|
|
92
|
+
// Prove the read path too, not just auth. "Connected" on its own leaves the next question
|
|
93
|
+
// unanswered: does the daemon actually have anything for us to watch?
|
|
94
|
+
let watching = ''
|
|
95
|
+
try {
|
|
96
|
+
const list = await fetch(`${daemonUrl}/_bridge/sessions`, { headers: { authorization: `Bearer ${token}`, ...version } })
|
|
97
|
+
const sessions = list.ok ? ((await list.json())?.sessions ?? []) : []
|
|
98
|
+
watching = sessions.length
|
|
99
|
+
? ` Watching ${sessions.length} recent cloud session${sessions.length === 1 ? '' : 's'}${autoOpenEl.checked ? ', the Driver tab serves them.' : ' (the Driver tab is off).'}`
|
|
100
|
+
: ' No recent cloud sessions to watch yet.'
|
|
101
|
+
} catch {
|
|
102
|
+
watching = ' Could not list sessions.'
|
|
103
|
+
}
|
|
104
|
+
say(`Connected. The bridge is on and the token works.${watching}`)
|
|
105
|
+
} catch {
|
|
106
|
+
say(`Could not reach ${daemonUrl}. Is the dashboard running?`, true)
|
|
107
|
+
}
|
|
108
|
+
})
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
// Run a Driver cycle on demand. The alarm fires twice a minute, which is a long time to sit
|
|
112
|
+
// wondering whether anything is wrong, and every reason it might do nothing is reported. This
|
|
113
|
+
// also resumes a Driver the user paused by closing its tab.
|
|
114
|
+
document.getElementById('openNow').addEventListener('click', () => {
|
|
115
|
+
say('Driving…')
|
|
116
|
+
chrome.runtime.sendMessage({ type: 'tf-open-now' }, result => {
|
|
117
|
+
if (chrome.runtime.lastError) return say(chrome.runtime.lastError.message ?? 'the worker did not answer', true)
|
|
118
|
+
if (!result) return say('The worker did not answer. Try reloading the extension.', true)
|
|
119
|
+
if (!result.ok) return say(`Did nothing: ${result.reason}`, true)
|
|
120
|
+
say(`Driver cycle done: ${result.reason}.`)
|
|
121
|
+
})
|
|
122
|
+
})
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { type AgentMeta } from './store/index.js';
|
|
2
|
+
import { type HandoffResult, type PrAgent } from './dashboard/agent-handoff.js';
|
|
3
|
+
import { type LinkedPr, type PrCiStatus } from './dashboard/gh.js';
|
|
4
|
+
import type { Cached } from './dashboard/cache.js';
|
|
5
|
+
import { type ProjectPass, type ProjectsSource } from './project-pass.js';
|
|
6
|
+
/**
|
|
7
|
+
* How long an agent's watched PR stays on the sweep's list: long enough to survive a weekend of the
|
|
8
|
+
* daemon being off, short enough that the sweep's `gh` spend cannot grow with the archive. A PR
|
|
9
|
+
* older than this is a human's to land — it has been red or unmergeable for a week.
|
|
10
|
+
*/
|
|
11
|
+
export declare const CI_WATCH_WINDOW_MS: number;
|
|
12
|
+
/**
|
|
13
|
+
* How old a check-less PR must be before "no checks" is believed to mean "this repo has no CI"
|
|
14
|
+
* rather than "the suite has not attached yet" — GitHub takes seconds to attach one after a push,
|
|
15
|
+
* and merging inside that window is the stale-check hazard (#1406) wearing a different face.
|
|
16
|
+
*/
|
|
17
|
+
export declare const NO_CHECKS_GRACE_MS: number;
|
|
18
|
+
/**
|
|
19
|
+
* The marker a CI-fix agent's prompt opens with, so attempts are discoverable from agent metas. The
|
|
20
|
+
* `@` is always there, sha or not: it is what stops "PR #12" reading as a prefix of "PR #123"
|
|
21
|
+
* when the metas are scanned for prior attempts.
|
|
22
|
+
*/
|
|
23
|
+
export declare function ciFixMarker(number: number, headSha?: string): string;
|
|
24
|
+
/** What the fix agent needs to know, distilled from the PR and its checks read. */
|
|
25
|
+
export interface CiFixRequest {
|
|
26
|
+
number: number;
|
|
27
|
+
title: string;
|
|
28
|
+
url: string;
|
|
29
|
+
branch: string;
|
|
30
|
+
headSha: string;
|
|
31
|
+
failed: string[];
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The prompt a CI-fix session runs (#1418). Explicit about the git mechanics because the agent gets
|
|
35
|
+
* an ordinary session worktree on its own scratch branch: the PR's branch may be checked out in a
|
|
36
|
+
* retained worktree elsewhere, so `push origin HEAD:<branch>` is the one spelling that always
|
|
37
|
+
* lands the fix without fighting over who holds the branch.
|
|
38
|
+
*/
|
|
39
|
+
export declare function ciFixPrompt(fix: CiFixRequest): string;
|
|
40
|
+
/** One PR the sweep merged. */
|
|
41
|
+
export interface CiMerged {
|
|
42
|
+
agentId: string;
|
|
43
|
+
number: number;
|
|
44
|
+
url?: string;
|
|
45
|
+
}
|
|
46
|
+
/** One fix session the sweep started, or why it stood down. */
|
|
47
|
+
export interface CiFixOutcome {
|
|
48
|
+
number: number;
|
|
49
|
+
/** The started session, when one was. */
|
|
50
|
+
agentId?: string;
|
|
51
|
+
/** Why no session was started: the wiring declined (gate/quota), or the attempts cap is spent. */
|
|
52
|
+
reason?: 'declined' | 'attempts-exhausted';
|
|
53
|
+
}
|
|
54
|
+
/** What one project's sweep did. */
|
|
55
|
+
export interface CiSweepResult {
|
|
56
|
+
merged: CiMerged[];
|
|
57
|
+
/** Merges that should have happened and did not, with the refusal. */
|
|
58
|
+
failed: {
|
|
59
|
+
agentId: string;
|
|
60
|
+
number: number;
|
|
61
|
+
error: string;
|
|
62
|
+
}[];
|
|
63
|
+
fixes: CiFixOutcome[];
|
|
64
|
+
}
|
|
65
|
+
/** Injectable seams so the sweep is unit-testable off disk and off `gh`. */
|
|
66
|
+
export interface CiSweepDeps {
|
|
67
|
+
/** Every agent meta worth scanning — live and archived (default: both stores). */
|
|
68
|
+
agents?: (cwd: string) => Promise<AgentMeta[]>;
|
|
69
|
+
/** The PR that belongs to an agent (default {@link resolveAgentPr}, which rides the PR-lookup cache (#1028)). */
|
|
70
|
+
pr?: (cwd: string, agent: PrAgent) => Promise<Cached<LinkedPr | undefined>>;
|
|
71
|
+
/** A PR's combined check state (default {@link ghPrCiStatus}). */
|
|
72
|
+
ci?: (cwd: string, number: number) => Promise<PrCiStatus>;
|
|
73
|
+
/** Merge an agent's open PR (default {@link mergeAgentPr}, which also forgets the PR caches). */
|
|
74
|
+
merge?: (cwd: string, agent: PrAgent) => Promise<HandoffResult>;
|
|
75
|
+
/**
|
|
76
|
+
* Start a CI-fix session for a red PR (#1418's fix half), resolving the agent id or undefined
|
|
77
|
+
* when the wiring declined (preference off, no quota headroom, start failed). Absent = the fix
|
|
78
|
+
* half is off and red PRs are only left for the merge half to keep ignoring.
|
|
79
|
+
*/
|
|
80
|
+
fix?: (cwd: string, request: CiFixRequest) => Promise<string | undefined>;
|
|
81
|
+
/**
|
|
82
|
+
* Merge attempts that already failed (`<cwd>\0<number>\0<headSha>`), fed and consulted by the
|
|
83
|
+
* sweep so a persistently refused merge (branch protection demanding a review, say) costs one
|
|
84
|
+
* `gh` write per head, not one per tick for a week. The head sha is part of the key (#1484):
|
|
85
|
+
* a push that changes the head — a conflict resolved, say — re-arms exactly one more attempt,
|
|
86
|
+
* the same re-arm rule the CI-fix half applies. Before, a PR that arrived unmergeable was
|
|
87
|
+
* skipped for the daemon's lifetime even after its branch was fixed and its checks went green.
|
|
88
|
+
* In-memory on purpose: a daemon restart retries once.
|
|
89
|
+
*/
|
|
90
|
+
attemptedMerges?: Set<string>;
|
|
91
|
+
now?: () => number;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Sweep one project's watched PRs (#1418): merge the green ones the repo could not arm GitHub
|
|
95
|
+
* auto-merge for, and start a fix session for the red ones.
|
|
96
|
+
*
|
|
97
|
+
* Conservative wherever the answer is unclear: a PR that is not OPEN is done (merged or a
|
|
98
|
+
* human's rejection — neither is this sweep's to touch), `pending` checks wait for the next
|
|
99
|
+
* tick, and a check-less PR only counts as green once it has been check-less for longer than a
|
|
100
|
+
* suite takes to attach ({@link NO_CHECKS_GRACE_MS}). An `auto-armed` PR is never merged here —
|
|
101
|
+
* GitHub holds that promise — but its checks going red still starts a fix.
|
|
102
|
+
*/
|
|
103
|
+
export declare function sweepProjectCi(cwd: string, deps?: CiSweepDeps): Promise<CiSweepResult>;
|
|
104
|
+
/** What {@link startCiWatch} needs from the daemon. */
|
|
105
|
+
export interface CiWatchOptions {
|
|
106
|
+
/** The registered projects to sweep. */
|
|
107
|
+
projects: ProjectsSource;
|
|
108
|
+
log: (message: string) => void;
|
|
109
|
+
/** The per-project sweep's seams, {@link CiSweepDeps.fix} included — the daemon wires the gates. */
|
|
110
|
+
deps?: CiSweepDeps;
|
|
111
|
+
/** The per-project sweep (default {@link sweepProjectCi}). */
|
|
112
|
+
sweep?: (cwd: string, deps: CiSweepDeps) => Promise<CiSweepResult>;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Watch every registered project's armed PRs on a timer (#1418).
|
|
116
|
+
*
|
|
117
|
+
* Same lifecycle contract as the merged-worktree sweep: an immediate start-up tick (the case is a
|
|
118
|
+
* daemon that was off while checks went green), overlapping ticks join the sweep in flight, the
|
|
119
|
+
* timer is unref'd, and everything it does is logged — a PR merging with no line explaining why
|
|
120
|
+
* reads as a bug even when it is the feature.
|
|
121
|
+
*/
|
|
122
|
+
export declare function startCiWatch(opts: CiWatchOptions): ProjectPass;
|
|
123
|
+
//# sourceMappingURL=ci-watch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ci-watch.d.ts","sourceRoot":"","sources":["../src/ci-watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5E,OAAO,EAAgC,KAAK,aAAa,EAAE,KAAK,OAAO,EAAE,MAAM,8BAA8B,CAAA;AAC7G,OAAO,EAAgB,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAChF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAoB,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAmB3F;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QAA0B,CAAA;AAEzD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QAAgB,CAAA;AAS/C;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,SAAK,GAAG,MAAM,CAEhE;AAED,mFAAmF;AACnF,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAerD;AAED,+BAA+B;AAC/B,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,+DAA+D;AAC/D,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,kGAAkG;IAClG,MAAM,CAAC,EAAE,UAAU,GAAG,oBAAoB,CAAA;CAC3C;AAED,oCAAoC;AACpC,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,QAAQ,EAAE,CAAA;IAClB,sEAAsE;IACtE,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC5D,KAAK,EAAE,YAAY,EAAE,CAAA;CACtB;AAED,4EAA4E;AAC5E,MAAM,WAAW,WAAW;IAC1B,kFAAkF;IAClF,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;IAC9C,iHAAiH;IACjH,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAA;IAC3E,kEAAkE;IAClE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;IACzD,iGAAiG;IACjG,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,aAAa,CAAC,CAAA;IAC/D;;;;OAIG;IACH,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IACzE;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC7B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CACnB;AAmBD;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,aAAa,CAAC,CAoDhG;AAwCD,uDAAuD;AACvD,MAAM,WAAW,cAAc;IAC7B,wCAAwC;IACxC,QAAQ,EAAE,cAAc,CAAA;IACxB,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,oGAAoG;IACpG,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,aAAa,CAAC,CAAA;CACnE;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,WAAW,CA2B9D"}
|
package/dist/ci-watch.js
ADDED
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import { listAgents, readLiveMetas } from './store/index.js';
|
|
2
|
+
import { mergeAgentPr, resolveAgentPr } from './dashboard/agent-handoff.js';
|
|
3
|
+
import { ghPrCiStatus } from './dashboard/gh.js';
|
|
4
|
+
import { startProjectPass } from './project-pass.js';
|
|
5
|
+
// Watch the PRs the framework is waiting to land, and act on what their CI says (#1418).
|
|
6
|
+
//
|
|
7
|
+
// The merge half (#1417's ask): a session armed for auto-merge on a repo without GitHub's native
|
|
8
|
+
// auto-merge used to get the direct fallback — merged seconds after opening, before its first
|
|
9
|
+
// check ran (#1406). Since #1418 that path answers `watched` instead, and this sweep is the other
|
|
10
|
+
// half of the promise: poll the watched PR's checks (~1 min, the latency agreed on the issue) and
|
|
11
|
+
// merge it once they pass. The repo setting stops mattering: merge-on-green works everywhere.
|
|
12
|
+
//
|
|
13
|
+
// The fix half (#1418's first use case): a watched or auto-armed PR whose checks go *red* is work
|
|
14
|
+
// the framework produced and then abandoned to a human. The sweep starts one unattended fix
|
|
15
|
+
// session per failing head commit, told to land its fix on the PR's own branch — the checks rerun,
|
|
16
|
+
// and the merge half finishes the job if they come back green.
|
|
17
|
+
//
|
|
18
|
+
// Polling rather than webhooks on purpose: a local daemon has no public URL for GitHub to call.
|
|
19
|
+
// Every decision this sweep takes starts from what `gh` answers, so a hosted deployment can later
|
|
20
|
+
// feed the same handlers from a webhook receiver and only the trigger changes.
|
|
21
|
+
/**
|
|
22
|
+
* How long an agent's watched PR stays on the sweep's list: long enough to survive a weekend of the
|
|
23
|
+
* daemon being off, short enough that the sweep's `gh` spend cannot grow with the archive. A PR
|
|
24
|
+
* older than this is a human's to land — it has been red or unmergeable for a week.
|
|
25
|
+
*/
|
|
26
|
+
export const CI_WATCH_WINDOW_MS = 7 * 24 * 60 * 60 * 1000;
|
|
27
|
+
/**
|
|
28
|
+
* How old a check-less PR must be before "no checks" is believed to mean "this repo has no CI"
|
|
29
|
+
* rather than "the suite has not attached yet" — GitHub takes seconds to attach one after a push,
|
|
30
|
+
* and merging inside that window is the stale-check hazard (#1406) wearing a different face.
|
|
31
|
+
*/
|
|
32
|
+
export const NO_CHECKS_GRACE_MS = 3 * 60 * 1000;
|
|
33
|
+
/**
|
|
34
|
+
* How many fix sessions one PR may consume before the sweep stands down. Each attempt only
|
|
35
|
+
* re-arms on a new head commit, so two attempts means: the original failure, and one more after
|
|
36
|
+
* a fix that did not take. Past that the failure is evidently not agent-shaped.
|
|
37
|
+
*/
|
|
38
|
+
const MAX_CI_FIX_ATTEMPTS = 2;
|
|
39
|
+
/**
|
|
40
|
+
* The marker a CI-fix agent's prompt opens with, so attempts are discoverable from agent metas. The
|
|
41
|
+
* `@` is always there, sha or not: it is what stops "PR #12" reading as a prefix of "PR #123"
|
|
42
|
+
* when the metas are scanned for prior attempts.
|
|
43
|
+
*/
|
|
44
|
+
export function ciFixMarker(number, headSha = '') {
|
|
45
|
+
return `[ci-fix] PR #${number} @${headSha}`;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* The prompt a CI-fix session runs (#1418). Explicit about the git mechanics because the agent gets
|
|
49
|
+
* an ordinary session worktree on its own scratch branch: the PR's branch may be checked out in a
|
|
50
|
+
* retained worktree elsewhere, so `push origin HEAD:<branch>` is the one spelling that always
|
|
51
|
+
* lands the fix without fighting over who holds the branch.
|
|
52
|
+
*/
|
|
53
|
+
export function ciFixPrompt(fix) {
|
|
54
|
+
return [
|
|
55
|
+
ciFixMarker(fix.number, fix.headSha),
|
|
56
|
+
'',
|
|
57
|
+
`CI is red on PR #${fix.number} ("${fix.title}"): ${fix.failed.join(', ') || 'checks failed'}.`,
|
|
58
|
+
`The PR's branch is \`${fix.branch}\` and its failing head commit is ${fix.headSha}.`,
|
|
59
|
+
'',
|
|
60
|
+
'Fix the failure so the checks go green:',
|
|
61
|
+
`1. \`git fetch origin ${fix.branch}\` and put your worktree on that exact state: \`git reset --hard origin/${fix.branch}\` (your worktree’s own branch is scratch — nothing on it is worth keeping).`,
|
|
62
|
+
`2. Read the failing checks (\`gh pr checks ${fix.number}\`, then \`gh run view --log-failed <run-id>\` for the failed workflow runs) and diagnose the failure.`,
|
|
63
|
+
'3. Fix it, and run the relevant tests/build locally to confirm.',
|
|
64
|
+
`4. Push the fix back onto the PR: \`git push origin HEAD:${fix.branch}\`.`,
|
|
65
|
+
'',
|
|
66
|
+
`Do NOT open a new PR and do not merge anything: the fix belongs on PR #${fix.number} (${fix.url}), and the merge happens elsewhere once the checks pass.`,
|
|
67
|
+
].join('\n');
|
|
68
|
+
}
|
|
69
|
+
/** Both stores' metas: the live agents (their conversation is still going) and the archive. */
|
|
70
|
+
async function allAgentMetas(cwd) {
|
|
71
|
+
const [live, archived] = await Promise.all([
|
|
72
|
+
readLiveMetas(cwd).catch(() => []),
|
|
73
|
+
listAgents(cwd).catch(() => []),
|
|
74
|
+
]);
|
|
75
|
+
return [...live, ...archived];
|
|
76
|
+
}
|
|
77
|
+
/** Whether a meta is one of this sweep's candidates: an ended agent with a merge the CI decides. */
|
|
78
|
+
function watchable(meta, now) {
|
|
79
|
+
if (meta.status === 'running')
|
|
80
|
+
return false;
|
|
81
|
+
if (meta.mergeOutcome !== 'watched' && meta.mergeOutcome !== 'auto-armed')
|
|
82
|
+
return false;
|
|
83
|
+
const updated = Date.parse(meta.updatedAt ?? '');
|
|
84
|
+
return Number.isFinite(updated) && now - updated <= CI_WATCH_WINDOW_MS;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Sweep one project's watched PRs (#1418): merge the green ones the repo could not arm GitHub
|
|
88
|
+
* auto-merge for, and start a fix session for the red ones.
|
|
89
|
+
*
|
|
90
|
+
* Conservative wherever the answer is unclear: a PR that is not OPEN is done (merged or a
|
|
91
|
+
* human's rejection — neither is this sweep's to touch), `pending` checks wait for the next
|
|
92
|
+
* tick, and a check-less PR only counts as green once it has been check-less for longer than a
|
|
93
|
+
* suite takes to attach ({@link NO_CHECKS_GRACE_MS}). An `auto-armed` PR is never merged here —
|
|
94
|
+
* GitHub holds that promise — but its checks going red still starts a fix.
|
|
95
|
+
*/
|
|
96
|
+
export async function sweepProjectCi(cwd, deps = {}) {
|
|
97
|
+
const agents = deps.agents ?? allAgentMetas;
|
|
98
|
+
const pr = deps.pr ?? resolveAgentPr;
|
|
99
|
+
const ci = deps.ci ?? ghPrCiStatus;
|
|
100
|
+
const merge = deps.merge ?? mergeAgentPr;
|
|
101
|
+
const now = deps.now ?? Date.now;
|
|
102
|
+
const result = { merged: [], failed: [], fixes: [] };
|
|
103
|
+
const metas = await agents(cwd).catch(() => []);
|
|
104
|
+
const candidates = metas.filter(meta => watchable(meta, now()));
|
|
105
|
+
if (candidates.length === 0)
|
|
106
|
+
return result;
|
|
107
|
+
const seen = new Set();
|
|
108
|
+
for (const meta of candidates) {
|
|
109
|
+
const read = await pr(cwd, meta).catch(() => ({ value: undefined, pending: false }));
|
|
110
|
+
// A cache still warming answers `pending`, and the value standing in for the state it has not
|
|
111
|
+
// read yet is a synthetic OPEN (agent-handoff.ts). Acting on that guess re-merges PRs that
|
|
112
|
+
// already landed and starts fix sessions on branches a human closed; the next tick knows.
|
|
113
|
+
if (read.pending)
|
|
114
|
+
continue;
|
|
115
|
+
const linked = read.value;
|
|
116
|
+
// No PR, or one that is no longer open: nothing left to watch. CLOSED stays closed on
|
|
117
|
+
// purpose — an unmerged close is a human's rejection of the work.
|
|
118
|
+
if (!linked || linked.state !== 'OPEN' || seen.has(linked.number))
|
|
119
|
+
continue;
|
|
120
|
+
seen.add(linked.number);
|
|
121
|
+
const status = await ci(cwd, linked.number).catch(() => ({ checks: 'none', failed: [] }));
|
|
122
|
+
if (status.checks === 'pending')
|
|
123
|
+
continue;
|
|
124
|
+
if (status.checks === 'failing') {
|
|
125
|
+
const fix = await requestFix(cwd, metas, linked, status, deps);
|
|
126
|
+
if (fix)
|
|
127
|
+
result.fixes.push(fix);
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
// Green — but the merge is only ours where GitHub could not take it (#1418): an auto-armed
|
|
131
|
+
// PR lands by GitHub's own hand, and a check-less one must outlive the attach window first.
|
|
132
|
+
if (meta.mergeOutcome !== 'watched')
|
|
133
|
+
continue;
|
|
134
|
+
if (status.checks === 'none') {
|
|
135
|
+
// "No checks" means "this repo has no CI" only when `gh` actually answered: an unreadable
|
|
136
|
+
// status reads `none` too (gh.ts), and acting on one must never merge anything. A read that
|
|
137
|
+
// succeeded always carries the head commit, so its presence is what tells the two apart.
|
|
138
|
+
if (!status.headSha)
|
|
139
|
+
continue;
|
|
140
|
+
if (!pastNoChecksGrace(linked, now()))
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
const attemptKey = `${cwd}\u0000${linked.number}\u0000${status.headSha ?? ''}`;
|
|
144
|
+
if (deps.attemptedMerges?.has(attemptKey))
|
|
145
|
+
continue;
|
|
146
|
+
const outcome = await merge(cwd, meta);
|
|
147
|
+
if (outcome.ok)
|
|
148
|
+
result.merged.push({ agentId: meta.id, number: linked.number, ...(outcome.url ? { url: outcome.url } : {}) });
|
|
149
|
+
else {
|
|
150
|
+
deps.attemptedMerges?.add(attemptKey);
|
|
151
|
+
result.failed.push({ agentId: meta.id, number: linked.number, error: outcome.error });
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return result;
|
|
155
|
+
}
|
|
156
|
+
/** Whether a check-less PR has been open longer than a check suite takes to attach. */
|
|
157
|
+
function pastNoChecksGrace(pr, now) {
|
|
158
|
+
const created = Date.parse(pr.createdAt ?? '');
|
|
159
|
+
// No creation time on the record: age unknowable, so never merge on its absence.
|
|
160
|
+
return Number.isFinite(created) && now - created > NO_CHECKS_GRACE_MS;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* The fix half's own restraint (#1418), applied before the wiring's gates: one session per
|
|
164
|
+
* failing head commit — the marker in the prompt is the durable record, scanned off the same
|
|
165
|
+
* metas — at most one in flight per PR, and {@link MAX_CI_FIX_ATTEMPTS} per PR ever.
|
|
166
|
+
*/
|
|
167
|
+
async function requestFix(cwd, metas, pr, status, deps) {
|
|
168
|
+
if (!deps.fix)
|
|
169
|
+
return undefined;
|
|
170
|
+
// No head to pin the attempt to (or no branch to land it on): a retry could not be told from a
|
|
171
|
+
// loop, so stand down rather than guess.
|
|
172
|
+
if (!status.headSha || !status.branch)
|
|
173
|
+
return undefined;
|
|
174
|
+
const attempts = metas.filter(meta => meta.intent?.startsWith(ciFixMarker(pr.number)));
|
|
175
|
+
if (attempts.some(meta => meta.intent?.startsWith(ciFixMarker(pr.number, status.headSha))))
|
|
176
|
+
return undefined;
|
|
177
|
+
if (attempts.some(meta => meta.status === 'running'))
|
|
178
|
+
return undefined;
|
|
179
|
+
if (attempts.length >= MAX_CI_FIX_ATTEMPTS)
|
|
180
|
+
return { number: pr.number, reason: 'attempts-exhausted' };
|
|
181
|
+
const agentId = await deps.fix(cwd, {
|
|
182
|
+
number: pr.number,
|
|
183
|
+
title: pr.title,
|
|
184
|
+
url: pr.url,
|
|
185
|
+
branch: status.branch,
|
|
186
|
+
headSha: status.headSha,
|
|
187
|
+
failed: status.failed,
|
|
188
|
+
});
|
|
189
|
+
return agentId ? { number: pr.number, agentId } : { number: pr.number, reason: 'declined' };
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Watch every registered project's armed PRs on a timer (#1418).
|
|
193
|
+
*
|
|
194
|
+
* Same lifecycle contract as the merged-worktree sweep: an immediate start-up tick (the case is a
|
|
195
|
+
* daemon that was off while checks went green), overlapping ticks join the sweep in flight, the
|
|
196
|
+
* timer is unref'd, and everything it does is logged — a PR merging with no line explaining why
|
|
197
|
+
* reads as a bug even when it is the feature.
|
|
198
|
+
*/
|
|
199
|
+
export function startCiWatch(opts) {
|
|
200
|
+
const sweep = opts.sweep ?? sweepProjectCi;
|
|
201
|
+
const deps = { attemptedMerges: new Set(), ...opts.deps };
|
|
202
|
+
// A red or unmergeable PR stays a candidate for a week, and its line does not get truer with
|
|
203
|
+
// repetition: each distinct line is said once per daemon lifetime.
|
|
204
|
+
const said = new Set();
|
|
205
|
+
const sayOnce = (line) => {
|
|
206
|
+
if (said.has(line))
|
|
207
|
+
return;
|
|
208
|
+
said.add(line);
|
|
209
|
+
opts.log(line);
|
|
210
|
+
};
|
|
211
|
+
// No timer of its own (E4): the daemon's one clock calls `tick`.
|
|
212
|
+
return startProjectPass(opts.projects, async (cwd) => {
|
|
213
|
+
const result = await sweep(cwd, deps).catch(() => ({ merged: [], failed: [], fixes: [] }));
|
|
214
|
+
for (const item of result.merged) {
|
|
215
|
+
opts.log(`[framework] CI watch: checks passed on PR #${item.number}, merged it${item.url ? ` (${item.url})` : ''} (session ${item.agentId})`);
|
|
216
|
+
}
|
|
217
|
+
for (const item of result.failed) {
|
|
218
|
+
sayOnce(`[framework] CI watch: could not merge PR #${item.number}: ${item.error}`);
|
|
219
|
+
}
|
|
220
|
+
for (const item of result.fixes) {
|
|
221
|
+
if (item.agentId)
|
|
222
|
+
opts.log(`[framework] CI watch: checks failed on PR #${item.number}, started fix session ${item.agentId}`);
|
|
223
|
+
else if (item.reason === 'attempts-exhausted')
|
|
224
|
+
sayOnce(`[framework] CI watch: PR #${item.number} is still red after ${MAX_CI_FIX_ATTEMPTS} fix sessions; leaving it for a human`);
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=ci-watch.js.map
|