@intentic/sandbox-contract 1.248.0 → 1.250.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 +6 -0
- package/dist/contracts/skills.contract.d.ts.map +1 -1
- package/dist/contracts/skills.contract.js +13 -4
- 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 +429 -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/{model-order.js → models/model-order.js} +2 -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 +92 -0
- package/dist/schemas/devices.d.ts.map +1 -1
- package/dist/schemas/devices.js +12 -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 +11 -9
- package/dist/schemas/settings.d.ts.map +1 -1
- package/dist/schemas/settings.js +22 -7
- 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 +21 -19
- 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} +54 -40
- package/src/models/model-order.ts +171 -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 +103 -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 +182 -602
- 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 +63 -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-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
package/src/schemas/usage.ts
CHANGED
|
@@ -1,79 +1,44 @@
|
|
|
1
|
-
//
|
|
2
|
-
// usage: per-account token/cost totals
|
|
1
|
+
// Durable spend ledger: per-account token and cost totals.
|
|
3
2
|
import { z } from "zod";
|
|
4
|
-
// One row per attributed turn, appended at turn end and
|
|
5
|
-
//
|
|
6
|
-
//, worse for a cost readout, the totals SHRINK as newer turns evict older ones. The ledger keeps the raw
|
|
7
|
-
// per-turn facts and the rollup projects them on read, so a new grouping (by day, by model, by conversation)
|
|
8
|
-
// needs no new storage and no migration.
|
|
3
|
+
// One row per attributed turn, appended at turn end and never pruned, unlike the activity log which shrinks as it
|
|
4
|
+
// prunes. Rollups project this on read, so a new grouping needs no new storage.
|
|
9
5
|
export const UsageTurnSchema = z.object({
|
|
10
|
-
// Epoch ms
|
|
11
|
-
// already on disk.
|
|
6
|
+
// Epoch ms when the turn ended; kept alongside `day` so a timezone-aware rollup needs no data migration.
|
|
12
7
|
at: z.number().describe("When the turn ended, in milliseconds."),
|
|
13
|
-
//
|
|
8
|
+
// UTC calendar day (YYYY-MM-DD) `at` fell in, precomputed so rollups skip timezone arithmetic.
|
|
14
9
|
day: z.string().describe("The day it fell in, as YYYY-MM-DD in UTC, worked out once so nothing downstream has to do timezone arithmetic."),
|
|
15
10
|
provider: z.string().describe("Which model provider served it."),
|
|
16
|
-
// Absent on an env-token turn, which has no account to attribute to
|
|
11
|
+
// Absent on an env-token turn, which has no account to attribute to.
|
|
17
12
|
account: z.string().optional().describe("Which account paid. Absent for a turn run on a plain key, which belongs to no account."),
|
|
18
|
-
// The model
|
|
19
|
-
// when the provider's own subscription default served it without the daemon naming one.
|
|
13
|
+
// The model that actually ran, past the pick and every default; absent only when an unnamed default served it.
|
|
20
14
|
model: z
|
|
21
15
|
.string()
|
|
22
16
|
.optional()
|
|
23
17
|
.describe(
|
|
24
18
|
"The model that actually ran, past whatever was asked for and every default. Absent only when the provider's own default served it without being named.",
|
|
25
19
|
),
|
|
26
|
-
|
|
27
|
-
* surprise is then a diff on one row rather than an investigation through the routing code.
|
|
28
|
-
*
|
|
29
|
-
* The gap between the two is real and was unreadable. A pick is resolved past the tier judge's downgrade,
|
|
30
|
-
* a provider's own subscription default, a catalog validity check that silently substitutes (Grok rejects
|
|
31
|
-
* a retired models.dev id, so an invalid pin becomes the catalog default), and CLIProxyAPI's own choice on
|
|
32
|
-
* a routed turn. Every one of those is a legitimate substitution and none of them was recorded, so "I
|
|
33
|
-
* chose one model and got another's error" could only be answered by reading four resolution paths and
|
|
34
|
-
* guessing which had fired.
|
|
35
|
-
*
|
|
36
|
-
* Absent ⇒ the client named nothing and asked for the default, which is not the same as asking for what it
|
|
37
|
-
* got. Equal to `model` on the overwhelming majority of turns; the rows where they differ are the whole
|
|
38
|
-
* reason this is here. */
|
|
20
|
+
// What was asked for, distinct from `model` (what ran); differs when something resolved or substituted it.
|
|
39
21
|
modelRequested: z
|
|
40
22
|
.string()
|
|
41
23
|
.optional()
|
|
42
24
|
.describe("The model that was asked for, when one was named. Differs from `model` when something resolved it."),
|
|
43
25
|
harness: z.string().describe("Which agentic loop it ran on."),
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
* cost less, so "four sessions all broke a minute ago" had no record to read and had to be answered by
|
|
48
|
-
* re-running the destructive act in a live sandbox. The failure was never nowhere: it was in the activity
|
|
49
|
-
* log, which prunes to its most recent entries, so an incident survives only until the feed rolls past it.
|
|
50
|
-
* This log is never pruned, which is the entire difference.
|
|
51
|
-
*
|
|
52
|
-
* "cancelled" is a user pressing Stop, which is not a failure and must never be read as one, the registry
|
|
53
|
-
* learned that lesson already (see the abort branch in streamAgent). "error" is a turn the provider or the
|
|
54
|
-
* request killed. Both still carry whatever they spent before they ended.
|
|
55
|
-
*
|
|
56
|
-
* Absent ⇒ the row predates this being recorded, NOT a turn that succeeded. Readers that count failures
|
|
57
|
-
* must treat absent as unknown, and the experiment readers do exactly that. */
|
|
26
|
+
// cancelled: the user pressed Stop, not a failure.
|
|
27
|
+
// error: the provider or request killed the turn.
|
|
28
|
+
// Absent means the row predates recording, not that the turn succeeded.
|
|
58
29
|
outcome: z.enum(["ok", "error", "cancelled"]).optional().describe("How it ended: finished, failed, or was stopped by the user."),
|
|
59
|
-
// The failing frame's code
|
|
60
|
-
// Present only alongside outcome "error", and absent even then for a failure that named no code, which is
|
|
61
|
-
// itself the interesting case: an unclassified failure is one nothing downstream knows how to handle.
|
|
30
|
+
// The failing frame's code (e.g. rate_limit, provider-outage); absent even on error means unclassified.
|
|
62
31
|
errorCode: z.string().optional().describe("The failure's code, when it had one."),
|
|
63
|
-
// The failing frame's own sentence, capped at ERROR_MESSAGE_CHARS.
|
|
64
|
-
// provider's wording is routinely the only thing that distinguishes two failures sharing one code, and
|
|
65
|
-
// uncapped it would let one bad provider message dominate a file that must stay cheap to read whole.
|
|
32
|
+
// The failing frame's own sentence, capped at ERROR_MESSAGE_CHARS.
|
|
66
33
|
errorMessage: z.string().optional().describe("What the failure said, trimmed."),
|
|
67
|
-
//
|
|
68
|
-
// one-shot turn that has no conversation identity.
|
|
34
|
+
// Which conversation this turn belonged to; absent only for an internal one-shot with no conversation.
|
|
69
35
|
conversationId: z
|
|
70
36
|
.string()
|
|
71
37
|
.optional()
|
|
72
38
|
.describe(
|
|
73
39
|
"Which conversation it belonged to, so spending can be traced to a card. Absent only for an internal one-off with no conversation at all.",
|
|
74
40
|
),
|
|
75
|
-
// The provider's own
|
|
76
|
-
// and cost stay comparable across providers. 1 when the provider reported none.
|
|
41
|
+
// The provider's own count for the request, since one exchange can be several; 1 when unreported.
|
|
77
42
|
turns: z
|
|
78
43
|
.number()
|
|
79
44
|
.describe("The provider's own count for the request, since one exchange can be several under the hood. One when it reported none."),
|
|
@@ -83,208 +48,56 @@ export const UsageTurnSchema = z.object({
|
|
|
83
48
|
cacheCreationTokens: z.number().describe("Tokens written to cache, which cost more up front and less afterwards."),
|
|
84
49
|
costUsd: z.number().describe("What it cost, in dollars."),
|
|
85
50
|
durationMs: z.number().describe("How long it took, in milliseconds."),
|
|
86
|
-
|
|
87
|
-
* (settings.iqSearchHoldout). Stable for every turn in one conversation: the treatment is instruction
|
|
88
|
-
* loaded into a provider session, so flipping it per turn would call a remembered treatment a control.
|
|
89
|
-
* Absent ⇒ measurement is off; true/false ⇒ taught/cold. */
|
|
51
|
+
// Arm of the search-teaching experiment; stable per conversation. Absent means unmeasured.
|
|
90
52
|
iqSearchArm: z.boolean().optional(),
|
|
91
|
-
// Hash of the plugin nudge
|
|
92
|
-
// both sides of one treatment revision together and exclude older wording after an upgrade.
|
|
53
|
+
// Hash of the plugin nudge and skill body for this arm; recorded on control turns too, for report pairing.
|
|
93
54
|
iqSearchCohort: z.string().optional(),
|
|
94
|
-
|
|
95
|
-
* CLI searches alike (isSearchCall owns the rule; `iq q` is Bash and would otherwise not be counted at all).
|
|
96
|
-
* What the search teaching is judged on.
|
|
97
|
-
*
|
|
98
|
-
* COST PER TURN CANNOT SERVE: cost is a whole turn's worth of work, a search mechanism touches one part of
|
|
99
|
-
* it, and the part lives inside the noise of the rest, exactly the shape that made output tokens unable to
|
|
100
|
-
* see the steer. Nine days of a since-removed retrieval experiment proved it with an interval from −2.9% to
|
|
101
|
-
* +56.9%, driven entirely by which arm had drawn the bigger jobs.
|
|
102
|
-
*
|
|
103
|
-
* Searches are what the mechanism acts on directly. Turns that never search stay in the population at zero
|
|
104
|
-
* rather than being filtered out, they dilute both arms equally, while selecting on "did it search" would
|
|
105
|
-
* select on the treatment itself.
|
|
106
|
-
*
|
|
107
|
-
* Absent ⇒ the turn predates this being measured; the arm's mean drops it (turn-experiments.ts, the filter
|
|
108
|
-
* inside `conversationExperimentOf`) rather than reading it as a turn that searched nothing. */
|
|
55
|
+
// Every tool call that searched, including CLI searches like `iq q`; absent means unmeasured, not zero.
|
|
109
56
|
searchCalls: z.number().optional(),
|
|
110
|
-
|
|
111
|
-
* that already knows where to look starts working; one that doesn't goes hunting first.
|
|
112
|
-
*
|
|
113
|
-
* The narrower of the two readings and the less confounded: `searchCalls` still grows with the size of the
|
|
114
|
-
* job, while the walk up to the first file is roughly the same act whatever the job turns out to be.
|
|
115
|
-
*
|
|
116
|
-
* A turn that never reads or edits counts all of its searches here, it never arrived, so all of it was
|
|
117
|
-
* orientation. Dropping those instead would select the population by an OUTCOME the treatment moves, which
|
|
118
|
-
* is the one bias an arm-based reading cannot absorb.
|
|
119
|
-
*
|
|
120
|
-
* Absent ⇒ as for `searchCalls`. */
|
|
57
|
+
// Search calls before the first file touch; absent as searchCalls; a turn touching nothing counts them all.
|
|
121
58
|
openingSearches: z.number().optional(),
|
|
122
|
-
|
|
123
|
-
* aimed at the same places (isRootListing owns the rule). What the project map is judged on, and the
|
|
124
|
-
* reason it could not be judged before.
|
|
125
|
-
*
|
|
126
|
-
* `searchCalls` counts a directory listing and a ripgrep as one event, deliberately, so that a taxonomy
|
|
127
|
-
* cannot report whichever spelling of a search the model happened to reach for. That is right for the
|
|
128
|
-
* search teaching and blind to the map: measured over 468 mapped sessions of this workspace against 497
|
|
129
|
-
* unmapped ones, searches before the first file moved +7.6% with a margin of ±17.6pp, while the share of
|
|
130
|
-
* sessions opening with a directory listing fell from 46.3% to 32.1%. The map does not shorten the
|
|
131
|
-
* orientation burst, it changes what the burst is made of, and only this counts the difference.
|
|
132
|
-
*
|
|
133
|
-
* UP TO THE FIRST FILE, exactly like `openingSearches`, which took the corpus to settle. Counted over the
|
|
134
|
-
* whole turn instead, the same sessions give 66.4% against 73.3%, a gap of 6.9pp where the orientation
|
|
135
|
-
* window gives 14.2pp. The dilution is not noise: a turn already at work lists the directory it has
|
|
136
|
-
* narrowed to, and no map could have answered that. The shape of the listing cannot tell the two apart,
|
|
137
|
-
* because it is the same shape; only when it happened can.
|
|
138
|
-
*
|
|
139
|
-
* Absent ⇒ the turn predates this being measured, never a turn that listed nothing. */
|
|
59
|
+
// Directory listings (ls, tree, LS tool) before the turn's first file touch, same window as openingSearches.
|
|
140
60
|
openingListings: z.number().optional(),
|
|
141
|
-
|
|
142
|
-
* the thing it turned out to be looking for. The corpus study this map was designed from measured the
|
|
143
|
-
* same quantity by hand (the workspace's docs/agent-exploration-patterns.md §4: median 4, mean 8.2) and called it the one
|
|
144
|
-
* honest reading of whether orientation got better.
|
|
145
|
-
*
|
|
146
|
-
* IT CAN ONLY BE KNOWN AT THE END, which is why it is recorded here and computed nowhere else: whether a
|
|
147
|
-
* file was the target is a fact about the turn's edits, and the turn has to finish before that is
|
|
148
|
-
* decided. The route keeps the first call index per path and intersects it with the edit ledger.
|
|
149
|
-
*
|
|
150
|
-
* Absent on a turn that edited nothing, which is most short turns, and NOT zero: a turn with no target
|
|
151
|
-
* never reached one, and averaging that in as "reached it immediately" would report the turns that did
|
|
152
|
-
* no work as the best targeted. That absence costs the reading three quarters of the population, so it
|
|
153
|
-
* is a metric to accumulate for months rather than a gate to wait on. */
|
|
61
|
+
// Tool calls before the turn first touched a file it later edited; absent (not zero) if it edited nothing.
|
|
154
62
|
callsBeforeTarget: z.number().optional(),
|
|
155
|
-
|
|
156
|
-
* many characters the note actually cost when it was sent.
|
|
157
|
-
*
|
|
158
|
-
* CONVERSATION-STABLE, and for a plainer reason than the search teaching's: the map is sent once, on the
|
|
159
|
-
* opening message, so every later turn of a mapped conversation is a turn whose transcript holds a map.
|
|
160
|
-
* A per-turn flip would label eleven treated turns as controls.
|
|
161
|
-
*
|
|
162
|
-
* `mapChars` rather than a token estimate, because characters are what the renderer's budget is in
|
|
163
|
-
* (workspace-map.ts caps the note at 2,800) and a tokenizer's answer would vary by model. Present only on
|
|
164
|
-
* the turn that actually sent one, so the ledger says what the feature costs instead of assuming it: the
|
|
165
|
-
* median note over this workspace's own corpus is 795 characters against a ceiling of 2,800.
|
|
166
|
-
*
|
|
167
|
-
* Absent ⇒ no measurement (the holdout is zero, or the row predates it); true/false ⇒ mapped/unmapped. */
|
|
63
|
+
// Arm of the project-map experiment, stable per conversation; mapChars is the note's length when sent.
|
|
168
64
|
mapArm: z.boolean().optional(),
|
|
169
65
|
mapChars: z.number().optional(),
|
|
170
|
-
|
|
171
|
-
* one row instead of inferred from the rows around it.
|
|
172
|
-
*
|
|
173
|
-
* The inference it replaces is wrong at exactly one place and it is the place that matters: a reader
|
|
174
|
-
* windowed to the last seven days would take each conversation's earliest row IN THE WINDOW as its
|
|
175
|
-
* opening turn, so every conversation that started the week before would contribute a mid-conversation
|
|
176
|
-
* turn to a reading about first turns. The project map is sent on turn zero and nowhere else, so that
|
|
177
|
-
* misreading is not an edge case for it, it is the measurement.
|
|
178
|
-
*
|
|
179
|
-
* Absent ⇒ the row predates this, or the turn belonged to no conversation at all. */
|
|
66
|
+
// Zero-based turn count in its conversation; 0 marks the opening turn. Absent means unmeasured.
|
|
180
67
|
turnIndex: z.number().optional(),
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
* still wrote the same word over a turn that proved its work and a turn that went quiet halfway through its
|
|
188
|
-
* own checklist. The daemon was computing the difference and discarding it at turn end.
|
|
189
|
-
*
|
|
190
|
-
* NO SINGLE STOP-REASON WORD IS STORED, deliberately: these are the facts, and which of the five modes they
|
|
191
|
-
* add up to is a rule that will get better. A word written down now would freeze today's rule into rows
|
|
192
|
-
* that outlive it and cannot be re-read under the next one, the same reason `tierRouted` is recorded beside
|
|
193
|
-
* `tierScore` instead of being derived from it once and forgotten.
|
|
194
|
-
*
|
|
195
|
-
* `verification` is the four-state VerificationState the child roster already speaks (agent-verification.ts):
|
|
196
|
-
* "verified" = a check passed AFTER the last code edit, "failing" = the last one after it did not,
|
|
197
|
-
* "unproven" = nothing ran, "no-code" = nothing a check could speak to was edited. Folded from this turn's
|
|
198
|
-
* own tool-call frames, subagents' included, so a Codex turn is judged exactly as a Claude one is. Absent ⇒
|
|
199
|
-
* the row predates this, NOT a turn nothing was known about.
|
|
200
|
-
*
|
|
201
|
-
* `check` is the command that SPOKE, the one that cleared the work or the one that broke, capped. It is
|
|
202
|
-
* what keeps "verified" auditable: a passing `vitest run one.test.ts` is evidence about one file and must
|
|
203
|
-
* never read as the repo being green, and only the command itself shows which was which.
|
|
204
|
-
*
|
|
205
|
-
* `filesEdited` counts every file written, prose included, where `verification` speaks only about code. The
|
|
206
|
-
* pair is the point: `{ verification: "no-code", filesEdited: 3 }` is a documentation turn, and
|
|
207
|
-
* `{ verification: "unproven", filesEdited: 0 }` cannot happen. */
|
|
68
|
+
// outcome alone can't tell a turn that finished from one that stopped talking; these fields carry the difference
|
|
69
|
+
// instead of a single stop-reason word.
|
|
70
|
+
// verification: verified/failing (check passed/failed after the last edit), unproven (nothing ran), no-code
|
|
71
|
+
// (nothing editable changed). Folded from tool-call frames, subagents included.
|
|
72
|
+
// check: the command that spoke, so a targeted test is never read as the whole suite.
|
|
73
|
+
// filesEdited: every file written, prose included; verification speaks only about code.
|
|
208
74
|
verification: z.enum(["verified", "unproven", "failing", "no-code"]).optional(),
|
|
209
75
|
check: z.string().optional(),
|
|
210
76
|
filesEdited: z.number().optional(),
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
*
|
|
214
|
-
* This is the honest reading of "the model stopped emitting": a turn that ended `ok` with items still open
|
|
215
|
-
* abandoned a plan it wrote itself, which is a different event from a turn that finished one, and the two
|
|
216
|
-
* were indistinguishable in every record this daemon kept. Absent ⇒ the turn kept no checklist at all,
|
|
217
|
-
* which is most short turns and is not the same as an empty one. */
|
|
77
|
+
// The agent's own checklist at turn end (Task tool frames); checklistOpen is pending plus in-progress. Absent means
|
|
78
|
+
// the turn kept no checklist at all.
|
|
218
79
|
checklistTotal: z.number().optional(),
|
|
219
80
|
checklistOpen: z.number().optional(),
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
* Compaction is the least observable thing a harness does to a turn: a poorly timed one discards the
|
|
223
|
-
* partial result the turn still needed, and the only trace was a frame streamed to whoever was watching.
|
|
224
|
-
* Recorded here, "did compaction hurt" becomes a question this ledger can answer, by joining these against
|
|
225
|
-
* `verification` and `outcome` over months of real turns, which is a number nobody currently has.
|
|
226
|
-
*
|
|
227
|
-
* `contextTokens`/`contextWindow` are the last `context_usage` frame, absent for a runtime that reports
|
|
228
|
-
* none. Both, rather than a percentage: the window is a per-model constant that moves between model
|
|
229
|
-
* versions, and a fraction computed today cannot be recomputed tomorrow from what it threw away.
|
|
230
|
-
*
|
|
231
|
-
* Together they carry ~90 bytes onto a ~250-byte row. A heavy day is ~100 turns, so a year of hard use goes
|
|
232
|
-
* from ~9 MB to ~12 MB, which is the price of a log that can answer why a turn ended rather than only what
|
|
233
|
-
* it cost. */
|
|
81
|
+
// compactions counts context compactions this turn. contextTokens/contextWindow are the last context_usage frame,
|
|
82
|
+
// absent if unreported; raw numbers, not a percentage, since window size varies by model.
|
|
234
83
|
compactions: z.number().optional(),
|
|
235
84
|
contextTokens: z.number().optional(),
|
|
236
85
|
contextWindow: z.number().optional(),
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
*
|
|
240
|
-
* They live on the SPEND ledger rather than in a log of their own because the question they exist to answer
|
|
241
|
-
* is a question about money: what did the turns we would have downgraded actually cost, and what did the
|
|
242
|
-
* ones we did downgrade cost instead. A separate log would have to be joined back to this one on every
|
|
243
|
-
* read, and the join key (a turn) is already the row.
|
|
244
|
-
*
|
|
245
|
-
* `tierScore` is 0..1 from judgeComplexity, comparable against FAST_CEILING, which is the cutoff it was
|
|
246
|
-
* judged against at the time. Absent ⇒ the judge did not run (settings.autoTier "off", or a row written
|
|
247
|
-
* before this existed), which is NOT the same as a turn that scored zero.
|
|
248
|
-
*
|
|
249
|
-
* `tierRules` is which named features fired, and it is the half that makes the ledger analysable rather
|
|
250
|
-
* than merely tallyable: a score says a threshold was crossed, the rules say which feature is doing the
|
|
251
|
-
* work, and re-fitting the weights needs the second. Bounded by construction, there are ~19 of them.
|
|
252
|
-
*
|
|
253
|
-
* `tierRouted` is whether the turn ACTUALLY ran on the cheap rung. It is not implied by the score: a turn
|
|
254
|
-
* judged fast still runs standard in shadow mode, and still runs standard in `on` mode when the provider
|
|
255
|
-
* publishes nothing cheaper than the user's pick. Reading the score as the decision would report savings
|
|
256
|
-
* that were never made. */
|
|
86
|
+
// tierScore (0..1 from judgeComplexity, vs FAST_CEILING) absent means the judge did not run. tierRules is which
|
|
87
|
+
// named features fired. tierRouted is whether it actually ran on the cheap rung, not implied by the score.
|
|
257
88
|
tierScore: z.number().optional(),
|
|
258
89
|
tierRules: z.array(z.string()).optional(),
|
|
259
90
|
tierRouted: z.boolean().optional(),
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
* `tierScore` stopped being able to answer "was this called simple" the moment the cutoff became the owner's
|
|
263
|
-
* to choose (settings.autoTierEagerness): 0.35 is standard on the middle stop and fast on the eager one, and
|
|
264
|
-
* a fast verdict also requires a positively-easy signal that no score can express. So the answer is written
|
|
265
|
-
* down rather than re-derived, and the ceiling goes with it because a refit reading a column of bare scores
|
|
266
|
-
* could not otherwise tell two rows apart.
|
|
267
|
-
*
|
|
268
|
-
* Absent on rows written before the knob existed, which were all judged at the `balanced` cutoff — which is
|
|
269
|
-
* exactly what a reader falls back to (FAST_CEILING), so old and new rows stay one population. */
|
|
91
|
+
// The verdict and the cutoff it was judged against (settings.autoTierEagerness); absent rows predate the knob and
|
|
92
|
+
// fall back to FAST_CEILING.
|
|
270
93
|
tierFast: z.boolean().optional(),
|
|
271
94
|
tierCeiling: z.number().optional(),
|
|
272
|
-
|
|
273
|
-
* than folded into `tierRouted: false` because it is the strongest calibration label this ledger ever gets,
|
|
274
|
-
* a person looking at this very conversation deciding the cheap rung was not to be trusted with it, and the
|
|
275
|
-
* refit (docs/model-routing-design.md §4) needs it kept apart from "nothing cheaper was published". Absent ⇒
|
|
276
|
-
* no veto, which is every row written before the control existed and most rows after. */
|
|
95
|
+
// The turn carried AgentTurn.tierHold: the user vetoed a fast verdict. Absent means no veto.
|
|
277
96
|
tierDenied: z.boolean().optional(),
|
|
278
97
|
});
|
|
279
98
|
export type UsageTurn = z.infer<typeof UsageTurnSchema>;
|
|
280
|
-
//
|
|
281
|
-
//
|
|
282
|
-
// well under a MB over the tunnel. Every panel (spend per day, cost by model, cost by agent, cache hit rate) is
|
|
283
|
-
// a projection of these.
|
|
284
|
-
// The conversation is in the KEY, not merely along for the ride, because cost-by-agent has to answer within the
|
|
285
|
-
// same window as every other panel on the screen. The fleet registry also carries a per-agent total, but only a
|
|
286
|
-
// cumulative, all-time one, reading it beside a "last 7 days" filter would print an all-time number under a
|
|
287
|
-
// windowed heading, which is the shrinking-totals bug wearing a different hat.
|
|
99
|
+
// Ledger grouped by day, provider, account, model, harness and conversation, one panel's worth of rows per active day.
|
|
100
|
+
// Conversation is part of the key so cost-by-agent can be windowed like every other panel.
|
|
288
101
|
export const UsageRollupRowSchema = z.object({
|
|
289
102
|
day: z.string().describe("The day, as YYYY-MM-DD in UTC."),
|
|
290
103
|
provider: z.string().describe("Which model provider."),
|
|
@@ -301,9 +114,8 @@ export const UsageRollupRowSchema = z.object({
|
|
|
301
114
|
durationMs: z.number().describe("Time spent, in milliseconds."),
|
|
302
115
|
});
|
|
303
116
|
export type UsageRollupRow = z.infer<typeof UsageRollupRowSchema>;
|
|
304
|
-
// Inclusive UTC day bounds (YYYY-MM-DD)
|
|
305
|
-
//
|
|
306
|
-
// with the same calendar.
|
|
117
|
+
// Inclusive UTC day bounds (YYYY-MM-DD); both absent means the whole ledger. Shared by every windowed ledger read, so
|
|
118
|
+
// filters stay in step.
|
|
307
119
|
export const DayWindowQuerySchema = z.object({
|
|
308
120
|
from: z.string().optional().describe("First day to include, as YYYY-MM-DD in UTC. Leave it out for everything up to the end day."),
|
|
309
121
|
to: z
|
|
@@ -321,9 +133,8 @@ export const UsageRollupSchema = z.object({
|
|
|
321
133
|
"Spending grouped by day, provider, account, model and conversation. Everything a cost screen shows is a rearrangement of these rows, which is why there is no second call for any of it.",
|
|
322
134
|
),
|
|
323
135
|
});
|
|
324
|
-
//
|
|
325
|
-
//
|
|
326
|
-
// a blank id, an unattributed turn belongs to no account's total.
|
|
136
|
+
// Account picker's headroom readout, folded from the ledger all-time (not a windowed log), grouped by provider and
|
|
137
|
+
// account. Env-token turns are excluded, not pooled under a blank id.
|
|
327
138
|
export const UsageAccountSchema = z.object({
|
|
328
139
|
provider: z.string(),
|
|
329
140
|
account: z.string(),
|
|
@@ -3,14 +3,11 @@ import { CapabilitiesListSchema } from "./capabilities.js";
|
|
|
3
3
|
import { SandboxSettingsSchema } from "./settings.js";
|
|
4
4
|
import { IpsecVpnConfigSchema } from "./vpn.js";
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
* tests pin the property that makes that survivable: an absent key is that flag's default, not a parse
|
|
9
|
-
* failure, because failing instead reaches the user as a settings page whose switches silently do nothing. */
|
|
6
|
+
// Settings cross a version seam: the browser can be newer than the daemon. An absent key must parse as that field's
|
|
7
|
+
// default, never a failure.
|
|
10
8
|
|
|
11
9
|
test("a payload from a build that predates a toggle parses, with the new toggle at its default", () => {
|
|
12
|
-
// What a
|
|
13
|
-
// nothing for the one added after it shipped.
|
|
10
|
+
// What a pre-output-cleaner-switch daemon sent: every key it knew, nothing for the one added after.
|
|
14
11
|
const older = {
|
|
15
12
|
stableSystemPrompt: false,
|
|
16
13
|
skills: [],
|
|
@@ -19,20 +16,10 @@ test("a payload from a build that predates a toggle parses, with the new toggle
|
|
|
19
16
|
outputCleaners: "-cap",
|
|
20
17
|
outputHoldout: 0.1,
|
|
21
18
|
};
|
|
22
|
-
//
|
|
23
|
-
// setting the product gained land as a failure in this file: a diff that only ever said "the list moved",
|
|
24
|
-
// never "tolerance broke", and whose fix was always to paste the new default in. What this test is about
|
|
25
|
-
// is the seam: what the old build sent survives verbatim, and what it never heard of arrives at default.
|
|
19
|
+
// Defaults come from the schema itself, not copied here, so a new setting doesn't fail this test.
|
|
26
20
|
expect(SandboxSettingsSchema.parse(older)).toEqual({ ...SandboxSettingsSchema.parse({}), ...older });
|
|
27
21
|
});
|
|
28
22
|
|
|
29
|
-
/* The invariant a fresh sandbox depends on: NO field is required. A settings object is written for the first
|
|
30
|
-
* time only when the user changes something, so until then the daemon parses `{}`: one field without a
|
|
31
|
-
* `.default()` turns that into a throw at boot, and the version tolerance above is built on the same property.
|
|
32
|
-
*
|
|
33
|
-
* Asserted by shape rather than by value: what each default IS belongs next to the field in settings.ts, where
|
|
34
|
-
* the reason it holds is written down. A second copy here proved nothing the schema didn't already say and
|
|
35
|
-
* failed on every field the product added. */
|
|
36
23
|
test("no field is required: a workspace that has never written settings parses", () => {
|
|
37
24
|
const defaults = SandboxSettingsSchema.parse({});
|
|
38
25
|
expect(Object.keys(defaults).toSorted()).toEqual(Object.keys(SandboxSettingsSchema.shape).toSorted());
|
|
@@ -41,23 +28,19 @@ test("no field is required: a workspace that has never written settings parses",
|
|
|
41
28
|
test("a key of the wrong type is still a parse failure: tolerance is for absence, not for garbage", () => {
|
|
42
29
|
expect(SandboxSettingsSchema.safeParse({ iqSearch: "yes" }).success).toBe(false);
|
|
43
30
|
expect(SandboxSettingsSchema.safeParse({ outputHoldout: 4 }).success).toBe(false);
|
|
44
|
-
// The prompt cap is a real bound, not advice: the text IS the system prompt, and every turn pays for it.
|
|
45
31
|
expect(SandboxSettingsSchema.safeParse({ systemPrompt: "x".repeat(20001) }).success).toBe(false);
|
|
46
32
|
});
|
|
47
33
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
* page down entirely: to hide an advisory badge. */
|
|
34
|
+
// The capability list crosses the same seam; a required key an older daemon omits can take down the whole Capabilities
|
|
35
|
+
// page, not just one switch.
|
|
51
36
|
|
|
52
37
|
test("a capability list from a daemon that predates recommendations parses, with none recommended", () => {
|
|
53
38
|
const older = { capabilities: [{ id: "github", kind: "cli", status: { state: "active" }, config: { provider: "github" } }] };
|
|
54
39
|
expect(CapabilitiesListSchema.parse(older).recommendations).toEqual([]);
|
|
55
40
|
});
|
|
56
41
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
* tunnel on the sandbox stops loading, and the error names the file rather than the field), while a default that
|
|
60
|
-
* stopped being 0.0.0.0/0 would silently narrow tunnels that reach those networks today. */
|
|
42
|
+
// routedNetworks decides split vs full tunnel; an unchecked bad value makes charon reject the whole config, not just
|
|
43
|
+
// this field. Default must stay 0.0.0.0/0.
|
|
61
44
|
const ipsec = { provider: "ipsec", server: "gw.example.com", presharedKey: "group-secret" };
|
|
62
45
|
|
|
63
46
|
test("an ipsec tunnel is a full tunnel unless it says otherwise", () => {
|
|
@@ -67,7 +50,7 @@ test("an ipsec tunnel is a full tunnel unless it says otherwise", () => {
|
|
|
67
50
|
test("routed networks take a CIDR list and reject what charon could not load", () => {
|
|
68
51
|
expect(IpsecVpnConfigSchema.parse({ ...ipsec, routedNetworks: "10.0.0.0/8, 192.168.0.0/16" }).routedNetworks).toBe("10.0.0.0/8, 192.168.0.0/16");
|
|
69
52
|
expect(IpsecVpnConfigSchema.parse({ ...ipsec, routedNetworks: "fd00::/8" }).routedNetworks).toBe("fd00::/8");
|
|
70
|
-
// A bare host address is the
|
|
53
|
+
// A bare host address (no prefix) is the common mistake strongSwan rejects.
|
|
71
54
|
expect(IpsecVpnConfigSchema.safeParse({ ...ipsec, routedNetworks: "192.168.0.168" }).success).toBe(false);
|
|
72
55
|
expect(IpsecVpnConfigSchema.safeParse({ ...ipsec, routedNetworks: "10.0.0.0/8,nonsense" }).success).toBe(false);
|
|
73
56
|
expect(IpsecVpnConfigSchema.safeParse({ ...ipsec, routedNetworks: "" }).success).toBe(false);
|