@rosthq/cli 0.5.31 → 0.5.32
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 +61 -11
- package/dist/index.js.map +2 -2
- package/dist/signup.d.ts +1 -0
- 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,CAuPnG;AA+cD,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAUxF"}
|
package/dist/index.js
CHANGED
|
@@ -41637,7 +41637,7 @@ The Compass is drafted, then activated by a human through supersession.
|
|
|
41637
41637
|
order: 20,
|
|
41638
41638
|
title: "Responsibility Graph playbook",
|
|
41639
41639
|
summary: "How to build a functions-first graph with seats, owners, Stewards, vacancies, and clean authority.",
|
|
41640
|
-
version: "2026-06-
|
|
41640
|
+
version: "2026-06-30.1",
|
|
41641
41641
|
public: true,
|
|
41642
41642
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
41643
41643
|
stages: ["graph_design", "staffing"],
|
|
@@ -41684,6 +41684,8 @@ Each entry opens the same conservative setup flow \u2014 seat placement, Steward
|
|
|
41684
41684
|
|
|
41685
41685
|
The graph canvas fits the whole structure into the frame when it opens and refits whenever the frame changes \u2014 opening a side panel, resizing the window, or rotating a phone. Zoom moves between three altitudes: a constellation of seat dots when zoomed out, seat cards at the working zoom, and charter detail when zoomed in. Seat cards stay legible on small screens, and the canvas is the one always-dark surface in the otherwise light app. Search the toolbar to fly to any seat by name.
|
|
41686
41686
|
|
|
41687
|
+
Seat cards name their active occupants. When a seat has more than one occupant, the card shows the human/agent breakdown instead of only a count, and mixed human-plus-agent staffing is labelled. Use the occupants control on that card to open the detail panel, where each occupant is listed as either the human accountable for the seat or the agent executor, with the Steward chain shown for agent accountability.
|
|
41688
|
+
|
|
41687
41689
|
The graph is also where you land after onboarding \u2014 it is the mission control for the company, not a separate dashboard. Switch lenses from the toolbar to recolour the same structure four ways:
|
|
41688
41690
|
|
|
41689
41691
|
- **Structure** \u2014 seat type and reporting lines.
|
|
@@ -42148,7 +42150,7 @@ Decisions should be recorded as human decisions. Handoffs should attach to seats
|
|
|
42148
42150
|
order: 45,
|
|
42149
42151
|
title: "How agents work",
|
|
42150
42152
|
summary: "How {{brand}} agents operate inside seats, use Charters, report work, and escalate beyond authority.",
|
|
42151
|
-
version: "2026-06-
|
|
42153
|
+
version: "2026-06-30.1",
|
|
42152
42154
|
public: true,
|
|
42153
42155
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
42154
42156
|
stages: ["staffing", "operating_rhythm"],
|
|
@@ -42246,7 +42248,7 @@ Beyond each seat's own manifest, the company can set one ceiling on how much an
|
|
|
42246
42248
|
|
|
42247
42249
|
## What humans should review
|
|
42248
42250
|
|
|
42249
|
-
The Agents page shows fleet health first: live state,
|
|
42251
|
+
The Agents page shows fleet health first: live state, work evidence, failed runs, open held actions, cost, and the next operator action. Work evidence distinguishes fresh real runs, stale runs, no completed run yet, queued or running work orders, and recent failures. A failure link opens the failed run itself; queued or stale rows route the operator to the seat's agent operations instead of pretending there is a hidden run to inspect. The page also shows configuration completeness for each staffed agent seat: Steward chain, lane or runtime substrate, vaulted credentials, granted tools, model config, sandbox dry run, and go-live state, each with a remediation link when incomplete. A seat's Trust Card drills into the same facts: run history, one-run detail, tool-call outcomes, product-visible errors, transcript references, loaded Skill versions, and held confirmations or escalations. Open confirmations stay visible until they are decided or expire, even when they are older than the default activity window. Approving or rejecting a held confirmation from the seat page is scoped to that seat; rejection can include a short reason. For a live agent, the seat page's agent operations panel can queue one immediate governed run through the same \`agent.run_now\` command path used by CLI and MCP; it does not expand authority or change the saved schedule.
|
|
42250
42252
|
|
|
42251
42253
|
Review the first dry runs, fleet overview, tool-call audit rows, escalations, deliverables, and Signal impact. A seat's completed-work area combines explicit deliverables, work-log evidence, and successful run summaries into one operator-facing trail with safe links labelled as internal, Linear, GitHub, or external. The fleet view at \`/agents\` shows every staffed agent seat at a glance; the agent-native equivalents are \`{{cli}} command agent.list_fleet --json '{}'\` / \`rost_list_agent_fleet\` for the compact overview, and \`{{cli}} agent fleet-digest --json\` / \`agent.fleet_digest\` / \`rost_get_dogfood_fleet_health_digest\` for the daily dogfood evidence bundle. The digest returns live/idle state, 24h/7d turns, 7d/30d spend, recent failed runs, unresolved product errors, failed notifications, and a next action per seat.
|
|
42252
42254
|
|
|
@@ -42401,7 +42403,7 @@ External connectors are being rolled out provider by provider, conservatively (r
|
|
|
42401
42403
|
order: 48,
|
|
42402
42404
|
title: "CLI and MCP installation guide",
|
|
42403
42405
|
summary: "Install the public CLI, register remote token-backed MCP clients, and find the full command and tool catalog.",
|
|
42404
|
-
version: "2026-06-30.
|
|
42406
|
+
version: "2026-06-30.3",
|
|
42405
42407
|
public: true,
|
|
42406
42408
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
42407
42409
|
stages: ["company_setup", "staffing"],
|
|
@@ -42524,9 +42526,10 @@ Commands below use angle-bracket placeholders. The CLI prints the real, fully-re
|
|
|
42524
42526
|
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:
|
|
42525
42527
|
|
|
42526
42528
|
- **Browser:** at \`/signup\`, name your company, then return to the CLI.
|
|
42527
|
-
- **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.
|
|
42529
|
+
- **Headless first company (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.
|
|
42530
|
+
- **Additional entitled company:** from an existing active company session, run \`{{cli}} tenant create --company "<name>" [--json]\`. This creates a clean additional company only when the account has an active \`tenant.create.additional\` entitlement. A denied attempt returns a clean refusal and creates no tenant row.
|
|
42528
42531
|
|
|
42529
|
-
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>\`.
|
|
42532
|
+
If you run a tenant-scoped command before any company exists, the CLI tells you both first-company 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>\`.
|
|
42530
42533
|
|
|
42531
42534
|
## Install the CLI
|
|
42532
42535
|
|
|
@@ -42604,10 +42607,11 @@ This is the install/auth quickstart \u2014 it gets you logged in, MCP registered
|
|
|
42604
42607
|
3. Create your company if you have none yet: \`{{cli}} signup --company "<name>"\` (no browser step)
|
|
42605
42608
|
4. List tenants: \`{{cli}} tenants\`
|
|
42606
42609
|
5. Select a tenant when needed: \`{{cli}} use <tenant-slug-or-id>\`
|
|
42607
|
-
6.
|
|
42608
|
-
7.
|
|
42609
|
-
8.
|
|
42610
|
-
9.
|
|
42610
|
+
6. For an entitled additional clean company, create it from an active company session: \`{{cli}} tenant create --company "<name>"\`
|
|
42611
|
+
7. Read the agent map: \`{{cli}} reference get agent-reference-map\` (the full canonical setup order lives here)
|
|
42612
|
+
8. Register MCP for the client (pick a scope \u2014 \`--scope\` is required): \`{{cli}} mcp install --client claude-code --scope tenant-admin\` for setup, or \`--scope seat --seat-id <id>\` for a narrower seat token
|
|
42613
|
+
9. Inspect onboarding: \`{{cli}} onboard status\`
|
|
42614
|
+
10. Get the guided agent prompt: \`{{cli}} onboard run\`
|
|
42611
42615
|
|
|
42612
42616
|
Or use the one-shot helper: \`{{cli}} init\` logs in when needed, optionally selects a tenant, installs MCP, and prints the onboarding prompt. It does not run every numbered step above (it does not create your company or call \`onboard status\`) \u2014 it gets you logged in, registered, and handed the onboarding prompt. As the first-run helper it defaults to a **tenant-admin** token (no seats exist yet), so unlike a direct \`mcp install\` it does not need \`--scope\`; pass \`--scope seat --seat-id <id>\` if you already have a seat to scope it to:
|
|
42613
42617
|
|
|
@@ -42791,6 +42795,7 @@ These are the security posture rules for operating after install \u2014 a checkl
|
|
|
42791
42795
|
| \`{{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\` |
|
|
42792
42796
|
| \`{{cli}} logout\` | Clear the local CLI session. | Local session | \`{{cli}} logout\` |
|
|
42793
42797
|
| \`{{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"\` |
|
|
42798
|
+
| \`{{cli}} tenant create --company "<name>" [--json]\` | Create an additional clean company from an existing active company session. Requires \`tenant.create.additional\`; denied attempts create no tenant. Add \`--json\` for machine-readable output. | Logged-in tenant owner with entitlement | \`{{cli}} tenant create --company "Acme East"\` |
|
|
42794
42799
|
| \`{{cli}} whoami\` | Show the authenticated user, accessible tenant roles, and the active tenant (\`current_tenant_id\`). | User | \`{{cli}} whoami\` |
|
|
42795
42800
|
| \`{{cli}} tenants\` | List tenants the user can access; the active one is marked \`current\`. | User | \`{{cli}} tenants\` |
|
|
42796
42801
|
| \`{{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\` |
|
|
@@ -47777,6 +47782,13 @@ var signupProvisionOutputSchema = external_exports.object({
|
|
|
47777
47782
|
name: external_exports.string().min(1),
|
|
47778
47783
|
created: external_exports.boolean()
|
|
47779
47784
|
}).loose();
|
|
47785
|
+
var tenantCreateOutputSchema = signupProvisionOutputSchema.extend({
|
|
47786
|
+
source_tenant_id: external_exports.string().min(1),
|
|
47787
|
+
entitlement_id: external_exports.string().min(1),
|
|
47788
|
+
accounting_event_id: external_exports.string().min(1),
|
|
47789
|
+
active: external_exports.boolean(),
|
|
47790
|
+
next_action: external_exports.string().min(1)
|
|
47791
|
+
}).loose();
|
|
47780
47792
|
async function runSignupProvision(io, client, companyName, run2, options = {}) {
|
|
47781
47793
|
const exitCode = await run2(io, client, "signup.provision_tenant", { company_name: companyName });
|
|
47782
47794
|
if (exitCode.exitCode === 0) {
|
|
@@ -47803,6 +47815,40 @@ async function runSignupProvision(io, client, companyName, run2, options = {}) {
|
|
|
47803
47815
|
}
|
|
47804
47816
|
return exitCode.exitCode;
|
|
47805
47817
|
}
|
|
47818
|
+
async function runTenantCreate(io, client, args, run2) {
|
|
47819
|
+
const [action, ...rest] = args;
|
|
47820
|
+
if (action !== "create") {
|
|
47821
|
+
io.stderr.write(`Usage: ${cliBrand.binName} tenant create --company "<name>" [--json]
|
|
47822
|
+
`);
|
|
47823
|
+
return 1;
|
|
47824
|
+
}
|
|
47825
|
+
const json2 = rest.includes("--json");
|
|
47826
|
+
const companyIndex = rest.indexOf("--company");
|
|
47827
|
+
const companyName = companyIndex === -1 ? void 0 : rest[companyIndex + 1];
|
|
47828
|
+
if (!companyName || companyName.startsWith("--") || companyName.trim() === "") {
|
|
47829
|
+
io.stderr.write(`--company requires a value, e.g. ${cliBrand.binName} tenant create --company "Acme Ops"
|
|
47830
|
+
`);
|
|
47831
|
+
return 1;
|
|
47832
|
+
}
|
|
47833
|
+
const exitCode = await run2(io, client, "tenant.create", { company_name: companyName });
|
|
47834
|
+
if (exitCode.exitCode === 0) {
|
|
47835
|
+
const parsed = tenantCreateOutputSchema.safeParse(exitCode.output);
|
|
47836
|
+
if (!parsed.success) {
|
|
47837
|
+
io.stderr.write("tenant.create returned an unexpected response shape.\n");
|
|
47838
|
+
return 1;
|
|
47839
|
+
}
|
|
47840
|
+
if (json2) {
|
|
47841
|
+
io.stdout.write(`${JSON.stringify(parsed.data, null, 2)}
|
|
47842
|
+
`);
|
|
47843
|
+
return exitCode.exitCode;
|
|
47844
|
+
}
|
|
47845
|
+
io.stdout.write(
|
|
47846
|
+
`Company '${parsed.data.name}' is ready and active (${parsed.data.slug}). ${parsed.data.next_action}
|
|
47847
|
+
`
|
|
47848
|
+
);
|
|
47849
|
+
}
|
|
47850
|
+
return exitCode.exitCode;
|
|
47851
|
+
}
|
|
47806
47852
|
async function runSignup(io, appUrl2, openBrowser2 = tryOpenBrowser) {
|
|
47807
47853
|
const url2 = signupUrl(appUrl2);
|
|
47808
47854
|
await openBrowser2(url2);
|
|
@@ -48860,6 +48906,9 @@ Run ${cliBrand.binName} login --device again if the next command asks you to aut
|
|
|
48860
48906
|
if (command === "signup") {
|
|
48861
48907
|
return runSignupProvision(io, client, signupCompany, (signupIo, signupClient, commandId, body) => executeCommandWithResult(signupIo, signupClient, commandId, body), { json: signupJson });
|
|
48862
48908
|
}
|
|
48909
|
+
if (command === "tenant") {
|
|
48910
|
+
return runTenantCreate(io, client, args, (tenantIo, tenantClient, commandId, body) => executeCommandWithResult(tenantIo, tenantClient, commandId, body));
|
|
48911
|
+
}
|
|
48863
48912
|
if (command === "whoami") {
|
|
48864
48913
|
return printCommandOutput(io, client, "user.whoami");
|
|
48865
48914
|
}
|
|
@@ -49256,7 +49305,7 @@ function parseJsonBody(args) {
|
|
|
49256
49305
|
return JSON.parse(body);
|
|
49257
49306
|
}
|
|
49258
49307
|
function isCommand(value) {
|
|
49259
|
-
return value === "login" || value === "logout" || value === "signup" || value === "whoami" || value === "tenants" || value === "use" || value === "command" || value === "onboard" || value === "mcp" || value === "skills" || value === "init" || value === "docs" || value === "reference" || value === "doctor" || value === "help";
|
|
49308
|
+
return value === "login" || value === "logout" || value === "signup" || value === "tenant" || value === "whoami" || value === "tenants" || value === "use" || value === "command" || value === "onboard" || value === "mcp" || value === "skills" || value === "init" || value === "docs" || value === "reference" || value === "doctor" || value === "help";
|
|
49260
49309
|
}
|
|
49261
49310
|
function printUsage(io) {
|
|
49262
49311
|
io.stdout.write([
|
|
@@ -49264,6 +49313,7 @@ function printUsage(io) {
|
|
|
49264
49313
|
`${cliBrand.binName} login --device`,
|
|
49265
49314
|
`${cliBrand.binName} logout`,
|
|
49266
49315
|
`${cliBrand.binName} signup [--company "<name>"]`,
|
|
49316
|
+
`${cliBrand.binName} tenant create --company "<name>" [--json]`,
|
|
49267
49317
|
`${cliBrand.binName} whoami`,
|
|
49268
49318
|
`${cliBrand.binName} tenants`,
|
|
49269
49319
|
`${cliBrand.binName} use <tenant>`,
|