@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,75 @@
|
|
|
1
|
+
import type { ChoiceBy } from './events.js';
|
|
2
|
+
import { type HandoffLevel } from './handoff-level.js';
|
|
3
|
+
/**
|
|
4
|
+
* The dashboard-to-agent control channel (#344): the reverse of the event log.
|
|
5
|
+
* Events flow run -> `.the-framework/events.jsonl` -> daemon -> browser; steering
|
|
6
|
+
* flows browser -> daemon -> `.the-framework/control.jsonl` -> run. The daemon
|
|
7
|
+
* appends a {@link ControlEntry} per choice pick / message, and the agent tails
|
|
8
|
+
* the file, resolving its parked gate. Same file-is-the-seam design
|
|
9
|
+
* as the forward direction — no run<->daemon IPC.
|
|
10
|
+
*/
|
|
11
|
+
/** The control log filename under `.the-framework/`. */
|
|
12
|
+
export declare const CONTROL_FILE = "control.jsonl";
|
|
13
|
+
/**
|
|
14
|
+
* One steering instruction from the dashboard to the live agent. Stop is not one: it is a
|
|
15
|
+
* signal to the agent's process, whose pid the agent's meta names (`dashboard-rpc/control.ts`).
|
|
16
|
+
*/
|
|
17
|
+
export type ControlEntry =
|
|
18
|
+
/** Resolve a parked choice gate: the pick for the pending {@link ChoiceRequest} id. */
|
|
19
|
+
{
|
|
20
|
+
kind: 'choice';
|
|
21
|
+
id: string;
|
|
22
|
+
pick: string | string[];
|
|
23
|
+
by: ChoiceBy;
|
|
24
|
+
}
|
|
25
|
+
/** A live-chat message the user sent to the running agent (#714). */
|
|
26
|
+
| {
|
|
27
|
+
kind: 'message';
|
|
28
|
+
text: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Move the end-of-session handoff (#1102): how far this session publishes itself when it
|
|
32
|
+
* finishes — keep it local, push the branch, open a PR, merge it.
|
|
33
|
+
*
|
|
34
|
+
* One rung rather than a pair of booleans (B5): a surface offering checkboxes converts on its
|
|
35
|
+
* side, so an impossible answer resolves *down* there instead of arriving here as "a PR with no
|
|
36
|
+
* push" for this end to repair upward.
|
|
37
|
+
*
|
|
38
|
+
* Steering rather than an event because it is an instruction to the agent, and it has to reach a
|
|
39
|
+
* run whose dashboard tab was opened after it started. The agent echoes what it applied back as an
|
|
40
|
+
* event, which is what puts it on the meta the checkboxes read.
|
|
41
|
+
*/
|
|
42
|
+
| {
|
|
43
|
+
kind: 'handoff';
|
|
44
|
+
level: HandoffLevel;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* The user's Merge action on a live session (#1391): arm the full publish ladder and record that
|
|
48
|
+
* a human authorized the merge, so the merge gate (#1363) does not also demand the agent's
|
|
49
|
+
* ready-for-merge signal — a human's word outranks it. The session still merges at its own end
|
|
50
|
+
* (it ends itself once nothing needs a human, #1390); this is a pre-commitment, not an abort.
|
|
51
|
+
*/
|
|
52
|
+
| {
|
|
53
|
+
kind: 'merge';
|
|
54
|
+
};
|
|
55
|
+
/** The control log path for a workspace. */
|
|
56
|
+
export declare function controlPath(cwd: string): string;
|
|
57
|
+
/** Append one entry to the workspace's control log, creating it as needed. */
|
|
58
|
+
export declare function appendControl(cwd: string, entry: ControlEntry): Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* Truncate the control log. An agent calls this at start so a previous agent's picks
|
|
61
|
+
* can never fire into this one (gate ids like `plan-approval` repeat across runs).
|
|
62
|
+
*/
|
|
63
|
+
export declare function resetControl(cwd: string): Promise<void>;
|
|
64
|
+
/** A live control tail. {@link close} stops watching (idempotent). */
|
|
65
|
+
export interface ControlWatcher {
|
|
66
|
+
close(): void;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Tail the workspace's control log, dispatching each well-formed entry as it is
|
|
70
|
+
* appended. An `fs.watch` on `.the-framework/` plus a poll backstop, mirroring the
|
|
71
|
+
* daemon's event tail (`fs.watch` is unreliable across platforms). Malformed or
|
|
72
|
+
* unknown lines are skipped so a bad write can never crash an agent.
|
|
73
|
+
*/
|
|
74
|
+
export declare function watchControl(cwd: string, onEntry: (entry: ControlEntry) => void, pollMs?: number): ControlWatcher;
|
|
75
|
+
//# sourceMappingURL=control.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control.d.ts","sourceRoot":"","sources":["../src/control.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAItE;;;;;;;GAOG;AAEH,wDAAwD;AACxD,eAAO,MAAM,YAAY,kBAAkB,CAAA;AAE3C;;;GAGG;AACH,MAAM,MAAM,YAAY;AACtB,uFAAuF;AACrF;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAAC,EAAE,EAAE,QAAQ,CAAA;CAAE;AACvE,qEAAqE;GACnE;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AACnC;;;;;;;;;;;GAWG;GACD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE;AAC1C;;;;;GAKG;GACD;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAA;AAErB,4CAA4C;AAC5C,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,8EAA8E;AAC9E,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAGnF;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG7D;AAED,sEAAsE;AACtE,MAAM,WAAW,cAAc;IAC7B,KAAK,IAAI,IAAI,CAAA;CACd;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,EACtC,MAAM,SAAM,GACX,cAAc,CAOhB"}
|
package/dist/control.js
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { appendFile, mkdir, writeFile } from 'node:fs/promises';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { isHandoffLevel } from './handoff-level.js';
|
|
4
|
+
import { THE_FRAMEWORK_DIR } from './framework-dir.js';
|
|
5
|
+
import { JsonlTailer, followFile } from './jsonl-tail.js';
|
|
6
|
+
/**
|
|
7
|
+
* The dashboard-to-agent control channel (#344): the reverse of the event log.
|
|
8
|
+
* Events flow run -> `.the-framework/events.jsonl` -> daemon -> browser; steering
|
|
9
|
+
* flows browser -> daemon -> `.the-framework/control.jsonl` -> run. The daemon
|
|
10
|
+
* appends a {@link ControlEntry} per choice pick / message, and the agent tails
|
|
11
|
+
* the file, resolving its parked gate. Same file-is-the-seam design
|
|
12
|
+
* as the forward direction — no run<->daemon IPC.
|
|
13
|
+
*/
|
|
14
|
+
/** The control log filename under `.the-framework/`. */
|
|
15
|
+
export const CONTROL_FILE = 'control.jsonl';
|
|
16
|
+
/** The control log path for a workspace. */
|
|
17
|
+
export function controlPath(cwd) {
|
|
18
|
+
return join(cwd, THE_FRAMEWORK_DIR, CONTROL_FILE);
|
|
19
|
+
}
|
|
20
|
+
/** Append one entry to the workspace's control log, creating it as needed. */
|
|
21
|
+
export async function appendControl(cwd, entry) {
|
|
22
|
+
await mkdir(join(cwd, THE_FRAMEWORK_DIR), { recursive: true });
|
|
23
|
+
await appendFile(controlPath(cwd), JSON.stringify(entry) + '\n');
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Truncate the control log. An agent calls this at start so a previous agent's picks
|
|
27
|
+
* can never fire into this one (gate ids like `plan-approval` repeat across runs).
|
|
28
|
+
*/
|
|
29
|
+
export async function resetControl(cwd) {
|
|
30
|
+
await mkdir(join(cwd, THE_FRAMEWORK_DIR), { recursive: true });
|
|
31
|
+
await writeFile(controlPath(cwd), '');
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Tail the workspace's control log, dispatching each well-formed entry as it is
|
|
35
|
+
* appended. An `fs.watch` on `.the-framework/` plus a poll backstop, mirroring the
|
|
36
|
+
* daemon's event tail (`fs.watch` is unreliable across platforms). Malformed or
|
|
37
|
+
* unknown lines are skipped so a bad write can never crash an agent.
|
|
38
|
+
*/
|
|
39
|
+
export function watchControl(cwd, onEntry, pollMs = 300) {
|
|
40
|
+
const tailer = new JsonlTailer(controlPath(cwd), entry => {
|
|
41
|
+
if (isControlEntry(entry))
|
|
42
|
+
onEntry(entry);
|
|
43
|
+
});
|
|
44
|
+
// unref: never keep the process alive just for steering.
|
|
45
|
+
const stop = followFile(join(cwd, THE_FRAMEWORK_DIR), () => tailer.pull(), { pollMs, unref: true });
|
|
46
|
+
return { close: stop };
|
|
47
|
+
}
|
|
48
|
+
/** Shape-check a parsed line. A multi-select pick may legitimately be `[]`. */
|
|
49
|
+
function isControlEntry(value) {
|
|
50
|
+
if (!value || typeof value !== 'object')
|
|
51
|
+
return false;
|
|
52
|
+
const v = value;
|
|
53
|
+
if (v['kind'] === 'merge')
|
|
54
|
+
return true;
|
|
55
|
+
// The rung must be one of the four: a half-written entry would otherwise disarm by accident,
|
|
56
|
+
// and this decides whether the session's work reaches the remote at all.
|
|
57
|
+
if (v['kind'] === 'handoff')
|
|
58
|
+
return isHandoffLevel(v['level']);
|
|
59
|
+
if (v['kind'] === 'message')
|
|
60
|
+
return typeof v['text'] === 'string' && v['text'].length > 0;
|
|
61
|
+
if (v['kind'] !== 'choice')
|
|
62
|
+
return false;
|
|
63
|
+
if (typeof v['id'] !== 'string' || !v['id'])
|
|
64
|
+
return false;
|
|
65
|
+
const pick = v['pick'];
|
|
66
|
+
return typeof pick === 'string' || (Array.isArray(pick) && pick.every(p => typeof p === 'string'));
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=control.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control.js","sourceRoot":"","sources":["../src/control.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,OAAO,EAAE,cAAc,EAAqB,MAAM,oBAAoB,CAAA;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEzD;;;;;;;GAOG;AAEH,wDAAwD;AACxD,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe,CAAA;AAgC3C,4CAA4C;AAC5C,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,IAAI,CAAC,GAAG,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAA;AACnD,CAAC;AAED,8EAA8E;AAC9E,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAW,EAAE,KAAmB;IAClE,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC9D,MAAM,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAA;AAClE,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAW;IAC5C,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC9D,MAAM,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;AACvC,CAAC;AAOD;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAC1B,GAAW,EACX,OAAsC,EACtC,MAAM,GAAG,GAAG;IAEZ,MAAM,MAAM,GAAG,IAAI,WAAW,CAAe,WAAW,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE;QACrE,IAAI,cAAc,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,KAAK,CAAC,CAAA;IAC3C,CAAC,CAAC,CAAA;IACF,yDAAyD;IACzD,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACnG,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;AACxB,CAAC;AAED,+EAA+E;AAC/E,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IACrD,MAAM,CAAC,GAAG,KAAgC,CAAA;IAC1C,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,OAAO;QAAE,OAAO,IAAI,CAAA;IACtC,6FAA6F;IAC7F,yEAAyE;IACzE,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,SAAS;QAAE,OAAO,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;IAC9D,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;IACzF,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IACxC,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAA;IACzD,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;IACtB,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAA;AACpG,CAAC"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import type { ProjectSummary } from './dashboard/projects.js';
|
|
2
|
+
import type { GitRunner } from './project.js';
|
|
3
|
+
/**
|
|
4
|
+
* Committing the conversations the daemon records (#912) into the project checkout.
|
|
5
|
+
*
|
|
6
|
+
* #908 made `.the-framework/conversations/<runId>.md` tracked files, and the paths that already
|
|
7
|
+
* commit pick them up: a run's worktree sweeps its own on teardown (`store/worktree.ts`). The main
|
|
8
|
+
* checkout has no such path — `install.ts` commits once at activation and nothing after — so a
|
|
9
|
+
* conversation held there sat as a working-tree change until a human happened to commit it. That
|
|
10
|
+
* is the one gap between "the chat is in Git" (#857) and "the chat reaches Git by itself".
|
|
11
|
+
*
|
|
12
|
+
* Two rules shape the whole module, both about writing into a repo somebody else is using.
|
|
13
|
+
*
|
|
14
|
+
* Path-scoped, never `git add -A`. The pathspec names the conversations directory and nothing
|
|
15
|
+
* else, the way `queue-promote.ts` names the queue file, so whatever the user has in progress
|
|
16
|
+
* cannot ride along in our commit. A pathspec commit also leaves their index alone: what they had
|
|
17
|
+
* staged is still staged afterwards. Scoped down further at commit time to the pathspecs that
|
|
18
|
+
* actually have something pending — see {@link pathspecsFor}.
|
|
19
|
+
*
|
|
20
|
+
* Debounced on an idle window rather than committed per turn. A chat turn is seconds apart, and a
|
|
21
|
+
* commit each would bury the project's real history under transcript noise. A poll that sees the
|
|
22
|
+
* same pending set twice running treats the conversation as settled and commits the batch; a burst
|
|
23
|
+
* keeps resetting it. {@link ConversationCommitterOptions.maxWaitMs} caps that, so a conversation
|
|
24
|
+
* that never goes idle still lands instead of being starved forever.
|
|
25
|
+
*
|
|
26
|
+
* Tolerates not being alone (the #605 question this waited on). One daemon per machine is the rule
|
|
27
|
+
* today (#393), but the committer never assumes it: a locked index or a rebase/merge in progress
|
|
28
|
+
* means somebody else is mid-operation, so it skips rather than commits into their work, and a
|
|
29
|
+
* failed commit is swallowed and retried on the next window. That way #605's eventual answer about
|
|
30
|
+
* who owns the chat bot does not invalidate any of this.
|
|
31
|
+
*/
|
|
32
|
+
/** The pathspec the conversations live under. Posix separators: it is a git pathspec, not a path. */
|
|
33
|
+
export declare const CONVERSATIONS_PATHSPEC = ".the-framework/conversations";
|
|
34
|
+
/**
|
|
35
|
+
* The committed session archives (#1179), under every user's own directory.
|
|
36
|
+
*
|
|
37
|
+
* `:(glob)` magic so the `*` stops at a path separator — a plain pathspec wildcard matches `/` too,
|
|
38
|
+
* and would reach further down `.the-framework/` than this means to.
|
|
39
|
+
*
|
|
40
|
+
* The trailing `/**` is load-bearing, and its absence is silent: glob magic matches the pattern
|
|
41
|
+
* against each file's whole path rather than treating a directory as a prefix, so
|
|
42
|
+
* `.the-framework/*/sessions` matches no *file* and `git add` fails with "did not match any files"
|
|
43
|
+
* — a committer that commits nothing, every time. Only a real repo shows this.
|
|
44
|
+
*/
|
|
45
|
+
export declare const SESSIONS_PATHSPEC = ":(glob).the-framework/*/sessions/**";
|
|
46
|
+
/**
|
|
47
|
+
* Everything this committer is scoped to. Both are records the daemon writes into the repo and
|
|
48
|
+
* nobody would think to commit by hand: the chat of a run (#908) and the run's own archived history
|
|
49
|
+
* (#1179). They share one debounce because they are written by the same events and a commit each
|
|
50
|
+
* would double the noise in the project's log.
|
|
51
|
+
*/
|
|
52
|
+
export declare const COMMITTED_PATHSPECS: readonly string[];
|
|
53
|
+
/**
|
|
54
|
+
* The subset of {@link COMMITTED_PATHSPECS} that `files` actually has something under.
|
|
55
|
+
*
|
|
56
|
+
* `git add` and `git commit` are all-or-nothing about their pathspecs: one that matches no file
|
|
57
|
+
* aborts the whole command with "pathspec ... did not match any files", so passing both patterns
|
|
58
|
+
* unconditionally means a project that has sessions but has never recorded a conversation — every
|
|
59
|
+
* project, until its first chat — fails to commit and puts that failure in the daemon log on every
|
|
60
|
+
* poll. Nothing to commit under a pattern is the ordinary state, not an error, so the pattern is
|
|
61
|
+
* dropped instead.
|
|
62
|
+
*
|
|
63
|
+
* This covers the empty directory as well as the missing one, and the two fail in different places:
|
|
64
|
+
* `git add` tolerates an existing-but-empty directory, and then `git commit` rejects it, because by
|
|
65
|
+
* then the pathspec has to match a file git knows about.
|
|
66
|
+
*/
|
|
67
|
+
export declare function pathspecsFor(files: readonly string[]): string[];
|
|
68
|
+
/** How often the committer looks for settled conversations. */
|
|
69
|
+
export declare const COMMIT_POLL_MS = 30000;
|
|
70
|
+
/** How long a conversation may keep changing before it is committed anyway. */
|
|
71
|
+
export declare const COMMIT_MAX_WAIT_MS: number;
|
|
72
|
+
/** What one attempt did, or why it did nothing. */
|
|
73
|
+
export type CommitOutcome = {
|
|
74
|
+
committed: true;
|
|
75
|
+
files: string[];
|
|
76
|
+
} | {
|
|
77
|
+
committed: false;
|
|
78
|
+
reason: string;
|
|
79
|
+
};
|
|
80
|
+
/** Whether a path exists. Injectable so the busy check is testable without real lock files. */
|
|
81
|
+
export type PathProbe = (path: string) => Promise<boolean>;
|
|
82
|
+
/** A {@link PathProbe} over `fs.access`. */
|
|
83
|
+
export declare function nodePathProbe(): PathProbe;
|
|
84
|
+
/**
|
|
85
|
+
* The commit message a batch writes. Names what moved, so the log line stands alone.
|
|
86
|
+
*
|
|
87
|
+
* Sessions are counted by run, not by file: one archived run is a `<id>.json` and a `<id>.jsonl`,
|
|
88
|
+
* and "2 sessions" for a single session would be a lie told by the batch's own commit message.
|
|
89
|
+
*/
|
|
90
|
+
export declare function commitMessage(files: string[]): string;
|
|
91
|
+
/**
|
|
92
|
+
* The conversation files with uncommitted changes, as repo-relative paths, sorted so the result is
|
|
93
|
+
* a stable fingerprint the debounce can compare across polls.
|
|
94
|
+
*
|
|
95
|
+
* `--porcelain` v1 is parsed rather than `--short` because its two status columns are fixed-width
|
|
96
|
+
* and its paths are quoted consistently. A rename (`R old -> new`) reports the destination, which
|
|
97
|
+
* is the path we would commit. Anything unreadable — not a repo, no git — reads as no changes.
|
|
98
|
+
*
|
|
99
|
+
* `-uall` is load-bearing, not a detail. By default git collapses a wholly-untracked directory into
|
|
100
|
+
* one entry (`?? .the-framework/conversations/`) instead of naming the files under it, which makes
|
|
101
|
+
* the fingerprint identical whether one conversation is being written or ten. The debounce compares
|
|
102
|
+
* fingerprints, so without this the idle window could never see a burst and would commit straight
|
|
103
|
+
* through the middle of one. Only a real repo shows this; a per-file fake does not.
|
|
104
|
+
*/
|
|
105
|
+
export declare function pendingConversations(cwd: string, git?: GitRunner): Promise<string[]>;
|
|
106
|
+
/**
|
|
107
|
+
* Why the repo is in no state to be committed into, or `undefined` when it is fine.
|
|
108
|
+
*
|
|
109
|
+
* The git dir is resolved through git rather than assumed to be `<cwd>/.git`, so this is right in a
|
|
110
|
+
* linked worktree, where `.git` is a file pointing elsewhere and the markers live in the real dir.
|
|
111
|
+
*/
|
|
112
|
+
export declare function gitBusy(cwd: string, git?: GitRunner, exists?: PathProbe): Promise<string | undefined>;
|
|
113
|
+
/**
|
|
114
|
+
* Stage and commit the pending conversations under `cwd`, scoped to {@link COMMITTED_PATHSPECS}.
|
|
115
|
+
*
|
|
116
|
+
* `add` before `commit` because a brand-new conversation is untracked, and `git commit -- <path>`
|
|
117
|
+
* only knows paths git already knows. Both are pathspec-scoped, so the staging is as narrow as the
|
|
118
|
+
* commit and the user's own staged work is neither swept in nor disturbed, and both are narrowed to
|
|
119
|
+
* the pathspecs that have something pending ({@link pathspecsFor}) — a pathspec matching nothing is
|
|
120
|
+
* a hard error to git, and "no conversation has been recorded here yet" is not an error at all.
|
|
121
|
+
*
|
|
122
|
+
* Never throws: this runs on a background tick with nothing to catch it.
|
|
123
|
+
*/
|
|
124
|
+
export declare function commitConversations(cwd: string, git?: GitRunner, exists?: PathProbe): Promise<CommitOutcome>;
|
|
125
|
+
/** A running committer; call {@link ConversationCommitter.stop} to end it. */
|
|
126
|
+
export interface ConversationCommitter {
|
|
127
|
+
stop: () => void;
|
|
128
|
+
/** Run one poll now. Exposed so the daemon and tests can drive it deterministically. */
|
|
129
|
+
poll: () => Promise<void>;
|
|
130
|
+
/**
|
|
131
|
+
* Commit every project's pending conversations now, skipping the idle window. For shutdown: the
|
|
132
|
+
* daemon is going away, so waiting for quiet would just defer the work to the next boot. Returns
|
|
133
|
+
* how many projects committed.
|
|
134
|
+
*/
|
|
135
|
+
flush: () => Promise<number>;
|
|
136
|
+
}
|
|
137
|
+
/** Options for {@link startConversationCommitter}. */
|
|
138
|
+
export interface ConversationCommitterOptions {
|
|
139
|
+
/** The projects to sweep each poll (the daemon passes the registry, mapped to summaries). */
|
|
140
|
+
projects: () => Promise<ProjectSummary[]>;
|
|
141
|
+
/** Poll cadence and idle window, ms. Default {@link COMMIT_POLL_MS}. */
|
|
142
|
+
intervalMs?: number;
|
|
143
|
+
/** Commit anyway once a project has been pending this long, ms. Default {@link COMMIT_MAX_WAIT_MS}. */
|
|
144
|
+
maxWaitMs?: number;
|
|
145
|
+
/** Injectable git (tests). */
|
|
146
|
+
git?: GitRunner;
|
|
147
|
+
/** Injectable existence probe for the busy check (tests). */
|
|
148
|
+
exists?: PathProbe;
|
|
149
|
+
/** Clock, injectable for the max-wait cap (tests). */
|
|
150
|
+
now?: () => number;
|
|
151
|
+
/** Where a committed batch is announced. */
|
|
152
|
+
log?: (message: string) => void;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Start committing settled conversations, and return the handle that stops it.
|
|
156
|
+
*
|
|
157
|
+
* The idle window is the poll itself: a project whose pending set is byte-identical to the previous
|
|
158
|
+
* poll's has stopped being written to, so its batch is committed. Anything still moving is recorded
|
|
159
|
+
* and reconsidered next time, unless it has been dirty past `maxWaitMs`, which forces it through.
|
|
160
|
+
*
|
|
161
|
+
* Forgiving throughout — a failed project scan, a busy repo or a rejected commit costs one window
|
|
162
|
+
* and is retried, never a throw. Runs immediately, then every `intervalMs`; the timer is unref'd so
|
|
163
|
+
* it never keeps the daemon alive past shutdown.
|
|
164
|
+
*/
|
|
165
|
+
export declare function startConversationCommitter(opts: ConversationCommitterOptions): ConversationCommitter;
|
|
166
|
+
//# sourceMappingURL=conversation-commit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-commit.d.ts","sourceRoot":"","sources":["../src/conversation-commit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAI7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAI7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,qGAAqG;AACrG,eAAO,MAAM,sBAAsB,iCAA8C,CAAA;AAEjF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,wCAAqD,CAAA;AAEnF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAAgD,CAAA;AAYjG;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAE/D;AAED,+DAA+D;AAC/D,eAAO,MAAM,cAAc,QAAS,CAAA;AAEpC,+EAA+E;AAC/E,eAAO,MAAM,kBAAkB,QAAa,CAAA;AAE5C,mDAAmD;AACnD,MAAM,MAAM,aAAa,GACrB;IAAE,SAAS,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,GACpC;IAAE,SAAS,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAExC,+FAA+F;AAC/F,MAAM,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;AAE1D,4CAA4C;AAC5C,wBAAgB,aAAa,IAAI,SAAS,CAQzC;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAQrD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,SAA2B,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAW3G;AA0BD;;;;;GAKG;AACH,wBAAsB,OAAO,CAC3B,GAAG,EAAE,MAAM,EACX,GAAG,GAAE,SAA2B,EAChC,MAAM,GAAE,SAA2B,GAClC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAU7B;AAKD;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,GAAG,GAAE,SAA2B,EAChC,MAAM,GAAE,SAA2B,GAClC,OAAO,CAAC,aAAa,CAAC,CAqBxB;AAED,8EAA8E;AAC9E,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB,wFAAwF;IACxF,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACzB;;;;OAIG;IACH,KAAK,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;CAC7B;AAED,sDAAsD;AACtD,MAAM,WAAW,4BAA4B;IAC3C,6FAA6F;IAC7F,QAAQ,EAAE,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC,CAAA;IACzC,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,uGAAuG;IACvG,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,8BAA8B;IAC9B,GAAG,CAAC,EAAE,SAAS,CAAA;IACf,6DAA6D;IAC7D,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,sDAAsD;IACtD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAClB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CAChC;AAeD;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,4BAA4B,GAAG,qBAAqB,CAiFpG"}
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
import { join } from 'node:path';
|
|
2
|
+
import { CONVERSATIONS_DIR } from './conversations.js';
|
|
3
|
+
import { SESSIONS_DIR } from './store/index.js';
|
|
4
|
+
import { THE_FRAMEWORK_DIR } from './framework-dir.js';
|
|
5
|
+
import { nodeGitRunner } from './project.js';
|
|
6
|
+
import { errorMessage } from './error-message.js';
|
|
7
|
+
/**
|
|
8
|
+
* Committing the conversations the daemon records (#912) into the project checkout.
|
|
9
|
+
*
|
|
10
|
+
* #908 made `.the-framework/conversations/<runId>.md` tracked files, and the paths that already
|
|
11
|
+
* commit pick them up: a run's worktree sweeps its own on teardown (`store/worktree.ts`). The main
|
|
12
|
+
* checkout has no such path — `install.ts` commits once at activation and nothing after — so a
|
|
13
|
+
* conversation held there sat as a working-tree change until a human happened to commit it. That
|
|
14
|
+
* is the one gap between "the chat is in Git" (#857) and "the chat reaches Git by itself".
|
|
15
|
+
*
|
|
16
|
+
* Two rules shape the whole module, both about writing into a repo somebody else is using.
|
|
17
|
+
*
|
|
18
|
+
* Path-scoped, never `git add -A`. The pathspec names the conversations directory and nothing
|
|
19
|
+
* else, the way `queue-promote.ts` names the queue file, so whatever the user has in progress
|
|
20
|
+
* cannot ride along in our commit. A pathspec commit also leaves their index alone: what they had
|
|
21
|
+
* staged is still staged afterwards. Scoped down further at commit time to the pathspecs that
|
|
22
|
+
* actually have something pending — see {@link pathspecsFor}.
|
|
23
|
+
*
|
|
24
|
+
* Debounced on an idle window rather than committed per turn. A chat turn is seconds apart, and a
|
|
25
|
+
* commit each would bury the project's real history under transcript noise. A poll that sees the
|
|
26
|
+
* same pending set twice running treats the conversation as settled and commits the batch; a burst
|
|
27
|
+
* keeps resetting it. {@link ConversationCommitterOptions.maxWaitMs} caps that, so a conversation
|
|
28
|
+
* that never goes idle still lands instead of being starved forever.
|
|
29
|
+
*
|
|
30
|
+
* Tolerates not being alone (the #605 question this waited on). One daemon per machine is the rule
|
|
31
|
+
* today (#393), but the committer never assumes it: a locked index or a rebase/merge in progress
|
|
32
|
+
* means somebody else is mid-operation, so it skips rather than commits into their work, and a
|
|
33
|
+
* failed commit is swallowed and retried on the next window. That way #605's eventual answer about
|
|
34
|
+
* who owns the chat bot does not invalidate any of this.
|
|
35
|
+
*/
|
|
36
|
+
/** The pathspec the conversations live under. Posix separators: it is a git pathspec, not a path. */
|
|
37
|
+
export const CONVERSATIONS_PATHSPEC = `${THE_FRAMEWORK_DIR}/${CONVERSATIONS_DIR}`;
|
|
38
|
+
/**
|
|
39
|
+
* The committed session archives (#1179), under every user's own directory.
|
|
40
|
+
*
|
|
41
|
+
* `:(glob)` magic so the `*` stops at a path separator — a plain pathspec wildcard matches `/` too,
|
|
42
|
+
* and would reach further down `.the-framework/` than this means to.
|
|
43
|
+
*
|
|
44
|
+
* The trailing `/**` is load-bearing, and its absence is silent: glob magic matches the pattern
|
|
45
|
+
* against each file's whole path rather than treating a directory as a prefix, so
|
|
46
|
+
* `.the-framework/*/sessions` matches no *file* and `git add` fails with "did not match any files"
|
|
47
|
+
* — a committer that commits nothing, every time. Only a real repo shows this.
|
|
48
|
+
*/
|
|
49
|
+
export const SESSIONS_PATHSPEC = `:(glob)${THE_FRAMEWORK_DIR}/*/${SESSIONS_DIR}/**`;
|
|
50
|
+
/**
|
|
51
|
+
* Everything this committer is scoped to. Both are records the daemon writes into the repo and
|
|
52
|
+
* nobody would think to commit by hand: the chat of a run (#908) and the run's own archived history
|
|
53
|
+
* (#1179). They share one debounce because they are written by the same events and a commit each
|
|
54
|
+
* would double the noise in the project's log.
|
|
55
|
+
*/
|
|
56
|
+
export const COMMITTED_PATHSPECS = [CONVERSATIONS_PATHSPEC, SESSIONS_PATHSPEC];
|
|
57
|
+
/**
|
|
58
|
+
* Which pending file belongs to which pathspec, so a pathspec with nothing under it can be left out
|
|
59
|
+
* of `add`/`commit` (see {@link pathspecsFor}). Kept beside the pathspecs themselves: a predicate
|
|
60
|
+
* that drifts from the pattern it mirrors would silently drop a file from every commit.
|
|
61
|
+
*/
|
|
62
|
+
const PATHSPEC_MEMBERSHIP = [
|
|
63
|
+
[CONVERSATIONS_PATHSPEC, file => file.startsWith(`${CONVERSATIONS_PATHSPEC}/`)],
|
|
64
|
+
[SESSIONS_PATHSPEC, file => file.startsWith(`${THE_FRAMEWORK_DIR}/`) && file.includes(`/${SESSIONS_DIR}/`)],
|
|
65
|
+
];
|
|
66
|
+
/**
|
|
67
|
+
* The subset of {@link COMMITTED_PATHSPECS} that `files` actually has something under.
|
|
68
|
+
*
|
|
69
|
+
* `git add` and `git commit` are all-or-nothing about their pathspecs: one that matches no file
|
|
70
|
+
* aborts the whole command with "pathspec ... did not match any files", so passing both patterns
|
|
71
|
+
* unconditionally means a project that has sessions but has never recorded a conversation — every
|
|
72
|
+
* project, until its first chat — fails to commit and puts that failure in the daemon log on every
|
|
73
|
+
* poll. Nothing to commit under a pattern is the ordinary state, not an error, so the pattern is
|
|
74
|
+
* dropped instead.
|
|
75
|
+
*
|
|
76
|
+
* This covers the empty directory as well as the missing one, and the two fail in different places:
|
|
77
|
+
* `git add` tolerates an existing-but-empty directory, and then `git commit` rejects it, because by
|
|
78
|
+
* then the pathspec has to match a file git knows about.
|
|
79
|
+
*/
|
|
80
|
+
export function pathspecsFor(files) {
|
|
81
|
+
return PATHSPEC_MEMBERSHIP.filter(([, holds]) => files.some(holds)).map(([pathspec]) => pathspec);
|
|
82
|
+
}
|
|
83
|
+
/** How often the committer looks for settled conversations. */
|
|
84
|
+
export const COMMIT_POLL_MS = 30_000;
|
|
85
|
+
/** How long a conversation may keep changing before it is committed anyway. */
|
|
86
|
+
export const COMMIT_MAX_WAIT_MS = 5 * 60_000;
|
|
87
|
+
/** A {@link PathProbe} over `fs.access`. */
|
|
88
|
+
export function nodePathProbe() {
|
|
89
|
+
return async (path) => {
|
|
90
|
+
const { access } = await import('node:fs/promises');
|
|
91
|
+
return access(path).then(() => true, () => false);
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* The commit message a batch writes. Names what moved, so the log line stands alone.
|
|
96
|
+
*
|
|
97
|
+
* Sessions are counted by run, not by file: one archived run is a `<id>.json` and a `<id>.jsonl`,
|
|
98
|
+
* and "2 sessions" for a single session would be a lie told by the batch's own commit message.
|
|
99
|
+
*/
|
|
100
|
+
export function commitMessage(files) {
|
|
101
|
+
const sessionFiles = files.filter(file => file.includes(`/${SESSIONS_DIR}/`));
|
|
102
|
+
const runs = new Set(sessionFiles.map(file => file.replace(/\.[^./]+$/, ''))).size;
|
|
103
|
+
const conversations = files.length - sessionFiles.length;
|
|
104
|
+
const parts = [];
|
|
105
|
+
if (conversations > 0)
|
|
106
|
+
parts.push(conversations === 1 ? 'a conversation' : `${conversations} conversations`);
|
|
107
|
+
if (runs > 0)
|
|
108
|
+
parts.push(runs === 1 ? 'a session' : `${runs} sessions`);
|
|
109
|
+
return `[The Framework] ${parts.join(' and ')}`;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* The conversation files with uncommitted changes, as repo-relative paths, sorted so the result is
|
|
113
|
+
* a stable fingerprint the debounce can compare across polls.
|
|
114
|
+
*
|
|
115
|
+
* `--porcelain` v1 is parsed rather than `--short` because its two status columns are fixed-width
|
|
116
|
+
* and its paths are quoted consistently. A rename (`R old -> new`) reports the destination, which
|
|
117
|
+
* is the path we would commit. Anything unreadable — not a repo, no git — reads as no changes.
|
|
118
|
+
*
|
|
119
|
+
* `-uall` is load-bearing, not a detail. By default git collapses a wholly-untracked directory into
|
|
120
|
+
* one entry (`?? .the-framework/conversations/`) instead of naming the files under it, which makes
|
|
121
|
+
* the fingerprint identical whether one conversation is being written or ten. The debounce compares
|
|
122
|
+
* fingerprints, so without this the idle window could never see a burst and would commit straight
|
|
123
|
+
* through the middle of one. Only a real repo shows this; a per-file fake does not.
|
|
124
|
+
*/
|
|
125
|
+
export async function pendingConversations(cwd, git = nodeGitRunner()) {
|
|
126
|
+
const out = await git(['status', '--porcelain', '-uall', '--', ...COMMITTED_PATHSPECS], cwd).catch(() => '');
|
|
127
|
+
const files = new Set();
|
|
128
|
+
for (const line of out.split('\n')) {
|
|
129
|
+
if (line.length < 4)
|
|
130
|
+
continue;
|
|
131
|
+
// Columns 0-1 are the status codes, 2 is a space, the path starts at 3.
|
|
132
|
+
const entry = line.slice(3);
|
|
133
|
+
const arrow = entry.indexOf(' -> ');
|
|
134
|
+
files.add(unquotePath(arrow === -1 ? entry : entry.slice(arrow + ' -> '.length)));
|
|
135
|
+
}
|
|
136
|
+
return [...files].sort();
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Undo git's C-style quoting of a path holding non-ASCII or special characters. Only the escapes
|
|
140
|
+
* git actually emits are handled; anything else is left as written rather than mangled.
|
|
141
|
+
*/
|
|
142
|
+
function unquotePath(entry) {
|
|
143
|
+
if (!entry.startsWith('"') || !entry.endsWith('"'))
|
|
144
|
+
return entry;
|
|
145
|
+
return entry
|
|
146
|
+
.slice(1, -1)
|
|
147
|
+
.replace(/\\([\\"])/g, '$1')
|
|
148
|
+
.replace(/\\t/g, '\t')
|
|
149
|
+
.replace(/\\n/g, '\n');
|
|
150
|
+
}
|
|
151
|
+
/** The markers that mean another git operation owns this repo right now. */
|
|
152
|
+
const BUSY_MARKERS = [
|
|
153
|
+
['index.lock', 'another git process holds the index lock'],
|
|
154
|
+
['rebase-merge', 'a rebase is in progress'],
|
|
155
|
+
['rebase-apply', 'a rebase is in progress'],
|
|
156
|
+
['MERGE_HEAD', 'a merge is in progress'],
|
|
157
|
+
['CHERRY_PICK_HEAD', 'a cherry-pick is in progress'],
|
|
158
|
+
['REVERT_HEAD', 'a revert is in progress'],
|
|
159
|
+
['BISECT_LOG', 'a bisect is in progress'],
|
|
160
|
+
];
|
|
161
|
+
/**
|
|
162
|
+
* Why the repo is in no state to be committed into, or `undefined` when it is fine.
|
|
163
|
+
*
|
|
164
|
+
* The git dir is resolved through git rather than assumed to be `<cwd>/.git`, so this is right in a
|
|
165
|
+
* linked worktree, where `.git` is a file pointing elsewhere and the markers live in the real dir.
|
|
166
|
+
*/
|
|
167
|
+
export async function gitBusy(cwd, git = nodeGitRunner(), exists = nodePathProbe()) {
|
|
168
|
+
const gitDir = await git(['rev-parse', '--absolute-git-dir'], cwd).then(out => out.trim(), () => '');
|
|
169
|
+
if (!gitDir)
|
|
170
|
+
return 'not a git repository';
|
|
171
|
+
for (const [name, reason] of BUSY_MARKERS) {
|
|
172
|
+
if (await exists(join(gitDir, name)))
|
|
173
|
+
return reason;
|
|
174
|
+
}
|
|
175
|
+
return undefined;
|
|
176
|
+
}
|
|
177
|
+
/** The everyday no-op outcome. Named so the poller can tell it apart from a real failure. */
|
|
178
|
+
const NOTHING_PENDING = 'no conversation changes';
|
|
179
|
+
/**
|
|
180
|
+
* Stage and commit the pending conversations under `cwd`, scoped to {@link COMMITTED_PATHSPECS}.
|
|
181
|
+
*
|
|
182
|
+
* `add` before `commit` because a brand-new conversation is untracked, and `git commit -- <path>`
|
|
183
|
+
* only knows paths git already knows. Both are pathspec-scoped, so the staging is as narrow as the
|
|
184
|
+
* commit and the user's own staged work is neither swept in nor disturbed, and both are narrowed to
|
|
185
|
+
* the pathspecs that have something pending ({@link pathspecsFor}) — a pathspec matching nothing is
|
|
186
|
+
* a hard error to git, and "no conversation has been recorded here yet" is not an error at all.
|
|
187
|
+
*
|
|
188
|
+
* Never throws: this runs on a background tick with nothing to catch it.
|
|
189
|
+
*/
|
|
190
|
+
export async function commitConversations(cwd, git = nodeGitRunner(), exists = nodePathProbe()) {
|
|
191
|
+
const busy = await gitBusy(cwd, git, exists);
|
|
192
|
+
if (busy)
|
|
193
|
+
return { committed: false, reason: busy };
|
|
194
|
+
const files = await pendingConversations(cwd, git);
|
|
195
|
+
if (files.length === 0)
|
|
196
|
+
return { committed: false, reason: NOTHING_PENDING };
|
|
197
|
+
// Only the pathspecs that have something pending, or git aborts on the one that matches nothing.
|
|
198
|
+
// An empty result should be unreachable — `status` was scoped to these same pathspecs — but an
|
|
199
|
+
// empty pathspec list means "everything", which would sweep the user's whole checkout into our
|
|
200
|
+
// commit, so it reads as nothing pending rather than as a commit.
|
|
201
|
+
const pathspecs = pathspecsFor(files);
|
|
202
|
+
if (pathspecs.length === 0)
|
|
203
|
+
return { committed: false, reason: NOTHING_PENDING };
|
|
204
|
+
try {
|
|
205
|
+
await git(['add', '--', ...pathspecs], cwd);
|
|
206
|
+
await git(['commit', '-m', commitMessage(files), '--', ...pathspecs], cwd);
|
|
207
|
+
return { committed: true, files };
|
|
208
|
+
}
|
|
209
|
+
catch (err) {
|
|
210
|
+
return { committed: false, reason: errorMessage(err) };
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Start committing settled conversations, and return the handle that stops it.
|
|
215
|
+
*
|
|
216
|
+
* The idle window is the poll itself: a project whose pending set is byte-identical to the previous
|
|
217
|
+
* poll's has stopped being written to, so its batch is committed. Anything still moving is recorded
|
|
218
|
+
* and reconsidered next time, unless it has been dirty past `maxWaitMs`, which forces it through.
|
|
219
|
+
*
|
|
220
|
+
* Forgiving throughout — a failed project scan, a busy repo or a rejected commit costs one window
|
|
221
|
+
* and is retried, never a throw. Runs immediately, then every `intervalMs`; the timer is unref'd so
|
|
222
|
+
* it never keeps the daemon alive past shutdown.
|
|
223
|
+
*/
|
|
224
|
+
export function startConversationCommitter(opts) {
|
|
225
|
+
const git = opts.git ?? nodeGitRunner();
|
|
226
|
+
const exists = opts.exists ?? nodePathProbe();
|
|
227
|
+
const now = opts.now ?? Date.now;
|
|
228
|
+
const intervalMs = opts.intervalMs ?? COMMIT_POLL_MS;
|
|
229
|
+
const maxWaitMs = opts.maxWaitMs ?? COMMIT_MAX_WAIT_MS;
|
|
230
|
+
const pending = new Map();
|
|
231
|
+
let stopped = false;
|
|
232
|
+
let running = false;
|
|
233
|
+
const poll = async () => {
|
|
234
|
+
if (stopped || running)
|
|
235
|
+
return;
|
|
236
|
+
running = true;
|
|
237
|
+
try {
|
|
238
|
+
const projects = await opts.projects().catch(() => []);
|
|
239
|
+
const seen = new Set();
|
|
240
|
+
for (const project of projects) {
|
|
241
|
+
if (stopped)
|
|
242
|
+
break;
|
|
243
|
+
seen.add(project.path);
|
|
244
|
+
const files = await pendingConversations(project.path, git).catch(() => []);
|
|
245
|
+
if (files.length === 0) {
|
|
246
|
+
pending.delete(project.path);
|
|
247
|
+
continue;
|
|
248
|
+
}
|
|
249
|
+
const fingerprint = files.join('\n');
|
|
250
|
+
const previous = pending.get(project.path);
|
|
251
|
+
const since = previous?.since ?? now();
|
|
252
|
+
// Settled (nothing changed since the last poll), or dirty long enough that waiting for
|
|
253
|
+
// quiet is no longer worth it.
|
|
254
|
+
const settled = previous?.fingerprint === fingerprint || now() - since >= maxWaitMs;
|
|
255
|
+
const loggedReason = previous?.loggedReason;
|
|
256
|
+
if (!settled) {
|
|
257
|
+
pending.set(project.path, { fingerprint, since, loggedReason });
|
|
258
|
+
continue;
|
|
259
|
+
}
|
|
260
|
+
const outcome = await commitConversations(project.path, git, exists);
|
|
261
|
+
if (outcome.committed) {
|
|
262
|
+
pending.delete(project.path);
|
|
263
|
+
opts.log?.(`[framework] committed ${outcome.files.length} conversation(s) in ${project.name}`);
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
// A busy repo or a rejected commit keeps its place, so the next window retries it
|
|
267
|
+
// rather than starting the idle count over.
|
|
268
|
+
const reason = outcome.reason === NOTHING_PENDING ? undefined : outcome.reason;
|
|
269
|
+
// Announced on change only: this is a poll, so logging every failure would repeat the
|
|
270
|
+
// same line forever while a project stays stuck.
|
|
271
|
+
if (reason !== undefined && reason !== loggedReason) {
|
|
272
|
+
opts.log?.(`[framework] conversation commit failed in ${project.name}: ${reason}`);
|
|
273
|
+
}
|
|
274
|
+
pending.set(project.path, { fingerprint, since, loggedReason: reason });
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
// Drop state for projects that went away, so the map cannot grow without bound.
|
|
278
|
+
for (const path of [...pending.keys()])
|
|
279
|
+
if (!seen.has(path))
|
|
280
|
+
pending.delete(path);
|
|
281
|
+
}
|
|
282
|
+
finally {
|
|
283
|
+
running = false;
|
|
284
|
+
}
|
|
285
|
+
};
|
|
286
|
+
const flush = async () => {
|
|
287
|
+
let committed = 0;
|
|
288
|
+
for (const project of await opts.projects().catch(() => [])) {
|
|
289
|
+
const outcome = await commitConversations(project.path, git, exists);
|
|
290
|
+
if (outcome.committed) {
|
|
291
|
+
pending.delete(project.path);
|
|
292
|
+
committed++;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
return committed;
|
|
296
|
+
};
|
|
297
|
+
void poll();
|
|
298
|
+
const timer = setInterval(() => void poll(), intervalMs);
|
|
299
|
+
timer.unref?.();
|
|
300
|
+
return {
|
|
301
|
+
stop: () => {
|
|
302
|
+
stopped = true;
|
|
303
|
+
clearInterval(timer);
|
|
304
|
+
},
|
|
305
|
+
poll,
|
|
306
|
+
flush,
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
//# sourceMappingURL=conversation-commit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-commit.js","sourceRoot":"","sources":["../src/conversation-commit.ts"],"names":[],"mappings":"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"}
|