@intentic/sandbox-contract 1.248.0 → 1.249.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -15
- package/dist/chores/chores.d.ts.map +1 -1
- package/dist/chores/chores.js.map +1 -1
- package/dist/chores/digest.d.ts.map +1 -1
- package/dist/chores/digest.js.map +1 -1
- package/dist/chores/extension-update.d.ts.map +1 -1
- package/dist/chores/extension-update.js.map +1 -1
- package/dist/chores/fix-deps.d.ts.map +1 -1
- package/dist/chores/fix-deps.js.map +1 -1
- package/dist/chores/index.d.ts +2 -2
- package/dist/chores/index.d.ts.map +1 -1
- package/dist/chores/index.js +1 -1
- package/dist/chores/index.js.map +1 -1
- package/dist/chores/probes.d.ts.map +1 -1
- package/dist/chores/probes.js.map +1 -1
- package/dist/chores/prompt.d.ts.map +1 -1
- package/dist/chores/prompt.js.map +1 -1
- package/dist/chores/stack.d.ts.map +1 -1
- package/dist/chores/stack.js.map +1 -1
- package/dist/chores/verdict.d.ts +7 -1
- package/dist/chores/verdict.d.ts.map +1 -1
- package/dist/chores/verdict.js +8 -0
- package/dist/chores/verdict.js.map +1 -1
- package/dist/contracts/accounts.contract.d.ts.map +1 -1
- package/dist/contracts/accounts.contract.js.map +1 -1
- package/dist/contracts/activity.contract.d.ts +1 -0
- package/dist/contracts/activity.contract.d.ts.map +1 -1
- package/dist/contracts/agent.contract.d.ts +12 -205
- package/dist/contracts/agent.contract.d.ts.map +1 -1
- package/dist/contracts/agent.contract.js +2 -1
- package/dist/contracts/agent.contract.js.map +1 -1
- package/dist/contracts/agents.contract.d.ts +228 -54
- package/dist/contracts/agents.contract.d.ts.map +1 -1
- package/dist/contracts/agents.contract.js +11 -2
- package/dist/contracts/agents.contract.js.map +1 -1
- package/dist/contracts/automations.contract.d.ts +35 -17
- package/dist/contracts/automations.contract.d.ts.map +1 -1
- package/dist/contracts/automations.contract.js +10 -1
- package/dist/contracts/automations.contract.js.map +1 -1
- package/dist/contracts/capabilities.contract.d.ts +0 -12
- package/dist/contracts/capabilities.contract.d.ts.map +1 -1
- package/dist/contracts/capabilities.contract.js +1 -1
- package/dist/contracts/capabilities.contract.js.map +1 -1
- package/dist/contracts/chores.contract.d.ts.map +1 -1
- package/dist/contracts/chores.contract.js.map +1 -1
- package/dist/contracts/ci.contract.d.ts +9 -0
- package/dist/contracts/ci.contract.d.ts.map +1 -1
- package/dist/contracts/endpoints.contract.d.ts.map +1 -1
- package/dist/contracts/endpoints.contract.js.map +1 -1
- package/dist/contracts/exit.contract.d.ts.map +1 -1
- package/dist/contracts/exit.contract.js +1 -1
- package/dist/contracts/exit.contract.js.map +1 -1
- package/dist/contracts/extensions.contract.d.ts.map +1 -1
- package/dist/contracts/extensions.contract.js.map +1 -1
- package/dist/contracts/git.contract.d.ts +45 -6
- package/dist/contracts/git.contract.d.ts.map +1 -1
- package/dist/contracts/git.contract.js +9 -9
- package/dist/contracts/git.contract.js.map +1 -1
- package/dist/contracts/host.contract.d.ts +2 -0
- package/dist/contracts/host.contract.d.ts.map +1 -1
- package/dist/contracts/host.contract.js.map +1 -1
- package/dist/contracts/intentic.contract.js +1 -1
- package/dist/contracts/intentic.contract.js.map +1 -1
- package/dist/contracts/logs.contract.d.ts.map +1 -1
- package/dist/contracts/logs.contract.js.map +1 -1
- package/dist/contracts/loops.contract.d.ts.map +1 -1
- package/dist/contracts/loops.contract.js.map +1 -1
- package/dist/contracts/personas.contract.d.ts +1 -0
- package/dist/contracts/personas.contract.d.ts.map +1 -1
- package/dist/contracts/personas.contract.js +1 -1
- package/dist/contracts/personas.contract.js.map +1 -1
- package/dist/contracts/providers.contract.d.ts.map +1 -1
- package/dist/contracts/providers.contract.js.map +1 -1
- package/dist/contracts/runner.contract.d.ts +97 -171
- package/dist/contracts/runner.contract.d.ts.map +1 -1
- package/dist/contracts/runner.contract.js +2 -2
- package/dist/contracts/runner.contract.js.map +1 -1
- package/dist/contracts/safety.contract.d.ts.map +1 -1
- package/dist/contracts/safety.contract.js +1 -1
- package/dist/contracts/safety.contract.js.map +1 -1
- package/dist/contracts/secrets.contract.d.ts.map +1 -1
- package/dist/contracts/secrets.contract.js.map +1 -1
- package/dist/contracts/sessions.contract.d.ts +2 -41
- package/dist/contracts/sessions.contract.d.ts.map +1 -1
- package/dist/contracts/sessions.contract.js +1 -1
- package/dist/contracts/sessions.contract.js.map +1 -1
- package/dist/contracts/settings.contract.d.ts +8 -18
- package/dist/contracts/settings.contract.d.ts.map +1 -1
- package/dist/contracts/settings.contract.js.map +1 -1
- package/dist/contracts/share.contract.d.ts.map +1 -1
- package/dist/contracts/share.contract.js.map +1 -1
- package/dist/contracts/skills.contract.d.ts.map +1 -1
- package/dist/contracts/skills.contract.js.map +1 -1
- package/dist/contracts/system.contract.d.ts +49 -73
- package/dist/contracts/system.contract.d.ts.map +1 -1
- package/dist/contracts/system.contract.js +12 -2
- package/dist/contracts/system.contract.js.map +1 -1
- package/dist/contracts/usage.contract.d.ts.map +1 -1
- package/dist/contracts/usage.contract.js.map +1 -1
- package/dist/contracts/vpn.contract.d.ts.map +1 -1
- package/dist/contracts/vpn.contract.js +1 -1
- package/dist/contracts/vpn.contract.js.map +1 -1
- package/dist/contracts/webext.contract.d.ts.map +1 -1
- package/dist/contracts/webext.contract.js.map +1 -1
- package/dist/contracts/workflows.contract.d.ts +7 -6
- package/dist/contracts/workflows.contract.d.ts.map +1 -1
- package/dist/contracts/workflows.contract.js +12 -3
- package/dist/contracts/workflows.contract.js.map +1 -1
- package/dist/contracts/workspace.contract.d.ts.map +1 -1
- package/dist/contracts/workspace.contract.js.map +1 -1
- package/dist/events/agent-events.d.ts +1237 -0
- package/dist/events/agent-events.d.ts.map +1 -0
- package/dist/events/agent-events.js +226 -0
- package/dist/events/agent-events.js.map +1 -0
- package/dist/events/cards.d.ts +404 -0
- package/dist/events/cards.d.ts.map +1 -0
- package/dist/events/cards.js +179 -0
- package/dist/events/cards.js.map +1 -0
- package/dist/events/resume.d.ts +23 -0
- package/dist/events/resume.d.ts.map +1 -0
- package/dist/events/resume.js +31 -0
- package/dist/events/resume.js.map +1 -0
- package/dist/events/system-events.d.ts +615 -0
- package/dist/events/system-events.d.ts.map +1 -0
- package/dist/events/system-events.js +64 -0
- package/dist/events/system-events.js.map +1 -0
- package/dist/events/transcript.d.ts +1755 -0
- package/dist/events/transcript.d.ts.map +1 -0
- package/dist/events/transcript.js +205 -0
- package/dist/events/transcript.js.map +1 -0
- package/dist/ids/conversation-ids.d.ts +8 -0
- package/dist/ids/conversation-ids.d.ts.map +1 -0
- package/dist/{conversation-ids.js → ids/conversation-ids.js} +13 -0
- package/dist/ids/conversation-ids.js.map +1 -0
- package/dist/ids/hostnames.d.ts.map +1 -0
- package/dist/ids/hostnames.js.map +1 -0
- package/dist/ids/session-names.d.ts.map +1 -0
- package/dist/ids/session-names.js.map +1 -0
- package/dist/ids/share-paths.d.ts.map +1 -0
- package/dist/ids/share-paths.js.map +1 -0
- package/dist/{tunnel-ids.d.ts → ids/tunnel-ids.d.ts} +1 -0
- package/dist/ids/tunnel-ids.d.ts.map +1 -0
- package/dist/{tunnel-ids.js → ids/tunnel-ids.js} +1 -0
- package/dist/ids/tunnel-ids.js.map +1 -0
- package/dist/index.d.ts +423 -450
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +54 -46
- package/dist/index.js.map +1 -1
- package/dist/{agent-catalog.d.ts → models/agent-catalog.d.ts} +2 -2
- package/dist/models/agent-catalog.d.ts.map +1 -0
- package/dist/models/agent-catalog.js.map +1 -0
- package/dist/models/agent-runtimes.d.ts.map +1 -0
- package/dist/models/agent-runtimes.js.map +1 -0
- package/dist/{fast-tier.d.ts → models/fast-tier.d.ts} +1 -1
- package/dist/models/fast-tier.d.ts.map +1 -0
- package/dist/models/fast-tier.js.map +1 -0
- package/dist/models/model-order.d.ts.map +1 -0
- package/dist/models/model-order.js.map +1 -0
- package/dist/{model-pins.d.ts → models/model-pins.d.ts} +1 -1
- package/dist/models/model-pins.d.ts.map +1 -0
- package/dist/models/model-pins.js.map +1 -0
- package/dist/{model-roles.d.ts → models/model-roles.d.ts} +0 -33
- package/dist/models/model-roles.d.ts.map +1 -0
- package/dist/{model-roles.js → models/model-roles.js} +0 -35
- package/dist/models/model-roles.js.map +1 -0
- package/dist/{plan-pools.d.ts → models/plan-pools.d.ts} +1 -1
- package/dist/models/plan-pools.d.ts.map +1 -0
- package/dist/models/plan-pools.js.map +1 -0
- package/dist/models/prompt-complexity.d.ts.map +1 -0
- package/dist/models/prompt-complexity.js.map +1 -0
- package/dist/models/provider-specs.d.ts.map +1 -0
- package/dist/models/provider-specs.js.map +1 -0
- package/dist/policy/approvals-execution.d.ts.map +1 -0
- package/dist/policy/approvals-execution.js.map +1 -0
- package/dist/{batch-runs.d.ts → policy/batch-runs.d.ts} +5 -1
- package/dist/policy/batch-runs.d.ts.map +1 -0
- package/dist/{batch-runs.js → policy/batch-runs.js} +10 -7
- package/dist/policy/batch-runs.js.map +1 -0
- package/dist/policy/capability-env.d.ts.map +1 -0
- package/dist/policy/capability-env.js.map +1 -0
- package/dist/policy/capability-secrets.d.ts.map +1 -0
- package/dist/policy/capability-secrets.js.map +1 -0
- package/dist/{card-status.d.ts → policy/card-status.d.ts} +2 -2
- package/dist/policy/card-status.d.ts.map +1 -0
- package/dist/{card-status.js → policy/card-status.js} +1 -5
- package/dist/policy/card-status.js.map +1 -0
- package/dist/{command-classes.d.ts → policy/command-classes.d.ts} +6 -2
- package/dist/policy/command-classes.d.ts.map +1 -0
- package/dist/{command-classes.js → policy/command-classes.js} +48 -11
- package/dist/policy/command-classes.js.map +1 -0
- package/dist/{command-run.d.ts → policy/command-run.d.ts} +1 -1
- package/dist/policy/command-run.d.ts.map +1 -0
- package/dist/policy/command-run.js.map +1 -0
- package/dist/policy/control-scopes.d.ts +16 -0
- package/dist/policy/control-scopes.d.ts.map +1 -0
- package/dist/policy/control-scopes.js +26 -0
- package/dist/policy/control-scopes.js.map +1 -0
- package/dist/policy/credential-material.d.ts.map +1 -0
- package/dist/policy/credential-material.js.map +1 -0
- package/dist/policy/needs-action.d.ts.map +1 -0
- package/dist/policy/needs-action.js.map +1 -0
- package/dist/policy/output-fields.d.ts.map +1 -0
- package/dist/policy/output-fields.js.map +1 -0
- package/dist/policy/overlay-lint.d.ts.map +1 -0
- package/dist/policy/overlay-lint.js.map +1 -0
- package/dist/policy/owner-ticket.d.ts.map +1 -0
- package/dist/{owner-ticket.js → policy/owner-ticket.js} +1 -1
- package/dist/policy/owner-ticket.js.map +1 -0
- package/dist/{safety-policy.d.ts → policy/safety-policy.d.ts} +6 -5
- package/dist/policy/safety-policy.d.ts.map +1 -0
- package/dist/{safety-policy.js → policy/safety-policy.js} +12 -12
- package/dist/policy/safety-policy.js.map +1 -0
- package/dist/policy/search-globs.d.ts.map +1 -0
- package/dist/policy/search-globs.js.map +1 -0
- package/dist/protocol/container-requirements.d.ts +20 -0
- package/dist/protocol/container-requirements.d.ts.map +1 -0
- package/dist/protocol/container-requirements.js +23 -0
- package/dist/protocol/container-requirements.js.map +1 -0
- package/dist/{host-protocol.d.ts → protocol/host-protocol.d.ts} +1 -0
- package/dist/protocol/host-protocol.d.ts.map +1 -0
- package/dist/{host-protocol.js → protocol/host-protocol.js} +1 -0
- package/dist/protocol/host-protocol.js.map +1 -0
- package/dist/protocol/ingress-contract.d.ts.map +1 -0
- package/dist/{ingress-contract.js → protocol/ingress-contract.js} +1 -1
- package/dist/protocol/ingress-contract.js.map +1 -0
- package/dist/protocol/ingress-protocol.d.ts.map +1 -0
- package/dist/protocol/ingress-protocol.js.map +1 -0
- package/dist/protocol/listener-protocol.d.ts.map +1 -0
- package/dist/{listener-protocol.js → protocol/listener-protocol.js} +1 -1
- package/dist/protocol/listener-protocol.js.map +1 -0
- package/dist/{peer-dial.d.ts → protocol/peer-dial.d.ts} +4 -1
- package/dist/protocol/peer-dial.d.ts.map +1 -0
- package/dist/{peer-dial.js → protocol/peer-dial.js} +51 -10
- package/dist/protocol/peer-dial.js.map +1 -0
- package/dist/protocol/peer-mcp-server.d.ts.map +1 -0
- package/dist/protocol/peer-mcp-server.js.map +1 -0
- package/dist/protocol/request-id.d.ts.map +1 -0
- package/dist/protocol/request-id.js.map +1 -0
- package/dist/protocol/routes.d.ts.map +1 -0
- package/dist/protocol/routes.js.map +1 -0
- package/dist/{runner-protocol.d.ts → protocol/runner-protocol.d.ts} +1 -0
- package/dist/protocol/runner-protocol.d.ts.map +1 -0
- package/dist/{runner-protocol.js → protocol/runner-protocol.js} +2 -1
- package/dist/protocol/runner-protocol.js.map +1 -0
- package/dist/protocol/sse.d.ts.map +1 -0
- package/dist/protocol/sse.js.map +1 -0
- package/dist/{terminal-protocol.d.ts → protocol/terminal-protocol.d.ts} +1 -3
- package/dist/protocol/terminal-protocol.d.ts.map +1 -0
- package/dist/protocol/terminal-protocol.js.map +1 -0
- package/dist/protocol/webext-links.d.ts.map +1 -0
- package/dist/protocol/webext-links.js.map +1 -0
- package/dist/{webext-protocol.d.ts → protocol/webext-protocol.d.ts} +1 -0
- package/dist/protocol/webext-protocol.d.ts.map +1 -0
- package/dist/{webext-protocol.js → protocol/webext-protocol.js} +1 -0
- package/dist/protocol/webext-protocol.js.map +1 -0
- package/dist/schemas/activity.d.ts +2 -0
- package/dist/schemas/activity.d.ts.map +1 -1
- package/dist/schemas/activity.js +4 -0
- package/dist/schemas/activity.js.map +1 -1
- package/dist/schemas/agent.d.ts +16 -4
- package/dist/schemas/agent.d.ts.map +1 -1
- package/dist/schemas/agent.js +21 -4
- package/dist/schemas/agent.js.map +1 -1
- package/dist/schemas/agents.d.ts +17 -4
- package/dist/schemas/agents.d.ts.map +1 -1
- package/dist/schemas/agents.js +15 -4
- package/dist/schemas/agents.js.map +1 -1
- package/dist/schemas/approvals.d.ts.map +1 -1
- package/dist/schemas/approvals.js.map +1 -1
- package/dist/schemas/automations.d.ts +54 -28
- package/dist/schemas/automations.d.ts.map +1 -1
- package/dist/schemas/automations.js +26 -8
- package/dist/schemas/automations.js.map +1 -1
- package/dist/schemas/capabilities.d.ts +0 -8
- package/dist/schemas/capabilities.d.ts.map +1 -1
- package/dist/schemas/capabilities.js +0 -4
- package/dist/schemas/capabilities.js.map +1 -1
- package/dist/schemas/ci.d.ts +10 -0
- package/dist/schemas/ci.d.ts.map +1 -1
- package/dist/schemas/ci.js +9 -1
- package/dist/schemas/ci.js.map +1 -1
- package/dist/schemas/codebase-health.d.ts.map +1 -1
- package/dist/schemas/codebase-health.js.map +1 -1
- package/dist/schemas/devices.d.ts +90 -0
- package/dist/schemas/devices.d.ts.map +1 -1
- package/dist/schemas/devices.js +10 -1
- package/dist/schemas/devices.js.map +1 -1
- package/dist/schemas/engines.d.ts.map +1 -1
- package/dist/schemas/engines.js.map +1 -1
- package/dist/schemas/environment.d.ts.map +1 -1
- package/dist/schemas/environment.js.map +1 -1
- package/dist/schemas/exit.d.ts.map +1 -1
- package/dist/schemas/exit.js.map +1 -1
- package/dist/schemas/extension-updates.d.ts.map +1 -1
- package/dist/schemas/extension-updates.js.map +1 -1
- package/dist/schemas/git-history.d.ts.map +1 -1
- package/dist/schemas/git-history.js.map +1 -1
- package/dist/schemas/git.d.ts +80 -16
- package/dist/schemas/git.d.ts.map +1 -1
- package/dist/schemas/git.js +37 -25
- package/dist/schemas/git.js.map +1 -1
- package/dist/schemas/history.d.ts.map +1 -1
- package/dist/schemas/history.js.map +1 -1
- package/dist/schemas/hosts.d.ts.map +1 -1
- package/dist/schemas/hosts.js.map +1 -1
- package/dist/schemas/inventory.d.ts.map +1 -1
- package/dist/schemas/inventory.js.map +1 -1
- package/dist/schemas/issues.d.ts +0 -1
- package/dist/schemas/issues.d.ts.map +1 -1
- package/dist/schemas/issues.js +0 -1
- package/dist/schemas/issues.js.map +1 -1
- package/dist/schemas/logs.d.ts.map +1 -1
- package/dist/schemas/logs.js.map +1 -1
- package/dist/schemas/loops.d.ts.map +1 -1
- package/dist/schemas/loops.js +1 -1
- package/dist/schemas/loops.js.map +1 -1
- package/dist/schemas/maintenance.d.ts.map +1 -1
- package/dist/schemas/maintenance.js.map +1 -1
- package/dist/schemas/marketplace.d.ts +0 -4
- package/dist/schemas/marketplace.d.ts.map +1 -1
- package/dist/schemas/panels.d.ts.map +1 -1
- package/dist/schemas/panels.js.map +1 -1
- package/dist/schemas/personas.d.ts +2 -1
- package/dist/schemas/personas.d.ts.map +1 -1
- package/dist/schemas/personas.js +6 -2
- package/dist/schemas/personas.js.map +1 -1
- package/dist/schemas/plan-limits.d.ts +2 -4
- package/dist/schemas/plan-limits.d.ts.map +1 -1
- package/dist/schemas/plan-limits.js +5 -8
- package/dist/schemas/plan-limits.js.map +1 -1
- package/dist/schemas/ports.d.ts.map +1 -1
- package/dist/schemas/ports.js.map +1 -1
- package/dist/schemas/provider-oauth.d.ts.map +1 -1
- package/dist/schemas/provider-oauth.js.map +1 -1
- package/dist/schemas/provider-subscriptions.d.ts +1 -1
- package/dist/schemas/provider-subscriptions.d.ts.map +1 -1
- package/dist/schemas/provider-subscriptions.js +1 -1
- package/dist/schemas/provider-subscriptions.js.map +1 -1
- package/dist/schemas/public.d.ts.map +1 -1
- package/dist/schemas/public.js.map +1 -1
- package/dist/schemas/push.d.ts.map +1 -1
- package/dist/schemas/push.js.map +1 -1
- package/dist/schemas/secrets.d.ts.map +1 -1
- package/dist/schemas/secrets.js.map +1 -1
- package/dist/schemas/settings.d.ts +6 -9
- package/dist/schemas/settings.d.ts.map +1 -1
- package/dist/schemas/settings.js +16 -5
- package/dist/schemas/settings.js.map +1 -1
- package/dist/schemas/share.d.ts.map +1 -1
- package/dist/schemas/share.js.map +1 -1
- package/dist/schemas/shared.d.ts +4 -0
- package/dist/schemas/shared.d.ts.map +1 -1
- package/dist/schemas/shared.js +3 -0
- package/dist/schemas/shared.js.map +1 -1
- package/dist/schemas/system.d.ts +6 -0
- package/dist/schemas/system.d.ts.map +1 -1
- package/dist/schemas/system.js +10 -0
- package/dist/schemas/system.js.map +1 -1
- package/dist/schemas/terminal.d.ts.map +1 -1
- package/dist/schemas/terminal.js.map +1 -1
- package/dist/schemas/usage.d.ts.map +1 -1
- package/dist/schemas/usage.js.map +1 -1
- package/dist/schemas/vpn.d.ts.map +1 -1
- package/dist/schemas/vpn.js.map +1 -1
- package/dist/schemas/webext.d.ts.map +1 -1
- package/dist/schemas/webext.js.map +1 -1
- package/dist/schemas/workflows.d.ts +66 -9
- package/dist/schemas/workflows.d.ts.map +1 -1
- package/dist/schemas/workflows.js +6 -5
- package/dist/schemas/workflows.js.map +1 -1
- package/dist/schemas/workspace-repos.d.ts.map +1 -1
- package/dist/schemas/workspace-repos.js.map +1 -1
- package/dist/schemas/workspace-search.d.ts.map +1 -1
- package/dist/schemas/workspace-search.js.map +1 -1
- package/dist/schemas/workspace-setup.d.ts.map +1 -1
- package/dist/schemas/workspace-setup.js.map +1 -1
- package/dist/schemas/workspace-tree.d.ts.map +1 -1
- package/dist/schemas/workspace-tree.js.map +1 -1
- package/dist/state/arrival.d.ts.map +1 -0
- package/dist/{arrival.js → state/arrival.js} +1 -1
- package/dist/state/arrival.js.map +1 -0
- package/dist/state/contract-lock.d.ts.map +1 -0
- package/dist/{contract-lock.js → state/contract-lock.js} +1 -1
- package/dist/state/contract-lock.js.map +1 -0
- package/dist/{definition.d.ts → state/definition.d.ts} +21 -17
- package/dist/state/definition.d.ts.map +1 -0
- package/dist/{definition.js → state/definition.js} +4 -4
- package/dist/state/definition.js.map +1 -0
- package/dist/state/history-state.d.ts.map +1 -0
- package/dist/{history-state.js → state/history-state.js} +1 -0
- package/dist/state/history-state.js.map +1 -0
- package/dist/state/runtime-state.d.ts.map +1 -0
- package/dist/state/runtime-state.js.map +1 -0
- package/dist/state/starter.d.ts.map +1 -0
- package/dist/state/starter.js.map +1 -0
- package/dist/state/state-portability.d.ts.map +1 -0
- package/dist/state/state-portability.js.map +1 -0
- package/dist/state/versions.d.ts.map +1 -0
- package/dist/state/versions.js.map +1 -0
- package/dist/{workspace-state.d.ts → state/workspace-state.d.ts} +8 -0
- package/dist/state/workspace-state.d.ts.map +1 -0
- package/dist/{workspace-state.js → state/workspace-state.js} +25 -0
- package/dist/state/workspace-state.js.map +1 -0
- package/dist/{documents.d.ts → text/documents.d.ts} +1 -1
- package/dist/text/documents.d.ts.map +1 -0
- package/dist/{documents.js → text/documents.js} +1 -1
- package/dist/text/documents.js.map +1 -0
- package/dist/text/embed.d.ts.map +1 -0
- package/dist/text/embed.js.map +1 -0
- package/dist/text/mentions.d.ts.map +1 -0
- package/dist/text/mentions.js.map +1 -0
- package/dist/text/model-answer.d.ts +3 -0
- package/dist/text/model-answer.d.ts.map +1 -0
- package/dist/text/model-answer.js +3 -0
- package/dist/text/model-answer.js.map +1 -0
- package/dist/text/path-refs.d.ts.map +1 -0
- package/dist/text/path-refs.js.map +1 -0
- package/dist/{shell-regions.d.ts → text/shell-regions.d.ts} +1 -1
- package/dist/text/shell-regions.d.ts.map +1 -0
- package/dist/text/shell-regions.js.map +1 -0
- package/dist/text/title.d.ts.map +1 -0
- package/dist/text/title.js.map +1 -0
- package/dist/{transcript-fold.d.ts → text/transcript-fold.d.ts} +2 -1
- package/dist/text/transcript-fold.d.ts.map +1 -0
- package/dist/{transcript-fold.js → text/transcript-fold.js} +2 -16
- package/dist/text/transcript-fold.js.map +1 -0
- package/dist/text/whisper.d.ts +3 -0
- package/dist/text/whisper.d.ts.map +1 -0
- package/dist/text/whisper.js +11 -0
- package/dist/text/whisper.js.map +1 -0
- package/dist/{workflow-faults.d.ts → text/workflow-faults.d.ts} +1 -1
- package/dist/text/workflow-faults.d.ts.map +1 -0
- package/dist/{workflow-faults.js → text/workflow-faults.js} +1 -1
- package/dist/text/workflow-faults.js.map +1 -0
- package/package.json +70 -70
- package/src/chores/chores.test.ts +4 -10
- package/src/chores/chores.ts +148 -392
- package/src/chores/digest.ts +8 -28
- package/src/chores/extension-update.ts +3 -8
- package/src/chores/fix-deps.ts +4 -18
- package/src/chores/index.ts +2 -2
- package/src/chores/probes.test.ts +7 -43
- package/src/chores/probes.ts +62 -167
- package/src/chores/prompt.ts +10 -34
- package/src/chores/stack.test.ts +6 -45
- package/src/chores/stack.ts +27 -118
- package/src/chores/verdict.test.ts +101 -80
- package/src/chores/verdict.ts +54 -99
- package/src/contracts/accounts.contract.ts +4 -19
- package/src/contracts/agent.contract.ts +7 -22
- package/src/contracts/agents.contract.ts +25 -71
- package/src/contracts/automations.contract.ts +14 -30
- package/src/contracts/capabilities.contract.ts +8 -35
- package/src/contracts/chores.contract.ts +4 -15
- package/src/contracts/endpoints.contract.ts +5 -22
- package/src/contracts/exit.contract.ts +7 -30
- package/src/contracts/extensions.contract.ts +8 -30
- package/src/contracts/git.contract.ts +25 -49
- package/src/contracts/host.contract.ts +9 -44
- package/src/contracts/intentic.contract.ts +1 -1
- package/src/contracts/logs.contract.ts +3 -13
- package/src/contracts/loops.contract.ts +9 -40
- package/src/contracts/personas.contract.ts +10 -35
- package/src/contracts/providers.contract.ts +4 -17
- package/src/contracts/runner.contract.ts +12 -39
- package/src/contracts/safety.contract.ts +5 -14
- package/src/contracts/secrets.contract.ts +4 -22
- package/src/contracts/sessions.contract.ts +1 -1
- package/src/contracts/settings.contract.ts +4 -10
- package/src/contracts/share.contract.ts +3 -9
- package/src/contracts/skills.contract.ts +4 -15
- package/src/contracts/system.contract.ts +26 -52
- package/src/contracts/usage.contract.ts +7 -21
- package/src/contracts/vpn.contract.ts +9 -16
- package/src/contracts/webext.contract.ts +9 -25
- package/src/contracts/workflows.contract.ts +34 -58
- package/src/contracts/workspace.contract.ts +19 -50
- package/src/events/agent-events.ts +345 -0
- package/src/events/cards.ts +286 -0
- package/src/{events.test.ts → events/resume.test.ts} +4 -19
- package/src/events/resume.ts +60 -0
- package/src/events/system-events.ts +139 -0
- package/src/events/transcript.ts +320 -0
- package/src/{conversation-ids.test.ts → ids/conversation-ids.test.ts} +25 -13
- package/src/ids/conversation-ids.ts +178 -0
- package/src/ids/hostnames.ts +129 -0
- package/src/ids/session-names.ts +29 -0
- package/src/ids/share-paths.ts +43 -0
- package/src/{tunnel-ids.test.ts → ids/tunnel-ids.test.ts} +1 -14
- package/src/ids/tunnel-ids.ts +29 -0
- package/src/index.ts +71 -87
- package/src/{agent-catalog.test.ts → models/agent-catalog.test.ts} +19 -93
- package/src/models/agent-catalog.ts +174 -0
- package/src/models/agent-runtimes.ts +201 -0
- package/src/models/capability-ledger.test.ts +84 -0
- package/src/{fast-tier.test.ts → models/fast-tier.test.ts} +7 -18
- package/src/models/fast-tier.ts +36 -0
- package/src/{model-order.test.ts → models/model-order.test.ts} +19 -40
- package/src/models/model-order.ts +163 -0
- package/src/{model-pins.test.ts → models/model-pins.test.ts} +12 -46
- package/src/models/model-pins.ts +57 -0
- package/src/models/model-roles.test.ts +38 -0
- package/src/models/model-roles.ts +180 -0
- package/src/{plan-pools.test.ts → models/plan-pools.test.ts} +6 -11
- package/src/models/plan-pools.ts +65 -0
- package/src/{prompt-complexity.test.ts → models/prompt-complexity.test.ts} +8 -60
- package/src/models/prompt-complexity.ts +215 -0
- package/src/{provider-specs.test.ts → models/provider-specs.test.ts} +18 -47
- package/src/models/provider-specs.ts +272 -0
- package/src/policy/approvals-execution.ts +58 -0
- package/src/{batch-runs.test.ts → policy/batch-runs.test.ts} +4 -20
- package/src/policy/batch-runs.ts +137 -0
- package/src/policy/capability-secrets.ts +5 -0
- package/src/{card-status.ts → policy/card-status.ts} +11 -26
- package/src/{command-classes.test.ts → policy/command-classes.test.ts} +11 -118
- package/src/policy/command-classes.ts +395 -0
- package/src/policy/command-run.ts +65 -0
- package/src/policy/control-scopes.ts +38 -0
- package/src/{credential-material.test.ts → policy/credential-material.test.ts} +4 -26
- package/src/policy/credential-material.ts +91 -0
- package/src/policy/needs-action.ts +5 -0
- package/src/policy/output-fields.ts +86 -0
- package/src/policy/overlay-lint.ts +100 -0
- package/src/{owner-ticket.test.ts → policy/owner-ticket.test.ts} +1 -1
- package/src/{owner-ticket.ts → policy/owner-ticket.ts} +9 -31
- package/src/policy/safety-policy.test.ts +84 -0
- package/src/policy/safety-policy.ts +142 -0
- package/src/policy/search-globs.ts +60 -0
- package/src/protocol/container-requirements.test.ts +72 -0
- package/src/protocol/container-requirements.ts +58 -0
- package/src/protocol/host-protocol.ts +29 -0
- package/src/protocol/ingress-contract.ts +103 -0
- package/src/{ingress-protocol.test.ts → protocol/ingress-protocol.test.ts} +25 -90
- package/src/protocol/ingress-protocol.ts +441 -0
- package/src/protocol/listener-protocol.ts +75 -0
- package/src/{peer-dial.test.ts → protocol/peer-dial.test.ts} +52 -1
- package/src/protocol/peer-dial.ts +207 -0
- package/src/{peer-mcp-server.ts → protocol/peer-mcp-server.ts} +16 -41
- package/src/protocol/request-id.ts +5 -0
- package/src/{routes.test.ts → protocol/routes.test.ts} +14 -22
- package/src/protocol/routes.ts +159 -0
- package/src/protocol/runner-protocol.ts +197 -0
- package/src/protocol/terminal-protocol.ts +13 -0
- package/src/protocol/webext-links.ts +50 -0
- package/src/protocol/webext-protocol.ts +24 -0
- package/src/schemas/activity.ts +22 -30
- package/src/schemas/agent.ts +130 -238
- package/src/schemas/agents.ts +165 -483
- package/src/schemas/approvals.ts +23 -71
- package/src/schemas/automations.ts +142 -250
- package/src/schemas/capabilities.ts +127 -414
- package/src/schemas/ci.ts +56 -108
- package/src/schemas/codebase-health.ts +7 -11
- package/src/schemas/devices.ts +98 -321
- package/src/schemas/engines.ts +16 -44
- package/src/schemas/environment.ts +41 -91
- package/src/schemas/exit.ts +24 -81
- package/src/schemas/extension-updates.ts +42 -87
- package/src/schemas/git-history.ts +30 -84
- package/src/schemas/git.ts +141 -256
- package/src/schemas/history.ts +14 -40
- package/src/schemas/hosts.ts +9 -15
- package/src/schemas/inventory.ts +8 -10
- package/src/schemas/issues.ts +66 -134
- package/src/schemas/logs.ts +15 -34
- package/src/schemas/loops.ts +46 -163
- package/src/schemas/maintenance.ts +47 -172
- package/src/schemas/panels.ts +20 -45
- package/src/schemas/personas.ts +50 -200
- package/src/schemas/plan-limits.ts +58 -197
- package/src/schemas/ports.ts +14 -32
- package/src/schemas/provider-oauth.ts +23 -76
- package/src/schemas/provider-subscriptions.ts +4 -13
- package/src/schemas/public.ts +4 -15
- package/src/schemas/push.ts +8 -36
- package/src/schemas/secrets.ts +20 -64
- package/src/schemas/settings.ts +175 -600
- package/src/schemas/share.ts +14 -32
- package/src/schemas/shared.ts +14 -13
- package/src/schemas/system.ts +46 -78
- package/src/schemas/terminal.ts +41 -120
- package/src/schemas/usage.ts +44 -233
- package/src/schemas/version-seam.test.ts +9 -26
- package/src/schemas/vpn.ts +27 -64
- package/src/schemas/webext.ts +22 -53
- package/src/schemas/workflows.ts +57 -183
- package/src/schemas/workspace-repos.ts +12 -24
- package/src/schemas/workspace-search.ts +17 -35
- package/src/schemas/workspace-setup.ts +4 -11
- package/src/schemas/workspace-tree.ts +32 -91
- package/src/state/arrival.ts +109 -0
- package/src/state/contract-lock.test.ts +17 -0
- package/src/state/contract-lock.ts +49 -0
- package/src/state/definition.ts +143 -0
- package/src/state/history-state.ts +103 -0
- package/src/{runtime-state.test.ts → state/runtime-state.test.ts} +3 -10
- package/src/state/runtime-state.ts +62 -0
- package/src/state/starter.ts +5 -0
- package/src/state/state-portability.ts +27 -0
- package/src/state/versions.ts +26 -0
- package/src/{workspace-state.test.ts → state/workspace-state.test.ts} +65 -172
- package/src/state/workspace-state.ts +669 -0
- package/src/{documents.test.ts → text/documents.test.ts} +1 -1
- package/src/text/documents.ts +42 -0
- package/src/text/embed.ts +132 -0
- package/src/text/mentions.ts +21 -0
- package/src/text/model-answer.ts +9 -0
- package/src/text/path-refs.ts +39 -0
- package/src/text/shell-regions.ts +224 -0
- package/src/{title.test.ts → text/title.test.ts} +13 -32
- package/src/text/title.ts +202 -0
- package/src/{transcript-fold.test.ts → text/transcript-fold.test.ts} +5 -83
- package/src/{transcript-fold.ts → text/transcript-fold.ts} +65 -170
- package/src/text/whisper.test.ts +19 -0
- package/src/text/whisper.ts +17 -0
- package/src/{workflow-faults.test.ts → text/workflow-faults.test.ts} +6 -24
- package/src/{workflow-faults.ts → text/workflow-faults.ts} +20 -60
- package/dist/agent-catalog.d.ts.map +0 -1
- package/dist/agent-catalog.js.map +0 -1
- package/dist/agent-runtimes.d.ts.map +0 -1
- package/dist/agent-runtimes.js.map +0 -1
- package/dist/approvals-execution.d.ts.map +0 -1
- package/dist/approvals-execution.js.map +0 -1
- package/dist/arrival.d.ts.map +0 -1
- package/dist/arrival.js.map +0 -1
- package/dist/batch-runs.d.ts.map +0 -1
- package/dist/batch-runs.js.map +0 -1
- package/dist/capability-env.d.ts.map +0 -1
- package/dist/capability-env.js.map +0 -1
- package/dist/capability-secrets.d.ts.map +0 -1
- package/dist/capability-secrets.js.map +0 -1
- package/dist/card-status.d.ts.map +0 -1
- package/dist/card-status.js.map +0 -1
- package/dist/command-classes.d.ts.map +0 -1
- package/dist/command-classes.js.map +0 -1
- package/dist/command-run.d.ts.map +0 -1
- package/dist/command-run.js.map +0 -1
- package/dist/contract-lock.d.ts.map +0 -1
- package/dist/contract-lock.js.map +0 -1
- package/dist/conversation-ids.d.ts +0 -4
- package/dist/conversation-ids.d.ts.map +0 -1
- package/dist/conversation-ids.js.map +0 -1
- package/dist/credential-material.d.ts.map +0 -1
- package/dist/credential-material.js.map +0 -1
- package/dist/definition.d.ts.map +0 -1
- package/dist/definition.js.map +0 -1
- package/dist/documents.d.ts.map +0 -1
- package/dist/documents.js.map +0 -1
- package/dist/embed.d.ts.map +0 -1
- package/dist/embed.js.map +0 -1
- package/dist/events.d.ts +0 -4336
- package/dist/events.d.ts.map +0 -1
- package/dist/events.js +0 -725
- package/dist/events.js.map +0 -1
- package/dist/fast-tier.d.ts.map +0 -1
- package/dist/fast-tier.js.map +0 -1
- package/dist/history-state.d.ts.map +0 -1
- package/dist/history-state.js.map +0 -1
- package/dist/host-protocol.d.ts.map +0 -1
- package/dist/host-protocol.js.map +0 -1
- package/dist/hostnames.d.ts.map +0 -1
- package/dist/hostnames.js.map +0 -1
- package/dist/ingress-contract.d.ts.map +0 -1
- package/dist/ingress-contract.js.map +0 -1
- package/dist/ingress-protocol.d.ts.map +0 -1
- package/dist/ingress-protocol.js.map +0 -1
- package/dist/listener-protocol.d.ts.map +0 -1
- package/dist/listener-protocol.js.map +0 -1
- package/dist/mentions.d.ts.map +0 -1
- package/dist/mentions.js.map +0 -1
- package/dist/model-order.d.ts.map +0 -1
- package/dist/model-order.js.map +0 -1
- package/dist/model-pins.d.ts.map +0 -1
- package/dist/model-pins.js.map +0 -1
- package/dist/model-roles.d.ts.map +0 -1
- package/dist/model-roles.js.map +0 -1
- package/dist/needs-action.d.ts.map +0 -1
- package/dist/needs-action.js.map +0 -1
- package/dist/output-fields.d.ts.map +0 -1
- package/dist/output-fields.js.map +0 -1
- package/dist/overlay-lint.d.ts.map +0 -1
- package/dist/overlay-lint.js.map +0 -1
- package/dist/owner-ticket.d.ts.map +0 -1
- package/dist/owner-ticket.js.map +0 -1
- package/dist/path-refs.d.ts.map +0 -1
- package/dist/path-refs.js.map +0 -1
- package/dist/peer-dial.d.ts.map +0 -1
- package/dist/peer-dial.js.map +0 -1
- package/dist/peer-mcp-server.d.ts.map +0 -1
- package/dist/peer-mcp-server.js.map +0 -1
- package/dist/plan-pools.d.ts.map +0 -1
- package/dist/plan-pools.js.map +0 -1
- package/dist/prompt-complexity.d.ts.map +0 -1
- package/dist/prompt-complexity.js.map +0 -1
- package/dist/provider-specs.d.ts.map +0 -1
- package/dist/provider-specs.js.map +0 -1
- package/dist/request-id.d.ts.map +0 -1
- package/dist/request-id.js.map +0 -1
- package/dist/routes.d.ts.map +0 -1
- package/dist/routes.js.map +0 -1
- package/dist/runner-protocol.d.ts.map +0 -1
- package/dist/runner-protocol.js.map +0 -1
- package/dist/runtime-state.d.ts.map +0 -1
- package/dist/runtime-state.js.map +0 -1
- package/dist/safety-policy.d.ts.map +0 -1
- package/dist/safety-policy.js.map +0 -1
- package/dist/search-globs.d.ts.map +0 -1
- package/dist/search-globs.js.map +0 -1
- package/dist/session-names.d.ts.map +0 -1
- package/dist/session-names.js.map +0 -1
- package/dist/share-paths.d.ts.map +0 -1
- package/dist/share-paths.js.map +0 -1
- package/dist/shell-regions.d.ts.map +0 -1
- package/dist/shell-regions.js.map +0 -1
- package/dist/sse.d.ts.map +0 -1
- package/dist/sse.js.map +0 -1
- package/dist/starter.d.ts.map +0 -1
- package/dist/starter.js.map +0 -1
- package/dist/state-portability.d.ts.map +0 -1
- package/dist/state-portability.js.map +0 -1
- package/dist/terminal-protocol.d.ts.map +0 -1
- package/dist/terminal-protocol.js.map +0 -1
- package/dist/title.d.ts.map +0 -1
- package/dist/title.js.map +0 -1
- package/dist/transcript-fold.d.ts.map +0 -1
- package/dist/transcript-fold.js.map +0 -1
- package/dist/tunnel-ids.d.ts.map +0 -1
- package/dist/tunnel-ids.js.map +0 -1
- package/dist/versions.d.ts.map +0 -1
- package/dist/versions.js.map +0 -1
- package/dist/webext-links.d.ts.map +0 -1
- package/dist/webext-links.js.map +0 -1
- package/dist/webext-protocol.d.ts.map +0 -1
- package/dist/webext-protocol.js.map +0 -1
- package/dist/workflow-faults.d.ts.map +0 -1
- package/dist/workflow-faults.js.map +0 -1
- package/dist/workspace-state.d.ts.map +0 -1
- package/dist/workspace-state.js.map +0 -1
- package/src/agent-catalog.ts +0 -316
- package/src/agent-runtimes.ts +0 -419
- package/src/approvals-execution.ts +0 -96
- package/src/arrival.ts +0 -160
- package/src/batch-runs.ts +0 -188
- package/src/capability-ledger.test.ts +0 -140
- package/src/capability-secrets.ts +0 -20
- package/src/command-classes.ts +0 -617
- package/src/command-run.ts +0 -78
- package/src/contract-lock.test.ts +0 -23
- package/src/contract-lock.ts +0 -66
- package/src/conversation-ids.ts +0 -207
- package/src/credential-material.ts +0 -181
- package/src/definition.ts +0 -207
- package/src/documents.ts +0 -67
- package/src/embed.ts +0 -164
- package/src/events.ts +0 -1870
- package/src/fast-tier.ts +0 -72
- package/src/history-state.ts +0 -174
- package/src/host-protocol.ts +0 -36
- package/src/hostnames.ts +0 -180
- package/src/ingress-contract.ts +0 -157
- package/src/ingress-protocol.ts +0 -625
- package/src/listener-protocol.ts +0 -96
- package/src/mentions.ts +0 -25
- package/src/model-order.ts +0 -262
- package/src/model-pins.ts +0 -132
- package/src/model-roles.test.ts +0 -52
- package/src/model-roles.ts +0 -320
- package/src/needs-action.ts +0 -14
- package/src/output-fields.ts +0 -111
- package/src/overlay-lint.ts +0 -116
- package/src/path-refs.ts +0 -59
- package/src/peer-dial.ts +0 -163
- package/src/plan-pools.ts +0 -92
- package/src/prompt-complexity.ts +0 -334
- package/src/provider-specs.ts +0 -432
- package/src/request-id.ts +0 -41
- package/src/routes.ts +0 -219
- package/src/runner-protocol.ts +0 -239
- package/src/runtime-state.ts +0 -140
- package/src/safety-policy.test.ts +0 -88
- package/src/safety-policy.ts +0 -258
- package/src/search-globs.ts +0 -76
- package/src/session-names.ts +0 -44
- package/src/share-paths.ts +0 -68
- package/src/shell-regions.ts +0 -289
- package/src/starter.ts +0 -13
- package/src/state-portability.ts +0 -56
- package/src/terminal-protocol.ts +0 -16
- package/src/title.ts +0 -267
- package/src/tunnel-ids.ts +0 -57
- package/src/versions.ts +0 -48
- package/src/webext-links.ts +0 -90
- package/src/webext-protocol.ts +0 -27
- package/src/workspace-state.ts +0 -1090
- /package/dist/{hostnames.d.ts → ids/hostnames.d.ts} +0 -0
- /package/dist/{hostnames.js → ids/hostnames.js} +0 -0
- /package/dist/{session-names.d.ts → ids/session-names.d.ts} +0 -0
- /package/dist/{session-names.js → ids/session-names.js} +0 -0
- /package/dist/{share-paths.d.ts → ids/share-paths.d.ts} +0 -0
- /package/dist/{share-paths.js → ids/share-paths.js} +0 -0
- /package/dist/{agent-catalog.js → models/agent-catalog.js} +0 -0
- /package/dist/{agent-runtimes.d.ts → models/agent-runtimes.d.ts} +0 -0
- /package/dist/{agent-runtimes.js → models/agent-runtimes.js} +0 -0
- /package/dist/{fast-tier.js → models/fast-tier.js} +0 -0
- /package/dist/{model-order.d.ts → models/model-order.d.ts} +0 -0
- /package/dist/{model-order.js → models/model-order.js} +0 -0
- /package/dist/{model-pins.js → models/model-pins.js} +0 -0
- /package/dist/{plan-pools.js → models/plan-pools.js} +0 -0
- /package/dist/{prompt-complexity.d.ts → models/prompt-complexity.d.ts} +0 -0
- /package/dist/{prompt-complexity.js → models/prompt-complexity.js} +0 -0
- /package/dist/{provider-specs.d.ts → models/provider-specs.d.ts} +0 -0
- /package/dist/{provider-specs.js → models/provider-specs.js} +0 -0
- /package/dist/{approvals-execution.d.ts → policy/approvals-execution.d.ts} +0 -0
- /package/dist/{approvals-execution.js → policy/approvals-execution.js} +0 -0
- /package/dist/{capability-env.d.ts → policy/capability-env.d.ts} +0 -0
- /package/dist/{capability-env.js → policy/capability-env.js} +0 -0
- /package/dist/{capability-secrets.d.ts → policy/capability-secrets.d.ts} +0 -0
- /package/dist/{capability-secrets.js → policy/capability-secrets.js} +0 -0
- /package/dist/{command-run.js → policy/command-run.js} +0 -0
- /package/dist/{credential-material.d.ts → policy/credential-material.d.ts} +0 -0
- /package/dist/{credential-material.js → policy/credential-material.js} +0 -0
- /package/dist/{needs-action.d.ts → policy/needs-action.d.ts} +0 -0
- /package/dist/{needs-action.js → policy/needs-action.js} +0 -0
- /package/dist/{output-fields.d.ts → policy/output-fields.d.ts} +0 -0
- /package/dist/{output-fields.js → policy/output-fields.js} +0 -0
- /package/dist/{overlay-lint.d.ts → policy/overlay-lint.d.ts} +0 -0
- /package/dist/{overlay-lint.js → policy/overlay-lint.js} +0 -0
- /package/dist/{owner-ticket.d.ts → policy/owner-ticket.d.ts} +0 -0
- /package/dist/{search-globs.d.ts → policy/search-globs.d.ts} +0 -0
- /package/dist/{search-globs.js → policy/search-globs.js} +0 -0
- /package/dist/{ingress-contract.d.ts → protocol/ingress-contract.d.ts} +0 -0
- /package/dist/{ingress-protocol.d.ts → protocol/ingress-protocol.d.ts} +0 -0
- /package/dist/{ingress-protocol.js → protocol/ingress-protocol.js} +0 -0
- /package/dist/{listener-protocol.d.ts → protocol/listener-protocol.d.ts} +0 -0
- /package/dist/{peer-mcp-server.d.ts → protocol/peer-mcp-server.d.ts} +0 -0
- /package/dist/{peer-mcp-server.js → protocol/peer-mcp-server.js} +0 -0
- /package/dist/{request-id.d.ts → protocol/request-id.d.ts} +0 -0
- /package/dist/{request-id.js → protocol/request-id.js} +0 -0
- /package/dist/{routes.d.ts → protocol/routes.d.ts} +0 -0
- /package/dist/{routes.js → protocol/routes.js} +0 -0
- /package/dist/{sse.d.ts → protocol/sse.d.ts} +0 -0
- /package/dist/{sse.js → protocol/sse.js} +0 -0
- /package/dist/{terminal-protocol.js → protocol/terminal-protocol.js} +0 -0
- /package/dist/{webext-links.d.ts → protocol/webext-links.d.ts} +0 -0
- /package/dist/{webext-links.js → protocol/webext-links.js} +0 -0
- /package/dist/{arrival.d.ts → state/arrival.d.ts} +0 -0
- /package/dist/{contract-lock.d.ts → state/contract-lock.d.ts} +0 -0
- /package/dist/{history-state.d.ts → state/history-state.d.ts} +0 -0
- /package/dist/{runtime-state.d.ts → state/runtime-state.d.ts} +0 -0
- /package/dist/{runtime-state.js → state/runtime-state.js} +0 -0
- /package/dist/{starter.d.ts → state/starter.d.ts} +0 -0
- /package/dist/{starter.js → state/starter.js} +0 -0
- /package/dist/{state-portability.d.ts → state/state-portability.d.ts} +0 -0
- /package/dist/{state-portability.js → state/state-portability.js} +0 -0
- /package/dist/{versions.d.ts → state/versions.d.ts} +0 -0
- /package/dist/{versions.js → state/versions.js} +0 -0
- /package/dist/{embed.d.ts → text/embed.d.ts} +0 -0
- /package/dist/{embed.js → text/embed.js} +0 -0
- /package/dist/{mentions.d.ts → text/mentions.d.ts} +0 -0
- /package/dist/{mentions.js → text/mentions.js} +0 -0
- /package/dist/{path-refs.d.ts → text/path-refs.d.ts} +0 -0
- /package/dist/{path-refs.js → text/path-refs.js} +0 -0
- /package/dist/{shell-regions.js → text/shell-regions.js} +0 -0
- /package/dist/{title.d.ts → text/title.d.ts} +0 -0
- /package/dist/{title.js → text/title.js} +0 -0
- /package/src/{hostnames.test.ts → ids/hostnames.test.ts} +0 -0
- /package/src/{share-paths.test.ts → ids/share-paths.test.ts} +0 -0
- /package/src/{capability-env.ts → policy/capability-env.ts} +0 -0
- /package/src/{overlay-lint.test.ts → policy/overlay-lint.test.ts} +0 -0
- /package/src/{search-globs.test.ts → policy/search-globs.test.ts} +0 -0
- /package/src/{ingress-contract.test.ts → protocol/ingress-contract.test.ts} +0 -0
- /package/src/{peer-mcp-server.test.ts → protocol/peer-mcp-server.test.ts} +0 -0
- /package/src/{sse.ts → protocol/sse.ts} +0 -0
- /package/src/{versions.test.ts → state/versions.test.ts} +0 -0
- /package/src/{embed.test.ts → text/embed.test.ts} +0 -0
- /package/src/{mentions.test.ts → text/mentions.test.ts} +0 -0
- /package/src/{path-refs.test.ts → text/path-refs.test.ts} +0 -0
|
@@ -1,23 +1,14 @@
|
|
|
1
1
|
// maintenance: the standing evidence a chore is decided from
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { WorkspaceHotspotSchema, WorkspaceKeyModuleSchema } from "./codebase-health.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
* badge run, so the number on the tile and the reason in the panel can never disagree. Put the verdict on the wire
|
|
8
|
-
* instead and a daemon one image behind would be quietly arguing with the browser about what needs doing.
|
|
9
|
-
*
|
|
10
|
-
* The split inside the evidence is by COST, not by subject:
|
|
11
|
-
* probes subprocesses (pnpm outdated, pnpm audit, knip, jscpd), minutes, so they are cached on disk with a
|
|
12
|
-
* TTL and refreshed by a background runner. A route hit never waits on one.
|
|
13
|
-
* signals things the daemon already knows, the resident iq index's health ranking, the package manifests it
|
|
14
|
-
* reads for the dependency graph, its own node version. Recomputed per request; all of it is cheap. */
|
|
4
|
+
// The daemon serves facts, never a verdict: which chore is due is computed by shared code
|
|
5
|
+
// (`@intentic/sandbox-contract/chores`) so the tile and panel can't disagree. Split by cost: probes (subprocesses,
|
|
6
|
+
// cached with a TTL) vs signals (cheap, recomputed per request).
|
|
15
7
|
|
|
16
8
|
export const PROBE_IDS = ["outdated", "audit", "knip", "jscpd", "ui", "bundle", "mutation"] as const;
|
|
17
9
|
export const ProbeIdSchema = z.enum(PROBE_IDS);
|
|
18
10
|
export type ProbeId = z.infer<typeof ProbeIdSchema>;
|
|
19
|
-
//
|
|
20
|
-
// not one number: forty patch releases behind is a morning's work and one major is a project.
|
|
11
|
+
// `kind` is the semver distance; that's why this isn't collapsed to one number.
|
|
21
12
|
export const OutdatedPackageSchema = z.object({
|
|
22
13
|
name: z.string().describe("The dependency."),
|
|
23
14
|
current: z.string().describe("What you are on."),
|
|
@@ -27,14 +18,12 @@ export const OutdatedPackageSchema = z.object({
|
|
|
27
18
|
.describe(
|
|
28
19
|
"How far apart those are. This is not one number because forty patch releases behind is a morning's work and one major version is a project.",
|
|
29
20
|
),
|
|
30
|
-
// "dependencies" / "devDependencies" / "optionalDependencies"
|
|
21
|
+
// "dependencies" / "devDependencies" / "optionalDependencies".
|
|
31
22
|
section: z
|
|
32
23
|
.string()
|
|
33
24
|
.describe("Which part of the manifest declares it. A major version behind on a build-time tool is a different risk from one that ships."),
|
|
34
25
|
});
|
|
35
26
|
export type OutdatedPackage = z.infer<typeof OutdatedPackageSchema>;
|
|
36
|
-
// One advisory, reduced to what a decision needs. No CVSS vector and no reference list: those are for reading on
|
|
37
|
-
// the advisory page, and carrying them would put a kilobyte of prose per finding on every poll of this route.
|
|
38
27
|
export const AdvisorySchema = z.object({
|
|
39
28
|
name: z.string().describe("The dependency it concerns."),
|
|
40
29
|
severity: z.enum(["critical", "high", "moderate", "low", "info"]).describe("How bad it is said to be."),
|
|
@@ -43,29 +32,22 @@ export const AdvisorySchema = z.object({
|
|
|
43
32
|
.describe(
|
|
44
33
|
"What it is, in one line. No scoring vector and no reference list: those are for reading on the advisory's own page, and carrying them would put a kilobyte of prose per finding on every poll.",
|
|
45
34
|
),
|
|
46
|
-
// The range that fixes it, when the advisory names one. Absent ⇒ no patch published yet, which is the case
|
|
47
|
-
// where a chore must NOT offer to bump and say so instead.
|
|
48
35
|
patched: z
|
|
49
36
|
.string()
|
|
50
37
|
.optional()
|
|
51
38
|
.describe(
|
|
52
39
|
"Which versions fix it. Absent means no fix has been published, which is exactly when nothing should offer to upgrade and something should say so instead.",
|
|
53
40
|
),
|
|
54
|
-
// Whether it reaches a production dependency path. A build-time-only tool's transitive CVE is a different
|
|
55
|
-
// problem, and the chore's prompt says so rather than treating every advisory alike.
|
|
56
41
|
dev: z.boolean().describe("Whether it only reaches build-time tooling, which is a different problem from one that reaches what you ship."),
|
|
57
42
|
});
|
|
58
43
|
export type Advisory = z.infer<typeof AdvisorySchema>;
|
|
59
|
-
//
|
|
60
|
-
// agent re-runs knip itself against the live tree (a list from a probe hours old would send it at files that are
|
|
61
|
-
// already gone), so what travels here only has to be enough to decide whether the turn is worth starting.
|
|
44
|
+
// A stale sample could send the agent chasing files already gone; it re-runs knip live anyway.
|
|
62
45
|
export const DeadCodeSchema = z.object({
|
|
63
46
|
files: z.number().int().nonnegative().describe("Files nothing reaches."),
|
|
64
47
|
exports: z.number().int().nonnegative().describe("Exported things nothing uses."),
|
|
65
48
|
types: z.number().int().nonnegative().describe("Types nothing uses."),
|
|
66
49
|
dependencies: z.number().int().nonnegative().describe("Declared dependencies nothing imports."),
|
|
67
50
|
devDependencies: z.number().int().nonnegative().describe("The same, for build-time ones."),
|
|
68
|
-
// A handful of the unreferenced files, for the panel to show instead of asking the reader to take "31" on faith.
|
|
69
51
|
sample: z
|
|
70
52
|
.array(z.string())
|
|
71
53
|
.describe(
|
|
@@ -73,8 +55,6 @@ export const DeadCodeSchema = z.object({
|
|
|
73
55
|
),
|
|
74
56
|
});
|
|
75
57
|
export type DeadCode = z.infer<typeof DeadCodeSchema>;
|
|
76
|
-
// jscpd's headline plus the biggest clones. `percentage` is of scanned lines, which is the figure a threshold is
|
|
77
|
-
// worth setting against, a clone COUNT grows with the repo and would mean something different every quarter.
|
|
78
58
|
export const DuplicationSchema = z.object({
|
|
79
59
|
percentage: z
|
|
80
60
|
.number()
|
|
@@ -93,18 +73,11 @@ export const DuplicationSchema = z.object({
|
|
|
93
73
|
.describe("The largest of them."),
|
|
94
74
|
});
|
|
95
75
|
export type Duplication = z.infer<typeof DuplicationSchema>;
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
* probes would walk it three times for nothing.
|
|
99
|
-
*
|
|
100
|
-
* Counts per FILE rather than the matched text. A reader deciding whether to open something is served better by
|
|
101
|
-
* "Checkout.vue · 11 hard-coded values" than by eleven class attributes, and a file path is an identity a digest
|
|
102
|
-
* can be built from while a class string is not. */
|
|
76
|
+
// One sweep serving three chores (components, hard-coded values, outdated idioms) rather than three probes walking the
|
|
77
|
+
// same tree three times.
|
|
103
78
|
export const UiScanSchema = z.object({
|
|
104
|
-
//
|
|
105
|
-
// duplication finding a COMPONENT duplication finding rather than a generic one.
|
|
79
|
+
// This inventory is what makes a duplication finding a component finding, not a generic one.
|
|
106
80
|
components: z.array(z.string()).describe("The interface's own source files, with tests, stories and generated output left out."),
|
|
107
|
-
// Where the design system was routed around, and how often in each file.
|
|
108
81
|
bypasses: z
|
|
109
82
|
.array(
|
|
110
83
|
z.object({
|
|
@@ -115,9 +88,8 @@ export const UiScanSchema = z.object({
|
|
|
115
88
|
.describe(
|
|
116
89
|
"Where the design system was routed around and a value hard-coded instead. Counted per file, because a reader deciding what to open is served by a file and a number, not by eleven snippets.",
|
|
117
90
|
),
|
|
118
|
-
//
|
|
119
|
-
//
|
|
120
|
-
// daemon an image behind must be able to report one this schema has never heard of.
|
|
91
|
+
// `id` is looked up in the stack table, not enumerated here, so an older daemon can still report an idiom this
|
|
92
|
+
// schema predates.
|
|
121
93
|
idioms: z
|
|
122
94
|
.array(
|
|
123
95
|
z.object({
|
|
@@ -132,15 +104,8 @@ export const UiScanSchema = z.object({
|
|
|
132
104
|
.describe("Files still written the way their framework has since replaced."),
|
|
133
105
|
});
|
|
134
106
|
export type UiScan = z.infer<typeof UiScanSchema>;
|
|
135
|
-
|
|
136
|
-
* build: a maintenance probe that mutates the owner's working tree, and `dist/` appearing in their `git status`
|
|
137
|
-
* is exactly that, is a worse surprise than a measurement that is sometimes a commit behind. It also means this
|
|
138
|
-
* never needs the env vars, secrets or network a real production build would.
|
|
139
|
-
*
|
|
140
|
-
* Gzip alongside raw because gzip is what crosses the wire, and the ratio between them is the difference between
|
|
141
|
-
* "this chunk is big" and "this chunk is big and incompressible", which are different problems. */
|
|
107
|
+
// Read from build output on disk, never by building (no working-tree mutation, no env vars, secrets or network needed).
|
|
142
108
|
export const BundleSchema = z.object({
|
|
143
|
-
// Which directory was measured, so the panel can say what it is talking about rather than implying it built.
|
|
144
109
|
dir: z
|
|
145
110
|
.string()
|
|
146
111
|
.describe(
|
|
@@ -165,43 +130,21 @@ export const BundleSchema = z.object({
|
|
|
165
130
|
.describe("What is in it, piece by piece."),
|
|
166
131
|
});
|
|
167
132
|
export type Bundle = z.infer<typeof BundleSchema>;
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
* The distinction is the whole reason this probe exists, and it is not theoretical here. Measured on
|
|
171
|
-
* sandbox-contract's chore module — 109 hand-written tests, every line covered — 16 of 58 mutants survived, and
|
|
172
|
-
* one of them flips the zero boundary in `bucketOf` that digest.ts's own comment argues is load-bearing. The test
|
|
173
|
-
* that was supposed to hold it (`expect(bucketOf(0)).not.toBe(bucketOf(1))`) is written in the careful,
|
|
174
|
-
* deliberately un-brittle style, and that is exactly why it cannot see the change: with the boundary moved the two
|
|
175
|
-
* values are still different, so the assertion still passes.
|
|
176
|
-
*
|
|
177
|
-
* That is the failure this measures and nothing else in the repository can. A linter sees the assertion's shape,
|
|
178
|
-
* not its power; a coverage report sees the line, not whether anything checked it. Only killing the code and
|
|
179
|
-
* watching what the suite says distinguishes a test from a test-shaped thing.
|
|
180
|
-
*
|
|
181
|
-
* SURVIVORS, NOT JUST A SCORE. A percentage is a mood; `bucketOf: count <= 0 → count < 0 survives` is a morning's
|
|
182
|
-
* work with the answer already in it. The score decides whether the chore speaks, the survivors are what makes it
|
|
183
|
-
* worth speaking about. */
|
|
133
|
+
// Coverage says a line ran; this says an assertion depended on it — the only way to tell a real test from a test-shaped
|
|
134
|
+
// one that can't see the code change under it.
|
|
184
135
|
export const MutationScoreSchema = z.object({
|
|
185
136
|
score: z
|
|
186
137
|
.number()
|
|
187
138
|
.describe("The share of injected faults the suite caught. Not a coverage figure: coverage says a line ran, this says an assertion depended on it."),
|
|
188
139
|
killed: z.number().int().nonnegative().describe("Faults the suite caught."),
|
|
189
140
|
survived: z.number().int().nonnegative().describe("Faults it did not: code that can be broken with every test still green."),
|
|
190
|
-
|
|
191
|
-
* apart from both counts above, and OUT of the score, because an unmeasured mutant is not evidence either
|
|
192
|
-
* way — the same conflation `unavailable` exists to prevent one level up.
|
|
193
|
-
*
|
|
194
|
-
* A timeout is deliberately NOT here. Stryker counts it as detected, on the reasoning that a mutant which
|
|
195
|
-
* hangs the suite is one the suite noticed, and this follows Stryker's arithmetic rather than inventing a
|
|
196
|
-
* second definition of the same word: the number on the row has to mean what the tool that produced it
|
|
197
|
-
* means, or the row is quietly arguing with its own evidence. */
|
|
141
|
+
// A timeout counts as detected here (Stryker's own convention), not as inconclusive.
|
|
198
142
|
inconclusive: z
|
|
199
143
|
.number()
|
|
200
144
|
.int()
|
|
201
145
|
.nonnegative()
|
|
202
146
|
.describe("Faults it never got a verdict on, because they would not compile or were configured out. Left out of the score entirely, since neither answer is known."),
|
|
203
|
-
|
|
204
|
-
* short enough to act on, and the rest are still there on the next run. */
|
|
147
|
+
// Capped on purpose: useful only while short enough to act on; the rest reappear next run.
|
|
205
148
|
survivors: z
|
|
206
149
|
.array(
|
|
207
150
|
z.object({
|
|
@@ -214,21 +157,14 @@ export const MutationScoreSchema = z.object({
|
|
|
214
157
|
.describe("The surviving faults themselves. A percentage is a mood; a named line with the change that went unnoticed is a morning's work."),
|
|
215
158
|
});
|
|
216
159
|
export type MutationScore = z.infer<typeof MutationScoreSchema>;
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
* unavailable the tool is not part of this repo (knip is not a devDependency, there is no lockfile to audit).
|
|
222
|
-
* Not a failure and not evidence of health: the chore renders as unmeasured, and can never badge.
|
|
223
|
-
* failed the tool ran and broke, a network-less audit, a jscpd that ran out of memory. Says so, with
|
|
224
|
-
* the tail of what it printed, rather than reading as "clean".
|
|
225
|
-
* Merging `unavailable` into `ok`-with-zeros is how a maintenance surface ends up reporting a green repository
|
|
226
|
-
* it has never actually measured. */
|
|
160
|
+
// One probe's cached state; collapsing these would lie about the most important case.
|
|
161
|
+
// ok: the tool ran and reported (including "nothing found", a real answer).
|
|
162
|
+
// unavailable: not part of this repo (no lockfile, tool not a dependency) — not evidence of health, never badges.
|
|
163
|
+
// failed: the tool ran and broke; says so, with the tail of its output.
|
|
227
164
|
export const ProbeStateSchema = z.enum(["ok", "unavailable", "failed"]);
|
|
228
165
|
export type ProbeState = z.infer<typeof ProbeStateSchema>;
|
|
229
|
-
//
|
|
230
|
-
//
|
|
231
|
-
// missing measurement can be mistaken for a zero.
|
|
166
|
+
// Discriminated by probe id; absent until the probe completes. On unavailable/failed a reader must go through `state`,
|
|
167
|
+
// so a missing measurement can never look like a zero.
|
|
232
168
|
export const ProbeFactsSchema = z.discriminatedUnion("id", [
|
|
233
169
|
z.object({ id: z.literal("outdated"), packages: z.array(OutdatedPackageSchema) }),
|
|
234
170
|
z.object({ id: z.literal("audit"), advisories: z.array(AdvisorySchema) }),
|
|
@@ -244,18 +180,13 @@ export const ProbeResultSchema = z.object({
|
|
|
244
180
|
state: ProbeStateSchema.describe(
|
|
245
181
|
"Whether the tool ran and reported, is not part of this repository at all, or broke. The middle one is not evidence of health: the check simply cannot be made here.",
|
|
246
182
|
),
|
|
247
|
-
//
|
|
183
|
+
// Also what the runner's TTL is measured from.
|
|
248
184
|
ranAt: z.number().describe("When it last finished, in milliseconds, which is what its age is measured from."),
|
|
249
|
-
//
|
|
250
|
-
// deciding whether to force a refresh deserves to know what they are asking for.
|
|
185
|
+
// Slow probes are why some tiers refresh weekly rather than on every poll.
|
|
251
186
|
tookMs: z.number().int().nonnegative().describe("How long it took. Worth knowing before asking for it again: some of these run for minutes."),
|
|
252
187
|
facts: ProbeFactsSchema.optional().describe(
|
|
253
188
|
"What it found, including finding nothing, which is a real answer and the one that keeps a chore quiet.",
|
|
254
189
|
),
|
|
255
|
-
// On `failed`, how it broke, a bounded quote of the tool's own output, never a summary of it. On
|
|
256
|
-
// `unavailable`, what is missing, in the probe spec's own words ("no lockfile"): there is no tool output to
|
|
257
|
-
// quote when the tool never ran, and the alternative, a sentence built from the probe's name, would have an
|
|
258
|
-
// unmeasured probe claiming there is nothing to measure.
|
|
259
190
|
reason: z
|
|
260
191
|
.string()
|
|
261
192
|
.optional()
|
|
@@ -264,70 +195,41 @@ export const ProbeResultSchema = z.object({
|
|
|
264
195
|
),
|
|
265
196
|
});
|
|
266
197
|
export type ProbeResult = z.infer<typeof ProbeResultSchema>;
|
|
267
|
-
// One workspace package as its manifest declares it,
|
|
268
|
-
//
|
|
269
|
-
// one derived field: whether <dir>/README.md exists, a stat per package. A package's architecture document IS
|
|
270
|
-
// its README in this workspace, which is what makes that a stat on the package itself rather than a lookup.
|
|
198
|
+
// One workspace package as its manifest declares it, carried through so chores can reason about the repo's shape
|
|
199
|
+
// without a probe.
|
|
271
200
|
export const ChorePackageSchema = z.object({
|
|
272
201
|
dir: z.string().describe("Where the package lives."),
|
|
273
202
|
name: z.string().describe("What it declares itself as."),
|
|
274
|
-
//
|
|
203
|
+
// Compared against the daemon's own runtime by the version chore.
|
|
275
204
|
engines: z.record(z.string(), z.string()).optional().describe("Which runtime versions it says it needs, verbatim."),
|
|
276
205
|
dependencies: z.array(z.string()).describe("What it depends on."),
|
|
277
206
|
devDependencies: z.array(z.string()).describe("What it needs only to build."),
|
|
278
207
|
documented: z.boolean().describe("Whether it has a README, which in this workspace is what a package's own documentation is."),
|
|
279
208
|
});
|
|
280
209
|
export type ChorePackage = z.infer<typeof ChorePackageSchema>;
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
* all, as opposed to whether the answer happens to be yes.
|
|
286
|
-
*
|
|
287
|
-
* The distinction is the difference between a maintenance surface that reads as attentive and one that reads as
|
|
288
|
-
* generic. "Re-read the documentation against the code" in a repository with no documentation is not a chore
|
|
289
|
-
* that is currently clear, it is a chore that will never make sense here, and showing it teaches the owner that
|
|
290
|
-
* this list was written by someone who had not looked. Same for a Docker chore with no Dockerfile, or a CI chore
|
|
291
|
-
* with no pipeline.
|
|
292
|
-
*
|
|
293
|
-
* These are all paths, deliberately: presence of a FILE is checkable, cheap, and cannot be argued with, which is
|
|
294
|
-
* the same evidence-over-identity rule the extension activation facts follow. Every field is a list rather than a
|
|
295
|
-
* boolean where the paths themselves are worth showing, a chore that says "not applicable: no Dockerfile" is
|
|
296
|
-
* useful, and one that says "3 Dockerfiles: ./Dockerfile, _editor/web/Dockerfile, …" is more so. */
|
|
210
|
+
// The cheap half of the evidence: what the daemon already knows without starting anything (same rankings as GET
|
|
211
|
+
// /workspace/health, capped tighter).
|
|
212
|
+
// Facts that decide whether a chore is even a sensible question to ask, not whether the answer is yes. All paths, not
|
|
213
|
+
// booleans: file presence is cheap and checkable, and the paths themselves are worth showing.
|
|
297
214
|
export const ChoreShapeSchema = z.object({
|
|
298
|
-
//
|
|
299
|
-
// drift survey needs to know there is something to re-read. Package pages are READMEs and are counted per
|
|
300
|
-
// package by `ChorePackage.documented`; a repo with a map has been through the documentation flow at all,
|
|
301
|
-
// which is the question this gate actually asks.
|
|
215
|
+
// Distinct from package READMEs, counted per package by `ChorePackage.documented`.
|
|
302
216
|
docs: z
|
|
303
217
|
.array(z.string())
|
|
304
218
|
.describe(
|
|
305
219
|
"The repository's own architecture documents, when it has any. Their existence is the question: a repository with none has never been through the documentation flow at all.",
|
|
306
220
|
),
|
|
307
221
|
dockerfiles: z.array(z.string()).describe("Container definitions in it."),
|
|
308
|
-
//
|
|
222
|
+
// e.g. .github/workflows/*.yml, .gitlab-ci.yml.
|
|
309
223
|
ci: z.array(z.string()).describe("Pipeline definitions in it."),
|
|
310
|
-
// Whether dependencies are resolved to a lockfile, what makes an audit mean anything.
|
|
311
224
|
lockfile: z.boolean().describe("Whether dependencies are pinned to exact versions, which is what makes a security audit mean anything."),
|
|
312
|
-
//
|
|
313
|
-
// a Rust or Go repository has no majors to be behind on and no engines field to be pinned by, and offering it
|
|
314
|
-
// those chores would be this surface guessing at what it is looking at.
|
|
225
|
+
// Also gates the engines-version chore: a Rust/Go repo has none to pin.
|
|
315
226
|
packageManifest: z
|
|
316
227
|
.boolean()
|
|
317
228
|
.describe(
|
|
318
229
|
"Whether it is a JavaScript project at all. A Rust or Go repository has no majors to be behind on, and offering it those checks would be this surface guessing at what it is looking at.",
|
|
319
230
|
),
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
*
|
|
323
|
-
* It is here rather than derived from `packages` because `packages` is EMPTY for a repository that is not a
|
|
324
|
-
* pnpm workspace, and the repositories these names exist to recognise, a Vite app, a Next app, an Angular
|
|
325
|
-
* CLI project, are overwhelmingly single-package. A framework gate built on `packages` would be dark in
|
|
326
|
-
* exactly the repositories it was written for, silently, which is the worst way for a gate to be wrong.
|
|
327
|
-
*
|
|
328
|
-
* NAMES, not a `framework: "react"` verdict. Which names amount to "this is a React app" is a product
|
|
329
|
-
* decision, and product decisions live in the chore book that ships with the browser, a daemon baked into an
|
|
330
|
-
* image months ago must not be the thing that decides Svelte is not a UI framework. */
|
|
231
|
+
// Not derived from `packages`, which is empty for a non-pnpm-workspace repo — exactly the single-package repos this
|
|
232
|
+
// exists to recognise.
|
|
331
233
|
deps: z
|
|
332
234
|
.array(z.string())
|
|
333
235
|
.describe(
|
|
@@ -352,21 +254,14 @@ export const ChoreSignalsSchema = z.object({
|
|
|
352
254
|
hotspots: z.number().describe("How many files qualify as hotspots at all."),
|
|
353
255
|
})
|
|
354
256
|
.describe("The repository in numbers."),
|
|
355
|
-
// Whether the index these rankings came from is current. A chore must not fire on a half-built index, and
|
|
356
|
-
// this is how the browser knows to hold its verdict rather than act on a partial ranking.
|
|
357
257
|
indexed: z.boolean().describe("Whether the index these rankings came from is finished. Nothing should act on a half-built one."),
|
|
358
258
|
});
|
|
359
259
|
export type ChoreSignals = z.infer<typeof ChoreSignalsSchema>;
|
|
360
|
-
//
|
|
361
|
-
// due. `clean` is the important one: an agent that looked and found the tool's findings to be false positives
|
|
362
|
-
// must be able to say so, or the next poll starts the same turn again forever.
|
|
260
|
+
// `clean` is the important value: without it, a false-positive finding restarts the same turn forever.
|
|
363
261
|
export const ChoreOutcomeSchema = z.enum(["acted", "reported", "clean"]);
|
|
364
262
|
export type ChoreOutcome = z.infer<typeof ChoreOutcomeSchema>;
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
* again on its own merits while one whose evidence is unchanged stays quiet, with the run still visible in the
|
|
368
|
-
* panel, saying when it ran and what it concluded. Nothing here can hide a chore from the view; it only decides
|
|
369
|
-
* whether the rail is allowed to speak. */
|
|
263
|
+
// A debounce, not a suppression: unchanged evidence keeps the rail quiet, but the run stays visible in the panel
|
|
264
|
+
// regardless.
|
|
370
265
|
export const ChoreLedgerEntrySchema = z.object({
|
|
371
266
|
repo: z.string().describe("Which repository."),
|
|
372
267
|
chore: z.string().describe("Which chore."),
|
|
@@ -380,8 +275,6 @@ export const ChoreLedgerEntrySchema = z.object({
|
|
|
380
275
|
.describe(
|
|
381
276
|
"A fingerprint of the evidence standing at the time. A chore whose evidence has since changed is due again on its own merits; one whose evidence has not stays quiet.",
|
|
382
277
|
),
|
|
383
|
-
// Set by the owner from the panel, the chore stays visible and stays out of the badge until this passes.
|
|
384
|
-
// Distinct from opting out, which is the absence of the chore from `enabled` in the sandbox's settings.
|
|
385
278
|
snoozedUntil: z
|
|
386
279
|
.number()
|
|
387
280
|
.optional()
|
|
@@ -390,19 +283,11 @@ export const ChoreLedgerEntrySchema = z.object({
|
|
|
390
283
|
),
|
|
391
284
|
});
|
|
392
285
|
export type ChoreLedgerEntry = z.infer<typeof ChoreLedgerEntrySchema>;
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
* measuring this right now", and the panel's re-measure button spent its whole life looking like it did nothing:
|
|
396
|
-
* the request is an ack, the sweep takes minutes, and every visible fact on the row went on describing the
|
|
397
|
-
* measurement it was replacing.
|
|
398
|
-
*
|
|
399
|
-
* `startedAt` is when the probe actually began, absent while it is still waiting behind another one, the runner
|
|
400
|
-
* has ONE lane across the whole sandbox, so "queued" is a real and common state, and a reader told "measuring"
|
|
401
|
-
* about a probe that has not started is being lied to about how long it has left. */
|
|
286
|
+
// A measurement in progress, distinct from the cache's `ranAt` (only ever a completion stamp) — otherwise a reader has
|
|
287
|
+
// no way to say "measuring now".
|
|
402
288
|
export const RunningProbeSchema = z.object({
|
|
403
289
|
repo: z.string().describe("Which repository."),
|
|
404
290
|
id: ProbeIdSchema.describe("Which measurement."),
|
|
405
|
-
// When this was asked for. Always present, so a waiting probe can still say how long it has been waiting.
|
|
406
291
|
askedAt: z.number().describe("When it was asked for, in milliseconds, so one still waiting can say how long it has waited."),
|
|
407
292
|
startedAt: z
|
|
408
293
|
.number()
|
|
@@ -412,9 +297,7 @@ export const RunningProbeSchema = z.object({
|
|
|
412
297
|
),
|
|
413
298
|
});
|
|
414
299
|
export type RunningProbe = z.infer<typeof RunningProbeSchema>;
|
|
415
|
-
// GET /chores
|
|
416
|
-
// one per repo because the rail badge scans ALL of them on a timer, and N requests a minute to answer "is
|
|
417
|
-
// anything due" is the kind of poll that shows up in a battery graph.
|
|
300
|
+
// GET /chores: every discovered repo's standing evidence, plus the ledger, in one read.
|
|
418
301
|
export const ChoresReportSchema = z.object({
|
|
419
302
|
repos: z
|
|
420
303
|
.array(
|
|
@@ -430,17 +313,11 @@ export const ChoresReportSchema = z.object({
|
|
|
430
313
|
"Every repository's standing evidence. One answer for all of them, because a badge polls this on a timer and one request per repository is the kind of poll that shows up in a battery graph.",
|
|
431
314
|
),
|
|
432
315
|
ledger: z.array(ChoreLedgerEntrySchema).describe("What has already been done about all of it."),
|
|
433
|
-
// What the runner is measuring and what is waiting behind it, right now. Part of the standing read rather
|
|
434
|
-
// than a route of its own: it is the same question ("what does this repo currently say") asked about work in
|
|
435
|
-
// flight, and a panel that had to ask twice would show the two halves disagreeing.
|
|
436
316
|
running: z
|
|
437
317
|
.array(RunningProbeSchema)
|
|
438
318
|
.describe(
|
|
439
319
|
"What is being measured right now and what is waiting behind it. Part of this read rather than a route of its own, because a screen that had to ask twice would show the two halves disagreeing.",
|
|
440
320
|
),
|
|
441
|
-
// The daemon's own runtime, for the chore that asks whether this sandbox is running something end-of-life.
|
|
442
|
-
// Read off the process rather than a manifest: what is INSTALLED is the fact that matters, and an `engines`
|
|
443
|
-
// range is a wish.
|
|
444
321
|
node: z
|
|
445
322
|
.string()
|
|
446
323
|
.describe(
|
|
@@ -448,18 +325,16 @@ export const ChoresReportSchema = z.object({
|
|
|
448
325
|
),
|
|
449
326
|
});
|
|
450
327
|
export type ChoresReport = z.infer<typeof ChoresReportSchema>;
|
|
451
|
-
// POST /chores/probe
|
|
452
|
-
// work and the next GET /chores carries the result, the same shape the panel already polls.
|
|
328
|
+
// POST /chores/probe: force a re-run ahead of its TTL. Returns immediately; the result arrives on the next GET /chores.
|
|
453
329
|
export const ChoreProbeRequestSchema = z.object({
|
|
454
330
|
repo: z.string().min(1).describe("Which repository."),
|
|
455
331
|
id: ProbeIdSchema.describe("Which measurement to retake, ahead of its usual schedule."),
|
|
456
332
|
});
|
|
457
|
-
// POST /chores/ledger
|
|
458
|
-
//
|
|
333
|
+
// POST /chores/ledger: record a run, or snooze. Daemon-written so a turn started from anywhere (panel, automation,
|
|
334
|
+
// agent) lands in one ledger.
|
|
459
335
|
export const ChoreLedgerWriteSchema = ChoreLedgerEntrySchema;
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
* the check lying at the exact moment it matters most. */
|
|
336
|
+
// `warn` is a real third state, not a soft failure: reporting "pass" when nothing has been exercised yet would be the
|
|
337
|
+
// check lying.
|
|
463
338
|
export const ReadinessCheckSchema = z.object({
|
|
464
339
|
id: z.string().describe("Which check."),
|
|
465
340
|
label: z.string().describe("What it is called."),
|
package/src/schemas/panels.ts
CHANGED
|
@@ -1,66 +1,43 @@
|
|
|
1
1
|
// panels: per-repository dev servers + the content facts extensions detect on
|
|
2
2
|
import { z } from "zod";
|
|
3
|
-
// Every discovered
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
// detect() over, computed daemon-side in one pass so the browser never scans /work file-by-file.
|
|
3
|
+
// Every discovered repo under /work is one row: runnable-panel status (a `dev` script the daemon runs and auto-assigns
|
|
4
|
+
// a port, proxied at preview-<panelKey>-<sandboxId>.<zone>) plus content facts extensions run detect() over, computed
|
|
5
|
+
// daemon-side so the browser never scans /work.
|
|
7
6
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
* these four words are what that sampling can honestly say: the shell is still coming up; the install that
|
|
11
|
-
* runs first when node_modules is missing is still going; the dev command is running but nothing listens yet;
|
|
12
|
-
* or the command has already exited back to a prompt, which is the one a person needs told at once, because
|
|
13
|
-
* the "Preparing the preview…" it would otherwise sit behind never ends. Absent once the preview proxy has
|
|
14
|
-
* something to serve, and absent for anything the sandbox is not starting. */
|
|
7
|
+
// Between click and first byte; `exited` matters most, since without it "Preparing the preview…" would never end.
|
|
8
|
+
// Absent once something serves.
|
|
15
9
|
export const PanelLaunchSchema = z.enum(["launching", "installing", "starting", "exited"]);
|
|
16
10
|
export type PanelLaunch = z.infer<typeof PanelLaunchSchema>;
|
|
17
11
|
|
|
18
12
|
export const PanelSummarySchema = z.object({
|
|
19
|
-
//
|
|
13
|
+
// Root-relative dir under /work; slashes become `--` in the preview subdomain label.
|
|
20
14
|
repo: z.string().describe("Which repository."),
|
|
21
|
-
//
|
|
15
|
+
// A package.json `dev` script at operator/ or the repo root.
|
|
22
16
|
hasPanel: z.boolean().describe("Whether it has anything runnable at all."),
|
|
23
17
|
running: z.boolean().describe("Whether the sandbox has it running."),
|
|
24
|
-
|
|
25
|
-
* Start COSTS: seconds when true, an install first when false, and the Start screen's copy says which
|
|
26
|
-
* instead of promising "a few minutes" over a tree that is already installed (the starter site's is: the
|
|
27
|
-
* image bakes it). True for a repo with nothing runnable, which has nothing to install for. */
|
|
18
|
+
// True for a repo with nothing runnable — nothing to install for.
|
|
28
19
|
installed: z
|
|
29
20
|
.boolean()
|
|
30
21
|
.describe("Whether its dependencies are installed, which is what decides whether a start takes seconds or an install first."),
|
|
31
22
|
launch: PanelLaunchSchema.optional().describe(
|
|
32
23
|
"Where a start the sandbox is running has got to: its shell coming up, installing, its dev command running with nothing listening yet, or exited back to a prompt. Absent when nothing is starting and once it serves.",
|
|
33
24
|
),
|
|
34
|
-
// Whether anything this repo owns is answering, see `servers`. Not the same question as `running`: a panel
|
|
35
|
-
// whose install is still going is running and not yet healthy, and a dev server someone started in their own
|
|
36
|
-
// terminal is healthy without the daemon running it.
|
|
37
25
|
healthy: z
|
|
38
26
|
.boolean()
|
|
39
27
|
.describe(
|
|
40
28
|
"Whether anything it owns is actually answering. A different question: a server still installing is running and not yet healthy, and one somebody started by hand is healthy without the sandbox running it.",
|
|
41
29
|
),
|
|
42
|
-
// The dev server's OS-assigned port; absent when not running. What the daemon TOLD the repo to bind (the
|
|
43
|
-
// preview proxy forwards it), `servers` is what the repo actually bound, which for a repo that pins its own
|
|
44
|
-
// ports is a different number entirely.
|
|
45
30
|
port: z
|
|
46
31
|
.number()
|
|
47
32
|
.optional()
|
|
48
33
|
.describe(
|
|
49
34
|
"The port the sandbox told it to use. What it actually bound is below, and for a repository that pins its own ports those are different numbers.",
|
|
50
35
|
),
|
|
51
|
-
//
|
|
52
|
-
//
|
|
53
|
-
// monorepo whose `dev` fans out across packages has one per app, which is why `dir` is here, `_editor/web` vs
|
|
54
|
-
// `_site/site` is the only thing that tells them apart. Empty when nothing answers.
|
|
55
|
-
//
|
|
56
|
-
// `session` is the terminal it is running in: the panel's own when the daemon started it, the user's when
|
|
57
|
-
// they ran it by hand, and ABSENT when nothing in the sandbox owns it. That last case is the one worth
|
|
58
|
-
// designing for, the repo is plainly answering, and no terminal here can show, stop or restart it.
|
|
36
|
+
// One entry per app for a monorepo whose `dev` fans out across packages (`dir` is what tells them apart); `session`
|
|
37
|
+
// absent means nothing in the sandbox owns it, worth designing for.
|
|
59
38
|
servers: z
|
|
60
39
|
.array(
|
|
61
40
|
z.object({
|
|
62
|
-
// The port itself, not just the URL it appears in: forwarding one is how a repo answering on
|
|
63
|
-
// several ports becomes previewable at all, and that call takes a number.
|
|
64
41
|
port: z.number().describe("The port it is listening on, which is what forwarding it takes."),
|
|
65
42
|
url: z.string().describe("Where it answers, with the right scheme: a server on its own certificate is served over https."),
|
|
66
43
|
dir: z
|
|
@@ -78,26 +55,24 @@ export const PanelSummarySchema = z.object({
|
|
|
78
55
|
}),
|
|
79
56
|
)
|
|
80
57
|
.describe("Every server this repository is really serving, found by looking at what is listening. Empty when nothing answers."),
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
* nothing to route it to — nothing running, still starting, or (the ordinary monorepo) several dev servers
|
|
84
|
-
* on ports of their own, none of which one hostname can stand for. Present ⇒ safe to open or frame, which
|
|
85
|
-
* is what stops a surface from showing a 502 as if it were the app. */
|
|
58
|
+
// `https://preview-<repo>-<sandboxId>.<zone>`; absent whenever no single hostname could stand for what's running
|
|
59
|
+
// (nothing up, still starting, several servers).
|
|
86
60
|
previewUrl: z
|
|
87
61
|
.string()
|
|
88
62
|
.optional()
|
|
89
63
|
.describe("Where to open it from outside, present only while that address really serves it. Absent on a sandbox with no outside address."),
|
|
90
|
-
// The workspace role this repo dir occupies (the three fixed dirs); absent for extra clones.
|
|
91
64
|
role: z
|
|
92
65
|
.enum(["intent", "desired-state", "app"])
|
|
93
66
|
.optional()
|
|
94
67
|
.describe("Which of the workspace's three fixed roles this repository fills. Absent for one that was simply cloned in."),
|
|
95
|
-
//
|
|
96
|
-
//
|
|
97
|
-
//
|
|
98
|
-
//
|
|
99
|
-
//
|
|
100
|
-
//
|
|
68
|
+
// Detected from specific files:
|
|
69
|
+
// deployConfig: deploy.config.ts.
|
|
70
|
+
// desiredState: desired-state.json (present after the first resolve).
|
|
71
|
+
// directoryUi: .intentic/ui/index.html.
|
|
72
|
+
// monorepo: pnpm-workspace.yaml + turbo.json.
|
|
73
|
+
// vitest: a root vitest.config.ts, or "vitest" in the manifest/workspace catalog.
|
|
74
|
+
// userStories: docs/user-stories.
|
|
75
|
+
// docs: docs/architecture.
|
|
101
76
|
deployConfig: z.boolean().describe("It declares infrastructure."),
|
|
102
77
|
desiredState: z.boolean().describe("That declaration has been resolved at least once."),
|
|
103
78
|
directoryUi: z.boolean().describe("It carries a small interface of its own."),
|