@rosthq/cli 0.5.8 → 0.5.10

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
@@ -41785,11 +41785,11 @@ Drafting can be assisted by agents. Activation is a human decision. When authori
41785
41785
  order: 40,
41786
41786
  title: "Agent staffing playbook",
41787
41787
  summary: "How to decide whether a seat should be human, agent, or hybrid, and how to go live safely.",
41788
- version: "2026-06-19.1",
41788
+ version: "2026-06-19.2",
41789
41789
  public: true,
41790
41790
  audiences: ["human", "cli", "mcp", "in_app_agent"],
41791
41791
  stages: ["staffing"],
41792
- relatedCommandIds: ["staffing.assign_user", "staffing.assign_agent_dry_run", "agent.go_live", "agent.status", "agent.run_now", "agent.list_runs", "agent.list_tool_calls", "mcp_token.create", "agent_template.list", "agent.create_from_template", "agent_setup.start", "agent_setup.get", "agent_setup.update", "agent.update_schedule", "agent.decommission", "agent.create_custom", "agent.configure_tools", "agent.run_dry_run", "confirmation.approve"],
41792
+ relatedCommandIds: ["staffing.assign_user", "staffing.assign_agent_dry_run", "agent.go_live", "agent.status", "agent.run_now", "agent.get_run", "agent.list_runs", "agent.list_tool_calls", "mcp_token.create", "agent_template.list", "agent.create_from_template", "agent_setup.start", "agent_setup.get", "agent_setup.update", "agent.update_schedule", "agent.decommission", "agent.create_custom", "agent.configure_tools", "agent.run_dry_run", "confirmation.approve"],
41793
41793
  legal: {
41794
41794
  publicRisk: "low",
41795
41795
  notes: [
@@ -41844,7 +41844,7 @@ Two creation paths, both draft-first. Read the stock-agents guide for templates
41844
41844
  - Custom: \`agent_setup.start\` / \`rost_start_agent_setup\` (returns a \`setup_id\`), iterate with \`agent_setup.get\` and \`agent_setup.update\`, then \`agent.create_custom\` / \`rost_create_custom_agent\`. Stage tools with \`agent.configure_tools\` (vault refs only) and sandbox with \`agent.run_dry_run\`.
41845
41845
  - Inspect runtime: \`agent.status\` / \`rost_get_agent_status\` with \`{"seat_id":"<seat-id>"}\` returns lane, live state, steward chain, dry-run result, and Runner availability.
41846
41846
  - Run on demand: \`{{cli}} agent run-now --seat-id <seat-id>\` / \`agent.run_now\` / \`rost_run_agent_now\` queues an immediate live run without changing the saved schedule. Cloud agents dispatch to the Inngest executor; runner agents queue work for the paired runner. The command is ungated but still requires a live staffed agent and the normal server-side tool guard.
41847
- - Audit what an agent did (Trust Card): \`{{cli}} command agent.list_runs --json '{"seat_id":"<seat-id>"}'\` / \`rost_list_agent_runs\` returns the seat's run history with per-run tool-call and guard-held counts; \`{{cli}} command agent.list_tool_calls --json '{"seat_id":"<seat-id>"}'\` / \`rost_list_agent_tool_calls\` returns the tool-call ledger with each call's guard result. Both include a \`denied_tool_call_count\` rollup \u2014 the actions held because they exceeded the charter. Pass \`{"seat_id":"<seat-id>","held_only":true}\` to \`agent.list_tool_calls\` for only the held calls. The web seat page shows the same facts as a Trust Card.
41847
+ - Audit what an agent did (Trust Card): \`{{cli}} command agent.list_runs --json '{"seat_id":"<seat-id>"}'\` / \`rost_list_agent_runs\` returns the seat's run history with per-run tool-call and guard-held counts; \`{{cli}} agent get-run --seat-id <seat-id> --run-id <run-id>\` / \`agent.get_run\` / \`rost_get_agent_run_diagnostics\` reads one run's transcript reference, token/cost usage, outcome, and product-visible run errors; \`{{cli}} command agent.list_tool_calls --json '{"seat_id":"<seat-id>"}'\` / \`rost_list_agent_tool_calls\` returns the tool-call ledger with each call's guard result. Both list commands include a \`denied_tool_call_count\` rollup \u2014 the actions held because they exceeded the charter. Pass \`{"seat_id":"<seat-id>","held_only":true}\` to \`agent.list_tool_calls\` for only the held calls. The web seat page shows the same facts as a Trust Card.
41848
41848
 
41849
41849
  ## When to stop for confirmation
41850
41850
 
@@ -42084,7 +42084,7 @@ Decisions should be recorded as human decisions. Handoffs should attach to seats
42084
42084
  order: 45,
42085
42085
  title: "How agents work",
42086
42086
  summary: "How {{brand}} agents operate inside seats, use Charters, report work, and escalate beyond authority.",
42087
- version: "2026-06-19.4",
42087
+ version: "2026-06-20.1",
42088
42088
  public: true,
42089
42089
  audiences: ["human", "cli", "mcp", "in_app_agent"],
42090
42090
  stages: ["staffing", "operating_rhythm"],
@@ -42167,18 +42167,20 @@ The model is only ever offered the tools the seat's manifest grants \u2014 a den
42167
42167
  3. The action runs bound to the seat's vaulted credential. The secret stays inside the call and never reaches the result, the audit row, the logs, or the model.
42168
42168
  4. Every call \u2014 allowed, denied, escalated, or invalid \u2014 writes a tool-call audit row you can review.
42169
42169
 
42170
+ Provider requests carry only the model payload the runtime needs; run attribution, tenant attribution, usage, and cost are recorded in {{brand}} audit tables after the call, not sent as custom provider metadata.
42171
+
42170
42172
  Before an agent goes live, the sandbox dry run rehearses this against fake data and returns a per-tool preview: for each tool the agent would touch, whether it would run it, would be blocked, or would escalate \u2014 no external side effect. Review that preview before you approve go-live.
42171
42173
 
42172
42174
  ## What humans should review
42173
42175
 
42174
- Review the first dry runs, fleet overview, tool-call audit rows, escalations, and Signal impact. The fleet view at \`/agents\` shows every staffed agent seat at a glance; the agent-native equivalent is \`{{cli}} command agent.list_fleet --json '{}'\` / \`rost_list_agent_fleet\`, which returns lane, live state, last real turn, 24h/7d real turns, top measurable status, open escalations, and 7-day spend. Sandbox dry runs do not count as real turns. If the agent is repeatedly blocked, revise the Charter or split the seat. If the agent is taking too much judgment, narrow its autonomous scope.`
42176
+ Review the first dry runs, fleet overview, tool-call audit rows, escalations, and Signal impact. The fleet view at \`/agents\` shows every staffed agent seat at a glance; the agent-native equivalent is \`{{cli}} command agent.list_fleet --json '{}'\` / \`rost_list_agent_fleet\`, which returns lane, live state, last real turn, 24h/7d real turns, top measurable status, open escalations, and 7-day spend. Fleet real-turn counts use the same seat-run association as \`agent.list_runs\`, filtered to real runs. Scheduled agents are checked in rounded five-minute buckets, so a minute-level cron inside the bucket queues one work order for that bucket rather than one order per minute. Sandbox dry runs do not count as real turns. If the agent is repeatedly blocked, revise the Charter or split the seat. If the agent is taking too much judgment, narrow its autonomous scope.`
42175
42177
  },
42176
42178
  {
42177
42179
  slug: "tool-access-and-vault",
42178
42180
  order: 46,
42179
42181
  title: "Tool access and vault",
42180
42182
  summary: "How to give agents access to tools without exposing raw credentials or expanding authority by accident.",
42181
- version: "2026-06-19.2",
42183
+ version: "2026-06-20.1",
42182
42184
  public: true,
42183
42185
  audiences: ["human", "cli", "mcp", "in_app_agent"],
42184
42186
  stages: ["staffing"],
@@ -42222,6 +42224,10 @@ Connecting a tool is a human-controlled step. The agent can recommend a tool, ex
42222
42224
 
42223
42225
  For an API with no dedicated connector, the generic REST tool lets a seat call an HTTP endpoint with a credential you paste through the vault \u2014 no {{brand}}-owned app. It is escalate-by-default: the agent may only call a host a steward has signed onto the allowlist; any other host is refused and escalated, with no request made. The connector sets the Authorization header from the vaulted credential itself \u2014 the agent never sees the token, and the secret is redacted from the response before it reaches the agent, the audit row, or the logs. The token is only ever sent over HTTPS, only to the signed host, and a redirect is never followed \u2014 so an allowlisted endpoint cannot bounce the call (and the token) to another host. A sandbox dry run of a REST tool makes no real request.
42224
42226
 
42227
+ ## Slack post connector
42228
+
42229
+ \`slack.post_message\` reuses the connected Slack workspace credential and the seat's Slack channel binding. A live call posts only to that bound channel, through the server-side guard and vault-bound bot token. If the bound channel is marked sensitive, the handler escalates for human approval instead of posting. A sandbox dry run makes no Slack request and does not open the vault.
42230
+
42225
42231
  ## One write-only credential flow across every surface
42226
42232
 
42227
42233
  There is exactly one way to give a connected tool its credential, and it is the same on every surface (agent setup, Charter Builder, CLI, MCP). Connecting a tool only authorizes the access \u2014 it never captures a secret. When a connected tool needs a credential, you stage a vault-backed *request* (provider, scope, and a credential name \u2014 all labels, never the secret). You then provide the actual secret separately through the vault-backed ingress flow from Settings. No {{brand}} surface ever has a field that accepts raw secret material, so a secret can never reach a prompt, log, event, or tool argument.
@@ -42250,7 +42256,7 @@ There is exactly one way to give a connected tool its credential, and it is the
42250
42256
  order: 47,
42251
42257
  title: "Available tools guide",
42252
42258
  summary: "How to think about tool categories available to seats and what each category should be used for.",
42253
- version: "2026-06-18.1",
42259
+ version: "2026-06-20.1",
42254
42260
  public: true,
42255
42261
  audiences: ["human", "cli", "mcp", "in_app_agent"],
42256
42262
  stages: ["staffing"],
@@ -42292,14 +42298,14 @@ Agents should explain the job, the required tool category, the minimum permissio
42292
42298
 
42293
42299
  Every tool call passes the server-side guard first: the guard checks the call against the seat's signed permission manifest and records a tool-call audit row for **every** call \u2014 allowed, denied, or escalated. Tool selection is never authorization. Only an allowed call reaches its handler. A connected credential is bound into the handler for the duration of the call only; the secret never appears in the result, the audit summary, logs, or the model's context.
42294
42300
 
42295
- External connectors (such as email, drive, or a generic API) are being rolled out provider by provider, conservatively (read and draft before send; write behind approval). Until a provider's connector is live, a tool you select is configuration only and has no external side effect \u2014 the guard and audit trail are already in force, so nothing runs silently.`
42301
+ External connectors are being rolled out provider by provider, conservatively (read and draft before send; write behind approval). A selected tool is only a permission until a live handler exists and the seat has the required credential or binding. Today the built-in execution path supports internal status reporting, the generic REST connector when a signed allowlist and credential exist, and \`slack.post_message\` for a bound Slack channel. Other provider entries remain configuration-only until their connector ships, so nothing runs silently.`
42296
42302
  },
42297
42303
  {
42298
42304
  slug: "mcp-and-cli-guide",
42299
42305
  order: 48,
42300
42306
  title: "CLI and MCP installation guide",
42301
42307
  summary: "Install the public CLI, register remote token-backed MCP clients, and find the full command and tool catalog.",
42302
- version: "2026-06-19.3",
42308
+ version: "2026-06-20.2",
42303
42309
  public: true,
42304
42310
  audiences: ["human", "cli", "mcp", "in_app_agent"],
42305
42311
  stages: ["company_setup", "staffing"],
@@ -42335,6 +42341,7 @@ External connectors (such as email, drive, or a generic API) are being rolled ou
42335
42341
  "agent.go_live",
42336
42342
  "agent.status",
42337
42343
  "agent.list_fleet",
42344
+ "agent.get_run",
42338
42345
  "agent.list_runs",
42339
42346
  "agent.list_tool_calls"
42340
42347
  ],
@@ -42709,11 +42716,11 @@ These ergonomic wrappers (including the \`{{cli}} agent\` group) require **{{cli
42709
42716
  | \`{{cli}} escalation list|get|resolve|reject\` | \`escalation.list\`, \`escalation.get\`, \`escalation.resolve\`, \`escalation.reject\` | Work the steward escalation queue. | Steward | \`{{cli}} escalation list --json\` |
42710
42717
  | \`{{cli}} sync brief|compile|complete\` | \`sync.brief.get\`, \`sync.brief.compile\`, \`sync.run.complete\` | Compile, read, and complete a weekly Sync. | Tenant | \`{{cli}} sync brief --json\` |
42711
42718
  | \`{{cli}} runner list|status|work-orders|revoke\` | \`runner.list\`, \`runner.status\`, \`work_order.list\`, \`runner.revoke\` | Inspect runners and work orders; revoke a runner. | Tenant | \`{{cli}} runner list --json\` |
42712
- | \`{{cli}} notification settings|test\` | \`notification.settings.get\`, \`notification.test\` | Read notification settings; send a test. | Tenant | \`{{cli}} notification settings --json\` |
42719
+ | \`{{cli}} notification settings|test|errors\` | \`notification.settings.get\`, \`notification.test\`, \`notification.list_errors\` | Read notification settings, send a test, and list failed deliveries with linked product error source, seat id, and run id when available. | Tenant | \`{{cli}} notification errors --limit 10 --json\` |
42713
42720
  | \`{{cli}} settings get|update\` | \`settings.get\`, \`settings.update\` | Read tenant settings; update budget caps. | Tenant | \`{{cli}} settings get --json\` |
42714
42721
  | \`{{cli}} member invite|update|remove\` | \`member.invite\`, \`member.update\`, \`member.remove\` | Manage tenant members. | Tenant | \`{{cli}} member invite --email ops@example.com --role member\` |
42715
- | \`{{cli}} agent templates|create|setup|tools|dry-run|go-live|status|run-now|show\` | \`agent_template.list\`, \`agent.create_from_template\`, \`agent.create_custom\`, \`agent_setup.get\`, \`agent_setup.update\`, \`agent.configure_tools\`, \`agent.run_dry_run\`, \`agent.go_live\`, \`agent.status\`, \`agent.run_now\`, \`agent.show_markdown\` | Run the full agent setup and operation flow: list templates, create a draft from a template or guided custom answers (with \`--model\` and \`--effort\`), read or answer setup state, connect or decline tools, dry-run, go live, run on demand, and show a markdown readout. Create and go-live stop at human gates; the dry-run is ungated by human approval but requires a signed manifest first. | Tenant and seat | \`{{cli}} agent templates --json\` |
42716
- | \`{{cli}} tools list\` | \`tool.catalog\` | List the discoverable tool catalog the builder reads (id, scope tiers, credential requirement, access policy). Configuration only; the tools do not execute yet. | Tenant | \`{{cli}} tools list --json\` |
42722
+ | \`{{cli}} agent templates|create|setup|tools|dry-run|go-live|status|run-now|get-run|show\` | \`agent_template.list\`, \`agent.create_from_template\`, \`agent.create_custom\`, \`agent_setup.get\`, \`agent_setup.update\`, \`agent.configure_tools\`, \`agent.run_dry_run\`, \`agent.go_live\`, \`agent.status\`, \`agent.run_now\`, \`agent.get_run\`, \`agent.show_markdown\` | Run the full agent setup and operation flow: list templates, create a draft from a template or guided custom answers (with \`--model\` and \`--effort\`), read or answer setup state, connect or decline tools, dry-run, go live, run on demand, read one run's transcript/error diagnostics, and show a markdown readout. Create and go-live stop at human gates; the dry-run is ungated by human approval but requires a signed manifest first. | Tenant and seat | \`{{cli}} agent get-run --seat-id <seat-id> --run-id <run-id> --json\` |
42723
+ | \`{{cli}} tools list\` | \`tool.catalog\` | List the discoverable tool catalog the builder reads (id, scope tiers, credential requirement, access policy, and execution-boundary guidance). | Tenant | \`{{cli}} tools list --json\` |
42717
42724
  | \`{{cli}} compass show\` | \`compass.show_markdown\` | Render the current Compass as a clean markdown card for review. | Tenant | \`{{cli}} compass show --markdown\` |
42718
42725
  | \`{{cli}} charter show\` | \`charter.show_markdown\` | Render a seat's Charter as a clean markdown card for review. | Tenant | \`{{cli}} charter show --seat-id <id> --markdown\` |
42719
42726
 
@@ -42735,7 +42742,7 @@ These ergonomic wrappers (including the \`{{cli}} agent\` group) require **{{cli
42735
42742
  This catalog is the canonical machine surface \u2014 the \`rost_*\` tools your MCP client calls. Three different things are called "tools" in {{brand}}; do not confuse them:
42736
42743
 
42737
42744
  1. **The MCP tools below** \u2014 the \`rost_*\` surface your client actually calls to read and act.
42738
- 2. **\`{{cli}} tools list\` / \`tool.catalog\`** (MCP \`rost_list_tool_catalog\`) \u2014 the agent-configuration catalog the builder reads when staffing an agent. It is selectable per agent and **does not execute yet**; it is not the surface you call to operate.
42745
+ 2. **\`{{cli}} tools list\` / \`tool.catalog\`** (MCP \`rost_list_tool_catalog\`) \u2014 the agent-configuration catalog the builder reads when staffing an agent. It is selectable per agent, but selecting a tool is not itself a call; live handlers execute later only behind the signed manifest, guard, credentials, and bindings.
42739
42746
  3. **The "Available tools guide"** (in the sidebar) \u2014 covers tool *categories* and governance, not a callable surface. See the available-tools-guide.
42740
42747
 
42741
42748
  Sections below: Command discovery (2) \xB7 Public reference (3) \xB7 Tenant-admin tools (grouped by domain) \xB7 Seat-scoped operating tools (9) \xB7 MCP operation resources (9).
@@ -42809,9 +42816,10 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
42809
42816
  | \`rost_get_current_compass\` | \`compass.get_current\` | Read the active and draft Compass versions and source documents. | Tenant | Call with \`{}\`. |
42810
42817
  | \`rost_list_compass_gaps\` | \`compass.list_gaps\` | List unanswered and answered Compass context gaps. | Tenant | Call with \`{}\` before answering gaps. |
42811
42818
  | \`rost_get_agent_status\` | \`agent.status\` | Read agent lane, live state, steward chain, dry-run result, Runner availability. | Seat or tenant-admin | Call with \`{"seat_id":"<seat-id>"}\`. |
42812
- | \`rost_list_agent_fleet\` | \`agent.list_fleet\` | Read every staffed agent seat at once: lane, live state, last real turn, 24h/7d real turns, measurable status, escalations, and 7-day spend. | Tenant | Call with \`{}\`; sandbox dry runs are excluded from real turns. |
42819
+ | \`rost_list_agent_fleet\` | \`agent.list_fleet\` | Read every staffed agent seat at once: lane, live state, last real turn, 24h/7d real turns, measurable status, escalations, and 7-day spend. | Tenant | Call with \`{}\`; counts use the same seat-run association as \`agent.list_runs\`, with sandbox dry runs excluded from real turns. |
42813
42820
  | \`rost_run_agent_now\` | \`agent.run_now\` | Queue an immediate run for a live staffed agent without changing its saved schedule; cloud lane dispatches to the executor and runner lane queues for the paired runner. | Tenant | Call with \`{"seat_id":"<seat-id>"}\`. |
42814
42821
  | \`rost_list_agent_runs\` | \`agent.list_runs\` | Read a seat's agent run history (status, lane, model, cost, per-run tool-call and guard-held counts) plus the seat's run/tool-call rollup including held-action count. | Seat or tenant-admin | Call with \`{"seat_id":"<seat-id>"}\`; pass \`limit\` for a deeper window. |
42822
+ | \`rost_get_agent_run_diagnostics\` | \`agent.get_run\` | Read one run's diagnostic record: transcript reference, token/cost usage, outcome, and linked product-visible run errors. | Seat or tenant-admin | Call with \`{"seat_id":"<seat-id>","run_id":"<run-id>"}\`. |
42815
42823
  | \`rost_list_agent_tool_calls\` | \`agent.list_tool_calls\` | Read a seat's tool-call ledger (tool name, guard result, manifest clause, outcome) with the held-action count as the hero metric. Never returns argument summaries or secret material. | Seat or tenant-admin | Call with \`{"seat_id":"<seat-id>"}\`; pass \`held_only: true\` for only guard-held calls. |
42816
42824
  | \`rost_list_agent_templates\` | \`agent_template.list\` | List stock agent templates and metadata. | Tenant | Call with \`{}\`. |
42817
42825
  | \`rost_create_agent_from_template\` | \`agent.create_from_template\` | Create a draft stock agent and draft Charter from a template (draft-only; occupancy needs a human steward). | Tenant | Call with \`seat_id\` and \`template_slug\`; expect human confirmation. |
@@ -42836,7 +42844,7 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
42836
42844
  | \`rost_get_notification_settings\` | \`notification.settings.get\` | Read tenant notification preferences. | Tenant | Call with \`{}\`. |
42837
42845
  | \`rost_update_notification_settings\` | \`notification.settings.update\` | Update tenant notification preferences. | Tenant | Call with the fields to change. |
42838
42846
  | \`rost_send_test_notification\` | \`notification.test\` | Emit an in-app test notification to the acting human. | Tenant | Call with \`{}\`. |
42839
- | \`rost_list_notification_errors\` | \`notification.list_errors\` | List recent failed notification deliveries. | Tenant | Call with optional \`limit\`. |
42847
+ | \`rost_list_notification_errors\` | \`notification.list_errors\` | List recent failed notification deliveries with linked \`error_log_id\`, source, seat id, and run id when available. | Tenant | Call with optional \`limit\`; \`source=run\` rows can be followed with \`agent.get_run\`. |
42840
42848
  | \`rost_invite_member\` | \`member.invite\` | Create a pending tenant invite for a human teammate. | Tenant | Call with \`email\` and \`role\`. |
42841
42849
  | \`rost_update_member_role\` | \`member.update\` | Change a tenant member's role. | Tenant | Call with \`member_id\` and \`role\`; expect human confirmation. |
42842
42850
  | \`rost_remove_member\` | \`member.remove\` | Remove a tenant member. | Tenant | Call with \`member_id\`; blocked if it would orphan an agent steward chain. |
@@ -42870,7 +42878,7 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
42870
42878
  | \`rost_show_compass_as_markdown\` | \`compass.show_markdown\` | Render the current Compass and its open gaps as a clean markdown card for review. | Tenant | Call with \`{}\`. |
42871
42879
  | \`rost_show_charter_as_markdown\` | \`charter.show_markdown\` | Render a seat's active or latest Charter as a clean markdown card for review. | Tenant | Call with \`{"seat_id":"<seat-id>"}\`. |
42872
42880
  | \`rost_show_agent_setup_as_markdown\` | \`agent.show_markdown\` | Render a seat's agent setup, model, steward, tools, and Charter as a clean markdown card for review. | Tenant | Call with \`{"seat_id":"<seat-id>"}\`. |
42873
- | \`rost_list_tool_catalog\` | \`tool.catalog\` | List the discoverable tool catalog the agent builder reads \u2014 id, prescriptive description, scope tiers, credential requirement, access policy. Configuration only; the tools do not execute yet. | Tenant | Call with \`{}\` or \`{"provider":"google"}\`. |
42881
+ | \`rost_list_tool_catalog\` | \`tool.catalog\` | List the discoverable tool catalog the agent builder reads \u2014 id, prescriptive description, scope tiers, credential requirement, access policy, and execution-boundary guidance. | Tenant | Call with \`{}\` or \`{"provider":"google"}\`. |
42874
42882
 
42875
42883
  ### Seat-scoped operating tools
42876
42884
 
@@ -42928,7 +42936,7 @@ These rows are quick, at-a-glance triage. For deeper auth, tenant, scope, confir
42928
42936
  order: 49,
42929
42937
  title: "Agent reference map",
42930
42938
  summary: "Where CLI sessions, MCP clients, and in-app agents should retrieve {{brand}} guidance before recommending setup changes.",
42931
- version: "2026-06-18.1",
42939
+ version: "2026-06-20.1",
42932
42940
  public: true,
42933
42941
  audiences: ["cli", "mcp", "in_app_agent"],
42934
42942
  stages: ["company_setup", "graph_design", "charter_design", "staffing", "operating_rhythm"],
@@ -42978,7 +42986,7 @@ Never guess a command's JSON shape. Before calling a command that changes state,
42978
42986
 
42979
42987
  - List every callable command: {{cli}} command list (CLI) or rost_list_commands (MCP)
42980
42988
  - Read one command's exact input/output schema, help pointer, and a worked example: {{cli}} command schema <id> (CLI) or rost_describe_command with {"command_id":"<id>"} (MCP)
42981
- - List the tool catalog the agent builder reads (id, scope tiers, credential requirement, access policy \u2014 configuration only; the tools do not execute yet): {{cli}} tools list (CLI) or rost_list_tool_catalog (MCP)
42989
+ - List the tool catalog the agent builder reads (id, scope tiers, credential requirement, access policy, and execution-boundary guidance): {{cli}} tools list (CLI) or rost_list_tool_catalog (MCP)
42982
42990
  - Show a Compass, Charter, or agent setup as a markdown card to review with your human: {{cli}} compass show --markdown, {{cli}} charter show --seat-id <id> --markdown, {{cli}} agent show --seat-id <id> --markdown
42983
42991
 
42984
42992
  When a command fails, the error returns a machine-readable code, a message, and a help field naming the exact command to run next. Read the help field and run the command it points at \u2014 do not retry the same call blindly. A failed precondition (for example a manifest not yet signed, a dry run that has not passed, or the inference budget hard cap reached) returns COMMAND_PRECONDITION_FAILED with a help pointer, not an opaque internal error.
@@ -43021,7 +43029,7 @@ Read the listed guide before recommending or running each workflow. Every workfl
43021
43029
  - Add an agent through the app (graph or sidebar, visual journey): add-agents-guide.
43022
43030
  - Create an agent from a template: stock-agents-guide, then how-agents-work.
43023
43031
  - 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.
43024
- - Build a controlled agent worker directly on the CLI/MCP path (seat, steward, job, boundaries, tools, credentials, model, schedule, dry-run, go-live): agent-builder-guide \u2014 it shows the full setup sequence, the structured model config, the access tiers, and how to discover tools (tool.catalog) and show your human a markdown readout (agent.show_markdown). The tool catalog is configuration the builder reads; the tools do not execute yet.
43032
+ - Build a controlled agent worker directly on the CLI/MCP path (seat, steward, job, boundaries, tools, credentials, model, schedule, dry-run, go-live): agent-builder-guide \u2014 it shows the full setup sequence, the structured model config, the access tiers, how to discover tools (tool.catalog), which connector entries have live execution boundaries, and how to show your human a markdown readout (agent.show_markdown).
43025
43033
  - Connect an existing or local agent to a seat: stock-agents-guide (connect section), then mcp-and-cli-guide and runner-guide.
43026
43034
  - Run the operating loop as a seat (context, tasks, status, escalate): how-agents-work.
43027
43035
  - Track goals: cascade-guide. Track measurables: signal-guide. File and resolve issues, tasks, escalations: friction-guide.
@@ -43453,7 +43461,7 @@ When a user asks to add a person, clarify whether they mean app access, seat occ
43453
43461
  order: 74,
43454
43462
  title: "Notifications guide",
43455
43463
  summary: "How {{brand}} should notify humans about decisions, escalations, stale work, and agent boundaries.",
43456
- version: "2026-06-13.1",
43464
+ version: "2026-06-19.1",
43457
43465
  public: true,
43458
43466
  audiences: ["human", "cli", "mcp", "in_app_agent"],
43459
43467
  stages: ["operating_rhythm"],
@@ -43478,6 +43486,10 @@ Notifications should move decisions to the right human without turning {{brand}}
43478
43486
  - A Friction item needs a decision.
43479
43487
  - A Sync decision creates a handoff.
43480
43488
 
43489
+ ## Diagnose failed deliveries
43490
+
43491
+ \`{{cli}} notification errors --limit 10\` / \`notification.list_errors\` / \`rost_list_notification_errors\` returns recent failed deliveries. When a failed notification links to a product error, it includes \`error_log_id\`, \`source\`, and any linked \`seat_id\` / \`run_id\`; \`source=run\` means the notification is tied to an agent run and can be followed with \`agent.get_run\` for the transcript reference and run errors.
43492
+
43481
43493
  ## Keep notifications useful
43482
43494
 
43483
43495
  Every notification should include the seat, cause, evidence, and requested decision. Avoid status-only messages when no action is needed.`
@@ -44055,7 +44067,7 @@ This worked document **omits** \`unanswered_boundaries\` and \`seat_type_recomme
44055
44067
  order: 43,
44056
44068
  title: "Agent builder guide",
44057
44069
  summary: "The full agent setup sequence on the CLI/MCP path \u2014 seat, steward, job, boundaries, tools, credentials, model, schedule, dry-run, go-live \u2014 with the structured model config and access tiers.",
44058
- version: "2026-06-16.1",
44070
+ version: "2026-06-20.1",
44059
44071
  public: true,
44060
44072
  audiences: ["cli", "mcp", "in_app_agent"],
44061
44073
  stages: ["staffing"],
@@ -44101,7 +44113,7 @@ Building teams of controlled agent workers is the product's core differentiator.
44101
44113
  2. **Steward** \u2014 every agent needs a human steward chain (invariant: no orphan agents). Set \`steward_seat_id\` so the chain resolves to a human; without it the occupancy is blocked.
44102
44114
  3. **Job** \u2014 what the seat owns. On \`agent.create_custom\` this is the operational answers (what it owns, what success looks like, what it must never do alone); for a strong contract, submit the full Charter directly via \`charter.update_draft\` (see the charter-authoring deep-dive).
44103
44115
  4. **Boundaries** \u2014 the Charter's \`decision_authority\` (can-do / must-ask / never / escalate), \`escalation_rules\`, and \`budget\`. Conservative by default: send/spend/irreversible actions are approval-gated or escalated.
44104
- 5. **Tools** \u2014 pick from the discoverable catalog (\`{{cli}} tools list\`); each tool has a default scope tier and access policy. Connect or decline via \`agent.configure_tools\`. **The catalog is configuration the builder reads \u2014 the tools do not execute yet** (real tool execution is a separate, deferred capability).
44116
+ 5. **Tools** \u2014 pick from the discoverable catalog (\`{{cli}} tools list\`); each tool has a default scope tier and access policy. Connect or decline via \`agent.configure_tools\`. Selecting a tool records permission; live handlers execute later only behind the signed manifest, server guard, required credential or binding, and connector-specific approval boundary.
44105
44117
  6. **Credentials** \u2014 a tool that needs access declares a credential-ingress request (provider, scope, secret name). The secret itself flows through the vault-backed ingress command as a vault ref \u2014 never paste a secret into a builder command.
44106
44118
  7. **Operating instructions** \u2014 the runtime composes the agent's context from its Charter; you do not write a system prompt.
44107
44119
  8. **Model** \u2014 select the structured model config (see below).
@@ -45004,6 +45016,17 @@ function optionalValue(parsed, key) {
45004
45016
  const value = parsed.values.get(key);
45005
45017
  return value === void 0 || value.length === 0 ? void 0 : value;
45006
45018
  }
45019
+ function optionalNumber(parsed, key) {
45020
+ const raw = optionalValue(parsed, key);
45021
+ if (raw === void 0) {
45022
+ return void 0;
45023
+ }
45024
+ const parsedNumber = Number(raw);
45025
+ if (!Number.isSafeInteger(parsedNumber)) {
45026
+ throw new UsageError(`--${key} must be an integer.`);
45027
+ }
45028
+ return parsedNumber;
45029
+ }
45007
45030
  function parseNumber(parsed, key, options) {
45008
45031
  const raw = parsed.values.get(key);
45009
45032
  if (raw === void 0 || raw.length === 0) {
@@ -45606,12 +45629,27 @@ var notificationWrapper = (context, args) => dispatch(context, "notification", a
45606
45629
  const record2 = asRecord(output);
45607
45630
  return `Test notification ${field(record2, "notification_id")} (delivered=${field(record2, "delivered")}).`;
45608
45631
  });
45632
+ },
45633
+ errors: (ctx, rest) => {
45634
+ const parsed = parseFlags(rest);
45635
+ const body = withOptional({}, { limit: optionalNumber(parsed, "limit") });
45636
+ return execute(ctx, parsed, "notification.list_errors", body, (output) => {
45637
+ const errors = asArray(asRecord(output).errors);
45638
+ if (errors.length === 0) {
45639
+ return "No failed notification deliveries.";
45640
+ }
45641
+ return errors.map((entry) => {
45642
+ const record2 = asRecord(entry);
45643
+ return `${field(record2, "created_at")} ${field(record2, "channel")} source=${field(record2, "source")} seat=${field(record2, "seat_id")} run=${field(record2, "run_id")} ${field(record2, "error_message")}`;
45644
+ }).join("\n");
45645
+ });
45609
45646
  }
45610
45647
  }, notificationUsage(context.binName));
45611
45648
  function notificationUsage(bin) {
45612
- return `Usage: ${bin} notification settings|test [--json]
45649
+ return `Usage: ${bin} notification settings|test|errors [--json]
45613
45650
  ${bin} notification settings
45614
- ${bin} notification test`;
45651
+ ${bin} notification test
45652
+ ${bin} notification errors [--limit <n>]`;
45615
45653
  }
45616
45654
  var settingsWrapper = (context, args) => dispatch(context, "settings", args, {
45617
45655
  get: (ctx, rest) => {
@@ -45812,6 +45850,21 @@ ${field(record2, "summary")}`;
45812
45850
  return `queued ${field(workOrder, "lane")} work order ${field(workOrder, "id")} for agent ${field(workOrder, "agent_id")} (${field(workOrder, "status")})`;
45813
45851
  });
