@rosthq/cli 0.7.71 → 0.7.73
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
|
@@ -38281,10 +38281,10 @@ var CATALOG_ENTRIES = [
|
|
|
38281
38281
|
title: "Run a script (sandbox)",
|
|
38282
38282
|
provider: "rost",
|
|
38283
38283
|
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).",
|
|
38284
|
-
// Compute-only
|
|
38285
|
-
//
|
|
38286
|
-
default_scope_tier: "
|
|
38287
|
-
scope_tiers: ["
|
|
38284
|
+
// Compute-only, but still arbitrary code execution. In the capability UI this
|
|
38285
|
+
// belongs to the action-capable "Read & act" posture, never read-only.
|
|
38286
|
+
default_scope_tier: "draft",
|
|
38287
|
+
scope_tiers: ["draft"],
|
|
38288
38288
|
// v1 injects ZERO credentials (secret grants are DER-1585) — never a vault ref.
|
|
38289
38289
|
credential_required: false,
|
|
38290
38290
|
// Conservative by default (invariant #10): arbitrary code execution routes to the
|
|
@@ -38410,10 +38410,20 @@ var CATALOG_ENTRIES = [
|
|
|
38410
38410
|
default_access_policy: "always_ask"
|
|
38411
38411
|
},
|
|
38412
38412
|
{
|
|
38413
|
-
id: "web.
|
|
38413
|
+
id: "web.search",
|
|
38414
38414
|
title: "Web research",
|
|
38415
38415
|
provider: "web",
|
|
38416
|
-
description: "Call this to
|
|
38416
|
+
description: "Call this to search public web sources with citations. Read-only; it uses the server-side Exa provider, never exposes provider keys, and escalates paid data sources or sensitive personal data.",
|
|
38417
|
+
default_scope_tier: "read",
|
|
38418
|
+
scope_tiers: ["read"],
|
|
38419
|
+
credential_required: false,
|
|
38420
|
+
default_access_policy: "always_allow"
|
|
38421
|
+
},
|
|
38422
|
+
{
|
|
38423
|
+
id: "web.fetch",
|
|
38424
|
+
title: "Read public web page",
|
|
38425
|
+
provider: "web",
|
|
38426
|
+
description: "Call this to fetch and extract text from one public HTTPS page. It validates DNS, redirects, content type, size, and private-network boundaries before reading.",
|
|
38417
38427
|
default_scope_tier: "read",
|
|
38418
38428
|
scope_tiers: ["read"],
|
|
38419
38429
|
credential_required: false,
|
|
@@ -38655,7 +38665,7 @@ function accessLevelForScope(scopeTier) {
|
|
|
38655
38665
|
}
|
|
38656
38666
|
function providerRequirementFor(entry) {
|
|
38657
38667
|
if (!entry.credential_required) {
|
|
38658
|
-
return entry.provider === "rost" ? "platform_managed" : "none";
|
|
38668
|
+
return entry.provider === "rost" || entry.provider === "web" ? "platform_managed" : "none";
|
|
38659
38669
|
}
|
|
38660
38670
|
return entry.id === "secret.broker" ? "vault_ref" : "connection";
|
|
38661
38671
|
}
|
|
@@ -38682,7 +38692,7 @@ function enrichCatalogEntry(entry) {
|
|
|
38682
38692
|
access_levels: accessLevels,
|
|
38683
38693
|
default_access_level: accessLevelForScope(entry.default_scope_tier),
|
|
38684
38694
|
provider_requirement: providerRequirementFor(entry),
|
|
38685
|
-
cost_class: entry.id === "script.run" || entry.id === "secret.broker" ? "metered_standard" : "included",
|
|
38695
|
+
cost_class: entry.id === "script.run" || entry.id === "secret.broker" ? "metered_standard" : entry.id === "web.search" || entry.id === "web.fetch" || entry.id === "browser.read" ? "metered_low" : "included",
|
|
38686
38696
|
lane_support: ["cloud", "runner", "mcp"],
|
|
38687
38697
|
trusted_required_metadata: trustedRequiredMetadataFor(entry)
|
|
38688
38698
|
};
|
|
@@ -39405,6 +39415,27 @@ var agentCreateFromTemplateOutputSchema = agentSetupStateSchema.extend({
|
|
|
39405
39415
|
occupancy_created: external_exports.boolean()
|
|
39406
39416
|
}).strict();
|
|
39407
39417
|
|
|
39418
|
+
// ../../packages/protocol/src/provider-costs.ts
|
|
39419
|
+
var providerCostKinds = ["managed_llm", "exa", "browser", "sandbox"];
|
|
39420
|
+
var providerCostKindSchema = external_exports.enum(providerCostKinds);
|
|
39421
|
+
var keySourceSchema = external_exports.enum(["rost_managed", "tenant_byok"]);
|
|
39422
|
+
var atSchema = external_exports.union([external_exports.date(), external_exports.string().datetime()]).optional();
|
|
39423
|
+
var providerCostEntrySchema = external_exports.object({
|
|
39424
|
+
kind: providerCostKindSchema,
|
|
39425
|
+
effectiveFrom: external_exports.string().datetime(),
|
|
39426
|
+
estimatedCents: external_exports.number().int().nonnegative(),
|
|
39427
|
+
provider: external_exports.string().min(1)
|
|
39428
|
+
}).strict();
|
|
39429
|
+
var PROVIDER_COST_REGISTRY = Object.freeze([
|
|
39430
|
+
{ kind: "exa", provider: "exa", effectiveFrom: "2026-07-11T00:00:00.000Z", estimatedCents: 30 },
|
|
39431
|
+
{ kind: "exa", provider: "exa", effectiveFrom: "2026-07-15T00:00:00.000Z", estimatedCents: 35 },
|
|
39432
|
+
{ kind: "browser", provider: "browser", effectiveFrom: "2026-07-11T00:00:00.000Z", estimatedCents: 60 },
|
|
39433
|
+
{ kind: "sandbox", provider: "sandbox", effectiveFrom: "2026-07-11T00:00:00.000Z", estimatedCents: 120 }
|
|
39434
|
+
]);
|
|
39435
|
+
for (const entry of PROVIDER_COST_REGISTRY) {
|
|
39436
|
+
providerCostEntrySchema.parse(entry);
|
|
39437
|
+
}
|
|
39438
|
+
|
|
39408
39439
|
// ../../packages/protocol/src/agent-builder.ts
|
|
39409
39440
|
var uuidSchema4 = external_exports.string().uuid();
|
|
39410
39441
|
var singleLineSchema = external_exports.string().trim().min(1).max(500).regex(/^[^\n\r]+$/, "Value must be a single line.");
|
|
@@ -39715,6 +39746,116 @@ var toolGrantsAgentUpdateOutputSchema = external_exports.object({
|
|
|
39715
39746
|
permission_manifest: external_exports.array(compiledCapabilityManifestEntrySchema)
|
|
39716
39747
|
}).strict().nullable()
|
|
39717
39748
|
}).strict();
|
|
39749
|
+
var scopeDigestSchema = external_exports.string().regex(/^sha256:[0-9a-f]{64}$/);
|
|
39750
|
+
var classifierVersionSchema = external_exports.string().regex(/^[a-z][a-z0-9_.-]{0,79}$/);
|
|
39751
|
+
var agentActivationReceiptInputSchema = external_exports.object({
|
|
39752
|
+
agent_id: uuidSchema5,
|
|
39753
|
+
proposed_budget_cents: external_exports.number().int().nonnegative().max(1e7).optional()
|
|
39754
|
+
}).strict();
|
|
39755
|
+
var agentActivationReceiptCapabilitySchema = external_exports.object({
|
|
39756
|
+
capability_id: external_exports.string().min(1),
|
|
39757
|
+
access_level: capabilityGrantAccessLevelSchema,
|
|
39758
|
+
compile_status: capabilityGrantCompileStatusSchema,
|
|
39759
|
+
connection: capabilityGrantConnectionSchema
|
|
39760
|
+
}).strict();
|
|
39761
|
+
var agentActivationReceiptDiffSchema = external_exports.object({
|
|
39762
|
+
added: external_exports.array(external_exports.string().min(1)),
|
|
39763
|
+
removed: external_exports.array(external_exports.string().min(1)),
|
|
39764
|
+
changed: external_exports.array(external_exports.object({
|
|
39765
|
+
capability_id: external_exports.string().min(1),
|
|
39766
|
+
from_access_level: capabilityGrantAccessLevelSchema.nullable(),
|
|
39767
|
+
to_access_level: capabilityGrantAccessLevelSchema
|
|
39768
|
+
}).strict())
|
|
39769
|
+
}).strict();
|
|
39770
|
+
var agentActivationReceiptOutputSchema = external_exports.object({
|
|
39771
|
+
agent_id: uuidSchema5,
|
|
39772
|
+
seat_id: uuidSchema5,
|
|
39773
|
+
steward_seat_id: uuidSchema5,
|
|
39774
|
+
steward_label: external_exports.string().min(1).max(160),
|
|
39775
|
+
lane: external_exports.enum(["cloud", "runner", "mcp_session"]),
|
|
39776
|
+
cadence: external_exports.string().min(1).max(120).nullable(),
|
|
39777
|
+
budget_cents: external_exports.number().int().nonnegative().max(1e7),
|
|
39778
|
+
currency: external_exports.literal("USD"),
|
|
39779
|
+
scope_digest: scopeDigestSchema,
|
|
39780
|
+
compiler_version: classifierVersionSchema,
|
|
39781
|
+
classifier_version: classifierVersionSchema,
|
|
39782
|
+
trusted_boundary: external_exports.object({
|
|
39783
|
+
eligible_command_count: external_exports.number().int().nonnegative(),
|
|
39784
|
+
always_human: external_exports.array(external_exports.string().min(1)).min(1)
|
|
39785
|
+
}).strict(),
|
|
39786
|
+
capabilities: external_exports.array(agentActivationReceiptCapabilitySchema),
|
|
39787
|
+
diff: agentActivationReceiptDiffSchema
|
|
39788
|
+
}).strict().superRefine((value, ctx) => {
|
|
39789
|
+
if (hasSecretShapedValue(value)) {
|
|
39790
|
+
ctx.addIssue({
|
|
39791
|
+
code: external_exports.ZodIssueCode.custom,
|
|
39792
|
+
message: "Activation receipt cannot contain secret-shaped content."
|
|
39793
|
+
});
|
|
39794
|
+
}
|
|
39795
|
+
});
|
|
39796
|
+
var agentActivationSignInputSchema = external_exports.object({
|
|
39797
|
+
agent_id: uuidSchema5,
|
|
39798
|
+
expected_scope_digest: scopeDigestSchema,
|
|
39799
|
+
budget_cents: external_exports.number().int().nonnegative().max(1e7),
|
|
39800
|
+
reason: external_exports.string().trim().min(1).max(500).optional()
|
|
39801
|
+
}).strict();
|
|
39802
|
+
var agentActivationSignOutputSchema = external_exports.object({
|
|
39803
|
+
agent_id: uuidSchema5,
|
|
39804
|
+
seat_id: uuidSchema5,
|
|
39805
|
+
scope_digest: scopeDigestSchema,
|
|
39806
|
+
decision_id: uuidSchema5,
|
|
39807
|
+
event_id: uuidSchema5,
|
|
39808
|
+
activated: external_exports.boolean()
|
|
39809
|
+
}).strict();
|
|
39810
|
+
var agentTrustGrantDtoSchema = external_exports.object({
|
|
39811
|
+
grant_id: uuidSchema5,
|
|
39812
|
+
agent_id: uuidSchema5,
|
|
39813
|
+
seat_id: uuidSchema5,
|
|
39814
|
+
granted_by_user_id: uuidSchema5,
|
|
39815
|
+
scope_digest: scopeDigestSchema,
|
|
39816
|
+
classifier_version: classifierVersionSchema,
|
|
39817
|
+
budget_cents: external_exports.number().int().nonnegative(),
|
|
39818
|
+
reserved_cents: external_exports.number().int().nonnegative(),
|
|
39819
|
+
spent_cents: external_exports.number().int().nonnegative(),
|
|
39820
|
+
currency: external_exports.literal("USD"),
|
|
39821
|
+
status: external_exports.enum(["active", "revoked", "superseded", "expired"]),
|
|
39822
|
+
effective_at: external_exports.string().datetime({ offset: true }),
|
|
39823
|
+
expires_at: external_exports.string().datetime({ offset: true }).nullable(),
|
|
39824
|
+
revoked_at: external_exports.string().datetime({ offset: true }).nullable(),
|
|
39825
|
+
supersedes_id: uuidSchema5.nullable()
|
|
39826
|
+
}).strict();
|
|
39827
|
+
var agentTrustGrantCreateInputSchema = external_exports.object({
|
|
39828
|
+
agent_id: uuidSchema5,
|
|
39829
|
+
expected_scope_digest: scopeDigestSchema,
|
|
39830
|
+
budget_cents: external_exports.number().int().nonnegative().max(1e7),
|
|
39831
|
+
expires_at: external_exports.string().datetime({ offset: true }).optional(),
|
|
39832
|
+
reason: external_exports.string().trim().min(1).max(500).optional()
|
|
39833
|
+
}).strict();
|
|
39834
|
+
var agentTrustGrantInspectInputSchema = external_exports.object({
|
|
39835
|
+
agent_id: uuidSchema5,
|
|
39836
|
+
include_inactive: external_exports.boolean().optional()
|
|
39837
|
+
}).strict();
|
|
39838
|
+
var agentTrustGrantInspectOutputSchema = external_exports.object({
|
|
39839
|
+
grants: external_exports.array(agentTrustGrantDtoSchema)
|
|
39840
|
+
}).strict();
|
|
39841
|
+
var agentTrustGrantMutationInputSchema = external_exports.object({
|
|
39842
|
+
grant_id: uuidSchema5,
|
|
39843
|
+
reason: external_exports.string().trim().min(1).max(500).optional()
|
|
39844
|
+
}).strict();
|
|
39845
|
+
var agentTrustGrantExpireInputSchema = external_exports.object({
|
|
39846
|
+
agent_id: uuidSchema5
|
|
39847
|
+
}).strict();
|
|
39848
|
+
var agentTrustGrantSupersedeInputSchema = external_exports.object({
|
|
39849
|
+
agent_id: uuidSchema5,
|
|
39850
|
+
expected_scope_digest: scopeDigestSchema,
|
|
39851
|
+
budget_cents: external_exports.number().int().nonnegative().max(1e7),
|
|
39852
|
+
expires_at: external_exports.string().datetime({ offset: true }).optional(),
|
|
39853
|
+
reason: external_exports.string().trim().min(1).max(500).optional()
|
|
39854
|
+
}).strict();
|
|
39855
|
+
var agentTrustGrantMutationOutputSchema = external_exports.object({
|
|
39856
|
+
grant: agentTrustGrantDtoSchema,
|
|
39857
|
+
event_id: uuidSchema5
|
|
39858
|
+
}).strict();
|
|
39718
39859
|
var agentSetupCapabilitySuggestionsInputSchema = external_exports.object({
|
|
39719
39860
|
seat_id: uuidSchema5.optional(),
|
|
39720
39861
|
setup_id: uuidSchema5.optional()
|
|
@@ -39754,6 +39895,83 @@ var toolPolicyGetOutputSchema = external_exports.object({
|
|
|
39754
39895
|
tool_policy: storedTenantToolPolicySchema
|
|
39755
39896
|
}).strict();
|
|
39756
39897
|
|
|
39898
|
+
// ../../packages/protocol/src/web-research.ts
|
|
39899
|
+
var webResearchCitationSchema = external_exports.object({
|
|
39900
|
+
id: external_exports.string().min(1).max(80),
|
|
39901
|
+
url: external_exports.string().url(),
|
|
39902
|
+
title: external_exports.string().min(1).max(300)
|
|
39903
|
+
}).strict();
|
|
39904
|
+
var webSearchInputSchema = external_exports.object({
|
|
39905
|
+
query: external_exports.string().trim().min(1).max(500),
|
|
39906
|
+
max_results: external_exports.number().int().min(1).max(10).default(5),
|
|
39907
|
+
timeout_ms: external_exports.number().int().min(250).max(2e4).default(8e3)
|
|
39908
|
+
}).strict();
|
|
39909
|
+
var webSearchResultSchema = external_exports.object({
|
|
39910
|
+
citation_id: external_exports.string().min(1).max(80),
|
|
39911
|
+
title: external_exports.string().min(1).max(300),
|
|
39912
|
+
url: external_exports.string().url(),
|
|
39913
|
+
snippet: external_exports.string().min(1).max(1200),
|
|
39914
|
+
published_at: external_exports.string().datetime().nullable()
|
|
39915
|
+
}).strict();
|
|
39916
|
+
var webSearchOutputSchema = external_exports.object({
|
|
39917
|
+
ok: external_exports.literal(true),
|
|
39918
|
+
provider: external_exports.literal("exa"),
|
|
39919
|
+
query: external_exports.string().min(1).max(500),
|
|
39920
|
+
results: external_exports.array(webSearchResultSchema).max(10),
|
|
39921
|
+
citations: external_exports.array(webResearchCitationSchema).max(10),
|
|
39922
|
+
cost: external_exports.object({
|
|
39923
|
+
provider: external_exports.literal("exa"),
|
|
39924
|
+
cost_class: external_exports.literal("metered_low"),
|
|
39925
|
+
estimated_units: external_exports.number().nonnegative()
|
|
39926
|
+
}).strict()
|
|
39927
|
+
}).strict();
|
|
39928
|
+
var webFetchInputSchema = external_exports.object({
|
|
39929
|
+
url: external_exports.string().url().max(2048),
|
|
39930
|
+
timeout_ms: external_exports.number().int().min(250).max(2e4).default(8e3),
|
|
39931
|
+
max_bytes: external_exports.number().int().min(1024).max(1e6).default(25e4)
|
|
39932
|
+
}).strict();
|
|
39933
|
+
var webFetchOutputSchema = external_exports.object({
|
|
39934
|
+
ok: external_exports.literal(true),
|
|
39935
|
+
url: external_exports.string().url(),
|
|
39936
|
+
final_url: external_exports.string().url(),
|
|
39937
|
+
title: external_exports.string().max(300).nullable(),
|
|
39938
|
+
text: external_exports.string().max(12e4),
|
|
39939
|
+
content_type: external_exports.string().max(120),
|
|
39940
|
+
bytes: external_exports.number().int().nonnegative(),
|
|
39941
|
+
truncated: external_exports.boolean(),
|
|
39942
|
+
provenance: external_exports.object({
|
|
39943
|
+
fetched_at: external_exports.string().datetime(),
|
|
39944
|
+
redirect_count: external_exports.number().int().min(0).max(5),
|
|
39945
|
+
pinned_addresses: external_exports.array(external_exports.string().min(1)).min(1).max(6)
|
|
39946
|
+
}).strict()
|
|
39947
|
+
}).strict();
|
|
39948
|
+
var browserReadOperationSchema = external_exports.enum(["navigate", "inspect", "screenshot", "extract_text"]);
|
|
39949
|
+
var browserReadInputSchema = external_exports.object({
|
|
39950
|
+
url: external_exports.string().url().max(2048),
|
|
39951
|
+
operation: browserReadOperationSchema.default("inspect"),
|
|
39952
|
+
selector: external_exports.string().trim().min(1).max(240).optional(),
|
|
39953
|
+
timeout_ms: external_exports.number().int().min(250).max(2e4).default(8e3)
|
|
39954
|
+
}).strict();
|
|
39955
|
+
var browserReadOutputSchema = external_exports.object({
|
|
39956
|
+
ok: external_exports.literal(true),
|
|
39957
|
+
operation: browserReadOperationSchema,
|
|
39958
|
+
url: external_exports.string().url(),
|
|
39959
|
+
final_url: external_exports.string().url(),
|
|
39960
|
+
title: external_exports.string().max(300).nullable(),
|
|
39961
|
+
text: external_exports.string().max(6e4).optional(),
|
|
39962
|
+
screenshot_artifact: external_exports.object({
|
|
39963
|
+
artifact_id: external_exports.string().min(1).max(160),
|
|
39964
|
+
tenant_id: external_exports.string().min(1).max(120),
|
|
39965
|
+
mime_type: external_exports.literal("image/png"),
|
|
39966
|
+
bytes: external_exports.number().int().nonnegative()
|
|
39967
|
+
}).strict().optional(),
|
|
39968
|
+
provenance: external_exports.object({
|
|
39969
|
+
fetched_at: external_exports.string().datetime(),
|
|
39970
|
+
sandbox: external_exports.literal("ephemeral_read_only"),
|
|
39971
|
+
persistent_state: external_exports.literal(false)
|
|
39972
|
+
}).strict()
|
|
39973
|
+
}).strict();
|
|
39974
|
+
|
|
39757
39975
|
// ../../packages/protocol/src/agent-policy.ts
|
|
39758
39976
|
var AUTONOMOUS_RISK_LEVELS = ["low", "medium", "high", "critical"];
|
|
39759
39977
|
var autonomousRiskLevelSchema = external_exports.enum(AUTONOMOUS_RISK_LEVELS);
|
|
@@ -40477,6 +40695,54 @@ var charterSchema = charterPersistedObjectSchema.superRefine(refineAutonomousBou
|
|
|
40477
40695
|
var charterDocSchema = charterDocObjectSchema.superRefine(refineAutonomousBoundaries);
|
|
40478
40696
|
var charterDocEditsSchema = charterDocObjectSchema.omit({ payload_version: true }).partial().strict();
|
|
40479
40697
|
|
|
40698
|
+
// ../../packages/protocol/src/trusted-budget.ts
|
|
40699
|
+
var TRUSTED_BUDGET_FORMULA_VERSION = "trusted-budget.v1";
|
|
40700
|
+
var MODEL_TOKEN_PROXY = Object.freeze({
|
|
40701
|
+
inputTokens: 12e3,
|
|
40702
|
+
outputTokens: 3e3
|
|
40703
|
+
});
|
|
40704
|
+
var LANE_MULTIPLIERS = Object.freeze({
|
|
40705
|
+
cloud: 1,
|
|
40706
|
+
runner: 1.1,
|
|
40707
|
+
mcp_session: 1.2
|
|
40708
|
+
});
|
|
40709
|
+
var CADENCE_MULTIPLIERS = Object.freeze({
|
|
40710
|
+
daily: 0.8,
|
|
40711
|
+
weekly: 1,
|
|
40712
|
+
monthly: 1.25,
|
|
40713
|
+
quarterly: 1.5
|
|
40714
|
+
});
|
|
40715
|
+
var CADENCE_BASE_RESERVES = Object.freeze({
|
|
40716
|
+
daily: 25,
|
|
40717
|
+
weekly: 50,
|
|
40718
|
+
monthly: 100,
|
|
40719
|
+
quarterly: 200
|
|
40720
|
+
});
|
|
40721
|
+
var TOOL_COST_HINT_CENTS = Object.freeze({
|
|
40722
|
+
included: 0,
|
|
40723
|
+
metered_low: 25,
|
|
40724
|
+
metered_standard: 100,
|
|
40725
|
+
metered_high: 250
|
|
40726
|
+
});
|
|
40727
|
+
var trustedBudgetCharterBudgetSchema = external_exports.object({
|
|
40728
|
+
monthly_usd: external_exports.number().nonnegative().nullable(),
|
|
40729
|
+
approval_required_over_usd: external_exports.number().nonnegative().nullable()
|
|
40730
|
+
}).strict();
|
|
40731
|
+
var trustedBudgetInputSchema = external_exports.object({
|
|
40732
|
+
lane: external_exports.enum(["cloud", "runner", "mcp_session"]),
|
|
40733
|
+
model: external_exports.string().trim().min(1).max(120),
|
|
40734
|
+
cadence: external_exports.enum(["daily", "weekly", "monthly", "quarterly"]),
|
|
40735
|
+
expected_turns: external_exports.number().int().positive().max(1e4),
|
|
40736
|
+
tool_cost_hints: external_exports.array(external_exports.string().trim().min(1).max(120)).default([]),
|
|
40737
|
+
charter_budget: trustedBudgetCharterBudgetSchema.optional()
|
|
40738
|
+
}).strict();
|
|
40739
|
+
var trustedBudgetSuggestionSchema = external_exports.object({
|
|
40740
|
+
budget_cents: external_exports.number().int().nonnegative(),
|
|
40741
|
+
money_authority_cents: external_exports.number().int().nonnegative(),
|
|
40742
|
+
assumptions: external_exports.array(external_exports.string().min(1)).min(1),
|
|
40743
|
+
formula_version: external_exports.literal(TRUSTED_BUDGET_FORMULA_VERSION)
|
|
40744
|
+
}).strict();
|
|
40745
|
+
|
|
40480
40746
|
// ../../packages/protocol/src/eos-intelligence.ts
|
|
40481
40747
|
var uuid3 = external_exports.string().uuid();
|
|
40482
40748
|
var frictionSeveritySchema = external_exports.enum(["low", "med", "high", "critical"]);
|
|
@@ -42965,6 +43231,101 @@ var errorLogSupersedeOutputSchema = external_exports.object({
|
|
|
42965
43231
|
resolved_at: isoDateTime3
|
|
42966
43232
|
}).strict();
|
|
42967
43233
|
|
|
43234
|
+
// ../../packages/protocol/src/working-files.ts
|
|
43235
|
+
var WORKING_FILE_MAX_PATH_CHARS = 512;
|
|
43236
|
+
var WORKING_FILE_MAX_CONTENT_CHARS = 16384;
|
|
43237
|
+
var isoDateTime4 = external_exports.string().datetime({ offset: true });
|
|
43238
|
+
var workingFileContentTypeSchema = external_exports.enum([
|
|
43239
|
+
"text/plain",
|
|
43240
|
+
"text/markdown",
|
|
43241
|
+
"application/json",
|
|
43242
|
+
"text/csv",
|
|
43243
|
+
"text/yaml",
|
|
43244
|
+
"application/yaml",
|
|
43245
|
+
"text/x-typescript",
|
|
43246
|
+
"text/typescript",
|
|
43247
|
+
"text/javascript",
|
|
43248
|
+
"application/javascript"
|
|
43249
|
+
]);
|
|
43250
|
+
var workingFileStateSchema = external_exports.enum(["ephemeral", "published"]);
|
|
43251
|
+
var workingFileRetentionClassSchema = external_exports.enum(["ephemeral_7d", "published_90d"]);
|
|
43252
|
+
function normalizeWorkingFilePath(value) {
|
|
43253
|
+
return value.trim().replace(/\\/g, "/");
|
|
43254
|
+
}
|
|
43255
|
+
function isSafeWorkingFilePath(value) {
|
|
43256
|
+
if (value.includes("\\")) {
|
|
43257
|
+
return false;
|
|
43258
|
+
}
|
|
43259
|
+
const normalized = normalizeWorkingFilePath(value);
|
|
43260
|
+
if (normalized.length === 0 || normalized.length > WORKING_FILE_MAX_PATH_CHARS) {
|
|
43261
|
+
return false;
|
|
43262
|
+
}
|
|
43263
|
+
if (normalized.startsWith("/") || normalized.startsWith("./") || normalized.startsWith("../")) {
|
|
43264
|
+
return false;
|
|
43265
|
+
}
|
|
43266
|
+
if (normalized.includes("\0") || normalized.includes("//")) {
|
|
43267
|
+
return false;
|
|
43268
|
+
}
|
|
43269
|
+
const segments = normalized.split("/");
|
|
43270
|
+
return segments.every((segment) => segment.length > 0 && segment !== "." && segment !== "..");
|
|
43271
|
+
}
|
|
43272
|
+
var workingFilePathSchema = external_exports.string().trim().min(1).max(WORKING_FILE_MAX_PATH_CHARS).refine(isSafeWorkingFilePath, "Working file paths must be tenant-local relative paths without traversal segments");
|
|
43273
|
+
var workingFileCreateInputSchema = external_exports.object({
|
|
43274
|
+
path: workingFilePathSchema,
|
|
43275
|
+
content_type: workingFileContentTypeSchema,
|
|
43276
|
+
content: external_exports.string().min(1).max(WORKING_FILE_MAX_CONTENT_CHARS)
|
|
43277
|
+
}).strict();
|
|
43278
|
+
var workingFileReadInputSchema = external_exports.object({
|
|
43279
|
+
path: workingFilePathSchema
|
|
43280
|
+
}).strict();
|
|
43281
|
+
var workingFileListInputSchema = external_exports.object({
|
|
43282
|
+
state: workingFileStateSchema.optional()
|
|
43283
|
+
}).strict();
|
|
43284
|
+
var workingFilePublishInputSchema = external_exports.object({
|
|
43285
|
+
path: workingFilePathSchema
|
|
43286
|
+
}).strict();
|
|
43287
|
+
var workingFilesReadToolInputSchema = external_exports.discriminatedUnion("operation", [
|
|
43288
|
+
external_exports.object({
|
|
43289
|
+
operation: external_exports.literal("read"),
|
|
43290
|
+
path: workingFilePathSchema
|
|
43291
|
+
}).strict(),
|
|
43292
|
+
external_exports.object({
|
|
43293
|
+
operation: external_exports.literal("list"),
|
|
43294
|
+
state: workingFileStateSchema.optional()
|
|
43295
|
+
}).strict()
|
|
43296
|
+
]);
|
|
43297
|
+
var workingFilesWriteToolInputSchema = external_exports.discriminatedUnion("operation", [
|
|
43298
|
+
external_exports.object({
|
|
43299
|
+
operation: external_exports.literal("create"),
|
|
43300
|
+
path: workingFilePathSchema,
|
|
43301
|
+
content_type: workingFileContentTypeSchema,
|
|
43302
|
+
content: external_exports.string().min(1).max(WORKING_FILE_MAX_CONTENT_CHARS)
|
|
43303
|
+
}).strict(),
|
|
43304
|
+
external_exports.object({
|
|
43305
|
+
operation: external_exports.literal("publish"),
|
|
43306
|
+
path: workingFilePathSchema
|
|
43307
|
+
}).strict()
|
|
43308
|
+
]);
|
|
43309
|
+
var workingFileSummarySchema = external_exports.object({
|
|
43310
|
+
file_ref: external_exports.string().min(1),
|
|
43311
|
+
path: workingFilePathSchema,
|
|
43312
|
+
state: workingFileStateSchema,
|
|
43313
|
+
content_type: workingFileContentTypeSchema,
|
|
43314
|
+
content_chars: external_exports.number().int().nonnegative(),
|
|
43315
|
+
published_ref: external_exports.string().min(1).nullable(),
|
|
43316
|
+
published_at: isoDateTime4.nullable(),
|
|
43317
|
+
expires_at: isoDateTime4,
|
|
43318
|
+
created_at: isoDateTime4,
|
|
43319
|
+
updated_at: isoDateTime4
|
|
43320
|
+
}).strict();
|
|
43321
|
+
var workingFileReadResultSchema = workingFileSummarySchema.extend({
|
|
43322
|
+
content: external_exports.string(),
|
|
43323
|
+
content_truncated: external_exports.boolean()
|
|
43324
|
+
}).strict();
|
|
43325
|
+
var workingFilesListOutputSchema = external_exports.object({
|
|
43326
|
+
files: external_exports.array(workingFileSummarySchema)
|
|
43327
|
+
}).strict();
|
|
43328
|
+
|
|
42968
43329
|
// ../../packages/protocol/src/run-summary.ts
|
|
42969
43330
|
var runSummaryOutputSchema = external_exports.object({
|
|
42970
43331
|
summary: external_exports.string().min(1).max(140)
|
|
@@ -42972,7 +43333,7 @@ var runSummaryOutputSchema = external_exports.object({
|
|
|
42972
43333
|
|
|
42973
43334
|
// ../../packages/protocol/src/runner-settings.ts
|
|
42974
43335
|
var uuid8 = external_exports.string().uuid();
|
|
42975
|
-
var
|
|
43336
|
+
var isoDateTime5 = external_exports.string().datetime({ offset: true });
|
|
42976
43337
|
var runnerHealthSchema = external_exports.enum(["online", "stale", "offline", "revoked", "unpaired"]);
|
|
42977
43338
|
var runnerExecutionStateSchema = external_exports.enum([
|
|
42978
43339
|
"ready",
|
|
@@ -42992,8 +43353,8 @@ var runnerExecutionReadinessSchema = external_exports.object({
|
|
|
42992
43353
|
due_queued_work_orders: external_exports.number().int().nonnegative(),
|
|
42993
43354
|
claimed_work_orders: external_exports.number().int().nonnegative(),
|
|
42994
43355
|
running_work_orders: external_exports.number().int().nonnegative(),
|
|
42995
|
-
recent_completed_at:
|
|
42996
|
-
recent_failed_at:
|
|
43356
|
+
recent_completed_at: isoDateTime5.nullable(),
|
|
43357
|
+
recent_failed_at: isoDateTime5.nullable()
|
|
42997
43358
|
}).strict();
|
|
42998
43359
|
var runnerSandboxPostureSchema = external_exports.enum(["guard", "strict", "off", "none", "unknown"]);
|
|
42999
43360
|
var runnerPostureSchema = external_exports.object({
|
|
@@ -43010,10 +43371,10 @@ var runnerSummarySchema = external_exports.object({
|
|
|
43010
43371
|
cli_version: external_exports.string().nullable(),
|
|
43011
43372
|
posture: runnerPostureSchema,
|
|
43012
43373
|
execution: runnerExecutionReadinessSchema,
|
|
43013
|
-
paired_at:
|
|
43014
|
-
last_heartbeat_at:
|
|
43015
|
-
revoked_at:
|
|
43016
|
-
created_at:
|
|
43374
|
+
paired_at: isoDateTime5.nullable(),
|
|
43375
|
+
last_heartbeat_at: isoDateTime5.nullable(),
|
|
43376
|
+
revoked_at: isoDateTime5.nullable(),
|
|
43377
|
+
created_at: isoDateTime5
|
|
43017
43378
|
}).strict();
|
|
43018
43379
|
var runnerListInputSchema = external_exports.object({
|
|
43019
43380
|
include_revoked: external_exports.boolean().optional()
|
|
@@ -43032,7 +43393,7 @@ var runnerPairingStartOutputSchema = external_exports.object({
|
|
|
43032
43393
|
pairing_session_id: uuid8,
|
|
43033
43394
|
user_code: external_exports.string(),
|
|
43034
43395
|
verification_uri: external_exports.string(),
|
|
43035
|
-
expires_at:
|
|
43396
|
+
expires_at: isoDateTime5,
|
|
43036
43397
|
expires_in: external_exports.number().int().nonnegative()
|
|
43037
43398
|
}).strict();
|
|
43038
43399
|
var runnerRevokeInputSchema = external_exports.object({
|
|
@@ -43050,9 +43411,9 @@ var workOrderSummarySchema = external_exports.object({
|
|
|
43050
43411
|
lane: external_exports.enum(["cloud", "runner"]),
|
|
43051
43412
|
status: workOrderStatusSchema,
|
|
43052
43413
|
claimed_by_runner_id: uuid8.nullable(),
|
|
43053
|
-
scheduled_for:
|
|
43054
|
-
grace_deadline:
|
|
43055
|
-
created_at:
|
|
43414
|
+
scheduled_for: isoDateTime5,
|
|
43415
|
+
grace_deadline: isoDateTime5,
|
|
43416
|
+
created_at: isoDateTime5
|
|
43056
43417
|
}).strict();
|
|
43057
43418
|
var workOrderListInputSchema = external_exports.object({
|
|
43058
43419
|
status: workOrderStatusSchema.optional(),
|
|
@@ -43065,7 +43426,7 @@ var workOrderListOutputSchema = external_exports.object({
|
|
|
43065
43426
|
}).strict();
|
|
43066
43427
|
var workOrderEnqueueInputSchema = external_exports.object({
|
|
43067
43428
|
agent_id: uuid8,
|
|
43068
|
-
scheduled_for:
|
|
43429
|
+
scheduled_for: isoDateTime5.optional(),
|
|
43069
43430
|
task_id: uuid8.optional()
|
|
43070
43431
|
}).strict();
|
|
43071
43432
|
var agentRunNowInputSchema = external_exports.object({
|
|
@@ -43092,8 +43453,8 @@ var runnerDiagnoseOutputSchema = external_exports.object({
|
|
|
43092
43453
|
platform: external_exports.string(),
|
|
43093
43454
|
health: runnerHealthSchema,
|
|
43094
43455
|
capabilities: runnerCapabilityDetailSchema,
|
|
43095
|
-
last_heartbeat_at:
|
|
43096
|
-
paired_at:
|
|
43456
|
+
last_heartbeat_at: isoDateTime5.nullable(),
|
|
43457
|
+
paired_at: isoDateTime5.nullable(),
|
|
43097
43458
|
revocation_state: external_exports.enum(["active", "revoked", "unpaired"]),
|
|
43098
43459
|
repair_guidance: external_exports.array(external_exports.object({
|
|
43099
43460
|
action: external_exports.string(),
|
|
@@ -43154,7 +43515,7 @@ var notificationErrorSummarySchema = external_exports.object({
|
|
|
43154
43515
|
source: external_exports.enum(["run", "llm", "tool", "mcp", "runner", "integration", "job", "web"]).nullable(),
|
|
43155
43516
|
seat_id: uuid8.nullable(),
|
|
43156
43517
|
run_id: uuid8.nullable(),
|
|
43157
|
-
created_at:
|
|
43518
|
+
created_at: isoDateTime5
|
|
43158
43519
|
}).strict();
|
|
43159
43520
|
var notificationListErrorsOutputSchema = external_exports.object({
|
|
43160
43521
|
errors: external_exports.array(notificationErrorSummarySchema)
|
|
@@ -43271,7 +43632,7 @@ var integrationSummarySchema = external_exports.object({
|
|
|
43271
43632
|
id: uuid8,
|
|
43272
43633
|
provider: external_exports.string(),
|
|
43273
43634
|
status: external_exports.enum(["connected", "error", "disconnected"]),
|
|
43274
|
-
last_synced_at:
|
|
43635
|
+
last_synced_at: isoDateTime5.nullable()
|
|
43275
43636
|
}).strict();
|
|
43276
43637
|
var settingsGetInputSchema = external_exports.object({}).strict();
|
|
43277
43638
|
var settingsGetOutputSchema = external_exports.object({
|
|
@@ -43307,7 +43668,7 @@ var tenantRenameOutputSchema = external_exports.object({
|
|
|
43307
43668
|
|
|
43308
43669
|
// ../../packages/protocol/src/system-health.ts
|
|
43309
43670
|
var uuidSchema14 = external_exports.string().uuid();
|
|
43310
|
-
var
|
|
43671
|
+
var isoDateTime6 = external_exports.string().datetime({ offset: true });
|
|
43311
43672
|
var systemHealthCallerKindSchema = external_exports.enum(["tenant_admin", "member", "seat_token"]);
|
|
43312
43673
|
var systemHealthCallerSchema = external_exports.object({
|
|
43313
43674
|
kind: systemHealthCallerKindSchema,
|
|
@@ -43397,7 +43758,7 @@ var systemHealthConnectivitySectionSchema = external_exports.object({
|
|
|
43397
43758
|
failed_notification_count: external_exports.number().int().nonnegative()
|
|
43398
43759
|
}).strict();
|
|
43399
43760
|
var systemHealthSyncSectionSchema = external_exports.object({
|
|
43400
|
-
latest_brief_at:
|
|
43761
|
+
latest_brief_at: isoDateTime6.nullable(),
|
|
43401
43762
|
missing_latest_brief: external_exports.boolean(),
|
|
43402
43763
|
flagged_gap_count: external_exports.number().int().nonnegative()
|
|
43403
43764
|
}).strict();
|
|
@@ -43417,7 +43778,7 @@ var systemHealthCheckInputSchema = systemHealthInputSchema.extend({
|
|
|
43417
43778
|
caller: systemHealthCallerSchema
|
|
43418
43779
|
}).strict();
|
|
43419
43780
|
var systemHealthOutputSchema = external_exports.object({
|
|
43420
|
-
generated_at:
|
|
43781
|
+
generated_at: isoDateTime6,
|
|
43421
43782
|
scope: systemHealthScopeSchema,
|
|
43422
43783
|
verdict: systemHealthVerdictSchema,
|
|
43423
43784
|
top_actions: external_exports.array(systemHealthActionSchema),
|
|
@@ -45020,16 +45381,16 @@ var syncBriefSchema = external_exports.object({
|
|
|
45020
45381
|
}).strict();
|
|
45021
45382
|
|
|
45022
45383
|
// ../../packages/protocol/src/usage.ts
|
|
45023
|
-
var
|
|
45384
|
+
var isoDateTime7 = external_exports.string().datetime({ offset: true });
|
|
45024
45385
|
var periodKeySchema = external_exports.string().regex(/^\d{4}-\d{2}-\d{2}$/);
|
|
45025
45386
|
var countSchema = external_exports.number().int().nonnegative();
|
|
45026
45387
|
var usdSchema = external_exports.string();
|
|
45027
45388
|
var bigCountSchema = external_exports.string();
|
|
45028
45389
|
var usagePeriodSchema = external_exports.object({
|
|
45029
45390
|
period: periodKeySchema,
|
|
45030
|
-
period_start:
|
|
45031
|
-
period_end:
|
|
45032
|
-
captured_at:
|
|
45391
|
+
period_start: isoDateTime7,
|
|
45392
|
+
period_end: isoDateTime7,
|
|
45393
|
+
captured_at: isoDateTime7,
|
|
45033
45394
|
run_count: countSchema,
|
|
45034
45395
|
agent_count: countSchema,
|
|
45035
45396
|
succeeded_run_count: countSchema,
|
|
@@ -45081,7 +45442,7 @@ var usageSnapshotInputSchema = external_exports.object({
|
|
|
45081
45442
|
// current month. Normalized to the first of that month server-side.
|
|
45082
45443
|
period: external_exports.union([
|
|
45083
45444
|
external_exports.string().regex(/^\d{4}-\d{2}-\d{2}$/),
|
|
45084
|
-
|
|
45445
|
+
isoDateTime7
|
|
45085
45446
|
]).optional()
|
|
45086
45447
|
}).strict();
|
|
45087
45448
|
var usageSnapshotOutputSchema = external_exports.object({
|
|
@@ -46677,7 +47038,7 @@ There is exactly one way to give a connected tool its credential, and it is the
|
|
|
46677
47038
|
order: 47,
|
|
46678
47039
|
title: "Available tools guide",
|
|
46679
47040
|
summary: "How to think about tool categories available to seats and what each category should be used for.",
|
|
46680
|
-
version: "2026-07-13.
|
|
47041
|
+
version: "2026-07-13.3",
|
|
46681
47042
|
public: true,
|
|
46682
47043
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
46683
47044
|
stages: ["staffing"],
|
|
@@ -46715,7 +47076,7 @@ Start from the seat's responsibility, not the tool list. If a tool does not dire
|
|
|
46715
47076
|
|
|
46716
47077
|
Skills are reusable procedures a seat can learn from; they are not tools and they never grant authority. A skill package may declare required or optional tool dependencies so setup can identify blockers before assignment. Those dependencies are checked against the discoverable \`tool.catalog\` ids, scope tiers, and provider-neutral access levels, then compared to the seat's Charter permission manifest. Missing required tools block approval; optional tools produce setup warnings. A published skill version is immutable, so later corrections create a new version instead of rewriting what a run may have used.
|
|
46717
47078
|
|
|
46718
|
-
The catalog covers both the platform verbs (status, escalation, Signal readings) and the business tools the stock-agent templates grant \u2014 accounts-payable and receivable reads, AP-inbox and collections drafts, helpdesk triage, CRM reads,
|
|
47079
|
+
The catalog covers both the platform verbs (status, escalation, Signal readings) and the business tools the stock-agent templates grant \u2014 accounts-payable and receivable reads, AP-inbox and collections drafts, helpdesk triage, CRM reads, web search, public-page fetch, browser read, working files, script execution, content-calendar, release-artifact, and issue drafts. Each is listed with a conservative scope tier (read for the reads, draft for the drafts and action-capable internal workbench tools), a provider-neutral access level, a provider requirement, cost class, lane support, and any Trusted-mode metadata that must be present before a standing authorization can apply. Business tools are credential-gated unless they are {{brand}}-managed generic workbench tools. Because a skill's required tool id is matched against these ids, a skill that requires one of them resolves against the catalog rather than reporting an unknown tool. Catalog membership is configuration only: it still confers no authority, and a listed id runs only once a live handler exists behind the seat's signed permission manifest, the server guard, and any required credential \u2014 the manifest and guard remain the control plane. Unknown tool ids or unsupported access levels fail closed.
|
|
46719
47080
|
|
|
46720
47081
|
## How agents should request tools
|
|
46721
47082
|
|
|
@@ -46725,14 +47086,14 @@ Agents should explain the job, the required tool category, the minimum permissio
|
|
|
46725
47086
|
|
|
46726
47087
|
Every tool call passes the server-side guard first: the guard checks the call against the seat's signed permission manifest and records a tool-call audit row for **every** call \u2014 allowed, denied, or escalated. Tool selection is never authorization. An explicitly declined manifest entry is enforced as denied, even when the tool exists and the client asks for it. Only an allowed call reaches its handler. A connected credential is bound into the handler for the duration of the call only; the secret never appears in the result, the audit summary, logs, or the model's context.
|
|
46727
47088
|
|
|
46728
|
-
External connectors are being rolled out provider by provider, conservatively (read and draft before send; write behind approval). A selected tool is only a permission until a live handler exists and the seat has the required credential or binding. Today the built-in execution path supports internal status reporting, the generic REST GET connector when a signed host/path allowlist and credential exist, \`slack.post_message\` for a bound Slack channel,
|
|
47089
|
+
External connectors are being rolled out provider by provider, conservatively (read and draft before send; write behind approval). A selected tool is only a permission until a live handler exists and the seat has the required credential or binding. Today the built-in execution path supports internal status reporting, the generic REST GET connector when a signed host/path allowlist and credential exist, \`slack.post_message\` for a bound Slack channel, Google handlers for \`gmail.read\`, \`gmail.draft\`, \`sheets.read\`, and approval-held \`sheets.write\` when Google is connected, plus the governed workbench tools \`web.search\`, \`web.fetch\`, \`browser.read\`, \`files.read\`, \`files.write\`, and \`script.run\`. \`web.search\` uses a server-side Exa provider and returns normalized cited results without exposing provider keys. \`web.fetch\` reads one public HTTPS page only after scheme, DNS/IP, redirect, content-type, size, and timeout checks pass. \`browser.read\` opens an ephemeral read-only public-network browser session for navigation, inspection, screenshot, or extraction; it does not submit forms, persist authenticated state, execute downloads, or expose cross-tenant artifacts. \`files.read\` and \`files.write\` operate on bounded tenant-scoped working files and published \`rost://working-files/<id>\` references; they reject traversal, cap text payloads, retain ephemeral files briefly, and never execute file contents. \`script.run\` is compute-only and network-denied by default, but arbitrary code execution is action-capable, so read-only posture does not grant it; it still requires the \`agent.script_run\` entitlement and returns size-capped output. \`gmail.send\` remains held for approval and live external send stays gated on Google verification. Before that verification is complete, partner demos should show sandbox dry runs, setup previews, and approval-held examples rather than claim production Google readiness. Other provider entries remain configuration-only until their connector ships, so nothing runs silently.`
|
|
46729
47090
|
},
|
|
46730
47091
|
{
|
|
46731
47092
|
slug: "mcp-and-cli-guide",
|
|
46732
47093
|
order: 48,
|
|
46733
47094
|
title: "CLI and MCP installation guide",
|
|
46734
47095
|
summary: "Install the public CLI, register remote token-backed MCP clients, and find the full command and tool catalog.",
|
|
46735
|
-
version: "2026-07-13.
|
|
47096
|
+
version: "2026-07-13.4",
|
|
46736
47097
|
public: true,
|
|
46737
47098
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
46738
47099
|
stages: ["company_setup", "staffing"],
|
|
@@ -46833,6 +47194,10 @@ The MCP server is remote and token-backed. There is no local MCP daemon to insta
|
|
|
46833
47194
|
|
|
46834
47195
|
AICOS MCP mode is deliberately seat-scoped. In Settings, the AICOS panel can create a token for the canonical AI Chief of Staff seat and then marks MCP selectable only while a non-revoked, unexpired AICOS seat token exists. Do not use a tenant-admin MCP token to staff or test AICOS; it should operate as its own governed seat, with the web panel remaining the readiness monitor and transcript surface.
|
|
46835
47196
|
|
|
47197
|
+
MCP clients may also expose their own native browser, search, file, or shell tools. Those native client actions are outside {{brand}} receipts, cost accounting, and audit. Treat them as ungoverned scratch work until the source is fetched or recorded through a {{brand}} MCP tool such as \`web.fetch\`, \`web.search\`, \`browser.read\`, a work-log evidence call, or another governed command. Only the {{brand}} tool call creates the permission receipt and evidence record.
|
|
47198
|
+
|
|
47199
|
+
Managed Runner turns use a generated {{brand}} MCP configuration instead of the operator's local MCP/client config. Ordinary business-agent runner turns are MCP-only, run in a read-only sandbox, and do not receive local provider keys such as Exa or browser-provider credentials. Codex runner turns ignore user config/rules, run ephemerally, and disable native search, browser, and computer-use features; Forge developer profiles keep their separate local-code workspace behavior.
|
|
47200
|
+
|
|
46836
47201
|
## Prerequisite: a human approver in a browser
|
|
46837
47202
|
|
|
46838
47203
|
A headless agent cannot complete setup unattended. Two things always require a human, so plan to announce the handoff rather than stall silently:
|
|
@@ -47202,6 +47567,7 @@ The signed-in app exposes the same Skill command surface at **Skills**, linked f
|
|
|
47202
47567
|
| \`{{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}'\` |
|
|
47203
47568
|
| \`{{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\` |
|
|
47204
47569
|
| \`{{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\` |
|
|
47570
|
+
| \`{{cli}} command agent.activation_receipt|agent.activation_sign|agent.trust.*\` | \`agent.activation_receipt\`, \`agent.activation_sign\`, \`agent.trust.create\`, \`agent.trust.inspect\`, \`agent.trust.revoke\`, \`agent.trust.expire\`, \`agent.trust.supersede\` | Build a secret-free activation receipt, sign the exact current digest, and create/inspect/revoke/expire/supersede bounded Trusted execution grants. Receipt and inspect are reads; sign and grant lifecycle writes are human steward/admin only and refuse stale receipt digests. | Seat read; tenant write | \`{{cli}} command agent.activation_receipt --json '{"agent_id":"<agent-id>"}'\`; \`{{cli}} command agent.trust.create --json '{"agent_id":"<agent-id>","expected_scope_digest":"sha256:...","budget_cents":2500}'\` |
|
|
47205
47571
|
| \`{{cli}} tools list\` | \`tool.catalog\` | List the discoverable tool catalog the builder reads (id, scope tiers, access levels, provider requirement, cost class, lane support, credential requirement, access policy, Trusted metadata, and execution-boundary guidance). | Tenant | \`{{cli}} tools list --json\` |
|
|
47206
47572
|
| \`{{cli}} skills list|get|file|assigned|check-dependencies\` | \`skill.list\`, \`skill.get\`, \`skill.file.get\`, \`skill.assigned.list\`, \`skill.check_dependencies\` | Discover reusable Skills, read descriptors and stored package files, list approved Seat assignments, and compare required/optional tool dependencies with a Seat's signed Charter manifest. Skills are instructions, not authority. | Tenant-admin; seat-scoped reads for assigned Skills | \`{{cli}} skills list --json\`; \`{{cli}} skills file --slug invoice-review --path SKILL.md\` |
|
|
47207
47573
|
| \`{{cli}} skills catalog|enable|install|sync\` | \`skill.catalog\`, \`skill.enable_catalog\`, \`skill.install_local\`, \`skill.sync_local\` | Discover entitled {{brand}} catalog Skills, enable a catalog Skill into the company library with human confirmation, and install or sync approved Skill files locally from {{brand}} APIs. Private catalog source URLs and GitHub tokens never go to local agents. | Tenant-admin for catalog enablement; seat-scoped sync for assigned Skills | \`{{cli}} skills sync --seat-id <id> --client codex\`; \`{{cli}} skills install rost/ap-review --seat-id <id> --client codex\` |
|
|
@@ -47444,6 +47810,13 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
|
|
|
47444
47810
|
| \`rost_list_tenant_capability_grants\` | \`tool_grants.tenant.list\` | List tenant capability ceilings/defaults with connection, availability, source, and compile status. | Tenant | Call with \`{}\`; no secrets or vault refs. |
|
|
47445
47811
|
| \`rost_list_agent_effective_capability_grants\` | \`tool_grants.agent.effective\` | Read one agent's effective capability grants after tenant ceilings, agent selections, and compile availability are applied. | Tenant | Call with \`{"agent_id":"<agent-id>"}\`. |
|
|
47446
47812
|
| \`rost_update_agent_capability_grants\` | \`tool_grants.agent.update\` | Compile a Charter supersession proposal for agent capability grant reductions or expansions. | Tenant | Human steward/admin only; call with \`{"agent_id":"<agent-id>","grants":[{"tool_grant_id":"<grant-id>","access_level":"read"}]}\`; active authority changes only after the signed Charter is superseded. |
|
|
47813
|
+
| \`rost_build_agent_activation_receipt\` | \`agent.activation_receipt\` | Build the current activation receipt for an agent: capabilities, connection metadata, digest, budget, and always-human boundary. | Seat or tenant-admin | Call with \`{"agent_id":"<agent-id>"}\`; rebuild after Charter, connection, lane, schedule, or grant changes. |
|
|
47814
|
+
| \`rost_sign_agent_activation_receipt\` | \`agent.activation_sign\` | Human steward/admin sign-off for the exact activation receipt digest. | Tenant | Human-gated; call with \`{"agent_id":"<agent-id>","expected_scope_digest":"sha256:...","budget_cents":2500}\`. |
|
|
47815
|
+
| \`rost_create_agent_trusted_grant\` | \`agent.trust.create\` | Create a bounded Trusted execution grant for a live agent after receipt review. | Tenant | Human steward/admin only; call with \`{"agent_id":"<agent-id>","expected_scope_digest":"sha256:...","budget_cents":2500}\`. |
|
|
47816
|
+
| \`rost_inspect_agent_trusted_grants\` | \`agent.trust.inspect\` | Inspect active or historical Trusted grants for one agent. | Seat or tenant-admin | Call with \`{"agent_id":"<agent-id>","include_inactive":true}\`; metadata only. |
|
|
47817
|
+
| \`rost_revoke_agent_trusted_grant\` | \`agent.trust.revoke\` | Revoke an active Trusted grant while preserving history. | Tenant | Human steward/admin only; call with \`{"grant_id":"<grant-id>","reason":"..."}\`; non-interactive callers receive a confirmation handoff. |
|
|
47818
|
+
| \`rost_expire_agent_trusted_grants\` | \`agent.trust.expire\` | Mark overdue active Trusted grants expired and append audit events. | Tenant | Human steward/admin only; call with \`{"agent_id":"<agent-id>"}\`. |
|
|
47819
|
+
| \`rost_supersede_agent_trusted_grant\` | \`agent.trust.supersede\` | Replace the active Trusted grant with a fresh digest and budget. | Tenant | Human steward/admin only; call with \`{"agent_id":"<agent-id>","expected_scope_digest":"sha256:...","budget_cents":2500}\`. |
|
|
47447
47820
|
| \`rost_suggest_setup_capability_grants\` | \`agent_setup.capability_suggestions\` | Suggest deterministic minimum capability grants from the current setup/template and tenant grant availability. | Tenant | Call with \`{"seat_id":"<seat-id>"}\` or \`{"setup_id":"<agent-id>"}\`; no model call and no mutation. |
|
|
47448
47821
|
| \`rost_list_skills\` | \`skill.list\` | List tenant Skills with application descriptors, dependency metadata, source status, latest version, and assigned Seat count. Seat-scoped reads are available through \`rost://skills\`. | Tenant-admin | Call with \`{}\` or \`{"query":"invoice"}\`. |
|
|
47449
47822
|
| \`rost_list_rost_skill_catalog\` | \`skill.catalog\` | List entitled {{brand}} catalog Skills. Private catalog source URLs and credentials stay server-side. | Tenant-admin | Call with \`{}\`; use \`{"include_unentitled":true}\` only to inspect tier availability. |
|
|
@@ -48422,7 +48795,7 @@ Stop before: approving a Charter, signing a manifest, connecting a tool or crede
|
|
|
48422
48795
|
order: 71,
|
|
48423
48796
|
title: "Billing and pricing guide",
|
|
48424
48797
|
summary: "How {{brand}} packages company-wide access, Stripe billing, and governed-agent usage without per-human-seat pricing.",
|
|
48425
|
-
version: "2026-07-
|
|
48798
|
+
version: "2026-07-13.1",
|
|
48426
48799
|
public: true,
|
|
48427
48800
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
48428
48801
|
stages: ["company_setup", "staffing", "operating_rhythm"],
|
|
@@ -48478,6 +48851,14 @@ The first meter is billable-successful-agent-run based because the current platf
|
|
|
48478
48851
|
|
|
48479
48852
|
Billable true-up is service-owned and runs after a period is closed. The tenant-facing \`usage.snapshot\` command is an ROI/reporting tool; an early current-period snapshot must not become, replace, or block the final billable close. The billing close records a separate \`billing_usage_true_ups\` row keyed by tenant and period with the source kind, included allowance, billable overage, status, and Stripe meter event identifier. A closed usage snapshot is preferred only when it was captured after the period ended; otherwise the service close uses a live rollup for that closed period so an early ROI snapshot cannot undercount the invoice true-up.
|
|
48480
48853
|
|
|
48854
|
+
## Launch credits and recovery access
|
|
48855
|
+
|
|
48856
|
+
Eligible launch tenants can receive one configured launch credit for {{brand}}-managed variable costs. Managed LLM, Exa, browser, and sandbox costs are estimated before the provider call, reserved atomically against the active launch credit, and then settled to actual usage or released if the call does not complete. BYOK model calls do not draw down launch credit, but they still keep their ordinary audit and usage records.
|
|
48857
|
+
|
|
48858
|
+
Launch-credit notifications are informational and idempotent: owners may see threshold, exhaustion, or expiry notices with recovery actions when the remaining credit drops or the credit approaches its expiry window.
|
|
48859
|
+
|
|
48860
|
+
When an unsubscribed tenant's launch credit expires, {{brand}} enters a recovery-safe posture instead of deleting the workspace or letting agents continue spending. Billing, BYOK setup, export, cancel, and delete/recovery routes stay reachable so a human can restore or leave cleanly. Operational writes, schedules, cloud agent runs, and other cost-creating actions pause until the tenant has an active subscription or active launch credit again.
|
|
48861
|
+
|
|
48481
48862
|
## Stripe boundary
|
|
48482
48863
|
|
|
48483
48864
|
Stripe owns payment collection, payment methods, invoices, and hosted customer self-service.
|
|
@@ -49663,7 +50044,7 @@ This worked document **omits** \`unanswered_boundaries\` and \`seat_type_recomme
|
|
|
49663
50044
|
order: 43,
|
|
49664
50045
|
title: "Agent builder guide",
|
|
49665
50046
|
summary: "The full agent setup sequence on the CLI/MCP path \u2014 seat, steward, job, boundaries, tools, credentials, model, schedule, dry-run, go-live \u2014 with the structured model config and access tiers.",
|
|
49666
|
-
version: "2026-07-
|
|
50047
|
+
version: "2026-07-13.1",
|
|
49667
50048
|
public: true,
|
|
49668
50049
|
audiences: ["cli", "mcp", "in_app_agent"],
|
|
49669
50050
|
stages: ["staffing"],
|
|
@@ -49752,7 +50133,7 @@ Conservative by default: anything beyond read/draft defaults to \`always_ask\`.
|
|
|
49752
50133
|
|
|
49753
50134
|
- **Finance clerk (AP/AR).** Tight read + draft scopes (\`ap.invoices.read\`, \`accounting.bills.draft_update\`); posting and payment escalate; measurables track drafted-on-time and discrepancies caught. Balanced model.
|
|
49754
50135
|
- **Inbox / scheduling assistant.** \`gmail.read\` + draft + \`calendar.propose_hold\`; sends and confirmed meetings are approval-gated; sensitive messages escalate. Triage or balanced model.
|
|
49755
|
-
- **Research / SDR.** \`web.
|
|
50136
|
+
- **Research / SDR.** \`web.search\` + \`crm.contacts.draft_update\` (draft only); outreach and paid data escalate. Balanced model.
|
|
49756
50137
|
- **Reviewer / QA.** Read release artifacts + draft issues; release approval and production changes escalate. Complex model for judgment.
|
|
49757
50138
|
|
|
49758
50139
|
## The full JSON shape
|
|
@@ -50640,6 +51021,8 @@ var COMMAND_MANIFEST = [
|
|
|
50640
51021
|
{ "id": "agent_setup.start", "namespace": "agent_setup", "action": "start", "title": "Start agent setup", "description": "Start (or resume) a draft agent setup for a seat in template, custom, or existing mode.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }, { "name": "mode", "flag": "mode", "type": "enum", "required": true, "enumValues": ["template", "custom", "existing"] }, { "name": "template_slug", "flag": "template-slug", "type": "string", "required": false }], "hasComplexInput": false, "help": "Start a draft agent setup from a template, custom, or existing mode; the setup resumes from the draft agent and Charter, not a fresh start." },
|
|
50641
51022
|
{ "id": "agent_setup.update", "namespace": "agent_setup", "action": "update", "title": "Update agent setup", "description": "Update the draft agent's parent, steward, lane, schedule, operational answers, and tool decisions.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }, { "name": "parent_seat_id", "flag": "parent-seat-id", "type": "string", "required": false }, { "name": "steward_seat_id", "flag": "steward-seat-id", "type": "string", "required": false }, { "name": "lane", "flag": "lane", "type": "enum", "required": false, "enumValues": ["cloud", "mcp_session", "runner"] }, { "name": "schedule_cron", "flag": "schedule-cron", "type": "string", "required": false }, { "name": "answers", "flag": "answers", "type": "array", "required": false, "itemType": "string" }, { "name": "skill_discovery_enabled", "flag": "skill-discovery-enabled", "type": "boolean", "required": false }], "hasComplexInput": true, "help": "Update parent, steward, lane, schedule, answers, or tool decisions on the draft; steward and parent changes keep the no-orphan chain explicit." },
|
|
50642
51023
|
{ "id": "agent_template.list", "namespace": "agent_template", "action": "list", "title": "List agent templates", "description": "List stock agent templates and their responsibilities, default tools, and dry-run rehearsal.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [], "hasComplexInput": false, "help": "List stock agent templates and their default tools and safety boundaries before starting a template setup." },
|
|
51024
|
+
{ "id": "agent.activation_receipt", "namespace": "agent", "action": "activation_receipt", "title": "Build agent activation receipt", "description": "Read the compiled authority receipt for one agent: effective capabilities, connection metadata, stale-scope digest, budget, and always-human boundary.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "agent_id", "flag": "agent-id", "type": "string", "required": true }, { "name": "proposed_budget_cents", "flag": "proposed-budget-cents", "type": "integer", "required": false }], "hasComplexInput": false, "help": "Build the current compiled activation receipt before signing or creating a Trusted grant. Rebuild it after any Charter, capability, connection, schedule, or lane change." },
|
|
51025
|
+
{ "id": "agent.activation_sign", "namespace": "agent", "action": "activation_sign", "title": "Sign agent activation receipt", "description": "Human steward/admin activation sign-off for the current compiled receipt digest. Refuses stale receipts and records a human decision plus append-only event.", "requiredScope": "tenant", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "agent_id", "flag": "agent-id", "type": "string", "required": true }, { "name": "expected_scope_digest", "flag": "expected-scope-digest", "type": "string", "required": true }, { "name": "budget_cents", "flag": "budget-cents", "type": "integer", "required": true }, { "name": "reason", "flag": "reason", "type": "string", "required": false }], "hasComplexInput": false, "help": "Human steward/admin sign-off for the exact activation receipt digest. Agents can surface the pending confirmation but cannot sign their own authority." },
|
|
50643
51026
|
{ "id": "agent.configure_tools", "namespace": "agent", "action": "configure_tools", "title": "Configure agent tools", "description": "Save tool proposals, declines, and credential-ingress requests for a draft agent. Never stores or echoes secret material; vault refs only.", "requiredScope": "seat", "confirmation": "credential_flow", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }], "hasComplexInput": true, "help": "Connect or decline proposed tools and stage credential-ingress requests; never place raw secrets here \u2014 secrets flow through vault-backed credential.ingress as vault refs only.", "example": { "seat_id": "0190aaaa-aaaa-7aaa-8aaa-aaaaaaaaaaaa", "tool_decisions": [{ "tool": "ap.invoices.read", "decision": "connect" }, { "tool": "email.draft", "decision": "connect" }] } },
|
|
50644
51027
|
{ "id": "agent.create_custom", "namespace": "agent", "action": "create_custom", "title": "Create custom agent", "description": "Create a draft custom agent shell and a draft Charter seed from operational answers (what it owns, success, never-do-alone, steward).", "requiredScope": "tenant", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }, { "name": "steward_seat_id", "flag": "steward-seat-id", "type": "string", "required": false }, { "name": "lane", "flag": "lane", "type": "enum", "required": false, "enumValues": ["cloud", "mcp_session", "runner"] }, { "name": "what_it_owns", "flag": "what-it-owns", "type": "string", "required": false }, { "name": "what_success_looks_like", "flag": "what-success-looks-like", "type": "string", "required": false }, { "name": "what_it_must_never_do_alone", "flag": "what-it-must-never-do-alone", "type": "string", "required": false }], "hasComplexInput": true, "help": "Create a draft custom agent from operational answers (what it owns, success, never-do-alone, steward); the Charter Builder owns the contract and go-live stays human-gated.", "example": { "seat_id": "0190aaaa-aaaa-7aaa-8aaa-aaaaaaaaaaaa", "steward_seat_id": "0190bbbb-bbbb-7bbb-8bbb-bbbbbbbbbbbb", "lane": "cloud", "what_it_owns": "Drafting AP invoice entries from inbound vendor emails for human review.", "what_success_looks_like": "Every inbound invoice is drafted within one business day with the correct GL coding.", "what_it_must_never_do_alone": "Never send payment or approve an invoice without a human sign-off." } },
|
|
50645
51028
|
{ "id": "agent.create_from_template", "namespace": "agent", "action": "create_from_template", "title": "Create agent from template", "description": "Create a draft stock agent and draft Charter from a stock template. Creates the agent occupancy only when a human steward chain resolves; the agent stays draft until a signed manifest, a passed dry run, and human go-live.", "requiredScope": "tenant", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }, { "name": "template_slug", "flag": "template-slug", "type": "string", "required": true }, { "name": "expected_template_version", "flag": "expected-template-version", "type": "string", "required": false }], "hasComplexInput": false, "help": "Create a draft stock agent and draft Charter from a template; the agent occupancy is created only when a human steward chain resolves, and the agent stays draft until a signed manifest, a passed dry run, and human go-live." },
|
|
@@ -50656,6 +51039,11 @@ var COMMAND_MANIFEST = [
|
|
|
50656
51039
|
{ "id": "agent.run_now", "namespace": "agent", "action": "run_now", "title": "Run agent now", "description": "Queue and dispatch an immediate work order for a live cloud or runner agent on a seat.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }, { "name": "task_id", "flag": "task-id", "type": "string", "required": false }], "hasComplexInput": false, "help": "Queue and dispatch an immediate live agent run without changing the agent's saved schedule." },
|
|
50657
51040
|
{ "id": "agent.show_markdown", "namespace": "agent", "action": "show_markdown", "title": "Show agent setup as markdown", "description": "Compose a seat's agent setup, steward, model, tools, and Charter into a clean, human-skimmable markdown card for review.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Render a seat's agent setup, model, steward, tools, and Charter as a clean markdown card to show your human a quick review." },
|
|
50658
51041
|
{ "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." },
|
|
51042
|
+
{ "id": "agent.trust.create", "namespace": "agent", "action": "trust.create", "title": "Create agent Trusted grant", "description": "Create a bounded Trusted execution grant for a live agent after a human steward/admin signs the current activation receipt digest.", "requiredScope": "tenant", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "agent_id", "flag": "agent-id", "type": "string", "required": true }, { "name": "expected_scope_digest", "flag": "expected-scope-digest", "type": "string", "required": true }, { "name": "budget_cents", "flag": "budget-cents", "type": "integer", "required": true }, { "name": "expires_at", "flag": "expires-at", "type": "string", "required": false }, { "name": "reason", "flag": "reason", "type": "string", "required": false }], "hasComplexInput": false, "help": "Create a bounded Trusted execution grant only after reviewing the activation receipt digest, budget, and always-human boundary. Human steward/admin only." },
|
|
51043
|
+
{ "id": "agent.trust.expire", "namespace": "agent", "action": "trust.expire", "title": "Expire agent Trusted grants", "description": "Human steward/admin maintenance command that marks overdue active Trusted grants expired and appends an event for each expired grant.", "requiredScope": "tenant", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "agent_id", "flag": "agent-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Mark overdue active Trusted grants expired and append audit events. Human steward/admin only." },
|
|
51044
|
+
{ "id": "agent.trust.inspect", "namespace": "agent", "action": "trust.inspect", "title": "Inspect agent Trusted grants", "description": "Read active or historical Trusted execution grants for one agent. Returns metadata only, never secrets.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "agent_id", "flag": "agent-id", "type": "string", "required": true }, { "name": "include_inactive", "flag": "include-inactive", "type": "boolean", "required": false }], "hasComplexInput": false, "help": "Inspect active or historical Trusted grants for one agent. Metadata only; no secrets or vault refs." },
|
|
51045
|
+
{ "id": "agent.trust.revoke", "namespace": "agent", "action": "trust.revoke", "title": "Revoke agent Trusted grant", "description": "Human steward/admin revocation for an active Trusted execution grant. Preserves the historical grant row and appends an event.", "requiredScope": "tenant", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "grant_id", "flag": "grant-id", "type": "string", "required": true }, { "name": "reason", "flag": "reason", "type": "string", "required": false }], "hasComplexInput": false, "help": "Revoke an active Trusted grant while preserving history. Human steward/admin only." },
|
|
51046
|
+
{ "id": "agent.trust.supersede", "namespace": "agent", "action": "trust.supersede", "title": "Supersede agent Trusted grant", "description": "Human steward/admin replacement for an active Trusted grant. Refuses stale receipt digests and links the new grant to the superseded grant.", "requiredScope": "tenant", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "agent_id", "flag": "agent-id", "type": "string", "required": true }, { "name": "expected_scope_digest", "flag": "expected-scope-digest", "type": "string", "required": true }, { "name": "budget_cents", "flag": "budget-cents", "type": "integer", "required": true }, { "name": "expires_at", "flag": "expires-at", "type": "string", "required": false }, { "name": "reason", "flag": "reason", "type": "string", "required": false }], "hasComplexInput": false, "help": "Replace the active Trusted grant with a fresh digest and budget. Rebuild the receipt first; stale digests are refused." },
|
|
50659
51047
|
{ "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." },
|
|
50660
51048
|
{ "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." },
|
|
50661
51049
|
{ "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." },
|
|
@@ -55358,6 +55746,20 @@ var RUNNER_AICOS_TURN_TOOLS = [
|
|
|
55358
55746
|
"mcp__rost__rost_aicos_turn_load_context",
|
|
55359
55747
|
"mcp__rost__rost_get_tasks"
|
|
55360
55748
|
];
|
|
55749
|
+
var CODEX_NATIVE_TOOL_ISOLATION_CONFIG_ARGS = [
|
|
55750
|
+
"--config",
|
|
55751
|
+
'web_search="disabled"',
|
|
55752
|
+
"--config",
|
|
55753
|
+
"features.browser_use=false",
|
|
55754
|
+
"--config",
|
|
55755
|
+
"features.in_app_browser=false",
|
|
55756
|
+
"--config",
|
|
55757
|
+
"features.browser_use_external=false",
|
|
55758
|
+
"--config",
|
|
55759
|
+
"features.browser_use_full_cdp_access=false",
|
|
55760
|
+
"--config",
|
|
55761
|
+
"features.computer_use=false"
|
|
55762
|
+
];
|
|
55361
55763
|
var CLAUDE_WORKSPACE_WRITE_LOCAL_TOOLS = ["Read", "Write", "Edit", "Glob", "Grep", "Bash"];
|
|
55362
55764
|
var CLAUDE_READ_LOCAL_TOOLS = ["Read", "Glob", "Grep"];
|
|
55363
55765
|
var READ_STUB_TIMEOUT_MS = 18e4;
|
|
@@ -56124,7 +56526,8 @@ function resolveTurnPlan(input) {
|
|
|
56124
56526
|
codexSandbox: "read-only",
|
|
56125
56527
|
outputFormat: input.kind === "turn_execution" ? "json" : "text",
|
|
56126
56528
|
repoDir: null,
|
|
56127
|
-
timeoutMs: READ_STUB_TIMEOUT_MS
|
|
56529
|
+
timeoutMs: READ_STUB_TIMEOUT_MS,
|
|
56530
|
+
isolateCodexNativeTools: input.kind === "work_order"
|
|
56128
56531
|
};
|
|
56129
56532
|
}
|
|
56130
56533
|
const execution = input.execution;
|
|
@@ -56142,7 +56545,8 @@ function resolveTurnPlan(input) {
|
|
|
56142
56545
|
// Only a Forge workspace grants a repo cwd; a needs_repo contract with no prepared
|
|
56143
56546
|
// workspace (broker/clone failed upstream) falls back to tmpdir rather than a bad cwd.
|
|
56144
56547
|
repoDir: execution.needs_repo ? input.repoDir : null,
|
|
56145
|
-
timeoutMs: resolveExecutionTimeoutMs(execution)
|
|
56548
|
+
timeoutMs: resolveExecutionTimeoutMs(execution),
|
|
56549
|
+
isolateCodexNativeTools: execution.profile === "seat_work"
|
|
56146
56550
|
};
|
|
56147
56551
|
}
|
|
56148
56552
|
function buildTurnCommand(input) {
|
|
@@ -56159,7 +56563,13 @@ function buildTurnCommand(input) {
|
|
|
56159
56563
|
plan.codexSandbox,
|
|
56160
56564
|
// Skip the git-repo check only when the cwd is NOT a checkout (read stub in
|
|
56161
56565
|
// tmpdir); a prepared Forge workspace IS a repo, so drop the flag there.
|
|
56162
|
-
...plan.repoDir === null ? ["--skip-git-repo-check"] : []
|
|
56566
|
+
...plan.repoDir === null ? ["--skip-git-repo-check"] : [],
|
|
56567
|
+
...plan.isolateCodexNativeTools ? [
|
|
56568
|
+
"--ignore-user-config",
|
|
56569
|
+
"--ignore-rules",
|
|
56570
|
+
"--ephemeral",
|
|
56571
|
+
...CODEX_NATIVE_TOOL_ISOLATION_CONFIG_ARGS
|
|
56572
|
+
] : []
|
|
56163
56573
|
]
|
|
56164
56574
|
};
|
|
56165
56575
|
}
|