@rosthq/cli 0.5.28 → 0.5.30
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.d.ts.map +1 -1
- package/dist/index.js +75 -37
- package/dist/index.js.map +3 -3
- package/dist/operations.d.ts.map +1 -1
- package/dist/signup.d.ts +8 -2
- package/dist/signup.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,EAAoB,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAerE,KAAK,KAAK,GAAG;IACX,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAK1C,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,EAAE,CAAC,EAAE,KAAK,CAAC;IACX,KAAK,CAAC,EAAE,OAAO,gBAAgB,CAAC;IAChC,WAAW,CAAC,EAAE,OAAO,mBAAmB,CAAC;IACzC,cAAc,CAAC,EAAE,OAAO,yBAAyB,CAAC;CACnD,CAAC;AAEF,wBAAsB,IAAI,CAAC,IAAI,WAAwB,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,EAAoB,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAerE,KAAK,KAAK,GAAG;IACX,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAK1C,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,EAAE,CAAC,EAAE,KAAK,CAAC;IACX,KAAK,CAAC,EAAE,OAAO,gBAAgB,CAAC;IAChC,WAAW,CAAC,EAAE,OAAO,mBAAmB,CAAC;IACzC,cAAc,CAAC,EAAE,OAAO,yBAAyB,CAAC;CACnD,CAAC;AAEF,wBAAsB,IAAI,CAAC,IAAI,WAAwB,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAmPnG;AA6cD,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAUxF"}
|
package/dist/index.js
CHANGED
|
@@ -41758,7 +41758,7 @@ When operating through CLI or MCP, create fewer seats first and ask for confirma
|
|
|
41758
41758
|
order: 30,
|
|
41759
41759
|
title: "Charter design playbook",
|
|
41760
41760
|
summary: "How to draft strong Charters that work for human, agent, and hybrid seats.",
|
|
41761
|
-
version: "2026-06-
|
|
41761
|
+
version: "2026-06-29.1",
|
|
41762
41762
|
public: true,
|
|
41763
41763
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
41764
41764
|
stages: ["charter_design", "staffing"],
|
|
@@ -42257,7 +42257,7 @@ Use the lower-level commands after health names a finding: \`agent.get_run\` for
|
|
|
42257
42257
|
order: 46,
|
|
42258
42258
|
title: "Tool access and vault",
|
|
42259
42259
|
summary: "How to give agents access to tools without exposing raw credentials or expanding authority by accident.",
|
|
42260
|
-
version: "2026-06-
|
|
42260
|
+
version: "2026-06-30.1",
|
|
42261
42261
|
public: true,
|
|
42262
42262
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
42263
42263
|
stages: ["staffing"],
|
|
@@ -42307,15 +42307,15 @@ For an API with no dedicated connector, the generic REST tool lets a seat call a
|
|
|
42307
42307
|
|
|
42308
42308
|
## Gmail connector
|
|
42309
42309
|
|
|
42310
|
-
The native Gmail handlers run inside the same broker boundary as the REST and Slack connectors: every call passes the server guard and writes an audit row, and the vaulted Google OAuth token is bound only inside a credential closure \u2014 the agent never sees it, and both the access and refresh tokens are redacted from anything a handler returns. \`gmail.read\` (read scoped inbox) and \`gmail.draft\` (compose a draft, never send) are autonomous-eligible. \`gmail.send\` is approval-gated: it never sends autonomously \u2014 it holds the action for steward approval. A sandbox dry run previews the intended read/draft/held-send with no Gmail request and without opening the vault. Live external Gmail send stays gated on Google verification and domain cutover (DER-880 / DER-881)
|
|
42310
|
+
The native Gmail handlers run inside the same broker boundary as the REST and Slack connectors: every call passes the server guard and writes an audit row, and the vaulted Google OAuth token is bound only inside a credential closure \u2014 the agent never sees it, and both the access and refresh tokens are redacted from anything a handler returns. \`gmail.read\` (read scoped inbox) and \`gmail.draft\` (compose a draft, never send) are autonomous-eligible when a tenant has a connected Google credential. \`gmail.send\` is approval-gated: it never sends autonomously \u2014 it holds the action for steward approval. A sandbox dry run previews the intended read/draft/held-send with no Gmail request and without opening the vault. For partner demos before Google verification is complete, use sandbox dry runs, setup previews, and approval-held examples as the demo-safe substitute. Live external Gmail send stays gated on Google verification and domain cutover (DER-880 / DER-881).
|
|
42311
42311
|
|
|
42312
42312
|
## Google connector status
|
|
42313
42313
|
|
|
42314
|
-
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. Sheets
|
|
42314
|
+
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 read/draft, bounded Sheets read, and approval-held Sheets write handlers run through the guarded broker when Google is connected; connecting Google still does not bypass the signed Charter manifest, tenant policy ceiling, credential vault, or tool-call audit. Sheet grants should use exact signed argument bindings for approved spreadsheet ids and ranges.
|
|
42315
42315
|
|
|
42316
42316
|
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.
|
|
42317
42317
|
|
|
42318
|
-
\`integration.readiness\` / \`{{cli}} integration readiness --provider google --json\` / \`rost_check_integration_readiness\` returns the same setup checklist Settings shows: OAuth env and callback status, tenant connection state, granted scopes, latest test state, external verification/CASA caveats, handler availability, and the next Linear issue or action. The checklist is metadata-only. It never returns access tokens, refresh tokens, client secrets, vault refs, or raw provider responses.
|
|
42318
|
+
\`integration.readiness\` / \`{{cli}} integration readiness --provider google --json\` / \`rost_check_integration_readiness\` returns the same setup checklist Settings shows: OAuth env and callback status, tenant connection state, granted scopes, latest test state, the demo-safe partner path, external verification/CASA caveats, handler availability, and the next Linear issue or action. The checklist is metadata-only. It never returns access tokens, refresh tokens, client secrets, vault refs, or raw provider responses.
|
|
42319
42319
|
|
|
42320
42320
|
## One write-only credential flow across every surface
|
|
42321
42321
|
|
|
@@ -42346,7 +42346,7 @@ There is exactly one way to give a connected tool its credential, and it is the
|
|
|
42346
42346
|
order: 47,
|
|
42347
42347
|
title: "Available tools guide",
|
|
42348
42348
|
summary: "How to think about tool categories available to seats and what each category should be used for.",
|
|
42349
|
-
version: "2026-06-
|
|
42349
|
+
version: "2026-06-30.1",
|
|
42350
42350
|
public: true,
|
|
42351
42351
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
42352
42352
|
stages: ["staffing"],
|
|
@@ -42392,14 +42392,14 @@ Agents should explain the job, the required tool category, the minimum permissio
|
|
|
42392
42392
|
|
|
42393
42393
|
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.
|
|
42394
42394
|
|
|
42395
|
-
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/method/path allowlist and credential exist, \`slack.post_message\` for a bound Slack channel, and
|
|
42395
|
+
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/method/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.`
|
|
42396
42396
|
},
|
|
42397
42397
|
{
|
|
42398
42398
|
slug: "mcp-and-cli-guide",
|
|
42399
42399
|
order: 48,
|
|
42400
42400
|
title: "CLI and MCP installation guide",
|
|
42401
42401
|
summary: "Install the public CLI, register remote token-backed MCP clients, and find the full command and tool catalog.",
|
|
42402
|
-
version: "2026-06-
|
|
42402
|
+
version: "2026-06-30.1",
|
|
42403
42403
|
public: true,
|
|
42404
42404
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
42405
42405
|
stages: ["company_setup", "staffing"],
|
|
@@ -42522,9 +42522,9 @@ Commands below use angle-bracket placeholders. The CLI prints the real, fully-re
|
|
|
42522
42522
|
A {{brand}} **account** (the human identity) is created with Google sign-in \u2014 in the browser at \`/signup\`, or headlessly via \`{{cli}} login --device\` (a human approves the code in any browser). A **company** (tenant) can then be created either way:
|
|
42523
42523
|
|
|
42524
42524
|
- **Browser:** at \`/signup\`, name your company, then return to the CLI.
|
|
42525
|
-
- **Headless (no browser step):** once logged in, run \`{{cli}} signup --company "<name>"\`.
|
|
42525
|
+
- **Headless (no browser step):** once logged in, run \`{{cli}} signup --company "<name>"\`. If the account has no active company yet, this provisions the first company for your session and makes it active, so \`{{cli}} onboard status\` and every other tenant-scoped command work immediately. This is the recommended path for an autonomous agent setting up from scratch.
|
|
42526
42526
|
|
|
42527
|
-
If you run a tenant-scoped command before any company exists, the CLI tells you both options.
|
|
42527
|
+
If you run a tenant-scoped command before any company exists, the CLI tells you both options. \`{{cli}} signup --company\` is not a second-company creation command: running it again returns the active company, names the company you requested, and says that no new company was created. The default output is human-readable; add \`--json\` only when an automation needs the raw command output. To inspect or switch among companies you can already access, use \`{{cli}} tenants\` and \`{{cli}} use <tenant-slug-or-id>\`. Additional company creation is not exposed as a public self-serve CLI path in this milestone.
|
|
42528
42528
|
|
|
42529
42529
|
## Install the CLI
|
|
42530
42530
|
|
|
@@ -42788,7 +42788,7 @@ These are the security posture rules for operating after install \u2014 a checkl
|
|
|
42788
42788
|
| \`{{cli}} login\` | Open browser login and store the CLI session. | User session | \`{{cli}} login\` |
|
|
42789
42789
|
| \`{{cli}} login --device\` | Device-code login for a headless agent: prints a short code + URL, a human approves in any browser, the CLI polls until authorized \u2014 no browser session needed on the agent's machine. | User session | \`{{cli}} login --device\` |
|
|
42790
42790
|
| \`{{cli}} logout\` | Clear the local CLI session. | Local session | \`{{cli}} logout\` |
|
|
42791
|
-
| \`{{cli}} signup [--company "<name>"]\` | With no flag, open/print the web signup page. With \`--company\`,
|
|
42791
|
+
| \`{{cli}} signup [--company "<name>"] [--json]\` | With no flag, open/print the web signup page. With \`--company\`, bootstrap the first company headlessly for the logged-in session. If one is already active, it returns that company and says no new company was created. Add \`--json\` for machine-readable output. | Public (\`--company\` needs a login session) | \`{{cli}} signup --company "Acme"\` |
|
|
42792
42792
|
| \`{{cli}} whoami\` | Show the authenticated user, accessible tenant roles, and the active tenant (\`current_tenant_id\`). | User | \`{{cli}} whoami\` |
|
|
42793
42793
|
| \`{{cli}} tenants\` | List tenants the user can access; the active one is marked \`current\`. | User | \`{{cli}} tenants\` |
|
|
42794
42794
|
| \`{{cli}} use <tenant>\` | Select a tenant slug or id as the active tenant for the session. It persists, so a following \`{{cli}} whoami\` reports it as \`current_tenant_id\`. | User | \`{{cli}} use acme-ops\` |
|
|
@@ -43709,7 +43709,7 @@ Agents may record readings when the Charter allows it. Agent-reported readings s
|
|
|
43709
43709
|
order: 62,
|
|
43710
43710
|
title: "Friction guide",
|
|
43711
43711
|
summary: "How to capture issues with evidence, rank them, and resolve them without losing ownership.",
|
|
43712
|
-
version: "2026-06-
|
|
43712
|
+
version: "2026-06-29.1",
|
|
43713
43713
|
public: true,
|
|
43714
43714
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
43715
43715
|
stages: ["operating_rhythm"],
|
|
@@ -43911,7 +43911,7 @@ Stop before: approving a Charter, signing a manifest, connecting a tool or crede
|
|
|
43911
43911
|
order: 72,
|
|
43912
43912
|
title: "Settings guide",
|
|
43913
43913
|
summary: "How to use Settings as the control plane for company access, channels, providers, tokens, and operating defaults.",
|
|
43914
|
-
version: "2026-06-
|
|
43914
|
+
version: "2026-06-29.1",
|
|
43915
43915
|
public: true,
|
|
43916
43916
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
43917
43917
|
stages: ["company_setup", "staffing"],
|
|
@@ -43950,7 +43950,7 @@ When a settings source is temporarily unavailable, the app keeps the route open
|
|
|
43950
43950
|
|
|
43951
43951
|
## Integration health
|
|
43952
43952
|
|
|
43953
|
-
\`integration.list\` lists connector metadata for CLI and MCP operators, \`integration.readiness\` returns the setup checklist, \`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, checklist status, DER-coded next actions, and health only; they never return vault references, access tokens, refresh tokens, client secrets, 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 readiness facts and test action beside Connect/Reconnect, showing whether OAuth env, callback registration, tenant connection, scopes, tests, Google verification/CASA, and Gmail/Sheets
|
|
43953
|
+
\`integration.list\` lists connector metadata for CLI and MCP operators, \`integration.readiness\` returns the setup checklist, \`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, checklist status, DER-coded next actions, and health only; they never return vault references, access tokens, refresh tokens, client secrets, 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 readiness facts and test action beside Connect/Reconnect, showing whether OAuth env, callback registration, tenant connection, scopes, tests, Google verification/CASA, and Gmail/Sheets handlers are ready or still waiting on DER-880, DER-881, DER-866, or DER-867.
|
|
43954
43954
|
|
|
43955
43955
|
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.
|
|
43956
43956
|
|
|
@@ -44244,7 +44244,7 @@ Templates may draft. Humans approve. A stock agent should not go live until a hu
|
|
|
44244
44244
|
order: 77,
|
|
44245
44245
|
title: "Troubleshooting guide",
|
|
44246
44246
|
summary: "How users and agents should diagnose common setup, tool, Signal, Friction, and MCP problems.",
|
|
44247
|
-
version: "2026-06-
|
|
44247
|
+
version: "2026-06-29.1",
|
|
44248
44248
|
public: true,
|
|
44249
44249
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
44250
44250
|
stages: ["company_setup", "staffing", "operating_rhythm"],
|
|
@@ -44283,6 +44283,7 @@ Before calling a command that changes state, discover its exact shape so you do
|
|
|
44283
44283
|
- Escalations are aging: read \`escalation.list\` / \`rost_list_escalations\`; a human resolves through the Steward queue.
|
|
44284
44284
|
- MCP access fails: revoke and recreate the narrowest token after checking scope (\`mcp_token.revoke\` then \`{{cli}} mcp install --client <client> --scope seat --seat-id <seat-id>\`; standalone \`mcp install\` requires an explicit \`--scope\`).
|
|
44285
44285
|
- Settings section unavailable: keep the route open, read which section is marked unavailable, and retry or fix that source directly. Do not treat a missing Settings panel as permission to write blind values; budget and Sync Brief settings stay read-only until their data loads.
|
|
44286
|
+
- Org-intake upload failed: read the safe parse status and reason, then ask the human for a better source file or continue by chat. Browser org intake accepts bounded CSV, text, PDF, DOCX, XLSX, PNG, and JPEG files; extraction failures are retryable and should not be worked around by pasting raw binary, stack traces, secrets, or full customer exports into a prompt.
|
|
44286
44287
|
|
|
44287
44288
|
## Surface-specific failures
|
|
44288
44289
|
|
|
@@ -44296,7 +44297,7 @@ Before calling a command that changes state, discover its exact shape so you do
|
|
|
44296
44297
|
|
|
44297
44298
|
These are the common blockers when adding an agent (see the add-agents guide and the custom agents guide):
|
|
44298
44299
|
|
|
44299
|
-
- Missing Steward: an agent occupancy or go-live is blocked because no Steward chain resolves to a human.
|
|
44300
|
+
- Missing Steward: an agent occupancy or go-live is blocked because no Steward chain resolves to a human. Use the inline steward-chain fix when the builder offers a human-occupied candidate, or name a human Steward on the seat, then retry. The no-orphan-agent rule is enforced server-side; do not route around it.
|
|
44300
44301
|
- Failed dry run: the draft is kept and the failure reason is shown. Read it with \`agent.status\` / \`rost_get_agent_status\`, fix the Charter, manifest, or tool decision, then \`agent.run_dry_run\` again. A passed dry run is required before go-live.
|
|
44301
44302
|
- Declined tool: declining a proposed tool updates the permission manifest and the dry-run task. If the agent then cannot complete the task, either grant a narrower tool or adjust the Charter so the work still routes safely or escalates.
|
|
44302
44303
|
- Expired confirmation: a pending human gate expired before approval. Re-issue the gated command (for example \`agent.create_from_template\`, \`charter.sign_manifest\`, or \`agent.go_live\`) and approve the new confirmation; an agent never approves its own request.
|
|
@@ -44316,7 +44317,7 @@ Name the failing surface, collect evidence, recommend the smallest correction, a
|
|
|
44316
44317
|
order: 78,
|
|
44317
44318
|
title: "AI model data handling guide",
|
|
44318
44319
|
summary: "How {{brand}} cloud agents, local MCP sessions, runners, BYOK, and connected tools handle model-bound data.",
|
|
44319
|
-
version: "2026-06-
|
|
44320
|
+
version: "2026-06-29.1",
|
|
44320
44321
|
public: true,
|
|
44321
44322
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
44322
44323
|
stages: ["company_setup", "staffing", "operating_rhythm"],
|
|
@@ -44341,27 +44342,27 @@ Name the failing surface, collect evidence, recommend the smallest correction, a
|
|
|
44341
44342
|
{
|
|
44342
44343
|
label: "OpenAI API data controls",
|
|
44343
44344
|
url: "https://developers.openai.com/api/docs/guides/your-data",
|
|
44344
|
-
note: "Official API data-use and retention controls verified 2026-06-
|
|
44345
|
+
note: "Official API data-use and retention controls verified 2026-06-29."
|
|
44345
44346
|
},
|
|
44346
44347
|
{
|
|
44347
44348
|
label: "OpenAI enterprise privacy",
|
|
44348
44349
|
url: "https://openai.com/enterprise-privacy/",
|
|
44349
|
-
note: "Official enterprise privacy and API retention summary verified 2026-06-
|
|
44350
|
+
note: "Official enterprise privacy and API retention summary verified 2026-06-29."
|
|
44350
44351
|
},
|
|
44351
44352
|
{
|
|
44352
44353
|
label: "OpenAI Codex with ChatGPT plan",
|
|
44353
44354
|
url: "https://help.openai.com/en/articles/11369540-using-codex-with-your-chatgpt-plan",
|
|
44354
|
-
note: "Official Codex plan data-control scope verified 2026-06-
|
|
44355
|
+
note: "Official Codex plan data-control scope verified 2026-06-29."
|
|
44355
44356
|
},
|
|
44356
44357
|
{
|
|
44357
44358
|
label: "Anthropic API and data retention",
|
|
44358
44359
|
url: "https://platform.claude.com/docs/en/manage-claude/api-and-data-retention",
|
|
44359
|
-
note: "Official Claude API ZDR, HIPAA, and retention scope verified 2026-06-
|
|
44360
|
+
note: "Official Claude API ZDR, HIPAA, and retention scope verified 2026-06-29."
|
|
44360
44361
|
},
|
|
44361
44362
|
{
|
|
44362
44363
|
label: "Claude Code data usage",
|
|
44363
44364
|
url: "https://code.claude.com/docs/en/data-usage",
|
|
44364
|
-
note: "Official local Claude Code data-flow, training, and retention summary verified 2026-06-
|
|
44365
|
+
note: "Official local Claude Code data-flow, training, and retention summary verified 2026-06-29."
|
|
44365
44366
|
},
|
|
44366
44367
|
{
|
|
44367
44368
|
label: "Reference corpus and docs spec",
|
|
@@ -44464,9 +44465,9 @@ If sensitive data appears by accident, stop, do not repeat it, and route cleanup
|
|
|
44464
44465
|
|
|
44465
44466
|
## Provider policy checkpoints
|
|
44466
44467
|
|
|
44467
|
-
For platform-managed \`cloud\` runs and BYOK Anthropic \`cloud\` runs, check the Anthropic account, workspace, model, and contract. As of 2026-06-
|
|
44468
|
+
For platform-managed \`cloud\` runs and BYOK Anthropic \`cloud\` runs, check the Anthropic account, workspace, model, and contract. As of 2026-06-29, official Anthropic Claude API documentation says retained API data is not used for model training without express permission, that some API features are ZDR-eligible while others are not, and that ZDR, HIPAA readiness, model-specific retention requirements, consumer products, Claude Code, and third-party integrations each have their own scope.
|
|
44468
44469
|
|
|
44469
|
-
For local OpenAI API-key clients running through \`mcp_session\` or \`runner\`, check the customer's OpenAI organization, project, endpoint, and API data controls. As of 2026-06-
|
|
44470
|
+
For local OpenAI API-key clients running through \`mcp_session\` or \`runner\`, check the customer's OpenAI organization, project, endpoint, and API data controls. As of 2026-06-29, official OpenAI API documentation says API data is not used to train or improve OpenAI models unless the customer explicitly opts in, and default abuse-monitoring logs may retain customer content for up to 30 days unless approved controls apply. OpenAI says zero data retention is available only for eligible customers, endpoints, and use cases.
|
|
44470
44471
|
|
|
44471
44472
|
For Codex specifically, first identify whether the operator is using Codex through a ChatGPT Free/Plus/Pro, Business, Enterprise, Edu, API, or other workspace path. Official OpenAI Codex help says ChatGPT training data controls apply to whether content processed through Codex may be used to improve OpenAI models when Codex is used with a ChatGPT plan, and that Pro and Plus conversations may be used unless training is disabled. Do not give a Codex user the OpenAI API answer unless they are actually using an API-governed Codex path.
|
|
44472
44473
|
|
|
@@ -44490,7 +44491,7 @@ When asked about AI data handling:
|
|
|
44490
44491
|
order: 79,
|
|
44491
44492
|
title: "Security model guide",
|
|
44492
44493
|
summary: "How {{brand}} protects tenant data, credentials, tool calls, and human decisions across web, MCP, CLI, and agents.",
|
|
44493
|
-
version: "2026-06-
|
|
44494
|
+
version: "2026-06-29.1",
|
|
44494
44495
|
public: true,
|
|
44495
44496
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
44496
44497
|
stages: ["company_setup", "staffing", "operating_rhythm"],
|
|
@@ -44921,7 +44922,7 @@ This worked document **omits** \`unanswered_boundaries\` and \`seat_type_recomme
|
|
|
44921
44922
|
order: 43,
|
|
44922
44923
|
title: "Agent builder guide",
|
|
44923
44924
|
summary: "The full agent setup sequence on the CLI/MCP path \u2014 seat, steward, job, boundaries, tools, credentials, model, schedule, dry-run, go-live \u2014 with the structured model config and access tiers.",
|
|
44924
|
-
version: "2026-06-
|
|
44925
|
+
version: "2026-06-29.1",
|
|
44925
44926
|
public: true,
|
|
44926
44927
|
audiences: ["cli", "mcp", "in_app_agent"],
|
|
44927
44928
|
stages: ["staffing"],
|
|
@@ -44969,13 +44970,15 @@ Building teams of controlled agent workers is the product's core differentiator.
|
|
|
44969
44970
|
3. **Job** \u2014 what the seat owns. On \`agent.create_custom\` this is the operational answers (what it owns, what success looks like, what it must never do alone); for a strong contract, submit the full Charter directly via \`charter.update_draft\` (see the charter-authoring deep-dive).
|
|
44970
44971
|
4. **Boundaries** \u2014 the Charter's \`decision_authority\` (can-do / must-ask / never / escalate), \`escalation_rules\`, and \`budget\`. Conservative by default: send/spend/irreversible actions are approval-gated or escalated.
|
|
44971
44972
|
5. **Tools** \u2014 pick from the discoverable catalog (\`{{cli}} tools list\`); each tool has a default scope tier and access policy. Connect or decline via \`agent.configure_tools\`. Selecting a tool records permission; live handlers execute later only behind the signed manifest, server guard, required credential or binding, and connector-specific approval boundary.
|
|
44972
|
-
6. **Credentials** \u2014 a tool that needs access declares a credential-ingress request (provider, scope, secret name). The secret itself flows through the vault-backed ingress command as a vault ref \u2014 never paste a secret into a builder command.
|
|
44973
|
+
6. **Credentials and provider readiness** \u2014 a tool that needs access declares a credential-ingress request (provider, scope, secret name). The secret itself flows through the vault-backed ingress command as a vault ref \u2014 never paste a secret into a builder command. For Google-backed tools, inspect the provider readiness shown in Settings or the builder: not connected, connected but untested, connected and tested, or failed. Use \`integration.test\` / \`rost_test_integration_connection\` or the builder Test connection action to refresh the same safe status facts; do not infer authorization from a connected credential.
|
|
44973
44974
|
7. **Operating instructions** \u2014 the runtime composes the agent's context from its Charter; you do not write a system prompt.
|
|
44974
44975
|
8. **Model** \u2014 select the structured model config (see below). Read \`{{cli}} model list\` / \`model.catalog\` first when you are unsure; it returns the recommended default, effort, token price estimates, cost band, and best-fit work for each tier. If \`agent.create_custom\` omits \`model_config\`, {{brand}} recommends a tier from the supplied responsibility answers.
|
|
44975
44976
|
9. **Heartbeat** \u2014 set the schedule (\`schedule_cron\`) for a recurring agent; a live scheduled agent must keep a steward chain.
|
|
44976
44977
|
10. **Dry-run** \u2014 \`agent.run_dry_run\` rehearses in sandbox after the manifest is signed; it is ungated by human approval but requires a signed manifest.
|
|
44977
44978
|
11. **Go-live** \u2014 \`agent.go_live\` is \`human_required\`. Prepare everything and surface the go-live to a human; never go live on a human's behalf.
|
|
44978
44979
|
|
|
44980
|
+
If \`agent_setup.get\` returns \`next_action: "set_steward"\`, use the returned steward-remediation candidates or choose an existing human-occupied seat with \`agent_setup.update --json '{"seat_id":"<agent-seat-id>","steward_seat_id":"<human-seat-id>"}'\`. If no human-occupied candidate exists, create or staff a human seat first. Do not bypass the no-orphan-agent guard; go-live remains blocked until the chain resolves to a person.
|
|
44981
|
+
|
|
44979
44982
|
## Choosing the model (structured config)
|
|
44980
44983
|
|
|
44981
44984
|
The agent's model is a structured object, not a bare string:
|
|
@@ -47552,7 +47555,8 @@ var deliverableWrapper = (context, args) => dispatch(context, "deliverable", arg
|
|
|
47552
47555
|
title: requireValue2(parsed, "title")
|
|
47553
47556
|
}, {
|
|
47554
47557
|
summary: optionalValue(parsed, "summary"),
|
|
47555
|
-
content: optionalValue(parsed, "content")
|
|
47558
|
+
content: optionalValue(parsed, "content"),
|
|
47559
|
+
delivered_at: optionalValue(parsed, "delivered-at")
|
|
47556
47560
|
});
|
|
47557
47561
|
return execute(ctx, parsed, "deliverable.create", body, formatDeliverableWrite);
|
|
47558
47562
|
},
|
|
@@ -47575,7 +47579,7 @@ function deliverableUsage(bin) {
|
|
|
47575
47579
|
return `Usage: ${bin} deliverable list|get|create|attach [--json]
|
|
47576
47580
|
${bin} deliverable list --seat-id <id>
|
|
47577
47581
|
${bin} deliverable get --seat-id <id> --deliverable-id <id>
|
|
47578
|
-
${bin} deliverable create --title <text> [--kind brief|work_evidence|artifact|report|other] [--summary <text>] [--content <text>]
|
|
47582
|
+
${bin} deliverable create --title <text> [--kind brief|work_evidence|artifact|report|other] [--summary <text>] [--content <text>] [--delivered-at <iso>]
|
|
47579
47583
|
${bin} deliverable attach --title <text> [--run-id <id>] [--task-id <id>] [--work-order-id <id>] [--kind brief|work_evidence|artifact|report|other] [--summary <text>] [--content <text>]`;
|
|
47580
47584
|
}
|
|
47581
47585
|
function formatSystemHealth(output) {
|
|
@@ -47753,25 +47757,48 @@ function signupUrl(appUrl2) {
|
|
|
47753
47757
|
return new URL("/signup", ensureTrailingSlash2(appUrl2)).toString();
|
|
47754
47758
|
}
|
|
47755
47759
|
function parseSignupCompany(args) {
|
|
47760
|
+
const json2 = args.includes("--json");
|
|
47756
47761
|
const index = args.indexOf("--company");
|
|
47757
47762
|
if (index === -1) {
|
|
47758
|
-
return { companyName: null };
|
|
47763
|
+
return { companyName: null, json: json2 };
|
|
47759
47764
|
}
|
|
47760
47765
|
const value = args[index + 1];
|
|
47761
47766
|
if (value === void 0 || value.startsWith("--") || value.trim() === "") {
|
|
47762
47767
|
throw new Error(`--company requires a value, e.g. ${cliBrand.binName} signup --company "Acme"`);
|
|
47763
47768
|
}
|
|
47764
|
-
return { companyName: value };
|
|
47769
|
+
return { companyName: value, json: json2 };
|
|
47765
47770
|
}
|
|
47766
|
-
|
|
47771
|
+
var signupProvisionOutputSchema = external_exports.object({
|
|
47772
|
+
tenant_id: external_exports.string().min(1),
|
|
47773
|
+
slug: external_exports.string().min(1),
|
|
47774
|
+
name: external_exports.string().min(1),
|
|
47775
|
+
created: external_exports.boolean()
|
|
47776
|
+
}).loose();
|
|
47777
|
+
async function runSignupProvision(io, client, companyName, run2, options = {}) {
|
|
47767
47778
|
const exitCode = await run2(io, client, "signup.provision_tenant", { company_name: companyName });
|
|
47768
|
-
if (exitCode === 0) {
|
|
47779
|
+
if (exitCode.exitCode === 0) {
|
|
47780
|
+
const parsed = signupProvisionOutputSchema.safeParse(exitCode.output);
|
|
47781
|
+
if (!parsed.success) {
|
|
47782
|
+
return exitCode.exitCode;
|
|
47783
|
+
}
|
|
47784
|
+
if (options.json === true) {
|
|
47785
|
+
io.stdout.write(`${JSON.stringify(parsed.data, null, 2)}
|
|
47786
|
+
`);
|
|
47787
|
+
return exitCode.exitCode;
|
|
47788
|
+
}
|
|
47789
|
+
if (!parsed.data.created) {
|
|
47790
|
+
io.stdout.write(
|
|
47791
|
+
`No new company was created. Your account already has active company '${parsed.data.name}' (${parsed.data.slug}); requested '${companyName}' was not provisioned. Run '${cliBrand.binName} tenants' to see companies or '${cliBrand.binName} use ${parsed.data.slug}' to keep working there.
|
|
47792
|
+
`
|
|
47793
|
+
);
|
|
47794
|
+
return exitCode.exitCode;
|
|
47795
|
+
}
|
|
47769
47796
|
io.stdout.write(
|
|
47770
|
-
`Company '${
|
|
47797
|
+
`Company '${parsed.data.name}' is ready and active. Run '${cliBrand.binName} onboard status' to continue setup.
|
|
47771
47798
|
`
|
|
47772
47799
|
);
|
|
47773
47800
|
}
|
|
47774
|
-
return exitCode;
|
|
47801
|
+
return exitCode.exitCode;
|
|
47775
47802
|
}
|
|
47776
47803
|
async function runSignup(io, appUrl2, openBrowser2 = tryOpenBrowser) {
|
|
47777
47804
|
const url2 = signupUrl(appUrl2);
|
|
@@ -48716,9 +48743,12 @@ async function main(argv = process.argv.slice(2), options = {}) {
|
|
|
48716
48743
|
return 0;
|
|
48717
48744
|
}
|
|
48718
48745
|
let signupCompany = null;
|
|
48746
|
+
let signupJson = false;
|
|
48719
48747
|
if (command === "signup") {
|
|
48720
48748
|
try {
|
|
48721
|
-
|
|
48749
|
+
const signupOptions = parseSignupCompany(args);
|
|
48750
|
+
signupCompany = signupOptions.companyName;
|
|
48751
|
+
signupJson = signupOptions.json;
|
|
48722
48752
|
} catch (error51) {
|
|
48723
48753
|
io.stderr.write(`${redactForLog(error51 instanceof Error ? error51.message : String(error51))}
|
|
48724
48754
|
`);
|
|
@@ -48825,7 +48855,7 @@ Run ${cliBrand.binName} login --device again if the next command asks you to aut
|
|
|
48825
48855
|
await maybePrintSignupBootstrap(io, client, config2.appUrl);
|
|
48826
48856
|
}
|
|
48827
48857
|
if (command === "signup") {
|
|
48828
|
-
return runSignupProvision(io, client, signupCompany, (signupIo, signupClient, commandId, body) =>
|
|
48858
|
+
return runSignupProvision(io, client, signupCompany, (signupIo, signupClient, commandId, body) => executeCommandWithResult(signupIo, signupClient, commandId, body), { json: signupJson });
|
|
48829
48859
|
}
|
|
48830
48860
|
if (command === "whoami") {
|
|
48831
48861
|
return printCommandOutput(io, client, "user.whoami");
|
|
@@ -49158,6 +49188,14 @@ async function printCommandOutput(io, client, commandId, body = {}, format, opti
|
|
|
49158
49188
|
return printCommandError2(io, error51);
|
|
49159
49189
|
}
|
|
49160
49190
|
}
|
|
49191
|
+
async function executeCommandWithResult(io, client, commandId, body = {}) {
|
|
49192
|
+
try {
|
|
49193
|
+
const result = await client.execute(commandId, body);
|
|
49194
|
+
return { exitCode: 0, output: result.output };
|
|
49195
|
+
} catch (error51) {
|
|
49196
|
+
return { exitCode: printCommandError2(io, error51) };
|
|
49197
|
+
}
|
|
49198
|
+
}
|
|
49161
49199
|
function pendingConfirmationFromError2(error51) {
|
|
49162
49200
|
if (!(error51 instanceof CommandClientError) || !error51.response || error51.response.ok || error51.response.error.code !== "COMMAND_CONFIRMATION_REQUIRED") {
|
|
49163
49201
|
return null;
|