lua-cli 3.48.0 → 3.49.1
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/api-exports.d.ts +643 -15
- package/dist/api-exports.js +1353 -425
- package/dist/api-exports.js.map +1 -1
- package/dist/index.js +6088 -3836
- package/dist/index.js.map +1 -1
- package/dist/voice/test/index.d.ts +4 -4
- package/dist/voice-exports.d.ts +1 -1
- package/dist/voice-exports.js.map +1 -1
- package/dist/workflow-builder.d.ts +10 -1
- package/dist/workflow-builder.js +949 -145
- package/dist/workflow-builder.js.map +1 -1
- package/docs/CLI_REFERENCE.md +7 -5
- package/docs/README.md +3 -3
- package/docs/api/LuaDecision.md +10 -4
- package/docs/api/LuaWorkflow.md +17 -1
- package/docs/api/Workflows.md +4 -3
- package/package.json +1 -1
- package/template/package.json +1 -1
package/dist/api-exports.js
CHANGED
|
@@ -943,6 +943,24 @@ function aiGenerateInputFromSimplified(prompt, content) {
|
|
|
943
943
|
]
|
|
944
944
|
};
|
|
945
945
|
}
|
|
946
|
+
function formatDecisionSandboxPrimitive(name, tool) {
|
|
947
|
+
return tool ? `${name}${DECISION_SANDBOX_TOOL_SEPARATOR}${tool}` : name;
|
|
948
|
+
}
|
|
949
|
+
function parseDecisionSandboxPrimitive(value3) {
|
|
950
|
+
const at = value3.indexOf(DECISION_SANDBOX_TOOL_SEPARATOR);
|
|
951
|
+
const name = at < 0 ? value3 : value3.slice(0, at);
|
|
952
|
+
const tool = at < 0 ? "" : value3.slice(at + DECISION_SANDBOX_TOOL_SEPARATOR.length);
|
|
953
|
+
if (name.length === 0) return void 0;
|
|
954
|
+
return tool.length > 0 ? {
|
|
955
|
+
name,
|
|
956
|
+
tool
|
|
957
|
+
} : {
|
|
958
|
+
name
|
|
959
|
+
};
|
|
960
|
+
}
|
|
961
|
+
function decisionPublishStampKey(agentId2) {
|
|
962
|
+
return `decisions:stamp:${agentId2}`;
|
|
963
|
+
}
|
|
946
964
|
function isIntegrationPassthroughReadMethod(method) {
|
|
947
965
|
return typeof method === "string" && INTEGRATION_PASSTHROUGH_READ_METHODS.includes(method.toUpperCase());
|
|
948
966
|
}
|
|
@@ -993,6 +1011,79 @@ function isPlatformInvocationCaller(v) {
|
|
|
993
1011
|
function supervisionSubjectId(agentId2) {
|
|
994
1012
|
return `agent:${agentId2}`;
|
|
995
1013
|
}
|
|
1014
|
+
function isModelCallCategory(category) {
|
|
1015
|
+
return category.startsWith("llm:") || category.startsWith("voice:") || category === "embedding" || category === "workflow:job" || category === "decision:ask" || category.startsWith("tool:image-");
|
|
1016
|
+
}
|
|
1017
|
+
function deriveUsageSurface(row) {
|
|
1018
|
+
const { category, channel } = row;
|
|
1019
|
+
const data = row.data;
|
|
1020
|
+
if (!isModelCallCategory(category)) return void 0;
|
|
1021
|
+
if (category === "workflow:job") return "workflow-job";
|
|
1022
|
+
if (category === "llm:sandbox") return "tool-code";
|
|
1023
|
+
if (category === "llm:builder") return "builder";
|
|
1024
|
+
if (category === "llm:website") return "website";
|
|
1025
|
+
if (category.startsWith("voice:") || category === "llm:voice") return "voice";
|
|
1026
|
+
if (category.startsWith("llm:tool:") || AGENT_TOOL_CATEGORIES.has(category)) return "agent-tool";
|
|
1027
|
+
if (!TURN_CATEGORIES.has(category)) return "background";
|
|
1028
|
+
if (channel === "workflow") return "workflow-step";
|
|
1029
|
+
if (data?.gateway === "livekit-inference") return "voice";
|
|
1030
|
+
if (channel === "dev") return "dev";
|
|
1031
|
+
if (channel && VOICE_CHANNELS.has(channel)) return "voice";
|
|
1032
|
+
if (channel && MESSAGING_CHANNELS.has(channel)) return "channel";
|
|
1033
|
+
return "chat";
|
|
1034
|
+
}
|
|
1035
|
+
function fromRaw(raw, id2, model) {
|
|
1036
|
+
const fiveMin = count(raw.cache_creation?.ephemeral_5m_input_tokens);
|
|
1037
|
+
const oneHour = count(raw.cache_creation?.ephemeral_1h_input_tokens);
|
|
1038
|
+
const split = !!(fiveMin || oneHour);
|
|
1039
|
+
const flatWrite = count(raw.cache_creation_input_tokens);
|
|
1040
|
+
const read = count(raw.cache_read_input_tokens);
|
|
1041
|
+
return {
|
|
1042
|
+
...typeof id2 === "string" && id2 ? {
|
|
1043
|
+
id: id2
|
|
1044
|
+
} : {},
|
|
1045
|
+
...typeof model === "string" && model ? {
|
|
1046
|
+
model
|
|
1047
|
+
} : {},
|
|
1048
|
+
inputTokens: count(raw.input_tokens) ?? 0,
|
|
1049
|
+
outputTokens: count(raw.output_tokens) ?? 0,
|
|
1050
|
+
...read ? {
|
|
1051
|
+
cacheReadTokens: read
|
|
1052
|
+
} : {},
|
|
1053
|
+
...split ? {
|
|
1054
|
+
...fiveMin ? {
|
|
1055
|
+
cacheCreationTokens5m: fiveMin
|
|
1056
|
+
} : {},
|
|
1057
|
+
...oneHour ? {
|
|
1058
|
+
cacheCreationTokens1h: oneHour
|
|
1059
|
+
} : {}
|
|
1060
|
+
} : flatWrite ? {
|
|
1061
|
+
cacheCreationTokens: flatWrite
|
|
1062
|
+
} : {},
|
|
1063
|
+
...typeof raw.service_tier === "string" && raw.service_tier && raw.service_tier !== "standard" ? {
|
|
1064
|
+
serviceTier: raw.service_tier
|
|
1065
|
+
} : {}
|
|
1066
|
+
};
|
|
1067
|
+
}
|
|
1068
|
+
function anthropicMessageUsage(message) {
|
|
1069
|
+
if (!message || typeof message !== "object") return void 0;
|
|
1070
|
+
const m = message;
|
|
1071
|
+
if (!m.usage || typeof m.usage !== "object") return void 0;
|
|
1072
|
+
return fromRaw(m.usage, m.id, m.model);
|
|
1073
|
+
}
|
|
1074
|
+
function parseAnthropicReplyUsage(body) {
|
|
1075
|
+
const start = body.trimStart();
|
|
1076
|
+
if (start.startsWith("{")) {
|
|
1077
|
+
try {
|
|
1078
|
+
return anthropicMessageUsage(JSON.parse(start));
|
|
1079
|
+
} catch {
|
|
1080
|
+
return void 0;
|
|
1081
|
+
}
|
|
1082
|
+
}
|
|
1083
|
+
const reader = new AnthropicSseUsageReader();
|
|
1084
|
+
reader.push(body);
|
|
1085
|
+
return reader.result();
|
|
1086
|
+
}
|
|
996
1087
|
function isSupervisionOp(op) {
|
|
997
1088
|
return typeof op === "string" && Object.prototype.hasOwnProperty.call(SUPERVISION_OPS, op);
|
|
998
1089
|
}
|
|
@@ -2164,24 +2255,24 @@ function addresses(text2) {
|
|
|
2164
2255
|
function recordFacts(value3) {
|
|
2165
2256
|
const senders = [];
|
|
2166
2257
|
const labels = [];
|
|
2167
|
-
let
|
|
2258
|
+
let isRecord32 = false;
|
|
2168
2259
|
if (isPlainObject(value3.author_member)) {
|
|
2169
|
-
|
|
2260
|
+
isRecord32 = true;
|
|
2170
2261
|
const email = lower(value3.author_member.email);
|
|
2171
2262
|
if (email) senders.push(email);
|
|
2172
2263
|
const userId = lower(value3.author_member.user_id);
|
|
2173
2264
|
if (userId) senders.push(userId);
|
|
2174
2265
|
}
|
|
2175
2266
|
if (typeof value3.channel_id === "string") {
|
|
2176
|
-
|
|
2267
|
+
isRecord32 = true;
|
|
2177
2268
|
labels.push(...idOrName(value3.channel_id));
|
|
2178
2269
|
}
|
|
2179
2270
|
if (Array.isArray(value3.channel_ids)) {
|
|
2180
|
-
|
|
2271
|
+
isRecord32 = true;
|
|
2181
2272
|
for (const id2 of value3.channel_ids) labels.push(...idOrName(id2));
|
|
2182
2273
|
}
|
|
2183
2274
|
if (Array.isArray(value3.channels) && (value3.author_member || value3.message !== void 0)) {
|
|
2184
|
-
|
|
2275
|
+
isRecord32 = true;
|
|
2185
2276
|
for (const channel of value3.channels) labels.push(...idOrName(channel));
|
|
2186
2277
|
}
|
|
2187
2278
|
for (const key of [
|
|
@@ -2190,11 +2281,11 @@ function recordFacts(value3) {
|
|
|
2190
2281
|
]) {
|
|
2191
2282
|
const field = value3[key];
|
|
2192
2283
|
if (isPlainObject(field) && isPlainObject(field.emailAddress)) {
|
|
2193
|
-
|
|
2284
|
+
isRecord32 = true;
|
|
2194
2285
|
const address = lower(field.emailAddress.address);
|
|
2195
2286
|
if (address) senders.push(address);
|
|
2196
2287
|
} else if (key === "from" && typeof field === "string" && field.includes("@")) {
|
|
2197
|
-
|
|
2288
|
+
isRecord32 = true;
|
|
2198
2289
|
senders.push(...addresses(field));
|
|
2199
2290
|
}
|
|
2200
2291
|
}
|
|
@@ -2202,12 +2293,12 @@ function recordFacts(value3) {
|
|
|
2202
2293
|
const organizer = value3.organizer;
|
|
2203
2294
|
const address = isPlainObject(organizer.emailAddress) ? lower(organizer.emailAddress.address) : lower(organizer.email);
|
|
2204
2295
|
if (address) {
|
|
2205
|
-
|
|
2296
|
+
isRecord32 = true;
|
|
2206
2297
|
senders.push(address);
|
|
2207
2298
|
}
|
|
2208
2299
|
}
|
|
2209
2300
|
if (Array.isArray(value3.categories)) {
|
|
2210
|
-
|
|
2301
|
+
isRecord32 = true;
|
|
2211
2302
|
for (const category of value3.categories) labels.push(...idOrName(category));
|
|
2212
2303
|
}
|
|
2213
2304
|
if (isPlainObject(value3.from)) {
|
|
@@ -2218,13 +2309,13 @@ function recordFacts(value3) {
|
|
|
2218
2309
|
]) {
|
|
2219
2310
|
const identity = value3.from[key];
|
|
2220
2311
|
if (!isPlainObject(identity)) continue;
|
|
2221
|
-
|
|
2312
|
+
isRecord32 = true;
|
|
2222
2313
|
const id2 = lower(identity.id);
|
|
2223
2314
|
if (id2) senders.push(id2);
|
|
2224
2315
|
}
|
|
2225
2316
|
}
|
|
2226
2317
|
if (isPlainObject(value3.channelIdentity)) {
|
|
2227
|
-
|
|
2318
|
+
isRecord32 = true;
|
|
2228
2319
|
for (const key of [
|
|
2229
2320
|
"channelId",
|
|
2230
2321
|
"teamId"
|
|
@@ -2234,21 +2325,21 @@ function recordFacts(value3) {
|
|
|
2234
2325
|
}
|
|
2235
2326
|
}
|
|
2236
2327
|
if (typeof value3.chatId === "string") {
|
|
2237
|
-
|
|
2328
|
+
isRecord32 = true;
|
|
2238
2329
|
labels.push(...idOrName(value3.chatId));
|
|
2239
2330
|
}
|
|
2240
2331
|
if (typeof value3.parentFolderId === "string") {
|
|
2241
|
-
|
|
2332
|
+
isRecord32 = true;
|
|
2242
2333
|
labels.push(...idOrName(value3.parentFolderId));
|
|
2243
2334
|
}
|
|
2244
2335
|
let gmailSenderUnknown = false;
|
|
2245
2336
|
const gmailMessage = typeof value3.threadId === "string" && (Array.isArray(value3.labelIds) || "payload" in value3 || "raw" in value3) || isPlainObject(value3.payload) && Array.isArray(value3.payload.headers);
|
|
2246
2337
|
if (Array.isArray(value3.labelIds)) {
|
|
2247
|
-
|
|
2338
|
+
isRecord32 = true;
|
|
2248
2339
|
for (const id2 of value3.labelIds) labels.push(...idOrName(id2));
|
|
2249
2340
|
}
|
|
2250
2341
|
if (gmailMessage) {
|
|
2251
|
-
|
|
2342
|
+
isRecord32 = true;
|
|
2252
2343
|
const headers = isPlainObject(value3.payload) && Array.isArray(value3.payload.headers) ? value3.payload.headers : [];
|
|
2253
2344
|
const from = headers.find((header) => isPlainObject(header) && lower(header.name) === "from");
|
|
2254
2345
|
const fromAddresses = addresses(from?.value);
|
|
@@ -2256,11 +2347,11 @@ function recordFacts(value3) {
|
|
|
2256
2347
|
else gmailSenderUnknown = true;
|
|
2257
2348
|
}
|
|
2258
2349
|
if (Array.isArray(value3.labels)) {
|
|
2259
|
-
|
|
2350
|
+
isRecord32 = true;
|
|
2260
2351
|
for (const label of value3.labels) labels.push(...idOrName(label));
|
|
2261
2352
|
}
|
|
2262
2353
|
if (typeof value3.ts === "string" && (typeof value3.user === "string" || typeof value3.bot_id === "string")) {
|
|
2263
|
-
|
|
2354
|
+
isRecord32 = true;
|
|
2264
2355
|
for (const id2 of [
|
|
2265
2356
|
value3.user,
|
|
2266
2357
|
value3.bot_id,
|
|
@@ -2276,7 +2367,7 @@ function recordFacts(value3) {
|
|
|
2276
2367
|
labels.push(...idOrName(value3.channel));
|
|
2277
2368
|
}
|
|
2278
2369
|
return {
|
|
2279
|
-
isRecord:
|
|
2370
|
+
isRecord: isRecord32,
|
|
2280
2371
|
senders,
|
|
2281
2372
|
labels,
|
|
2282
2373
|
gmailSenderUnknown
|
|
@@ -3764,13 +3855,13 @@ function channelSettingsGroups(channel, config) {
|
|
|
3764
3855
|
const groups = [];
|
|
3765
3856
|
for (const def of channelSettingDefinitions(channel, config)) {
|
|
3766
3857
|
const { tunableDefault: _tunable, ...shown } = def;
|
|
3767
|
-
const
|
|
3858
|
+
const unavailable3 = channelSettingUnavailable(channel, def);
|
|
3768
3859
|
const view = {
|
|
3769
3860
|
...shown,
|
|
3770
3861
|
...effectiveChannelSetting(channel, def),
|
|
3771
3862
|
resettable: channelSettingResettable(def),
|
|
3772
|
-
...
|
|
3773
|
-
unavailable:
|
|
3863
|
+
...unavailable3 && {
|
|
3864
|
+
unavailable: unavailable3
|
|
3774
3865
|
}
|
|
3775
3866
|
};
|
|
3776
3867
|
const group = groups.find((candidate) => candidate.key === def.group);
|
|
@@ -4164,6 +4255,36 @@ function mutationWithoutWorkItems(mutation) {
|
|
|
4164
4255
|
} : {}
|
|
4165
4256
|
};
|
|
4166
4257
|
}
|
|
4258
|
+
function isServerTriggeredBrowserSource(logSource) {
|
|
4259
|
+
return SERVER_TRIGGERED_BROWSER_SOURCES.includes(logSource);
|
|
4260
|
+
}
|
|
4261
|
+
function resolveBrowserFallback(raw) {
|
|
4262
|
+
return BROWSER_FALLBACKS.includes(raw) ? raw : DEFAULT_BROWSER_FALLBACK;
|
|
4263
|
+
}
|
|
4264
|
+
function resolveBrowserProxyCountry(raw) {
|
|
4265
|
+
if (typeof raw !== "string") return void 0;
|
|
4266
|
+
const code = raw.trim().toLowerCase();
|
|
4267
|
+
return PROXY_COUNTRY_CODE.test(code) ? code : void 0;
|
|
4268
|
+
}
|
|
4269
|
+
function resolveBrowserLogOptions(raw) {
|
|
4270
|
+
const logContent = BROWSER_LOG_CONTENT_MODES.includes(raw.logContent) ? raw.logContent : DEFAULT_BROWSER_LOG_CONTENT;
|
|
4271
|
+
const screenshots = BROWSER_SCREENSHOT_POLICIES.includes(raw.screenshots) ? raw.screenshots : DEFAULT_BROWSER_SCREENSHOT_POLICY;
|
|
4272
|
+
return {
|
|
4273
|
+
logContent,
|
|
4274
|
+
screenshots
|
|
4275
|
+
};
|
|
4276
|
+
}
|
|
4277
|
+
function browserProfileNotFoundMessage(name) {
|
|
4278
|
+
return `No browser named '${name}' is attached to this agent. Add it to the agent's \`browsers\` list and push again.`;
|
|
4279
|
+
}
|
|
4280
|
+
function resolveBrowserLimits(pick) {
|
|
4281
|
+
const limits = {};
|
|
4282
|
+
for (const key of BROWSER_LIMIT_KEYS) {
|
|
4283
|
+
const value3 = pick(key);
|
|
4284
|
+
if (typeof value3 === "number" && Number.isInteger(value3) && value3 > 0) limits[key] = value3;
|
|
4285
|
+
}
|
|
4286
|
+
return limits;
|
|
4287
|
+
}
|
|
4167
4288
|
function utf8WidthAt(value3, index) {
|
|
4168
4289
|
const code = value3.charCodeAt(index);
|
|
4169
4290
|
if (code < 128) return {
|
|
@@ -4319,6 +4440,338 @@ function isDesktopFileCommandName(value3) {
|
|
|
4319
4440
|
function isDesktopFileSessionId(value3) {
|
|
4320
4441
|
return typeof value3 === "string" && /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(value3);
|
|
4321
4442
|
}
|
|
4443
|
+
function browserError(code, message, status) {
|
|
4444
|
+
return Object.assign(new Error(message), {
|
|
4445
|
+
name: BROWSER_ERROR_NAME,
|
|
4446
|
+
code,
|
|
4447
|
+
...typeof status === "number" ? {
|
|
4448
|
+
status
|
|
4449
|
+
} : {}
|
|
4450
|
+
});
|
|
4451
|
+
}
|
|
4452
|
+
function isRecord(value3) {
|
|
4453
|
+
return typeof value3 === "object" && value3 !== null && !Array.isArray(value3);
|
|
4454
|
+
}
|
|
4455
|
+
function optionalString(raw, field) {
|
|
4456
|
+
const value3 = raw[field];
|
|
4457
|
+
if (value3 === void 0 || value3 === null || value3 === "") return void 0;
|
|
4458
|
+
if (typeof value3 !== "string") throw new TypeError(`${field} must be a string`);
|
|
4459
|
+
if (value3.startsWith("-")) throw new TypeError(`${field} may not start with '-'`);
|
|
4460
|
+
if (value3.includes("\0")) throw new TypeError(`${field} may not contain NUL`);
|
|
4461
|
+
return value3;
|
|
4462
|
+
}
|
|
4463
|
+
function readUrl(value3) {
|
|
4464
|
+
if (typeof value3 !== "string" || !/^https?:\/\//i.test(value3.trim()) || value3.includes("\0")) {
|
|
4465
|
+
throw new TypeError("url must be an absolute http(s) URL");
|
|
4466
|
+
}
|
|
4467
|
+
return value3.trim();
|
|
4468
|
+
}
|
|
4469
|
+
function readFormat(value3) {
|
|
4470
|
+
if (value3 === void 0 || value3 === null || value3 === "") return "text";
|
|
4471
|
+
if (!BROWSER_READ_FORMATS.includes(value3)) {
|
|
4472
|
+
throw new TypeError(`format must be one of: ${BROWSER_READ_FORMATS.join(", ")}`);
|
|
4473
|
+
}
|
|
4474
|
+
return value3;
|
|
4475
|
+
}
|
|
4476
|
+
function readTimeout(value3) {
|
|
4477
|
+
if (value3 === void 0 || value3 === null) return BROWSER_READ_DEFAULT_TIMEOUT_MS;
|
|
4478
|
+
if (typeof value3 !== "number" || !Number.isFinite(value3)) throw new TypeError("timeoutMs must be a number");
|
|
4479
|
+
return Math.min(BROWSER_READ_MAX_TIMEOUT_MS, Math.max(BROWSER_READ_MIN_TIMEOUT_MS, Math.round(value3)));
|
|
4480
|
+
}
|
|
4481
|
+
function parseBrowserReadPayload(raw) {
|
|
4482
|
+
try {
|
|
4483
|
+
const input = isRecord(raw) ? raw : {};
|
|
4484
|
+
const waitFor = optionalString(input, "waitFor");
|
|
4485
|
+
return {
|
|
4486
|
+
payload: {
|
|
4487
|
+
url: readUrl(input.url),
|
|
4488
|
+
...waitFor ? {
|
|
4489
|
+
waitFor
|
|
4490
|
+
} : {},
|
|
4491
|
+
selector: optionalString(input, "selector") ?? BROWSER_READ_DEFAULT_SELECTOR,
|
|
4492
|
+
format: readFormat(input.format),
|
|
4493
|
+
timeoutMs: readTimeout(input.timeoutMs)
|
|
4494
|
+
}
|
|
4495
|
+
};
|
|
4496
|
+
} catch (error) {
|
|
4497
|
+
return {
|
|
4498
|
+
error: {
|
|
4499
|
+
code: "invalid_argument",
|
|
4500
|
+
message: `read: ${error.message}`
|
|
4501
|
+
}
|
|
4502
|
+
};
|
|
4503
|
+
}
|
|
4504
|
+
}
|
|
4505
|
+
function clampBrowserReadContent(content, maxChars = BROWSER_READ_MAX_CONTENT_CHARS) {
|
|
4506
|
+
if (content.length <= maxChars) return {
|
|
4507
|
+
content,
|
|
4508
|
+
truncated: false
|
|
4509
|
+
};
|
|
4510
|
+
return {
|
|
4511
|
+
content: content.slice(0, maxChars),
|
|
4512
|
+
truncated: true
|
|
4513
|
+
};
|
|
4514
|
+
}
|
|
4515
|
+
function joinBrowserReadMatches(parts, maxChars = BROWSER_READ_MAX_CONTENT_CHARS) {
|
|
4516
|
+
const kept = parts.map((part) => part.trim()).filter((part) => part.length > 0);
|
|
4517
|
+
return clampBrowserReadContent(kept.join(BROWSER_READ_MATCH_SEPARATOR), maxChars);
|
|
4518
|
+
}
|
|
4519
|
+
function isBrowserReadHttpFailure(message) {
|
|
4520
|
+
return HTTP_STATUS_FAILURE.test(message ?? "");
|
|
4521
|
+
}
|
|
4522
|
+
function browserReadHttpErrorMessage(url, status) {
|
|
4523
|
+
const answered = status === void 0 ? "an HTTP error status" : `HTTP ${status}`;
|
|
4524
|
+
return `read: ${url} answered ${answered} with no page to read`;
|
|
4525
|
+
}
|
|
4526
|
+
function urlOf(value3) {
|
|
4527
|
+
if (!value3) return void 0;
|
|
4528
|
+
try {
|
|
4529
|
+
return new URL(value3);
|
|
4530
|
+
} catch {
|
|
4531
|
+
return void 0;
|
|
4532
|
+
}
|
|
4533
|
+
}
|
|
4534
|
+
function answeredDocuments(requests) {
|
|
4535
|
+
if (!Array.isArray(requests)) return [];
|
|
4536
|
+
const answered = [];
|
|
4537
|
+
for (const entry of requests) {
|
|
4538
|
+
if (!isRecord(entry) || typeof entry.status !== "number" || typeof entry.url !== "string") continue;
|
|
4539
|
+
const url = urlOf(entry.url);
|
|
4540
|
+
if (url) answered.unshift({
|
|
4541
|
+
url,
|
|
4542
|
+
status: entry.status
|
|
4543
|
+
});
|
|
4544
|
+
}
|
|
4545
|
+
return answered;
|
|
4546
|
+
}
|
|
4547
|
+
function documentStatusOf(requests, requestedUrl, finalUrl) {
|
|
4548
|
+
const latestFirst = answeredDocuments(requests);
|
|
4549
|
+
const final = urlOf(finalUrl);
|
|
4550
|
+
const requested = urlOf(requestedUrl);
|
|
4551
|
+
const match = latestFirst.find((doc) => doc.url.href === final?.href) ?? latestFirst.find((doc) => doc.url.href === requested?.href) ?? latestFirst.find((doc) => doc.url.host === final?.host);
|
|
4552
|
+
return match?.status;
|
|
4553
|
+
}
|
|
4554
|
+
function isLoginUrl(url) {
|
|
4555
|
+
const segments = url.pathname.toLowerCase().split("/");
|
|
4556
|
+
return segments.some((segment) => LOGIN_PATH_SEGMENTS.has(segment)) || LOGIN_HOST_LABELS.has(url.hostname.split(".")[0]);
|
|
4557
|
+
}
|
|
4558
|
+
function isLoginRedirect(requestedUrl, finalUrl) {
|
|
4559
|
+
const requested = urlOf(requestedUrl);
|
|
4560
|
+
const final = urlOf(finalUrl);
|
|
4561
|
+
return Boolean(requested && final && !isLoginUrl(requested) && isLoginUrl(final));
|
|
4562
|
+
}
|
|
4563
|
+
function browserReadLoginBlock() {
|
|
4564
|
+
return {
|
|
4565
|
+
blocked: true,
|
|
4566
|
+
blocker: BROWSER_READ_LOGIN_BLOCKER,
|
|
4567
|
+
blockerKind: "login",
|
|
4568
|
+
blockerGuidance: "This URL redirected to a sign-in page, so the content is the sign-in form, not the page you asked for. The page needs a signed-in session: read it on the desktop browser where the user is signed in, or use a public URL."
|
|
4569
|
+
};
|
|
4570
|
+
}
|
|
4571
|
+
function utf8Bytes(value3) {
|
|
4572
|
+
let bytes = 0;
|
|
4573
|
+
for (let i = 0; i < value3.length; ) {
|
|
4574
|
+
const code = value3.charCodeAt(i);
|
|
4575
|
+
if (code < 128) {
|
|
4576
|
+
bytes += 1;
|
|
4577
|
+
i += 1;
|
|
4578
|
+
} else if (code < 2048) {
|
|
4579
|
+
bytes += 2;
|
|
4580
|
+
i += 1;
|
|
4581
|
+
} else if (code >= 55296 && code <= 56319) {
|
|
4582
|
+
const next = value3.charCodeAt(i + 1);
|
|
4583
|
+
if (next >= 56320 && next <= 57343) {
|
|
4584
|
+
bytes += 4;
|
|
4585
|
+
i += 2;
|
|
4586
|
+
} else {
|
|
4587
|
+
bytes += 3;
|
|
4588
|
+
i += 1;
|
|
4589
|
+
}
|
|
4590
|
+
} else {
|
|
4591
|
+
bytes += 3;
|
|
4592
|
+
i += 1;
|
|
4593
|
+
}
|
|
4594
|
+
}
|
|
4595
|
+
return bytes;
|
|
4596
|
+
}
|
|
4597
|
+
function isPlainFieldKey(key) {
|
|
4598
|
+
if (!LOG_FIELD_KEY_PATTERN.test(key)) return false;
|
|
4599
|
+
if (key === LOG_FIELDS_CLAMPED_KEY) return false;
|
|
4600
|
+
return !LOG_FIELD_SECRET_SHAPED_KEY_PATTERNS.some((pattern) => pattern.test(key));
|
|
4601
|
+
}
|
|
4602
|
+
function describeAgentLogFieldsViolation(value3) {
|
|
4603
|
+
if (typeof value3 !== "object" || value3 === null || Array.isArray(value3)) {
|
|
4604
|
+
return "fields must be an object";
|
|
4605
|
+
}
|
|
4606
|
+
const entries = Object.entries(value3);
|
|
4607
|
+
let userKeys = 0;
|
|
4608
|
+
for (const [key, entry] of entries) {
|
|
4609
|
+
if (key === LOG_FIELDS_CLAMPED_KEY) {
|
|
4610
|
+
if (entry !== true) return `fields.${key} must be true`;
|
|
4611
|
+
continue;
|
|
4612
|
+
}
|
|
4613
|
+
userKeys += 1;
|
|
4614
|
+
if (key.endsWith(LOG_FIELD_ARRAY_COUNT_SUFFIX)) {
|
|
4615
|
+
const base = key.slice(0, -LOG_FIELD_ARRAY_COUNT_SUFFIX.length);
|
|
4616
|
+
if (!isPlainFieldKey(base)) return `fields key \`${key}\` is not a legal field key`;
|
|
4617
|
+
if (typeof entry !== "number" || !Number.isFinite(entry)) {
|
|
4618
|
+
return `fields.${key} must be a finite number`;
|
|
4619
|
+
}
|
|
4620
|
+
continue;
|
|
4621
|
+
}
|
|
4622
|
+
if (!isPlainFieldKey(key)) return `fields key \`${key}\` is not a legal field key`;
|
|
4623
|
+
if (typeof entry === "string") {
|
|
4624
|
+
if (utf8Bytes(entry) > LOG_FIELD_MAX_VALUE_BYTES) {
|
|
4625
|
+
return `fields.${key} exceeds ${LOG_FIELD_MAX_VALUE_BYTES} bytes`;
|
|
4626
|
+
}
|
|
4627
|
+
continue;
|
|
4628
|
+
}
|
|
4629
|
+
if (typeof entry === "boolean") continue;
|
|
4630
|
+
if (typeof entry === "number") {
|
|
4631
|
+
if (!Number.isFinite(entry)) return `fields.${key} must be a finite number`;
|
|
4632
|
+
continue;
|
|
4633
|
+
}
|
|
4634
|
+
return `fields.${key} must be a string, number or boolean`;
|
|
4635
|
+
}
|
|
4636
|
+
if (userKeys > LOG_FIELDS_MAX_KEYS) {
|
|
4637
|
+
return `fields has ${userKeys} keys, over the cap of ${LOG_FIELDS_MAX_KEYS}`;
|
|
4638
|
+
}
|
|
4639
|
+
if (utf8Bytes(JSON.stringify(value3)) > LOG_FIELDS_MAX_BYTES) {
|
|
4640
|
+
return `fields exceeds ${LOG_FIELDS_MAX_BYTES} bytes`;
|
|
4641
|
+
}
|
|
4642
|
+
return void 0;
|
|
4643
|
+
}
|
|
4644
|
+
function isAgentLogFields(value3) {
|
|
4645
|
+
return describeAgentLogFieldsViolation(value3) === void 0;
|
|
4646
|
+
}
|
|
4647
|
+
function describeBaseViolation(event) {
|
|
4648
|
+
if (!BROWSER_LOG_EVENT_KINDS.includes(event.event)) return "event is not a known kind";
|
|
4649
|
+
if (typeof event.sessionId !== "string" || event.sessionId.length === 0) return "sessionId must be a string";
|
|
4650
|
+
if (event.sessionId.length > BROWSER_LOG_ID_MAX_CHARS) return "sessionId is too long";
|
|
4651
|
+
if (!BROWSER_LOG_ENGINES.includes(event.engine)) return "engine is not a known engine";
|
|
4652
|
+
if (typeof event.at !== "string" || Number.isNaN(Date.parse(event.at))) return "at must be an ISO timestamp";
|
|
4653
|
+
return void 0;
|
|
4654
|
+
}
|
|
4655
|
+
function describeFieldViolation(key, value3, check) {
|
|
4656
|
+
if (!check) return `${key} is not a field of this event`;
|
|
4657
|
+
if (!check(value3)) return `${key} has the wrong type`;
|
|
4658
|
+
if (typeof value3 === "string" && value3.length > BROWSER_LOG_TEXT_MAX_CHARS) return `${key} is too long`;
|
|
4659
|
+
return void 0;
|
|
4660
|
+
}
|
|
4661
|
+
function describeBrowserLogEventViolation(value3) {
|
|
4662
|
+
if (!isPlainObject2(value3)) return "event must be an object";
|
|
4663
|
+
const event = value3;
|
|
4664
|
+
const base = describeBaseViolation(event);
|
|
4665
|
+
if (base) return base;
|
|
4666
|
+
const shape = EVENT_SHAPES[event.event];
|
|
4667
|
+
for (const key of Object.keys(shape.required)) {
|
|
4668
|
+
if (event[key] === void 0) return `${key} is required`;
|
|
4669
|
+
}
|
|
4670
|
+
for (const [key, entry] of Object.entries(event)) {
|
|
4671
|
+
if (BASE_KEYS.has(key) || entry === void 0) continue;
|
|
4672
|
+
const violation = describeFieldViolation(key, entry, shape.required[key] ?? shape.optional[key]);
|
|
4673
|
+
if (violation) return violation;
|
|
4674
|
+
}
|
|
4675
|
+
return void 0;
|
|
4676
|
+
}
|
|
4677
|
+
function isBrowserLogEvent(value3) {
|
|
4678
|
+
return describeBrowserLogEventViolation(value3) === void 0;
|
|
4679
|
+
}
|
|
4680
|
+
function describeBrowserLogContextViolation(value3) {
|
|
4681
|
+
if (value3 === void 0) return void 0;
|
|
4682
|
+
if (!isPlainObject2(value3)) return "logContext must be an object";
|
|
4683
|
+
for (const [key, entry] of Object.entries(value3)) {
|
|
4684
|
+
if (!BROWSER_LOG_CONTEXT_KEYS.includes(key)) return `logContext.${key} is not allowed`;
|
|
4685
|
+
if (entry === void 0) continue;
|
|
4686
|
+
if (typeof entry !== "string") return `logContext.${key} must be a string`;
|
|
4687
|
+
if (entry.length > BROWSER_LOG_ID_MAX_CHARS) return `logContext.${key} is too long`;
|
|
4688
|
+
if (key === "environment" && !AGENT_LOG_ENVIRONMENTS.includes(entry)) {
|
|
4689
|
+
return "logContext.environment is not a known environment";
|
|
4690
|
+
}
|
|
4691
|
+
}
|
|
4692
|
+
return void 0;
|
|
4693
|
+
}
|
|
4694
|
+
function browserWorkerSessionId(ref) {
|
|
4695
|
+
return [
|
|
4696
|
+
ref.agentId,
|
|
4697
|
+
ref.userId,
|
|
4698
|
+
ref.sessionKey
|
|
4699
|
+
].join(BROWSER_WORKER_SESSION_ID_SEPARATOR);
|
|
4700
|
+
}
|
|
4701
|
+
function browserLogContextOfWorkerContext(context) {
|
|
4702
|
+
const out = {};
|
|
4703
|
+
if (context?.runId) out.runId = context.runId;
|
|
4704
|
+
if (context?.primitiveId) out.primitiveId = context.primitiveId;
|
|
4705
|
+
if (context?.primitiveName) out.primitiveName = context.primitiveName;
|
|
4706
|
+
if (context?.channel) out.channel = context.channel;
|
|
4707
|
+
return out;
|
|
4708
|
+
}
|
|
4709
|
+
function browserLogEventOfWorkerEvent(event, mapping = {}) {
|
|
4710
|
+
const base = {
|
|
4711
|
+
sessionId: mapping.sessionId ?? event.sessionId,
|
|
4712
|
+
engine: "agent-browser",
|
|
4713
|
+
at: event.at
|
|
4714
|
+
};
|
|
4715
|
+
switch (event.event) {
|
|
4716
|
+
case "session.opened":
|
|
4717
|
+
return {
|
|
4718
|
+
...base,
|
|
4719
|
+
event: "session.opened",
|
|
4720
|
+
reason: mapping.reason ?? "stepwise-cloud",
|
|
4721
|
+
limits: {
|
|
4722
|
+
...event.limits
|
|
4723
|
+
}
|
|
4724
|
+
};
|
|
4725
|
+
case "session.closed":
|
|
4726
|
+
return {
|
|
4727
|
+
...base,
|
|
4728
|
+
event: "session.closed",
|
|
4729
|
+
reason: event.reason,
|
|
4730
|
+
durationMs: event.durationMs,
|
|
4731
|
+
pagesVisited: event.pagesVisited,
|
|
4732
|
+
bytes: event.bytes
|
|
4733
|
+
};
|
|
4734
|
+
case "command":
|
|
4735
|
+
return {
|
|
4736
|
+
...base,
|
|
4737
|
+
event: "command",
|
|
4738
|
+
name: event.name,
|
|
4739
|
+
ok: event.ok,
|
|
4740
|
+
durationMs: event.durationMs,
|
|
4741
|
+
resultBytes: event.resultBytes,
|
|
4742
|
+
urlAfter: event.urlAfter,
|
|
4743
|
+
title: event.title,
|
|
4744
|
+
errorCode: event.errorCode,
|
|
4745
|
+
errorMessage: event.errorMessage
|
|
4746
|
+
};
|
|
4747
|
+
case "navigation":
|
|
4748
|
+
if (!event.ok) return void 0;
|
|
4749
|
+
return {
|
|
4750
|
+
...base,
|
|
4751
|
+
event: "navigation",
|
|
4752
|
+
url: event.url,
|
|
4753
|
+
finalUrl: event.finalUrl
|
|
4754
|
+
};
|
|
4755
|
+
case "blocked":
|
|
4756
|
+
return {
|
|
4757
|
+
...base,
|
|
4758
|
+
event: "blocked",
|
|
4759
|
+
kind: event.kind,
|
|
4760
|
+
rule: event.rule,
|
|
4761
|
+
target: event.target,
|
|
4762
|
+
command: event.command,
|
|
4763
|
+
reason: event.detail ? event.detail.slice(0, BROWSER_WORKER_BLOCK_REASON_MAX_CHARS) : void 0
|
|
4764
|
+
};
|
|
4765
|
+
case "wall":
|
|
4766
|
+
return {
|
|
4767
|
+
...base,
|
|
4768
|
+
event: "wall",
|
|
4769
|
+
kind: event.kind,
|
|
4770
|
+
url: event.url,
|
|
4771
|
+
nextAction: event.nextAction
|
|
4772
|
+
};
|
|
4773
|
+
}
|
|
4774
|
+
}
|
|
4322
4775
|
function workflowRetryMaxAttemptsMessage(got) {
|
|
4323
4776
|
const tail = got === void 0 ? "" : ` (got ${JSON.stringify(got)})`;
|
|
4324
4777
|
return `\`retry.maxAttempts\` must be an integer ${WORKFLOW_RETRY_MIN_ATTEMPTS}..${WORKFLOW_RETRY_MAX_ATTEMPTS}${tail}`;
|
|
@@ -4532,98 +4985,22 @@ function buildDefaultPersona(agentName) {
|
|
|
4532
4985
|
function buildPersonalSpaceStartingPersona(agentName) {
|
|
4533
4986
|
return PERSONAL_SPACE_STARTING_PERSONA.replace(new RegExp(AGENT_NAME_TOKEN.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), "g"), () => agentName || "Your assistant");
|
|
4534
4987
|
}
|
|
4535
|
-
function
|
|
4536
|
-
|
|
4537
|
-
for (let i = 0; i < value3.length; ) {
|
|
4538
|
-
const code = value3.charCodeAt(i);
|
|
4539
|
-
if (code < 128) {
|
|
4540
|
-
bytes += 1;
|
|
4541
|
-
i += 1;
|
|
4542
|
-
} else if (code < 2048) {
|
|
4543
|
-
bytes += 2;
|
|
4544
|
-
i += 1;
|
|
4545
|
-
} else if (code >= 55296 && code <= 56319) {
|
|
4546
|
-
const next = value3.charCodeAt(i + 1);
|
|
4547
|
-
if (next >= 56320 && next <= 57343) {
|
|
4548
|
-
bytes += 4;
|
|
4549
|
-
i += 2;
|
|
4550
|
-
} else {
|
|
4551
|
-
bytes += 3;
|
|
4552
|
-
i += 1;
|
|
4553
|
-
}
|
|
4554
|
-
} else {
|
|
4555
|
-
bytes += 3;
|
|
4556
|
-
i += 1;
|
|
4557
|
-
}
|
|
4558
|
-
}
|
|
4559
|
-
return bytes;
|
|
4988
|
+
function maxDrainsForTier(tier) {
|
|
4989
|
+
return tier === "enterprise" ? LOG_DRAIN_MAX_PER_ORG_ENTERPRISE : LOG_DRAIN_MAX_PER_ORG;
|
|
4560
4990
|
}
|
|
4561
|
-
function
|
|
4562
|
-
|
|
4563
|
-
if (
|
|
4564
|
-
return
|
|
4991
|
+
function resolvePresetEndpoint(type, site) {
|
|
4992
|
+
const template3 = LOG_DRAIN_ENDPOINT_TEMPLATES[type];
|
|
4993
|
+
if (!template3 || !site) return void 0;
|
|
4994
|
+
return template3.replace("{site}", site);
|
|
4565
4995
|
}
|
|
4566
|
-
function
|
|
4567
|
-
|
|
4568
|
-
|
|
4569
|
-
|
|
4570
|
-
|
|
4571
|
-
|
|
4572
|
-
|
|
4573
|
-
|
|
4574
|
-
if (entry !== true) return `fields.${key} must be true`;
|
|
4575
|
-
continue;
|
|
4576
|
-
}
|
|
4577
|
-
userKeys += 1;
|
|
4578
|
-
if (key.endsWith(LOG_FIELD_ARRAY_COUNT_SUFFIX)) {
|
|
4579
|
-
const base = key.slice(0, -LOG_FIELD_ARRAY_COUNT_SUFFIX.length);
|
|
4580
|
-
if (!isPlainFieldKey(base)) return `fields key \`${key}\` is not a legal field key`;
|
|
4581
|
-
if (typeof entry !== "number" || !Number.isFinite(entry)) {
|
|
4582
|
-
return `fields.${key} must be a finite number`;
|
|
4583
|
-
}
|
|
4584
|
-
continue;
|
|
4585
|
-
}
|
|
4586
|
-
if (!isPlainFieldKey(key)) return `fields key \`${key}\` is not a legal field key`;
|
|
4587
|
-
if (typeof entry === "string") {
|
|
4588
|
-
if (utf8Bytes(entry) > LOG_FIELD_MAX_VALUE_BYTES) {
|
|
4589
|
-
return `fields.${key} exceeds ${LOG_FIELD_MAX_VALUE_BYTES} bytes`;
|
|
4590
|
-
}
|
|
4591
|
-
continue;
|
|
4592
|
-
}
|
|
4593
|
-
if (typeof entry === "boolean") continue;
|
|
4594
|
-
if (typeof entry === "number") {
|
|
4595
|
-
if (!Number.isFinite(entry)) return `fields.${key} must be a finite number`;
|
|
4596
|
-
continue;
|
|
4597
|
-
}
|
|
4598
|
-
return `fields.${key} must be a string, number or boolean`;
|
|
4599
|
-
}
|
|
4600
|
-
if (userKeys > LOG_FIELDS_MAX_KEYS) {
|
|
4601
|
-
return `fields has ${userKeys} keys, over the cap of ${LOG_FIELDS_MAX_KEYS}`;
|
|
4602
|
-
}
|
|
4603
|
-
if (utf8Bytes(JSON.stringify(value3)) > LOG_FIELDS_MAX_BYTES) {
|
|
4604
|
-
return `fields exceeds ${LOG_FIELDS_MAX_BYTES} bytes`;
|
|
4605
|
-
}
|
|
4606
|
-
return void 0;
|
|
4607
|
-
}
|
|
4608
|
-
function isAgentLogFields(value3) {
|
|
4609
|
-
return describeAgentLogFieldsViolation(value3) === void 0;
|
|
4610
|
-
}
|
|
4611
|
-
function maxDrainsForTier(tier) {
|
|
4612
|
-
return tier === "enterprise" ? LOG_DRAIN_MAX_PER_ORG_ENTERPRISE : LOG_DRAIN_MAX_PER_ORG;
|
|
4613
|
-
}
|
|
4614
|
-
function resolvePresetEndpoint(type, site) {
|
|
4615
|
-
const template3 = LOG_DRAIN_ENDPOINT_TEMPLATES[type];
|
|
4616
|
-
if (!template3 || !site) return void 0;
|
|
4617
|
-
return template3.replace("{site}", site);
|
|
4618
|
-
}
|
|
4619
|
-
function isLogDrainBucketHostAllowed(provider, host) {
|
|
4620
|
-
const normalized = host.trim().toLowerCase().replace(/^\[|\]$/g, "");
|
|
4621
|
-
if (!normalized) return false;
|
|
4622
|
-
return (LOG_DRAIN_BUCKET_HOST_PATTERNS[provider] ?? []).some((pattern) => pattern.test(normalized));
|
|
4623
|
-
}
|
|
4624
|
-
function resolveDrainBucketEndpoint(bucket) {
|
|
4625
|
-
if (!LOG_DRAIN_BUCKET_NAME_PATTERN.test(bucket.bucket)) {
|
|
4626
|
-
throw new Error("log drain bucket name is not a valid S3 bucket label");
|
|
4996
|
+
function isLogDrainBucketHostAllowed(provider, host) {
|
|
4997
|
+
const normalized = host.trim().toLowerCase().replace(/^\[|\]$/g, "");
|
|
4998
|
+
if (!normalized) return false;
|
|
4999
|
+
return (LOG_DRAIN_BUCKET_HOST_PATTERNS[provider] ?? []).some((pattern) => pattern.test(normalized));
|
|
5000
|
+
}
|
|
5001
|
+
function resolveDrainBucketEndpoint(bucket) {
|
|
5002
|
+
if (!LOG_DRAIN_BUCKET_NAME_PATTERN.test(bucket.bucket)) {
|
|
5003
|
+
throw new Error("log drain bucket name is not a valid S3 bucket label");
|
|
4627
5004
|
}
|
|
4628
5005
|
if (bucket.provider === "aws") {
|
|
4629
5006
|
const region = bucket.region.trim().toLowerCase();
|
|
@@ -5103,11 +5480,11 @@ function parseLogTimeBound(raw, now = /* @__PURE__ */ new Date()) {
|
|
|
5103
5480
|
const at = Date.parse(value3);
|
|
5104
5481
|
return Number.isNaN(at) ? null : new Date(at);
|
|
5105
5482
|
}
|
|
5106
|
-
function
|
|
5483
|
+
function isRecord2(value3) {
|
|
5107
5484
|
return typeof value3 === "object" && value3 !== null;
|
|
5108
5485
|
}
|
|
5109
5486
|
function isCoreDrainingErrorResponse(value3) {
|
|
5110
|
-
if (!
|
|
5487
|
+
if (!isRecord2(value3) || !isRecord2(value3.error)) return false;
|
|
5111
5488
|
return value3.error.code === CORE_DRAINING_CODE && typeof value3.error.message === "string" && value3.error.retryable === true;
|
|
5112
5489
|
}
|
|
5113
5490
|
function coreDrainingRetryDelayMs(retryAfter, nowMs = Date.now()) {
|
|
@@ -6304,11 +6681,11 @@ function recentRefs(lists) {
|
|
|
6304
6681
|
function confidenceOf(n2) {
|
|
6305
6682
|
return n2 < EVIDENCE_LOW_CONFIDENCE_N ? "low" : "ok";
|
|
6306
6683
|
}
|
|
6307
|
-
function rateOf(
|
|
6684
|
+
function rateOf(count2, conversations) {
|
|
6308
6685
|
return {
|
|
6309
|
-
count,
|
|
6310
|
-
rate: conversations > 0 ?
|
|
6311
|
-
confidence: confidenceOf(
|
|
6686
|
+
count: count2,
|
|
6687
|
+
rate: conversations > 0 ? count2 / conversations : null,
|
|
6688
|
+
confidence: confidenceOf(count2)
|
|
6312
6689
|
};
|
|
6313
6690
|
}
|
|
6314
6691
|
function evidenceDays(from, to) {
|
|
@@ -7130,7 +7507,7 @@ function maskMcpServerHeaders(server) {
|
|
|
7130
7507
|
headersSet: headerNames.length > 0
|
|
7131
7508
|
};
|
|
7132
7509
|
}
|
|
7133
|
-
var __defProp4, __name4, PLUMBING_THREAD_CHANNELS, CHANNEL_CONVERSATION_CHANNELS, HIDDEN_THREAD_CHANNELS, CHOICE_PERSON_TURN_CHANNELS, CHOICE_REPLAY_CLIENT_CAPABILITIES, CHOICE_REPLAY_CLIENT_SURFACES, DECISION_PROVIDERS, DECISION_QUESTION_TYPES, DECISION_NAME_PATTERN, DECISION_LIMITS, DECISION_ERROR_CODES, MAX_NAME_CHARS, InstructionsSchema, NameSchema, OddsQuestionSchema, ChoiceQuestionSchema, ScoreQuestionSchema, DecisionQuestionSchema, DecisionOptionsSchema, DecisionQuestionsSchema, DecisionDefinitionSchema, INTEGRATION_PASSTHROUGH_READ_METHODS, URL_REINTERPRETED_PATH_CHARACTERS, PERCENT_ENCODED_DOT, PERCENT_ESCAPE, DECODED_PATH_SEPARATORS, DECODED_LEADING_SEPARATOR, MAX_PERCENT_DECODE_ROUNDS, URL_RESOLUTION_PROBE_BASE, PLATFORM_INVOCATION_CALLERS, SUPERVISION_OPS, SUPERVISION_OPS_WAVE2, SUPERVISION_WATCHDOG_OPS, SUPERVISION_WATCHDOG_ERRORS, SUPERVISION_ROLLBACK_REFUSAL_CODES, SUPERVISION_ROLLBACK_LINEAGE_MAX, SUPERVISION_UNTARGETED_OPS, SUPERVISED_WORKFLOW_VERSIONS_MAX, SUPERVISION_EVENT_KINDS, AGENT_PROVISIONING_LIMITS, AGENT_PROVISIONING_APPROVAL_PAYLOAD_KEY, AGENT_PROVISIONING_ERRORS, PROVISIONED_SUPERVISION_ACTIONS, isNonEmptyString, uniqueStrings, sameSet, AGENT_PROVISIONING_APPROVAL_CARD_MAX_CHARS, APPROVAL_PAYLOAD_MEMBERS, AGENT_CONNECTION_POLICIES, AGENT_CONNECTION_POLICY_DEFAULT, AGENT_CONNECTION_MOUNT_MODES, AGENT_CONNECTION_GOVERNANCE_ERRORS, AGENT_CONNECTION_OPERATION_RULES_MAX, AGENT_CONNECTION_OPERATION_PATTERN_MAX_LENGTH, OPERATION_RULE_METHODS, PATH_SEPARATOR, PATH_SINGLE_SEGMENT_WILDCARD, PATH_REST_WILDCARD, METHOD_OVERRIDE_HEADER_NAMES, METHOD_OVERRIDE_QUERY_NAMES, ODATA_BATCH_SEGMENT, GOOGLE_BATCH_FIRST_SEGMENT, CONNECTION_CHECK_RESULTS, CONNECTION_CHECK_CATALOGUE_V1, CONNECTION_CHECK_NAME_PATTERN, CONNECTION_CHECK_NAME_MAX, CONNECT_OUTCOME_STATUSES, SECRET_TEST_RESULTS, SECRET_DATADOG_REGIONS, SECRET_PROVIDER_CATALOGUE_V1, SECRET_TEST_MAX_RESPONSE_BYTES, SECRET_ENV_KEY_PATTERN, SECRET_REQUEST_ERRORS, SECRET_OUTCOME_STATUSES, CLIENT_OUTCOME_TURNS_MAX, SHORT_TEXT_MAX, SLUG_MAX, shortText, optionalShortText, CONNECTION_REQUEST_TERMINAL_STATES, CONNECTION_USE_ORIGINS, AGENT_CONNECTION_OPERATION_LIMITS_BOUNDS, CURRENCY_CODE, LIMITS_KEYS, CAPS_KEYS, EXCLUSIONS_KEYS, EMAIL_IN_TEXT, MAX_EXCLUSION_DEPTH, PROJECTION_PARAMETER_KEYS, CHANNEL_PARAMETER_KEYS, GMAIL_SYSTEM_LABEL_IDS, ZERO_DECIMAL_CURRENCIES, THREE_DECIMAL_CURRENCIES, DECIMAL_AMOUNT, REDACTED_PLACEHOLDER, PROVIDER_MESSAGE_MAX_CHARS, ERROR_MESSAGE_MAX_CHARS, SECRET_LITERAL_PATTERNS, SECRET_NAME, SECRET_PAIR_PATTERNS, GROUP_COUNT, WORKFLOW_SECRET_KEY_RE, WORKFLOW_RESERVED_SECRET_KEYS, SCRUB_INPUT_MAX_CHARS, SCRUB_CUT_BACKOFF_CHARS, TEST_SESSION_ID_PATTERN, TEST_SESSION_COLLECTION_PREFIX, TEST_EFFECT_BODY_MAX_BYTES, TEST_EFFECT_DROPPED_HEADERS, EVAL_CREDITS_PER_1K_TOKENS, EVAL_RESERVED_TOOL_ID_PREFIXES, CONNECTION_HANDOVER_APPROVAL_PAYLOAD_KEY, CONNECTION_HANDOVER_APPROVAL_CARD_MAX_CHARS, CONNECTION_HANDOVER_LIMITS, MEMBERS, FORMAT_CHARS, oneLine, boundedString, AGENT_METRIC_NAME_PATTERN, AGENT_METRIC_LIMITS, AGENT_OBJECTIVE_ERRORS, CHANGE_LEASE_TTL_MINUTES_MIN, CHANGE_LEASE_TTL_MINUTES_MAX, CHANGE_LEASE_REASON_MAX, CHANGE_LEASE_ERRORS, AGENT_CONFIG_SET_LIMITS, SECRET_ENV_KEY_SUFFIXES, DEFAULT_OWNER_DEPARTURE_POLICY, AGENT_LIFECYCLE_ERRORS, USER_COST_COUNTER_TTL_SECONDS, USER_COST_ATTRIBUTION_CHANNELS, CALLER_DEDUPE_KEY_MAX, FOLLOW_UP_IDEMPOTENCY_TTL_SECONDS, THREAD_FOLLOW_UP_LIMITS, THREAD_FOLLOW_UP_ERRORS, PROGRESS_UPDATE_LIMITS, PAUSABLE_CAPABILITY_KINDS, UNIFIED_CATCH_UP_MAX_WINDOW_HOURS, UNIFIED_CATCH_UP_EVENTS, UNIFIED_CATCH_UP_FILTERABLE_OBJECT_TYPES, AGENT_NEVER_RULES_MAX, AGENT_NEVER_RULE_FIELD_MAX, AGENT_NEVER_RULE_INPUT_MATCH_MAX, NEVER_RULE_ID_PATTERN, NEVER_RULE_HTTP_METHODS, TEMPLATE_DISTRIBUTION_MODES, CHANNEL_SEND_CHANNELS, TAKEOVER_MAX_IDLE_MINUTES, MINUTES_PER_DAY, DEFAULT_IDLE_RELEASE_MINUTES, FALLBACK_IDLE_RELEASE_MINUTES, VARIATION_SELECTORS, SLACK_EMOJI_NAMES, SLACK_SHORTCODE, PLAIN_EMAIL_ADDRESS, DOMAIN, UNSAFE_TEXT, SLACK_CONVERSATION_ID, CHANNEL_SETTING_GROUPS, THREAD_SCOPING_NOUN, TAKEOVER_CHANNEL_TYPES, EMAIL_SETTINGS, SLACK_SETTING_DEFAULTS, SLACK_REACTION_MAX, SLACK_INTRO_MAX, SLACK_EXAMPLE_PROMPTS_MAX, SLACK_EXAMPLE_PROMPT_MAX, SLACK_SUPPORT_CONTACT_MAX, SLACK_SETTINGS, CHANNEL_SETTINGS, REVIEWABLE_ACTION_EXECUTE_TOOL_ALLOWLIST, REVIEWABLE_STANDING_START_TOOLS, REVIEWABLE_MCP_SEND_TOOL_SUFFIX, MCP_TOOL_READ_VERB_RE, MCP_DRAFT_CREATE_VERBS, NON_INTERACTIVE_CHANNELS, RICH_PARTS_MESSAGE_ID_PREFIX, SCREENSHOT_MESSAGE_ID_PREFIX, WORK_ITEMS_KEY, MAX_WORK_ITEMS, LIMITS, BROWSER_COMMANDS, BROWSER_COMMAND_NAMES, LOG_FIELDS_MAX_KEYS, LOG_FIELD_MAX_VALUE_BYTES, LOG_FIELDS_MAX_BYTES, LOG_FIELD_KEY_PATTERN, LOG_FIELD_SECRET_SHAPED_KEY_PATTERNS, LOG_FIELDS_CLAMPED_KEY, LOG_FIELD_ARRAY_COUNT_SUFFIX, LuaLogFieldsError, DESKTOP_FILE_COMMANDS, DESKTOP_FILE_COMMAND_SET, WORKFLOW_RETRY_BACKOFFS, WORKFLOW_RETRY_MIN_ATTEMPTS, WORKFLOW_RETRY_POLICY_KEYS, WORKFLOW_RETRY_MAX_ATTEMPTS, WORKFLOW_RETRY_ENGINE_KEYS, WORKFLOW_JOB_RESOURCES, WORKFLOW_SIDE_EFFECTS, WORKFLOW_MODEL_CLASSES, WORKFLOW_DEFAULT_TASK_CLASS_MAP, WORKFLOW_MODELS_MAX_CLASS_DEFAULT, WORKFLOW_AUTONOMY_NUMERIC_KEYS, WORKFLOW_AUTONOMY_ENVELOPE_KEYS, WORKFLOW_AUTONOMY_DEFAULTS, WORKFLOW_AUTONOMY_CEILINGS, WORKFLOW_AUTONOMY_MAX_RUNS_PER_HOUR_ENV, WORKFLOW_AUTONOMY_MAX_RUNS_PER_HOUR_CEILING, WORKFLOW_AUTONOMY_FORMS_DEFAULT, WORKFLOW_AUTONOMY_MIN_VALUE, WORKFLOW_JOB_RANGES, WORKFLOW_JOB_RANGE_MEMBERS, WORKFLOW_SINGLE_STEP_TYPES, WORKFLOW_HITL_ENTRY_TYPES, WORKFLOW_ARM_ENTRY_TYPES, WORKFLOW_HITL_ARM_CONTAINERS, WORKFLOW_GRAPH_ENTRY_STEP_KINDS, WORKFLOW_ARM_ENTRY_STEP_KINDS, WORKFLOW_BUDGET_MAX_DURATION_SECONDS, MODEL_ID_BYOK_PROVIDERS, MODEL_CLASS_REF_PREFIX, MODEL_SNAPSHOT_SUFFIX, REASONING_EFFORT_VALUES, IMPLICIT_MODEL_SELECTION_SOURCES, PLATFORM_FALLBACK_MODEL_SOURCE, AGENT_NAME_TOKEN, DEFAULT_PERSONA_GUIDE, PERSONAL_SPACE_STARTING_PERSONA, AGENT_LOG_SOURCES, AGENT_LOG_FIELDS_MAX_WIRE_KEYS, LOG_DRAIN_TYPES_PHASE1, LOG_DRAIN_TYPES_PHASE2, LOG_DRAIN_TYPES_IMPLEMENTED, LOG_DRAIN_SOURCES, LOG_DRAIN_MAX_PER_ORG, LOG_DRAIN_MAX_PER_ORG_ENTERPRISE, LOG_DRAIN_DATADOG_SITES, LOG_DRAIN_NEWRELIC_SITES, LOG_DRAIN_ENDPOINT_TEMPLATES, LOG_DRAIN_PRESET_SITES, LOG_DRAIN_BUCKET_NAME_PATTERN, LOG_DRAIN_BUCKET_HOST_PATTERNS, LOG_DRAIN_PRESET_HOST_SUFFIXES, DRAIN_CONTENT_ACK_ERROR_CODE, DRAIN_CONTENT_ACK_FIELD, DrainContentAckRequiredError, LOG_DRAIN_PRESET_PATHS, PRESET_SEGMENT_RE, LOG_DRAIN_QUOTAS, LOG_DRAIN_QUOTA_WARN_RATIO, LOG_DRAIN_QUOTA_DROP_DEBUG_RATIO, LOG_DRAIN_QUOTA_DROP_INFO_RATIO, LOG_DRAIN_QUOTA_PAUSE_RATIO, LOG_EXPORT_SOURCES, LOG_EXPORT_MAX_WINDOW_DAYS, LOG_EXPORT_MAX_WINDOW_MS, LOG_EXPORT_URL_TTL_SECONDS, LOG_EXPORT_FILE_RETENTION_DAYS, LOG_EXPORT_FILE_RETENTION_MS, LOG_EXPORT_PART_MAX_BYTES, LOG_DRAIN_NOTICE_RATE_LIMIT_MS, LOG_DRAIN_VERIFICATION_STALE_MS, LOG_DRAIN_DIGEST_INTERVAL_MS, LOG_DRAIN_DIGEST_MAX_ENTRIES, LOG_DRAIN_NOTICE_ERROR_MAX_CHARS, LOG_DRAIN_USAGE_LINE_ITEM, LOG_DRAIN_BYTES_PER_GIB, DEFAULT_LOG_DRAIN_PLAN_CONFIG, TIERS, LOG_CURSOR_MAX_LENGTH, LOG_CURSOR_MAX_ID_LENGTH, LOG_RELATIVE_TIME_PATTERN, LOG_ISO_TIME_PATTERN, RELATIVE_UNIT_MS, CORE_DRAINING_CODE, CORE_DRAINING_DEFAULT_RETRY_MS, CORE_DRAINING_MAX_RETRY_MS, VoiceNameSchema, PluginProviderSchema, RealtimeProviderSchema, PluginClassSchema, ModelDescriptorSchema, InferenceModelSchema, PluginModelSchema, RealtimeModelSchema, LuaVoiceModelSchema, TurnDetectionSchema, InterruptionSchema, BuiltinAudioClipSchema, AudioConfigSchema, BackgroundAudioEntrySchema, BackgroundAudioSchema, LuaVoiceConfigInnerSchema, LuaVoiceConfigSchema, LuaVoiceRefSchema, LUA_JOB_DEFAULT_TIMEOUT_SECONDS, LUA_JOB_MIN_TIMEOUT_SECONDS, LUA_JOB_MAX_TIMEOUT_SECONDS, KEYS, MAX_BODY_BYTES, MAX_ID_LENGTH, UTC_ISO, TEMPLATE_TRIGGER_URL_ENV_PREFIX, TEMPLATE_INSTALL_POLICY_PER_WORKSPACE_VALUES, SUBJECT_TYPES, SubjectTypeSchema, CREDENTIAL_TYPES, CredentialTypeSchema, DEVICE_OPERATIONS, DeviceOperationSchema, DEVICE_SCOPE_BY_OPERATION, DeviceBindingSchema, IdSchema, SESSION_AUTH_TIME_MAX_S, PrincipalDescriptorSchema, ActorDescriptorSchema, PrincipalOwnerSchema, CredentialLifecycleSchema, GeneralCredentialDescriptorSchema, DeviceCredentialDescriptorSchema, GeneralPrincipalContextSchema, DeviceCredentialPrincipalContextSchema, RawPrincipalContextSchema, PrincipalContextSchema, DeviceCredentialClaimSchema, LUA_CLIENT_HEADER, LUA_CLIENT_APPS, SEMVER_PATTERN, WEB_RELEASE_PATTERN, CLIENT_HEADER_PATTERN, LUA_SESSION_ID_CLAIM, SESSION_REVOKED_CODE, AUTHZ_PROJECTION_VERSION, ProjectedScopeSchema, DisplayRoleSchema, AuthorizationPrincipalSchema, CredentialContextSchema, ProjectionAnomalySchema, ProjectedOrgSchema, ProjectedResourceSchema, CapabilityProfilesSchema, RoleCatalogSchema, EffectiveAuthorizationSchema, ResourcePageSchema, SYSTEM_USER_PREFIX, WORKFLOW_RUN_IN_FLIGHT, WORKFLOW_RUN_IDLE, WORKFLOW_RUN_TERMINAL, WORKFLOW_RUN_STATUSES, WORKFLOW_RUN_GATE_KINDS, WORKFLOW_STEP_STATUSES, WORKFLOW_STEP_IN_FLIGHT, WORKFLOW_SIGNAL_EVENT_SITES, ARCHIVE_WINDOW_MARGIN_DAYS, WORKFLOW_ORG_PURGING_TTL_S, WORKFLOW_ORG_PURGE_FORCE_AFTER_MS, IDEMPOTENCY_HOLDING_STATUSES, WORKFLOW_SCHEDULED_RUN_ID_PREFIX, CLOUD_TASK_RUN_ID_PREFIX, WORKFLOW_SCHEDULE_KEY_MAX, WORKFLOW_SCHEDULE_IDEMPOTENCY_KEY_PREFIX, WORKFLOW_OPERATION_ID_PREFIX, WORKFLOW_CONNECTION_KEY_RE, WORKFLOW_AGENT_APP_CONNECTION_PREFIX, WORKFLOW_JOB_MODEL_SOURCE_LABELS, WORKFLOW_SUSPEND_KINDS, WORKFLOW_RUN_NOTIFICATION_SUSPENDED_KINDS, WORKFLOW_SIGNAL_PAYLOAD_MAX_BYTES, WORKFLOW_SIGNAL_NAME_RE, WORKFLOW_SUSPEND_DEFAULT_TIMEOUT_HOURS, WORKFLOW_RESOLVE_OUTPUT_MAX_BYTES, SCHEDULE_HEALTH_NOTIFY_CHANNELS, SCHEDULE_HEALTH_DEFAULT_NOTIFY, SCHEDULE_HEALTH_LIMITS, KNOWN_KEYS, WORKFLOW_GOAL_JUDGE_SELF, APPROVAL_ARGS_MAX_CHARS, APPROVAL_ARG_STRING_MAX_CHARS, APPROVAL_ARGS_SUMMARY_MAX_CHARS, MAX_DEPTH, MAX_KEYS, MAX_ITEMS, MAX_NODES, MAX_KEY_CHARS, KEY_SCRUB_INPUT_MAX_CHARS, STRING_SCRUB_INPUT_MAX_CHARS, ELLIPSIS, SKIP, SCRUB_SECRETS_BEFORE_PERSIST_ENV, PERSIST_SCRUB_MAX_CHARS, PERSIST_SCRUB_REF_MAX_CHARS, WORKFLOW_AUDIT_EVENTS, WORKFLOW_AUDIT_METADATA_MAX_BYTES, INDENT, WRAP_WIDTH, NOUNS, GET_TOOL_NAMES, PREAMBLE, WORKFLOW_APPROVAL_OUTPUT_DECISIONS, WORKFLOW_APPROVAL_OUTPUT_SCHEMA, JSON_FENCE_RE, DEFAULT_ON_AGENT_FEATURES, SUBAGENT_PER_KEY_FLAG_ENV, PER_KEY_FLAG_VALUES, ONBOARDING_FLOW_KEY, ONBOARDING_SCHEMA_VERSION, id, copy, onboardingHeadingSchema, onboardingRichTextInlineSchema, onboardingRichTextSchema, onboardingDestinationSchema, onboardingArtworkSchema, onboardingAnswerSchema, onboardingQuestionSchema, onboardingTemplateSectionSchema, onboardingInstallScreenSchema, onboardingResultScreenSchema, onboardingConnectScreenSchema, onboardingTemplateContentSchema, onboardingUnavailableOutcomeSchema, onboardingFlowSchema, onboardingActorSchema, onboardingEditorSchema, onboardingPublicationSummarySchema, onboardingValidationIssueSchema, onboardingValidationResponseSchema, onboardingAssetSchema, onboardingPublicAssetSchema, getOnboardingConfigResponseSchema, saveOnboardingDraftRequestSchema, validateOnboardingRequestSchema, publishOnboardingRequestSchema, rollbackOnboardingRequestSchema, onboardingTemplateCatalogItemSchema, getPublishedOnboardingResponseSchema, WEB_ROUTE_PROTOCOL_VERSION, WEB_ROUTE_METHODS, WEB_ROUTE_REQUEST_HEADER_ALLOWLIST, WEB_ROUTE_RESPONSE_HEADER_ALLOWLIST, WEB_ROUTE_MAX_REQUEST_BODY_BYTES, WEB_ROUTE_MAX_RESPONSE_BYTES, WEB_APP_NAME_PATTERN, WEB_APP_ENTRY_HTML_MAX_CHARS, WEB_APP_MAX_ASSET_BYTES, EVIDENCE_SESSION_IDLE_MS, EVIDENCE_MIN_CONVERSATIONS, EVIDENCE_LOW_CONFIDENCE_N, EVIDENCE_SNIPPET_MAX_CHARS, EVIDENCE_EXAMPLES_PER_ITEM, EVIDENCE_SHOWN_ITEMS, EVIDENCE_LATENCY_BOUNDS_MS, EVIDENCE_WORD_BOUNDS, BAD_CONVERSATION_REASONS, ATTACHMENT_LINES, REVIEW_VERDICT_REASON_ORDER, ENV_TEMPLATE_SECRET_KEY_RE, CONNECTION_SEND_NOT_ALLOWED, CONNECTION_RECIPIENT_NOT_ALLOWED, NOT_SEND, PLAIN_ADDRESS, RecipientSet, MCP_MESSAGING_CREATE, MCP_CALENDAR_EVENT_WRITE, REPLY_KEYS, DEDICATED_MAIL_SLUGS, FULL_SUITE_SLUGS, WELL_KNOWN_MAIL_FOLDERS, MEMBER_KEYS, CANONICAL_ORIGIN, CANONICAL_PREFIX, STRICT_BASE64, GMAIL_PREFIX, GMAIL_MESSAGES_SEND, GMAIL_DRAFTS_SEND, GOOGLE_BATCH, GRAPH_VERSION, GRAPH_PRINCIPAL, GRAPH_SEND_MAIL, GRAPH_MESSAGE_ACTION, GRAPH_OWNER, GRAPH_EVENTS, GRAPH_EVENT_COLLECTION, GRAPH_EVENT_ID, GRAPH_EVENT_ITEM, GRAPH_EVENT_ACTION, GRAPH_BATCH, GRAPH_TEAMS_MESSAGE, GRAPH_ACTIVITY_NOTIFICATION, GRAPH_GROUP_CONVERSATION, GCAL_EVENTS, GRAPH_READ_KEYS, MALFORMED_POLICY, BILLING_REJECTION_TEXT_CREDITS, BILLING_REJECTION_TEXT_SEAT, BILLING_REJECTION_TEXT_USER_QUOTA, CUSTOM_MCP_CONNECTION_ID_PREFIX, CUSTOM_MCP_SOURCE, CUSTOM_MCP_TRANSPORT, CUSTOM_MCP_CONNECTION_ID_PATTERN, customMcpConnectionIdSchema, CONNECTION_BACKED_MCP_SOURCES, CUSTOM_MCP_REFERENCE_ID_PATTERN, customMcpReferenceIdSchema, CUSTOM_MCP_AUTH_KINDS, customMcpAuthKindSchema, CUSTOM_MCP_OAUTH_REGISTRATIONS, customMcpOAuthRegistrationSchema, CUSTOM_MCP_HEALTH_STATES, customMcpHealthStateSchema, CUSTOM_MCP_FAILURE_STEPS, customMcpFailureStepSchema, CUSTOM_MCP_CONNECT_STEPS, customMcpConnectStepSchema, customMcpFailureCodeSchema, WORKFLOW_KEY_MAX_LENGTH, CUSTOM_MCP_URL_MAX_LENGTH, CUSTOM_MCP_DISPLAY_NAME_MAX_LENGTH, CUSTOM_MCP_MAX_HEADERS, CUSTOM_MCP_HEADER_NAME_MAX_LENGTH, CUSTOM_MCP_HEADER_VALUE_MAX_LENGTH, CUSTOM_MCP_MAX_TOOLS, CUSTOM_MCP_TOOL_NAME_MAX_LENGTH, CUSTOM_MCP_TOOL_TEXT_MAX_LENGTH, CUSTOM_MCP_MIN_TIMEOUT_MS, CUSTOM_MCP_MAX_TIMEOUT_MS, CUSTOM_MCP_OAUTH_PENDING_TTL_MS, isoDateTime, agentId, nonNegativeInt, customMcpUrlInputSchema, customMcpDisplayNameSchema, customMcpTimeoutSchema, CUSTOM_MCP_RESERVED_HEADER_NAMES, HEADER_NAME, HEADER_VALUE_FORBIDDEN, customMcpHeaderNameSchema, headerValue, customMcpHeadersSchema, customMcpHeadersPatchSchema, customMcpToolNameSchema, customMcpToolSchema, customMcpServerInfoSchema, customMcpToolSelectionSchema, customMcpToolsResponseSchema, customMcpFailureSchema, customMcpHealthSchema, customMcpErrorBodySchema, customMcpConnectionBlockSchema, customMcpConnectionViewSchema, customMcpConnectionResponseSchema, customMcpProbeBodySchema, customMcpOAuthDiscoverySchema, customMcpProbeResponseSchema, createFields, mountAgentField, customMcpCreateAgentBodySchema, customMcpCreateUserBodySchema, customMcpOAuthClientSchema, startFields, customMcpOAuthStartAgentBodySchema, customMcpOAuthStartUserBodySchema, customMcpOAuthStartResponseSchema, nonce, customMcpOAuthSuccessRedirectQuerySchema, CUSTOM_MCP_OAUTH_CALLBACK_ERRORS, customMcpOAuthFailureRedirectQuerySchema, customMcpOAuthFinalizeBodySchema, customMcpCimdDocumentSchema, customMcpPatchBodySchema, customMcpCredentialRequestSchema, customMcpCredentialAuthSchema, customMcpCredentialResponseSchema, CUSTOM_MCP_CREDENTIAL_ERRORS, customMcpCredentialErrorBodySchema, customMcpHealthReportSchema, customMcpProbeRequestSchema, customMcpProbeResultSchema, customMcpOriginUrlSchema, customMcpServerProjectionSchema, customMcpMountUpsertBodySchema;
|
|
7510
|
+
var __defProp4, __name4, PLUMBING_THREAD_CHANNELS, CHANNEL_CONVERSATION_CHANNELS, HIDDEN_THREAD_CHANNELS, CHOICE_PERSON_TURN_CHANNELS, CHOICE_REPLAY_CLIENT_CAPABILITIES, CHOICE_REPLAY_CLIENT_SURFACES, DECISION_PROVIDERS, DECISION_QUESTION_TYPES, DECISION_NAME_PATTERN, DECISION_SANDBOX_SITE_HEADER, DECISION_SANDBOX_PRIMITIVE_HEADER, DECISION_SANDBOX_TOOL_SEPARATOR, DECISION_LIMITS, DECISION_ERROR_CODES, MAX_NAME_CHARS, InstructionsSchema, NameSchema, OddsQuestionSchema, ChoiceQuestionSchema, ScoreQuestionSchema, DecisionQuestionSchema, DecisionOptionsSchema, DecisionQuestionsSchema, DecisionDefinitionSchema, INTEGRATION_PASSTHROUGH_READ_METHODS, URL_REINTERPRETED_PATH_CHARACTERS, PERCENT_ENCODED_DOT, PERCENT_ESCAPE, DECODED_PATH_SEPARATORS, DECODED_LEADING_SEPARATOR, MAX_PERCENT_DECODE_ROUNDS, URL_RESOLUTION_PROBE_BASE, PLATFORM_INVOCATION_CALLERS, MESSAGING_CHANNELS, VOICE_CHANNELS, TURN_CATEGORIES, AGENT_TOOL_CATEGORIES, count, AnthropicSseUsageReader, SUPERVISION_OPS, SUPERVISION_OPS_WAVE2, SUPERVISION_WATCHDOG_OPS, SUPERVISION_WATCHDOG_ERRORS, SUPERVISION_ROLLBACK_REFUSAL_CODES, SUPERVISION_ROLLBACK_LINEAGE_MAX, SUPERVISION_UNTARGETED_OPS, SUPERVISED_WORKFLOW_VERSIONS_MAX, SUPERVISION_EVENT_KINDS, AGENT_PROVISIONING_LIMITS, AGENT_PROVISIONING_APPROVAL_PAYLOAD_KEY, AGENT_PROVISIONING_ERRORS, PROVISIONED_SUPERVISION_ACTIONS, isNonEmptyString, uniqueStrings, sameSet, AGENT_PROVISIONING_APPROVAL_CARD_MAX_CHARS, APPROVAL_PAYLOAD_MEMBERS, AGENT_CONNECTION_POLICIES, AGENT_CONNECTION_POLICY_DEFAULT, AGENT_CONNECTION_MOUNT_MODES, AGENT_CONNECTION_GOVERNANCE_ERRORS, AGENT_CONNECTION_OPERATION_RULES_MAX, AGENT_CONNECTION_OPERATION_PATTERN_MAX_LENGTH, OPERATION_RULE_METHODS, PATH_SEPARATOR, PATH_SINGLE_SEGMENT_WILDCARD, PATH_REST_WILDCARD, METHOD_OVERRIDE_HEADER_NAMES, METHOD_OVERRIDE_QUERY_NAMES, ODATA_BATCH_SEGMENT, GOOGLE_BATCH_FIRST_SEGMENT, CONNECTION_CHECK_RESULTS, CONNECTION_CHECK_CATALOGUE_V1, CONNECTION_CHECK_NAME_PATTERN, CONNECTION_CHECK_NAME_MAX, CONNECT_OUTCOME_STATUSES, SECRET_TEST_RESULTS, SECRET_DATADOG_REGIONS, SECRET_PROVIDER_CATALOGUE_V1, SECRET_TEST_MAX_RESPONSE_BYTES, SECRET_ENV_KEY_PATTERN, SECRET_REQUEST_ERRORS, SECRET_OUTCOME_STATUSES, CLIENT_OUTCOME_TURNS_MAX, SHORT_TEXT_MAX, SLUG_MAX, shortText, optionalShortText, CONNECTION_REQUEST_TERMINAL_STATES, CONNECTION_USE_ORIGINS, AGENT_CONNECTION_OPERATION_LIMITS_BOUNDS, CURRENCY_CODE, LIMITS_KEYS, CAPS_KEYS, EXCLUSIONS_KEYS, EMAIL_IN_TEXT, MAX_EXCLUSION_DEPTH, PROJECTION_PARAMETER_KEYS, CHANNEL_PARAMETER_KEYS, GMAIL_SYSTEM_LABEL_IDS, ZERO_DECIMAL_CURRENCIES, THREE_DECIMAL_CURRENCIES, DECIMAL_AMOUNT, REDACTED_PLACEHOLDER, PROVIDER_MESSAGE_MAX_CHARS, ERROR_MESSAGE_MAX_CHARS, SECRET_LITERAL_PATTERNS, SECRET_NAME, SECRET_PAIR_PATTERNS, GROUP_COUNT, WORKFLOW_SECRET_KEY_RE, WORKFLOW_RESERVED_SECRET_KEYS, SCRUB_INPUT_MAX_CHARS, SCRUB_CUT_BACKOFF_CHARS, TEST_SESSION_ID_PATTERN, TEST_SESSION_COLLECTION_PREFIX, TEST_EFFECT_BODY_MAX_BYTES, TEST_EFFECT_DROPPED_HEADERS, EVAL_CREDITS_PER_1K_TOKENS, EVAL_RESERVED_TOOL_ID_PREFIXES, CONNECTION_HANDOVER_APPROVAL_PAYLOAD_KEY, CONNECTION_HANDOVER_APPROVAL_CARD_MAX_CHARS, CONNECTION_HANDOVER_LIMITS, MEMBERS, FORMAT_CHARS, oneLine, boundedString, AGENT_METRIC_NAME_PATTERN, AGENT_METRIC_LIMITS, AGENT_OBJECTIVE_ERRORS, CHANGE_LEASE_TTL_MINUTES_MIN, CHANGE_LEASE_TTL_MINUTES_MAX, CHANGE_LEASE_REASON_MAX, CHANGE_LEASE_ERRORS, AGENT_CONFIG_SET_LIMITS, SECRET_ENV_KEY_SUFFIXES, DEFAULT_OWNER_DEPARTURE_POLICY, AGENT_LIFECYCLE_ERRORS, USER_COST_COUNTER_TTL_SECONDS, USER_COST_ATTRIBUTION_CHANNELS, CALLER_DEDUPE_KEY_MAX, FOLLOW_UP_IDEMPOTENCY_TTL_SECONDS, THREAD_FOLLOW_UP_LIMITS, THREAD_FOLLOW_UP_ERRORS, PROGRESS_UPDATE_LIMITS, PAUSABLE_CAPABILITY_KINDS, UNIFIED_CATCH_UP_MAX_WINDOW_HOURS, UNIFIED_CATCH_UP_EVENTS, UNIFIED_CATCH_UP_FILTERABLE_OBJECT_TYPES, AGENT_NEVER_RULES_MAX, AGENT_NEVER_RULE_FIELD_MAX, AGENT_NEVER_RULE_INPUT_MATCH_MAX, NEVER_RULE_ID_PATTERN, NEVER_RULE_HTTP_METHODS, TEMPLATE_DISTRIBUTION_MODES, CHANNEL_SEND_CHANNELS, TAKEOVER_MAX_IDLE_MINUTES, MINUTES_PER_DAY, DEFAULT_IDLE_RELEASE_MINUTES, FALLBACK_IDLE_RELEASE_MINUTES, VARIATION_SELECTORS, SLACK_EMOJI_NAMES, SLACK_SHORTCODE, PLAIN_EMAIL_ADDRESS, DOMAIN, UNSAFE_TEXT, SLACK_CONVERSATION_ID, CHANNEL_SETTING_GROUPS, THREAD_SCOPING_NOUN, TAKEOVER_CHANNEL_TYPES, EMAIL_SETTINGS, SLACK_SETTING_DEFAULTS, SLACK_REACTION_MAX, SLACK_INTRO_MAX, SLACK_EXAMPLE_PROMPTS_MAX, SLACK_EXAMPLE_PROMPT_MAX, SLACK_SUPPORT_CONTACT_MAX, SLACK_SETTINGS, CHANNEL_SETTINGS, REVIEWABLE_ACTION_EXECUTE_TOOL_ALLOWLIST, REVIEWABLE_STANDING_START_TOOLS, REVIEWABLE_MCP_SEND_TOOL_SUFFIX, MCP_TOOL_READ_VERB_RE, MCP_DRAFT_CREATE_VERBS, NON_INTERACTIVE_CHANNELS, RICH_PARTS_MESSAGE_ID_PREFIX, SCREENSHOT_MESSAGE_ID_PREFIX, WORK_ITEMS_KEY, MAX_WORK_ITEMS, LIMITS, BROWSER_COMMANDS, BROWSER_COMMAND_NAMES, SERVER_TRIGGERED_BROWSER_SOURCES, BROWSER_FALLBACKS, DEFAULT_BROWSER_FALLBACK, PROXY_COUNTRY_CODE, BROWSER_LOG_CONTENT_MODES, DEFAULT_BROWSER_LOG_CONTENT, BROWSER_SCREENSHOT_POLICIES, DEFAULT_BROWSER_SCREENSHOT_POLICY, BROWSER_PROFILE_NAME_PATTERN, BROWSER_LIMIT_KEYS, BROWSER_LIMIT_MAX, BROWSER_EXECUTE_METHOD, BROWSER_GLOBAL_METHODS, BROWSER_EXECUTE_DEFAULT_TIMEOUT_MS, BROWSER_EXECUTE_MAX_TIMEOUT_MS, LOG_FIELDS_MAX_KEYS, LOG_FIELD_MAX_VALUE_BYTES, LOG_FIELDS_MAX_BYTES, LOG_FIELD_KEY_PATTERN, LOG_FIELD_SECRET_SHAPED_KEY_PATTERNS, LOG_FIELDS_CLAMPED_KEY, LOG_FIELD_ARRAY_COUNT_SUFFIX, LuaLogFieldsError, DESKTOP_FILE_COMMANDS, DESKTOP_FILE_COMMAND_SET, BROWSER_READ_FORMATS, BROWSER_READ_DEFAULT_TIMEOUT_MS, BROWSER_READ_MIN_TIMEOUT_MS, BROWSER_READ_MAX_TIMEOUT_MS, BROWSER_READ_MAX_CONTENT_CHARS, BROWSER_READ_DEFAULT_SELECTOR, BROWSER_READ_MATCH_SEPARATOR, BROWSER_READ_LOGIN_BLOCKER, BROWSER_ERROR_NAME, HTTP_STATUS_FAILURE, LOGIN_PATH_SEGMENTS, LOGIN_HOST_LABELS, AGENT_LOG_SOURCES, AGENT_LOG_ENVIRONMENTS, AGENT_LOG_FIELDS_MAX_WIRE_KEYS, BROWSER_LOG_EVENT_KINDS, BROWSER_LOG_ENGINES, BROWSER_SESSION_OPEN_REASONS, BROWSER_BLOCK_KINDS, BROWSER_WALL_KINDS, BROWSER_WALL_NEXT_ACTIONS, BROWSER_CONFIRM_DECISIONS, BROWSER_SESSION_CLOSE_REASONS, BROWSER_LOG_CONTEXT_KEYS, BROWSER_LOG_ID_MAX_CHARS, BROWSER_LOG_TEXT_MAX_CHARS, isString, isBoolean, isCount, isPlainObject2, oneOf, isLimits, EVENT_SHAPES, BASE_KEYS, BROWSER_WORKER_SESSION_ID_SEPARATOR, BROWSER_WORKER_BLOCK_REASON_MAX_CHARS, WORKFLOW_RETRY_BACKOFFS, WORKFLOW_RETRY_MIN_ATTEMPTS, WORKFLOW_RETRY_POLICY_KEYS, WORKFLOW_RETRY_MAX_ATTEMPTS, WORKFLOW_RETRY_ENGINE_KEYS, WORKFLOW_JOB_RESOURCES, WORKFLOW_SIDE_EFFECTS, WORKFLOW_MODEL_CLASSES, WORKFLOW_DEFAULT_TASK_CLASS_MAP, WORKFLOW_MODELS_MAX_CLASS_DEFAULT, WORKFLOW_AUTONOMY_NUMERIC_KEYS, WORKFLOW_AUTONOMY_ENVELOPE_KEYS, WORKFLOW_AUTONOMY_DEFAULTS, WORKFLOW_AUTONOMY_CEILINGS, WORKFLOW_AUTONOMY_MAX_RUNS_PER_HOUR_ENV, WORKFLOW_AUTONOMY_MAX_RUNS_PER_HOUR_CEILING, WORKFLOW_AUTONOMY_FORMS_DEFAULT, WORKFLOW_AUTONOMY_MIN_VALUE, WORKFLOW_JOB_RANGES, WORKFLOW_JOB_RANGE_MEMBERS, WORKFLOW_SINGLE_STEP_TYPES, WORKFLOW_HITL_ENTRY_TYPES, WORKFLOW_ARM_ENTRY_TYPES, WORKFLOW_HITL_ARM_CONTAINERS, WORKFLOW_GRAPH_ENTRY_STEP_KINDS, WORKFLOW_ARM_ENTRY_STEP_KINDS, WORKFLOW_BUDGET_MAX_DURATION_SECONDS, MODEL_ID_BYOK_PROVIDERS, MODEL_CLASS_REF_PREFIX, MODEL_SNAPSHOT_SUFFIX, REASONING_EFFORT_VALUES, IMPLICIT_MODEL_SELECTION_SOURCES, PLATFORM_FALLBACK_MODEL_SOURCE, AGENT_NAME_TOKEN, DEFAULT_PERSONA_GUIDE, PERSONAL_SPACE_STARTING_PERSONA, LOG_DRAIN_TYPES_PHASE1, LOG_DRAIN_TYPES_PHASE2, LOG_DRAIN_TYPES_IMPLEMENTED, LOG_DRAIN_SOURCES, LOG_DRAIN_MAX_PER_ORG, LOG_DRAIN_MAX_PER_ORG_ENTERPRISE, LOG_DRAIN_DATADOG_SITES, LOG_DRAIN_NEWRELIC_SITES, LOG_DRAIN_ENDPOINT_TEMPLATES, LOG_DRAIN_PRESET_SITES, LOG_DRAIN_BUCKET_NAME_PATTERN, LOG_DRAIN_BUCKET_HOST_PATTERNS, LOG_DRAIN_PRESET_HOST_SUFFIXES, DRAIN_CONTENT_ACK_ERROR_CODE, DRAIN_CONTENT_ACK_FIELD, DrainContentAckRequiredError, LOG_DRAIN_PRESET_PATHS, PRESET_SEGMENT_RE, LOG_DRAIN_QUOTAS, LOG_DRAIN_QUOTA_WARN_RATIO, LOG_DRAIN_QUOTA_DROP_DEBUG_RATIO, LOG_DRAIN_QUOTA_DROP_INFO_RATIO, LOG_DRAIN_QUOTA_PAUSE_RATIO, LOG_EXPORT_SOURCES, LOG_EXPORT_MAX_WINDOW_DAYS, LOG_EXPORT_MAX_WINDOW_MS, LOG_EXPORT_URL_TTL_SECONDS, LOG_EXPORT_FILE_RETENTION_DAYS, LOG_EXPORT_FILE_RETENTION_MS, LOG_EXPORT_PART_MAX_BYTES, LOG_DRAIN_NOTICE_RATE_LIMIT_MS, LOG_DRAIN_VERIFICATION_STALE_MS, LOG_DRAIN_DIGEST_INTERVAL_MS, LOG_DRAIN_DIGEST_MAX_ENTRIES, LOG_DRAIN_NOTICE_ERROR_MAX_CHARS, LOG_DRAIN_USAGE_LINE_ITEM, LOG_DRAIN_BYTES_PER_GIB, DEFAULT_LOG_DRAIN_PLAN_CONFIG, TIERS, LOG_CURSOR_MAX_LENGTH, LOG_CURSOR_MAX_ID_LENGTH, LOG_RELATIVE_TIME_PATTERN, LOG_ISO_TIME_PATTERN, RELATIVE_UNIT_MS, CORE_DRAINING_CODE, CORE_DRAINING_DEFAULT_RETRY_MS, CORE_DRAINING_MAX_RETRY_MS, VoiceNameSchema, PluginProviderSchema, RealtimeProviderSchema, PluginClassSchema, ModelDescriptorSchema, InferenceModelSchema, PluginModelSchema, RealtimeModelSchema, LuaVoiceModelSchema, TurnDetectionSchema, InterruptionSchema, BuiltinAudioClipSchema, AudioConfigSchema, BackgroundAudioEntrySchema, BackgroundAudioSchema, LuaVoiceConfigInnerSchema, LuaVoiceConfigSchema, LuaVoiceRefSchema, LUA_JOB_DEFAULT_TIMEOUT_SECONDS, LUA_JOB_MIN_TIMEOUT_SECONDS, LUA_JOB_MAX_TIMEOUT_SECONDS, KEYS, MAX_BODY_BYTES, MAX_ID_LENGTH, UTC_ISO, TEMPLATE_TRIGGER_URL_ENV_PREFIX, TEMPLATE_INSTALL_POLICY_PER_WORKSPACE_VALUES, SUBJECT_TYPES, SubjectTypeSchema, CREDENTIAL_TYPES, CredentialTypeSchema, DEVICE_OPERATIONS, DeviceOperationSchema, DEVICE_SCOPE_BY_OPERATION, DeviceBindingSchema, IdSchema, SESSION_AUTH_TIME_MAX_S, PrincipalDescriptorSchema, ActorDescriptorSchema, PrincipalOwnerSchema, CredentialLifecycleSchema, GeneralCredentialDescriptorSchema, DeviceCredentialDescriptorSchema, GeneralPrincipalContextSchema, DeviceCredentialPrincipalContextSchema, RawPrincipalContextSchema, PrincipalContextSchema, DeviceCredentialClaimSchema, LUA_CLIENT_HEADER, LUA_CLIENT_APPS, SEMVER_PATTERN, WEB_RELEASE_PATTERN, CLIENT_HEADER_PATTERN, LUA_SESSION_ID_CLAIM, SESSION_REVOKED_CODE, AUTHZ_PROJECTION_VERSION, ProjectedScopeSchema, DisplayRoleSchema, AuthorizationPrincipalSchema, CredentialContextSchema, ProjectionAnomalySchema, ProjectedOrgSchema, ProjectedResourceSchema, CapabilityProfilesSchema, RoleCatalogSchema, EffectiveAuthorizationSchema, ResourcePageSchema, SYSTEM_USER_PREFIX, WORKFLOW_RUN_IN_FLIGHT, WORKFLOW_RUN_IDLE, WORKFLOW_RUN_TERMINAL, WORKFLOW_RUN_STATUSES, WORKFLOW_RUN_GATE_KINDS, WORKFLOW_STEP_STATUSES, WORKFLOW_STEP_IN_FLIGHT, WORKFLOW_SIGNAL_EVENT_SITES, ARCHIVE_WINDOW_MARGIN_DAYS, WORKFLOW_ORG_PURGING_TTL_S, WORKFLOW_ORG_PURGE_FORCE_AFTER_MS, IDEMPOTENCY_HOLDING_STATUSES, WORKFLOW_SCHEDULED_RUN_ID_PREFIX, CLOUD_TASK_RUN_ID_PREFIX, WORKFLOW_SCHEDULE_KEY_MAX, WORKFLOW_SCHEDULE_IDEMPOTENCY_KEY_PREFIX, WORKFLOW_OPERATION_ID_PREFIX, WORKFLOW_CONNECTION_KEY_RE, WORKFLOW_AGENT_APP_CONNECTION_PREFIX, WORKFLOW_JOB_MODEL_SOURCE_LABELS, WORKFLOW_SUSPEND_KINDS, WORKFLOW_RUN_NOTIFICATION_SUSPENDED_KINDS, WORKFLOW_SIGNAL_PAYLOAD_MAX_BYTES, WORKFLOW_SIGNAL_NAME_RE, WORKFLOW_SUSPEND_DEFAULT_TIMEOUT_HOURS, WORKFLOW_RESOLVE_OUTPUT_MAX_BYTES, SCHEDULE_HEALTH_NOTIFY_CHANNELS, SCHEDULE_HEALTH_DEFAULT_NOTIFY, SCHEDULE_HEALTH_LIMITS, KNOWN_KEYS, WORKFLOW_GOAL_JUDGE_SELF, APPROVAL_ARGS_MAX_CHARS, APPROVAL_ARG_STRING_MAX_CHARS, APPROVAL_ARGS_SUMMARY_MAX_CHARS, MAX_DEPTH, MAX_KEYS, MAX_ITEMS, MAX_NODES, MAX_KEY_CHARS, KEY_SCRUB_INPUT_MAX_CHARS, STRING_SCRUB_INPUT_MAX_CHARS, ELLIPSIS, SKIP, SCRUB_SECRETS_BEFORE_PERSIST_ENV, PERSIST_SCRUB_MAX_CHARS, PERSIST_SCRUB_REF_MAX_CHARS, WORKFLOW_AUDIT_EVENTS, WORKFLOW_AUDIT_METADATA_MAX_BYTES, INDENT, WRAP_WIDTH, NOUNS, GET_TOOL_NAMES, PREAMBLE, WORKFLOW_APPROVAL_OUTPUT_DECISIONS, WORKFLOW_APPROVAL_OUTPUT_SCHEMA, JSON_FENCE_RE, DEFAULT_ON_AGENT_FEATURES, SUBAGENT_PER_KEY_FLAG_ENV, PER_KEY_FLAG_VALUES, ONBOARDING_FLOW_KEY, ONBOARDING_SCHEMA_VERSION, id, copy, onboardingHeadingSchema, onboardingRichTextInlineSchema, onboardingRichTextSchema, onboardingDestinationSchema, onboardingArtworkSchema, onboardingAnswerSchema, onboardingQuestionSchema, onboardingTemplateSectionSchema, onboardingInstallScreenSchema, onboardingResultScreenSchema, onboardingConnectScreenSchema, onboardingTemplateContentSchema, onboardingUnavailableOutcomeSchema, onboardingFlowSchema, onboardingActorSchema, onboardingEditorSchema, onboardingPublicationSummarySchema, onboardingValidationIssueSchema, onboardingValidationResponseSchema, onboardingAssetSchema, onboardingPublicAssetSchema, getOnboardingConfigResponseSchema, saveOnboardingDraftRequestSchema, validateOnboardingRequestSchema, publishOnboardingRequestSchema, rollbackOnboardingRequestSchema, onboardingTemplateCatalogItemSchema, getPublishedOnboardingResponseSchema, WEB_ROUTE_PROTOCOL_VERSION, WEB_ROUTE_METHODS, WEB_ROUTE_REQUEST_HEADER_ALLOWLIST, WEB_ROUTE_RESPONSE_HEADER_ALLOWLIST, WEB_ROUTE_MAX_REQUEST_BODY_BYTES, WEB_ROUTE_MAX_RESPONSE_BYTES, WEB_APP_NAME_PATTERN, WEB_APP_ENTRY_HTML_MAX_CHARS, WEB_APP_MAX_ASSET_BYTES, EVIDENCE_SESSION_IDLE_MS, EVIDENCE_MIN_CONVERSATIONS, EVIDENCE_LOW_CONFIDENCE_N, EVIDENCE_SNIPPET_MAX_CHARS, EVIDENCE_EXAMPLES_PER_ITEM, EVIDENCE_SHOWN_ITEMS, EVIDENCE_LATENCY_BOUNDS_MS, EVIDENCE_WORD_BOUNDS, BAD_CONVERSATION_REASONS, ATTACHMENT_LINES, REVIEW_VERDICT_REASON_ORDER, ENV_TEMPLATE_SECRET_KEY_RE, CONNECTION_SEND_NOT_ALLOWED, CONNECTION_RECIPIENT_NOT_ALLOWED, NOT_SEND, PLAIN_ADDRESS, RecipientSet, MCP_MESSAGING_CREATE, MCP_CALENDAR_EVENT_WRITE, REPLY_KEYS, DEDICATED_MAIL_SLUGS, FULL_SUITE_SLUGS, WELL_KNOWN_MAIL_FOLDERS, MEMBER_KEYS, CANONICAL_ORIGIN, CANONICAL_PREFIX, STRICT_BASE64, GMAIL_PREFIX, GMAIL_MESSAGES_SEND, GMAIL_DRAFTS_SEND, GOOGLE_BATCH, GRAPH_VERSION, GRAPH_PRINCIPAL, GRAPH_SEND_MAIL, GRAPH_MESSAGE_ACTION, GRAPH_OWNER, GRAPH_EVENTS, GRAPH_EVENT_COLLECTION, GRAPH_EVENT_ID, GRAPH_EVENT_ITEM, GRAPH_EVENT_ACTION, GRAPH_BATCH, GRAPH_TEAMS_MESSAGE, GRAPH_ACTIVITY_NOTIFICATION, GRAPH_GROUP_CONVERSATION, GCAL_EVENTS, GRAPH_READ_KEYS, MALFORMED_POLICY, BILLING_REJECTION_TEXT_CREDITS, BILLING_REJECTION_TEXT_SEAT, BILLING_REJECTION_TEXT_USER_QUOTA, CUSTOM_MCP_CONNECTION_ID_PREFIX, CUSTOM_MCP_SOURCE, CUSTOM_MCP_TRANSPORT, CUSTOM_MCP_CONNECTION_ID_PATTERN, customMcpConnectionIdSchema, CONNECTION_BACKED_MCP_SOURCES, CUSTOM_MCP_REFERENCE_ID_PATTERN, customMcpReferenceIdSchema, CUSTOM_MCP_AUTH_KINDS, customMcpAuthKindSchema, CUSTOM_MCP_OAUTH_REGISTRATIONS, customMcpOAuthRegistrationSchema, CUSTOM_MCP_HEALTH_STATES, customMcpHealthStateSchema, CUSTOM_MCP_FAILURE_STEPS, customMcpFailureStepSchema, CUSTOM_MCP_CONNECT_STEPS, customMcpConnectStepSchema, customMcpFailureCodeSchema, WORKFLOW_KEY_MAX_LENGTH, CUSTOM_MCP_URL_MAX_LENGTH, CUSTOM_MCP_DISPLAY_NAME_MAX_LENGTH, CUSTOM_MCP_MAX_HEADERS, CUSTOM_MCP_HEADER_NAME_MAX_LENGTH, CUSTOM_MCP_HEADER_VALUE_MAX_LENGTH, CUSTOM_MCP_MAX_TOOLS, CUSTOM_MCP_TOOL_NAME_MAX_LENGTH, CUSTOM_MCP_TOOL_TEXT_MAX_LENGTH, CUSTOM_MCP_MIN_TIMEOUT_MS, CUSTOM_MCP_MAX_TIMEOUT_MS, CUSTOM_MCP_OAUTH_PENDING_TTL_MS, isoDateTime, agentId, nonNegativeInt, customMcpUrlInputSchema, customMcpDisplayNameSchema, customMcpTimeoutSchema, CUSTOM_MCP_RESERVED_HEADER_NAMES, HEADER_NAME, HEADER_VALUE_FORBIDDEN, customMcpHeaderNameSchema, headerValue, customMcpHeadersSchema, customMcpHeadersPatchSchema, customMcpToolNameSchema, customMcpToolSchema, customMcpServerInfoSchema, customMcpToolSelectionSchema, customMcpToolsResponseSchema, customMcpFailureSchema, customMcpHealthSchema, customMcpErrorBodySchema, customMcpConnectionBlockSchema, customMcpConnectionViewSchema, customMcpConnectionResponseSchema, customMcpProbeBodySchema, customMcpOAuthDiscoverySchema, customMcpProbeResponseSchema, createFields, mountAgentField, customMcpCreateAgentBodySchema, customMcpCreateUserBodySchema, customMcpOAuthClientSchema, startFields, customMcpOAuthStartAgentBodySchema, customMcpOAuthStartUserBodySchema, customMcpOAuthStartResponseSchema, nonce, customMcpOAuthSuccessRedirectQuerySchema, CUSTOM_MCP_OAUTH_CALLBACK_ERRORS, customMcpOAuthFailureRedirectQuerySchema, customMcpOAuthFinalizeBodySchema, customMcpCimdDocumentSchema, customMcpPatchBodySchema, customMcpCredentialRequestSchema, customMcpCredentialAuthSchema, customMcpCredentialResponseSchema, CUSTOM_MCP_CREDENTIAL_ERRORS, customMcpCredentialErrorBodySchema, customMcpHealthReportSchema, customMcpProbeRequestSchema, customMcpProbeResultSchema, customMcpOriginUrlSchema, customMcpServerProjectionSchema, customMcpMountUpsertBodySchema;
|
|
7134
7511
|
var init_dist = __esm({
|
|
7135
7512
|
"../shared-types/dist/index.mjs"() {
|
|
7136
7513
|
"use strict";
|
|
@@ -7212,6 +7589,15 @@ var init_dist = __esm({
|
|
|
7212
7589
|
"score"
|
|
7213
7590
|
];
|
|
7214
7591
|
DECISION_NAME_PATTERN = /^[a-zA-Z0-9_-]{1,64}$/;
|
|
7592
|
+
DECISION_SANDBOX_SITE_HEADER = "x-lua-sandbox-site";
|
|
7593
|
+
DECISION_SANDBOX_PRIMITIVE_HEADER = "x-lua-sandbox-primitive";
|
|
7594
|
+
DECISION_SANDBOX_TOOL_SEPARATOR = "#";
|
|
7595
|
+
__name(formatDecisionSandboxPrimitive, "formatDecisionSandboxPrimitive");
|
|
7596
|
+
__name4(formatDecisionSandboxPrimitive, "formatDecisionSandboxPrimitive");
|
|
7597
|
+
__name(parseDecisionSandboxPrimitive, "parseDecisionSandboxPrimitive");
|
|
7598
|
+
__name4(parseDecisionSandboxPrimitive, "parseDecisionSandboxPrimitive");
|
|
7599
|
+
__name(decisionPublishStampKey, "decisionPublishStampKey");
|
|
7600
|
+
__name4(decisionPublishStampKey, "decisionPublishStampKey");
|
|
7215
7601
|
DECISION_LIMITS = {
|
|
7216
7602
|
maxQuestions: 64,
|
|
7217
7603
|
minOptions: 2,
|
|
@@ -7219,6 +7605,7 @@ var init_dist = __esm({
|
|
|
7219
7605
|
minLevels: 2,
|
|
7220
7606
|
maxLevels: 10,
|
|
7221
7607
|
maxInstructionChars: 4e3,
|
|
7608
|
+
maxQuestionsChars: 1e5,
|
|
7222
7609
|
maxStateChars: 12e4,
|
|
7223
7610
|
maxImages: 4,
|
|
7224
7611
|
maxImageBytes: 5 * 1024 * 1024,
|
|
@@ -7236,7 +7623,8 @@ var init_dist = __esm({
|
|
|
7236
7623
|
UNAVAILABLE: "decision_unavailable",
|
|
7237
7624
|
DISABLED: "decision_disabled",
|
|
7238
7625
|
INSUFFICIENT_CREDITS: "decision_insufficient_credits",
|
|
7239
|
-
NOT_FOUND: "decision_not_found"
|
|
7626
|
+
NOT_FOUND: "decision_not_found",
|
|
7627
|
+
CANCELLED: "decision_cancelled"
|
|
7240
7628
|
};
|
|
7241
7629
|
MAX_NAME_CHARS = 64;
|
|
7242
7630
|
InstructionsSchema = z.string().trim().min(1).max(DECISION_LIMITS.maxInstructionChars);
|
|
@@ -7293,7 +7681,14 @@ var init_dist = __esm({
|
|
|
7293
7681
|
"none"
|
|
7294
7682
|
]).optional()
|
|
7295
7683
|
});
|
|
7296
|
-
DecisionQuestionsSchema = z.record(NameSchema, DecisionQuestionSchema).refine((questions) => Object.keys(questions).length >= 1 && Object.keys(questions).length <= DECISION_LIMITS.maxQuestions, `a decision needs between 1 and ${DECISION_LIMITS.maxQuestions} questions`)
|
|
7684
|
+
DecisionQuestionsSchema = z.record(NameSchema, DecisionQuestionSchema).refine((questions) => Object.keys(questions).length >= 1 && Object.keys(questions).length <= DECISION_LIMITS.maxQuestions, `a decision needs between 1 and ${DECISION_LIMITS.maxQuestions} questions`).superRefine((questions, ctx) => {
|
|
7685
|
+
const chars = JSON.stringify(questions).length;
|
|
7686
|
+
if (chars <= DECISION_LIMITS.maxQuestionsChars) return;
|
|
7687
|
+
ctx.addIssue({
|
|
7688
|
+
code: z.ZodIssueCode.custom,
|
|
7689
|
+
message: `the questions take ${chars} characters as JSON, more than the ${DECISION_LIMITS.maxQuestionsChars} characters a decision may hold`
|
|
7690
|
+
});
|
|
7691
|
+
});
|
|
7297
7692
|
DecisionDefinitionSchema = DecisionOptionsSchema.extend({
|
|
7298
7693
|
name: z.string().regex(DECISION_NAME_PATTERN, "a decision name is 1 to 64 letters, digits, underscores or hyphens"),
|
|
7299
7694
|
description: z.string().max(DECISION_LIMITS.maxInstructionChars).optional(),
|
|
@@ -7334,6 +7729,85 @@ var init_dist = __esm({
|
|
|
7334
7729
|
__name4(isPlatformInvocationCaller, "isPlatformInvocationCaller");
|
|
7335
7730
|
__name(supervisionSubjectId, "supervisionSubjectId");
|
|
7336
7731
|
__name4(supervisionSubjectId, "supervisionSubjectId");
|
|
7732
|
+
MESSAGING_CHANNELS = new Set(CHANNEL_CONVERSATION_CHANNELS);
|
|
7733
|
+
VOICE_CHANNELS = /* @__PURE__ */ new Set([
|
|
7734
|
+
"phone",
|
|
7735
|
+
"meeting",
|
|
7736
|
+
"voice"
|
|
7737
|
+
]);
|
|
7738
|
+
TURN_CATEGORIES = /* @__PURE__ */ new Set([
|
|
7739
|
+
"llm:inference",
|
|
7740
|
+
"llm:chat-modes",
|
|
7741
|
+
"llm:delegation",
|
|
7742
|
+
"decision:ask"
|
|
7743
|
+
]);
|
|
7744
|
+
AGENT_TOOL_CATEGORIES = /* @__PURE__ */ new Set([
|
|
7745
|
+
"llm:media:describe",
|
|
7746
|
+
"tool:image-generate",
|
|
7747
|
+
"tool:image-edit"
|
|
7748
|
+
]);
|
|
7749
|
+
__name(isModelCallCategory, "isModelCallCategory");
|
|
7750
|
+
__name4(isModelCallCategory, "isModelCallCategory");
|
|
7751
|
+
__name(deriveUsageSurface, "deriveUsageSurface");
|
|
7752
|
+
__name4(deriveUsageSurface, "deriveUsageSurface");
|
|
7753
|
+
count = /* @__PURE__ */ __name4((v) => typeof v === "number" && Number.isFinite(v) && v >= 0 ? Math.floor(v) : void 0, "count");
|
|
7754
|
+
__name(fromRaw, "fromRaw");
|
|
7755
|
+
__name4(fromRaw, "fromRaw");
|
|
7756
|
+
__name(anthropicMessageUsage, "anthropicMessageUsage");
|
|
7757
|
+
__name4(anthropicMessageUsage, "anthropicMessageUsage");
|
|
7758
|
+
AnthropicSseUsageReader = class {
|
|
7759
|
+
static {
|
|
7760
|
+
__name(this, "AnthropicSseUsageReader");
|
|
7761
|
+
}
|
|
7762
|
+
static {
|
|
7763
|
+
__name4(this, "AnthropicSseUsageReader");
|
|
7764
|
+
}
|
|
7765
|
+
pending = "";
|
|
7766
|
+
raw;
|
|
7767
|
+
id;
|
|
7768
|
+
model;
|
|
7769
|
+
push(chunk) {
|
|
7770
|
+
const text2 = this.pending + chunk;
|
|
7771
|
+
const lines = text2.split("\n");
|
|
7772
|
+
this.pending = lines.pop() ?? "";
|
|
7773
|
+
for (const line of lines) this.line(line);
|
|
7774
|
+
}
|
|
7775
|
+
result() {
|
|
7776
|
+
if (this.pending) {
|
|
7777
|
+
this.line(this.pending);
|
|
7778
|
+
this.pending = "";
|
|
7779
|
+
}
|
|
7780
|
+
return this.raw ? fromRaw(this.raw, this.id, this.model) : void 0;
|
|
7781
|
+
}
|
|
7782
|
+
line(line) {
|
|
7783
|
+
const trimmed = line.trim();
|
|
7784
|
+
if (!trimmed.startsWith("data:")) return;
|
|
7785
|
+
let event;
|
|
7786
|
+
try {
|
|
7787
|
+
event = JSON.parse(trimmed.slice(5).trim());
|
|
7788
|
+
} catch {
|
|
7789
|
+
return;
|
|
7790
|
+
}
|
|
7791
|
+
if (event.type === "message_start" && event.message) {
|
|
7792
|
+
this.id = event.message.id;
|
|
7793
|
+
this.model = event.message.model;
|
|
7794
|
+
this.raw = {
|
|
7795
|
+
...event.message.usage ?? {}
|
|
7796
|
+
};
|
|
7797
|
+
} else if (event.type === "message_delta" && event.usage && typeof event.usage === "object") {
|
|
7798
|
+
const delta = event.usage;
|
|
7799
|
+
const merged = {
|
|
7800
|
+
...this.raw ?? {}
|
|
7801
|
+
};
|
|
7802
|
+
for (const [key, value3] of Object.entries(delta)) {
|
|
7803
|
+
if (value3 !== null && value3 !== void 0) merged[key] = value3;
|
|
7804
|
+
}
|
|
7805
|
+
this.raw = merged;
|
|
7806
|
+
}
|
|
7807
|
+
}
|
|
7808
|
+
};
|
|
7809
|
+
__name(parseAnthropicReplyUsage, "parseAnthropicReplyUsage");
|
|
7810
|
+
__name4(parseAnthropicReplyUsage, "parseAnthropicReplyUsage");
|
|
7337
7811
|
SUPERVISION_OPS = {
|
|
7338
7812
|
"agents.list": "discover",
|
|
7339
7813
|
"agents.get": "discover",
|
|
@@ -9317,6 +9791,10 @@ var init_dist = __esm({
|
|
|
9317
9791
|
name: "close",
|
|
9318
9792
|
description: "Close the session\u2019s browser."
|
|
9319
9793
|
},
|
|
9794
|
+
{
|
|
9795
|
+
name: "read",
|
|
9796
|
+
description: "Read one page in a fresh session that is closed afterwards: open the URL, wait, return its title and content. Args: url, waitFor?(load|networkidle|selector), selector?, format?(text|html|markdown), timeoutMs?."
|
|
9797
|
+
},
|
|
9320
9798
|
// perception
|
|
9321
9799
|
{
|
|
9322
9800
|
name: "snapshot",
|
|
@@ -9490,6 +9968,62 @@ var init_dist = __esm({
|
|
|
9490
9968
|
}
|
|
9491
9969
|
];
|
|
9492
9970
|
BROWSER_COMMAND_NAMES = BROWSER_COMMANDS.map((c) => c.name);
|
|
9971
|
+
SERVER_TRIGGERED_BROWSER_SOURCES = [
|
|
9972
|
+
"job",
|
|
9973
|
+
"webhook",
|
|
9974
|
+
"web-route",
|
|
9975
|
+
"trigger",
|
|
9976
|
+
"workflow-step",
|
|
9977
|
+
"workflow-script"
|
|
9978
|
+
];
|
|
9979
|
+
__name(isServerTriggeredBrowserSource, "isServerTriggeredBrowserSource");
|
|
9980
|
+
__name4(isServerTriggeredBrowserSource, "isServerTriggeredBrowserSource");
|
|
9981
|
+
BROWSER_FALLBACKS = [
|
|
9982
|
+
"browser-use",
|
|
9983
|
+
"none"
|
|
9984
|
+
];
|
|
9985
|
+
DEFAULT_BROWSER_FALLBACK = "browser-use";
|
|
9986
|
+
__name(resolveBrowserFallback, "resolveBrowserFallback");
|
|
9987
|
+
__name4(resolveBrowserFallback, "resolveBrowserFallback");
|
|
9988
|
+
PROXY_COUNTRY_CODE = /^[a-z]{2}$/;
|
|
9989
|
+
__name(resolveBrowserProxyCountry, "resolveBrowserProxyCountry");
|
|
9990
|
+
__name4(resolveBrowserProxyCountry, "resolveBrowserProxyCountry");
|
|
9991
|
+
BROWSER_LOG_CONTENT_MODES = [
|
|
9992
|
+
"summary",
|
|
9993
|
+
"full",
|
|
9994
|
+
"none"
|
|
9995
|
+
];
|
|
9996
|
+
DEFAULT_BROWSER_LOG_CONTENT = "summary";
|
|
9997
|
+
BROWSER_SCREENSHOT_POLICIES = [
|
|
9998
|
+
"always",
|
|
9999
|
+
"onError",
|
|
10000
|
+
"never"
|
|
10001
|
+
];
|
|
10002
|
+
DEFAULT_BROWSER_SCREENSHOT_POLICY = "onError";
|
|
10003
|
+
__name(resolveBrowserLogOptions, "resolveBrowserLogOptions");
|
|
10004
|
+
__name4(resolveBrowserLogOptions, "resolveBrowserLogOptions");
|
|
10005
|
+
BROWSER_PROFILE_NAME_PATTERN = /^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$/;
|
|
10006
|
+
__name(browserProfileNotFoundMessage, "browserProfileNotFoundMessage");
|
|
10007
|
+
__name4(browserProfileNotFoundMessage, "browserProfileNotFoundMessage");
|
|
10008
|
+
BROWSER_LIMIT_KEYS = [
|
|
10009
|
+
"maxSessionMinutes",
|
|
10010
|
+
"idleTimeoutSeconds",
|
|
10011
|
+
"maxConcurrentSessions"
|
|
10012
|
+
];
|
|
10013
|
+
BROWSER_LIMIT_MAX = {
|
|
10014
|
+
maxSessionMinutes: 60,
|
|
10015
|
+
idleTimeoutSeconds: 15 * 60,
|
|
10016
|
+
maxConcurrentSessions: 100
|
|
10017
|
+
};
|
|
10018
|
+
__name(resolveBrowserLimits, "resolveBrowserLimits");
|
|
10019
|
+
__name4(resolveBrowserLimits, "resolveBrowserLimits");
|
|
10020
|
+
BROWSER_EXECUTE_METHOD = "execute";
|
|
10021
|
+
BROWSER_GLOBAL_METHODS = [
|
|
10022
|
+
...BROWSER_COMMAND_NAMES,
|
|
10023
|
+
BROWSER_EXECUTE_METHOD
|
|
10024
|
+
];
|
|
10025
|
+
BROWSER_EXECUTE_DEFAULT_TIMEOUT_MS = 5 * 60 * 1e3;
|
|
10026
|
+
BROWSER_EXECUTE_MAX_TIMEOUT_MS = 15 * 60 * 1e3;
|
|
9493
10027
|
LOG_FIELDS_MAX_KEYS = 32;
|
|
9494
10028
|
LOG_FIELD_MAX_VALUE_BYTES = 1024;
|
|
9495
10029
|
LOG_FIELDS_MAX_BYTES = 8192;
|
|
@@ -9555,6 +10089,308 @@ var init_dist = __esm({
|
|
|
9555
10089
|
__name4(isDesktopFileCommandName, "isDesktopFileCommandName");
|
|
9556
10090
|
__name(isDesktopFileSessionId, "isDesktopFileSessionId");
|
|
9557
10091
|
__name4(isDesktopFileSessionId, "isDesktopFileSessionId");
|
|
10092
|
+
BROWSER_READ_FORMATS = [
|
|
10093
|
+
"text",
|
|
10094
|
+
"html",
|
|
10095
|
+
"markdown"
|
|
10096
|
+
];
|
|
10097
|
+
BROWSER_READ_DEFAULT_TIMEOUT_MS = 6e4;
|
|
10098
|
+
BROWSER_READ_MIN_TIMEOUT_MS = 1e3;
|
|
10099
|
+
BROWSER_READ_MAX_TIMEOUT_MS = 1e5;
|
|
10100
|
+
BROWSER_READ_MAX_CONTENT_CHARS = 1e5;
|
|
10101
|
+
BROWSER_READ_DEFAULT_SELECTOR = "body";
|
|
10102
|
+
BROWSER_READ_MATCH_SEPARATOR = "\n\n";
|
|
10103
|
+
BROWSER_READ_LOGIN_BLOCKER = "login_required";
|
|
10104
|
+
BROWSER_ERROR_NAME = "BrowserError";
|
|
10105
|
+
__name(browserError, "browserError");
|
|
10106
|
+
__name4(browserError, "browserError");
|
|
10107
|
+
__name(isRecord, "isRecord");
|
|
10108
|
+
__name4(isRecord, "isRecord");
|
|
10109
|
+
__name(optionalString, "optionalString");
|
|
10110
|
+
__name4(optionalString, "optionalString");
|
|
10111
|
+
__name(readUrl, "readUrl");
|
|
10112
|
+
__name4(readUrl, "readUrl");
|
|
10113
|
+
__name(readFormat, "readFormat");
|
|
10114
|
+
__name4(readFormat, "readFormat");
|
|
10115
|
+
__name(readTimeout, "readTimeout");
|
|
10116
|
+
__name4(readTimeout, "readTimeout");
|
|
10117
|
+
__name(parseBrowserReadPayload, "parseBrowserReadPayload");
|
|
10118
|
+
__name4(parseBrowserReadPayload, "parseBrowserReadPayload");
|
|
10119
|
+
__name(clampBrowserReadContent, "clampBrowserReadContent");
|
|
10120
|
+
__name4(clampBrowserReadContent, "clampBrowserReadContent");
|
|
10121
|
+
__name(joinBrowserReadMatches, "joinBrowserReadMatches");
|
|
10122
|
+
__name4(joinBrowserReadMatches, "joinBrowserReadMatches");
|
|
10123
|
+
HTTP_STATUS_FAILURE = /ERR_HTTP_RESPONSE_CODE_FAILURE/;
|
|
10124
|
+
__name(isBrowserReadHttpFailure, "isBrowserReadHttpFailure");
|
|
10125
|
+
__name4(isBrowserReadHttpFailure, "isBrowserReadHttpFailure");
|
|
10126
|
+
__name(browserReadHttpErrorMessage, "browserReadHttpErrorMessage");
|
|
10127
|
+
__name4(browserReadHttpErrorMessage, "browserReadHttpErrorMessage");
|
|
10128
|
+
__name(urlOf, "urlOf");
|
|
10129
|
+
__name4(urlOf, "urlOf");
|
|
10130
|
+
__name(answeredDocuments, "answeredDocuments");
|
|
10131
|
+
__name4(answeredDocuments, "answeredDocuments");
|
|
10132
|
+
__name(documentStatusOf, "documentStatusOf");
|
|
10133
|
+
__name4(documentStatusOf, "documentStatusOf");
|
|
10134
|
+
LOGIN_PATH_SEGMENTS = /* @__PURE__ */ new Set([
|
|
10135
|
+
"login",
|
|
10136
|
+
"log-in",
|
|
10137
|
+
"logon",
|
|
10138
|
+
"signin",
|
|
10139
|
+
"sign-in",
|
|
10140
|
+
"sign_in",
|
|
10141
|
+
"auth",
|
|
10142
|
+
"authenticate",
|
|
10143
|
+
"authorize",
|
|
10144
|
+
"sso"
|
|
10145
|
+
]);
|
|
10146
|
+
LOGIN_HOST_LABELS = /* @__PURE__ */ new Set([
|
|
10147
|
+
"login",
|
|
10148
|
+
"signin",
|
|
10149
|
+
"auth",
|
|
10150
|
+
"sso"
|
|
10151
|
+
]);
|
|
10152
|
+
__name(isLoginUrl, "isLoginUrl");
|
|
10153
|
+
__name4(isLoginUrl, "isLoginUrl");
|
|
10154
|
+
__name(isLoginRedirect, "isLoginRedirect");
|
|
10155
|
+
__name4(isLoginRedirect, "isLoginRedirect");
|
|
10156
|
+
__name(browserReadLoginBlock, "browserReadLoginBlock");
|
|
10157
|
+
__name4(browserReadLoginBlock, "browserReadLoginBlock");
|
|
10158
|
+
AGENT_LOG_SOURCES = [
|
|
10159
|
+
"skill",
|
|
10160
|
+
"job",
|
|
10161
|
+
"webhook",
|
|
10162
|
+
"web-route",
|
|
10163
|
+
"trigger",
|
|
10164
|
+
"preprocessor",
|
|
10165
|
+
"postprocessor",
|
|
10166
|
+
"user_message",
|
|
10167
|
+
"agent_response",
|
|
10168
|
+
"agent_error",
|
|
10169
|
+
"runtime",
|
|
10170
|
+
"mcp",
|
|
10171
|
+
"rag",
|
|
10172
|
+
"device",
|
|
10173
|
+
"device-trigger",
|
|
10174
|
+
"model-resolver",
|
|
10175
|
+
"workflow-step",
|
|
10176
|
+
"workflow-script",
|
|
10177
|
+
"workflow",
|
|
10178
|
+
"supervision",
|
|
10179
|
+
"browser",
|
|
10180
|
+
"decisions"
|
|
10181
|
+
];
|
|
10182
|
+
AGENT_LOG_ENVIRONMENTS = [
|
|
10183
|
+
"production",
|
|
10184
|
+
"sandbox"
|
|
10185
|
+
];
|
|
10186
|
+
AGENT_LOG_FIELDS_MAX_WIRE_KEYS = LOG_FIELDS_MAX_KEYS + 1;
|
|
10187
|
+
__name(utf8Bytes, "utf8Bytes");
|
|
10188
|
+
__name4(utf8Bytes, "utf8Bytes");
|
|
10189
|
+
__name(isPlainFieldKey, "isPlainFieldKey");
|
|
10190
|
+
__name4(isPlainFieldKey, "isPlainFieldKey");
|
|
10191
|
+
__name(describeAgentLogFieldsViolation, "describeAgentLogFieldsViolation");
|
|
10192
|
+
__name4(describeAgentLogFieldsViolation, "describeAgentLogFieldsViolation");
|
|
10193
|
+
__name(isAgentLogFields, "isAgentLogFields");
|
|
10194
|
+
__name4(isAgentLogFields, "isAgentLogFields");
|
|
10195
|
+
BROWSER_LOG_EVENT_KINDS = [
|
|
10196
|
+
"session.opened",
|
|
10197
|
+
"command",
|
|
10198
|
+
"navigation",
|
|
10199
|
+
"blocked",
|
|
10200
|
+
"wall",
|
|
10201
|
+
"fallback",
|
|
10202
|
+
"confirm",
|
|
10203
|
+
"agent.step",
|
|
10204
|
+
"session.closed"
|
|
10205
|
+
];
|
|
10206
|
+
BROWSER_LOG_ENGINES = [
|
|
10207
|
+
"desktop",
|
|
10208
|
+
"agent-browser",
|
|
10209
|
+
"browser-use",
|
|
10210
|
+
"none"
|
|
10211
|
+
];
|
|
10212
|
+
BROWSER_SESSION_OPEN_REASONS = [
|
|
10213
|
+
"desktop-online",
|
|
10214
|
+
"cloud-fallback",
|
|
10215
|
+
"stepwise-cloud",
|
|
10216
|
+
"pinned",
|
|
10217
|
+
"none"
|
|
10218
|
+
];
|
|
10219
|
+
BROWSER_BLOCK_KINDS = [
|
|
10220
|
+
"domain",
|
|
10221
|
+
"private-network",
|
|
10222
|
+
"policy",
|
|
10223
|
+
"concurrency",
|
|
10224
|
+
"bot-block"
|
|
10225
|
+
];
|
|
10226
|
+
BROWSER_WALL_KINDS = [
|
|
10227
|
+
"captcha",
|
|
10228
|
+
"bot-block",
|
|
10229
|
+
"consent",
|
|
10230
|
+
"login",
|
|
10231
|
+
"empty-content"
|
|
10232
|
+
];
|
|
10233
|
+
BROWSER_WALL_NEXT_ACTIONS = [
|
|
10234
|
+
"fallback",
|
|
10235
|
+
"retry",
|
|
10236
|
+
"ask-user",
|
|
10237
|
+
"gave-up"
|
|
10238
|
+
];
|
|
10239
|
+
BROWSER_CONFIRM_DECISIONS = [
|
|
10240
|
+
"pending",
|
|
10241
|
+
"approved",
|
|
10242
|
+
"denied",
|
|
10243
|
+
"expired"
|
|
10244
|
+
];
|
|
10245
|
+
BROWSER_SESSION_CLOSE_REASONS = [
|
|
10246
|
+
"done",
|
|
10247
|
+
"idle",
|
|
10248
|
+
"max-minutes",
|
|
10249
|
+
"max-steps",
|
|
10250
|
+
"cost-cap",
|
|
10251
|
+
"error",
|
|
10252
|
+
"reaped"
|
|
10253
|
+
];
|
|
10254
|
+
BROWSER_LOG_CONTEXT_KEYS = [
|
|
10255
|
+
"runId",
|
|
10256
|
+
"executionId",
|
|
10257
|
+
"primitiveId",
|
|
10258
|
+
"primitiveName",
|
|
10259
|
+
"channel",
|
|
10260
|
+
"orgId",
|
|
10261
|
+
"environment",
|
|
10262
|
+
"agentVersion"
|
|
10263
|
+
];
|
|
10264
|
+
BROWSER_LOG_ID_MAX_CHARS = 256;
|
|
10265
|
+
BROWSER_LOG_TEXT_MAX_CHARS = 64 * 1024;
|
|
10266
|
+
isString = /* @__PURE__ */ __name4((value3) => typeof value3 === "string", "isString");
|
|
10267
|
+
isBoolean = /* @__PURE__ */ __name4((value3) => typeof value3 === "boolean", "isBoolean");
|
|
10268
|
+
isCount = /* @__PURE__ */ __name4((value3) => typeof value3 === "number" && Number.isFinite(value3) && value3 >= 0, "isCount");
|
|
10269
|
+
isPlainObject2 = /* @__PURE__ */ __name4((value3) => typeof value3 === "object" && value3 !== null && !Array.isArray(value3), "isPlainObject");
|
|
10270
|
+
oneOf = /* @__PURE__ */ __name4((values) => (value3) => typeof value3 === "string" && values.includes(value3), "oneOf");
|
|
10271
|
+
isLimits = /* @__PURE__ */ __name4((value3) => isPlainObject2(value3) && Object.values(value3).every((entry) => isCount(entry)), "isLimits");
|
|
10272
|
+
EVENT_SHAPES = {
|
|
10273
|
+
"session.opened": {
|
|
10274
|
+
required: {
|
|
10275
|
+
reason: oneOf(BROWSER_SESSION_OPEN_REASONS)
|
|
10276
|
+
},
|
|
10277
|
+
optional: {
|
|
10278
|
+
limits: isLimits,
|
|
10279
|
+
region: isString,
|
|
10280
|
+
liveUrl: isString
|
|
10281
|
+
}
|
|
10282
|
+
},
|
|
10283
|
+
command: {
|
|
10284
|
+
required: {
|
|
10285
|
+
name: oneOf(BROWSER_COMMAND_NAMES),
|
|
10286
|
+
durationMs: isCount,
|
|
10287
|
+
ok: isBoolean
|
|
10288
|
+
},
|
|
10289
|
+
optional: {
|
|
10290
|
+
args: isPlainObject2,
|
|
10291
|
+
urlBefore: isString,
|
|
10292
|
+
urlAfter: isString,
|
|
10293
|
+
resultBytes: isCount,
|
|
10294
|
+
errorCode: isString,
|
|
10295
|
+
errorMessage: isString,
|
|
10296
|
+
title: isString,
|
|
10297
|
+
pageText: isString,
|
|
10298
|
+
screenshotRef: isString
|
|
10299
|
+
}
|
|
10300
|
+
},
|
|
10301
|
+
navigation: {
|
|
10302
|
+
required: {
|
|
10303
|
+
url: isString
|
|
10304
|
+
},
|
|
10305
|
+
optional: {
|
|
10306
|
+
finalUrl: isString,
|
|
10307
|
+
status: isCount,
|
|
10308
|
+
redirects: isCount
|
|
10309
|
+
}
|
|
10310
|
+
},
|
|
10311
|
+
blocked: {
|
|
10312
|
+
required: {
|
|
10313
|
+
kind: oneOf(BROWSER_BLOCK_KINDS)
|
|
10314
|
+
},
|
|
10315
|
+
optional: {
|
|
10316
|
+
rule: isString,
|
|
10317
|
+
target: isString,
|
|
10318
|
+
command: oneOf(BROWSER_COMMAND_NAMES),
|
|
10319
|
+
reason: isString
|
|
10320
|
+
}
|
|
10321
|
+
},
|
|
10322
|
+
wall: {
|
|
10323
|
+
required: {
|
|
10324
|
+
kind: oneOf(BROWSER_WALL_KINDS),
|
|
10325
|
+
url: isString,
|
|
10326
|
+
nextAction: oneOf(BROWSER_WALL_NEXT_ACTIONS)
|
|
10327
|
+
},
|
|
10328
|
+
optional: {}
|
|
10329
|
+
},
|
|
10330
|
+
fallback: {
|
|
10331
|
+
required: {
|
|
10332
|
+
from: oneOf(BROWSER_LOG_ENGINES),
|
|
10333
|
+
to: oneOf(BROWSER_LOG_ENGINES),
|
|
10334
|
+
reason: isString,
|
|
10335
|
+
provider: isString
|
|
10336
|
+
},
|
|
10337
|
+
optional: {}
|
|
10338
|
+
},
|
|
10339
|
+
confirm: {
|
|
10340
|
+
required: {
|
|
10341
|
+
action: isString,
|
|
10342
|
+
decision: oneOf(BROWSER_CONFIRM_DECISIONS)
|
|
10343
|
+
},
|
|
10344
|
+
optional: {
|
|
10345
|
+
decidedBy: isString
|
|
10346
|
+
}
|
|
10347
|
+
},
|
|
10348
|
+
"agent.step": {
|
|
10349
|
+
required: {
|
|
10350
|
+
step: isCount,
|
|
10351
|
+
action: isString
|
|
10352
|
+
},
|
|
10353
|
+
optional: {
|
|
10354
|
+
intent: isString,
|
|
10355
|
+
url: isString
|
|
10356
|
+
}
|
|
10357
|
+
},
|
|
10358
|
+
"session.closed": {
|
|
10359
|
+
required: {
|
|
10360
|
+
reason: oneOf(BROWSER_SESSION_CLOSE_REASONS),
|
|
10361
|
+
durationMs: isCount,
|
|
10362
|
+
pagesVisited: isCount,
|
|
10363
|
+
bytes: isCount
|
|
10364
|
+
},
|
|
10365
|
+
optional: {
|
|
10366
|
+
costUsd: isCount
|
|
10367
|
+
}
|
|
10368
|
+
}
|
|
10369
|
+
};
|
|
10370
|
+
BASE_KEYS = /* @__PURE__ */ new Set([
|
|
10371
|
+
"event",
|
|
10372
|
+
"sessionId",
|
|
10373
|
+
"engine",
|
|
10374
|
+
"at"
|
|
10375
|
+
]);
|
|
10376
|
+
__name(describeBaseViolation, "describeBaseViolation");
|
|
10377
|
+
__name4(describeBaseViolation, "describeBaseViolation");
|
|
10378
|
+
__name(describeFieldViolation, "describeFieldViolation");
|
|
10379
|
+
__name4(describeFieldViolation, "describeFieldViolation");
|
|
10380
|
+
__name(describeBrowserLogEventViolation, "describeBrowserLogEventViolation");
|
|
10381
|
+
__name4(describeBrowserLogEventViolation, "describeBrowserLogEventViolation");
|
|
10382
|
+
__name(isBrowserLogEvent, "isBrowserLogEvent");
|
|
10383
|
+
__name4(isBrowserLogEvent, "isBrowserLogEvent");
|
|
10384
|
+
__name(describeBrowserLogContextViolation, "describeBrowserLogContextViolation");
|
|
10385
|
+
__name4(describeBrowserLogContextViolation, "describeBrowserLogContextViolation");
|
|
10386
|
+
BROWSER_WORKER_SESSION_ID_SEPARATOR = ":";
|
|
10387
|
+
__name(browserWorkerSessionId, "browserWorkerSessionId");
|
|
10388
|
+
__name4(browserWorkerSessionId, "browserWorkerSessionId");
|
|
10389
|
+
BROWSER_WORKER_BLOCK_REASON_MAX_CHARS = 1024;
|
|
10390
|
+
__name(browserLogContextOfWorkerContext, "browserLogContextOfWorkerContext");
|
|
10391
|
+
__name4(browserLogContextOfWorkerContext, "browserLogContextOfWorkerContext");
|
|
10392
|
+
__name(browserLogEventOfWorkerEvent, "browserLogEventOfWorkerEvent");
|
|
10393
|
+
__name4(browserLogEventOfWorkerEvent, "browserLogEventOfWorkerEvent");
|
|
9558
10394
|
WORKFLOW_RETRY_BACKOFFS = [
|
|
9559
10395
|
"fixed",
|
|
9560
10396
|
"exponential"
|
|
@@ -9856,38 +10692,6 @@ This text is who you are for this person. As you learn them, their name, their w
|
|
|
9856
10692
|
`;
|
|
9857
10693
|
__name(buildPersonalSpaceStartingPersona, "buildPersonalSpaceStartingPersona");
|
|
9858
10694
|
__name4(buildPersonalSpaceStartingPersona, "buildPersonalSpaceStartingPersona");
|
|
9859
|
-
AGENT_LOG_SOURCES = [
|
|
9860
|
-
"skill",
|
|
9861
|
-
"job",
|
|
9862
|
-
"webhook",
|
|
9863
|
-
"web-route",
|
|
9864
|
-
"trigger",
|
|
9865
|
-
"preprocessor",
|
|
9866
|
-
"postprocessor",
|
|
9867
|
-
"user_message",
|
|
9868
|
-
"agent_response",
|
|
9869
|
-
"agent_error",
|
|
9870
|
-
"runtime",
|
|
9871
|
-
"mcp",
|
|
9872
|
-
"rag",
|
|
9873
|
-
"device",
|
|
9874
|
-
"device-trigger",
|
|
9875
|
-
"model-resolver",
|
|
9876
|
-
"workflow-step",
|
|
9877
|
-
"workflow-script",
|
|
9878
|
-
"workflow",
|
|
9879
|
-
"supervision",
|
|
9880
|
-
"decisions"
|
|
9881
|
-
];
|
|
9882
|
-
AGENT_LOG_FIELDS_MAX_WIRE_KEYS = LOG_FIELDS_MAX_KEYS + 1;
|
|
9883
|
-
__name(utf8Bytes, "utf8Bytes");
|
|
9884
|
-
__name4(utf8Bytes, "utf8Bytes");
|
|
9885
|
-
__name(isPlainFieldKey, "isPlainFieldKey");
|
|
9886
|
-
__name4(isPlainFieldKey, "isPlainFieldKey");
|
|
9887
|
-
__name(describeAgentLogFieldsViolation, "describeAgentLogFieldsViolation");
|
|
9888
|
-
__name4(describeAgentLogFieldsViolation, "describeAgentLogFieldsViolation");
|
|
9889
|
-
__name(isAgentLogFields, "isAgentLogFields");
|
|
9890
|
-
__name4(isAgentLogFields, "isAgentLogFields");
|
|
9891
10695
|
LOG_DRAIN_TYPES_PHASE1 = [
|
|
9892
10696
|
"http",
|
|
9893
10697
|
"otlp",
|
|
@@ -10180,8 +10984,8 @@ This text is who you are for this person. As you learn them, their name, their w
|
|
|
10180
10984
|
CORE_DRAINING_CODE = "CORE_DRAINING";
|
|
10181
10985
|
CORE_DRAINING_DEFAULT_RETRY_MS = 1e3;
|
|
10182
10986
|
CORE_DRAINING_MAX_RETRY_MS = 5e3;
|
|
10183
|
-
__name(
|
|
10184
|
-
__name4(
|
|
10987
|
+
__name(isRecord2, "isRecord2");
|
|
10988
|
+
__name4(isRecord2, "isRecord");
|
|
10185
10989
|
__name(isCoreDrainingErrorResponse, "isCoreDrainingErrorResponse");
|
|
10186
10990
|
__name4(isCoreDrainingErrorResponse, "isCoreDrainingErrorResponse");
|
|
10187
10991
|
__name(coreDrainingRetryDelayMs, "coreDrainingRetryDelayMs");
|
|
@@ -10211,7 +11015,7 @@ This text is who you are for this person. As you learn them, their name, their w
|
|
|
10211
11015
|
ModelDescriptorSchema = z2.string().min(1).max(200);
|
|
10212
11016
|
InferenceModelSchema = z2.object({
|
|
10213
11017
|
kind: z2.literal("inference"),
|
|
10214
|
-
/** Provider-prefixed model id (e.g. `'openai/
|
|
11018
|
+
/** Provider-prefixed model id (e.g. `'openai/chat-latest'`). */
|
|
10215
11019
|
model: ModelDescriptorSchema,
|
|
10216
11020
|
/**
|
|
10217
11021
|
* TTS-only — provider voice id. Inference's TTS API takes voice
|
|
@@ -12616,6 +13420,218 @@ var init_auth_error = __esm({
|
|
|
12616
13420
|
}
|
|
12617
13421
|
});
|
|
12618
13422
|
|
|
13423
|
+
// ../sandbox-runtime/dist/decisions-api.mjs
|
|
13424
|
+
function isRecord3(value3) {
|
|
13425
|
+
return typeof value3 === "object" && value3 !== null && !Array.isArray(value3);
|
|
13426
|
+
}
|
|
13427
|
+
function isProvider(value3) {
|
|
13428
|
+
return DECISION_PROVIDERS.includes(value3);
|
|
13429
|
+
}
|
|
13430
|
+
function invalid2(message) {
|
|
13431
|
+
return new DecisionError(message, {
|
|
13432
|
+
code: DECISION_ERROR_CODES.INVALID
|
|
13433
|
+
});
|
|
13434
|
+
}
|
|
13435
|
+
function assertInstructions(builder, instructions) {
|
|
13436
|
+
if (typeof instructions !== "string" || instructions.trim().length === 0) {
|
|
13437
|
+
throw invalid2(`Decisions.${builder} needs non-empty instructions`);
|
|
13438
|
+
}
|
|
13439
|
+
if (instructions.length > DECISION_LIMITS.maxInstructionChars) {
|
|
13440
|
+
throw invalid2(`Decisions.${builder} instructions must be at most ${DECISION_LIMITS.maxInstructionChars} characters`);
|
|
13441
|
+
}
|
|
13442
|
+
}
|
|
13443
|
+
function assertCount(what, count2, min, max) {
|
|
13444
|
+
if (count2 < min || count2 > max) {
|
|
13445
|
+
throw invalid2(`${what} must hold ${min} to ${max} entries, got ${count2}`);
|
|
13446
|
+
}
|
|
13447
|
+
}
|
|
13448
|
+
function odds(instructions, criteria) {
|
|
13449
|
+
assertInstructions("odds", instructions);
|
|
13450
|
+
if (criteria === void 0) return {
|
|
13451
|
+
type: "odds",
|
|
13452
|
+
instructions
|
|
13453
|
+
};
|
|
13454
|
+
if (!isRecord3(criteria)) throw invalid2("Decisions.odds criteria must be an object like { yes, no }");
|
|
13455
|
+
return {
|
|
13456
|
+
type: "odds",
|
|
13457
|
+
instructions,
|
|
13458
|
+
criteria
|
|
13459
|
+
};
|
|
13460
|
+
}
|
|
13461
|
+
function choice(instructions, options) {
|
|
13462
|
+
assertInstructions("choice", instructions);
|
|
13463
|
+
if (!isRecord3(options)) throw invalid2("Decisions.choice options must be an object of label to description");
|
|
13464
|
+
assertCount("Decisions.choice options", Object.keys(options).length, DECISION_LIMITS.minOptions, DECISION_LIMITS.maxOptions);
|
|
13465
|
+
return {
|
|
13466
|
+
type: "choice",
|
|
13467
|
+
instructions,
|
|
13468
|
+
options
|
|
13469
|
+
};
|
|
13470
|
+
}
|
|
13471
|
+
function score(instructions, levels) {
|
|
13472
|
+
assertInstructions("score", instructions);
|
|
13473
|
+
if (!Array.isArray(levels)) throw invalid2("Decisions.score levels must be an array");
|
|
13474
|
+
assertCount("Decisions.score levels", levels.length, DECISION_LIMITS.minLevels, DECISION_LIMITS.maxLevels);
|
|
13475
|
+
return {
|
|
13476
|
+
type: "score",
|
|
13477
|
+
instructions,
|
|
13478
|
+
levels
|
|
13479
|
+
};
|
|
13480
|
+
}
|
|
13481
|
+
function assertDecisionQuestion(name, question) {
|
|
13482
|
+
if (!isRecord3(question) || !DECISION_QUESTION_TYPES.includes(question.type)) {
|
|
13483
|
+
throw invalid2(`questions.${name} must be built with Decisions.odds, Decisions.choice or Decisions.score`);
|
|
13484
|
+
}
|
|
13485
|
+
if (typeof question.instructions !== "string" || question.instructions.trim().length === 0) {
|
|
13486
|
+
throw invalid2(`questions.${name}.instructions must be a non-empty string`);
|
|
13487
|
+
}
|
|
13488
|
+
}
|
|
13489
|
+
function checkDecisionRequest(request) {
|
|
13490
|
+
if (!isRecord3(request)) {
|
|
13491
|
+
throw invalid2("Decisions.ask needs { state, questions } or (state, question)");
|
|
13492
|
+
}
|
|
13493
|
+
if (request.state === void 0 || request.state === null) {
|
|
13494
|
+
throw invalid2("Decisions.ask needs a state");
|
|
13495
|
+
}
|
|
13496
|
+
if (!isRecord3(request.questions) || Object.keys(request.questions).length === 0) {
|
|
13497
|
+
throw invalid2("Decisions.ask needs at least one question in questions");
|
|
13498
|
+
}
|
|
13499
|
+
for (const [name, question] of Object.entries(request.questions)) assertDecisionQuestion(name, question);
|
|
13500
|
+
return request;
|
|
13501
|
+
}
|
|
13502
|
+
function checkDecisionRunRequest(request) {
|
|
13503
|
+
if (typeof request.name !== "string" || !DECISION_NAME_PATTERN.test(request.name)) {
|
|
13504
|
+
throw invalid2("Decisions.run needs the name of a decision declared on the agent");
|
|
13505
|
+
}
|
|
13506
|
+
if (request.state === void 0 || request.state === null) {
|
|
13507
|
+
throw invalid2("Decisions.run needs a state");
|
|
13508
|
+
}
|
|
13509
|
+
return request;
|
|
13510
|
+
}
|
|
13511
|
+
function toDecisionError(caught) {
|
|
13512
|
+
if (caught instanceof DecisionError) return caught;
|
|
13513
|
+
const raw = isRecord3(caught) ? caught : {};
|
|
13514
|
+
const detail = typeof raw.message === "string" && raw.message.length > 0 ? raw.message : "Decision failed";
|
|
13515
|
+
const code = typeof raw.code === "string" && raw.code.length > 0 ? raw.code : DECISION_ERROR_CODES.UNAVAILABLE;
|
|
13516
|
+
const message = detail.startsWith(`${code}: `) ? detail : `${code}: ${detail}`;
|
|
13517
|
+
return new DecisionError(message, {
|
|
13518
|
+
code,
|
|
13519
|
+
...isProvider(raw.provider) && {
|
|
13520
|
+
provider: raw.provider
|
|
13521
|
+
},
|
|
13522
|
+
...typeof raw.upstreamStatus === "number" && {
|
|
13523
|
+
upstreamStatus: raw.upstreamStatus
|
|
13524
|
+
},
|
|
13525
|
+
...typeof raw.decisionId === "string" && {
|
|
13526
|
+
decisionId: raw.decisionId
|
|
13527
|
+
}
|
|
13528
|
+
});
|
|
13529
|
+
}
|
|
13530
|
+
function buildDecisionsApi(transport) {
|
|
13531
|
+
async function relay2(send) {
|
|
13532
|
+
if (!transport) {
|
|
13533
|
+
throw new DecisionError("Decisions is not available in this runtime", {
|
|
13534
|
+
code: DECISION_ERROR_CODES.UNAVAILABLE
|
|
13535
|
+
});
|
|
13536
|
+
}
|
|
13537
|
+
try {
|
|
13538
|
+
return await send(transport);
|
|
13539
|
+
} catch (caught) {
|
|
13540
|
+
throw toDecisionError(caught);
|
|
13541
|
+
}
|
|
13542
|
+
}
|
|
13543
|
+
__name(relay2, "relay");
|
|
13544
|
+
__name6(relay2, "relay");
|
|
13545
|
+
async function ask(requestOrState, question, options) {
|
|
13546
|
+
if (question === void 0) {
|
|
13547
|
+
const request2 = checkDecisionRequest(requestOrState);
|
|
13548
|
+
return relay2((t) => t.ask(request2));
|
|
13549
|
+
}
|
|
13550
|
+
const request = checkDecisionRequest({
|
|
13551
|
+
...options,
|
|
13552
|
+
state: requestOrState,
|
|
13553
|
+
questions: {
|
|
13554
|
+
[SINGLE_DECISION_KEY]: question
|
|
13555
|
+
}
|
|
13556
|
+
});
|
|
13557
|
+
const result = await relay2((t) => t.ask(request));
|
|
13558
|
+
return result.answers[SINGLE_DECISION_KEY];
|
|
13559
|
+
}
|
|
13560
|
+
__name(ask, "ask");
|
|
13561
|
+
__name6(ask, "ask");
|
|
13562
|
+
async function run(name, state3, options) {
|
|
13563
|
+
const request = checkDecisionRunRequest({
|
|
13564
|
+
...options,
|
|
13565
|
+
name,
|
|
13566
|
+
state: state3
|
|
13567
|
+
});
|
|
13568
|
+
return await relay2((t) => t.run(request));
|
|
13569
|
+
}
|
|
13570
|
+
__name(run, "run");
|
|
13571
|
+
__name6(run, "run");
|
|
13572
|
+
return {
|
|
13573
|
+
ask,
|
|
13574
|
+
run,
|
|
13575
|
+
odds,
|
|
13576
|
+
choice,
|
|
13577
|
+
score
|
|
13578
|
+
};
|
|
13579
|
+
}
|
|
13580
|
+
var __defProp6, __name6, DECISION_ERROR_NAME, SINGLE_DECISION_KEY, DecisionError;
|
|
13581
|
+
var init_decisions_api = __esm({
|
|
13582
|
+
"../sandbox-runtime/dist/decisions-api.mjs"() {
|
|
13583
|
+
"use strict";
|
|
13584
|
+
init_dist();
|
|
13585
|
+
__defProp6 = Object.defineProperty;
|
|
13586
|
+
__name6 = /* @__PURE__ */ __name((target, value3) => __defProp6(target, "name", { value: value3, configurable: true }), "__name");
|
|
13587
|
+
DECISION_ERROR_NAME = "DecisionError";
|
|
13588
|
+
SINGLE_DECISION_KEY = "answer";
|
|
13589
|
+
DecisionError = class extends Error {
|
|
13590
|
+
static {
|
|
13591
|
+
__name(this, "DecisionError");
|
|
13592
|
+
}
|
|
13593
|
+
static {
|
|
13594
|
+
__name6(this, "DecisionError");
|
|
13595
|
+
}
|
|
13596
|
+
code;
|
|
13597
|
+
constructor(message, fields) {
|
|
13598
|
+
super(message);
|
|
13599
|
+
this.name = DECISION_ERROR_NAME;
|
|
13600
|
+
this.code = fields.code;
|
|
13601
|
+
if (fields.provider !== void 0) this.provider = fields.provider;
|
|
13602
|
+
if (fields.upstreamStatus !== void 0) this.upstreamStatus = fields.upstreamStatus;
|
|
13603
|
+
if (fields.decisionId !== void 0) this.decisionId = fields.decisionId;
|
|
13604
|
+
}
|
|
13605
|
+
};
|
|
13606
|
+
__name(isRecord3, "isRecord");
|
|
13607
|
+
__name6(isRecord3, "isRecord");
|
|
13608
|
+
__name(isProvider, "isProvider");
|
|
13609
|
+
__name6(isProvider, "isProvider");
|
|
13610
|
+
__name(invalid2, "invalid");
|
|
13611
|
+
__name6(invalid2, "invalid");
|
|
13612
|
+
__name(assertInstructions, "assertInstructions");
|
|
13613
|
+
__name6(assertInstructions, "assertInstructions");
|
|
13614
|
+
__name(assertCount, "assertCount");
|
|
13615
|
+
__name6(assertCount, "assertCount");
|
|
13616
|
+
__name(odds, "odds");
|
|
13617
|
+
__name6(odds, "odds");
|
|
13618
|
+
__name(choice, "choice");
|
|
13619
|
+
__name6(choice, "choice");
|
|
13620
|
+
__name(score, "score");
|
|
13621
|
+
__name6(score, "score");
|
|
13622
|
+
__name(assertDecisionQuestion, "assertDecisionQuestion");
|
|
13623
|
+
__name6(assertDecisionQuestion, "assertDecisionQuestion");
|
|
13624
|
+
__name(checkDecisionRequest, "checkDecisionRequest");
|
|
13625
|
+
__name6(checkDecisionRequest, "checkDecisionRequest");
|
|
13626
|
+
__name(checkDecisionRunRequest, "checkDecisionRunRequest");
|
|
13627
|
+
__name6(checkDecisionRunRequest, "checkDecisionRunRequest");
|
|
13628
|
+
__name(toDecisionError, "toDecisionError");
|
|
13629
|
+
__name6(toDecisionError, "toDecisionError");
|
|
13630
|
+
__name(buildDecisionsApi, "buildDecisionsApi");
|
|
13631
|
+
__name6(buildDecisionsApi, "buildDecisionsApi");
|
|
13632
|
+
}
|
|
13633
|
+
});
|
|
13634
|
+
|
|
12619
13635
|
// src/errors/cli.error.ts
|
|
12620
13636
|
function apiErrorDetail(error) {
|
|
12621
13637
|
return {
|
|
@@ -12696,6 +13712,41 @@ function numericStatus(error) {
|
|
|
12696
13712
|
const candidate = error.statusCode ?? error.status;
|
|
12697
13713
|
return typeof candidate === "number" && Number.isFinite(candidate) ? candidate : void 0;
|
|
12698
13714
|
}
|
|
13715
|
+
function statusClass(status) {
|
|
13716
|
+
if (status === 401) return {
|
|
13717
|
+
code: "auth",
|
|
13718
|
+
exitCode: CLI_EXIT.AUTH
|
|
13719
|
+
};
|
|
13720
|
+
if (status === 403) return {
|
|
13721
|
+
code: "forbidden",
|
|
13722
|
+
exitCode: CLI_EXIT.FORBIDDEN
|
|
13723
|
+
};
|
|
13724
|
+
if (status === 404) return {
|
|
13725
|
+
code: "not_found",
|
|
13726
|
+
exitCode: CLI_EXIT.NOT_FOUND
|
|
13727
|
+
};
|
|
13728
|
+
if (status >= 400 && status < 500) return {
|
|
13729
|
+
code: `http_${status}`,
|
|
13730
|
+
exitCode: CLI_EXIT.FORBIDDEN
|
|
13731
|
+
};
|
|
13732
|
+
if (status >= 500 || status === 0) return {
|
|
13733
|
+
code: "unavailable",
|
|
13734
|
+
exitCode: CLI_EXIT.UNAVAILABLE
|
|
13735
|
+
};
|
|
13736
|
+
return void 0;
|
|
13737
|
+
}
|
|
13738
|
+
function decisionErrorClass(error, message) {
|
|
13739
|
+
if (error.name !== DECISION_ERROR_NAME || typeof error.code !== "string" || error.code.length === 0) return void 0;
|
|
13740
|
+
const status = Object.hasOwn(DECISION_STATUS, error.code) ? DECISION_STATUS[error.code] : void 0;
|
|
13741
|
+
return {
|
|
13742
|
+
code: error.code,
|
|
13743
|
+
exitCode: (status === void 0 ? void 0 : statusClass(status)?.exitCode) ?? CLI_EXIT.ERROR,
|
|
13744
|
+
message,
|
|
13745
|
+
...typeof error.decisionId === "string" && error.decisionId.length > 0 ? {
|
|
13746
|
+
decisionId: error.decisionId
|
|
13747
|
+
} : {}
|
|
13748
|
+
};
|
|
13749
|
+
}
|
|
12699
13750
|
function classifyCliError(error) {
|
|
12700
13751
|
if (CliError.isCliError(error)) {
|
|
12701
13752
|
return {
|
|
@@ -12725,40 +13776,15 @@ function classifyCliError(error) {
|
|
|
12725
13776
|
message
|
|
12726
13777
|
};
|
|
12727
13778
|
}
|
|
13779
|
+
const decision = decisionErrorClass(e, message);
|
|
13780
|
+
if (decision) return decision;
|
|
12728
13781
|
const status = numericStatus(e);
|
|
12729
|
-
|
|
12730
|
-
|
|
12731
|
-
|
|
12732
|
-
|
|
12733
|
-
|
|
12734
|
-
|
|
12735
|
-
statusCode
|
|
12736
|
-
};
|
|
12737
|
-
if (status === 403) return {
|
|
12738
|
-
code: "forbidden",
|
|
12739
|
-
exitCode: CLI_EXIT.FORBIDDEN,
|
|
12740
|
-
message,
|
|
12741
|
-
statusCode
|
|
12742
|
-
};
|
|
12743
|
-
if (status === 404) return {
|
|
12744
|
-
code: "not_found",
|
|
12745
|
-
exitCode: CLI_EXIT.NOT_FOUND,
|
|
12746
|
-
message,
|
|
12747
|
-
statusCode
|
|
12748
|
-
};
|
|
12749
|
-
if (status >= 400 && status < 500) return {
|
|
12750
|
-
code: `http_${status}`,
|
|
12751
|
-
exitCode: CLI_EXIT.FORBIDDEN,
|
|
12752
|
-
message,
|
|
12753
|
-
statusCode
|
|
12754
|
-
};
|
|
12755
|
-
if (status >= 500 || status === 0) return {
|
|
12756
|
-
code: "unavailable",
|
|
12757
|
-
exitCode: CLI_EXIT.UNAVAILABLE,
|
|
12758
|
-
message,
|
|
12759
|
-
statusCode
|
|
12760
|
-
};
|
|
12761
|
-
}
|
|
13782
|
+
const byStatus = status === void 0 ? void 0 : statusClass(status);
|
|
13783
|
+
if (byStatus) return {
|
|
13784
|
+
...byStatus,
|
|
13785
|
+
message,
|
|
13786
|
+
statusCode: status
|
|
13787
|
+
};
|
|
12762
13788
|
const causeCode = e.cause?.code;
|
|
12763
13789
|
if (typeof e.code === "string" && NETWORK_ERRNO.has(e.code) || typeof causeCode === "string" && NETWORK_ERRNO.has(causeCode) || e.name === "AbortError" || e.name === "TimeoutError" || NETWORK_MESSAGE.test(message)) {
|
|
12764
13790
|
return {
|
|
@@ -12774,10 +13800,12 @@ function classifyCliError(error) {
|
|
|
12774
13800
|
message
|
|
12775
13801
|
};
|
|
12776
13802
|
}
|
|
12777
|
-
var CLI_EXIT, CliError, NETWORK_ERRNO, NETWORK_MESSAGE, UNAVAILABLE_HINT, VENDOR_RETRY_SOON_SECONDS, VENDOR_LABELS, PROVIDER_REJECTED_SERVER_CODE, PROVIDER_REJECTED_HTTP_STATUS, PROVIDER_REJECTION_REASONS, PROVIDER_REJECTED_NO_RETRY, PROVIDER_REJECTED_LUA_SIDE, MODEL_SETTINGS_URL;
|
|
13803
|
+
var CLI_EXIT, CliError, NETWORK_ERRNO, NETWORK_MESSAGE, UNAVAILABLE_HINT, VENDOR_RETRY_SOON_SECONDS, VENDOR_LABELS, PROVIDER_REJECTED_SERVER_CODE, PROVIDER_REJECTED_HTTP_STATUS, PROVIDER_REJECTION_REASONS, PROVIDER_REJECTED_NO_RETRY, PROVIDER_REJECTED_LUA_SIDE, MODEL_SETTINGS_URL, DECISION_STATUS;
|
|
12778
13804
|
var init_cli_error = __esm({
|
|
12779
13805
|
"src/errors/cli.error.ts"() {
|
|
12780
13806
|
"use strict";
|
|
13807
|
+
init_dist();
|
|
13808
|
+
init_decisions_api();
|
|
12781
13809
|
init_auth_error();
|
|
12782
13810
|
CLI_EXIT = {
|
|
12783
13811
|
OK: 0,
|
|
@@ -12930,6 +13958,18 @@ var init_cli_error = __esm({
|
|
|
12930
13958
|
__name(providerRejectedHint, "providerRejectedHint");
|
|
12931
13959
|
__name(authHint, "authHint");
|
|
12932
13960
|
__name(numericStatus, "numericStatus");
|
|
13961
|
+
__name(statusClass, "statusClass");
|
|
13962
|
+
DECISION_STATUS = {
|
|
13963
|
+
[DECISION_ERROR_CODES.INVALID]: 400,
|
|
13964
|
+
[DECISION_ERROR_CODES.INSUFFICIENT_CREDITS]: 402,
|
|
13965
|
+
[DECISION_ERROR_CODES.NOT_FOUND]: 404,
|
|
13966
|
+
[DECISION_ERROR_CODES.REJECTED]: 422,
|
|
13967
|
+
[DECISION_ERROR_CODES.TIMEOUT]: 503,
|
|
13968
|
+
[DECISION_ERROR_CODES.UNAVAILABLE]: 503,
|
|
13969
|
+
[DECISION_ERROR_CODES.DISABLED]: 503,
|
|
13970
|
+
[DECISION_ERROR_CODES.CANCELLED]: 400
|
|
13971
|
+
};
|
|
13972
|
+
__name(decisionErrorClass, "decisionErrorClass");
|
|
12933
13973
|
__name(classifyCliError, "classifyCliError");
|
|
12934
13974
|
}
|
|
12935
13975
|
});
|
|
@@ -14186,217 +15226,6 @@ var init_connection_requests_api_service = __esm({
|
|
|
14186
15226
|
}
|
|
14187
15227
|
});
|
|
14188
15228
|
|
|
14189
|
-
// ../sandbox-runtime/dist/decisions-api.mjs
|
|
14190
|
-
function isRecord2(value3) {
|
|
14191
|
-
return typeof value3 === "object" && value3 !== null && !Array.isArray(value3);
|
|
14192
|
-
}
|
|
14193
|
-
function isProvider(value3) {
|
|
14194
|
-
return DECISION_PROVIDERS.includes(value3);
|
|
14195
|
-
}
|
|
14196
|
-
function invalid2(message) {
|
|
14197
|
-
return new DecisionError(message, {
|
|
14198
|
-
code: DECISION_ERROR_CODES.INVALID
|
|
14199
|
-
});
|
|
14200
|
-
}
|
|
14201
|
-
function assertInstructions(builder, instructions) {
|
|
14202
|
-
if (typeof instructions !== "string" || instructions.trim().length === 0) {
|
|
14203
|
-
throw invalid2(`Decisions.${builder} needs non-empty instructions`);
|
|
14204
|
-
}
|
|
14205
|
-
if (instructions.length > DECISION_LIMITS.maxInstructionChars) {
|
|
14206
|
-
throw invalid2(`Decisions.${builder} instructions must be at most ${DECISION_LIMITS.maxInstructionChars} characters`);
|
|
14207
|
-
}
|
|
14208
|
-
}
|
|
14209
|
-
function assertCount(what, count, min, max) {
|
|
14210
|
-
if (count < min || count > max) {
|
|
14211
|
-
throw invalid2(`${what} must hold ${min} to ${max} entries, got ${count}`);
|
|
14212
|
-
}
|
|
14213
|
-
}
|
|
14214
|
-
function odds(instructions, criteria) {
|
|
14215
|
-
assertInstructions("odds", instructions);
|
|
14216
|
-
if (criteria === void 0) return {
|
|
14217
|
-
type: "odds",
|
|
14218
|
-
instructions
|
|
14219
|
-
};
|
|
14220
|
-
if (!isRecord2(criteria)) throw invalid2("Decisions.odds criteria must be an object like { yes, no }");
|
|
14221
|
-
return {
|
|
14222
|
-
type: "odds",
|
|
14223
|
-
instructions,
|
|
14224
|
-
criteria
|
|
14225
|
-
};
|
|
14226
|
-
}
|
|
14227
|
-
function choice(instructions, options) {
|
|
14228
|
-
assertInstructions("choice", instructions);
|
|
14229
|
-
if (!isRecord2(options)) throw invalid2("Decisions.choice options must be an object of label to description");
|
|
14230
|
-
assertCount("Decisions.choice options", Object.keys(options).length, DECISION_LIMITS.minOptions, DECISION_LIMITS.maxOptions);
|
|
14231
|
-
return {
|
|
14232
|
-
type: "choice",
|
|
14233
|
-
instructions,
|
|
14234
|
-
options
|
|
14235
|
-
};
|
|
14236
|
-
}
|
|
14237
|
-
function score(instructions, levels) {
|
|
14238
|
-
assertInstructions("score", instructions);
|
|
14239
|
-
if (!Array.isArray(levels)) throw invalid2("Decisions.score levels must be an array");
|
|
14240
|
-
assertCount("Decisions.score levels", levels.length, DECISION_LIMITS.minLevels, DECISION_LIMITS.maxLevels);
|
|
14241
|
-
return {
|
|
14242
|
-
type: "score",
|
|
14243
|
-
instructions,
|
|
14244
|
-
levels
|
|
14245
|
-
};
|
|
14246
|
-
}
|
|
14247
|
-
function assertDecisionQuestion(name, question) {
|
|
14248
|
-
if (!isRecord2(question) || !DECISION_QUESTION_TYPES.includes(question.type)) {
|
|
14249
|
-
throw invalid2(`questions.${name} must be built with Decisions.odds, Decisions.choice or Decisions.score`);
|
|
14250
|
-
}
|
|
14251
|
-
if (typeof question.instructions !== "string" || question.instructions.trim().length === 0) {
|
|
14252
|
-
throw invalid2(`questions.${name}.instructions must be a non-empty string`);
|
|
14253
|
-
}
|
|
14254
|
-
}
|
|
14255
|
-
function checkDecisionRequest(request) {
|
|
14256
|
-
if (!isRecord2(request)) {
|
|
14257
|
-
throw invalid2("Decisions.ask needs { state, questions } or (state, question)");
|
|
14258
|
-
}
|
|
14259
|
-
if (request.state === void 0 || request.state === null) {
|
|
14260
|
-
throw invalid2("Decisions.ask needs a state");
|
|
14261
|
-
}
|
|
14262
|
-
if (!isRecord2(request.questions) || Object.keys(request.questions).length === 0) {
|
|
14263
|
-
throw invalid2("Decisions.ask needs at least one question in questions");
|
|
14264
|
-
}
|
|
14265
|
-
for (const [name, question] of Object.entries(request.questions)) assertDecisionQuestion(name, question);
|
|
14266
|
-
return request;
|
|
14267
|
-
}
|
|
14268
|
-
function checkDecisionRunRequest(request) {
|
|
14269
|
-
if (typeof request.name !== "string" || !DECISION_NAME_PATTERN.test(request.name)) {
|
|
14270
|
-
throw invalid2("Decisions.run needs the name of a decision declared on the agent");
|
|
14271
|
-
}
|
|
14272
|
-
if (request.state === void 0 || request.state === null) {
|
|
14273
|
-
throw invalid2("Decisions.run needs a state");
|
|
14274
|
-
}
|
|
14275
|
-
return request;
|
|
14276
|
-
}
|
|
14277
|
-
function toDecisionError(caught) {
|
|
14278
|
-
if (caught instanceof DecisionError) return caught;
|
|
14279
|
-
const raw = isRecord2(caught) ? caught : {};
|
|
14280
|
-
const message = typeof raw.message === "string" && raw.message.length > 0 ? raw.message : "Decision failed";
|
|
14281
|
-
const code = typeof raw.code === "string" && raw.code.length > 0 ? raw.code : DECISION_ERROR_CODES.UNAVAILABLE;
|
|
14282
|
-
return new DecisionError(message, {
|
|
14283
|
-
code,
|
|
14284
|
-
...isProvider(raw.provider) && {
|
|
14285
|
-
provider: raw.provider
|
|
14286
|
-
},
|
|
14287
|
-
...typeof raw.upstreamStatus === "number" && {
|
|
14288
|
-
upstreamStatus: raw.upstreamStatus
|
|
14289
|
-
},
|
|
14290
|
-
...typeof raw.decisionId === "string" && {
|
|
14291
|
-
decisionId: raw.decisionId
|
|
14292
|
-
}
|
|
14293
|
-
});
|
|
14294
|
-
}
|
|
14295
|
-
function buildDecisionsApi(transport) {
|
|
14296
|
-
async function relay2(send) {
|
|
14297
|
-
if (!transport) {
|
|
14298
|
-
throw new DecisionError("Decisions is not available in this runtime", {
|
|
14299
|
-
code: DECISION_ERROR_CODES.UNAVAILABLE
|
|
14300
|
-
});
|
|
14301
|
-
}
|
|
14302
|
-
try {
|
|
14303
|
-
return await send(transport);
|
|
14304
|
-
} catch (caught) {
|
|
14305
|
-
throw toDecisionError(caught);
|
|
14306
|
-
}
|
|
14307
|
-
}
|
|
14308
|
-
__name(relay2, "relay");
|
|
14309
|
-
__name6(relay2, "relay");
|
|
14310
|
-
async function ask(requestOrState, question, options) {
|
|
14311
|
-
if (question === void 0) {
|
|
14312
|
-
const request2 = checkDecisionRequest(requestOrState);
|
|
14313
|
-
return relay2((t) => t.ask(request2));
|
|
14314
|
-
}
|
|
14315
|
-
const request = checkDecisionRequest({
|
|
14316
|
-
...options,
|
|
14317
|
-
state: requestOrState,
|
|
14318
|
-
questions: {
|
|
14319
|
-
[SINGLE_DECISION_KEY]: question
|
|
14320
|
-
}
|
|
14321
|
-
});
|
|
14322
|
-
const result = await relay2((t) => t.ask(request));
|
|
14323
|
-
return result.answers[SINGLE_DECISION_KEY];
|
|
14324
|
-
}
|
|
14325
|
-
__name(ask, "ask");
|
|
14326
|
-
__name6(ask, "ask");
|
|
14327
|
-
async function run(name, state3, options) {
|
|
14328
|
-
const request = checkDecisionRunRequest({
|
|
14329
|
-
...options,
|
|
14330
|
-
name,
|
|
14331
|
-
state: state3
|
|
14332
|
-
});
|
|
14333
|
-
return await relay2((t) => t.run(request));
|
|
14334
|
-
}
|
|
14335
|
-
__name(run, "run");
|
|
14336
|
-
__name6(run, "run");
|
|
14337
|
-
return {
|
|
14338
|
-
ask,
|
|
14339
|
-
run,
|
|
14340
|
-
odds,
|
|
14341
|
-
choice,
|
|
14342
|
-
score
|
|
14343
|
-
};
|
|
14344
|
-
}
|
|
14345
|
-
var __defProp6, __name6, DECISION_ERROR_NAME, SINGLE_DECISION_KEY, DecisionError;
|
|
14346
|
-
var init_decisions_api = __esm({
|
|
14347
|
-
"../sandbox-runtime/dist/decisions-api.mjs"() {
|
|
14348
|
-
"use strict";
|
|
14349
|
-
init_dist();
|
|
14350
|
-
__defProp6 = Object.defineProperty;
|
|
14351
|
-
__name6 = /* @__PURE__ */ __name((target, value3) => __defProp6(target, "name", { value: value3, configurable: true }), "__name");
|
|
14352
|
-
DECISION_ERROR_NAME = "DecisionError";
|
|
14353
|
-
SINGLE_DECISION_KEY = "answer";
|
|
14354
|
-
DecisionError = class extends Error {
|
|
14355
|
-
static {
|
|
14356
|
-
__name(this, "DecisionError");
|
|
14357
|
-
}
|
|
14358
|
-
static {
|
|
14359
|
-
__name6(this, "DecisionError");
|
|
14360
|
-
}
|
|
14361
|
-
code;
|
|
14362
|
-
constructor(message, fields) {
|
|
14363
|
-
super(message);
|
|
14364
|
-
this.name = DECISION_ERROR_NAME;
|
|
14365
|
-
this.code = fields.code;
|
|
14366
|
-
if (fields.provider !== void 0) this.provider = fields.provider;
|
|
14367
|
-
if (fields.upstreamStatus !== void 0) this.upstreamStatus = fields.upstreamStatus;
|
|
14368
|
-
if (fields.decisionId !== void 0) this.decisionId = fields.decisionId;
|
|
14369
|
-
}
|
|
14370
|
-
};
|
|
14371
|
-
__name(isRecord2, "isRecord");
|
|
14372
|
-
__name6(isRecord2, "isRecord");
|
|
14373
|
-
__name(isProvider, "isProvider");
|
|
14374
|
-
__name6(isProvider, "isProvider");
|
|
14375
|
-
__name(invalid2, "invalid");
|
|
14376
|
-
__name6(invalid2, "invalid");
|
|
14377
|
-
__name(assertInstructions, "assertInstructions");
|
|
14378
|
-
__name6(assertInstructions, "assertInstructions");
|
|
14379
|
-
__name(assertCount, "assertCount");
|
|
14380
|
-
__name6(assertCount, "assertCount");
|
|
14381
|
-
__name(odds, "odds");
|
|
14382
|
-
__name6(odds, "odds");
|
|
14383
|
-
__name(choice, "choice");
|
|
14384
|
-
__name6(choice, "choice");
|
|
14385
|
-
__name(score, "score");
|
|
14386
|
-
__name6(score, "score");
|
|
14387
|
-
__name(assertDecisionQuestion, "assertDecisionQuestion");
|
|
14388
|
-
__name6(assertDecisionQuestion, "assertDecisionQuestion");
|
|
14389
|
-
__name(checkDecisionRequest, "checkDecisionRequest");
|
|
14390
|
-
__name6(checkDecisionRequest, "checkDecisionRequest");
|
|
14391
|
-
__name(checkDecisionRunRequest, "checkDecisionRunRequest");
|
|
14392
|
-
__name6(checkDecisionRunRequest, "checkDecisionRunRequest");
|
|
14393
|
-
__name(toDecisionError, "toDecisionError");
|
|
14394
|
-
__name6(toDecisionError, "toDecisionError");
|
|
14395
|
-
__name(buildDecisionsApi, "buildDecisionsApi");
|
|
14396
|
-
__name6(buildDecisionsApi, "buildDecisionsApi");
|
|
14397
|
-
}
|
|
14398
|
-
});
|
|
14399
|
-
|
|
14400
15229
|
// src/api/decisions.api.service.ts
|
|
14401
15230
|
function resultOf(response) {
|
|
14402
15231
|
if (!response.success) throw toDecisionError(response.error);
|
|
@@ -14407,13 +15236,20 @@ function resultOf(response) {
|
|
|
14407
15236
|
}
|
|
14408
15237
|
return response.data;
|
|
14409
15238
|
}
|
|
14410
|
-
function
|
|
15239
|
+
function decisionTestSiteHeaders(site) {
|
|
15240
|
+
return {
|
|
15241
|
+
[DECISION_SANDBOX_SITE_HEADER]: DECISION_LUA_TEST_SITE,
|
|
15242
|
+
[DECISION_SANDBOX_PRIMITIVE_HEADER]: formatDecisionSandboxPrimitive(`${site.kind}:${site.name}`, site.tool)
|
|
15243
|
+
};
|
|
15244
|
+
}
|
|
15245
|
+
function buildOfflineDecisionsApi(getService, testSite) {
|
|
15246
|
+
const headers = testSite ? decisionTestSiteHeaders(testSite) : void 0;
|
|
14411
15247
|
return buildDecisionsApi({
|
|
14412
|
-
ask: /* @__PURE__ */ __name(async (request) => (await getService()).askForSandbox(request), "ask"),
|
|
14413
|
-
run: /* @__PURE__ */ __name(async (request) => (await getService()).runForSandbox(request), "run")
|
|
15248
|
+
ask: /* @__PURE__ */ __name(async (request) => (await getService()).askForSandbox(request, headers), "ask"),
|
|
15249
|
+
run: /* @__PURE__ */ __name(async (request) => (await getService()).runForSandbox(request, headers), "run")
|
|
14414
15250
|
});
|
|
14415
15251
|
}
|
|
14416
|
-
var DecisionsApiService;
|
|
15252
|
+
var DECISION_LUA_TEST_SITE, DecisionsApiService;
|
|
14417
15253
|
var init_decisions_api_service = __esm({
|
|
14418
15254
|
"src/api/decisions.api.service.ts"() {
|
|
14419
15255
|
"use strict";
|
|
@@ -14421,6 +15257,8 @@ var init_decisions_api_service = __esm({
|
|
|
14421
15257
|
init_decisions_api();
|
|
14422
15258
|
init_http_client();
|
|
14423
15259
|
__name(resultOf, "resultOf");
|
|
15260
|
+
DECISION_LUA_TEST_SITE = "lua-test";
|
|
15261
|
+
__name(decisionTestSiteHeaders, "decisionTestSiteHeaders");
|
|
14424
15262
|
DecisionsApiService = class extends HttpClient {
|
|
14425
15263
|
static {
|
|
14426
15264
|
__name(this, "DecisionsApiService");
|
|
@@ -14429,17 +15267,17 @@ var init_decisions_api_service = __esm({
|
|
|
14429
15267
|
constructor(baseUrl, credential, agentId2) {
|
|
14430
15268
|
super(baseUrl, credential), this.agentId = agentId2;
|
|
14431
15269
|
}
|
|
14432
|
-
async ask(body) {
|
|
14433
|
-
return this.httpPostOnce(`/developer/decisions/${this.agentId}/ask`, body,
|
|
15270
|
+
async ask(body, headers = {}) {
|
|
15271
|
+
return this.httpPostOnce(`/developer/decisions/${this.agentId}/ask`, body, headers);
|
|
14434
15272
|
}
|
|
14435
|
-
async run({ name, ...body }) {
|
|
14436
|
-
return this.httpPostOnce(`/developer/decisions/${this.agentId}/run/${encodeURIComponent(name)}`, body,
|
|
15273
|
+
async run({ name, ...body }, headers = {}) {
|
|
15274
|
+
return this.httpPostOnce(`/developer/decisions/${this.agentId}/run/${encodeURIComponent(name)}`, body, headers);
|
|
14437
15275
|
}
|
|
14438
|
-
async askForSandbox(request) {
|
|
14439
|
-
return resultOf(await this.ask(request));
|
|
15276
|
+
async askForSandbox(request, headers) {
|
|
15277
|
+
return resultOf(await this.ask(request, headers));
|
|
14440
15278
|
}
|
|
14441
|
-
async runForSandbox(request) {
|
|
14442
|
-
return resultOf(await this.run(request));
|
|
15279
|
+
async runForSandbox(request, headers) {
|
|
15280
|
+
return resultOf(await this.run(request, headers));
|
|
14443
15281
|
}
|
|
14444
15282
|
async getDecisions() {
|
|
14445
15283
|
return this.httpGet(`/developer/decisions/${this.agentId}/definitions`, {});
|
|
@@ -16795,7 +17633,7 @@ function resolvePlacements(calls) {
|
|
|
16795
17633
|
function isConditionalJoinId(stepId) {
|
|
16796
17634
|
return CONDITIONAL_JOIN_ID.test(stepId);
|
|
16797
17635
|
}
|
|
16798
|
-
function
|
|
17636
|
+
function isPlainObject3(v) {
|
|
16799
17637
|
return typeof v === "object" && v !== null && !Array.isArray(v);
|
|
16800
17638
|
}
|
|
16801
17639
|
function leafValue(row) {
|
|
@@ -16816,7 +17654,7 @@ function deriveRunOutput(steps) {
|
|
|
16816
17654
|
if (leaves.length === 1) {
|
|
16817
17655
|
const leaf = leaves[0];
|
|
16818
17656
|
const value22 = leafValue(leaf);
|
|
16819
|
-
if (isConditionalJoinId(leaf.stepId) &&
|
|
17657
|
+
if (isConditionalJoinId(leaf.stepId) && isPlainObject3(value22)) {
|
|
16820
17658
|
const keys = Object.keys(value22);
|
|
16821
17659
|
if (keys.length === 1) return {
|
|
16822
17660
|
output: value22[keys[0]],
|
|
@@ -18159,7 +18997,7 @@ function estimateGraph(envelopeOrGraph) {
|
|
|
18159
18997
|
};
|
|
18160
18998
|
}
|
|
18161
18999
|
function* singleStepsOf(entry) {
|
|
18162
|
-
if (!
|
|
19000
|
+
if (!isRecord4(entry)) return;
|
|
18163
19001
|
switch (entry.type) {
|
|
18164
19002
|
case "step":
|
|
18165
19003
|
case "agent":
|
|
@@ -18183,8 +19021,8 @@ function* singleStepsOf(entry) {
|
|
|
18183
19021
|
}
|
|
18184
19022
|
}
|
|
18185
19023
|
function entriesOf(graph) {
|
|
18186
|
-
const definition =
|
|
18187
|
-
const entries =
|
|
19024
|
+
const definition = isRecord4(graph) ? graph.definition : void 0;
|
|
19025
|
+
const entries = isRecord4(definition) ? definition.graph : void 0;
|
|
18188
19026
|
return Array.isArray(entries) ? entries : [];
|
|
18189
19027
|
}
|
|
18190
19028
|
function inheritTargets(graphs) {
|
|
@@ -18201,7 +19039,7 @@ function inheritTargets(graphs) {
|
|
|
18201
19039
|
return targets;
|
|
18202
19040
|
}
|
|
18203
19041
|
function needsInheritedWorkspace(graph) {
|
|
18204
|
-
if (!
|
|
19042
|
+
if (!isRecord4(graph) || graph.workspace !== void 0) return false;
|
|
18205
19043
|
for (const entry of entriesOf(graph)) {
|
|
18206
19044
|
for (const node of singleStepsOf(entry)) {
|
|
18207
19045
|
if (node.workspace !== void 0 && node.workspace !== "inherit") return true;
|
|
@@ -18282,7 +19120,7 @@ function collectJobTierSteps(entry, out) {
|
|
|
18282
19120
|
return;
|
|
18283
19121
|
}
|
|
18284
19122
|
}
|
|
18285
|
-
var __defProp8, __name8, WorkflowTemplateError, TEMPLATE_PLACEHOLDER, TEMPLATE_NAMESPACES, MAP_DESCRIPTOR_KEYS, MAP_MEMBER_MALFORMED_CODE, fromInit, fromStep, value, template, fromRequest, rows, fromKnowledge, SideEffectsSchema, JobResourcesSchema, WORKFLOW_MODEL_TEMPLATE_ROOT, WORKFLOW_MODEL_TEMPLATE_RE, PATH_SEGMENT_RE, APPROVER_SPEC_MAX_USERS, ESCALATION_MAX_HOPS, TemplateBindingSchema, ApproverSpecSchema, FourEyesSchema, EscalationHopSchema, TerminalOutcomeSchema, ApprovalOnTimeoutSchema, APPROVER_SPEC_SHAPES, APPROVER_WRITTEN_MAX, USER_ID_SHAPED_RE, BINDING_ROOTS, APPROVAL_REMIND_AFTER_HOURS_MIN, APPROVAL_REMIND_AFTER_HOURS_MAX, APPROVAL_TIMEOUT_HOURS_MIN, APPROVAL_TIMEOUT_HOURS_MAX, WORKSPACE_TEMPLATE_EXPR_RE, SLEEP_UNTIL_REPLACEMENT, WORKFLOW_WORKSPACE_TTL_MAX_HOURS_DEFAULT, WORKFLOW_CAPS_DEFAULT, WORKFLOW_STEP_DEFAULT_TIMEOUT_SECONDS, WORKFLOW_AGENT_DEFAULT_TIMEOUT_SECONDS, WORKFLOW_JOB_DEFAULT_TIMEOUT_SECONDS, WORKFLOW_FOREACH_DEFAULT_CONCURRENCY, WORKFLOW_FOREACH_DEFAULT_MAX_ITEMS, WORKFLOW_LOOP_DEFAULT_MAX_ITERATIONS, WORKFLOW_SUSPEND_DEFAULT_TIMEOUT_HOURS2, WORKFLOW_SIGNAL_DEFAULT_SOURCES, clone, CONNECTION_ID_HEX_RE, WORKFLOW_JOB_MAX_WORKTREE_ARMS, workspaceOf, mountsWorkspace, isJobTier, jobToolsOf, schemaIsArray, isHitlNode, isSingleStep, singleId, armId, TEMPLATE_STEP_REF, EDITABLE_PATH_RE, PREDICATE_OPS, isPredicateScalar, GRAPH_HASH_PREFIX, WorkflowPlanError, isArmStep, armStepId, armStepKind, joinIdOf, containerIdOf, PATH_PLACEHOLDER, MISSING, stepIdOf, cmp, eq, ne, gt, gte, lt, lte, inSet, notIn, exists, notExists, truthy, falsy, and, or, not, CONTINUED_FAILURE_TAG, CONTINUED_FAILURE_DEFAULT_CODE, CONTINUED_FAILURE_OUTPUT_SCHEMA, CONTINUED_FAILURE_LEAF_PATHS, isHitlNode2, nodeIdOf, GOAL_JUDGE_STEP_ID, NON_LEAF_KINDS, CONDITIONAL_JOIN_ID, branchArmId, canonical, sortKeys, JOIN, entryOfJoin, FORCE_CANCEL_STALE_MS, TERMINAL, WORKFLOW_INLINE_RUN_TAG, RUN_ERROR_ISSUES_MAX, IN_FLIGHT, n, SUSPENDED_FOR_DIMENSIONS, STEP_ERROR_DETAIL_KEYS, STEP_ERROR_DETAIL_MAX_BYTES, DETAIL_MAX_DEPTH, DETAIL_MAX_ITEMS, MAX_HOLIDAYS, MAX_WALK_DAYS, HHMM, YMD, MS_PER_MIN, MS_PER_DAY, MON_FRI, supportedTz, fmtCache, WEEKDAYS, JSON_PATCH_OPS, JSON_PATCH_MAX_OPS, JSON_PATCH_MAX_VALUE_BYTES, JSON_PATCH_MAX_TOTAL_BYTES, SEGMENT_RE, WORKFLOW_SCHEDULE_TYPES, WORKFLOW_SCHEDULE_SHAPE_ISSUE, WORKFLOW_SCHEDULE_SHAPES_HINT, WORKFLOW_SCHEDULE_RUN_AS, isObject, WORKFLOW_ENV_OVERLAY_MAX_KEYS, WORKFLOW_ENV_OVERLAY_MAX_VALUE_BYTES, WORKFLOW_ENV_TEMPLATE_SECRET_KEY_RE, isEnvRef, looksLikeEmbeddedJson, ZERO,
|
|
19123
|
+
var __defProp8, __name8, WorkflowTemplateError, TEMPLATE_PLACEHOLDER, TEMPLATE_NAMESPACES, MAP_DESCRIPTOR_KEYS, MAP_MEMBER_MALFORMED_CODE, fromInit, fromStep, value, template, fromRequest, rows, fromKnowledge, SideEffectsSchema, JobResourcesSchema, WORKFLOW_MODEL_TEMPLATE_ROOT, WORKFLOW_MODEL_TEMPLATE_RE, PATH_SEGMENT_RE, APPROVER_SPEC_MAX_USERS, ESCALATION_MAX_HOPS, TemplateBindingSchema, ApproverSpecSchema, FourEyesSchema, EscalationHopSchema, TerminalOutcomeSchema, ApprovalOnTimeoutSchema, APPROVER_SPEC_SHAPES, APPROVER_WRITTEN_MAX, USER_ID_SHAPED_RE, BINDING_ROOTS, APPROVAL_REMIND_AFTER_HOURS_MIN, APPROVAL_REMIND_AFTER_HOURS_MAX, APPROVAL_TIMEOUT_HOURS_MIN, APPROVAL_TIMEOUT_HOURS_MAX, WORKSPACE_TEMPLATE_EXPR_RE, SLEEP_UNTIL_REPLACEMENT, WORKFLOW_WORKSPACE_TTL_MAX_HOURS_DEFAULT, WORKFLOW_CAPS_DEFAULT, WORKFLOW_STEP_DEFAULT_TIMEOUT_SECONDS, WORKFLOW_AGENT_DEFAULT_TIMEOUT_SECONDS, WORKFLOW_JOB_DEFAULT_TIMEOUT_SECONDS, WORKFLOW_FOREACH_DEFAULT_CONCURRENCY, WORKFLOW_FOREACH_DEFAULT_MAX_ITEMS, WORKFLOW_LOOP_DEFAULT_MAX_ITERATIONS, WORKFLOW_SUSPEND_DEFAULT_TIMEOUT_HOURS2, WORKFLOW_SIGNAL_DEFAULT_SOURCES, clone, CONNECTION_ID_HEX_RE, WORKFLOW_JOB_MAX_WORKTREE_ARMS, workspaceOf, mountsWorkspace, isJobTier, jobToolsOf, schemaIsArray, isHitlNode, isSingleStep, singleId, armId, TEMPLATE_STEP_REF, EDITABLE_PATH_RE, PREDICATE_OPS, isPredicateScalar, GRAPH_HASH_PREFIX, WorkflowPlanError, isArmStep, armStepId, armStepKind, joinIdOf, containerIdOf, PATH_PLACEHOLDER, MISSING, stepIdOf, cmp, eq, ne, gt, gte, lt, lte, inSet, notIn, exists, notExists, truthy, falsy, and, or, not, CONTINUED_FAILURE_TAG, CONTINUED_FAILURE_DEFAULT_CODE, CONTINUED_FAILURE_OUTPUT_SCHEMA, CONTINUED_FAILURE_LEAF_PATHS, isHitlNode2, nodeIdOf, GOAL_JUDGE_STEP_ID, NON_LEAF_KINDS, CONDITIONAL_JOIN_ID, branchArmId, canonical, sortKeys, JOIN, entryOfJoin, FORCE_CANCEL_STALE_MS, TERMINAL, WORKFLOW_INLINE_RUN_TAG, RUN_ERROR_ISSUES_MAX, IN_FLIGHT, n, SUSPENDED_FOR_DIMENSIONS, STEP_ERROR_DETAIL_KEYS, STEP_ERROR_DETAIL_MAX_BYTES, DETAIL_MAX_DEPTH, DETAIL_MAX_ITEMS, MAX_HOLIDAYS, MAX_WALK_DAYS, HHMM, YMD, MS_PER_MIN, MS_PER_DAY, MON_FRI, supportedTz, fmtCache, WEEKDAYS, JSON_PATCH_OPS, JSON_PATCH_MAX_OPS, JSON_PATCH_MAX_VALUE_BYTES, JSON_PATCH_MAX_TOTAL_BYTES, SEGMENT_RE, WORKFLOW_SCHEDULE_TYPES, WORKFLOW_SCHEDULE_SHAPE_ISSUE, WORKFLOW_SCHEDULE_SHAPES_HINT, WORKFLOW_SCHEDULE_RUN_AS, isObject, WORKFLOW_ENV_OVERLAY_MAX_KEYS, WORKFLOW_ENV_OVERLAY_MAX_VALUE_BYTES, WORKFLOW_ENV_TEMPLATE_SECRET_KEY_RE, isEnvRef, looksLikeEmbeddedJson, ZERO, isRecord4;
|
|
18286
19124
|
var init_dist2 = __esm({
|
|
18287
19125
|
"../workflow-graph/dist/index.mjs"() {
|
|
18288
19126
|
"use strict";
|
|
@@ -18806,8 +19644,8 @@ var init_dist2 = __esm({
|
|
|
18806
19644
|
CONDITIONAL_JOIN_ID = /^conditional@\d+\.join$/;
|
|
18807
19645
|
__name(isConditionalJoinId, "isConditionalJoinId");
|
|
18808
19646
|
__name8(isConditionalJoinId, "isConditionalJoinId");
|
|
18809
|
-
__name(
|
|
18810
|
-
__name8(
|
|
19647
|
+
__name(isPlainObject3, "isPlainObject");
|
|
19648
|
+
__name8(isPlainObject3, "isPlainObject");
|
|
18811
19649
|
__name(leafValue, "leafValue");
|
|
18812
19650
|
__name8(leafValue, "leafValue");
|
|
18813
19651
|
__name(runOutputLeaves, "runOutputLeaves");
|
|
@@ -19097,7 +19935,7 @@ var init_dist2 = __esm({
|
|
|
19097
19935
|
__name8(ofEntry, "ofEntry");
|
|
19098
19936
|
__name(estimateGraph, "estimateGraph");
|
|
19099
19937
|
__name8(estimateGraph, "estimateGraph");
|
|
19100
|
-
|
|
19938
|
+
isRecord4 = /* @__PURE__ */ __name8((v) => !!v && typeof v === "object" && !Array.isArray(v), "isRecord");
|
|
19101
19939
|
__name(singleStepsOf, "singleStepsOf");
|
|
19102
19940
|
__name8(singleStepsOf, "singleStepsOf");
|
|
19103
19941
|
__name(entriesOf, "entriesOf");
|
|
@@ -19239,6 +20077,10 @@ function createWorkflow(cfg) {
|
|
|
19239
20077
|
const n2 = cfg.backfillOnEnable.maxOccurrences;
|
|
19240
20078
|
if (!Number.isInteger(n2) || n2 < 1 || n2 > 200) throw new LuaWorkflowBuildError("invalid-envelope", "backfillOnEnable.maxOccurrences must be an integer in 1..200 (backfill-max-occurrences-out-of-range; the org maxBatchItems twin is checked at publish/R56)");
|
|
19241
20079
|
}
|
|
20080
|
+
if (cfg.concurrencyKey !== void 0) {
|
|
20081
|
+
if (cfg.concurrencyKey !== "correlationKey") throw new LuaWorkflowBuildError("invalid-envelope", "concurrencyKey must be 'correlationKey'");
|
|
20082
|
+
if (cfg.concurrencyPolicy !== "forbid") throw new LuaWorkflowBuildError("concurrency-key-requires-forbid", `workflow "${cfg.name}": concurrencyKey requires concurrencyPolicy:'forbid'`, "set concurrencyPolicy:'forbid' or remove concurrencyKey");
|
|
20083
|
+
}
|
|
19242
20084
|
if (cfg.health !== void 0) {
|
|
19243
20085
|
const issues = validateScheduleHealth(cfg.health, {
|
|
19244
20086
|
target: "workflow",
|
|
@@ -20181,6 +21023,7 @@ var init_types = __esm({
|
|
|
20181
21023
|
PrimitiveKind2["VOICE"] = "voice";
|
|
20182
21024
|
PrimitiveKind2["WORKFLOW"] = "workflow";
|
|
20183
21025
|
PrimitiveKind2["WEB_APP"] = "web-app";
|
|
21026
|
+
PrimitiveKind2["BROWSER"] = "browser";
|
|
20184
21027
|
PrimitiveKind2["DECISION"] = "decision";
|
|
20185
21028
|
return PrimitiveKind2;
|
|
20186
21029
|
})({});
|
|
@@ -21012,6 +21855,9 @@ var init_semver = __esm({
|
|
|
21012
21855
|
});
|
|
21013
21856
|
|
|
21014
21857
|
// src/primitives/base.handler.ts
|
|
21858
|
+
function nameFlagDeleteCommand(deleteCommand, displayName, name) {
|
|
21859
|
+
return `${deleteCommand} --${displayName.toLowerCase().replace(/\s+/g, "-")}-name ${name}`;
|
|
21860
|
+
}
|
|
21015
21861
|
var DEFAULT_VERSION, BaseVersionedHandler;
|
|
21016
21862
|
var init_base_handler = __esm({
|
|
21017
21863
|
"src/primitives/base.handler.ts"() {
|
|
@@ -21024,10 +21870,14 @@ var init_base_handler = __esm({
|
|
|
21024
21870
|
init_auth_error();
|
|
21025
21871
|
init_cli_error();
|
|
21026
21872
|
DEFAULT_VERSION = SKILL_DEFAULTS.VERSION;
|
|
21873
|
+
__name(nameFlagDeleteCommand, "nameFlagDeleteCommand");
|
|
21027
21874
|
BaseVersionedHandler = class {
|
|
21028
21875
|
static {
|
|
21029
21876
|
__name(this, "BaseVersionedHandler");
|
|
21030
21877
|
}
|
|
21878
|
+
serverDeleteCommand(name) {
|
|
21879
|
+
return nameFlagDeleteCommand(this.deleteCommand, this.displayName, name);
|
|
21880
|
+
}
|
|
21031
21881
|
/**
|
|
21032
21882
|
* Strip a YAML item to only the canonical fields: name, version, [idField].
|
|
21033
21883
|
* Override if your YAML type has additional fields.
|
|
@@ -21148,7 +21998,7 @@ var init_base_handler = __esm({
|
|
|
21148
21998
|
const { [idField]: goneId, ...rest } = stale;
|
|
21149
21999
|
yamlItems[idx] = rest;
|
|
21150
22000
|
yamlUpdated = true;
|
|
21151
|
-
const msg =
|
|
22001
|
+
const msg = this.staleRowMessage(stale, String(goneId), serverData.serverItems);
|
|
21152
22002
|
messages.push(msg);
|
|
21153
22003
|
console.log(msg);
|
|
21154
22004
|
}
|
|
@@ -21165,7 +22015,6 @@ var init_base_handler = __esm({
|
|
|
21165
22015
|
}));
|
|
21166
22016
|
yamlItems.push(...stubs);
|
|
21167
22017
|
yamlUpdated = true;
|
|
21168
|
-
const flagName = `--${this.displayName.toLowerCase().replace(/\s+/g, "-")}-name`;
|
|
21169
22018
|
console.log(`
|
|
21170
22019
|
\u26A0\uFE0F Found ${this.displayNamePlural} on server not in your local code:`);
|
|
21171
22020
|
for (const item of orphans) {
|
|
@@ -21174,7 +22023,7 @@ var init_base_handler = __esm({
|
|
|
21174
22023
|
console.log(msg);
|
|
21175
22024
|
}
|
|
21176
22025
|
console.log(` Added to lua.skill.yaml as server-only entries.`);
|
|
21177
|
-
console.log(` To remove from server: ${this.
|
|
22026
|
+
console.log(` To remove from server: ${this.serverDeleteCommand("<name>")}`);
|
|
21178
22027
|
console.log(` To restore source from backup: lua sync --accept
|
|
21179
22028
|
`);
|
|
21180
22029
|
orphanedCount = orphans.length;
|
|
@@ -21403,6 +22252,9 @@ var init_base_handler = __esm({
|
|
|
21403
22252
|
staleYamlRows(_yamlItems, _serverItems, _manifestNames) {
|
|
21404
22253
|
return [];
|
|
21405
22254
|
}
|
|
22255
|
+
staleRowMessage(stale, goneId, _serverItems) {
|
|
22256
|
+
return `\u2139\uFE0F ${this.displayName} "${stale.name}" (${goneId}) no longer exists on the server \u2014 re-registering it`;
|
|
22257
|
+
}
|
|
21406
22258
|
buildMaps(serverItems, yamlItems) {
|
|
21407
22259
|
const yamlById = /* @__PURE__ */ new Map();
|
|
21408
22260
|
const yamlByName = /* @__PURE__ */ new Map();
|
|
@@ -27824,6 +28676,7 @@ var LuaAgent = class {
|
|
|
27824
28676
|
batching;
|
|
27825
28677
|
governance;
|
|
27826
28678
|
browser;
|
|
28679
|
+
browsers;
|
|
27827
28680
|
/**
|
|
27828
28681
|
* Creates a new LuaAgent instance.
|
|
27829
28682
|
*
|
|
@@ -27870,6 +28723,7 @@ var LuaAgent = class {
|
|
|
27870
28723
|
this.batching = config.batching;
|
|
27871
28724
|
this.governance = config.governance;
|
|
27872
28725
|
this.browser = config.browser;
|
|
28726
|
+
this.browsers = config.browsers;
|
|
27873
28727
|
}
|
|
27874
28728
|
getName() {
|
|
27875
28729
|
return this.name;
|
|
@@ -27927,6 +28781,9 @@ var LuaAgent = class {
|
|
|
27927
28781
|
getVoices() {
|
|
27928
28782
|
return this.voices;
|
|
27929
28783
|
}
|
|
28784
|
+
getBrowsers() {
|
|
28785
|
+
return this.browsers;
|
|
28786
|
+
}
|
|
27930
28787
|
getDecisions() {
|
|
27931
28788
|
return this.decisions;
|
|
27932
28789
|
}
|
|
@@ -28045,6 +28902,51 @@ function defineVoice(config) {
|
|
|
28045
28902
|
}
|
|
28046
28903
|
__name(defineVoice, "defineVoice");
|
|
28047
28904
|
|
|
28905
|
+
// src/types/browser.ts
|
|
28906
|
+
init_dist();
|
|
28907
|
+
var LuaBrowser = class {
|
|
28908
|
+
static {
|
|
28909
|
+
__name(this, "LuaBrowser");
|
|
28910
|
+
}
|
|
28911
|
+
name;
|
|
28912
|
+
description;
|
|
28913
|
+
engine;
|
|
28914
|
+
fallback;
|
|
28915
|
+
proxyCountry;
|
|
28916
|
+
allowedDomains;
|
|
28917
|
+
confirmActions;
|
|
28918
|
+
maxSessionMinutes;
|
|
28919
|
+
idleTimeoutSeconds;
|
|
28920
|
+
maxConcurrentSessions;
|
|
28921
|
+
screenshots;
|
|
28922
|
+
logContent;
|
|
28923
|
+
persist;
|
|
28924
|
+
credentials;
|
|
28925
|
+
constructor(config) {
|
|
28926
|
+
if (!config.name || !BROWSER_PROFILE_NAME_PATTERN.test(config.name)) {
|
|
28927
|
+
throw new Error("LuaBrowser requires a `name` that starts with a letter or digit and uses only letters, digits, underscores or hyphens (max 64).");
|
|
28928
|
+
}
|
|
28929
|
+
this.name = config.name;
|
|
28930
|
+
this.description = config.description;
|
|
28931
|
+
this.engine = config.engine;
|
|
28932
|
+
this.fallback = config.fallback;
|
|
28933
|
+
this.proxyCountry = config.proxyCountry;
|
|
28934
|
+
this.allowedDomains = config.allowedDomains;
|
|
28935
|
+
this.confirmActions = config.confirmActions;
|
|
28936
|
+
this.maxSessionMinutes = config.maxSessionMinutes;
|
|
28937
|
+
this.idleTimeoutSeconds = config.idleTimeoutSeconds;
|
|
28938
|
+
this.maxConcurrentSessions = config.maxConcurrentSessions;
|
|
28939
|
+
this.screenshots = config.screenshots;
|
|
28940
|
+
this.logContent = config.logContent;
|
|
28941
|
+
this.persist = config.persist;
|
|
28942
|
+
this.credentials = config.credentials;
|
|
28943
|
+
}
|
|
28944
|
+
};
|
|
28945
|
+
function defineBrowser(config) {
|
|
28946
|
+
return new LuaBrowser(config);
|
|
28947
|
+
}
|
|
28948
|
+
__name(defineBrowser, "defineBrowser");
|
|
28949
|
+
|
|
28048
28950
|
// src/types/decision.ts
|
|
28049
28951
|
init_dist();
|
|
28050
28952
|
init_decisions_api();
|
|
@@ -28228,6 +29130,26 @@ function createOfflineThreadsApi() {
|
|
|
28228
29130
|
}
|
|
28229
29131
|
__name(createOfflineThreadsApi, "createOfflineThreadsApi");
|
|
28230
29132
|
|
|
29133
|
+
// src/api/browser.offline.ts
|
|
29134
|
+
init_dist();
|
|
29135
|
+
function unavailable2(member) {
|
|
29136
|
+
return browserError("BROWSER_UNAVAILABLE", `Browser.${member} only runs on the Lua platform (deployed or sandbox agents with \`browser\` on), not in lua test / lua dev`);
|
|
29137
|
+
}
|
|
29138
|
+
__name(unavailable2, "unavailable");
|
|
29139
|
+
function createOfflineBrowserApi() {
|
|
29140
|
+
const members = Object.fromEntries([
|
|
29141
|
+
...BROWSER_COMMAND_NAMES,
|
|
29142
|
+
BROWSER_EXECUTE_METHOD
|
|
29143
|
+
].map((name) => [
|
|
29144
|
+
name,
|
|
29145
|
+
async () => {
|
|
29146
|
+
throw unavailable2(name);
|
|
29147
|
+
}
|
|
29148
|
+
]));
|
|
29149
|
+
return members;
|
|
29150
|
+
}
|
|
29151
|
+
__name(createOfflineBrowserApi, "createOfflineBrowserApi");
|
|
29152
|
+
|
|
28231
29153
|
// src/api/progress.api.service.ts
|
|
28232
29154
|
function createOfflineProgressApi() {
|
|
28233
29155
|
return Object.freeze({
|
|
@@ -29098,6 +30020,7 @@ var Secrets = {
|
|
|
29098
30020
|
};
|
|
29099
30021
|
var Metrics = offlineMetrics;
|
|
29100
30022
|
var Threads = createOfflineThreadsApi();
|
|
30023
|
+
var Browser = createOfflineBrowserApi();
|
|
29101
30024
|
var Progress = createOfflineProgressApi();
|
|
29102
30025
|
function defineDevice(config) {
|
|
29103
30026
|
return new LuaDevice(config);
|
|
@@ -29117,6 +30040,7 @@ export {
|
|
|
29117
30040
|
BasketInstance,
|
|
29118
30041
|
BasketStatus,
|
|
29119
30042
|
Baskets,
|
|
30043
|
+
Browser,
|
|
29120
30044
|
CDN,
|
|
29121
30045
|
CHANNEL_SEND_CHANNELS,
|
|
29122
30046
|
Channels,
|
|
@@ -29129,6 +30053,7 @@ export {
|
|
|
29129
30053
|
Jobs,
|
|
29130
30054
|
Lua,
|
|
29131
30055
|
LuaAgent,
|
|
30056
|
+
LuaBrowser,
|
|
29132
30057
|
LuaDecision,
|
|
29133
30058
|
LuaDevice,
|
|
29134
30059
|
LuaDeviceTrigger,
|
|
@@ -29162,11 +30087,14 @@ export {
|
|
|
29162
30087
|
UserDataInstance,
|
|
29163
30088
|
Voice,
|
|
29164
30089
|
WEB_APP_NAME_PATTERN,
|
|
30090
|
+
WORKFLOW_DEFAULT_MAX_DURATION_SECONDS,
|
|
30091
|
+
WORKFLOW_HITL_MAX_DURATION_SECONDS,
|
|
29165
30092
|
Workflows,
|
|
29166
30093
|
and2 as and,
|
|
29167
30094
|
checkAsUserRequiresUser,
|
|
29168
30095
|
createStep,
|
|
29169
30096
|
createWorkflow,
|
|
30097
|
+
defineBrowser,
|
|
29170
30098
|
defineDecision,
|
|
29171
30099
|
defineDevice,
|
|
29172
30100
|
defineDeviceTrigger,
|