@rosthq/cli 0.7.80 → 0.7.81

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.
@@ -1 +1 @@
1
- {"version":3,"file":"command-manifest.d.ts","sourceRoot":"","sources":["../../src/generated/command-manifest.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,eAAO,MAAM,gBAAgB,EAAE,SAAS,oBAAoB,EAkQ3D,CAAC"}
1
+ {"version":3,"file":"command-manifest.d.ts","sourceRoot":"","sources":["../../src/generated/command-manifest.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,eAAO,MAAM,gBAAgB,EAAE,SAAS,oBAAoB,EAmQ3D,CAAC"}
package/dist/index.js CHANGED
@@ -39451,6 +39451,113 @@ var agentCreateFromTemplateOutputSchema = agentSetupStateSchema.extend({
39451
39451
  occupancy_created: external_exports.boolean()
39452
39452
  }).strict();
39453
39453
 
39454
+ // ../../packages/protocol/src/agent-definition-import.ts
39455
+ var boundedTextSchema = external_exports.string().trim().min(1).max(2e3);
39456
+ var shortTextSchema = external_exports.string().trim().min(1).max(240);
39457
+ var forbiddenImportKeys = /* @__PURE__ */ new Set([
39458
+ "credential",
39459
+ "credentials",
39460
+ "secret",
39461
+ "secrets",
39462
+ "api_key",
39463
+ "apiKey",
39464
+ "token",
39465
+ "vault_ref",
39466
+ "vaultRef",
39467
+ "tenant_id",
39468
+ "tenantId",
39469
+ "seat_id",
39470
+ "seatId",
39471
+ "parent_seat_id",
39472
+ "parentSeatId",
39473
+ "steward_seat_id",
39474
+ "stewardSeatId",
39475
+ "integration_id",
39476
+ "integrationId"
39477
+ ]);
39478
+ function rejectForbiddenImportShape(value, ctx, path8 = []) {
39479
+ if (value === null || value === void 0) {
39480
+ return;
39481
+ }
39482
+ if (typeof value === "string") {
39483
+ if (hasSecretShapedValue(value)) {
39484
+ ctx.addIssue({
39485
+ code: external_exports.ZodIssueCode.custom,
39486
+ path: path8,
39487
+ message: "Definition imports cannot contain secret-shaped values. Provide credentials later through vault-backed connection flows."
39488
+ });
39489
+ }
39490
+ return;
39491
+ }
39492
+ if (Array.isArray(value)) {
39493
+ value.forEach((item, index) => rejectForbiddenImportShape(item, ctx, [...path8, index]));
39494
+ return;
39495
+ }
39496
+ if (typeof value !== "object") {
39497
+ return;
39498
+ }
39499
+ for (const [key, nested] of Object.entries(value)) {
39500
+ const nestedPath = [...path8, key];
39501
+ if (forbiddenImportKeys.has(key)) {
39502
+ ctx.addIssue({
39503
+ code: external_exports.ZodIssueCode.custom,
39504
+ path: nestedPath,
39505
+ message: "Definition imports cannot carry credentials or tenant-local placement identifiers."
39506
+ });
39507
+ }
39508
+ rejectForbiddenImportShape(nested, ctx, nestedPath);
39509
+ }
39510
+ }
39511
+ var agentDefinitionImportToolSchema = external_exports.object({
39512
+ capability_id: external_exports.string().trim().min(1).max(160),
39513
+ access: external_exports.enum(["read", "draft", "write_with_approval"]).default("read"),
39514
+ rationale: external_exports.string().trim().max(360).optional()
39515
+ }).strict();
39516
+ var agentDefinitionImportFileSchema = external_exports.object({
39517
+ format: external_exports.literal("rost.agent_definition"),
39518
+ version: external_exports.literal(1),
39519
+ agent: external_exports.object({
39520
+ name: shortTextSchema,
39521
+ purpose: boundedTextSchema,
39522
+ responsibilities: external_exports.array(shortTextSchema).min(1).max(12),
39523
+ success_criteria: external_exports.array(shortTextSchema).min(1).max(12),
39524
+ never_do_alone: external_exports.array(shortTextSchema).min(1).max(12),
39525
+ lane: external_exports.enum(["cloud", "runner", "mcp_session"]).default("cloud"),
39526
+ model_tier: external_exports.enum(AGENT_MODEL_TIERS).optional(),
39527
+ requested_tools: external_exports.array(agentDefinitionImportToolSchema).max(50).default([])
39528
+ }).strict()
39529
+ }).strict().superRefine((value, ctx) => rejectForbiddenImportShape(value, ctx));
39530
+ var definitionJsonSchema = external_exports.string().trim().min(1).max(65536).transform((value, ctx) => {
39531
+ try {
39532
+ return JSON.parse(value);
39533
+ } catch {
39534
+ ctx.addIssue({ code: external_exports.ZodIssueCode.custom, message: "Definition import must be valid JSON." });
39535
+ return external_exports.NEVER;
39536
+ }
39537
+ }).pipe(agentDefinitionImportFileSchema);
39538
+ var agentDefinitionImportInputSchema = external_exports.object({
39539
+ definition_json: definitionJsonSchema,
39540
+ idempotency_key: external_exports.string().trim().min(1).max(120).optional()
39541
+ }).strict();
39542
+ var agentDefinitionImportMappingSchema = external_exports.object({
39543
+ method: external_exports.literal("import"),
39544
+ source_hash: external_exports.string().length(64),
39545
+ seat_name: external_exports.string(),
39546
+ lane: external_exports.enum(["cloud", "runner", "mcp_session"]),
39547
+ model_tier: external_exports.enum(AGENT_MODEL_TIERS).nullable(),
39548
+ requested_tools: external_exports.array(agentDefinitionImportToolSchema),
39549
+ unsupported: external_exports.array(external_exports.object({
39550
+ field: external_exports.string(),
39551
+ reason: external_exports.string()
39552
+ }).strict()).default([])
39553
+ }).strict();
39554
+ var agentDefinitionImportOutputSchema = external_exports.object({
39555
+ setup: agentSetupStateSchema,
39556
+ mapping: agentDefinitionImportMappingSchema,
39557
+ created: external_exports.boolean(),
39558
+ idempotency_key: external_exports.string().nullable()
39559
+ }).strict();
39560
+
39454
39561
  // ../../packages/protocol/src/provider-costs.ts
39455
39562
  var providerCostKinds = ["managed_llm", "exa", "browser", "sandbox"];
39456
39563
  var providerCostKindSchema = external_exports.enum(providerCostKinds);
@@ -42396,10 +42503,12 @@ var charterDraftInputSchema = external_exports.object({
42396
42503
  var charterDraftOutputSchema = external_exports.object({
42397
42504
  charter_version_id: uuidSchema11,
42398
42505
  seat_id: uuidSchema11,
42506
+ edit_revision: external_exports.number().int().min(1).optional(),
42399
42507
  doc: external_exports.unknown()
42400
42508
  }).strict();
42401
42509
  var charterUpdateDraftInputSchema = external_exports.object({
42402
42510
  charter_version_id: uuidSchema11,
42511
+ expected_edit_revision: external_exports.number().int().min(1).optional(),
42403
42512
  // DER-785 (Part G): the full Charter document contract (was `z.unknown()`).
42404
42513
  // The DB layer already validated this with `charterSchema.parse`; advertising
42405
42514
  // it here gives `command.describe`/`rost command schema` a real shape and a
@@ -42413,7 +42522,8 @@ var charterSetInputSchema = external_exports.object({
42413
42522
  }).strict();
42414
42523
  var charterMutationOutputSchema = external_exports.object({
42415
42524
  charter_version_id: uuidSchema11,
42416
- seat_id: uuidSchema11
42525
+ seat_id: uuidSchema11,
42526
+ edit_revision: external_exports.number().int().min(1).optional()
42417
42527
  }).strict();
42418
42528
  var charterApproveInputSchema = external_exports.object({
42419
42529
  seat_id: uuidSchema11.optional(),
@@ -42422,6 +42532,7 @@ var charterApproveInputSchema = external_exports.object({
42422
42532
  // These fields are shallow-merged onto the existing draft, then the merged doc
42423
42533
  // is re-validated against the full schema at persist time.
42424
42534
  edits: charterDocEditsSchema.optional(),
42535
+ expected_edit_revision: external_exports.number().int().min(1).optional(),
42425
42536
  apply_seat_type: external_exports.boolean().default(false)
42426
42537
  }).strict().refine((input) => Boolean(input.seat_id) || Boolean(input.charter_version_id), {
42427
42538
  message: "Provide seat_id or charter_version_id.",
@@ -46625,7 +46736,7 @@ The Compass is drafted, then activated by a human through supersession.
46625
46736
  order: 15,
46626
46737
  title: "AICOS chat guide",
46627
46738
  summary: "How the AI Chief of Staff chat works in the authenticated app shell and what it can safely do today.",
46628
- version: "2026-07-13.1",
46739
+ version: "2026-07-15.1",
46629
46740
  public: true,
46630
46741
  audiences: ["human", "in_app_agent"],
46631
46742
  stages: ["company_setup", "operating_rhythm"],
@@ -46700,6 +46811,8 @@ AICOS also has an explicit brain selection. Cloud can use the included managed a
46700
46811
 
46701
46812
  Runner mode uses the same AICOS sessions and transcript. Interactive chat turns are tracked separately from scheduled work orders: each user message has one user-owned turn execution with a short deadline, so two users' chat messages cannot collapse into the same scheduled-work slot. Scheduled and Forge runner work still use work orders. Runner claim packets carry ids and execution metadata, not the user's free-text request. After claim, the local runner calls the governed AICOS context-load tool, which re-checks seat scope and returns the bounded transcript, session summary, route context, tenant clock, grounding text, and source counts authorized for that turn. For execute-ready runners, the claim also carries a server-built Seat work contract that names the governed runtime profile, the AICOS context-loader tool, and the Seat's permission manifest; action attempts still route through command guards, tool-call audit, and pending confirmations. The runner treats loaded tenant clock, context, and contract as authoritative instead of substituting its own runtime clock, local files, or self-invented authority. A runner must be paired, execute-ready, and backed by the live AICOS agent before it can be selected.
46702
46813
 
46814
+ Agent seat pages can also expose a direct persistent chat with that seat's active agent. This is different from Seat-scoped AICOS: the target is the agent occupying the seat, the transcript is keyed by tenant, user, purpose, and target agent, and the same user can keep separate active threads for different agents. Owners and admins can read direct-agent transcripts for the tenant, and a human occupying the agent seat's Steward seat can read the transcript; unrelated members cannot. New prompts for a target agent enter an agent-scoped queue with a short turn deadline. A second prompt in the same thread coalesces into the pending turn until that turn is claimed, while prompts for another user or another agent keep their own queue position. Direct agent chat never dispatches through \`work_orders\`; scheduled and Forge runner work still use \`work_orders\`.
46815
+
46703
46816
  Cloud and runner submissions carry a stable request ID. Distinct requests that compete while a turn is active receive HTTP \`409\` with code \`AICOS_TURN_CONFLICT\`; the losing request writes no partial user message and consumes none of its attachments. Runner acquisition commits its user message, execution, attachment links, queued transcript projection, and session snapshot together, so a failed projection leaves none of them half-written. Retrying the same request ID returns the original turn and does not rerun the model, builder, onboarding, or runner-queue side effects, even if the currently selected lane or runner readiness changed after the original submission.
46704
46817
 
46705
46818
  When a runner claims an interactive AICOS turn, the runner reports start and final result back to {{brand}}. The turn row records claim/start/finish timing, terminal reason, model label, and token counts when the runner or cloud path provides them. The server appends exactly one assistant transcript message for the result, links that message to run evidence, and treats duplicate or late result reports as idempotent. If the runner answer includes a validated in-app link, the web panel can surface the same consent-required navigation suggestion once polling sees that the pending turn is terminal. If a queued, claimed, or running interactive turn passes its short deadline before a runner writes back, the turn is marked offline and the transcript receives a terminal assistant message instead of leaving a permanent "queued" placeholder.
@@ -47605,7 +47718,7 @@ External connectors are being rolled out provider by provider, conservatively (r
47605
47718
  order: 48,
47606
47719
  title: "CLI and MCP installation guide",
47607
47720
  summary: "Install the public CLI, register remote token-backed MCP clients, and find the full command and tool catalog.",
47608
- version: "2026-07-14.1",
47721
+ version: "2026-07-15.1",
47609
47722
  public: true,
47610
47723
  audiences: ["human", "cli", "mcp", "in_app_agent"],
47611
47724
  stages: ["company_setup", "staffing"],
@@ -48193,6 +48306,7 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
48193
48306
  | \`rost_assign_user_to_seat\` | \`staffing.assign_user\` | Assign a human user occupancy to a seat. | Seat or tenant-admin | Call with \`seat_id\` and \`user_id\`. |
48194
48307
  | \`rost_assign_dry_run_agent_to_seat\` | \`staffing.assign_agent_dry_run\` | Assign an agent occupancy in dry-run mode. | Seat or tenant-admin | Call only after Steward chain is clear. |
48195
48308
  | \`rost_staff_seat\` | \`staffing.assign\` | Compatibility helper for human, agent, or hybrid staffing. | Seat or tenant-admin | Call with \`seat_id\` and \`occupant\`. |
48309
+ | \`rost_import_agent_definition\` | \`agent.import_definition\` | Import a strict, versioned agent definition into a canonical draft Seat/setup without credentials, placement ids, or go-live side effects. | Tenant | Human-gated; call with \`definition_json\` and optional \`idempotency_key\`. Review the resulting draft setup before tools, dry run, or go-live. |
48196
48310
  | \`rost_go_live\` | \`agent.go_live\` | Promote a dry-run agent seat to live. | Seat or tenant-admin | Call after human approval. |
48197
48311
  | \`rost_create_mcp_token\` | \`mcp_token.create\` | Mint a tenant-admin or seat-scoped MCP token. | Tenant | Prefer \`{{cli}} mcp install\` for users. |
48198
48312
  | \`rost_revoke_mcp_token\` | \`mcp_token.revoke\` | Revoke an MCP token immediately. | Tenant | Call with \`token_id\`. |
@@ -48751,7 +48865,7 @@ Set \`ROST_SKILL_INSTALL_ROOT\` only for a sandbox or CI override. Local copies
48751
48865
  order: 55,
48752
48866
  title: "Agent reference map",
48753
48867
  summary: "Where CLI sessions, MCP clients, and in-app agents should retrieve {{brand}} guidance before recommending setup changes.",
48754
- version: "2026-06-27.2",
48868
+ version: "2026-07-15.1",
48755
48869
  public: true,
48756
48870
  audiences: ["cli", "mcp", "in_app_agent"],
48757
48871
  stages: ["company_setup", "graph_design", "charter_design", "staffing", "operating_rhythm"],
@@ -48823,21 +48937,22 @@ Agents that run on {{brand}}-managed inference draw against a tenant inference b
48823
48937
  8. add-agents-guide
48824
48938
  9. custom-agents-guide
48825
48939
  10. agent-builder-guide
48826
- 11. how-agents-work
48827
- 12. tool-access-and-vault
48828
- 13. available-tools-guide
48829
- 14. mcp-and-cli-guide
48830
- 15. skill-builder-guide
48831
- 16. agent-skill-authoring-guide
48832
- 17. agent-skill-setup-guide
48833
- 18. ai-model-data-handling-guide
48834
- 19. cascade-guide
48835
- 20. signal-guide
48836
- 21. friction-guide
48837
- 22. confirmations-guide
48838
- 23. steward-queue-guide
48839
- 24. sync-rhythm-playbook
48840
- 25. billing-and-pricing-guide
48940
+ 11. agent-definition-import-guide
48941
+ 12. how-agents-work
48942
+ 13. tool-access-and-vault
48943
+ 14. available-tools-guide
48944
+ 15. mcp-and-cli-guide
48945
+ 16. skill-builder-guide
48946
+ 17. agent-skill-authoring-guide
48947
+ 18. agent-skill-setup-guide
48948
+ 19. ai-model-data-handling-guide
48949
+ 20. cascade-guide
48950
+ 21. signal-guide
48951
+ 22. friction-guide
48952
+ 23. confirmations-guide
48953
+ 24. steward-queue-guide
48954
+ 25. sync-rhythm-playbook
48955
+ 26. billing-and-pricing-guide
48841
48956
 
48842
48957
  ## Workflow to guide map
48843
48958
 
@@ -48852,6 +48967,7 @@ Read the listed guide before recommending or running each workflow. Every workfl
48852
48967
  - Add an agent through the app (graph or sidebar, visual journey): add-agents-guide.
48853
48968
  - Create an agent from a template: stock-agents-guide, then how-agents-work.
48854
48969
  - Create a custom agent (operational answers, Charter Builder, configure tools, dry run, go live): custom-agents-guide, then agent-staffing-playbook and tool-access-and-vault.
48970
+ - Import a versioned agent definition file: agent-definition-import-guide, then agent-staffing-playbook and tool-access-and-vault.
48855
48971
  - Create, import, review, or publish a reusable Skill: skill-builder-guide for human workflow, then agent-skill-authoring-guide for CLI/MCP authoring rules.
48856
48972
  - Assign, dependency-check, enable a catalog Skill, import a GitHub Skill, or sync local Skill files: agent-skill-setup-guide, then mcp-and-cli-guide.
48857
48973
  - Explain AI model data handling, BYOK, local agent provider settings, or what data may enter prompts/tool calls: ai-model-data-handling-guide, then security-model-guide.
@@ -48872,7 +48988,7 @@ Read the listed guide before recommending or running each workflow. Every workfl
48872
48988
  - Company setup: rost-implementation-method, compass-authoring-guide, aicos-chat-guide, settings-guide, settings-members-and-invites-guide
48873
48989
  - Graph design: responsibility-graph-playbook
48874
48990
  - Charter design: charter-design-playbook, charter-authoring-deep-dive
48875
- - Staffing: agent-staffing-playbook, add-agents-guide, custom-agents-guide, agent-builder-guide, how-agents-work, tool-access-and-vault, available-tools-guide, skill-builder-guide, agent-skill-authoring-guide, agent-skill-setup-guide, mcp-and-cli-guide, stock-agents-guide
48991
+ - Staffing: agent-staffing-playbook, add-agents-guide, custom-agents-guide, agent-builder-guide, agent-definition-import-guide, how-agents-work, tool-access-and-vault, available-tools-guide, skill-builder-guide, agent-skill-authoring-guide, agent-skill-setup-guide, mcp-and-cli-guide, stock-agents-guide
48876
48992
  - Operating rhythm: aicos-chat-guide, cascade-guide, signal-guide, friction-guide, confirmations-guide, steward-queue-guide, sync-rhythm-playbook, notifications-guide
48877
48993
  - Local agents and runners: mcp-and-cli-guide, runner-guide, agent-reference-map
48878
48994
  - Security and troubleshooting: ai-model-data-handling-guide, security-model-guide, troubleshooting-guide
@@ -49258,7 +49374,7 @@ Keep agent scope tight at first. Approve more autonomy only after evidence. Use
49258
49374
  order: 71,
49259
49375
  title: "Confirmations and human gates guide",
49260
49376
  summary: "How {{brand}} routes authority-changing work through human confirmation, and why agents never approve their own requests.",
49261
- version: "2026-07-14.1",
49377
+ version: "2026-07-14.2",
49262
49378
  public: true,
49263
49379
  audiences: ["human", "cli", "mcp", "in_app_agent"],
49264
49380
  stages: ["graph_design", "charter_design", "staffing", "operating_rhythm"],
@@ -49297,6 +49413,8 @@ When an **agent** triggers a gate, {{brand}} also notifies the seat's steward (S
49297
49413
 
49298
49414
  Approval replays are validated again before execution. If the stored confirmation input no longer matches the original command schema, the approval fails without consuming the pending confirmation or running the durable command; reject it and re-issue the gated action from the current product surface.
49299
49415
 
49416
+ A held tool call actuates the same way regardless of which command backs it \u2014 a connector write (like \`gmail.send\`) and a durable command (like \`task.create\`) both replay through the same governed command executor on approval: re-checked against the live permission manifest, reserved so a second approval or replay can never double-actuate, and audited with a fresh \`tool_calls\` row. Resolving the escalation that raised the hold \u2014 over the CLI, MCP, or \`/approvals\` \u2014 actuates identically; none of those paths silently drops the held action once a human approves it.
49417
+
49300
49418
  \`\`\`bash
49301
49419
  # Human approves a pending confirmation
49302
49420
  {{cli}} command confirmation.approve --json '{"confirmation_id":"<confirmation-id>"}'
@@ -50721,6 +50839,72 @@ The Charter you submit for an agent seat is the full Charter document (see the c
50721
50839
  ## Show your human a review
50722
50840
 
50723
50841
  When you have built the setup, render a clean markdown card for your human before go-live: \`{{cli}} agent show --seat-id <id> --markdown\` (or \`{{cli}} charter show --seat-id <id> --markdown\` / \`{{cli}} compass show --markdown\`). The card composes the setup, model, steward, tools, and Charter into one skimmable readout. Then surface the go-live for a human to approve \u2014 go-live is human-gated and a seat token never goes live on its own setup.`
50842
+ },
50843
+ {
50844
+ slug: "agent-definition-import-guide",
50845
+ order: 44,
50846
+ title: "Agent definition import guide",
50847
+ summary: "The strict versioned JSON format for importing an agent as a draft Seat/setup without credentials, placement ids, or go-live side effects.",
50848
+ version: "2026-07-15.1",
50849
+ public: true,
50850
+ audiences: ["human", "cli", "mcp", "in_app_agent"],
50851
+ stages: ["staffing", "charter_design"],
50852
+ relatedCommandIds: ["agent.import_definition", "agent.create_custom", "agent_setup.get", "agent.configure_tools"],
50853
+ legal: {
50854
+ publicRisk: "low",
50855
+ notes: [
50856
+ "Documents a ROST-native import contract only.",
50857
+ "Explicitly excludes credentials and tenant-local identifiers from the import file."
50858
+ ]
50859
+ },
50860
+ sources: [
50861
+ {
50862
+ label: "Agent definition import spec",
50863
+ internalPath: "docs/specs/agent-definition-import.md",
50864
+ note: "Internal source for the versioned import JSON example and safety rules."
50865
+ }
50866
+ ],
50867
+ body: `# Agent definition import guide
50868
+
50869
+ Use \`agent.import_definition\` when you already have a bounded agent description and want to turn it into a draft {{brand}} agent setup. Import is a starting point, not go-live.
50870
+
50871
+ The command creates a draft agent Seat, starts the canonical setup flow, maps the definition into operational answers, and returns \`agent_setup.get\` state. It does not sign the Charter, grant tools, store credentials, run a dry run, or approve go-live.
50872
+
50873
+ ## Safety rules
50874
+
50875
+ - The file must use \`"format": "rost.agent_definition"\` and \`"version": 1\`.
50876
+ - Unknown fields are rejected.
50877
+ - Credentials, vault refs, API keys, tokens, tenant ids, Seat ids, parent ids, steward ids, and integration ids are rejected.
50878
+ - Secret-shaped string values are rejected even when they appear in otherwise allowed fields.
50879
+ - Requested tools are review context only. Grants and credential ingress still happen through setup.
50880
+ - Placement is server-side. The import file cannot choose a parent Seat or Steward.
50881
+
50882
+ ## Example
50883
+
50884
+ \`\`\`json
50885
+ {
50886
+ "format": "rost.agent_definition",
50887
+ "version": 1,
50888
+ "agent": {
50889
+ "name": "Customer Follow-up Agent",
50890
+ "purpose": "Prepare account follow-ups for steward review.",
50891
+ "responsibilities": ["Summarize recent customer signals", "Draft follow-up tasks"],
50892
+ "success_criteria": ["Stewards receive concise weekly follow-up drafts"],
50893
+ "never_do_alone": ["Send external customer messages", "Change billing or credentials"],
50894
+ "lane": "cloud",
50895
+ "model_tier": "balanced",
50896
+ "requested_tools": [
50897
+ {
50898
+ "capability_id": "google.gmail.read",
50899
+ "access": "read",
50900
+ "rationale": "Read recent customer context"
50901
+ }
50902
+ ]
50903
+ }
50904
+ }
50905
+ \`\`\`
50906
+
50907
+ After import, continue from the draft Seat page. Review the Charter, choose a Steward, configure tools and connections, sign the manifest, run a dry run, and approve go-live only when the human review is complete.`
50724
50908
  }
50725
50909
  ];
50726
50910
 
@@ -51569,6 +51753,7 @@ var COMMAND_MANIFEST = [
51569
51753
  { "id": "agent.fleet_digest", "namespace": "agent", "action": "fleet_digest", "title": "Get dogfood fleet health digest", "description": "Return a daily tenant fleet health digest with live/idle state, run counts, spend, failed runs, unresolved product errors, notification errors, and next actions.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "window_hours", "flag": "window-hours", "type": "integer", "required": false }, { "name": "error_limit", "flag": "error-limit", "type": "integer", "required": false }], "hasComplexInput": false, "help": "Capture a daily dogfood fleet health digest with fleet state, run counts, spend, failed runs, unresolved errors, failed notifications, and next actions." },
51570
51754
  { "id": "agent.get_run", "namespace": "agent", "action": "get_run", "title": "Get agent run diagnostics", "description": "Return one seat run's diagnostic record: run status, transcript reference, token/cost usage, outcome, and linked product-visible run errors.", "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 }, { "name": "transcript", "flag": "transcript", "type": "boolean", "required": false }], "hasComplexInput": false, "help": "Read one run's diagnostic record, transcript reference, token/cost usage, outcome, and linked product-visible errors." },
51571
51755
  { "id": "agent.go_live", "namespace": "agent", "action": "go_live", "title": "Go live", "description": "Promote a dry-run agent seat to live after the human approval gate.", "requiredScope": "seat", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }, { "name": "charter_version_id", "flag": "charter-version-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Move an agent live only after dry-run evidence, signed permissions, and a human Steward chain are clear.", "example": { "seat_id": "0190aaaa-aaaa-7aaa-8aaa-aaaaaaaaaaaa", "charter_version_id": "0190cccc-cccc-7ccc-8ccc-cccccccccccc" } },
51756
+ { "id": "agent.import_definition", "namespace": "agent", "action": "import_definition", "title": "Import agent definition", "description": "Import a versioned ROST agent definition into a canonical draft Seat and setup state without credentials, placement identifiers, or go-live side effects.", "requiredScope": "tenant", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "definition_json", "flag": "definition-json", "type": "string", "required": true }, { "name": "idempotency_key", "flag": "idempotency-key", "type": "string", "required": false }], "hasComplexInput": false, "help": "Import a strict, versioned ROST agent definition into a canonical draft Seat/setup. The file cannot carry credentials or tenant-local placement ids; tools remain proposal-only until reviewed through setup." },
51572
51757
  { "id": "agent.list_fleet", "namespace": "agent", "action": "list_fleet", "title": "List agent fleet", "description": "Return every agent-occupied seat with lane, live state, last real turn, recent turn counts, top measurable status, open escalations, and 7-day real-run spend.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [], "hasComplexInput": false, "help": "Read every agent-occupied seat at once: lane, live state, last real turn, 24h/7d turns, measurable status, escalations, and spend." },
51573
51758
  { "id": "agent.list_runs", "namespace": "agent", "action": "list_runs", "title": "List agent runs", "description": "Return a seat's agent run history (status, lane, model, cost, per-run tool-call and guard-denial counts) plus the seat's run/tool-call rollup with held-action count.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }, { "name": "limit", "flag": "limit", "type": "integer", "required": false }], "hasComplexInput": false, "help": "Audit a seat's agent run history with per-run tool-call and guard-held counts (the Trust Card)." },
51574
51759
  { "id": "agent.list_tool_calls", "namespace": "agent", "action": "list_tool_calls", "title": "List agent tool calls", "description": "Return a seat's tool-call ledger (tool name, guard result, manifest clause, outcome) with the held-action count as the hero metric. Pass held_only to return only guard-held calls. 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": "limit", "flag": "limit", "type": "integer", "required": false }, { "name": "held_only", "flag": "held-only", "type": "boolean", "required": false }], "hasComplexInput": false, "help": "Audit a seat's tool-call ledger with each call's guard result; held actions are the hero metric." },
@@ -51588,7 +51773,7 @@ var COMMAND_MANIFEST = [
51588
51773
  { "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 and audited.", "requiredScope": "tenant_admin", "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": false, "help": "Owner-only update for AICOS cloud managed/BYOK and runner Claude/Codex preferences; BYOK requires an active tenant Anthropic key." },
51589
51774
  { "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." },
51590
51775
  { "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." },
51591
- { "id": "charter.approve", "namespace": "charter", "action": "approve", "title": "Approve charter", "description": "Approve a draft Charter as a human owner.", "requiredScope": "seat", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": false }, { "name": "charter_version_id", "flag": "charter-version-id", "type": "string", "required": false }, { "name": "apply_seat_type", "flag": "apply-seat-type", "type": "boolean", "required": false }], "hasComplexInput": true, "help": "Charter approval is a human decision that activates the seat's operating contract." },
51776
+ { "id": "charter.approve", "namespace": "charter", "action": "approve", "title": "Approve charter", "description": "Approve a draft Charter as a human owner.", "requiredScope": "seat", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": false }, { "name": "charter_version_id", "flag": "charter-version-id", "type": "string", "required": false }, { "name": "expected_edit_revision", "flag": "expected-edit-revision", "type": "integer", "required": false }, { "name": "apply_seat_type", "flag": "apply-seat-type", "type": "boolean", "required": false }], "hasComplexInput": true, "help": "Charter approval is a human decision that activates the seat's operating contract." },
51592
51777
  { "id": "charter.draft", "namespace": "charter", "action": "draft", "title": "Draft charter", "description": "Create or fetch a draft Charter for a seat.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Draft Charters that define purpose, responsibilities, decision authority, measurables, tools, budget, and escalation; the charter authoring deep-dive shows what good looks like per field." },
51593
51778
  { "id": "charter.draft_all", "namespace": "charter", "action": "draft_all", "title": "Draft all charters", "description": "Draft Charters for every eligible seat in a tenant.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [], "hasComplexInput": false, "help": "Draft Charters in onboarding order after the Responsibility Graph has enough seat clarity.", "example": {} },
51594
51779
  { "id": "charter.get", "namespace": "charter", "action": "get", "title": "Get Charter", "description": "Return a Charter version with its supersession history and latest dry-run status.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "charter_version_id", "flag": "charter-version-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Read a Charter with its supersession history and dry-run status before approving or signing a manifest." },
@@ -51597,7 +51782,7 @@ var COMMAND_MANIFEST = [
51597
51782
  { "id": "charter.show_markdown", "namespace": "charter", "action": "show_markdown", "title": "Show Charter as markdown", "description": "Compose a seat's active or latest Charter into a clean, human-skimmable markdown card for review.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Render a seat's active or latest Charter as a clean markdown card to show your human a quick review." },
51598
51783
  { "id": "charter.sign_manifest", "namespace": "charter", "action": "sign_manifest", "title": "Sign charter manifest", "description": "Request human confirmation for a Charter permission manifest.", "requiredScope": "seat", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "charter_version_id", "flag": "charter-version-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Sign tool manifests only when the Charter explains why the tool is needed and how it is bounded." },
51599
51784
  { "id": "charter.skip", "namespace": "charter", "action": "skip", "title": "Skip charter draft", "description": "Mark a draft Charter as skipped.", "requiredScope": "seat", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "charter_version_id", "flag": "charter-version-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Skip a Charter only when the seat is intentionally out of scope for the current onboarding pass." },
51600
- { "id": "charter.update_draft", "namespace": "charter", "action": "update_draft", "title": "Update charter draft", "description": "Update a draft Charter document.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "charter_version_id", "flag": "charter-version-id", "type": "string", "required": true }], "hasComplexInput": true, "help": "Submit the full Charter document directly (purpose, decision_authority, escalation_rules, measurables, budget, permission_manifest); read the charter authoring deep-dive for what good looks like per field. Durable authority changes still need human approval.", "example": { "charter_version_id": "0190cccc-cccc-7ccc-8ccc-cccccccccccc", "doc": { "payload_version": 1, "purpose": "AP intake clerk: draft accounts-payable invoice entries from inbound vendor emails for human review.", "accountabilities": [{ "title": "Draft every inbound invoice", "description": "Convert each inbound vendor invoice into a draft AP entry with the correct vendor, amount, and GL coding within one business day." }, { "title": "Flag discrepancies", "description": "Surface duplicate, mismatched, or out-of-policy invoices as Friction issues instead of drafting them silently." }], "decision_authority": { "autonomous": [{ "action": "Draft AP entries and propose GL coding from inbound invoices", "condition": "Allowed when the vendor is known and the amount is within the standard purchase range.", "rationale": "Drafting is reversible and reviewed by a human before posting.", "unanswered_boundary": false }], "approval": [{ "action": "Post an invoice or send any vendor-facing message", "condition": "Require explicit human approval before posting or sending.", "rationale": "Posting and sending are durable, money-moving actions.", "unanswered_boundary": false }], "escalate": [{ "action": "Unknown vendor, payment over the approval threshold, or a suspected duplicate", "condition": "Always escalate to the Steward before acting.", "rationale": "Conservative default for ambiguous, irreversible, or financial exposure.", "unanswered_boundary": true }] }, "escalation_rules": ["Escalate any invoice over $5,000 or from a vendor not already in the ledger.", "Escalate when an invoice appears to duplicate one already drafted or posted."], "measurables": [{ "name": "Invoices drafted within one business day", "target": "100%", "cadence": "weekly", "source": "agent" }, { "name": "Discrepancies caught before posting", "target": "\u2265 95%", "cadence": "monthly", "source": "human" }], "permission_manifest": [{ "tool": "ap.invoices.read", "scope": "Read inbound invoices and the vendor ledger.", "granted": true, "rationale": "Needed to draft entries from source invoices." }, { "tool": "email.draft", "scope": "Draft vendor replies for human review; never send.", "granted": true, "rationale": "Lets the seat prepare clarifications without taking a send action." }], "budget": { "monthly_usd": null, "approval_required_over_usd": 0, "notes": "No autonomous spend; any spend requires Steward approval until a budget is set." }, "unanswered_boundaries": ["Approval threshold for auto-posting", "Vendor onboarding authority"], "seat_type_recommendation": { "recommendation": "agent", "rationale": "The work is high-volume, rule-bound, and fully reviewable, which suits a draft-and-confirm agent under a human Steward.", "confidence": 0.8 } } } },
51785
+ { "id": "charter.update_draft", "namespace": "charter", "action": "update_draft", "title": "Update charter draft", "description": "Update a draft Charter document.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "charter_version_id", "flag": "charter-version-id", "type": "string", "required": true }, { "name": "expected_edit_revision", "flag": "expected-edit-revision", "type": "integer", "required": false }], "hasComplexInput": true, "help": "Submit the full Charter document directly (purpose, decision_authority, escalation_rules, measurables, budget, permission_manifest); read the charter authoring deep-dive for what good looks like per field. Durable authority changes still need human approval.", "example": { "charter_version_id": "0190cccc-cccc-7ccc-8ccc-cccccccccccc", "doc": { "payload_version": 1, "purpose": "AP intake clerk: draft accounts-payable invoice entries from inbound vendor emails for human review.", "accountabilities": [{ "title": "Draft every inbound invoice", "description": "Convert each inbound vendor invoice into a draft AP entry with the correct vendor, amount, and GL coding within one business day." }, { "title": "Flag discrepancies", "description": "Surface duplicate, mismatched, or out-of-policy invoices as Friction issues instead of drafting them silently." }], "decision_authority": { "autonomous": [{ "action": "Draft AP entries and propose GL coding from inbound invoices", "condition": "Allowed when the vendor is known and the amount is within the standard purchase range.", "rationale": "Drafting is reversible and reviewed by a human before posting.", "unanswered_boundary": false }], "approval": [{ "action": "Post an invoice or send any vendor-facing message", "condition": "Require explicit human approval before posting or sending.", "rationale": "Posting and sending are durable, money-moving actions.", "unanswered_boundary": false }], "escalate": [{ "action": "Unknown vendor, payment over the approval threshold, or a suspected duplicate", "condition": "Always escalate to the Steward before acting.", "rationale": "Conservative default for ambiguous, irreversible, or financial exposure.", "unanswered_boundary": true }] }, "escalation_rules": ["Escalate any invoice over $5,000 or from a vendor not already in the ledger.", "Escalate when an invoice appears to duplicate one already drafted or posted."], "measurables": [{ "name": "Invoices drafted within one business day", "target": "100%", "cadence": "weekly", "source": "agent" }, { "name": "Discrepancies caught before posting", "target": "\u2265 95%", "cadence": "monthly", "source": "human" }], "permission_manifest": [{ "tool": "ap.invoices.read", "scope": "Read inbound invoices and the vendor ledger.", "granted": true, "rationale": "Needed to draft entries from source invoices." }, { "tool": "email.draft", "scope": "Draft vendor replies for human review; never send.", "granted": true, "rationale": "Lets the seat prepare clarifications without taking a send action." }], "budget": { "monthly_usd": null, "approval_required_over_usd": 0, "notes": "No autonomous spend; any spend requires Steward approval until a budget is set." }, "unanswered_boundaries": ["Approval threshold for auto-posting", "Vendor onboarding authority"], "seat_type_recommendation": { "recommendation": "agent", "rationale": "The work is high-volume, rule-bound, and fully reviewable, which suits a draft-and-confirm agent under a human Steward.", "confidence": 0.8 } } } },
51601
51786
  { "id": "coach.draft_guide", "namespace": "coach", "action": "draft_guide", "title": "Draft accountability discussion guide", "description": "Draft a private discussion guide for the accountable human about a seat's commitment pattern. Read-only and human-only \u2014 it is never delivered, sent, or written to the coached person's record.", "requiredScope": "tenant_admin", "confirmation": "none", "exposeOverMcp": false, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Draft a private accountability discussion guide for the accountable human from a seat's commitment pattern. Never delivered or written to the coached person's record." },
51602
51787
  { "id": "command.describe", "namespace": "command", "action": "describe", "title": "Describe command", "description": "Return a command's exact input/output JSON Schema, scope, confirmation gate, help pointer, guides, a validated example, and related commands. Run this before calling a mutating command.", "requiredScope": "user", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "id", "flag": "id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Run command.describe before calling a mutating command to read its exact input/output schema and a worked example; on a failure, read the error's help field and run the command it names." },
51603
51788
  { "id": "command.list", "namespace": "command", "action": "list", "title": "List commands", "description": "List every callable command id with its title, required scope, confirmation gate, and onboarding stages. Use 'command.describe' for a single command's full contract.", "requiredScope": "user", "confirmation": "none", "exposeOverMcp": true, "fields": [], "hasComplexInput": false, "help": "List the callable command surface, then use command.describe for the exact contract of the one you need." },