@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
|
@@ -1,41 +1,20 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { TRANSLATOR_PROVIDERS, type TranslatorProvider } from "../provider-specs.js";
|
|
2
|
+
import { TRANSLATOR_PROVIDERS, type TranslatorProvider } from "../models/provider-specs.js";
|
|
3
3
|
import { AgentHarnessSchema, AgentProviderSchema, EditorContextSchema } from "./agent.js";
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
// reading IS, so every surface that draws a percentage reads this one type and no other.
|
|
4
|
+
// Headroom is one shape shared by every provider, not a Claude idea others imitate: a native account and a routed
|
|
5
|
+
// subscription differ in who holds the credential, never in what a reading is. Every surface that draws a percentage
|
|
6
|
+
// reads this one type.
|
|
8
7
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
* ChatGPT publishes a code-review limit that no chat turn spends. Before this field the relation lived in six
|
|
15
|
-
* places that disagreed (a static Google table, a Claude kind list, a max-over-everything ranking, a fullest-
|
|
16
|
-
* window reset, and two client-side matchers), so a Google account with its Gemini pool spent drew a red ring
|
|
17
|
-
* over Claude Opus, and a Claude account with its Opus slice spent was ranked "spent" for a Haiku call.
|
|
18
|
-
*
|
|
19
|
-
* "all" every model on this plan spends it: the 5-hour and weekly pools, Kimi's throttles.
|
|
20
|
-
* "none" nothing a turn here runs spends it: a code-review limit, a surface-scoped pool for another
|
|
21
|
-
* product. Still shown, never binding.
|
|
22
|
-
* { models } a slice scoped to the models the names match. Names are matched as runs of whole words against
|
|
23
|
-
* the model id AND its label ("opus" is in "claude-opus-4-6" and in "Claude Opus 4.6"; "gemini"
|
|
24
|
-
* is in "gemini-3-pro"), see plan-pools.ts, because the plan names a pool by the vendor's word for
|
|
25
|
-
* the tier and nothing else connects the two.
|
|
26
|
-
*
|
|
27
|
-
* Decided by the READER, never inferred later: the payload is the only place the grouping is known, and it is
|
|
28
|
-
* the plan's to change, so the fact travels with the reading it describes. */
|
|
8
|
+
// Which models a pool gates, decided once by the reader that parsed it, so every picker answers from one fact instead
|
|
9
|
+
// of re-deriving it.
|
|
10
|
+
// all: every model on this plan spends it.
|
|
11
|
+
// none: nothing spends it; still shown, never binding.
|
|
12
|
+
// { models }: scoped to models matching these names (whole-word match against id and label).
|
|
29
13
|
export const WindowGatesSchema = z.union([z.literal("all"), z.literal("none"), z.object({ models: z.array(z.string().min(1)).min(1) })]);
|
|
30
14
|
export type WindowGates = z.infer<typeof WindowGatesSchema>;
|
|
31
15
|
|
|
32
|
-
//
|
|
33
|
-
//
|
|
34
|
-
// unrecognised pool is shown under its raw key, which is far better than being silently folded into a
|
|
35
|
-
// neighbour. `label` is the provider's OWN display name where it supplies one (the per-model buckets do), it
|
|
36
|
-
// wins over anything we'd infer, because the model names in a plan's limits are the provider's to rename.
|
|
37
|
-
// `resetsAt` is epoch SECONDS (matching the SDK's frame). `gates` says which models the pool stands in the way
|
|
38
|
-
// of, see WindowGatesSchema.
|
|
16
|
+
// `kind` is the provider's own key (a string, not an enum): an unrecognised pool shows under its raw key rather than
|
|
17
|
+
// folding into a neighbour. `label` wins over anything inferred; `resetsAt` is epoch seconds.
|
|
39
18
|
export const UsageWindowSchema = z.object({
|
|
40
19
|
kind: z.string(),
|
|
41
20
|
label: z.string().optional(),
|
|
@@ -44,36 +23,15 @@ export const UsageWindowSchema = z.object({
|
|
|
44
23
|
gates: WindowGatesSchema,
|
|
45
24
|
});
|
|
46
25
|
export type UsageWindow = z.infer<typeof UsageWindowSchema>;
|
|
47
|
-
//
|
|
48
|
-
//
|
|
49
|
-
// comparing accounts needs the same pools on every row. How the reading is TAKEN is per provider and stops at
|
|
50
|
-
// the daemon's readers: Claude's rides the turn's own stream, ChatGPT's, Google's and Kimi's are pulled through
|
|
51
|
-
// CLIProxyAPI's credential-scoped management call. All of them are control requests, so none costs tokens.
|
|
52
|
-
//
|
|
53
|
-
// Within one window utilization only climbs, so an un-reset window stays a valid FLOOR however old it is; past
|
|
54
|
-
// its `resetsAt` it describes a pool that no longer exists and the store drops it. `measuredAt` is epoch MS
|
|
55
|
-
// (matching connectedAt), deliberately a different unit from the windows' seconds.
|
|
26
|
+
// Every window kept, not just the binding one, since which pool binds changes between turns. Utilization only climbs
|
|
27
|
+
// within a window, so a stale reading is still a valid floor. `measuredAt` is epoch ms — windows are seconds.
|
|
56
28
|
export const AccountUsageSchema = z.object({
|
|
57
29
|
windows: z.array(UsageWindowSchema),
|
|
58
30
|
measuredAt: z.number(),
|
|
59
31
|
});
|
|
60
32
|
export type AccountUsage = z.infer<typeof AccountUsageSchema>;
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
* Every other affordance around a refused turn is about WHEN: arm the appointment, count down to the reset,
|
|
64
|
-
* press when it opens. This one moves the clock. The provider reopens the five-hour window immediately and
|
|
65
|
-
* charges the account one of its weekly resets; the WEEKLY allowance is untouched and still binds, so this
|
|
66
|
-
* buys back the session pool and nothing else. Upstream's own CLI spells it `/limit-reset`.
|
|
67
|
-
*
|
|
68
|
-
* THE ANSWER IS THE PROVIDER'S, NEVER OURS. There is no rule here to re-derive: eligibility turns on the plan
|
|
69
|
-
* tier, how long the account has existed, whether it is actually at the wall, whether another experiment holds
|
|
70
|
-
* it, and whether the week's reset is already spent — all of it decided server-side and none of it visible from
|
|
71
|
-
* a usage reading. So this shape is a transcription of what the endpoint said, and the button exists only while
|
|
72
|
-
* it says `available`. A client must never infer availability from a 100% window.
|
|
73
|
-
*
|
|
74
|
-
* `reason` is the provider's own word for the refusal ("tier", "tenure", "not_at_wall", "weekly_limit",
|
|
75
|
-
* "already_used", …) and is carried rather than translated, because the set is the provider's to extend and a
|
|
76
|
-
* word we don't recognise is still worth showing to somebody asking why the button is not there. */
|
|
33
|
+
// Anthropic's once-a-week reset of the session window only; the weekly allowance is untouched. The answer is entirely
|
|
34
|
+
// the provider's — never infer `available` from a 100% window. `reason` is its own word, carried verbatim.
|
|
77
35
|
export const LimitResetStatusSchema = z.object({
|
|
78
36
|
available: z
|
|
79
37
|
.boolean()
|
|
@@ -82,7 +40,7 @@ export const LimitResetStatusSchema = z.object({
|
|
|
82
40
|
.string()
|
|
83
41
|
.optional()
|
|
84
42
|
.describe("Why not, in the provider's own word, when it gave one. Absent when it is available, or when the provider said nothing."),
|
|
85
|
-
//
|
|
43
|
+
// Epoch seconds, like every reset instant on this wire.
|
|
86
44
|
nextAvailableAt: z
|
|
87
45
|
.number()
|
|
88
46
|
.optional()
|
|
@@ -90,16 +48,8 @@ export const LimitResetStatusSchema = z.object({
|
|
|
90
48
|
weeklyResetsAt: z.number().optional().describe("When the weekly allowance itself reopens, in epoch seconds, where the provider publishes it."),
|
|
91
49
|
});
|
|
92
50
|
export type LimitResetStatus = z.infer<typeof LimitResetStatusSchema>;
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
* `reset` is the only outcome that changed anything, and the caller's cue to send the held turn again. The rest
|
|
96
|
-
* are all "nothing happened", and they are kept APART rather than folded into one failure because they are read
|
|
97
|
-
* by somebody who just pressed a button and is owed the difference: `already_used` means come back next week,
|
|
98
|
-
* `not_limited` means the window reopened while they were reading, `ineligible` means this account never had
|
|
99
|
-
* it, and `unavailable`/`error` mean try again. Collapsing them would make every one of those read as a fault.
|
|
100
|
-
*
|
|
101
|
-
* Never throws over the wire: a claim that fails leaves the account exactly as it was, and the honest answer to
|
|
102
|
-
* a press is a word, not a stack trace. */
|
|
51
|
+
// Only `reset` changed anything; the rest are all "nothing happened" but kept apart since each is owed a different next
|
|
52
|
+
// step (wait, retry, this account never had it). Never throws: a failed claim leaves the account as it was.
|
|
103
53
|
export const LimitResetClaimSchema = z.object({
|
|
104
54
|
result: z
|
|
105
55
|
.enum(["reset", "already_used", "not_limited", "ineligible", "unavailable", "error"])
|
|
@@ -108,46 +58,22 @@ export const LimitResetClaimSchema = z.object({
|
|
|
108
58
|
detail: z.string().optional().describe("What went wrong, in words, for the two outcomes that are this sandbox's fault rather than the plan's."),
|
|
109
59
|
});
|
|
110
60
|
export type LimitResetClaim = z.infer<typeof LimitResetClaimSchema>;
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
*
|
|
114
|
-
* A snapshot above is POLLED and therefore always a floor: read at turn end (Claude) or on a five-minute sweep
|
|
115
|
-
* (the routed subscriptions), and account-wide, so every other client on the plan spends the same pools without
|
|
116
|
-
* this sandbox hearing about it. A refusal is the opposite kind of fact, observed, exact, and timestamped by
|
|
117
|
-
* the only event that proves the plan said no. Between them they answer a question neither can alone: a green
|
|
118
|
-
* meter beside "refused a turn 4 minutes ago" means the reading is stale, not that the account has room.
|
|
119
|
-
*
|
|
120
|
-
* Keyed by PROVIDER rather than by account, because that is the resolution the daemon honestly has. A native
|
|
121
|
-
* Claude turn knows which account served it and names it; a routed turn does not. CLIProxyAPI picks the auth
|
|
122
|
-
* file itself and only refuses once every credential it holds is cooling down, which makes the refusal a fact
|
|
123
|
-
* about the provider in the first place.
|
|
124
|
-
*
|
|
125
|
-
* `kind` is read off what the provider SAID, not off the frame code the harness filed it under, because those
|
|
126
|
-
* two disagree: Kimi answers a spent plan with `403 You've reached your usage limit for this billing cycle`,
|
|
127
|
-
* which the CLI prints under "Failed to authenticate" and the stream codes as a refused credential. Sending
|
|
128
|
-
* someone to reconnect a perfectly good account is the cost of believing the code over the sentence. */
|
|
61
|
+
// Observed and exact, unlike a polled usage snapshot that can be stale; keyed by provider, not account, since a routed
|
|
62
|
+
// turn doesn't know which served it. `kind` is read off what the provider said, not the frame code.
|
|
129
63
|
export const ProviderRefusalSchema = z.object({
|
|
130
|
-
//
|
|
64
|
+
// Read side by side with `AccountUsage.measuredAt` (also ms).
|
|
131
65
|
at: z.number().describe("When it refused, in milliseconds."),
|
|
132
|
-
|
|
133
|
-
* them tells the user to do the wrong thing. A spent allowance is answered by a later reading with room in
|
|
134
|
-
* it; a refused credential by the account being read at all through it; and an entitlement refusal, an
|
|
135
|
-
* organization that has turned Claude Code off for this seat, by NOTHING either of those can produce. Its
|
|
136
|
-
* token authenticates and its usage endpoint answers with real pools the whole time it cannot run a turn,
|
|
137
|
-
* so filing it as `auth` let the very next quota sweep dismiss it and leave a full green ring over an
|
|
138
|
-
* account that refused everything asked of it. Only a turn that actually runs settles this one. */
|
|
66
|
+
// Only a turn that actually runs settles an entitlement refusal — nothing else can.
|
|
139
67
|
kind: z
|
|
140
68
|
.enum(["limit", "auth", "entitlement"])
|
|
141
69
|
.describe(
|
|
142
70
|
"Three different noes, kept apart because what fixes each is different. A spent allowance is answered by waiting; a refused credential by signing in again; and an entitlement refusal, where somebody has switched this off for your seat, by neither of those. That last one authenticates fine and reports healthy limits the whole time it refuses everything.",
|
|
143
71
|
),
|
|
144
|
-
// The provider's own sentence, verbatim. It is the only part that says WHICH pool or WHICH credential.
|
|
145
72
|
message: z.string().describe("The provider's own words, verbatim. The only part that says which limit or which credential."),
|
|
146
|
-
//
|
|
73
|
+
// Known for native turns only; a routed turn doesn't say which account served it.
|
|
147
74
|
account: z.string().optional().describe("Which account was serving, where that is known."),
|
|
148
|
-
//
|
|
149
|
-
//
|
|
150
|
-
// separately is routinely a different allowance from the one that said no.
|
|
75
|
+
// Lets a `limit` refusal be read against the pool that model spends (`UsageWindow.gates`), not the account's
|
|
76
|
+
// fullest pool.
|
|
151
77
|
model: z.string().optional().describe("Which model the refused turn was on, where that is known."),
|
|
152
78
|
});
|
|
153
79
|
export type ProviderRefusal = z.infer<typeof ProviderRefusalSchema>;
|
|
@@ -159,23 +85,19 @@ export const ProviderRefusalsSchema = z.object({
|
|
|
159
85
|
),
|
|
160
86
|
});
|
|
161
87
|
export type ProviderRefusals = z.infer<typeof ProviderRefusalsSchema>;
|
|
162
|
-
//
|
|
163
|
-
//
|
|
88
|
+
// `name` is CLIProxyAPI's auth-file name, the stable key a disconnect addresses; `label` is the reported sign-in
|
|
89
|
+
// identity (email, else the file name).
|
|
164
90
|
export const TranslatorAccountSchema = z.object({
|
|
165
91
|
name: z.string(),
|
|
166
92
|
label: z.string(),
|
|
167
|
-
//
|
|
168
|
-
//
|
|
169
|
-
// or one that did not answer, must still render as the connected account it is, with a dot instead of a
|
|
170
|
-
// ring.
|
|
93
|
+
// Same shape as `OauthAccount`'s, so account rows are one list. Absent for a provider this sandbox can't read quota
|
|
94
|
+
// from (Grok) — still renders, as a dot not a ring.
|
|
171
95
|
usage: AccountUsageSchema.optional(),
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
* until `until`; a reading taken five minutes ago cannot know that, and a green ring over a benched file is
|
|
175
|
-
* exactly the gap a refusal used to be the only way to see. Absent ⇒ the proxy is routing to it. */
|
|
96
|
+
// The one live fact a quota read can't produce: CLIProxyAPI benches an auth file the instant upstream refuses it
|
|
97
|
+
// (quota, expired token) and routes around it until `until`. Absent means the proxy is routing to it.
|
|
176
98
|
cooling: z
|
|
177
99
|
.object({
|
|
178
|
-
// Epoch
|
|
100
|
+
// Epoch seconds, like every reset on this wire; absent when the proxy named no retry instant.
|
|
179
101
|
until: z.number().optional(),
|
|
180
102
|
// The proxy's own sentence, when it gave one.
|
|
181
103
|
reason: z.string().optional(),
|
|
@@ -183,15 +105,8 @@ export const TranslatorAccountSchema = z.object({
|
|
|
183
105
|
.optional(),
|
|
184
106
|
});
|
|
185
107
|
export type TranslatorAccount = z.infer<typeof TranslatorAccountSchema>;
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
* them, so connecting a second ChatGPT or Google account is more headroom, and each is disconnectable on its
|
|
189
|
-
* own. Drives the account rows in Sandbox ▸ Agent.
|
|
190
|
-
*
|
|
191
|
-
* ONE KEY PER TRANSLATOR PROVIDER, built over the derived list rather than typed out, because this object and
|
|
192
|
-
* the enum beside it (KeyedProviderSchema) are the same fact twice and the browser reads a provider's slot
|
|
193
|
-
* without checking it exists: a provider present in the enum and missing here is `undefined.length`, at the
|
|
194
|
-
* exact moment somebody is asking whether they can send. */
|
|
108
|
+
// A list per provider, not a flag: CLIProxyAPI holds several auth files per provider and balances across them. Built
|
|
109
|
+
// from the same derived list as `KeyedProviderSchema`, so the two can't drift apart.
|
|
195
110
|
export const TranslatorAccountsSchema = z.object(
|
|
196
111
|
Object.fromEntries(TRANSLATOR_PROVIDERS.map((provider) => [provider, z.array(TranslatorAccountSchema)] as const)) as Record<
|
|
197
112
|
TranslatorProvider,
|
|
@@ -199,15 +114,11 @@ export const TranslatorAccountsSchema = z.object(
|
|
|
199
114
|
>,
|
|
200
115
|
);
|
|
201
116
|
export type TranslatorAccounts = z.infer<typeof TranslatorAccountsSchema>;
|
|
202
|
-
//
|
|
203
|
-
//
|
|
204
|
-
// one route resolves all three; the `kind` says which card answered and carries its payload.
|
|
117
|
+
// Un-parks a turn waiting on the user; every interactive card parks on one registry keyed by `requestId`, so one route
|
|
118
|
+
// resolves all of them, and `kind` says which card answered.
|
|
205
119
|
export const AgentReplySchema = z.discriminatedUnion("kind", [
|
|
206
|
-
//
|
|
207
|
-
//
|
|
208
|
-
// plan the user has read and approved is exactly the point where per-tool prompts stop earning their
|
|
209
|
-
// interruption, landing anywhere else means approving a plan to run `git log` and then being asked whether
|
|
210
|
-
// `git log` may run. Rejection feedback loops back into the model as the denial reason.
|
|
120
|
+
// Approving sets `bypassPermissions` on the SDK session; the container, not per-tool prompts, is the isolation
|
|
121
|
+
// boundary from here on.
|
|
211
122
|
z.object({
|
|
212
123
|
kind: z.literal("plan").describe("Answering a plan the agent proposed."),
|
|
213
124
|
requestId: z.string().min(1).describe("Which card you are answering, from the frame that raised it."),
|
|
@@ -218,8 +129,7 @@ export const AgentReplySchema = z.discriminatedUnion("kind", [
|
|
|
218
129
|
),
|
|
219
130
|
feedback: z.string().optional().describe("Why not, which goes back to the model as the reason."),
|
|
220
131
|
}),
|
|
221
|
-
//
|
|
222
|
-
// is the dismissal, which tells the model to proceed on sensible defaults rather than leaving it parked.
|
|
132
|
+
// Keyed by question text, valued by chosen option label(s), including free-text "Other".
|
|
223
133
|
z.object({
|
|
224
134
|
kind: z.literal("question").describe("Answering a question the agent asked."),
|
|
225
135
|
requestId: z.string().min(1).describe("Which card you are answering."),
|
|
@@ -232,9 +142,7 @@ export const AgentReplySchema = z.discriminatedUnion("kind", [
|
|
|
232
142
|
.optional()
|
|
233
143
|
.describe("Dismissing it instead, which tells the agent to carry on using sensible defaults rather than leaving it waiting."),
|
|
234
144
|
}),
|
|
235
|
-
//
|
|
236
|
-
// of the session (plus the SDK's own narrower suggestions), which is what the card's label promises;
|
|
237
|
-
// 'deny' blocks it and feeds `feedback` back as the reason.
|
|
145
|
+
// "always" may be narrowed further by the SDK's own suggestions.
|
|
238
146
|
z.object({
|
|
239
147
|
kind: z.literal("permission").describe("Answering a request to use a tool."),
|
|
240
148
|
requestId: z.string().min(1).describe("Which card you are answering."),
|
|
@@ -243,11 +151,6 @@ export const AgentReplySchema = z.discriminatedUnion("kind", [
|
|
|
243
151
|
.describe("Once allows this call alone; always allows that whole tool for the rest of the conversation; no blocks it."),
|
|
244
152
|
feedback: z.string().optional().describe("Why not, which goes back to the model as the reason."),
|
|
245
153
|
}),
|
|
246
|
-
// A browser help request (the agent parked mid-sign-in on something only a person can clear, a captcha, a
|
|
247
|
-
// password it does not hold). `helped: true` is "done, hand back": the user took control of the agent's
|
|
248
|
-
// browser, fixed the step, and the turn continues from the page as they left it. `helped: false` is "can't
|
|
249
|
-
// help now", the agent is told so and moves on rather than waiting forever. `note` rides back to the model
|
|
250
|
-
// either way ("typed the password, don't touch the remember-me box").
|
|
251
154
|
z.object({
|
|
252
155
|
kind: z
|
|
253
156
|
.literal("browser_help")
|
|
@@ -260,10 +163,6 @@ export const AgentReplySchema = z.discriminatedUnion("kind", [
|
|
|
260
163
|
),
|
|
261
164
|
note: z.string().optional().describe("Anything the agent should know, which goes back to it either way."),
|
|
262
165
|
}),
|
|
263
|
-
// A terminal help request, the same two answers as the browser's, for a command parked at a prompt only a
|
|
264
|
-
// person can answer. `helped: true` is "typed it, carry on"; false is "can't right now". `note` rides back
|
|
265
|
-
// either way, and on `helped` the daemon adds what the pane SAYS to the tool result: the user answering the
|
|
266
|
-
// prompt is exactly the moment the agent cannot see, and it would otherwise have to ask them how it went.
|
|
267
166
|
z.object({
|
|
268
167
|
kind: z
|
|
269
168
|
.literal("terminal_help")
|
|
@@ -276,20 +175,6 @@ export const AgentReplySchema = z.discriminatedUnion("kind", [
|
|
|
276
175
|
),
|
|
277
176
|
note: z.string().optional().describe("Anything the agent should know, which goes back to it either way."),
|
|
278
177
|
}),
|
|
279
|
-
// A premium service run's yes or no. The click is the ONLY way the spend can happen, the daemon holds the
|
|
280
|
-
// agent's run request parked until this settles it (platform/service-offer.ts), so `approve` carries no
|
|
281
|
-
// qualifiers: one true releases exactly one run, and anything else charges nothing.
|
|
282
|
-
z.object({
|
|
283
|
-
kind: z.literal("service_offer").describe("Answering a request to spend on a paid service."),
|
|
284
|
-
requestId: z.string().min(1).describe("Which card you are answering."),
|
|
285
|
-
approve: z
|
|
286
|
-
.boolean()
|
|
287
|
-
.describe("Yes releases exactly one run. Anything else charges nothing. This click is the only way the spend can happen."),
|
|
288
|
-
}),
|
|
289
|
-
// A missing-capability ask's yes or no. `connect: true` is "I'll set it up", it opens the card's setup
|
|
290
|
-
// and keeps the agent's request parked while the daemon watches for the connection to come live
|
|
291
|
-
// (capabilities/capability-offer.ts); false tells the agent to continue without it. The click decides
|
|
292
|
-
// only the WATCHING: nothing is connected by the reply itself, the setup is the owner's own flow.
|
|
293
178
|
z.object({
|
|
294
179
|
kind: z.literal("capability_offer").describe("Answering a request to connect something the agent needs."),
|
|
295
180
|
requestId: z.string().min(1).describe("Which card you are answering."),
|
|
@@ -299,9 +184,6 @@ export const AgentReplySchema = z.discriminatedUnion("kind", [
|
|
|
299
184
|
"Yes keeps the agent waiting while you set it up, and it carries on the moment the connection comes alive. No tells it to continue without. The reply itself connects nothing: setting it up is still your own doing.",
|
|
300
185
|
),
|
|
301
186
|
}),
|
|
302
|
-
// A USDC payment's yes or no. The click is the ONLY way the money can move, the daemon holds the agent's
|
|
303
|
-
// `wallet fetch` parked until this settles it (wallet/payment-offer.ts), so `approve` carries no
|
|
304
|
-
// qualifiers: one true releases exactly one payment, and anything else spends nothing.
|
|
305
187
|
z.object({
|
|
306
188
|
kind: z.literal("payment_offer").describe("Answering a request to pay for something."),
|
|
307
189
|
requestId: z.string().min(1).describe("Which card you are answering."),
|
|
@@ -309,16 +191,8 @@ export const AgentReplySchema = z.discriminatedUnion("kind", [
|
|
|
309
191
|
.boolean()
|
|
310
192
|
.describe("Yes releases exactly one payment. Anything else spends nothing. This click is the only way the money can move."),
|
|
311
193
|
}),
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
* is addressed to a named list, so the daemon reads the verified identity off the request and refuses a
|
|
315
|
-
* click from anybody else with the card left standing for whoever can answer it. The refusal covers `no`
|
|
316
|
-
* as well: a stranger may not skip a release on the approver's behalf either, or the gate would be a
|
|
317
|
-
* denial-of-service anybody with a session could aim at a turn.
|
|
318
|
-
*
|
|
319
|
-
* `approve` carries no qualifiers because the gate's own policy decides how far one yes goes: a per-use
|
|
320
|
-
* gate releases exactly this use and the next one asks again, a conversation-scoped gate covers the rest
|
|
321
|
-
* of the conversation. The card says which, so the click is never wider than it reads. */
|
|
194
|
+
// The one reply whose sender is checked: the daemon verifies identity against the card's named list and refuses
|
|
195
|
+
// anyone else, including a `no` — otherwise a stranger could deny-of-service the approver.
|
|
322
196
|
z.object({
|
|
323
197
|
kind: z.literal("credential_offer").describe("Releasing a credential the agent may only use once a named person says so."),
|
|
324
198
|
requestId: z.string().min(1).describe("Which card you are answering."),
|
|
@@ -330,11 +204,8 @@ export const AgentReplySchema = z.discriminatedUnion("kind", [
|
|
|
330
204
|
}),
|
|
331
205
|
]);
|
|
332
206
|
export type AgentReply = z.infer<typeof AgentReplySchema>;
|
|
333
|
-
//
|
|
334
|
-
//
|
|
335
|
-
// then holds the message in its queue and sends it as the next turn instead. Carries everything a turn's own
|
|
336
|
-
// prompt can carry (files, the editor-context chip), because "add more while it works" is worth nothing if it
|
|
337
|
-
// only takes bare text: the daemon folds the same notes into the injected message that a fresh turn gets.
|
|
207
|
+
// A message injected into a running turn between tool calls; NOT_FOUND when none is steerable, and the client queues it
|
|
208
|
+
// as the next turn instead. Carries everything a fresh prompt can (files, editor context).
|
|
338
209
|
export const SteerSchema = z
|
|
339
210
|
.object({
|
|
340
211
|
conversationId: z.string().min(1).describe("Which running conversation to interrupt."),
|
|
@@ -350,38 +221,28 @@ export const SteerSchema = z
|
|
|
350
221
|
.refine((steer) => steer.text.trim().length > 0 || (steer.attachments?.length ?? 0) > 0, {
|
|
351
222
|
message: "text or attachments required",
|
|
352
223
|
});
|
|
353
|
-
// True cancel
|
|
354
|
-
// /agent fetch (which sends no cancel frame).
|
|
224
|
+
// True cancel, aborted daemon-side; unlike closing the /agent fetch, which sends no cancel frame.
|
|
355
225
|
export const StopTurnSchema = z.object({ conversationId: z.string().min(1).describe("Which conversation's running turn to cancel.") });
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
*
|
|
359
|
-
* A spent allowance is a refusal by an ACCOUNT, and the fix a person reaches for is the account switcher in the
|
|
360
|
-
* composer: switch to one with headroom, press Continue. Replaying the turn with everything it carried replayed
|
|
361
|
-
* the refused account too, so the press bounced off the same limit, reported it in the same words, and the user's
|
|
362
|
-
* only way through was to type "Continue" by hand — a send, which reads the composer's current selection, which
|
|
363
|
-
* is the very thing the press was ignoring.
|
|
364
|
-
*
|
|
365
|
-
* So the press carries WHO, and the daemon keeps WHAT. Everything that makes the turn the turn (the prompt, the
|
|
366
|
-
* attachments, the effort, the mode, the worktree, the session holding whatever it managed to do) stays on the
|
|
367
|
-
* daemon's own copy, because a client re-deriving those from its transcript would be re-deriving them from the
|
|
368
|
-
* STRIPPED copy it renders, which is how a re-send comes to run a different turn from the one it claims to
|
|
369
|
-
* repeat. Routing is the exception, and it is the exception on purpose: it is not a property of the request, it
|
|
370
|
-
* is the answer to "who pays for it", and the whole reason the user is pressing is that they have changed it. */
|
|
226
|
+
// The press carries WHO serves the re-run; the daemon keeps WHAT the turn is (prompt, attachments, worktree) from its
|
|
227
|
+
// own record, since re-deriving from a stripped client transcript would replay a different turn.
|
|
371
228
|
export const ResumeRoutingSchema = z.object({
|
|
372
229
|
agent: AgentProviderSchema.describe("Which provider serves the re-run."),
|
|
373
230
|
harness: AgentHarnessSchema.describe("Which agentic loop runs it."),
|
|
374
231
|
account: z.string().optional().describe("Which of that provider's accounts pays for it. Leave it out for the first one."),
|
|
375
|
-
//
|
|
376
|
-
// model is a better answer than a blank one.
|
|
232
|
+
// A client whose catalog hasn't loaded has nothing to send; the turn's own model is the better fallback.
|
|
377
233
|
model: z.string().optional().describe("Which model. Leave it out to keep the one the refused turn named."),
|
|
234
|
+
// A session is a file the daemon keeps; a credential is an env var. That's what lets a same-provider account switch
|
|
235
|
+
// resume the existing session instead of opening a fresh one.
|
|
236
|
+
carry: z
|
|
237
|
+
.boolean()
|
|
238
|
+
.optional()
|
|
239
|
+
.describe(
|
|
240
|
+
"When the account changes, keep the provider session (the model keeps everything, and re-reads all of it once on the other account) rather than opening a fresh one seeded from the record. Ignored when the provider changes, or when nothing changes.",
|
|
241
|
+
),
|
|
378
242
|
});
|
|
379
243
|
export type ResumeRouting = z.infer<typeof ResumeRoutingSchema>;
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
* What comes back is an ordinary StartedTurn, and the caller then attaches to it exactly as it would to a turn
|
|
383
|
-
* somebody else started (the resume note on the prompt is what tells an attaching window to reuse the bubble that
|
|
384
|
-
* is already there instead of drawing the same message twice). */
|
|
244
|
+
// Returns an ordinary `StartedTurn`; the caller attaches to it like any turn someone else started. A resume note on the
|
|
245
|
+
// prompt tells an attaching window to reuse the existing bubble, not redraw it.
|
|
385
246
|
export const ResumeTurnSchema = z.object({
|
|
386
247
|
conversationId: z.string().min(1).describe("Which conversation's held turn to run again."),
|
|
387
248
|
routing: ResumeRoutingSchema.optional().describe(
|
package/src/schemas/ports.ts
CHANGED
|
@@ -1,41 +1,28 @@
|
|
|
1
1
|
// ports: every listening TCP socket in the sandbox + explicit port forwarding
|
|
2
2
|
import { z } from "zod";
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
// reachable at port-<slot>-<sandboxId>.<zone> through the preview proxy. Forwarding is an explicit gesture,
|
|
7
|
-
// previews are public, so nothing is exposed until the owner (or an agent acting for them) asks.
|
|
3
|
+
// Terminal-bound ports (a TUI, an ad-hoc process) that the panel machinery can't see; `list` scans procfs live,
|
|
4
|
+
// `forward` exposes one at port-<slot>-<sandboxId>.<zone> through the preview proxy. Forwarding is explicit — nothing
|
|
5
|
+
// is public until asked for.
|
|
8
6
|
|
|
9
7
|
export const PortSummarySchema = z.object({
|
|
10
8
|
port: z.number().describe("The port number."),
|
|
11
|
-
//
|
|
12
|
-
// on ::1 only (Vite). The preview proxy and the desktop mirror (Mutagen forward) both dial this.
|
|
9
|
+
// Vite, for one, binds only ::1; the preview proxy and the desktop mirror both dial this address.
|
|
13
10
|
host: z
|
|
14
11
|
.enum(["127.0.0.1", "::1"])
|
|
15
12
|
.describe("Which loopback address it actually answers on. Some tools bind only one of the two, and anything dialling it has to know which."),
|
|
16
|
-
//
|
|
17
|
-
// Docker's embedded DNS (127.0.0.11), which answers only at its own address, not 127.0.0.1, such rows are
|
|
18
|
-
// listed for transparency but the Ports view hides Preview and forwarding them is refused.
|
|
13
|
+
// e.g. Docker's embedded DNS at 127.0.0.11, which only answers at its own address.
|
|
19
14
|
forwardable: z
|
|
20
15
|
.boolean()
|
|
21
16
|
.describe(
|
|
22
17
|
"Whether it can be exposed at all. Some listeners answer only at their own address and nowhere else; those are listed for honesty and refused for forwarding.",
|
|
23
18
|
),
|
|
24
|
-
//
|
|
25
|
-
//
|
|
26
|
-
// (agent runtimes, translator, dockerd, sshd), listed for transparency but nobody previews it.
|
|
19
|
+
// workspace: dev servers, terminal processes, published container ports. system: agent runtimes, translator,
|
|
20
|
+
// dockerd, sshd.
|
|
27
21
|
kind: z
|
|
28
22
|
.enum(["workspace", "system"])
|
|
29
23
|
.describe("Whether somebody's own work put it there, or the sandbox's own machinery did. Only the first kind is worth previewing."),
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
* else. `title` is what a person would call it ("Vite dev server", "Sandbox service", "Container port"),
|
|
33
|
-
* `purpose` is the one sentence a row shows under it, and `origin` says who put it there, which is what
|
|
34
|
-
* the reader is really asking when they ask what a port is: mine, my agent's, or the box's own.
|
|
35
|
-
*
|
|
36
|
-
* All three are required. A listener nothing can explain still gets a name ("Unclaimed port") and a
|
|
37
|
-
* sentence that says so out loud, because the alternative (a raw argv, or nothing) is what made this
|
|
38
|
-
* view unreadable, and the button beside the row publishes the port to the internet. */
|
|
24
|
+
// All three are required, even when nothing can explain the listener ("Unclaimed port"); resolved daemon-side,
|
|
25
|
+
// where the facts that attribute it actually live.
|
|
39
26
|
title: z
|
|
40
27
|
.string()
|
|
41
28
|
.describe(
|
|
@@ -45,17 +32,13 @@ export const PortSummarySchema = z.object({
|
|
|
45
32
|
origin: z
|
|
46
33
|
.enum(["terminal", "agent", "panel", "extension", "container", "sandbox", "unknown"])
|
|
47
34
|
.describe("Who put it there, which is the question somebody is really asking: mine, my agent's, or the box's own."),
|
|
48
|
-
//
|
|
35
|
+
// Resolved via /proc/*/fd matching the socket's inode.
|
|
49
36
|
pid: z.number().optional().describe("The process holding it. Absent when nothing could be matched to the socket."),
|
|
50
|
-
//
|
|
51
|
-
//
|
|
52
|
-
// infrastructure the pid walk can't reach ("Docker embedded DNS"). Absent only when wholly unattributable.
|
|
37
|
+
// Process argv joined with spaces, falling back to the kernel `comm` name, or a synthesized name when the pid walk
|
|
38
|
+
// can't reach it.
|
|
53
39
|
command: z.string().optional().describe("The command behind it, as it was run. Absent only when nothing could be attributed at all."),
|
|
54
|
-
// The process working directory (how the UI attributes a port to a repo).
|
|
55
40
|
cwd: z.string().optional().describe("Where it is running from, which is how a port gets attributed to a repository."),
|
|
56
|
-
//
|
|
57
|
-
// nothing in its ancestry is a pane (a daemon-managed runtime, a published container's docker-proxy), which
|
|
58
|
-
// is the honest "you cannot reach this from here" rather than a terminal that would open onto nothing.
|
|
41
|
+
// Absent for daemon-managed runtimes and published container ports, which have no pane to open.
|
|
59
42
|
session: z
|
|
60
43
|
.string()
|
|
61
44
|
.optional()
|
|
@@ -63,7 +46,7 @@ export const PortSummarySchema = z.object({
|
|
|
63
46
|
'The terminal it came from, to watch it in or stop it from. Absent when nothing in its ancestry is one, which is the honest "you cannot reach this from here".',
|
|
64
47
|
),
|
|
65
48
|
forwarded: z.boolean().describe("Whether it is currently reachable from outside."),
|
|
66
|
-
// https://port-<slot>-<sandboxId>.<zone
|
|
49
|
+
// `https://port-<slot>-<sandboxId>.<zone>`.
|
|
67
50
|
previewUrl: z.string().optional().describe("Where to open it. Present only while forwarded, and only on a sandbox that has an outside address."),
|
|
68
51
|
});
|
|
69
52
|
export type PortSummary = z.infer<typeof PortSummarySchema>;
|
|
@@ -74,7 +57,6 @@ export const PortsListSchema = z.object({
|
|
|
74
57
|
});
|
|
75
58
|
export type PortsList = z.infer<typeof PortsListSchema>;
|
|
76
59
|
export const PortParamSchema = z.object({ port: z.number().int().min(1).max(65535).describe("Which port.") });
|
|
77
|
-
// `previewUrl` is absent on a loopback/no-tunnel sandbox, the slot is mapped, but no public hostname exists.
|
|
78
60
|
export const PortForwardResultSchema = z.object({
|
|
79
61
|
previewUrl: z
|
|
80
62
|
.string()
|