@rosthq/cli 0.7.63 → 0.7.64
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,EAyO3D,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -37899,6 +37899,142 @@ var cronExpressionSchema = external_exports.string().trim().min(1).max(120).supe
|
|
|
37899
37899
|
}
|
|
37900
37900
|
});
|
|
37901
37901
|
|
|
37902
|
+
// ../../packages/protocol/src/model-pricing-registry.ts
|
|
37903
|
+
var providerRouteSchema = external_exports.enum(["direct_anthropic", "gateway_managed", "direct_byok"]);
|
|
37904
|
+
var modelPricingEntrySchema = external_exports.object({
|
|
37905
|
+
// The canonical gateway slug: `provider:model` (dotted). For Anthropic entries
|
|
37906
|
+
// this is `anthropic:<model>`, but Anthropic never actually routes through the
|
|
37907
|
+
// gateway — the entry exists so the registry is the complete authoritative table.
|
|
37908
|
+
slug: external_exports.string().trim().min(1).max(160).regex(/^[a-z0-9-]+:[^\n\r]+$/, "Slug must be `provider:model`."),
|
|
37909
|
+
// Actual serving provider (what `llm_calls.provider` must record — AC #6).
|
|
37910
|
+
provider: external_exports.string().trim().min(1).max(60).regex(/^[a-z0-9-]+$/),
|
|
37911
|
+
// Provider-native model id (what `llm_calls.model` records; what the SDK receives).
|
|
37912
|
+
model: external_exports.string().trim().min(1).max(120).regex(/^[^\n\r]+$/),
|
|
37913
|
+
// ISO instant this price takes effect. Resolution picks the latest entry with
|
|
37914
|
+
// `effectiveFrom <= at` for a given (provider, model).
|
|
37915
|
+
effectiveFrom: external_exports.string().datetime(),
|
|
37916
|
+
// Authoritative token rates (USD per 1M tokens) — what ROST's own cost ledger
|
|
37917
|
+
// records for a call served by this model.
|
|
37918
|
+
inputUsdPerMillion: external_exports.number().nonnegative(),
|
|
37919
|
+
outputUsdPerMillion: external_exports.number().nonnegative(),
|
|
37920
|
+
// True when the provider offers a zero-data-retention tier for this model. When
|
|
37921
|
+
// false, the model is disabled-with-reason on the managed gateway unless a tenant
|
|
37922
|
+
// owner has explicitly unlocked non-ZDR models (§8.1 DECIDED).
|
|
37923
|
+
zdrAvailable: external_exports.boolean(),
|
|
37924
|
+
// True when this model is eligible for the MANAGED gateway path at all.
|
|
37925
|
+
managed: external_exports.boolean(),
|
|
37926
|
+
// DER-1586 billing DATA (carried here, consumed by the money lane): the
|
|
37927
|
+
// customer-facing credit rate (cost-plus-margin) and any per-seat included
|
|
37928
|
+
// allowance override, in USD per 1M tokens / cents. This PR only ships the DATA;
|
|
37929
|
+
// DER-1586 wires the Stripe meter. BYOK is excluded from credits by construction.
|
|
37930
|
+
creditInputUsdPerMillion: external_exports.number().nonnegative(),
|
|
37931
|
+
creditOutputUsdPerMillion: external_exports.number().nonnegative(),
|
|
37932
|
+
includedAllowanceCents: external_exports.number().int().nonnegative().optional(),
|
|
37933
|
+
// Per-model disclosure shown when a non-ZDR model is unlocked (§8.1). Required
|
|
37934
|
+
// exactly when `zdrAvailable` is false.
|
|
37935
|
+
retentionDisclosure: external_exports.string().trim().min(1).max(400).optional()
|
|
37936
|
+
}).strict().refine(
|
|
37937
|
+
// A MANAGED (gateway-eligible) non-ZDR model must carry the disclosure surfaced on
|
|
37938
|
+
// owner-unlock. Anthropic entries are non-ZDR-flagged but managed:false (they never
|
|
37939
|
+
// touch the gateway), so the disclosure is inert for them and not required.
|
|
37940
|
+
(e) => e.zdrAvailable || !e.managed || typeof e.retentionDisclosure === "string",
|
|
37941
|
+
{ message: "A managed non-ZDR model must carry a retentionDisclosure.", path: ["retentionDisclosure"] }
|
|
37942
|
+
);
|
|
37943
|
+
var ANTHROPIC_EFFECTIVE_FROM = "2026-01-01T00:00:00.000Z";
|
|
37944
|
+
var MODEL_PRICING_REGISTRY = Object.freeze([
|
|
37945
|
+
{
|
|
37946
|
+
slug: "anthropic:claude-haiku-4-5",
|
|
37947
|
+
provider: "anthropic",
|
|
37948
|
+
model: "claude-haiku-4-5",
|
|
37949
|
+
effectiveFrom: ANTHROPIC_EFFECTIVE_FROM,
|
|
37950
|
+
inputUsdPerMillion: 1,
|
|
37951
|
+
outputUsdPerMillion: 5,
|
|
37952
|
+
creditInputUsdPerMillion: 1,
|
|
37953
|
+
creditOutputUsdPerMillion: 5,
|
|
37954
|
+
zdrAvailable: false,
|
|
37955
|
+
managed: false
|
|
37956
|
+
},
|
|
37957
|
+
{
|
|
37958
|
+
slug: "anthropic:claude-sonnet-4-6",
|
|
37959
|
+
provider: "anthropic",
|
|
37960
|
+
model: "claude-sonnet-4-6",
|
|
37961
|
+
effectiveFrom: ANTHROPIC_EFFECTIVE_FROM,
|
|
37962
|
+
inputUsdPerMillion: 3,
|
|
37963
|
+
outputUsdPerMillion: 15,
|
|
37964
|
+
creditInputUsdPerMillion: 3,
|
|
37965
|
+
creditOutputUsdPerMillion: 15,
|
|
37966
|
+
zdrAvailable: false,
|
|
37967
|
+
managed: false
|
|
37968
|
+
},
|
|
37969
|
+
{
|
|
37970
|
+
slug: "anthropic:claude-opus-4-8",
|
|
37971
|
+
provider: "anthropic",
|
|
37972
|
+
model: "claude-opus-4-8",
|
|
37973
|
+
effectiveFrom: ANTHROPIC_EFFECTIVE_FROM,
|
|
37974
|
+
inputUsdPerMillion: 15,
|
|
37975
|
+
outputUsdPerMillion: 75,
|
|
37976
|
+
creditInputUsdPerMillion: 15,
|
|
37977
|
+
creditOutputUsdPerMillion: 75,
|
|
37978
|
+
zdrAvailable: false,
|
|
37979
|
+
managed: false
|
|
37980
|
+
},
|
|
37981
|
+
{
|
|
37982
|
+
slug: "anthropic:claude-fable-5",
|
|
37983
|
+
provider: "anthropic",
|
|
37984
|
+
model: "claude-fable-5",
|
|
37985
|
+
effectiveFrom: ANTHROPIC_EFFECTIVE_FROM,
|
|
37986
|
+
inputUsdPerMillion: 25,
|
|
37987
|
+
outputUsdPerMillion: 125,
|
|
37988
|
+
creditInputUsdPerMillion: 25,
|
|
37989
|
+
creditOutputUsdPerMillion: 125,
|
|
37990
|
+
zdrAvailable: false,
|
|
37991
|
+
managed: false
|
|
37992
|
+
},
|
|
37993
|
+
// Non-Anthropic managed exemplar (ZDR-capable). Proves the ZDR-default gateway
|
|
37994
|
+
// path: served through the gateway with zeroDataRetention:true.
|
|
37995
|
+
{
|
|
37996
|
+
slug: "openai:gpt-5.6",
|
|
37997
|
+
provider: "openai",
|
|
37998
|
+
model: "gpt-5.6",
|
|
37999
|
+
effectiveFrom: "2026-07-11T00:00:00.000Z",
|
|
38000
|
+
inputUsdPerMillion: 5,
|
|
38001
|
+
outputUsdPerMillion: 20,
|
|
38002
|
+
creditInputUsdPerMillion: 6.5,
|
|
38003
|
+
creditOutputUsdPerMillion: 26,
|
|
38004
|
+
zdrAvailable: true,
|
|
38005
|
+
managed: true
|
|
38006
|
+
},
|
|
38007
|
+
// Non-Anthropic managed exemplar WITHOUT a zero-retention tier. Proves the
|
|
38008
|
+
// disabled-with-reason + owner-unlock + disclosure behavior (§8.1 DECIDED): it is
|
|
38009
|
+
// refused on the managed path unless a tenant owner has unlocked non-ZDR models.
|
|
38010
|
+
{
|
|
38011
|
+
slug: "xai:grok-4",
|
|
38012
|
+
provider: "xai",
|
|
38013
|
+
model: "grok-4",
|
|
38014
|
+
effectiveFrom: "2026-07-11T00:00:00.000Z",
|
|
38015
|
+
inputUsdPerMillion: 4,
|
|
38016
|
+
outputUsdPerMillion: 16,
|
|
38017
|
+
creditInputUsdPerMillion: 5.2,
|
|
38018
|
+
creditOutputUsdPerMillion: 21,
|
|
38019
|
+
zdrAvailable: false,
|
|
38020
|
+
managed: true,
|
|
38021
|
+
retentionDisclosure: "This provider retains data up to 30 days for abuse monitoring."
|
|
38022
|
+
}
|
|
38023
|
+
]);
|
|
38024
|
+
for (const entry of MODEL_PRICING_REGISTRY) {
|
|
38025
|
+
modelPricingEntrySchema.parse(entry);
|
|
38026
|
+
}
|
|
38027
|
+
function parseModelSlug(model) {
|
|
38028
|
+
const trimmed = model.trim();
|
|
38029
|
+
const idx = trimmed.indexOf(":");
|
|
38030
|
+
if (idx <= 0) {
|
|
38031
|
+
return { provider: "anthropic", model: trimmed, slug: `anthropic:${trimmed}`, dotted: false };
|
|
38032
|
+
}
|
|
38033
|
+
const provider = trimmed.slice(0, idx).toLowerCase();
|
|
38034
|
+
const native = trimmed.slice(idx + 1);
|
|
38035
|
+
return { provider, model: native, slug: `${provider}:${native}`, dotted: true };
|
|
38036
|
+
}
|
|
38037
|
+
|
|
37902
38038
|
// ../../packages/protocol/src/agent-model-config.ts
|
|
37903
38039
|
var agentModelProviderSchema = external_exports.enum(["anthropic"]);
|
|
37904
38040
|
var agentModelEffortSchema = external_exports.enum(["low", "medium", "high", "xhigh", "max"]);
|
|
@@ -37908,7 +38044,21 @@ var agentModelConfigSchema = external_exports.object({
|
|
|
37908
38044
|
model: modelIdSchema,
|
|
37909
38045
|
// Optional effort hint. Omit to use the runtime default for the model.
|
|
37910
38046
|
effort: agentModelEffortSchema.optional()
|
|
37911
|
-
}).strict()
|
|
38047
|
+
}).strict().refine(
|
|
38048
|
+
// DER-1584 (ADR-0019 W2.3, invariant #10): `model` is a free-text id, and the
|
|
38049
|
+
// cloud runtime routes purely off its `provider:model` slug prefix — so a dotted
|
|
38050
|
+
// non-Anthropic slug (e.g. `openai:gpt-5.6`) written here would silently route an
|
|
38051
|
+
// agent onto the managed AI Gateway. Until the brain picker + its owner-gated
|
|
38052
|
+
// enablement ship (DER-1591), NO managed non-Anthropic brain is selectable: reject
|
|
38053
|
+
// any non-Anthropic model id at the config-WRITE boundary. (The runtime keeps its
|
|
38054
|
+
// own fail-closed pricing/ZDR enforcement as defense-in-depth for configs written
|
|
38055
|
+
// out-of-band; DER-1591 relaxes this refine when it adds the vetted enablement path.)
|
|
38056
|
+
(config2) => parseModelSlug(config2.model).provider === "anthropic",
|
|
38057
|
+
{
|
|
38058
|
+
message: "Only Anthropic models can be selected today; managed non-Anthropic brains arrive with the brain picker (DER-1591).",
|
|
38059
|
+
path: ["model"]
|
|
38060
|
+
}
|
|
38061
|
+
);
|
|
37912
38062
|
var AGENT_MODEL_TIERS = ["triage", "balanced", "complex", "hardest"];
|
|
37913
38063
|
var modelCostBandSchema = external_exports.enum(["lowest", "standard", "high", "highest"]);
|
|
37914
38064
|
var modelCatalogEntrySchema = external_exports.object({
|
|
@@ -39325,6 +39475,11 @@ var storedConfirmationPolicySchema = external_exports.object({
|
|
|
39325
39475
|
cli_mode: cliConfirmationModeSchema
|
|
39326
39476
|
}).strict();
|
|
39327
39477
|
|
|
39478
|
+
// ../../packages/protocol/src/model-gateway-policy.ts
|
|
39479
|
+
var storedModelGatewayPolicySchema = external_exports.object({
|
|
39480
|
+
allow_non_zdr_models: external_exports.boolean()
|
|
39481
|
+
}).strict();
|
|
39482
|
+
|
|
39328
39483
|
// ../../packages/protocol/src/aicos.ts
|
|
39329
39484
|
var uuidSchema5 = external_exports.string().uuid();
|
|
39330
39485
|
var jsonObjectSchema = external_exports.record(external_exports.string(), external_exports.unknown());
|
|
@@ -42573,6 +42728,16 @@ var confirmationPolicyGetOutputSchema = external_exports.object({
|
|
|
42573
42728
|
var confirmationPolicyUpdateInputSchema = external_exports.object({
|
|
42574
42729
|
cli_mode: cliConfirmationModeSchema
|
|
42575
42730
|
}).strict();
|
|
42731
|
+
var modelGatewayPolicyDtoSchema = external_exports.object({
|
|
42732
|
+
allow_non_zdr_models: external_exports.boolean(),
|
|
42733
|
+
explicit: external_exports.boolean()
|
|
42734
|
+
}).strict();
|
|
42735
|
+
var modelGatewayPolicyUpdateInputSchema = external_exports.object({
|
|
42736
|
+
allow_non_zdr_models: external_exports.boolean()
|
|
42737
|
+
}).strict();
|
|
42738
|
+
var modelGatewayPolicyUpdateOutputSchema = external_exports.object({
|
|
42739
|
+
model_gateway_policy: modelGatewayPolicyDtoSchema
|
|
42740
|
+
}).strict();
|
|
42576
42741
|
var tenantSpendStatusSchema = external_exports.object({
|
|
42577
42742
|
spend_usd: external_exports.string(),
|
|
42578
42743
|
soft_cap_usd: external_exports.string().nullable(),
|
|
@@ -45151,7 +45316,7 @@ Treat AICOS as a coordinator over the operating system. It can become more usefu
|
|
|
45151
45316
|
order: 20,
|
|
45152
45317
|
title: "Responsibility Graph playbook",
|
|
45153
45318
|
summary: "How to build a functions-first graph with seats, owners, Stewards, vacancies, and clean authority.",
|
|
45154
|
-
version: "2026-07-10.
|
|
45319
|
+
version: "2026-07-10.2",
|
|
45155
45320
|
public: true,
|
|
45156
45321
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
45157
45322
|
stages: ["graph_design", "staffing"],
|
|
@@ -45230,7 +45395,7 @@ The graph also carries a mission-control panel. It pulls the same operational st
|
|
|
45230
45395
|
|
|
45231
45396
|
A staffed non-AICOS agent's seat page uses one profile shell with eight URL-addressable tabs: **Overview**, **Charter**, **Tools & connections**, **Skills**, **Autonomy**, **Signals**, **Activity**, and **Settings**. The hero shows status, Charter purpose, Steward, seat path, lane, model, and last run. The sidebar keeps access, connection, tool/Skill/Signal/escalation/Charter counters, and schedule facts visible while the tabs organize the existing read models and controls. Legacy links such as \`#agent-ops\`, \`#recent-runs\`, and \`#run-<id>\` select the matching Settings or Activity tab. Human seats and the AICOS foundation seat keep their dedicated pages. Members without sensitive-data access see the same shell with explicit unavailable states for run, tool-call, cost, connection-status, and escalation facts; the page never broadens Trust Card access or turns an unavailable read into a confident empty/disconnected claim.
|
|
45232
45397
|
|
|
45233
|
-
Agent creation at \`/agents/new\` begins with four doors: **Describe the job** opens the existing in-app builder, **Start from a template** opens the stock-template picker, **Build manually** opens the custom setup path, and **Import** opens an in-app format explainer. Definition-file import is roadmap-only and never opens a bare file picker; operators can instead continue to the existing-agent pairing flow. Existing \`?mode=template|custom|existing\` and \`?seat=\` resume
|
|
45398
|
+
Agent creation at \`/agents/new\` begins with four doors: **Describe the job** opens the existing in-app builder, **Start from a template** opens the stock-template picker, **Build manually** opens the custom setup path, and **Import** opens an in-app format explainer. Definition-file import is roadmap-only and never opens a bare file picker; operators can instead continue to the existing-agent pairing flow. Setup is the detail page filling in: creating a seat from any door hands off to that agent's detail page in draft mode (\`/seats/{seatId}\`), where numbered setup tabs and a shared go-live gate rail complete the draft \u2014 there is no separate multi-step wizard. Existing \`?mode=template|custom|existing\` links open the matching door, and a \`?seat=\` resume link redirects straight to the draft detail page.
|
|
45234
45399
|
|
|
45235
45400
|
## Review an agent seat's delivered work
|
|
45236
45401
|
|
|
@@ -45959,7 +46124,7 @@ External connectors are being rolled out provider by provider, conservatively (r
|
|
|
45959
46124
|
order: 48,
|
|
45960
46125
|
title: "CLI and MCP installation guide",
|
|
45961
46126
|
summary: "Install the public CLI, register remote token-backed MCP clients, and find the full command and tool catalog.",
|
|
45962
|
-
version: "2026-07-
|
|
46127
|
+
version: "2026-07-11.1",
|
|
45963
46128
|
public: true,
|
|
45964
46129
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
45965
46130
|
stages: ["company_setup", "staffing"],
|
|
@@ -46426,6 +46591,7 @@ The signed-in app exposes the same Skill command surface at **Skills**, linked f
|
|
|
46426
46591
|
| \`{{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\` |
|
|
46427
46592
|
| \`{{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\` |
|
|
46428
46593
|
| \`{{cli}} settings get|update|product-learning|agent-policy|confirmation-mode|rename\` | \`settings.get\`, \`settings.update\`, \`settings.product_learning.get\`, \`settings.product_learning.update\`, \`settings.agent_policy.get\`, \`settings.agent_policy.update\`, \`settings.confirmation_policy.get\`, \`settings.confirmation_policy.update\`, \`tenant.rename\` | Read tenant settings, update budget caps, read or update product-learning participation, read or set the company autonomy ceiling, read or set the CLI confirmation mode, 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 confirmation-mode get --json\`; \`{{cli}} settings rename --company "Acme Operations"\` |
|
|
46594
|
+
| \`{{cli}} command tenant.model_gateway_policy.update\` | \`tenant.model_gateway_policy.update\` | Unlock or relock managed models that lack a zero-retention (ZDR) tier (ADR-0019). Locked (default) restricts the AI Gateway to zero-retention-eligible managed models. Owner-only and human-gated; unlocking establishes an ADR-0018 \xA76 standing authorization and surfaces a per-model retention disclosure. | Tenant-admin | \`{{cli}} command tenant.model_gateway_policy.update --json '{"allow_non_zdr_models":true}'\` |
|
|
46429
46595
|
| \`{{cli}} member invite|update|remove\` | \`member.invite\`, \`member.update\`, \`member.remove\` | Manage tenant members; execution requires an owner or admin membership. | Tenant | \`{{cli}} member invite --email ops@example.com --role member\` |
|
|
46430
46596
|
| \`{{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\` |
|
|
46431
46597
|
| \`{{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\` |
|
|
@@ -46610,6 +46776,7 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
|
|
|
46610
46776
|
| \`rost_set_company_autonomy_ceiling\` | \`settings.agent_policy.update\` | Set the company autonomy ceiling. | Tenant-admin | Owner-only, human-gated; call with \`{"profile":"locked_down"}\` (or \`balanced\`/\`high_autonomy\`, or \`{"profile":"custom","max_autonomous_risk":"high"}\`). Enforced by default. |
|
|
46611
46777
|
| \`rost_get_cli_confirmation_mode\` | \`settings.confirmation_policy.get\` | Read the CLI confirmation mode: \`careful\` (the strict default \u2014 the CLI cannot silently auto-approve a pending confirmation) or \`trusted_operator\` (an owner opt-in). | Tenant | Call with \`{}\`; metadata only. |
|
|
46612
46778
|
| \`rost_set_cli_confirmation_mode\` | \`settings.confirmation_policy.update\` | Set the CLI confirmation mode. | Tenant-admin | Owner-only, human-gated; call with \`{"cli_mode":"trusted_operator"}\` (or \`{"cli_mode":"careful"}\`). Choosing \`trusted_operator\` establishes an ADR-0018 \xA76 standing authorization; a \`dangerous\`-risk confirmation always requires interactive human review in either mode. |
|
|
46779
|
+
| \`rost_update_model_gateway_policy\` | \`tenant.model_gateway_policy.update\` | Unlock or relock managed models that lack a zero-retention (ZDR) tier. | Tenant-admin | Owner-only, human-gated; call with \`{"allow_non_zdr_models":true}\` (or \`false\` to relock). Unlocking establishes an ADR-0018 \xA76 standing authorization and surfaces a per-model retention disclosure. |
|
|
46613
46780
|
| \`rost_get_aicos_brain_settings\` | \`aicos.brain_settings.get\` | Read AICOS lane and brain labels for cloud managed/BYOK, runner Claude/Codex, and MCP client. | Tenant | Call with \`{}\`; returns enum labels only, never keys, vault refs, or runner secrets. |
|
|
46614
46781
|
| \`rost_update_aicos_brain_settings\` | \`aicos.brain_settings.update\` | Update AICOS lane and cloud/runner brain preferences. | Tenant-admin | Owner-only and human-gated; call with \`{"lane":"runner","runner_brain":"claude-cli"}\` or \`{"cloud_brain":"byok"}\`. BYOK requires an active tenant Anthropic key. For AICOS, selecting \`codex-cli\` is currently rejected until the governed interactive runner path is verified. |
|
|
46615
46782
|
| \`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. |
|
|
@@ -47572,7 +47739,7 @@ Keep agent scope tight at first. Approve more autonomy only after evidence. Use
|
|
|
47572
47739
|
order: 71,
|
|
47573
47740
|
title: "Confirmations and human gates guide",
|
|
47574
47741
|
summary: "How {{brand}} routes authority-changing work through human confirmation, and why agents never approve their own requests.",
|
|
47575
|
-
version: "2026-07-
|
|
47742
|
+
version: "2026-07-11.1",
|
|
47576
47743
|
public: true,
|
|
47577
47744
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
47578
47745
|
stages: ["graph_design", "charter_design", "staffing", "operating_rhythm"],
|
|
@@ -47599,7 +47766,7 @@ Keep agent scope tight at first. Approve more autonomy only after evidence. Use
|
|
|
47599
47766
|
- \`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".
|
|
47600
47767
|
- \`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\`).
|
|
47601
47768
|
- \`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).
|
|
47602
|
-
- \`dangerous\`: the highest-risk human gate. Only
|
|
47769
|
+
- \`dangerous\`: the highest-risk human gate. Only three commands carry it \u2014 \`settings.update\`, \`agent.decommission\`, and \`tenant.model_gateway_policy.update\` (unlocking managed models without a zero-retention tier \u2014 a reviewed act even under \`trusted_operator\`).
|
|
47603
47770
|
|
|
47604
47771
|
The \`dangerous\` confirmation **level** is rare and is not the same as the **risk badge** a pending confirmation can display. The badge shows "dangerous" whenever a command's confirmation level is \`dangerous\` **or** the command redacts secrets (its audit redaction is \`secret_strict\`), so a \`credential_flow\` command such as \`credential.ingress\` shows the dangerous badge while still gating through the credential path \u2014 not the \`dangerous\` level. Read the badge as "handle with care" and the confirmation level as "who must approve". \`confirmation.approve\` and \`confirmation.reject\` are themselves \`none\` \u2014 approving a gate cannot itself require approval.
|
|
47605
47772
|
|
|
@@ -47736,11 +47903,11 @@ Do not claim that a live charge happened unless Stripe test/live evidence proves
|
|
|
47736
47903
|
order: 72,
|
|
47737
47904
|
title: "Settings guide",
|
|
47738
47905
|
summary: "How to use Settings as the control plane for company access, channels, providers, tokens, and operating defaults.",
|
|
47739
|
-
version: "2026-07-
|
|
47906
|
+
version: "2026-07-11.1",
|
|
47740
47907
|
public: true,
|
|
47741
47908
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
47742
47909
|
stages: ["company_setup", "staffing"],
|
|
47743
|
-
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", "settings.agent_policy.get", "settings.agent_policy.update", "settings.confirmation_policy.get", "settings.confirmation_policy.update", "aicos.brain_settings.get", "aicos.brain_settings.update"],
|
|
47910
|
+
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", "settings.agent_policy.get", "settings.agent_policy.update", "settings.confirmation_policy.get", "settings.confirmation_policy.update", "tenant.model_gateway_policy.update", "aicos.brain_settings.get", "aicos.brain_settings.update"],
|
|
47744
47911
|
legal: { publicRisk: "low", notes: ["{{brand}}-native settings guidance."] },
|
|
47745
47912
|
sources: [
|
|
47746
47913
|
{
|
|
@@ -47775,6 +47942,7 @@ Section state is fully server-side: every in-app link, redirect, and save uses \
|
|
|
47775
47942
|
- Stored credentials (vault references only) and tool access approvals.
|
|
47776
47943
|
- Operating defaults, including Sync Brief scope.
|
|
47777
47944
|
- Product-learning participation for bounded product analytics.
|
|
47945
|
+
- Model gateway policy: whether managed runs may use a non-zero-retention model.
|
|
47778
47946
|
|
|
47779
47947
|
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.
|
|
47780
47948
|
|
|
@@ -47839,6 +48007,15 @@ The CLI confirmation mode is a separate tenant-wide dial. It does not change wha
|
|
|
47839
48007
|
- Read it with \`settings.confirmation_policy.get\` (CLI: \`{{cli}} settings confirmation-mode get\`). Set it with \`settings.confirmation_policy.update\` (CLI: \`{{cli}} settings confirmation-mode set --mode trusted_operator\`). Owner-only and human-gated.
|
|
47840
48008
|
- Stored at \`tenants.settings.confirmation_policy\`; enforced server-side in \`confirmation.approve\`, so a stale or modified local CLI cannot bypass it.
|
|
47841
48009
|
|
|
48010
|
+
## Model gateway policy
|
|
48011
|
+
|
|
48012
|
+
The model gateway policy is a separate tenant-wide dial (ADR-0019) that controls whether the AI Gateway may route a managed run to a provider model that lacks a zero-retention (ZDR) tier.
|
|
48013
|
+
|
|
48014
|
+
- \`allow_non_zdr_models: false\` is the conservative default for every company. The gateway restricts managed runs to zero-retention-eligible models.
|
|
48015
|
+
- Unlocking is a deliberate tenant_admin opt-in (an ADR-0018 \xA76 standing authorization): it lets managed brains without a zero-retention tier run, disclosed up front \u2014 the provider retains data up to 30 days for abuse monitoring.
|
|
48016
|
+
- Set it with \`tenant.model_gateway_policy.update\` (call with \`{"allow_non_zdr_models":true}\` or \`{"allow_non_zdr_models":false}\`). Owner-only and human-gated.
|
|
48017
|
+
- Stored at \`tenants.settings.model_gateway_policy\`; enforced server-side in the AI Gateway inference-policy resolver, so a stale or modified local client cannot bypass it. The model-picker UI that surfaces this choice inline ships separately.
|
|
48018
|
+
|
|
47842
48019
|
## Agent guidance
|
|
47843
48020
|
|
|
47844
48021
|
Agents may explain which setting is needed and why. They should not ask users to paste secrets into chat or tool arguments. When credentials are required, route the user to the vault-backed setup flow.`
|
|
@@ -50022,6 +50199,7 @@ var COMMAND_MANIFEST = [
|
|
|
50022
50199
|
{ "id": "team.health_score", "namespace": "team", "action": "health_score", "title": "Team health score", "description": "Return the single rolled-up 0\u2013100 team-health score (latest month) with its band (green/yellow/red) and label. Honest insufficient-data state when no metrics exist yet.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [], "hasComplexInput": false, "help": "Read the single rolled-up 0-100 team-health score (latest month) with its band and label." },
|
|
50023
50200
|
{ "id": "tenant.anthropic_key.save", "namespace": "tenant", "action": "anthropic_key.save", "title": "Save tenant Anthropic key", "description": "Store a tenant-scoped Anthropic key in the configured vault.", "requiredScope": "tenant", "confirmation": "credential_flow", "exposeOverMcp": true, "fields": [], "hasComplexInput": false, "secretBlocked": true, "help": "Save model-provider credentials only through vault-backed flows and keep raw keys out of prompts, logs, and command metadata." },
|
|
50024
50201
|
{ "id": "tenant.create", "namespace": "tenant", "action": "create", "title": "Create additional company", "description": "Create a new clean company for an already-provisioned account after checking tenant.create.additional entitlement.", "requiredScope": "tenant_admin", "confirmation": "none", "exposeOverMcp": false, "fields": [{ "name": "company_name", "flag": "company-name", "type": "string", "required": true }], "hasComplexInput": false, "help": "Create an additional clean company from an existing company session. Requires tenant.create.additional entitlement; first-company bootstrap stays signup.provision_tenant." },
|
|
50202
|
+
{ "id": "tenant.model_gateway_policy.update", "namespace": "tenant", "action": "model_gateway_policy.update", "title": "Update model gateway policy", "description": "Unlock or relock managed models that do not offer a zero-retention (ZDR) tier (ADR-0019). Locked (the conservative default) restricts the AI Gateway to zero-retention-eligible managed models. Owner-only and human-gated: unlocking is a deliberate ADR-0018 \xA76 standing authorization that lets managed brains without a zero-retention tier run. This provider retains data up to 30 days for abuse monitoring.", "requiredScope": "tenant_admin", "confirmation": "dangerous", "exposeOverMcp": true, "fields": [{ "name": "allow_non_zdr_models", "flag": "allow-non-zdr-models", "type": "boolean", "required": true }], "hasComplexInput": false, "help": "Unlock or relock managed models that do not offer a zero-retention (ZDR) tier (ADR-0019). Locked (default) restricts the AI Gateway to zero-retention-eligible managed models. Owner-only and human-gated; unlocking establishes an ADR-0018 \xA76 standing authorization and surfaces the per-model retention disclosure." },
|
|
50025
50203
|
{ "id": "tenant.rename", "namespace": "tenant", "action": "rename", "title": "Rename company", "description": "Rename the current tenant/company. The rename is human-gated and writes an audit event.", "requiredScope": "tenant_admin", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "company_name", "flag": "company-name", "type": "string", "required": true }], "hasComplexInput": false, "help": "Rename the current company; owner-only, human-gated, and audited as an event." },
|
|
50026
50204
|
{ "id": "tool.catalog", "namespace": "tool", "action": "catalog", "title": "List tool catalog", "description": "List the discoverable tool catalog the agent builder reads \u2014 tool id, title, provider, prescriptive description, default scope tiers, credential requirement, access policy, and execution-boundary guidance.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "provider", "flag": "provider", "type": "string", "required": false }], "hasComplexInput": false, "help": "List the tool catalog the builder reads \u2014 id, prescriptive description, scope tiers, credential requirement, access policy, and execution-boundary guidance." },
|
|
50027
50205
|
{ "id": "usage.report", "namespace": "usage", "action": "report", "title": "AI-workforce ROI report", "description": "Return the tenant's immutable per-period usage snapshots \u2014 agents ran, outputs, token/run cost, human-accepted value, exceptions, and approvals \u2014 for the AI-workforce ROI report.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "limit", "flag": "limit", "type": "integer", "required": false }], "hasComplexInput": false, "help": "Read the AI-workforce ROI report \u2014 per-period agents/outputs/token+run cost, human-accepted value, exceptions, and approvals \u2014 from immutable usage snapshots." },
|