@rosthq/cli 0.5.13 → 0.5.15
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 +122 -19
- package/dist/index.js.map +2 -2
- package/dist/operations.d.ts +1 -1
- package/dist/operations.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -41752,7 +41752,7 @@ When operating through CLI or MCP, create fewer seats first and ask for confirma
|
|
|
41752
41752
|
order: 30,
|
|
41753
41753
|
title: "Charter design playbook",
|
|
41754
41754
|
summary: "How to draft strong Charters that work for human, agent, and hybrid seats.",
|
|
41755
|
-
version: "2026-06-
|
|
41755
|
+
version: "2026-06-20.1",
|
|
41756
41756
|
public: true,
|
|
41757
41757
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
41758
41758
|
stages: ["charter_design", "staffing"],
|
|
@@ -41809,6 +41809,8 @@ List and read first, then draft, then leave activation to a human.
|
|
|
41809
41809
|
- Draft one: \`{{cli}} command charter.draft --json '{"seat_id":"<seat-id>"}'\` (scope: seat or tenant-admin); draft every eligible seat with \`charter.draft_all\` / \`rost_draft_all_charters\`. Draft commands are not gated \u2014 they produce a draft \`charter_version_id\`. \`charter.draft_all\` only drafts **active** seats and returns the real result: \`{ drafted, skipped, draft_ids, skipped_seats: [{ seat_id, reason }] }\` where \`reason\` is \`seat_not_active\` (the seat is still draft/vacant \u2014 confirm it first) or \`charter_exists\` (it already has a draft/active Charter). Read \`skipped_seats\` to see why a freshly-built graph drafted fewer Charters than it has seats.
|
|
41810
41810
|
- Edit a draft: \`charter.update_draft\` / \`rost_update_charter_draft\` with the \`charter_version_id\` and the new \`doc\`.
|
|
41811
41811
|
|
|
41812
|
+
In the app, \`/charters\` is both a drafting queue and a governance library. It shows active Charters, draft amendments, seats missing Charters, unsigned manifests, and steward-review gaps. Opening a live Charter is a review mode: read the active version, inspect its governance state, and open an amendment draft when the job needs to change. Active Charter content is never silently edited in place.
|
|
41813
|
+
|
|
41812
41814
|
## When to stop for confirmation
|
|
41813
41815
|
|
|
41814
41816
|
\`charter.approve\`, \`charter.skip\`, \`charter.apply_seat_type_recommendation\`, and \`charter.sign_manifest\` are \`human_required\`. Over MCP \`rost_approve_charter\` returns a pending confirmation, not an activation. Approving a Charter, signing a permission manifest, or expanding authority is a human act recorded against \`decided_by\`. An agent prepares the draft and surfaces the approve link; it does not approve. See the confirmations guide.
|
|
@@ -41896,7 +41898,7 @@ No orphan agents. No raw secrets in prompts, logs, or tool arguments. No durable
|
|
|
41896
41898
|
order: 41,
|
|
41897
41899
|
title: "Add agents to your Responsibility Graph",
|
|
41898
41900
|
summary: "The visual journey for adding an agent seat: where to start, choosing a mode, placing the seat, naming a Steward, setup, the safety gates, and go-live.",
|
|
41899
|
-
version: "2026-06-
|
|
41901
|
+
version: "2026-06-20.1",
|
|
41900
41902
|
public: true,
|
|
41901
41903
|
audiences: ["human", "in_app_agent"],
|
|
41902
41904
|
stages: ["staffing"],
|
|
@@ -42051,7 +42053,7 @@ The dry run is a real sandbox rehearsal, not a stamp. It executes a mock-provide
|
|
|
42051
42053
|
order: 80,
|
|
42052
42054
|
title: "Sync rhythm playbook",
|
|
42053
42055
|
summary: "How Signal, Friction, Cascade, and Sync Briefs turn weekly meetings into decision time.",
|
|
42054
|
-
version: "2026-06-
|
|
42056
|
+
version: "2026-06-20.1",
|
|
42055
42057
|
public: true,
|
|
42056
42058
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
42057
42059
|
stages: ["operating_rhythm"],
|
|
@@ -42121,7 +42123,7 @@ Decisions should be recorded as human decisions. Handoffs should attach to seats
|
|
|
42121
42123
|
order: 45,
|
|
42122
42124
|
title: "How agents work",
|
|
42123
42125
|
summary: "How {{brand}} agents operate inside seats, use Charters, report work, and escalate beyond authority.",
|
|
42124
|
-
version: "2026-06-20.
|
|
42126
|
+
version: "2026-06-20.3",
|
|
42125
42127
|
public: true,
|
|
42126
42128
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
42127
42129
|
stages: ["staffing", "operating_rhythm"],
|
|
@@ -42130,6 +42132,7 @@ Decisions should be recorded as human decisions. Handoffs should attach to seats
|
|
|
42130
42132
|
"agent.go_live",
|
|
42131
42133
|
"agent.status",
|
|
42132
42134
|
"agent.list_fleet",
|
|
42135
|
+
"agent.fleet_digest",
|
|
42133
42136
|
"agent_setup.get",
|
|
42134
42137
|
"agent_setup.update",
|
|
42135
42138
|
"agent.decommission",
|
|
@@ -42204,24 +42207,28 @@ The model is only ever offered the tools the seat's manifest grants \u2014 a den
|
|
|
42204
42207
|
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.
|
|
42205
42208
|
4. Every call \u2014 allowed, denied, escalated, or invalid \u2014 writes a tool-call audit row you can review.
|
|
42206
42209
|
|
|
42210
|
+
When operational evidence appears in the app, it is formatted for review instead of shown as primary raw JSON. Tool arguments, escalation evidence, status evidence, Sync inputs, and task context are summarized as labeled fields; secret-looking values stay redacted. Raw identifiers remain available only as supporting detail when they help an operator trace the record.
|
|
42211
|
+
|
|
42207
42212
|
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.
|
|
42208
42213
|
|
|
42209
42214
|
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.
|
|
42210
42215
|
|
|
42211
42216
|
## What humans should review
|
|
42212
42217
|
|
|
42213
|
-
|
|
42218
|
+
The Agents page shows fleet health first: live state, recent runs, failed runs, open held actions, last activity, cost, and the next operator action. A seat's Trust Card drills into the same facts: run history, one-run detail, tool-call outcomes, product-visible errors, transcript references, and held confirmations or escalations. Open confirmations stay visible until they are decided or expire, even when they are older than the default activity window. Approving or rejecting a held confirmation from the seat page is scoped to that seat; rejection can include a short reason.
|
|
42219
|
+
|
|
42220
|
+
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 equivalents are \`{{cli}} command agent.list_fleet --json '{}'\` / \`rost_list_agent_fleet\` for the compact overview, and \`{{cli}} agent fleet-digest --json\` / \`agent.fleet_digest\` / \`rost_get_dogfood_fleet_health_digest\` for the daily dogfood evidence bundle. The digest returns live/idle state, 24h/7d turns, 7d/30d spend, recent failed runs, unresolved product errors, failed notifications, and a next action per seat. 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.`
|
|
42214
42221
|
},
|
|
42215
42222
|
{
|
|
42216
42223
|
slug: "tool-access-and-vault",
|
|
42217
42224
|
order: 46,
|
|
42218
42225
|
title: "Tool access and vault",
|
|
42219
42226
|
summary: "How to give agents access to tools without exposing raw credentials or expanding authority by accident.",
|
|
42220
|
-
version: "2026-06-20.
|
|
42227
|
+
version: "2026-06-20.4",
|
|
42221
42228
|
public: true,
|
|
42222
42229
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
42223
42230
|
stages: ["staffing"],
|
|
42224
|
-
relatedCommandIds: ["charter.sign_manifest", "credential.ingress", "agent.configure_tools", "mcp_token.create", "mcp_token.revoke", "mcp_token.list", "confirmation.approve"],
|
|
42231
|
+
relatedCommandIds: ["charter.sign_manifest", "credential.ingress", "agent.configure_tools", "integration.list", "integration.status", "integration.test", "mcp_token.create", "mcp_token.revoke", "mcp_token.list", "confirmation.approve"],
|
|
42225
42232
|
legal: {
|
|
42226
42233
|
publicRisk: "low",
|
|
42227
42234
|
notes: [
|
|
@@ -42265,6 +42272,12 @@ For an API with no dedicated connector, the generic REST tool lets a seat call a
|
|
|
42265
42272
|
|
|
42266
42273
|
\`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.
|
|
42267
42274
|
|
|
42275
|
+
## Google connector status
|
|
42276
|
+
|
|
42277
|
+
Google can be connected from Settings once the workspace OAuth app is configured. The connection flow requests offline access for Gmail read/compose and Sheets, stores the returned credential in the vault, and records only account and scope metadata in the integration row. The test action refreshes the vaulted credential and performs a minimal Gmail profile read. Gmail and Sheets agent tools remain configuration-only until their guarded handlers ship; connecting Google does not by itself let an agent read mail or edit a sheet.
|
|
42278
|
+
|
|
42279
|
+
CLI and MCP can inspect connector readiness without seeing secrets: \`integration.list\` / \`rost_list_integrations\` lists connected providers and health metadata, \`integration.status\` / \`rost_get_integration_status\` reads one provider by id or name, and \`integration.test\` / \`rost_test_integration_connection\` runs the installed provider-specific health check. For Google, the test refreshes the vaulted OAuth credential and reads the Gmail profile, then records only account, scope, and health metadata.
|
|
42280
|
+
|
|
42268
42281
|
## One write-only credential flow across every surface
|
|
42269
42282
|
|
|
42270
42283
|
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.
|
|
@@ -42280,6 +42293,7 @@ There is exactly one way to give a connected tool its credential, and it is the
|
|
|
42280
42293
|
## Connect tools and credentials from CLI or MCP
|
|
42281
42294
|
|
|
42282
42295
|
- Stage tools on a draft agent: \`agent.configure_tools\` / \`rost_configure_agent_tools\` \u2014 connect or decline proposed tools and stage credential-ingress requests. Pass vault references, never raw secret material.
|
|
42296
|
+
- Inspect connector readiness: \`integration.list\` / \`rost_list_integrations\`, \`integration.status\` / \`rost_get_integration_status\`, and \`integration.test\` / \`rost_test_integration_connection\` return provider metadata and health only.
|
|
42283
42297
|
- Store a secret: \`credential.ingress\` / \`rost_store_credential\` (scope: seat) persists only a vault reference. \`credential.ingress\` is \`credential_flow\` \u2014 it returns a pending confirmation and runs only with a real human-provided secret, captured as a vault reference. (Because it redacts that secret, the pending confirmation also shows a high-risk badge \u2014 see the confirmations guide for badge-versus-level.)
|
|
42284
42298
|
- Sign the manifest: \`charter.sign_manifest\` / \`rost_sign_charter_manifest\` requests human confirmation for the seat's permission manifest.
|
|
42285
42299
|
- Mint local access: prefer \`{{cli}} mcp install\` for users; \`mcp_token.create\` is \`human_required\` and returns the token once. List metadata with \`mcp_token.list\` (never token material); revoke with \`mcp_token.revoke\`.
|
|
@@ -42293,7 +42307,7 @@ There is exactly one way to give a connected tool its credential, and it is the
|
|
|
42293
42307
|
order: 47,
|
|
42294
42308
|
title: "Available tools guide",
|
|
42295
42309
|
summary: "How to think about tool categories available to seats and what each category should be used for.",
|
|
42296
|
-
version: "2026-06-20.
|
|
42310
|
+
version: "2026-06-20.3",
|
|
42297
42311
|
public: true,
|
|
42298
42312
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
42299
42313
|
stages: ["staffing"],
|
|
@@ -42342,7 +42356,7 @@ External connectors are being rolled out provider by provider, conservatively (r
|
|
|
42342
42356
|
order: 48,
|
|
42343
42357
|
title: "CLI and MCP installation guide",
|
|
42344
42358
|
summary: "Install the public CLI, register remote token-backed MCP clients, and find the full command and tool catalog.",
|
|
42345
|
-
version: "2026-06-20.
|
|
42359
|
+
version: "2026-06-20.8",
|
|
42346
42360
|
public: true,
|
|
42347
42361
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
42348
42362
|
stages: ["company_setup", "staffing"],
|
|
@@ -42378,6 +42392,7 @@ External connectors are being rolled out provider by provider, conservatively (r
|
|
|
42378
42392
|
"agent.go_live",
|
|
42379
42393
|
"agent.status",
|
|
42380
42394
|
"agent.list_fleet",
|
|
42395
|
+
"agent.fleet_digest",
|
|
42381
42396
|
"agent.get_run",
|
|
42382
42397
|
"agent.list_runs",
|
|
42383
42398
|
"agent.list_tool_calls"
|
|
@@ -42754,9 +42769,10 @@ These ergonomic wrappers (including the \`{{cli}} agent\` group) require **{{cli
|
|
|
42754
42769
|
| \`{{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\` |
|
|
42755
42770
|
| \`{{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\` |
|
|
42756
42771
|
| \`{{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\` |
|
|
42772
|
+
| \`{{cli}} integration list|status|test\` | \`integration.list\`, \`integration.status\`, \`integration.test\` | List connector metadata, read one connector's health, and run the provider-specific connection test without exposing credentials. | Tenant | \`{{cli}} integration test --provider google --json\` |
|
|
42757
42773
|
| \`{{cli}} settings get|update\` | \`settings.get\`, \`settings.update\` | Read tenant settings; update budget caps. | Tenant | \`{{cli}} settings get --json\` |
|
|
42758
42774
|
| \`{{cli}} member invite|update|remove\` | \`member.invite\`, \`member.update\`, \`member.remove\` | Manage tenant members. | Tenant | \`{{cli}} member invite --email ops@example.com --role member\` |
|
|
42759
|
-
| \`{{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
|
|
42775
|
+
| \`{{cli}} agent templates|create|setup|tools|dry-run|go-live|status|run-now|fleet-digest|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.fleet_digest\`, \`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, capture the fleet-health digest, 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 fleet-digest --json\` |
|
|
42760
42776
|
| \`{{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\` |
|
|
42761
42777
|
| \`{{cli}} model list\` | \`model.catalog\` | List guided model tiers with recommendations, token prices, cost bands, best-fit work, and model ids for \`--model\`. | Tenant | \`{{cli}} model list --json\` |
|
|
42762
42778
|
| \`{{cli}} compass show\` | \`compass.show_markdown\` | Render the current Compass as a clean markdown card for review. | Tenant | \`{{cli}} compass show --markdown\` |
|
|
@@ -42856,6 +42872,7 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
|
|
|
42856
42872
|
| \`rost_list_compass_gaps\` | \`compass.list_gaps\` | List unanswered and answered Compass context gaps. | Tenant | Call with \`{}\` before answering gaps. |
|
|
42857
42873
|
| \`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>"}\`. |
|
|
42858
42874
|
| \`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. |
|
|
42875
|
+
| \`rost_get_dogfood_fleet_health_digest\` | \`agent.fleet_digest\` | Capture the daily dogfood fleet-health digest: live/idle state, 24h/7d turns, spend, recent failed runs, unresolved errors, failed notifications, and next actions. | Tenant | Call with \`{}\`; optional \`window_hours\` bounds recent failed-run evidence, while \`error_limit\` caps linked evidence per seat. |
|
|
42859
42876
|
| \`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>"}\`. |
|
|
42860
42877
|
| \`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. |
|
|
42861
42878
|
| \`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>"}\`. |
|
|
@@ -42875,7 +42892,7 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
|
|
|
42875
42892
|
| \`rost_list_mcp_tokens\` | \`mcp_token.list\` | List MCP token metadata (never token material). | Tenant | Call with \`{}\` or \`{"include_revoked":true}\`. |
|
|
42876
42893
|
| \`rost_list_runners\` | \`runner.list\` | List local runners and their online/offline/revoked state. | Tenant | Call with \`{}\`. |
|
|
42877
42894
|
| \`rost_runner_status\` | \`runner.status\` | Read a single runner's capability and state. | Tenant | Call with \`runner_id\`. |
|
|
42878
|
-
| \`rost_start_runner_pairing\` | \`runner.pairing.start\` | Open a runner pairing session and return the human pairing code. | Tenant | Call with \`name\` and \`platform
|
|
42895
|
+
| \`rost_start_runner_pairing\` | \`runner.pairing.start\` | Open a runner pairing session and return the human pairing code. | Tenant-admin | Call with \`name\` and \`platform\`; owner/admin only. |
|
|
42879
42896
|
| \`rost_revoke_runner\` | \`runner.revoke\` | Revoke a runner so it can no longer authenticate. | Tenant | Call with \`runner_id\`; expect human confirmation. |
|
|
42880
42897
|
| \`rost_list_work_orders\` | \`work_order.list\` | List runner/cloud work orders for the tenant. | Tenant | Call with optional \`status\`, \`agent_id\`, or \`runner_id\`. |
|
|
42881
42898
|
| \`rost_enqueue_work_order\` | \`work_order.enqueue\` | Queue a work order for a live scheduled agent. | Tenant | Call with \`agent_id\`. |
|
|
@@ -42884,6 +42901,9 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
|
|
|
42884
42901
|
| \`rost_update_notification_settings\` | \`notification.settings.update\` | Update tenant notification preferences. | Tenant | Call with the fields to change. |
|
|
42885
42902
|
| \`rost_send_test_notification\` | \`notification.test\` | Emit an in-app test notification to the acting human. | Tenant | Call with \`{}\`. |
|
|
42886
42903
|
| \`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\`. |
|
|
42904
|
+
| \`rost_list_integrations\` | \`integration.list\` | List connected integration metadata and latest health state. | Tenant | Call with \`{}\` or \`{"provider":"google"}\`; no secrets or vault refs are returned. |
|
|
42905
|
+
| \`rost_get_integration_status\` | \`integration.status\` | Read one integration's metadata by provider or integration id. | Tenant | Call with \`{"provider":"google"}\` or \`{"integration_id":"<id>"}\`. |
|
|
42906
|
+
| \`rost_test_integration_connection\` | \`integration.test\` | Run the provider-specific connection test and update integration health. | Tenant | Call with \`{"provider":"google"}\`; result is bounded metadata only. |
|
|
42887
42907
|
| \`rost_invite_member\` | \`member.invite\` | Create a pending tenant invite for a human teammate. | Tenant | Call with \`email\` and \`role\`. |
|
|
42888
42908
|
| \`rost_update_member_role\` | \`member.update\` | Change a tenant member's role. | Tenant | Call with \`member_id\` and \`role\`; expect human confirmation. |
|
|
42889
42909
|
| \`rost_remove_member\` | \`member.remove\` | Remove a tenant member. | Tenant | Call with \`member_id\`; blocked if it would orphan an agent steward chain. |
|
|
@@ -43415,11 +43435,11 @@ Stop before: approving a Charter, signing a manifest, connecting a tool or crede
|
|
|
43415
43435
|
order: 72,
|
|
43416
43436
|
title: "Settings guide",
|
|
43417
43437
|
summary: "How to use Settings as the control plane for company access, channels, providers, tokens, and operating defaults.",
|
|
43418
|
-
version: "2026-06-
|
|
43438
|
+
version: "2026-06-20.5",
|
|
43419
43439
|
public: true,
|
|
43420
43440
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
43421
43441
|
stages: ["company_setup", "staffing"],
|
|
43422
|
-
relatedCommandIds: ["onboarding.create_invite", "mcp_token.create", "mcp_token.revoke", "mcp_token.list", "settings.get", "settings.update", "settings.sync_brief_scope.get", "settings.sync_brief_scope.update"],
|
|
43442
|
+
relatedCommandIds: ["onboarding.create_invite", "mcp_token.create", "mcp_token.revoke", "mcp_token.list", "integration.list", "integration.status", "integration.test", "settings.get", "settings.update", "settings.sync_brief_scope.get", "settings.sync_brief_scope.update"],
|
|
43423
43443
|
legal: { publicRisk: "low", notes: ["{{brand}}-native settings guidance."] },
|
|
43424
43444
|
sources: [
|
|
43425
43445
|
{
|
|
@@ -43447,6 +43467,16 @@ Start with members and invites, then provider and channel connections, then MCP
|
|
|
43447
43467
|
- Stored credentials (vault references only) and tool access approvals.
|
|
43448
43468
|
- Operating defaults, including Sync Brief scope.
|
|
43449
43469
|
|
|
43470
|
+
Settings lifecycle timestamps are display metadata for tokens, connected machines, integrations, and stored credentials. They may be emitted by the database as either timestamp values or strings, but Settings renders them as safe labels rather than treating timestamp formatting failures as page-level failures.
|
|
43471
|
+
|
|
43472
|
+
When a settings source is temporarily unavailable, the app keeps the route open and marks affected sections as unavailable instead of showing raw errors or stale-looking editable values. Budget and Sync Brief controls stay read-only until their server-backed data can be loaded.
|
|
43473
|
+
|
|
43474
|
+
## Integration health
|
|
43475
|
+
|
|
43476
|
+
\`integration.list\` lists connector metadata for CLI and MCP operators, \`integration.status\` reads one provider or integration id, and \`integration.test\` runs the installed provider-specific health check. These commands return account labels, scopes, capabilities, timestamps, and health only; they never return vault references, access tokens, refresh tokens, or raw provider responses. Google's test refreshes the vaulted OAuth credential and reads the Gmail profile as the minimal live check. Settings exposes the same Google test as an owner/operator button beside Connect/Reconnect, shows the last tested time, and turns failures into reconnect-oriented remediation copy rather than raw provider errors.
|
|
43477
|
+
|
|
43478
|
+
Reconnects keep historical rows for audit, but provider status in Settings, CLI, and MCP prefers the current connected row first, then the latest error or disconnected row.
|
|
43479
|
+
|
|
43450
43480
|
## Sync Brief scope
|
|
43451
43481
|
|
|
43452
43482
|
The weekly Sync Brief compiles either company-wide or per cluster. Company-wide is one brief covering the whole company and is the default for a new company. Per cluster compiles one brief per cluster, scoped to each cluster's seats; pick it when clusters run their own weekly sync. Per cluster falls back to a single company-wide brief when the company has no clusters, so the rhythm never produces zero briefs. The owner sets this at onboarding and can change it later in Settings.
|
|
@@ -43540,7 +43570,7 @@ Every notification should include the seat, cause, evidence, and requested decis
|
|
|
43540
43570
|
order: 75,
|
|
43541
43571
|
title: "Local runner guide",
|
|
43542
43572
|
summary: "How local agent sessions and runner surfaces should operate through {{brand}} without bypassing Charters or audit.",
|
|
43543
|
-
version: "2026-06-
|
|
43573
|
+
version: "2026-06-20.1",
|
|
43544
43574
|
public: true,
|
|
43545
43575
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
43546
43576
|
stages: ["staffing", "operating_rhythm"],
|
|
@@ -43568,7 +43598,7 @@ The local runner is for human-controlled local agent work. It should retrieve {{
|
|
|
43568
43598
|
|
|
43569
43599
|
## Inspect and control runners from CLI or MCP
|
|
43570
43600
|
|
|
43571
|
-
- Pair a new runner: \`runner.pairing.start\` / \`rost_start_runner_pairing\` with \`name\` and \`platform\` returns a human pairing code.
|
|
43601
|
+
- Pair a new runner: \`runner.pairing.start\` / \`rost_start_runner_pairing\` with \`name\` and \`platform\` returns a human pairing code. This is owner/admin-only because it mints a short-lived runner pairing session that leads to machine credentials.
|
|
43572
43602
|
- Inspect: \`{{cli}} runner list --json\` / \`runner.list\` / \`rost_list_runners\` shows online/offline/revoked state; \`{{cli}} runner status\` / \`runner.status\` / \`rost_runner_status\` reads one runner.
|
|
43573
43603
|
- Work orders: \`{{cli}} runner work-orders\` / \`work_order.list\` / \`rost_list_work_orders\`; queue with \`work_order.enqueue\` / \`rost_enqueue_work_order\` for a live scheduled agent, or use \`agent.run_now\` / \`rost_run_agent_now\` when an operator wants the product to queue and dispatch an immediate live run from a seat id; cancel with \`work_order.cancel\` / \`rost_cancel_work_order\`.
|
|
43574
43604
|
- Revoke: \`{{cli}} runner revoke\` / \`runner.revoke\` / \`rost_revoke_runner\` so a runner can no longer authenticate.
|
|
@@ -43577,7 +43607,7 @@ The local runner is for human-controlled local agent work. It should retrieve {{
|
|
|
43577
43607
|
|
|
43578
43608
|
Use this flow when a headless or desktop runner cannot use the interactive web confirmation flow.
|
|
43579
43609
|
|
|
43580
|
-
1. The owner runs \`runner.pairing.start\` or \`rost_start_runner_pairing\` with the runner \`name\` and \`platform\`.
|
|
43610
|
+
1. The owner/admin runs \`runner.pairing.start\` or \`rost_start_runner_pairing\` with the runner \`name\` and \`platform\`.
|
|
43581
43611
|
2. The owner gives the returned \`user_code\` to the runner through a trusted out-of-band channel.
|
|
43582
43612
|
3. The runner calls \`POST /api/runner/pairing/claim\` with \`{"user_code":"ABCD-2345"}\`.
|
|
43583
43613
|
4. The response returns \`runner_id\`, \`runner_secret\`, \`name\`, and \`platform\`. Store the runner secret only on the runner machine.
|
|
@@ -43585,7 +43615,7 @@ Use this flow when a headless or desktop runner cannot use the interactive web c
|
|
|
43585
43615
|
|
|
43586
43616
|
## When to stop for confirmation
|
|
43587
43617
|
|
|
43588
|
-
\`runner.
|
|
43618
|
+
\`runner.pairing.start\`, \`work_order.enqueue\`, and \`agent.run_now\` are \`none\`, so they do not create a separate pending confirmation, but \`runner.pairing.start\` is still owner/admin-only at the command authorization layer. \`runner.revoke\` and \`work_order.cancel\` are \`human_required\`. List and status reads are not gated. Revoking a runner or cancelling work is the human-approved act. An agent inspects runner state and proposes the action.
|
|
43589
43619
|
|
|
43590
43620
|
## Guardrails
|
|
43591
43621
|
|
|
@@ -45697,6 +45727,57 @@ function notificationUsage(bin) {
|
|
|
45697
45727
|
${bin} notification test
|
|
45698
45728
|
${bin} notification errors [--limit <n>]`;
|
|
45699
45729
|
}
|
|
45730
|
+
var integrationWrapper = (context, args) => dispatch(context, "integration", args, {
|
|
45731
|
+
list: (ctx, rest) => {
|
|
45732
|
+
const parsed = parseFlags(rest);
|
|
45733
|
+
const body = withOptional({}, { provider: optionalValue(parsed, "provider") });
|
|
45734
|
+
return execute(ctx, parsed, "integration.list", body, (output) => {
|
|
45735
|
+
const integrations = asArray(asRecord(output).integrations);
|
|
45736
|
+
if (integrations.length === 0) {
|
|
45737
|
+
return "No integrations are connected.";
|
|
45738
|
+
}
|
|
45739
|
+
return integrations.map((entry) => formatIntegrationLine(asRecord(entry))).join("\n");
|
|
45740
|
+
});
|
|
45741
|
+
},
|
|
45742
|
+
status: (ctx, rest) => {
|
|
45743
|
+
const parsed = parseFlags(rest);
|
|
45744
|
+
const body = integrationLookupBody(parsed);
|
|
45745
|
+
return execute(ctx, parsed, "integration.status", body, (output) => {
|
|
45746
|
+
const integration = asRecord(output).integration;
|
|
45747
|
+
if (integration === null) {
|
|
45748
|
+
return "Integration not found.";
|
|
45749
|
+
}
|
|
45750
|
+
return formatIntegrationLine(asRecord(integration));
|
|
45751
|
+
});
|
|
45752
|
+
},
|
|
45753
|
+
test: (ctx, rest) => {
|
|
45754
|
+
const parsed = parseFlags(rest);
|
|
45755
|
+
const body = integrationLookupBody(parsed);
|
|
45756
|
+
return execute(ctx, parsed, "integration.test", body, (output) => {
|
|
45757
|
+
const record2 = asRecord(output);
|
|
45758
|
+
return `${field(record2, "provider")} ${field(record2, "status")} (ok=${field(record2, "ok")}) ${field(record2, "message")}`;
|
|
45759
|
+
});
|
|
45760
|
+
}
|
|
45761
|
+
}, integrationUsage(context.binName));
|
|
45762
|
+
function integrationLookupBody(parsed) {
|
|
45763
|
+
const body = withOptional({}, {
|
|
45764
|
+
provider: optionalValue(parsed, "provider"),
|
|
45765
|
+
integration_id: optionalValue(parsed, "integration-id")
|
|
45766
|
+
});
|
|
45767
|
+
if (Object.keys(body).length === 0) {
|
|
45768
|
+
throw new UsageError("Provide --provider or --integration-id.");
|
|
45769
|
+
}
|
|
45770
|
+
return body;
|
|
45771
|
+
}
|
|
45772
|
+
function formatIntegrationLine(record2) {
|
|
45773
|
+
return `${field(record2, "provider")} status=${field(record2, "status")} account=${field(record2, "account_email")} last_test=${field(record2, "last_test_result")} id=${field(record2, "id")}`;
|
|
45774
|
+
}
|
|
45775
|
+
function integrationUsage(bin) {
|
|
45776
|
+
return `Usage: ${bin} integration list|status|test [--json]
|
|
45777
|
+
${bin} integration list [--provider <name>]
|
|
45778
|
+
${bin} integration status --provider <name>
|
|
45779
|
+
${bin} integration test --provider <name>`;
|
|
45780
|
+
}
|
|
45700
45781
|
var settingsWrapper = (context, args) => dispatch(context, "settings", args, {
|
|
45701
45782
|
get: (ctx, rest) => {
|
|
45702
45783
|
const parsed = parseFlags(rest);
|
|
@@ -45896,6 +45977,24 @@ ${field(record2, "summary")}`;
|
|
|
45896
45977
|
return `queued ${field(workOrder, "lane")} work order ${field(workOrder, "id")} for agent ${field(workOrder, "agent_id")} (${field(workOrder, "status")})`;
|
|
45897
45978
|
});
|
|
45898
45979
|
},
|
|
45980
|
+
"fleet-digest": (ctx, rest) => {
|
|
45981
|
+
const parsed = parseFlags(rest);
|
|
45982
|
+
const body = withOptional({}, {
|
|
45983
|
+
window_hours: optionalNumber(parsed, "window-hours"),
|
|
45984
|
+
error_limit: optionalNumber(parsed, "error-limit")
|
|
45985
|
+
});
|
|
45986
|
+
return execute(ctx, parsed, "agent.fleet_digest", body, (output) => {
|
|
45987
|
+
const record2 = asRecord(output);
|
|
45988
|
+
const summary = asRecord(record2.summary);
|
|
45989
|
+
const agents = asArray(record2.agents);
|
|
45990
|
+
const header = `fleet ${field(summary, "fleet_count")} seats live=${field(summary, "live_count")} idle=${field(summary, "idle_count")} turns24h=${field(summary, "turns_24h")} failed24h=${field(summary, "failed_runs_24h")} spend7d=$${field(summary, "spend_7d_usd")}`;
|
|
45991
|
+
const lines = agents.map((agent) => {
|
|
45992
|
+
const r = asRecord(agent);
|
|
45993
|
+
return `${field(r, "seat_name")} ${field(r, "health_status")} live=${field(r, "live")} turns24h=${field(r, "turns_24h")} failed=${field(r, "failed_runs_24h")} next=${field(r, "suggested_next_action")}`;
|
|
45994
|
+
});
|
|
45995
|
+
return [header, ...lines].join("\n");
|
|
45996
|
+
});
|
|
45997
|
+
},
|
|
45899
45998
|
"get-run": (ctx, rest) => {
|
|
45900
45999
|
const parsed = parseFlags(rest);
|
|
45901
46000
|
const body = {
|
|
@@ -45937,7 +46036,7 @@ function agentConfigureTools(ctx, rest, decision) {
|
|
|
45937
46036
|
});
|
|
45938
46037
|
}
|
|
45939
46038
|
function agentUsage(bin) {
|
|
45940
|
-
return `Usage: ${bin} agent templates|create|setup|tools|dry-run|go-live|status|run-now|get-run|show [--json]
|
|
46039
|
+
return `Usage: ${bin} agent templates|create|setup|tools|dry-run|go-live|status|run-now|fleet-digest|get-run|show [--json]
|
|
45941
46040
|
${bin} agent templates
|
|
45942
46041
|
${bin} agent create --seat-id <id> --template <slug> [--expected-version <v>]
|
|
45943
46042
|
${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>]
|
|
@@ -45948,6 +46047,7 @@ function agentUsage(bin) {
|
|
|
45948
46047
|
${bin} agent go-live --seat-id <id> --charter-version-id <id>
|
|
45949
46048
|
${bin} agent status --seat-id <id>
|
|
45950
46049
|
${bin} agent run-now --seat-id <id> [--task-id <id>]
|
|
46050
|
+
${bin} agent fleet-digest [--window-hours <n>] [--error-limit <n>]
|
|
45951
46051
|
${bin} agent get-run --seat-id <id> --run-id <id>
|
|
45952
46052
|
${bin} agent show --seat-id <id> [--markdown]`;
|
|
45953
46053
|
}
|
|
@@ -46060,6 +46160,7 @@ var OPERATION_GROUPS = [
|
|
|
46060
46160
|
"sync",
|
|
46061
46161
|
"runner",
|
|
46062
46162
|
"notification",
|
|
46163
|
+
"integration",
|
|
46063
46164
|
"settings",
|
|
46064
46165
|
"member",
|
|
46065
46166
|
"agent",
|
|
@@ -46078,6 +46179,7 @@ var wrappers = {
|
|
|
46078
46179
|
sync: syncWrapper,
|
|
46079
46180
|
runner: runnerWrapper,
|
|
46080
46181
|
notification: notificationWrapper,
|
|
46182
|
+
integration: integrationWrapper,
|
|
46081
46183
|
settings: settingsWrapper,
|
|
46082
46184
|
member: memberWrapper,
|
|
46083
46185
|
agent: agentWrapper,
|
|
@@ -46099,6 +46201,7 @@ var groupUsageBuilders = {
|
|
|
46099
46201
|
sync: syncUsage,
|
|
46100
46202
|
runner: runnerUsage,
|
|
46101
46203
|
notification: notificationUsage,
|
|
46204
|
+
integration: integrationUsage,
|
|
46102
46205
|
settings: settingsUsage,
|
|
46103
46206
|
member: memberUsage,
|
|
46104
46207
|
agent: agentUsage,
|
|
@@ -46131,7 +46234,7 @@ function operationUsageLines(bin) {
|
|
|
46131
46234
|
`${bin} notification settings|test|errors`,
|
|
46132
46235
|
`${bin} settings get|update`,
|
|
46133
46236
|
`${bin} member invite|update|remove`,
|
|
46134
|
-
`${bin} agent templates|create|setup|tools|dry-run|go-live|status|run-now|get-run|show`,
|
|
46237
|
+
`${bin} agent templates|create|setup|tools|dry-run|go-live|status|run-now|fleet-digest|get-run|show`,
|
|
46135
46238
|
`${bin} tools list`,
|
|
46136
46239
|
`${bin} model list`,
|
|
46137
46240
|
`${bin} compass show`,
|