@rosthq/cli 0.7.63 → 0.7.65
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({
|
|
@@ -38100,6 +38250,22 @@ var CATALOG_ENTRIES = [
|
|
|
38100
38250
|
credential_required: false,
|
|
38101
38251
|
default_access_policy: "always_allow"
|
|
38102
38252
|
},
|
|
38253
|
+
{
|
|
38254
|
+
id: "script.run",
|
|
38255
|
+
title: "Run a script (sandbox)",
|
|
38256
|
+
provider: "rost",
|
|
38257
|
+
description: "Call this to run a short program (shell/node/python) in an isolated, network-disabled microVM for pure computation \u2014 parsing, transforming, calculating, or validating data the agent already holds. The sandbox has NO credentials and NO network access; it cannot read files, call APIs, or reach the internet. Use it for compute, never to fetch or send data. Every run is metered and audited; availability is a per-account entitlement and each call is confirmed by default (arbitrary code execution).",
|
|
38258
|
+
// Compute-only: the microVM produces a structured, size-capped result and has
|
|
38259
|
+
// no durable or external effect, so the narrowest useful tier is `read`.
|
|
38260
|
+
default_scope_tier: "read",
|
|
38261
|
+
scope_tiers: ["read"],
|
|
38262
|
+
// v1 injects ZERO credentials (secret grants are DER-1585) — never a vault ref.
|
|
38263
|
+
credential_required: false,
|
|
38264
|
+
// Conservative by default (invariant #10): arbitrary code execution routes to the
|
|
38265
|
+
// human on every call until a tenant deliberately loosens it. The separate
|
|
38266
|
+
// `agent.script_run` account entitlement gates availability on top of this.
|
|
38267
|
+
default_access_policy: "always_ask"
|
|
38268
|
+
},
|
|
38103
38269
|
{
|
|
38104
38270
|
id: "ap.invoices.read",
|
|
38105
38271
|
title: "Read AP invoices",
|
|
@@ -39325,6 +39491,27 @@ var storedConfirmationPolicySchema = external_exports.object({
|
|
|
39325
39491
|
cli_mode: cliConfirmationModeSchema
|
|
39326
39492
|
}).strict();
|
|
39327
39493
|
|
|
39494
|
+
// ../../packages/protocol/src/model-gateway-policy.ts
|
|
39495
|
+
var storedModelGatewayPolicySchema = external_exports.object({
|
|
39496
|
+
allow_non_zdr_models: external_exports.boolean()
|
|
39497
|
+
}).strict();
|
|
39498
|
+
|
|
39499
|
+
// ../../packages/protocol/src/cloud-brain-options.ts
|
|
39500
|
+
var cloudBrainOptionSchema = external_exports.object({
|
|
39501
|
+
// Null is reserved for the synthetic Anthropic "Automatic" default (today's
|
|
39502
|
+
// unchanged tiering behavior — no behavior change). A real option's slug is
|
|
39503
|
+
// the registry's dotted `provider:model` slug (e.g. "openai:gpt-5.6").
|
|
39504
|
+
slug: external_exports.string().nullable(),
|
|
39505
|
+
provider: external_exports.string(),
|
|
39506
|
+
label: external_exports.string().min(1),
|
|
39507
|
+
managed: external_exports.boolean(),
|
|
39508
|
+
zdr_available: external_exports.boolean(),
|
|
39509
|
+
selectable: external_exports.boolean(),
|
|
39510
|
+
disabled_reason: external_exports.string().min(1).nullable(),
|
|
39511
|
+
retention_disclosure: external_exports.string().min(1).nullable(),
|
|
39512
|
+
live_note: external_exports.string().min(1).nullable()
|
|
39513
|
+
}).strict();
|
|
39514
|
+
|
|
39328
39515
|
// ../../packages/protocol/src/aicos.ts
|
|
39329
39516
|
var uuidSchema5 = external_exports.string().uuid();
|
|
39330
39517
|
var jsonObjectSchema = external_exports.record(external_exports.string(), external_exports.unknown());
|
|
@@ -39542,7 +39729,18 @@ var aicosBrainSettingsSchema = external_exports.object({
|
|
|
39542
39729
|
cloud_brain: aicosCloudBrainPreferenceSchema,
|
|
39543
39730
|
runner_brain: aicosRunnerBrainPreferenceSchema,
|
|
39544
39731
|
effective_brain: aicosAnswerBrainSchema,
|
|
39545
|
-
label: external_exports.string().min(1).max(80)
|
|
39732
|
+
label: external_exports.string().min(1).max(80),
|
|
39733
|
+
// DER-1591 (ADR-0019 W2.3b): the persisted managed-model slug for cloud
|
|
39734
|
+
// AICOS (null = the Anthropic "Automatic" default — today's unchanged
|
|
39735
|
+
// behavior), the full picker option list (ZDR-gated availability +
|
|
39736
|
+
// disclosure + the permanent non-Anthropic honesty note baked into each
|
|
39737
|
+
// option by `buildCloudBrainOptions`), and whether this tenant has unlocked
|
|
39738
|
+
// non-ZDR managed models. This settings/persistence layer does not yet
|
|
39739
|
+
// change which model actually serves a cloud turn (DER-1582, next in the
|
|
39740
|
+
// serial lane, wires it live).
|
|
39741
|
+
cloud_model_slug: external_exports.string().nullable(),
|
|
39742
|
+
cloud_options: external_exports.array(cloudBrainOptionSchema),
|
|
39743
|
+
non_zdr_unlocked: external_exports.boolean()
|
|
39546
39744
|
}).strict();
|
|
39547
39745
|
var aicosBrainSettingsGetInputSchema = external_exports.object({}).strict();
|
|
39548
39746
|
var aicosBrainSettingsGetOutputSchema = external_exports.object({
|
|
@@ -39551,9 +39749,10 @@ var aicosBrainSettingsGetOutputSchema = external_exports.object({
|
|
|
39551
39749
|
var aicosBrainSettingsUpdateInputSchema = external_exports.object({
|
|
39552
39750
|
lane: aicosLaneSchema.optional(),
|
|
39553
39751
|
cloud_brain: aicosCloudBrainPreferenceSchema.optional(),
|
|
39554
|
-
runner_brain: aicosRunnerBrainPreferenceSchema.optional()
|
|
39752
|
+
runner_brain: aicosRunnerBrainPreferenceSchema.optional(),
|
|
39753
|
+
cloud_model_slug: external_exports.string().nullable().optional()
|
|
39555
39754
|
}).strict().refine(
|
|
39556
|
-
(value) => value.lane !== void 0 || value.cloud_brain !== void 0 || value.runner_brain !== void 0,
|
|
39755
|
+
(value) => value.lane !== void 0 || value.cloud_brain !== void 0 || value.runner_brain !== void 0 || value.cloud_model_slug !== void 0,
|
|
39557
39756
|
"At least one AICOS lane or brain setting must be provided."
|
|
39558
39757
|
);
|
|
39559
39758
|
var aicosSessionSchema = external_exports.object({
|
|
@@ -42573,6 +42772,16 @@ var confirmationPolicyGetOutputSchema = external_exports.object({
|
|
|
42573
42772
|
var confirmationPolicyUpdateInputSchema = external_exports.object({
|
|
42574
42773
|
cli_mode: cliConfirmationModeSchema
|
|
42575
42774
|
}).strict();
|
|
42775
|
+
var modelGatewayPolicyDtoSchema = external_exports.object({
|
|
42776
|
+
allow_non_zdr_models: external_exports.boolean(),
|
|
42777
|
+
explicit: external_exports.boolean()
|
|
42778
|
+
}).strict();
|
|
42779
|
+
var modelGatewayPolicyUpdateInputSchema = external_exports.object({
|
|
42780
|
+
allow_non_zdr_models: external_exports.boolean()
|
|
42781
|
+
}).strict();
|
|
42782
|
+
var modelGatewayPolicyUpdateOutputSchema = external_exports.object({
|
|
42783
|
+
model_gateway_policy: modelGatewayPolicyDtoSchema
|
|
42784
|
+
}).strict();
|
|
42576
42785
|
var tenantSpendStatusSchema = external_exports.object({
|
|
42577
42786
|
spend_usd: external_exports.string(),
|
|
42578
42787
|
soft_cap_usd: external_exports.string().nullable(),
|
|
@@ -45000,7 +45209,7 @@ The Compass is drafted, then activated by a human through supersession.
|
|
|
45000
45209
|
order: 15,
|
|
45001
45210
|
title: "AICOS chat guide",
|
|
45002
45211
|
summary: "How the AI Chief of Staff chat works in the authenticated app shell and what it can safely do today.",
|
|
45003
|
-
version: "2026-07-
|
|
45212
|
+
version: "2026-07-11.1",
|
|
45004
45213
|
public: true,
|
|
45005
45214
|
audiences: ["human", "in_app_agent"],
|
|
45006
45215
|
stages: ["company_setup", "operating_rhythm"],
|
|
@@ -45013,6 +45222,7 @@ The Compass is drafted, then activated by a human through supersession.
|
|
|
45013
45222
|
"runner.list",
|
|
45014
45223
|
"aicos.brain_settings.get",
|
|
45015
45224
|
"aicos.brain_settings.update",
|
|
45225
|
+
"tenant.model_gateway_policy.update",
|
|
45016
45226
|
"agent.create_custom",
|
|
45017
45227
|
"agent.configure_tools",
|
|
45018
45228
|
"agent.run_dry_run",
|
|
@@ -45068,7 +45278,7 @@ Each turn carries server-normalized page context: route template, current path,
|
|
|
45068
45278
|
|
|
45069
45279
|
The current chat harness shows the effective lane and model. Cloud is the default and remains the enforced lane during onboarding, even if a post-onboarding lane has been selected. After onboarding, an owner or admin can select cloud, runner, or MCP only when the server says that lane is ready. Lane changes update the governed AICOS agent seat and write an append-only audit event; the browser never decides tenant authority or runner/MCP readiness.
|
|
45070
45280
|
|
|
45071
|
-
AICOS also has an explicit brain selection. Cloud can use the included managed allowance or a tenant Anthropic key (BYOK). Runner brain preference still records Claude or Codex, but interactive AICOS runner turns are currently gated to Claude while the Codex path remains unverified. MCP is labeled as the MCP client. Read this selection with \`aicos.brain_settings.get\`; owners can update it with \`aicos.brain_settings.update\` (CLI flags: \`--lane\`, \`--cloud-brain managed|byok\`, \`--runner-brain claude-cli|codex-cli\`). BYOK requires an active tenant Anthropic key. Choosing \`codex-cli\` for AICOS runner mode is currently rejected with a precondition error until the governed interactive runner path is verified. Runner and MCP answers are labeled in the transcript and do not consume the managed cloud allowance. If the selected runner reports that its active local model account has exhausted its allowance, Settings surfaces **Allowance exhausted** before the user sends another AICOS turn so they can switch lanes, switch runner accounts, or keep working manually instead of waiting on a doomed runner round-trip.
|
|
45281
|
+
AICOS also has an explicit brain selection. Cloud can use the included managed allowance or a tenant Anthropic key (BYOK). When cloud is on the managed allowance, an owner can also pick a specific managed model from the AI Gateway's priced, ZDR-rated catalog (today: Anthropic's own "Automatic" default, plus managed OpenAI and xAI entries) instead of leaving the choice on Anthropic's default routing. A managed model without a zero-data-retention tier shows as locked with the reason until a tenant owner explicitly unlocks non-ZDR managed models (\`tenant.model_gateway_policy.update\`, owner-only and dangerous-gated); once unlocked, its per-model data-retention disclosure is shown before it becomes selectable. Selecting one of these managed models updates AICOS settings immediately, but it does not yet change which model actually answers a cloud AICOS turn \u2014 every non-Anthropic option says so plainly, and cloud turns keep running on the existing Anthropic routing until a later runtime cutover wires the persisted selection through. Runner brain preference still records Claude or Codex, but interactive AICOS runner turns are currently gated to Claude while the Codex path remains unverified. MCP is labeled as the MCP client. Read this selection with \`aicos.brain_settings.get\`; owners can update it with \`aicos.brain_settings.update\` (CLI flags: \`--lane\`, \`--cloud-brain managed|byok\`, \`--runner-brain claude-cli|codex-cli\`). BYOK requires an active tenant Anthropic key and does not support a specific managed-model selection. Choosing \`codex-cli\` for AICOS runner mode is currently rejected with a precondition error until the governed interactive runner path is verified. Runner and MCP answers are labeled in the transcript and do not consume the managed cloud allowance. If the selected runner reports that its active local model account has exhausted its allowance, Settings surfaces **Allowance exhausted** before the user sends another AICOS turn so they can switch lanes, switch runner accounts, or keep working manually instead of waiting on a doomed runner round-trip.
|
|
45072
45282
|
|
|
45073
45283
|
Runner mode uses the same AICOS sessions and transcript. Interactive chat turns are tracked separately from scheduled work orders: each user message has one user-owned turn execution with a short deadline, so two users' chat messages cannot collapse into the same scheduled-work slot. Scheduled and Forge runner work still use work orders. Runner claim packets carry ids and execution metadata, not the user's free-text request. After claim, the local runner calls the governed AICOS context-load tool, which re-checks seat scope and returns the bounded transcript, session summary, route context, tenant clock, grounding text, and source counts authorized for that turn. For execute-ready runners, the claim also carries a server-built Seat work contract that names the governed runtime profile, the AICOS context-loader tool, and the Seat's permission manifest; action attempts still route through command guards, tool-call audit, and pending confirmations. The runner treats loaded tenant clock, context, and contract as authoritative instead of substituting its own runtime clock, local files, or self-invented authority. A runner must be paired, execute-ready, and backed by the live AICOS agent before it can be selected.
|
|
45074
45284
|
|
|
@@ -45151,7 +45361,7 @@ Treat AICOS as a coordinator over the operating system. It can become more usefu
|
|
|
45151
45361
|
order: 20,
|
|
45152
45362
|
title: "Responsibility Graph playbook",
|
|
45153
45363
|
summary: "How to build a functions-first graph with seats, owners, Stewards, vacancies, and clean authority.",
|
|
45154
|
-
version: "2026-07-10.
|
|
45364
|
+
version: "2026-07-10.2",
|
|
45155
45365
|
public: true,
|
|
45156
45366
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
45157
45367
|
stages: ["graph_design", "staffing"],
|
|
@@ -45230,7 +45440,7 @@ The graph also carries a mission-control panel. It pulls the same operational st
|
|
|
45230
45440
|
|
|
45231
45441
|
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
45442
|
|
|
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
|
|
45443
|
+
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
45444
|
|
|
45235
45445
|
## Review an agent seat's delivered work
|
|
45236
45446
|
|
|
@@ -45959,7 +46169,7 @@ External connectors are being rolled out provider by provider, conservatively (r
|
|
|
45959
46169
|
order: 48,
|
|
45960
46170
|
title: "CLI and MCP installation guide",
|
|
45961
46171
|
summary: "Install the public CLI, register remote token-backed MCP clients, and find the full command and tool catalog.",
|
|
45962
|
-
version: "2026-07-
|
|
46172
|
+
version: "2026-07-11.1",
|
|
45963
46173
|
public: true,
|
|
45964
46174
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
45965
46175
|
stages: ["company_setup", "staffing"],
|
|
@@ -46426,6 +46636,7 @@ The signed-in app exposes the same Skill command surface at **Skills**, linked f
|
|
|
46426
46636
|
| \`{{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
46637
|
| \`{{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
46638
|
| \`{{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"\` |
|
|
46639
|
+
| \`{{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
46640
|
| \`{{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
46641
|
| \`{{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
46642
|
| \`{{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 +46821,7 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
|
|
|
46610
46821
|
| \`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
46822
|
| \`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
46823
|
| \`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. |
|
|
46824
|
+
| \`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
46825
|
| \`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
46826
|
| \`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
46827
|
| \`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 +47784,7 @@ Keep agent scope tight at first. Approve more autonomy only after evidence. Use
|
|
|
47572
47784
|
order: 71,
|
|
47573
47785
|
title: "Confirmations and human gates guide",
|
|
47574
47786
|
summary: "How {{brand}} routes authority-changing work through human confirmation, and why agents never approve their own requests.",
|
|
47575
|
-
version: "2026-07-
|
|
47787
|
+
version: "2026-07-11.1",
|
|
47576
47788
|
public: true,
|
|
47577
47789
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
47578
47790
|
stages: ["graph_design", "charter_design", "staffing", "operating_rhythm"],
|
|
@@ -47599,7 +47811,7 @@ Keep agent scope tight at first. Approve more autonomy only after evidence. Use
|
|
|
47599
47811
|
- \`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
47812
|
- \`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
47813
|
- \`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
|
|
47814
|
+
- \`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
47815
|
|
|
47604
47816
|
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
47817
|
|
|
@@ -47736,11 +47948,11 @@ Do not claim that a live charge happened unless Stripe test/live evidence proves
|
|
|
47736
47948
|
order: 72,
|
|
47737
47949
|
title: "Settings guide",
|
|
47738
47950
|
summary: "How to use Settings as the control plane for company access, channels, providers, tokens, and operating defaults.",
|
|
47739
|
-
version: "2026-07-
|
|
47951
|
+
version: "2026-07-11.1",
|
|
47740
47952
|
public: true,
|
|
47741
47953
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
47742
47954
|
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"],
|
|
47955
|
+
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
47956
|
legal: { publicRisk: "low", notes: ["{{brand}}-native settings guidance."] },
|
|
47745
47957
|
sources: [
|
|
47746
47958
|
{
|
|
@@ -47775,6 +47987,7 @@ Section state is fully server-side: every in-app link, redirect, and save uses \
|
|
|
47775
47987
|
- Stored credentials (vault references only) and tool access approvals.
|
|
47776
47988
|
- Operating defaults, including Sync Brief scope.
|
|
47777
47989
|
- Product-learning participation for bounded product analytics.
|
|
47990
|
+
- Model gateway policy: whether managed runs may use a non-zero-retention model.
|
|
47778
47991
|
|
|
47779
47992
|
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
47993
|
|
|
@@ -47839,6 +48052,15 @@ The CLI confirmation mode is a separate tenant-wide dial. It does not change wha
|
|
|
47839
48052
|
- 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
48053
|
- Stored at \`tenants.settings.confirmation_policy\`; enforced server-side in \`confirmation.approve\`, so a stale or modified local CLI cannot bypass it.
|
|
47841
48054
|
|
|
48055
|
+
## Model gateway policy
|
|
48056
|
+
|
|
48057
|
+
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.
|
|
48058
|
+
|
|
48059
|
+
- \`allow_non_zdr_models: false\` is the conservative default for every company. The gateway restricts managed runs to zero-retention-eligible models.
|
|
48060
|
+
- 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.
|
|
48061
|
+
- 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.
|
|
48062
|
+
- 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.
|
|
48063
|
+
|
|
47842
48064
|
## Agent guidance
|
|
47843
48065
|
|
|
47844
48066
|
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.`
|
|
@@ -49825,7 +50047,7 @@ var COMMAND_MANIFEST = [
|
|
|
49825
50047
|
{ "id": "agent.status", "namespace": "agent", "action": "status", "title": "Get agent status", "description": "Return the agent occupancy, lane, schedule, live/offline state, steward chain, dry-run result, and Runner availability for a seat.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Check an agent's lane, live state, steward chain, dry-run result, and Runner availability before relying on it." },
|
|
49826
50048
|
{ "id": "agent.update_schedule", "namespace": "agent", "action": "update_schedule", "title": "Update agent schedule", "description": "Set or clear the scheduled execution cron for a draft or live agent on a seat.", "requiredScope": "tenant", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }, { "name": "schedule_cron", "flag": "schedule-cron", "type": "string", "required": true }], "hasComplexInput": false, "help": "Set or clear an agent's scheduled execution; a live scheduled agent must keep a steward chain resolving to a human." },
|
|
49827
50049
|
{ "id": "aicos.brain_settings.get", "namespace": "aicos", "action": "brain_settings.get", "title": "Get AICOS brain settings", "description": "Read the AICOS run lane and brain selection. Returns labels and enum settings only; no secrets or vault refs.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [], "hasComplexInput": false, "help": "Read the AICOS lane and brain selection labels without returning provider keys, vault refs, or runner secrets." },
|
|
49828
|
-
{ "id": "aicos.brain_settings.update", "namespace": "aicos", "action": "brain_settings.update", "title": "Update AICOS brain settings", "description": "Update the AICOS lane and cloud/runner brain preferences. Owner-only and audited.", "requiredScope": "tenant_admin", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "lane", "flag": "lane", "type": "enum", "required": false, "enumValues": ["cloud", "runner", "mcp"] }, { "name": "cloud_brain", "flag": "cloud-brain", "type": "enum", "required": false, "enumValues": ["managed", "byok"] }, { "name": "runner_brain", "flag": "runner-brain", "type": "enum", "required": false, "enumValues": ["claude-cli", "codex-cli"] }], "hasComplexInput": false, "help": "Owner-only update for AICOS cloud managed/BYOK and runner Claude/Codex preferences; BYOK requires an active tenant Anthropic key." },
|
|
50050
|
+
{ "id": "aicos.brain_settings.update", "namespace": "aicos", "action": "brain_settings.update", "title": "Update AICOS brain settings", "description": "Update the AICOS lane and cloud/runner brain preferences. Owner-only and audited.", "requiredScope": "tenant_admin", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "lane", "flag": "lane", "type": "enum", "required": false, "enumValues": ["cloud", "runner", "mcp"] }, { "name": "cloud_brain", "flag": "cloud-brain", "type": "enum", "required": false, "enumValues": ["managed", "byok"] }, { "name": "runner_brain", "flag": "runner-brain", "type": "enum", "required": false, "enumValues": ["claude-cli", "codex-cli"] }, { "name": "cloud_model_slug", "flag": "cloud-model-slug", "type": "string", "required": false }], "hasComplexInput": false, "help": "Owner-only update for AICOS cloud managed/BYOK and runner Claude/Codex preferences; BYOK requires an active tenant Anthropic key." },
|
|
49829
50051
|
{ "id": "cascade.import", "namespace": "cascade", "action": "import", "title": "Import Rocks from a ninety Rocks export", "description": "Bulk-import a ninety Rocks export into the Cascade as cycle goals under a company objective in the active cycle. Owners are seat names resolved to seats. Requires an active cycle and a target company objective (auto-selected when exactly one exists, else pass parent_objective_id). Idempotent \u2014 re-importing the same export is a no-op, and an existing cycle goal with the same objective + seat + title is skipped.", "requiredScope": "tenant_admin", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "dry_run", "flag": "dry-run", "type": "boolean", "required": false }, { "name": "parent_objective_id", "flag": "parent-objective-id", "type": "string", "required": false }], "hasComplexInput": true, "help": "Import a ninety Rocks export into the Cascade as cycle goals under a company objective in the active cycle; owners resolve to seats." },
|
|
49830
50052
|
{ "id": "charter.apply_seat_type_recommendation", "namespace": "charter", "action": "apply_seat_type_recommendation", "title": "Apply Charter seat-type recommendation", "description": "Apply the seat-type recommendation from a draft Charter.", "requiredScope": "seat", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "charter_version_id", "flag": "charter-version-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Apply seat-type recommendations only after the Charter clarifies work shape, risk, and Steward accountability." },
|
|
49831
50053
|
{ "id": "charter.approve", "namespace": "charter", "action": "approve", "title": "Approve charter", "description": "Approve a draft Charter as a human owner.", "requiredScope": "seat", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": false }, { "name": "charter_version_id", "flag": "charter-version-id", "type": "string", "required": false }, { "name": "apply_seat_type", "flag": "apply-seat-type", "type": "boolean", "required": false }], "hasComplexInput": true, "help": "Charter approval is a human decision that activates the seat's operating contract." },
|
|
@@ -50022,6 +50244,7 @@ var COMMAND_MANIFEST = [
|
|
|
50022
50244
|
{ "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
50245
|
{ "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
50246
|
{ "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." },
|
|
50247
|
+
{ "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
50248
|
{ "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
50249
|
{ "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
50250
|
{ "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." },
|