@rosthq/cli 0.6.5 → 0.6.7
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,
|
|
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,EA4L3D,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -37433,6 +37433,13 @@ var AGENT_HOW_TO_PROMPT_CONTRACTS = {
|
|
|
37433
37433
|
name: "human-confirmations",
|
|
37434
37434
|
version: "1.0.0",
|
|
37435
37435
|
filename: "how-tos/human-confirmations.md"
|
|
37436
|
+
},
|
|
37437
|
+
// DER-1045: how an occupant agent collects its seat's agent-sourced measurables
|
|
37438
|
+
// as draft readings via signal.report (a human confirms via signal.confirm_reading).
|
|
37439
|
+
collectSeatSignals: {
|
|
37440
|
+
name: "collect-seat-signals",
|
|
37441
|
+
version: "1.0.0",
|
|
37442
|
+
filename: "how-tos/collect-seat-signals.md"
|
|
37436
37443
|
}
|
|
37437
37444
|
};
|
|
37438
37445
|
function loadAgentHowToPrompt(contract) {
|
|
@@ -42261,11 +42268,11 @@ Use the lower-level commands after health names a finding: \`agent.get_run\` for
|
|
|
42261
42268
|
order: 46,
|
|
42262
42269
|
title: "Tool access and vault",
|
|
42263
42270
|
summary: "How to give agents access to tools without exposing raw credentials or expanding authority by accident.",
|
|
42264
|
-
version: "2026-
|
|
42271
|
+
version: "2026-07-02.3",
|
|
42265
42272
|
public: true,
|
|
42266
42273
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
42267
42274
|
stages: ["staffing"],
|
|
42268
|
-
relatedCommandIds: ["charter.sign_manifest", "credential.ingress", "agent.configure_tools", "integration.list", "integration.readiness", "integration.status", "integration.test", "mcp_token.create", "mcp_token.revoke", "mcp_token.list", "confirmation.approve"],
|
|
42275
|
+
relatedCommandIds: ["charter.sign_manifest", "credential.ingress", "agent.configure_tools", "integration.connect_rest", "integration.list", "integration.readiness", "integration.status", "integration.test", "mcp_token.create", "mcp_token.revoke", "mcp_token.list", "confirmation.approve"],
|
|
42269
42276
|
legal: {
|
|
42270
42277
|
publicRisk: "low",
|
|
42271
42278
|
notes: [
|
|
@@ -42303,7 +42310,7 @@ Connecting a tool is a human-controlled step. The agent can recommend a tool, ex
|
|
|
42303
42310
|
|
|
42304
42311
|
## Generic REST connector
|
|
42305
42312
|
|
|
42306
|
-
For an API with no dedicated connector, the generic REST tool lets a seat
|
|
42313
|
+
For an API with no dedicated connector, the generic REST tool lets a seat read an HTTPS endpoint with a credential you paste through the vault \u2014 no {{brand}}-owned app. The agent-facing tool is GET-only. It is escalate-by-default: the agent may only call a host and explicit path prefix a steward has signed onto the allowlist; any other host or path is refused and escalated, with no request made. Mutating methods and request bodies fail before credential binding. A path prefix of \`/\` means the steward intentionally approved every path. 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 scoped path, 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.
|
|
42307
42314
|
|
|
42308
42315
|
## Slack post connector
|
|
42309
42316
|
|
|
@@ -42319,6 +42326,8 @@ Google can be connected from Settings once the workspace OAuth app is configured
|
|
|
42319
42326
|
|
|
42320
42327
|
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.
|
|
42321
42328
|
|
|
42329
|
+
\`integration.connect_rest\` / \`rost_connect_rest_integration\` creates or rotates the supported Baserow REST integration through the credential flow. It stores the token in the vault, persists only endpoint/account metadata plus a tenant-scoped integration row, marks the adapter as \`rest\`, and returns no vault ref or secret. Because the input includes a raw secret, generated CLI argv refuses the command; use Settings or the command API credential flow instead of shell arguments.
|
|
42330
|
+
|
|
42322
42331
|
\`integration.readiness\` / \`{{cli}} integration readiness --provider google --json\` / \`rost_check_integration_readiness\` returns the operator setup checklist: app configuration status, tenant connection state, granted scopes, latest test state, the demo-safe partner path, external verification/CASA caveats, handler availability, and the next operator action. The checklist is metadata-only. It never returns access tokens, refresh tokens, client secrets, vault refs, or raw provider responses. Settings deliberately keeps the live Google card narrower: connected account, last successful test, granted capabilities, and connect/reconnect/test actions.
|
|
42323
42332
|
|
|
42324
42333
|
## One write-only credential flow across every surface
|
|
@@ -42350,7 +42359,7 @@ There is exactly one way to give a connected tool its credential, and it is the
|
|
|
42350
42359
|
order: 47,
|
|
42351
42360
|
title: "Available tools guide",
|
|
42352
42361
|
summary: "How to think about tool categories available to seats and what each category should be used for.",
|
|
42353
|
-
version: "2026-
|
|
42362
|
+
version: "2026-07-02.1",
|
|
42354
42363
|
public: true,
|
|
42355
42364
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
42356
42365
|
stages: ["staffing"],
|
|
@@ -42394,16 +42403,16 @@ Agents should explain the job, the required tool category, the minimum permissio
|
|
|
42394
42403
|
|
|
42395
42404
|
## How a tool actually runs
|
|
42396
42405
|
|
|
42397
|
-
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.
|
|
42406
|
+
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. An explicitly declined manifest entry is enforced as denied, even when the tool exists and the client asks for it. 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.
|
|
42398
42407
|
|
|
42399
|
-
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 host/
|
|
42408
|
+
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 GET connector when a signed host/path allowlist and credential exist, \`slack.post_message\` for a bound Slack channel, and Google handlers for \`gmail.read\`, \`gmail.draft\`, \`sheets.read\`, and approval-held \`sheets.write\` when Google is connected. \`gmail.send\` remains held for approval and live external send stays gated on Google verification. Before that verification is complete, partner demos should show sandbox dry runs, setup previews, and approval-held examples rather than claim production Google readiness. Other provider entries remain configuration-only until their connector ships, so nothing runs silently.`
|
|
42400
42409
|
},
|
|
42401
42410
|
{
|
|
42402
42411
|
slug: "mcp-and-cli-guide",
|
|
42403
42412
|
order: 48,
|
|
42404
42413
|
title: "CLI and MCP installation guide",
|
|
42405
42414
|
summary: "Install the public CLI, register remote token-backed MCP clients, and find the full command and tool catalog.",
|
|
42406
|
-
version: "2026-07-
|
|
42415
|
+
version: "2026-07-02.3",
|
|
42407
42416
|
public: true,
|
|
42408
42417
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
42409
42418
|
stages: ["company_setup", "staffing"],
|
|
@@ -42861,7 +42870,7 @@ The signed-in app exposes the same Skill command surface under **Skills** in the
|
|
|
42861
42870
|
| \`{{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\` |
|
|
42862
42871
|
| \`{{cli}} runner list|status|diagnose|repair|work-orders|revoke|serve\` | \`runner.list\`, \`runner.status\`, \`runner.diagnose\`, \`runner.repair\`, \`work_order.list\`, \`runner.revoke\`, runner endpoint APIs | Inspect heartbeat and execute-readiness evidence, inspect work orders, diagnose offline runners, get repair guidance, revoke a runner, or run the headless local runner loop. | Tenant | \`{{cli}} runner diagnose --runner-id <id> --json\`; \`{{cli}} runner serve --once\` |
|
|
42863
42872
|
| \`{{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\` |
|
|
42864
|
-
| \`{{cli}} integration list|readiness|status|test\` | \`integration.list\`, \`integration.readiness\`, \`integration.status\`, \`integration.test\` |
|
|
42873
|
+
| \`{{cli}} integration list|readiness|status|test\` / credential flow for Baserow REST connect | \`integration.connect_rest\`, \`integration.list\`, \`integration.readiness\`, \`integration.status\`, \`integration.test\` | Create a vault-backed Baserow REST integration through the credential flow, list connector metadata, read setup-readiness, read one connector's health, and run provider-specific tests without exposing credentials. | Tenant-admin for connect; tenant for reads/tests | \`{{cli}} integration readiness --provider google --json\` |
|
|
42865
42874
|
| \`{{cli}} system health\` | \`system.health\` | Read the scoped system-health snapshot across agent runs, unresolved errors, Signals, Cascade setup, work loop, integrations, runners, notifications, and Sync Brief readiness. | Tenant, member, or seat token | \`{{cli}} system health --json\`; \`{{cli}} system health --seat <id> --json\` |
|
|
42866
42875
|
| \`{{cli}} command usage.report|usage.snapshot\` | \`usage.report\`, \`usage.snapshot\` | Read the AI-workforce ROI report (per-period agent turns, token/run cost, human-accepted value, exceptions, approvals) from immutable usage snapshots, and freeze a period's totals into a new snapshot (insert-only, idempotent). | Tenant | \`{{cli}} command usage.report --json\`; \`{{cli}} command usage.snapshot --json\` |
|
|
42867
42876
|
| \`{{cli}} settings get|update|product-learning|agent-policy|rename\` | \`settings.get\`, \`settings.update\`, \`settings.product_learning.get\`, \`settings.product_learning.update\`, \`settings.agent_policy.get\`, \`settings.agent_policy.update\`, \`tenant.rename\` | Read tenant settings, update budget caps, read or update product-learning participation, read or set the company autonomy ceiling, and rename the company. Budget, product-learning, and policy updates stop at human confirmation in non-interactive CLI/MCP sessions; company rename is owner-only and human-gated. | Tenant / Tenant-admin for updates | \`{{cli}} settings product-learning get --json\`; \`{{cli}} settings agent-policy get --json\`; \`{{cli}} settings rename --company "Acme Operations"\` |
|
|
@@ -42944,7 +42953,7 @@ The equivalent CLI verbs are \`{{cli}} command schema <id>\` and \`{{cli}} comma
|
|
|
42944
42953
|
|
|
42945
42954
|
These names are available to tenant-admin MCP tokens. They are aliases over the shared command layer and are audited as MCP tool calls. The list spans far more than onboarding \u2014 it groups, in order: onboarding, seats, Charter, confirmations, Compass, staffing, credentials/tokens, graph reads, agents, runners and work orders, notifications, members and settings, Signals, Cascade goals, Friction, tasks, Sync, and escalations.
|
|
42946
42955
|
|
|
42947
|
-
Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`, \`goal.*\`, and \`friction.*\` families) surfaced because they are also tenant-admin-callable \u2014 which is why the CLI wrapper table marks them "Seat". Scope selection follows the Seat scope note above: a seat-scoped token already carries seat context
|
|
42956
|
+
Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`, \`goal.*\`, and \`friction.*\` families) surfaced because they are also tenant-admin-callable \u2014 which is why the CLI wrapper table marks them "Seat". Scope selection follows the Seat scope note above: a seat-scoped token already carries seat context and sees only the seat-scoped MCP tools registered for that token; a tenant or owner CLI session must pass \`--seat <seat-id>\` to act in a seat context. See the security-model-guide for the seat-vs-tenant authority principle.
|
|
42948
42957
|
|
|
42949
42958
|
| Tool | Command id | Purpose | Required scope | Safe example |
|
|
42950
42959
|
|---|---|---|---|---|
|
|
@@ -43000,8 +43009,6 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
|
|
|
43000
43009
|
| \`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. |
|
|
43001
43010
|
| \`rost_list_agent_deliverables\` | \`deliverable.list\` | List durable agent deliverables for a seat, including explicit outputs and successful-run summaries. | Seat or tenant-admin | Call with \`{"seat_id":"<seat-id>"}\`. |
|
|
43002
43011
|
| \`rost_get_agent_deliverable\` | \`deliverable.get\` | Read one durable agent deliverable by id for a seat. | Seat or tenant-admin | Call with \`{"seat_id":"<seat-id>","deliverable_id":"<id>"}\`. |
|
|
43003
|
-
| \`rost_create_agent_deliverable\` | \`deliverable.create\` | Create a scrubbed durable work output for the acting seat. | Seat | Call with title, kind, summary/content, and optional safe links. |
|
|
43004
|
-
| \`rost_attach_agent_deliverable\` | \`deliverable.attach\` | Attach a scrubbed deliverable to a source run, task, or work order after server-side seat validation. | Seat | Call with title, kind, and the source ids that belong to the acting seat. |
|
|
43005
43012
|
| \`rost_accept_deliverable_value\` | \`deliverable.accept\` | Record a human-confirmed accepted value (USD) on a deliverable; owner-only and human-gated. Humans decide \u2014 agents cannot self-accept. Re-accepting records a correction as a new event. | Tenant-admin | Call with \`{"deliverable_id":"<id>","impact_value_usd":<number>}\`; expect human confirmation. |
|
|
43006
43013
|
| \`rost_ai_workforce_roi_report\` | \`usage.report\` | Read the AI-workforce ROI report \u2014 per-period agent turns, token/run cost, human-accepted value, exceptions, and approvals \u2014 from immutable usage snapshots. | Tenant | Call with \`{}\` or \`{"limit":<n>}\`. |
|
|
43007
43014
|
| \`rost_capture_usage_period_snapshot\` | \`usage.snapshot\` | Freeze the current (or a given) period's usage and accepted-value totals into an immutable snapshot; insert-only and idempotent. | Tenant | Call with \`{}\` or \`{"period":"YYYY-MM-DD"}\`. |
|
|
@@ -43035,6 +43042,7 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
|
|
|
43035
43042
|
| \`rost_resolve_error_log\` | \`error_log.resolve\` | Acknowledge or resolve an error log with a required human reason and optional task, issue, or PR link. | Tenant | Call with \`error_log_id\`, \`reason\`, and \`disposition\` \`acknowledged\` or \`resolved\`. |
|
|
43036
43043
|
| \`rost_supersede_error_log\` | \`error_log.supersede\` | Mark an older error log as superseded by a newer in-tenant error log. | Tenant | Call with \`error_log_id\`, \`new_error_log_id\`, and \`reason\`. |
|
|
43037
43044
|
| \`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. |
|
|
43045
|
+
| \`rost_connect_rest_integration\` | \`integration.connect_rest\` | Create or rotate the vault-backed Baserow REST integration for Signal pulls. | Tenant-admin | Use the credential flow with provider \`baserow\`, HTTPS endpoint, scope, secret name, and secret; no vault refs or secrets are returned. |
|
|
43038
43046
|
| \`rost_check_integration_readiness\` | \`integration.readiness\` | Return the connector setup checklist: OAuth env/callback, tenant connection, scopes, latest test state, external verification/CASA, handler availability, and DER-coded next actions. | Tenant | Call with \`{"provider":"google"}\`; metadata only, no secrets or vault refs. |
|
|
43039
43047
|
| \`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>"}\`. |
|
|
43040
43048
|
| \`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. |
|
|
@@ -43131,6 +43139,9 @@ Seat-scoped MCP tokens expose the operating protocol below. The server still che
|
|
|
43131
43139
|
| \`rost_escalate\` | \`escalation.raise\` | Escalate approval-scope or must-escalate work. | Seat | Call with severity, reason, and requested decision. |
|
|
43132
43140
|
| \`rost_file_issue\` | \`friction.file_issue\` | File a Friction issue. | Seat | Call with title, severity, and impact. |
|
|
43133
43141
|
| \`rost_log_work\` | \`work.log\` | Record work performed by the seat. | Seat | Call with summary and evidence. |
|
|
43142
|
+
| \`rost_report_a_signal_reading\` | \`signal.report\` | Propose one draft reading for this seat's own agent-sourced measurable. The reading lands unconfirmed for human review. | Seat | Call with \`{"measurable_id":"<id>","value":42,"note":"read off the source","confidence":"high"}\`. |
|
|
43143
|
+
| \`rost_create_agent_deliverable\` | \`deliverable.create\` | Create a scrubbed durable work output for the acting seat. | Seat | Call with title, kind, summary/content, and optional safe links. |
|
|
43144
|
+
| \`rost_attach_agent_deliverable\` | \`deliverable.attach\` | Attach a scrubbed deliverable to a source run, task, or work order after server-side seat validation. | Seat | Call with title, kind, and the source ids that belong to the acting seat. |
|
|
43134
43145
|
|
|
43135
43146
|
### MCP operation resources
|
|
43136
43147
|
|
|
@@ -43450,7 +43461,7 @@ Set \`ROST_SKILL_INSTALL_ROOT\` only for a sandbox or CI override. Local copies
|
|
|
43450
43461
|
order: 55,
|
|
43451
43462
|
title: "Agent reference map",
|
|
43452
43463
|
summary: "Where CLI sessions, MCP clients, and in-app agents should retrieve {{brand}} guidance before recommending setup changes.",
|
|
43453
|
-
version: "2026-
|
|
43464
|
+
version: "2026-07-02.2",
|
|
43454
43465
|
public: true,
|
|
43455
43466
|
audiences: ["cli", "mcp", "in_app_agent"],
|
|
43456
43467
|
stages: ["company_setup", "graph_design", "charter_design", "staffing", "operating_rhythm"],
|
|
@@ -43535,6 +43546,7 @@ Agents that run on {{brand}}-managed inference draw against a tenant inference b
|
|
|
43535
43546
|
21. confirmations-guide
|
|
43536
43547
|
22. steward-queue-guide
|
|
43537
43548
|
23. sync-rhythm-playbook
|
|
43549
|
+
24. billing-and-pricing-guide
|
|
43538
43550
|
|
|
43539
43551
|
## Workflow to guide map
|
|
43540
43552
|
|
|
@@ -43560,6 +43572,7 @@ Read the listed guide before recommending or running each workflow. Every workfl
|
|
|
43560
43572
|
- Operate local runners and work orders: runner-guide.
|
|
43561
43573
|
- Approve or reject a pending confirmation (human only): confirmations-guide.
|
|
43562
43574
|
- Manage members, settings, and notifications: settings-guide, settings-members-and-invites-guide, notifications-guide.
|
|
43575
|
+
- Explain company-wide billing, payment, invoices, or usage true-ups: billing-and-pricing-guide, then settings-guide.
|
|
43563
43576
|
- Diagnose a failure on any surface: troubleshooting-guide, then security-model-guide.
|
|
43564
43577
|
|
|
43565
43578
|
## Stage map
|
|
@@ -43687,7 +43700,7 @@ Agents can suggest commitments and report progress. They should not create a new
|
|
|
43687
43700
|
order: 61,
|
|
43688
43701
|
title: "Signal guide",
|
|
43689
43702
|
summary: "How to define and read measurables so the company runs on evidence instead of status theater.",
|
|
43690
|
-
version: "2026-07-
|
|
43703
|
+
version: "2026-07-02.3",
|
|
43691
43704
|
public: true,
|
|
43692
43705
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
43693
43706
|
stages: ["operating_rhythm"],
|
|
@@ -43699,6 +43712,7 @@ Agents can suggest commitments and report progress. They should not create a new
|
|
|
43699
43712
|
"signal.get",
|
|
43700
43713
|
"signal.confirm_reading",
|
|
43701
43714
|
"signal.correct_reading",
|
|
43715
|
+
"signal.report",
|
|
43702
43716
|
"measurable.create",
|
|
43703
43717
|
"signal.import",
|
|
43704
43718
|
"measurable_template.list",
|
|
@@ -43755,7 +43769,7 @@ To move off a spreadsheet or another operating tool, upload a scorecard export f
|
|
|
43755
43769
|
|
|
43756
43770
|
## Adopt a measurable template
|
|
43757
43771
|
|
|
43758
|
-
Not sure which measurables to track? \`measurable_template.list\` returns a starter catalog grouped by function (Sales, Finance, Operations, Marketing, HR), each with a unit, direction, cadence, and
|
|
43772
|
+
Not sure which measurables to track? \`measurable_template.list\` returns a starter catalog grouped by function (Sales, Finance, Operations, Marketing, HR), each with a unit, direction, cadence, suggested target, and source-readiness metadata when a known source path exists. Finance templates are explicit: platform billing usage baselines can use safe platform metadata, while tenant customer MRR, QuickBooks AR aging, and QuickBooks gross margin stay blocked until tenant-owned billing/accounting reads ship. \`measurable_template.adopt\` instantiates one against a seat \u2014 the same write path as \`measurable.create\`, so the created measurable is a plain human-owned Signal you log against afterward. Adoption is a human act; the suggested target is just a starting point you can override.
|
|
43759
43773
|
|
|
43760
43774
|
## The leadership scorecard grid
|
|
43761
43775
|
|
|
@@ -43770,7 +43784,15 @@ Once a measurable's number lives in a connected system, you can teach {{brand}}
|
|
|
43770
43784
|
- \`signal.bind\` persists the validated recipe as an inert \`draft\` binding. It requires the \`preview_token\` from a preview of the same recipe, so nothing is bound that was not first seen working.
|
|
43771
43785
|
- \`signal.bind_confirm\` is human-only. It activates the binding (\`draft -> active\`); an agent that calls it produces a pending confirmation instead. Only after a human confirms does the scheduled pull begin writing confirmed readings.
|
|
43772
43786
|
|
|
43773
|
-
|
|
43787
|
+
Discovery always returns a \`recipe_presets\` array; it is empty when {{brand}} does not recognize a safe source type. Today those presets cover Baserow row fields and the generic REST JSON fallback. Google Sheets uses OAuth JSON credentials and is withheld from REST presets until the pull executor extracts and refreshes the Google access token instead of treating the stored credential blob as a bearer token. A preset includes a label, cadence, required metadata, a draft \`rest_for_signals\` recipe, and the host allowlist to preview with. The human still fills in the real Baserow table/row/field or exact REST URL and value path before running \`signal.preview\`; presets are starter recipes, not secret stores.
|
|
43788
|
+
|
|
43789
|
+
Recipes are validated data, never code: a read-only GET, a closed set of non-secret headers, and a restricted scalar path to the value. Every fetch passes one SSRF guard (HTTPS only, a steward-confirmed host allowlist set at bind, and a runtime check that the host does not resolve to a private address). The preset output never contains \`nango://\` handles, vault refs, tokens, or static credential headers. Deterministic pulls write \`integration\`-sourced readings on the measurable's cadence.
|
|
43790
|
+
|
|
43791
|
+
In the web app, the same workflow lives on \`/signal\` in the "Connect a self-filling source" panel. It shows each measurable's setup state \u2014 manual, agent draft, source draft, or auto-filled \u2014 plus the latest safe pull outcome when one exists. Choose a connected source, discover its non-secret metadata, preview a GET URL and value path, bind the working preview as a draft, then confirm the draft before scheduled pulls can write readings. The UI never displays credential material, vault refs, raw response bodies, or recipe secrets; if no connected source exists, connect one from Settings first.
|
|
43792
|
+
|
|
43793
|
+
## Collect a Signal by judgment (the Signal agent)
|
|
43794
|
+
|
|
43795
|
+
Some measurables cannot be a deterministic pull \u2014 the number lives in a PDF, in messy records that need reconciling, or is a judgment estimate of progress. For those, mark the measurable \`agent\`-sourced and let a per-seat Signal agent read it. The agent proposes each reading with \`signal.report\` (scope: seat): one draft reading for one of its OWN seat's agent-sourced measurables, with a \`value\` and a short \`note\` citing the source. The reading lands unconfirmed, exactly like a deterministic draft \u2014 a human clears it with \`signal.confirm_reading\`. \`signal.report\` refuses any measurable not owned by the acting seat and any measurable whose source is not \`agent\`, and it never confirms its own reading. Deliver it as the \`stock/signal-collector\` template (a read-only agent whose only durable grant is \`signal.report\`) or run the \`collect-seat-signals\` how-to from an occupant agent. When the agent cannot read a number confidently \u2014 ambiguous or conflicting sources \u2014 it escalates instead of guessing.
|
|
43774
43796
|
|
|
43775
43797
|
## When to stop for confirmation
|
|
43776
43798
|
|
|
@@ -43785,7 +43807,7 @@ Agents may record readings when the Charter allows it. Agent-reported readings s
|
|
|
43785
43807
|
order: 62,
|
|
43786
43808
|
title: "Friction guide",
|
|
43787
43809
|
summary: "How to capture issues with evidence, rank them, and resolve them without losing ownership.",
|
|
43788
|
-
version: "2026-07-01.
|
|
43810
|
+
version: "2026-07-01.2",
|
|
43789
43811
|
public: true,
|
|
43790
43812
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
43791
43813
|
stages: ["operating_rhythm"],
|
|
@@ -43845,6 +43867,8 @@ Friction, tasks, and escalations are the issue-to-action loop. A seat files, a t
|
|
|
43845
43867
|
- Carry the work as a task: \`task.create\` / \`rost_create_task\` (a commitment between seats). \`task.create\` is \`none\` (no confirmation gate), so an agent can file one directly; an agent's task lands as a **draft** proposal (\`origin: agent_proposal\`) for a human to review and hand off \u2014 not a live offer in the owning seat's accept/decline queue. A seat runs its queue with \`{{cli}} task list|accept|decline|complete\` (\`task.list\`, \`task.accept\`, \`task.decline\`, \`task.complete\`). Link a task to an issue with \`friction.link_task\` / \`rost_link_task_to_friction_issue\`.
|
|
43846
43868
|
- Route a decision: \`escalation.raise\` (seat) / \`rost_escalate\` sends approval-scope or must-escalate work to the Steward queue. Reads are \`escalation.list\` / \`escalation.get\`. See the steward queue guide for resolution.
|
|
43847
43869
|
|
|
43870
|
+
In the app, the Tasks surface exposes the same queue operations for a seat's visible work. Offered handoffs show Accept and Decline actions; Decline opens a reason field and records the reason through \`task.decline\`. Edit opens a separate task form for title, owner, due date, and description changes on non-terminal tasks. These controls are standard focusable disclosures so keyboard and pointer users can operate the queue without dropping to CLI.
|
|
43871
|
+
|
|
43848
43872
|
## Friction assist
|
|
43849
43873
|
|
|
43850
43874
|
\`friction.assist\` / \`rost_assist_friction_issue\` is a read-only advisory for an open issue \u2014 call it with the issue id. It returns the most-similar prior resolved issues with their root causes and recorded decisions, a recurring-pattern flag, and recommended options drawn from that history. It never resolves the issue or records a decision \u2014 a human still resolves via \`friction.resolve\`. The similar-issue recall is deterministic; the short narrative is best-effort and degrades to the deterministic summary when the model is slow or unavailable, so the assist stays responsive and never holds up other work.
|
|
@@ -43985,13 +44009,113 @@ An agent never approves or rejects its own request. \`decisions.decided_by\` is
|
|
|
43985
44009
|
## When to stop
|
|
43986
44010
|
|
|
43987
44011
|
Stop before: approving a Charter, signing a manifest, connecting a tool or credential, minting a token, going live, resolving an escalation or Friction, reparenting or dropping a goal, changing a member role, or updating budget caps. These are human gates by design.`
|
|
44012
|
+
},
|
|
44013
|
+
{
|
|
44014
|
+
slug: "billing-and-pricing-guide",
|
|
44015
|
+
order: 71,
|
|
44016
|
+
title: "Billing and pricing guide",
|
|
44017
|
+
summary: "How {{brand}} packages company-wide access, Stripe billing, and governed-agent usage without per-human-seat pricing.",
|
|
44018
|
+
version: "2026-07-02.4",
|
|
44019
|
+
public: true,
|
|
44020
|
+
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
44021
|
+
stages: ["company_setup", "staffing", "operating_rhythm"],
|
|
44022
|
+
relatedCommandIds: ["settings.get"],
|
|
44023
|
+
legal: {
|
|
44024
|
+
publicRisk: "medium",
|
|
44025
|
+
notes: [
|
|
44026
|
+
"Describes the product packaging model, not tax, accounting, legal, or contract advice.",
|
|
44027
|
+
"Avoids Stripe price ids, secrets, payment details, and unpublished negotiated contract terms."
|
|
44028
|
+
]
|
|
44029
|
+
},
|
|
44030
|
+
sources: [
|
|
44031
|
+
{
|
|
44032
|
+
label: "ADR-0016",
|
|
44033
|
+
internalPath: "docs/adr/0016-commerce-pricing-and-packaging.md",
|
|
44034
|
+
note: "Canonical pricing and packaging decision for the first-client commerce workstream."
|
|
44035
|
+
},
|
|
44036
|
+
{
|
|
44037
|
+
label: "MVP implementation plan",
|
|
44038
|
+
internalPath: "docs/specs/MVP-implementation-plan.md",
|
|
44039
|
+
note: "FR-11 billing and commerce requirements."
|
|
44040
|
+
},
|
|
44041
|
+
{
|
|
44042
|
+
label: "Full repo analysis",
|
|
44043
|
+
internalPath: "docs/research/2026-07-01-rost-full-repo-analysis.md",
|
|
44044
|
+
note: "Identifies commerce as the top first-client blocker."
|
|
44045
|
+
}
|
|
44046
|
+
],
|
|
44047
|
+
body: `# Billing and pricing guide
|
|
44048
|
+
|
|
44049
|
+
{{brand}} is priced for company-wide adoption. A Seat is a function, not a paid human license, so inviting the whole team should not create a per-person tax on running the operating system.
|
|
44050
|
+
|
|
44051
|
+
## Package model
|
|
44052
|
+
|
|
44053
|
+
The launch billing model has two parts:
|
|
44054
|
+
|
|
44055
|
+
- **Company base subscription.** One company subscription covers the operating system: Compass, Responsibility Graph, Cascade, Signal, Friction, Sync, Settings, reference docs, and governed agent setup.
|
|
44056
|
+
- **Governed-agent usage.** The base subscription includes a configurable allowance for billable successful agent work. Usage above the included allowance is metered from service-owned closed-period billing finalization.
|
|
44057
|
+
|
|
44058
|
+
Human members are not the billing unit. A company can invite the people needed to run the operating rhythm without paying for each human login. Seat or member limits may still exist as entitlement controls for abuse prevention, package design, or enterprise contracts, but they are not the default subscription meter.
|
|
44059
|
+
|
|
44060
|
+
## How usage is measured
|
|
44061
|
+
|
|
44062
|
+
Agent usage is measured from the same billing-grade records that power the AI-workforce ROI view:
|
|
44063
|
+
|
|
44064
|
+
- Agent runs record token/cost data as they execute.
|
|
44065
|
+
- \`usage.snapshot\` freezes usage into \`usage_period_snapshot\` for ROI/reporting.
|
|
44066
|
+
- Billing true-up uses a service-owned closed-period finalization path, not mutable running totals and not a tenant-created current-period snapshot.
|
|
44067
|
+
- A true-up must be idempotent and no-overcharge: the same closed period should not be reported twice.
|
|
44068
|
+
|
|
44069
|
+
The first meter is billable-successful-agent-run based because the current platform records per-run usage and cost. The v1 overage quantity starts from successful real runs, excludes setup/sandbox dry runs and other non-billable rehearsals, and keeps failed, timed-out, and cancelled runs visible in the ROI and exception views without charging them as overage. The usage layer should keep enough metadata to support future accepted-value or outcome-based units without changing the subscription model.
|
|
44070
|
+
|
|
44071
|
+
Billable true-up is service-owned and runs after a period is closed. The tenant-facing \`usage.snapshot\` command is an ROI/reporting tool; an early current-period snapshot must not become, replace, or block the final billable close. The billing close records a separate \`billing_usage_true_ups\` row keyed by tenant and period with the source kind, included allowance, billable overage, status, and Stripe meter event identifier. A closed usage snapshot is preferred only when it was captured after the period ended; otherwise the service close uses a live rollup for that closed period so an early ROI snapshot cannot undercount the invoice true-up.
|
|
44072
|
+
|
|
44073
|
+
## Stripe boundary
|
|
44074
|
+
|
|
44075
|
+
Stripe owns payment collection, payment methods, invoices, and hosted customer self-service.
|
|
44076
|
+
|
|
44077
|
+
{{brand}} stores only safe commerce metadata: Stripe customer/subscription identifiers, plan state, entitlement state, usage true-up state, and safe audit/error metadata. Card numbers, bank details, payment-method secrets, Stripe API secrets, webhook signing secrets, and raw payment details must never be stored in {{brand}}, entered into an agent prompt, written to logs, or copied into tool arguments.
|
|
44078
|
+
|
|
44079
|
+
## Design partners and test tenants
|
|
44080
|
+
|
|
44081
|
+
Test and design-partner companies may run without a Stripe customer or subscription. They are invite-flagged plans with explicit billing state and model safety caps. Do not use fake coupons or hidden payment workarounds to represent them.
|
|
44082
|
+
|
|
44083
|
+
When a company converts to paid, Stripe subscription state plus the tenant plan become the authority for the company subscription. Account entitlements remain user/account-scoped capability grants or limit overrides; they should not make the whole company's paid access depend on one owner's account grant. Limitable gates resolve through a paid-plan-aware entitlement helper: explicit service-owned \`account_entitlements\` rows override the tenant default for a specific user and tenant, while active paid tenant state selects the paid-plan default. Empty metadata means unlimited today; future tenant-wide caps must use a service-owned billing configuration surface, not client-editable tenant settings.
|
|
44084
|
+
|
|
44085
|
+
## Billing versus inference budget
|
|
44086
|
+
|
|
44087
|
+
There are three separate allowances or caps:
|
|
44088
|
+
|
|
44089
|
+
- **Subscription usage allowance:** the included billable-successful-agent-run allowance in the paid company plan.
|
|
44090
|
+
- **Platform onboarding model allowance:** the app-provided setup tokens used during assisted onboarding.
|
|
44091
|
+
- **Inference hard cap:** a safety and spend-control setting for {{brand}}-managed model calls.
|
|
44092
|
+
|
|
44093
|
+
The inference hard cap is not the subscription invoice, and raising it is not the same as buying a plan. The onboarding model allowance is also separate from the subscription usage allowance.
|
|
44094
|
+
|
|
44095
|
+
A company may bring its own provider key. BYOK changes which provider account pays eligible model calls; it does not change the company base subscription, the Charter, the tool guard, human confirmations, or billing for governed-agent platform usage.
|
|
44096
|
+
|
|
44097
|
+
## What users should see
|
|
44098
|
+
|
|
44099
|
+
The billing area in Settings answers:
|
|
44100
|
+
|
|
44101
|
+
- Which plan is active.
|
|
44102
|
+
- Whether the company is on free setup access, design-partner access, or a paid Stripe-backed subscription.
|
|
44103
|
+
- Where tenant owners can start Checkout or open Stripe's hosted portal for payment method and invoice management.
|
|
44104
|
+
- Recent Stripe invoice summaries when Stripe billing is configured for the company.
|
|
44105
|
+
- Human/member coverage plus agent-seat and live-agent coverage.
|
|
44106
|
+
- The latest subscription usage snapshot from the immutable usage-period table.
|
|
44107
|
+
- The latest true-up status, including whether overage was reported, skipped because the included allowance covered the period, or needs retry.
|
|
44108
|
+
|
|
44109
|
+
Settings labels subscription usage separately from the setup model allowance and the inference hard cap. Payment methods and invoice payment stay in Stripe. {{brand}} renders subscription ids/status and invoice summaries only; it does not store card, bank, payment-method, or invoice-payment details.
|
|
44110
|
+
|
|
44111
|
+
Do not claim that a live charge happened unless Stripe test/live evidence proves it. For internal or design-partner validation, use Stripe test mode only unless a human owner explicitly completes a real live-payment step.`
|
|
43988
44112
|
},
|
|
43989
44113
|
{
|
|
43990
44114
|
slug: "settings-guide",
|
|
43991
44115
|
order: 72,
|
|
43992
44116
|
title: "Settings guide",
|
|
43993
44117
|
summary: "How to use Settings as the control plane for company access, channels, providers, tokens, and operating defaults.",
|
|
43994
|
-
version: "2026-07-
|
|
44118
|
+
version: "2026-07-02.2",
|
|
43995
44119
|
public: true,
|
|
43996
44120
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
43997
44121
|
stages: ["company_setup", "staffing"],
|
|
@@ -44021,6 +44145,7 @@ Settings is one page with anchored sections, not separate sub-pages. Documented
|
|
|
44021
44145
|
- Company profile and workspace defaults. Rename the company from Settings or with \`tenant.rename\` (CLI: \`{{cli}} settings rename --company "<name>"\`); the command is owner-only, human-gated, and records a rename event with old and new names.
|
|
44022
44146
|
- Members, invites, and tenant roles.
|
|
44023
44147
|
- Agent access tokens for local agents.
|
|
44148
|
+
- Billing plan, hosted Stripe actions, invoices, subscription usage coverage, and latest true-up status.
|
|
44024
44149
|
- Provider and integration configuration.
|
|
44025
44150
|
- Slack channels (the channel bindings that route escalations, Sync Briefs, and reports to a seat or cluster).
|
|
44026
44151
|
- Connected machines (the paired Runners that run scheduled local work orders).
|
|
@@ -44221,7 +44346,7 @@ The runner should not store raw credentials in local notes, prompts, or logs. It
|
|
|
44221
44346
|
order: 76,
|
|
44222
44347
|
title: "Stock agents guide",
|
|
44223
44348
|
summary: "How to use stock agent templates as starting points while preserving seat-specific Charters and human approval.",
|
|
44224
|
-
version: "2026-
|
|
44349
|
+
version: "2026-07-01.1",
|
|
44225
44350
|
public: true,
|
|
44226
44351
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
44227
44352
|
stages: ["staffing"],
|
|
@@ -44248,7 +44373,7 @@ Before dry run, review the template's responsibilities, tool assumptions, escala
|
|
|
44248
44373
|
|
|
44249
44374
|
## Template catalog
|
|
44250
44375
|
|
|
44251
|
-
|
|
44376
|
+
Eight stock templates ship today. Every one is draft-first, escalates the actions in its safety boundaries, and keeps spend, external sends, and credential scope human-owned until a Steward sets a threshold. Read the live list with \`agent_template.list\` / \`rost_list_agent_templates\` or the \`rost://agents/templates\` resource.
|
|
44252
44377
|
|
|
44253
44378
|
### AP Clerk \u2014 \`stock/ap-clerk\`
|
|
44254
44379
|
|
|
@@ -44299,6 +44424,13 @@ Seven stock templates ship today. Every one is draft-first, escalates the action
|
|
|
44299
44424
|
- Default tools: Release artifacts read; Issue tracker draft.
|
|
44300
44425
|
- Safety boundary: release approval, production changes, customer-impacting risk, security/privacy, and conflicting evidence escalate.
|
|
44301
44426
|
|
|
44427
|
+
### Signal collector \u2014 \`stock/signal-collector\`
|
|
44428
|
+
|
|
44429
|
+
- Function: Ops/Finance. Tier: \`2 \xB7 Fast-follow\`.
|
|
44430
|
+
- Responsibilities: Read this seat's agent-sourced measurables; Propose draft readings with cited sources; Escalate any number it cannot read confidently.
|
|
44431
|
+
- Default tools: Signal draft readings.
|
|
44432
|
+
- Safety boundary: reads only this seat's agent-sourced measurables and proposes each as a draft a human confirms; ambiguous or conflicting numbers escalate rather than guess, and it never confirms its own readings.
|
|
44433
|
+
|
|
44302
44434
|
## Create from a template (CLI or MCP)
|
|
44303
44435
|
|
|
44304
44436
|
1. List templates: \`agent_template.list\` / \`rost_list_agent_templates\` with \`{}\` (scope: tenant).
|
|
@@ -44404,7 +44536,7 @@ Name the failing surface, collect evidence, recommend the smallest correction, a
|
|
|
44404
44536
|
order: 78,
|
|
44405
44537
|
title: "AI model data handling guide",
|
|
44406
44538
|
summary: "How {{brand}} cloud agents, local MCP sessions, runners, BYOK, and connected tools handle model-bound data.",
|
|
44407
|
-
version: "2026-07-01.
|
|
44539
|
+
version: "2026-07-01.3",
|
|
44408
44540
|
public: true,
|
|
44409
44541
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
44410
44542
|
stages: ["company_setup", "staffing", "operating_rhythm"],
|
|
@@ -44491,7 +44623,7 @@ Cloud prompts should not include raw credentials, long exports, unrelated custom
|
|
|
44491
44623
|
|
|
44492
44624
|
## BYOK Anthropic
|
|
44493
44625
|
|
|
44494
|
-
Tenant BYOK changes which provider account is used for eligible \`cloud\` model calls. It does not loosen tool permissions, human gates, tenant isolation, or audit requirements.
|
|
44626
|
+
Tenant BYOK changes which provider account is used for eligible \`cloud\` model calls. It does not loosen tool permissions, human gates, tenant isolation, or audit requirements. The same tenant-key resolution also covers the read-only advisory analyzers (friction assist, compass-alignment drift, and the coach draft-guide): when a tenant has saved its own Anthropic key those advisory calls use it and are metered on that key, otherwise they fall back to the platform key and are recorded against the managed hard cap and platform allowance before returning advisory text. When neither key is available, they degrade to their deterministic summary rather than failing.
|
|
44495
44627
|
|
|
44496
44628
|
{{brand}} also includes a capped, app-provided Claude allowance for agent-assisted setup so a new company can complete onboarding before saving its own key. That allowance is shown in the onboarding provider card and in Settings as an approximate number of included setup tokens \u2014 never a dollar amount \u2014 and is enforced server-side on every platform-key call: an agent turn or an org-intake step reserves the allowance before the provider request and settles actual usage after. When the included tokens are used, agent-assisted steps stop before calling the provider and prompt you to add your own Anthropic API key, while non-AI setup steps stay available. Saving a tenant Anthropic key (BYOK) switches those calls to your provider account and does not draw down the included allowance.
|
|
44497
44629
|
|
|
@@ -44580,7 +44712,7 @@ When asked about AI data handling:
|
|
|
44580
44712
|
order: 79,
|
|
44581
44713
|
title: "Security model guide",
|
|
44582
44714
|
summary: "How {{brand}} protects tenant data, credentials, tool calls, and human decisions across web, MCP, CLI, and agents.",
|
|
44583
|
-
version: "2026-
|
|
44715
|
+
version: "2026-07-01.1",
|
|
44584
44716
|
public: true,
|
|
44585
44717
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
44586
44718
|
stages: ["company_setup", "staffing", "operating_rhythm"],
|
|
@@ -44641,7 +44773,7 @@ Do not store raw passwords, OAuth tokens, API keys, full \`.env\` files, session
|
|
|
44641
44773
|
|
|
44642
44774
|
## Access and isolation
|
|
44643
44775
|
|
|
44644
|
-
Every tenant-scoped product record is scoped by \`tenant_id\`, and database policies are written so one tenant cannot read another tenant's data through normal application access. Server-side tenant context comes from trusted server-side authority, not from client-supplied tenant ids: browser and CLI user sessions use authenticated Supabase claims plus membership, MCP sessions use the authenticated MCP token record, and runner sessions use the authenticated runner credential record.
|
|
44776
|
+
Every tenant-scoped product record is scoped by \`tenant_id\`, and database policies are written so one tenant cannot read another tenant's data through normal application access. Server-side tenant context comes from trusted server-side authority, not from client-supplied tenant ids: browser and CLI user sessions use authenticated Supabase claims plus membership, MCP sessions use the authenticated MCP token record, and runner sessions use the authenticated runner credential record. Raw server SQL over tenant-scoped tables is also checked in CI so those statements carry tenant context explicitly.
|
|
44645
44777
|
|
|
44646
44778
|
Human access is role-based through tenant membership:
|
|
44647
44779
|
|
|
@@ -44675,7 +44807,7 @@ Tool selection is never authorization. A selected tool in setup records the requ
|
|
|
44675
44807
|
- Decisions are human-decided records. Agents can draft or recommend, but durable decisions require a human.
|
|
44676
44808
|
- Charters, Compass versions, and accepted knowledge change by supersession instead of silent overwrite.
|
|
44677
44809
|
- Agent runs, work orders, tool calls, Skill activations, notification failures, and integration tests leave diagnostic records that can be inspected without exposing raw secrets.
|
|
44678
|
-
- Product-visible server/integration/runtime failures are recorded in \`error_logs\` when tenant context is available; pre-auth or tenant-less failures fall back to structured server logging.
|
|
44810
|
+
- Product-visible server/integration/runtime failures are recorded in \`error_logs\` when tenant context is available; pre-auth or tenant-less failures fall back to structured server logging. MCP route failures return safe JSON instead of framework HTML errors, so local clients can key off the structured error and request id.
|
|
44679
44811
|
|
|
44680
44812
|
When reporting evidence to a human, summarize the relevant fields and include stable ids only when they help trace the record. Do not paste raw secrets, full provider responses, full prompt text, or broad exports into status updates.
|
|
44681
44813
|
|
|
@@ -46024,6 +46156,7 @@ var COMMAND_MANIFEST = [
|
|
|
46024
46156
|
{ "id": "goal.unbind_measurable", "namespace": "goal", "action": "unbind_measurable", "title": "Unbind a Signal from a Cascade goal", "description": "Remove a measurable's drives_status binding from a goal. The goal keeps its last status; unbinding only stops future signal-driven updates.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "goal_id", "flag": "goal-id", "type": "string", "required": true }, { "name": "measurable_id", "flag": "measurable-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Remove a Signal's drives_status binding from a goal; the goal keeps its last status and stops receiving signal-driven updates." },
|
|
46025
46157
|
{ "id": "goal.update", "namespace": "goal", "action": "update", "title": "Update Cascade goal", "description": "Update a goal's title or definition of done. Topology (parent/seat) and status have dedicated commands.", "requiredScope": "tenant_admin", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "goal_id", "flag": "goal-id", "type": "string", "required": true }, { "name": "title", "flag": "title", "type": "string", "required": false }, { "name": "definition_of_done", "flag": "definition-of-done", "type": "string", "required": false }], "hasComplexInput": false, "help": "Update a goal's title or definition of done; topology and status have dedicated commands." },
|
|
46026
46158
|
{ "id": "graph.get", "namespace": "graph", "action": "get", "title": "Get Responsibility Graph", "description": "Return the tenant's Responsibility Graph: seats, edges, root, occupants, and status rollups.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [], "hasComplexInput": false, "help": "Read the Responsibility Graph to discover seat ids, parentage, occupants, and status before mutating or routing work." },
|
|
46159
|
+
{ "id": "integration.connect_rest", "namespace": "integration", "action": "connect_rest", "title": "Connect REST integration", "description": "Create or rotate the tenant Baserow REST integration using a vault-backed secret. Stores endpoint metadata only; never returns secrets or vault refs.", "requiredScope": "tenant_admin", "confirmation": "credential_flow", "exposeOverMcp": true, "fields": [{ "name": "provider", "flag": "provider", "type": "enum", "required": true, "enumValues": ["baserow"] }, { "name": "endpoint_url", "flag": "endpoint-url", "type": "string", "required": true }, { "name": "scope_description", "flag": "scope-description", "type": "string", "required": true }, { "name": "secret_name", "flag": "secret-name", "type": "string", "required": true }, { "name": "account_label", "flag": "account-label", "type": "string", "required": false }], "hasComplexInput": false, "secretBlocked": true, "help": "Create or rotate a vault-backed Baserow REST integration for Signal pulls. Use the credential flow; never pass secrets through CLI argv." },
|
|
46027
46160
|
{ "id": "integration.discover", "namespace": "integration", "action": "discover", "title": "Discover a connection for signals", "description": "Read-only introspection of a connected source for signal binding. Returns non-secret adapter metadata and a rest-for-signals recipe skeleton to author against signal.preview. Exposes no secrets.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "integration_id", "flag": "integration-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Read-only introspection of a connected source: returns non-secret metadata + a recipe skeleton to author a signal pull against. No network." },
|
|
46028
46161
|
{ "id": "integration.list", "namespace": "integration", "action": "list", "title": "List integrations", "description": "List tenant integration metadata and health status. Returns account/scopes/capabilities only; never secrets or vault refs.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "provider", "flag": "provider", "type": "string", "required": false }], "hasComplexInput": false, "help": "List connected integrations and their metadata-only health state before enabling a connector-backed tool." },
|
|
46029
46162
|
{ "id": "integration.readiness", "namespace": "integration", "action": "readiness", "title": "Check integration readiness", "description": "Return a safe connector setup checklist for operators and agents. Starts with Google and exposes no secrets.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "provider", "flag": "provider", "type": "enum", "required": false, "enumValues": ["google"] }], "hasComplexInput": false, "help": "Read the connector setup checklist before relying on Google-backed agent work; the checklist names missing config, connection, scopes, external verification, and handler blockers." },
|
|
@@ -46079,6 +46212,7 @@ var COMMAND_MANIFEST = [
|
|
|
46079
46212
|
{ "id": "signal.import", "namespace": "signal", "action": "import", "title": "Import Signals from CSV", "description": "Bulk-import measurable definitions and their historical readings from a parsed scorecard export (e.g. a ninety CSV). Owners are seat names resolved to seats; readings are human-confirmed. Idempotent \u2014 re-import upserts by (measurable, period, cadence). Re-importing a measurable at a different cadence is rejected, not overwritten.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "dry_run", "flag": "dry-run", "type": "boolean", "required": false }], "hasComplexInput": true, "help": "Bulk-import measurables + historical readings from a parsed scorecard export (owners resolve to seats); idempotent, human-confirmed, re-import upserts by period." },
|
|
46080
46213
|
{ "id": "signal.list", "namespace": "signal", "action": "list", "title": "List Signals", "description": "List measurable definitions with their latest reading and on/off-track state. Seat-scoped callers see only their own seat.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": false }], "hasComplexInput": false, "help": "List Signals to find measurable ids and current on/off-track state before recording or correcting readings." },
|
|
46081
46214
|
{ "id": "signal.preview", "namespace": "signal", "action": "preview", "title": "Preview a signal source", "description": "Execute a candidate rest-for-signals recipe LIVE and read-only against an allowlisted HTTPS source, returning the extracted scalar and a short-lived preview_token required by signal.bind. Guarded (SSRF + restricted JSONPath); writes a signal_pull_log row. Never mutates.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "measurable_id", "flag": "measurable-id", "type": "string", "required": true }, { "name": "integration_id", "flag": "integration-id", "type": "string", "required": true }, { "name": "cadence", "flag": "cadence", "type": "enum", "required": true, "enumValues": ["daily", "weekly", "monthly", "quarterly", "annual"] }, { "name": "host_allowlist", "flag": "host-allowlist", "type": "array", "required": true, "itemType": "string" }], "hasComplexInput": true, "help": "Run a candidate recipe live but read-only against an allowlisted HTTPS source; returns the extracted value + a short-lived preview_token. Never mutates; the credential is resolved from the connection at execution." },
|
|
46215
|
+
{ "id": "signal.report", "namespace": "signal", "action": "report", "title": "Report a Signal reading", "description": "A per-seat Signal agent proposes one draft reading for one of its OWN seat's agent-sourced measurables (a judgment/transform pull \u2014 reading a number off a document, reconciling messy data, estimating progress). The reading lands unconfirmed; a human confirms it with signal.confirm_reading. Refuses any measurable not owned by the acting seat or whose source is not 'agent'.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "measurable_id", "flag": "measurable-id", "type": "string", "required": true }, { "name": "value", "flag": "value", "type": "number", "required": true }, { "name": "period_start", "flag": "period-start", "type": "string", "required": false }, { "name": "note", "flag": "note", "type": "string", "required": false }, { "name": "confidence", "flag": "confidence", "type": "enum", "required": false, "enumValues": ["low", "medium", "high"] }], "hasComplexInput": false, "help": "A per-seat Signal agent proposes one draft reading for its own seat's agent-sourced measurable (a judgment/transform pull). The reading lands unconfirmed; a human confirms it with signal.confirm_reading. Refuses non-agent-sourced or other-seat measurables.", "example": { "measurable_id": "01900001-0001-7001-8001-000000000001", "value": 42, "note": "Read off the Q3 close PDF, page 2 \u2014 42 reconciled invoices this week.", "confidence": "high" } },
|
|
46082
46216
|
{ "id": "signup.provision_tenant", "namespace": "signup", "action": "provision_tenant", "title": "Create company", "description": "Provision a new company (tenant) for the authenticated CLI user with no web step.", "requiredScope": "user", "confirmation": "none", "exposeOverMcp": false, "fields": [{ "name": "company_name", "flag": "company-name", "type": "string", "required": true }], "hasComplexInput": false, "help": "Create the company headlessly when the CLI session has no tenant yet; it becomes the user's active tenant so the rest of setup runs with no web step." },
|
|
46083
46217
|
{ "id": "skill.assign_to_seat", "namespace": "skill", "action": "assign_to_seat", "title": "Assign skill to seat", "description": "Propose or human-approve a published immutable skill version for a Seat after checking required and optional tool dependencies.", "requiredScope": "seat", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }, { "name": "slug", "flag": "slug", "type": "string", "required": false }, { "name": "skill_version_id", "flag": "skill-version-id", "type": "string", "required": false }, { "name": "status", "flag": "status", "type": "enum", "required": false, "enumValues": ["proposed", "approved"] }, { "name": "rationale", "flag": "rationale", "type": "string", "required": true }, { "name": "allow_blocked_proposal", "flag": "allow-blocked-proposal", "type": "boolean", "required": false }], "hasComplexInput": false, "help": "Propose or human-approve a published Skill for a Seat after dependency checks. Missing required tools block approval; optional tools are warnings only." },
|
|
46084
46218
|
{ "id": "skill.assigned.list", "namespace": "skill", "action": "assigned.list", "title": "List assigned skills", "description": "List approved skill assignments for a Seat, including immutable version, dependency status, rationale, and approval time. Seat-scoped callers can only read their own assignments.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": false }], "hasComplexInput": false, "help": "List approved Skills assigned to a Seat before loading instructions into a run. A seat-scoped token can only read its own assigned Skills." },
|