@rosthq/cli 0.7.72 → 0.7.74
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.");
|
|
@@ -39864,6 +39895,83 @@ var toolPolicyGetOutputSchema = external_exports.object({
|
|
|
39864
39895
|
tool_policy: storedTenantToolPolicySchema
|
|
39865
39896
|
}).strict();
|
|
39866
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
|
+
|
|
39867
39975
|
// ../../packages/protocol/src/agent-policy.ts
|
|
39868
39976
|
var AUTONOMOUS_RISK_LEVELS = ["low", "medium", "high", "critical"];
|
|
39869
39977
|
var autonomousRiskLevelSchema = external_exports.enum(AUTONOMOUS_RISK_LEVELS);
|
|
@@ -40587,6 +40695,54 @@ var charterSchema = charterPersistedObjectSchema.superRefine(refineAutonomousBou
|
|
|
40587
40695
|
var charterDocSchema = charterDocObjectSchema.superRefine(refineAutonomousBoundaries);
|
|
40588
40696
|
var charterDocEditsSchema = charterDocObjectSchema.omit({ payload_version: true }).partial().strict();
|
|
40589
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
|
+
|
|
40590
40746
|
// ../../packages/protocol/src/eos-intelligence.ts
|
|
40591
40747
|
var uuid3 = external_exports.string().uuid();
|
|
40592
40748
|
var frictionSeveritySchema = external_exports.enum(["low", "med", "high", "critical"]);
|
|
@@ -42293,6 +42449,15 @@ var confirmationRejectOutputSchema = external_exports.object({
|
|
|
42293
42449
|
command_id: external_exports.string().min(1),
|
|
42294
42450
|
rejected: external_exports.literal(true)
|
|
42295
42451
|
}).strict();
|
|
42452
|
+
var confirmationRemintInputSchema = external_exports.object({
|
|
42453
|
+
confirmation_id: external_exports.string().min(1)
|
|
42454
|
+
}).strict();
|
|
42455
|
+
var confirmationRemintOutputSchema = external_exports.object({
|
|
42456
|
+
confirmation_id: external_exports.string().min(1),
|
|
42457
|
+
command_id: external_exports.string().min(1),
|
|
42458
|
+
reminted: external_exports.literal(true),
|
|
42459
|
+
new_confirmation: pendingConfirmationSchema
|
|
42460
|
+
}).strict();
|
|
42296
42461
|
var confirmationListInputSchema = external_exports.object({
|
|
42297
42462
|
limit: external_exports.number().int().min(1).max(200).optional()
|
|
42298
42463
|
}).strict();
|
|
@@ -43075,6 +43240,101 @@ var errorLogSupersedeOutputSchema = external_exports.object({
|
|
|
43075
43240
|
resolved_at: isoDateTime3
|
|
43076
43241
|
}).strict();
|
|
43077
43242
|
|
|
43243
|
+
// ../../packages/protocol/src/working-files.ts
|
|
43244
|
+
var WORKING_FILE_MAX_PATH_CHARS = 512;
|
|
43245
|
+
var WORKING_FILE_MAX_CONTENT_CHARS = 16384;
|
|
43246
|
+
var isoDateTime4 = external_exports.string().datetime({ offset: true });
|
|
43247
|
+
var workingFileContentTypeSchema = external_exports.enum([
|
|
43248
|
+
"text/plain",
|
|
43249
|
+
"text/markdown",
|
|
43250
|
+
"application/json",
|
|
43251
|
+
"text/csv",
|
|
43252
|
+
"text/yaml",
|
|
43253
|
+
"application/yaml",
|
|
43254
|
+
"text/x-typescript",
|
|
43255
|
+
"text/typescript",
|
|
43256
|
+
"text/javascript",
|
|
43257
|
+
"application/javascript"
|
|
43258
|
+
]);
|
|
43259
|
+
var workingFileStateSchema = external_exports.enum(["ephemeral", "published"]);
|
|
43260
|
+
var workingFileRetentionClassSchema = external_exports.enum(["ephemeral_7d", "published_90d"]);
|
|
43261
|
+
function normalizeWorkingFilePath(value) {
|
|
43262
|
+
return value.trim().replace(/\\/g, "/");
|
|
43263
|
+
}
|
|
43264
|
+
function isSafeWorkingFilePath(value) {
|
|
43265
|
+
if (value.includes("\\")) {
|
|
43266
|
+
return false;
|
|
43267
|
+
}
|
|
43268
|
+
const normalized = normalizeWorkingFilePath(value);
|
|
43269
|
+
if (normalized.length === 0 || normalized.length > WORKING_FILE_MAX_PATH_CHARS) {
|
|
43270
|
+
return false;
|
|
43271
|
+
}
|
|
43272
|
+
if (normalized.startsWith("/") || normalized.startsWith("./") || normalized.startsWith("../")) {
|
|
43273
|
+
return false;
|
|
43274
|
+
}
|
|
43275
|
+
if (normalized.includes("\0") || normalized.includes("//")) {
|
|
43276
|
+
return false;
|
|
43277
|
+
}
|
|
43278
|
+
const segments = normalized.split("/");
|
|
43279
|
+
return segments.every((segment) => segment.length > 0 && segment !== "." && segment !== "..");
|
|
43280
|
+
}
|
|
43281
|
+
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");
|
|
43282
|
+
var workingFileCreateInputSchema = external_exports.object({
|
|
43283
|
+
path: workingFilePathSchema,
|
|
43284
|
+
content_type: workingFileContentTypeSchema,
|
|
43285
|
+
content: external_exports.string().min(1).max(WORKING_FILE_MAX_CONTENT_CHARS)
|
|
43286
|
+
}).strict();
|
|
43287
|
+
var workingFileReadInputSchema = external_exports.object({
|
|
43288
|
+
path: workingFilePathSchema
|
|
43289
|
+
}).strict();
|
|
43290
|
+
var workingFileListInputSchema = external_exports.object({
|
|
43291
|
+
state: workingFileStateSchema.optional()
|
|
43292
|
+
}).strict();
|
|
43293
|
+
var workingFilePublishInputSchema = external_exports.object({
|
|
43294
|
+
path: workingFilePathSchema
|
|
43295
|
+
}).strict();
|
|
43296
|
+
var workingFilesReadToolInputSchema = external_exports.discriminatedUnion("operation", [
|
|
43297
|
+
external_exports.object({
|
|
43298
|
+
operation: external_exports.literal("read"),
|
|
43299
|
+
path: workingFilePathSchema
|
|
43300
|
+
}).strict(),
|
|
43301
|
+
external_exports.object({
|
|
43302
|
+
operation: external_exports.literal("list"),
|
|
43303
|
+
state: workingFileStateSchema.optional()
|
|
43304
|
+
}).strict()
|
|
43305
|
+
]);
|
|
43306
|
+
var workingFilesWriteToolInputSchema = external_exports.discriminatedUnion("operation", [
|
|
43307
|
+
external_exports.object({
|
|
43308
|
+
operation: external_exports.literal("create"),
|
|
43309
|
+
path: workingFilePathSchema,
|
|
43310
|
+
content_type: workingFileContentTypeSchema,
|
|
43311
|
+
content: external_exports.string().min(1).max(WORKING_FILE_MAX_CONTENT_CHARS)
|
|
43312
|
+
}).strict(),
|
|
43313
|
+
external_exports.object({
|
|
43314
|
+
operation: external_exports.literal("publish"),
|
|
43315
|
+
path: workingFilePathSchema
|
|
43316
|
+
}).strict()
|
|
43317
|
+
]);
|
|
43318
|
+
var workingFileSummarySchema = external_exports.object({
|
|
43319
|
+
file_ref: external_exports.string().min(1),
|
|
43320
|
+
path: workingFilePathSchema,
|
|
43321
|
+
state: workingFileStateSchema,
|
|
43322
|
+
content_type: workingFileContentTypeSchema,
|
|
43323
|
+
content_chars: external_exports.number().int().nonnegative(),
|
|
43324
|
+
published_ref: external_exports.string().min(1).nullable(),
|
|
43325
|
+
published_at: isoDateTime4.nullable(),
|
|
43326
|
+
expires_at: isoDateTime4,
|
|
43327
|
+
created_at: isoDateTime4,
|
|
43328
|
+
updated_at: isoDateTime4
|
|
43329
|
+
}).strict();
|
|
43330
|
+
var workingFileReadResultSchema = workingFileSummarySchema.extend({
|
|
43331
|
+
content: external_exports.string(),
|
|
43332
|
+
content_truncated: external_exports.boolean()
|
|
43333
|
+
}).strict();
|
|
43334
|
+
var workingFilesListOutputSchema = external_exports.object({
|
|
43335
|
+
files: external_exports.array(workingFileSummarySchema)
|
|
43336
|
+
}).strict();
|
|
43337
|
+
|
|
43078
43338
|
// ../../packages/protocol/src/run-summary.ts
|
|
43079
43339
|
var runSummaryOutputSchema = external_exports.object({
|
|
43080
43340
|
summary: external_exports.string().min(1).max(140)
|
|
@@ -43082,7 +43342,7 @@ var runSummaryOutputSchema = external_exports.object({
|
|
|
43082
43342
|
|
|
43083
43343
|
// ../../packages/protocol/src/runner-settings.ts
|
|
43084
43344
|
var uuid8 = external_exports.string().uuid();
|
|
43085
|
-
var
|
|
43345
|
+
var isoDateTime5 = external_exports.string().datetime({ offset: true });
|
|
43086
43346
|
var runnerHealthSchema = external_exports.enum(["online", "stale", "offline", "revoked", "unpaired"]);
|
|
43087
43347
|
var runnerExecutionStateSchema = external_exports.enum([
|
|
43088
43348
|
"ready",
|
|
@@ -43102,8 +43362,8 @@ var runnerExecutionReadinessSchema = external_exports.object({
|
|
|
43102
43362
|
due_queued_work_orders: external_exports.number().int().nonnegative(),
|
|
43103
43363
|
claimed_work_orders: external_exports.number().int().nonnegative(),
|
|
43104
43364
|
running_work_orders: external_exports.number().int().nonnegative(),
|
|
43105
|
-
recent_completed_at:
|
|
43106
|
-
recent_failed_at:
|
|
43365
|
+
recent_completed_at: isoDateTime5.nullable(),
|
|
43366
|
+
recent_failed_at: isoDateTime5.nullable()
|
|
43107
43367
|
}).strict();
|
|
43108
43368
|
var runnerSandboxPostureSchema = external_exports.enum(["guard", "strict", "off", "none", "unknown"]);
|
|
43109
43369
|
var runnerPostureSchema = external_exports.object({
|
|
@@ -43120,10 +43380,10 @@ var runnerSummarySchema = external_exports.object({
|
|
|
43120
43380
|
cli_version: external_exports.string().nullable(),
|
|
43121
43381
|
posture: runnerPostureSchema,
|
|
43122
43382
|
execution: runnerExecutionReadinessSchema,
|
|
43123
|
-
paired_at:
|
|
43124
|
-
last_heartbeat_at:
|
|
43125
|
-
revoked_at:
|
|
43126
|
-
created_at:
|
|
43383
|
+
paired_at: isoDateTime5.nullable(),
|
|
43384
|
+
last_heartbeat_at: isoDateTime5.nullable(),
|
|
43385
|
+
revoked_at: isoDateTime5.nullable(),
|
|
43386
|
+
created_at: isoDateTime5
|
|
43127
43387
|
}).strict();
|
|
43128
43388
|
var runnerListInputSchema = external_exports.object({
|
|
43129
43389
|
include_revoked: external_exports.boolean().optional()
|
|
@@ -43142,7 +43402,7 @@ var runnerPairingStartOutputSchema = external_exports.object({
|
|
|
43142
43402
|
pairing_session_id: uuid8,
|
|
43143
43403
|
user_code: external_exports.string(),
|
|
43144
43404
|
verification_uri: external_exports.string(),
|
|
43145
|
-
expires_at:
|
|
43405
|
+
expires_at: isoDateTime5,
|
|
43146
43406
|
expires_in: external_exports.number().int().nonnegative()
|
|
43147
43407
|
}).strict();
|
|
43148
43408
|
var runnerRevokeInputSchema = external_exports.object({
|
|
@@ -43160,9 +43420,9 @@ var workOrderSummarySchema = external_exports.object({
|
|
|
43160
43420
|
lane: external_exports.enum(["cloud", "runner"]),
|
|
43161
43421
|
status: workOrderStatusSchema,
|
|
43162
43422
|
claimed_by_runner_id: uuid8.nullable(),
|
|
43163
|
-
scheduled_for:
|
|
43164
|
-
grace_deadline:
|
|
43165
|
-
created_at:
|
|
43423
|
+
scheduled_for: isoDateTime5,
|
|
43424
|
+
grace_deadline: isoDateTime5,
|
|
43425
|
+
created_at: isoDateTime5
|
|
43166
43426
|
}).strict();
|
|
43167
43427
|
var workOrderListInputSchema = external_exports.object({
|
|
43168
43428
|
status: workOrderStatusSchema.optional(),
|
|
@@ -43175,7 +43435,7 @@ var workOrderListOutputSchema = external_exports.object({
|
|
|
43175
43435
|
}).strict();
|
|
43176
43436
|
var workOrderEnqueueInputSchema = external_exports.object({
|
|
43177
43437
|
agent_id: uuid8,
|
|
43178
|
-
scheduled_for:
|
|
43438
|
+
scheduled_for: isoDateTime5.optional(),
|
|
43179
43439
|
task_id: uuid8.optional()
|
|
43180
43440
|
}).strict();
|
|
43181
43441
|
var agentRunNowInputSchema = external_exports.object({
|
|
@@ -43202,8 +43462,8 @@ var runnerDiagnoseOutputSchema = external_exports.object({
|
|
|
43202
43462
|
platform: external_exports.string(),
|
|
43203
43463
|
health: runnerHealthSchema,
|
|
43204
43464
|
capabilities: runnerCapabilityDetailSchema,
|
|
43205
|
-
last_heartbeat_at:
|
|
43206
|
-
paired_at:
|
|
43465
|
+
last_heartbeat_at: isoDateTime5.nullable(),
|
|
43466
|
+
paired_at: isoDateTime5.nullable(),
|
|
43207
43467
|
revocation_state: external_exports.enum(["active", "revoked", "unpaired"]),
|
|
43208
43468
|
repair_guidance: external_exports.array(external_exports.object({
|
|
43209
43469
|
action: external_exports.string(),
|
|
@@ -43264,7 +43524,7 @@ var notificationErrorSummarySchema = external_exports.object({
|
|
|
43264
43524
|
source: external_exports.enum(["run", "llm", "tool", "mcp", "runner", "integration", "job", "web"]).nullable(),
|
|
43265
43525
|
seat_id: uuid8.nullable(),
|
|
43266
43526
|
run_id: uuid8.nullable(),
|
|
43267
|
-
created_at:
|
|
43527
|
+
created_at: isoDateTime5
|
|
43268
43528
|
}).strict();
|
|
43269
43529
|
var notificationListErrorsOutputSchema = external_exports.object({
|
|
43270
43530
|
errors: external_exports.array(notificationErrorSummarySchema)
|
|
@@ -43381,7 +43641,7 @@ var integrationSummarySchema = external_exports.object({
|
|
|
43381
43641
|
id: uuid8,
|
|
43382
43642
|
provider: external_exports.string(),
|
|
43383
43643
|
status: external_exports.enum(["connected", "error", "disconnected"]),
|
|
43384
|
-
last_synced_at:
|
|
43644
|
+
last_synced_at: isoDateTime5.nullable()
|
|
43385
43645
|
}).strict();
|
|
43386
43646
|
var settingsGetInputSchema = external_exports.object({}).strict();
|
|
43387
43647
|
var settingsGetOutputSchema = external_exports.object({
|
|
@@ -43417,7 +43677,7 @@ var tenantRenameOutputSchema = external_exports.object({
|
|
|
43417
43677
|
|
|
43418
43678
|
// ../../packages/protocol/src/system-health.ts
|
|
43419
43679
|
var uuidSchema14 = external_exports.string().uuid();
|
|
43420
|
-
var
|
|
43680
|
+
var isoDateTime6 = external_exports.string().datetime({ offset: true });
|
|
43421
43681
|
var systemHealthCallerKindSchema = external_exports.enum(["tenant_admin", "member", "seat_token"]);
|
|
43422
43682
|
var systemHealthCallerSchema = external_exports.object({
|
|
43423
43683
|
kind: systemHealthCallerKindSchema,
|
|
@@ -43507,7 +43767,7 @@ var systemHealthConnectivitySectionSchema = external_exports.object({
|
|
|
43507
43767
|
failed_notification_count: external_exports.number().int().nonnegative()
|
|
43508
43768
|
}).strict();
|
|
43509
43769
|
var systemHealthSyncSectionSchema = external_exports.object({
|
|
43510
|
-
latest_brief_at:
|
|
43770
|
+
latest_brief_at: isoDateTime6.nullable(),
|
|
43511
43771
|
missing_latest_brief: external_exports.boolean(),
|
|
43512
43772
|
flagged_gap_count: external_exports.number().int().nonnegative()
|
|
43513
43773
|
}).strict();
|
|
@@ -43527,7 +43787,7 @@ var systemHealthCheckInputSchema = systemHealthInputSchema.extend({
|
|
|
43527
43787
|
caller: systemHealthCallerSchema
|
|
43528
43788
|
}).strict();
|
|
43529
43789
|
var systemHealthOutputSchema = external_exports.object({
|
|
43530
|
-
generated_at:
|
|
43790
|
+
generated_at: isoDateTime6,
|
|
43531
43791
|
scope: systemHealthScopeSchema,
|
|
43532
43792
|
verdict: systemHealthVerdictSchema,
|
|
43533
43793
|
top_actions: external_exports.array(systemHealthActionSchema),
|
|
@@ -45130,16 +45390,16 @@ var syncBriefSchema = external_exports.object({
|
|
|
45130
45390
|
}).strict();
|
|
45131
45391
|
|
|
45132
45392
|
// ../../packages/protocol/src/usage.ts
|
|
45133
|
-
var
|
|
45393
|
+
var isoDateTime7 = external_exports.string().datetime({ offset: true });
|
|
45134
45394
|
var periodKeySchema = external_exports.string().regex(/^\d{4}-\d{2}-\d{2}$/);
|
|
45135
45395
|
var countSchema = external_exports.number().int().nonnegative();
|
|
45136
45396
|
var usdSchema = external_exports.string();
|
|
45137
45397
|
var bigCountSchema = external_exports.string();
|
|
45138
45398
|
var usagePeriodSchema = external_exports.object({
|
|
45139
45399
|
period: periodKeySchema,
|
|
45140
|
-
period_start:
|
|
45141
|
-
period_end:
|
|
45142
|
-
captured_at:
|
|
45400
|
+
period_start: isoDateTime7,
|
|
45401
|
+
period_end: isoDateTime7,
|
|
45402
|
+
captured_at: isoDateTime7,
|
|
45143
45403
|
run_count: countSchema,
|
|
45144
45404
|
agent_count: countSchema,
|
|
45145
45405
|
succeeded_run_count: countSchema,
|
|
@@ -45191,7 +45451,7 @@ var usageSnapshotInputSchema = external_exports.object({
|
|
|
45191
45451
|
// current month. Normalized to the first of that month server-side.
|
|
45192
45452
|
period: external_exports.union([
|
|
45193
45453
|
external_exports.string().regex(/^\d{4}-\d{2}-\d{2}$/),
|
|
45194
|
-
|
|
45454
|
+
isoDateTime7
|
|
45195
45455
|
]).optional()
|
|
45196
45456
|
}).strict();
|
|
45197
45457
|
var usageSnapshotOutputSchema = external_exports.object({
|
|
@@ -46787,7 +47047,7 @@ There is exactly one way to give a connected tool its credential, and it is the
|
|
|
46787
47047
|
order: 47,
|
|
46788
47048
|
title: "Available tools guide",
|
|
46789
47049
|
summary: "How to think about tool categories available to seats and what each category should be used for.",
|
|
46790
|
-
version: "2026-07-13.
|
|
47050
|
+
version: "2026-07-13.3",
|
|
46791
47051
|
public: true,
|
|
46792
47052
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
46793
47053
|
stages: ["staffing"],
|
|
@@ -46825,7 +47085,7 @@ Start from the seat's responsibility, not the tool list. If a tool does not dire
|
|
|
46825
47085
|
|
|
46826
47086
|
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.
|
|
46827
47087
|
|
|
46828
|
-
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,
|
|
47088
|
+
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.
|
|
46829
47089
|
|
|
46830
47090
|
## How agents should request tools
|
|
46831
47091
|
|
|
@@ -46835,14 +47095,14 @@ Agents should explain the job, the required tool category, the minimum permissio
|
|
|
46835
47095
|
|
|
46836
47096
|
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.
|
|
46837
47097
|
|
|
46838
|
-
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,
|
|
47098
|
+
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.`
|
|
46839
47099
|
},
|
|
46840
47100
|
{
|
|
46841
47101
|
slug: "mcp-and-cli-guide",
|
|
46842
47102
|
order: 48,
|
|
46843
47103
|
title: "CLI and MCP installation guide",
|
|
46844
47104
|
summary: "Install the public CLI, register remote token-backed MCP clients, and find the full command and tool catalog.",
|
|
46845
|
-
version: "2026-07-13.
|
|
47105
|
+
version: "2026-07-13.4",
|
|
46846
47106
|
public: true,
|
|
46847
47107
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
46848
47108
|
stages: ["company_setup", "staffing"],
|
|
@@ -46943,6 +47203,10 @@ The MCP server is remote and token-backed. There is no local MCP daemon to insta
|
|
|
46943
47203
|
|
|
46944
47204
|
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.
|
|
46945
47205
|
|
|
47206
|
+
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.
|
|
47207
|
+
|
|
47208
|
+
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.
|
|
47209
|
+
|
|
46946
47210
|
## Prerequisite: a human approver in a browser
|
|
46947
47211
|
|
|
46948
47212
|
A headless agent cannot complete setup unattended. Two things always require a human, so plan to announce the handoff rather than stall silently:
|
|
@@ -48477,11 +48741,11 @@ Keep agent scope tight at first. Approve more autonomy only after evidence. Use
|
|
|
48477
48741
|
order: 71,
|
|
48478
48742
|
title: "Confirmations and human gates guide",
|
|
48479
48743
|
summary: "How {{brand}} routes authority-changing work through human confirmation, and why agents never approve their own requests.",
|
|
48480
|
-
version: "2026-07-
|
|
48744
|
+
version: "2026-07-13.1",
|
|
48481
48745
|
public: true,
|
|
48482
48746
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
48483
48747
|
stages: ["graph_design", "charter_design", "staffing", "operating_rhythm"],
|
|
48484
|
-
relatedCommandIds: ["confirmation.approve", "confirmation.list", "confirmation.reject", "charter.approve", "agent.go_live", "credential.ingress", "mcp_token.create", "staffing.assign_user", "goal.reparent", "friction.resolve"],
|
|
48748
|
+
relatedCommandIds: ["confirmation.approve", "confirmation.list", "confirmation.reject", "confirmation.remint", "charter.approve", "agent.go_live", "credential.ingress", "mcp_token.create", "staffing.assign_user", "goal.reparent", "friction.resolve"],
|
|
48485
48749
|
legal: { publicRisk: "low", notes: ["{{brand}}-native human-gate guidance."] },
|
|
48486
48750
|
sources: [
|
|
48487
48751
|
{
|
|
@@ -48540,7 +48804,7 @@ Stop before: approving a Charter, signing a manifest, connecting a tool or crede
|
|
|
48540
48804
|
order: 71,
|
|
48541
48805
|
title: "Billing and pricing guide",
|
|
48542
48806
|
summary: "How {{brand}} packages company-wide access, Stripe billing, and governed-agent usage without per-human-seat pricing.",
|
|
48543
|
-
version: "2026-07-
|
|
48807
|
+
version: "2026-07-13.1",
|
|
48544
48808
|
public: true,
|
|
48545
48809
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
48546
48810
|
stages: ["company_setup", "staffing", "operating_rhythm"],
|
|
@@ -48596,6 +48860,14 @@ The first meter is billable-successful-agent-run based because the current platf
|
|
|
48596
48860
|
|
|
48597
48861
|
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.
|
|
48598
48862
|
|
|
48863
|
+
## Launch credits and recovery access
|
|
48864
|
+
|
|
48865
|
+
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.
|
|
48866
|
+
|
|
48867
|
+
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.
|
|
48868
|
+
|
|
48869
|
+
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.
|
|
48870
|
+
|
|
48599
48871
|
## Stripe boundary
|
|
48600
48872
|
|
|
48601
48873
|
Stripe owns payment collection, payment methods, invoices, and hosted customer self-service.
|
|
@@ -49781,7 +50053,7 @@ This worked document **omits** \`unanswered_boundaries\` and \`seat_type_recomme
|
|
|
49781
50053
|
order: 43,
|
|
49782
50054
|
title: "Agent builder guide",
|
|
49783
50055
|
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.",
|
|
49784
|
-
version: "2026-07-
|
|
50056
|
+
version: "2026-07-13.1",
|
|
49785
50057
|
public: true,
|
|
49786
50058
|
audiences: ["cli", "mcp", "in_app_agent"],
|
|
49787
50059
|
stages: ["staffing"],
|
|
@@ -49870,7 +50142,7 @@ Conservative by default: anything beyond read/draft defaults to \`always_ask\`.
|
|
|
49870
50142
|
|
|
49871
50143
|
- **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.
|
|
49872
50144
|
- **Inbox / scheduling assistant.** \`gmail.read\` + draft + \`calendar.propose_hold\`; sends and confirmed meetings are approval-gated; sensitive messages escalate. Triage or balanced model.
|
|
49873
|
-
- **Research / SDR.** \`web.
|
|
50145
|
+
- **Research / SDR.** \`web.search\` + \`crm.contacts.draft_update\` (draft only); outreach and paid data escalate. Balanced model.
|
|
49874
50146
|
- **Reviewer / QA.** Read release artifacts + draft issues; release approval and production changes escalate. Complex model for judgment.
|
|
49875
50147
|
|
|
49876
50148
|
## The full JSON shape
|
|
@@ -50813,6 +51085,7 @@ var COMMAND_MANIFEST = [
|
|
|
50813
51085
|
{ "id": "confirmation.approve", "namespace": "confirmation", "action": "approve", "title": "Approve pending confirmation", "description": "Approve an in-flight confirmation and execute the original command as the approving human.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "confirmation_id", "flag": "confirmation-id", "type": "string", "required": true }, { "name": "reviewed", "flag": "reviewed", "type": "boolean", "required": false }], "hasComplexInput": false, "help": "Approve pending confirmations only when the requested durable change is clear to the human owner." },
|
|
50814
51086
|
{ "id": "confirmation.list", "namespace": "confirmation", "action": "list", "title": "List pending confirmations", "description": "List in-flight confirmations awaiting a human decision, scoped to the caller's authority (owner sees all; a member sees seats they occupy; an agent sees its own seat).", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "limit", "flag": "limit", "type": "integer", "required": false }], "hasComplexInput": false, "help": "List pending confirmations awaiting a human decision before approving or rejecting them." },
|
|
50815
51087
|
{ "id": "confirmation.reject", "namespace": "confirmation", "action": "reject", "title": "Reject pending confirmation", "description": "Reject an in-flight confirmation without executing the original command.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "confirmation_id", "flag": "confirmation-id", "type": "string", "required": true }, { "name": "reason", "flag": "reason", "type": "string", "required": false }], "hasComplexInput": false, "help": "Reject pending confirmations when authority, evidence, or human intent is unclear." },
|
|
51088
|
+
{ "id": "confirmation.remint", "namespace": "confirmation", "action": "remint", "title": "Re-mint an expired confirmation", "description": "Stage a fresh confirmation for the same command as an expired one, re-running the normal minting authorization checks.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "confirmation_id", "flag": "confirmation-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Re-mint an expired confirmation into a fresh one before approving, instead of re-running the original command from scratch." },
|
|
50816
51089
|
{ "id": "credential.ingress", "namespace": "credential", "action": "ingress", "title": "Store credential", "description": "Store a secret through the vault and persist only the credential vault reference.", "requiredScope": "seat", "confirmation": "credential_flow", "exposeOverMcp": false, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": false }, { "name": "provider", "flag": "provider", "type": "string", "required": true }, { "name": "scope_description", "flag": "scope-description", "type": "string", "required": true }, { "name": "secret_name", "flag": "secret-name", "type": "string", "required": true }], "hasComplexInput": false, "secretBlocked": true, "help": "Ingress credentials only through vault-backed flows; never place raw secrets in prompts, logs, or docs." },
|
|
50817
51090
|
{ "id": "deliverable.accept", "namespace": "deliverable", "action": "accept", "title": "Accept deliverable value", "description": "Record a human-confirmed accepted value (USD) on a deliverable. Humans decide; agents cannot self-accept. Re-accepting records a correction as a new event; prior events are never mutated.", "requiredScope": "tenant_admin", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "deliverable_id", "flag": "deliverable-id", "type": "string", "required": true }, { "name": "impact_value_usd", "flag": "impact-value-usd", "type": "number", "required": true }], "hasComplexInput": false, "help": "Record a human-confirmed accepted value (USD) on a deliverable; owner-only and human-gated. Humans decide \u2014 agents cannot self-accept. Re-accepting records a correction as a new event." },
|
|
50818
51091
|
{ "id": "deliverable.attach", "namespace": "deliverable", "action": "attach", "title": "Attach agent deliverable", "description": "Attach a deliverable to a source run, task, or work order for the acting seat. Source refs are validated server-side.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "run_id", "flag": "run-id", "type": "string", "required": false }, { "name": "task_id", "flag": "task-id", "type": "string", "required": false }, { "name": "work_order_id", "flag": "work-order-id", "type": "string", "required": false }, { "name": "kind", "flag": "kind", "type": "enum", "required": false, "enumValues": ["brief", "work_evidence", "artifact", "report", "other"] }, { "name": "title", "flag": "title", "type": "string", "required": true }, { "name": "summary", "flag": "summary", "type": "string", "required": false }, { "name": "content", "flag": "content", "type": "string", "required": false }], "hasComplexInput": true, "help": "Attach a scrubbed deliverable to a source run, task, or work order that belongs to the acting seat." },
|
|
@@ -55483,6 +55756,20 @@ var RUNNER_AICOS_TURN_TOOLS = [
|
|
|
55483
55756
|
"mcp__rost__rost_aicos_turn_load_context",
|
|
55484
55757
|
"mcp__rost__rost_get_tasks"
|
|
55485
55758
|
];
|
|
55759
|
+
var CODEX_NATIVE_TOOL_ISOLATION_CONFIG_ARGS = [
|
|
55760
|
+
"--config",
|
|
55761
|
+
'web_search="disabled"',
|
|
55762
|
+
"--config",
|
|
55763
|
+
"features.browser_use=false",
|
|
55764
|
+
"--config",
|
|
55765
|
+
"features.in_app_browser=false",
|
|
55766
|
+
"--config",
|
|
55767
|
+
"features.browser_use_external=false",
|
|
55768
|
+
"--config",
|
|
55769
|
+
"features.browser_use_full_cdp_access=false",
|
|
55770
|
+
"--config",
|
|
55771
|
+
"features.computer_use=false"
|
|
55772
|
+
];
|
|
55486
55773
|
var CLAUDE_WORKSPACE_WRITE_LOCAL_TOOLS = ["Read", "Write", "Edit", "Glob", "Grep", "Bash"];
|
|
55487
55774
|
var CLAUDE_READ_LOCAL_TOOLS = ["Read", "Glob", "Grep"];
|
|
55488
55775
|
var READ_STUB_TIMEOUT_MS = 18e4;
|
|
@@ -56249,7 +56536,8 @@ function resolveTurnPlan(input) {
|
|
|
56249
56536
|
codexSandbox: "read-only",
|
|
56250
56537
|
outputFormat: input.kind === "turn_execution" ? "json" : "text",
|
|
56251
56538
|
repoDir: null,
|
|
56252
|
-
timeoutMs: READ_STUB_TIMEOUT_MS
|
|
56539
|
+
timeoutMs: READ_STUB_TIMEOUT_MS,
|
|
56540
|
+
isolateCodexNativeTools: input.kind === "work_order"
|
|
56253
56541
|
};
|
|
56254
56542
|
}
|
|
56255
56543
|
const execution = input.execution;
|
|
@@ -56267,7 +56555,8 @@ function resolveTurnPlan(input) {
|
|
|
56267
56555
|
// Only a Forge workspace grants a repo cwd; a needs_repo contract with no prepared
|
|
56268
56556
|
// workspace (broker/clone failed upstream) falls back to tmpdir rather than a bad cwd.
|
|
56269
56557
|
repoDir: execution.needs_repo ? input.repoDir : null,
|
|
56270
|
-
timeoutMs: resolveExecutionTimeoutMs(execution)
|
|
56558
|
+
timeoutMs: resolveExecutionTimeoutMs(execution),
|
|
56559
|
+
isolateCodexNativeTools: execution.profile === "seat_work"
|
|
56271
56560
|
};
|
|
56272
56561
|
}
|
|
56273
56562
|
function buildTurnCommand(input) {
|
|
@@ -56284,7 +56573,13 @@ function buildTurnCommand(input) {
|
|
|
56284
56573
|
plan.codexSandbox,
|
|
56285
56574
|
// Skip the git-repo check only when the cwd is NOT a checkout (read stub in
|
|
56286
56575
|
// tmpdir); a prepared Forge workspace IS a repo, so drop the flag there.
|
|
56287
|
-
...plan.repoDir === null ? ["--skip-git-repo-check"] : []
|
|
56576
|
+
...plan.repoDir === null ? ["--skip-git-repo-check"] : [],
|
|
56577
|
+
...plan.isolateCodexNativeTools ? [
|
|
56578
|
+
"--ignore-user-config",
|
|
56579
|
+
"--ignore-rules",
|
|
56580
|
+
"--ephemeral",
|
|
56581
|
+
...CODEX_NATIVE_TOOL_ISOLATION_CONFIG_ARGS
|
|
56582
|
+
] : []
|
|
56288
56583
|
]
|
|
56289
56584
|
};
|
|
56290
56585
|
}
|