@rosthq/cli 0.7.160 → 0.7.161

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/dist/index.js CHANGED
@@ -13304,7 +13304,7 @@ var init_command_discovery = __esm({
13304
13304
  { "id": "agent.update_schedule", "title": "Update agent schedule", "description": "Set or clear the scheduled execution cron for a draft or live agent on a seat.", "required_scope": "tenant", "confirmation": "human_required", "trusted_execution": { "mode": "eligible_bounded", "risk_flags": [], "rationale": "Setting or changing a seat's routine schedule is a bounded, reversible worker action safe to auto-apply under a standing Trusted grant." }, "expose_over_mcp": true, "input_schema": { "type": "object", "properties": { "seat_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "schedule_cron": { "anyOf": [{ "type": "string", "minLength": 1, "maxLength": 120 }, { "type": "null" }] }, "schedule_timezone": { "type": "string", "minLength": 1, "maxLength": 100 } }, "required": ["seat_id", "schedule_cron"], "additionalProperties": false }, "output_schema": { "type": "object", "properties": { "seat_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "agent_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "schedule_cron": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "schedule_timezone": { "type": "string" }, "schedule_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "schedule_revision": { "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991 } }, "required": ["seat_id", "agent_id", "schedule_cron", "schedule_timezone", "schedule_id", "schedule_revision"], "additionalProperties": false }, "help": "Set or clear an agent's scheduled execution; a live scheduled agent must keep a steward chain resolving to a human.", "guide_slugs": ["agent-staffing-playbook", "runner-guide"], "stages": ["staffing", "operating_rhythm"], "related_command_ids": ["agent_setup.get", "agent_setup.relane", "agent_setup.start", "agent_setup.update", "agent_template.list", "agent.configure_tools", "agent.create_custom", "agent.create_from_template", "agent.decommission", "agent.get_run", "agent.go_live", "agent.list_runs", "agent.list_tool_calls", "agent.pause", "agent.resume", "agent.run_dry_run", "agent.run_now", "agent.status", "agent.trust.create", "aicos.brain_settings.get", "aicos.brain_settings.update", "charter.backfill_stock_evidence", "charter.set", "charter.sign_manifest", "command.describe", "command.list", "confirmation.approve", "friction.resolve", "goal.bind_measurable", "graph.get", "mcp_token.create", "mcp_token.list", "onboarding.status", "runner.list", "seat.get", "skill.assign_to_seat", "staffing.assign_agent_dry_run", "staffing.assign_user", "tenant.model_gateway_policy.update"] },
13305
13305
  { "id": "agent.watch_run", "title": "Watch agent run", "description": "Return a read-only live snapshot of one seat run: run status and lane, the derived current work-state, the run-heartbeat (quiet-but-healthy vs stalled) with current phase, the persisted session transcript, and the run's tool-call step feed (tool name, guard result, outcome). Never returns argument summaries or secret material.", "required_scope": "seat", "confirmation": "none", "trusted_execution": { "mode": "not_applicable", "risk_flags": [], "rationale": "This command is not part of the Trusted positive allowlist." }, "expose_over_mcp": true, "input_schema": { "type": "object", "properties": { "seat_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "run_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" } }, "required": ["seat_id", "run_id"], "additionalProperties": false }, "output_schema": { "type": "object", "properties": { "seat_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "run": { "type": "object", "properties": { "run_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "agent_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "agent_display_name": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "status": { "type": "string", "enum": ["running", "succeeded", "failed", "timeout", "cancelled"] }, "lane": { "type": "string", "enum": ["cloud", "mcp_session", "runner"] }, "model": { "type": "string" }, "started_at": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, "finished_at": { "anyOf": [{ "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, { "type": "null" }] }, "cost_usd": { "type": "string" }, "tool_call_count": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "denied_tool_call_count": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "held_tool_call_count": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "skill_activation_count": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 } }, "required": ["run_id", "agent_id", "agent_display_name", "status", "lane", "model", "started_at", "finished_at", "cost_usd", "tool_call_count", "denied_tool_call_count", "held_tool_call_count", "skill_activation_count"], "additionalProperties": false }, "is_live": { "type": "boolean" }, "redacted": { "type": "boolean" }, "current_state": { "type": "object", "properties": { "state": { "type": "string", "enum": ["not_started", "in_progress", "handed_off", "done", "failed"] }, "reasons": { "type": "array", "items": { "type": "string" } }, "claimed_state": { "anyOf": [{ "type": "string", "enum": ["not_started", "in_progress", "handed_off", "done", "failed"] }, { "type": "null" }] }, "claim_mismatch": { "type": "boolean" }, "last_activity_at": { "anyOf": [{ "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, { "type": "null" }] }, "last_durable_activity_at": { "anyOf": [{ "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, { "type": "null" }] } }, "required": ["state", "reasons", "claimed_state", "claim_mismatch", "last_activity_at", "last_durable_activity_at"], "additionalProperties": false }, "heartbeat": { "anyOf": [{ "type": "object", "properties": { "state": { "type": "string", "enum": ["working", "quiet_healthy", "recovered", "stalled"] }, "stalled": { "type": "boolean" }, "current_phase": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "last_progress_at": { "anyOf": [{ "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, { "type": "null" }] }, "expected_next_at": { "anyOf": [{ "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, { "type": "null" }] }, "stall_after_at": { "anyOf": [{ "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, { "type": "null" }] }, "lease_remaining_ms": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "reasons": { "type": "array", "items": { "type": "string" } } }, "required": ["state", "stalled", "current_phase", "last_progress_at", "expected_next_at", "stall_after_at", "lease_remaining_ms", "reasons"], "additionalProperties": false }, { "type": "null" }] }, "transcript": { "anyOf": [{ "type": "object", "properties": { "transcript_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "seat_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "run_id": { "anyOf": [{ "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, { "type": "null" }] }, "lane": { "type": "string", "enum": ["cloud", "runner"] }, "format": { "type": "string", "enum": ["jsonl", "text"] }, "message_count": { "anyOf": [{ "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, { "type": "null" }] }, "truncated": { "type": "boolean" }, "char_count": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "data_classification": { "type": "string", "enum": ["customer_content", "operational", "sandbox_output"] }, "retention_class": { "type": "string", "enum": ["ephemeral_7d", "standard_90d", "durable_1y", "legal_hold"] }, "created_at": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, "updated_at": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, "transcript": { "type": "string" } }, "required": ["transcript_id", "seat_id", "run_id", "lane", "format", "message_count", "truncated", "char_count", "data_classification", "retention_class", "created_at", "updated_at", "transcript"], "additionalProperties": false }, { "type": "null" }] }, "tool_calls": { "type": "array", "items": { "type": "object", "properties": { "tool_call_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "run_id": { "anyOf": [{ "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, { "type": "null" }] }, "tool_name": { "type": "string" }, "guard_result": { "type": "string", "enum": ["allowed", "denied_manifest", "denied_budget", "escalated", "denied_tenant_policy"] }, "manifest_clause": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "outcome": { "type": "string" }, "started_at": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, "finished_at": { "anyOf": [{ "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, { "type": "null" }] } }, "required": ["tool_call_id", "run_id", "tool_name", "guard_result", "manifest_clause", "outcome", "started_at", "finished_at"], "additionalProperties": false } }, "fetched_at": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" } }, "required": ["seat_id", "run", "is_live", "redacted", "current_state", "heartbeat", "transcript", "tool_calls", "fetched_at"], "additionalProperties": false }, "help": "Watch one run live (read-only): run status, derived work-state, quiet-vs-stalled heartbeat, transcript, and the tool-call step feed.", "guide_slugs": ["mcp-and-cli-guide", "how-agents-work"], "stages": ["operating_rhythm"], "related_command_ids": [] },
13306
13306
  { "id": "aicos.brain_settings.get", "title": "Get AICOS brain settings", "description": "Read the AICOS run lane and brain selection. Returns labels and enum settings only; no secrets or vault refs.", "required_scope": "tenant", "confirmation": "none", "trusted_execution": { "mode": "not_applicable", "risk_flags": [], "rationale": "This command is not part of the Trusted positive allowlist." }, "expose_over_mcp": true, "input_schema": { "type": "object", "properties": {}, "additionalProperties": false }, "output_schema": { "type": "object", "properties": { "aicos": { "type": "object", "properties": { "lane": { "type": "string", "enum": ["cloud", "runner", "mcp"] }, "cloud_brain": { "type": "string", "enum": ["managed", "byok"] }, "runner_brain": { "type": "string", "enum": ["claude-cli", "codex-cli"] }, "effective_brain": { "type": "string", "enum": ["managed", "byok", "claude-cli", "codex-cli", "mcp-client"] }, "label": { "type": "string", "minLength": 1, "maxLength": 80 }, "cloud_model_slug": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "cloud_options": { "type": "array", "items": { "type": "object", "properties": { "slug": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "provider": { "type": "string" }, "label": { "type": "string", "minLength": 1 }, "managed": { "type": "boolean" }, "zdr_available": { "type": "boolean" }, "selectable": { "type": "boolean" }, "disabled_reason": { "anyOf": [{ "type": "string", "minLength": 1 }, { "type": "null" }] }, "retention_disclosure": { "anyOf": [{ "type": "string", "minLength": 1 }, { "type": "null" }] }, "live_note": { "anyOf": [{ "type": "string", "minLength": 1 }, { "type": "null" }] } }, "required": ["slug", "provider", "label", "managed", "zdr_available", "selectable", "disabled_reason", "retention_disclosure", "live_note"], "additionalProperties": false } }, "non_zdr_unlocked": { "type": "boolean" } }, "required": ["lane", "cloud_brain", "runner_brain", "effective_brain", "label", "cloud_model_slug", "cloud_options", "non_zdr_unlocked"], "additionalProperties": false } }, "required": ["aicos"], "additionalProperties": false }, "help": "Read the AICOS lane and brain selection labels without returning provider keys, vault refs, or runner secrets.", "guide_slugs": ["aicos-chat-guide", "ai-model-data-handling-guide", "runner-guide", "settings-guide"], "stages": ["operating_rhythm"], "related_command_ids": ["agent.configure_tools", "agent.create_custom", "agent.go_live", "agent.run_dry_run", "agent.update_schedule", "aicos.brain_settings.update", "charter.backfill_stock_evidence", "charter.set", "charter.sign_manifest", "confirmation.approve", "graph.get", "integration.list", "integration.readiness", "integration.status", "integration.test", "mcp_token.create", "mcp_token.list", "mcp_token.revoke", "onboarding.create_invite", "onboarding.status", "runner.list", "seat.get", "settings.agent_policy.get", "settings.agent_policy.update", "settings.confirmation_policy.get", "settings.confirmation_policy.update", "settings.get", "settings.member_visibility.get", "settings.member_visibility.update", "settings.product_learning.get", "settings.product_learning.update", "settings.sync_brief_scope.get", "settings.sync_brief_scope.update", "settings.update", "skill.assign_to_seat", "tenant.model_gateway_policy.update", "tenant.rename"] },
13307
- { "id": "aicos.brain_settings.update", "title": "Update AICOS brain settings", "description": "Update the AICOS lane and cloud/runner brain preferences. Owner-only \u2014 an agent-class caller is always refused; have a human owner run this command. Audited.", "required_scope": "tenant", "confirmation": "human_required", "trusted_execution": { "mode": "always_human", "risk_flags": [], "rationale": "Trusted mode cannot bypass this command's human confirmation or high-risk boundary." }, "expose_over_mcp": true, "input_schema": { "type": "object", "properties": { "lane": { "type": "string", "enum": ["cloud", "runner", "mcp"] }, "cloud_brain": { "type": "string", "enum": ["managed", "byok"] }, "runner_brain": { "type": "string", "enum": ["claude-cli", "codex-cli"] }, "cloud_model_slug": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "receipt": { "type": "object", "properties": { "mutation_key": { "type": "string", "minLength": 16, "maxLength": 120 }, "authorizing_decision_id": { "anyOf": [{ "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, { "type": "null" }] }, "authorizing_receipt_id": { "anyOf": [{ "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, { "type": "null" }] }, "expected_configuration_version": { "type": "integer", "exclusiveMinimum": 0, "maximum": 2147483647 }, "expires_at": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" } }, "required": ["mutation_key", "expected_configuration_version", "expires_at"], "additionalProperties": false } }, "additionalProperties": false }, "output_schema": { "type": "object", "properties": { "aicos": { "type": "object", "properties": { "lane": { "type": "string", "enum": ["cloud", "runner", "mcp"] }, "cloud_brain": { "type": "string", "enum": ["managed", "byok"] }, "runner_brain": { "type": "string", "enum": ["claude-cli", "codex-cli"] }, "effective_brain": { "type": "string", "enum": ["managed", "byok", "claude-cli", "codex-cli", "mcp-client"] }, "label": { "type": "string", "minLength": 1, "maxLength": 80 }, "cloud_model_slug": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "cloud_options": { "type": "array", "items": { "type": "object", "properties": { "slug": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "provider": { "type": "string" }, "label": { "type": "string", "minLength": 1 }, "managed": { "type": "boolean" }, "zdr_available": { "type": "boolean" }, "selectable": { "type": "boolean" }, "disabled_reason": { "anyOf": [{ "type": "string", "minLength": 1 }, { "type": "null" }] }, "retention_disclosure": { "anyOf": [{ "type": "string", "minLength": 1 }, { "type": "null" }] }, "live_note": { "anyOf": [{ "type": "string", "minLength": 1 }, { "type": "null" }] } }, "required": ["slug", "provider", "label", "managed", "zdr_available", "selectable", "disabled_reason", "retention_disclosure", "live_note"], "additionalProperties": false } }, "non_zdr_unlocked": { "type": "boolean" } }, "required": ["lane", "cloud_brain", "runner_brain", "effective_brain", "label", "cloud_model_slug", "cloud_options", "non_zdr_unlocked"], "additionalProperties": false } }, "required": ["aicos"], "additionalProperties": false }, "help": "Update AICOS cloud managed/BYOK and runner Claude/Codex preferences. Owner-only: an agent caller is always refused. BYOK requires an active tenant Anthropic key.", "guide_slugs": ["aicos-chat-guide", "ai-model-data-handling-guide", "runner-guide", "settings-guide", "security-model-guide"], "stages": ["operating_rhythm"], "related_command_ids": ["agent.configure_tools", "agent.create_custom", "agent.go_live", "agent.run_dry_run", "agent.update_schedule", "aicos.brain_settings.get", "charter.backfill_stock_evidence", "charter.set", "charter.sign_manifest", "confirmation.approve", "graph.get", "integration.list", "integration.readiness", "integration.status", "integration.test", "mcp_token.create", "mcp_token.list", "mcp_token.revoke", "onboarding.create_invite", "onboarding.status", "runner.list", "seat.get", "settings.agent_policy.get", "settings.agent_policy.update", "settings.confirmation_policy.get", "settings.confirmation_policy.update", "settings.get", "settings.member_visibility.get", "settings.member_visibility.update", "settings.product_learning.get", "settings.product_learning.update", "settings.sync_brief_scope.get", "settings.sync_brief_scope.update", "settings.update", "skill.assign_to_seat", "tenant.model_gateway_policy.update", "tenant.rename"] },
13307
+ { "id": "aicos.brain_settings.update", "title": "Update AICOS brain settings", "description": "Update the AICOS lane and cloud/runner brain preferences. Owner-only for a human caller. An agent-class caller may change only lane and runner brain, and only by presenting a live, unconsumed activation receipt naming this command and that exact lane/runner-brain projection \u2014 cloud brain and managed-model fields are always refused for an agent-class call. Audited.", "required_scope": "tenant", "confirmation": "human_required", "trusted_execution": { "mode": "always_human", "risk_flags": [], "rationale": "Trusted mode cannot bypass this command's human confirmation or high-risk boundary." }, "expose_over_mcp": true, "input_schema": { "type": "object", "properties": { "lane": { "type": "string", "enum": ["cloud", "runner", "mcp"] }, "cloud_brain": { "type": "string", "enum": ["managed", "byok"] }, "runner_brain": { "type": "string", "enum": ["claude-cli", "codex-cli"] }, "cloud_model_slug": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "receipt": { "type": "object", "properties": { "mutation_key": { "type": "string", "minLength": 16, "maxLength": 120 }, "authorizing_decision_id": { "anyOf": [{ "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, { "type": "null" }] }, "authorizing_receipt_id": { "anyOf": [{ "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, { "type": "null" }] }, "expected_configuration_version": { "type": "integer", "exclusiveMinimum": 0, "maximum": 2147483647 }, "expires_at": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" } }, "required": ["mutation_key", "expected_configuration_version", "expires_at"], "additionalProperties": false } }, "additionalProperties": false }, "output_schema": { "type": "object", "properties": { "aicos": { "type": "object", "properties": { "lane": { "type": "string", "enum": ["cloud", "runner", "mcp"] }, "cloud_brain": { "type": "string", "enum": ["managed", "byok"] }, "runner_brain": { "type": "string", "enum": ["claude-cli", "codex-cli"] }, "effective_brain": { "type": "string", "enum": ["managed", "byok", "claude-cli", "codex-cli", "mcp-client"] }, "label": { "type": "string", "minLength": 1, "maxLength": 80 }, "cloud_model_slug": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "cloud_options": { "type": "array", "items": { "type": "object", "properties": { "slug": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "provider": { "type": "string" }, "label": { "type": "string", "minLength": 1 }, "managed": { "type": "boolean" }, "zdr_available": { "type": "boolean" }, "selectable": { "type": "boolean" }, "disabled_reason": { "anyOf": [{ "type": "string", "minLength": 1 }, { "type": "null" }] }, "retention_disclosure": { "anyOf": [{ "type": "string", "minLength": 1 }, { "type": "null" }] }, "live_note": { "anyOf": [{ "type": "string", "minLength": 1 }, { "type": "null" }] } }, "required": ["slug", "provider", "label", "managed", "zdr_available", "selectable", "disabled_reason", "retention_disclosure", "live_note"], "additionalProperties": false } }, "non_zdr_unlocked": { "type": "boolean" } }, "required": ["lane", "cloud_brain", "runner_brain", "effective_brain", "label", "cloud_model_slug", "cloud_options", "non_zdr_unlocked"], "additionalProperties": false } }, "required": ["aicos"], "additionalProperties": false }, "help": "Update AICOS cloud managed/BYOK and runner Claude/Codex preferences. Agents hold no ambient authority: an agent-class call must present one valid, unconsumed, operation-bound single-use activation receipt, and may change only the lane and runner brain that receipt authorizes; cloud brain and managed-model fields stay owner-only. BYOK requires an active tenant Anthropic key.", "guide_slugs": ["aicos-chat-guide", "ai-model-data-handling-guide", "runner-guide", "settings-guide", "security-model-guide"], "stages": ["operating_rhythm"], "related_command_ids": ["agent.configure_tools", "agent.create_custom", "agent.go_live", "agent.run_dry_run", "agent.update_schedule", "aicos.brain_settings.get", "charter.backfill_stock_evidence", "charter.set", "charter.sign_manifest", "confirmation.approve", "graph.get", "integration.list", "integration.readiness", "integration.status", "integration.test", "mcp_token.create", "mcp_token.list", "mcp_token.revoke", "onboarding.create_invite", "onboarding.status", "runner.list", "seat.get", "settings.agent_policy.get", "settings.agent_policy.update", "settings.confirmation_policy.get", "settings.confirmation_policy.update", "settings.get", "settings.member_visibility.get", "settings.member_visibility.update", "settings.product_learning.get", "settings.product_learning.update", "settings.sync_brief_scope.get", "settings.sync_brief_scope.update", "settings.update", "skill.assign_to_seat", "tenant.model_gateway_policy.update", "tenant.rename"] },
13308
13308
  { "id": "cascade.import", "title": "Import Rocks from a ninety Rocks export", "description": "Bulk-import a ninety Rocks export into the Cascade as cycle goals under a company objective in the active cycle. Owners are seat names resolved to seats. Requires an active cycle and a target company objective (auto-selected when exactly one exists, else pass parent_objective_id). Idempotent \u2014 re-importing the same export is a no-op, and an existing cycle goal with the same objective + seat + title is skipped.", "required_scope": "tenant_admin", "confirmation": "none", "trusted_execution": { "mode": "always_human", "risk_flags": ["admin"], "rationale": "Trusted mode cannot bypass this command's human confirmation or high-risk boundary." }, "expose_over_mcp": true, "input_schema": { "type": "object", "properties": { "dry_run": { "default": false, "type": "boolean" }, "parent_objective_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "rocks": { "minItems": 1, "maxItems": 1e3, "type": "array", "items": { "type": "object", "properties": { "owner": { "type": "string", "minLength": 1, "maxLength": 200 }, "title": { "type": "string", "minLength": 1, "maxLength": 200 }, "definition_of_done": { "type": "string", "minLength": 1, "maxLength": 2e3 } }, "required": ["owner", "title", "definition_of_done"], "additionalProperties": false } } }, "required": ["rocks"], "additionalProperties": false }, "output_schema": { "type": "object", "properties": { "dry_run": { "type": "boolean" }, "rocks_created": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "rocks_matched": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "rocks_skipped": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "objective_id": { "anyOf": [{ "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, { "type": "null" }] }, "batch_id": { "anyOf": [{ "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, { "type": "null" }] }, "skipped": { "maxItems": 200, "type": "array", "items": { "type": "object", "properties": { "owner": { "type": "string" }, "title": { "type": "string" }, "reason": { "type": "string" } }, "required": ["reason"], "additionalProperties": false } } }, "required": ["dry_run", "rocks_created", "rocks_matched", "rocks_skipped", "objective_id", "batch_id", "skipped"], "additionalProperties": false }, "help": "Import a ninety Rocks export into the Cascade as cycle goals under a company objective in the active cycle; owners resolve to seats.", "guide_slugs": ["migration-and-legal-notes"], "stages": ["operating_rhythm"], "related_command_ids": ["agent.go_live", "agent.run_dry_run", "cascade.import_okrs", "charter.approve", "charter.draft", "charter.draft_all", "charter.sign_manifest", "charter.update_draft", "compass.answer_gap", "compass.approve_version", "compass.draft", "compass.get_current", "compass.import", "compass.list_gaps", "compass.reject_draft", "compass.set", "compass.update_draft", "confirmation.activation_set.list", "confirmation.approve", "credential.ingress", "friction.file_issue", "friction.import", "friction.list", "friction.resolve", "onboarding.activate", "onboarding.advance_step", "onboarding.attach_reference", "onboarding.create_invite", "onboarding.finish", "onboarding.rehearse", "onboarding.setup", "onboarding.source_ingest", "onboarding.status", "onboarding.upload_context", "runner_setup.cancel", "runner_setup.resume", "runner_setup.start", "runner_setup.status", "seat.create", "seat.set_type", "signal.bind", "signal.confirm_reading", "signal.draft_first_readings", "signal.import", "signal.report", "staffing.assign_agent_dry_run", "staffing.assign_user", "sync.brief.compile", "sync.brief.get", "sync.item.assign", "sync.run.complete", "sync.run.start", "task.import"] },
13309
13309
  { "id": "cascade.import_okrs", "title": "Import objectives and key results from a generic OKR CSV", "description": "Bulk-import a generic OKR export (objectives + key results) into the Cascade. Company objectives become company_objective goals; seat objectives become seat goals under the resolved company objective; metric key results become measurables bound informs to their objective; milestone key results become milestone goals under a seat objective. Owners are seat names resolved to seats; requires an active cycle. Idempotent \u2014 re-importing the same file is a no-op; existing goals/measurables/bindings are matched, never duplicated.", "required_scope": "tenant_admin", "confirmation": "none", "trusted_execution": { "mode": "always_human", "risk_flags": ["admin"], "rationale": "Trusted mode cannot bypass this command's human confirmation or high-risk boundary." }, "expose_over_mcp": true, "input_schema": { "type": "object", "properties": { "dry_run": { "default": false, "type": "boolean" }, "parent_objective_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "objectives": { "minItems": 1, "maxItems": 200, "type": "array", "items": { "type": "object", "properties": { "title": { "type": "string", "minLength": 1, "maxLength": 200 }, "level": { "type": "string", "enum": ["company", "seat"] }, "owner": { "type": "string", "minLength": 1, "maxLength": 200 }, "cycle_label": { "anyOf": [{ "type": "string", "minLength": 1, "maxLength": 200 }, { "type": "null" }] }, "key_results": { "minItems": 1, "maxItems": 50, "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "type": { "type": "string", "const": "metric" }, "target": { "type": "number" }, "title": { "type": "string", "minLength": 1, "maxLength": 200 }, "unit": { "type": "string", "maxLength": 50 }, "direction": { "type": "string", "enum": ["up_good", "down_good"] }, "start_value": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "cadence": { "type": "string", "enum": ["daily", "weekly", "monthly", "quarterly", "annual"] } }, "required": ["type", "target", "title", "unit", "direction", "start_value", "cadence"], "additionalProperties": false }, { "type": "object", "properties": { "type": { "type": "string", "const": "milestone" }, "target": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "title": { "type": "string", "minLength": 1, "maxLength": 200 }, "unit": { "type": "string", "maxLength": 50 }, "direction": { "type": "string", "enum": ["up_good", "down_good"] }, "start_value": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "cadence": { "type": "string", "enum": ["daily", "weekly", "monthly", "quarterly", "annual"] } }, "required": ["type", "target", "title", "unit", "direction", "start_value", "cadence"], "additionalProperties": false }] } } }, "required": ["title", "level", "owner", "cycle_label", "key_results"], "additionalProperties": false } } }, "required": ["objectives"], "additionalProperties": false }, "output_schema": { "type": "object", "properties": { "dry_run": { "type": "boolean" }, "objectives_created": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "objectives_matched": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "measurables_created": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "measurables_matched": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "bindings_created": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "milestones_created": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "milestones_matched": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "skipped_count": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "company_objective_id": { "anyOf": [{ "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, { "type": "null" }] }, "batch_id": { "anyOf": [{ "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, { "type": "null" }] }, "skipped": { "maxItems": 200, "type": "array", "items": { "type": "object", "properties": { "owner": { "type": "string" }, "title": { "type": "string" }, "reason": { "type": "string" } }, "required": ["reason"], "additionalProperties": false } } }, "required": ["dry_run", "objectives_created", "objectives_matched", "measurables_created", "measurables_matched", "bindings_created", "milestones_created", "milestones_matched", "skipped_count", "company_objective_id", "batch_id", "skipped"], "additionalProperties": false }, "help": "Import a generic OKR CSV (objectives + key results) into the Cascade; objectives become goals, metric KRs become measurables bound informs, milestone KRs become milestone goals; owners resolve to seats.", "guide_slugs": ["migration-and-legal-notes"], "stages": ["operating_rhythm"], "related_command_ids": ["cascade.import", "charter.draft", "compass.draft", "compass.import", "friction.import", "onboarding.upload_context", "seat.create", "signal.import", "task.import"] },
13310
13310
  { "id": "charter.apply_seat_type_recommendation", "title": "Apply Charter seat-type recommendation", "description": "Apply the seat-type recommendation from a draft Charter.", "required_scope": "seat", "confirmation": "human_required", "trusted_execution": { "mode": "always_human", "risk_flags": [], "rationale": "Trusted mode cannot bypass this command's human confirmation or high-risk boundary." }, "expose_over_mcp": true, "input_schema": { "type": "object", "properties": { "charter_version_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" } }, "required": ["charter_version_id"], "additionalProperties": false }, "output_schema": { "type": "object", "properties": { "charter_version_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "seat_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "edit_revision": { "type": "integer", "minimum": 1, "maximum": 9007199254740991 } }, "required": ["charter_version_id", "seat_id"], "additionalProperties": false }, "help": "Apply seat-type recommendations only after the Charter clarifies work shape, risk, and Steward accountability.", "guide_slugs": ["agent-staffing-playbook", "charter-design-playbook", "how-agents-work"], "stages": ["charter_design", "staffing"], "related_command_ids": ["charter.approve", "charter.draft", "charter.draft_all", "charter.get", "charter.list", "charter.preview_signal_reconciliation", "charter.reconcile_signals", "charter.sign_manifest", "charter.skip", "charter.update_draft", "confirmation.approve"] },
@@ -29029,9 +29029,303 @@ var storedConfirmationPolicySchema = external_exports.object({
29029
29029
  cli_mode: cliConfirmationModeSchema
29030
29030
  }).strict();
29031
29031
 
29032
- // ../../packages/protocol/src/runner-settings.ts
29032
+ // ../../packages/protocol/src/runner-setup.ts
29033
29033
  var uuid3 = external_exports.string().uuid();
29034
29034
  var isoDateTime = external_exports.string().datetime({ offset: true });
29035
+ var sha256Hex = external_exports.string().regex(/^[0-9a-f]{64}$/, "expected a lowercase sha-256 hex digest");
29036
+ var runnerSetupRuntimeSchema = external_exports.enum(["claude", "codex"]);
29037
+ var runnerSetupSelectedRuntimesSchema = external_exports.array(runnerSetupRuntimeSchema).min(1).max(2).refine(
29038
+ (runtimes) => new Set(runtimes).size === runtimes.length,
29039
+ "selected runtimes must be distinct"
29040
+ );
29041
+ var runnerSetupStageSchema = external_exports.enum([
29042
+ "pairing",
29043
+ "provider_consent",
29044
+ "service_install",
29045
+ "runtime_validation",
29046
+ "heartbeat_wait",
29047
+ "ready"
29048
+ ]);
29049
+ var runnerSetupStatusSchema = external_exports.enum([
29050
+ "active",
29051
+ "action_required",
29052
+ "blocked",
29053
+ "ready",
29054
+ "cancelled",
29055
+ "expired"
29056
+ ]);
29057
+ var RUNNER_SETUP_TERMINAL_STATUSES = ["ready", "cancelled", "expired"];
29058
+ function isRunnerSetupTerminalStatus(status) {
29059
+ return RUNNER_SETUP_TERMINAL_STATUSES.includes(status);
29060
+ }
29061
+ var runnerSetupBlockerCodeSchema = external_exports.enum([
29062
+ "unsupported_platform",
29063
+ "unsupported_service_manager",
29064
+ "provider_version_unsupported",
29065
+ "provider_consent_failed",
29066
+ "pairing_expired",
29067
+ "validation_failed",
29068
+ "heartbeat_timeout",
29069
+ "service_key_revoked",
29070
+ "runner_revoked"
29071
+ ]);
29072
+ var runnerSetupActionKindSchema = external_exports.enum([
29073
+ "device_pairing_approval",
29074
+ "provider_consent",
29075
+ // R7: unsupported service managers get a typed manual-service action and must
29076
+ // not claim full background readiness.
29077
+ "manual_service_install"
29078
+ ]);
29079
+ var runnerSetupActionRequiredSchema = external_exports.object({
29080
+ kind: runnerSetupActionKindSchema,
29081
+ // Which selected runtime the action targets (provider consent); null for
29082
+ // runtime-neutral actions such as device pairing approval.
29083
+ runtime: runnerSetupRuntimeSchema.nullable(),
29084
+ // Server-generated allowlisted destination (e.g. the runner setup page).
29085
+ // Null when the action is completed locally on the machine.
29086
+ url: external_exports.string().max(600).nullable(),
29087
+ // Present only when the responding surface freshly minted/holds the raw code
29088
+ // (web setup page, local CLI ceremony). The server stores only hashes, so
29089
+ // remote command responses carry null here.
29090
+ user_code: external_exports.string().max(40).nullable(),
29091
+ expires_at: isoDateTime.nullable()
29092
+ }).strict();
29093
+ var runnerSetupCheckpointWriterSchema = external_exports.enum(["server", "runner", "owner"]);
29094
+ var runnerSetupCheckpointSchema = external_exports.object({
29095
+ stage: runnerSetupStageSchema,
29096
+ key: external_exports.string().min(1).max(120),
29097
+ writer: runnerSetupCheckpointWriterSchema,
29098
+ // Runner-published checkpoints carry the caller's request digest so a replay
29099
+ // (same key + same digest) returns the stored checkpoint and a conflicting
29100
+ // rewrite (same key + different digest) is rejected. Server/owner-written
29101
+ // checkpoints carry null.
29102
+ request_digest: sha256Hex.nullable(),
29103
+ completed_at: isoDateTime
29104
+ }).strict();
29105
+ var runnerSetupCheckpointPayloadSchema = external_exports.object({
29106
+ service_manager: external_exports.enum(["launchd", "manual"]).optional(),
29107
+ service_installed: external_exports.boolean().optional(),
29108
+ service_state_file_present: external_exports.boolean().optional(),
29109
+ cell_generation: external_exports.number().int().nonnegative().optional(),
29110
+ provider_cli_version: external_exports.string().max(40).regex(/^[0-9A-Za-z.+-]+$/).optional(),
29111
+ blocker_code: runnerSetupBlockerCodeSchema.optional()
29112
+ }).strict();
29113
+ var runnerSetupCheckpointPublishSchema = external_exports.object({
29114
+ setup_id: uuid3,
29115
+ stage: runnerSetupStageSchema,
29116
+ checkpoint_key: external_exports.string().min(1).max(120),
29117
+ request_digest: sha256Hex,
29118
+ payload: runnerSetupCheckpointPayloadSchema
29119
+ }).strict();
29120
+ var runnerValidationReceiptSchema = external_exports.object({
29121
+ version: external_exports.number().int().positive(),
29122
+ runner_id: uuid3,
29123
+ runtime: runnerSetupRuntimeSchema,
29124
+ credential_cell_generation: external_exports.number().int().nonnegative(),
29125
+ provider_cli_version: external_exports.string().max(40),
29126
+ rost_cli_version: external_exports.string().max(40),
29127
+ sandbox_policy_version: external_exports.string().max(40),
29128
+ mcp_config_digest: sha256Hex,
29129
+ service_key_generation: external_exports.number().int().nonnegative(),
29130
+ probe_capability_version: external_exports.number().int().positive(),
29131
+ issued_at: isoDateTime,
29132
+ expires_at: isoDateTime
29133
+ }).strict();
29134
+ var runnerSetupValidationChallengeSchema = external_exports.object({
29135
+ setup_id: uuid3,
29136
+ runtime: runnerSetupRuntimeSchema,
29137
+ nonce: external_exports.string().min(16).max(120),
29138
+ expires_at: isoDateTime
29139
+ }).strict();
29140
+ var runnerSetupValidationResultSchema = external_exports.object({
29141
+ setup_id: uuid3,
29142
+ runtime: runnerSetupRuntimeSchema,
29143
+ // sha-256 of the nonce-derived probe answer — never raw provider output.
29144
+ nonce_proof: sha256Hex,
29145
+ service_key_generation: external_exports.number().int().nonnegative()
29146
+ }).strict();
29147
+ var RUNNER_SETUP_ATTEMPT_WINDOW_MS = 10 * 60 * 1e3;
29148
+ var runnerSetupValidationJobStatusSchema = external_exports.enum([
29149
+ "issued",
29150
+ "claimed",
29151
+ "completed",
29152
+ "failed",
29153
+ "expired"
29154
+ ]);
29155
+ var runnerSetupValidationAttemptKindSchema = external_exports.enum([
29156
+ "runtime_probe",
29157
+ "aicos_acceptance"
29158
+ ]);
29159
+ var runnerSetupValidationAttemptStatusSchema = external_exports.enum([
29160
+ "started",
29161
+ "succeeded",
29162
+ "failed"
29163
+ ]);
29164
+ var runnerSetupValidationAttemptResultSchema = external_exports.object({
29165
+ runner_id: uuid3,
29166
+ runtime: runnerSetupRuntimeSchema,
29167
+ model: external_exports.string().max(120).regex(/^[0-9A-Za-z _./:+-]+$/).nullable(),
29168
+ provider_cli_version: external_exports.string().max(40).regex(/^[0-9A-Za-z.+-]+$/).nullable(),
29169
+ observed_at: isoDateTime
29170
+ }).strict();
29171
+ var RUNNER_SETUP_VALIDATION_JOB_TERMINAL_STATUSES = [
29172
+ "completed",
29173
+ "failed",
29174
+ "expired"
29175
+ ];
29176
+ var runnerSetupValidationJobSchema = external_exports.object({
29177
+ job_id: uuid3,
29178
+ setup_id: uuid3,
29179
+ runtime: runnerSetupRuntimeSchema,
29180
+ status: runnerSetupValidationJobStatusSchema,
29181
+ // Stamped at issue from the session's bound key; DER-3357's attempt path
29182
+ // compares it against the live generation (rotation-stale refusal).
29183
+ service_key_generation: external_exports.number().int().nonnegative(),
29184
+ expires_at: isoDateTime,
29185
+ claimed_at: isoDateTime.nullable(),
29186
+ completed_at: isoDateTime.nullable(),
29187
+ created_at: isoDateTime,
29188
+ updated_at: isoDateTime
29189
+ }).strict().refine(
29190
+ (job) => RUNNER_SETUP_VALIDATION_JOB_TERMINAL_STATUSES.includes(job.status) === (job.completed_at !== null),
29191
+ "terminal status must correlate with completed_at"
29192
+ ).refine(
29193
+ (job) => job.claimed_at === null || job.status !== "issued",
29194
+ "claimed_at requires a non-issued status"
29195
+ ).refine(
29196
+ (job) => {
29197
+ const created = new Date(job.created_at).getTime();
29198
+ const expires = new Date(job.expires_at).getTime();
29199
+ return expires > created && expires <= created + 24 * 60 * 60 * 1e3;
29200
+ },
29201
+ "expires_at must be after created_at and within 24 hours"
29202
+ );
29203
+ var runnerSetupValidationAttemptSchema = external_exports.object({
29204
+ attempt_id: uuid3,
29205
+ job_id: uuid3,
29206
+ setup_id: uuid3,
29207
+ kind: runnerSetupValidationAttemptKindSchema,
29208
+ status: runnerSetupValidationAttemptStatusSchema,
29209
+ result: runnerSetupValidationAttemptResultSchema.nullable(),
29210
+ decision_id: uuid3.nullable(),
29211
+ activation_receipt_id: uuid3.nullable(),
29212
+ started_at: isoDateTime,
29213
+ completed_at: isoDateTime.nullable(),
29214
+ created_at: isoDateTime,
29215
+ updated_at: isoDateTime
29216
+ }).strict().refine(
29217
+ (attempt) => attempt.status === "started" === (attempt.completed_at === null),
29218
+ "started status must correlate with null completed_at"
29219
+ ).refine(
29220
+ (attempt) => attempt.kind === "aicos_acceptance" === (attempt.decision_id !== null),
29221
+ "aicos_acceptance must be attributed to a decision"
29222
+ ).refine(
29223
+ (attempt) => attempt.kind === "aicos_acceptance" === (attempt.activation_receipt_id !== null),
29224
+ "aicos_acceptance must be attributed to an activation receipt"
29225
+ );
29226
+ var runnerSetupValidationClaimRequestSchema = external_exports.object({
29227
+ setup_id: uuid3,
29228
+ runtime: runnerSetupRuntimeSchema
29229
+ }).strict();
29230
+ var runnerSetupValidationClaimResponseSchema = external_exports.object({
29231
+ job_id: uuid3,
29232
+ challenge: runnerSetupValidationChallengeSchema,
29233
+ probe_capability_version: external_exports.number().int().positive(),
29234
+ allowed_command_ids: external_exports.array(external_exports.string().min(1).max(120)).min(1).max(20)
29235
+ }).strict();
29236
+ var runnerSetupValidationReportRequestSchema = external_exports.object({
29237
+ job_id: uuid3,
29238
+ // The raw nonce travels back so the server can recompute the proof and
29239
+ // verify the round trip; the server itself only ever stored its sha-256.
29240
+ nonce: external_exports.string().min(16).max(120),
29241
+ result: runnerSetupValidationResultSchema,
29242
+ attempt: runnerSetupValidationAttemptResultSchema,
29243
+ // At least one id: the probe cannot have produced a result without invoking
29244
+ // the setup projection it is built on, and an EMPTY array made the result
29245
+ // route's `.some(...)` bound vacuously true — reporting nothing was the way
29246
+ // past the check (DER-3336).
29247
+ invoked_command_ids: external_exports.array(external_exports.string().min(1).max(120)).min(1).max(20),
29248
+ // DER-3336: machine FACTS about the runner's own environment — never a
29249
+ // VERDICT. `runnerValidationReceiptSchema` binds a receipt to these five
29250
+ // fields (and key rotation invalidates that binding), so the reporting
29251
+ // service must supply them for the server to mint a correct receipt. The
29252
+ // distinction that makes this safe: the runner may assert FACTS about
29253
+ // itself (what CLI/sandbox/MCP-config version it is running), which the
29254
+ // receipt BINDS and which rotation can invalidate — but there is still no
29255
+ // field anywhere in this request by which the runner asserts pass/fail.
29256
+ // The server alone derives that verdict (see the CRITICAL comment above).
29257
+ receipt_facts: runnerValidationReceiptSchema.pick({
29258
+ credential_cell_generation: true,
29259
+ provider_cli_version: true,
29260
+ rost_cli_version: true,
29261
+ sandbox_policy_version: true,
29262
+ mcp_config_digest: true
29263
+ })
29264
+ }).strict();
29265
+ var runnerSetupValidationReportResponseSchema = external_exports.object({
29266
+ job_id: uuid3,
29267
+ attempt_id: uuid3,
29268
+ verdict: external_exports.enum(["passed", "failed"]),
29269
+ receipt: runnerValidationReceiptSchema.nullable(),
29270
+ reason: external_exports.string().max(200).nullable()
29271
+ }).strict();
29272
+ var runnerRuntimeAuthStateSchema = external_exports.enum(["ready", "missing", "stale", "unknown"]);
29273
+ var runnerRuntimeSandboxStateSchema = external_exports.enum(["passed", "failed", "unknown"]);
29274
+ var runnerRuntimeValidationStateSchema = external_exports.enum([
29275
+ "current",
29276
+ "missing",
29277
+ "stale",
29278
+ "failed",
29279
+ "mismatch"
29280
+ ]);
29281
+ var runnerRuntimeReadinessSchema = external_exports.object({
29282
+ runtime: runnerSetupRuntimeSchema,
29283
+ installed: external_exports.boolean(),
29284
+ cli_version: external_exports.string().max(40).nullable(),
29285
+ auth_state: runnerRuntimeAuthStateSchema,
29286
+ // The truthful cell-probe contract version (DER-3022 shape). Null when the
29287
+ // runner never advertised one — which is NOT ready.
29288
+ auth_contract_version: external_exports.number().int().positive().nullable(),
29289
+ sandbox_state: runnerRuntimeSandboxStateSchema,
29290
+ validation_state: runnerRuntimeValidationStateSchema,
29291
+ validation_receipt: runnerValidationReceiptSchema.nullable()
29292
+ }).strict();
29293
+ var runnerSetupSessionSchema = external_exports.object({
29294
+ setup_id: uuid3,
29295
+ stage: runnerSetupStageSchema,
29296
+ status: runnerSetupStatusSchema,
29297
+ selected_runtimes: runnerSetupSelectedRuntimesSchema,
29298
+ runner_id: uuid3.nullable(),
29299
+ blocker_code: runnerSetupBlockerCodeSchema.nullable(),
29300
+ action_required: runnerSetupActionRequiredSchema.nullable(),
29301
+ checkpoints: external_exports.array(runnerSetupCheckpointSchema),
29302
+ // One readiness entry per SELECTED runtime once observations exist; empty
29303
+ // until the first server-observed heartbeat/validation reaches the session.
29304
+ runtime_readiness: external_exports.array(runnerRuntimeReadinessSchema),
29305
+ service_key_generation: external_exports.number().int().nonnegative(),
29306
+ service_key_bound: external_exports.boolean(),
29307
+ service_key_revoked: external_exports.boolean(),
29308
+ expires_at: isoDateTime,
29309
+ terminal_at: isoDateTime.nullable(),
29310
+ created_at: isoDateTime,
29311
+ updated_at: isoDateTime
29312
+ }).strict();
29313
+ var runnerSetupStartInputSchema = external_exports.object({
29314
+ selected_runtimes: runnerSetupSelectedRuntimesSchema
29315
+ }).strict();
29316
+ var runnerSetupStatusInputSchema = external_exports.object({
29317
+ setup_id: uuid3
29318
+ }).strict();
29319
+ var runnerSetupResumeInputSchema = external_exports.object({
29320
+ setup_id: uuid3
29321
+ }).strict();
29322
+ var runnerSetupCancelInputSchema = external_exports.object({
29323
+ setup_id: uuid3
29324
+ }).strict();
29325
+
29326
+ // ../../packages/protocol/src/runner-settings.ts
29327
+ var uuid5 = external_exports.string().uuid();
29328
+ var isoDateTime2 = external_exports.string().datetime({ offset: true });
29035
29329
  var runnerHealthSchema = external_exports.enum(["online", "stale", "offline", "revoked", "unpaired"]);
29036
29330
  var runnerExecutionStateSchema = external_exports.enum([
29037
29331
  "ready",
@@ -29057,8 +29351,8 @@ var runnerExecutionReadinessSchema = external_exports.object({
29057
29351
  due_queued_work_orders: external_exports.number().int().nonnegative(),
29058
29352
  claimed_work_orders: external_exports.number().int().nonnegative(),
29059
29353
  running_work_orders: external_exports.number().int().nonnegative(),
29060
- recent_completed_at: isoDateTime.nullable(),
29061
- recent_failed_at: isoDateTime.nullable()
29354
+ recent_completed_at: isoDateTime2.nullable(),
29355
+ recent_failed_at: isoDateTime2.nullable()
29062
29356
  }).strict();
29063
29357
  var runnerClaimabilityCheckSchema = external_exports.object({
29064
29358
  key: external_exports.string(),
@@ -29101,12 +29395,12 @@ var runnerCapacitySchema = external_exports.object({
29101
29395
  raw_state: external_exports.string().nullable(),
29102
29396
  // Null until the harness gains rate-limit error classification (out of scope for DER-1588);
29103
29397
  // surfaced now so a fleet reader picks it up automatically once it starts being set.
29104
- rate_limited_until: isoDateTime.nullable(),
29398
+ rate_limited_until: isoDateTime2.nullable(),
29105
29399
  has_observation: external_exports.boolean(),
29106
29400
  freshness: external_exports.enum(["fresh", "stale"])
29107
29401
  }).strict();
29108
29402
  var runnerSummarySchema = external_exports.object({
29109
- id: uuid3,
29403
+ id: uuid5,
29110
29404
  name: external_exports.string(),
29111
29405
  platform: external_exports.string(),
29112
29406
  health: runnerHealthSchema,
@@ -29115,10 +29409,10 @@ var runnerSummarySchema = external_exports.object({
29115
29409
  posture: runnerPostureSchema,
29116
29410
  execution: runnerExecutionReadinessSchema,
29117
29411
  capacity: runnerCapacitySchema,
29118
- paired_at: isoDateTime.nullable(),
29119
- last_heartbeat_at: isoDateTime.nullable(),
29120
- revoked_at: isoDateTime.nullable(),
29121
- created_at: isoDateTime
29412
+ paired_at: isoDateTime2.nullable(),
29413
+ last_heartbeat_at: isoDateTime2.nullable(),
29414
+ revoked_at: isoDateTime2.nullable(),
29415
+ created_at: isoDateTime2
29122
29416
  }).strict();
29123
29417
  var runnerListInputSchema = external_exports.object({
29124
29418
  include_revoked: external_exports.boolean().optional()
@@ -29127,24 +29421,24 @@ var runnerListOutputSchema = external_exports.object({
29127
29421
  runners: external_exports.array(runnerSummarySchema)
29128
29422
  }).strict();
29129
29423
  var runnerStatusInputSchema = external_exports.object({
29130
- runner_id: uuid3
29424
+ runner_id: uuid5
29131
29425
  }).strict();
29132
29426
  var runnerPairingStartInputSchema = external_exports.object({
29133
29427
  name: external_exports.string().min(1).max(120),
29134
29428
  platform: external_exports.string().min(1).max(120)
29135
29429
  }).strict();
29136
29430
  var runnerPairingStartOutputSchema = external_exports.object({
29137
- pairing_session_id: uuid3,
29431
+ pairing_session_id: uuid5,
29138
29432
  user_code: external_exports.string(),
29139
29433
  verification_uri: external_exports.string(),
29140
- expires_at: isoDateTime,
29434
+ expires_at: isoDateTime2,
29141
29435
  expires_in: external_exports.number().int().nonnegative()
29142
29436
  }).strict();
29143
29437
  var runnerRevokeInputSchema = external_exports.object({
29144
- runner_id: uuid3
29438
+ runner_id: uuid5
29145
29439
  }).strict();
29146
29440
  var runnerRevokeOutputSchema = external_exports.object({
29147
- runner_id: uuid3,
29441
+ runner_id: uuid5,
29148
29442
  revoked: external_exports.boolean()
29149
29443
  }).strict();
29150
29444
  var workOrderStatusSchema = external_exports.enum(["queued", "claimed", "running", "done", "failed", "expired"]);
@@ -29155,16 +29449,16 @@ var agentExecutionModeSchema = external_exports.enum([
29155
29449
  ]);
29156
29450
  var workOrderExecutionModeSchema = agentExecutionModeSchema.exclude(["rehearsal"]);
29157
29451
  var workOrderSummaryBaseSchema = external_exports.object({
29158
- id: uuid3,
29159
- agent_id: uuid3,
29160
- task_id: uuid3.nullable(),
29452
+ id: uuid5,
29453
+ agent_id: uuid5,
29454
+ task_id: uuid5.nullable(),
29161
29455
  execution_mode: workOrderExecutionModeSchema.nullable(),
29162
29456
  lane: external_exports.enum(["cloud", "runner"]),
29163
29457
  status: workOrderStatusSchema,
29164
- claimed_by_runner_id: uuid3.nullable(),
29165
- scheduled_for: isoDateTime,
29166
- grace_deadline: isoDateTime,
29167
- created_at: isoDateTime
29458
+ claimed_by_runner_id: uuid5.nullable(),
29459
+ scheduled_for: isoDateTime2,
29460
+ grace_deadline: isoDateTime2,
29461
+ created_at: isoDateTime2
29168
29462
  });
29169
29463
  var workOrderSummarySchema = external_exports.union([
29170
29464
  workOrderSummaryBaseSchema.extend({
@@ -29173,43 +29467,43 @@ var workOrderSummarySchema = external_exports.union([
29173
29467
  schedule_local_occurrence: external_exports.null()
29174
29468
  }).strict(),
29175
29469
  workOrderSummaryBaseSchema.extend({
29176
- schedule_id: uuid3,
29470
+ schedule_id: uuid5,
29177
29471
  schedule_revision: external_exports.number().int().positive(),
29178
29472
  schedule_local_occurrence: external_exports.string().min(1).max(80)
29179
29473
  }).strict()
29180
29474
  ]);
29181
29475
  var workOrderListInputSchema = external_exports.object({
29182
29476
  status: workOrderStatusSchema.optional(),
29183
- agent_id: uuid3.optional(),
29184
- runner_id: uuid3.optional(),
29477
+ agent_id: uuid5.optional(),
29478
+ runner_id: uuid5.optional(),
29185
29479
  limit: external_exports.number().int().min(1).max(200).optional()
29186
29480
  }).strict();
29187
29481
  var workOrderListOutputSchema = external_exports.object({
29188
29482
  work_orders: external_exports.array(workOrderSummarySchema)
29189
29483
  }).strict();
29190
29484
  var workOrderEnqueueInputSchema = external_exports.object({
29191
- agent_id: uuid3,
29192
- scheduled_for: isoDateTime.optional(),
29485
+ agent_id: uuid5,
29486
+ scheduled_for: isoDateTime2.optional(),
29193
29487
  // DER-1973: cloud-lane only. A runner-lane agent rejects a task_id at enqueue —
29194
29488
  // a task-linked runner order is structurally unclaimable (the runner-claim SQL
29195
29489
  // requires task_id is null). Run task-linked runner work as an interactive agent turn.
29196
- task_id: uuid3.optional()
29490
+ task_id: uuid5.optional()
29197
29491
  }).strict();
29198
29492
  var agentRunNowInputSchema = external_exports.object({
29199
- seat_id: uuid3,
29493
+ seat_id: uuid5,
29200
29494
  // DER-1973: cloud-lane only. A runner-lane agent rejects a task_id at enqueue
29201
29495
  // (structurally unclaimable). Run task-linked runner work as an interactive agent turn.
29202
- task_id: uuid3.optional()
29496
+ task_id: uuid5.optional()
29203
29497
  }).strict();
29204
29498
  var agentRunNowOutputSchema = external_exports.object({
29205
29499
  execution_mode: external_exports.literal("production_manual"),
29206
29500
  work_order: workOrderSummarySchema
29207
29501
  }).strict();
29208
29502
  var workOrderCancelInputSchema = external_exports.object({
29209
- work_order_id: uuid3
29503
+ work_order_id: uuid5
29210
29504
  }).strict();
29211
29505
  var workOrderCancelOutputSchema = external_exports.object({
29212
- work_order_id: uuid3,
29506
+ work_order_id: uuid5,
29213
29507
  status: workOrderStatusSchema
29214
29508
  }).strict();
29215
29509
  var runnerCapabilityDetailSchema = external_exports.object({
@@ -29217,13 +29511,13 @@ var runnerCapabilityDetailSchema = external_exports.object({
29217
29511
  codex: external_exports.boolean()
29218
29512
  }).strict();
29219
29513
  var runnerDiagnoseOutputSchema = external_exports.object({
29220
- id: uuid3,
29514
+ id: uuid5,
29221
29515
  name: external_exports.string(),
29222
29516
  platform: external_exports.string(),
29223
29517
  health: runnerHealthSchema,
29224
29518
  capabilities: runnerCapabilityDetailSchema,
29225
- last_heartbeat_at: isoDateTime.nullable(),
29226
- paired_at: isoDateTime.nullable(),
29519
+ last_heartbeat_at: isoDateTime2.nullable(),
29520
+ paired_at: isoDateTime2.nullable(),
29227
29521
  revocation_state: external_exports.enum(["active", "revoked", "unpaired"]),
29228
29522
  claimability: runnerClaimabilityExplainSchema,
29229
29523
  repair_guidance: external_exports.array(external_exports.object({
@@ -29233,7 +29527,7 @@ var runnerDiagnoseOutputSchema = external_exports.object({
29233
29527
  }).strict())
29234
29528
  }).strict();
29235
29529
  var runnerDiagnoseInputSchema = external_exports.object({
29236
- runner_id: uuid3
29530
+ runner_id: uuid5
29237
29531
  }).strict();
29238
29532
  var runnerRepairActionSchema = external_exports.object({
29239
29533
  action: external_exports.string(),
@@ -29241,14 +29535,14 @@ var runnerRepairActionSchema = external_exports.object({
29241
29535
  detail: external_exports.string()
29242
29536
  }).strict();
29243
29537
  var runnerRepairOutputSchema = external_exports.object({
29244
- runner_id: uuid3,
29538
+ runner_id: uuid5,
29245
29539
  runner_name: external_exports.string(),
29246
29540
  runner_health: runnerHealthSchema,
29247
29541
  repair_steps: external_exports.array(runnerRepairActionSchema),
29248
29542
  requires_human: external_exports.boolean()
29249
29543
  }).strict();
29250
29544
  var runnerRepairInputSchema = external_exports.object({
29251
- runner_id: uuid3,
29545
+ runner_id: uuid5,
29252
29546
  issue: external_exports.enum(["restart", "re_pair", "revoke_stale", "missing_cli_runtime"]).optional()
29253
29547
  }).strict();
29254
29548
  var notificationChannelSchema = external_exports.enum(["slack", "email", "in_app"]);
@@ -29268,24 +29562,24 @@ var notificationSettingsUpdateInputSchema = external_exports.object({
29268
29562
  );
29269
29563
  var notificationTestInputSchema = external_exports.object({}).strict();
29270
29564
  var notificationTestOutputSchema = external_exports.object({
29271
- notification_id: uuid3,
29565
+ notification_id: uuid5,
29272
29566
  delivered: external_exports.boolean()
29273
29567
  }).strict();
29274
29568
  var notificationListErrorsInputSchema = external_exports.object({
29275
29569
  limit: external_exports.number().int().min(1).max(100).optional()
29276
29570
  }).strict();
29277
29571
  var notificationErrorSummarySchema = external_exports.object({
29278
- id: uuid3,
29572
+ id: uuid5,
29279
29573
  kind: external_exports.string(),
29280
29574
  channel: external_exports.string(),
29281
29575
  status: external_exports.string(),
29282
29576
  provider: external_exports.string(),
29283
29577
  error_message: external_exports.string().nullable(),
29284
- error_log_id: uuid3.nullable(),
29578
+ error_log_id: uuid5.nullable(),
29285
29579
  source: external_exports.enum(["run", "llm", "tool", "mcp", "runner", "integration", "job", "web"]).nullable(),
29286
- seat_id: uuid3.nullable(),
29287
- run_id: uuid3.nullable(),
29288
- created_at: isoDateTime
29580
+ seat_id: uuid5.nullable(),
29581
+ run_id: uuid5.nullable(),
29582
+ created_at: isoDateTime2
29289
29583
  }).strict();
29290
29584
  var notificationListErrorsOutputSchema = external_exports.object({
29291
29585
  errors: external_exports.array(notificationErrorSummarySchema)
@@ -29303,7 +29597,7 @@ var memberInviteInputSchema = external_exports.object({
29303
29597
  byo_key: external_exports.boolean().optional()
29304
29598
  }).strict();
29305
29599
  var memberInviteOutputSchema = external_exports.object({
29306
- invite_id: uuid3,
29600
+ invite_id: uuid5,
29307
29601
  email: external_exports.string(),
29308
29602
  role: memberRoleSchema,
29309
29603
  member_type: memberTypeSchema,
@@ -29311,18 +29605,18 @@ var memberInviteOutputSchema = external_exports.object({
29311
29605
  aicos_access_scope: aicosAccessScopeSchema
29312
29606
  }).strict();
29313
29607
  var memberUpdateInputSchema = external_exports.object({
29314
- member_id: uuid3,
29608
+ member_id: uuid5,
29315
29609
  role: memberRoleSchema
29316
29610
  }).strict();
29317
29611
  var memberUpdateOutputSchema = external_exports.object({
29318
- member_id: uuid3,
29612
+ member_id: uuid5,
29319
29613
  role: memberRoleSchema
29320
29614
  }).strict();
29321
29615
  var memberRemoveInputSchema = external_exports.object({
29322
- member_id: uuid3
29616
+ member_id: uuid5
29323
29617
  }).strict();
29324
29618
  var memberRemoveOutputSchema = external_exports.object({
29325
- member_id: uuid3,
29619
+ member_id: uuid5,
29326
29620
  removed: external_exports.boolean()
29327
29621
  }).strict();
29328
29622
  var syncBriefScopeSchema = external_exports.enum(["company_wide", "per_cluster"]);
@@ -29407,14 +29701,14 @@ var tenantSpendStatusSchema = external_exports.object({
29407
29701
  hard_cap_reached: external_exports.boolean()
29408
29702
  }).strict();
29409
29703
  var integrationSummarySchema = external_exports.object({
29410
- id: uuid3,
29704
+ id: uuid5,
29411
29705
  provider: external_exports.string(),
29412
29706
  status: external_exports.enum(["connected", "error", "disconnected"]),
29413
- last_synced_at: isoDateTime.nullable()
29707
+ last_synced_at: isoDateTime2.nullable()
29414
29708
  }).strict();
29415
29709
  var settingsGetInputSchema = external_exports.object({}).strict();
29416
29710
  var settingsGetOutputSchema = external_exports.object({
29417
- tenant_id: uuid3,
29711
+ tenant_id: uuid5,
29418
29712
  name: external_exports.string(),
29419
29713
  plan: external_exports.enum(["test", "beta_tester", "design_partner", "standard"]),
29420
29714
  status: external_exports.enum(["provisioning", "active", "suspended", "teardown"]),
@@ -29440,7 +29734,7 @@ var tenantRenameInputSchema = external_exports.object({
29440
29734
  company_name: external_exports.string().trim().min(2).max(120)
29441
29735
  }).strict();
29442
29736
  var tenantRenameOutputSchema = external_exports.object({
29443
- tenant_id: uuid3,
29737
+ tenant_id: uuid5,
29444
29738
  name: external_exports.string(),
29445
29739
  previous_name: external_exports.string()
29446
29740
  }).strict();
@@ -33037,10 +33331,10 @@ var trustedBudgetSuggestionSchema = external_exports.object({
33037
33331
  }).strict();
33038
33332
 
33039
33333
  // ../../packages/protocol/src/eos-intelligence.ts
33040
- var uuid5 = external_exports.string().uuid();
33334
+ var uuid8 = external_exports.string().uuid();
33041
33335
  var frictionSeveritySchema = external_exports.enum(["low", "med", "high", "critical"]);
33042
33336
  var frictionAssistRelatedSchema = external_exports.object({
33043
- issue_id: uuid5,
33337
+ issue_id: uuid8,
33044
33338
  summary: external_exports.string(),
33045
33339
  severity: frictionSeveritySchema,
33046
33340
  root_cause: external_exports.string().nullable(),
@@ -33053,11 +33347,11 @@ var frictionRecurringPatternSchema = external_exports.object({
33053
33347
  window: external_exports.string()
33054
33348
  });
33055
33349
  var frictionAssistInputSchema = external_exports.object({
33056
- issue_id: uuid5,
33350
+ issue_id: uuid8,
33057
33351
  limit: external_exports.number().int().min(1).max(20).optional()
33058
33352
  });
33059
33353
  var frictionAssistOutputSchema = external_exports.object({
33060
- issue_id: uuid5,
33354
+ issue_id: uuid8,
33061
33355
  summary: external_exports.string(),
33062
33356
  related: external_exports.array(frictionAssistRelatedSchema),
33063
33357
  recurring_pattern: frictionRecurringPatternSchema,
@@ -33082,7 +33376,7 @@ var compassAlignmentFlagReasonSchema = external_exports.enum([
33082
33376
  "weak_ladder"
33083
33377
  ]);
33084
33378
  var compassAlignmentFlagSchema = external_exports.object({
33085
- goal_id: uuid5,
33379
+ goal_id: uuid8,
33086
33380
  title: external_exports.string(),
33087
33381
  reason: compassAlignmentFlagReasonSchema,
33088
33382
  rationale: external_exports.string()
@@ -33101,11 +33395,11 @@ var compassDriftAnalyzerOutputSchema = external_exports.object({
33101
33395
  flagged: external_exports.array(compassAlignmentFlagSchema)
33102
33396
  });
33103
33397
  var coachDraftGuideInputSchema = external_exports.object({
33104
- seat_id: uuid5
33398
+ seat_id: uuid8
33105
33399
  });
33106
33400
  var coachDraftGuideOutputSchema = external_exports.object({
33107
- seat_id: uuid5,
33108
- occupant_user_id: uuid5.nullable(),
33401
+ seat_id: uuid8,
33402
+ occupant_user_id: uuid8.nullable(),
33109
33403
  has_concerns: external_exports.boolean(),
33110
33404
  pattern_summary: external_exports.string(),
33111
33405
  talking_points: external_exports.array(external_exports.string()),
@@ -33135,8 +33429,8 @@ var normalizedIntegrationScopesSchema = external_exports.object({
33135
33429
  }).strict();
33136
33430
 
33137
33431
  // ../../packages/protocol/src/integrations.ts
33138
- var uuid8 = external_exports.string().uuid();
33139
- var isoDateTime2 = external_exports.string().datetime({ offset: true });
33432
+ var uuid9 = external_exports.string().uuid();
33433
+ var isoDateTime3 = external_exports.string().datetime({ offset: true });
33140
33434
  var integrationProviderSchema = external_exports.enum(["slack", "google", "quickbooks", "stripe"]);
33141
33435
  var integrationStatusSchema = external_exports.enum(["connected", "error", "disconnected"]);
33142
33436
  var integrationAdapterTypeSchema = external_exports.enum(["rest", "oauth", "remote_mcp", "webhook"]);
@@ -33149,7 +33443,7 @@ function isValidHttpsEndpoint(value) {
33149
33443
  }
33150
33444
  }
33151
33445
  var tenantIntegrationSummarySchema = external_exports.object({
33152
- id: uuid8,
33446
+ id: uuid9,
33153
33447
  provider: integrationProviderSchema.or(external_exports.string().min(1)),
33154
33448
  status: integrationStatusSchema,
33155
33449
  account_email: external_exports.string().email().nullable(),
@@ -33157,11 +33451,11 @@ var tenantIntegrationSummarySchema = external_exports.object({
33157
33451
  scopes: external_exports.array(external_exports.string().min(1)),
33158
33452
  capabilities: external_exports.array(external_exports.string().min(1)),
33159
33453
  capability_availability: external_exports.array(integrationCapabilityAvailabilitySchema).optional(),
33160
- last_synced_at: isoDateTime2.nullable(),
33161
- last_tested_at: isoDateTime2.nullable(),
33454
+ last_synced_at: isoDateTime3.nullable(),
33455
+ last_tested_at: isoDateTime3.nullable(),
33162
33456
  last_test_result: external_exports.enum(["ok", "failed"]).nullable(),
33163
- created_at: isoDateTime2,
33164
- updated_at: isoDateTime2
33457
+ created_at: isoDateTime3,
33458
+ updated_at: isoDateTime3
33165
33459
  }).strict();
33166
33460
  var integrationListInputSchema = external_exports.object({
33167
33461
  provider: external_exports.string().min(1).optional()
@@ -33171,7 +33465,7 @@ var integrationListOutputSchema = external_exports.object({
33171
33465
  }).strict();
33172
33466
  var integrationStatusInputSchema = external_exports.object({
33173
33467
  provider: external_exports.string().min(1).optional(),
33174
- integration_id: uuid8.optional()
33468
+ integration_id: uuid9.optional()
33175
33469
  }).strict().refine(
33176
33470
  (value) => value.provider !== void 0 || value.integration_id !== void 0,
33177
33471
  "Provide provider or integration_id."
@@ -33181,7 +33475,7 @@ var integrationStatusOutputSchema = external_exports.object({
33181
33475
  }).strict();
33182
33476
  var integrationTestInputSchema = external_exports.object({
33183
33477
  provider: external_exports.string().min(1).optional(),
33184
- integration_id: uuid8.optional()
33478
+ integration_id: uuid9.optional()
33185
33479
  }).strict().refine(
33186
33480
  (value) => value.provider !== void 0 || value.integration_id !== void 0,
33187
33481
  "Provide provider or integration_id."
@@ -33189,10 +33483,10 @@ var integrationTestInputSchema = external_exports.object({
33189
33483
  var integrationTestOutputSchema = external_exports.object({
33190
33484
  ok: external_exports.boolean(),
33191
33485
  provider: external_exports.string().min(1),
33192
- integration_id: uuid8,
33486
+ integration_id: uuid9,
33193
33487
  status: integrationStatusSchema,
33194
33488
  account_email: external_exports.string().email().nullable(),
33195
- checked_at: isoDateTime2,
33489
+ checked_at: isoDateTime3,
33196
33490
  message: external_exports.string().min(1)
33197
33491
  }).strict();
33198
33492
  var integrationConnectRestInputSchema = external_exports.object({
@@ -33206,7 +33500,7 @@ var integrationConnectRestInputSchema = external_exports.object({
33206
33500
  account_label: external_exports.string().trim().min(1).max(120).optional()
33207
33501
  }).strict();
33208
33502
  var integrationConnectRestOutputSchema = external_exports.object({
33209
- integration_id: uuid8,
33503
+ integration_id: uuid9,
33210
33504
  provider: external_exports.string().min(1),
33211
33505
  adapter_type: external_exports.literal("rest"),
33212
33506
  status: external_exports.literal("connected"),
@@ -33240,7 +33534,7 @@ var integrationReadinessConnectorSchema = external_exports.object({
33240
33534
  provider: external_exports.literal("google"),
33241
33535
  overall_status: integrationReadinessOverallStatusSchema,
33242
33536
  summary: external_exports.string().min(1),
33243
- integration_id: uuid8.nullable(),
33537
+ integration_id: uuid9.nullable(),
33244
33538
  account_email: external_exports.string().email().nullable(),
33245
33539
  account_label: external_exports.string().min(1).nullable(),
33246
33540
  scopes: external_exports.array(external_exports.string().min(1)),
@@ -33352,7 +33646,7 @@ function displayLabelRejection(candidate, trust) {
33352
33646
  }
33353
33647
 
33354
33648
  // ../../packages/protocol/src/artifacts.ts
33355
- var isoDateTime3 = external_exports.string().datetime({ offset: true });
33649
+ var isoDateTime4 = external_exports.string().datetime({ offset: true });
33356
33650
  var uuidSchema10 = external_exports.string().uuid();
33357
33651
  var dataClassificationSchema = external_exports.enum([
33358
33652
  "customer_content",
@@ -33514,13 +33808,13 @@ var artifactSummarySchema = external_exports.object({
33514
33808
  supersedes_id: uuidSchema10.nullable(),
33515
33809
  data_classification: dataClassificationSchema,
33516
33810
  retention_class: retentionClassSchema,
33517
- created_at: isoDateTime3,
33518
- updated_at: isoDateTime3
33811
+ created_at: isoDateTime4,
33812
+ updated_at: isoDateTime4
33519
33813
  }).strict();
33520
33814
  var artifactReadResultSchema = artifactSummarySchema.extend({
33521
33815
  snapshot: external_exports.record(external_exports.string(), external_exports.unknown()),
33522
33816
  signed_url: external_exports.string().nullable(),
33523
- signed_url_expires_at: isoDateTime3.nullable()
33817
+ signed_url_expires_at: isoDateTime4.nullable()
33524
33818
  }).strict();
33525
33819
  var artifactListOutputSchema = external_exports.object({
33526
33820
  artifacts: external_exports.array(artifactSummarySchema)
@@ -33538,8 +33832,8 @@ var sessionTranscriptSummarySchema = external_exports.object({
33538
33832
  char_count: external_exports.number().int().nonnegative(),
33539
33833
  data_classification: dataClassificationSchema,
33540
33834
  retention_class: retentionClassSchema,
33541
- created_at: isoDateTime3,
33542
- updated_at: isoDateTime3
33835
+ created_at: isoDateTime4,
33836
+ updated_at: isoDateTime4
33543
33837
  }).strict();
33544
33838
  var sessionTranscriptReadResultSchema = sessionTranscriptSummarySchema.extend({
33545
33839
  transcript: external_exports.string()
@@ -34766,7 +35060,7 @@ var measurableTemplateSchema = external_exports.object({
34766
35060
 
34767
35061
  // ../../packages/protocol/src/migration-run.ts
34768
35062
  var uuidSchema13 = external_exports.string().uuid();
34769
- var isoDateTime4 = external_exports.string().datetime({ offset: true });
35063
+ var isoDateTime5 = external_exports.string().datetime({ offset: true });
34770
35064
  var jsonObjectSchema2 = external_exports.record(external_exports.string(), external_exports.unknown());
34771
35065
  var contentHashSchema = external_exports.string().regex(/^[0-9a-f]{64}$/, "content_hash must be a 64-character lowercase sha-256 hex digest");
34772
35066
  var nonNegativeBigintStringSchema = external_exports.string().regex(/^\d+$/, "must be a non-negative integer (decimal string)");
@@ -34884,10 +35178,10 @@ var migrationRunSummarySchema = external_exports.object({
34884
35178
  cli_version: external_exports.string().nullable(),
34885
35179
  source_client: external_exports.string().nullable(),
34886
35180
  initiated_by: uuidSchema13.nullable(),
34887
- started_at: isoDateTime4,
34888
- completed_at: isoDateTime4.nullable(),
34889
- created_at: isoDateTime4,
34890
- updated_at: isoDateTime4
35181
+ started_at: isoDateTime5,
35182
+ completed_at: isoDateTime5.nullable(),
35183
+ created_at: isoDateTime5,
35184
+ updated_at: isoDateTime5
34891
35185
  }).strict();
34892
35186
  var migrationRunArtifactSummarySchema = external_exports.object({
34893
35187
  id: uuidSchema13,
@@ -34907,9 +35201,9 @@ var migrationRunArtifactSummarySchema = external_exports.object({
34907
35201
  // JS-number precision loss beyond 2^53. Nullable; non-negative (mirrors the >= 0 CHECK).
34908
35202
  byte_size: nonNegativeBigintStringSchema.nullable(),
34909
35203
  import_batch_id: uuidSchema13.nullable(),
34910
- imported_at: isoDateTime4.nullable(),
34911
- created_at: isoDateTime4,
34912
- updated_at: isoDateTime4
35204
+ imported_at: isoDateTime5.nullable(),
35205
+ created_at: isoDateTime5,
35206
+ updated_at: isoDateTime5
34913
35207
  }).strict();
34914
35208
  var migrationRunCheckpointSummarySchema = external_exports.object({
34915
35209
  id: uuidSchema13,
@@ -34923,7 +35217,7 @@ var migrationRunCheckpointSummarySchema = external_exports.object({
34923
35217
  legal_resume_stage: migrationResumableStageSchema.nullable(),
34924
35218
  last_completed_checkpoint_id: uuidSchema13.nullable(),
34925
35219
  detail: jsonObjectSchema2,
34926
- created_at: isoDateTime4
35220
+ created_at: isoDateTime5
34927
35221
  }).strict();
34928
35222
  var migrationConsentWaitSummarySchema = external_exports.object({
34929
35223
  id: uuidSchema13,
@@ -34940,19 +35234,19 @@ var migrationConsentWaitSummarySchema = external_exports.object({
34940
35234
  evidence_ref: external_exports.string().refine((value) => value.trim().length > 0, {
34941
35235
  message: "evidence_ref must not be blank"
34942
35236
  }),
34943
- opened_at: isoDateTime4,
34944
- resolved_at: isoDateTime4.nullable(),
34945
- created_at: isoDateTime4,
34946
- updated_at: isoDateTime4
35237
+ opened_at: isoDateTime5,
35238
+ resolved_at: isoDateTime5.nullable(),
35239
+ created_at: isoDateTime5,
35240
+ updated_at: isoDateTime5
34947
35241
  }).strict();
34948
35242
  var clockSegmentSharedShape = {
34949
35243
  id: uuidSchema13,
34950
35244
  tenant_id: uuidSchema13,
34951
35245
  run_id: uuidSchema13,
34952
- started_at: isoDateTime4,
34953
- ended_at: isoDateTime4.nullable(),
34954
- created_at: isoDateTime4,
34955
- updated_at: isoDateTime4
35246
+ started_at: isoDateTime5,
35247
+ ended_at: isoDateTime5.nullable(),
35248
+ created_at: isoDateTime5,
35249
+ updated_at: isoDateTime5
34956
35250
  };
34957
35251
  var activeClockSegmentSchema = external_exports.object({
34958
35252
  ...clockSegmentSharedShape,
@@ -34978,8 +35272,8 @@ var migrationItemDispositionSummarySchema = external_exports.object({
34978
35272
  disposition: migrationItemDispositionSchema,
34979
35273
  reason: external_exports.string().nullable(),
34980
35274
  detail: jsonObjectSchema2,
34981
- created_at: isoDateTime4,
34982
- updated_at: isoDateTime4
35275
+ created_at: isoDateTime5,
35276
+ updated_at: isoDateTime5
34983
35277
  }).strict();
34984
35278
  var migrationSourceMappingSummarySchema = external_exports.object({
34985
35279
  id: uuidSchema13,
@@ -34992,8 +35286,8 @@ var migrationSourceMappingSummarySchema = external_exports.object({
34992
35286
  target_id: uuidSchema13,
34993
35287
  is_ai_transformed: external_exports.boolean(),
34994
35288
  citation: jsonObjectSchema2.nullable(),
34995
- created_at: isoDateTime4,
34996
- updated_at: isoDateTime4
35289
+ created_at: isoDateTime5,
35290
+ updated_at: isoDateTime5
34997
35291
  }).strict().refine((mapping) => !mapping.is_ai_transformed || mapping.citation !== null, {
34998
35292
  // Mirror migration_source_mappings_ai_citation_check `not is_ai_transformed or citation is
34999
35293
  // not null`: an AI-transformed mapping MUST retain a source citation (R19).
@@ -36376,7 +36670,7 @@ var agentShowMarkdownInputSchema = external_exports.object({
36376
36670
 
36377
36671
  // ../../packages/protocol/src/implementation-bootstrap.ts
36378
36672
  var uuidSchema15 = external_exports.string().uuid();
36379
- var isoDateTime5 = external_exports.string().datetime({ offset: true });
36673
+ var isoDateTime6 = external_exports.string().datetime({ offset: true });
36380
36674
  var IMPLEMENTATION_BOOTSTRAP_SCOPE = "implementation_bootstrap";
36381
36675
  var implementationBootstrapScopeSchema = external_exports.literal(IMPLEMENTATION_BOOTSTRAP_SCOPE);
36382
36676
  var deviceAuthorizationPurposeSchema = external_exports.enum(["user_session", "implementation_bootstrap", "operator_grant"]);
@@ -36407,8 +36701,8 @@ var implementationRunSummarySchema = external_exports.object({
36407
36701
  // ceiling. A wider protocol bound would let an 81+-char value validate here
36408
36702
  // only to abort the write at the DB boundary.
36409
36703
  source_client: external_exports.string().min(1).max(80).nullable(),
36410
- expires_at: isoDateTime5.nullable(),
36411
- created_at: isoDateTime5
36704
+ expires_at: isoDateTime6.nullable(),
36705
+ created_at: isoDateTime6
36412
36706
  }).strict();
36413
36707
  var implementationBootstrapContextSchema = external_exports.object({
36414
36708
  token_id: uuidSchema15,
@@ -36760,7 +37054,7 @@ var baserowFilterOperatorOptions = Object.keys(BASEROW_FILTER_OPERATORS).map((va
36760
37054
  }));
36761
37055
 
36762
37056
  // ../../packages/protocol/src/signal-source.ts
36763
- var uuid9 = external_exports.string().uuid();
37057
+ var uuid10 = external_exports.string().uuid();
36764
37058
  var signalCadenceSchema = external_exports.enum(["daily", "weekly", "monthly", "quarterly", "annual"]);
36765
37059
  var signalRecipeAuthSchema = external_exports.object({
36766
37060
  placement: external_exports.enum(["none", "bearer", "header", "query"]).default("none"),
@@ -36825,10 +37119,10 @@ var signalSourceRecipePresetSchema = external_exports.object({
36825
37119
  }).strict();
36826
37120
  var PREVIEW_TOKEN_DEFAULT_TTL_SECONDS = 10 * 60;
36827
37121
  var integrationDiscoverInputSchema = external_exports.object({
36828
- integration_id: uuid9
37122
+ integration_id: uuid10
36829
37123
  }).strict();
36830
37124
  var integrationDiscoverOutputSchema = external_exports.object({
36831
- integration_id: uuid9,
37125
+ integration_id: uuid10,
36832
37126
  provider: external_exports.string(),
36833
37127
  adapter_type: external_exports.enum(["rest", "oauth", "remote_mcp", "webhook"]),
36834
37128
  status: external_exports.enum(["connected", "error", "disconnected"]),
@@ -36839,15 +37133,15 @@ var integrationDiscoverOutputSchema = external_exports.object({
36839
37133
  note: external_exports.string()
36840
37134
  }).strict();
36841
37135
  var signalPreviewInputSchema = external_exports.object({
36842
- measurable_id: uuid9,
36843
- integration_id: uuid9,
37136
+ measurable_id: uuid10,
37137
+ integration_id: uuid10,
36844
37138
  recipe: restForSignalsRecipeSchema,
36845
37139
  cadence: signalCadenceSchema,
36846
37140
  host_allowlist: external_exports.array(external_exports.string().min(1).max(255)).min(1).max(20)
36847
37141
  }).strict();
36848
37142
  var signalPreviewOutputSchema = external_exports.object({
36849
- measurable_id: uuid9,
36850
- integration_id: uuid9,
37143
+ measurable_id: uuid10,
37144
+ integration_id: uuid10,
36851
37145
  outcome: external_exports.enum(["ok", "blocked", "error"]),
36852
37146
  value: external_exports.union([external_exports.number(), external_exports.string(), external_exports.boolean(), external_exports.null()]).optional(),
36853
37147
  value_kind: external_exports.string(),
@@ -36855,11 +37149,11 @@ var signalPreviewOutputSchema = external_exports.object({
36855
37149
  preview_token: external_exports.string().optional(),
36856
37150
  preview_expires_at: external_exports.string().optional(),
36857
37151
  message: external_exports.string().optional(),
36858
- pull_log_id: uuid9.nullable()
37152
+ pull_log_id: uuid10.nullable()
36859
37153
  }).strict();
36860
37154
  var signalBindInputSchema = external_exports.object({
36861
- measurable_id: uuid9,
36862
- integration_id: uuid9,
37155
+ measurable_id: uuid10,
37156
+ integration_id: uuid10,
36863
37157
  recipe: restForSignalsRecipeSchema,
36864
37158
  cadence: signalCadenceSchema,
36865
37159
  host_allowlist: external_exports.array(external_exports.string().min(1).max(255)).min(1).max(20),
@@ -36870,12 +37164,12 @@ var signalBindInputSchema = external_exports.object({
36870
37164
  role: external_exports.enum(["informs", "drives_status"]).default("informs")
36871
37165
  }).strict();
36872
37166
  var signalBindOutputSchema = external_exports.object({
36873
- binding_id: uuid9,
36874
- measurable_id: uuid9,
37167
+ binding_id: uuid10,
37168
+ measurable_id: uuid10,
36875
37169
  binding_status: external_exports.literal("draft")
36876
37170
  }).strict();
36877
37171
  var signalBindConfirmInputSchema = external_exports.object({
36878
- binding_id: uuid9,
37172
+ binding_id: uuid10,
36879
37173
  // For a `drives_status` binding, confirm a prior closed period matches the
36880
37174
  // customer's books (R5 second anchor) before the binding may drive status.
36881
37175
  second_anchor: external_exports.object({
@@ -36884,8 +37178,8 @@ var signalBindConfirmInputSchema = external_exports.object({
36884
37178
  }).strict().optional()
36885
37179
  }).strict();
36886
37180
  var signalBindConfirmOutputSchema = external_exports.object({
36887
- binding_id: uuid9,
36888
- measurable_id: uuid9,
37181
+ binding_id: uuid10,
37182
+ measurable_id: uuid10,
36889
37183
  binding_status: external_exports.literal("active")
36890
37184
  }).strict();
36891
37185
 
@@ -37516,6 +37810,75 @@ var charterInputReachabilityWarningSchema = external_exports.object({
37516
37810
  source: external_exports.enum(["agent", "integration"]),
37517
37811
  reason: boundedText(1e3)
37518
37812
  }).strict();
37813
+ var onboardingAgentLaneSchema = external_exports.enum(["cloud", "mcp_session", "runner"]);
37814
+ var onboardingRunnerCompatibilityBindingSchema = external_exports.object({
37815
+ seat_key: boundedText(120),
37816
+ tenant_id: uuidSchema17,
37817
+ seat_id: uuidSchema17.nullable(),
37818
+ charter_digest: digestSchema2,
37819
+ manifest_digest: digestSchema2,
37820
+ runtime: runnerSetupRuntimeSchema,
37821
+ support_registry_digest: digestSchema2,
37822
+ validation_receipt_current: external_exports.boolean(),
37823
+ // The four non-current reasons are `runnerValidationReceiptCurrency`'s own
37824
+ // vocabulary, carried through verbatim rather than re-derived. The fifth,
37825
+ // `receipt_missing`, covers "the session holds no receipt for this runtime
37826
+ // at all" — distinct from a receipt that exists and failed currency. A null
37827
+ // reason therefore means exactly one thing: the receipt IS current.
37828
+ validation_receipt_reason: external_exports.enum([
37829
+ "service_key_revoked",
37830
+ "receipt_runner_mismatch",
37831
+ "receipt_generation_stale",
37832
+ "receipt_expired",
37833
+ "receipt_missing"
37834
+ ]).nullable(),
37835
+ requested_lane: onboardingAgentLaneSchema,
37836
+ effective_lane: onboardingAgentLaneSchema
37837
+ }).strict();
37838
+ var onboardingRunnerSetupFactsSchema = external_exports.object({
37839
+ setup_id: uuidSchema17,
37840
+ selected_runtimes: runnerSetupSelectedRuntimesSchema,
37841
+ stage: runnerSetupStageSchema,
37842
+ status: runnerSetupStatusSchema,
37843
+ checkpoints: external_exports.array(runnerSetupCheckpointSchema).max(200),
37844
+ attempt_count: external_exports.number().int().nonnegative(),
37845
+ first_action_at: external_exports.string().datetime({ offset: true }).nullable(),
37846
+ attempts_exhausted: external_exports.boolean(),
37847
+ window_exhausted: external_exports.boolean(),
37848
+ // `at` is nullable, not merely optional: migration 0170's two correlation
37849
+ // CHECKs (`runner_setup_sessions_blocker_correlation_check`,
37850
+ // `runner_setup_sessions_terminal_correlation_check`) together make
37851
+ // `blocker_code is not null` imply `status = 'blocked'`, which is NOT one of
37852
+ // the terminal statuses, which implies `terminal_at is null`. A session that
37853
+ // actually carries a blocker code therefore always has a null `terminal_at`
37854
+ // — requiring `at` to be non-null would make this field permanently
37855
+ // unreachable through any legal row.
37856
+ terminal_blocker: external_exports.object({
37857
+ code: runnerSetupBlockerCodeSchema,
37858
+ at: external_exports.string().datetime({ offset: true }).nullable()
37859
+ }).strict().nullable(),
37860
+ consumable: external_exports.boolean(),
37861
+ // `run_mismatch` is deliberately NOT a member here: a foreign-run lookup is
37862
+ // refused by `loadOnboardingRunnerSetupFacts` returning `null` for the whole
37863
+ // facts object (there is no facts object to carry a reason), so the value is
37864
+ // unrepresentable BY CONSTRUCTION, not merely unused.
37865
+ //
37866
+ // `blocked` is the ONE refusal that carries a populated `terminal_blocker`:
37867
+ // migration 0170's correlation CHECKs make `blocker_code is not null` imply
37868
+ // `status = 'blocked'`, so every other refusal reason leaves that field inert
37869
+ // (null). Before this member existed a `blocked` session matched no refusal
37870
+ // branch at all and read as `consumable: true` — fail-open — while the
37871
+ // blocker code was computed and then never used.
37872
+ refusal_reason: external_exports.enum([
37873
+ "expired",
37874
+ "terminal",
37875
+ "blocked",
37876
+ "runtime_mismatch",
37877
+ "attempts_exhausted",
37878
+ "window_exhausted"
37879
+ ]).nullable(),
37880
+ agent_compatibility: external_exports.array(onboardingRunnerCompatibilityBindingSchema).max(200)
37881
+ }).strict();
37519
37882
  var onboardingSetupApprovalProjectionSchema = external_exports.object({
37520
37883
  kind: external_exports.literal("onboarding_setup"),
37521
37884
  submitted_plan_digest: digestSchema2,
@@ -37566,7 +37929,12 @@ var onboardingSetupApprovalProjectionSchema = external_exports.object({
37566
37929
  // human sees each unreachable input by name on the composite approval card
37567
37930
  // before approving. Optional with a `[]` default so already-stored
37568
37931
  // projections (written before this field existed) still re-parse.
37569
- charter_input_warnings: external_exports.array(charterInputReachabilityWarningSchema).max(2e3).default([])
37932
+ charter_input_warnings: external_exports.array(charterInputReachabilityWarningSchema).max(2e3).default([]),
37933
+ // DER-3347: runner-setup facts for the onboarding approval card. Nullable
37934
+ // with a `null` default so already-stored projections (written before this
37935
+ // field existed) still re-parse — same reasoning, same shape as
37936
+ // `charter_input_warnings` above.
37937
+ runner_setup: onboardingRunnerSetupFactsSchema.nullable().default(null)
37570
37938
  }).strict();
37571
37939
 
37572
37940
  // ../../packages/protocol/src/onboarding-steps.ts
@@ -38265,7 +38633,7 @@ var invitePurposeSchema = external_exports.enum(["ordinary", "cohort"]);
38265
38633
  // ../../packages/protocol/src/mcp-onboarding.ts
38266
38634
  var MCP_TOKEN_ABSOLUTE_MAX_EXPIRY_MS = (MCP_TOKEN_NO_EXPIRY_SENTINEL_DAYS + 1) * 24 * 60 * 60 * 1e3;
38267
38635
  var uuidSchema20 = external_exports.string().uuid();
38268
- var isoDateTime6 = external_exports.string().datetime({ offset: true });
38636
+ var isoDateTime7 = external_exports.string().datetime({ offset: true });
38269
38637
  var onboardingStatusInputSchema = external_exports.object({}).strict();
38270
38638
  var onboardingStatusOutputSchema = external_exports.object({
38271
38639
  completed_steps: external_exports.array(external_exports.string().min(1)),
@@ -38291,7 +38659,7 @@ var onboardingStatusOutputSchema = external_exports.object({
38291
38659
  // `onboard status` agree with `onboarding.finish` — previously the two were
38292
38660
  // disconnected and status perpetually recommended "Finish onboarding".
38293
38661
  onboarded: external_exports.boolean(),
38294
- completed_at: isoDateTime6.nullable(),
38662
+ completed_at: isoDateTime7.nullable(),
38295
38663
  next_recommended_actions: external_exports.array(external_exports.string().min(1)),
38296
38664
  // DER-2154 (U1): which onboarding path the tenant has chosen (guided vs.
38297
38665
  // agent_led). null = not yet chosen.
@@ -38979,7 +39347,7 @@ var recommendationEventInputSchema = external_exports.object({
38979
39347
 
38980
39348
  // ../../packages/protocol/src/reads.ts
38981
39349
  var uuidSchema22 = external_exports.string().uuid();
38982
- var isoDateTime7 = external_exports.string().datetime({ offset: true });
39350
+ var isoDateTime8 = external_exports.string().datetime({ offset: true });
38983
39351
  var seatTypeSchema = external_exports.enum(["human", "agent", "hybrid"]);
38984
39352
  var seatStatusSchema = external_exports.enum(["draft", "active", "vacant", "decommissioned"]);
38985
39353
  var rollupStateSchema = external_exports.enum(["ok", "risk", "crit", "pending"]);
@@ -39046,8 +39414,8 @@ var seatGetOutputSchema = external_exports.object({
39046
39414
  occupancy_id: uuidSchema22,
39047
39415
  occupant_type: external_exports.enum(["user", "agent"]),
39048
39416
  label: external_exports.string(),
39049
- started_at: isoDateTime7,
39050
- ended_at: isoDateTime7.nullable()
39417
+ started_at: isoDateTime8,
39418
+ ended_at: isoDateTime8.nullable()
39051
39419
  }).strict()),
39052
39420
  active_charter_version_id: uuidSchema22.nullable(),
39053
39421
  draft_charter_version_id: uuidSchema22.nullable(),
@@ -39056,12 +39424,12 @@ var seatGetOutputSchema = external_exports.object({
39056
39424
  mcp_tokens: external_exports.array(external_exports.object({
39057
39425
  token_id: uuidSchema22,
39058
39426
  scope: mcpScopeSchema,
39059
- created_at: isoDateTime7,
39060
- last_seen_at: isoDateTime7.nullable(),
39427
+ created_at: isoDateTime8,
39428
+ last_seen_at: isoDateTime8.nullable(),
39061
39429
  // DER-830: expires_at is NOT NULL; surface days-remaining alongside it.
39062
- expires_at: isoDateTime7,
39430
+ expires_at: isoDateTime8,
39063
39431
  expires_in_days: external_exports.number().int(),
39064
- revoked_at: isoDateTime7.nullable()
39432
+ revoked_at: isoDateTime8.nullable()
39065
39433
  }).strict()),
39066
39434
  credentials: external_exports.array(external_exports.object({
39067
39435
  credential_id: uuidSchema22,
@@ -39085,8 +39453,8 @@ var charterSummarySchema = external_exports.object({
39085
39453
  seat_id: uuidSchema22,
39086
39454
  version: external_exports.number().int().nonnegative(),
39087
39455
  status: charterStatusSchema,
39088
- created_at: isoDateTime7,
39089
- approved_at: isoDateTime7.nullable()
39456
+ created_at: isoDateTime8,
39457
+ approved_at: isoDateTime8.nullable()
39090
39458
  }).strict();
39091
39459
  var charterListOutputSchema = external_exports.object({
39092
39460
  charters: external_exports.array(charterSummarySchema)
@@ -39099,8 +39467,8 @@ var charterGetOutputSchema = external_exports.object({
39099
39467
  seat_id: uuidSchema22,
39100
39468
  version: external_exports.number().int().nonnegative(),
39101
39469
  status: charterStatusSchema,
39102
- created_at: isoDateTime7,
39103
- approved_at: isoDateTime7.nullable(),
39470
+ created_at: isoDateTime8,
39471
+ approved_at: isoDateTime8.nullable(),
39104
39472
  doc: external_exports.unknown(),
39105
39473
  history: external_exports.array(charterSummarySchema),
39106
39474
  dry_run: external_exports.object({
@@ -39188,7 +39556,7 @@ var agentLivenessSchema = external_exports.object({
39188
39556
  }).strict();
39189
39557
  var fleetHostResourceSchema = external_exports.object({
39190
39558
  reporting: external_exports.boolean(),
39191
- observed_at: isoDateTime7.nullable(),
39559
+ observed_at: isoDateTime8.nullable(),
39192
39560
  load_avg_1m: external_exports.number().nullable(),
39193
39561
  cpu_count: external_exports.number().int().nullable(),
39194
39562
  memory_total_mb: external_exports.number().nullable(),
@@ -39212,8 +39580,8 @@ var fleetWorkProgressSchema = external_exports.object({
39212
39580
  reasons: external_exports.array(external_exports.string()),
39213
39581
  claimed_state: workProgressStateSchema.nullable(),
39214
39582
  claim_mismatch: external_exports.boolean(),
39215
- last_activity_at: isoDateTime7.nullable(),
39216
- last_durable_activity_at: isoDateTime7.nullable()
39583
+ last_activity_at: isoDateTime8.nullable(),
39584
+ last_durable_activity_at: isoDateTime8.nullable()
39217
39585
  }).strict();
39218
39586
  var fleetOverviewRowSchema = external_exports.object({
39219
39587
  seat_id: uuidSchema22,
@@ -39226,7 +39594,7 @@ var fleetOverviewRowSchema = external_exports.object({
39226
39594
  lane: agentLaneSchema3.nullable(),
39227
39595
  agent_status: external_exports.enum(["draft", "dry_run", "live", "paused", "decommissioned", "vacant"]),
39228
39596
  live: external_exports.boolean(),
39229
- last_turn_at: isoDateTime7.nullable(),
39597
+ last_turn_at: isoDateTime8.nullable(),
39230
39598
  turns_24h: external_exports.number().int().nonnegative(),
39231
39599
  turns_7d: external_exports.number().int().nonnegative(),
39232
39600
  top_measurable_status: external_exports.enum(["on", "off", "pending", "none"]),
@@ -39258,8 +39626,8 @@ var runErrorLogSchema = external_exports.object({
39258
39626
  severity: external_exports.enum(["warning", "error", "critical"]),
39259
39627
  code: external_exports.string().nullable(),
39260
39628
  message: external_exports.string(),
39261
- created_at: isoDateTime7,
39262
- resolved_at: isoDateTime7.nullable()
39629
+ created_at: isoDateTime8,
39630
+ resolved_at: isoDateTime8.nullable()
39263
39631
  }).strict();
39264
39632
  var agentFleetDigestInputSchema = external_exports.object({
39265
39633
  window_hours: external_exports.number().int().min(1).max(168).default(24),
@@ -39272,8 +39640,8 @@ var fleetDigestRunSchema = external_exports.object({
39272
39640
  status: runStatusSchema,
39273
39641
  lane: agentLaneSchema3,
39274
39642
  model: external_exports.string(),
39275
- started_at: isoDateTime7,
39276
- finished_at: isoDateTime7.nullable(),
39643
+ started_at: isoDateTime8,
39644
+ finished_at: isoDateTime8.nullable(),
39277
39645
  cost_usd: external_exports.string(),
39278
39646
  error_logs: external_exports.array(runErrorLogSchema)
39279
39647
  }).strict();
@@ -39294,7 +39662,7 @@ var fleetDigestNotificationErrorSchema = external_exports.object({
39294
39662
  source: external_exports.enum(["run", "llm", "tool", "mcp", "runner", "integration", "job", "web"]).nullable(),
39295
39663
  seat_id: uuidSchema22.nullable(),
39296
39664
  run_id: uuidSchema22.nullable(),
39297
- created_at: isoDateTime7
39665
+ created_at: isoDateTime8
39298
39666
  }).strict();
39299
39667
  var fleetDigestAgentSchema = fleetOverviewRowSchema.extend({
39300
39668
  failed_runs_24h: external_exports.number().int().nonnegative(),
@@ -39313,7 +39681,7 @@ var fleetDigestAgentSchema = fleetOverviewRowSchema.extend({
39313
39681
  suggested_next_action: external_exports.string()
39314
39682
  }).strict();
39315
39683
  var agentFleetDigestOutputSchema = external_exports.object({
39316
- generated_at: isoDateTime7,
39684
+ generated_at: isoDateTime8,
39317
39685
  window_hours: external_exports.number().int().min(1).max(168),
39318
39686
  summary: external_exports.object({
39319
39687
  fleet_count: external_exports.number().int().nonnegative(),
@@ -39339,7 +39707,7 @@ var seatTrustSummarySchema = external_exports.object({
39339
39707
  tool_call_count: external_exports.number().int().nonnegative(),
39340
39708
  denied_tool_call_count: external_exports.number().int().nonnegative(),
39341
39709
  held_tool_call_count: external_exports.number().int().nonnegative(),
39342
- last_activity_at: isoDateTime7.nullable()
39710
+ last_activity_at: isoDateTime8.nullable()
39343
39711
  }).strict();
39344
39712
  var agentListRunsInputSchema = external_exports.object({
39345
39713
  seat_id: uuidSchema22,
@@ -39361,8 +39729,8 @@ var seatRunSchema = external_exports.object({
39361
39729
  status: runStatusSchema,
39362
39730
  lane: agentLaneSchema3,
39363
39731
  model: external_exports.string(),
39364
- started_at: isoDateTime7,
39365
- finished_at: isoDateTime7.nullable(),
39732
+ started_at: isoDateTime8,
39733
+ finished_at: isoDateTime8.nullable(),
39366
39734
  cost_usd: external_exports.string(),
39367
39735
  tool_call_count: external_exports.number().int().nonnegative(),
39368
39736
  denied_tool_call_count: external_exports.number().int().nonnegative(),
@@ -39395,7 +39763,7 @@ var seatRunDetailSchema = seatRunSchema.extend({
39395
39763
  content_sha256: external_exports.string().regex(/^[a-f0-9]{64}$/),
39396
39764
  size_bytes: external_exports.number().int().nonnegative()
39397
39765
  }).strict()),
39398
- created_at: isoDateTime7
39766
+ created_at: isoDateTime8
39399
39767
  }).strict()),
39400
39768
  // DER-1661/DER-1753: the persisted session transcript, present only when the read
39401
39769
  // asked for it (`transcript: true`) — null when requested but none was persisted.
@@ -39423,8 +39791,8 @@ var seatToolCallSchema = external_exports.object({
39423
39791
  guard_result: guardResultSchema,
39424
39792
  manifest_clause: external_exports.string().nullable(),
39425
39793
  outcome: external_exports.string(),
39426
- started_at: isoDateTime7,
39427
- finished_at: isoDateTime7.nullable()
39794
+ started_at: isoDateTime8,
39795
+ finished_at: isoDateTime8.nullable()
39428
39796
  }).strict();
39429
39797
  var agentListToolCallsOutputSchema = external_exports.object({
39430
39798
  seat_id: uuidSchema22,
@@ -39440,16 +39808,16 @@ var runWatchCurrentStateSchema = external_exports.object({
39440
39808
  reasons: external_exports.array(external_exports.string()),
39441
39809
  claimed_state: workProgressStateSchema.nullable(),
39442
39810
  claim_mismatch: external_exports.boolean(),
39443
- last_activity_at: isoDateTime7.nullable(),
39444
- last_durable_activity_at: isoDateTime7.nullable()
39811
+ last_activity_at: isoDateTime8.nullable(),
39812
+ last_durable_activity_at: isoDateTime8.nullable()
39445
39813
  }).strict();
39446
39814
  var runWatchHeartbeatSchema = external_exports.object({
39447
39815
  state: external_exports.enum(["working", "quiet_healthy", "recovered", "stalled"]),
39448
39816
  stalled: external_exports.boolean(),
39449
39817
  current_phase: external_exports.string().nullable(),
39450
- last_progress_at: isoDateTime7.nullable(),
39451
- expected_next_at: isoDateTime7.nullable(),
39452
- stall_after_at: isoDateTime7.nullable(),
39818
+ last_progress_at: isoDateTime8.nullable(),
39819
+ expected_next_at: isoDateTime8.nullable(),
39820
+ stall_after_at: isoDateTime8.nullable(),
39453
39821
  lease_remaining_ms: external_exports.number().nullable(),
39454
39822
  reasons: external_exports.array(external_exports.string())
39455
39823
  }).strict();
@@ -39469,7 +39837,7 @@ var agentWatchRunOutputSchema = external_exports.object({
39469
39837
  heartbeat: runWatchHeartbeatSchema.nullable(),
39470
39838
  transcript: sessionTranscriptReadResultSchema.nullable(),
39471
39839
  tool_calls: external_exports.array(seatToolCallSchema),
39472
- fetched_at: isoDateTime7
39840
+ fetched_at: isoDateTime8
39473
39841
  }).strict();
39474
39842
  var deliverableKindSchema = external_exports.enum(["brief", "work_evidence", "artifact", "report", "other"]);
39475
39843
  var deliverableLinkSchema = external_exports.object({
@@ -39492,7 +39860,7 @@ var deliverableRowSchema = external_exports.object({
39492
39860
  title: external_exports.string(),
39493
39861
  summary: external_exports.string().nullable(),
39494
39862
  content: external_exports.string().nullable(),
39495
- delivered_at: isoDateTime7,
39863
+ delivered_at: isoDateTime8,
39496
39864
  source_run_status: external_exports.string().nullable(),
39497
39865
  source_run_model: external_exports.string().nullable(),
39498
39866
  source_run_log_ref: external_exports.string().nullable(),
@@ -39527,14 +39895,14 @@ var mcpTokenMetadataSchema = external_exports.object({
39527
39895
  token_id: uuidSchema22,
39528
39896
  scope: mcpScopeSchema,
39529
39897
  seat_id: uuidSchema22.nullable(),
39530
- created_at: isoDateTime7,
39531
- last_seen_at: isoDateTime7.nullable(),
39898
+ created_at: isoDateTime8,
39899
+ last_seen_at: isoDateTime8.nullable(),
39532
39900
  // DER-830: expires_at is now always present (the column is NOT NULL).
39533
- expires_at: isoDateTime7,
39901
+ expires_at: isoDateTime8,
39534
39902
  // DER-830: whole days remaining until expiry, computed server-side. Negative
39535
39903
  // when the token is already expired (so the CLI can render "expired").
39536
39904
  expires_in_days: external_exports.number().int(),
39537
- revoked_at: isoDateTime7.nullable()
39905
+ revoked_at: isoDateTime8.nullable()
39538
39906
  }).strict();
39539
39907
  var mcpTokenListOutputSchema = external_exports.object({
39540
39908
  tokens: external_exports.array(mcpTokenMetadataSchema)
@@ -39550,8 +39918,8 @@ var devicePairingIntentSummarySchema = external_exports.object({
39550
39918
  // intents are omitted by the reader, so they never appear on this contract.
39551
39919
  status: external_exports.enum(["pending", "consumed"]),
39552
39920
  created_by: uuidSchema22,
39553
- created_at: isoDateTime7,
39554
- expires_at: isoDateTime7,
39921
+ created_at: isoDateTime8,
39922
+ expires_at: isoDateTime8,
39555
39923
  // Whole seconds until the intent's own TTL lapses. Never negative: the reader
39556
39924
  // only returns still-live intents, and the command floors it at 0.
39557
39925
  expires_in_seconds: external_exports.number().int().nonnegative(),
@@ -39582,14 +39950,14 @@ var errorLogListItemSchema = external_exports.object({
39582
39950
  agent_id: uuidSchema22.nullable(),
39583
39951
  run_id: uuidSchema22.nullable(),
39584
39952
  disposition: external_exports.enum(["active", "acknowledged", "resolved", "superseded"]),
39585
- resolved_at: isoDateTime7.nullable(),
39953
+ resolved_at: isoDateTime8.nullable(),
39586
39954
  resolved_by: uuidSchema22.nullable(),
39587
39955
  resolution_reason: external_exports.string().nullable(),
39588
39956
  linked_task_id: uuidSchema22.nullable(),
39589
39957
  linked_issue_id: uuidSchema22.nullable(),
39590
39958
  linked_pr_ref: external_exports.string().nullable(),
39591
39959
  superseded_by_id: uuidSchema22.nullable(),
39592
- created_at: isoDateTime7
39960
+ created_at: isoDateTime8
39593
39961
  }).strict();
39594
39962
  var errorLogListOutputSchema = external_exports.object({
39595
39963
  errors: external_exports.array(errorLogListItemSchema),
@@ -39606,7 +39974,7 @@ var errorLogResolveInputSchema = external_exports.object({
39606
39974
  var errorLogResolveOutputSchema = external_exports.object({
39607
39975
  error_log_id: uuidSchema22,
39608
39976
  disposition: external_exports.enum(["acknowledged", "resolved"]),
39609
- resolved_at: isoDateTime7
39977
+ resolved_at: isoDateTime8
39610
39978
  }).strict();
39611
39979
  var errorLogSupersedeInputSchema = external_exports.object({
39612
39980
  error_log_id: uuidSchema22,
@@ -39620,7 +39988,7 @@ var errorLogSupersedeOutputSchema = external_exports.object({
39620
39988
  error_log_id: uuidSchema22,
39621
39989
  superseded_by_id: uuidSchema22,
39622
39990
  disposition: external_exports.literal("superseded"),
39623
- resolved_at: isoDateTime7
39991
+ resolved_at: isoDateTime8
39624
39992
  }).strict();
39625
39993
  var staleCandidateConfidenceSchema = external_exports.enum(["low", "medium", "high"]);
39626
39994
  var staleCandidateEvidenceSchema = external_exports.array(external_exports.string());
@@ -39636,8 +40004,8 @@ var errorLogStaleCandidateSchema = external_exports.object({
39636
40004
  message: external_exports.string(),
39637
40005
  seat_id: uuidSchema22.nullable(),
39638
40006
  occurrence_count: external_exports.number().int(),
39639
- last_seen_at: isoDateTime7,
39640
- created_at: isoDateTime7,
40007
+ last_seen_at: isoDateTime8,
40008
+ created_at: isoDateTime8,
39641
40009
  days_stale: external_exports.number().int(),
39642
40010
  linked_issue_id: uuidSchema22.nullable(),
39643
40011
  linked_issue_resolved: external_exports.boolean(),
@@ -39654,8 +40022,8 @@ var escalationStaleCandidateSchema = external_exports.object({
39654
40022
  seat_name: external_exports.string(),
39655
40023
  reason: external_exports.string(),
39656
40024
  status: external_exports.literal("open"),
39657
- created_at: isoDateTime7,
39658
- updated_at: isoDateTime7,
40025
+ created_at: isoDateTime8,
40026
+ updated_at: isoDateTime8,
39659
40027
  days_stale: external_exports.number().int(),
39660
40028
  referenced_refs: external_exports.array(external_exports.string()),
39661
40029
  confidence: staleCandidateConfidenceSchema,
@@ -39670,8 +40038,8 @@ var frictionStaleCandidateSchema = external_exports.object({
39670
40038
  summary: external_exports.string(),
39671
40039
  severity: external_exports.enum(["low", "med", "high", "critical"]),
39672
40040
  status: external_exports.enum(["open", "diagnosing"]),
39673
- created_at: isoDateTime7,
39674
- updated_at: isoDateTime7,
40041
+ created_at: isoDateTime8,
40042
+ updated_at: isoDateTime8,
39675
40043
  days_stale: external_exports.number().int(),
39676
40044
  action_task_id: uuidSchema22.nullable(),
39677
40045
  action_task_status: external_exports.string().nullable(),
@@ -39758,9 +40126,9 @@ var runHeartbeatSeatRollupSchema = external_exports.object({
39758
40126
  run_count: external_exports.number().int().nonnegative(),
39759
40127
  stalled_run_count: external_exports.number().int().nonnegative(),
39760
40128
  current_phase: external_exports.string().nullable(),
39761
- last_progress_at: isoDateTime7.nullable(),
39762
- expected_next_at: isoDateTime7.nullable(),
39763
- stall_after_at: isoDateTime7.nullable(),
40129
+ last_progress_at: isoDateTime8.nullable(),
40130
+ expected_next_at: isoDateTime8.nullable(),
40131
+ stall_after_at: isoDateTime8.nullable(),
39764
40132
  done_count: external_exports.number().int().nonnegative(),
39765
40133
  in_flight_count: external_exports.number().int().nonnegative(),
39766
40134
  queued_count: external_exports.number().int().nonnegative(),
@@ -39774,7 +40142,7 @@ var agentRunHeartbeatsOutputSchema = external_exports.object({
39774
40142
  // ../../packages/protocol/src/working-files.ts
39775
40143
  var WORKING_FILE_MAX_PATH_CHARS = 512;
39776
40144
  var WORKING_FILE_MAX_CONTENT_CHARS = 16384;
39777
- var isoDateTime8 = external_exports.string().datetime({ offset: true });
40145
+ var isoDateTime9 = external_exports.string().datetime({ offset: true });
39778
40146
  var workingFileContentTypeSchema = external_exports.enum([
39779
40147
  "text/plain",
39780
40148
  "text/markdown",
@@ -39853,10 +40221,10 @@ var workingFileSummarySchema = external_exports.object({
39853
40221
  content_type: workingFileContentTypeSchema,
39854
40222
  content_chars: external_exports.number().int().nonnegative(),
39855
40223
  published_ref: external_exports.string().min(1).nullable(),
39856
- published_at: isoDateTime8.nullable(),
39857
- expires_at: isoDateTime8,
39858
- created_at: isoDateTime8,
39859
- updated_at: isoDateTime8
40224
+ published_at: isoDateTime9.nullable(),
40225
+ expires_at: isoDateTime9,
40226
+ created_at: isoDateTime9,
40227
+ updated_at: isoDateTime9
39860
40228
  }).strict();
39861
40229
  var workingFileReadResultSchema = workingFileSummarySchema.extend({
39862
40230
  content: external_exports.string(),
@@ -39871,299 +40239,6 @@ var runSummaryOutputSchema = external_exports.object({
39871
40239
  summary: external_exports.string().min(1).max(140)
39872
40240
  });
39873
40241
 
39874
- // ../../packages/protocol/src/runner-setup.ts
39875
- var uuid10 = external_exports.string().uuid();
39876
- var isoDateTime9 = external_exports.string().datetime({ offset: true });
39877
- var sha256Hex = external_exports.string().regex(/^[0-9a-f]{64}$/, "expected a lowercase sha-256 hex digest");
39878
- var runnerSetupRuntimeSchema = external_exports.enum(["claude", "codex"]);
39879
- var runnerSetupSelectedRuntimesSchema = external_exports.array(runnerSetupRuntimeSchema).min(1).max(2).refine(
39880
- (runtimes) => new Set(runtimes).size === runtimes.length,
39881
- "selected runtimes must be distinct"
39882
- );
39883
- var runnerSetupStageSchema = external_exports.enum([
39884
- "pairing",
39885
- "provider_consent",
39886
- "service_install",
39887
- "runtime_validation",
39888
- "heartbeat_wait",
39889
- "ready"
39890
- ]);
39891
- var runnerSetupStatusSchema = external_exports.enum([
39892
- "active",
39893
- "action_required",
39894
- "blocked",
39895
- "ready",
39896
- "cancelled",
39897
- "expired"
39898
- ]);
39899
- var RUNNER_SETUP_TERMINAL_STATUSES = ["ready", "cancelled", "expired"];
39900
- function isRunnerSetupTerminalStatus(status) {
39901
- return RUNNER_SETUP_TERMINAL_STATUSES.includes(status);
39902
- }
39903
- var runnerSetupBlockerCodeSchema = external_exports.enum([
39904
- "unsupported_platform",
39905
- "unsupported_service_manager",
39906
- "provider_version_unsupported",
39907
- "provider_consent_failed",
39908
- "pairing_expired",
39909
- "validation_failed",
39910
- "heartbeat_timeout",
39911
- "service_key_revoked",
39912
- "runner_revoked"
39913
- ]);
39914
- var runnerSetupActionKindSchema = external_exports.enum([
39915
- "device_pairing_approval",
39916
- "provider_consent",
39917
- // R7: unsupported service managers get a typed manual-service action and must
39918
- // not claim full background readiness.
39919
- "manual_service_install"
39920
- ]);
39921
- var runnerSetupActionRequiredSchema = external_exports.object({
39922
- kind: runnerSetupActionKindSchema,
39923
- // Which selected runtime the action targets (provider consent); null for
39924
- // runtime-neutral actions such as device pairing approval.
39925
- runtime: runnerSetupRuntimeSchema.nullable(),
39926
- // Server-generated allowlisted destination (e.g. the runner setup page).
39927
- // Null when the action is completed locally on the machine.
39928
- url: external_exports.string().max(600).nullable(),
39929
- // Present only when the responding surface freshly minted/holds the raw code
39930
- // (web setup page, local CLI ceremony). The server stores only hashes, so
39931
- // remote command responses carry null here.
39932
- user_code: external_exports.string().max(40).nullable(),
39933
- expires_at: isoDateTime9.nullable()
39934
- }).strict();
39935
- var runnerSetupCheckpointWriterSchema = external_exports.enum(["server", "runner", "owner"]);
39936
- var runnerSetupCheckpointSchema = external_exports.object({
39937
- stage: runnerSetupStageSchema,
39938
- key: external_exports.string().min(1).max(120),
39939
- writer: runnerSetupCheckpointWriterSchema,
39940
- // Runner-published checkpoints carry the caller's request digest so a replay
39941
- // (same key + same digest) returns the stored checkpoint and a conflicting
39942
- // rewrite (same key + different digest) is rejected. Server/owner-written
39943
- // checkpoints carry null.
39944
- request_digest: sha256Hex.nullable(),
39945
- completed_at: isoDateTime9
39946
- }).strict();
39947
- var runnerSetupCheckpointPayloadSchema = external_exports.object({
39948
- service_manager: external_exports.enum(["launchd", "manual"]).optional(),
39949
- service_installed: external_exports.boolean().optional(),
39950
- service_state_file_present: external_exports.boolean().optional(),
39951
- cell_generation: external_exports.number().int().nonnegative().optional(),
39952
- provider_cli_version: external_exports.string().max(40).regex(/^[0-9A-Za-z.+-]+$/).optional(),
39953
- blocker_code: runnerSetupBlockerCodeSchema.optional()
39954
- }).strict();
39955
- var runnerSetupCheckpointPublishSchema = external_exports.object({
39956
- setup_id: uuid10,
39957
- stage: runnerSetupStageSchema,
39958
- checkpoint_key: external_exports.string().min(1).max(120),
39959
- request_digest: sha256Hex,
39960
- payload: runnerSetupCheckpointPayloadSchema
39961
- }).strict();
39962
- var runnerValidationReceiptSchema = external_exports.object({
39963
- version: external_exports.number().int().positive(),
39964
- runner_id: uuid10,
39965
- runtime: runnerSetupRuntimeSchema,
39966
- credential_cell_generation: external_exports.number().int().nonnegative(),
39967
- provider_cli_version: external_exports.string().max(40),
39968
- rost_cli_version: external_exports.string().max(40),
39969
- sandbox_policy_version: external_exports.string().max(40),
39970
- mcp_config_digest: sha256Hex,
39971
- service_key_generation: external_exports.number().int().nonnegative(),
39972
- probe_capability_version: external_exports.number().int().positive(),
39973
- issued_at: isoDateTime9,
39974
- expires_at: isoDateTime9
39975
- }).strict();
39976
- var runnerSetupValidationChallengeSchema = external_exports.object({
39977
- setup_id: uuid10,
39978
- runtime: runnerSetupRuntimeSchema,
39979
- nonce: external_exports.string().min(16).max(120),
39980
- expires_at: isoDateTime9
39981
- }).strict();
39982
- var runnerSetupValidationResultSchema = external_exports.object({
39983
- setup_id: uuid10,
39984
- runtime: runnerSetupRuntimeSchema,
39985
- // sha-256 of the nonce-derived probe answer — never raw provider output.
39986
- nonce_proof: sha256Hex,
39987
- service_key_generation: external_exports.number().int().nonnegative()
39988
- }).strict();
39989
- var runnerSetupValidationJobStatusSchema = external_exports.enum([
39990
- "issued",
39991
- "claimed",
39992
- "completed",
39993
- "failed",
39994
- "expired"
39995
- ]);
39996
- var runnerSetupValidationAttemptKindSchema = external_exports.enum([
39997
- "runtime_probe",
39998
- "aicos_acceptance"
39999
- ]);
40000
- var runnerSetupValidationAttemptStatusSchema = external_exports.enum([
40001
- "started",
40002
- "succeeded",
40003
- "failed"
40004
- ]);
40005
- var runnerSetupValidationAttemptResultSchema = external_exports.object({
40006
- runner_id: uuid10,
40007
- runtime: runnerSetupRuntimeSchema,
40008
- model: external_exports.string().max(120).regex(/^[0-9A-Za-z _./:+-]+$/).nullable(),
40009
- provider_cli_version: external_exports.string().max(40).regex(/^[0-9A-Za-z.+-]+$/).nullable(),
40010
- observed_at: isoDateTime9
40011
- }).strict();
40012
- var RUNNER_SETUP_VALIDATION_JOB_TERMINAL_STATUSES = [
40013
- "completed",
40014
- "failed",
40015
- "expired"
40016
- ];
40017
- var runnerSetupValidationJobSchema = external_exports.object({
40018
- job_id: uuid10,
40019
- setup_id: uuid10,
40020
- runtime: runnerSetupRuntimeSchema,
40021
- status: runnerSetupValidationJobStatusSchema,
40022
- // Stamped at issue from the session's bound key; DER-3357's attempt path
40023
- // compares it against the live generation (rotation-stale refusal).
40024
- service_key_generation: external_exports.number().int().nonnegative(),
40025
- expires_at: isoDateTime9,
40026
- claimed_at: isoDateTime9.nullable(),
40027
- completed_at: isoDateTime9.nullable(),
40028
- created_at: isoDateTime9,
40029
- updated_at: isoDateTime9
40030
- }).strict().refine(
40031
- (job) => RUNNER_SETUP_VALIDATION_JOB_TERMINAL_STATUSES.includes(job.status) === (job.completed_at !== null),
40032
- "terminal status must correlate with completed_at"
40033
- ).refine(
40034
- (job) => job.claimed_at === null || job.status !== "issued",
40035
- "claimed_at requires a non-issued status"
40036
- ).refine(
40037
- (job) => {
40038
- const created = new Date(job.created_at).getTime();
40039
- const expires = new Date(job.expires_at).getTime();
40040
- return expires > created && expires <= created + 24 * 60 * 60 * 1e3;
40041
- },
40042
- "expires_at must be after created_at and within 24 hours"
40043
- );
40044
- var runnerSetupValidationAttemptSchema = external_exports.object({
40045
- attempt_id: uuid10,
40046
- job_id: uuid10,
40047
- setup_id: uuid10,
40048
- kind: runnerSetupValidationAttemptKindSchema,
40049
- status: runnerSetupValidationAttemptStatusSchema,
40050
- result: runnerSetupValidationAttemptResultSchema.nullable(),
40051
- decision_id: uuid10.nullable(),
40052
- activation_receipt_id: uuid10.nullable(),
40053
- started_at: isoDateTime9,
40054
- completed_at: isoDateTime9.nullable(),
40055
- created_at: isoDateTime9,
40056
- updated_at: isoDateTime9
40057
- }).strict().refine(
40058
- (attempt) => attempt.status === "started" === (attempt.completed_at === null),
40059
- "started status must correlate with null completed_at"
40060
- ).refine(
40061
- (attempt) => attempt.kind === "aicos_acceptance" === (attempt.decision_id !== null),
40062
- "aicos_acceptance must be attributed to a decision"
40063
- ).refine(
40064
- (attempt) => attempt.kind === "aicos_acceptance" === (attempt.activation_receipt_id !== null),
40065
- "aicos_acceptance must be attributed to an activation receipt"
40066
- );
40067
- var runnerSetupValidationClaimRequestSchema = external_exports.object({
40068
- setup_id: uuid10,
40069
- runtime: runnerSetupRuntimeSchema
40070
- }).strict();
40071
- var runnerSetupValidationClaimResponseSchema = external_exports.object({
40072
- job_id: uuid10,
40073
- challenge: runnerSetupValidationChallengeSchema,
40074
- probe_capability_version: external_exports.number().int().positive(),
40075
- allowed_command_ids: external_exports.array(external_exports.string().min(1).max(120)).min(1).max(20)
40076
- }).strict();
40077
- var runnerSetupValidationReportRequestSchema = external_exports.object({
40078
- job_id: uuid10,
40079
- // The raw nonce travels back so the server can recompute the proof and
40080
- // verify the round trip; the server itself only ever stored its sha-256.
40081
- nonce: external_exports.string().min(16).max(120),
40082
- result: runnerSetupValidationResultSchema,
40083
- attempt: runnerSetupValidationAttemptResultSchema,
40084
- // At least one id: the probe cannot have produced a result without invoking
40085
- // the setup projection it is built on, and an EMPTY array made the result
40086
- // route's `.some(...)` bound vacuously true — reporting nothing was the way
40087
- // past the check (DER-3336).
40088
- invoked_command_ids: external_exports.array(external_exports.string().min(1).max(120)).min(1).max(20),
40089
- // DER-3336: machine FACTS about the runner's own environment — never a
40090
- // VERDICT. `runnerValidationReceiptSchema` binds a receipt to these five
40091
- // fields (and key rotation invalidates that binding), so the reporting
40092
- // service must supply them for the server to mint a correct receipt. The
40093
- // distinction that makes this safe: the runner may assert FACTS about
40094
- // itself (what CLI/sandbox/MCP-config version it is running), which the
40095
- // receipt BINDS and which rotation can invalidate — but there is still no
40096
- // field anywhere in this request by which the runner asserts pass/fail.
40097
- // The server alone derives that verdict (see the CRITICAL comment above).
40098
- receipt_facts: runnerValidationReceiptSchema.pick({
40099
- credential_cell_generation: true,
40100
- provider_cli_version: true,
40101
- rost_cli_version: true,
40102
- sandbox_policy_version: true,
40103
- mcp_config_digest: true
40104
- })
40105
- }).strict();
40106
- var runnerSetupValidationReportResponseSchema = external_exports.object({
40107
- job_id: uuid10,
40108
- attempt_id: uuid10,
40109
- verdict: external_exports.enum(["passed", "failed"]),
40110
- receipt: runnerValidationReceiptSchema.nullable(),
40111
- reason: external_exports.string().max(200).nullable()
40112
- }).strict();
40113
- var runnerRuntimeAuthStateSchema = external_exports.enum(["ready", "missing", "stale", "unknown"]);
40114
- var runnerRuntimeSandboxStateSchema = external_exports.enum(["passed", "failed", "unknown"]);
40115
- var runnerRuntimeValidationStateSchema = external_exports.enum([
40116
- "current",
40117
- "missing",
40118
- "stale",
40119
- "failed",
40120
- "mismatch"
40121
- ]);
40122
- var runnerRuntimeReadinessSchema = external_exports.object({
40123
- runtime: runnerSetupRuntimeSchema,
40124
- installed: external_exports.boolean(),
40125
- cli_version: external_exports.string().max(40).nullable(),
40126
- auth_state: runnerRuntimeAuthStateSchema,
40127
- // The truthful cell-probe contract version (DER-3022 shape). Null when the
40128
- // runner never advertised one — which is NOT ready.
40129
- auth_contract_version: external_exports.number().int().positive().nullable(),
40130
- sandbox_state: runnerRuntimeSandboxStateSchema,
40131
- validation_state: runnerRuntimeValidationStateSchema,
40132
- validation_receipt: runnerValidationReceiptSchema.nullable()
40133
- }).strict();
40134
- var runnerSetupSessionSchema = external_exports.object({
40135
- setup_id: uuid10,
40136
- stage: runnerSetupStageSchema,
40137
- status: runnerSetupStatusSchema,
40138
- selected_runtimes: runnerSetupSelectedRuntimesSchema,
40139
- runner_id: uuid10.nullable(),
40140
- blocker_code: runnerSetupBlockerCodeSchema.nullable(),
40141
- action_required: runnerSetupActionRequiredSchema.nullable(),
40142
- checkpoints: external_exports.array(runnerSetupCheckpointSchema),
40143
- // One readiness entry per SELECTED runtime once observations exist; empty
40144
- // until the first server-observed heartbeat/validation reaches the session.
40145
- runtime_readiness: external_exports.array(runnerRuntimeReadinessSchema),
40146
- service_key_generation: external_exports.number().int().nonnegative(),
40147
- service_key_bound: external_exports.boolean(),
40148
- service_key_revoked: external_exports.boolean(),
40149
- expires_at: isoDateTime9,
40150
- terminal_at: isoDateTime9.nullable(),
40151
- created_at: isoDateTime9,
40152
- updated_at: isoDateTime9
40153
- }).strict();
40154
- var runnerSetupStartInputSchema = external_exports.object({
40155
- selected_runtimes: runnerSetupSelectedRuntimesSchema
40156
- }).strict();
40157
- var runnerSetupStatusInputSchema = external_exports.object({
40158
- setup_id: uuid10
40159
- }).strict();
40160
- var runnerSetupResumeInputSchema = external_exports.object({
40161
- setup_id: uuid10
40162
- }).strict();
40163
- var runnerSetupCancelInputSchema = external_exports.object({
40164
- setup_id: uuid10
40165
- }).strict();
40166
-
40167
40242
  // ../../packages/protocol/src/system-health.ts
40168
40243
  var uuidSchema23 = external_exports.string().uuid();
40169
40244
  var isoDateTime10 = external_exports.string().datetime({ offset: true });
@@ -54338,7 +54413,7 @@ var COMMAND_MANIFEST = [
54338
54413
  { "id": "agent.update_schedule", "namespace": "agent", "action": "update_schedule", "title": "Update agent schedule", "description": "Set or clear the scheduled execution cron for a draft or live agent on a seat.", "requiredScope": "tenant", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }, { "name": "schedule_cron", "flag": "schedule-cron", "type": "string", "required": true }, { "name": "schedule_timezone", "flag": "schedule-timezone", "type": "string", "required": false }], "hasComplexInput": false, "help": "Set or clear an agent's scheduled execution; a live scheduled agent must keep a steward chain resolving to a human." },
54339
54414
  { "id": "agent.watch_run", "namespace": "agent", "action": "watch_run", "title": "Watch agent run", "description": "Return a read-only live snapshot of one seat run: run status and lane, the derived current work-state, the run-heartbeat (quiet-but-healthy vs stalled) with current phase, the persisted session transcript, and the run's tool-call step feed (tool name, guard result, outcome). Never returns argument summaries or secret material.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }, { "name": "run_id", "flag": "run-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Watch one run live (read-only): run status, derived work-state, quiet-vs-stalled heartbeat, transcript, and the tool-call step feed." },
54340
54415
  { "id": "aicos.brain_settings.get", "namespace": "aicos", "action": "brain_settings.get", "title": "Get AICOS brain settings", "description": "Read the AICOS run lane and brain selection. Returns labels and enum settings only; no secrets or vault refs.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [], "hasComplexInput": false, "help": "Read the AICOS lane and brain selection labels without returning provider keys, vault refs, or runner secrets." },
54341
- { "id": "aicos.brain_settings.update", "namespace": "aicos", "action": "brain_settings.update", "title": "Update AICOS brain settings", "description": "Update the AICOS lane and cloud/runner brain preferences. Owner-only \u2014 an agent-class caller is always refused; have a human owner run this command. Audited.", "requiredScope": "tenant", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "lane", "flag": "lane", "type": "enum", "required": false, "enumValues": ["cloud", "runner", "mcp"] }, { "name": "cloud_brain", "flag": "cloud-brain", "type": "enum", "required": false, "enumValues": ["managed", "byok"] }, { "name": "runner_brain", "flag": "runner-brain", "type": "enum", "required": false, "enumValues": ["claude-cli", "codex-cli"] }, { "name": "cloud_model_slug", "flag": "cloud-model-slug", "type": "string", "required": false }], "hasComplexInput": true, "bootstrapClass": "execute_with_receipt", "help": "Update AICOS cloud managed/BYOK and runner Claude/Codex preferences. Owner-only: an agent caller is always refused. BYOK requires an active tenant Anthropic key." },
54416
+ { "id": "aicos.brain_settings.update", "namespace": "aicos", "action": "brain_settings.update", "title": "Update AICOS brain settings", "description": "Update the AICOS lane and cloud/runner brain preferences. Owner-only for a human caller. An agent-class caller may change only lane and runner brain, and only by presenting a live, unconsumed activation receipt naming this command and that exact lane/runner-brain projection \u2014 cloud brain and managed-model fields are always refused for an agent-class call. Audited.", "requiredScope": "tenant", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "lane", "flag": "lane", "type": "enum", "required": false, "enumValues": ["cloud", "runner", "mcp"] }, { "name": "cloud_brain", "flag": "cloud-brain", "type": "enum", "required": false, "enumValues": ["managed", "byok"] }, { "name": "runner_brain", "flag": "runner-brain", "type": "enum", "required": false, "enumValues": ["claude-cli", "codex-cli"] }, { "name": "cloud_model_slug", "flag": "cloud-model-slug", "type": "string", "required": false }], "hasComplexInput": true, "bootstrapClass": "execute_with_receipt", "help": "Update AICOS cloud managed/BYOK and runner Claude/Codex preferences. Agents hold no ambient authority: an agent-class call must present one valid, unconsumed, operation-bound single-use activation receipt, and may change only the lane and runner brain that receipt authorizes; cloud brain and managed-model fields stay owner-only. BYOK requires an active tenant Anthropic key." },
54342
54417
  { "id": "cascade.import", "namespace": "cascade", "action": "import", "title": "Import Rocks from a ninety Rocks export", "description": "Bulk-import a ninety Rocks export into the Cascade as cycle goals under a company objective in the active cycle. Owners are seat names resolved to seats. Requires an active cycle and a target company objective (auto-selected when exactly one exists, else pass parent_objective_id). Idempotent \u2014 re-importing the same export is a no-op, and an existing cycle goal with the same objective + seat + title is skipped.", "requiredScope": "tenant_admin", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "dry_run", "flag": "dry-run", "type": "boolean", "required": false }, { "name": "parent_objective_id", "flag": "parent-objective-id", "type": "string", "required": false }], "hasComplexInput": true, "help": "Import a ninety Rocks export into the Cascade as cycle goals under a company objective in the active cycle; owners resolve to seats." },
54343
54418
  { "id": "cascade.import_okrs", "namespace": "cascade", "action": "import_okrs", "title": "Import objectives and key results from a generic OKR CSV", "description": "Bulk-import a generic OKR export (objectives + key results) into the Cascade. Company objectives become company_objective goals; seat objectives become seat goals under the resolved company objective; metric key results become measurables bound informs to their objective; milestone key results become milestone goals under a seat objective. Owners are seat names resolved to seats; requires an active cycle. Idempotent \u2014 re-importing the same file is a no-op; existing goals/measurables/bindings are matched, never duplicated.", "requiredScope": "tenant_admin", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "dry_run", "flag": "dry-run", "type": "boolean", "required": false }, { "name": "parent_objective_id", "flag": "parent-objective-id", "type": "string", "required": false }], "hasComplexInput": true, "help": "Import a generic OKR CSV (objectives + key results) into the Cascade; objectives become goals, metric KRs become measurables bound informs, milestone KRs become milestone goals; owners resolve to seats." },
54344
54419
  { "id": "charter.apply_seat_type_recommendation", "namespace": "charter", "action": "apply_seat_type_recommendation", "title": "Apply Charter seat-type recommendation", "description": "Apply the seat-type recommendation from a draft Charter.", "requiredScope": "seat", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "charter_version_id", "flag": "charter-version-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Apply seat-type recommendations only after the Charter clarifies work shape, risk, and Steward accountability." },
@@ -56279,7 +56354,7 @@ Drafting can be assisted by agents. Activation is a human decision. When authori
56279
56354
  order: 40,
56280
56355
  title: "Agent staffing playbook",
56281
56356
  summary: "How to decide whether a seat should be human, agent, or hybrid, and how to go live safely.",
56282
- version: "2026-08-10.2",
56357
+ version: "2026-08-11.1",
56283
56358
  public: true,
56284
56359
  audiences: ["human", "cli", "mcp", "in_app_agent"],
56285
56360
  stages: ["staffing"],
@@ -56355,7 +56430,7 @@ After an agent runs, review its completed work as well as its telemetry. Seat pa
56355
56430
 
56356
56431
  The lane a live agent runs on \u2014 cloud (the {{brand}}-managed runtime), a paired runner, or an external MCP session \u2014 is otherwise fixed once it goes live. To move a live agent to a different lane, use \`agent_setup.relane\` (owner-only, human-gated, with a required rationale): it pauses the agent, moves it to the new lane, forces a **fresh** dry-run rehearsal on that lane so lane-specific tool executability is honestly re-surfaced, then brings it back live. It honours the same substrate gate as go-live: an unscheduled runner target can still go live parked while no compatible runner is available, but a scheduled agent's readiness is checked before it returns to live. If the rehearsal fails, the agent is left paused on the new lane rather than going live, so a failed re-lane never wakes on a schedule. This path does not mint a new Charter version, so a seat whose Charter already carries signed manifest evidence needs that evidence re-signed for the new lane before its rehearsal can run.
56357
56432
 
56358
- The governed AICOS seat's own lane change is a separate path \u2014 Settings -> AICOS, or \`aicos.brain_settings.update\` \u2014 and behaves differently on a live, recognized stock AICOS Charter: see the AICOS chat guide for the Charter successor it mints. It is owner-only: an agent-class caller is always refused. A draft agent's lane is still set directly with \`agent_setup.update\`.
56433
+ The governed AICOS seat's own lane change is a separate path \u2014 Settings -> AICOS, or \`aicos.brain_settings.update\` \u2014 and behaves differently on a live, recognized stock AICOS Charter: see the AICOS chat guide for the Charter successor it mints. Agents hold no ambient authority over it: an agent-class caller must present one valid, unconsumed, operation-bound single-use activation receipt, and even then may change only the lane and runner brain that receipt authorizes. A draft agent's lane is still set directly with \`agent_setup.update\`.
56359
56434
 
56360
56435
  \`agent_setup.update\` sets the lane only while the agent is still in setup. It refuses a lane change on a **paused** agent, because a paused agent carries a real Charter pin whose manifest evidence names its current lane and \`agent.resume\` brings it back live without re-checking that \u2014 so moving the lane there would put an agent live on evidence for a lane it no longer runs on, at a lower authority than either governed path requires. The refusal names the right one for the agent: \`aicos.brain_settings.update\` for the governed AICOS seat (it mints and re-signs the Charter evidence for the new lane), and \`agent_setup.relane\` for every other agent. Re-sending a paused agent's existing lane is unchanged \u2014 that is not a lane change. A \`dry_run\` agent's lane is still settable, and the go-live gate refuses to promote it until a fresh rehearsal and current manifest evidence both match the new lane.
56361
56436
 
@@ -56889,11 +56964,19 @@ External connectors are being rolled out provider by provider, conservatively (r
56889
56964
  // table (resumable setup lifecycle).
56890
56965
  // DER-3332: adds `runner setup` to the CLI command digest line.
56891
56966
  // DER-3341: restates the `rost_update_aicos_brain_settings` row — the tool is
56892
- // `Tenant`-scoped now, never stages a confirmation, and an AGENT caller is
56893
- // always refused (owner-ness of the calling token is not ambient authority
56894
- // for an agent, and receipt-authorized agent execution is deferred to
56895
- // DER-3358).
56896
- version: "2026-08-10.1",
56967
+ // `Tenant`-scoped now, never stages a confirmation, and an AGENT caller has
56968
+ // no ambient authority from the calling token's owner-ness alone.
56969
+ // DER-3358: reopens the AGENT-class path a call carrying one valid,
56970
+ // unconsumed, operation-bound single-use activation receipt may change the
56971
+ // lane and runner brain that receipt authorizes; a receiptless AGENT call,
56972
+ // or one touching cloud brain/managed-model fields, is still refused.
56973
+ // DER-3507: no caller can stage one FRESH, so it carries no confirmation
56974
+ // routing — the `/settings` deep link and Settings confirmation card were
56975
+ // deleted as dead. Not "never stages": `confirmation.remint` revives a
56976
+ // pre-DER-3341 stored row without re-consulting that rule and persists a
56977
+ // genuinely new row. Either way it resolves to the general `/approvals`
56978
+ // queue, which is where the table row below says it lands.
56979
+ version: "2026-08-11.2",
56897
56980
  public: true,
56898
56981
  audiences: ["human", "cli", "mcp", "in_app_agent"],
56899
56982
  stages: ["company_setup", "staffing"],
@@ -57769,7 +57852,7 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
57769
57852
  | \`rost_update_tenant_tool_policy\` | \`settings.tool_policy.update\` | Update tenant capability-grant defaults and the AICOS auto-trust posture. | Tenant-admin | Owner/admin only and human-gated; call with \`{"mode":"managed","aicos":{"trust_new_capabilities_automatically":true}}\`. |
57770
57853
  | \`rost_update_model_gateway_policy\` | \`tenant.model_gateway_policy.update\` | Unlock or relock managed models that lack a zero-retention (ZDR) tier. | Tenant-admin | Owner-only, human-gated; call with \`{"allow_non_zdr_models":true}\` (or \`false\` to relock). Unlocking establishes an ADR-0018 \xA76 standing authorization and surfaces a per-model retention disclosure. |
57771
57854
  | \`rost_get_aicos_brain_settings\` | \`aicos.brain_settings.get\` | Read AICOS lane and brain labels for cloud managed/BYOK, runner Claude/Codex, and MCP client. | Tenant | Call with \`{}\`; returns enum labels only, never keys, vault refs, or runner secrets. |
57772
- | \`rost_update_aicos_brain_settings\` | \`aicos.brain_settings.update\` | Update AICOS lane and cloud/runner brain preferences. | Tenant | Owner-only for a human caller, and it never stages a pending confirmation for anyone (DER-3341): an authenticated owner executes directly, and an AGENT caller is always refused with a typed \`action_required\` and writes nothing (receipt-authorized agent execution is deferred to DER-3358). Owner-ness of the calling token is never ambient authority for an agent. Call with \`{"lane":"runner","runner_brain":"claude-cli"}\` or \`{"cloud_brain":"byok"}\`. BYOK requires an active tenant Anthropic key. For AICOS, selecting \`codex-cli\` is currently rejected until the governed interactive runner path is verified. |
57855
+ | \`rost_update_aicos_brain_settings\` | \`aicos.brain_settings.update\` | Update AICOS lane and cloud/runner brain preferences. | Tenant | Owner-only for a human caller, and it never stages a pending confirmation for anyone (DER-3341): an authenticated owner executes directly. Owner-ness of the calling token is never ambient authority for an agent: an AGENT caller must present one valid, unconsumed, operation-bound single-use activation receipt, and even then may change only the lane and runner brain that receipt authorizes \u2014 cloud brain and managed-model fields stay owner-only. A receiptless AGENT call is refused with a typed \`action_required\` and writes nothing. No caller can stage one fresh, so there is no Settings confirmation card or \`/settings\` deep link; a row stored before DER-3341 \u2014 including one revived by \`confirmation.remint\`, which does not re-consult that rule \u2014 resolves to the general approvals queue instead. Call with \`{"lane":"runner","runner_brain":"claude-cli"}\` or \`{"cloud_brain":"byok"}\`. BYOK requires an active tenant Anthropic key. For AICOS, selecting \`codex-cli\` is currently rejected until the governed interactive runner path is verified. |
57773
57856
  | \`rost_list_signals\` | \`signal.list\` | List measurables with their latest reading, on/off-track state, and \`effective_source\` (read-time measured-by). | Seat or tenant-admin | Call with \`{}\` to find measurable ids. |
57774
57857
  | \`rost_get_signal\` | \`signal.get\` | Read a measurable with its full reading history. | Seat or tenant-admin | Call with \`{"measurable_id":"<id>"}\`. |
57775
57858
  | \`rost_confirm_signal_reading\` | \`signal.confirm_reading\` | Confirm an unconfirmed reading as human-verified. | Seat or tenant-admin | Humans confirm; call with \`{"reading_id":"<id>"}\`. |
@@ -59105,7 +59188,7 @@ A command carrying any of these risk categories always asks a human, even under
59105
59188
  order: 72,
59106
59189
  title: "Settings guide",
59107
59190
  summary: "How to use Settings as the control plane for company access, channels, providers, tokens, and operating defaults.",
59108
- version: "2026-08-10.1",
59191
+ version: "2026-08-11.1",
59109
59192
  public: true,
59110
59193
  audiences: ["human", "cli", "mcp", "in_app_agent"],
59111
59194
  stages: ["company_setup", "staffing"],
@@ -59189,7 +59272,7 @@ Agents that run on {{brand}}-managed inference draw against a tenant inference b
59189
59272
  - Set the hard cap with \`settings.update\` (CLI: \`{{cli}} settings update --hard-cap-usd <amount>\`). The optional soft cap warns before the hard cap and must be less than or equal to it.
59190
59273
  - The sandbox dry run is free and is never blocked by the cap, so a fresh company can charter, dry-run, and take an agent live before setting a budget. The cap applies only to real managed-inference runs.
59191
59274
  - A company that brings its own provider key (BYOK) is metered on that key and is not subject to the {{brand}}-managed hard cap. BYOK changes the provider account used for eligible cloud calls, not the Charter, tool guard, human gate, or data-retention posture; see the ai-model-data-handling-guide before making provider-handling claims.
59192
- - AICOS cloud brain selection is managed with \`aicos.brain_settings.get\` and \`aicos.brain_settings.update\` \u2014 owner-only, and an agent-class caller is always refused. Managed cloud answers draw from the included allowance; BYOK cloud answers meter against the tenant key. Runner Claude and MCP client answers are labeled separately and do not draw from the managed cloud allowance. The AICOS Codex runner choice remains gated off until the governed interactive runner path is verified.
59275
+ - AICOS cloud brain selection is managed with \`aicos.brain_settings.get\` and \`aicos.brain_settings.update\` \u2014 owner-only for a human caller; an agent-class caller holds no ambient authority and must present one valid, unconsumed, operation-bound single-use activation receipt, and even then may change only the lane and runner brain that receipt authorizes (cloud brain and managed-model fields stay owner-only). Managed cloud answers draw from the included allowance; BYOK cloud answers meter against the tenant key. Runner Claude and MCP client answers are labeled separately and do not draw from the managed cloud allowance. The AICOS Codex runner choice remains gated off until the governed interactive runner path is verified.
59193
59276
 
59194
59277
  ## Company autonomy ceiling (Company Guardrails)
59195
59278