45814
45852
  },
45853
+ "get-run": (ctx, rest) => {
45854
+ const parsed = parseFlags(rest);
45855
+ const body = {
45856
+ seat_id: requireValue2(parsed, "seat-id"),
45857
+ run_id: requireValue2(parsed, "run-id")
45858
+ };
45859
+ return execute(ctx, parsed, "agent.get_run", body, (output) => {
45860
+ const run2 = asRecord(asRecord(output).run);
45861
+ const errors = asArray(run2.error_logs);
45862
+ const errorLine = errors.length === 0 ? "errors=0" : `errors=${errors.length} first=${field(asRecord(errors[0]), "message")}`;
45863
+ return `run ${field(run2, "run_id")} status=${field(run2, "status")} lane=${field(run2, "lane")} cost=$${field(run2, "cost_usd")}
45864
+ transcript=${field(run2, "transcript_ref")}
45865
+ ${errorLine}`;
45866
+ });
45867
+ },
45815
45868
  // DER-787 (H8): markdown readout for a seat's agent setup. `--markdown` (or
45816
45869
  // default) prints the composed card; `--json` returns the { markdown } object.
45817
45870
  show: (ctx, rest) => {
@@ -45838,7 +45891,7 @@ function agentConfigureTools(ctx, rest, decision) {
45838
45891
  });
