@openagt/dashboard 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -6
- package/dist/agent-view.d.ts +3 -3
- package/dist/bridge-browser.d.ts +4 -4
- package/dist/bridge-browser.d.ts.map +1 -1
- package/dist/bridge-browser.js +8 -8
- package/dist/bridge-browser.js.map +1 -1
- package/dist/built-in.d.ts +13 -4
- package/dist/built-in.d.ts.map +1 -1
- package/dist/built-in.js +45 -4
- package/dist/built-in.js.map +1 -1
- package/dist/chrome-extension/background.js +11 -11
- package/dist/chrome-extension/content.js +37 -37
- package/dist/chrome-extension/driver-plan.js +1 -1
- package/dist/chrome-extension/fingerprint.js +1 -1
- package/dist/chrome-extension/manifest.json +3 -3
- package/dist/chrome-extension/options.html +4 -4
- package/dist/chrome-extension/options.js +4 -4
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +7 -7
- package/dist/cli.js.map +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/client.js +2 -2
- package/dist/cloud-run-state.d.ts +1 -1
- package/dist/cloud-scratch-refs.js +7 -7
- package/dist/cloud-scratch-refs.js.map +1 -1
- package/dist/cloud-work.js +2 -2
- package/dist/daemon-runtime.d.ts +5 -4
- package/dist/daemon-runtime.d.ts.map +1 -1
- package/dist/daemon-runtime.js +59 -9
- package/dist/daemon-runtime.js.map +1 -1
- package/dist/daemon-services.d.ts +4 -3
- package/dist/daemon-services.d.ts.map +1 -1
- package/dist/daemon-services.js +14 -8
- package/dist/daemon-services.js.map +1 -1
- package/dist/daemon-tick.js +1 -1
- package/dist/daemon.d.ts +1 -12
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +9 -32
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/agent-handoff.d.ts +4 -4
- package/dist/dashboard/agent-handoff.js +7 -7
- package/dist/dashboard/agent-handoff.js.map +1 -1
- package/dist/dashboard/bridge-endpoints.d.ts +3 -3
- package/dist/dashboard/bridge-endpoints.js +3 -3
- package/dist/dashboard/content-type.js +1 -1
- package/dist/dashboard/docs.d.ts +1 -1
- package/dist/dashboard/docs.js +1 -1
- package/dist/dashboard/git-status.d.ts +1 -1
- package/dist/dashboard/index.d.ts +1 -1
- package/dist/dashboard/index.d.ts.map +1 -1
- package/dist/dashboard/interventions.d.ts +2 -2
- package/dist/dashboard/open-in-app.d.ts +3 -3
- package/dist/dashboard/open-in-app.js +4 -4
- package/dist/dashboard/open-questions.d.ts +2 -2
- package/dist/dashboard/projects.d.ts +6 -5
- package/dist/dashboard/projects.d.ts.map +1 -1
- package/dist/dashboard/projects.js.map +1 -1
- package/dist/dashboard/pull-requests.d.ts +5 -5
- package/dist/dashboard/pull-requests.d.ts.map +1 -1
- package/dist/dashboard/pull-requests.js +2 -2
- package/dist/dashboard/pull-requests.js.map +1 -1
- package/dist/dashboard/relay-endpoints.d.ts +3 -3
- package/dist/dashboard/relay-endpoints.js +1 -1
- package/dist/dashboard/remote-run.d.ts +5 -5
- package/dist/dashboard/remote-run.js +3 -3
- package/dist/dashboard/rpc-serve.d.ts +7 -4
- package/dist/dashboard/rpc-serve.d.ts.map +1 -1
- package/dist/dashboard/rpc-serve.js.map +1 -1
- package/dist/dashboard/run-inbox.d.ts +2 -2
- package/dist/dashboard/run-inbox.js +4 -4
- package/dist/dashboard/run-inbox.js.map +1 -1
- package/dist/dashboard/server.d.ts +6 -4
- package/dist/dashboard/server.d.ts.map +1 -1
- package/dist/dashboard/server.js +3 -2
- package/dist/dashboard/server.js.map +1 -1
- package/dist/dashboard/static.js +1 -1
- package/dist/dashboard/types.d.ts +29 -3
- package/dist/dashboard/types.d.ts.map +1 -1
- package/dist/dashboard/web-start-endpoints.d.ts +1 -1
- package/dist/dashboard/web-start-endpoints.d.ts.map +1 -1
- package/dist/dashboard/web-start-endpoints.js +1 -1
- package/dist/dashboard/web-start-endpoints.js.map +1 -1
- package/dist/dashboard-bundle/assets/{main-om0WOAku.js → main-B98UOA3_.js} +48 -48
- package/dist/dashboard-bundle/assets/main-ByRjbCiA.css +2 -0
- package/dist/dashboard-bundle/assets/{module-jASZmfSB.js → module-v213KWfH.js} +4 -4
- package/dist/dashboard-bundle/host/module.js +1 -1
- package/dist/dashboard-bundle/index.html +6 -6
- package/dist/dashboard-rpc/context.d.ts +2 -0
- package/dist/dashboard-rpc/context.d.ts.map +1 -1
- package/dist/dashboard-rpc/context.js +4 -0
- package/dist/dashboard-rpc/context.js.map +1 -1
- package/dist/dashboard-rpc/control.d.ts +1 -1
- package/dist/dashboard-rpc/control.js +3 -3
- package/dist/dashboard-rpc/control.js.map +1 -1
- package/dist/dashboard-rpc/events.d.ts +3 -3
- package/dist/dashboard-rpc/index.d.ts +1 -1
- package/dist/dashboard-rpc/index.d.ts.map +1 -1
- package/dist/dashboard-rpc/index.js +1 -1
- package/dist/dashboard-rpc/index.js.map +1 -1
- package/dist/dashboard-rpc/modules.d.ts +8 -6
- package/dist/dashboard-rpc/modules.d.ts.map +1 -1
- package/dist/dashboard-rpc/modules.js +8 -6
- package/dist/dashboard-rpc/modules.js.map +1 -1
- package/dist/dashboard-rpc/preferences.d.ts +2 -2
- package/dist/dashboard-rpc/preferences.d.ts.map +1 -1
- package/dist/dashboard-rpc/preferences.js +2 -2
- package/dist/dashboard-rpc/preferences.js.map +1 -1
- package/dist/dashboard-rpc/projects.d.ts +29 -3
- package/dist/dashboard-rpc/projects.d.ts.map +1 -1
- package/dist/dashboard-rpc/projects.js +49 -7
- package/dist/dashboard-rpc/projects.js.map +1 -1
- package/dist/dashboard-rpc/reads.d.ts +3 -3
- package/dist/dashboard-rpc/reads.js +1 -1
- package/dist/dashboard-rpc/test-context.d.ts.map +1 -1
- package/dist/dashboard-rpc/test-context.js +4 -3
- package/dist/dashboard-rpc/test-context.js.map +1 -1
- package/dist/event-stream.d.ts +1 -1
- package/dist/event-stream.js +1 -1
- package/dist/events.d.ts +8 -8
- package/dist/events.d.ts.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/install.d.ts +9 -7
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +28 -14
- package/dist/install.js.map +1 -1
- package/dist/module-server.d.ts +1 -1
- package/dist/module-types/dashboard/lib/route.d.ts +2 -1
- package/dist/module-types/dashboard/lib/use-modules.d.ts +4 -3
- package/dist/module-types/dashboard/module/index.d.ts +5 -5
- package/dist/module-types/src/agent-view.d.ts +3 -3
- package/dist/module-types/src/bridge-browser.d.ts +4 -4
- package/dist/module-types/src/built-in.d.ts +13 -4
- package/dist/module-types/src/client.d.ts +1 -1
- package/dist/module-types/src/cloud-run-state.d.ts +1 -1
- package/dist/module-types/src/dashboard/agent-handoff.d.ts +4 -4
- package/dist/module-types/src/dashboard/bridge-endpoints.d.ts +3 -3
- package/dist/module-types/src/dashboard/docs.d.ts +1 -1
- package/dist/module-types/src/dashboard/git-status.d.ts +1 -1
- package/dist/module-types/src/dashboard/interventions.d.ts +2 -2
- package/dist/module-types/src/dashboard/open-in-app.d.ts +3 -3
- package/dist/module-types/src/dashboard/open-questions.d.ts +2 -2
- package/dist/module-types/src/dashboard/projects.d.ts +6 -5
- package/dist/module-types/src/dashboard/pull-requests.d.ts +5 -5
- package/dist/module-types/src/dashboard/remote-run.d.ts +5 -5
- package/dist/module-types/src/dashboard/rpc-serve.d.ts +7 -4
- package/dist/module-types/src/dashboard/run-inbox.d.ts +2 -2
- package/dist/module-types/src/dashboard/types.d.ts +29 -3
- package/dist/module-types/src/dashboard-rpc/context.d.ts +2 -0
- package/dist/module-types/src/dashboard-rpc/control.d.ts +1 -1
- package/dist/module-types/src/dashboard-rpc/events.d.ts +3 -3
- package/dist/module-types/src/dashboard-rpc/index.d.ts +1 -1
- package/dist/module-types/src/dashboard-rpc/modules.d.ts +8 -6
- package/dist/module-types/src/dashboard-rpc/preferences.d.ts +2 -2
- package/dist/module-types/src/dashboard-rpc/projects.d.ts +29 -3
- package/dist/module-types/src/dashboard-rpc/reads.d.ts +3 -3
- package/dist/module-types/src/event-stream.d.ts +1 -1
- package/dist/module-types/src/events.d.ts +8 -8
- package/dist/module-types/src/index.d.ts +3 -2
- package/dist/module-types/src/open-choices.d.ts +2 -2
- package/dist/module-types/src/{framework-dir.d.ts → openagent-dir.d.ts} +2 -2
- package/dist/module-types/src/openagent-gitignore.d.ts +11 -0
- package/dist/module-types/src/project-commands.d.ts +1 -1
- package/dist/module-types/src/project-errors.d.ts +11 -7
- package/dist/module-types/src/project-hooks.d.ts +4 -4
- package/dist/module-types/src/project-modules.d.ts +5 -5
- package/dist/module-types/src/project-presets.d.ts +4 -4
- package/dist/module-types/src/project.d.ts +6 -6
- package/dist/module-types/src/publish-levels.d.ts +4 -4
- package/dist/module-types/src/quota-boundary.d.ts +2 -2
- package/dist/module-types/src/registry.d.ts +13 -7
- package/dist/module-types/src/store/agent-checkout.d.ts +1 -1
- package/dist/module-types/src/store/agent-store.d.ts +6 -6
- package/dist/module-types/src/store/branches.d.ts +7 -7
- package/dist/module-types/src/store/git-host.d.ts +7 -7
- package/dist/module-types/src/store/provided.d.ts +3 -3
- package/dist/module-types/src/store/queue.d.ts +8 -8
- package/dist/module-types/src/store/repository.d.ts +2 -2
- package/dist/module-types/src/store/run-record.d.ts +10 -10
- package/dist/module-types/src/store/runs.d.ts +6 -6
- package/dist/module-types/src/store/tickets.d.ts +7 -7
- package/dist/module-types/src/terminal.d.ts +3 -3
- package/dist/open-choices.d.ts +2 -2
- package/dist/{framework-dir.js → openagent-dir.d.ts} +3 -3
- package/dist/openagent-dir.d.ts.map +1 -0
- package/dist/{framework-dir.d.ts → openagent-dir.js} +3 -3
- package/dist/openagent-dir.js.map +1 -0
- package/dist/openagent-gitignore.d.ts +12 -0
- package/dist/openagent-gitignore.d.ts.map +1 -0
- package/dist/openagent-gitignore.js +19 -0
- package/dist/openagent-gitignore.js.map +1 -0
- package/dist/pick-directory.js +2 -2
- package/dist/pick-directory.js.map +1 -1
- package/dist/project-commands.d.ts +1 -1
- package/dist/project-commands.js +1 -1
- package/dist/project-errors.d.ts +11 -7
- package/dist/project-errors.d.ts.map +1 -1
- package/dist/project-errors.js +10 -8
- package/dist/project-errors.js.map +1 -1
- package/dist/project-hooks.d.ts +4 -4
- package/dist/project-hooks.d.ts.map +1 -1
- package/dist/project-hooks.js +8 -8
- package/dist/project-hooks.js.map +1 -1
- package/dist/project-modules.d.ts +5 -5
- package/dist/project-modules.js +2 -2
- package/dist/project-presets.d.ts +4 -4
- package/dist/project-presets.d.ts.map +1 -1
- package/dist/project-presets.js +9 -9
- package/dist/project-presets.js.map +1 -1
- package/dist/project.d.ts +6 -6
- package/dist/project.js +6 -6
- package/dist/publish-levels.d.ts +4 -4
- package/dist/publish-levels.d.ts.map +1 -1
- package/dist/publish-levels.js +7 -5
- package/dist/publish-levels.js.map +1 -1
- package/dist/quota-boundary.d.ts +2 -2
- package/dist/quota-boundary.js +2 -2
- package/dist/registry.d.ts +13 -7
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +19 -3
- package/dist/registry.js.map +1 -1
- package/dist/remove-files.d.ts +24 -0
- package/dist/remove-files.d.ts.map +1 -0
- package/dist/remove-files.js +98 -0
- package/dist/remove-files.js.map +1 -0
- package/dist/store/agent-checkout.d.ts +1 -1
- package/dist/store/agent-checkout.js +3 -3
- package/dist/store/agent-checkout.js.map +1 -1
- package/dist/store/agent-store.d.ts +6 -6
- package/dist/store/agent-store.js +8 -8
- package/dist/store/agent-store.js.map +1 -1
- package/dist/store/branches.d.ts +7 -7
- package/dist/store/branches.d.ts.map +1 -1
- package/dist/store/branches.js +1 -1
- package/dist/store/branches.js.map +1 -1
- package/dist/store/git-host.d.ts +7 -7
- package/dist/store/git-host.d.ts.map +1 -1
- package/dist/store/git-host.js +1 -1
- package/dist/store/git-host.js.map +1 -1
- package/dist/store/provided.d.ts +3 -3
- package/dist/store/provided.d.ts.map +1 -1
- package/dist/store/provided.js +3 -3
- package/dist/store/provided.js.map +1 -1
- package/dist/store/queue.d.ts +8 -8
- package/dist/store/queue.d.ts.map +1 -1
- package/dist/store/queue.js +1 -1
- package/dist/store/queue.js.map +1 -1
- package/dist/store/repository.d.ts +2 -2
- package/dist/store/run-record.d.ts +10 -10
- package/dist/store/run-record.d.ts.map +1 -1
- package/dist/store/run-record.js +7 -7
- package/dist/store/run-record.js.map +1 -1
- package/dist/store/runs.d.ts +6 -6
- package/dist/store/runs.d.ts.map +1 -1
- package/dist/store/runs.js +2 -2
- package/dist/store/runs.js.map +1 -1
- package/dist/store/tickets.d.ts +7 -7
- package/dist/store/tickets.d.ts.map +1 -1
- package/dist/store/tickets.js +1 -1
- package/dist/store/tickets.js.map +1 -1
- package/dist/terminal.d.ts +3 -3
- package/dist/terminal.js +3 -3
- package/package.json +19 -19
- package/dist/agent-archive.d.ts +0 -35
- package/dist/agent-archive.d.ts.map +0 -1
- package/dist/agent-archive.js +0 -67
- package/dist/agent-archive.js.map +0 -1
- package/dist/agent-commit.d.ts +0 -140
- package/dist/agent-commit.d.ts.map +0 -1
- package/dist/agent-commit.js +0 -254
- package/dist/agent-commit.js.map +0 -1
- package/dist/agent-driver.d.ts +0 -28
- package/dist/agent-driver.d.ts.map +0 -1
- package/dist/agent-driver.js +0 -18
- package/dist/agent-driver.js.map +0 -1
- package/dist/agent-location.d.ts +0 -11
- package/dist/agent-location.d.ts.map +0 -1
- package/dist/agent-location.js +0 -10
- package/dist/agent-location.js.map +0 -1
- package/dist/agent-messages.d.ts +0 -55
- package/dist/agent-messages.d.ts.map +0 -1
- package/dist/agent-messages.js +0 -73
- package/dist/agent-messages.js.map +0 -1
- package/dist/agent-names.d.ts +0 -24
- package/dist/agent-names.d.ts.map +0 -1
- package/dist/agent-names.js +0 -33
- package/dist/agent-names.js.map +0 -1
- package/dist/agent-options.d.ts +0 -45
- package/dist/agent-options.d.ts.map +0 -1
- package/dist/agent-options.js +0 -83
- package/dist/agent-options.js.map +0 -1
- package/dist/agent-spec.d.ts +0 -56
- package/dist/agent-spec.d.ts.map +0 -1
- package/dist/agent-spec.js +0 -56
- package/dist/agent-spec.js.map +0 -1
- package/dist/agent-telemetry.d.ts +0 -88
- package/dist/agent-telemetry.d.ts.map +0 -1
- package/dist/agent-telemetry.js +0 -97
- package/dist/agent-telemetry.js.map +0 -1
- package/dist/agent.d.ts +0 -113
- package/dist/agent.d.ts.map +0 -1
- package/dist/agent.js +0 -168
- package/dist/agent.js.map +0 -1
- package/dist/archived-agent-patch.d.ts +0 -14
- package/dist/archived-agent-patch.d.ts.map +0 -1
- package/dist/archived-agent-patch.js +0 -22
- package/dist/archived-agent-patch.js.map +0 -1
- package/dist/auto-pm.d.ts +0 -538
- package/dist/auto-pm.d.ts.map +0 -1
- package/dist/auto-pm.js +0 -707
- package/dist/auto-pm.js.map +0 -1
- package/dist/await-gate.d.ts +0 -184
- package/dist/await-gate.d.ts.map +0 -1
- package/dist/await-gate.js +0 -252
- package/dist/await-gate.js.map +0 -1
- package/dist/branch-links-pass.d.ts +0 -15
- package/dist/branch-links-pass.d.ts.map +0 -1
- package/dist/branch-links-pass.js +0 -13
- package/dist/branch-links-pass.js.map +0 -1
- package/dist/branch-links.d.ts +0 -53
- package/dist/branch-links.d.ts.map +0 -1
- package/dist/branch-links.js +0 -94
- package/dist/branch-links.js.map +0 -1
- package/dist/branch-names.d.ts +0 -57
- package/dist/branch-names.d.ts.map +0 -1
- package/dist/branch-names.js +0 -72
- package/dist/branch-names.js.map +0 -1
- package/dist/ci-watch.d.ts +0 -123
- package/dist/ci-watch.d.ts.map +0 -1
- package/dist/ci-watch.js +0 -228
- package/dist/ci-watch.js.map +0 -1
- package/dist/claude-trust.d.ts +0 -16
- package/dist/claude-trust.d.ts.map +0 -1
- package/dist/claude-trust.js +0 -72
- package/dist/claude-trust.js.map +0 -1
- package/dist/cli-exec.d.ts +0 -36
- package/dist/cli-exec.d.ts.map +0 -1
- package/dist/cli-exec.js +0 -44
- package/dist/cli-exec.js.map +0 -1
- package/dist/closing-keywords.d.ts +0 -28
- package/dist/closing-keywords.d.ts.map +0 -1
- package/dist/closing-keywords.js +0 -49
- package/dist/closing-keywords.js.map +0 -1
- package/dist/config-layers.d.ts +0 -62
- package/dist/config-layers.d.ts.map +0 -1
- package/dist/config-layers.js +0 -70
- package/dist/config-layers.js.map +0 -1
- package/dist/config.d.ts +0 -54
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -78
- package/dist/config.js.map +0 -1
- package/dist/consumption-guard.d.ts +0 -53
- package/dist/consumption-guard.d.ts.map +0 -1
- package/dist/consumption-guard.js +0 -69
- package/dist/consumption-guard.js.map +0 -1
- package/dist/control.d.ts +0 -75
- package/dist/control.d.ts.map +0 -1
- package/dist/control.js +0 -68
- package/dist/control.js.map +0 -1
- package/dist/conversation-commit.d.ts +0 -166
- package/dist/conversation-commit.d.ts.map +0 -1
- package/dist/conversation-commit.js +0 -309
- package/dist/conversation-commit.js.map +0 -1
- package/dist/conversations.d.ts +0 -93
- package/dist/conversations.d.ts.map +0 -1
- package/dist/conversations.js +0 -176
- package/dist/conversations.js.map +0 -1
- package/dist/daemon-writes.d.ts +0 -33
- package/dist/daemon-writes.d.ts.map +0 -1
- package/dist/daemon-writes.js +0 -45
- package/dist/daemon-writes.js.map +0 -1
- package/dist/dashboard/agent-tree.d.ts +0 -106
- package/dist/dashboard/agent-tree.d.ts.map +0 -1
- package/dist/dashboard/agent-tree.js +0 -180
- package/dist/dashboard/agent-tree.js.map +0 -1
- package/dist/dashboard/browser-proxy.d.ts +0 -41
- package/dist/dashboard/browser-proxy.d.ts.map +0 -1
- package/dist/dashboard/browser-proxy.js +0 -96
- package/dist/dashboard/browser-proxy.js.map +0 -1
- package/dist/dashboard/discord-webhook.d.ts +0 -17
- package/dist/dashboard/discord-webhook.d.ts.map +0 -1
- package/dist/dashboard/discord-webhook.js +0 -36
- package/dist/dashboard/discord-webhook.js.map +0 -1
- package/dist/dashboard/file-diff.d.ts +0 -67
- package/dist/dashboard/file-diff.d.ts.map +0 -1
- package/dist/dashboard/file-diff.js +0 -132
- package/dist/dashboard/file-diff.js.map +0 -1
- package/dist/dashboard/file-read.d.ts +0 -42
- package/dist/dashboard/file-read.d.ts.map +0 -1
- package/dist/dashboard/file-read.js +0 -69
- package/dist/dashboard/file-read.js.map +0 -1
- package/dist/dashboard/file-status.d.ts +0 -21
- package/dist/dashboard/file-status.d.ts.map +0 -1
- package/dist/dashboard/file-status.js +0 -37
- package/dist/dashboard/file-status.js.map +0 -1
- package/dist/dashboard/gh.d.ts +0 -131
- package/dist/dashboard/gh.d.ts.map +0 -1
- package/dist/dashboard/gh.js +0 -150
- package/dist/dashboard/gh.js.map +0 -1
- package/dist/dashboard/github.d.ts +0 -11
- package/dist/dashboard/github.d.ts.map +0 -1
- package/dist/dashboard/github.js +0 -33
- package/dist/dashboard/github.js.map +0 -1
- package/dist/dashboard/run-handoff.d.ts +0 -311
- package/dist/dashboard/run-handoff.d.ts.map +0 -1
- package/dist/dashboard/run-handoff.js +0 -485
- package/dist/dashboard/run-handoff.js.map +0 -1
- package/dist/dashboard/scheduler-state.d.ts +0 -73
- package/dist/dashboard/scheduler-state.d.ts.map +0 -1
- package/dist/dashboard/scheduler-state.js +0 -120
- package/dist/dashboard/scheduler-state.js.map +0 -1
- package/dist/dashboard/subagent-settings.d.ts +0 -26
- package/dist/dashboard/subagent-settings.d.ts.map +0 -1
- package/dist/dashboard/subagent-settings.js +0 -52
- package/dist/dashboard/subagent-settings.js.map +0 -1
- package/dist/dashboard/telefunc-serve.d.ts +0 -118
- package/dist/dashboard/telefunc-serve.d.ts.map +0 -1
- package/dist/dashboard/telefunc-serve.js +0 -108
- package/dist/dashboard/telefunc-serve.js.map +0 -1
- package/dist/dashboard/tickets.d.ts +0 -29
- package/dist/dashboard/tickets.d.ts.map +0 -1
- package/dist/dashboard/tickets.js +0 -38
- package/dist/dashboard/tickets.js.map +0 -1
- package/dist/dashboard/widget-serve.d.ts +0 -15
- package/dist/dashboard/widget-serve.d.ts.map +0 -1
- package/dist/dashboard/widget-serve.js +0 -45
- package/dist/dashboard/widget-serve.js.map +0 -1
- package/dist/dashboard-bundle/assets/main-B3HghPQy.css +0 -2
- package/dist/dashboard-client/assets/chunks/chunk-BF9pJudf.js +0 -4
- package/dist/dashboard-client/assets/entries/entry-client-routing.CT1e9F0o.js +0 -1
- package/dist/dashboard-client/assets/entries/pages_index.CkW5JQ8X.js +0 -428
- package/dist/dashboard-client/assets/static/layouts_tailwind-00e65532.8OjKGAbA.css +0 -2
- package/dist/dashboard-client/index.html +0 -27
- package/dist/dashboard-client/index.pageContext.json +0 -1
- package/dist/dashboard-client/logo-animated.svg +0 -34
- package/dist/dashboard-client/logo.svg +0 -16
- package/dist/dashboard-rpc/control.telefunc.d.ts +0 -176
- package/dist/dashboard-rpc/control.telefunc.d.ts.map +0 -1
- package/dist/dashboard-rpc/control.telefunc.js +0 -373
- package/dist/dashboard-rpc/control.telefunc.js.map +0 -1
- package/dist/dashboard-rpc/devices.telefunc.d.ts +0 -9
- package/dist/dashboard-rpc/devices.telefunc.d.ts.map +0 -1
- package/dist/dashboard-rpc/devices.telefunc.js +0 -12
- package/dist/dashboard-rpc/devices.telefunc.js.map +0 -1
- package/dist/dashboard-rpc/events.telefunc.d.ts +0 -36
- package/dist/dashboard-rpc/events.telefunc.d.ts.map +0 -1
- package/dist/dashboard-rpc/events.telefunc.js +0 -70
- package/dist/dashboard-rpc/events.telefunc.js.map +0 -1
- package/dist/dashboard-rpc/preferences.telefunc.d.ts +0 -97
- package/dist/dashboard-rpc/preferences.telefunc.d.ts.map +0 -1
- package/dist/dashboard-rpc/preferences.telefunc.js +0 -157
- package/dist/dashboard-rpc/preferences.telefunc.js.map +0 -1
- package/dist/dashboard-rpc/projects.telefunc.d.ts +0 -56
- package/dist/dashboard-rpc/projects.telefunc.d.ts.map +0 -1
- package/dist/dashboard-rpc/projects.telefunc.js +0 -96
- package/dist/dashboard-rpc/projects.telefunc.js.map +0 -1
- package/dist/dashboard-rpc/quota.telefunc.d.ts +0 -40
- package/dist/dashboard-rpc/quota.telefunc.d.ts.map +0 -1
- package/dist/dashboard-rpc/quota.telefunc.js +0 -84
- package/dist/dashboard-rpc/quota.telefunc.js.map +0 -1
- package/dist/dashboard-rpc/reads.telefunc.d.ts +0 -197
- package/dist/dashboard-rpc/reads.telefunc.d.ts.map +0 -1
- package/dist/dashboard-rpc/reads.telefunc.js +0 -403
- package/dist/dashboard-rpc/reads.telefunc.js.map +0 -1
- package/dist/dashboard-rpc/register.d.ts +0 -18
- package/dist/dashboard-rpc/register.d.ts.map +0 -1
- package/dist/dashboard-rpc/register.js +0 -66
- package/dist/dashboard-rpc/register.js.map +0 -1
- package/dist/dashboard-rpc/relay-run.d.ts +0 -9
- package/dist/dashboard-rpc/relay-run.d.ts.map +0 -1
- package/dist/dashboard-rpc/relay-run.js +0 -21
- package/dist/dashboard-rpc/relay-run.js.map +0 -1
- package/dist/dashboard-rpc/stream-channel.d.ts +0 -23
- package/dist/dashboard-rpc/stream-channel.d.ts.map +0 -1
- package/dist/dashboard-rpc/stream-channel.js +0 -52
- package/dist/dashboard-rpc/stream-channel.js.map +0 -1
- package/dist/dashboard-rpc/subagents.d.ts +0 -12
- package/dist/dashboard-rpc/subagents.d.ts.map +0 -1
- package/dist/dashboard-rpc/subagents.js +0 -13
- package/dist/dashboard-rpc/subagents.js.map +0 -1
- package/dist/dashboard-rpc/widgets.d.ts +0 -33
- package/dist/dashboard-rpc/widgets.d.ts.map +0 -1
- package/dist/dashboard-rpc/widgets.js +0 -54
- package/dist/dashboard-rpc/widgets.js.map +0 -1
- package/dist/data-branch.d.ts +0 -120
- package/dist/data-branch.d.ts.map +0 -1
- package/dist/data-branch.js +0 -319
- package/dist/data-branch.js.map +0 -1
- package/dist/discord/bot.d.ts +0 -61
- package/dist/discord/bot.d.ts.map +0 -1
- package/dist/discord/bot.js +0 -94
- package/dist/discord/bot.js.map +0 -1
- package/dist/discord/gateway.d.ts +0 -137
- package/dist/discord/gateway.d.ts.map +0 -1
- package/dist/discord/gateway.js +0 -315
- package/dist/discord/gateway.js.map +0 -1
- package/dist/discord/live-run.d.ts +0 -31
- package/dist/discord/live-run.d.ts.map +0 -1
- package/dist/discord/live-run.js +0 -57
- package/dist/discord/live-run.js.map +0 -1
- package/dist/discord/reply-mirror.d.ts +0 -83
- package/dist/discord/reply-mirror.d.ts.map +0 -1
- package/dist/discord/reply-mirror.js +0 -84
- package/dist/discord/reply-mirror.js.map +0 -1
- package/dist/discord/rest.d.ts +0 -20
- package/dist/discord/rest.d.ts.map +0 -1
- package/dist/discord/rest.js +0 -41
- package/dist/discord/rest.js.map +0 -1
- package/dist/discord/routing.d.ts +0 -81
- package/dist/discord/routing.d.ts.map +0 -1
- package/dist/discord/routing.js +0 -91
- package/dist/discord/routing.js.map +0 -1
- package/dist/discord-credentials-store.d.ts +0 -14
- package/dist/discord-credentials-store.d.ts.map +0 -1
- package/dist/discord-credentials-store.js +0 -53
- package/dist/discord-credentials-store.js.map +0 -1
- package/dist/discord-credentials.d.ts +0 -80
- package/dist/discord-credentials.d.ts.map +0 -1
- package/dist/discord-credentials.js +0 -55
- package/dist/discord-credentials.js.map +0 -1
- package/dist/driver/actions-zip.d.ts +0 -2
- package/dist/driver/actions-zip.d.ts.map +0 -1
- package/dist/driver/actions-zip.js +0 -70
- package/dist/driver/actions-zip.js.map +0 -1
- package/dist/driver/actions.d.ts +0 -130
- package/dist/driver/actions.d.ts.map +0 -1
- package/dist/driver/actions.js +0 -261
- package/dist/driver/actions.js.map +0 -1
- package/dist/driver/agent-cli.d.ts +0 -57
- package/dist/driver/agent-cli.d.ts.map +0 -1
- package/dist/driver/agent-cli.js +0 -134
- package/dist/driver/agent-cli.js.map +0 -1
- package/dist/driver/child-registry.d.ts +0 -25
- package/dist/driver/child-registry.d.ts.map +0 -1
- package/dist/driver/child-registry.js +0 -53
- package/dist/driver/child-registry.js.map +0 -1
- package/dist/driver/claude-code-quota.d.ts +0 -40
- package/dist/driver/claude-code-quota.d.ts.map +0 -1
- package/dist/driver/claude-code-quota.js +0 -144
- package/dist/driver/claude-code-quota.js.map +0 -1
- package/dist/driver/claude-code.d.ts +0 -104
- package/dist/driver/claude-code.d.ts.map +0 -1
- package/dist/driver/claude-code.js +0 -314
- package/dist/driver/claude-code.js.map +0 -1
- package/dist/driver/cli-session.d.ts +0 -57
- package/dist/driver/cli-session.d.ts.map +0 -1
- package/dist/driver/cli-session.js +0 -134
- package/dist/driver/cli-session.js.map +0 -1
- package/dist/driver/cloud.d.ts +0 -109
- package/dist/driver/cloud.d.ts.map +0 -1
- package/dist/driver/cloud.js +0 -232
- package/dist/driver/cloud.js.map +0 -1
- package/dist/driver/codex.d.ts +0 -99
- package/dist/driver/codex.d.ts.map +0 -1
- package/dist/driver/codex.js +0 -190
- package/dist/driver/codex.js.map +0 -1
- package/dist/driver/fake.d.ts +0 -54
- package/dist/driver/fake.d.ts.map +0 -1
- package/dist/driver/fake.js +0 -73
- package/dist/driver/fake.js.map +0 -1
- package/dist/driver/index.d.ts +0 -10
- package/dist/driver/index.d.ts.map +0 -1
- package/dist/driver/index.js +0 -14
- package/dist/driver/index.js.map +0 -1
- package/dist/driver/session-support.d.ts +0 -14
- package/dist/driver/session-support.d.ts.map +0 -1
- package/dist/driver/session-support.js +0 -37
- package/dist/driver/session-support.js.map +0 -1
- package/dist/driver/types.d.ts +0 -310
- package/dist/driver/types.d.ts.map +0 -1
- package/dist/driver/types.js +0 -5
- package/dist/driver/types.js.map +0 -1
- package/dist/driver-cli.d.ts +0 -61
- package/dist/driver-cli.d.ts.map +0 -1
- package/dist/driver-cli.js +0 -66
- package/dist/driver-cli.js.map +0 -1
- package/dist/fake-script.d.ts +0 -15
- package/dist/fake-script.d.ts.map +0 -1
- package/dist/fake-script.js +0 -58
- package/dist/fake-script.js.map +0 -1
- package/dist/framework-dir.d.ts.map +0 -1
- package/dist/framework-dir.js.map +0 -1
- package/dist/framework-gitignore.d.ts +0 -12
- package/dist/framework-gitignore.d.ts.map +0 -1
- package/dist/framework-gitignore.js +0 -19
- package/dist/framework-gitignore.js.map +0 -1
- package/dist/gate-keepalive.d.ts +0 -47
- package/dist/gate-keepalive.d.ts.map +0 -1
- package/dist/gate-keepalive.js +0 -62
- package/dist/gate-keepalive.js.map +0 -1
- package/dist/git-exclude.d.ts +0 -11
- package/dist/git-exclude.d.ts.map +0 -1
- package/dist/git-exclude.js +0 -23
- package/dist/git-exclude.js.map +0 -1
- package/dist/handoff-level.d.ts +0 -56
- package/dist/handoff-level.d.ts.map +0 -1
- package/dist/handoff-level.js +0 -62
- package/dist/handoff-level.js.map +0 -1
- package/dist/host-exec.d.ts +0 -21
- package/dist/host-exec.d.ts.map +0 -1
- package/dist/host-exec.js +0 -30
- package/dist/host-exec.js.map +0 -1
- package/dist/layout.d.ts +0 -41
- package/dist/layout.d.ts.map +0 -1
- package/dist/layout.js +0 -69
- package/dist/layout.js.map +0 -1
- package/dist/logs.d.ts +0 -73
- package/dist/logs.d.ts.map +0 -1
- package/dist/logs.js +0 -218
- package/dist/logs.js.map +0 -1
- package/dist/maintenance.d.ts +0 -90
- package/dist/maintenance.d.ts.map +0 -1
- package/dist/maintenance.js +0 -141
- package/dist/maintenance.js.map +0 -1
- package/dist/merged-worktrees.d.ts +0 -74
- package/dist/merged-worktrees.d.ts.map +0 -1
- package/dist/merged-worktrees.js +0 -84
- package/dist/merged-worktrees.js.map +0 -1
- package/dist/module-types/src/dashboard/agent-tree.d.ts +0 -105
- package/dist/module-types/src/dashboard/file-diff.d.ts +0 -66
- package/dist/module-types/src/dashboard/file-read.d.ts +0 -41
- package/dist/module-types/src/dashboard/file-status.d.ts +0 -20
- package/dist/module-types/src/dashboard/scheduler-state.d.ts +0 -72
- package/dist/module-types/src/dashboard/subagent-settings.d.ts +0 -25
- package/dist/module-types/src/dashboard-rpc/subagents.d.ts +0 -11
- package/dist/module-types/src/framework-gitignore.d.ts +0 -11
- package/dist/module-types/src/subagent-settings.d.ts +0 -26
- package/dist/on-before-mergeable-prompt.d.ts +0 -32
- package/dist/on-before-mergeable-prompt.d.ts.map +0 -1
- package/dist/on-before-mergeable-prompt.js +0 -26
- package/dist/on-before-mergeable-prompt.js.map +0 -1
- package/dist/planned-quick-wins.d.ts +0 -102
- package/dist/planned-quick-wins.d.ts.map +0 -1
- package/dist/planned-quick-wins.js +0 -171
- package/dist/planned-quick-wins.js.map +0 -1
- package/dist/preflight.d.ts +0 -77
- package/dist/preflight.d.ts.map +0 -1
- package/dist/preflight.js +0 -91
- package/dist/preflight.js.map +0 -1
- package/dist/preset-catalog.d.ts +0 -98
- package/dist/preset-catalog.d.ts.map +0 -1
- package/dist/preset-catalog.js +0 -129
- package/dist/preset-catalog.js.map +0 -1
- package/dist/preset-prompt.d.ts +0 -81
- package/dist/preset-prompt.d.ts.map +0 -1
- package/dist/preset-prompt.js +0 -51
- package/dist/preset-prompt.js.map +0 -1
- package/dist/preset-registry.d.ts +0 -32
- package/dist/preset-registry.d.ts.map +0 -1
- package/dist/preset-registry.js +0 -35
- package/dist/preset-registry.js.map +0 -1
- package/dist/presets.d.ts +0 -20
- package/dist/presets.d.ts.map +0 -1
- package/dist/presets.js +0 -33
- package/dist/presets.js.map +0 -1
- package/dist/preview-runtime.d.ts +0 -33
- package/dist/preview-runtime.d.ts.map +0 -1
- package/dist/preview-runtime.js +0 -96
- package/dist/preview-runtime.js.map +0 -1
- package/dist/preview.d.ts +0 -78
- package/dist/preview.d.ts.map +0 -1
- package/dist/preview.js +0 -301
- package/dist/preview.js.map +0 -1
- package/dist/project-widgets.d.ts +0 -46
- package/dist/project-widgets.d.ts.map +0 -1
- package/dist/project-widgets.js +0 -93
- package/dist/project-widgets.js.map +0 -1
- package/dist/prompt-run.d.ts +0 -104
- package/dist/prompt-run.d.ts.map +0 -1
- package/dist/prompt-run.js +0 -112
- package/dist/prompt-run.js.map +0 -1
- package/dist/prompt-template.d.ts +0 -16
- package/dist/prompt-template.d.ts.map +0 -1
- package/dist/prompt-template.js +0 -56
- package/dist/prompt-template.js.map +0 -1
- package/dist/prompts.generated.d.ts +0 -53
- package/dist/prompts.generated.d.ts.map +0 -1
- package/dist/prompts.generated.js +0 -55
- package/dist/prompts.generated.js.map +0 -1
- package/dist/queue-promote.d.ts +0 -70
- package/dist/queue-promote.d.ts.map +0 -1
- package/dist/queue-promote.js +0 -118
- package/dist/queue-promote.js.map +0 -1
- package/dist/relay.d.ts +0 -84
- package/dist/relay.d.ts.map +0 -1
- package/dist/relay.js +0 -199
- package/dist/relay.js.map +0 -1
- package/dist/repos-directory.d.ts +0 -19
- package/dist/repos-directory.d.ts.map +0 -1
- package/dist/repos-directory.js +0 -23
- package/dist/repos-directory.js.map +0 -1
- package/dist/retired-project-settings.d.ts +0 -43
- package/dist/retired-project-settings.d.ts.map +0 -1
- package/dist/retired-project-settings.js +0 -125
- package/dist/retired-project-settings.js.map +0 -1
- package/dist/routine-locks.d.ts +0 -53
- package/dist/routine-locks.d.ts.map +0 -1
- package/dist/routine-locks.js +0 -125
- package/dist/routine-locks.js.map +0 -1
- package/dist/run-driver.d.ts +0 -26
- package/dist/run-driver.d.ts.map +0 -1
- package/dist/run-driver.js +0 -17
- package/dist/run-driver.js.map +0 -1
- package/dist/run-locks.d.ts +0 -3
- package/dist/run-locks.d.ts.map +0 -1
- package/dist/run-locks.js +0 -39
- package/dist/run-locks.js.map +0 -1
- package/dist/run-messages.d.ts +0 -64
- package/dist/run-messages.d.ts.map +0 -1
- package/dist/run-messages.js +0 -76
- package/dist/run-messages.js.map +0 -1
- package/dist/run-options.d.ts +0 -53
- package/dist/run-options.d.ts.map +0 -1
- package/dist/run-options.js +0 -110
- package/dist/run-options.js.map +0 -1
- package/dist/run-telemetry.d.ts +0 -115
- package/dist/run-telemetry.d.ts.map +0 -1
- package/dist/run-telemetry.js +0 -137
- package/dist/run-telemetry.js.map +0 -1
- package/dist/run-view.d.ts +0 -109
- package/dist/run-view.d.ts.map +0 -1
- package/dist/run-view.js +0 -118
- package/dist/run-view.js.map +0 -1
- package/dist/run.d.ts +0 -261
- package/dist/run.d.ts.map +0 -1
- package/dist/run.js +0 -420
- package/dist/run.js.map +0 -1
- package/dist/runtime-keys.d.ts +0 -17
- package/dist/runtime-keys.d.ts.map +0 -1
- package/dist/runtime-keys.js +0 -17
- package/dist/runtime-keys.js.map +0 -1
- package/dist/sandbox.d.ts +0 -27
- package/dist/sandbox.d.ts.map +0 -1
- package/dist/sandbox.js +0 -63
- package/dist/sandbox.js.map +0 -1
- package/dist/session-link.d.ts +0 -19
- package/dist/session-link.d.ts.map +0 -1
- package/dist/session-link.js +0 -26
- package/dist/session-link.js.map +0 -1
- package/dist/sessions.d.ts +0 -77
- package/dist/sessions.d.ts.map +0 -1
- package/dist/sessions.js +0 -146
- package/dist/sessions.js.map +0 -1
- package/dist/spike-locks.d.ts +0 -75
- package/dist/spike-locks.d.ts.map +0 -1
- package/dist/spike-locks.js +0 -208
- package/dist/spike-locks.js.map +0 -1
- package/dist/stale-branch.d.ts +0 -21
- package/dist/stale-branch.d.ts.map +0 -1
- package/dist/stale-branch.js +0 -32
- package/dist/stale-branch.js.map +0 -1
- package/dist/steps.d.ts +0 -9
- package/dist/steps.d.ts.map +0 -1
- package/dist/steps.js +0 -13
- package/dist/steps.js.map +0 -1
- package/dist/store/forge.d.ts +0 -110
- package/dist/store/forge.d.ts.map +0 -1
- package/dist/store/forge.js +0 -97
- package/dist/store/forge.js.map +0 -1
- package/dist/store/run-checkout.d.ts +0 -33
- package/dist/store/run-checkout.d.ts.map +0 -1
- package/dist/store/run-checkout.js +0 -59
- package/dist/store/run-checkout.js.map +0 -1
- package/dist/store/run-store.d.ts +0 -501
- package/dist/store/run-store.d.ts.map +0 -1
- package/dist/store/run-store.js +0 -806
- package/dist/store/run-store.js.map +0 -1
- package/dist/store/suspend.d.ts +0 -38
- package/dist/store/suspend.d.ts.map +0 -1
- package/dist/store/suspend.js +0 -45
- package/dist/store/suspend.js.map +0 -1
- package/dist/store/worktree-deps.d.ts +0 -30
- package/dist/store/worktree-deps.d.ts.map +0 -1
- package/dist/store/worktree-deps.js +0 -115
- package/dist/store/worktree-deps.js.map +0 -1
- package/dist/store/worktree.d.ts +0 -194
- package/dist/store/worktree.d.ts.map +0 -1
- package/dist/store/worktree.js +0 -331
- package/dist/store/worktree.js.map +0 -1
- package/dist/subagent-settings.d.ts +0 -27
- package/dist/subagent-settings.d.ts.map +0 -1
- package/dist/subagent-settings.js +0 -35
- package/dist/subagent-settings.js.map +0 -1
- package/dist/system-prompt-file.d.ts +0 -18
- package/dist/system-prompt-file.d.ts.map +0 -1
- package/dist/system-prompt-file.js +0 -28
- package/dist/system-prompt-file.js.map +0 -1
- package/dist/system-prompt.d.ts +0 -148
- package/dist/system-prompt.d.ts.map +0 -1
- package/dist/system-prompt.js +0 -170
- package/dist/system-prompt.js.map +0 -1
- package/dist/target-driver.d.ts +0 -28
- package/dist/target-driver.d.ts.map +0 -1
- package/dist/target-driver.js +0 -18
- package/dist/target-driver.js.map +0 -1
- package/dist/ticket-locks.d.ts +0 -61
- package/dist/ticket-locks.d.ts.map +0 -1
- package/dist/ticket-locks.js +0 -137
- package/dist/ticket-locks.js.map +0 -1
- package/dist/tickets-file.d.ts +0 -7
- package/dist/tickets-file.d.ts.map +0 -1
- package/dist/tickets-file.js +0 -21
- package/dist/tickets-file.js.map +0 -1
- package/dist/tickets.d.ts +0 -18
- package/dist/tickets.d.ts.map +0 -1
- package/dist/tickets.js +0 -23
- package/dist/tickets.js.map +0 -1
- package/dist/todo-loop.d.ts +0 -110
- package/dist/todo-loop.d.ts.map +0 -1
- package/dist/todo-loop.js +0 -175
- package/dist/todo-loop.js.map +0 -1
- package/dist/turn-gate.d.ts +0 -144
- package/dist/turn-gate.d.ts.map +0 -1
- package/dist/turn-gate.js +0 -217
- package/dist/turn-gate.js.map +0 -1
- package/dist/usage.d.ts +0 -32
- package/dist/usage.d.ts.map +0 -1
- package/dist/usage.js +0 -46
- package/dist/usage.js.map +0 -1
- package/dist/widget-types/dashboard/components/LinkActions.d.ts +0 -26
- package/dist/widget-types/dashboard/components/Markdown.d.ts +0 -4
- package/dist/widget-types/dashboard/components/StartAgentButton.d.ts +0 -39
- package/dist/widget-types/dashboard/components/ui/badge.d.ts +0 -2
- package/dist/widget-types/dashboard/components/ui/button.d.ts +0 -10
- package/dist/widget-types/dashboard/components/ui/card.d.ts +0 -5
- package/dist/widget-types/dashboard/components/ui/checkbox.d.ts +0 -7
- package/dist/widget-types/dashboard/components/ui/dropdown-menu.d.ts +0 -16
- package/dist/widget-types/dashboard/components/ui/input.d.ts +0 -2
- package/dist/widget-types/dashboard/components/ui/option-label.d.ts +0 -4
- package/dist/widget-types/dashboard/components/ui/popover.d.ts +0 -8
- package/dist/widget-types/dashboard/components/ui/scroll-area.d.ts +0 -10
- package/dist/widget-types/dashboard/components/ui/separator.d.ts +0 -3
- package/dist/widget-types/dashboard/components/ui/skeleton.d.ts +0 -2
- package/dist/widget-types/dashboard/components/ui/slider.d.ts +0 -9
- package/dist/widget-types/dashboard/components/ui/tooltip.d.ts +0 -11
- package/dist/widget-types/dashboard/lib/draft-handoff.d.ts +0 -15
- package/dist/widget-types/dashboard/lib/format-date.d.ts +0 -51
- package/dist/widget-types/dashboard/lib/host-services.d.ts +0 -12
- package/dist/widget-types/dashboard/lib/route.d.ts +0 -24
- package/dist/widget-types/dashboard/lib/rpc.d.ts +0 -31
- package/dist/widget-types/dashboard/lib/use-action.d.ts +0 -25
- package/dist/widget-types/dashboard/lib/use-async.d.ts +0 -39
- package/dist/widget-types/dashboard/lib/use-widgets.d.ts +0 -42
- package/dist/widget-types/dashboard/lib/utils.d.ts +0 -3
- package/dist/widget-types/dashboard/rpc/widgets.d.ts +0 -4
- package/dist/widget-types/dashboard/widget/index.d.ts +0 -207
- package/dist/widget-types/src/agent-id.d.ts +0 -12
- package/dist/widget-types/src/agent-locks.d.ts +0 -2
- package/dist/widget-types/src/agent-view.d.ts +0 -38
- package/dist/widget-types/src/bridge-browser.d.ts +0 -216
- package/dist/widget-types/src/browser-stream.d.ts +0 -19
- package/dist/widget-types/src/browser.d.ts +0 -15
- package/dist/widget-types/src/cli-exec.d.ts +0 -35
- package/dist/widget-types/src/cloud-run-state.d.ts +0 -26
- package/dist/widget-types/src/dashboard/activity.d.ts +0 -40
- package/dist/widget-types/src/dashboard/agent-handoff.d.ts +0 -211
- package/dist/widget-types/src/dashboard/agent-tree.d.ts +0 -105
- package/dist/widget-types/src/dashboard/bridge-endpoints.d.ts +0 -157
- package/dist/widget-types/src/dashboard/bridge-question.d.ts +0 -32
- package/dist/widget-types/src/dashboard/bridge-store.d.ts +0 -178
- package/dist/widget-types/src/dashboard/cache.d.ts +0 -46
- package/dist/widget-types/src/dashboard/content-type.d.ts +0 -2
- package/dist/widget-types/src/dashboard/dashboard.d.ts +0 -37
- package/dist/widget-types/src/dashboard/discord-webhook.d.ts +0 -16
- package/dist/widget-types/src/dashboard/docs.d.ts +0 -38
- package/dist/widget-types/src/dashboard/file-diff.d.ts +0 -66
- package/dist/widget-types/src/dashboard/file-read.d.ts +0 -41
- package/dist/widget-types/src/dashboard/file-status.d.ts +0 -20
- package/dist/widget-types/src/dashboard/gh.d.ts +0 -130
- package/dist/widget-types/src/dashboard/git-status.d.ts +0 -32
- package/dist/widget-types/src/dashboard/github.d.ts +0 -10
- package/dist/widget-types/src/dashboard/http.d.ts +0 -28
- package/dist/widget-types/src/dashboard/interventions.d.ts +0 -66
- package/dist/widget-types/src/dashboard/keys.d.ts +0 -30
- package/dist/widget-types/src/dashboard/models.d.ts +0 -24
- package/dist/widget-types/src/dashboard/open-in-app.d.ts +0 -42
- package/dist/widget-types/src/dashboard/open-questions.d.ts +0 -52
- package/dist/widget-types/src/dashboard/overview.d.ts +0 -77
- package/dist/widget-types/src/dashboard/projects.d.ts +0 -89
- package/dist/widget-types/src/dashboard/pull-requests.d.ts +0 -126
- package/dist/widget-types/src/dashboard/queue.d.ts +0 -16
- package/dist/widget-types/src/dashboard/quota.d.ts +0 -59
- package/dist/widget-types/src/dashboard/remote-run.d.ts +0 -94
- package/dist/widget-types/src/dashboard/rpc-serve.d.ts +0 -102
- package/dist/widget-types/src/dashboard/run-inbox.d.ts +0 -30
- package/dist/widget-types/src/dashboard/scheduler-state.d.ts +0 -64
- package/dist/widget-types/src/dashboard/tickets.d.ts +0 -28
- package/dist/widget-types/src/dashboard/types.d.ts +0 -99
- package/dist/widget-types/src/dashboard/widget-serve.d.ts +0 -14
- package/dist/widget-types/src/dashboard-rpc/context.d.ts +0 -53
- package/dist/widget-types/src/dashboard-rpc/control.d.ts +0 -108
- package/dist/widget-types/src/dashboard-rpc/devices.d.ts +0 -8
- package/dist/widget-types/src/dashboard-rpc/events-tail.d.ts +0 -53
- package/dist/widget-types/src/dashboard-rpc/events.d.ts +0 -29
- package/dist/widget-types/src/dashboard-rpc/index.d.ts +0 -28
- package/dist/widget-types/src/dashboard-rpc/models.d.ts +0 -3
- package/dist/widget-types/src/dashboard-rpc/preferences.d.ts +0 -40
- package/dist/widget-types/src/dashboard-rpc/projects.d.ts +0 -54
- package/dist/widget-types/src/dashboard-rpc/quota.d.ts +0 -26
- package/dist/widget-types/src/dashboard-rpc/reads.d.ts +0 -227
- package/dist/widget-types/src/dashboard-rpc/relay-agent.d.ts +0 -8
- package/dist/widget-types/src/dashboard-rpc/stream-forward.d.ts +0 -16
- package/dist/widget-types/src/dashboard-rpc/widgets.d.ts +0 -32
- package/dist/widget-types/src/discord-credentials.d.ts +0 -79
- package/dist/widget-types/src/driver-names.d.ts +0 -21
- package/dist/widget-types/src/error-message.d.ts +0 -7
- package/dist/widget-types/src/event-stream.d.ts +0 -32
- package/dist/widget-types/src/events.d.ts +0 -235
- package/dist/widget-types/src/framework-dir.d.ts +0 -10
- package/dist/widget-types/src/framework-gitignore.d.ts +0 -11
- package/dist/widget-types/src/index.d.ts +0 -42
- package/dist/widget-types/src/jsonl-tail.d.ts +0 -54
- package/dist/widget-types/src/loopback-host.d.ts +0 -19
- package/dist/widget-types/src/node-fs.d.ts +0 -32
- package/dist/widget-types/src/open-choices.d.ts +0 -14
- package/dist/widget-types/src/pick-directory.d.ts +0 -29
- package/dist/widget-types/src/preference-defaults.d.ts +0 -53
- package/dist/widget-types/src/project-commands.d.ts +0 -23
- package/dist/widget-types/src/project-errors.d.ts +0 -43
- package/dist/widget-types/src/project-hooks.d.ts +0 -133
- package/dist/widget-types/src/project-presets.d.ts +0 -29
- package/dist/widget-types/src/project-widgets.d.ts +0 -45
- package/dist/widget-types/src/project.d.ts +0 -28
- package/dist/widget-types/src/quota-boundary.d.ts +0 -115
- package/dist/widget-types/src/quota-poller.d.ts +0 -82
- package/dist/widget-types/src/registry.d.ts +0 -210
- package/dist/widget-types/src/store/agent-checkout.d.ts +0 -46
- package/dist/widget-types/src/store/agent-store.d.ts +0 -237
- package/dist/widget-types/src/store/branches.d.ts +0 -133
- package/dist/widget-types/src/store/forge.d.ts +0 -109
- package/dist/widget-types/src/store/git-host.d.ts +0 -111
- package/dist/widget-types/src/store/index.d.ts +0 -9
- package/dist/widget-types/src/store/provided.d.ts +0 -16
- package/dist/widget-types/src/store/queue.d.ts +0 -45
- package/dist/widget-types/src/store/run-record.d.ts +0 -21
- package/dist/widget-types/src/store/runs.d.ts +0 -101
- package/dist/widget-types/src/store/tickets.d.ts +0 -72
- package/dist/widget-types/src/tickets.d.ts +0 -17
- package/dist/widget-types/src/worktrees.d.ts +0 -89
- package/dist/widget.css +0 -50
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import { readFile } from 'node:fs/promises';
|
|
2
|
-
import { join } from 'node:path';
|
|
3
|
-
import { isPidAlive } from '../store/index.js';
|
|
4
|
-
import { isPublishLevel, isPublishPick } from '../publish-levels.js';
|
|
5
|
-
import { projectGitHost } from '../store/git-host.js';
|
|
6
|
-
// The scheduler card's read (#1774): a projection of `.agent-scheduler/state.json`, the file the
|
|
7
|
-
// scheduler writes per project and per user, exactly as it stands. The dashboard reads the file by
|
|
8
|
-
// its name; it never runs the tool, and a project without the file is simply not set up.
|
|
9
|
-
//
|
|
10
|
-
// Forgiving like every other read here: a missing, unreadable or malformed file reads as not set
|
|
11
|
-
// up, and a field that is not what the file promises reads as absent. The one thing added on the
|
|
12
|
-
// way out is whether the scheduler's process is alive, which only the operating system knows; and
|
|
13
|
-
// each scheduled command's switch and publish pick on this machine folded into the list the last
|
|
14
|
-
// tick recorded.
|
|
15
|
-
/** The file the scheduler keeps its state in, at the project's root; per user, hidden from git by the tool. */
|
|
16
|
-
export const SCHEDULER_STATE_FILE = '.agent-scheduler/state.json';
|
|
17
|
-
const NOT_SET_UP = { present: false, on: false, keepAlive: false, running: false, commands: [] };
|
|
18
|
-
/**
|
|
19
|
-
* Read one project's scheduler state. `isAlive` is the process probe; injectable so a test can
|
|
20
|
-
* decide what "running" means without holding a process.
|
|
21
|
-
*/
|
|
22
|
-
export async function readSchedulerState(cwd, isAlive = isPidAlive) {
|
|
23
|
-
let raw;
|
|
24
|
-
try {
|
|
25
|
-
raw = await readFile(join(cwd, SCHEDULER_STATE_FILE), 'utf8');
|
|
26
|
-
}
|
|
27
|
-
catch {
|
|
28
|
-
return { ...NOT_SET_UP };
|
|
29
|
-
}
|
|
30
|
-
let parsed;
|
|
31
|
-
try {
|
|
32
|
-
parsed = JSON.parse(raw);
|
|
33
|
-
}
|
|
34
|
-
catch {
|
|
35
|
-
return { ...NOT_SET_UP };
|
|
36
|
-
}
|
|
37
|
-
if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed))
|
|
38
|
-
return { ...NOT_SET_UP };
|
|
39
|
-
const state = parsed;
|
|
40
|
-
const pid = typeof state['pid'] === 'number' ? state['pid'] : undefined;
|
|
41
|
-
const tick = lastTick(state['lastTick']);
|
|
42
|
-
const switches = state['switches'] && typeof state['switches'] === 'object' ? state['switches'] : {};
|
|
43
|
-
const publishes = state['publishes'] && typeof state['publishes'] === 'object' ? state['publishes'] : {};
|
|
44
|
-
const commands = scheduleLines(state['lastTick']).map(line => {
|
|
45
|
-
const switched = switches[line.command];
|
|
46
|
-
const picked = publishes[line.command];
|
|
47
|
-
return { ...line, on: typeof switched === 'boolean' ? switched : line.on, ...(isPublishPick(picked) ? { publishPick: picked } : {}) };
|
|
48
|
-
});
|
|
49
|
-
return {
|
|
50
|
-
present: true,
|
|
51
|
-
on: state['on'] === true,
|
|
52
|
-
keepAlive: state['keepAlive'] === true,
|
|
53
|
-
running: pid !== undefined && isAlive(pid),
|
|
54
|
-
...(typeof state['model'] === 'string' ? { model: state['model'] } : {}),
|
|
55
|
-
...(typeof state['spendOffset'] === 'number' && Number.isFinite(state['spendOffset']) ? { spendOffset: state['spendOffset'] } : {}),
|
|
56
|
-
...(tick ? { lastTick: tick } : {}),
|
|
57
|
-
commands,
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
/** The schedule the last tick recorded, each line as written; a line not of the promised shape is left out. */
|
|
61
|
-
function scheduleLines(value) {
|
|
62
|
-
const schedule = value && typeof value === 'object' ? value['schedule'] : undefined;
|
|
63
|
-
if (!Array.isArray(schedule))
|
|
64
|
-
return [];
|
|
65
|
-
const lines = [];
|
|
66
|
-
for (const item of schedule) {
|
|
67
|
-
if (!item || typeof item !== 'object')
|
|
68
|
-
continue;
|
|
69
|
-
const l = item;
|
|
70
|
-
if (typeof l['command'] !== 'string' || typeof l['on'] !== 'boolean')
|
|
71
|
-
continue;
|
|
72
|
-
lines.push({
|
|
73
|
-
command: l['command'],
|
|
74
|
-
...(typeof l['every'] === 'string' ? { every: l['every'] } : {}),
|
|
75
|
-
...(typeof l['when'] === 'string' ? { when: l['when'] } : {}),
|
|
76
|
-
on: l['on'],
|
|
77
|
-
...(isPublishLevel(l['publish']) ? { publish: l['publish'] } : {}),
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
return lines;
|
|
81
|
-
}
|
|
82
|
-
/** The last tick, kept only when it has the shape the file promises. */
|
|
83
|
-
function lastTick(value) {
|
|
84
|
-
if (!value || typeof value !== 'object')
|
|
85
|
-
return undefined;
|
|
86
|
-
const tick = value;
|
|
87
|
-
if (typeof tick['at'] !== 'string' || !Array.isArray(tick['decisions']))
|
|
88
|
-
return undefined;
|
|
89
|
-
const decisions = [];
|
|
90
|
-
for (const item of tick['decisions']) {
|
|
91
|
-
if (!item || typeof item !== 'object')
|
|
92
|
-
continue;
|
|
93
|
-
const d = item;
|
|
94
|
-
if (typeof d['command'] !== 'string' || typeof d['outcome'] !== 'string')
|
|
95
|
-
continue;
|
|
96
|
-
decisions.push({ command: d['command'], outcome: d['outcome'], ...(typeof d['run'] === 'string' ? { run: d['run'] } : {}) });
|
|
97
|
-
}
|
|
98
|
-
return { at: tick['at'], decisions, ...(typeof tick['note'] === 'string' ? { note: tick['note'] } : {}) };
|
|
99
|
-
}
|
|
100
|
-
/** Every registered project's scheduler, one row per project in registry order, a failing read as not set up. */
|
|
101
|
-
export async function collectSchedulers(projects, read = readSchedulerState, gitHost = projectGitHost) {
|
|
102
|
-
const rows = [];
|
|
103
|
-
for (const project of projects) {
|
|
104
|
-
const state = await read(project.path).catch(() => ({ ...NOT_SET_UP }));
|
|
105
|
-
const host = await gitHost(project.path).catch(() => undefined);
|
|
106
|
-
rows.push({ projectId: project.id, projectName: project.name, gitHost: host !== undefined, ...state });
|
|
107
|
-
}
|
|
108
|
-
return rows;
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* The spend offset the usage panel draws (#960), read off the projects' schedulers: the loosest
|
|
112
|
-
* one, since it is the one that lets unattended work spend the furthest; `undefined` when no
|
|
113
|
-
* scheduler names one. The panel's slider writes it back through each project's `offset` hook,
|
|
114
|
-
* so the schedulers agree unless one was set by hand.
|
|
115
|
-
*/
|
|
116
|
-
export function loosestSpendOffset(states) {
|
|
117
|
-
const offsets = states.flatMap(state => (state.spendOffset !== undefined ? [state.spendOffset] : []));
|
|
118
|
-
return offsets.length ? Math.max(...offsets) : undefined;
|
|
119
|
-
}
|
|
120
|
-
//# sourceMappingURL=scheduler-state.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler-state.js","sourceRoot":"","sources":["../../src/dashboard/scheduler-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C,OAAO,EAAE,cAAc,EAAE,aAAa,EAAuC,MAAM,sBAAsB,CAAA;AACzG,OAAO,EAAE,cAAc,EAAmB,MAAM,sBAAsB,CAAA;AAEtE,iGAAiG;AACjG,mGAAmG;AACnG,yFAAyF;AACzF,EAAE;AACF,iGAAiG;AACjG,iGAAiG;AACjG,kGAAkG;AAClG,iGAAiG;AACjG,iBAAiB;AAEjB,+GAA+G;AAC/G,MAAM,CAAC,MAAM,oBAAoB,GAAG,6BAA6B,CAAA;AA4DjE,MAAM,UAAU,GAAmB,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;AAEhH;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,GAAW,EAAE,OAAO,GAA6B,UAAU;IAClG,IAAI,GAAW,CAAA;IACf,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,EAAE,MAAM,CAAC,CAAA;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,GAAG,UAAU,EAAE,CAAA;IAC1B,CAAC;IACD,IAAI,MAAe,CAAA;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,GAAG,UAAU,EAAE,CAAA;IAC1B,CAAC;IACD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,GAAG,UAAU,EAAE,CAAA;IAC5F,MAAM,KAAK,GAAG,MAAiC,CAAA;IAC/C,MAAM,GAAG,GAAG,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACvE,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAA;IACxC,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,OAAO,KAAK,CAAC,UAAU,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAK,CAAC,UAAU,CAA6B,CAAC,CAAC,CAAC,EAAE,CAAA;IACjI,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAK,CAAC,WAAW,CAA6B,CAAC,CAAC,CAAC,EAAE,CAAA;IACrI,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAC3D,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACvC,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACtC,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAA;IACvI,CAAC,CAAC,CAAA;IACF,OAAO;QACL,OAAO,EAAE,IAAI;QACb,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI;QACxB,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK,IAAI;QACtC,OAAO,EAAE,GAAG,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC;QAC1C,GAAG,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,GAAG,CAAC,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnC,QAAQ;KACT,CAAA;AACH,CAAC;AAED,+GAA+G;AAC/G,SAAS,aAAa,CAAC,KAAc;IACnC,MAAM,QAAQ,GAAG,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAiC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAChH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAA;IACvC,MAAM,KAAK,GAAuB,EAAE,CAAA;IACpC,KAAK,MAAM,IAAI,IAAI,QAAqB,EAAE,CAAC;QACzC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,SAAQ;QAC/C,MAAM,CAAC,GAAG,IAA+B,CAAA;QACzC,IAAI,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS;YAAE,SAAQ;QAC9E,KAAK,CAAC,IAAI,CAAC;YACT,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC;YACrB,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC;YACX,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACnE,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,wEAAwE;AACxE,SAAS,QAAQ,CAAC,KAAc;IAC9B,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAA;IACzD,MAAM,IAAI,GAAG,KAAgC,CAAA;IAC7C,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAAE,OAAO,SAAS,CAAA;IACzF,MAAM,SAAS,GAAwB,EAAE,CAAA;IACzC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,CAAc,EAAE,CAAC;QAClD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,SAAQ;QAC/C,MAAM,CAAC,GAAG,IAA+B,CAAA;QACzC,IAAI,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,QAAQ;YAAE,SAAQ;QAClF,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IAC9H,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAA;AAC3G,CAAC;AAED,iHAAiH;AACjH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,QAA0B,EAC1B,IAAI,GAA6C,kBAAkB,EACnE,OAAO,GAAe,cAAc;IAEpC,MAAM,IAAI,GAAuB,EAAE,CAAA;IACnC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAmB,EAAE,CAAC,CAAC,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC,CAAA;QACvF,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QAC/D,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,KAAK,SAAS,EAAE,GAAG,KAAK,EAAE,CAAC,CAAA;IACxG,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAiC;IAClE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACrG,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAC1D,CAAC"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { runSubagentsHook } from '../project-hooks.js';
|
|
2
|
-
import { type SubagentSettings } from '../subagent-settings.js';
|
|
3
|
-
import type { ProjectSummary } from './projects.js';
|
|
4
|
-
/** The settings in force, and how many projects have the line that writes them. */
|
|
5
|
-
export interface SubagentSettingsView {
|
|
6
|
-
settings: SubagentSettings;
|
|
7
|
-
/** Projects with a `subagents` line; none means Settings can save nothing. */
|
|
8
|
-
hooked: number;
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* The settings of the first project, in registry order, that has the line and a file: Settings
|
|
12
|
-
* writes every project alike, so they differ only where a file was edited by hand.
|
|
13
|
-
*/
|
|
14
|
-
export declare function readSubagentSettings(projects: readonly ProjectSummary[]): Promise<SubagentSettingsView>;
|
|
15
|
-
/**
|
|
16
|
-
* Save the settings whole, through the `subagents` line of each project given. Only settings of the
|
|
17
|
-
* promised shape are passed on. A project without the line is skipped; none having it, or a line
|
|
18
|
-
* that fails, is the answer's error, each failing project named.
|
|
19
|
-
*/
|
|
20
|
-
export declare function setSubagentSettings(projects: readonly ProjectSummary[], settings: SubagentSettings, run?: typeof runSubagentsHook): Promise<{
|
|
21
|
-
ok: true;
|
|
22
|
-
} | {
|
|
23
|
-
ok: false;
|
|
24
|
-
error: string;
|
|
25
|
-
}>;
|
|
26
|
-
//# sourceMappingURL=subagent-settings.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"subagent-settings.d.ts","sourceRoot":"","sources":["../../src/dashboard/subagent-settings.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,EAA8C,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC3G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAMnD,mFAAmF;AACnF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,gBAAgB,CAAA;IAC1B,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAgB7G;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,SAAS,cAAc,EAAE,EACnC,QAAQ,EAAE,gBAAgB,EAC1B,GAAG,GAAE,OAAO,gBAAmC,GAC9C,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAYtD"}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { readFile } from 'node:fs/promises';
|
|
2
|
-
import { join } from 'node:path';
|
|
3
|
-
import { readProjectHooks, runSubagentsHook } from '../project-hooks.js';
|
|
4
|
-
import { SUBAGENT_SETTINGS_FILE, subagentSettingsIn } from '../subagent-settings.js';
|
|
5
|
-
/**
|
|
6
|
-
* The settings of the first project, in registry order, that has the line and a file: Settings
|
|
7
|
-
* writes every project alike, so they differ only where a file was edited by hand.
|
|
8
|
-
*/
|
|
9
|
-
export async function readSubagentSettings(projects) {
|
|
10
|
-
let settings;
|
|
11
|
-
let hooked = 0;
|
|
12
|
-
for (const project of projects) {
|
|
13
|
-
if ((await readProjectHooks(project.path)).subagents === undefined)
|
|
14
|
-
continue;
|
|
15
|
-
hooked++;
|
|
16
|
-
if (settings !== undefined)
|
|
17
|
-
continue;
|
|
18
|
-
const raw = await readFile(join(project.path, SUBAGENT_SETTINGS_FILE), 'utf8').catch(() => undefined);
|
|
19
|
-
if (raw === undefined)
|
|
20
|
-
continue;
|
|
21
|
-
try {
|
|
22
|
-
settings = subagentSettingsIn(JSON.parse(raw));
|
|
23
|
-
}
|
|
24
|
-
catch {
|
|
25
|
-
// A file that does not parse is no settings: the next project's may say.
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
return { settings: settings ?? {}, hooked };
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Save the settings whole, through the `subagents` line of each project given. Only settings of the
|
|
32
|
-
* promised shape are passed on. A project without the line is skipped; none having it, or a line
|
|
33
|
-
* that fails, is the answer's error, each failing project named.
|
|
34
|
-
*/
|
|
35
|
-
export async function setSubagentSettings(projects, settings, run = runSubagentsHook) {
|
|
36
|
-
const clean = subagentSettingsIn(settings);
|
|
37
|
-
let hooked = 0;
|
|
38
|
-
const failed = [];
|
|
39
|
-
for (const project of projects) {
|
|
40
|
-
const set = await run(project.path, clean);
|
|
41
|
-
if (set.ok)
|
|
42
|
-
hooked++;
|
|
43
|
-
else if (!set.noHook)
|
|
44
|
-
failed.push(`${project.name}: ${set.error}`);
|
|
45
|
-
}
|
|
46
|
-
if (failed.length)
|
|
47
|
-
return { ok: false, error: failed.join('; ') };
|
|
48
|
-
if (!hooked)
|
|
49
|
-
return { ok: false, error: 'no project has a subagents hook in .the-framework/hooks.yml' };
|
|
50
|
-
return { ok: true };
|
|
51
|
-
}
|
|
52
|
-
//# sourceMappingURL=subagent-settings.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"subagent-settings.js","sourceRoot":"","sources":["../../src/dashboard/subagent-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAyB,MAAM,yBAAyB,CAAA;AAc3G;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,QAAmC;IAC5E,IAAI,QAAsC,CAAA;IAC1C,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,MAAM,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS;YAAE,SAAQ;QAC5E,MAAM,EAAE,CAAA;QACR,IAAI,QAAQ,KAAK,SAAS;YAAE,SAAQ;QACpC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,sBAAsB,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QACrG,IAAI,GAAG,KAAK,SAAS;YAAE,SAAQ;QAC/B,IAAI,CAAC;YACH,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,yEAAyE;QAC3E,CAAC;IACH,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,EAAE,CAAA;AAC7C,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAAmC,EACnC,QAA0B,EAC1B,GAAG,GAA4B,gBAAgB;IAE/C,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAA;IAC1C,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAC1C,IAAI,GAAG,CAAC,EAAE;YAAE,MAAM,EAAE,CAAA;aACf,IAAI,CAAC,GAAG,CAAC,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC,CAAA;IACpE,CAAC;IACD,IAAI,MAAM,CAAC,MAAM;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;IACjE,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,6DAA6D,EAAE,CAAA;IACvG,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;AACrB,CAAC"}
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
|
-
import type { ProjectsProvider } from './projects.js';
|
|
3
|
-
import type { FrameworkEvent } from '../events.js';
|
|
4
|
-
import type { PreferencesStore } from '../registry.js';
|
|
5
|
-
import type { DiscordCredentialsStore } from '../discord-credentials.js';
|
|
6
|
-
import type { QuotaSource } from './quota.js';
|
|
7
|
-
import type { AutoPmReporter } from '../auto-pm.js';
|
|
8
|
-
import type { AddProjectResult, PreviewResult, PreviewStatus, StartRunKind, StartRunOptions, StartRunResult } from './types.js';
|
|
9
|
-
import type { ServeTarget } from '../preview.js';
|
|
10
|
-
import type { RunMeta } from '../store/index.js';
|
|
11
|
-
/** Wired by the daemon so `sendStart` can reach the daemon's own `startRun` closure. */
|
|
12
|
-
export type StartRunHandler = (prompt: string, kind: StartRunKind, options: StartRunOptions, projectId?: string) => StartRunResult | Promise<StartRunResult>;
|
|
13
|
-
/** Wired by the daemon so `sendAddProject` can install + register a repo (#433). */
|
|
14
|
-
export type AddProjectHandler = (path: string, directory: boolean) => AddProjectResult | Promise<AddProjectResult>;
|
|
15
|
-
/** Wired by the daemon so the Preview RPCs can serve/stop/report a project's app (#475). */
|
|
16
|
-
export interface PreviewHandlers {
|
|
17
|
-
/** `runId` serves that session's own worktree instead of the project's checkout (#797). */
|
|
18
|
-
start: (projectId?: string, targetId?: string, runId?: string) => PreviewResult | Promise<PreviewResult>;
|
|
19
|
-
/** List the servable apps (#651) for the Serve picker in a multi-package repo. */
|
|
20
|
-
targets: (projectId?: string, runId?: string) => ServeTarget[] | Promise<ServeTarget[]>;
|
|
21
|
-
stop: (projectId?: string, runId?: string) => void | Promise<void>;
|
|
22
|
-
status: (projectId?: string, runId?: string) => PreviewStatus | Promise<PreviewStatus>;
|
|
23
|
-
}
|
|
24
|
-
/** Resolve a run to its live event stream: the relay feeds `onEvents` from its own in-memory stream
|
|
25
|
-
* rather than a file on disk (#426), and the daemon feeds a run it is relaying from a device (#1067).
|
|
26
|
-
* Returns undefined when there is no in-memory stream, so `onEvents` falls back to tailing the log. */
|
|
27
|
-
export type EventsSource = (projectId: string, runId?: string) => AsyncIterable<FrameworkEvent> | undefined;
|
|
28
|
-
/** Look up the device a relayed run (#1067) executes on, or undefined for an ordinary local run. The
|
|
29
|
-
* daemon wires this from its live relayed-run map; a run-scoped RPC uses it to forward a remote run's
|
|
30
|
-
* read/steer/handoff to that device instead of resolving a (nonexistent) local checkout. */
|
|
31
|
-
export interface RemoteRuns {
|
|
32
|
-
target(runId: string | undefined): {
|
|
33
|
-
url: string;
|
|
34
|
-
token: string;
|
|
35
|
-
} | undefined;
|
|
36
|
-
/** A project's relayed run stubs (#1077), so `onRuns` can show a remote run in the list and re-open it after a reload. */
|
|
37
|
-
list(projectId: string): RunMeta[];
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* The Telefunc request context the mount provides. `sendStart` reads `startRun` from it;
|
|
41
|
-
* every project-keyed RPC reads `projects` (#427) — the daemon leaves it unset to use the
|
|
42
|
-
* global registry, the per-run foreground dashboard passes a single-project provider. The
|
|
43
|
-
* relay passes `eventsSource` (#426) so `onEvents` streams its in-memory run instead of a
|
|
44
|
-
* file, plus an empty `projects` so the file/registry RPCs return nothing on a public host.
|
|
45
|
-
*/
|
|
46
|
-
export interface DashboardContext {
|
|
47
|
-
startRun?: StartRunHandler;
|
|
48
|
-
addProject?: AddProjectHandler;
|
|
49
|
-
/** The Preview handler set (#475); the daemon wires it, other hosts leave it unset. */
|
|
50
|
-
preview?: PreviewHandlers;
|
|
51
|
-
projects?: ProjectsProvider;
|
|
52
|
-
eventsSource?: EventsSource;
|
|
53
|
-
/** The relayed-run lookup (#1067 slice 2): only the daemon wires it, so a run-scoped RPC can tell a
|
|
54
|
-
* local run from one running on a connected device and forward the call there. */
|
|
55
|
-
remote?: RemoteRuns;
|
|
56
|
-
/** The user-preferences store (#410). The daemon/foreground wire the real registry file;
|
|
57
|
-
* a public host (the relay) leaves it unset so `onPreferences`/`savePreferences` are inert. */
|
|
58
|
-
preferences?: PreferencesStore;
|
|
59
|
-
/** The quota source behind the usage panel (#533). The daemon wires a live poller;
|
|
60
|
-
* a public host (the relay) leaves it unset, so `onQuota` reports it has no reading. */
|
|
61
|
-
quota?: QuotaSource;
|
|
62
|
-
/** The Discord credentials store (#1095). The daemon wires one that also reloads its Discord
|
|
63
|
-
* services on a save; a public host leaves it unset, so nothing there is configurable. */
|
|
64
|
-
discord?: DiscordCredentialsStore;
|
|
65
|
-
/** What auto PM last decided (#1161). Only the daemon runs the sweep, so only it wires this. */
|
|
66
|
-
autoPm?: AutoPmReporter;
|
|
67
|
-
/**
|
|
68
|
-
* Run an auto PM sweep now rather than at the next interval (#1210). Same reason `autoPm` is
|
|
69
|
-
* daemon-only: the loop lives in that process, so nowhere else has one to fire. Resolves when
|
|
70
|
-
* the sweep does (#1433), so the trigger RPC can await it and return what it decided.
|
|
71
|
-
*/
|
|
72
|
-
autoPmSweep?: (opts?: {
|
|
73
|
-
drainOnly?: boolean;
|
|
74
|
-
}) => void | Promise<void>;
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* CSRF guard for the state-changing Telefunc calls. A browser attaches an `Origin`
|
|
78
|
-
* header to every cross-site request, so we reject any POST whose Origin is not this
|
|
79
|
-
* same server (or a loopback host) — otherwise a page on `evil.com` could `fetch()` the
|
|
80
|
-
* localhost dashboard and spawn/steer a run. An absent Origin means a non-browser caller
|
|
81
|
-
* (curl, the test suite) with no ambient session to abuse, so it passes. Lives here beside
|
|
82
|
-
* the mount, its only caller.
|
|
83
|
-
*/
|
|
84
|
-
export declare function isSameOriginRequest(req: IncomingMessage): boolean;
|
|
85
|
-
/**
|
|
86
|
-
* DNS-rebinding guard, the other half of the CSRF check above. A page on `evil.com` whose DNS
|
|
87
|
-
* re-answers as `127.0.0.1` is *same-origin* with this server as far as the browser is concerned,
|
|
88
|
-
* so its `fetch()` takes the passing branch of {@link isSameOriginRequest} — and every RPC behind
|
|
89
|
-
* the mount, `sendStart` included, is reachable from a page the user merely visited.
|
|
90
|
-
*
|
|
91
|
-
* The `Host` header is what still gives the attacker away: it carries the name the browser was
|
|
92
|
-
* asked for (`evil.com`), not the address it resolved to. So when we are bound to loopback, the
|
|
93
|
-
* only `Host` a real user's browser can send is a loopback one (or the bound address itself) —
|
|
94
|
-
* anything else is a rebound name and is rejected. An absent `Host` is rejected too when we are
|
|
95
|
-
* enforcing: HTTP/1.1 requires it, and every browser sends it.
|
|
96
|
-
*
|
|
97
|
-
* A non-loopback bind (`--host`, #1051) is reached by a hostname we cannot predict, so there is
|
|
98
|
-
* no allowlist to check against; that case gates behind the shared daemon token instead. Hosts
|
|
99
|
-
* that never pass a bind host at all (the relay, which serves a public domain) are unaffected.
|
|
100
|
-
*/
|
|
101
|
-
export declare function isExpectedHost(req: IncomingMessage, boundHost: string | undefined): boolean;
|
|
102
|
-
/**
|
|
103
|
-
* Mount the dashboard's Telefunc surface (#405) on the daemon's `node:http` server: one
|
|
104
|
-
* `serve()` handles both the RPCs and the Channel SSE stream at `/_telefunc`. Telefunc
|
|
105
|
-
* runs in the daemon process, so a `sendStart` telefunction can call the daemon's own
|
|
106
|
-
* `startRun` via the request context. The `context` is exactly what each telefunction
|
|
107
|
-
* reaches through {@link getContext} (see {@link DashboardContext}): the daemon wires the
|
|
108
|
-
* full set, the relay passes only an events source plus an empty projects provider. Cross-
|
|
109
|
-
* origin POSTs are rejected (CSRF: a page on evil.com must not steer or start a run), as are
|
|
110
|
-
* requests carrying someone else's `Host` when we are bound to loopback (DNS rebinding: the
|
|
111
|
-
* same page must not reach us by pointing its own name at `127.0.0.1`). Pass `opts.host` — the
|
|
112
|
-
* address the server is bound to — to enable that second check; a host serving a public domain
|
|
113
|
-
* (the relay) leaves it unset. Returns whether the request was Telefunc's.
|
|
114
|
-
*/
|
|
115
|
-
export declare function makeTelefuncMount(context?: DashboardContext, opts?: {
|
|
116
|
-
host?: string;
|
|
117
|
-
}): (req: IncomingMessage, res: ServerResponse) => Promise<boolean>;
|
|
118
|
-
//# sourceMappingURL=telefunc-serve.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"telefunc-serve.d.ts","sourceRoot":"","sources":["../../src/dashboard/telefunc-serve.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import { config } from 'telefunc';
|
|
2
|
-
import { Telefunc } from 'telefunc/node';
|
|
3
|
-
import { hostnameFromHostHeader, isLoopbackHost } from '../loopback-host.js';
|
|
4
|
-
import { registerDashboardTelefunctions } from '../dashboard-rpc/register.js';
|
|
5
|
-
let instance;
|
|
6
|
-
function setup() {
|
|
7
|
-
if (instance)
|
|
8
|
-
return instance;
|
|
9
|
-
config.shield = { dev: false, prod: false };
|
|
10
|
-
config.disableNamingConvention = true;
|
|
11
|
-
registerDashboardTelefunctions();
|
|
12
|
-
instance = new Telefunc();
|
|
13
|
-
return instance;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* CSRF guard for the state-changing Telefunc calls. A browser attaches an `Origin`
|
|
17
|
-
* header to every cross-site request, so we reject any POST whose Origin is not this
|
|
18
|
-
* same server (or a loopback host) — otherwise a page on `evil.com` could `fetch()` the
|
|
19
|
-
* localhost dashboard and spawn/steer a run. An absent Origin means a non-browser caller
|
|
20
|
-
* (curl, the test suite) with no ambient session to abuse, so it passes. Lives here beside
|
|
21
|
-
* the mount, its only caller.
|
|
22
|
-
*/
|
|
23
|
-
export function isSameOriginRequest(req) {
|
|
24
|
-
const origin = req.headers.origin;
|
|
25
|
-
if (!origin)
|
|
26
|
-
return true;
|
|
27
|
-
const host = req.headers.host;
|
|
28
|
-
if (host && (origin === `http://${host}` || origin === `https://${host}`))
|
|
29
|
-
return true;
|
|
30
|
-
let hostname;
|
|
31
|
-
try {
|
|
32
|
-
hostname = new URL(origin).hostname;
|
|
33
|
-
}
|
|
34
|
-
catch {
|
|
35
|
-
return false; // malformed Origin: treat as cross-origin
|
|
36
|
-
}
|
|
37
|
-
return isLoopbackHost(hostname);
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* DNS-rebinding guard, the other half of the CSRF check above. A page on `evil.com` whose DNS
|
|
41
|
-
* re-answers as `127.0.0.1` is *same-origin* with this server as far as the browser is concerned,
|
|
42
|
-
* so its `fetch()` takes the passing branch of {@link isSameOriginRequest} — and every RPC behind
|
|
43
|
-
* the mount, `sendStart` included, is reachable from a page the user merely visited.
|
|
44
|
-
*
|
|
45
|
-
* The `Host` header is what still gives the attacker away: it carries the name the browser was
|
|
46
|
-
* asked for (`evil.com`), not the address it resolved to. So when we are bound to loopback, the
|
|
47
|
-
* only `Host` a real user's browser can send is a loopback one (or the bound address itself) —
|
|
48
|
-
* anything else is a rebound name and is rejected. An absent `Host` is rejected too when we are
|
|
49
|
-
* enforcing: HTTP/1.1 requires it, and every browser sends it.
|
|
50
|
-
*
|
|
51
|
-
* A non-loopback bind (`--host`, #1051) is reached by a hostname we cannot predict, so there is
|
|
52
|
-
* no allowlist to check against; that case gates behind the shared daemon token instead. Hosts
|
|
53
|
-
* that never pass a bind host at all (the relay, which serves a public domain) are unaffected.
|
|
54
|
-
*/
|
|
55
|
-
export function isExpectedHost(req, boundHost) {
|
|
56
|
-
if (boundHost === undefined || !isLoopbackHost(boundHost))
|
|
57
|
-
return true;
|
|
58
|
-
const header = req.headers.host;
|
|
59
|
-
if (!header)
|
|
60
|
-
return false;
|
|
61
|
-
const hostname = hostnameFromHostHeader(header);
|
|
62
|
-
return isLoopbackHost(hostname) || hostname === boundHost;
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Mount the dashboard's Telefunc surface (#405) on the daemon's `node:http` server: one
|
|
66
|
-
* `serve()` handles both the RPCs and the Channel SSE stream at `/_telefunc`. Telefunc
|
|
67
|
-
* runs in the daemon process, so a `sendStart` telefunction can call the daemon's own
|
|
68
|
-
* `startRun` via the request context. The `context` is exactly what each telefunction
|
|
69
|
-
* reaches through {@link getContext} (see {@link DashboardContext}): the daemon wires the
|
|
70
|
-
* full set, the relay passes only an events source plus an empty projects provider. Cross-
|
|
71
|
-
* origin POSTs are rejected (CSRF: a page on evil.com must not steer or start a run), as are
|
|
72
|
-
* requests carrying someone else's `Host` when we are bound to loopback (DNS rebinding: the
|
|
73
|
-
* same page must not reach us by pointing its own name at `127.0.0.1`). Pass `opts.host` — the
|
|
74
|
-
* address the server is bound to — to enable that second check; a host serving a public domain
|
|
75
|
-
* (the relay) leaves it unset. Returns whether the request was Telefunc's.
|
|
76
|
-
*/
|
|
77
|
-
export function makeTelefuncMount(context = {}, opts = {}) {
|
|
78
|
-
return async (req, res) => {
|
|
79
|
-
if (!isSameOriginRequest(req)) {
|
|
80
|
-
res.writeHead(403, { 'content-type': 'text/plain' });
|
|
81
|
-
res.end('cross-origin request forbidden');
|
|
82
|
-
return true;
|
|
83
|
-
}
|
|
84
|
-
if (!isExpectedHost(req, opts.host)) {
|
|
85
|
-
res.writeHead(403, { 'content-type': 'text/plain' });
|
|
86
|
-
res.end('unexpected Host header');
|
|
87
|
-
return true;
|
|
88
|
-
}
|
|
89
|
-
const tf = setup();
|
|
90
|
-
// Never let a telefunc failure become an unhandled rejection that kills the daemon:
|
|
91
|
-
// telefunc 0.2.22 throws on a bare `GET /_telefunc` (it passes the request as a body,
|
|
92
|
-
// which `new Request()` rejects for GET), and a browser tab hits that on reconnect.
|
|
93
|
-
try {
|
|
94
|
-
return await tf.serve({ req, res, context: context });
|
|
95
|
-
}
|
|
96
|
-
catch {
|
|
97
|
-
if (!res.headersSent) {
|
|
98
|
-
res.writeHead(400, { 'content-type': 'text/plain' });
|
|
99
|
-
res.end('bad telefunc request');
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
res.end();
|
|
103
|
-
}
|
|
104
|
-
return true;
|
|
105
|
-
}
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
//# sourceMappingURL=telefunc-serve.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"telefunc-serve.js","sourceRoot":"","sources":["../../src/dashboard/telefunc-serve.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { type Ticket, type TicketDetail, type TicketsMeta } from '@gemstack/skill-tickets';
|
|
2
|
-
export type { TicketsMeta, TicketGithubLink } from '@gemstack/skill-tickets';
|
|
3
|
-
/**
|
|
4
|
-
* A ticket as the dashboard shows it: the `tickets` skill's row, with the holder of its claim
|
|
5
|
-
* resolved against this project's own agents (#1748). A lock names an agent id — the same id
|
|
6
|
-
* the agent's checkout is named with — so a claim the daemon minted, or an agent on this machine
|
|
7
|
-
* made with the `tickets` command, resolves to the agent's page and its session name; a holder
|
|
8
|
-
* this project has no record of (another machine's agent, a cloud session's branch name) is
|
|
9
|
-
* shown as written.
|
|
10
|
-
*/
|
|
11
|
-
export interface WorkspaceTicket extends Ticket {
|
|
12
|
-
/** The agent whose id the lock names, when it is one of this project's: its id and, once named, its session name. */
|
|
13
|
-
lockedByAgent?: {
|
|
14
|
-
id: string;
|
|
15
|
-
name?: string;
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
/** One ticket with its entire markdown, for its own page. */
|
|
19
|
-
export interface WorkspaceTicketDetail extends WorkspaceTicket, TicketDetail {
|
|
20
|
-
}
|
|
21
|
-
/** The project's tickets, off the skill's checkout under `.branches/agent-data`, holders resolved. */
|
|
22
|
-
export declare function readTickets(cwd: string): Promise<WorkspaceTicket[]>;
|
|
23
|
-
/** One ticket by filename, full text included; `null` when there is no such ticket. */
|
|
24
|
-
export declare function readTicket(cwd: string, file: string): Promise<WorkspaceTicketDetail | null>;
|
|
25
|
-
/** Whether the project has any ticket at all (#958): a listing, for the onboarding checklist's poll. */
|
|
26
|
-
export declare function hasTickets(cwd: string): Promise<boolean>;
|
|
27
|
-
/** When the tickets last caught up with GitHub (#1208), or `{}` when nothing has recorded it. */
|
|
28
|
-
export declare function readTicketsMeta(cwd: string): Promise<TicketsMeta>;
|
|
29
|
-
//# sourceMappingURL=tickets.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tickets.d.ts","sourceRoot":"","sources":["../../src/dashboard/tickets.ts"],"names":[],"mappings":"AACA,OAAO,EAAsH,KAAK,MAAM,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAG9M,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE5E;;;;;;;GAOG;AACH,MAAM,WAAW,eAAgB,SAAQ,MAAM;IAC7C,qHAAqH;IACrH,aAAa,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAC9C;AAED,6DAA6D;AAC7D,MAAM,WAAW,qBAAsB,SAAQ,eAAe,EAAE,YAAY;CAAG;AAE/E,sGAAsG;AACtG,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAGzE;AAED,uFAAuF;AACvF,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAKjG;AAED,wGAAwG;AACxG,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE9D;AAED,iGAAiG;AACjG,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAEvE"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { sessionNameOf } from '@gemstack/skill-branches/branch-names';
|
|
2
|
-
import { hasTickets as ticketsExist, readTicket as readOne, readTickets as readAll, readTicketsMeta as readMeta, ticketsDir } from '@gemstack/skill-tickets';
|
|
3
|
-
import { readAllAgents } from '../store/index.js';
|
|
4
|
-
/** The project's tickets, off the skill's checkout under `.branches/agent-data`, holders resolved. */
|
|
5
|
-
export async function readTickets(cwd) {
|
|
6
|
-
const tickets = await readAll(ticketsDir(cwd));
|
|
7
|
-
return resolveHolders(cwd, tickets);
|
|
8
|
-
}
|
|
9
|
-
/** One ticket by filename, full text included; `null` when there is no such ticket. */
|
|
10
|
-
export async function readTicket(cwd, file) {
|
|
11
|
-
const ticket = await readOne(ticketsDir(cwd), file);
|
|
12
|
-
if (!ticket)
|
|
13
|
-
return null;
|
|
14
|
-
const [resolved] = await resolveHolders(cwd, [ticket]);
|
|
15
|
-
return resolved;
|
|
16
|
-
}
|
|
17
|
-
/** Whether the project has any ticket at all (#958): a listing, for the onboarding checklist's poll. */
|
|
18
|
-
export async function hasTickets(cwd) {
|
|
19
|
-
return ticketsExist(ticketsDir(cwd));
|
|
20
|
-
}
|
|
21
|
-
/** When the tickets last caught up with GitHub (#1208), or `{}` when nothing has recorded it. */
|
|
22
|
-
export async function readTicketsMeta(cwd) {
|
|
23
|
-
return readMeta(ticketsDir(cwd));
|
|
24
|
-
}
|
|
25
|
-
/** The holder of every locked ticket looked up once against the project's records. */
|
|
26
|
-
async function resolveHolders(cwd, tickets) {
|
|
27
|
-
if (!tickets.some(ticket => ticket.lockedBy !== undefined))
|
|
28
|
-
return tickets;
|
|
29
|
-
const agents = await readAllAgents(cwd).catch(() => []);
|
|
30
|
-
return tickets.map(ticket => {
|
|
31
|
-
const agent = ticket.lockedBy === undefined ? undefined : agents.find(a => a.id === ticket.lockedBy);
|
|
32
|
-
if (!agent)
|
|
33
|
-
return ticket;
|
|
34
|
-
const name = sessionNameOf(agent.branch, agent.id);
|
|
35
|
-
return { ...ticket, lockedByAgent: { id: agent.id, ...(name ? { name } : {}) } };
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=tickets.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tickets.js","sourceRoot":"","sources":["../../src/dashboard/tickets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAA;AACrE,OAAO,EAAE,UAAU,IAAI,YAAY,EAAE,UAAU,IAAI,OAAO,EAAE,WAAW,IAAI,OAAO,EAAE,eAAe,IAAI,QAAQ,EAAE,UAAU,EAAoD,MAAM,yBAAyB,CAAA;AAC9M,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAoBjD,sGAAsG;AACtG,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAW;IAC3C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;IAC9C,OAAO,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;AACrC,CAAC;AAED,uFAAuF;AACvF,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAW,EAAE,IAAY;IACxD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAA;IACnD,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IACxB,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IACtD,OAAO,QAAiC,CAAA;AAC1C,CAAC;AAED,wGAAwG;AACxG,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAW;IAC1C,OAAO,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;AACtC,CAAC;AAED,iGAAiG;AACjG,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAW;IAC/C,OAAO,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;AAClC,CAAC;AAED,sFAAsF;AACtF,KAAK,UAAU,cAAc,CAAmB,GAAW,EAAE,OAAY;IACvE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC;QAAE,OAAO,OAAO,CAAA;IAC1E,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;IACvD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;QAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAA;QACpG,IAAI,CAAC,KAAK;YAAE,OAAO,MAAM,CAAA;QACzB,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAA;QAClD,OAAO,EAAE,GAAG,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAA;IAClF,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
|
-
import { type ProjectsProvider } from './projects.js';
|
|
3
|
-
import { type ProjectWidget } from '../project-widgets.js';
|
|
4
|
-
/** Where widget files are served: `/_widgets/<project id>/<package>/<file>`, each segment encoded. */
|
|
5
|
-
export declare const WIDGETS_PREFIX = "/_widgets";
|
|
6
|
-
/** The URL a widget's module is served at from one project. */
|
|
7
|
-
export declare function widgetUrl(projectId: string, widget: Pick<ProjectWidget, 'package' | 'entry'>): string;
|
|
8
|
-
/**
|
|
9
|
-
* Serve one widget file (#1774): the project must be registered, the package must be a widget of
|
|
10
|
-
* that project, and the file must sit inside the widget module's own directory. Anything else is a
|
|
11
|
-
* 404, never a fallback: a widget URL is asked for by the dashboard's loader, not typed by a person.
|
|
12
|
-
* Served as `no-cache`, since a widget is rebuilt in place under the same name.
|
|
13
|
-
*/
|
|
14
|
-
export declare function serveWidgetFile(req: IncomingMessage, res: ServerResponse, pathname: string, projects?: ProjectsProvider): Promise<void>;
|
|
15
|
-
//# sourceMappingURL=widget-serve.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"widget-serve.d.ts","sourceRoot":"","sources":["../../src/dashboard/widget-serve.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAEhE,OAAO,EAA2B,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAC9E,OAAO,EAAiC,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAEzF,sGAAsG;AACtG,eAAO,MAAM,cAAc,cAAc,CAAA;AAEzC,+DAA+D;AAC/D,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,MAAM,CAGrG;AAUD;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,gBAA4C,GACrD,OAAO,CAAC,IAAI,CAAC,CAef"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { readFile } from 'node:fs/promises';
|
|
2
|
-
import { contentTypeFor } from './content-type.js';
|
|
3
|
-
import { defaultProjectsProvider } from './projects.js';
|
|
4
|
-
import { findProjectWidget, widgetFile } from '../project-widgets.js';
|
|
5
|
-
/** Where widget files are served: `/_widgets/<project id>/<package>/<file>`, each segment encoded. */
|
|
6
|
-
export const WIDGETS_PREFIX = '/_widgets';
|
|
7
|
-
/** The URL a widget's module is served at from one project. */
|
|
8
|
-
export function widgetUrl(projectId, widget) {
|
|
9
|
-
const file = widget.entry.split('/').map(encodeURIComponent).join('/');
|
|
10
|
-
return `${WIDGETS_PREFIX}/${encodeURIComponent(projectId)}/${encodeURIComponent(widget.package)}/${file}`;
|
|
11
|
-
}
|
|
12
|
-
function decode(segment) {
|
|
13
|
-
try {
|
|
14
|
-
return decodeURIComponent(segment);
|
|
15
|
-
}
|
|
16
|
-
catch {
|
|
17
|
-
return undefined;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Serve one widget file (#1774): the project must be registered, the package must be a widget of
|
|
22
|
-
* that project, and the file must sit inside the widget module's own directory. Anything else is a
|
|
23
|
-
* 404, never a fallback: a widget URL is asked for by the dashboard's loader, not typed by a person.
|
|
24
|
-
* Served as `no-cache`, since a widget is rebuilt in place under the same name.
|
|
25
|
-
*/
|
|
26
|
-
export async function serveWidgetFile(req, res, pathname, projects = defaultProjectsProvider()) {
|
|
27
|
-
const notFound = () => void res.writeHead(404, { 'content-type': 'text/plain' }).end('no such widget file');
|
|
28
|
-
if (req.method !== 'GET' && req.method !== 'HEAD')
|
|
29
|
-
return void res.writeHead(405, { allow: 'GET, HEAD' }).end();
|
|
30
|
-
const [projectSegment, packageSegment, ...rest] = pathname.slice(WIDGETS_PREFIX.length + 1).split('/');
|
|
31
|
-
const projectId = projectSegment !== undefined ? decode(projectSegment) : undefined;
|
|
32
|
-
const pkg = packageSegment !== undefined ? decode(packageSegment) : undefined;
|
|
33
|
-
const rel = rest.map(decode);
|
|
34
|
-
if (!projectId || !pkg || rel.length === 0 || rel.some(part => part === undefined))
|
|
35
|
-
return notFound();
|
|
36
|
-
const root = await projects.resolvePath(projectId);
|
|
37
|
-
const widget = root ? await findProjectWidget(root, pkg).catch(() => undefined) : undefined;
|
|
38
|
-
const file = widget ? await widgetFile(widget, rel.join('/')) : undefined;
|
|
39
|
-
const body = file ? await readFile(file).catch(() => undefined) : undefined;
|
|
40
|
-
if (!file || body === undefined)
|
|
41
|
-
return notFound();
|
|
42
|
-
res.writeHead(200, { 'content-type': contentTypeFor(file), 'cache-control': 'no-cache' });
|
|
43
|
-
res.end(req.method === 'HEAD' ? undefined : body);
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=widget-serve.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"widget-serve.js","sourceRoot":"","sources":["../../src/dashboard/widget-serve.ts"],"names":[],"mappings":"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"}
|