@intentic/sandbox-contract 1.248.0 → 1.249.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -15
- package/dist/chores/chores.d.ts.map +1 -1
- package/dist/chores/chores.js.map +1 -1
- package/dist/chores/digest.d.ts.map +1 -1
- package/dist/chores/digest.js.map +1 -1
- package/dist/chores/extension-update.d.ts.map +1 -1
- package/dist/chores/extension-update.js.map +1 -1
- package/dist/chores/fix-deps.d.ts.map +1 -1
- package/dist/chores/fix-deps.js.map +1 -1
- package/dist/chores/index.d.ts +2 -2
- package/dist/chores/index.d.ts.map +1 -1
- package/dist/chores/index.js +1 -1
- package/dist/chores/index.js.map +1 -1
- package/dist/chores/probes.d.ts.map +1 -1
- package/dist/chores/probes.js.map +1 -1
- package/dist/chores/prompt.d.ts.map +1 -1
- package/dist/chores/prompt.js.map +1 -1
- package/dist/chores/stack.d.ts.map +1 -1
- package/dist/chores/stack.js.map +1 -1
- package/dist/chores/verdict.d.ts +7 -1
- package/dist/chores/verdict.d.ts.map +1 -1
- package/dist/chores/verdict.js +8 -0
- package/dist/chores/verdict.js.map +1 -1
- package/dist/contracts/accounts.contract.d.ts.map +1 -1
- package/dist/contracts/accounts.contract.js.map +1 -1
- package/dist/contracts/activity.contract.d.ts +1 -0
- package/dist/contracts/activity.contract.d.ts.map +1 -1
- package/dist/contracts/agent.contract.d.ts +12 -205
- package/dist/contracts/agent.contract.d.ts.map +1 -1
- package/dist/contracts/agent.contract.js +2 -1
- package/dist/contracts/agent.contract.js.map +1 -1
- package/dist/contracts/agents.contract.d.ts +228 -54
- package/dist/contracts/agents.contract.d.ts.map +1 -1
- package/dist/contracts/agents.contract.js +11 -2
- package/dist/contracts/agents.contract.js.map +1 -1
- package/dist/contracts/automations.contract.d.ts +35 -17
- package/dist/contracts/automations.contract.d.ts.map +1 -1
- package/dist/contracts/automations.contract.js +10 -1
- package/dist/contracts/automations.contract.js.map +1 -1
- package/dist/contracts/capabilities.contract.d.ts +0 -12
- package/dist/contracts/capabilities.contract.d.ts.map +1 -1
- package/dist/contracts/capabilities.contract.js +1 -1
- package/dist/contracts/capabilities.contract.js.map +1 -1
- package/dist/contracts/chores.contract.d.ts.map +1 -1
- package/dist/contracts/chores.contract.js.map +1 -1
- package/dist/contracts/ci.contract.d.ts +9 -0
- package/dist/contracts/ci.contract.d.ts.map +1 -1
- package/dist/contracts/endpoints.contract.d.ts.map +1 -1
- package/dist/contracts/endpoints.contract.js.map +1 -1
- package/dist/contracts/exit.contract.d.ts.map +1 -1
- package/dist/contracts/exit.contract.js +1 -1
- package/dist/contracts/exit.contract.js.map +1 -1
- package/dist/contracts/extensions.contract.d.ts.map +1 -1
- package/dist/contracts/extensions.contract.js.map +1 -1
- package/dist/contracts/git.contract.d.ts +45 -6
- package/dist/contracts/git.contract.d.ts.map +1 -1
- package/dist/contracts/git.contract.js +9 -9
- package/dist/contracts/git.contract.js.map +1 -1
- package/dist/contracts/host.contract.d.ts +2 -0
- package/dist/contracts/host.contract.d.ts.map +1 -1
- package/dist/contracts/host.contract.js.map +1 -1
- package/dist/contracts/intentic.contract.js +1 -1
- package/dist/contracts/intentic.contract.js.map +1 -1
- package/dist/contracts/logs.contract.d.ts.map +1 -1
- package/dist/contracts/logs.contract.js.map +1 -1
- package/dist/contracts/loops.contract.d.ts.map +1 -1
- package/dist/contracts/loops.contract.js.map +1 -1
- package/dist/contracts/personas.contract.d.ts +1 -0
- package/dist/contracts/personas.contract.d.ts.map +1 -1
- package/dist/contracts/personas.contract.js +1 -1
- package/dist/contracts/personas.contract.js.map +1 -1
- package/dist/contracts/providers.contract.d.ts.map +1 -1
- package/dist/contracts/providers.contract.js.map +1 -1
- package/dist/contracts/runner.contract.d.ts +97 -171
- package/dist/contracts/runner.contract.d.ts.map +1 -1
- package/dist/contracts/runner.contract.js +2 -2
- package/dist/contracts/runner.contract.js.map +1 -1
- package/dist/contracts/safety.contract.d.ts.map +1 -1
- package/dist/contracts/safety.contract.js +1 -1
- package/dist/contracts/safety.contract.js.map +1 -1
- package/dist/contracts/secrets.contract.d.ts.map +1 -1
- package/dist/contracts/secrets.contract.js.map +1 -1
- package/dist/contracts/sessions.contract.d.ts +2 -41
- package/dist/contracts/sessions.contract.d.ts.map +1 -1
- package/dist/contracts/sessions.contract.js +1 -1
- package/dist/contracts/sessions.contract.js.map +1 -1
- package/dist/contracts/settings.contract.d.ts +8 -18
- package/dist/contracts/settings.contract.d.ts.map +1 -1
- package/dist/contracts/settings.contract.js.map +1 -1
- package/dist/contracts/share.contract.d.ts.map +1 -1
- package/dist/contracts/share.contract.js.map +1 -1
- package/dist/contracts/skills.contract.d.ts.map +1 -1
- package/dist/contracts/skills.contract.js.map +1 -1
- package/dist/contracts/system.contract.d.ts +49 -73
- package/dist/contracts/system.contract.d.ts.map +1 -1
- package/dist/contracts/system.contract.js +12 -2
- package/dist/contracts/system.contract.js.map +1 -1
- package/dist/contracts/usage.contract.d.ts.map +1 -1
- package/dist/contracts/usage.contract.js.map +1 -1
- package/dist/contracts/vpn.contract.d.ts.map +1 -1
- package/dist/contracts/vpn.contract.js +1 -1
- package/dist/contracts/vpn.contract.js.map +1 -1
- package/dist/contracts/webext.contract.d.ts.map +1 -1
- package/dist/contracts/webext.contract.js.map +1 -1
- package/dist/contracts/workflows.contract.d.ts +7 -6
- package/dist/contracts/workflows.contract.d.ts.map +1 -1
- package/dist/contracts/workflows.contract.js +12 -3
- package/dist/contracts/workflows.contract.js.map +1 -1
- package/dist/contracts/workspace.contract.d.ts.map +1 -1
- package/dist/contracts/workspace.contract.js.map +1 -1
- package/dist/events/agent-events.d.ts +1237 -0
- package/dist/events/agent-events.d.ts.map +1 -0
- package/dist/events/agent-events.js +226 -0
- package/dist/events/agent-events.js.map +1 -0
- package/dist/events/cards.d.ts +404 -0
- package/dist/events/cards.d.ts.map +1 -0
- package/dist/events/cards.js +179 -0
- package/dist/events/cards.js.map +1 -0
- package/dist/events/resume.d.ts +23 -0
- package/dist/events/resume.d.ts.map +1 -0
- package/dist/events/resume.js +31 -0
- package/dist/events/resume.js.map +1 -0
- package/dist/events/system-events.d.ts +615 -0
- package/dist/events/system-events.d.ts.map +1 -0
- package/dist/events/system-events.js +64 -0
- package/dist/events/system-events.js.map +1 -0
- package/dist/events/transcript.d.ts +1755 -0
- package/dist/events/transcript.d.ts.map +1 -0
- package/dist/events/transcript.js +205 -0
- package/dist/events/transcript.js.map +1 -0
- package/dist/ids/conversation-ids.d.ts +8 -0
- package/dist/ids/conversation-ids.d.ts.map +1 -0
- package/dist/{conversation-ids.js → ids/conversation-ids.js} +13 -0
- package/dist/ids/conversation-ids.js.map +1 -0
- package/dist/ids/hostnames.d.ts.map +1 -0
- package/dist/ids/hostnames.js.map +1 -0
- package/dist/ids/session-names.d.ts.map +1 -0
- package/dist/ids/session-names.js.map +1 -0
- package/dist/ids/share-paths.d.ts.map +1 -0
- package/dist/ids/share-paths.js.map +1 -0
- package/dist/{tunnel-ids.d.ts → ids/tunnel-ids.d.ts} +1 -0
- package/dist/ids/tunnel-ids.d.ts.map +1 -0
- package/dist/{tunnel-ids.js → ids/tunnel-ids.js} +1 -0
- package/dist/ids/tunnel-ids.js.map +1 -0
- package/dist/index.d.ts +423 -450
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +54 -46
- package/dist/index.js.map +1 -1
- package/dist/{agent-catalog.d.ts → models/agent-catalog.d.ts} +2 -2
- package/dist/models/agent-catalog.d.ts.map +1 -0
- package/dist/models/agent-catalog.js.map +1 -0
- package/dist/models/agent-runtimes.d.ts.map +1 -0
- package/dist/models/agent-runtimes.js.map +1 -0
- package/dist/{fast-tier.d.ts → models/fast-tier.d.ts} +1 -1
- package/dist/models/fast-tier.d.ts.map +1 -0
- package/dist/models/fast-tier.js.map +1 -0
- package/dist/models/model-order.d.ts.map +1 -0
- package/dist/models/model-order.js.map +1 -0
- package/dist/{model-pins.d.ts → models/model-pins.d.ts} +1 -1
- package/dist/models/model-pins.d.ts.map +1 -0
- package/dist/models/model-pins.js.map +1 -0
- package/dist/{model-roles.d.ts → models/model-roles.d.ts} +0 -33
- package/dist/models/model-roles.d.ts.map +1 -0
- package/dist/{model-roles.js → models/model-roles.js} +0 -35
- package/dist/models/model-roles.js.map +1 -0
- package/dist/{plan-pools.d.ts → models/plan-pools.d.ts} +1 -1
- package/dist/models/plan-pools.d.ts.map +1 -0
- package/dist/models/plan-pools.js.map +1 -0
- package/dist/models/prompt-complexity.d.ts.map +1 -0
- package/dist/models/prompt-complexity.js.map +1 -0
- package/dist/models/provider-specs.d.ts.map +1 -0
- package/dist/models/provider-specs.js.map +1 -0
- package/dist/policy/approvals-execution.d.ts.map +1 -0
- package/dist/policy/approvals-execution.js.map +1 -0
- package/dist/{batch-runs.d.ts → policy/batch-runs.d.ts} +5 -1
- package/dist/policy/batch-runs.d.ts.map +1 -0
- package/dist/{batch-runs.js → policy/batch-runs.js} +10 -7
- package/dist/policy/batch-runs.js.map +1 -0
- package/dist/policy/capability-env.d.ts.map +1 -0
- package/dist/policy/capability-env.js.map +1 -0
- package/dist/policy/capability-secrets.d.ts.map +1 -0
- package/dist/policy/capability-secrets.js.map +1 -0
- package/dist/{card-status.d.ts → policy/card-status.d.ts} +2 -2
- package/dist/policy/card-status.d.ts.map +1 -0
- package/dist/{card-status.js → policy/card-status.js} +1 -5
- package/dist/policy/card-status.js.map +1 -0
- package/dist/{command-classes.d.ts → policy/command-classes.d.ts} +6 -2
- package/dist/policy/command-classes.d.ts.map +1 -0
- package/dist/{command-classes.js → policy/command-classes.js} +48 -11
- package/dist/policy/command-classes.js.map +1 -0
- package/dist/{command-run.d.ts → policy/command-run.d.ts} +1 -1
- package/dist/policy/command-run.d.ts.map +1 -0
- package/dist/policy/command-run.js.map +1 -0
- package/dist/policy/control-scopes.d.ts +16 -0
- package/dist/policy/control-scopes.d.ts.map +1 -0
- package/dist/policy/control-scopes.js +26 -0
- package/dist/policy/control-scopes.js.map +1 -0
- package/dist/policy/credential-material.d.ts.map +1 -0
- package/dist/policy/credential-material.js.map +1 -0
- package/dist/policy/needs-action.d.ts.map +1 -0
- package/dist/policy/needs-action.js.map +1 -0
- package/dist/policy/output-fields.d.ts.map +1 -0
- package/dist/policy/output-fields.js.map +1 -0
- package/dist/policy/overlay-lint.d.ts.map +1 -0
- package/dist/policy/overlay-lint.js.map +1 -0
- package/dist/policy/owner-ticket.d.ts.map +1 -0
- package/dist/{owner-ticket.js → policy/owner-ticket.js} +1 -1
- package/dist/policy/owner-ticket.js.map +1 -0
- package/dist/{safety-policy.d.ts → policy/safety-policy.d.ts} +6 -5
- package/dist/policy/safety-policy.d.ts.map +1 -0
- package/dist/{safety-policy.js → policy/safety-policy.js} +12 -12
- package/dist/policy/safety-policy.js.map +1 -0
- package/dist/policy/search-globs.d.ts.map +1 -0
- package/dist/policy/search-globs.js.map +1 -0
- package/dist/protocol/container-requirements.d.ts +20 -0
- package/dist/protocol/container-requirements.d.ts.map +1 -0
- package/dist/protocol/container-requirements.js +23 -0
- package/dist/protocol/container-requirements.js.map +1 -0
- package/dist/{host-protocol.d.ts → protocol/host-protocol.d.ts} +1 -0
- package/dist/protocol/host-protocol.d.ts.map +1 -0
- package/dist/{host-protocol.js → protocol/host-protocol.js} +1 -0
- package/dist/protocol/host-protocol.js.map +1 -0
- package/dist/protocol/ingress-contract.d.ts.map +1 -0
- package/dist/{ingress-contract.js → protocol/ingress-contract.js} +1 -1
- package/dist/protocol/ingress-contract.js.map +1 -0
- package/dist/protocol/ingress-protocol.d.ts.map +1 -0
- package/dist/protocol/ingress-protocol.js.map +1 -0
- package/dist/protocol/listener-protocol.d.ts.map +1 -0
- package/dist/{listener-protocol.js → protocol/listener-protocol.js} +1 -1
- package/dist/protocol/listener-protocol.js.map +1 -0
- package/dist/{peer-dial.d.ts → protocol/peer-dial.d.ts} +4 -1
- package/dist/protocol/peer-dial.d.ts.map +1 -0
- package/dist/{peer-dial.js → protocol/peer-dial.js} +51 -10
- package/dist/protocol/peer-dial.js.map +1 -0
- package/dist/protocol/peer-mcp-server.d.ts.map +1 -0
- package/dist/protocol/peer-mcp-server.js.map +1 -0
- package/dist/protocol/request-id.d.ts.map +1 -0
- package/dist/protocol/request-id.js.map +1 -0
- package/dist/protocol/routes.d.ts.map +1 -0
- package/dist/protocol/routes.js.map +1 -0
- package/dist/{runner-protocol.d.ts → protocol/runner-protocol.d.ts} +1 -0
- package/dist/protocol/runner-protocol.d.ts.map +1 -0
- package/dist/{runner-protocol.js → protocol/runner-protocol.js} +2 -1
- package/dist/protocol/runner-protocol.js.map +1 -0
- package/dist/protocol/sse.d.ts.map +1 -0
- package/dist/protocol/sse.js.map +1 -0
- package/dist/{terminal-protocol.d.ts → protocol/terminal-protocol.d.ts} +1 -3
- package/dist/protocol/terminal-protocol.d.ts.map +1 -0
- package/dist/protocol/terminal-protocol.js.map +1 -0
- package/dist/protocol/webext-links.d.ts.map +1 -0
- package/dist/protocol/webext-links.js.map +1 -0
- package/dist/{webext-protocol.d.ts → protocol/webext-protocol.d.ts} +1 -0
- package/dist/protocol/webext-protocol.d.ts.map +1 -0
- package/dist/{webext-protocol.js → protocol/webext-protocol.js} +1 -0
- package/dist/protocol/webext-protocol.js.map +1 -0
- package/dist/schemas/activity.d.ts +2 -0
- package/dist/schemas/activity.d.ts.map +1 -1
- package/dist/schemas/activity.js +4 -0
- package/dist/schemas/activity.js.map +1 -1
- package/dist/schemas/agent.d.ts +16 -4
- package/dist/schemas/agent.d.ts.map +1 -1
- package/dist/schemas/agent.js +21 -4
- package/dist/schemas/agent.js.map +1 -1
- package/dist/schemas/agents.d.ts +17 -4
- package/dist/schemas/agents.d.ts.map +1 -1
- package/dist/schemas/agents.js +15 -4
- package/dist/schemas/agents.js.map +1 -1
- package/dist/schemas/approvals.d.ts.map +1 -1
- package/dist/schemas/approvals.js.map +1 -1
- package/dist/schemas/automations.d.ts +54 -28
- package/dist/schemas/automations.d.ts.map +1 -1
- package/dist/schemas/automations.js +26 -8
- package/dist/schemas/automations.js.map +1 -1
- package/dist/schemas/capabilities.d.ts +0 -8
- package/dist/schemas/capabilities.d.ts.map +1 -1
- package/dist/schemas/capabilities.js +0 -4
- package/dist/schemas/capabilities.js.map +1 -1
- package/dist/schemas/ci.d.ts +10 -0
- package/dist/schemas/ci.d.ts.map +1 -1
- package/dist/schemas/ci.js +9 -1
- package/dist/schemas/ci.js.map +1 -1
- package/dist/schemas/codebase-health.d.ts.map +1 -1
- package/dist/schemas/codebase-health.js.map +1 -1
- package/dist/schemas/devices.d.ts +90 -0
- package/dist/schemas/devices.d.ts.map +1 -1
- package/dist/schemas/devices.js +10 -1
- package/dist/schemas/devices.js.map +1 -1
- package/dist/schemas/engines.d.ts.map +1 -1
- package/dist/schemas/engines.js.map +1 -1
- package/dist/schemas/environment.d.ts.map +1 -1
- package/dist/schemas/environment.js.map +1 -1
- package/dist/schemas/exit.d.ts.map +1 -1
- package/dist/schemas/exit.js.map +1 -1
- package/dist/schemas/extension-updates.d.ts.map +1 -1
- package/dist/schemas/extension-updates.js.map +1 -1
- package/dist/schemas/git-history.d.ts.map +1 -1
- package/dist/schemas/git-history.js.map +1 -1
- package/dist/schemas/git.d.ts +80 -16
- package/dist/schemas/git.d.ts.map +1 -1
- package/dist/schemas/git.js +37 -25
- package/dist/schemas/git.js.map +1 -1
- package/dist/schemas/history.d.ts.map +1 -1
- package/dist/schemas/history.js.map +1 -1
- package/dist/schemas/hosts.d.ts.map +1 -1
- package/dist/schemas/hosts.js.map +1 -1
- package/dist/schemas/inventory.d.ts.map +1 -1
- package/dist/schemas/inventory.js.map +1 -1
- package/dist/schemas/issues.d.ts +0 -1
- package/dist/schemas/issues.d.ts.map +1 -1
- package/dist/schemas/issues.js +0 -1
- package/dist/schemas/issues.js.map +1 -1
- package/dist/schemas/logs.d.ts.map +1 -1
- package/dist/schemas/logs.js.map +1 -1
- package/dist/schemas/loops.d.ts.map +1 -1
- package/dist/schemas/loops.js +1 -1
- package/dist/schemas/loops.js.map +1 -1
- package/dist/schemas/maintenance.d.ts.map +1 -1
- package/dist/schemas/maintenance.js.map +1 -1
- package/dist/schemas/marketplace.d.ts +0 -4
- package/dist/schemas/marketplace.d.ts.map +1 -1
- package/dist/schemas/panels.d.ts.map +1 -1
- package/dist/schemas/panels.js.map +1 -1
- package/dist/schemas/personas.d.ts +2 -1
- package/dist/schemas/personas.d.ts.map +1 -1
- package/dist/schemas/personas.js +6 -2
- package/dist/schemas/personas.js.map +1 -1
- package/dist/schemas/plan-limits.d.ts +2 -4
- package/dist/schemas/plan-limits.d.ts.map +1 -1
- package/dist/schemas/plan-limits.js +5 -8
- package/dist/schemas/plan-limits.js.map +1 -1
- package/dist/schemas/ports.d.ts.map +1 -1
- package/dist/schemas/ports.js.map +1 -1
- package/dist/schemas/provider-oauth.d.ts.map +1 -1
- package/dist/schemas/provider-oauth.js.map +1 -1
- package/dist/schemas/provider-subscriptions.d.ts +1 -1
- package/dist/schemas/provider-subscriptions.d.ts.map +1 -1
- package/dist/schemas/provider-subscriptions.js +1 -1
- package/dist/schemas/provider-subscriptions.js.map +1 -1
- package/dist/schemas/public.d.ts.map +1 -1
- package/dist/schemas/public.js.map +1 -1
- package/dist/schemas/push.d.ts.map +1 -1
- package/dist/schemas/push.js.map +1 -1
- package/dist/schemas/secrets.d.ts.map +1 -1
- package/dist/schemas/secrets.js.map +1 -1
- package/dist/schemas/settings.d.ts +6 -9
- package/dist/schemas/settings.d.ts.map +1 -1
- package/dist/schemas/settings.js +16 -5
- package/dist/schemas/settings.js.map +1 -1
- package/dist/schemas/share.d.ts.map +1 -1
- package/dist/schemas/share.js.map +1 -1
- package/dist/schemas/shared.d.ts +4 -0
- package/dist/schemas/shared.d.ts.map +1 -1
- package/dist/schemas/shared.js +3 -0
- package/dist/schemas/shared.js.map +1 -1
- package/dist/schemas/system.d.ts +6 -0
- package/dist/schemas/system.d.ts.map +1 -1
- package/dist/schemas/system.js +10 -0
- package/dist/schemas/system.js.map +1 -1
- package/dist/schemas/terminal.d.ts.map +1 -1
- package/dist/schemas/terminal.js.map +1 -1
- package/dist/schemas/usage.d.ts.map +1 -1
- package/dist/schemas/usage.js.map +1 -1
- package/dist/schemas/vpn.d.ts.map +1 -1
- package/dist/schemas/vpn.js.map +1 -1
- package/dist/schemas/webext.d.ts.map +1 -1
- package/dist/schemas/webext.js.map +1 -1
- package/dist/schemas/workflows.d.ts +66 -9
- package/dist/schemas/workflows.d.ts.map +1 -1
- package/dist/schemas/workflows.js +6 -5
- package/dist/schemas/workflows.js.map +1 -1
- package/dist/schemas/workspace-repos.d.ts.map +1 -1
- package/dist/schemas/workspace-repos.js.map +1 -1
- package/dist/schemas/workspace-search.d.ts.map +1 -1
- package/dist/schemas/workspace-search.js.map +1 -1
- package/dist/schemas/workspace-setup.d.ts.map +1 -1
- package/dist/schemas/workspace-setup.js.map +1 -1
- package/dist/schemas/workspace-tree.d.ts.map +1 -1
- package/dist/schemas/workspace-tree.js.map +1 -1
- package/dist/state/arrival.d.ts.map +1 -0
- package/dist/{arrival.js → state/arrival.js} +1 -1
- package/dist/state/arrival.js.map +1 -0
- package/dist/state/contract-lock.d.ts.map +1 -0
- package/dist/{contract-lock.js → state/contract-lock.js} +1 -1
- package/dist/state/contract-lock.js.map +1 -0
- package/dist/{definition.d.ts → state/definition.d.ts} +21 -17
- package/dist/state/definition.d.ts.map +1 -0
- package/dist/{definition.js → state/definition.js} +4 -4
- package/dist/state/definition.js.map +1 -0
- package/dist/state/history-state.d.ts.map +1 -0
- package/dist/{history-state.js → state/history-state.js} +1 -0
- package/dist/state/history-state.js.map +1 -0
- package/dist/state/runtime-state.d.ts.map +1 -0
- package/dist/state/runtime-state.js.map +1 -0
- package/dist/state/starter.d.ts.map +1 -0
- package/dist/state/starter.js.map +1 -0
- package/dist/state/state-portability.d.ts.map +1 -0
- package/dist/state/state-portability.js.map +1 -0
- package/dist/state/versions.d.ts.map +1 -0
- package/dist/state/versions.js.map +1 -0
- package/dist/{workspace-state.d.ts → state/workspace-state.d.ts} +8 -0
- package/dist/state/workspace-state.d.ts.map +1 -0
- package/dist/{workspace-state.js → state/workspace-state.js} +25 -0
- package/dist/state/workspace-state.js.map +1 -0
- package/dist/{documents.d.ts → text/documents.d.ts} +1 -1
- package/dist/text/documents.d.ts.map +1 -0
- package/dist/{documents.js → text/documents.js} +1 -1
- package/dist/text/documents.js.map +1 -0
- package/dist/text/embed.d.ts.map +1 -0
- package/dist/text/embed.js.map +1 -0
- package/dist/text/mentions.d.ts.map +1 -0
- package/dist/text/mentions.js.map +1 -0
- package/dist/text/model-answer.d.ts +3 -0
- package/dist/text/model-answer.d.ts.map +1 -0
- package/dist/text/model-answer.js +3 -0
- package/dist/text/model-answer.js.map +1 -0
- package/dist/text/path-refs.d.ts.map +1 -0
- package/dist/text/path-refs.js.map +1 -0
- package/dist/{shell-regions.d.ts → text/shell-regions.d.ts} +1 -1
- package/dist/text/shell-regions.d.ts.map +1 -0
- package/dist/text/shell-regions.js.map +1 -0
- package/dist/text/title.d.ts.map +1 -0
- package/dist/text/title.js.map +1 -0
- package/dist/{transcript-fold.d.ts → text/transcript-fold.d.ts} +2 -1
- package/dist/text/transcript-fold.d.ts.map +1 -0
- package/dist/{transcript-fold.js → text/transcript-fold.js} +2 -16
- package/dist/text/transcript-fold.js.map +1 -0
- package/dist/text/whisper.d.ts +3 -0
- package/dist/text/whisper.d.ts.map +1 -0
- package/dist/text/whisper.js +11 -0
- package/dist/text/whisper.js.map +1 -0
- package/dist/{workflow-faults.d.ts → text/workflow-faults.d.ts} +1 -1
- package/dist/text/workflow-faults.d.ts.map +1 -0
- package/dist/{workflow-faults.js → text/workflow-faults.js} +1 -1
- package/dist/text/workflow-faults.js.map +1 -0
- package/package.json +70 -70
- package/src/chores/chores.test.ts +4 -10
- package/src/chores/chores.ts +148 -392
- package/src/chores/digest.ts +8 -28
- package/src/chores/extension-update.ts +3 -8
- package/src/chores/fix-deps.ts +4 -18
- package/src/chores/index.ts +2 -2
- package/src/chores/probes.test.ts +7 -43
- package/src/chores/probes.ts +62 -167
- package/src/chores/prompt.ts +10 -34
- package/src/chores/stack.test.ts +6 -45
- package/src/chores/stack.ts +27 -118
- package/src/chores/verdict.test.ts +101 -80
- package/src/chores/verdict.ts +54 -99
- package/src/contracts/accounts.contract.ts +4 -19
- package/src/contracts/agent.contract.ts +7 -22
- package/src/contracts/agents.contract.ts +25 -71
- package/src/contracts/automations.contract.ts +14 -30
- package/src/contracts/capabilities.contract.ts +8 -35
- package/src/contracts/chores.contract.ts +4 -15
- package/src/contracts/endpoints.contract.ts +5 -22
- package/src/contracts/exit.contract.ts +7 -30
- package/src/contracts/extensions.contract.ts +8 -30
- package/src/contracts/git.contract.ts +25 -49
- package/src/contracts/host.contract.ts +9 -44
- package/src/contracts/intentic.contract.ts +1 -1
- package/src/contracts/logs.contract.ts +3 -13
- package/src/contracts/loops.contract.ts +9 -40
- package/src/contracts/personas.contract.ts +10 -35
- package/src/contracts/providers.contract.ts +4 -17
- package/src/contracts/runner.contract.ts +12 -39
- package/src/contracts/safety.contract.ts +5 -14
- package/src/contracts/secrets.contract.ts +4 -22
- package/src/contracts/sessions.contract.ts +1 -1
- package/src/contracts/settings.contract.ts +4 -10
- package/src/contracts/share.contract.ts +3 -9
- package/src/contracts/skills.contract.ts +4 -15
- package/src/contracts/system.contract.ts +26 -52
- package/src/contracts/usage.contract.ts +7 -21
- package/src/contracts/vpn.contract.ts +9 -16
- package/src/contracts/webext.contract.ts +9 -25
- package/src/contracts/workflows.contract.ts +34 -58
- package/src/contracts/workspace.contract.ts +19 -50
- package/src/events/agent-events.ts +345 -0
- package/src/events/cards.ts +286 -0
- package/src/{events.test.ts → events/resume.test.ts} +4 -19
- package/src/events/resume.ts +60 -0
- package/src/events/system-events.ts +139 -0
- package/src/events/transcript.ts +320 -0
- package/src/{conversation-ids.test.ts → ids/conversation-ids.test.ts} +25 -13
- package/src/ids/conversation-ids.ts +178 -0
- package/src/ids/hostnames.ts +129 -0
- package/src/ids/session-names.ts +29 -0
- package/src/ids/share-paths.ts +43 -0
- package/src/{tunnel-ids.test.ts → ids/tunnel-ids.test.ts} +1 -14
- package/src/ids/tunnel-ids.ts +29 -0
- package/src/index.ts +71 -87
- package/src/{agent-catalog.test.ts → models/agent-catalog.test.ts} +19 -93
- package/src/models/agent-catalog.ts +174 -0
- package/src/models/agent-runtimes.ts +201 -0
- package/src/models/capability-ledger.test.ts +84 -0
- package/src/{fast-tier.test.ts → models/fast-tier.test.ts} +7 -18
- package/src/models/fast-tier.ts +36 -0
- package/src/{model-order.test.ts → models/model-order.test.ts} +19 -40
- package/src/models/model-order.ts +163 -0
- package/src/{model-pins.test.ts → models/model-pins.test.ts} +12 -46
- package/src/models/model-pins.ts +57 -0
- package/src/models/model-roles.test.ts +38 -0
- package/src/models/model-roles.ts +180 -0
- package/src/{plan-pools.test.ts → models/plan-pools.test.ts} +6 -11
- package/src/models/plan-pools.ts +65 -0
- package/src/{prompt-complexity.test.ts → models/prompt-complexity.test.ts} +8 -60
- package/src/models/prompt-complexity.ts +215 -0
- package/src/{provider-specs.test.ts → models/provider-specs.test.ts} +18 -47
- package/src/models/provider-specs.ts +272 -0
- package/src/policy/approvals-execution.ts +58 -0
- package/src/{batch-runs.test.ts → policy/batch-runs.test.ts} +4 -20
- package/src/policy/batch-runs.ts +137 -0
- package/src/policy/capability-secrets.ts +5 -0
- package/src/{card-status.ts → policy/card-status.ts} +11 -26
- package/src/{command-classes.test.ts → policy/command-classes.test.ts} +11 -118
- package/src/policy/command-classes.ts +395 -0
- package/src/policy/command-run.ts +65 -0
- package/src/policy/control-scopes.ts +38 -0
- package/src/{credential-material.test.ts → policy/credential-material.test.ts} +4 -26
- package/src/policy/credential-material.ts +91 -0
- package/src/policy/needs-action.ts +5 -0
- package/src/policy/output-fields.ts +86 -0
- package/src/policy/overlay-lint.ts +100 -0
- package/src/{owner-ticket.test.ts → policy/owner-ticket.test.ts} +1 -1
- package/src/{owner-ticket.ts → policy/owner-ticket.ts} +9 -31
- package/src/policy/safety-policy.test.ts +84 -0
- package/src/policy/safety-policy.ts +142 -0
- package/src/policy/search-globs.ts +60 -0
- package/src/protocol/container-requirements.test.ts +72 -0
- package/src/protocol/container-requirements.ts +58 -0
- package/src/protocol/host-protocol.ts +29 -0
- package/src/protocol/ingress-contract.ts +103 -0
- package/src/{ingress-protocol.test.ts → protocol/ingress-protocol.test.ts} +25 -90
- package/src/protocol/ingress-protocol.ts +441 -0
- package/src/protocol/listener-protocol.ts +75 -0
- package/src/{peer-dial.test.ts → protocol/peer-dial.test.ts} +52 -1
- package/src/protocol/peer-dial.ts +207 -0
- package/src/{peer-mcp-server.ts → protocol/peer-mcp-server.ts} +16 -41
- package/src/protocol/request-id.ts +5 -0
- package/src/{routes.test.ts → protocol/routes.test.ts} +14 -22
- package/src/protocol/routes.ts +159 -0
- package/src/protocol/runner-protocol.ts +197 -0
- package/src/protocol/terminal-protocol.ts +13 -0
- package/src/protocol/webext-links.ts +50 -0
- package/src/protocol/webext-protocol.ts +24 -0
- package/src/schemas/activity.ts +22 -30
- package/src/schemas/agent.ts +130 -238
- package/src/schemas/agents.ts +165 -483
- package/src/schemas/approvals.ts +23 -71
- package/src/schemas/automations.ts +142 -250
- package/src/schemas/capabilities.ts +127 -414
- package/src/schemas/ci.ts +56 -108
- package/src/schemas/codebase-health.ts +7 -11
- package/src/schemas/devices.ts +98 -321
- package/src/schemas/engines.ts +16 -44
- package/src/schemas/environment.ts +41 -91
- package/src/schemas/exit.ts +24 -81
- package/src/schemas/extension-updates.ts +42 -87
- package/src/schemas/git-history.ts +30 -84
- package/src/schemas/git.ts +141 -256
- package/src/schemas/history.ts +14 -40
- package/src/schemas/hosts.ts +9 -15
- package/src/schemas/inventory.ts +8 -10
- package/src/schemas/issues.ts +66 -134
- package/src/schemas/logs.ts +15 -34
- package/src/schemas/loops.ts +46 -163
- package/src/schemas/maintenance.ts +47 -172
- package/src/schemas/panels.ts +20 -45
- package/src/schemas/personas.ts +50 -200
- package/src/schemas/plan-limits.ts +58 -197
- package/src/schemas/ports.ts +14 -32
- package/src/schemas/provider-oauth.ts +23 -76
- package/src/schemas/provider-subscriptions.ts +4 -13
- package/src/schemas/public.ts +4 -15
- package/src/schemas/push.ts +8 -36
- package/src/schemas/secrets.ts +20 -64
- package/src/schemas/settings.ts +175 -600
- package/src/schemas/share.ts +14 -32
- package/src/schemas/shared.ts +14 -13
- package/src/schemas/system.ts +46 -78
- package/src/schemas/terminal.ts +41 -120
- package/src/schemas/usage.ts +44 -233
- package/src/schemas/version-seam.test.ts +9 -26
- package/src/schemas/vpn.ts +27 -64
- package/src/schemas/webext.ts +22 -53
- package/src/schemas/workflows.ts +57 -183
- package/src/schemas/workspace-repos.ts +12 -24
- package/src/schemas/workspace-search.ts +17 -35
- package/src/schemas/workspace-setup.ts +4 -11
- package/src/schemas/workspace-tree.ts +32 -91
- package/src/state/arrival.ts +109 -0
- package/src/state/contract-lock.test.ts +17 -0
- package/src/state/contract-lock.ts +49 -0
- package/src/state/definition.ts +143 -0
- package/src/state/history-state.ts +103 -0
- package/src/{runtime-state.test.ts → state/runtime-state.test.ts} +3 -10
- package/src/state/runtime-state.ts +62 -0
- package/src/state/starter.ts +5 -0
- package/src/state/state-portability.ts +27 -0
- package/src/state/versions.ts +26 -0
- package/src/{workspace-state.test.ts → state/workspace-state.test.ts} +65 -172
- package/src/state/workspace-state.ts +669 -0
- package/src/{documents.test.ts → text/documents.test.ts} +1 -1
- package/src/text/documents.ts +42 -0
- package/src/text/embed.ts +132 -0
- package/src/text/mentions.ts +21 -0
- package/src/text/model-answer.ts +9 -0
- package/src/text/path-refs.ts +39 -0
- package/src/text/shell-regions.ts +224 -0
- package/src/{title.test.ts → text/title.test.ts} +13 -32
- package/src/text/title.ts +202 -0
- package/src/{transcript-fold.test.ts → text/transcript-fold.test.ts} +5 -83
- package/src/{transcript-fold.ts → text/transcript-fold.ts} +65 -170
- package/src/text/whisper.test.ts +19 -0
- package/src/text/whisper.ts +17 -0
- package/src/{workflow-faults.test.ts → text/workflow-faults.test.ts} +6 -24
- package/src/{workflow-faults.ts → text/workflow-faults.ts} +20 -60
- package/dist/agent-catalog.d.ts.map +0 -1
- package/dist/agent-catalog.js.map +0 -1
- package/dist/agent-runtimes.d.ts.map +0 -1
- package/dist/agent-runtimes.js.map +0 -1
- package/dist/approvals-execution.d.ts.map +0 -1
- package/dist/approvals-execution.js.map +0 -1
- package/dist/arrival.d.ts.map +0 -1
- package/dist/arrival.js.map +0 -1
- package/dist/batch-runs.d.ts.map +0 -1
- package/dist/batch-runs.js.map +0 -1
- package/dist/capability-env.d.ts.map +0 -1
- package/dist/capability-env.js.map +0 -1
- package/dist/capability-secrets.d.ts.map +0 -1
- package/dist/capability-secrets.js.map +0 -1
- package/dist/card-status.d.ts.map +0 -1
- package/dist/card-status.js.map +0 -1
- package/dist/command-classes.d.ts.map +0 -1
- package/dist/command-classes.js.map +0 -1
- package/dist/command-run.d.ts.map +0 -1
- package/dist/command-run.js.map +0 -1
- package/dist/contract-lock.d.ts.map +0 -1
- package/dist/contract-lock.js.map +0 -1
- package/dist/conversation-ids.d.ts +0 -4
- package/dist/conversation-ids.d.ts.map +0 -1
- package/dist/conversation-ids.js.map +0 -1
- package/dist/credential-material.d.ts.map +0 -1
- package/dist/credential-material.js.map +0 -1
- package/dist/definition.d.ts.map +0 -1
- package/dist/definition.js.map +0 -1
- package/dist/documents.d.ts.map +0 -1
- package/dist/documents.js.map +0 -1
- package/dist/embed.d.ts.map +0 -1
- package/dist/embed.js.map +0 -1
- package/dist/events.d.ts +0 -4336
- package/dist/events.d.ts.map +0 -1
- package/dist/events.js +0 -725
- package/dist/events.js.map +0 -1
- package/dist/fast-tier.d.ts.map +0 -1
- package/dist/fast-tier.js.map +0 -1
- package/dist/history-state.d.ts.map +0 -1
- package/dist/history-state.js.map +0 -1
- package/dist/host-protocol.d.ts.map +0 -1
- package/dist/host-protocol.js.map +0 -1
- package/dist/hostnames.d.ts.map +0 -1
- package/dist/hostnames.js.map +0 -1
- package/dist/ingress-contract.d.ts.map +0 -1
- package/dist/ingress-contract.js.map +0 -1
- package/dist/ingress-protocol.d.ts.map +0 -1
- package/dist/ingress-protocol.js.map +0 -1
- package/dist/listener-protocol.d.ts.map +0 -1
- package/dist/listener-protocol.js.map +0 -1
- package/dist/mentions.d.ts.map +0 -1
- package/dist/mentions.js.map +0 -1
- package/dist/model-order.d.ts.map +0 -1
- package/dist/model-order.js.map +0 -1
- package/dist/model-pins.d.ts.map +0 -1
- package/dist/model-pins.js.map +0 -1
- package/dist/model-roles.d.ts.map +0 -1
- package/dist/model-roles.js.map +0 -1
- package/dist/needs-action.d.ts.map +0 -1
- package/dist/needs-action.js.map +0 -1
- package/dist/output-fields.d.ts.map +0 -1
- package/dist/output-fields.js.map +0 -1
- package/dist/overlay-lint.d.ts.map +0 -1
- package/dist/overlay-lint.js.map +0 -1
- package/dist/owner-ticket.d.ts.map +0 -1
- package/dist/owner-ticket.js.map +0 -1
- package/dist/path-refs.d.ts.map +0 -1
- package/dist/path-refs.js.map +0 -1
- package/dist/peer-dial.d.ts.map +0 -1
- package/dist/peer-dial.js.map +0 -1
- package/dist/peer-mcp-server.d.ts.map +0 -1
- package/dist/peer-mcp-server.js.map +0 -1
- package/dist/plan-pools.d.ts.map +0 -1
- package/dist/plan-pools.js.map +0 -1
- package/dist/prompt-complexity.d.ts.map +0 -1
- package/dist/prompt-complexity.js.map +0 -1
- package/dist/provider-specs.d.ts.map +0 -1
- package/dist/provider-specs.js.map +0 -1
- package/dist/request-id.d.ts.map +0 -1
- package/dist/request-id.js.map +0 -1
- package/dist/routes.d.ts.map +0 -1
- package/dist/routes.js.map +0 -1
- package/dist/runner-protocol.d.ts.map +0 -1
- package/dist/runner-protocol.js.map +0 -1
- package/dist/runtime-state.d.ts.map +0 -1
- package/dist/runtime-state.js.map +0 -1
- package/dist/safety-policy.d.ts.map +0 -1
- package/dist/safety-policy.js.map +0 -1
- package/dist/search-globs.d.ts.map +0 -1
- package/dist/search-globs.js.map +0 -1
- package/dist/session-names.d.ts.map +0 -1
- package/dist/session-names.js.map +0 -1
- package/dist/share-paths.d.ts.map +0 -1
- package/dist/share-paths.js.map +0 -1
- package/dist/shell-regions.d.ts.map +0 -1
- package/dist/shell-regions.js.map +0 -1
- package/dist/sse.d.ts.map +0 -1
- package/dist/sse.js.map +0 -1
- package/dist/starter.d.ts.map +0 -1
- package/dist/starter.js.map +0 -1
- package/dist/state-portability.d.ts.map +0 -1
- package/dist/state-portability.js.map +0 -1
- package/dist/terminal-protocol.d.ts.map +0 -1
- package/dist/terminal-protocol.js.map +0 -1
- package/dist/title.d.ts.map +0 -1
- package/dist/title.js.map +0 -1
- package/dist/transcript-fold.d.ts.map +0 -1
- package/dist/transcript-fold.js.map +0 -1
- package/dist/tunnel-ids.d.ts.map +0 -1
- package/dist/tunnel-ids.js.map +0 -1
- package/dist/versions.d.ts.map +0 -1
- package/dist/versions.js.map +0 -1
- package/dist/webext-links.d.ts.map +0 -1
- package/dist/webext-links.js.map +0 -1
- package/dist/webext-protocol.d.ts.map +0 -1
- package/dist/webext-protocol.js.map +0 -1
- package/dist/workflow-faults.d.ts.map +0 -1
- package/dist/workflow-faults.js.map +0 -1
- package/dist/workspace-state.d.ts.map +0 -1
- package/dist/workspace-state.js.map +0 -1
- package/src/agent-catalog.ts +0 -316
- package/src/agent-runtimes.ts +0 -419
- package/src/approvals-execution.ts +0 -96
- package/src/arrival.ts +0 -160
- package/src/batch-runs.ts +0 -188
- package/src/capability-ledger.test.ts +0 -140
- package/src/capability-secrets.ts +0 -20
- package/src/command-classes.ts +0 -617
- package/src/command-run.ts +0 -78
- package/src/contract-lock.test.ts +0 -23
- package/src/contract-lock.ts +0 -66
- package/src/conversation-ids.ts +0 -207
- package/src/credential-material.ts +0 -181
- package/src/definition.ts +0 -207
- package/src/documents.ts +0 -67
- package/src/embed.ts +0 -164
- package/src/events.ts +0 -1870
- package/src/fast-tier.ts +0 -72
- package/src/history-state.ts +0 -174
- package/src/host-protocol.ts +0 -36
- package/src/hostnames.ts +0 -180
- package/src/ingress-contract.ts +0 -157
- package/src/ingress-protocol.ts +0 -625
- package/src/listener-protocol.ts +0 -96
- package/src/mentions.ts +0 -25
- package/src/model-order.ts +0 -262
- package/src/model-pins.ts +0 -132
- package/src/model-roles.test.ts +0 -52
- package/src/model-roles.ts +0 -320
- package/src/needs-action.ts +0 -14
- package/src/output-fields.ts +0 -111
- package/src/overlay-lint.ts +0 -116
- package/src/path-refs.ts +0 -59
- package/src/peer-dial.ts +0 -163
- package/src/plan-pools.ts +0 -92
- package/src/prompt-complexity.ts +0 -334
- package/src/provider-specs.ts +0 -432
- package/src/request-id.ts +0 -41
- package/src/routes.ts +0 -219
- package/src/runner-protocol.ts +0 -239
- package/src/runtime-state.ts +0 -140
- package/src/safety-policy.test.ts +0 -88
- package/src/safety-policy.ts +0 -258
- package/src/search-globs.ts +0 -76
- package/src/session-names.ts +0 -44
- package/src/share-paths.ts +0 -68
- package/src/shell-regions.ts +0 -289
- package/src/starter.ts +0 -13
- package/src/state-portability.ts +0 -56
- package/src/terminal-protocol.ts +0 -16
- package/src/title.ts +0 -267
- package/src/tunnel-ids.ts +0 -57
- package/src/versions.ts +0 -48
- package/src/webext-links.ts +0 -90
- package/src/webext-protocol.ts +0 -27
- package/src/workspace-state.ts +0 -1090
- /package/dist/{hostnames.d.ts → ids/hostnames.d.ts} +0 -0
- /package/dist/{hostnames.js → ids/hostnames.js} +0 -0
- /package/dist/{session-names.d.ts → ids/session-names.d.ts} +0 -0
- /package/dist/{session-names.js → ids/session-names.js} +0 -0
- /package/dist/{share-paths.d.ts → ids/share-paths.d.ts} +0 -0
- /package/dist/{share-paths.js → ids/share-paths.js} +0 -0
- /package/dist/{agent-catalog.js → models/agent-catalog.js} +0 -0
- /package/dist/{agent-runtimes.d.ts → models/agent-runtimes.d.ts} +0 -0
- /package/dist/{agent-runtimes.js → models/agent-runtimes.js} +0 -0
- /package/dist/{fast-tier.js → models/fast-tier.js} +0 -0
- /package/dist/{model-order.d.ts → models/model-order.d.ts} +0 -0
- /package/dist/{model-order.js → models/model-order.js} +0 -0
- /package/dist/{model-pins.js → models/model-pins.js} +0 -0
- /package/dist/{plan-pools.js → models/plan-pools.js} +0 -0
- /package/dist/{prompt-complexity.d.ts → models/prompt-complexity.d.ts} +0 -0
- /package/dist/{prompt-complexity.js → models/prompt-complexity.js} +0 -0
- /package/dist/{provider-specs.d.ts → models/provider-specs.d.ts} +0 -0
- /package/dist/{provider-specs.js → models/provider-specs.js} +0 -0
- /package/dist/{approvals-execution.d.ts → policy/approvals-execution.d.ts} +0 -0
- /package/dist/{approvals-execution.js → policy/approvals-execution.js} +0 -0
- /package/dist/{capability-env.d.ts → policy/capability-env.d.ts} +0 -0
- /package/dist/{capability-env.js → policy/capability-env.js} +0 -0
- /package/dist/{capability-secrets.d.ts → policy/capability-secrets.d.ts} +0 -0
- /package/dist/{capability-secrets.js → policy/capability-secrets.js} +0 -0
- /package/dist/{command-run.js → policy/command-run.js} +0 -0
- /package/dist/{credential-material.d.ts → policy/credential-material.d.ts} +0 -0
- /package/dist/{credential-material.js → policy/credential-material.js} +0 -0
- /package/dist/{needs-action.d.ts → policy/needs-action.d.ts} +0 -0
- /package/dist/{needs-action.js → policy/needs-action.js} +0 -0
- /package/dist/{output-fields.d.ts → policy/output-fields.d.ts} +0 -0
- /package/dist/{output-fields.js → policy/output-fields.js} +0 -0
- /package/dist/{overlay-lint.d.ts → policy/overlay-lint.d.ts} +0 -0
- /package/dist/{overlay-lint.js → policy/overlay-lint.js} +0 -0
- /package/dist/{owner-ticket.d.ts → policy/owner-ticket.d.ts} +0 -0
- /package/dist/{search-globs.d.ts → policy/search-globs.d.ts} +0 -0
- /package/dist/{search-globs.js → policy/search-globs.js} +0 -0
- /package/dist/{ingress-contract.d.ts → protocol/ingress-contract.d.ts} +0 -0
- /package/dist/{ingress-protocol.d.ts → protocol/ingress-protocol.d.ts} +0 -0
- /package/dist/{ingress-protocol.js → protocol/ingress-protocol.js} +0 -0
- /package/dist/{listener-protocol.d.ts → protocol/listener-protocol.d.ts} +0 -0
- /package/dist/{peer-mcp-server.d.ts → protocol/peer-mcp-server.d.ts} +0 -0
- /package/dist/{peer-mcp-server.js → protocol/peer-mcp-server.js} +0 -0
- /package/dist/{request-id.d.ts → protocol/request-id.d.ts} +0 -0
- /package/dist/{request-id.js → protocol/request-id.js} +0 -0
- /package/dist/{routes.d.ts → protocol/routes.d.ts} +0 -0
- /package/dist/{routes.js → protocol/routes.js} +0 -0
- /package/dist/{sse.d.ts → protocol/sse.d.ts} +0 -0
- /package/dist/{sse.js → protocol/sse.js} +0 -0
- /package/dist/{terminal-protocol.js → protocol/terminal-protocol.js} +0 -0
- /package/dist/{webext-links.d.ts → protocol/webext-links.d.ts} +0 -0
- /package/dist/{webext-links.js → protocol/webext-links.js} +0 -0
- /package/dist/{arrival.d.ts → state/arrival.d.ts} +0 -0
- /package/dist/{contract-lock.d.ts → state/contract-lock.d.ts} +0 -0
- /package/dist/{history-state.d.ts → state/history-state.d.ts} +0 -0
- /package/dist/{runtime-state.d.ts → state/runtime-state.d.ts} +0 -0
- /package/dist/{runtime-state.js → state/runtime-state.js} +0 -0
- /package/dist/{starter.d.ts → state/starter.d.ts} +0 -0
- /package/dist/{starter.js → state/starter.js} +0 -0
- /package/dist/{state-portability.d.ts → state/state-portability.d.ts} +0 -0
- /package/dist/{state-portability.js → state/state-portability.js} +0 -0
- /package/dist/{versions.d.ts → state/versions.d.ts} +0 -0
- /package/dist/{versions.js → state/versions.js} +0 -0
- /package/dist/{embed.d.ts → text/embed.d.ts} +0 -0
- /package/dist/{embed.js → text/embed.js} +0 -0
- /package/dist/{mentions.d.ts → text/mentions.d.ts} +0 -0
- /package/dist/{mentions.js → text/mentions.js} +0 -0
- /package/dist/{path-refs.d.ts → text/path-refs.d.ts} +0 -0
- /package/dist/{path-refs.js → text/path-refs.js} +0 -0
- /package/dist/{shell-regions.js → text/shell-regions.js} +0 -0
- /package/dist/{title.d.ts → text/title.d.ts} +0 -0
- /package/dist/{title.js → text/title.js} +0 -0
- /package/src/{hostnames.test.ts → ids/hostnames.test.ts} +0 -0
- /package/src/{share-paths.test.ts → ids/share-paths.test.ts} +0 -0
- /package/src/{capability-env.ts → policy/capability-env.ts} +0 -0
- /package/src/{overlay-lint.test.ts → policy/overlay-lint.test.ts} +0 -0
- /package/src/{search-globs.test.ts → policy/search-globs.test.ts} +0 -0
- /package/src/{ingress-contract.test.ts → protocol/ingress-contract.test.ts} +0 -0
- /package/src/{peer-mcp-server.test.ts → protocol/peer-mcp-server.test.ts} +0 -0
- /package/src/{sse.ts → protocol/sse.ts} +0 -0
- /package/src/{versions.test.ts → state/versions.test.ts} +0 -0
- /package/src/{embed.test.ts → text/embed.test.ts} +0 -0
- /package/src/{mentions.test.ts → text/mentions.test.ts} +0 -0
- /package/src/{path-refs.test.ts → text/path-refs.test.ts} +0 -0
|
@@ -34,13 +34,11 @@ import {
|
|
|
34
34
|
WorkspaceTreeSchema,
|
|
35
35
|
} from "../schemas/workspace-tree.js";
|
|
36
36
|
|
|
37
|
-
// The full /work view
|
|
38
|
-
//
|
|
39
|
-
//
|
|
37
|
+
// The full /work view plus extra-repo cloning. /workspace/raw stays a plain Hono route (a streamed binary body doesn't
|
|
38
|
+
// fit oRPC's request/response shape).
|
|
39
|
+
// External MCP tools live in the capabilities manifest (mcp kind), not here.
|
|
40
40
|
export const workspaceContract = {
|
|
41
|
-
// `agent`
|
|
42
|
-
// tree. Every read route below takes it, so a link into a conversation's own checkout browses as one tree
|
|
43
|
-
// rather than as one openable file surrounded by the shared one.
|
|
41
|
+
// `agent` picks whose workspace copy to read (WorkspaceScopeSchema); omitted means the shared /work tree.
|
|
44
42
|
tree: oc
|
|
45
43
|
.route({
|
|
46
44
|
method: "GET",
|
|
@@ -51,9 +49,7 @@ export const workspaceContract = {
|
|
|
51
49
|
})
|
|
52
50
|
.input(WorkspaceScopeSchema)
|
|
53
51
|
.output(WorkspaceTreeSchema),
|
|
54
|
-
// Lazy-
|
|
55
|
-
// and the client fetches them here on expand so a giant node_modules can't blow the tree walk's entry budget.
|
|
56
|
-
// Bounded depth is for consumers that need a small subtree as data rather than one explorer row at a time.
|
|
52
|
+
// Lazy-loads a folder's children the tree walk skipped (node_modules, .git…) to bound its entry budget.
|
|
57
53
|
children: oc
|
|
58
54
|
.route({
|
|
59
55
|
method: "GET",
|
|
@@ -64,8 +60,7 @@ export const workspaceContract = {
|
|
|
64
60
|
})
|
|
65
61
|
.input(WorkspaceChildrenQuerySchema)
|
|
66
62
|
.output(WorkspaceChildrenSchema),
|
|
67
|
-
// One
|
|
68
|
-
// through here, and an unbounded read on an HTTP route is a way for any open log to stall the daemon.
|
|
63
|
+
// One window of a file's text plus its size, never the whole file: an unbounded read can stall the daemon.
|
|
69
64
|
file: oc
|
|
70
65
|
.route({
|
|
71
66
|
method: "GET",
|
|
@@ -76,10 +71,7 @@ export const workspaceContract = {
|
|
|
76
71
|
})
|
|
77
72
|
.input(WorkspaceFileReadQuerySchema)
|
|
78
73
|
.output(WorkspaceFileSchema),
|
|
79
|
-
|
|
80
|
-
* it answers a streamed byte RANGE, which oRPC has no shape for). Minting is here rather than beside it so
|
|
81
|
-
* it rides the bearer middleware and the contract's route advertisement: a browser can tell whether the
|
|
82
|
-
* sandbox in front of it can stream video at all, instead of learning it from a 404 mid-playback. */
|
|
74
|
+
// Mints the ticket GET /workspace/media (a plain Hono byte-range route, no oRPC shape) requires to stream.
|
|
83
75
|
mediaTicket: oc
|
|
84
76
|
.route({
|
|
85
77
|
method: "POST",
|
|
@@ -90,9 +82,7 @@ export const workspaceContract = {
|
|
|
90
82
|
})
|
|
91
83
|
.input(WorkspaceMediaTicketQuerySchema)
|
|
92
84
|
.output(WorkspaceMediaTicketSchema),
|
|
93
|
-
//
|
|
94
|
-
// wrote in prose is often only a suffix of the real one, so it is matched against the workspace tree rather
|
|
95
|
-
// than trusted as root-relative.
|
|
85
|
+
// Matches a prose-written path, often just a suffix, against the tree rather than trusting it as root-relative.
|
|
96
86
|
resolve: oc
|
|
97
87
|
.route({
|
|
98
88
|
method: "GET",
|
|
@@ -103,8 +93,7 @@ export const workspaceContract = {
|
|
|
103
93
|
})
|
|
104
94
|
.input(WorkspaceResolveQuerySchema)
|
|
105
95
|
.output(WorkspaceResolveSchema),
|
|
106
|
-
//
|
|
107
|
-
// auto-mode fusion. (Implementation detail: the daemon backs this with a resident in-process iq engine.)
|
|
96
|
+
// `mode` narrows the search to one kind; default fuses text, structure, meaning and history in one pass.
|
|
108
97
|
search: oc
|
|
109
98
|
.route({
|
|
110
99
|
method: "GET",
|
|
@@ -115,9 +104,7 @@ export const workspaceContract = {
|
|
|
115
104
|
})
|
|
116
105
|
.input(WorkspaceSearchQuerySchema)
|
|
117
106
|
.output(WorkspaceSearchResultSchema),
|
|
118
|
-
//
|
|
119
|
-
// top modules, the `hotspots` and `map` rankings the CLI prints, shaped for a panel. Repo-scoped, because
|
|
120
|
-
// "the codebase" is a repo, not the whole /work drop.
|
|
107
|
+
// Per-file churn × complexity, index totals, top modules; scoped to a repo, not the whole /work drop.
|
|
121
108
|
health: oc
|
|
122
109
|
.route({
|
|
123
110
|
method: "GET",
|
|
@@ -128,9 +115,7 @@ export const workspaceContract = {
|
|
|
128
115
|
})
|
|
129
116
|
.input(WorkspaceHealthQuerySchema)
|
|
130
117
|
.output(WorkspaceHealthSchema),
|
|
131
|
-
// Deterministic, no-LLM classification
|
|
132
|
-
// / media / archives / other). Read-only proposal: the browser renders it and applies accepted moves via the
|
|
133
|
-
// existing /workspace/move route, this route never touches the tree.
|
|
118
|
+
// Deterministic, no-LLM classification into coarse buckets; read-only, applied only via the move route.
|
|
134
119
|
classify: oc
|
|
135
120
|
.route({
|
|
136
121
|
method: "GET",
|
|
@@ -140,9 +125,7 @@ export const workspaceContract = {
|
|
|
140
125
|
"Proposes which of the loose things in the workspace are code, documents, media or archives. A read-only suggestion by fixed rules, with no model involved: nothing moves until a caller applies the moves it likes through the move call.",
|
|
141
126
|
})
|
|
142
127
|
.output(WorkspaceClassificationSchema),
|
|
143
|
-
//
|
|
144
|
-
// /workspace/upload). oRPC's OpenAPI codec reads non-GET input from the JSON body, so delete sends {path}
|
|
145
|
-
// in the body too (not the query), same as the POST routes.
|
|
128
|
+
// Delete sends `{path}` in the body, not the query: oRPC's OpenAPI codec reads non-GET input from the body.
|
|
146
129
|
mkdir: oc
|
|
147
130
|
.route({
|
|
148
131
|
method: "POST",
|
|
@@ -180,10 +163,7 @@ export const workspaceContract = {
|
|
|
180
163
|
})
|
|
181
164
|
.input(WorkspaceMoveSchema)
|
|
182
165
|
.output(OkSchema),
|
|
183
|
-
//
|
|
184
|
-
// arrives without node_modules/.venv (the drop omits them), so "the files landed" is not "this works":
|
|
185
|
-
// until setup says ready, its type-checks and tests can only lie. The install runs as a one-shot tmux panel
|
|
186
|
-
// like a dev server or add-app, attachable, survives a reload, output kept in the terminal logs.
|
|
166
|
+
// An imported project lacks node_modules/.venv; until this says ready, its type checks and tests can mislead.
|
|
187
167
|
setup: oc
|
|
188
168
|
.route({
|
|
189
169
|
method: "GET",
|
|
@@ -220,8 +200,7 @@ export const workspaceContract = {
|
|
|
220
200
|
})
|
|
221
201
|
.input(CloneRepoSchema)
|
|
222
202
|
.output(CloneResultSchema),
|
|
223
|
-
//
|
|
224
|
-
// automatically each turn; this is the on-demand refresh (and how you re-sync a dirty/diverged repo after committing).
|
|
203
|
+
// Mutates the tree (fetch + fast-forward), which is why this is POST rather than GET.
|
|
225
204
|
sync: oc
|
|
226
205
|
.route({
|
|
227
206
|
method: "POST",
|
|
@@ -231,8 +210,7 @@ export const workspaceContract = {
|
|
|
231
210
|
"Fetches every repo that has a remote and fast-forwards the ones that can move safely, reporting what happened to each. This runs by itself at the start of a turn; call it directly to refresh on demand, or to re-sync a repo that had drifted.",
|
|
232
211
|
})
|
|
233
212
|
.output(WorkspaceSyncSchema),
|
|
234
|
-
// The
|
|
235
|
-
// extension's Add-app picker.
|
|
213
|
+
// The source repo's templates.json app types; drives the apps extension's Add-app picker.
|
|
236
214
|
templates: oc
|
|
237
215
|
.route({
|
|
238
216
|
method: "GET",
|
|
@@ -241,11 +219,7 @@ export const workspaceContract = {
|
|
|
241
219
|
description: "The kinds of app the configured source repo knows how to scaffold, which is what an add-app picker lists.",
|
|
242
220
|
})
|
|
243
221
|
.output(TemplatesListSchema),
|
|
244
|
-
//
|
|
245
|
-
// handler): add one or more apps into an existing monorepo, list them with per-app preview URL + status,
|
|
246
|
-
// and start/stop each app's preview dev server. `addApps` kicks off a one-shot tmux job (session
|
|
247
|
-
// panel-<repo>--add_apps) that runs `intentic scaffold add-app`, the attachable terminal is the progress/error
|
|
248
|
-
// surface; the extension polls the session's `running` for completion. It returns immediately (an ack).
|
|
222
|
+
// Runs as a one-shot tmux job named `panel-<repo>--add_apps`, executing `intentic scaffold add-app`.
|
|
249
223
|
addApps: oc
|
|
250
224
|
.route({
|
|
251
225
|
method: "POST",
|
|
@@ -265,8 +239,7 @@ export const workspaceContract = {
|
|
|
265
239
|
})
|
|
266
240
|
.input(RepoAppsParamSchema)
|
|
267
241
|
.output(AppsListSchema),
|
|
268
|
-
// The monorepo's
|
|
269
|
-
// workspace deps), drives the apps extension's Dependencies view.
|
|
242
|
+
// The monorepo's package dependency graph, from pnpm-workspace.yaml globs and each package.json's deps.
|
|
270
243
|
packageGraph: oc
|
|
271
244
|
.route({
|
|
272
245
|
method: "GET",
|
|
@@ -276,9 +249,7 @@ export const workspaceContract = {
|
|
|
276
249
|
})
|
|
277
250
|
.input(RepoAppsParamSchema)
|
|
278
251
|
.output(WorkspaceGraphSchema),
|
|
279
|
-
// Every repo's
|
|
280
|
-
// under when the reader has asked for modules instead of paths. Whole-workspace rather than per-repo: a
|
|
281
|
-
// review list spans repos, and one request per repo group would be a fan-out the panel pays on every open.
|
|
252
|
+
// Every repo's package dirs in one call, since a review spans repos and per-repo would fan out per open.
|
|
282
253
|
modules: oc
|
|
283
254
|
.route({
|
|
284
255
|
method: "GET",
|
|
@@ -306,9 +277,7 @@ export const workspaceContract = {
|
|
|
306
277
|
})
|
|
307
278
|
.input(AppParamSchema)
|
|
308
279
|
.output(OkSchema),
|
|
309
|
-
//
|
|
310
|
-
// (panel-<repo>--<session>), drives the apps extension's per-app / per-package / library Run-tests actions.
|
|
311
|
-
// Mirrors addApps: it returns an ack; the attachable terminal is the result surface.
|
|
280
|
+
// Runs tests for the named dirs in a one-shot tmux panel; mirrors addApps: an ack, terminal as result surface.
|
|
312
281
|
runTests: oc
|
|
313
282
|
.route({
|
|
314
283
|
method: "POST",
|
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { PermissionModeSchema } from "../schemas/agent.js";
|
|
3
|
+
import { LandConflictSchema } from "../schemas/agents.js";
|
|
4
|
+
import { RateLimitInfoSchema } from "../schemas/claude-gate.js";
|
|
5
|
+
import { FastModeStateSchema } from "../schemas/fast-mode.js";
|
|
6
|
+
import { AgentReplySchema, UsageWindowSchema } from "../schemas/plan-limits.js";
|
|
7
|
+
import { SubagentKindSchema, SubagentStatusSchema, SubagentVerificationSchema } from "../schemas/terminal.js";
|
|
8
|
+
import { AgentCommandSchema, browserHelpCard, capabilityOfferCard, CapabilityOutcomeSchema, ContextUsageSchema, credentialOfferCard, CredentialReceiptSchema, paymentOfferCard, PaymentReceiptSchema, PermissionCardSchema, PlanCardSchema, QuestionCardSchema, terminalHelpCard, TodoItemSchema, ToolCallContentSchema, ToolCallLocationSchema, ToolCallStatusSchema, ToolKindSchema } from "./cards.js";
|
|
9
|
+
import { TranscriptPatchSchema, TranscriptRowSchema, TurnNoteSchema } from "./transcript.js";
|
|
10
|
+
|
|
11
|
+
// Every frame an agent turn streams, as one `kind`-discriminated union: turn facts (session, standing, cost) and the
|
|
12
|
+
// attach stream a window joins through. One closed vocabulary, kept in one file.
|
|
13
|
+
|
|
14
|
+
// One frame per emission, `kind`-discriminated; the daemon maps SDK message types onto this closed set, dropping any
|
|
15
|
+
// without a UI mapping. `plan`/`question`/`permission` pause until `resolved` names the same requestId.
|
|
16
|
+
export const AgentEventSchema = z.discriminatedUnion("kind", [
|
|
17
|
+
// The session this turn runs on and the account it belongs to. `account` is the daemon's resolved account, not
|
|
18
|
+
// necessarily the one the request named; absent on an env-token or translator-subscription turn.
|
|
19
|
+
z.object({
|
|
20
|
+
kind: z.literal("session"),
|
|
21
|
+
sessionId: z.string(),
|
|
22
|
+
account: z.string().optional().describe("Which stored account this session belongs to, as the daemon resolved it for the turn."),
|
|
23
|
+
}),
|
|
24
|
+
// Where an isolated turn stands: worktree branch and the root repo's base sha, repeated each emission. `unenforced`
|
|
25
|
+
// marks a degraded container rewriting tool paths; `sync` reports a mid-turn rebase.
|
|
26
|
+
z.object({
|
|
27
|
+
kind: z.literal("worktree"),
|
|
28
|
+
branch: z.string(),
|
|
29
|
+
base: z.string(),
|
|
30
|
+
unenforced: z.boolean().optional(),
|
|
31
|
+
sync: z.object({ commits: z.number(), blocked: z.array(z.string()) }).optional(),
|
|
32
|
+
// The runner this turn executes on, when the conversation is placed remotely; absent means this sandbox.
|
|
33
|
+
remote: z.string().optional(),
|
|
34
|
+
}),
|
|
35
|
+
// After a clean isolated turn's delta lands or not: `landed` puts it uncommitted in the main tree, `conflicts`
|
|
36
|
+
// names paths that failed, `held` means nothing happened. `deps` covers undeclared dependencies.
|
|
37
|
+
z.object({
|
|
38
|
+
kind: z.literal("landed"),
|
|
39
|
+
landed: z.boolean(),
|
|
40
|
+
conflicts: z.array(LandConflictSchema).optional(),
|
|
41
|
+
held: z.boolean().optional(),
|
|
42
|
+
deps: z.object({ missing: z.number(), started: z.array(z.string()), deferred: z.boolean() }).optional(),
|
|
43
|
+
}),
|
|
44
|
+
// Notes the daemon prepends to the user's message before the model reads it, verbatim, one per note. Serialized
|
|
45
|
+
// from the same typed notes the wire prompt uses, so disclosure cannot drift from what the model got.
|
|
46
|
+
z.object({ kind: z.literal("preamble"), notes: z.array(TurnNoteSchema) }),
|
|
47
|
+
// The SDK's init handshake; carries the model it actually resolved for the turn.
|
|
48
|
+
z.object({ kind: z.literal("init"), model: z.string() }),
|
|
49
|
+
// The pre-turn snapshot id, emitted once before the provider stream so the client can offer
|
|
50
|
+
// restore-to-before-this-message. Absent on an isolated turn or when the tree was already clean.
|
|
51
|
+
// `index` is the message's position in the transcript, which the rewind route addresses by; absent on a turn with
|
|
52
|
+
// no conversation, where the id still powers a plain restore.
|
|
53
|
+
z.object({ kind: z.literal("checkpoint"), id: z.string(), index: z.number().int().nonnegative().optional() }),
|
|
54
|
+
// A mid-turn user message, framed when the daemon accepted it, so every client and the stored transcript agree on
|
|
55
|
+
// when. `text` is the raw words typed, never the composed prompt; `sentAt` is the daemon's clock.
|
|
56
|
+
z.object({ kind: z.literal("steer"), text: z.string(), sentAt: z.number(), attachments: z.array(z.string()).optional() }),
|
|
57
|
+
z.object({ kind: z.literal("delta"), text: z.string(), parentToolUseId: z.string().optional() }),
|
|
58
|
+
// Closes the prose block `delta` frames were writing; a turn emits several as it narrates, and without this
|
|
59
|
+
// boundary the client cannot tell them apart.
|
|
60
|
+
z.object({ kind: z.literal("text_end"), parentToolUseId: z.string().optional() }),
|
|
61
|
+
z.object({ kind: z.literal("thinking"), text: z.string(), parentToolUseId: z.string().optional() }),
|
|
62
|
+
// A tool call starting, or arriving whole for a backend that only reports completions. `content` carries structured
|
|
63
|
+
// output already known at call time (e.g. an Edit's diff, derived from input).
|
|
64
|
+
z.object({
|
|
65
|
+
kind: z.literal("tool_call"),
|
|
66
|
+
id: z.string(),
|
|
67
|
+
name: z.string(),
|
|
68
|
+
category: ToolKindSchema,
|
|
69
|
+
status: ToolCallStatusSchema,
|
|
70
|
+
target: z.string().optional(),
|
|
71
|
+
locations: z.array(ToolCallLocationSchema).optional(),
|
|
72
|
+
content: z.array(ToolCallContentSchema).optional(),
|
|
73
|
+
parentToolUseId: z.string().optional(),
|
|
74
|
+
}),
|
|
75
|
+
// A later state of a call, correlated by `id`. Status and/or fresh content/locations REPLACE the prior value
|
|
76
|
+
// (snapshot, not append); an absent field is unchanged.
|
|
77
|
+
z.object({
|
|
78
|
+
kind: z.literal("tool_call_update"),
|
|
79
|
+
id: z.string(),
|
|
80
|
+
status: ToolCallStatusSchema.optional(),
|
|
81
|
+
content: z.array(ToolCallContentSchema).optional(),
|
|
82
|
+
locations: z.array(ToolCallLocationSchema).optional(),
|
|
83
|
+
}),
|
|
84
|
+
// The agent started running Bash in its live `agent-<id>` tmux session; one per turn, reused across all of a turn's
|
|
85
|
+
// commands including subagents'.
|
|
86
|
+
z.object({ kind: z.literal("terminal"), session: z.string() }),
|
|
87
|
+
// The agent used a browser tool; one per turn, since one Chromium serves every browser call the turn makes.
|
|
88
|
+
z.object({ kind: z.literal("browser"), session: z.string() }),
|
|
89
|
+
// One frame per spawned child (Agent/Task subagent, or a driven Codex/Grok CLI), then `subagent_update` as it
|
|
90
|
+
// works, mirroring `tool_call`/`tool_call_update`. `id` is the spawning call's id, so both land on one card.
|
|
91
|
+
z.object({
|
|
92
|
+
kind: z.literal("subagent"),
|
|
93
|
+
id: z.string(),
|
|
94
|
+
subagentKind: SubagentKindSchema,
|
|
95
|
+
agentType: z.string().optional(),
|
|
96
|
+
description: z.string().optional(),
|
|
97
|
+
model: z.string().optional(),
|
|
98
|
+
// Which provider serves a spawned child; absent for an SDK subagent, whose provider is its parent's.
|
|
99
|
+
provider: z.string().optional(),
|
|
100
|
+
background: z.boolean().optional(),
|
|
101
|
+
}),
|
|
102
|
+
z.object({
|
|
103
|
+
kind: z.literal("subagent_update"),
|
|
104
|
+
id: z.string(),
|
|
105
|
+
status: SubagentStatusSchema.optional(),
|
|
106
|
+
tokens: z.number().optional(),
|
|
107
|
+
toolUses: z.number().optional(),
|
|
108
|
+
lastTool: z.string().optional(),
|
|
109
|
+
summary: z.string().optional(),
|
|
110
|
+
error: z.string().optional(),
|
|
111
|
+
// Whether anything checked the work this report describes; rides the frame that ends the child.
|
|
112
|
+
verification: SubagentVerificationSchema.optional(),
|
|
113
|
+
}),
|
|
114
|
+
z.object({ kind: z.literal("todos"), items: z.array(TodoItemSchema) }),
|
|
115
|
+
// The provider's own slash commands, replaced whole each time; the composer's `/` popover lists them, invoking one
|
|
116
|
+
// is plain `/name …` prompt text.
|
|
117
|
+
z.object({ kind: z.literal("commands"), items: z.array(AgentCommandSchema) }),
|
|
118
|
+
z.object({
|
|
119
|
+
kind: z.literal("usage"),
|
|
120
|
+
// The account that served this turn, so the client attributes totals to it.
|
|
121
|
+
account: z.string().optional(),
|
|
122
|
+
costUsd: z.number().optional(),
|
|
123
|
+
inputTokens: z.number().optional(),
|
|
124
|
+
outputTokens: z.number().optional(),
|
|
125
|
+
// Provider prompt-cache buckets (read/write); optional per provider, lets the client compute a hit rate.
|
|
126
|
+
cacheReadTokens: z.number().optional(),
|
|
127
|
+
cacheCreationTokens: z.number().optional(),
|
|
128
|
+
durationMs: z.number().optional(),
|
|
129
|
+
numTurns: z.number().optional(),
|
|
130
|
+
}),
|
|
131
|
+
// The provider's live answer to whether this turn may run, pushed mid-turn; drives the rate-limited notice, not the
|
|
132
|
+
// headroom readouts.
|
|
133
|
+
RateLimitInfoSchema.extend({ kind: z.literal("rate_limit_info"), account: z.string().optional() }),
|
|
134
|
+
// The turn's actual speed, emitted only when it changes (once at init, again on mid-turn cooldown). `reason` is
|
|
135
|
+
// forwarded verbatim as the harness's own string, not a fixed enum, so an unfamiliar reason still parses.
|
|
136
|
+
z.object({
|
|
137
|
+
kind: z.literal("fast_mode"),
|
|
138
|
+
state: FastModeStateSchema,
|
|
139
|
+
// Absent when nothing blocks fast mode, including `state: "on"`, and an `off` that was never asked for.
|
|
140
|
+
reason: z.string().optional(),
|
|
141
|
+
}),
|
|
142
|
+
// The complexity judge's verdict for this turn, emitted once at turn start on every judged turn. `model` is set
|
|
143
|
+
// only when a substitution applies; `routed` is what actually happened, never implied by the verdict alone.
|
|
144
|
+
z.object({
|
|
145
|
+
kind: z.literal("tier"),
|
|
146
|
+
tier: z.enum(["fast", "standard"]),
|
|
147
|
+
score: z.number(),
|
|
148
|
+
rules: z.array(z.string()),
|
|
149
|
+
// The cheaper model this turn ran on (`routed`) or would have run on (`held`); absent otherwise.
|
|
150
|
+
model: z.string().optional(),
|
|
151
|
+
routed: z.boolean(),
|
|
152
|
+
// The user pinned this turn to their own pick, so a fast verdict moved nothing.
|
|
153
|
+
held: z.boolean().optional(),
|
|
154
|
+
}),
|
|
155
|
+
// The turn is alive but retrying a transient provider failure in this same turn; a status, not a failure, shown
|
|
156
|
+
// where thinking goes. `attempt`/`maxAttempts`/`nextAttemptAt` are each optional, runtimes report different halves.
|
|
157
|
+
z.object({
|
|
158
|
+
kind: z.literal("provider_retry"),
|
|
159
|
+
attempt: z.number(),
|
|
160
|
+
maxAttempts: z.number().optional(),
|
|
161
|
+
nextAttemptAt: z.number().optional(),
|
|
162
|
+
// The HTTP status behind the retry, when there was one (529 capacity, 429 rate limit, 500 fault).
|
|
163
|
+
status: z.number().optional(),
|
|
164
|
+
}),
|
|
165
|
+
// Every plan-limit pool for the account that served the turn, read once the turn settles. `account` keys headroom
|
|
166
|
+
// by account; absent on an env-token turn. No `measuredAt` on the wire: both readers stamp receipt time.
|
|
167
|
+
z.object({ kind: z.literal("account_usage"), account: z.string().optional(), windows: z.array(UsageWindowSchema) }),
|
|
168
|
+
ContextUsageSchema.extend({ kind: z.literal("context_usage") }),
|
|
169
|
+
z.object({ kind: z.literal("compact"), trigger: z.string(), preTokens: z.number().optional(), postTokens: z.number().optional() }),
|
|
170
|
+
// The four interactive cards; each parks the turn until `POST /agent/reply` resolves its `requestId`.
|
|
171
|
+
PlanCardSchema,
|
|
172
|
+
QuestionCardSchema,
|
|
173
|
+
PermissionCardSchema,
|
|
174
|
+
// The agent's browser needs a person. Not journalled for restore: the Chromium holding the page dies with the
|
|
175
|
+
// container.
|
|
176
|
+
z.object({ kind: z.literal("browser_help"), ...browserHelpCard }),
|
|
177
|
+
// The agent's terminal needs a person. Not journalled for restore: the pane belongs to a process the restart kills.
|
|
178
|
+
z.object({ kind: z.literal("terminal_help"), ...terminalHelpCard }),
|
|
179
|
+
// A missing capability asking for the owner's setup. Raised outside the turn generator; not journalled for restore,
|
|
180
|
+
// since its waiter (the CLI's held connection) dies with the daemon.
|
|
181
|
+
z.object({ kind: z.literal("capability_offer"), ...capabilityOfferCard }),
|
|
182
|
+
// How an accepted ask ended: `connected` (the capability came live, `id` is the agent's handle) or `unfinished`
|
|
183
|
+
// (deadline passed, or the asking command died). A skip needs no outcome; `resolved` already says so.
|
|
184
|
+
CapabilityOutcomeSchema.extend({ kind: z.literal("capability_outcome"), requestId: z.string() }),
|
|
185
|
+
// A USDC payment awaiting the owner's click. Raised outside the turn generator; not journalled for restore, since
|
|
186
|
+
// its waiter (the CLI's held connection) dies with the daemon.
|
|
187
|
+
z.object({ kind: z.literal("payment_offer"), ...paymentOfferCard }),
|
|
188
|
+
// How an approved payment ended: `paid` (endpoint confirmed, `transaction` is the onchain hash if stated) or
|
|
189
|
+
// `failed` (refused or unsettled, nothing left the wallet). A skip needs no receipt.
|
|
190
|
+
PaymentReceiptSchema.extend({ kind: z.literal("payment_receipt"), requestId: z.string() }),
|
|
191
|
+
// A gated credential awaiting a named approver's click, not the owner. The daemon holds the exit parked until
|
|
192
|
+
// release; raised outside the turn generator, not journalled, since its waiter dies with the daemon.
|
|
193
|
+
z.object({ kind: z.literal("credential_offer"), ...credentialOfferCard }),
|
|
194
|
+
// Who released it: `released` names the approver's verified address, `refused` means someone said no. Nothing is
|
|
195
|
+
// pushed for a card nobody answered; `resolved` already says that.
|
|
196
|
+
CredentialReceiptSchema.extend({ kind: z.literal("credential_receipt"), requestId: z.string() }),
|
|
197
|
+
// The named card is released and the turn resumes; emitted the moment its waiter settles, since nothing else on
|
|
198
|
+
// this stream marks a park's end. `reply` is what a rebuilt transcript freezes the card with.
|
|
199
|
+
z.object({ kind: z.literal("resolved"), requestId: z.string(), reply: AgentReplySchema.optional() }),
|
|
200
|
+
// The turn's permission mode whenever it changes: the user's pick at start, then every move the agent makes on its
|
|
201
|
+
// own. The composer's mode selector follows this.
|
|
202
|
+
z.object({ kind: z.literal("mode"), mode: PermissionModeSchema }),
|
|
203
|
+
// `code` is a machine-readable discriminator for errors the UI reacts to (e.g. dropping a dead session id so the
|
|
204
|
+
// next send self-heals); absent on plain failures.
|
|
205
|
+
z.object({
|
|
206
|
+
kind: z.literal("error"),
|
|
207
|
+
message: z.string(),
|
|
208
|
+
code: z
|
|
209
|
+
.enum([
|
|
210
|
+
"session-not-found",
|
|
211
|
+
"rate_limit",
|
|
212
|
+
// Codex ran the turn but warned about it (fallback model metadata); a notice, not a failure.
|
|
213
|
+
"codex-advisory",
|
|
214
|
+
"codex-reauth",
|
|
215
|
+
// The Claude subscription credential is dead; only a reconnect fixes it, unlike no account connected.
|
|
216
|
+
"claude-reauth",
|
|
217
|
+
// The API refused this turn's token mid-flight, usually superseded by a rotation already re-minting.
|
|
218
|
+
"claude-token-refused",
|
|
219
|
+
// The account authenticates and has real usage pools, but the org disabled Claude Code for this seat.
|
|
220
|
+
"claude-not-entitled",
|
|
221
|
+
// The provider failed transiently and in-turn retries did not outlast it; the daemon retries on
|
|
222
|
+
// backoff.
|
|
223
|
+
"provider-outage",
|
|
224
|
+
// The platform-owned free-trial pool failed after its bounded key walk; the failed call is refunded.
|
|
225
|
+
"trial-unavailable",
|
|
226
|
+
// The trial answered, but the selected upstream model/request cannot run through this sandbox.
|
|
227
|
+
"trial-model-unavailable",
|
|
228
|
+
// This account's platform-owned daily trial allowance is spent until its UTC reset.
|
|
229
|
+
"trial-exhausted",
|
|
230
|
+
// The harness read the message as a slash command it doesn't have; the model never saw it.
|
|
231
|
+
"unknown-command",
|
|
232
|
+
"grok-model-invalid",
|
|
233
|
+
"codex-model-invalid",
|
|
234
|
+
// The model is real and listed, but this plan's subscription does not have access to it.
|
|
235
|
+
"model-unavailable",
|
|
236
|
+
// The model cannot hold a turn this size, refused before sending; retrying the same request never
|
|
237
|
+
// helps.
|
|
238
|
+
"context-window-too-small",
|
|
239
|
+
"subscription-required",
|
|
240
|
+
"agent-busy",
|
|
241
|
+
// The sandbox has no memory left to run this turn, refused before anything spawned; transient, no
|
|
242
|
+
// clock.
|
|
243
|
+
"sandbox-memory-low",
|
|
244
|
+
// The runtime hit its own iteration ceiling and stopped; the work may be half done, so the user
|
|
245
|
+
// decides.
|
|
246
|
+
"turn-cap",
|
|
247
|
+
// The harness ended the turn without succeeding, with no modelled reason; the vendor's subtype rides
|
|
248
|
+
// verbatim.
|
|
249
|
+
"harness-incomplete",
|
|
250
|
+
// The installed engine is too old for the model; the provider names the version required, on `engine`.
|
|
251
|
+
"engine-version-floor",
|
|
252
|
+
])
|
|
253
|
+
.optional(),
|
|
254
|
+
// Which engine, the version refused, and the floor the provider requires; lets the client offer an install.
|
|
255
|
+
engine: z
|
|
256
|
+
.object({
|
|
257
|
+
id: z.string().describe("Which engine (e.g. claude)."),
|
|
258
|
+
running: z.string().optional().describe("The version that was refused, when the provider named it."),
|
|
259
|
+
floor: z.string().describe("The lowest version the provider will accept."),
|
|
260
|
+
})
|
|
261
|
+
.optional(),
|
|
262
|
+
// rate_limit only: epoch seconds when the exhausted window reopens; absent when the reset instant is unknown.
|
|
263
|
+
resetsAt: z.number().optional(),
|
|
264
|
+
// Gated codes only: "scheduled" if this conversation arms the resume, "available" if one exists but isn't.
|
|
265
|
+
autoResume: z.enum(["scheduled", "available"]).optional(),
|
|
266
|
+
// rate_limit only: how re-running the exact held turn would go, and what it would cost.
|
|
267
|
+
held: z
|
|
268
|
+
.object({
|
|
269
|
+
ran: z.boolean(),
|
|
270
|
+
// What each way of continuing costs: `contextTokens` re-reads context, `handoffTokens` pays a session's
|
|
271
|
+
// brief.
|
|
272
|
+
contextTokens: z.number().optional(),
|
|
273
|
+
handoffTokens: z.number().optional(),
|
|
274
|
+
// Set when the owner's policy is already moving this turn to the named account, instead of offering a
|
|
275
|
+
// press.
|
|
276
|
+
moving: z.string().optional(),
|
|
277
|
+
})
|
|
278
|
+
.optional(),
|
|
279
|
+
// provider-outage only: `retryAt` is the next attempt on backoff; `attempt`/`maxAttempts` bound it.
|
|
280
|
+
outage: z.object({ retryAt: z.number(), attempt: z.number(), maxAttempts: z.number() }).optional(),
|
|
281
|
+
}),
|
|
282
|
+
z.object({ kind: z.literal("done") }),
|
|
283
|
+
]);
|
|
284
|
+
export type AgentEvent = z.infer<typeof AgentEventSchema>;
|
|
285
|
+
|
|
286
|
+
// Frames that are facts about the turn, not transcript; a `worktree` rebase can be both notice and standing.
|
|
287
|
+
export const TURN_FACT_KINDS = [
|
|
288
|
+
"session",
|
|
289
|
+
"worktree",
|
|
290
|
+
"init",
|
|
291
|
+
"terminal",
|
|
292
|
+
"browser",
|
|
293
|
+
"commands",
|
|
294
|
+
"usage",
|
|
295
|
+
"rate_limit_info",
|
|
296
|
+
"fast_mode",
|
|
297
|
+
"tier",
|
|
298
|
+
"provider_retry",
|
|
299
|
+
"account_usage",
|
|
300
|
+
"context_usage",
|
|
301
|
+
"mode",
|
|
302
|
+
"error",
|
|
303
|
+
] as const;
|
|
304
|
+
export type TurnFact = Extract<AgentEvent, { kind: (typeof TURN_FACT_KINDS)[number] }>;
|
|
305
|
+
export const isTurnFact = (event: AgentEvent): event is TurnFact => (TURN_FACT_KINDS as readonly string[]).includes(event.kind);
|
|
306
|
+
// The same members AgentEventSchema declares, picked out rather than re-declared, so there is one place a fact's shape
|
|
307
|
+
// can drift from the frame's.
|
|
308
|
+
type AgentEventMember = (typeof AgentEventSchema.options)[number];
|
|
309
|
+
const factMembers = AgentEventSchema.options.filter((member) => (TURN_FACT_KINDS as readonly string[]).includes(member.shape.kind.value)) as unknown as [
|
|
310
|
+
AgentEventMember,
|
|
311
|
+
...AgentEventMember[],
|
|
312
|
+
];
|
|
313
|
+
export const TurnFactSchema = z.discriminatedUnion("kind", factMembers) as unknown as z.ZodType<TurnFact>;
|
|
314
|
+
|
|
315
|
+
// The /agent/attach stream: a head with rows so far, then patches and facts as they land, then `end`. Facts replay on
|
|
316
|
+
// every attach so a late joiner learns the turn's standing; patches never do.
|
|
317
|
+
export const AttachFrameSchema = z.discriminatedUnion("kind", [
|
|
318
|
+
z.object({
|
|
319
|
+
kind: z.literal("attached").describe("The first frame, identifying the run you have joined and handing you its transcript so far."),
|
|
320
|
+
run: z.string().describe("The run's id."),
|
|
321
|
+
startedAt: z.number().describe("When it started, in milliseconds, so a window joining late can show how long it has been going."),
|
|
322
|
+
seq: z.number().describe("How many frames the run has produced so far. A fact at or below this number is being replayed; a patch is never."),
|
|
323
|
+
rows: z
|
|
324
|
+
.array(TranscriptRowSchema)
|
|
325
|
+
.describe("The turn's rows as they stand: what was asked, and everything the agent has said and done since. Draw these, then apply the patches that follow."),
|
|
326
|
+
}),
|
|
327
|
+
z.object({
|
|
328
|
+
kind: z.literal("patch").describe("One change to the run's rows."),
|
|
329
|
+
seq: z.number().describe("Its position in the run, counting from one."),
|
|
330
|
+
patch: TranscriptPatchSchema,
|
|
331
|
+
}),
|
|
332
|
+
z.object({
|
|
333
|
+
kind: z.literal("fact").describe("One thing about the turn that is not a row: its session, its branch, its cost, a failure."),
|
|
334
|
+
seq: z.number().describe("Its position in the run, counting from one. At or below the head's number, it is being replayed."),
|
|
335
|
+
fact: TurnFactSchema,
|
|
336
|
+
}),
|
|
337
|
+
z.object({
|
|
338
|
+
kind: z
|
|
339
|
+
.literal("end")
|
|
340
|
+
.describe(
|
|
341
|
+
"The run is over and every frame has been delivered. A stream that closes without this was dropped mid-run, so re-attach rather than assuming the turn finished.",
|
|
342
|
+
),
|
|
343
|
+
}),
|
|
344
|
+
]);
|
|
345
|
+
export type AttachFrame = z.infer<typeof AttachFrameSchema>;
|