45839
45892
  }
45840
45893
  function agentUsage(bin) {
45841
- return `Usage: ${bin} agent templates|create|setup|tools|dry-run|go-live|status|run-now|show [--json]
45894
+ return `Usage: ${bin} agent templates|create|setup|tools|dry-run|go-live|status|run-now|get-run|show [--json]
45842
45895
  ${bin} agent templates
45843
45896
  ${bin} agent create --seat-id <id> --template <slug> [--expected-version <v>]
45844
45897
  ${bin} agent create --seat-id <id> --custom [--steward-seat-id <id>] [--lane cloud|mcp_session|runner] [--model triage|balanced|complex|hardest|<id>] [--effort low|medium|high|xhigh|max] [--owns <text>] [--success <text>] [--never-alone <text>]
@@ -45849,6 +45902,7 @@ function agentUsage(bin) {
45849
45902
  ${bin} agent go-live --seat-id <id> --charter-version-id <id>
45850
45903
  ${bin} agent status --seat-id <id>
45851
45904
  ${bin} agent run-now --seat-id <id> [--task-id <id>]
45905
+ ${bin} agent get-run --seat-id <id> --run-id <id>
45852
45906
  ${bin} agent show --seat-id <id> [--markdown]`;
45853
45907
  }
45854
45908
  function agentSetupUsage(bin) {
@@ -45889,7 +45943,7 @@ ${lines.join("\n")}`;
45889
45943
  }, toolsUsage(context.binName));
