@loompad/cli 0.1.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ARCHITECTURE.md +96 -11
- package/CHANGELOG.md +1042 -0
- package/README.md +1473 -44
- package/THIRD_PARTY_NOTICES.md +275 -0
- package/dist/adapters/antigravity-cli.d.ts +62 -0
- package/dist/adapters/antigravity-cli.js +258 -0
- package/dist/adapters/antigravity-cli.js.map +1 -0
- package/dist/adapters/base.d.ts +61 -9
- package/dist/adapters/base.js +266 -15
- package/dist/adapters/base.js.map +1 -1
- package/dist/adapters/bridges/antigravity.d.ts +9 -12
- package/dist/adapters/bridges/antigravity.js +9 -12
- package/dist/adapters/bridges/antigravity.js.map +1 -1
- package/dist/adapters/echo.d.ts +1 -0
- package/dist/adapters/echo.js +59 -3
- package/dist/adapters/echo.js.map +1 -1
- package/dist/adapters/grok.d.ts +7 -0
- package/dist/adapters/grok.js +20 -10
- package/dist/adapters/grok.js.map +1 -1
- package/dist/adapters/index.d.ts +5 -1
- package/dist/adapters/index.js +53 -7
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/model.d.ts +137 -0
- package/dist/adapters/model.js +527 -0
- package/dist/adapters/model.js.map +1 -0
- package/dist/adapters/opencode.d.ts +101 -1
- package/dist/adapters/opencode.js +874 -98
- package/dist/adapters/opencode.js.map +1 -1
- package/dist/cli/doctor.d.ts +32 -0
- package/dist/cli/doctor.js +89 -4
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/index.js +2651 -87
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/tui-model.js +3 -1
- package/dist/cli/tui-model.js.map +1 -1
- package/dist/cli/tui.js +44 -1
- package/dist/cli/tui.js.map +1 -1
- package/dist/cli/ui.d.ts +2 -0
- package/dist/cli/ui.js +13 -0
- package/dist/cli/ui.js.map +1 -1
- package/dist/core/ades.d.ts +32 -16
- package/dist/core/ades.js +57 -20
- package/dist/core/ades.js.map +1 -1
- package/dist/core/agent-state.d.ts +14 -0
- package/dist/core/agent-state.js +32 -0
- package/dist/core/agent-state.js.map +1 -0
- package/dist/core/approvals.d.ts +33 -0
- package/dist/core/approvals.js +29 -0
- package/dist/core/approvals.js.map +1 -0
- package/dist/core/backup.d.ts +19 -0
- package/dist/core/backup.js +86 -0
- package/dist/core/backup.js.map +1 -0
- package/dist/core/baton.d.ts +2 -2
- package/dist/core/baton.js.map +1 -1
- package/dist/core/brain-extract.d.ts +17 -0
- package/dist/core/brain-extract.js +28 -2
- package/dist/core/brain-extract.js.map +1 -1
- package/dist/core/brain-index.d.ts +71 -0
- package/dist/core/brain-index.js +204 -5
- package/dist/core/brain-index.js.map +1 -1
- package/dist/core/brain.d.ts +58 -2
- package/dist/core/brain.js +79 -1
- package/dist/core/brain.js.map +1 -1
- package/dist/core/chat-import.d.ts +71 -0
- package/dist/core/chat-import.js +419 -0
- package/dist/core/chat-import.js.map +1 -0
- package/dist/core/checkpoint.d.ts +107 -0
- package/dist/core/checkpoint.js +259 -0
- package/dist/core/checkpoint.js.map +1 -0
- package/dist/core/claude-cli.js +1 -1
- package/dist/core/claude-cli.js.map +1 -1
- package/dist/core/continuity/artifacts.d.ts +14 -0
- package/dist/core/continuity/artifacts.js +118 -0
- package/dist/core/continuity/artifacts.js.map +1 -0
- package/dist/core/continuity/capabilities.d.ts +65 -0
- package/dist/core/continuity/capabilities.js +129 -0
- package/dist/core/continuity/capabilities.js.map +1 -0
- package/dist/core/continuity/contracts.d.ts +352 -0
- package/dist/core/continuity/contracts.js +117 -0
- package/dist/core/continuity/contracts.js.map +1 -0
- package/dist/core/continuity/engine.d.ts +55 -0
- package/dist/core/continuity/engine.js +504 -0
- package/dist/core/continuity/engine.js.map +1 -0
- package/dist/core/continuity/store.d.ts +73 -0
- package/dist/core/continuity/store.js +438 -0
- package/dist/core/continuity/store.js.map +1 -0
- package/dist/core/conversations.d.ts +19 -0
- package/dist/core/conversations.js +87 -0
- package/dist/core/conversations.js.map +1 -0
- package/dist/core/crew-coordination.d.ts +6 -0
- package/dist/core/crew-coordination.js +24 -0
- package/dist/core/crew-coordination.js.map +1 -0
- package/dist/core/crew-policy.d.ts +18 -0
- package/dist/core/crew-policy.js +40 -0
- package/dist/core/crew-policy.js.map +1 -0
- package/dist/core/crew-protocol.d.ts +64 -0
- package/dist/core/crew-protocol.js +146 -0
- package/dist/core/crew-protocol.js.map +1 -0
- package/dist/core/crew-requests.d.ts +14 -0
- package/dist/core/crew-requests.js +22 -0
- package/dist/core/crew-requests.js.map +1 -0
- package/dist/core/crew.d.ts +395 -0
- package/dist/core/crew.js +1857 -0
- package/dist/core/crew.js.map +1 -0
- package/dist/core/digest.d.ts +40 -0
- package/dist/core/digest.js +94 -0
- package/dist/core/digest.js.map +1 -0
- package/dist/core/distill.js +3 -5
- package/dist/core/distill.js.map +1 -1
- package/dist/core/eventlog.d.ts +27 -25
- package/dist/core/eventlog.js +97 -150
- package/dist/core/eventlog.js.map +1 -1
- package/dist/core/events/contracts.d.ts +51 -0
- package/dist/core/events/contracts.js +2 -0
- package/dist/core/events/contracts.js.map +1 -0
- package/dist/core/events/jsonl-store.d.ts +23 -0
- package/dist/core/events/jsonl-store.js +90 -0
- package/dist/core/events/jsonl-store.js.map +1 -0
- package/dist/core/events/sqlite-store.d.ts +37 -0
- package/dist/core/events/sqlite-store.js +215 -0
- package/dist/core/events/sqlite-store.js.map +1 -0
- package/dist/core/forecast.d.ts +44 -0
- package/dist/core/forecast.js +46 -0
- package/dist/core/forecast.js.map +1 -0
- package/dist/core/free-pool.d.ts +65 -0
- package/dist/core/free-pool.js +171 -0
- package/dist/core/free-pool.js.map +1 -0
- package/dist/core/git.d.ts +30 -0
- package/dist/core/git.js +50 -2
- package/dist/core/git.js.map +1 -1
- package/dist/core/github-events.d.ts +53 -0
- package/dist/core/github-events.js +227 -0
- package/dist/core/github-events.js.map +1 -0
- package/dist/core/goal-lanes.d.ts +53 -0
- package/dist/core/goal-lanes.js +99 -0
- package/dist/core/goal-lanes.js.map +1 -0
- package/dist/core/hosted.d.ts +27 -0
- package/dist/core/hosted.js +50 -0
- package/dist/core/hosted.js.map +1 -0
- package/dist/core/http-server.d.ts +5 -0
- package/dist/core/http-server.js +8 -0
- package/dist/core/http-server.js.map +1 -0
- package/dist/core/invite-link.d.ts +31 -0
- package/dist/core/invite-link.js +45 -0
- package/dist/core/invite-link.js.map +1 -0
- package/dist/core/loops.d.ts +37 -0
- package/dist/core/loops.js +81 -0
- package/dist/core/loops.js.map +1 -0
- package/dist/core/mcp-catalog.d.ts +182 -0
- package/dist/core/mcp-catalog.js +431 -0
- package/dist/core/mcp-catalog.js.map +1 -0
- package/dist/core/mcp.d.ts +87 -0
- package/dist/core/mcp.js +181 -0
- package/dist/core/mcp.js.map +1 -0
- package/dist/core/memory.d.ts +1 -0
- package/dist/core/memory.js +5 -2
- package/dist/core/memory.js.map +1 -1
- package/dist/core/model-tools.d.ts +97 -0
- package/dist/core/model-tools.js +388 -0
- package/dist/core/model-tools.js.map +1 -0
- package/dist/core/notify.js +19 -1
- package/dist/core/notify.js.map +1 -1
- package/dist/core/orchestra.d.ts +635 -0
- package/dist/core/orchestra.js +2120 -0
- package/dist/core/orchestra.js.map +1 -0
- package/dist/core/permissions.d.ts +56 -0
- package/dist/core/permissions.js +122 -0
- package/dist/core/permissions.js.map +1 -0
- package/dist/core/preview-proxy.d.ts +70 -0
- package/dist/core/preview-proxy.js +563 -0
- package/dist/core/preview-proxy.js.map +1 -0
- package/dist/core/preview-shot.d.ts +46 -0
- package/dist/core/preview-shot.js +109 -0
- package/dist/core/preview-shot.js.map +1 -0
- package/dist/core/process.d.ts +36 -0
- package/dist/core/process.js +168 -0
- package/dist/core/process.js.map +1 -0
- package/dist/core/prompt-queue.d.ts +136 -0
- package/dist/core/prompt-queue.js +269 -0
- package/dist/core/prompt-queue.js.map +1 -0
- package/dist/core/prompts.d.ts +53 -0
- package/dist/core/prompts.js +127 -0
- package/dist/core/prompts.js.map +1 -0
- package/dist/core/proof.d.ts +82 -0
- package/dist/core/proof.js +216 -0
- package/dist/core/proof.js.map +1 -0
- package/dist/core/provider-text.d.ts +23 -0
- package/dist/core/provider-text.js +66 -0
- package/dist/core/provider-text.js.map +1 -0
- package/dist/core/providers.d.ts +152 -0
- package/dist/core/providers.js +343 -0
- package/dist/core/providers.js.map +1 -0
- package/dist/core/quota.d.ts +33 -0
- package/dist/core/quota.js +74 -0
- package/dist/core/quota.js.map +1 -0
- package/dist/core/recipes.d.ts +50 -0
- package/dist/core/recipes.js +99 -0
- package/dist/core/recipes.js.map +1 -0
- package/dist/core/registry.d.ts +54 -0
- package/dist/core/registry.js +62 -5
- package/dist/core/registry.js.map +1 -1
- package/dist/core/relay-client.d.ts +67 -0
- package/dist/core/relay-client.js +184 -0
- package/dist/core/relay-client.js.map +1 -0
- package/dist/core/relay-protocol.d.ts +140 -0
- package/dist/core/relay-protocol.js +189 -0
- package/dist/core/relay-protocol.js.map +1 -0
- package/dist/core/replay.d.ts +18 -0
- package/dist/core/replay.js +191 -0
- package/dist/core/replay.js.map +1 -0
- package/dist/core/review-triage.d.ts +41 -0
- package/dist/core/review-triage.js +124 -0
- package/dist/core/review-triage.js.map +1 -0
- package/dist/core/router.js +2 -2
- package/dist/core/router.js.map +1 -1
- package/dist/core/routes.d.ts +39 -3
- package/dist/core/routes.js +137 -4
- package/dist/core/routes.js.map +1 -1
- package/dist/core/run-command.d.ts +14 -0
- package/dist/core/run-command.js +45 -0
- package/dist/core/run-command.js.map +1 -0
- package/dist/core/runner-setup.d.ts +36 -0
- package/dist/core/runner-setup.js +114 -0
- package/dist/core/runner-setup.js.map +1 -0
- package/dist/core/search.js +0 -0
- package/dist/core/search.js.map +1 -1
- package/dist/core/semantic.d.ts +92 -0
- package/dist/core/semantic.js +227 -0
- package/dist/core/semantic.js.map +1 -0
- package/dist/core/servers.d.ts +115 -0
- package/dist/core/servers.js +305 -0
- package/dist/core/servers.js.map +1 -0
- package/dist/core/setup.js +64 -6
- package/dist/core/setup.js.map +1 -1
- package/dist/core/shield.d.ts +17 -0
- package/dist/core/shield.js +81 -0
- package/dist/core/shield.js.map +1 -0
- package/dist/core/shift.d.ts +69 -0
- package/dist/core/shift.js +120 -0
- package/dist/core/shift.js.map +1 -0
- package/dist/core/skill-install.d.ts +125 -0
- package/dist/core/skill-install.js +328 -0
- package/dist/core/skill-install.js.map +1 -0
- package/dist/core/skills.d.ts +116 -0
- package/dist/core/skills.js +223 -0
- package/dist/core/skills.js.map +1 -0
- package/dist/core/step-conditions.d.ts +65 -0
- package/dist/core/step-conditions.js +102 -0
- package/dist/core/step-conditions.js.map +1 -0
- package/dist/core/subagents.d.ts +45 -0
- package/dist/core/subagents.js +90 -0
- package/dist/core/subagents.js.map +1 -0
- package/dist/core/team-canon.d.ts +42 -0
- package/dist/core/team-canon.js +121 -0
- package/dist/core/team-canon.js.map +1 -0
- package/dist/core/team-crypto.d.ts +97 -0
- package/dist/core/team-crypto.js +175 -0
- package/dist/core/team-crypto.js.map +1 -0
- package/dist/core/team-hub.d.ts +514 -0
- package/dist/core/team-hub.js +964 -0
- package/dist/core/team-hub.js.map +1 -0
- package/dist/core/team-landing.d.ts +239 -0
- package/dist/core/team-landing.js +504 -0
- package/dist/core/team-landing.js.map +1 -0
- package/dist/core/team-leases.d.ts +44 -0
- package/dist/core/team-leases.js +145 -0
- package/dist/core/team-leases.js.map +1 -0
- package/dist/core/team-memory.d.ts +42 -0
- package/dist/core/team-memory.js +84 -0
- package/dist/core/team-memory.js.map +1 -0
- package/dist/core/team-policy.d.ts +85 -0
- package/dist/core/team-policy.js +191 -0
- package/dist/core/team-policy.js.map +1 -0
- package/dist/core/thread-md.d.ts +6 -0
- package/dist/core/thread-md.js +42 -0
- package/dist/core/thread-md.js.map +1 -0
- package/dist/core/turn-stats.d.ts +61 -0
- package/dist/core/turn-stats.js +124 -0
- package/dist/core/turn-stats.js.map +1 -0
- package/dist/core/updater.d.ts +73 -0
- package/dist/core/updater.js +153 -0
- package/dist/core/updater.js.map +1 -0
- package/dist/core/usage.d.ts +75 -0
- package/dist/core/usage.js +163 -0
- package/dist/core/usage.js.map +1 -0
- package/dist/core/windows-jobs.d.ts +15 -0
- package/dist/core/windows-jobs.js +170 -0
- package/dist/core/windows-jobs.js.map +1 -0
- package/dist/core/worktree-merge.d.ts +57 -0
- package/dist/core/worktree-merge.js +123 -0
- package/dist/core/worktree-merge.js.map +1 -0
- package/dist/core/worktree.d.ts +5 -0
- package/dist/core/worktree.js +45 -5
- package/dist/core/worktree.js.map +1 -1
- package/dist/core/worktrees.d.ts +6 -0
- package/dist/core/worktrees.js +21 -0
- package/dist/core/worktrees.js.map +1 -0
- package/dist/daemon/app-page.d.ts +0 -17
- package/dist/daemon/app-page.js +10 -6346
- package/dist/daemon/app-page.js.map +1 -1
- package/dist/daemon/auth.d.ts +24 -3
- package/dist/daemon/auth.js +66 -7
- package/dist/daemon/auth.js.map +1 -1
- package/dist/daemon/board.d.ts +7 -0
- package/dist/daemon/board.js +12 -1
- package/dist/daemon/board.js.map +1 -1
- package/dist/daemon/brand-icons.d.ts +6 -1
- package/dist/daemon/brand-icons.js +11 -3
- package/dist/daemon/brand-icons.js.map +1 -1
- package/dist/daemon/client.d.ts +665 -1
- package/dist/daemon/client.js +381 -3
- package/dist/daemon/client.js.map +1 -1
- package/dist/daemon/delivery.d.ts +34 -0
- package/dist/daemon/delivery.js +63 -0
- package/dist/daemon/delivery.js.map +1 -0
- package/dist/daemon/deploys.d.ts +62 -0
- package/dist/daemon/deploys.js +159 -0
- package/dist/daemon/deploys.js.map +1 -0
- package/dist/daemon/landing.d.ts +192 -0
- package/dist/daemon/landing.js +992 -0
- package/dist/daemon/landing.js.map +1 -0
- package/dist/daemon/onboard.d.ts +150 -0
- package/dist/daemon/onboard.js +390 -0
- package/dist/daemon/onboard.js.map +1 -0
- package/dist/daemon/proof.d.ts +70 -0
- package/dist/daemon/proof.js +172 -0
- package/dist/daemon/proof.js.map +1 -0
- package/dist/daemon/push.d.ts +19 -1
- package/dist/daemon/push.js +90 -3
- package/dist/daemon/push.js.map +1 -1
- package/dist/daemon/relay.d.ts +82 -0
- package/dist/daemon/relay.js +351 -0
- package/dist/daemon/relay.js.map +1 -0
- package/dist/daemon/routes/agent-discovery.d.ts +4 -0
- package/dist/daemon/routes/agent-discovery.js +29 -0
- package/dist/daemon/routes/agent-discovery.js.map +1 -0
- package/dist/daemon/routes/agent-settings.d.ts +4 -0
- package/dist/daemon/routes/agent-settings.js +94 -0
- package/dist/daemon/routes/agent-settings.js.map +1 -0
- package/dist/daemon/routes/agents.d.ts +4 -0
- package/dist/daemon/routes/agents.js +105 -0
- package/dist/daemon/routes/agents.js.map +1 -0
- package/dist/daemon/routes/alerts.d.ts +4 -0
- package/dist/daemon/routes/alerts.js +137 -0
- package/dist/daemon/routes/alerts.js.map +1 -0
- package/dist/daemon/routes/approvals.d.ts +4 -0
- package/dist/daemon/routes/approvals.js +40 -0
- package/dist/daemon/routes/approvals.js.map +1 -0
- package/dist/daemon/routes/assets.d.ts +3 -0
- package/dist/daemon/routes/assets.js +64 -0
- package/dist/daemon/routes/assets.js.map +1 -0
- package/dist/daemon/routes/board.d.ts +4 -0
- package/dist/daemon/routes/board.js +147 -0
- package/dist/daemon/routes/board.js.map +1 -0
- package/dist/daemon/routes/brain.d.ts +4 -0
- package/dist/daemon/routes/brain.js +270 -0
- package/dist/daemon/routes/brain.js.map +1 -0
- package/dist/daemon/routes/chats.d.ts +4 -0
- package/dist/daemon/routes/chats.js +249 -0
- package/dist/daemon/routes/chats.js.map +1 -0
- package/dist/daemon/routes/clients.d.ts +4 -0
- package/dist/daemon/routes/clients.js +49 -0
- package/dist/daemon/routes/clients.js.map +1 -0
- package/dist/daemon/routes/cloud.d.ts +4 -0
- package/dist/daemon/routes/cloud.js +46 -0
- package/dist/daemon/routes/cloud.js.map +1 -0
- package/dist/daemon/routes/config.d.ts +4 -0
- package/dist/daemon/routes/config.js +35 -0
- package/dist/daemon/routes/config.js.map +1 -0
- package/dist/daemon/routes/context.d.ts +51 -0
- package/dist/daemon/routes/context.js +2 -0
- package/dist/daemon/routes/context.js.map +1 -0
- package/dist/daemon/routes/crews.d.ts +4 -0
- package/dist/daemon/routes/crews.js +149 -0
- package/dist/daemon/routes/crews.js.map +1 -0
- package/dist/daemon/routes/files.d.ts +3 -0
- package/dist/daemon/routes/files.js +253 -0
- package/dist/daemon/routes/files.js.map +1 -0
- package/dist/daemon/routes/git.d.ts +4 -0
- package/dist/daemon/routes/git.js +96 -0
- package/dist/daemon/routes/git.js.map +1 -0
- package/dist/daemon/routes/history.d.ts +4 -0
- package/dist/daemon/routes/history.js +101 -0
- package/dist/daemon/routes/history.js.map +1 -0
- package/dist/daemon/routes/integrations-project.d.ts +3 -0
- package/dist/daemon/routes/integrations-project.js +103 -0
- package/dist/daemon/routes/integrations-project.js.map +1 -0
- package/dist/daemon/routes/integrations.d.ts +3 -0
- package/dist/daemon/routes/integrations.js +111 -0
- package/dist/daemon/routes/integrations.js.map +1 -0
- package/dist/daemon/routes/logs.d.ts +3 -0
- package/dist/daemon/routes/logs.js +40 -0
- package/dist/daemon/routes/logs.js.map +1 -0
- package/dist/daemon/routes/messages.d.ts +4 -0
- package/dist/daemon/routes/messages.js +60 -0
- package/dist/daemon/routes/messages.js.map +1 -0
- package/dist/daemon/routes/observability.d.ts +4 -0
- package/dist/daemon/routes/observability.js +247 -0
- package/dist/daemon/routes/observability.js.map +1 -0
- package/dist/daemon/routes/onboard.d.ts +12 -0
- package/dist/daemon/routes/onboard.js +67 -0
- package/dist/daemon/routes/onboard.js.map +1 -0
- package/dist/daemon/routes/orchestra.d.ts +4 -0
- package/dist/daemon/routes/orchestra.js +110 -0
- package/dist/daemon/routes/orchestra.js.map +1 -0
- package/dist/daemon/routes/pairing.d.ts +4 -0
- package/dist/daemon/routes/pairing.js +155 -0
- package/dist/daemon/routes/pairing.js.map +1 -0
- package/dist/daemon/routes/preview.d.ts +24 -0
- package/dist/daemon/routes/preview.js +122 -0
- package/dist/daemon/routes/preview.js.map +1 -0
- package/dist/daemon/routes/project-actions.d.ts +4 -0
- package/dist/daemon/routes/project-actions.js +53 -0
- package/dist/daemon/routes/project-actions.js.map +1 -0
- package/dist/daemon/routes/project-team.d.ts +4 -0
- package/dist/daemon/routes/project-team.js +201 -0
- package/dist/daemon/routes/project-team.js.map +1 -0
- package/dist/daemon/routes/projects.d.ts +14 -0
- package/dist/daemon/routes/projects.js +138 -0
- package/dist/daemon/routes/projects.js.map +1 -0
- package/dist/daemon/routes/prompts.d.ts +4 -0
- package/dist/daemon/routes/prompts.js +44 -0
- package/dist/daemon/routes/prompts.js.map +1 -0
- package/dist/daemon/routes/proof.d.ts +4 -0
- package/dist/daemon/routes/proof.js +22 -0
- package/dist/daemon/routes/proof.js.map +1 -0
- package/dist/daemon/routes/providers.d.ts +3 -0
- package/dist/daemon/routes/providers.js +60 -0
- package/dist/daemon/routes/providers.js.map +1 -0
- package/dist/daemon/routes/public.d.ts +4 -0
- package/dist/daemon/routes/public.js +64 -0
- package/dist/daemon/routes/public.js.map +1 -0
- package/dist/daemon/routes/queue.d.ts +4 -0
- package/dist/daemon/routes/queue.js +140 -0
- package/dist/daemon/routes/queue.js.map +1 -0
- package/dist/daemon/routes/routing.d.ts +4 -0
- package/dist/daemon/routes/routing.js +61 -0
- package/dist/daemon/routes/routing.js.map +1 -0
- package/dist/daemon/routes/runtime-handler.d.ts +2 -0
- package/dist/daemon/routes/runtime-handler.js +63 -0
- package/dist/daemon/routes/runtime-handler.js.map +1 -0
- package/dist/daemon/routes/search.d.ts +4 -0
- package/dist/daemon/routes/search.js +17 -0
- package/dist/daemon/routes/search.js.map +1 -0
- package/dist/daemon/routes/servers.d.ts +4 -0
- package/dist/daemon/routes/servers.js +133 -0
- package/dist/daemon/routes/servers.js.map +1 -0
- package/dist/daemon/routes/setup.d.ts +3 -0
- package/dist/daemon/routes/setup.js +50 -0
- package/dist/daemon/routes/setup.js.map +1 -0
- package/dist/daemon/routes/shift.d.ts +4 -0
- package/dist/daemon/routes/shift.js +30 -0
- package/dist/daemon/routes/shift.js.map +1 -0
- package/dist/daemon/routes/specs.d.ts +4 -0
- package/dist/daemon/routes/specs.js +57 -0
- package/dist/daemon/routes/specs.js.map +1 -0
- package/dist/daemon/routes/task-delivery.d.ts +4 -0
- package/dist/daemon/routes/task-delivery.js +38 -0
- package/dist/daemon/routes/task-delivery.js.map +1 -0
- package/dist/daemon/routes/team.d.ts +4 -0
- package/dist/daemon/routes/team.js +193 -0
- package/dist/daemon/routes/team.js.map +1 -0
- package/dist/daemon/routes/terminals.d.ts +4 -0
- package/dist/daemon/routes/terminals.js +87 -0
- package/dist/daemon/routes/terminals.js.map +1 -0
- package/dist/daemon/routes/tools.d.ts +4 -0
- package/dist/daemon/routes/tools.js +180 -0
- package/dist/daemon/routes/tools.js.map +1 -0
- package/dist/daemon/routes/updates.d.ts +4 -0
- package/dist/daemon/routes/updates.js +89 -0
- package/dist/daemon/routes/updates.js.map +1 -0
- package/dist/daemon/routes/voice.d.ts +4 -0
- package/dist/daemon/routes/voice.js +53 -0
- package/dist/daemon/routes/voice.js.map +1 -0
- package/dist/daemon/runner.d.ts +186 -0
- package/dist/daemon/runner.js +612 -0
- package/dist/daemon/runner.js.map +1 -0
- package/dist/daemon/runtime/accounting.d.ts +130 -0
- package/dist/daemon/runtime/accounting.js +303 -0
- package/dist/daemon/runtime/accounting.js.map +1 -0
- package/dist/daemon/runtime/agents.d.ts +16 -0
- package/dist/daemon/runtime/agents.js +71 -0
- package/dist/daemon/runtime/agents.js.map +1 -0
- package/dist/daemon/runtime/briefings.d.ts +134 -0
- package/dist/daemon/runtime/briefings.js +329 -0
- package/dist/daemon/runtime/briefings.js.map +1 -0
- package/dist/daemon/runtime/native-usage.d.ts +21 -0
- package/dist/daemon/runtime/native-usage.js +71 -0
- package/dist/daemon/runtime/native-usage.js.map +1 -0
- package/dist/daemon/runtime/queue.d.ts +94 -0
- package/dist/daemon/runtime/queue.js +222 -0
- package/dist/daemon/runtime/queue.js.map +1 -0
- package/dist/daemon/runtime/relay.d.ts +93 -0
- package/dist/daemon/runtime/relay.js +240 -0
- package/dist/daemon/runtime/relay.js.map +1 -0
- package/dist/daemon/runtime/turns.d.ts +202 -0
- package/dist/daemon/runtime/turns.js +663 -0
- package/dist/daemon/runtime/turns.js.map +1 -0
- package/dist/daemon/runtime-support.d.ts +76 -0
- package/dist/daemon/runtime-support.js +134 -0
- package/dist/daemon/runtime-support.js.map +1 -0
- package/dist/daemon/runtime.d.ts +739 -70
- package/dist/daemon/runtime.js +2751 -470
- package/dist/daemon/runtime.js.map +1 -1
- package/dist/daemon/server.d.ts +82 -55
- package/dist/daemon/server.js +674 -1435
- package/dist/daemon/server.js.map +1 -1
- package/dist/daemon/shift.d.ts +70 -0
- package/dist/daemon/shift.js +170 -0
- package/dist/daemon/shift.js.map +1 -0
- package/dist/daemon/specs.d.ts +92 -0
- package/dist/daemon/specs.js +285 -0
- package/dist/daemon/specs.js.map +1 -0
- package/dist/daemon/system.d.ts +208 -0
- package/dist/daemon/system.js +557 -0
- package/dist/daemon/system.js.map +1 -0
- package/dist/daemon/tasks.js +1 -1
- package/dist/daemon/team-brain.d.ts +136 -0
- package/dist/daemon/team-brain.js +659 -0
- package/dist/daemon/team-brain.js.map +1 -0
- package/dist/daemon/team-coordinator.d.ts +78 -0
- package/dist/daemon/team-coordinator.js +408 -0
- package/dist/daemon/team-coordinator.js.map +1 -0
- package/dist/daemon/team.d.ts +339 -0
- package/dist/daemon/team.js +1433 -0
- package/dist/daemon/team.js.map +1 -0
- package/dist/daemon/terminals.d.ts +22 -3
- package/dist/daemon/terminals.js +236 -16
- package/dist/daemon/terminals.js.map +1 -1
- package/dist/hub/client.d.ts +120 -0
- package/dist/hub/client.js +228 -0
- package/dist/hub/client.js.map +1 -0
- package/dist/hub/server.d.ts +32 -0
- package/dist/hub/server.js +180 -0
- package/dist/hub/server.js.map +1 -0
- package/dist/hub/supabase-client.d.ts +220 -0
- package/dist/hub/supabase-client.js +843 -0
- package/dist/hub/supabase-client.js.map +1 -0
- package/dist/observability/ask.d.ts +91 -0
- package/dist/observability/ask.js +179 -0
- package/dist/observability/ask.js.map +1 -0
- package/dist/observability/clickhouse.d.ts +33 -0
- package/dist/observability/clickhouse.js +48 -0
- package/dist/observability/clickhouse.js.map +1 -0
- package/dist/observability/decisions.d.ts +176 -0
- package/dist/observability/decisions.js +377 -0
- package/dist/observability/decisions.js.map +1 -0
- package/dist/observability/index.d.ts +89 -0
- package/dist/observability/index.js +348 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/insights.d.ts +151 -0
- package/dist/observability/insights.js +319 -0
- package/dist/observability/insights.js.map +1 -0
- package/dist/observability/logs-query.d.ts +82 -0
- package/dist/observability/logs-query.js +102 -0
- package/dist/observability/logs-query.js.map +1 -0
- package/dist/observability/logs.d.ts +72 -0
- package/dist/observability/logs.js +295 -0
- package/dist/observability/logs.js.map +1 -0
- package/dist/observability/metrics.d.ts +86 -0
- package/dist/observability/metrics.js +303 -0
- package/dist/observability/metrics.js.map +1 -0
- package/dist/observability/otlp.d.ts +127 -0
- package/dist/observability/otlp.js +242 -0
- package/dist/observability/otlp.js.map +1 -0
- package/dist/observability/snapshots.d.ts +43 -0
- package/dist/observability/snapshots.js +129 -0
- package/dist/observability/snapshots.js.map +1 -0
- package/dist/observability/triage.d.ts +49 -0
- package/dist/observability/triage.js +284 -0
- package/dist/observability/triage.js.map +1 -0
- package/dist/providers/adapter.d.ts +50 -0
- package/dist/providers/adapter.js +38 -0
- package/dist/providers/adapter.js.map +1 -0
- package/dist/providers/agent.d.ts +110 -0
- package/dist/providers/agent.js +487 -0
- package/dist/providers/agent.js.map +1 -0
- package/dist/providers/approvals.d.ts +24 -0
- package/dist/providers/approvals.js +78 -0
- package/dist/providers/approvals.js.map +1 -0
- package/dist/providers/attachments.d.ts +20 -0
- package/dist/providers/attachments.js +51 -0
- package/dist/providers/attachments.js.map +1 -0
- package/dist/providers/claude/adapter.d.ts +99 -0
- package/dist/providers/claude/adapter.js +790 -0
- package/dist/providers/claude/adapter.js.map +1 -0
- package/dist/providers/codex/adapter.d.ts +113 -0
- package/dist/providers/codex/adapter.js +881 -0
- package/dist/providers/codex/adapter.js.map +1 -0
- package/dist/providers/codex/instructions.d.ts +11 -0
- package/dist/providers/codex/instructions.js +154 -0
- package/dist/providers/codex/instructions.js.map +1 -0
- package/dist/providers/codex/rpc.d.ts +36 -0
- package/dist/providers/codex/rpc.js +104 -0
- package/dist/providers/codex/rpc.js.map +1 -0
- package/dist/providers/contracts.d.ts +339 -0
- package/dist/providers/contracts.js +19 -0
- package/dist/providers/contracts.js.map +1 -0
- package/dist/providers/directory.d.ts +70 -0
- package/dist/providers/directory.js +95 -0
- package/dist/providers/directory.js.map +1 -0
- package/dist/providers/errors.d.ts +47 -0
- package/dist/providers/errors.js +24 -0
- package/dist/providers/errors.js.map +1 -0
- package/dist/providers/index.d.ts +18 -0
- package/dist/providers/index.js +19 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/ingestion.d.ts +80 -0
- package/dist/providers/ingestion.js +330 -0
- package/dist/providers/ingestion.js.map +1 -0
- package/dist/providers/live.d.ts +22 -0
- package/dist/providers/live.js +56 -0
- package/dist/providers/live.js.map +1 -0
- package/dist/providers/process.d.ts +29 -0
- package/dist/providers/process.js +71 -0
- package/dist/providers/process.js.map +1 -0
- package/dist/providers/reaper.d.ts +33 -0
- package/dist/providers/reaper.js +65 -0
- package/dist/providers/reaper.js.map +1 -0
- package/dist/providers/service.d.ts +87 -0
- package/dist/providers/service.js +256 -0
- package/dist/providers/service.js.map +1 -0
- package/dist/sdk.d.ts +1 -1
- package/dist/sdk.js +1 -1
- package/dist/sdk.js.map +1 -1
- package/dist/types.d.ts +385 -6
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -1
- package/dist/version.d.ts +7 -0
- package/dist/version.js +16 -0
- package/dist/version.js.map +1 -0
- package/dist/web/app.css +4643 -0
- package/dist/web/app.js +22640 -0
- package/dist/web/app.js.map +7 -0
- package/dist/web/shell.html +39 -0
- package/docs/README.md +21 -0
- package/docs/SETUP.md +10 -0
- package/docs/adapters.md +21 -8
- package/docs/brain-continuity.md +186 -0
- package/docs/cloud.md +108 -0
- package/docs/crews.md +62 -0
- package/docs/design-system.md +31 -2
- package/docs/integration-notes.md +128 -20
- package/docs/loompad.md +105 -0
- package/docs/observability.md +220 -0
- package/docs/play-store.md +123 -0
- package/docs/proposals/agent-teams.md +249 -0
- package/docs/proposals/brain-continuity-implementation.md +468 -0
- package/docs/proposals/brain-session-continuity.md +623 -0
- package/docs/proposals/t3code-port.md +81 -0
- package/docs/proposals/t3code-reference.md +95 -0
- package/docs/refactoring/AGENT-TEAMS-PROGRESS.md +88 -0
- package/docs/refactoring/BOUNDARIES.md +120 -0
- package/docs/refactoring/BRAIN-AUDIT.md +176 -0
- package/docs/refactoring/BRAIN-NOTES.md +390 -0
- package/docs/refactoring/BRAIN-TODO.md +214 -0
- package/docs/refactoring/NOTES.md +129 -0
- package/docs/refactoring/T3-PORT-NOTES.md +165 -0
- package/docs/refactoring/T3-PORT-TODO.md +123 -0
- package/docs/refactoring/TODO.md +46 -0
- package/docs/refactoring/brain-benchmark-2026-09-28.json +48 -0
- package/docs/refactoring/brain-benchmark-audit-2026-09-28.json +48 -0
- package/docs/release-notes/v0.2.0.md +35 -0
- package/docs/release-notes/v0.2.1.md +59 -0
- package/docs/release-notes/v0.2.3.md +77 -0
- package/docs/release-notes/v0.2.4.md +128 -0
- package/docs/release-notes/v0.2.5.md +153 -0
- package/docs/release-notes/v0.2.6.md +62 -0
- package/docs/release-notes/v1.0.0.md +120 -0
- package/docs/release-notes/v1.0.1.md +77 -0
- package/docs/release-notes/v1.1.0.md +71 -0
- package/docs/release-notes/v1.1.1.md +38 -0
- package/docs/teams-architecture.md +697 -0
- package/docs/teams.md +171 -0
- package/docs/windows.md +85 -0
- package/package.json +22 -9
- package/dist/adapters/claude-code.d.ts +0 -26
- package/dist/adapters/claude-code.js +0 -209
- package/dist/adapters/claude-code.js.map +0 -1
- package/dist/adapters/codex.d.ts +0 -51
- package/dist/adapters/codex.js +0 -291
- package/dist/adapters/codex.js.map +0 -1
- package/docs/img/board-linear.png +0 -0
- package/docs/img/board-projects.png +0 -0
- package/docs/img/brain.png +0 -0
- package/docs/img/settings.png +0 -0
- package/docs/img/workspace.png +0 -0
|
@@ -0,0 +1,635 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Orchestra — one orchestrator agent, many worker agents, in parallel.
|
|
3
|
+
*
|
|
4
|
+
* A route passes one baton down a line; a subtask fans out but never reports
|
|
5
|
+
* back. Orchestra is the missing shape: an orchestrator agent (any adapter —
|
|
6
|
+
* Claude Code, Codex, Antigravity, Grok, OpenCode) turns a goal into a task
|
|
7
|
+
* graph, Loom runs every ready task at once on whichever worker agents the
|
|
8
|
+
* plan names, each in its own thread and its own git worktree, merges the
|
|
9
|
+
* finished work into one integration branch, and hands the orchestrator the
|
|
10
|
+
* results to review — accept, follow up, spawn more, or finish.
|
|
11
|
+
*
|
|
12
|
+
* Design lineage, credited: the orchestrator/worker split, the "coordinate,
|
|
13
|
+
* never implement" orchestrator rules and the worktree-per-worker isolation
|
|
14
|
+
* follow Agent Orchestrator (github.com/Untrivial-ai/agent-orchestrator,
|
|
15
|
+
* Apache-2.0). What differs, on purpose:
|
|
16
|
+
*
|
|
17
|
+
* - **The orchestrator never needs a shell tool.** AO's orchestrator drives a
|
|
18
|
+
* CLI (`ao spawn`, `ao send`) from its terminal, which fails for agents that
|
|
19
|
+
* run sandboxed or can't execute commands headless. Here it answers in a
|
|
20
|
+
* fenced ```loom block of JSON actions that Loom parses — so ANY agent can
|
|
21
|
+
* orchestrate, including ones with no tools at all.
|
|
22
|
+
* - **A real task graph.** Tasks declare `dependsOn`; a task starts only when
|
|
23
|
+
* its dependencies merged, and it branches from the integration tip so it
|
|
24
|
+
* sees their work.
|
|
25
|
+
* - **Mixed fleets.** Each task names its worker; three Codex tasks and two
|
|
26
|
+
* Antigravity tasks run side by side as separate CLI sessions.
|
|
27
|
+
*
|
|
28
|
+
* Everything is observable: every step is an `orchestra` event in the project
|
|
29
|
+
* log (so the web app, the phone and the CLI all watch the same run), and each
|
|
30
|
+
* task's agent output streams into that task's own chat.
|
|
31
|
+
*/
|
|
32
|
+
import type { TeamPolicy } from "./team-policy.js";
|
|
33
|
+
import { type GoalScope } from "./goal-lanes.js";
|
|
34
|
+
import type { Adapter, AgentConfig, ChatInfo, EventKind, GitDelivery, LoomEvent } from "../types.js";
|
|
35
|
+
export type OrchestraStatus = "starting" | "planning" | "running" | "reviewing" | "waiting_human" | "completed" | "failed" | "aborted" | "moved";
|
|
36
|
+
export type TaskStatus = "pending" | "running" | "done" | "conflict" | "needs_input" | "failed" | "cancelled";
|
|
37
|
+
/**
|
|
38
|
+
* Why a ready task isn't running yet (Loom Teams, Phase 2). "decide" needs the
|
|
39
|
+
* orchestrator (an overlap without an `overlap` decision, missing `touches`, a
|
|
40
|
+
* disallowed agent); the rest clear on their own and are re-checked.
|
|
41
|
+
*/
|
|
42
|
+
export interface TaskHold {
|
|
43
|
+
kind: "decide" | "wait" | "zone" | "capacity";
|
|
44
|
+
reason: string;
|
|
45
|
+
/** wait: the teammate goal this task waits on. */
|
|
46
|
+
runId?: string;
|
|
47
|
+
/** zone: the hard zone and who holds it. */
|
|
48
|
+
zone?: string;
|
|
49
|
+
holder?: string;
|
|
50
|
+
since: number;
|
|
51
|
+
checkedAt?: number;
|
|
52
|
+
}
|
|
53
|
+
export interface OrchestraTask {
|
|
54
|
+
id: string;
|
|
55
|
+
title: string;
|
|
56
|
+
prompt: string;
|
|
57
|
+
/** Roster agent id (or kind) that runs it. */
|
|
58
|
+
agent: string;
|
|
59
|
+
/** Adapter kind actually used. */
|
|
60
|
+
kind: string;
|
|
61
|
+
dependsOn: string[];
|
|
62
|
+
/** File globs the orchestrator declared this task will touch (D9). */
|
|
63
|
+
touches?: string[];
|
|
64
|
+
/** The orchestrator's answer to a teammate overlap (D29): wait:<goal> | narrow | proceed:<reason>. */
|
|
65
|
+
overlap?: string;
|
|
66
|
+
/** Set while the task waits on something other than its own dependencies. */
|
|
67
|
+
hold?: TaskHold;
|
|
68
|
+
status: TaskStatus;
|
|
69
|
+
/** The chat (thread) this task's output streams into. */
|
|
70
|
+
chat: string;
|
|
71
|
+
branch?: string;
|
|
72
|
+
dir?: string;
|
|
73
|
+
attempts: number;
|
|
74
|
+
/** Follow-up messages queued by the orchestrator, run after the current turn. */
|
|
75
|
+
queued: string[];
|
|
76
|
+
result?: string;
|
|
77
|
+
files?: string[];
|
|
78
|
+
error?: string;
|
|
79
|
+
costUsd?: number;
|
|
80
|
+
/** The integration branch's merge commit for this task, and the lines it changed (stacks, D59). */
|
|
81
|
+
mergeCommit?: string;
|
|
82
|
+
lines?: number;
|
|
83
|
+
startedAt?: number;
|
|
84
|
+
finishedAt?: number;
|
|
85
|
+
/** Set once the orchestrator has been shown this outcome. */
|
|
86
|
+
reported?: boolean;
|
|
87
|
+
}
|
|
88
|
+
export interface OrchestraRun {
|
|
89
|
+
id: string;
|
|
90
|
+
goal: string;
|
|
91
|
+
orchestrator: {
|
|
92
|
+
agent: string;
|
|
93
|
+
kind: string;
|
|
94
|
+
};
|
|
95
|
+
/** Agents the orchestrator may assign work to (roster ids). */
|
|
96
|
+
workers: string[];
|
|
97
|
+
status: OrchestraStatus;
|
|
98
|
+
/** The thread the orchestrator answers in. */
|
|
99
|
+
chat: string;
|
|
100
|
+
/**
|
|
101
|
+
* True when `chat` is a thread that already existed and will outlive the
|
|
102
|
+
* run \u2014 you orchestrated from Main and the orchestrator answered there.
|
|
103
|
+
* The difference matters after the run ends: a thread the run made belongs
|
|
104
|
+
* to it forever, and Main goes back to being Main.
|
|
105
|
+
*/
|
|
106
|
+
inPlace?: boolean;
|
|
107
|
+
baseBranch: string | null;
|
|
108
|
+
baseCommit: string;
|
|
109
|
+
branch: string;
|
|
110
|
+
dir: string;
|
|
111
|
+
tasks: OrchestraTask[];
|
|
112
|
+
round: number;
|
|
113
|
+
maxRounds: number;
|
|
114
|
+
maxParallel: number;
|
|
115
|
+
summary?: string;
|
|
116
|
+
question?: string;
|
|
117
|
+
error?: string;
|
|
118
|
+
/** Set when the integration branch was merged back into the project. */
|
|
119
|
+
applied?: {
|
|
120
|
+
at: number;
|
|
121
|
+
into: string;
|
|
122
|
+
task?: string;
|
|
123
|
+
};
|
|
124
|
+
/**
|
|
125
|
+
* Plan mode: the plan is written as markdown specs under plans/<run>/ on the
|
|
126
|
+
* integration branch — PLAN.md plus one self-contained file per task — so
|
|
127
|
+
* any agent (or teammate) can read, resume or re-run it. See writePlan.
|
|
128
|
+
*/
|
|
129
|
+
plan?: boolean;
|
|
130
|
+
/** What the project's git delivery policy did with the finished run. */
|
|
131
|
+
delivered?: {
|
|
132
|
+
mode: GitDelivery;
|
|
133
|
+
into?: string;
|
|
134
|
+
pushed?: string;
|
|
135
|
+
prUrl?: string;
|
|
136
|
+
at: number;
|
|
137
|
+
};
|
|
138
|
+
deliveryError?: string;
|
|
139
|
+
/** Team facts for the orchestrator's next review: predicted conflicts, drift (D33, D34). */
|
|
140
|
+
notes?: string[];
|
|
141
|
+
/** Phase 4: the goal's PR on its way to main — checks, fixes, review, landing. */
|
|
142
|
+
landing?: LandingState;
|
|
143
|
+
/** An adopted goal (D63): this run fixes a teammate's PR, starting from and pushing to its branch. */
|
|
144
|
+
from?: {
|
|
145
|
+
branch: string;
|
|
146
|
+
pr: number;
|
|
147
|
+
url: string;
|
|
148
|
+
ownerRunId?: string;
|
|
149
|
+
owner?: string;
|
|
150
|
+
};
|
|
151
|
+
/** This goal's spending cap in USD (D64), raised each time a human says continue. */
|
|
152
|
+
budgetUsd?: number;
|
|
153
|
+
/** So the 80% word is said once, not once a turn. */
|
|
154
|
+
budgetWarned?: boolean;
|
|
155
|
+
/** Phase 5: set while the goal is being handed to another machine; nothing new starts. */
|
|
156
|
+
moving?: boolean;
|
|
157
|
+
/** Where the goal went (D75). */
|
|
158
|
+
movedTo?: {
|
|
159
|
+
where: string;
|
|
160
|
+
at: number;
|
|
161
|
+
};
|
|
162
|
+
/**
|
|
163
|
+
* Set when Loom itself stopped the run (a restart or shutdown), not you:
|
|
164
|
+
* which tasks were in flight, so Resume can pick exactly those back up in
|
|
165
|
+
* the worktrees they left.
|
|
166
|
+
*/
|
|
167
|
+
interrupted?: {
|
|
168
|
+
at: number;
|
|
169
|
+
tasks: string[];
|
|
170
|
+
phase: OrchestraStatus;
|
|
171
|
+
};
|
|
172
|
+
/** A race (see OrchestraStartOptions.race); applied.task names the entrant you picked. */
|
|
173
|
+
race?: boolean;
|
|
174
|
+
costUsd: number;
|
|
175
|
+
createdAt: number;
|
|
176
|
+
updatedAt: number;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* A goal PR's journey to main (Loom Teams, Phase 4 — D52–D63). Kept on the
|
|
180
|
+
* run so it survives restarts and shows wherever the run does.
|
|
181
|
+
*/
|
|
182
|
+
export interface LandingState {
|
|
183
|
+
pr: number;
|
|
184
|
+
url: string;
|
|
185
|
+
/** "queued": Land was clicked, and another goal holds a lane this one needs (Phase 6, D82). */
|
|
186
|
+
state: "open" | "pending" | "green" | "failing" | "fixing" | "needs_human" | "queued" | "landing" | "merged" | "closed";
|
|
187
|
+
headSha?: string;
|
|
188
|
+
/** Fix attempts spent (D55: checks and high review findings share them). */
|
|
189
|
+
fixAttempts: number;
|
|
190
|
+
/** `${sha}:${check}` already rerun once (D53). */
|
|
191
|
+
reruns: string[];
|
|
192
|
+
/** Checks that failed, then passed on rerun. */
|
|
193
|
+
flaky: string[];
|
|
194
|
+
checks?: {
|
|
195
|
+
failing: string[];
|
|
196
|
+
pending: string[];
|
|
197
|
+
passing: number;
|
|
198
|
+
};
|
|
199
|
+
reviews: number;
|
|
200
|
+
reviewedSha?: string;
|
|
201
|
+
review?: {
|
|
202
|
+
state: "success" | "failure" | "skipped";
|
|
203
|
+
reviewer: string | null;
|
|
204
|
+
high: number;
|
|
205
|
+
findings: number;
|
|
206
|
+
at: number;
|
|
207
|
+
overridden?: string;
|
|
208
|
+
overriddenSha?: string;
|
|
209
|
+
};
|
|
210
|
+
/** Why it waits on a human. */
|
|
211
|
+
reason?: string;
|
|
212
|
+
/** The owner clicked Land: keep going (pushrebase-lite, auto-merge) until merged (D56). */
|
|
213
|
+
landRequested?: boolean;
|
|
214
|
+
/** One agent attempt at a conflict with fresh main (D58). */
|
|
215
|
+
conflictTried?: boolean;
|
|
216
|
+
/** A teammate holds this goal right now (D63). */
|
|
217
|
+
adoptedBy?: string;
|
|
218
|
+
/** An adopted goal, handed back to its owner. */
|
|
219
|
+
returned?: boolean;
|
|
220
|
+
/** The PR head when it started waiting on a human: it keeps waiting until that changes. */
|
|
221
|
+
needsHumanSha?: string;
|
|
222
|
+
/** The commit the PR merged as (deploy alerts, D72). */
|
|
223
|
+
mergeSha?: string;
|
|
224
|
+
/** Actions minutes the goal's branch used, recorded when it lands (§10). */
|
|
225
|
+
ciMinutes?: number;
|
|
226
|
+
/** Stacked delivery (D59): the PRs bottom-up; the last is this goal's own branch. */
|
|
227
|
+
stack?: Array<{
|
|
228
|
+
pr: number;
|
|
229
|
+
url: string;
|
|
230
|
+
branch: string;
|
|
231
|
+
base: string;
|
|
232
|
+
state?: string;
|
|
233
|
+
}>;
|
|
234
|
+
/** Land goes through the train: Loom merges it when its lanes' turn comes. */
|
|
235
|
+
train?: boolean;
|
|
236
|
+
/** The lanes it needs (path scopes from `landing.lanes`; "main" when none match). */
|
|
237
|
+
lanes?: string[];
|
|
238
|
+
/** It holds its lanes' slots right now: its turn. */
|
|
239
|
+
slot?: boolean;
|
|
240
|
+
/** The PR head this turn pushed (fresh base merged in), and when. */
|
|
241
|
+
turnSha?: string;
|
|
242
|
+
turnAt?: number;
|
|
243
|
+
updatedAt: number;
|
|
244
|
+
}
|
|
245
|
+
/** How much of a goal's budget may go before it says something. */
|
|
246
|
+
export declare const BUDGET_WARN_AT = 0.8;
|
|
247
|
+
export interface OrchestraStartOptions {
|
|
248
|
+
goal: string;
|
|
249
|
+
/** Roster id (or kind) of the orchestrator. Defaults to the host's pick. */
|
|
250
|
+
orchestrator?: string;
|
|
251
|
+
/** Roster ids (or kinds) of allowed workers. Defaults to every adapter. */
|
|
252
|
+
workers?: string[];
|
|
253
|
+
maxParallel?: number;
|
|
254
|
+
maxRounds?: number;
|
|
255
|
+
/** Write the plan as markdown specs other agents can read (plans/<run>/). */
|
|
256
|
+
plan?: boolean;
|
|
257
|
+
/** Adopt (D63): start from a teammate's PR branch and push back to it. */
|
|
258
|
+
from?: OrchestraRun["from"];
|
|
259
|
+
/** Stop this goal when it has spent this much, and say so. */
|
|
260
|
+
maxUsd?: number;
|
|
261
|
+
/**
|
|
262
|
+
* A race: every worker gets the same prompt in its own worktree, nobody
|
|
263
|
+
* plans and nothing merges — you compare what came back and pick one.
|
|
264
|
+
*/
|
|
265
|
+
race?: boolean;
|
|
266
|
+
/** The paths this goal expects to touch, when the caller already knows. */
|
|
267
|
+
touches?: string[];
|
|
268
|
+
/**
|
|
269
|
+
* The thread the goal was given in. The orchestrator answers there instead
|
|
270
|
+
* of in a thread of its own, so orchestrating from Main leaves you in Main.
|
|
271
|
+
* The caller proves the chat exists; an unknown one gets a new thread.
|
|
272
|
+
*/
|
|
273
|
+
chat?: string;
|
|
274
|
+
}
|
|
275
|
+
/** What orchestra needs from the project that owns it. */
|
|
276
|
+
export interface OrchestraHost {
|
|
277
|
+
projectId: string;
|
|
278
|
+
projectName: string;
|
|
279
|
+
projectDir: string;
|
|
280
|
+
/** Adapter entries of the roster (enabled only). */
|
|
281
|
+
roster(): AgentConfig[];
|
|
282
|
+
/** Kinds installed on this machine but not on the roster, usable as workers. */
|
|
283
|
+
installedKinds(): string[];
|
|
284
|
+
/** Build a fresh adapter instance for `cfg`, working in `dir`. */
|
|
285
|
+
makeAgent(cfg: AgentConfig, dir: string): Adapter;
|
|
286
|
+
append(e: {
|
|
287
|
+
kind: EventKind;
|
|
288
|
+
agentId?: string;
|
|
289
|
+
chat?: string;
|
|
290
|
+
payload: Record<string, unknown>;
|
|
291
|
+
}): LoomEvent;
|
|
292
|
+
/** agentId pins who answers there — a task thread is its worker's. */
|
|
293
|
+
createChat(title: string, opts?: {
|
|
294
|
+
agentId?: string;
|
|
295
|
+
}): ChatInfo;
|
|
296
|
+
/** Does this thread exist? Asked before a run is told to answer in one. */
|
|
297
|
+
chatExists?(id: string): boolean;
|
|
298
|
+
/** Skills + retrieved memories for a task, or "" — the project brain (and the team's, when shared). */
|
|
299
|
+
/**
|
|
300
|
+
* The memory brief for a task. May be async: with the dense channel on
|
|
301
|
+
* (core/semantic.ts) the query has to be embedded first, which is a
|
|
302
|
+
* millisecond of real work rather than a lookup.
|
|
303
|
+
*/
|
|
304
|
+
briefingFor(query: string, agentId: string, files?: string[]): string | Promise<string>;
|
|
305
|
+
/** Throws when `agentId` is over budget or quarantined. */
|
|
306
|
+
gate(agentId: string): void;
|
|
307
|
+
/** Cost/metrics bookkeeping for a worker event. */
|
|
308
|
+
observe(event: LoomEvent): void;
|
|
309
|
+
/** A reply as it's written, for the live view (never logged — see StreamDelta). */
|
|
310
|
+
stream?(f: {
|
|
311
|
+
agentId: string;
|
|
312
|
+
chat: string;
|
|
313
|
+
text: string;
|
|
314
|
+
reasoning?: boolean;
|
|
315
|
+
}): void;
|
|
316
|
+
/** The project's git delivery policy, read when a run completes. */
|
|
317
|
+
gitDelivery?(): GitDelivery;
|
|
318
|
+
/** The project's own per-goal spend cap, when it sets one (.loom/config.json). */
|
|
319
|
+
goalBudgetUsd?(): number | null;
|
|
320
|
+
/** How many goals may run at once when their paths don't collide (default 1). */
|
|
321
|
+
maxConcurrentGoals?(): number | null;
|
|
322
|
+
/** The GitHub login of the member running this daemon, when on a team (commit trailers). */
|
|
323
|
+
member?(): string | null;
|
|
324
|
+
/** The team coordinator for this project, when it's shared with a team (Phase 2). */
|
|
325
|
+
coordinator?(): OrchestraCoordinator | null;
|
|
326
|
+
}
|
|
327
|
+
/** What a task's admission decided. */
|
|
328
|
+
export type Admission = {
|
|
329
|
+
go: true;
|
|
330
|
+
rebase?: boolean;
|
|
331
|
+
note?: string;
|
|
332
|
+
} | {
|
|
333
|
+
go: false;
|
|
334
|
+
hold: TaskHold;
|
|
335
|
+
};
|
|
336
|
+
/**
|
|
337
|
+
* Loom Teams, Phase 2 — the team's say over when a task runs (leases, hard
|
|
338
|
+
* zones, waits, capacity, policy) and what it hears back (drift, WIP, landing).
|
|
339
|
+
* Implemented by the daemon's Team Link; absent for solo projects.
|
|
340
|
+
*/
|
|
341
|
+
export interface OrchestraCoordinator {
|
|
342
|
+
teamPolicy?(): Promise<TeamPolicy | null>;
|
|
343
|
+
release?(runId: string, reason: string): Promise<void>;
|
|
344
|
+
admit(run: OrchestraRun, task: OrchestraTask): Promise<Admission>;
|
|
345
|
+
onEdit?(run: OrchestraRun, task: OrchestraTask, path: string): void;
|
|
346
|
+
onTaskDone?(run: OrchestraRun, task: OrchestraTask): void;
|
|
347
|
+
onRunEnd?(run: OrchestraRun): void;
|
|
348
|
+
/** Policy cap on tasks at once for this member (D38). */
|
|
349
|
+
maxParallel?(): number | null;
|
|
350
|
+
/** The project's own per-goal cap, when it has one (.loom/config.json). */
|
|
351
|
+
goalBudgetUsd?(): number | null;
|
|
352
|
+
/** Protected branches only receive PRs (D38). */
|
|
353
|
+
isProtected?(branch: string): boolean;
|
|
354
|
+
/** Why this member can't start a goal right now (D64: over the daily budget), or null. */
|
|
355
|
+
canStart?(): string | null;
|
|
356
|
+
/** The per-goal budget in USD (D64), or null for none. */
|
|
357
|
+
goalBudgetUsd?(): number | null;
|
|
358
|
+
/** Stacked delivery for big goals (D59). */
|
|
359
|
+
stackMode?(): "auto" | "off";
|
|
360
|
+
}
|
|
361
|
+
export type OrchestraAction = {
|
|
362
|
+
type: "spawn";
|
|
363
|
+
id?: string;
|
|
364
|
+
title: string;
|
|
365
|
+
agent: string;
|
|
366
|
+
prompt: string;
|
|
367
|
+
dependsOn?: string[];
|
|
368
|
+
touches?: string[];
|
|
369
|
+
overlap?: string;
|
|
370
|
+
} | {
|
|
371
|
+
type: "send";
|
|
372
|
+
task: string;
|
|
373
|
+
message: string;
|
|
374
|
+
} | {
|
|
375
|
+
type: "cancel";
|
|
376
|
+
task: string;
|
|
377
|
+
} | {
|
|
378
|
+
type: "ask";
|
|
379
|
+
question: string;
|
|
380
|
+
} | {
|
|
381
|
+
type: "done";
|
|
382
|
+
summary: string;
|
|
383
|
+
};
|
|
384
|
+
/**
|
|
385
|
+
* Pull the actions out of an orchestrator reply.
|
|
386
|
+
*
|
|
387
|
+
* Accepts the last ```loom fence (the documented form), falling back to the
|
|
388
|
+
* last ```json fence holding an `actions` array, then to a bare object — models
|
|
389
|
+
* drift, and a plan lost to a fence label is a wasted round. Returns null when
|
|
390
|
+
* nothing parses, so the caller can ask again rather than guess.
|
|
391
|
+
*/
|
|
392
|
+
/**
|
|
393
|
+
* How much of an agent's turn is kept in memory, and why cutting it is delicate.
|
|
394
|
+
*
|
|
395
|
+
* The orchestrator's answer is parsed from this text, and the part that matters
|
|
396
|
+
* — the ```loom block — sits at the END of a reply whose prose can be long. The
|
|
397
|
+
* old cap kept the last 20,000 characters, which on any real plan threw away
|
|
398
|
+
* the OPENING fence while keeping the closing one. The parser then saw an
|
|
399
|
+
* unterminated block, reported that the reply had no actions, and the whole
|
|
400
|
+
* plan was silently discarded (#104). Measured on one real run: seven
|
|
401
|
+
* consecutive plans of 6, 5, 5, 5, 5, 8 and 8 tasks, every one of them parsed
|
|
402
|
+
* perfectly from the logged event and every one destroyed by the cap. The
|
|
403
|
+
* better the orchestrator planned, the more certainly its plan was binned.
|
|
404
|
+
*
|
|
405
|
+
* So two changes. The budget is large enough that no plausible reply reaches
|
|
406
|
+
* it — a turn is bounded by the model's own output limit long before this.
|
|
407
|
+
* And when it IS reached, the cut is made at the start of the last actions
|
|
408
|
+
* block rather than blindly at a character offset, so the payload can never be
|
|
409
|
+
* decapitated by the thing that is meant to be protecting memory.
|
|
410
|
+
*/
|
|
411
|
+
export declare const TURN_TEXT_LIMIT = 400000;
|
|
412
|
+
export declare function capTurnText(text: string, limit?: number): string;
|
|
413
|
+
export declare function parseOrchestraActions(text: string): OrchestraAction[] | null;
|
|
414
|
+
/** The orchestrator's standing instructions, sent with its first turn. */
|
|
415
|
+
export declare function orchestratorBriefing(opts: {
|
|
416
|
+
project: string;
|
|
417
|
+
goal: string;
|
|
418
|
+
workers: Array<{
|
|
419
|
+
id: string;
|
|
420
|
+
kind: string;
|
|
421
|
+
role?: string;
|
|
422
|
+
}>;
|
|
423
|
+
maxParallel: number;
|
|
424
|
+
branch: string;
|
|
425
|
+
planDir?: string;
|
|
426
|
+
}): string;
|
|
427
|
+
/** plans/<run>/PLAN.md — the index: goal, task table, how to use it, results. */
|
|
428
|
+
export declare function renderPlanIndex(run: OrchestraRun): string;
|
|
429
|
+
/** plans/<run>/<task>.md — one task, readable by any agent with no other context. */
|
|
430
|
+
export declare function renderTaskFile(run: OrchestraRun, t: OrchestraTask): string;
|
|
431
|
+
/** What a worker is told, alongside its task. */
|
|
432
|
+
export declare function workerBriefing(opts: {
|
|
433
|
+
project: string;
|
|
434
|
+
runGoal: string;
|
|
435
|
+
task: OrchestraTask;
|
|
436
|
+
branch: string;
|
|
437
|
+
brain: string;
|
|
438
|
+
planFile?: string;
|
|
439
|
+
}): string;
|
|
440
|
+
/**
|
|
441
|
+
* A worker's commit, traceable to its goal, task and agent from `git log`
|
|
442
|
+
* alone (docs/teams-architecture.md §7). GitHub reads Co-Authored-By; the
|
|
443
|
+
* Loom-* trailers are for people and tools (`git log --grep 'Loom-Goal: o7x'`).
|
|
444
|
+
*/
|
|
445
|
+
export declare function taskCommitMessage(run: OrchestraRun, task: OrchestraTask, member: string | null): string;
|
|
446
|
+
/** Where a run's plan lives inside the repo. */
|
|
447
|
+
export declare function planDir(run: {
|
|
448
|
+
id: string;
|
|
449
|
+
}): string;
|
|
450
|
+
export declare class OrchestraEngine {
|
|
451
|
+
private host;
|
|
452
|
+
private runs;
|
|
453
|
+
private live;
|
|
454
|
+
/** A worker's or orchestrator's live instance by its id, for answering its questions. */
|
|
455
|
+
liveAgent(instanceId: string): Adapter | undefined;
|
|
456
|
+
private gitLock;
|
|
457
|
+
private turnText;
|
|
458
|
+
private orchestratorBusy;
|
|
459
|
+
constructor(host: OrchestraHost);
|
|
460
|
+
private runsDir;
|
|
461
|
+
private loadRuns;
|
|
462
|
+
private save;
|
|
463
|
+
list(): OrchestraRun[];
|
|
464
|
+
get(id: string): OrchestraRun | undefined;
|
|
465
|
+
active(): OrchestraRun | undefined;
|
|
466
|
+
/** Every goal in flight, with the paths it expects to touch. */
|
|
467
|
+
runningScopes(): GoalScope[];
|
|
468
|
+
private emit;
|
|
469
|
+
/** Resolve a name the orchestrator (or user) gave into a runnable config. */
|
|
470
|
+
resolveAgent(name: string): AgentConfig | null;
|
|
471
|
+
start(opts: OrchestraStartOptions): Promise<OrchestraRun>;
|
|
472
|
+
private workerCfgs;
|
|
473
|
+
private workersFor;
|
|
474
|
+
abort(runId: string, reason?: string): Promise<OrchestraRun>;
|
|
475
|
+
/** The human answers an orchestrator's question (or adds direction mid-run). */
|
|
476
|
+
reply(runId: string, text: string): Promise<OrchestraRun>;
|
|
477
|
+
private pendingHuman;
|
|
478
|
+
/**
|
|
479
|
+
* Put a completed goal back to work (Phase 4): a failed check, a high review
|
|
480
|
+
* finding, a conflict with fresh main. Same integration branch, same task
|
|
481
|
+
* worktrees; the orchestrator gets the problem and a fresh round budget.
|
|
482
|
+
* Whatever landed on the pushed branch meanwhile (an adopter's fix) comes in first.
|
|
483
|
+
*/
|
|
484
|
+
reopen(runId: string, text: string, why: string): Promise<OrchestraRun>;
|
|
485
|
+
/**
|
|
486
|
+
* Hand a goal to another machine (Phase 5, D75): stop starting anything,
|
|
487
|
+
* let running turns finish (interrupting them after `graceMs`), commit every
|
|
488
|
+
* worktree, and push the integration and task branches to hidden refs. The
|
|
489
|
+
* returned record is what the other side needs to rebuild the run; this
|
|
490
|
+
* copy becomes "moved" and read-only.
|
|
491
|
+
*/
|
|
492
|
+
moveOut(runId: string, where: string, opts?: {
|
|
493
|
+
graceMs?: number;
|
|
494
|
+
}): Promise<{
|
|
495
|
+
record: OrchestraRun;
|
|
496
|
+
refs: string[];
|
|
497
|
+
}>;
|
|
498
|
+
/**
|
|
499
|
+
* Rebuild a moved goal here (a runner taking it, or bringing it back):
|
|
500
|
+
* fetch its hidden refs, recreate the integration and task worktrees, and
|
|
501
|
+
* give the orchestrator a review turn to carry on (D75, D76).
|
|
502
|
+
*/
|
|
503
|
+
importRun(record: OrchestraRun, opts?: {
|
|
504
|
+
from?: string;
|
|
505
|
+
resume?: boolean;
|
|
506
|
+
}): Promise<OrchestraRun>;
|
|
507
|
+
/** The orchestrator's standing instructions, for a fresh orchestrator session. */
|
|
508
|
+
private briefingOf;
|
|
509
|
+
/** The branch this goal's PR is on. */
|
|
510
|
+
prBranch(run: OrchestraRun): string;
|
|
511
|
+
/** Bring commits pushed to the goal's PR branch by someone else into the integration branch. */
|
|
512
|
+
pullPushed(run: OrchestraRun): Promise<void>;
|
|
513
|
+
/** Record where a goal's PR stands (the landing manager owns the transitions). */
|
|
514
|
+
setLanding(runId: string, patch: Partial<LandingState>): LandingState | undefined;
|
|
515
|
+
private goalCap;
|
|
516
|
+
/**
|
|
517
|
+
* A word before the stop.
|
|
518
|
+
*
|
|
519
|
+
* Hearing about a budget for the first time when the goal halts is a bad way
|
|
520
|
+
* to learn it exists — especially now that a queue can start goals while
|
|
521
|
+
* you're elsewhere. Said once per goal.
|
|
522
|
+
*/
|
|
523
|
+
private warnNearBudget;
|
|
524
|
+
/** D64: a goal over its cap stops asking for more work until a human says continue. */
|
|
525
|
+
private overBudget;
|
|
526
|
+
/**
|
|
527
|
+
* Merge the integration branch into the project's working tree.
|
|
528
|
+
*
|
|
529
|
+
* Explicit, never automatic: the run's work lands on its own branch, and the
|
|
530
|
+
* human decides when it reaches theirs.
|
|
531
|
+
*/
|
|
532
|
+
apply(runId: string, taskId?: string): Promise<{
|
|
533
|
+
merged: string;
|
|
534
|
+
into: string;
|
|
535
|
+
}>;
|
|
536
|
+
/** What one task changed on its branch since the run began — a race entrant's diff. */
|
|
537
|
+
taskDiff(runId: string, taskId: string): Promise<string>;
|
|
538
|
+
/** Remove a finished run's worktrees (the branch stays for the record). */
|
|
539
|
+
cleanup(runId: string): Promise<void>;
|
|
540
|
+
shutdown(): Promise<void>;
|
|
541
|
+
/**
|
|
542
|
+
* Carry on a run Loom stopped by restarting. The tasks that were in flight
|
|
543
|
+
* go back to pending in the worktrees they left (their work so far is
|
|
544
|
+
* there); the orchestrator — a fresh session, so it's briefed again —
|
|
545
|
+
* picks up at review when nothing was in flight.
|
|
546
|
+
*/
|
|
547
|
+
resume(runId: string): Promise<OrchestraRun>;
|
|
548
|
+
/** Runs whose orchestrator restarts as a fresh session (resume) and needs its brief again. */
|
|
549
|
+
private rebrief;
|
|
550
|
+
private mustGet;
|
|
551
|
+
private stopAll;
|
|
552
|
+
private orchestratorAgent;
|
|
553
|
+
private orchestratorTurn;
|
|
554
|
+
private applyActions;
|
|
555
|
+
/** Write (or refresh) plans/<run>/ on the integration branch and commit it. */
|
|
556
|
+
private writePlan;
|
|
557
|
+
private addTask;
|
|
558
|
+
private followUp;
|
|
559
|
+
private cancelTask;
|
|
560
|
+
private admitting;
|
|
561
|
+
private recheckTimers;
|
|
562
|
+
private schedule;
|
|
563
|
+
private armRecheck;
|
|
564
|
+
/** Something the team coordinator watches changed (a lease freed, a PR merged): look again now. */
|
|
565
|
+
recheck(runId: string): void;
|
|
566
|
+
/**
|
|
567
|
+
* Stop a running task and hold it (D33: drift into someone's hard zone).
|
|
568
|
+
* It keeps its worktree and session; when the hold clears it resumes with a
|
|
569
|
+
* "continue" follow-up instead of starting over.
|
|
570
|
+
*/
|
|
571
|
+
pauseTask(runId: string, taskId: string, hold: TaskHold): void;
|
|
572
|
+
/**
|
|
573
|
+
* The owner says stop waiting (D32): a `wait:` hold is released and the task
|
|
574
|
+
* proceeds alongside the other goal, with the reason on record.
|
|
575
|
+
*/
|
|
576
|
+
stopWaiting(runId: string, taskId: string): OrchestraTask;
|
|
577
|
+
/** A team fact for the orchestrator's next review (D33, D34). */
|
|
578
|
+
addNote(runId: string, note: string): void;
|
|
579
|
+
/** Ask the team coordinator (if any) whether this task may start, then start it. */
|
|
580
|
+
private admitAndRun;
|
|
581
|
+
/**
|
|
582
|
+
* Bring the base branch's latest into the integration branch (D30): a task
|
|
583
|
+
* that waited for a teammate's PR must build on the merged code.
|
|
584
|
+
*/
|
|
585
|
+
private syncWithBase;
|
|
586
|
+
/** When nothing can move without the orchestrator, give it a turn. */
|
|
587
|
+
private maybeReview;
|
|
588
|
+
/** The report the orchestrator reviews: every task's outcome since last time. */
|
|
589
|
+
statusReport(run: OrchestraRun): string;
|
|
590
|
+
private runTask;
|
|
591
|
+
private lastError;
|
|
592
|
+
/** `${run}/${task}` → the question a worker stopped to ask mid-turn. */
|
|
593
|
+
private workerQuestion;
|
|
594
|
+
private integrate;
|
|
595
|
+
private wire;
|
|
596
|
+
/** A finished or aborted run's per-turn scratch (reply text, errors, questions) goes with it. */
|
|
597
|
+
private forgetRun;
|
|
598
|
+
private finish;
|
|
599
|
+
/**
|
|
600
|
+
* Do what the project's git delivery policy says with a completed run:
|
|
601
|
+
* nothing, merge it in, merge and push, or push its branch and open a PR.
|
|
602
|
+
* A failure here never un-completes the run — the work is safe on its
|
|
603
|
+
* branch — it's reported, and the manual Apply is still there.
|
|
604
|
+
*/
|
|
605
|
+
/**
|
|
606
|
+
* D59: where a big goal's stack is cut — tasks in the order they merged into
|
|
607
|
+
* the integration branch, sliced by size (cutStack). Null when unknowable.
|
|
608
|
+
*/
|
|
609
|
+
private stackSlices;
|
|
610
|
+
/**
|
|
611
|
+
* Push one branch per slice and open a PR for each, each based on the one
|
|
612
|
+
* below; the top slice is the goal's own branch (so fixes land on it). The
|
|
613
|
+
* landing manager lands them bottom-up with the merge method.
|
|
614
|
+
*/
|
|
615
|
+
private deliverStack;
|
|
616
|
+
deliver(run: OrchestraRun, mode?: GitDelivery): Promise<void>;
|
|
617
|
+
}
|
|
618
|
+
/** A new PR's landing record. */
|
|
619
|
+
export declare function newLanding(pr: number, url: string): LandingState;
|
|
620
|
+
/** The goal PR's description: the summary, the task table, the plan. */
|
|
621
|
+
export declare function prBody(run: OrchestraRun, extra?: string[]): string;
|
|
622
|
+
/**
|
|
623
|
+
* Verification commands a Claude orchestrator may run while reviewing.
|
|
624
|
+
*
|
|
625
|
+
* Headless Claude in acceptEdits mode can't run any shell command, so a Claude
|
|
626
|
+
* orchestrator could only read the workers' code and take their word that the
|
|
627
|
+
* tests passed (seen on a real run: "could not run node --test, approval not
|
|
628
|
+
* granted"). Codex, sandboxed, just ran them. These are the checks a reviewer
|
|
629
|
+
* runs — tests, typecheck, build, and read-only git — and nothing else.
|
|
630
|
+
*/
|
|
631
|
+
export declare const ORCHESTRATOR_VERIFY_TOOLS: string[];
|
|
632
|
+
export declare function taskSummary(t: OrchestraTask): Record<string, unknown>;
|
|
633
|
+
export declare function isTerminal(s: OrchestraStatus): boolean;
|
|
634
|
+
/** Where a moved goal's branches travel: hidden refs, like WIP refs (D11, D75). */
|
|
635
|
+
export declare function runRef(runId: string, name: string): string;
|