@intentic/sandbox-contract 1.247.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 +13 -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 +39 -4
- package/dist/contracts/personas.contract.d.ts.map +1 -1
- package/dist/contracts/personas.contract.js +10 -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 +6 -80
- 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 +10 -10
- 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 +464 -447
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +54 -47
- 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} +2 -4
- package/dist/models/model-pins.d.ts.map +1 -0
- package/dist/models/model-pins.js +22 -0
- package/dist/models/model-pins.js.map +1 -0
- package/dist/{model-roles.d.ts → models/model-roles.d.ts} +25 -30
- package/dist/models/model-roles.d.ts.map +1 -0
- package/dist/{model-roles.js → models/model-roles.js} +30 -27
- 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 +17 -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 +49 -4
- package/dist/schemas/personas.d.ts.map +1 -1
- package/dist/schemas/personas.js +32 -5
- 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 +7 -5
- package/dist/schemas/settings.d.ts.map +1 -1
- package/dist/schemas/settings.js +18 -8
- 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 -5
- package/dist/state/workspace-state.d.ts.map +1 -0
- package/dist/{workspace-state.js → state/workspace-state.js} +25 -1
- 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 +22 -30
- 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 -88
- 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/models/model-pins.test.ts +87 -0
- 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 +145 -249
- 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 +85 -168
- 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 +177 -597
- 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 -173
- 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 +0 -45
- 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/schemas/context.d.ts +0 -30
- package/dist/schemas/context.d.ts.map +0 -1
- package/dist/schemas/context.js +0 -34
- package/dist/schemas/context.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.test.ts +0 -202
- package/src/model-pins.ts +0 -183
- package/src/model-roles.ts +0 -224
- 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/schemas/context.ts +0 -87
- 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 -1096
- /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/{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
package/src/schemas/agent.ts
CHANGED
|
@@ -1,43 +1,28 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { CONVERSATION_ID } from "../ids/conversation-ids.js";
|
|
3
|
+
import { ModelRoleSchema } from "../models/model-roles.js";
|
|
4
|
+
import { NATIVE_PROVIDERS } from "../models/provider-specs.js";
|
|
5
|
+
import { AgentPlacementSchema } from "../protocol/runner-protocol.js";
|
|
5
6
|
import { entryId } from "./internal.js";
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
// see EndpointConfigSchema); any other value is the id of an installed `agent`-kind capability served over
|
|
10
|
-
// ACP (Agent Client Protocol).
|
|
11
|
-
// Kept as a bare string on the wire (not an enum) so an unknown id is a clean error frame from the agent
|
|
12
|
-
// route, the same bet RepoParamSchema makes, and adding an ACP agent needs no contract change.
|
|
13
|
-
//
|
|
14
|
-
// NATIVE_PROVIDERS itself is DERIVED from the one row-per-provider table (provider-specs.ts) and imported
|
|
15
|
-
// here rather than written out again, so the wire vocabulary cannot name a provider the product does not
|
|
16
|
-
// describe, or miss one it does.
|
|
7
|
+
// Agent runtimes the daemon can serve: native providers have dedicated adapters, `endpoint/<id>` names an installed
|
|
8
|
+
// endpoint capability, anything else is an ACP agent capability id. A bare string, not an enum, so an unknown id is a
|
|
9
|
+
// clean error, not a contract change.
|
|
17
10
|
export const AgentProviderSchema = z.string().min(1);
|
|
18
11
|
export type AgentProvider = z.infer<typeof AgentProviderSchema>;
|
|
19
|
-
//
|
|
20
|
-
//
|
|
21
|
-
// or an endpoint can be added without a contract change, but neither has a daemon-held catalog, this route's
|
|
22
|
-
// subjects are exactly the ones the daemon keeps one for. Closing it here is what makes an unknown id a 400 from
|
|
23
|
-
// the contract instead of a registry lookup that reads back `undefined` and serves an empty list.
|
|
12
|
+
// Provider naming a catalog in providers.contract.ts; an enum, not the open string above, since only native providers
|
|
13
|
+
// have a daemon-held catalog to look up. An unknown id is a 400 here, not an empty list.
|
|
24
14
|
export const NativeProviderParamSchema = z.object({ provider: z.enum(NATIVE_PROVIDERS) });
|
|
25
|
-
// The
|
|
26
|
-
// The harness (agentic loop) a turn runs on, orthogonal to the provider. See AgentTurnSchema.harness.
|
|
15
|
+
// The harness (agentic loop) a turn runs on, orthogonal to the provider.
|
|
27
16
|
export const AgentHarnessSchema = z.enum(["native", "claude-code"]);
|
|
28
17
|
export type AgentHarness = z.infer<typeof AgentHarnessSchema>;
|
|
29
|
-
// One
|
|
30
|
-
//
|
|
31
|
-
// rather than a hard-coded branch name that only happens to work in the root repository.
|
|
18
|
+
// One repo at one immutable commit; used both as the checkout instruction and as handoffs' comparison base, so a
|
|
19
|
+
// multi-repo run has one provenance record instead of a hard-coded branch name.
|
|
32
20
|
export const RepoBaseSchema = z.object({ repo: z.string(), base: z.string().min(1) });
|
|
33
21
|
export type RepoBase = z.infer<typeof RepoBaseSchema>;
|
|
34
|
-
// What the user
|
|
35
|
-
//
|
|
36
|
-
// prompts ("fix this") resolve without an @-mention. Selection is bounded, it's context, not an upload.
|
|
22
|
+
// What the user has open in the editor, attached only when they opt in (composer chip, off by default); folded into the
|
|
23
|
+
// prompt so deictic prompts ("fix this") resolve.
|
|
37
24
|
export const EditorContextSchema = z.object({
|
|
38
|
-
// Workspace-relative path of the file open in the editor.
|
|
39
25
|
file: z.string().min(1).describe("The file open in the editor, as a workspace path."),
|
|
40
|
-
// 1-based line range of the selection; absent when the whole file is the context.
|
|
41
26
|
startLine: z
|
|
42
27
|
.number()
|
|
43
28
|
.int()
|
|
@@ -45,7 +30,7 @@ export const EditorContextSchema = z.object({
|
|
|
45
30
|
.optional()
|
|
46
31
|
.describe("First line of the selection, counting from one. Leave both out when the whole file is the context."),
|
|
47
32
|
endLine: z.number().int().min(1).optional().describe("Last line of the selection, counting from one."),
|
|
48
|
-
//
|
|
33
|
+
// Truncated client-side to the cap before it's sent.
|
|
49
34
|
selection: z
|
|
50
35
|
.string()
|
|
51
36
|
.max(20_000)
|
|
@@ -53,48 +38,33 @@ export const EditorContextSchema = z.object({
|
|
|
53
38
|
.describe("The selected text itself. Cut it down before sending if it is long: this is context, not an upload."),
|
|
54
39
|
});
|
|
55
40
|
export type EditorContext = z.infer<typeof EditorContextSchema>;
|
|
56
|
-
//
|
|
57
|
-
// branch names
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
//
|
|
61
|
-
// from OUTSIDE the sandbox (a Discord mention, a web-chat visitor, a webhook). Such a wake runs as an ordinary
|
|
62
|
-
// isolated conversation, registry entry, worktree, chat tab, land flow, and this is the only thing that
|
|
63
|
-
// distinguishes it on the surface: the card's provenance line and the reason its first prompt is not the
|
|
64
|
-
// user's. Set daemon-side by the dispatcher that received the message; the browser never sends one.
|
|
41
|
+
// Client-minted stable conversation id; the regex is an injection guard, since isolated conversations also use it in
|
|
42
|
+
// branch names and filesystem paths.
|
|
43
|
+
export const ConversationIdSchema = z.string().regex(CONVERSATION_ID);
|
|
44
|
+
// Where a conversation came from when nobody typed it into the browser: an automation wake carrying an outside message.
|
|
45
|
+
// Set daemon-side by the receiving dispatcher; the browser never sends one.
|
|
65
46
|
export const AgentOriginSchema = z.object({
|
|
66
47
|
// The automation whose configured prompt opened the conversation.
|
|
67
48
|
automationId: z.string(),
|
|
68
|
-
//
|
|
69
|
-
//
|
|
49
|
+
// Listener provider that received the message, or "webhook" for an event trigger; open string, sources are
|
|
50
|
+
// extension-declared.
|
|
70
51
|
provider: z.string(),
|
|
71
|
-
//
|
|
52
|
+
// External thread it arrived on (Discord channel id, widget conversation id); absent for webhooks.
|
|
72
53
|
channelId: z.string().optional(),
|
|
73
54
|
// Who sent it, as the source names them.
|
|
74
55
|
author: z.string().optional(),
|
|
75
56
|
});
|
|
76
57
|
export type AgentOrigin = z.infer<typeof AgentOriginSchema>;
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
* gate); never sent by a client. Chat and loops are absent deliberately: both begin with the owner's own
|
|
80
|
-
* click, and holding the owner's work in their own queue is a queue entry that says nothing (the same argument
|
|
81
|
-
* fireAutomation's `cleared` makes about a by-hand fire). */
|
|
58
|
+
// The class of thing asking to start a session, the admission policy's key space; derived daemon-side, never sent by a
|
|
59
|
+
// client. Chat and loops are absent since both begin with the owner's own click.
|
|
82
60
|
export const WakeSourceSchema = z.enum(["schedule", "event", "listener", "webchat", "issues", "workspace", "workflow"]);
|
|
83
61
|
export type WakeSource = z.infer<typeof WakeSourceSchema>;
|
|
84
62
|
// One admission verdict the owner can configure: let it run, hold it for approval, or refuse it outright.
|
|
85
63
|
export const AdmissionRuleSchema = z.enum(["allow", "hold", "deny"]);
|
|
86
64
|
export type AdmissionRule = z.infer<typeof AdmissionRuleSchema>;
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
* container deletes files that come back with the image; on somebody's laptop it ends the laptop. A named
|
|
91
|
-
* Docker volume here is a dev database the agent created three commands ago; there it is whatever they run.
|
|
92
|
-
* `/work` and `/history` are this product's own trees and mean nothing on a device; `/Users` and `C:` are a
|
|
93
|
-
* device's and never appear here.
|
|
94
|
-
*
|
|
95
|
-
* So the catalog is read with a locus (command-classes.ts CommandContext), and the classes below are the
|
|
96
|
-
* answer to "what would this DO", asked of a stated place. Callers do not get to omit it: a default would be
|
|
97
|
-
* one of these two answers applied silently to the other machine, which is the bug this type exists to end. */
|
|
65
|
+
// Where a command would run; the same string means different things on each machine (rm -rf /usr is recoverable here,
|
|
66
|
+
// fatal on a laptop). Read with a locus (command-classes.ts CommandContext); callers must state one rather than
|
|
67
|
+
// default.
|
|
98
68
|
export const CommandLocusSchema = z.enum([
|
|
99
69
|
// This sandbox's own shell: a disposable container, /work a git worktree, /history every other agent's.
|
|
100
70
|
"sandbox",
|
|
@@ -102,42 +72,18 @@ export const CommandLocusSchema = z.enum([
|
|
|
102
72
|
"device",
|
|
103
73
|
]);
|
|
104
74
|
export type CommandLocus = z.infer<typeof CommandLocusSchema>;
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
* inside a running session may go ahead, which is the only question left once the agent is already working.
|
|
108
|
-
*
|
|
109
|
-
* Six, chosen for one property: everything in them is hard or impossible to take back SOMEWHERE, so a person
|
|
110
|
-
* seeing it once beats an audit trail read afterwards. Everything else an agent runs, builds, tests, greps,
|
|
111
|
-
* edits, is recoverable in a container that is itself disposable, and gating it would be friction bought with
|
|
112
|
-
* nothing. "Somewhere" is the locus above: which class a command lands in is asked of a place. */
|
|
75
|
+
// What kind of thing a shell command is, the command gate's key space under the admission floor; gates one command
|
|
76
|
+
// inside an already-running session. Six classes, chosen because each is hard or impossible to undo somewhere.
|
|
113
77
|
export const CommandClassSchema = z.enum([
|
|
114
78
|
// Rewrites or discards committed work: force-push, hard reset, force-delete a branch, clean -f, filter-branch.
|
|
115
79
|
"git.destructive",
|
|
116
80
|
// Recursive-force deletion (`rm -rf`), and its spelling in a script (`fs.rm(p, { recursive: true })`).
|
|
117
81
|
"files.destructive",
|
|
118
|
-
|
|
119
|
-
* at a root rather than at something inside one. The class the daemon holds where the owner wrote no rule,
|
|
120
|
-
* which is why it is separate from files.destructive rather than a shade of it: `rm -rf build` is ordinary
|
|
121
|
-
* work in a disposable container and `rm -rf /` is the end of the machine.
|
|
122
|
-
*
|
|
123
|
-
* WHICH ROOTS COUNT IS THE LOCUS'S ANSWER, not a constant. In the sandbox it is `/` and `/history` — the
|
|
124
|
-
* filesystem itself, and the one tree holding work this turn cannot recreate because it is other
|
|
125
|
-
* conversations'. `/usr`, `/etc`, `/work` are NOT roots here: the container comes back from its image and
|
|
126
|
-
* the worktree's delta is uncommitted changes, both of which cost an afternoon rather than everything. On a
|
|
127
|
-
* device the full list applies, because nothing there is rebuilt from an image. */
|
|
82
|
+
// State nothing recovers at this locus; which roots count (/, /history in the sandbox) depends on the locus.
|
|
128
83
|
"system.destructive",
|
|
129
|
-
|
|
130
|
-
* system.destructive because the two loci disagree about it more sharply than about anything else in this
|
|
131
|
-
* enum. In the sandbox these reach the NESTED engine (the host's socket is never mounted, see
|
|
132
|
-
* capabilities/handlers/docker.ts), so the blast radius is dev databases the agent has been working
|
|
133
|
-
* against, and tearing down a smoke-test stack is ordinary work. Sent to somebody's own computer it is
|
|
134
|
-
* whatever they run on it, and their policy says never. */
|
|
84
|
+
// A container volume or its data; the sandbox's blast radius (nested engine) differs sharply from a device's.
|
|
135
85
|
"container.state",
|
|
136
|
-
|
|
137
|
-
* process), or a file that actually holds one — a dotenv, a private key, ~/.aws/credentials, an npmrc.
|
|
138
|
-
* "Actually" is load-bearing and is checked rather than assumed where the caller can open the file: an
|
|
139
|
-
* npmrc with no token in it, a dotenv of ports, a public key, a path that is not there, are none of them
|
|
140
|
-
* this class, however much they look like it from the command line. See command-classes.ts. */
|
|
86
|
+
// Reads credential material: a secret reference, or a file confirmed to actually hold one.
|
|
141
87
|
"secrets.access",
|
|
142
88
|
// Publishes outward and irreversibly: npm/pnpm/yarn/cargo publish, gh release create, docker push.
|
|
143
89
|
"package.publish",
|
|
@@ -145,112 +91,80 @@ export const CommandClassSchema = z.enum([
|
|
|
145
91
|
"network.outbound",
|
|
146
92
|
]);
|
|
147
93
|
export type CommandClass = z.infer<typeof CommandClassSchema>;
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
* automation. `workflow` is allow|deny only: the release gate answers a CI runner holding a connection with a
|
|
152
|
-
* deadline, so a hold there is indistinguishable from a timeout, deny is the honest refusal. */
|
|
94
|
+
// Workspace-wide admission floor per wake source, consulted on every outside-driven wake; composes with per-automation
|
|
95
|
+
// overrides most-restrictive-wins. `workflow` is allow|deny only, since a hold there is indistinguishable from a CI
|
|
96
|
+
// runner's timeout.
|
|
153
97
|
export const AdmissionPolicySchema = z.object({
|
|
154
98
|
schedule: AdmissionRuleSchema.default("allow"),
|
|
155
99
|
event: AdmissionRuleSchema.default("allow"),
|
|
156
100
|
listener: AdmissionRuleSchema.default("allow"),
|
|
157
101
|
webchat: AdmissionRuleSchema.default("allow"),
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
* A bug-report wake is the opposite on both counts, it is pointed at the repository with the powers to
|
|
161
|
-
* change it, and the brief is a stack trace and a sentence somebody else's browser wrote.
|
|
162
|
-
*
|
|
163
|
-
* Held is not blocked: the wake sits in the same approvals queue every other hold uses, with the issue's
|
|
164
|
-
* own title on the card, and one click runs it. An owner who wants their crashes fixed while they sleep
|
|
165
|
-
* sets this to `allow` deliberately, which is the direction that decision should have to be made in. */
|
|
102
|
+
// Defaults to hold, unlike the others: a bug-report wake has full repo powers and a stranger's stack trace as its
|
|
103
|
+
// brief.
|
|
166
104
|
issues: AdmissionRuleSchema.default("hold"),
|
|
167
105
|
workspace: AdmissionRuleSchema.default("allow"),
|
|
168
106
|
workflow: z.enum(["allow", "deny"]).default("allow"),
|
|
169
107
|
});
|
|
170
108
|
export type AdmissionPolicy = z.infer<typeof AdmissionPolicySchema>;
|
|
171
|
-
// How tool calls are gated, the Claude Agent SDK's PermissionMode
|
|
172
|
-
//
|
|
173
|
-
// move itself between them mid-turn, so this is both a turn input and the payload of the `mode` frame.
|
|
109
|
+
// How tool calls are gated, the Claude Agent SDK's PermissionMode narrowed to the four the composer offers. Both a turn
|
|
110
|
+
// input and the payload of the `mode` frame, since the agent can move itself between them mid-turn.
|
|
174
111
|
export const PermissionModeSchema = z.enum(["default", "acceptEdits", "plan", "bypassPermissions"]);
|
|
175
112
|
export type PermissionMode = z.infer<typeof PermissionModeSchema>;
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
* transcript put the mark back in the right gap. */
|
|
113
|
+
// Where a conversation was cut from, the durable half of a fork, carried on the registry entry. `index` is the message
|
|
114
|
+
// the cut sat above in the source, so its transcript can put the mark back.
|
|
179
115
|
export const ForkedFromSchema = z.object({
|
|
180
116
|
conversationId: ConversationIdSchema,
|
|
181
117
|
index: z.number().int().nonnegative(),
|
|
182
|
-
// Which files this fork opened on
|
|
183
|
-
// still say it tomorrow rather than only in the seconds after the click.
|
|
118
|
+
// Which files this fork opened on; kept so the fork can still say it later, not only right after the click.
|
|
184
119
|
files: z.enum(["then", "now"]),
|
|
185
120
|
});
|
|
186
121
|
export type ForkedFrom = z.infer<typeof ForkedFromSchema>;
|
|
187
122
|
export const AgentTurnSchema = z
|
|
188
123
|
.object({
|
|
189
124
|
prompt: z.string().describe("What to say to the agent. May be empty if you are only attaching files."),
|
|
190
|
-
//
|
|
191
|
-
// first turn keeps its user-chosen title); an existing entry's title always wins.
|
|
125
|
+
// Seeds a fresh registry entry's title; an existing entry's title always wins over this.
|
|
192
126
|
title: z
|
|
193
127
|
.string()
|
|
194
128
|
.max(80)
|
|
195
129
|
.optional()
|
|
196
130
|
.describe("A title for a conversation this turn is opening. Ignored for a conversation that already has one."),
|
|
197
|
-
//
|
|
198
|
-
// (the browser puts them under .intentic/records/artifacts/attachments/<uuid>/<name>). The daemon hands them to the
|
|
199
|
-
// provider: Claude reads them from disk via its Read tool; Codex gets images as native inputs.
|
|
131
|
+
// Already uploaded via /workspace/upload; Claude reads them via Read, Codex gets images as native input.
|
|
200
132
|
attachments: z
|
|
201
133
|
.array(z.string().min(1))
|
|
202
134
|
.max(20)
|
|
203
135
|
.optional()
|
|
204
136
|
.describe("Files to hand the agent along with the prompt, as workspace paths. Upload them first."),
|
|
205
|
-
// Which provider
|
|
206
|
-
// provider that minted it (Claude Code sessions vs Codex threads vs Grok/OpenCode sessions are separate
|
|
207
|
-
// stores), a mid-conversation provider/account/harness switch sends `history` instead of resuming.
|
|
137
|
+
// Which provider serves the turn, absent = claude; a sessionId resumes only on the provider that minted it.
|
|
208
138
|
agent: AgentProviderSchema.optional().describe("Which model provider serves this turn. Leave it out for Claude."),
|
|
209
|
-
// Which
|
|
210
|
-
// provider
|
|
211
|
-
// "claude-code" forces the Claude Code Agent SDK loop for ANY provider, codex/grok then drive their model
|
|
212
|
-
// through the sandbox's bundled Anthropic↔OpenAI translator, which needs that provider's API key (its
|
|
213
|
-
// subscription OAuth can't reach a gateway). For the claude provider the two are identical.
|
|
139
|
+
// Which agentic loop runs the turn, absent = provider's own; "claude-code" forces the SDK loop for any
|
|
140
|
+
// provider.
|
|
214
141
|
harness: AgentHarnessSchema.optional().describe("Which agentic loop runs the turn. Leave it out to use each provider's own."),
|
|
215
142
|
// Which connected account of that provider serves the turn; absent = the provider's first account.
|
|
216
143
|
account: z.string().optional().describe("Which of that provider's connected accounts pays for the turn. Leave it out for the first one."),
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
* `account` is which subscription PAYS for the turn, `actsAs` is whose name is on what the turn posts.
|
|
220
|
-
* Naming both "account" is how someone eventually pins a nightly job to the right billing and the wrong
|
|
221
|
-
* Reddit.
|
|
222
|
-
*
|
|
223
|
-
* Absent means opposite things either side of the "is anyone watching" line, which is the owner's chosen
|
|
224
|
-
* posture and the reason this is resolved in one place (turnPersona): an ordinary chat with no persona
|
|
225
|
-
* keeps every connected account, because a person is there to catch a mistake; an `unattended` turn with
|
|
226
|
-
* no persona gets NONE, because at 3am the prompt's wording is the only thing left and that is not
|
|
227
|
-
* enough to bet an unrepeatable post on. */
|
|
144
|
+
// Distinct from `account` (who pays): whose name the turn posts as; absent means something different for each
|
|
145
|
+
// mode.
|
|
228
146
|
actsAs: entryId.optional().describe("Which persona the turn speaks as out in the world. Not the same as which account pays for it."),
|
|
229
147
|
sessionId: z.string().optional().describe("Resume this provider session instead of starting a fresh one."),
|
|
230
|
-
//
|
|
231
|
-
//
|
|
148
|
+
// Stable id surviving provider/account/harness switches; keys the registry entry, the turn run, and the
|
|
149
|
+
// worktree when isolated.
|
|
232
150
|
conversationId: ConversationIdSchema.optional().describe(
|
|
233
151
|
"The conversation this turn belongs to. You choose it, it survives model switches, and it is how you address the conversation later. Naming one that does not exist opens it.",
|
|
234
152
|
),
|
|
235
|
-
//
|
|
236
|
-
//
|
|
153
|
+
// Runs in the conversation's own git worktree (created lazily) instead of shared /work; requires
|
|
154
|
+
// conversationId.
|
|
237
155
|
isolated: z
|
|
238
156
|
.boolean()
|
|
239
157
|
.optional()
|
|
240
158
|
.describe(
|
|
241
159
|
"Work in this conversation's own private copy of the repos rather than the shared tree, so several agents can work at once. Needs a conversation id.",
|
|
242
160
|
),
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
* moves between machines) and needs a conversation id for the same reason `isolated` does. Absent =
|
|
246
|
-
* local. Design: docs/remote-runners-plan.md; refused until runners ship. */
|
|
161
|
+
// Decided like `isolated`: the request's choice on the first turn, the registry's after. `runner` implies
|
|
162
|
+
// isolation; absent means local.
|
|
247
163
|
placement: AgentPlacementSchema.optional().describe(
|
|
248
164
|
"Where this conversation runs: this sandbox (leave it out), or a paired runner by id. Decided on the first turn; later turns follow the conversation.",
|
|
249
165
|
),
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
* snapshot all of its candidates must share. Repeated iterations carry it too, which suppresses the
|
|
253
|
-
* ordinary pre-turn rebase for the lifetime of that workflow step. */
|
|
166
|
+
// Pins a new isolated conversation's worktree to these commits; a workflow step's candidates share one snapshot
|
|
167
|
+
// and skip the ordinary rebase.
|
|
254
168
|
worktreeBase: z
|
|
255
169
|
.array(RepoBaseSchema)
|
|
256
170
|
.min(1)
|
|
@@ -259,55 +173,27 @@ export const AgentTurnSchema = z
|
|
|
259
173
|
.describe(
|
|
260
174
|
"Pin a new private copy to these exact commits instead of today's workspace. Used when several agents must start from identical files.",
|
|
261
175
|
),
|
|
262
|
-
//
|
|
263
|
-
//
|
|
264
|
-
// posture exactly as before.
|
|
176
|
+
// Overrides landing for this turn only; a workflow step sets false so candidates can't leak in before synthesis
|
|
177
|
+
// compares them.
|
|
265
178
|
autoLand: z
|
|
266
179
|
.boolean()
|
|
267
180
|
.optional()
|
|
268
181
|
.describe(
|
|
269
182
|
"Whether this turn's work merges into the workspace when it finishes. Overrides the conversation's own setting for this turn only.",
|
|
270
183
|
),
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
*
|
|
274
|
-
* IT NAMES THE JOB, NOT THE TIER. Before this field there was one list for every unattended turn, so a
|
|
275
|
-
* production incident and a documentation sweep were configured together, and a surface added tomorrow
|
|
276
|
-
* inherited that tier by saying nothing. Now a starter says what it IS, and the owner gets to answer
|
|
277
|
-
* per job: cheap for the sweep, frontier for the incident.
|
|
278
|
-
*
|
|
279
|
-
* ONLY FILLS A SILENCE. The daemon applies the role's list to a turn that named no model AND no
|
|
280
|
-
* provider (turn-resume.ts): a caret pick, an acceptance run's own choice, a workflow step pinned to a
|
|
281
|
-
* provider — all of those already answered the question, and this must not overrule them.
|
|
282
|
-
*
|
|
283
|
-
* A `run` role, always. The `helper` roles never reach here: a one-shot is not a turn, it has no
|
|
284
|
-
* conversation and no worktree, and it asks its own role directly at the seam that spends it. */
|
|
184
|
+
// Which per-job model list answers when nobody named a model or provider (turn-resume.ts); names the job, not a
|
|
185
|
+
// tier, and never overrides an explicit pick.
|
|
285
186
|
runRole: ModelRoleSchema.optional().describe(
|
|
286
187
|
"What started this turn, when it was not a person typing: which of the sandbox's per-job model lists answers for it. Only used when the turn names no model of its own.",
|
|
287
188
|
),
|
|
288
|
-
// Set
|
|
289
|
-
// outside message rather than a user. Recorded on the registry entry so the fleet can say where the
|
|
290
|
-
// agent came from. Requires conversationId, there is nothing to record it on otherwise.
|
|
189
|
+
// Set only by the daemon's own dispatchers, never a client; requires conversationId to record it on.
|
|
291
190
|
origin: AgentOriginSchema.optional().describe(
|
|
292
191
|
"Set by the sandbox alone: this turn opened a conversation on behalf of a message from outside rather than a person.",
|
|
293
192
|
),
|
|
294
|
-
// No `history` field: a
|
|
295
|
-
//
|
|
296
|
-
//
|
|
297
|
-
|
|
298
|
-
* because a fork is a NEW conversation whose record is empty and the cut is a gesture only the client
|
|
299
|
-
* saw. `keep` counts the source's RECORD rows to copy, not its bubbles (see the web transcript's
|
|
300
|
-
* recordedRows). The daemon copies that prefix into the new conversation's record before the turn runs,
|
|
301
|
-
* after which a fork is an ordinary conversation: it seeds like any other and reads back in full.
|
|
302
|
-
* Requires conversationId, the fork it describes IS that conversation.
|
|
303
|
-
*
|
|
304
|
-
* `files` is the half the user actually chooses between, and the half that used to be silent. "now"
|
|
305
|
-
* inherits the workspace as it stands (the fork is a fresh line of conversation over today's files);
|
|
306
|
-
* "then" puts the fork on the files as they were AT THE CUT, which it can only do in a checkout of its
|
|
307
|
-
* own, so it implies `isolated`, and the daemon resolves the cut's per-repo commits from the source's
|
|
308
|
-
* own turn anchors rather than trusting the client with shas. A "then" fork of a conversation that has
|
|
309
|
-
* no anchor at that index falls back to "now" and says so on the turn, because silently starting from
|
|
310
|
-
* the wrong files is the failure this whole field exists to prevent. */
|
|
193
|
+
// No `history` field: a provider/account/harness switch carries no transcript over the wire; the daemon seeds
|
|
194
|
+
// the new session from its own conversationId-keyed record.
|
|
195
|
+
// Where a fork was cut from, on its first turn only; requires conversationId, and files:"then" implies
|
|
196
|
+
// isolated.
|
|
311
197
|
forkOf: z
|
|
312
198
|
.object({
|
|
313
199
|
conversationId: ConversationIdSchema.describe("The conversation this one was cut from."),
|
|
@@ -322,33 +208,15 @@ export const AgentTurnSchema = z
|
|
|
322
208
|
.describe("Where this conversation was cut from, on its first turn only. Only the client knows this, so only the client can say it."),
|
|
323
209
|
// The browser sends the chosen model per turn; the provider token is the sandbox's own stored credential.
|
|
324
210
|
model: z.string().optional().describe("Which model to use. Leave it out for the provider's default."),
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
* composer. That is the whole distinction the flag carries, and it is why it cannot be inferred: a chat
|
|
328
|
-
* turn ALSO arrives with no `model` whenever the live catalog hasn't loaded yet, and the two want
|
|
329
|
-
* opposite defaults, the chat wants the provider's own catalog default, an unattended run wants the
|
|
330
|
-
* tier its owner chose for work that spends money while they are not watching.
|
|
331
|
-
*
|
|
332
|
-
* The daemon fills `agent`/`model` and the pinned entry's own knobs from the turn's own role list for any turn that says
|
|
333
|
-
* this and names none of them (startConversationTurn), walking that list until one can actually be
|
|
334
|
-
* started. Naming one still wins: every surface-started run now carries a caret that overrides the list
|
|
335
|
-
* for that run alone, and Acceptance picks per run because it fans a session out per story. Either way
|
|
336
|
-
* the pick is the user's, made a second ago. */
|
|
211
|
+
// True when a surface started the turn, not a person; the sandbox then fills the model from the owner's role
|
|
212
|
+
// list for unwatched work.
|
|
337
213
|
unattended: z
|
|
338
214
|
.boolean()
|
|
339
215
|
.optional()
|
|
340
216
|
.describe(
|
|
341
217
|
"Nobody chose a model for this turn because a screen started it rather than a person. The sandbox then fills in the model its owner picked for unwatched work.",
|
|
342
218
|
),
|
|
343
|
-
|
|
344
|
-
* listener provider carried the message. Set by the dispatchers that wake an agent on somebody else's
|
|
345
|
-
* words; absent for a turn the owner started, a schedule, or a workspace event.
|
|
346
|
-
*
|
|
347
|
-
* It is the birth half of the turn's taint (guard/turn-taint.ts). The other half marks itself as the
|
|
348
|
-
* turn works, a fetched page, a foreign MCP server's answer, and together they are what the command
|
|
349
|
-
* gate reads before letting a command read credential material unasked. Distinct from `unattended`,
|
|
350
|
-
* which is about whether anyone is WATCHING: a Front Desk wake is both, an owner asking the agent to read
|
|
351
|
-
* a web page is neither, and each flag governs a different decision. */
|
|
219
|
+
// Outside content caused this turn, naming the source; distinct from `unattended` (whether anyone is watching).
|
|
352
220
|
outsideWake: z
|
|
353
221
|
.string()
|
|
354
222
|
.min(1)
|
|
@@ -356,18 +224,17 @@ export const AgentTurnSchema = z
|
|
|
356
224
|
.describe(
|
|
357
225
|
"Content from outside caused this turn, and what to call the source. It is what makes the sandbox treat the turn as carrying somebody else's words.",
|
|
358
226
|
),
|
|
359
|
-
// How tool calls are gated for this turn (the SDK's permissionMode, verbatim)
|
|
360
|
-
// propose → approve → execute
|
|
361
|
-
//
|
|
362
|
-
//
|
|
227
|
+
// How tool calls are gated for this turn (the SDK's permissionMode, verbatim):
|
|
228
|
+
// plan: propose → approve → execute
|
|
229
|
+
// default: prompts per tool on the permission side channel
|
|
230
|
+
// acceptEdits: auto-accepts file edits
|
|
231
|
+
// bypassPermissions: runs everything
|
|
232
|
+
// The agent can move itself between modes mid-turn, riding back as a `mode` frame.
|
|
363
233
|
permissionMode: PermissionModeSchema.optional().describe(
|
|
364
234
|
"How tool calls are gated: ask each time, accept file edits, propose a plan first, or run everything. The agent can move itself between these mid-turn.",
|
|
365
235
|
),
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
* owner-driven chat wants. Set by the automation dispatchers from Automation.allowedTools: a wake driven
|
|
369
|
-
* by an OUTSIDE message runs bypassPermissions like any other automation turn, so for a public Front Desk
|
|
370
|
-
* this list is the actual boundary, prompt wording is advice, an empty toolbox is not. */
|
|
236
|
+
// Narrows the turn to these tool names (the SDK option, not the daemon's MCP `tools`/servers); absent means
|
|
237
|
+
// everything the runtime has.
|
|
371
238
|
allowedTools: z
|
|
372
239
|
.array(z.string().min(1))
|
|
373
240
|
.optional()
|
|
@@ -376,25 +243,16 @@ export const AgentTurnSchema = z
|
|
|
376
243
|
),
|
|
377
244
|
effort: z.string().optional().describe("How hard the model should think, where the provider offers a choice."),
|
|
378
245
|
thinking: z.boolean().optional().describe("Whether to show the model's reasoning as it works."),
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
* the endpoint, and reports what it actually did on the `fast_mode` frame. Absent/false ⇒ standard
|
|
382
|
-
* speed, which is also what a runtime that doesn't declare the capability gets (turn-plan drops it).
|
|
383
|
-
*
|
|
384
|
-
* Not a sandbox setting, for the same reason effort isn't: it changes what a turn COSTS, so it belongs
|
|
385
|
-
* to the turn that spends it rather than to the workspace it ran in. */
|
|
246
|
+
// Requests the harness serve this turn faster at a higher price; a request, not a promise, the `fast_mode`
|
|
247
|
+
// frame reports what happened.
|
|
386
248
|
fast: z
|
|
387
249
|
.boolean()
|
|
388
250
|
.optional()
|
|
389
251
|
.describe(
|
|
390
252
|
"Ask for the same work at a higher rate for a higher price. A request rather than a promise: the answer says what actually happened.",
|
|
391
253
|
),
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
* workspace. The judge still runs and the verdict is still recorded — a deny is the strongest label the
|
|
395
|
-
* calibration ledger ever gets (UsageTurn.tierDenied) — but nothing is substituted. The composer sends
|
|
396
|
-
* its conversation-level toggle here every turn, and the registry persists it beside `fast`, so the
|
|
397
|
-
* choice survives reopening the tab. Absent ⇒ no opinion, routing follows settings.autoTier. */
|
|
254
|
+
// Vetoes automatic tier selection for this turn; the judge still runs and records its verdict, but nothing is
|
|
255
|
+
// substituted.
|
|
398
256
|
tierHold: z
|
|
399
257
|
.boolean()
|
|
400
258
|
.optional()
|
|
@@ -422,8 +280,7 @@ export const AgentTurnSchema = z
|
|
|
422
280
|
.refine((turn) => turn.forkOf === undefined || turn.conversationId !== undefined, {
|
|
423
281
|
message: "forkOf requires conversationId",
|
|
424
282
|
})
|
|
425
|
-
//
|
|
426
|
-
// everyone else's too, and rolling it back under them is what `files: "then"` must never mean.
|
|
283
|
+
// "then" needs a checkout of its own; rolling back the shared tree under everyone else is what it must never mean.
|
|
427
284
|
.refine((turn) => turn.forkOf?.files !== "then" || turn.isolated === true, {
|
|
428
285
|
message: 'forkOf.files "then" requires isolated',
|
|
429
286
|
});
|
|
@@ -440,12 +297,18 @@ export type AgentTurn = z.infer<typeof AgentTurnSchema>;
|
|
|
440
297
|
* would send a Codex model id to Claude. Routes that accept this pass it through verbatim; a model this build
|
|
441
298
|
* has never heard of is a supported pick, since the picker offers a custom-id escape hatch.
|
|
442
299
|
*
|
|
443
|
-
* AND THE
|
|
444
|
-
*
|
|
445
|
-
* named no model (turn-resume.ts)
|
|
446
|
-
*
|
|
447
|
-
*
|
|
448
|
-
*
|
|
300
|
+
* AND EVERYTHING ELSE THE PANEL CAN SET, which is the half this schema used to drop on the floor. A pinned entry
|
|
301
|
+
* carries its own account, harness, effort, thinking and speed (ModelPinSchema), the daemon applies a pin's
|
|
302
|
+
* knobs ONLY to a turn that named no model (turn-resume.ts), and the picker the caret opens offers every one of
|
|
303
|
+
* them — so a pick that carried the pair alone moved each override onto the provider's own defaults for the
|
|
304
|
+
* rest. That is worst exactly where the caret gets reached for: the one moment somebody opens it is the failure
|
|
305
|
+
* that just beat the standing order, and a run re-pointed at a frontier model but not at the tier, the loop or
|
|
306
|
+
* the account that model was pinned under is not the run they configured.
|
|
307
|
+
*
|
|
308
|
+
* The fields are AgentTurn's own (it carries all five already), so a route that accepts this spreads it onto
|
|
309
|
+
* the turn verbatim. Every one is optional and absent means absent: the turn goes out without the field and the
|
|
310
|
+
* model's own default answers. `thinking: false` is therefore a different statement from no thinking at all,
|
|
311
|
+
* which is the distinction Claude's own refusal of `max` beside disabled thinking turns on. */
|
|
449
312
|
export const AgentRunPickSchema = z
|
|
450
313
|
.object({
|
|
451
314
|
agent: z.string().min(1).describe("Which provider."),
|
|
@@ -453,13 +316,44 @@ export const AgentRunPickSchema = z
|
|
|
453
316
|
.string()
|
|
454
317
|
.min(1)
|
|
455
318
|
.describe("Which of its models. Both or neither, because a model name only means anything to the provider that serves it."),
|
|
319
|
+
account: z
|
|
320
|
+
.string()
|
|
321
|
+
.optional()
|
|
322
|
+
.describe("Which connected account of that provider pays, by its daemon-minted id. Leave it out for whichever has headroom."),
|
|
323
|
+
harness: AgentHarnessSchema.optional().describe("Which agentic loop runs it. Leave it out to use the provider's own."),
|
|
456
324
|
effort: z
|
|
457
325
|
.string()
|
|
458
326
|
.optional()
|
|
459
327
|
.describe("How hard that model should think, where it offers a choice. Leave it out to take the model's own default."),
|
|
328
|
+
thinking: z.boolean().optional().describe("Whether this model reasons before it answers, where that is a choice it offers."),
|
|
329
|
+
fast: z.boolean().optional().describe("Ask for this model's work at a higher rate for a higher price. A request rather than a promise."),
|
|
460
330
|
})
|
|
461
331
|
.optional();
|
|
462
332
|
export type AgentRunPick = z.infer<typeof AgentRunPickSchema>;
|
|
333
|
+
/* THE PICK A RUN BUTTON HOLDS, AS THE WIRE SPELLS IT. The picker answers in the shell's own vocabulary
|
|
334
|
+
* (`provider`, the kit's AgentRunChoice) and a turn calls the same field `agent`, so every surface that starts
|
|
335
|
+
* an agent had this translation written out by hand — seven of them, each re-deciding which fields to carry,
|
|
336
|
+
* which is exactly how the tier came to travel from four of them and the account from none.
|
|
337
|
+
*
|
|
338
|
+
* ABSENT STAYS ABSENT, field by field: `undefined` means the turn goes out without it and the model's own
|
|
339
|
+
* default answers, which is not the same as any value this could invent. */
|
|
340
|
+
export const runPickOf = (choice: {
|
|
341
|
+
readonly provider: string;
|
|
342
|
+
readonly model: string;
|
|
343
|
+
readonly account?: string | undefined;
|
|
344
|
+
readonly harness?: string | undefined;
|
|
345
|
+
readonly effort?: string | undefined;
|
|
346
|
+
readonly thinking?: boolean | undefined;
|
|
347
|
+
readonly fast?: boolean | undefined;
|
|
348
|
+
}): NonNullable<AgentRunPick> => ({
|
|
349
|
+
agent: choice.provider,
|
|
350
|
+
model: choice.model,
|
|
351
|
+
...(choice.account === undefined ? {} : { account: choice.account }),
|
|
352
|
+
...(choice.harness === undefined ? {} : { harness: choice.harness as AgentHarness }),
|
|
353
|
+
...(choice.effort === undefined ? {} : { effort: choice.effort }),
|
|
354
|
+
...(choice.thinking === undefined ? {} : { thinking: choice.thinking }),
|
|
355
|
+
...(choice.fast === undefined ? {} : { fast: choice.fast }),
|
|
356
|
+
});
|
|
463
357
|
/* ONE ENTRY OF ONE ROLE'S MODEL LIST (settings.modelRoles): the standing version of the pick above, and not
|
|
464
358
|
* merely which model but HOW it is to be run.
|
|
465
359
|
*
|
|
@@ -500,16 +394,14 @@ export const ModelPinSchema = z.object({
|
|
|
500
394
|
harness: AgentHarnessSchema.optional().describe("Which agentic loop runs it. Leave it out to use the provider's own."),
|
|
501
395
|
});
|
|
502
396
|
export type ModelPin = z.infer<typeof ModelPinSchema>;
|
|
503
|
-
// POST /agent's ack: the daemon-minted id of the detached
|
|
504
|
-
//
|
|
397
|
+
// POST /agent's ack: the daemon-minted id of the detached run it started. The turn runs daemon-side regardless of any
|
|
398
|
+
// client connection; every window renders it via /agent/attach.
|
|
505
399
|
export const StartedTurnSchema = z.object({
|
|
506
400
|
run: z.string().describe("The id of the run that just started. Hand it back when you attach, so the stream resumes rather than replaying."),
|
|
507
401
|
});
|
|
508
402
|
export type StartedTurn = z.infer<typeof StartedTurnSchema>;
|
|
509
|
-
//
|
|
510
|
-
//
|
|
511
|
-
// applies what follows. `run` names the run the client was watching, so the head's own id tells it whether a
|
|
512
|
-
// newer turn has started meanwhile.
|
|
403
|
+
// Attaches to a conversation's run (live, or finished within retention); no cursor to resume from, the head carries all
|
|
404
|
+
// rows. `run` names what the client was watching, so a newer run's head id tells it to catch up.
|
|
513
405
|
export const AttachTurnSchema = z.object({
|
|
514
406
|
conversationId: ConversationIdSchema.describe("Which conversation to watch."),
|
|
515
407
|
run: z
|