@rosthq/cli 0.5.20 → 0.5.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -42384,7 +42384,7 @@ External connectors are being rolled out provider by provider, conservatively (r
42384
42384
  order: 48,
42385
42385
  title: "CLI and MCP installation guide",
42386
42386
  summary: "Install the public CLI, register remote token-backed MCP clients, and find the full command and tool catalog.",
42387
- version: "2026-06-21.10",
42387
+ version: "2026-06-21.12",
42388
42388
  public: true,
42389
42389
  audiences: ["human", "cli", "mcp", "in_app_agent"],
42390
42390
  stages: ["company_setup", "staffing"],
@@ -42443,7 +42443,8 @@ External connectors are being rolled out provider by provider, conservatively (r
42443
42443
  "integration.list",
42444
42444
  "integration.readiness",
42445
42445
  "integration.status",
42446
- "integration.test"
42446
+ "integration.test",
42447
+ "tenant.rename"
42447
42448
  ],
42448
42449
  legal: {
42449
42450
  publicRisk: "low",
@@ -42820,7 +42821,7 @@ The signed-in app exposes the same Skill command surface under **Skills** in the
42820
42821
  | \`{{cli}} runner list|status|work-orders|revoke\` | \`runner.list\`, \`runner.status\`, \`work_order.list\`, \`runner.revoke\` | Inspect runners and work orders; revoke a runner. | Tenant | \`{{cli}} runner list --json\` |
42821
42822
  | \`{{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\` |
42822
42823
  | \`{{cli}} integration list|readiness|status|test\` | \`integration.list\`, \`integration.readiness\`, \`integration.status\`, \`integration.test\` | List connector metadata, read the setup-readiness checklist, read one connector's health, and run the provider-specific connection test without exposing credentials. | Tenant | \`{{cli}} integration readiness --provider google --json\` |
42823
- | \`{{cli}} settings get|update\` | \`settings.get\`, \`settings.update\` | Read tenant settings; update budget caps. | Tenant | \`{{cli}} settings get --json\` |
42824
+ | \`{{cli}} settings get|update|product-learning|rename\` | \`settings.get\`, \`settings.update\`, \`settings.product_learning.get\`, \`settings.product_learning.update\`, \`tenant.rename\` | Read tenant settings, update budget caps, read or update product-learning participation, and rename the company. Budget and product-learning 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 product-learning update --mode disabled --json\`; \`{{cli}} settings rename --company "Acme Operations"\` |
42824
42825
  | \`{{cli}} member invite|update|remove\` | \`member.invite\`, \`member.update\`, \`member.remove\` | Manage tenant members. | Tenant | \`{{cli}} member invite --email ops@example.com --role member\` |
42825
42826
  | \`{{cli}} agent templates|create|setup|tools|dry-run|go-live|status|run-now|fleet-digest|get-run|show\` | \`agent_template.list\`, \`agent.create_from_template\`, \`agent.create_custom\`, \`agent_setup.get\`, \`agent_setup.update\`, \`agent.configure_tools\`, \`agent.run_dry_run\`, \`agent.go_live\`, \`agent.status\`, \`agent.run_now\`, \`agent.fleet_digest\`, \`agent.get_run\`, \`agent.show_markdown\` | Run the full agent setup and operation flow: list templates, create a draft from a template or guided custom answers (with \`--model\` and \`--effort\`), read or answer setup state, connect or decline tools, dry-run, go live, run on demand, capture the fleet-health digest, read one run's transcript/error diagnostics, and show a markdown readout. Human CLI dry-runs print the rehearsal transcript and, when present, the per-tool preview labels (\`Would run\`, \`Blocked\`, \`Escalated\`) before go-live. Create and go-live stop at human gates; the dry-run is ungated by human approval but requires a signed manifest first. | Tenant and seat | \`{{cli}} agent fleet-digest --json\` |
42826
42827
  | \`{{cli}} tools list\` | \`tool.catalog\` | List the discoverable tool catalog the builder reads (id, scope tiers, credential requirement, access policy, and execution-boundary guidance). | Tenant | \`{{cli}} tools list --json\` |
@@ -42982,8 +42983,11 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
42982
42983
  | \`rost_remove_member\` | \`member.remove\` | Remove a tenant member. | Tenant | Call with \`member_id\`; blocked if it would orphan an agent steward chain. |
42983
42984
  | \`rost_get_tenant_settings\` | \`settings.get\` | Read tenant operating settings and integration status. | Tenant | Call with \`{}\`; metadata only. |
42984
42985
  | \`rost_update_tenant_settings\` | \`settings.update\` | Update tenant AI budget caps. | Tenant | Call with \`soft_cap_usd\` or \`hard_cap_usd\`; expect human confirmation. |
42986
+ | \`rost_rename_company\` | \`tenant.rename\` | Rename the current company. | Tenant-admin | Call with \`company_name\`; expect human confirmation. |
42985
42987
  | \`rost_get_sync_brief_scope\` | \`settings.sync_brief_scope.get\` | Read the tenant's Sync Brief scope (company_wide or per_cluster). | Tenant | Call with \`{}\`. |
42986
42988
  | \`rost_update_sync_brief_scope\` | \`settings.sync_brief_scope.update\` | Set the tenant's Sync Brief scope (company_wide or per_cluster). | Tenant-admin | Owner-only; call with \`{"sync_brief_scope":"company_wide"}\` or \`{"sync_brief_scope":"per_cluster"}\`. |
42989
+ | \`rost_get_product_learning_policy\` | \`settings.product_learning.get\` | Read whether product/page/recommendation analytics are allowed. | Tenant | Call with \`{}\`; audit/security logs are always enabled. |
42990
+ | \`rost_update_product_learning_policy\` | \`settings.product_learning.update\` | Set product-learning mode. | Tenant-admin | Human-gated; call with \`{"mode":"enabled"}\`, \`{"mode":"disabled"}\`, or \`{"mode":"enterprise_contract"}\`. |
42987
42991
  | \`rost_list_signals\` | \`signal.list\` | List measurables with their latest reading and on/off-track state. | Seat or tenant-admin | Call with \`{}\` to find measurable ids. |
42988
42992
  | \`rost_get_signal\` | \`signal.get\` | Read a measurable with its full reading history. | Seat or tenant-admin | Call with \`{"measurable_id":"<id>"}\`. |
42989
42993
  | \`rost_confirm_signal_reading\` | \`signal.confirm_reading\` | Confirm an unconfirmed reading as human-verified. | Seat or tenant-admin | Humans confirm; call with \`{"reading_id":"<id>"}\`. |
@@ -43774,7 +43778,7 @@ Keep agent scope tight at first. Approve more autonomy only after evidence. Use
43774
43778
  order: 71,
43775
43779
  title: "Confirmations and human gates guide",
43776
43780
  summary: "How {{brand}} routes authority-changing work through human confirmation, and why agents never approve their own requests.",
43777
- version: "2026-06-20.1",
43781
+ version: "2026-06-20.2",
43778
43782
  public: true,
43779
43783
  audiences: ["human", "cli", "mcp", "in_app_agent"],
43780
43784
  stages: ["graph_design", "charter_design", "staffing", "operating_rhythm"],
@@ -43799,7 +43803,7 @@ Keep agent scope tight at first. Approve more autonomy only after evidence. Use
43799
43803
  ## Confirmation levels
43800
43804
 
43801
43805
  - \`none\`: no confirmation gate \u2014 the command never returns a pending confirmation. Most are reads or reversible drafts an agent can run directly, including over MCP (graph reads, \`charter.draft\`, \`status.record\`, \`sync.brief.compile\`, \`sync.run.start\`, \`task.complete\`). A few \`none\` commands still require a human actor or an interactive channel \u2014 \`confirmation.approve\` is \`none\` (approving a gate cannot itself be gated) yet runs only as a human in the UI or CLI \u2014 so \`none\` means "no confirmation gate", not always "agent-callable".
43802
- - \`human_required\`: a human must approve. Structural, staffing, resolution, and go-live commands (\`seat.reparent\`, \`charter.approve\`, \`goal.reparent\`, \`friction.resolve\`, \`agent.go_live\`, \`mcp_token.create\`).
43806
+ - \`human_required\`: a human must approve. Structural, staffing, resolution, tenant profile, and go-live commands (\`seat.reparent\`, \`charter.approve\`, \`goal.reparent\`, \`friction.resolve\`, \`agent.go_live\`, \`mcp_token.create\`, \`tenant.rename\`).
43803
43807
  - \`credential_flow\`: routes through the vault-backed credential path so a secret is captured as a vault reference, never stored or logged in the clear (\`credential.ingress\`, \`tenant.anthropic_key.save\`; \`agent.configure_tools\` is \`credential_flow\` too \u2014 it stages credential-ingress requests through the same path without ever taking raw secret material).
43804
43808
  - \`dangerous\`: the highest-risk human gate. Only two commands carry it \u2014 \`settings.update\` and \`agent.decommission\`.
43805
43809
 
@@ -43829,11 +43833,11 @@ Stop before: approving a Charter, signing a manifest, connecting a tool or crede
43829
43833
  order: 72,
43830
43834
  title: "Settings guide",
43831
43835
  summary: "How to use Settings as the control plane for company access, channels, providers, tokens, and operating defaults.",
43832
- version: "2026-06-21.1",
43836
+ version: "2026-06-21.4",
43833
43837
  public: true,
43834
43838
  audiences: ["human", "cli", "mcp", "in_app_agent"],
43835
43839
  stages: ["company_setup", "staffing"],
43836
- relatedCommandIds: ["onboarding.create_invite", "mcp_token.create", "mcp_token.revoke", "mcp_token.list", "integration.list", "integration.readiness", "integration.status", "integration.test", "settings.get", "settings.update", "settings.sync_brief_scope.get", "settings.sync_brief_scope.update"],
43840
+ relatedCommandIds: ["onboarding.create_invite", "mcp_token.create", "mcp_token.revoke", "mcp_token.list", "integration.list", "integration.readiness", "integration.status", "integration.test", "settings.get", "settings.update", "tenant.rename", "settings.sync_brief_scope.get", "settings.sync_brief_scope.update", "settings.product_learning.get", "settings.product_learning.update"],
43837
43841
  legal: { publicRisk: "low", notes: ["{{brand}}-native settings guidance."] },
43838
43842
  sources: [
43839
43843
  {
@@ -43852,7 +43856,7 @@ Start with members and invites, then provider and channel connections, then MCP
43852
43856
 
43853
43857
  ## What belongs in Settings
43854
43858
 
43855
- - Company profile and workspace defaults.
43859
+ - 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.
43856
43860
  - Members, invites, and tenant roles.
43857
43861
  - Agent access tokens for local agents.
43858
43862
  - Provider and integration configuration.
@@ -43860,6 +43864,7 @@ Start with members and invites, then provider and channel connections, then MCP
43860
43864
  - Connected machines (the paired Runners that run scheduled local work orders).
43861
43865
  - Stored credentials (vault references only) and tool access approvals.
43862
43866
  - Operating defaults, including Sync Brief scope.
43867
+ - Product-learning participation for bounded product analytics.
43863
43868
 
43864
43869
  Settings lifecycle timestamps are display metadata for tokens, connected machines, integrations, and stored credentials. They may be emitted by the database as either timestamp values or strings, but Settings renders them as safe labels rather than treating timestamp formatting failures as page-level failures.
43865
43870
 
@@ -43875,6 +43880,18 @@ Reconnects keep historical rows for audit, but provider status in Settings, CLI,
43875
43880
 
43876
43881
  The weekly Sync Brief compiles either company-wide or per cluster. Company-wide is one brief covering the whole company and is the default for a new company. Per cluster compiles one brief per cluster, scoped to each cluster's seats; pick it when clusters run their own weekly sync. Per cluster falls back to a single company-wide brief when the company has no clusters, so the rhythm never produces zero briefs. The owner sets this at onboarding and can change it later in Settings.
43877
43882
 
43883
+ ## Product learning
43884
+
43885
+ Product-learning participation controls whether {{brand}} may record product/page/recommendation analytics for this tenant. It does not disable security logs, audit logs, error logs, events, tool-call guard records, or other operational records required to run and secure the service.
43886
+
43887
+ - \`enabled\` allows bounded product analytics for feature quality, defaults, templates, recommendations, safety checks, and reliability.
43888
+ - \`disabled\` blocks generic product/page/recommendation analytics for the tenant.
43889
+ - \`enterprise_contract\` blocks generic product-learning writes until contract-specific handling exists.
43890
+
43891
+ Read the policy with \`settings.product_learning.get\` (CLI: \`{{cli}} settings product-learning get\`). Change it with \`settings.product_learning.update\` (CLI: \`{{cli}} settings product-learning update --mode disabled\`). Analytics ingestion code should call the shared product-learning policy helper instead of reading \`tenants.settings\` directly.
43892
+
43893
+ The product analytics foundation stores only bounded product telemetry: product events, page views by route template, command invocation metadata, onboarding milestones, and recommendation outcomes. Authenticated users can read analytics rows for their tenant, but writes are server-owned through the trusted DB helpers. The helpers and database constraints reject or redact obvious raw URLs, filesystem paths, secrets, prompt/content fields, command argument/output fields, direct contact/payment identifiers, and long prose-shaped values. These analytics rows are not audit records; operational logs and security evidence stay in their dedicated append-only or product-visible tables.
43894
+
43878
43895
  ## Inference budget
43879
43896
 
43880
43897
  Agents that run on {{brand}}-managed inference draw against a tenant inference budget with a hard cap. A new company starts with a hard cap of $0, so a managed-inference run is blocked until the cap is raised. When a run hits the cap it stops with a typed budget error that names the fix; raise the cap before agents can run again.
@@ -46488,12 +46505,33 @@ function integrationUsage(bin) {
46488
46505
  ${bin} integration test --provider <name>`;
46489
46506
  }
46490
46507
  var settingsWrapper = (context, args) => dispatch(context, "settings", args, {
46508
+ "product-learning": (ctx, rest) => dispatch(ctx, "settings product-learning", rest, {
46509
+ get: (innerCtx, innerRest) => {
46510
+ const parsed = parseFlags(innerRest);
46511
+ return execute(innerCtx, parsed, "settings.product_learning.get", {}, (output) => {
46512
+ const policy = asRecord(asRecord(output).product_learning);
46513
+ return `product_learning ${field(policy, "mode")} product_analytics_enabled=${field(policy, "product_analytics_enabled")} security_audit_logs_enabled=${field(policy, "security_audit_logs_enabled")}`;
46514
+ });
46515
+ },
46516
+ update: (innerCtx, innerRest) => {
46517
+ const parsed = parseFlags(innerRest);
46518
+ const mode = optionalValue(parsed, "mode");
46519
+ if (mode !== "enabled" && mode !== "disabled" && mode !== "enterprise_contract") {
46520
+ throw new UsageError("Provide --mode enabled|disabled|enterprise_contract.");
46521
+ }
46522
+ return execute(innerCtx, parsed, "settings.product_learning.update", { mode }, (output) => {
46523
+ const policy = asRecord(asRecord(output).product_learning);
46524
+ return `Updated product-learning policy to ${field(policy, "mode")} (product_analytics_enabled=${field(policy, "product_analytics_enabled")}).`;
46525
+ });
46526
+ }
46527
+ }, settingsUsage(ctx.binName)),
46491
46528
  get: (ctx, rest) => {
46492
46529
  const parsed = parseFlags(rest);
46493
46530
  return execute(ctx, parsed, "settings.get", {}, (output) => {
46494
46531
  const record2 = asRecord(output);
46495
46532
  const spend = asRecord(record2.spend);
46496
- return `tenant ${field(record2, "tenant_id")} plan=${field(record2, "plan")} status=${field(record2, "status")} spend=$${field(spend, "spend_usd")} has_anthropic_key=${field(record2, "has_anthropic_key")}`;
46533
+ const policy = asRecord(record2.product_learning);
46534
+ return `tenant ${field(record2, "tenant_id")} plan=${field(record2, "plan")} status=${field(record2, "status")} spend=$${field(spend, "spend_usd")} has_anthropic_key=${field(record2, "has_anthropic_key")} product_learning=${field(policy, "mode")}`;
46497
46535
  });
46498
46536
  },
46499
46537
  update: (ctx, rest) => {
@@ -46509,12 +46547,26 @@ var settingsWrapper = (context, args) => dispatch(context, "settings", args, {
46509
46547
  const spend = asRecord(asRecord(output).spend);
46510
46548
  return `Updated budget caps (soft=$${field(spend, "soft_cap_usd")}, hard=$${field(spend, "hard_cap_usd")}).`;
46511
46549
  });
46550
+ },
46551
+ rename: (ctx, rest) => {
46552
+ const parsed = parseFlags(rest);
46553
+ const companyName = optionalValue(parsed, "company");
46554
+ if (!companyName) {
46555
+ throw new UsageError("Provide --company <name>.");
46556
+ }
46557
+ return execute(ctx, parsed, "tenant.rename", { company_name: companyName }, (output) => {
46558
+ const record2 = asRecord(output);
46559
+ return `Renamed company from ${field(record2, "previous_name")} to ${field(record2, "name")}.`;
46560
+ });
46512
46561
  }
46513
46562
  }, settingsUsage(context.binName));
46514
46563
  function settingsUsage(bin) {
46515
- return `Usage: ${bin} settings get|update [--json]
46564
+ return `Usage: ${bin} settings get|update|product-learning|rename [--json]
46516
46565
  ${bin} settings get
46517
- ${bin} settings update [--soft-cap-usd <n>] [--hard-cap-usd <n>]`;
46566
+ ${bin} settings update [--soft-cap-usd <n>] [--hard-cap-usd <n>]
46567
+ ${bin} settings product-learning get
46568
+ ${bin} settings product-learning update --mode enabled|disabled|enterprise_contract
46569
+ ${bin} settings rename --company <name>`;
46518
46570
  }
46519
46571
  var memberWrapper = (context, args) => dispatch(context, "member", args, {
46520
46572
  invite: (ctx, rest) => {
@@ -47164,7 +47216,7 @@ function operationUsageLines(bin) {
47164
47216
  `${bin} sync brief|compile|complete`,
47165
47217
  `${bin} runner list|status|work-orders|revoke`,
47166
47218
  `${bin} notification settings|test|errors`,
47167
- `${bin} settings get|update`,
47219
+ `${bin} settings get|update|product-learning|rename`,
47168
47220
  `${bin} member invite|update|remove`,
47169
47221
  `${bin} agent templates|create|setup|tools|dry-run|go-live|status|run-now|fleet-digest|get-run|show`,
47170
47222
  `${bin} tools list`,