@loompad/cli 0.1.0 → 1.1.2
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 +1054 -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 +4646 -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/release-notes/v1.1.2.md +21 -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
package/dist/types.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* The event log is the source of truth; everything else (agent memory,
|
|
5
5
|
* board views, phone surfaces) is a projection of it.
|
|
6
6
|
*/
|
|
7
|
-
export type EventKind = "message" | "tool_call" | "tool_result" | "file_edit" | "decision" | "handoff" | "suggestion" | "needs_input" | "run_complete" | "agent_join" | "agent_leave" | "role_change" | "route_started" | "route_step" | "route_paused" | "route_resumed" | "route_completed" | "route_failed" | "turn_diff" | "memory_import" | "memory_add" | "memory_update" | "memory_forget" | "status" | "error";
|
|
7
|
+
export type EventKind = "message" | "tool_call" | "tool_result" | "file_edit" | "decision" | "handoff" | "suggestion" | "needs_input" | "run_complete" | "agent_join" | "agent_leave" | "role_change" | "route_started" | "route_step" | "route_paused" | "route_resumed" | "route_completed" | "route_failed" | "turn_diff" | "checkpoint" | "subtask_started" | "subtask_done" | "subtask_failed" | "orchestra" | "crew" | "approval" | "memory_import" | "memory_add" | "memory_update" | "memory_forget" | "status" | "proof" | "shift" | "error";
|
|
8
8
|
/**
|
|
9
9
|
* The chat every event belongs to. A project can hold several conversations;
|
|
10
10
|
* they share one brain, one baton and one working tree — only the talking is
|
|
@@ -33,6 +33,52 @@ export interface ChatInfo {
|
|
|
33
33
|
id: string;
|
|
34
34
|
title: string;
|
|
35
35
|
createdAt: number;
|
|
36
|
+
/**
|
|
37
|
+
* Who answers in this thread, if the thread has an opinion.
|
|
38
|
+
*
|
|
39
|
+
* Without it, a chat is a label on events and whoever holds the baton
|
|
40
|
+
* answers everywhere — which means two threads can't be talking to two
|
|
41
|
+
* agents. With it, switching threads switches who you're talking to.
|
|
42
|
+
*/
|
|
43
|
+
agentId?: string;
|
|
44
|
+
/**
|
|
45
|
+
* The model for this thread, for agents that can change model per turn.
|
|
46
|
+
* Only the `model` kind can; binding one to an agent that can't is refused
|
|
47
|
+
* at the point of binding rather than ignored at the point of sending.
|
|
48
|
+
*/
|
|
49
|
+
model?: string;
|
|
50
|
+
/** Kept at the top of the sidebar, under Main. */
|
|
51
|
+
pinned?: boolean;
|
|
52
|
+
/** Out of the sidebar, not forgotten: its history stays in the log. */
|
|
53
|
+
archived?: boolean;
|
|
54
|
+
/** A sidebar folder this thread is filed under (a plain name; folders exist while a thread is in them). */
|
|
55
|
+
folder?: string;
|
|
56
|
+
/**
|
|
57
|
+
* What made this thread, when something did: an Orchestra run or race (its
|
|
58
|
+
* own thread and one per task), a crew (its channel and one per teammate),
|
|
59
|
+
* or an import. Computed on read from the runs, crews and imports — never
|
|
60
|
+
* stored — so the sidebar can fold a run's dozen threads into one row.
|
|
61
|
+
*/
|
|
62
|
+
group?: {
|
|
63
|
+
kind: "orchestra" | "race" | "crew" | "import";
|
|
64
|
+
id: string;
|
|
65
|
+
title: string;
|
|
66
|
+
status?: string;
|
|
67
|
+
at: number;
|
|
68
|
+
};
|
|
69
|
+
/** Event ids marked as worth coming back to (newest last, capped). */
|
|
70
|
+
starred?: number[];
|
|
71
|
+
/** Your verdict on replies: event id → up (1) or down (-1), with who wrote it. */
|
|
72
|
+
ratings?: Record<string, {
|
|
73
|
+
v: 1 | -1;
|
|
74
|
+
agent: string;
|
|
75
|
+
}>;
|
|
76
|
+
/**
|
|
77
|
+
* The id of the newest agent reply in this thread. Computed from the log on
|
|
78
|
+
* read, never stored: a client compares it with what it last saw to show
|
|
79
|
+
* an unread dot.
|
|
80
|
+
*/
|
|
81
|
+
lastReplyId?: number;
|
|
36
82
|
}
|
|
37
83
|
/**
|
|
38
84
|
* An agent's job, in your words. Free text: call an agent "architect",
|
|
@@ -58,6 +104,15 @@ export interface AgentConfig {
|
|
|
58
104
|
options?: Record<string, unknown>;
|
|
59
105
|
/** Override the ADE's native memory files to import into the shared brain. */
|
|
60
106
|
memoryFiles?: string[];
|
|
107
|
+
/** Off agents stay in the roster but aren't spawned and can't hold the baton. Default on. */
|
|
108
|
+
enabled?: boolean;
|
|
109
|
+
/**
|
|
110
|
+
* Standing instructions for this agent in this project ("prefer pnpm",
|
|
111
|
+
* "never touch migrations"), sent ahead of every turn it takes.
|
|
112
|
+
*/
|
|
113
|
+
instructions?: string;
|
|
114
|
+
/** A picture for this agent, as a small image data URL (≤ ~96px). */
|
|
115
|
+
avatar?: string;
|
|
61
116
|
}
|
|
62
117
|
/** One ADE's native memory pulled into the unified brain. */
|
|
63
118
|
export interface MemorySource {
|
|
@@ -85,6 +140,20 @@ export type RouteStepSpec = string | {
|
|
|
85
140
|
step: string;
|
|
86
141
|
role?: string;
|
|
87
142
|
instruction?: string;
|
|
143
|
+
/**
|
|
144
|
+
* Where to go when THIS step errors: an earlier step's id/role, to retry
|
|
145
|
+
* from there instead of failing the route. "review fails → back to
|
|
146
|
+
* execute" as data. Guarded by RouteState.maxLoops.
|
|
147
|
+
*/
|
|
148
|
+
onFail?: string;
|
|
149
|
+
/**
|
|
150
|
+
* Run this step only when the previous turn meets this condition:
|
|
151
|
+
* `changed>10`, `lines>200`, `touched:src/db/**`. Mechanical facts from
|
|
152
|
+
* the turn's diff, never a judgement — "send big changes to a reviewer
|
|
153
|
+
* and small ones straight on" without a person deciding each time.
|
|
154
|
+
* See core/step-conditions.ts. Written inline too: `reviewer?lines>200`.
|
|
155
|
+
*/
|
|
156
|
+
when?: string;
|
|
88
157
|
};
|
|
89
158
|
/** How shared memory is rendered on handoff. */
|
|
90
159
|
export interface ProjectionConfig {
|
|
@@ -95,6 +164,9 @@ export interface ProjectionConfig {
|
|
|
95
164
|
}
|
|
96
165
|
/** The brain's phase-2 extractor — learning from each turn. See core/brain-extract.ts. */
|
|
97
166
|
export interface BrainConfig {
|
|
167
|
+
/** Opt into versioned native continuity (SQLite, Codex/Claude only).
|
|
168
|
+
* Legacy memory/extraction remains available when false. */
|
|
169
|
+
continuity?: boolean;
|
|
98
170
|
/**
|
|
99
171
|
* Who reads finished turns for memory:
|
|
100
172
|
* "auto" (default) — a small Claude, when the CLI is available; a no-op when not.
|
|
@@ -103,16 +175,152 @@ export interface BrainConfig {
|
|
|
103
175
|
extractor?: "auto" | "off";
|
|
104
176
|
/** Model for the extractor call; small+fast is right. */
|
|
105
177
|
model?: string;
|
|
178
|
+
/**
|
|
179
|
+
* The dense retrieval channel — the one that can follow a synonym.
|
|
180
|
+
*
|
|
181
|
+
* Off by default, and deliberately not a dependency: the 23MB model needs a
|
|
182
|
+
* ~470MB ONNX runtime that Loom asks you to install rather than shipping to
|
|
183
|
+
* everyone. With it missing, retrieval is the three lexical channels it has
|
|
184
|
+
* always been. See core/semantic.ts.
|
|
185
|
+
*/
|
|
186
|
+
semantic?: boolean;
|
|
106
187
|
}
|
|
188
|
+
import type { ServerConfig } from "./core/servers.js";
|
|
107
189
|
export interface ProjectConfig {
|
|
108
190
|
name: string;
|
|
109
191
|
agents: AgentConfig[];
|
|
192
|
+
/** Agent Teams: named crews of roster agents with roles (core/crew.ts). */
|
|
193
|
+
crews?: import("./core/crew.js").CrewConfig[];
|
|
194
|
+
/** Loop watch: an agent re-running the same failing command. "notify" (default), "nudge" (stop it and tell it to step back), or "off". */
|
|
195
|
+
watchdog?: {
|
|
196
|
+
auto?: "notify" | "nudge" | "off";
|
|
197
|
+
};
|
|
198
|
+
/** Blast-Radius Shield: a destructive command an agent runs. "notify" (default), "stop" (stop the turn; the default on a night shift), or "off". */
|
|
199
|
+
shield?: {
|
|
200
|
+
auto?: "notify" | "stop" | "off";
|
|
201
|
+
};
|
|
202
|
+
/** Quota Relay: who carries on when an agent runs out of quota (daemon/runtime/relay.ts). */
|
|
203
|
+
relay?: import("./daemon/runtime/relay.js").RelayConfig;
|
|
204
|
+
/** Proof: how an agent's "done" is checked (daemon/proof.ts). */
|
|
205
|
+
proof?: import("./daemon/proof.js").ProofConfig;
|
|
110
206
|
/** Agent that receives messages when nobody holds the baton. */
|
|
111
207
|
defaultAgent?: string;
|
|
112
208
|
/** Named multi-hop pipelines; steps are agent ids/roles, optionally with instructions. */
|
|
113
209
|
routes?: Record<string, RouteStepSpec[]>;
|
|
114
210
|
projection?: ProjectionConfig;
|
|
115
211
|
brain?: BrainConfig;
|
|
212
|
+
/** Which SKILL.md skills are injected into the briefing, by skill id. */
|
|
213
|
+
skills?: Record<string, boolean>;
|
|
214
|
+
/** MCP servers this project can offer agents (mirrors the Anthropic API shape). */
|
|
215
|
+
mcps?: McpServerConfig[];
|
|
216
|
+
/**
|
|
217
|
+
* Dev servers Loom can run for this project — the thing the Browser tab
|
|
218
|
+
* previews. Suggested from package.json on init, confirmed by a person;
|
|
219
|
+
* nothing starts on its own. See core/servers.ts.
|
|
220
|
+
*/
|
|
221
|
+
servers?: ServerConfig[];
|
|
222
|
+
/**
|
|
223
|
+
* Spend caps for this project. Daily per-agent budgets live in the daemon's
|
|
224
|
+
* own config; this is the one a single goal may spend before it stops and
|
|
225
|
+
* says so.
|
|
226
|
+
*/
|
|
227
|
+
budgets?: {
|
|
228
|
+
perGoalUsd?: number;
|
|
229
|
+
};
|
|
230
|
+
/**
|
|
231
|
+
* How many orchestra goals may run at once. One by default — two goals
|
|
232
|
+
* editing the same files is a merge nobody can explain. Above one, a goal
|
|
233
|
+
* starts only when its paths can't collide with what's running
|
|
234
|
+
* (core/goal-lanes.ts).
|
|
235
|
+
*/
|
|
236
|
+
maxConcurrentGoals?: number;
|
|
237
|
+
/** Safety nets. Off by default. */
|
|
238
|
+
safety?: {
|
|
239
|
+
/** Checkpoint brain+board+config to .loom/snapshots before every route. */
|
|
240
|
+
snapshotBeforeRoutes?: boolean;
|
|
241
|
+
};
|
|
242
|
+
/** Git policies. Off by default — committing is a policy, not a mechanic. */
|
|
243
|
+
git?: {
|
|
244
|
+
/** Commit each turn's changes as they land, agent as co-author. */
|
|
245
|
+
commitPerTurn?: boolean;
|
|
246
|
+
/** Dragging a card to Working checks out task/<id>-<slug>. */
|
|
247
|
+
branchPerTask?: boolean;
|
|
248
|
+
/**
|
|
249
|
+
* Each adapter works in its own worktree on branch agent/<id>, so parallel
|
|
250
|
+
* edits can't collide in the filesystem. Merging is manual unless
|
|
251
|
+
* `mergeOnHandoff` is on; `git merge agent/<id>` is always available.
|
|
252
|
+
*/
|
|
253
|
+
worktreePerAgent?: boolean;
|
|
254
|
+
/**
|
|
255
|
+
* With worktrees on: when the baton passes A → B, merge `agent/A` into B's
|
|
256
|
+
* checkout so the work travels with the baton. Refuses rather than
|
|
257
|
+
* guesses — uncommitted work on either side, or a merge already in
|
|
258
|
+
* progress, is reported instead of merged. A conflict is left in the tree
|
|
259
|
+
* to be resolved and stops a route. See core/worktree-merge.ts.
|
|
260
|
+
*/
|
|
261
|
+
mergeOnHandoff?: boolean;
|
|
262
|
+
/**
|
|
263
|
+
* What happens to finished work, in one setting (the status-bar toggle):
|
|
264
|
+
* none — nothing is committed for you; orchestra work waits on its branch
|
|
265
|
+
* commit — each turn is committed; a finished orchestra merges into your branch
|
|
266
|
+
* push — commit, then push
|
|
267
|
+
* pr — commit; a finished orchestra pushes its own branch and opens a PR
|
|
268
|
+
* Implies commitPerTurn for everything but "none".
|
|
269
|
+
*/
|
|
270
|
+
delivery?: GitDelivery;
|
|
271
|
+
};
|
|
272
|
+
/** Team Hub sharing — see ProjectTeamShare. */
|
|
273
|
+
team?: ProjectTeamShare | null;
|
|
274
|
+
}
|
|
275
|
+
export type GitDelivery = "none" | "commit" | "push" | "pr";
|
|
276
|
+
/**
|
|
277
|
+
* Team sharing for a project (docs/teams-architecture.md, D8). Set by an
|
|
278
|
+
* explicit "Share with team"; `optOut` records an explicit "don't", which
|
|
279
|
+
* beats the auto-match on the project's git remote.
|
|
280
|
+
*/
|
|
281
|
+
export interface ProjectTeamShare {
|
|
282
|
+
teamId?: string;
|
|
283
|
+
repo?: string;
|
|
284
|
+
optOut?: boolean;
|
|
285
|
+
}
|
|
286
|
+
export declare const GIT_DELIVERIES: GitDelivery[];
|
|
287
|
+
/** One MCP server, in the shape the Anthropic API's `mcp_servers` accepts. */
|
|
288
|
+
export interface McpServerConfig {
|
|
289
|
+
name: string;
|
|
290
|
+
url: string;
|
|
291
|
+
description?: string;
|
|
292
|
+
icon?: string;
|
|
293
|
+
/**
|
|
294
|
+
* Did the server answer a bounded probe just now? Measured by
|
|
295
|
+
* core/mcp.ts#probeMcpServer when the list is served — NOT "has a url typed
|
|
296
|
+
* into it", which is what this used to mean and was never a connection.
|
|
297
|
+
* Absent when nothing has probed it (e.g. straight off disk).
|
|
298
|
+
*/
|
|
299
|
+
connected?: boolean;
|
|
300
|
+
/** When `connected` was last measured (epoch ms), so a stale badge is spottable. */
|
|
301
|
+
probedAt?: number;
|
|
302
|
+
enabledForSession?: boolean;
|
|
303
|
+
/**
|
|
304
|
+
* Remote transport. Defaults to http; /sse endpoints are detected. Only
|
|
305
|
+
* meaningful alongside `url`.
|
|
306
|
+
*/
|
|
307
|
+
transport?: "http" | "sse";
|
|
308
|
+
/**
|
|
309
|
+
* Extra HTTP headers for a remote server — an `Authorization: Bearer …` for a
|
|
310
|
+
* hosted endpoint that needs one. Only meaningful alongside `url`; see
|
|
311
|
+
* core/mcp.ts for which CLIs are known to honour them.
|
|
312
|
+
*/
|
|
313
|
+
headers?: Record<string, string>;
|
|
314
|
+
/** A local (stdio) server instead of a remote one: the process to run. */
|
|
315
|
+
command?: string;
|
|
316
|
+
args?: string[];
|
|
317
|
+
env?: Record<string, string>;
|
|
318
|
+
/**
|
|
319
|
+
* The catalog provider this row was installed from ("github", "linear", …),
|
|
320
|
+
* when it came from one. A stable key for a bundled logo — NOT a claim about
|
|
321
|
+
* the server, and absent for anything typed in by hand.
|
|
322
|
+
*/
|
|
323
|
+
slug?: string;
|
|
116
324
|
}
|
|
117
325
|
export type RouteStatus = "running" | "waiting_human" | "completed" | "failed" | "aborted";
|
|
118
326
|
export type RouteMode = "static" | "dynamic";
|
|
@@ -137,6 +345,17 @@ export interface RouteState {
|
|
|
137
345
|
updatedAt: number;
|
|
138
346
|
reason?: string;
|
|
139
347
|
pendingQuestion?: string;
|
|
348
|
+
/** onFail jump budget: re-entries consumed so far, and the cap. */
|
|
349
|
+
loops?: number;
|
|
350
|
+
maxLoops?: number;
|
|
351
|
+
/** Parallel to steps: where each step jumps on error (static routes). */
|
|
352
|
+
stepOnFail?: Array<string | null>;
|
|
353
|
+
/**
|
|
354
|
+
* Parallel to steps: the condition each step needs from the previous turn,
|
|
355
|
+
* or null when it always runs. Stored as written so the thread can say why
|
|
356
|
+
* a step was skipped in the same words the route was defined in.
|
|
357
|
+
*/
|
|
358
|
+
stepWhen?: Array<string | null>;
|
|
140
359
|
/** Project cost total when the route started (internal baseline). */
|
|
141
360
|
costStartUsd?: number;
|
|
142
361
|
/** Spend attributed to this route (set when it ends). */
|
|
@@ -149,20 +368,116 @@ export interface ProjectInfo {
|
|
|
149
368
|
}
|
|
150
369
|
export interface SendInput {
|
|
151
370
|
text: string;
|
|
371
|
+
/**
|
|
372
|
+
* The conversation this turn belongs to (default: the main chat). Provider
|
|
373
|
+
* agents keep one native session per chat, so each conversation has its own
|
|
374
|
+
* native history.
|
|
375
|
+
*/
|
|
376
|
+
chat?: string;
|
|
377
|
+
/**
|
|
378
|
+
* "plan": the agent investigates and proposes a plan without changing
|
|
379
|
+
* anything, in its own plan mode (Codex collaboration mode, Claude's plan
|
|
380
|
+
* permission mode). Provider agents only.
|
|
381
|
+
*/
|
|
382
|
+
interactionMode?: "default" | "plan";
|
|
383
|
+
/** App-owned conversation binding; native IDs never cross chat/workspace scopes.
|
|
384
|
+
* Context is injected into the ordinary input on every invocation. */
|
|
385
|
+
continuity?: {
|
|
386
|
+
runId: string;
|
|
387
|
+
bindingId: string;
|
|
388
|
+
sessionEpoch: number;
|
|
389
|
+
nativeSessionId: string | null;
|
|
390
|
+
context: string;
|
|
391
|
+
};
|
|
152
392
|
/** One-shot handoff briefing injected alongside this turn. */
|
|
153
393
|
briefing?: string;
|
|
394
|
+
/**
|
|
395
|
+
* Use this model for this turn.
|
|
396
|
+
*
|
|
397
|
+
* Only set for adapters that can honour it — the runtime checks before it
|
|
398
|
+
* sends, so an adapter receiving this can act on it rather than wonder. A
|
|
399
|
+
* CLI that bakes its model into a spawned process is never handed one.
|
|
400
|
+
*/
|
|
401
|
+
model?: string;
|
|
402
|
+
/**
|
|
403
|
+
* The project's MCP servers, rendered for this turn (see core/mcp.ts). The
|
|
404
|
+
* runtime builds it, the adapters that have a real flag for it pass it to
|
|
405
|
+
* their CLI, and the ones that don't ignore it — an adapter with no MCP
|
|
406
|
+
* surface must not pretend otherwise. The file is deleted when the turn ends,
|
|
407
|
+
* so an adapter may only use it during `send`.
|
|
408
|
+
*/
|
|
409
|
+
mcp?: McpTurnConfig;
|
|
410
|
+
}
|
|
411
|
+
/** What an adapter needs to put this project's MCP servers in front of its CLI. */
|
|
412
|
+
export interface McpTurnConfig {
|
|
413
|
+
/** Path to a `{"mcpServers": {…}}` document, alive for this turn only. */
|
|
414
|
+
configPath: string;
|
|
415
|
+
/** The same servers, for a CLI that takes config values rather than a file. */
|
|
416
|
+
servers: ResolvedMcpServer[];
|
|
417
|
+
}
|
|
418
|
+
/**
|
|
419
|
+
* One server as an MCP config document wants it: a remote endpoint, or a local
|
|
420
|
+
* process. `type` is spelled out even for stdio (where the CLIs infer it from
|
|
421
|
+
* `command`) so a generated file reads unambiguously.
|
|
422
|
+
*/
|
|
423
|
+
export type McpServerEntry = {
|
|
424
|
+
type: "http" | "sse";
|
|
425
|
+
url: string;
|
|
426
|
+
headers?: Record<string, string>;
|
|
427
|
+
} | {
|
|
428
|
+
type: "stdio";
|
|
429
|
+
command: string;
|
|
430
|
+
args?: string[];
|
|
431
|
+
env?: Record<string, string>;
|
|
432
|
+
};
|
|
433
|
+
/** A configured server that survived selection, keyed for the config document. */
|
|
434
|
+
export interface ResolvedMcpServer {
|
|
435
|
+
/** The key under `mcpServers` — a sanitised form of the display name. */
|
|
436
|
+
key: string;
|
|
437
|
+
/** The name as configured, for events and API responses. */
|
|
438
|
+
name: string;
|
|
439
|
+
entry: McpServerEntry;
|
|
154
440
|
}
|
|
155
441
|
export interface AdapterEvent {
|
|
156
442
|
kind: EventKind;
|
|
157
443
|
payload: Record<string, unknown>;
|
|
158
444
|
}
|
|
445
|
+
/**
|
|
446
|
+
* A piece of a reply that is still being written.
|
|
447
|
+
*
|
|
448
|
+
* Shown live and never logged: the finished `message` event is the record,
|
|
449
|
+
* and this is only the view of it arriving. Logging every token would put a
|
|
450
|
+
* few hundred rows in the event log for one paragraph, and a reader who opens
|
|
451
|
+
* the thread later wants the paragraph, not its typing.
|
|
452
|
+
*/
|
|
453
|
+
export interface StreamDelta {
|
|
454
|
+
text: string;
|
|
455
|
+
/** The model's working-out rather than its answer. */
|
|
456
|
+
reasoning?: boolean;
|
|
457
|
+
}
|
|
458
|
+
/** A StreamDelta placed: which agent is writing it, in which thread. */
|
|
459
|
+
export interface LiveText extends StreamDelta {
|
|
460
|
+
agentId: string;
|
|
461
|
+
chat: string;
|
|
462
|
+
/**
|
|
463
|
+
* Where this piece starts in what the agent has typed since its last
|
|
464
|
+
* finished message (of the same kind). A window that opens mid-reply gets
|
|
465
|
+
* the text so far from the log route and uses this to stitch on without
|
|
466
|
+
* repeating or dropping characters.
|
|
467
|
+
*/
|
|
468
|
+
off?: number;
|
|
469
|
+
}
|
|
159
470
|
export interface AgentCapabilities {
|
|
160
471
|
tier: AgentTier;
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
472
|
+
/**
|
|
473
|
+
* Does this agent's CLI really accept MCP server config for a turn?
|
|
474
|
+
*
|
|
475
|
+
* Off unless verified against the actual command line, because the runtime
|
|
476
|
+
* only bothers resolving and writing a config for agents that can be handed
|
|
477
|
+
* one. Claiming it for an agent that ignores the flag would show MCP servers
|
|
478
|
+
* as "in use" by something that never saw them.
|
|
479
|
+
*/
|
|
480
|
+
mcp: boolean;
|
|
166
481
|
}
|
|
167
482
|
export interface BaseAgent {
|
|
168
483
|
readonly id: string;
|
|
@@ -176,6 +491,8 @@ export interface BaseAgent {
|
|
|
176
491
|
injectMemory(projection: string): Promise<void>;
|
|
177
492
|
/** Subscribe to live events; returns unsubscribe. */
|
|
178
493
|
onEvent(cb: (e: AdapterEvent) => void): () => void;
|
|
494
|
+
/** Subscribe to a reply as it's written (see StreamDelta); returns unsubscribe. */
|
|
495
|
+
onStream?(cb: (d: StreamDelta) => void): () => void;
|
|
179
496
|
}
|
|
180
497
|
/** Full-duplex adapter — may hold the baton. */
|
|
181
498
|
export interface Adapter extends BaseAgent {
|
|
@@ -184,6 +501,8 @@ export interface Adapter extends BaseAgent {
|
|
|
184
501
|
/** Working-tree changes attributable to the agent (porcelain-ish). */
|
|
185
502
|
diff(): Promise<string>;
|
|
186
503
|
busy(): boolean;
|
|
504
|
+
/** Answer a structured question the agent's turn is blocked on (a needs_input with a requestId). */
|
|
505
|
+
respondToUserInput?(chat: string, requestId: string, answers: Record<string, unknown>): Promise<void>;
|
|
187
506
|
}
|
|
188
507
|
/** Read-mostly bridge — never holds the baton (GUI agents). */
|
|
189
508
|
export interface Bridge extends BaseAgent {
|
|
@@ -196,12 +515,54 @@ export interface AgentStatus {
|
|
|
196
515
|
role: AgentRole;
|
|
197
516
|
tier: AgentTier;
|
|
198
517
|
available: boolean;
|
|
518
|
+
/** Native continuity: the harness CLI version seen by the last health probe. */
|
|
519
|
+
cliVersion?: string | null;
|
|
199
520
|
busy: boolean;
|
|
200
521
|
holdsBaton: boolean;
|
|
201
522
|
/** The model override in effect, or "" for the CLI's own default. */
|
|
202
523
|
model: string;
|
|
524
|
+
/** Switched on? An off agent stays in the roster but isn't spawned. */
|
|
525
|
+
enabled?: boolean;
|
|
526
|
+
/** Permission mode in effect: bypass | auto | ask. See core/permissions.ts. */
|
|
527
|
+
permissions?: string;
|
|
528
|
+
/** Standing instructions sent ahead of every turn (see AgentConfig). */
|
|
529
|
+
instructions?: string;
|
|
530
|
+
/** Model agents: sampling overrides (absent = the provider's default). */
|
|
531
|
+
sampling?: {
|
|
532
|
+
temperature?: number;
|
|
533
|
+
maxTokens?: number;
|
|
534
|
+
};
|
|
535
|
+
/** The agent's own picture, when one was set. */
|
|
536
|
+
avatar?: string;
|
|
537
|
+
/** Native harnesses: tokens in context and the model's window, from the last report. */
|
|
538
|
+
context?: AgentContextUsage | null;
|
|
539
|
+
/** Native harnesses: the provider account's usage-limit windows, from the last report. */
|
|
540
|
+
limits?: ProviderLimits | null;
|
|
541
|
+
}
|
|
542
|
+
export interface AgentContextUsage {
|
|
543
|
+
usedTokens: number;
|
|
544
|
+
/** The model's context window, when the harness has said. */
|
|
545
|
+
maxTokens: number | null;
|
|
546
|
+
/** The harness is compacting its context right now. */
|
|
547
|
+
compacting: boolean;
|
|
548
|
+
/** When the harness last finished compacting (ms). */
|
|
549
|
+
compactedAt: number | null;
|
|
550
|
+
at: number;
|
|
551
|
+
}
|
|
552
|
+
export interface ProviderLimits {
|
|
553
|
+
provider: string;
|
|
554
|
+
windows: Array<{
|
|
555
|
+
id: string;
|
|
556
|
+
usedPercent: number;
|
|
557
|
+
windowMinutes?: number;
|
|
558
|
+
resetsAt?: number;
|
|
559
|
+
}>;
|
|
560
|
+
/** The window whose limit was hit, when one was. */
|
|
561
|
+
reached: string | null;
|
|
562
|
+
at: number;
|
|
203
563
|
}
|
|
204
564
|
export interface ProjectStatus {
|
|
565
|
+
continuity?: boolean;
|
|
205
566
|
id: string;
|
|
206
567
|
name: string;
|
|
207
568
|
dir: string;
|
|
@@ -221,16 +582,34 @@ export interface ProjectStatus {
|
|
|
221
582
|
routeNames?: string[];
|
|
222
583
|
/** Lifetime spend across all agents in this project (USD). */
|
|
223
584
|
costUsd?: number;
|
|
585
|
+
/**
|
|
586
|
+
* Agents a firing alert has paused (self-heal), keyed by agent id. Carried in
|
|
587
|
+
* the status payload and not only in state on disk, so a client can render
|
|
588
|
+
* "paused" rather than showing an agent that will refuse every prompt.
|
|
589
|
+
*/
|
|
590
|
+
quarantine?: Record<string, {
|
|
591
|
+
reason: string;
|
|
592
|
+
since: number;
|
|
593
|
+
displaced: boolean;
|
|
594
|
+
}>;
|
|
595
|
+
/** The live or latest orchestra run, compact. See core/orchestra.ts. */
|
|
596
|
+
orchestra?: Record<string, unknown> | null;
|
|
597
|
+
/** The project's folder no longer exists (moved or deleted). */
|
|
598
|
+
missing?: boolean;
|
|
224
599
|
}
|
|
225
600
|
export interface AgentCost {
|
|
226
601
|
agentId: string;
|
|
227
602
|
usd: number;
|
|
228
603
|
turns: number;
|
|
229
604
|
ms: number;
|
|
605
|
+
tokensIn: number;
|
|
606
|
+
tokensOut: number;
|
|
230
607
|
}
|
|
231
608
|
export interface CostSummary {
|
|
232
609
|
totalUsd: number;
|
|
233
610
|
turns: number;
|
|
234
611
|
totalMs: number;
|
|
612
|
+
tokensIn: number;
|
|
613
|
+
tokensOut: number;
|
|
235
614
|
byAgent: AgentCost[];
|
|
236
615
|
}
|
package/dist/types.js
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
export const MAIN_CHAT = "main";
|
|
13
13
|
/** Roles Loom suggests when it sets a project up. Only suggestions. */
|
|
14
14
|
export const SUGGESTED_ROLES = ["planner", "executor", "reviewer", "general"];
|
|
15
|
+
export const GIT_DELIVERIES = ["none", "commit", "push", "pr"];
|
|
15
16
|
export function isAdapter(a) {
|
|
16
17
|
return a.capabilities.tier === "adapter";
|
|
17
18
|
}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA0DH;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC;AAiFhC,uEAAuE;AACvE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,CAAU,CAAC;AAsMvF,MAAM,CAAC,MAAM,cAAc,GAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AA8O9E,MAAM,UAAU,SAAS,CAAC,CAAW;IACnC,OAAO,CAAC,CAAC,YAAY,CAAC,IAAI,KAAK,SAAS,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Loom's version, from package.json — one source, so the CLI, the TUI and the
|
|
3
|
+
* daemon's API can't drift from the release (they each said 0.1.0 by hand).
|
|
4
|
+
* dist/version.js sits one level below package.json in the repo and in the
|
|
5
|
+
* desktop app's staged daemon alike.
|
|
6
|
+
*/
|
|
7
|
+
export declare const VERSION: string;
|
package/dist/version.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Loom's version, from package.json — one source, so the CLI, the TUI and the
|
|
3
|
+
* daemon's API can't drift from the release (they each said 0.1.0 by hand).
|
|
4
|
+
* dist/version.js sits one level below package.json in the repo and in the
|
|
5
|
+
* desktop app's staged daemon alike.
|
|
6
|
+
*/
|
|
7
|
+
import fs from "node:fs";
|
|
8
|
+
export const VERSION = (() => {
|
|
9
|
+
try {
|
|
10
|
+
return String(JSON.parse(fs.readFileSync(new URL("../package.json", import.meta.url), "utf8")).version ?? "0.0.0");
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return "0.0.0";
|
|
14
|
+
}
|
|
15
|
+
})();
|
|
16
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,MAAM,CAAC,MAAM,OAAO,GAAW,CAAC,GAAG,EAAE;IACnC,IAAI,CAAC;QACH,OAAO,MAAM,CAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAA0B,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC;IAC/I,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC,CAAC,EAAE,CAAC"}
|