45890
45944
  function toolsUsage(bin) {
45891
45945
  return `Usage: ${bin} tools list [--provider <name>] [--json]
45892
- ${bin} tools list \u2014 the discoverable tool catalog the builder reads. Configuration only; the tools do not execute yet.`;
45946
+ ${bin} tools list \u2014 the discoverable tool catalog the builder reads; live handlers execute only behind signed manifests, guards, credentials, and bindings.`;
45893
45947
  }
45894
45948
  var compassWrapper = (context, args) => dispatch(context, "compass", args, {
45895
45949
  show: (ctx, rest) => {
@@ -45987,10 +46041,10 @@ function operationUsageLines(bin) {
45987
46041
  `${bin} escalation list|get|resolve|reject`,
45988
46042
  `${bin} sync brief|compile|complete`,
45989
46043
  `${bin} runner list|status|work-orders|revoke`,
45990
- `${bin} notification settings|test`,
46044
+ `${bin} notification settings|test|errors`,
45991
46045
  `${bin} settings get|update`,
45992
46046
  `${bin} member invite|update|remove`,
45993
- `${bin} agent templates|create|setup|tools|dry-run|go-live|status|run-now|show`,
46047
+ `${bin} agent templates|create|setup|tools|dry-run|go-live|status|run-now|get-run|show`,
45994
46048
  `${bin} tools list`,
45995
46049
  `${bin} compass show`,
45996
46050
  `${bin} charter show`