@intentic/sandbox-contract 1.247.0 → 1.249.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -15
- package/dist/chores/chores.d.ts.map +1 -1
- package/dist/chores/chores.js.map +1 -1
- package/dist/chores/digest.d.ts.map +1 -1
- package/dist/chores/digest.js.map +1 -1
- package/dist/chores/extension-update.d.ts.map +1 -1
- package/dist/chores/extension-update.js.map +1 -1
- package/dist/chores/fix-deps.d.ts.map +1 -1
- package/dist/chores/fix-deps.js.map +1 -1
- package/dist/chores/index.d.ts +2 -2
- package/dist/chores/index.d.ts.map +1 -1
- package/dist/chores/index.js +1 -1
- package/dist/chores/index.js.map +1 -1
- package/dist/chores/probes.d.ts.map +1 -1
- package/dist/chores/probes.js.map +1 -1
- package/dist/chores/prompt.d.ts.map +1 -1
- package/dist/chores/prompt.js.map +1 -1
- package/dist/chores/stack.d.ts.map +1 -1
- package/dist/chores/stack.js.map +1 -1
- package/dist/chores/verdict.d.ts +7 -1
- package/dist/chores/verdict.d.ts.map +1 -1
- package/dist/chores/verdict.js +8 -0
- package/dist/chores/verdict.js.map +1 -1
- package/dist/contracts/accounts.contract.d.ts.map +1 -1
- package/dist/contracts/accounts.contract.js.map +1 -1
- package/dist/contracts/activity.contract.d.ts +1 -0
- package/dist/contracts/activity.contract.d.ts.map +1 -1
- package/dist/contracts/agent.contract.d.ts +13 -205
- package/dist/contracts/agent.contract.d.ts.map +1 -1
- package/dist/contracts/agent.contract.js +2 -1
- package/dist/contracts/agent.contract.js.map +1 -1
- package/dist/contracts/agents.contract.d.ts +228 -54
- package/dist/contracts/agents.contract.d.ts.map +1 -1
- package/dist/contracts/agents.contract.js +11 -2
- package/dist/contracts/agents.contract.js.map +1 -1
- package/dist/contracts/automations.contract.d.ts +35 -17
- package/dist/contracts/automations.contract.d.ts.map +1 -1
- package/dist/contracts/automations.contract.js +10 -1
- package/dist/contracts/automations.contract.js.map +1 -1
- package/dist/contracts/capabilities.contract.d.ts +0 -12
- package/dist/contracts/capabilities.contract.d.ts.map +1 -1
- package/dist/contracts/capabilities.contract.js +1 -1
- package/dist/contracts/capabilities.contract.js.map +1 -1
- package/dist/contracts/chores.contract.d.ts.map +1 -1
- package/dist/contracts/chores.contract.js.map +1 -1
- package/dist/contracts/ci.contract.d.ts +9 -0
- package/dist/contracts/ci.contract.d.ts.map +1 -1
- package/dist/contracts/endpoints.contract.d.ts.map +1 -1
- package/dist/contracts/endpoints.contract.js.map +1 -1
- package/dist/contracts/exit.contract.d.ts.map +1 -1
- package/dist/contracts/exit.contract.js +1 -1
- package/dist/contracts/exit.contract.js.map +1 -1
- package/dist/contracts/extensions.contract.d.ts.map +1 -1
- package/dist/contracts/extensions.contract.js.map +1 -1
- package/dist/contracts/git.contract.d.ts +45 -6
- package/dist/contracts/git.contract.d.ts.map +1 -1
- package/dist/contracts/git.contract.js +9 -9
- package/dist/contracts/git.contract.js.map +1 -1
- package/dist/contracts/host.contract.d.ts +2 -0
- package/dist/contracts/host.contract.d.ts.map +1 -1
- package/dist/contracts/host.contract.js.map +1 -1
- package/dist/contracts/intentic.contract.js +1 -1
- package/dist/contracts/intentic.contract.js.map +1 -1
- package/dist/contracts/logs.contract.d.ts.map +1 -1
- package/dist/contracts/logs.contract.js.map +1 -1
- package/dist/contracts/loops.contract.d.ts.map +1 -1
- package/dist/contracts/loops.contract.js.map +1 -1
- package/dist/contracts/personas.contract.d.ts +39 -4
- package/dist/contracts/personas.contract.d.ts.map +1 -1
- package/dist/contracts/personas.contract.js +10 -1
- package/dist/contracts/personas.contract.js.map +1 -1
- package/dist/contracts/providers.contract.d.ts.map +1 -1
- package/dist/contracts/providers.contract.js.map +1 -1
- package/dist/contracts/runner.contract.d.ts +6 -80
- package/dist/contracts/runner.contract.d.ts.map +1 -1
- package/dist/contracts/runner.contract.js +2 -2
- package/dist/contracts/runner.contract.js.map +1 -1
- package/dist/contracts/safety.contract.d.ts.map +1 -1
- package/dist/contracts/safety.contract.js +1 -1
- package/dist/contracts/safety.contract.js.map +1 -1
- package/dist/contracts/secrets.contract.d.ts.map +1 -1
- package/dist/contracts/secrets.contract.js.map +1 -1
- package/dist/contracts/sessions.contract.d.ts +2 -41
- package/dist/contracts/sessions.contract.d.ts.map +1 -1
- package/dist/contracts/sessions.contract.js +1 -1
- package/dist/contracts/sessions.contract.js.map +1 -1
- package/dist/contracts/settings.contract.d.ts +10 -10
- package/dist/contracts/settings.contract.d.ts.map +1 -1
- package/dist/contracts/settings.contract.js.map +1 -1
- package/dist/contracts/share.contract.d.ts.map +1 -1
- package/dist/contracts/share.contract.js.map +1 -1
- package/dist/contracts/skills.contract.d.ts.map +1 -1
- package/dist/contracts/skills.contract.js.map +1 -1
- package/dist/contracts/system.contract.d.ts +49 -73
- package/dist/contracts/system.contract.d.ts.map +1 -1
- package/dist/contracts/system.contract.js +12 -2
- package/dist/contracts/system.contract.js.map +1 -1
- package/dist/contracts/usage.contract.d.ts.map +1 -1
- package/dist/contracts/usage.contract.js.map +1 -1
- package/dist/contracts/vpn.contract.d.ts.map +1 -1
- package/dist/contracts/vpn.contract.js +1 -1
- package/dist/contracts/vpn.contract.js.map +1 -1
- package/dist/contracts/webext.contract.d.ts.map +1 -1
- package/dist/contracts/webext.contract.js.map +1 -1
- package/dist/contracts/workflows.contract.d.ts +7 -6
- package/dist/contracts/workflows.contract.d.ts.map +1 -1
- package/dist/contracts/workflows.contract.js +12 -3
- package/dist/contracts/workflows.contract.js.map +1 -1
- package/dist/contracts/workspace.contract.d.ts.map +1 -1
- package/dist/contracts/workspace.contract.js.map +1 -1
- package/dist/events/agent-events.d.ts +1237 -0
- package/dist/events/agent-events.d.ts.map +1 -0
- package/dist/events/agent-events.js +226 -0
- package/dist/events/agent-events.js.map +1 -0
- package/dist/events/cards.d.ts +404 -0
- package/dist/events/cards.d.ts.map +1 -0
- package/dist/events/cards.js +179 -0
- package/dist/events/cards.js.map +1 -0
- package/dist/events/resume.d.ts +23 -0
- package/dist/events/resume.d.ts.map +1 -0
- package/dist/events/resume.js +31 -0
- package/dist/events/resume.js.map +1 -0
- package/dist/events/system-events.d.ts +615 -0
- package/dist/events/system-events.d.ts.map +1 -0
- package/dist/events/system-events.js +64 -0
- package/dist/events/system-events.js.map +1 -0
- package/dist/events/transcript.d.ts +1755 -0
- package/dist/events/transcript.d.ts.map +1 -0
- package/dist/events/transcript.js +205 -0
- package/dist/events/transcript.js.map +1 -0
- package/dist/ids/conversation-ids.d.ts +8 -0
- package/dist/ids/conversation-ids.d.ts.map +1 -0
- package/dist/{conversation-ids.js → ids/conversation-ids.js} +13 -0
- package/dist/ids/conversation-ids.js.map +1 -0
- package/dist/ids/hostnames.d.ts.map +1 -0
- package/dist/ids/hostnames.js.map +1 -0
- package/dist/ids/session-names.d.ts.map +1 -0
- package/dist/ids/session-names.js.map +1 -0
- package/dist/ids/share-paths.d.ts.map +1 -0
- package/dist/ids/share-paths.js.map +1 -0
- package/dist/{tunnel-ids.d.ts → ids/tunnel-ids.d.ts} +1 -0
- package/dist/ids/tunnel-ids.d.ts.map +1 -0
- package/dist/{tunnel-ids.js → ids/tunnel-ids.js} +1 -0
- package/dist/ids/tunnel-ids.js.map +1 -0
- package/dist/index.d.ts +464 -447
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +54 -47
- package/dist/index.js.map +1 -1
- package/dist/{agent-catalog.d.ts → models/agent-catalog.d.ts} +2 -2
- package/dist/models/agent-catalog.d.ts.map +1 -0
- package/dist/models/agent-catalog.js.map +1 -0
- package/dist/models/agent-runtimes.d.ts.map +1 -0
- package/dist/models/agent-runtimes.js.map +1 -0
- package/dist/{fast-tier.d.ts → models/fast-tier.d.ts} +1 -1
- package/dist/models/fast-tier.d.ts.map +1 -0
- package/dist/models/fast-tier.js.map +1 -0
- package/dist/models/model-order.d.ts.map +1 -0
- package/dist/models/model-order.js.map +1 -0
- package/dist/{model-pins.d.ts → models/model-pins.d.ts} +2 -4
- package/dist/models/model-pins.d.ts.map +1 -0
- package/dist/models/model-pins.js +22 -0
- package/dist/models/model-pins.js.map +1 -0
- package/dist/{model-roles.d.ts → models/model-roles.d.ts} +25 -30
- package/dist/models/model-roles.d.ts.map +1 -0
- package/dist/{model-roles.js → models/model-roles.js} +30 -27
- package/dist/models/model-roles.js.map +1 -0
- package/dist/{plan-pools.d.ts → models/plan-pools.d.ts} +1 -1
- package/dist/models/plan-pools.d.ts.map +1 -0
- package/dist/models/plan-pools.js.map +1 -0
- package/dist/models/prompt-complexity.d.ts.map +1 -0
- package/dist/models/prompt-complexity.js.map +1 -0
- package/dist/models/provider-specs.d.ts.map +1 -0
- package/dist/models/provider-specs.js.map +1 -0
- package/dist/policy/approvals-execution.d.ts.map +1 -0
- package/dist/policy/approvals-execution.js.map +1 -0
- package/dist/{batch-runs.d.ts → policy/batch-runs.d.ts} +5 -1
- package/dist/policy/batch-runs.d.ts.map +1 -0
- package/dist/{batch-runs.js → policy/batch-runs.js} +10 -7
- package/dist/policy/batch-runs.js.map +1 -0
- package/dist/policy/capability-env.d.ts.map +1 -0
- package/dist/policy/capability-env.js.map +1 -0
- package/dist/policy/capability-secrets.d.ts.map +1 -0
- package/dist/policy/capability-secrets.js.map +1 -0
- package/dist/{card-status.d.ts → policy/card-status.d.ts} +2 -2
- package/dist/policy/card-status.d.ts.map +1 -0
- package/dist/{card-status.js → policy/card-status.js} +1 -5
- package/dist/policy/card-status.js.map +1 -0
- package/dist/{command-classes.d.ts → policy/command-classes.d.ts} +6 -2
- package/dist/policy/command-classes.d.ts.map +1 -0
- package/dist/{command-classes.js → policy/command-classes.js} +48 -11
- package/dist/policy/command-classes.js.map +1 -0
- package/dist/{command-run.d.ts → policy/command-run.d.ts} +1 -1
- package/dist/policy/command-run.d.ts.map +1 -0
- package/dist/policy/command-run.js.map +1 -0
- package/dist/policy/control-scopes.d.ts +16 -0
- package/dist/policy/control-scopes.d.ts.map +1 -0
- package/dist/policy/control-scopes.js +26 -0
- package/dist/policy/control-scopes.js.map +1 -0
- package/dist/policy/credential-material.d.ts.map +1 -0
- package/dist/policy/credential-material.js.map +1 -0
- package/dist/policy/needs-action.d.ts.map +1 -0
- package/dist/policy/needs-action.js.map +1 -0
- package/dist/policy/output-fields.d.ts.map +1 -0
- package/dist/policy/output-fields.js.map +1 -0
- package/dist/policy/overlay-lint.d.ts.map +1 -0
- package/dist/policy/overlay-lint.js.map +1 -0
- package/dist/policy/owner-ticket.d.ts.map +1 -0
- package/dist/{owner-ticket.js → policy/owner-ticket.js} +1 -1
- package/dist/policy/owner-ticket.js.map +1 -0
- package/dist/{safety-policy.d.ts → policy/safety-policy.d.ts} +6 -5
- package/dist/policy/safety-policy.d.ts.map +1 -0
- package/dist/{safety-policy.js → policy/safety-policy.js} +12 -12
- package/dist/policy/safety-policy.js.map +1 -0
- package/dist/policy/search-globs.d.ts.map +1 -0
- package/dist/policy/search-globs.js.map +1 -0
- package/dist/protocol/container-requirements.d.ts +20 -0
- package/dist/protocol/container-requirements.d.ts.map +1 -0
- package/dist/protocol/container-requirements.js +23 -0
- package/dist/protocol/container-requirements.js.map +1 -0
- package/dist/{host-protocol.d.ts → protocol/host-protocol.d.ts} +1 -0
- package/dist/protocol/host-protocol.d.ts.map +1 -0
- package/dist/{host-protocol.js → protocol/host-protocol.js} +1 -0
- package/dist/protocol/host-protocol.js.map +1 -0
- package/dist/protocol/ingress-contract.d.ts.map +1 -0
- package/dist/{ingress-contract.js → protocol/ingress-contract.js} +1 -1
- package/dist/protocol/ingress-contract.js.map +1 -0
- package/dist/protocol/ingress-protocol.d.ts.map +1 -0
- package/dist/protocol/ingress-protocol.js.map +1 -0
- package/dist/protocol/listener-protocol.d.ts.map +1 -0
- package/dist/{listener-protocol.js → protocol/listener-protocol.js} +1 -1
- package/dist/protocol/listener-protocol.js.map +1 -0
- package/dist/{peer-dial.d.ts → protocol/peer-dial.d.ts} +4 -1
- package/dist/protocol/peer-dial.d.ts.map +1 -0
- package/dist/{peer-dial.js → protocol/peer-dial.js} +51 -10
- package/dist/protocol/peer-dial.js.map +1 -0
- package/dist/protocol/peer-mcp-server.d.ts.map +1 -0
- package/dist/protocol/peer-mcp-server.js.map +1 -0
- package/dist/protocol/request-id.d.ts.map +1 -0
- package/dist/protocol/request-id.js.map +1 -0
- package/dist/protocol/routes.d.ts.map +1 -0
- package/dist/protocol/routes.js.map +1 -0
- package/dist/{runner-protocol.d.ts → protocol/runner-protocol.d.ts} +1 -0
- package/dist/protocol/runner-protocol.d.ts.map +1 -0
- package/dist/{runner-protocol.js → protocol/runner-protocol.js} +2 -1
- package/dist/protocol/runner-protocol.js.map +1 -0
- package/dist/protocol/sse.d.ts.map +1 -0
- package/dist/protocol/sse.js.map +1 -0
- package/dist/{terminal-protocol.d.ts → protocol/terminal-protocol.d.ts} +1 -3
- package/dist/protocol/terminal-protocol.d.ts.map +1 -0
- package/dist/protocol/terminal-protocol.js.map +1 -0
- package/dist/protocol/webext-links.d.ts.map +1 -0
- package/dist/protocol/webext-links.js.map +1 -0
- package/dist/{webext-protocol.d.ts → protocol/webext-protocol.d.ts} +1 -0
- package/dist/protocol/webext-protocol.d.ts.map +1 -0
- package/dist/{webext-protocol.js → protocol/webext-protocol.js} +1 -0
- package/dist/protocol/webext-protocol.js.map +1 -0
- package/dist/schemas/activity.d.ts +2 -0
- package/dist/schemas/activity.d.ts.map +1 -1
- package/dist/schemas/activity.js +4 -0
- package/dist/schemas/activity.js.map +1 -1
- package/dist/schemas/agent.d.ts +17 -4
- package/dist/schemas/agent.d.ts.map +1 -1
- package/dist/schemas/agent.js +21 -4
- package/dist/schemas/agent.js.map +1 -1
- package/dist/schemas/agents.d.ts +17 -4
- package/dist/schemas/agents.d.ts.map +1 -1
- package/dist/schemas/agents.js +15 -4
- package/dist/schemas/agents.js.map +1 -1
- package/dist/schemas/approvals.d.ts.map +1 -1
- package/dist/schemas/approvals.js.map +1 -1
- package/dist/schemas/automations.d.ts +54 -28
- package/dist/schemas/automations.d.ts.map +1 -1
- package/dist/schemas/automations.js +26 -8
- package/dist/schemas/automations.js.map +1 -1
- package/dist/schemas/capabilities.d.ts +0 -8
- package/dist/schemas/capabilities.d.ts.map +1 -1
- package/dist/schemas/capabilities.js +0 -4
- package/dist/schemas/capabilities.js.map +1 -1
- package/dist/schemas/ci.d.ts +10 -0
- package/dist/schemas/ci.d.ts.map +1 -1
- package/dist/schemas/ci.js +9 -1
- package/dist/schemas/ci.js.map +1 -1
- package/dist/schemas/codebase-health.d.ts.map +1 -1
- package/dist/schemas/codebase-health.js.map +1 -1
- package/dist/schemas/devices.d.ts +90 -0
- package/dist/schemas/devices.d.ts.map +1 -1
- package/dist/schemas/devices.js +10 -1
- package/dist/schemas/devices.js.map +1 -1
- package/dist/schemas/engines.d.ts.map +1 -1
- package/dist/schemas/engines.js.map +1 -1
- package/dist/schemas/environment.d.ts.map +1 -1
- package/dist/schemas/environment.js.map +1 -1
- package/dist/schemas/exit.d.ts.map +1 -1
- package/dist/schemas/exit.js.map +1 -1
- package/dist/schemas/extension-updates.d.ts.map +1 -1
- package/dist/schemas/extension-updates.js.map +1 -1
- package/dist/schemas/git-history.d.ts.map +1 -1
- package/dist/schemas/git-history.js.map +1 -1
- package/dist/schemas/git.d.ts +80 -16
- package/dist/schemas/git.d.ts.map +1 -1
- package/dist/schemas/git.js +37 -25
- package/dist/schemas/git.js.map +1 -1
- package/dist/schemas/history.d.ts.map +1 -1
- package/dist/schemas/history.js.map +1 -1
- package/dist/schemas/hosts.d.ts.map +1 -1
- package/dist/schemas/hosts.js.map +1 -1
- package/dist/schemas/inventory.d.ts.map +1 -1
- package/dist/schemas/inventory.js.map +1 -1
- package/dist/schemas/issues.d.ts +0 -1
- package/dist/schemas/issues.d.ts.map +1 -1
- package/dist/schemas/issues.js +0 -1
- package/dist/schemas/issues.js.map +1 -1
- package/dist/schemas/logs.d.ts.map +1 -1
- package/dist/schemas/logs.js.map +1 -1
- package/dist/schemas/loops.d.ts.map +1 -1
- package/dist/schemas/loops.js +1 -1
- package/dist/schemas/loops.js.map +1 -1
- package/dist/schemas/maintenance.d.ts.map +1 -1
- package/dist/schemas/maintenance.js.map +1 -1
- package/dist/schemas/marketplace.d.ts +0 -4
- package/dist/schemas/marketplace.d.ts.map +1 -1
- package/dist/schemas/panels.d.ts.map +1 -1
- package/dist/schemas/panels.js.map +1 -1
- package/dist/schemas/personas.d.ts +49 -4
- package/dist/schemas/personas.d.ts.map +1 -1
- package/dist/schemas/personas.js +32 -5
- package/dist/schemas/personas.js.map +1 -1
- package/dist/schemas/plan-limits.d.ts +2 -4
- package/dist/schemas/plan-limits.d.ts.map +1 -1
- package/dist/schemas/plan-limits.js +5 -8
- package/dist/schemas/plan-limits.js.map +1 -1
- package/dist/schemas/ports.d.ts.map +1 -1
- package/dist/schemas/ports.js.map +1 -1
- package/dist/schemas/provider-oauth.d.ts.map +1 -1
- package/dist/schemas/provider-oauth.js.map +1 -1
- package/dist/schemas/provider-subscriptions.d.ts +1 -1
- package/dist/schemas/provider-subscriptions.d.ts.map +1 -1
- package/dist/schemas/provider-subscriptions.js +1 -1
- package/dist/schemas/provider-subscriptions.js.map +1 -1
- package/dist/schemas/public.d.ts.map +1 -1
- package/dist/schemas/public.js.map +1 -1
- package/dist/schemas/push.d.ts.map +1 -1
- package/dist/schemas/push.js.map +1 -1
- package/dist/schemas/secrets.d.ts.map +1 -1
- package/dist/schemas/secrets.js.map +1 -1
- package/dist/schemas/settings.d.ts +7 -5
- package/dist/schemas/settings.d.ts.map +1 -1
- package/dist/schemas/settings.js +18 -8
- package/dist/schemas/settings.js.map +1 -1
- package/dist/schemas/share.d.ts.map +1 -1
- package/dist/schemas/share.js.map +1 -1
- package/dist/schemas/shared.d.ts +4 -0
- package/dist/schemas/shared.d.ts.map +1 -1
- package/dist/schemas/shared.js +3 -0
- package/dist/schemas/shared.js.map +1 -1
- package/dist/schemas/system.d.ts +6 -0
- package/dist/schemas/system.d.ts.map +1 -1
- package/dist/schemas/system.js +10 -0
- package/dist/schemas/system.js.map +1 -1
- package/dist/schemas/terminal.d.ts.map +1 -1
- package/dist/schemas/terminal.js.map +1 -1
- package/dist/schemas/usage.d.ts.map +1 -1
- package/dist/schemas/usage.js.map +1 -1
- package/dist/schemas/vpn.d.ts.map +1 -1
- package/dist/schemas/vpn.js.map +1 -1
- package/dist/schemas/webext.d.ts.map +1 -1
- package/dist/schemas/webext.js.map +1 -1
- package/dist/schemas/workflows.d.ts +66 -9
- package/dist/schemas/workflows.d.ts.map +1 -1
- package/dist/schemas/workflows.js +6 -5
- package/dist/schemas/workflows.js.map +1 -1
- package/dist/schemas/workspace-repos.d.ts.map +1 -1
- package/dist/schemas/workspace-repos.js.map +1 -1
- package/dist/schemas/workspace-search.d.ts.map +1 -1
- package/dist/schemas/workspace-search.js.map +1 -1
- package/dist/schemas/workspace-setup.d.ts.map +1 -1
- package/dist/schemas/workspace-setup.js.map +1 -1
- package/dist/schemas/workspace-tree.d.ts.map +1 -1
- package/dist/schemas/workspace-tree.js.map +1 -1
- package/dist/state/arrival.d.ts.map +1 -0
- package/dist/{arrival.js → state/arrival.js} +1 -1
- package/dist/state/arrival.js.map +1 -0
- package/dist/state/contract-lock.d.ts.map +1 -0
- package/dist/{contract-lock.js → state/contract-lock.js} +1 -1
- package/dist/state/contract-lock.js.map +1 -0
- package/dist/{definition.d.ts → state/definition.d.ts} +21 -17
- package/dist/state/definition.d.ts.map +1 -0
- package/dist/{definition.js → state/definition.js} +4 -4
- package/dist/state/definition.js.map +1 -0
- package/dist/state/history-state.d.ts.map +1 -0
- package/dist/{history-state.js → state/history-state.js} +1 -0
- package/dist/state/history-state.js.map +1 -0
- package/dist/state/runtime-state.d.ts.map +1 -0
- package/dist/state/runtime-state.js.map +1 -0
- package/dist/state/starter.d.ts.map +1 -0
- package/dist/state/starter.js.map +1 -0
- package/dist/state/state-portability.d.ts.map +1 -0
- package/dist/state/state-portability.js.map +1 -0
- package/dist/state/versions.d.ts.map +1 -0
- package/dist/state/versions.js.map +1 -0
- package/dist/{workspace-state.d.ts → state/workspace-state.d.ts} +8 -5
- package/dist/state/workspace-state.d.ts.map +1 -0
- package/dist/{workspace-state.js → state/workspace-state.js} +25 -1
- package/dist/state/workspace-state.js.map +1 -0
- package/dist/{documents.d.ts → text/documents.d.ts} +1 -1
- package/dist/text/documents.d.ts.map +1 -0
- package/dist/{documents.js → text/documents.js} +1 -1
- package/dist/text/documents.js.map +1 -0
- package/dist/text/embed.d.ts.map +1 -0
- package/dist/text/embed.js.map +1 -0
- package/dist/text/mentions.d.ts.map +1 -0
- package/dist/text/mentions.js.map +1 -0
- package/dist/text/model-answer.d.ts +3 -0
- package/dist/text/model-answer.d.ts.map +1 -0
- package/dist/text/model-answer.js +3 -0
- package/dist/text/model-answer.js.map +1 -0
- package/dist/text/path-refs.d.ts.map +1 -0
- package/dist/text/path-refs.js.map +1 -0
- package/dist/{shell-regions.d.ts → text/shell-regions.d.ts} +1 -1
- package/dist/text/shell-regions.d.ts.map +1 -0
- package/dist/text/shell-regions.js.map +1 -0
- package/dist/text/title.d.ts.map +1 -0
- package/dist/text/title.js.map +1 -0
- package/dist/{transcript-fold.d.ts → text/transcript-fold.d.ts} +2 -1
- package/dist/text/transcript-fold.d.ts.map +1 -0
- package/dist/{transcript-fold.js → text/transcript-fold.js} +2 -16
- package/dist/text/transcript-fold.js.map +1 -0
- package/dist/text/whisper.d.ts +3 -0
- package/dist/text/whisper.d.ts.map +1 -0
- package/dist/text/whisper.js +11 -0
- package/dist/text/whisper.js.map +1 -0
- package/dist/{workflow-faults.d.ts → text/workflow-faults.d.ts} +1 -1
- package/dist/text/workflow-faults.d.ts.map +1 -0
- package/dist/{workflow-faults.js → text/workflow-faults.js} +1 -1
- package/dist/text/workflow-faults.js.map +1 -0
- package/package.json +70 -70
- package/src/chores/chores.test.ts +4 -10
- package/src/chores/chores.ts +148 -392
- package/src/chores/digest.ts +8 -28
- package/src/chores/extension-update.ts +3 -8
- package/src/chores/fix-deps.ts +4 -18
- package/src/chores/index.ts +2 -2
- package/src/chores/probes.test.ts +7 -43
- package/src/chores/probes.ts +62 -167
- package/src/chores/prompt.ts +10 -34
- package/src/chores/stack.test.ts +6 -45
- package/src/chores/stack.ts +27 -118
- package/src/chores/verdict.test.ts +101 -80
- package/src/chores/verdict.ts +54 -99
- package/src/contracts/accounts.contract.ts +4 -19
- package/src/contracts/agent.contract.ts +7 -22
- package/src/contracts/agents.contract.ts +25 -71
- package/src/contracts/automations.contract.ts +14 -30
- package/src/contracts/capabilities.contract.ts +8 -35
- package/src/contracts/chores.contract.ts +4 -15
- package/src/contracts/endpoints.contract.ts +5 -22
- package/src/contracts/exit.contract.ts +7 -30
- package/src/contracts/extensions.contract.ts +8 -30
- package/src/contracts/git.contract.ts +25 -49
- package/src/contracts/host.contract.ts +9 -44
- package/src/contracts/intentic.contract.ts +1 -1
- package/src/contracts/logs.contract.ts +3 -13
- package/src/contracts/loops.contract.ts +9 -40
- package/src/contracts/personas.contract.ts +22 -30
- package/src/contracts/providers.contract.ts +4 -17
- package/src/contracts/runner.contract.ts +12 -39
- package/src/contracts/safety.contract.ts +5 -14
- package/src/contracts/secrets.contract.ts +4 -22
- package/src/contracts/sessions.contract.ts +1 -1
- package/src/contracts/settings.contract.ts +4 -10
- package/src/contracts/share.contract.ts +3 -9
- package/src/contracts/skills.contract.ts +4 -15
- package/src/contracts/system.contract.ts +26 -52
- package/src/contracts/usage.contract.ts +7 -21
- package/src/contracts/vpn.contract.ts +9 -16
- package/src/contracts/webext.contract.ts +9 -25
- package/src/contracts/workflows.contract.ts +34 -58
- package/src/contracts/workspace.contract.ts +19 -50
- package/src/events/agent-events.ts +345 -0
- package/src/events/cards.ts +286 -0
- package/src/{events.test.ts → events/resume.test.ts} +4 -19
- package/src/events/resume.ts +60 -0
- package/src/events/system-events.ts +139 -0
- package/src/events/transcript.ts +320 -0
- package/src/{conversation-ids.test.ts → ids/conversation-ids.test.ts} +25 -13
- package/src/ids/conversation-ids.ts +178 -0
- package/src/ids/hostnames.ts +129 -0
- package/src/ids/session-names.ts +29 -0
- package/src/ids/share-paths.ts +43 -0
- package/src/{tunnel-ids.test.ts → ids/tunnel-ids.test.ts} +1 -14
- package/src/ids/tunnel-ids.ts +29 -0
- package/src/index.ts +71 -88
- package/src/{agent-catalog.test.ts → models/agent-catalog.test.ts} +19 -93
- package/src/models/agent-catalog.ts +174 -0
- package/src/models/agent-runtimes.ts +201 -0
- package/src/models/capability-ledger.test.ts +84 -0
- package/src/{fast-tier.test.ts → models/fast-tier.test.ts} +7 -18
- package/src/models/fast-tier.ts +36 -0
- package/src/{model-order.test.ts → models/model-order.test.ts} +19 -40
- package/src/models/model-order.ts +163 -0
- package/src/models/model-pins.test.ts +87 -0
- package/src/models/model-pins.ts +57 -0
- package/src/models/model-roles.test.ts +38 -0
- package/src/models/model-roles.ts +180 -0
- package/src/{plan-pools.test.ts → models/plan-pools.test.ts} +6 -11
- package/src/models/plan-pools.ts +65 -0
- package/src/{prompt-complexity.test.ts → models/prompt-complexity.test.ts} +8 -60
- package/src/models/prompt-complexity.ts +215 -0
- package/src/{provider-specs.test.ts → models/provider-specs.test.ts} +18 -47
- package/src/models/provider-specs.ts +272 -0
- package/src/policy/approvals-execution.ts +58 -0
- package/src/{batch-runs.test.ts → policy/batch-runs.test.ts} +4 -20
- package/src/policy/batch-runs.ts +137 -0
- package/src/policy/capability-secrets.ts +5 -0
- package/src/{card-status.ts → policy/card-status.ts} +11 -26
- package/src/{command-classes.test.ts → policy/command-classes.test.ts} +11 -118
- package/src/policy/command-classes.ts +395 -0
- package/src/policy/command-run.ts +65 -0
- package/src/policy/control-scopes.ts +38 -0
- package/src/{credential-material.test.ts → policy/credential-material.test.ts} +4 -26
- package/src/policy/credential-material.ts +91 -0
- package/src/policy/needs-action.ts +5 -0
- package/src/policy/output-fields.ts +86 -0
- package/src/policy/overlay-lint.ts +100 -0
- package/src/{owner-ticket.test.ts → policy/owner-ticket.test.ts} +1 -1
- package/src/{owner-ticket.ts → policy/owner-ticket.ts} +9 -31
- package/src/policy/safety-policy.test.ts +84 -0
- package/src/policy/safety-policy.ts +142 -0
- package/src/policy/search-globs.ts +60 -0
- package/src/protocol/container-requirements.test.ts +72 -0
- package/src/protocol/container-requirements.ts +58 -0
- package/src/protocol/host-protocol.ts +29 -0
- package/src/protocol/ingress-contract.ts +103 -0
- package/src/{ingress-protocol.test.ts → protocol/ingress-protocol.test.ts} +25 -90
- package/src/protocol/ingress-protocol.ts +441 -0
- package/src/protocol/listener-protocol.ts +75 -0
- package/src/{peer-dial.test.ts → protocol/peer-dial.test.ts} +52 -1
- package/src/protocol/peer-dial.ts +207 -0
- package/src/{peer-mcp-server.ts → protocol/peer-mcp-server.ts} +16 -41
- package/src/protocol/request-id.ts +5 -0
- package/src/{routes.test.ts → protocol/routes.test.ts} +14 -22
- package/src/protocol/routes.ts +159 -0
- package/src/protocol/runner-protocol.ts +197 -0
- package/src/protocol/terminal-protocol.ts +13 -0
- package/src/protocol/webext-links.ts +50 -0
- package/src/protocol/webext-protocol.ts +24 -0
- package/src/schemas/activity.ts +22 -30
- package/src/schemas/agent.ts +130 -238
- package/src/schemas/agents.ts +165 -483
- package/src/schemas/approvals.ts +23 -71
- package/src/schemas/automations.ts +145 -249
- package/src/schemas/capabilities.ts +127 -414
- package/src/schemas/ci.ts +56 -108
- package/src/schemas/codebase-health.ts +7 -11
- package/src/schemas/devices.ts +98 -321
- package/src/schemas/engines.ts +16 -44
- package/src/schemas/environment.ts +41 -91
- package/src/schemas/exit.ts +24 -81
- package/src/schemas/extension-updates.ts +42 -87
- package/src/schemas/git-history.ts +30 -84
- package/src/schemas/git.ts +141 -256
- package/src/schemas/history.ts +14 -40
- package/src/schemas/hosts.ts +9 -15
- package/src/schemas/inventory.ts +8 -10
- package/src/schemas/issues.ts +66 -134
- package/src/schemas/logs.ts +15 -34
- package/src/schemas/loops.ts +46 -163
- package/src/schemas/maintenance.ts +47 -172
- package/src/schemas/panels.ts +20 -45
- package/src/schemas/personas.ts +85 -168
- package/src/schemas/plan-limits.ts +58 -197
- package/src/schemas/ports.ts +14 -32
- package/src/schemas/provider-oauth.ts +23 -76
- package/src/schemas/provider-subscriptions.ts +4 -13
- package/src/schemas/public.ts +4 -15
- package/src/schemas/push.ts +8 -36
- package/src/schemas/secrets.ts +20 -64
- package/src/schemas/settings.ts +177 -597
- package/src/schemas/share.ts +14 -32
- package/src/schemas/shared.ts +14 -13
- package/src/schemas/system.ts +46 -78
- package/src/schemas/terminal.ts +41 -120
- package/src/schemas/usage.ts +44 -233
- package/src/schemas/version-seam.test.ts +9 -26
- package/src/schemas/vpn.ts +27 -64
- package/src/schemas/webext.ts +22 -53
- package/src/schemas/workflows.ts +57 -183
- package/src/schemas/workspace-repos.ts +12 -24
- package/src/schemas/workspace-search.ts +17 -35
- package/src/schemas/workspace-setup.ts +4 -11
- package/src/schemas/workspace-tree.ts +32 -91
- package/src/state/arrival.ts +109 -0
- package/src/state/contract-lock.test.ts +17 -0
- package/src/state/contract-lock.ts +49 -0
- package/src/state/definition.ts +143 -0
- package/src/state/history-state.ts +103 -0
- package/src/{runtime-state.test.ts → state/runtime-state.test.ts} +3 -10
- package/src/state/runtime-state.ts +62 -0
- package/src/state/starter.ts +5 -0
- package/src/state/state-portability.ts +27 -0
- package/src/state/versions.ts +26 -0
- package/src/{workspace-state.test.ts → state/workspace-state.test.ts} +65 -173
- package/src/state/workspace-state.ts +669 -0
- package/src/{documents.test.ts → text/documents.test.ts} +1 -1
- package/src/text/documents.ts +42 -0
- package/src/text/embed.ts +132 -0
- package/src/text/mentions.ts +21 -0
- package/src/text/model-answer.ts +9 -0
- package/src/text/path-refs.ts +39 -0
- package/src/text/shell-regions.ts +224 -0
- package/src/{title.test.ts → text/title.test.ts} +13 -32
- package/src/text/title.ts +202 -0
- package/src/{transcript-fold.test.ts → text/transcript-fold.test.ts} +5 -83
- package/src/{transcript-fold.ts → text/transcript-fold.ts} +65 -170
- package/src/text/whisper.test.ts +19 -0
- package/src/text/whisper.ts +17 -0
- package/src/{workflow-faults.test.ts → text/workflow-faults.test.ts} +6 -24
- package/src/{workflow-faults.ts → text/workflow-faults.ts} +20 -60
- package/dist/agent-catalog.d.ts.map +0 -1
- package/dist/agent-catalog.js.map +0 -1
- package/dist/agent-runtimes.d.ts.map +0 -1
- package/dist/agent-runtimes.js.map +0 -1
- package/dist/approvals-execution.d.ts.map +0 -1
- package/dist/approvals-execution.js.map +0 -1
- package/dist/arrival.d.ts.map +0 -1
- package/dist/arrival.js.map +0 -1
- package/dist/batch-runs.d.ts.map +0 -1
- package/dist/batch-runs.js.map +0 -1
- package/dist/capability-env.d.ts.map +0 -1
- package/dist/capability-env.js.map +0 -1
- package/dist/capability-secrets.d.ts.map +0 -1
- package/dist/capability-secrets.js.map +0 -1
- package/dist/card-status.d.ts.map +0 -1
- package/dist/card-status.js.map +0 -1
- package/dist/command-classes.d.ts.map +0 -1
- package/dist/command-classes.js.map +0 -1
- package/dist/command-run.d.ts.map +0 -1
- package/dist/command-run.js.map +0 -1
- package/dist/contract-lock.d.ts.map +0 -1
- package/dist/contract-lock.js.map +0 -1
- package/dist/conversation-ids.d.ts +0 -4
- package/dist/conversation-ids.d.ts.map +0 -1
- package/dist/conversation-ids.js.map +0 -1
- package/dist/credential-material.d.ts.map +0 -1
- package/dist/credential-material.js.map +0 -1
- package/dist/definition.d.ts.map +0 -1
- package/dist/definition.js.map +0 -1
- package/dist/documents.d.ts.map +0 -1
- package/dist/documents.js.map +0 -1
- package/dist/embed.d.ts.map +0 -1
- package/dist/embed.js.map +0 -1
- package/dist/events.d.ts +0 -4336
- package/dist/events.d.ts.map +0 -1
- package/dist/events.js +0 -725
- package/dist/events.js.map +0 -1
- package/dist/fast-tier.d.ts.map +0 -1
- package/dist/fast-tier.js.map +0 -1
- package/dist/history-state.d.ts.map +0 -1
- package/dist/history-state.js.map +0 -1
- package/dist/host-protocol.d.ts.map +0 -1
- package/dist/host-protocol.js.map +0 -1
- package/dist/hostnames.d.ts.map +0 -1
- package/dist/hostnames.js.map +0 -1
- package/dist/ingress-contract.d.ts.map +0 -1
- package/dist/ingress-contract.js.map +0 -1
- package/dist/ingress-protocol.d.ts.map +0 -1
- package/dist/ingress-protocol.js.map +0 -1
- package/dist/listener-protocol.d.ts.map +0 -1
- package/dist/listener-protocol.js.map +0 -1
- package/dist/mentions.d.ts.map +0 -1
- package/dist/mentions.js.map +0 -1
- package/dist/model-order.d.ts.map +0 -1
- package/dist/model-order.js.map +0 -1
- package/dist/model-pins.d.ts.map +0 -1
- package/dist/model-pins.js +0 -45
- package/dist/model-pins.js.map +0 -1
- package/dist/model-roles.d.ts.map +0 -1
- package/dist/model-roles.js.map +0 -1
- package/dist/needs-action.d.ts.map +0 -1
- package/dist/needs-action.js.map +0 -1
- package/dist/output-fields.d.ts.map +0 -1
- package/dist/output-fields.js.map +0 -1
- package/dist/overlay-lint.d.ts.map +0 -1
- package/dist/overlay-lint.js.map +0 -1
- package/dist/owner-ticket.d.ts.map +0 -1
- package/dist/owner-ticket.js.map +0 -1
- package/dist/path-refs.d.ts.map +0 -1
- package/dist/path-refs.js.map +0 -1
- package/dist/peer-dial.d.ts.map +0 -1
- package/dist/peer-dial.js.map +0 -1
- package/dist/peer-mcp-server.d.ts.map +0 -1
- package/dist/peer-mcp-server.js.map +0 -1
- package/dist/plan-pools.d.ts.map +0 -1
- package/dist/plan-pools.js.map +0 -1
- package/dist/prompt-complexity.d.ts.map +0 -1
- package/dist/prompt-complexity.js.map +0 -1
- package/dist/provider-specs.d.ts.map +0 -1
- package/dist/provider-specs.js.map +0 -1
- package/dist/request-id.d.ts.map +0 -1
- package/dist/request-id.js.map +0 -1
- package/dist/routes.d.ts.map +0 -1
- package/dist/routes.js.map +0 -1
- package/dist/runner-protocol.d.ts.map +0 -1
- package/dist/runner-protocol.js.map +0 -1
- package/dist/runtime-state.d.ts.map +0 -1
- package/dist/runtime-state.js.map +0 -1
- package/dist/safety-policy.d.ts.map +0 -1
- package/dist/safety-policy.js.map +0 -1
- package/dist/schemas/context.d.ts +0 -30
- package/dist/schemas/context.d.ts.map +0 -1
- package/dist/schemas/context.js +0 -34
- package/dist/schemas/context.js.map +0 -1
- package/dist/search-globs.d.ts.map +0 -1
- package/dist/search-globs.js.map +0 -1
- package/dist/session-names.d.ts.map +0 -1
- package/dist/session-names.js.map +0 -1
- package/dist/share-paths.d.ts.map +0 -1
- package/dist/share-paths.js.map +0 -1
- package/dist/shell-regions.d.ts.map +0 -1
- package/dist/shell-regions.js.map +0 -1
- package/dist/sse.d.ts.map +0 -1
- package/dist/sse.js.map +0 -1
- package/dist/starter.d.ts.map +0 -1
- package/dist/starter.js.map +0 -1
- package/dist/state-portability.d.ts.map +0 -1
- package/dist/state-portability.js.map +0 -1
- package/dist/terminal-protocol.d.ts.map +0 -1
- package/dist/terminal-protocol.js.map +0 -1
- package/dist/title.d.ts.map +0 -1
- package/dist/title.js.map +0 -1
- package/dist/transcript-fold.d.ts.map +0 -1
- package/dist/transcript-fold.js.map +0 -1
- package/dist/tunnel-ids.d.ts.map +0 -1
- package/dist/tunnel-ids.js.map +0 -1
- package/dist/versions.d.ts.map +0 -1
- package/dist/versions.js.map +0 -1
- package/dist/webext-links.d.ts.map +0 -1
- package/dist/webext-links.js.map +0 -1
- package/dist/webext-protocol.d.ts.map +0 -1
- package/dist/webext-protocol.js.map +0 -1
- package/dist/workflow-faults.d.ts.map +0 -1
- package/dist/workflow-faults.js.map +0 -1
- package/dist/workspace-state.d.ts.map +0 -1
- package/dist/workspace-state.js.map +0 -1
- package/src/agent-catalog.ts +0 -316
- package/src/agent-runtimes.ts +0 -419
- package/src/approvals-execution.ts +0 -96
- package/src/arrival.ts +0 -160
- package/src/batch-runs.ts +0 -188
- package/src/capability-ledger.test.ts +0 -140
- package/src/capability-secrets.ts +0 -20
- package/src/command-classes.ts +0 -617
- package/src/command-run.ts +0 -78
- package/src/contract-lock.test.ts +0 -23
- package/src/contract-lock.ts +0 -66
- package/src/conversation-ids.ts +0 -207
- package/src/credential-material.ts +0 -181
- package/src/definition.ts +0 -207
- package/src/documents.ts +0 -67
- package/src/embed.ts +0 -164
- package/src/events.ts +0 -1870
- package/src/fast-tier.ts +0 -72
- package/src/history-state.ts +0 -174
- package/src/host-protocol.ts +0 -36
- package/src/hostnames.ts +0 -180
- package/src/ingress-contract.ts +0 -157
- package/src/ingress-protocol.ts +0 -625
- package/src/listener-protocol.ts +0 -96
- package/src/mentions.ts +0 -25
- package/src/model-order.ts +0 -262
- package/src/model-pins.test.ts +0 -202
- package/src/model-pins.ts +0 -183
- package/src/model-roles.ts +0 -224
- package/src/needs-action.ts +0 -14
- package/src/output-fields.ts +0 -111
- package/src/overlay-lint.ts +0 -116
- package/src/path-refs.ts +0 -59
- package/src/peer-dial.ts +0 -163
- package/src/plan-pools.ts +0 -92
- package/src/prompt-complexity.ts +0 -334
- package/src/provider-specs.ts +0 -432
- package/src/request-id.ts +0 -41
- package/src/routes.ts +0 -219
- package/src/runner-protocol.ts +0 -239
- package/src/runtime-state.ts +0 -140
- package/src/safety-policy.test.ts +0 -88
- package/src/safety-policy.ts +0 -258
- package/src/schemas/context.ts +0 -87
- package/src/search-globs.ts +0 -76
- package/src/session-names.ts +0 -44
- package/src/share-paths.ts +0 -68
- package/src/shell-regions.ts +0 -289
- package/src/starter.ts +0 -13
- package/src/state-portability.ts +0 -56
- package/src/terminal-protocol.ts +0 -16
- package/src/title.ts +0 -267
- package/src/tunnel-ids.ts +0 -57
- package/src/versions.ts +0 -48
- package/src/webext-links.ts +0 -90
- package/src/webext-protocol.ts +0 -27
- package/src/workspace-state.ts +0 -1096
- /package/dist/{hostnames.d.ts → ids/hostnames.d.ts} +0 -0
- /package/dist/{hostnames.js → ids/hostnames.js} +0 -0
- /package/dist/{session-names.d.ts → ids/session-names.d.ts} +0 -0
- /package/dist/{session-names.js → ids/session-names.js} +0 -0
- /package/dist/{share-paths.d.ts → ids/share-paths.d.ts} +0 -0
- /package/dist/{share-paths.js → ids/share-paths.js} +0 -0
- /package/dist/{agent-catalog.js → models/agent-catalog.js} +0 -0
- /package/dist/{agent-runtimes.d.ts → models/agent-runtimes.d.ts} +0 -0
- /package/dist/{agent-runtimes.js → models/agent-runtimes.js} +0 -0
- /package/dist/{fast-tier.js → models/fast-tier.js} +0 -0
- /package/dist/{model-order.d.ts → models/model-order.d.ts} +0 -0
- /package/dist/{model-order.js → models/model-order.js} +0 -0
- /package/dist/{plan-pools.js → models/plan-pools.js} +0 -0
- /package/dist/{prompt-complexity.d.ts → models/prompt-complexity.d.ts} +0 -0
- /package/dist/{prompt-complexity.js → models/prompt-complexity.js} +0 -0
- /package/dist/{provider-specs.d.ts → models/provider-specs.d.ts} +0 -0
- /package/dist/{provider-specs.js → models/provider-specs.js} +0 -0
- /package/dist/{approvals-execution.d.ts → policy/approvals-execution.d.ts} +0 -0
- /package/dist/{approvals-execution.js → policy/approvals-execution.js} +0 -0
- /package/dist/{capability-env.d.ts → policy/capability-env.d.ts} +0 -0
- /package/dist/{capability-env.js → policy/capability-env.js} +0 -0
- /package/dist/{capability-secrets.d.ts → policy/capability-secrets.d.ts} +0 -0
- /package/dist/{capability-secrets.js → policy/capability-secrets.js} +0 -0
- /package/dist/{command-run.js → policy/command-run.js} +0 -0
- /package/dist/{credential-material.d.ts → policy/credential-material.d.ts} +0 -0
- /package/dist/{credential-material.js → policy/credential-material.js} +0 -0
- /package/dist/{needs-action.d.ts → policy/needs-action.d.ts} +0 -0
- /package/dist/{needs-action.js → policy/needs-action.js} +0 -0
- /package/dist/{output-fields.d.ts → policy/output-fields.d.ts} +0 -0
- /package/dist/{output-fields.js → policy/output-fields.js} +0 -0
- /package/dist/{overlay-lint.d.ts → policy/overlay-lint.d.ts} +0 -0
- /package/dist/{overlay-lint.js → policy/overlay-lint.js} +0 -0
- /package/dist/{owner-ticket.d.ts → policy/owner-ticket.d.ts} +0 -0
- /package/dist/{search-globs.d.ts → policy/search-globs.d.ts} +0 -0
- /package/dist/{search-globs.js → policy/search-globs.js} +0 -0
- /package/dist/{ingress-contract.d.ts → protocol/ingress-contract.d.ts} +0 -0
- /package/dist/{ingress-protocol.d.ts → protocol/ingress-protocol.d.ts} +0 -0
- /package/dist/{ingress-protocol.js → protocol/ingress-protocol.js} +0 -0
- /package/dist/{listener-protocol.d.ts → protocol/listener-protocol.d.ts} +0 -0
- /package/dist/{peer-mcp-server.d.ts → protocol/peer-mcp-server.d.ts} +0 -0
- /package/dist/{peer-mcp-server.js → protocol/peer-mcp-server.js} +0 -0
- /package/dist/{request-id.d.ts → protocol/request-id.d.ts} +0 -0
- /package/dist/{request-id.js → protocol/request-id.js} +0 -0
- /package/dist/{routes.d.ts → protocol/routes.d.ts} +0 -0
- /package/dist/{routes.js → protocol/routes.js} +0 -0
- /package/dist/{sse.d.ts → protocol/sse.d.ts} +0 -0
- /package/dist/{sse.js → protocol/sse.js} +0 -0
- /package/dist/{terminal-protocol.js → protocol/terminal-protocol.js} +0 -0
- /package/dist/{webext-links.d.ts → protocol/webext-links.d.ts} +0 -0
- /package/dist/{webext-links.js → protocol/webext-links.js} +0 -0
- /package/dist/{arrival.d.ts → state/arrival.d.ts} +0 -0
- /package/dist/{contract-lock.d.ts → state/contract-lock.d.ts} +0 -0
- /package/dist/{history-state.d.ts → state/history-state.d.ts} +0 -0
- /package/dist/{runtime-state.d.ts → state/runtime-state.d.ts} +0 -0
- /package/dist/{runtime-state.js → state/runtime-state.js} +0 -0
- /package/dist/{starter.d.ts → state/starter.d.ts} +0 -0
- /package/dist/{starter.js → state/starter.js} +0 -0
- /package/dist/{state-portability.d.ts → state/state-portability.d.ts} +0 -0
- /package/dist/{state-portability.js → state/state-portability.js} +0 -0
- /package/dist/{versions.d.ts → state/versions.d.ts} +0 -0
- /package/dist/{versions.js → state/versions.js} +0 -0
- /package/dist/{embed.d.ts → text/embed.d.ts} +0 -0
- /package/dist/{embed.js → text/embed.js} +0 -0
- /package/dist/{mentions.d.ts → text/mentions.d.ts} +0 -0
- /package/dist/{mentions.js → text/mentions.js} +0 -0
- /package/dist/{path-refs.d.ts → text/path-refs.d.ts} +0 -0
- /package/dist/{path-refs.js → text/path-refs.js} +0 -0
- /package/dist/{shell-regions.js → text/shell-regions.js} +0 -0
- /package/dist/{title.d.ts → text/title.d.ts} +0 -0
- /package/dist/{title.js → text/title.js} +0 -0
- /package/src/{hostnames.test.ts → ids/hostnames.test.ts} +0 -0
- /package/src/{share-paths.test.ts → ids/share-paths.test.ts} +0 -0
- /package/src/{capability-env.ts → policy/capability-env.ts} +0 -0
- /package/src/{overlay-lint.test.ts → policy/overlay-lint.test.ts} +0 -0
- /package/src/{search-globs.test.ts → policy/search-globs.test.ts} +0 -0
- /package/src/{ingress-contract.test.ts → protocol/ingress-contract.test.ts} +0 -0
- /package/src/{peer-mcp-server.test.ts → protocol/peer-mcp-server.test.ts} +0 -0
- /package/src/{sse.ts → protocol/sse.ts} +0 -0
- /package/src/{versions.test.ts → state/versions.test.ts} +0 -0
- /package/src/{embed.test.ts → text/embed.test.ts} +0 -0
- /package/src/{mentions.test.ts → text/mentions.test.ts} +0 -0
- /package/src/{path-refs.test.ts → text/path-refs.test.ts} +0 -0
package/src/schemas/logs.ts
CHANGED
|
@@ -1,21 +1,18 @@
|
|
|
1
1
|
// logs: daemon-owned debug logs (historyRoot/logs)
|
|
2
2
|
import { z } from "zod";
|
|
3
|
-
// Terminal pipe-pane captures (terminals/),
|
|
4
|
-
//
|
|
3
|
+
// Terminal pipe-pane captures (terminals/), CLI run logs (intentic-runs/), and the daemon's own pino file (daemon.log);
|
|
4
|
+
// written by the daemon/tmux only, so the agent can't rewrite them.
|
|
5
5
|
|
|
6
6
|
export const LogFileEntrySchema = z.object({
|
|
7
|
-
//
|
|
7
|
+
// Relative to the logs root, e.g. "terminals/web-1-%0.log".
|
|
8
8
|
name: z.string().describe("Its name, which is what the read route takes."),
|
|
9
9
|
sizeBytes: z.number().describe("Size in bytes."),
|
|
10
|
-
// Epoch ms mtime.
|
|
11
10
|
modifiedAt: z.number().describe("When it last changed, in milliseconds."),
|
|
12
11
|
});
|
|
13
12
|
export type LogFileEntry = z.infer<typeof LogFileEntrySchema>;
|
|
14
13
|
export const LogsListSchema = z.object({
|
|
15
14
|
files: z.array(LogFileEntrySchema).describe("Every log the sandbox keeps: captured terminal output, command runs, and its own log."),
|
|
16
15
|
});
|
|
17
|
-
// `name` rides the query (log names contain slashes, which don't fit a path segment); `bytes` is the tail
|
|
18
|
-
// size, the newest bytes win when the file is larger.
|
|
19
16
|
export const LogReadQuerySchema = z.object({
|
|
20
17
|
name: z.string().min(1).describe("Which log. It travels in the query rather than the address, because log names contain slashes."),
|
|
21
18
|
bytes: z.coerce
|
|
@@ -28,50 +25,35 @@ export const LogReadQuerySchema = z.object({
|
|
|
28
25
|
export const LogReadSchema = z.object({
|
|
29
26
|
name: z.string().describe("Which log this is from."),
|
|
30
27
|
sizeBytes: z.number().describe("How large the whole file is."),
|
|
31
|
-
// The tail text; truncated when the file holds more than the requested bytes.
|
|
32
28
|
text: z.string().describe("The end of it, as text."),
|
|
33
29
|
truncated: z.boolean().describe("There is more before what you got."),
|
|
34
30
|
});
|
|
35
31
|
export type LogRead = z.infer<typeof LogReadSchema>;
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
* `console.warn`: the perf ring buffer dies on reload, a render error reaches Vue's handler and stops there, and
|
|
40
|
-
* the startup self-heal CLEARS this origin's storage and reloads, destroying the evidence for the one class of
|
|
41
|
-
* bug that reproduces least often. So when a user hit a bug in their own browser the durable record was
|
|
42
|
-
* nothing, and the only way to investigate was to re-drive a browser and hope. Measured over 728 sessions that
|
|
43
|
-
* is 1,545 screenshots against 65 console reads, and a quarter of all prompts arriving with a picture attached
|
|
44
|
-
* because there was no other channel.
|
|
45
|
-
*
|
|
46
|
-
* Deliberately NARROW. This is not analytics (PostHog owns product events) and not a log pipe: it carries the
|
|
47
|
-
* things a person cannot describe and a screenshot cannot show, which are caught errors, self-heal wipes, and
|
|
48
|
-
* spans that blew their frame budget. Everything is capped at the schema so one looping component cannot fill
|
|
49
|
-
* the /history volume, and the daemon appends to logs/client.jsonl under the same prune sweep as the rest. */
|
|
32
|
+
// What the browser saw when nothing else could capture it: caught errors, self-heal wipes, spans over budget — not
|
|
33
|
+
// analytics, not a general log pipe. Capped at the schema so one looping component can't fill the volume; appended to
|
|
34
|
+
// logs/client.jsonl under the same prune sweep.
|
|
50
35
|
export const ClientDiagnosticSchema = z.object({
|
|
51
|
-
//
|
|
52
|
-
//
|
|
36
|
+
// Distinct from the daemon's own stamp: a batch can arrive seconds late, and a reader correlating a stutter to a
|
|
37
|
+
// daemon span needs the actual moment.
|
|
53
38
|
seenAt: z.number().describe("When the browser saw it, in milliseconds."),
|
|
54
39
|
level: z.enum(["warn", "error"]).describe("How bad it was."),
|
|
55
|
-
//
|
|
56
|
-
// `unhandled.rejection`, `self-heal.wipe`, `perf.slow`.
|
|
40
|
+
// Dotted namespace a reader filters on, e.g. `vue.render`, `self-heal.wipe`, `perf.slow`.
|
|
57
41
|
event: z.string().min(1).max(100).describe("What kind of thing it was, as a stable name."),
|
|
58
42
|
message: z.string().max(2_000).describe("What it said."),
|
|
59
|
-
// The app route the user was on, which is the single most useful field for reproducing anything.
|
|
60
43
|
route: z.string().max(300).optional().describe("Which page they were on."),
|
|
61
|
-
|
|
62
|
-
* "the UI stuttered at 15:22" and "slow http.request at 15:22" can only be matched by eye. */
|
|
44
|
+
// The join key: without it, matching a stutter to a slow daemon call is eyeballing timestamps.
|
|
63
45
|
requestId: z.string().max(100).optional().describe("Which daemon call it belonged to, when it belonged to one."),
|
|
64
|
-
//
|
|
46
|
+
// Flags a report from a tab that has not reloaded in a while.
|
|
65
47
|
build: z.string().max(100).optional().describe("Which build of the app was running."),
|
|
66
|
-
// Bounded
|
|
48
|
+
// Bounded, primitive values only (stack, op name, duration); flat, so a line stays greppable.
|
|
67
49
|
fields: z
|
|
68
50
|
.record(z.string().max(60), z.union([z.string().max(4_000), z.number(), z.boolean()]))
|
|
69
51
|
.optional()
|
|
70
52
|
.describe("Whatever else was worth keeping."),
|
|
71
53
|
});
|
|
72
54
|
export type ClientDiagnostic = z.infer<typeof ClientDiagnosticSchema>;
|
|
73
|
-
//
|
|
74
|
-
//
|
|
55
|
+
// Capped batch: the client already coalesces and drops its own side, and an unbounded array here is a way to fill a
|
|
56
|
+
// disk with one request.
|
|
75
57
|
export const ClientDiagnosticsReportSchema = z.object({
|
|
76
58
|
events: z.array(ClientDiagnosticSchema).min(1).max(50).describe("What the browser has to report, oldest first."),
|
|
77
59
|
});
|
|
@@ -79,8 +61,7 @@ export type ClientDiagnosticsReport = z.infer<typeof ClientDiagnosticsReportSche
|
|
|
79
61
|
export const ClientDiagnosticsAcceptedSchema = z.object({
|
|
80
62
|
recorded: z.number().describe("How many were written down."),
|
|
81
63
|
});
|
|
82
|
-
// A tab's self-report
|
|
83
|
-
// not a merge, an absent field means "cleared", so a tab leaving a file drops the path with the same report.
|
|
64
|
+
// A tab's self-report, keyed by its /events connection's clientId; full replace, not a merge — absent means cleared.
|
|
84
65
|
export const PresenceReportSchema = z.object({
|
|
85
66
|
clientId: z.string().describe("This connection's own id, the same one it gave the event stream."),
|
|
86
67
|
idle: z.boolean().describe("Whether the person has stopped doing anything."),
|
package/src/schemas/loops.ts
CHANGED
|
@@ -1,47 +1,24 @@
|
|
|
1
1
|
// loops: run a conversation again, and again, until a goal is met
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { STATE_DIR } from "@intentic/constants";
|
|
4
|
-
import { OutputFieldsSchema } from "../output-fields.js";
|
|
4
|
+
import { OutputFieldsSchema } from "../policy/output-fields.js";
|
|
5
5
|
import { AgentHarnessSchema, AgentProviderSchema, ConversationIdSchema, RepoBaseSchema } from "./agent.js";
|
|
6
6
|
import { entryId } from "./internal.js";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
*
|
|
11
|
-
* A loop is an ATTRIBUTE OF A CONVERSATION, not a new kind of object. It drives ordinary turns on an ordinary
|
|
12
|
-
* fleet agent, which is what makes the worktree, the cost ledger, the transcript, the /agents card and the Stop
|
|
13
|
-
* button work on it without a line of new code, the same bet the acceptance extension makes when it derives
|
|
14
|
-
* conversation ids instead of owning session machinery.
|
|
15
|
-
*/
|
|
7
|
+
// A loop answers "run until actually done" (converges), unlike an automation's cadence ("run at 3am", repeats forever).
|
|
8
|
+
// It's an attribute of an ordinary conversation, not a new object, so the worktree, ledger, transcript and Stop button
|
|
9
|
+
// all just work.
|
|
16
10
|
|
|
17
|
-
// How the next iteration meets its context
|
|
18
|
-
//
|
|
19
|
-
//
|
|
20
|
-
// worktree, so the filesystem, not the transcript, is the memory. Immune to context rot, so iteration 20 reads
|
|
21
|
-
// the tree as clearly as iteration 1, and it costs a re-read each time. The loop keeps a progress file for it
|
|
22
|
-
// (see LOOP_DIR) precisely because nothing else carries forward.
|
|
23
|
-
//
|
|
24
|
-
// `continue` resumes the provider session, so an iteration is a follow-up prompt. Cheaper (the prefix caches)
|
|
25
|
-
// and it keeps the reasoning, which is what a short refine-this loop wants. It degrades on long runs, and it
|
|
26
|
-
// degrades in the direction that matters: a session that has spent eleven turns arguing for its own approach is
|
|
27
|
-
// the worst available judge of whether that approach is finished.
|
|
11
|
+
// How the next iteration meets its context.
|
|
12
|
+
// fresh (default): a new provider session on the same worktree; immune to context rot, costs a re-read each time.
|
|
13
|
+
// continue: resumes the session; cheaper, keeps reasoning, but degrades on long runs.
|
|
28
14
|
export const LoopContextSchema = z.enum(["fresh", "continue"]);
|
|
29
15
|
export type LoopContext = z.infer<typeof LoopContextSchema>;
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
* the daemon reads rather than a sentence it has to interpret. Self-assessment, so advisory by construction,
|
|
37
|
-
* it exists because plenty of goals have no command that can check them ("the README explains the auth
|
|
38
|
-
* flow"), not because a model's word for it is worth much.
|
|
39
|
-
* `json`, the iteration writes `{done, reason, data}` where `data` matches a declared field list. This is the
|
|
40
|
-
* one that makes a step's output usable as the next step's input: a paragraph mentioning three files cannot
|
|
41
|
-
* be fed to anything, `{files: [...]}` can.
|
|
42
|
-
*
|
|
43
|
-
* All three land in ONE file per iteration, with one shape, differing only in strictness. See LoopDocumentSchema.
|
|
44
|
-
*/
|
|
16
|
+
// What the loop produces, asked separately from what ends it (see `checks`), since conflating them blocks chaining
|
|
17
|
+
// loops together.
|
|
18
|
+
// none: nothing but the work itself.
|
|
19
|
+
// claim: structured self-report, `{done, reason, evidence?}`.
|
|
20
|
+
// json: a declared shape, `{done, reason, data}`, usable as the next step's input.
|
|
21
|
+
// All three land in one file per iteration (`LoopDocumentSchema`).
|
|
45
22
|
export const LoopOutputSchema = z.discriminatedUnion("kind", [
|
|
46
23
|
z.object({
|
|
47
24
|
kind: z
|
|
@@ -67,18 +44,9 @@ export const LoopOutputSchema = z.discriminatedUnion("kind", [
|
|
|
67
44
|
}),
|
|
68
45
|
]);
|
|
69
46
|
export type LoopOutput = z.infer<typeof LoopOutputSchema>;
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
* the only signal here whose answer does not come from a model. It is the automation `guard` with the sign
|
|
74
|
-
* flipped, and it runs through the same runner. `pnpm test` passing beats any amount of self-report.
|
|
75
|
-
*
|
|
76
|
-
* `judge` puts a SEPARATE, tool-less call on the question: it reads the iteration's own report and rules
|
|
77
|
-
* against a rubric, having done none of the work and nothing invested in it being finished.
|
|
78
|
-
*
|
|
79
|
-
* The rule both encode, and the reason they are kept apart from the output: the check must be a DIFFERENT CALL
|
|
80
|
-
* from the work, or it is not a check. An output is what the worker says; a check is what someone else says.
|
|
81
|
-
*/
|
|
47
|
+
// What else has to be true, ANDed with the output above; must be a different call from the work, or it isn't a check.
|
|
48
|
+
// command: a shell one-liner in the tree; exit 0 means satisfied. Deterministic.
|
|
49
|
+
// judge: a separate, tool-less model call rules on the iteration's own report.
|
|
82
50
|
export const LoopCheckSchema = z.discriminatedUnion("kind", [
|
|
83
51
|
z.object({
|
|
84
52
|
kind: z
|
|
@@ -88,7 +56,6 @@ export const LoopCheckSchema = z.discriminatedUnion("kind", [
|
|
|
88
56
|
),
|
|
89
57
|
command: z.string().min(1).describe("The command to run in the conversation's own tree. Exiting cleanly means satisfied."),
|
|
90
58
|
}),
|
|
91
|
-
// The rubric is what the judge is asked; absent `model` runs it on the quick rung the other helpers use.
|
|
92
59
|
z.object({
|
|
93
60
|
kind: z
|
|
94
61
|
.literal("judge")
|
|
@@ -100,52 +67,36 @@ export const LoopCheckSchema = z.discriminatedUnion("kind", [
|
|
|
100
67
|
}),
|
|
101
68
|
]);
|
|
102
69
|
export type LoopCheck = z.infer<typeof LoopCheckSchema>;
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
*
|
|
106
|
-
* It is a FILE rather than a sentence in the reply for the reason every structured output in this codebase is
|
|
107
|
-
* a file: a reply has to be parsed out of prose the model is simultaneously using to talk to a person, and the
|
|
108
|
-
* two demands pull against each other until neither is served. A file has one job.
|
|
109
|
-
*/
|
|
70
|
+
// The verdict file every iteration writes, one shape for all three output kinds; a file, not a reply sentence, since
|
|
71
|
+
// parsing structure out of prose the model is also using to talk to a person serves neither well.
|
|
110
72
|
export const LoopDocumentSchema = z.object({
|
|
111
|
-
// Whether the goal is met NOW. The loop's own reading of this is the whole point of the file.
|
|
112
73
|
done: z.boolean().describe("Whether the goal is met. Reading this is the whole point of the file."),
|
|
113
|
-
// One line: why it is or is not met. The single most-read string in the feature, it is what the next
|
|
114
|
-
// iteration reads first and what the history row shows.
|
|
115
74
|
reason: z.string().describe("Why, in one line. The most-read sentence in the feature: the next round reads it first and the history shows it."),
|
|
116
|
-
// What the iteration checked to know that. Optional because a model with nothing to point at should say so
|
|
117
|
-
// by omitting it rather than by inventing a sentence.
|
|
118
75
|
evidence: z
|
|
119
76
|
.string()
|
|
120
77
|
.optional()
|
|
121
78
|
.describe(
|
|
122
79
|
"What was checked to know that. Optional, so a round with nothing to point at says so by leaving it out rather than by inventing a sentence.",
|
|
123
80
|
),
|
|
124
|
-
// The declared fields, present only for a `json` output and validated against them there.
|
|
125
81
|
data: z
|
|
126
82
|
.record(z.string(), z.unknown())
|
|
127
83
|
.optional()
|
|
128
84
|
.describe("The declared answer, for a loop that asked for one, checked against the shape it declared."),
|
|
129
85
|
});
|
|
130
86
|
export type LoopDocument = z.infer<typeof LoopDocumentSchema>;
|
|
131
|
-
//
|
|
132
|
-
// that has not converged in 50 turns is not one iteration short of it.
|
|
87
|
+
// Bounds a misconfigured loop; one that hasn't converged in 50 rounds is not one round short of it.
|
|
133
88
|
const LOOP_ITERATIONS_MAX = 50;
|
|
134
89
|
export const LoopSchema = z.object({
|
|
135
|
-
//
|
|
90
|
+
// Brings its fleet card, worktree and transcript for free.
|
|
136
91
|
conversationId: ConversationIdSchema.describe(
|
|
137
92
|
"The conversation to loop. It need not exist yet: naming a fresh one opens it, which is what lets run this until it passes be the first thing you ever say.",
|
|
138
93
|
),
|
|
139
|
-
// What "done" means, in the user's words. Rides into every iteration's prompt (and into the judge's
|
|
140
|
-
// question) so the model is told the goal it is being measured against rather than left to infer it.
|
|
141
94
|
goal: z
|
|
142
95
|
.string()
|
|
143
96
|
.min(1)
|
|
144
97
|
.describe(
|
|
145
98
|
"What done means, in your words. It goes into every round's instructions and into the judge's question, so the model is told the bar rather than left to infer it.",
|
|
146
99
|
),
|
|
147
|
-
// What each iteration is asked to DO. Separate from `goal` because they are different sentences: "make the
|
|
148
|
-
// suite green" is the goal, "run the tests, pick the top failure, fix it" is the instruction.
|
|
149
100
|
prompt: z
|
|
150
101
|
.string()
|
|
151
102
|
.min(1)
|
|
@@ -154,9 +105,6 @@ export const LoopSchema = z.object({
|
|
|
154
105
|
"How each round meets the last. Starting fresh makes the files the memory rather than the conversation, so the twentieth round reads the tree as clearly as the first, and costs a re-read each time. Carrying on is cheaper and keeps the reasoning, which suits a short polish-this loop and degrades on long ones: a session that has spent eleven rounds arguing for its own approach is the worst available judge of whether that approach is finished.",
|
|
155
106
|
),
|
|
156
107
|
output: LoopOutputSchema,
|
|
157
|
-
/* Everything besides the worker's own word that has to hold before the loop may end. Ordinarily one or
|
|
158
|
-
* none; a list because "the suite is green AND the report is written" is a real completion bar and
|
|
159
|
-
* expressing it as two loops would run the work twice. */
|
|
160
108
|
checks: z
|
|
161
109
|
.array(LoopCheckSchema)
|
|
162
110
|
.describe(
|
|
@@ -168,9 +116,6 @@ export const LoopSchema = z.object({
|
|
|
168
116
|
.min(1)
|
|
169
117
|
.max(LOOP_ITERATIONS_MAX)
|
|
170
118
|
.describe("How many rounds before it gives up. A loop that has not got there in fifty is not one round short of it."),
|
|
171
|
-
// The spend ceiling in USD across the whole loop, summed from the turns' own usage frames. Optional because
|
|
172
|
-
// a 3-iteration loop does not need one; strongly wanted on anything unattended, since this is the first
|
|
173
|
-
// feature in the sandbox that can spend without a person pressing anything between turns.
|
|
174
119
|
maxSpendUsd: z
|
|
175
120
|
.number()
|
|
176
121
|
.positive()
|
|
@@ -178,12 +123,6 @@ export const LoopSchema = z.object({
|
|
|
178
123
|
.describe(
|
|
179
124
|
"A ceiling on what the whole loop may spend, in dollars. Optional for a short loop somebody is watching, and strongly wanted otherwise: this is the first thing here that can keep spending with nobody pressing anything between rounds.",
|
|
180
125
|
),
|
|
181
|
-
/* Stop after this many CONSECUTIVE iterations that changed nothing in the tree.
|
|
182
|
-
*
|
|
183
|
-
* The guard that matters most in practice, and the one whose absence is expensive. The failure mode of a
|
|
184
|
-
* loop is not runaway success, it is an agent that re-reads the same three files, restates the same plan,
|
|
185
|
-
* declares more work remains, and does that eleven times. Nothing about that is an error, every turn
|
|
186
|
-
* succeeds, so only "the tree did not move" catches it. */
|
|
187
126
|
stallLimit: z
|
|
188
127
|
.number()
|
|
189
128
|
.int()
|
|
@@ -191,32 +130,23 @@ export const LoopSchema = z.object({
|
|
|
191
130
|
.describe(
|
|
192
131
|
"Stop after this many rounds in a row that changed nothing on disk. The guard that matters most: a loop's failure is not runaway success, it is an agent re-reading the same three files, restating the same plan and declaring more work remains, eleven times. Every one of those rounds succeeds, so only the tree not moving catches it.",
|
|
193
132
|
),
|
|
194
|
-
// Whether the iterations run in the conversation's own worktree or on the shared tree. Recorded on the loop
|
|
195
|
-
// rather than read off the conversation because a loop can OPEN one, and because it decides where the stop
|
|
196
|
-
// command runs: a check against /work would be testing code an isolated loop has not landed yet.
|
|
197
133
|
isolated: z
|
|
198
134
|
.boolean()
|
|
199
135
|
.describe(
|
|
200
136
|
"Whether it works in the conversation's own private copy or in the shared tree. It also decides where a check runs: testing the shared tree would be testing code this loop has not merged yet.",
|
|
201
137
|
),
|
|
202
|
-
//
|
|
203
|
-
// the
|
|
204
|
-
// driver has no composer to read them from.
|
|
138
|
+
// Same three passthroughs as an automation: a headless driver has no composer to read them from. Absent falls back
|
|
139
|
+
// to the conversation's last choice, then the provider default.
|
|
205
140
|
agent: AgentProviderSchema.optional().describe("Which provider the rounds run on. Absent falls back to the conversation's own last choice."),
|
|
206
141
|
harness: AgentHarnessSchema.optional().describe("Which agentic loop they run on."),
|
|
207
142
|
account: z.string().optional().describe("Which account pays."),
|
|
208
143
|
model: z.string().optional().describe("Which model."),
|
|
209
|
-
// Which persona the iterations act as (AgentTurnSchema.actsAs, read its note for why this is not spelled
|
|
210
|
-
// `account`). The fourth passthrough an automation carries, and it matters here for the automation's
|
|
211
|
-
// reason: every iteration is unattended, and an unattended turn with no persona reaches no logged-in
|
|
212
|
-
// account at all, pinning a card is the one way a loop gets hands.
|
|
213
144
|
actsAs: entryId
|
|
214
145
|
.optional()
|
|
215
146
|
.describe(
|
|
216
147
|
"Which persona the rounds act as. It matters here: every round is unwatched, and an unwatched turn naming no persona reaches no signed-in account at all, so pinning one is how a loop gets hands.",
|
|
217
148
|
),
|
|
218
|
-
//
|
|
219
|
-
// or let a candidate inherit the sandbox's global auto-land posture on a later iteration.
|
|
149
|
+
// Also stops a later iteration from inheriting the sandbox's global auto-land posture.
|
|
220
150
|
worktreeBase: z
|
|
221
151
|
.array(RepoBaseSchema)
|
|
222
152
|
.min(1)
|
|
@@ -226,22 +156,12 @@ export const LoopSchema = z.object({
|
|
|
226
156
|
autoLand: z.boolean().optional().describe("Whether the work merges as it goes."),
|
|
227
157
|
});
|
|
228
158
|
export type Loop = z.infer<typeof LoopSchema>;
|
|
229
|
-
//
|
|
230
|
-
//
|
|
231
|
-
// A predicate rather than a schema refinement because two routes want it as one, at different moments: `start`
|
|
232
|
-
// refuses an ad-hoc loop, and `saveDesign` refuses a SAVED one, which is the more valuable of the two, since a
|
|
233
|
-
// saved loop that cannot converge is a trap everyone who picks it afterwards pays a full run to discover.
|
|
159
|
+
// A loop with nothing to produce and nothing to check can only run to `exhausted`. A predicate, not a schema
|
|
160
|
+
// refinement, since both `start` and `saveDesign` need it at different moments.
|
|
234
161
|
export const loopCanConverge = (loop: Pick<Loop, "output" | "checks">): boolean => loop.output.kind !== "none" || loop.checks.length > 0;
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
* Under `.intentic` for the reason the acceptance runs are, it is outside every repo and bound back SHARED
|
|
238
|
-
* into an isolated turn's worktree, so the agent writes and the browser reads the same tree, with nothing to
|
|
239
|
-
* land and no git noise. `progress.md` is the loop's memory in `fresh` mode and its audit trail in `continue`
|
|
240
|
-
* mode; `iteration-<n>.json` is the verdict a `claim` stop reads. */
|
|
162
|
+
// Shared into an isolated turn's worktree (outside every repo, no git noise). `progress.md` is the loop's memory in
|
|
163
|
+
// `fresh` mode, its audit trail in `continue`; `iteration-<n>.json` is the verdict a `claim` stop reads.
|
|
241
164
|
export const LOOP_DIR = `${STATE_DIR}/records/artifacts/loops`;
|
|
242
|
-
// Why an iteration ended, which is not the same question as how the LOOP ended. `continue` is the ordinary
|
|
243
|
-
// "not done yet"; `error` is a turn that surfaced an error frame, which does NOT end the loop by itself, a
|
|
244
|
-
// failing turn is often exactly what the next iteration is supposed to fix.
|
|
245
165
|
export const LoopIterationSchema = z.object({
|
|
246
166
|
n: z.number().int().min(1).describe("Which round this was."),
|
|
247
167
|
at: z.number().describe("When it ran, in milliseconds."),
|
|
@@ -250,31 +170,22 @@ export const LoopIterationSchema = z.object({
|
|
|
250
170
|
.describe(
|
|
251
171
|
"How the round ended, which is not the same question as how the loop did. A round that errored does not end the loop by itself: a failing turn is often exactly what the next round is meant to fix.",
|
|
252
172
|
),
|
|
253
|
-
// The stop check's own words, the guard's output tail, the claim's reason, the judge's verdict. What the
|
|
254
|
-
// run history is actually read for: "why did it keep going" and "why did it stop".
|
|
255
173
|
detail: z
|
|
256
174
|
.string()
|
|
257
175
|
.optional()
|
|
258
176
|
.describe("What the check said, in its own words. What a run history is actually read for: why it kept going, and why it stopped."),
|
|
259
177
|
costUsd: z.number().optional().describe("What the round cost, in dollars."),
|
|
260
|
-
// Whether the tree moved this iteration. Feeds the stall detector, and is worth showing per row: three
|
|
261
|
-
// unchanged iterations in a history is the shape of a loop that is not working.
|
|
262
178
|
changed: z.boolean().describe("Whether anything on disk moved. Three unchanged rounds in a row is the shape of a loop that is not working."),
|
|
263
|
-
// The provider session this iteration ran on, the door from a history row to a readable transcript.
|
|
264
179
|
sessionId: z.string().optional().describe("The session it ran on, and the way from a history row to a readable record."),
|
|
265
180
|
});
|
|
266
181
|
export type LoopIteration = z.infer<typeof LoopIterationSchema>;
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
* `overspent`, maxSpendUsd was reached.
|
|
275
|
-
* `stopped`, the user pressed Stop.
|
|
276
|
-
* `error`, the loop itself failed (not a turn inside it; see LoopIteration.outcome).
|
|
277
|
-
*/
|
|
182
|
+
// How a loop ended:
|
|
183
|
+
// done: the stop condition was met.
|
|
184
|
+
// exhausted: maxIterations ran out, goal unmet.
|
|
185
|
+
// stalled: stallLimit consecutive no-op iterations — more room won't help, unlike exhausted.
|
|
186
|
+
// overspent: maxSpendUsd reached.
|
|
187
|
+
// stopped: the user pressed Stop.
|
|
188
|
+
// error: the loop itself failed, not a turn inside it (see `LoopIteration.outcome`).
|
|
278
189
|
export const LoopStateSchema = z.enum(["running", "done", "exhausted", "stalled", "overspent", "stopped", "error"]);
|
|
279
190
|
export type LoopState = z.infer<typeof LoopStateSchema>;
|
|
280
191
|
export const LoopRecordSchema = LoopSchema.extend({
|
|
@@ -283,13 +194,7 @@ export const LoopRecordSchema = LoopSchema.extend({
|
|
|
283
194
|
),
|
|
284
195
|
startedAt: z.number().describe("When it began, in milliseconds."),
|
|
285
196
|
endedAt: z.number().optional().describe("When it ended, in milliseconds."),
|
|
286
|
-
|
|
287
|
-
* marked `running` at boot is exactly one the daemon died under, which is the same trick turn-journal.ts
|
|
288
|
-
* plays with its files and needs no second store to play it.
|
|
289
|
-
*
|
|
290
|
-
* Counted, not just flagged, for the reason the turn journal counts its attempts, a loop whose iteration
|
|
291
|
-
* reliably kills the daemon (an OOM in a test it keeps running) would otherwise be resurrected on every
|
|
292
|
-
* boot forever, and the container is recreated on every sandbox update. */
|
|
197
|
+
// The record is its own boot journal; still `running` at boot means the daemon died mid-loop.
|
|
293
198
|
resumed: z
|
|
294
199
|
.number()
|
|
295
200
|
.int()
|
|
@@ -297,8 +202,7 @@ export const LoopRecordSchema = LoopSchema.extend({
|
|
|
297
202
|
.describe(
|
|
298
203
|
"How many times the sandbox restarted under it and picked it back up. Counted rather than flagged, so a loop whose round reliably kills the sandbox is not resurrected on every boot for ever.",
|
|
299
204
|
),
|
|
300
|
-
//
|
|
301
|
-
// check said something worth keeping).
|
|
205
|
+
// Mainly `error`, and a `done` whose check said something worth keeping.
|
|
302
206
|
detail: z.string().optional().describe("Why it ended, for the endings whose reason is not in their name."),
|
|
303
207
|
iterations: z
|
|
304
208
|
.array(LoopIterationSchema)
|
|
@@ -309,33 +213,14 @@ export const LoopsListSchema = z.object({
|
|
|
309
213
|
loops: z.array(LoopRecordSchema).describe("Every loop this workspace has run, newest first, kept after they end."),
|
|
310
214
|
});
|
|
311
215
|
export const LoopIdParamSchema = z.object({ conversationId: ConversationIdSchema.describe("Which conversation's loop.") });
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
* needs besides "what are we doing" is the same every time somebody sets one up, end on `pnpm test`, fresh
|
|
316
|
-
* context, eight rounds, five dollars, stop after two idle ones, and every one of those was being retyped, in
|
|
317
|
-
* a modal, before any work could begin. The goal is the only field that is genuinely new each time, and it is
|
|
318
|
-
* the one field the user has ALREADY WRITTEN: it is sitting in the composer.
|
|
319
|
-
*
|
|
320
|
-
* So this holds the machinery and the composer holds the job, which makes a loop the same gesture as a
|
|
321
|
-
* workflow, pick the shape, type the request, send. `WorkflowSchema` and this are deliberately siblings: both
|
|
322
|
-
* are designs, both are picked from the composer, both leave the sentence to the message. What a workflow
|
|
323
|
-
* spreads across sessions, a loop repeats in one.
|
|
324
|
-
*
|
|
325
|
-
* NO `conversationId` AND NO `isolated`, unlike the Loop this becomes. Both are facts about the agent the loop
|
|
326
|
-
* is aimed at, decided at the moment of sending and unknowable when the design is written, a saved loop that
|
|
327
|
-
* remembered a conversation would be a loop that could only ever be run once.
|
|
328
|
-
*/
|
|
216
|
+
// A saved loop is a loop with its goal removed: the machinery (checks, output, limits) is reused, the composer supplies
|
|
217
|
+
// the goal at send time, the same relationship `WorkflowSchema` has to a workflow. No `conversationId`/`isolated`: both
|
|
218
|
+
// are facts about the agent aimed at, unknowable when the design is written.
|
|
329
219
|
export const LoopDesignSchema = z.object({
|
|
330
220
|
id: entryId.describe("The design's id."),
|
|
331
|
-
// What it is called on the composer badge and in the picker, so it has to survive being read at pill width.
|
|
332
221
|
name: z.string().min(1).max(60).describe("What to call it. Short, because it has to be readable on a small badge."),
|
|
333
|
-
// One line: what this loop is FOR. Optional, because a well-named loop has already said it.
|
|
334
222
|
description: z.string().max(280).optional().describe("What it is for, in one line. Optional, because a well-named loop has already said it."),
|
|
335
|
-
|
|
336
|
-
* form made it optional: `goal` and `prompt` are different sentences, but making somebody write both before
|
|
337
|
-
* anything runs doubles the cost of trying a loop at all. Absent ⇒ the iteration works towards the goal
|
|
338
|
-
* however it sees fit. */
|
|
223
|
+
// Optional so trying a loop doesn't require writing two sentences before anything runs.
|
|
339
224
|
prompt: z
|
|
340
225
|
.string()
|
|
341
226
|
.optional()
|
|
@@ -355,8 +240,8 @@ export const LoopDesignsListSchema = z.object({
|
|
|
355
240
|
.array(LoopDesignSchema)
|
|
356
241
|
.describe("Saved loops: the machinery with the goal left out, so one design can be pointed at a different job every time."),
|
|
357
242
|
});
|
|
358
|
-
//
|
|
359
|
-
//
|
|
243
|
+
// One route for create and update, like a workflow save, with intent spelled out rather than inferred from an id
|
|
244
|
+
// collision.
|
|
360
245
|
export const LoopDesignSaveSchema = z.object({
|
|
361
246
|
design: LoopDesignSchema.describe("The design to write."),
|
|
362
247
|
create: z
|
|
@@ -366,9 +251,8 @@ export const LoopDesignSaveSchema = z.object({
|
|
|
366
251
|
),
|
|
367
252
|
});
|
|
368
253
|
export const LoopDesignIdParamSchema = z.object({ id: entryId.describe("Which saved loop.") });
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
* typed; `isolated` is a fact about the agent it is aimed at. */
|
|
254
|
+
// Turns a design into a runnable loop; kept here so nothing that starts a saved loop can disagree about what one means.
|
|
255
|
+
// `goal` is the user's message; `isolated` is a fact about the agent aimed at.
|
|
372
256
|
export const loopFromDesign = (design: LoopDesign, aim: { conversationId: string; goal: string; isolated: boolean }): Loop => ({
|
|
373
257
|
conversationId: aim.conversationId,
|
|
374
258
|
goal: aim.goal,
|
|
@@ -381,9 +265,8 @@ export const loopFromDesign = (design: LoopDesign, aim: { conversationId: string
|
|
|
381
265
|
stallLimit: design.stallLimit,
|
|
382
266
|
isolated: aim.isolated,
|
|
383
267
|
});
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
* has to clear first, then how far it may go trying. */
|
|
268
|
+
// One-line summary for the picker/card, computed rather than stored so the two can't disagree; ordered as read: the bar
|
|
269
|
+
// first, then how far it may try.
|
|
387
270
|
export const loopDesignLine = (design: LoopDesign): string => {
|
|
388
271
|
const command = design.checks.find((check) => check.kind === "command");
|
|
389
272
|
const ends =
|