lua-cli 3.49.1 → 3.50.0
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 +180 -22
- package/dist/api-exports.js +375 -27
- package/dist/api-exports.js.map +1 -1
- package/dist/index.js +486 -66
- package/dist/index.js.map +1 -1
- package/dist/workflow-builder.js +220 -20
- package/dist/workflow-builder.js.map +1 -1
- package/docs/CLI_REFERENCE.md +2 -1
- package/docs/README.md +3 -3
- package/docs/api/Agents.md +51 -9
- package/docs/api/Data.md +51 -0
- package/docs/api/Decisions.md +49 -13
- package/docs/api/LuaDecision.md +2 -2
- package/docs/api/Workflows.md +1 -0
- package/docs/workflows/schedules.md +1 -1
- package/package.json +3 -3
- package/template/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -950,6 +950,17 @@ function aiGenerateInputFromSimplified(prompt, content) {
|
|
|
950
950
|
]
|
|
951
951
|
};
|
|
952
952
|
}
|
|
953
|
+
function directProviderOfOpenRouterModel(model) {
|
|
954
|
+
return OPENROUTER_DIRECT_VENDORS.find((vendor) => vendor.pattern.test(model))?.provider;
|
|
955
|
+
}
|
|
956
|
+
function openRouterModelIssue(options) {
|
|
957
|
+
const model = typeof options.model === "string" && options.model ? options.model : void 0;
|
|
958
|
+
if (options.provider === "openrouter" && !model) return OPENROUTER_NEEDS_MODEL_MESSAGE;
|
|
959
|
+
if (!model || !model.includes("/")) return null;
|
|
960
|
+
const direct = directProviderOfOpenRouterModel(model);
|
|
961
|
+
if (!direct) return null;
|
|
962
|
+
return `model ${model} runs on provider '${direct}': set provider '${direct}' instead of a vendor/model id`;
|
|
963
|
+
}
|
|
953
964
|
function formatDecisionSandboxPrimitive(name, tool) {
|
|
954
965
|
return tool ? `${name}${DECISION_SANDBOX_TOOL_SEPARATOR}${tool}` : name;
|
|
955
966
|
}
|
|
@@ -2657,6 +2668,31 @@ function scrubProviderMessage(raw, max = PROVIDER_MESSAGE_MAX_CHARS) {
|
|
|
2657
2668
|
function scrubStepErrorMessage(raw) {
|
|
2658
2669
|
return scrubProviderMessage(raw, ERROR_MESSAGE_MAX_CHARS);
|
|
2659
2670
|
}
|
|
2671
|
+
function scrubSecretsDeep(value3, options = {}) {
|
|
2672
|
+
return scrubDeep(value3, 0, /* @__PURE__ */ new WeakSet(), options.text !== false);
|
|
2673
|
+
}
|
|
2674
|
+
function isPlainObject2(v) {
|
|
2675
|
+
if (!v || typeof v !== "object") return false;
|
|
2676
|
+
const proto = Object.getPrototypeOf(v);
|
|
2677
|
+
return proto === Object.prototype || proto === null;
|
|
2678
|
+
}
|
|
2679
|
+
function scrubDeep(value3, depth, seen, text2) {
|
|
2680
|
+
if (typeof value3 === "string") return text2 ? scrubSecretText(value3) : value3;
|
|
2681
|
+
if (!value3 || typeof value3 !== "object") return value3;
|
|
2682
|
+
if (!Array.isArray(value3) && !isPlainObject2(value3)) return value3;
|
|
2683
|
+
if (depth >= SCRUB_DEEP_MAX_DEPTH || seen.has(value3)) return REDACTED_PLACEHOLDER;
|
|
2684
|
+
seen.add(value3);
|
|
2685
|
+
try {
|
|
2686
|
+
if (Array.isArray(value3)) return value3.map((v) => scrubDeep(v, depth + 1, seen, text2));
|
|
2687
|
+
const out = {};
|
|
2688
|
+
for (const [k, v] of Object.entries(value3)) {
|
|
2689
|
+
out[k] = isWorkflowSecretKey(k) && v !== null && v !== void 0 && typeof v !== "boolean" ? REDACTED_PLACEHOLDER : scrubDeep(v, depth + 1, seen, text2);
|
|
2690
|
+
}
|
|
2691
|
+
return out;
|
|
2692
|
+
} finally {
|
|
2693
|
+
seen.delete(value3);
|
|
2694
|
+
}
|
|
2695
|
+
}
|
|
2660
2696
|
function isTestSessionId(value3) {
|
|
2661
2697
|
return typeof value3 === "string" && TEST_SESSION_ID_PATTERN.test(value3);
|
|
2662
2698
|
}
|
|
@@ -2781,6 +2817,68 @@ function supervisionAccessBindingViolation(merged) {
|
|
|
2781
2817
|
}
|
|
2782
2818
|
return null;
|
|
2783
2819
|
}
|
|
2820
|
+
function canonicalSupervisedSecretJson(row2) {
|
|
2821
|
+
const sorted = {};
|
|
2822
|
+
for (const k of Object.keys(row2).sort()) sorted[k] = row2[k];
|
|
2823
|
+
return JSON.stringify(sorted);
|
|
2824
|
+
}
|
|
2825
|
+
function validateSupervisedSecretPut(args2) {
|
|
2826
|
+
const bad = /* @__PURE__ */ __name3((message) => ({
|
|
2827
|
+
ok: false,
|
|
2828
|
+
code: SUPERVISED_SECRET_ERRORS.BAD_ARGS,
|
|
2829
|
+
message
|
|
2830
|
+
}), "bad");
|
|
2831
|
+
const collection = args2?.collection;
|
|
2832
|
+
if (typeof collection !== "string" || !SUPERVISED_SECRET_NAME_RE.test(collection) || collection.startsWith("__")) {
|
|
2833
|
+
return bad("collection must be an explicit collection name (letters, digits, _ . : -; at most 128)");
|
|
2834
|
+
}
|
|
2835
|
+
const key = args2?.key;
|
|
2836
|
+
if (typeof key !== "string" || !SUPERVISED_SECRET_NAME_RE.test(key)) {
|
|
2837
|
+
return bad("key must be an explicit row key (letters, digits, _ . : -; at most 128)");
|
|
2838
|
+
}
|
|
2839
|
+
const value3 = args2?.value;
|
|
2840
|
+
if (!value3 || typeof value3 !== "object" || Array.isArray(value3) || Object.getPrototypeOf(value3) !== Object.prototype) {
|
|
2841
|
+
return bad("value must be a plain object of scalar fields");
|
|
2842
|
+
}
|
|
2843
|
+
const fields = Object.keys(value3);
|
|
2844
|
+
const row2 = {};
|
|
2845
|
+
for (const field of fields) {
|
|
2846
|
+
if (!SUPERVISED_SECRET_FIELD_RE.test(field)) {
|
|
2847
|
+
return bad("value field names must be plain identifiers (no $ prefix, no dots; at most 64 characters)");
|
|
2848
|
+
}
|
|
2849
|
+
const v = value3[field];
|
|
2850
|
+
if (typeof v === "string") {
|
|
2851
|
+
if (v.length > SUPERVISED_SECRET_LIMITS.maxStringLength) {
|
|
2852
|
+
return bad(`value.${field} is longer than ${SUPERVISED_SECRET_LIMITS.maxStringLength} characters`);
|
|
2853
|
+
}
|
|
2854
|
+
} else if (typeof v === "number") {
|
|
2855
|
+
if (!Number.isFinite(v)) return bad(`value.${field} must be a finite number`);
|
|
2856
|
+
} else if (typeof v !== "boolean" && v !== null) {
|
|
2857
|
+
return bad(`value.${field} must be a string, a finite number, a boolean or null (no nesting)`);
|
|
2858
|
+
}
|
|
2859
|
+
row2[field] = v;
|
|
2860
|
+
}
|
|
2861
|
+
if (Object.prototype.hasOwnProperty.call(row2, SUPERVISED_SECRET_KEY_FIELD) && row2[SUPERVISED_SECRET_KEY_FIELD] !== key) {
|
|
2862
|
+
return bad(`value.${SUPERVISED_SECRET_KEY_FIELD}, when present, must equal key`);
|
|
2863
|
+
}
|
|
2864
|
+
row2[SUPERVISED_SECRET_KEY_FIELD] = key;
|
|
2865
|
+
if (Object.keys(row2).length > SUPERVISED_SECRET_LIMITS.maxFields) {
|
|
2866
|
+
return bad(`value has more than ${SUPERVISED_SECRET_LIMITS.maxFields} fields`);
|
|
2867
|
+
}
|
|
2868
|
+
if (Object.keys(row2).length < 2) return bad("value must carry at least one field besides _pk");
|
|
2869
|
+
const bytes = new TextEncoder().encode(canonicalSupervisedSecretJson(row2)).byteLength;
|
|
2870
|
+
if (bytes > SUPERVISED_SECRET_LIMITS.maxBytes) {
|
|
2871
|
+
return bad(`value is larger than ${SUPERVISED_SECRET_LIMITS.maxBytes} bytes`);
|
|
2872
|
+
}
|
|
2873
|
+
return {
|
|
2874
|
+
ok: true,
|
|
2875
|
+
input: {
|
|
2876
|
+
collection,
|
|
2877
|
+
key,
|
|
2878
|
+
row: row2
|
|
2879
|
+
}
|
|
2880
|
+
};
|
|
2881
|
+
}
|
|
2784
2882
|
function hasFormatCharacters(text2) {
|
|
2785
2883
|
return FORMAT_CHARS.test(text2);
|
|
2786
2884
|
}
|
|
@@ -4666,7 +4764,7 @@ function describeFieldViolation(key, value3, check) {
|
|
|
4666
4764
|
return void 0;
|
|
4667
4765
|
}
|
|
4668
4766
|
function describeBrowserLogEventViolation(value3) {
|
|
4669
|
-
if (!
|
|
4767
|
+
if (!isPlainObject3(value3)) return "event must be an object";
|
|
4670
4768
|
const event = value3;
|
|
4671
4769
|
const base = describeBaseViolation(event);
|
|
4672
4770
|
if (base) return base;
|
|
@@ -4686,7 +4784,7 @@ function isBrowserLogEvent(value3) {
|
|
|
4686
4784
|
}
|
|
4687
4785
|
function describeBrowserLogContextViolation(value3) {
|
|
4688
4786
|
if (value3 === void 0) return void 0;
|
|
4689
|
-
if (!
|
|
4787
|
+
if (!isPlainObject3(value3)) return "logContext must be an object";
|
|
4690
4788
|
for (const [key, entry] of Object.entries(value3)) {
|
|
4691
4789
|
if (!BROWSER_LOG_CONTEXT_KEYS.includes(key)) return `logContext.${key} is not allowed`;
|
|
4692
4790
|
if (entry === void 0) continue;
|
|
@@ -4711,6 +4809,10 @@ function browserLogContextOfWorkerContext(context) {
|
|
|
4711
4809
|
if (context?.primitiveId) out.primitiveId = context.primitiveId;
|
|
4712
4810
|
if (context?.primitiveName) out.primitiveName = context.primitiveName;
|
|
4713
4811
|
if (context?.channel) out.channel = context.channel;
|
|
4812
|
+
if (context?.environment && AGENT_LOG_ENVIRONMENTS.includes(context.environment)) {
|
|
4813
|
+
out.environment = context.environment;
|
|
4814
|
+
}
|
|
4815
|
+
if (context?.agentVersion) out.agentVersion = context.agentVersion;
|
|
4714
4816
|
return out;
|
|
4715
4817
|
}
|
|
4716
4818
|
function browserLogEventOfWorkerEvent(event, mapping = {}) {
|
|
@@ -7514,7 +7616,13 @@ function maskMcpServerHeaders(server) {
|
|
|
7514
7616
|
headersSet: headerNames.length > 0
|
|
7515
7617
|
};
|
|
7516
7618
|
}
|
|
7517
|
-
var __defProp3, __name3, 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, DECISION_INACTIVE_CODE, 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, 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_ENGINES, 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_AGENT_EFFORTS, WORKFLOW_MODEL_CLASSES, WORKFLOW_TASK_CLASSES, WORKFLOW_MODEL_TRAITS, WORKFLOW_MODEL_REASON_MAX_LENGTH, WORKFLOW_MODELS_COMPOSE_MODES, WORKFLOW_MODELS_PIN_MODES, WORKFLOW_MODELS_FALLBACK_MODES, WORKFLOW_MODELS_CONSENT_ACTIONS_MIN, WORKFLOW_DEFAULT_TASK_CLASS_MAP, WORKFLOW_MODELS_MAX_CLASS_DEFAULT, WORKFLOW_AUTONOMY_FORMS, WORKFLOW_AUTONOMY_NUMERIC_KEYS, WORKFLOW_AUTONOMY_ENVELOPE_KEYS, WORKFLOW_AUTONOMY_ENABLED_DEFAULT, 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_FORMATS, LOG_DRAIN_SEVERITIES, LOG_DRAIN_SOURCES, LOG_DRAIN_CONTENT_SOURCES, LOG_DRAIN_DEFAULT_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, EventType, 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, TYPED_API_KEY, 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_JOURNAL_PROTOCOL_VERSION, 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_WALL_MS, WEB_ROUTE_MAX_REQUEST_BODY_BYTES, WEB_ROUTE_MAX_RESPONSE_BYTES, WEB_APP_NAME_PATTERN, WEB_APP_ENTRY_HTML_MAX_CHARS, WEB_APP_MAX_ASSETS, WEB_APP_ASSET_PATH_PATTERN, WEB_APP_ASSET_PATH_MAX_CHARS, WEB_APP_MAX_ROUTES, WEB_APP_MAX_ASSET_BYTES, WEB_APP_CSP_NONCE_PLACEHOLDER, 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;
|
|
7619
|
+
function sharedDataOwnerKey(collectionId) {
|
|
7620
|
+
return `${SHARED_DATA_OWNER_PREFIX}${collectionId}`;
|
|
7621
|
+
}
|
|
7622
|
+
function isSharedDataOwnerKey(agentId2) {
|
|
7623
|
+
return typeof agentId2 === "string" && agentId2.startsWith(SHARED_DATA_OWNER_PREFIX);
|
|
7624
|
+
}
|
|
7625
|
+
var __defProp3, __name3, PLUMBING_THREAD_CHANNELS, CHANNEL_CONVERSATION_CHANNELS, HIDDEN_THREAD_CHANNELS, CHOICE_PERSON_TURN_CHANNELS, CHOICE_REPLAY_CLIENT_CAPABILITIES, CHOICE_REPLAY_CLIENT_SURFACES, DECISION_PROVIDERS, DECISION_FALLBACK_PROVIDERS, OPENROUTER_DIRECT_VENDORS, OPENROUTER_NEEDS_MODEL_MESSAGE, DECISION_QUESTION_TYPES, DECISION_NAME_PATTERN, DECISION_SANDBOX_SITE_HEADER, DECISION_SANDBOX_PRIMITIVE_HEADER, DECISION_SANDBOX_TOOL_SEPARATOR, DECISION_LIMITS, DECISION_ERROR_CODES, DECISION_INACTIVE_CODE, MAX_NAME_CHARS, InstructionsSchema, NameSchema, OddsQuestionSchema, ChoiceQuestionSchema, ScoreQuestionSchema, DecisionQuestionSchema, DecisionOptionsSchema, DecisionQuestionsSchema, DecisionDefinitionSchema, DecisionDefinitionWriteSchema, 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, SCRUB_DEEP_MAX_DEPTH, 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, SUPERVISED_SECRET_LIMITS, SUPERVISED_SECRET_NAME_RE, SUPERVISED_SECRET_FIELD_RE, SUPERVISED_SECRET_KEY_FIELD, SUPERVISED_SECRET_ERRORS, 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, 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_ENGINES, 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, isPlainObject3, 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_AGENT_EFFORTS, WORKFLOW_MODEL_CLASSES, WORKFLOW_TASK_CLASSES, WORKFLOW_MODEL_TRAITS, WORKFLOW_MODEL_REASON_MAX_LENGTH, WORKFLOW_MODELS_COMPOSE_MODES, WORKFLOW_MODELS_PIN_MODES, WORKFLOW_MODELS_FALLBACK_MODES, WORKFLOW_MODELS_CONSENT_ACTIONS_MIN, WORKFLOW_DEFAULT_TASK_CLASS_MAP, WORKFLOW_MODELS_MAX_CLASS_DEFAULT, WORKFLOW_AUTONOMY_FORMS, WORKFLOW_AUTONOMY_NUMERIC_KEYS, WORKFLOW_AUTONOMY_ENVELOPE_KEYS, WORKFLOW_AUTONOMY_ENABLED_DEFAULT, 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_FORMATS, LOG_DRAIN_SEVERITIES, LOG_DRAIN_SOURCES, LOG_DRAIN_CONTENT_SOURCES, LOG_DRAIN_DEFAULT_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, EventType, 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, TYPED_API_KEY, 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_JOURNAL_PROTOCOL_VERSION, 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_WALL_MS, WEB_ROUTE_MAX_REQUEST_BODY_BYTES, WEB_ROUTE_MAX_RESPONSE_BYTES, WEB_APP_NAME_PATTERN, WEB_APP_ENTRY_HTML_MAX_CHARS, WEB_APP_MAX_ASSETS, WEB_APP_ASSET_PATH_PATTERN, WEB_APP_ASSET_PATH_MAX_CHARS, WEB_APP_MAX_ROUTES, WEB_APP_MAX_ASSET_BYTES, WEB_APP_CSP_NONCE_PLACEHOLDER, 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, SHARED_DATA_NAME_RE, SHARED_DATA_OWNER_PREFIX, SHARED_DATA_ERRORS;
|
|
7518
7626
|
var init_dist = __esm({
|
|
7519
7627
|
"../shared-types/dist/index.mjs"() {
|
|
7520
7628
|
"use strict";
|
|
@@ -7587,9 +7695,29 @@ var init_dist = __esm({
|
|
|
7587
7695
|
__name(aiGenerateInputFromSimplified, "aiGenerateInputFromSimplified");
|
|
7588
7696
|
__name3(aiGenerateInputFromSimplified, "aiGenerateInputFromSimplified");
|
|
7589
7697
|
DECISION_PROVIDERS = [
|
|
7698
|
+
"jev",
|
|
7699
|
+
"openai",
|
|
7700
|
+
"openrouter"
|
|
7701
|
+
];
|
|
7702
|
+
DECISION_FALLBACK_PROVIDERS = [
|
|
7590
7703
|
"jev",
|
|
7591
7704
|
"openai"
|
|
7592
7705
|
];
|
|
7706
|
+
OPENROUTER_DIRECT_VENDORS = [
|
|
7707
|
+
{
|
|
7708
|
+
pattern: /^~?typesafe\//,
|
|
7709
|
+
provider: "jev"
|
|
7710
|
+
},
|
|
7711
|
+
{
|
|
7712
|
+
pattern: /^openai\//,
|
|
7713
|
+
provider: "openai"
|
|
7714
|
+
}
|
|
7715
|
+
];
|
|
7716
|
+
__name(directProviderOfOpenRouterModel, "directProviderOfOpenRouterModel");
|
|
7717
|
+
__name3(directProviderOfOpenRouterModel, "directProviderOfOpenRouterModel");
|
|
7718
|
+
OPENROUTER_NEEDS_MODEL_MESSAGE = "provider openrouter needs a model id, such as liquid/d1";
|
|
7719
|
+
__name(openRouterModelIssue, "openRouterModelIssue");
|
|
7720
|
+
__name3(openRouterModelIssue, "openRouterModelIssue");
|
|
7593
7721
|
DECISION_QUESTION_TYPES = [
|
|
7594
7722
|
"odds",
|
|
7595
7723
|
"choice",
|
|
@@ -7673,7 +7801,7 @@ var init_dist = __esm({
|
|
|
7673
7801
|
]).optional(),
|
|
7674
7802
|
model: z.string().min(1).optional(),
|
|
7675
7803
|
fallback: z.union([
|
|
7676
|
-
z.enum(
|
|
7804
|
+
z.enum(DECISION_FALLBACK_PROVIDERS),
|
|
7677
7805
|
z.literal("none")
|
|
7678
7806
|
]).optional(),
|
|
7679
7807
|
region: z.literal("eu").optional(),
|
|
@@ -7702,6 +7830,16 @@ var init_dist = __esm({
|
|
|
7702
7830
|
description: z.string().max(DECISION_LIMITS.maxInstructionChars).optional(),
|
|
7703
7831
|
questions: DecisionQuestionsSchema
|
|
7704
7832
|
}).strict();
|
|
7833
|
+
DecisionDefinitionWriteSchema = DecisionDefinitionSchema.superRefine((definition, ctx) => {
|
|
7834
|
+
const issue = openRouterModelIssue(definition);
|
|
7835
|
+
if (issue) ctx.addIssue({
|
|
7836
|
+
code: z.ZodIssueCode.custom,
|
|
7837
|
+
path: [
|
|
7838
|
+
"model"
|
|
7839
|
+
],
|
|
7840
|
+
message: issue
|
|
7841
|
+
});
|
|
7842
|
+
});
|
|
7705
7843
|
INTEGRATION_PASSTHROUGH_READ_METHODS = [
|
|
7706
7844
|
"GET",
|
|
7707
7845
|
"HEAD"
|
|
@@ -7946,7 +8084,14 @@ var init_dist = __esm({
|
|
|
7946
8084
|
* the target (`snapshot.jobs[]`) so the promote activates and schedules it. Mongo-only marker write; EventBridge stays
|
|
7947
8085
|
* on the post-promote reconcile. Release-class: needs `register-job` AND `release` on the grant, from a signed step.
|
|
7948
8086
|
*/
|
|
7949
|
-
"jobs.register": "register-job"
|
|
8087
|
+
"jobs.register": "register-job",
|
|
8088
|
+
// [SW]
|
|
8089
|
+
/**
|
|
8090
|
+
* SW — `Agents.secrets(id).put(collection, key, value)`: write ONE secret row into the TARGET's own Data, in a
|
|
8091
|
+
* collection the grant names in `secretWriteCollections` (deny by default), keyed by `data._pk`. The value never
|
|
8092
|
+
* comes back: the answer is `{ ok, id, fingerprint }`, and the audit row carries the fingerprint only.
|
|
8093
|
+
*/
|
|
8094
|
+
"secrets.put": "act"
|
|
7950
8095
|
};
|
|
7951
8096
|
__name(isSupervisionOp, "isSupervisionOp");
|
|
7952
8097
|
__name3(isSupervisionOp, "isSupervisionOp");
|
|
@@ -8142,6 +8287,12 @@ var init_dist = __esm({
|
|
|
8142
8287
|
gate: "register-job",
|
|
8143
8288
|
targeted: true,
|
|
8144
8289
|
item: "JR"
|
|
8290
|
+
},
|
|
8291
|
+
/** SW — `Agents.secrets(id).put(collection, key, value)`: one secret row in a `secretWriteCollections` collection. */
|
|
8292
|
+
"secrets.put": {
|
|
8293
|
+
gate: "act",
|
|
8294
|
+
targeted: true,
|
|
8295
|
+
item: "SW"
|
|
8145
8296
|
}
|
|
8146
8297
|
};
|
|
8147
8298
|
SUPERVISION_WATCHDOG_OPS = {
|
|
@@ -8829,6 +8980,12 @@ var init_dist = __esm({
|
|
|
8829
8980
|
{
|
|
8830
8981
|
re: /\b(npm_)[A-Za-z0-9]{36}\b/g
|
|
8831
8982
|
},
|
|
8983
|
+
// Linear personal API keys (`lin_api_` + 40) and OAuth access / refresh tokens (`lin_oauth_` + 64 hex,
|
|
8984
|
+
// `lin_refresh_`): the fleet's Engineering Manager hands OAuth tokens to agents in a prompt + tool call, and
|
|
8985
|
+
// both landed verbatim in `vmExecutionLogs` (2026-10-11).
|
|
8986
|
+
{
|
|
8987
|
+
re: /\b(lin_(?:api|oauth|refresh)_)[A-Za-z0-9]{16,}/g
|
|
8988
|
+
},
|
|
8832
8989
|
{
|
|
8833
8990
|
re: /\b(sk-ant-)[A-Za-z0-9_-]{16,}/g
|
|
8834
8991
|
},
|
|
@@ -8847,11 +9004,16 @@ var init_dist = __esm({
|
|
|
8847
9004
|
{
|
|
8848
9005
|
re: /\b(ya29\.)[A-Za-z0-9_-]{20,}/g
|
|
8849
9006
|
},
|
|
9007
|
+
// 2026-10-11: `(?<![A-Za-z0-9_-])`, not `\b` — with `\b` every `eyJ` after a `-` / `_` started an attempt that
|
|
9008
|
+
// ran the first segment to the end of the run and failed on the missing `.`, so `eyJabcdefgh-` × 1 MB took
|
|
9009
|
+
// ~115 s (quadratic). Now a run of segment characters admits at most one attempt.
|
|
8850
9010
|
{
|
|
8851
|
-
re:
|
|
9011
|
+
re: /(?<![A-Za-z0-9_-])(eyJ)[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}/g
|
|
8852
9012
|
},
|
|
9013
|
+
// 2026-10-11: the body stops at the next `-----BEGIN ` — a lazy `[\s\S]*?` let every unterminated BEGIN scan to the
|
|
9014
|
+
// end of the text (quadratic on a repeated header with no END). A key whose END follows is matched as before.
|
|
8853
9015
|
{
|
|
8854
|
-
re: /(-----BEGIN [A-Z ]*PRIVATE KEY-----)[\s\S]*?-----END [A-Z ]*PRIVATE KEY-----/g
|
|
9016
|
+
re: /(-----BEGIN [A-Z ]*PRIVATE KEY-----)(?:(?!-----BEGIN )[\s\S])*?-----END [A-Z ]*PRIVATE KEY-----/g
|
|
8855
9017
|
},
|
|
8856
9018
|
// `https://x-access-token:<token>@github.com/…` (the git credential shape the pod scrubbed already)
|
|
8857
9019
|
{
|
|
@@ -8859,7 +9021,7 @@ var init_dist = __esm({
|
|
|
8859
9021
|
suffix: true
|
|
8860
9022
|
}
|
|
8861
9023
|
];
|
|
8862
|
-
SECRET_NAME = "(?:authorization|proxy-authorization|x-api-key|x-wf-[a-z-]*key|x-internal-auth|api[_-]?key|apikey|access[_-]?key|secret[_-]?key|private[_-]?key|client[_-]?secret|secret|password|passwd|pwd|passphrase|token|credentials?)";
|
|
9024
|
+
SECRET_NAME = "(?:access[_-]?token|refresh[_-]?token|id[_-]?token|auth[_-]?token|authorization|proxy-authorization|x-api-key|x-wf-[a-z-]*key|x-internal-auth|api[_-]?key|apikey|access[_-]?key|secret[_-]?key|private[_-]?key|client[_-]?secret|secret|password|passwd|pwd|passphrase|token|credentials?)";
|
|
8863
9025
|
SECRET_PAIR_PATTERNS = [
|
|
8864
9026
|
// `Authorization: Bearer x`, `x-api-key: x`, `AWS_SECRET_ACCESS_KEY=x`, `SVC_JOB_KEY=x`, `"apiKey": "x"`,
|
|
8865
9027
|
// `FOO_TOKEN=x`, `secretKey=x`, `password=x`. Groups: the char before the name, the name, the separator
|
|
@@ -8935,6 +9097,13 @@ var init_dist = __esm({
|
|
|
8935
9097
|
__name3(scrubProviderMessage, "scrubProviderMessage");
|
|
8936
9098
|
__name(scrubStepErrorMessage, "scrubStepErrorMessage");
|
|
8937
9099
|
__name3(scrubStepErrorMessage, "scrubStepErrorMessage");
|
|
9100
|
+
SCRUB_DEEP_MAX_DEPTH = 12;
|
|
9101
|
+
__name(scrubSecretsDeep, "scrubSecretsDeep");
|
|
9102
|
+
__name3(scrubSecretsDeep, "scrubSecretsDeep");
|
|
9103
|
+
__name(isPlainObject2, "isPlainObject2");
|
|
9104
|
+
__name3(isPlainObject2, "isPlainObject");
|
|
9105
|
+
__name(scrubDeep, "scrubDeep");
|
|
9106
|
+
__name3(scrubDeep, "scrubDeep");
|
|
8938
9107
|
TEST_SESSION_ID_PATTERN = /^tsn_[0-9a-f-]{36}$/;
|
|
8939
9108
|
__name(isTestSessionId, "isTestSessionId");
|
|
8940
9109
|
__name3(isTestSessionId, "isTestSessionId");
|
|
@@ -8986,6 +9155,27 @@ var init_dist = __esm({
|
|
|
8986
9155
|
__name3(sameSupervisionAccessFields, "sameSupervisionAccessFields");
|
|
8987
9156
|
__name(supervisionAccessBindingViolation, "supervisionAccessBindingViolation");
|
|
8988
9157
|
__name3(supervisionAccessBindingViolation, "supervisionAccessBindingViolation");
|
|
9158
|
+
SUPERVISED_SECRET_LIMITS = {
|
|
9159
|
+
/** Fields in `value` (the `_pk` field included). */
|
|
9160
|
+
maxFields: 32,
|
|
9161
|
+
/** One string field's length. */
|
|
9162
|
+
maxStringLength: 8192,
|
|
9163
|
+
/** The canonical JSON of the whole row. */
|
|
9164
|
+
maxBytes: 16384
|
|
9165
|
+
};
|
|
9166
|
+
SUPERVISED_SECRET_NAME_RE = /^[A-Za-z0-9_.:-]{1,128}$/;
|
|
9167
|
+
SUPERVISED_SECRET_FIELD_RE = /^[A-Za-z_][A-Za-z0-9_]{0,63}$/;
|
|
9168
|
+
SUPERVISED_SECRET_KEY_FIELD = "_pk";
|
|
9169
|
+
SUPERVISED_SECRET_ERRORS = {
|
|
9170
|
+
BAD_ARGS: "supervision_secret_bad_args",
|
|
9171
|
+
NOT_GRANTED: "supervision_secret_write_not_granted",
|
|
9172
|
+
/** A collection named for secret writes is write-only for the supervisor: `data.get` / `data.query` refuse it. */
|
|
9173
|
+
WRITE_ONLY: "supervision_secret_collection_write_only"
|
|
9174
|
+
};
|
|
9175
|
+
__name(canonicalSupervisedSecretJson, "canonicalSupervisedSecretJson");
|
|
9176
|
+
__name3(canonicalSupervisedSecretJson, "canonicalSupervisedSecretJson");
|
|
9177
|
+
__name(validateSupervisedSecretPut, "validateSupervisedSecretPut");
|
|
9178
|
+
__name3(validateSupervisedSecretPut, "validateSupervisedSecretPut");
|
|
8989
9179
|
CONNECTION_HANDOVER_APPROVAL_PAYLOAD_KEY = "connectionAssignment";
|
|
8990
9180
|
CONNECTION_HANDOVER_APPROVAL_CARD_MAX_CHARS = 1200;
|
|
8991
9181
|
CONNECTION_HANDOVER_LIMITS = {
|
|
@@ -9865,7 +10055,7 @@ var init_dist = __esm({
|
|
|
9865
10055
|
},
|
|
9866
10056
|
{
|
|
9867
10057
|
name: "find",
|
|
9868
|
-
description: "Act by semantic locator. Args: by(role|text|label|placeholder|alt|title|testid), query, action(click|fill|
|
|
10058
|
+
description: "Act by semantic locator. Args: by(role|text|label|placeholder|alt|title|testid), query, action(click|fill|hover|check|text), value?, name?, exact?."
|
|
9869
10059
|
},
|
|
9870
10060
|
// AI fallbacks
|
|
9871
10061
|
{
|
|
@@ -9879,7 +10069,7 @@ var init_dist = __esm({
|
|
|
9879
10069
|
// wait
|
|
9880
10070
|
{
|
|
9881
10071
|
name: "wait",
|
|
9882
|
-
description: "Wait for a condition. Provide one of: selector(
|
|
10072
|
+
description: "Wait for a condition. Provide one of: selector (waits until it is visible), ms, text, url, load, fn."
|
|
9883
10073
|
},
|
|
9884
10074
|
// tabs / frames
|
|
9885
10075
|
{
|
|
@@ -9914,7 +10104,7 @@ var init_dist = __esm({
|
|
|
9914
10104
|
},
|
|
9915
10105
|
{
|
|
9916
10106
|
name: "set",
|
|
9917
|
-
description: "Configure the browser. Args: setting(viewport|device|geo|headers|credentials|media), args[]."
|
|
10107
|
+
description: "Configure the browser. Args: setting(viewport|device|geo|headers|credentials|media|offline), args[]."
|
|
9918
10108
|
},
|
|
9919
10109
|
// files / clipboard
|
|
9920
10110
|
{
|
|
@@ -9958,7 +10148,7 @@ var init_dist = __esm({
|
|
|
9958
10148
|
},
|
|
9959
10149
|
{
|
|
9960
10150
|
name: "keyboard",
|
|
9961
|
-
description: "Low-level keyboard at focus. Args: action(type|inserttext
|
|
10151
|
+
description: "Low-level keyboard at focus. Args: action(type|inserttext), text. Use press for single keys and chords."
|
|
9962
10152
|
},
|
|
9963
10153
|
{
|
|
9964
10154
|
name: "state",
|
|
@@ -10252,7 +10442,11 @@ var init_dist = __esm({
|
|
|
10252
10442
|
"max-steps",
|
|
10253
10443
|
"cost-cap",
|
|
10254
10444
|
"error",
|
|
10255
|
-
"reaped"
|
|
10445
|
+
"reaped",
|
|
10446
|
+
"cancelled",
|
|
10447
|
+
"confirmation",
|
|
10448
|
+
"blocked",
|
|
10449
|
+
"stopped"
|
|
10256
10450
|
];
|
|
10257
10451
|
BROWSER_LOG_CONTEXT_KEYS = [
|
|
10258
10452
|
"runId",
|
|
@@ -10269,9 +10463,9 @@ var init_dist = __esm({
|
|
|
10269
10463
|
isString = /* @__PURE__ */ __name3((value3) => typeof value3 === "string", "isString");
|
|
10270
10464
|
isBoolean = /* @__PURE__ */ __name3((value3) => typeof value3 === "boolean", "isBoolean");
|
|
10271
10465
|
isCount = /* @__PURE__ */ __name3((value3) => typeof value3 === "number" && Number.isFinite(value3) && value3 >= 0, "isCount");
|
|
10272
|
-
|
|
10466
|
+
isPlainObject3 = /* @__PURE__ */ __name3((value3) => typeof value3 === "object" && value3 !== null && !Array.isArray(value3), "isPlainObject");
|
|
10273
10467
|
oneOf = /* @__PURE__ */ __name3((values) => (value3) => typeof value3 === "string" && values.includes(value3), "oneOf");
|
|
10274
|
-
isLimits = /* @__PURE__ */ __name3((value3) =>
|
|
10468
|
+
isLimits = /* @__PURE__ */ __name3((value3) => isPlainObject3(value3) && Object.values(value3).every((entry) => isCount(entry)), "isLimits");
|
|
10275
10469
|
EVENT_SHAPES = {
|
|
10276
10470
|
"session.opened": {
|
|
10277
10471
|
required: {
|
|
@@ -10280,7 +10474,8 @@ var init_dist = __esm({
|
|
|
10280
10474
|
optional: {
|
|
10281
10475
|
limits: isLimits,
|
|
10282
10476
|
region: isString,
|
|
10283
|
-
liveUrl: isString
|
|
10477
|
+
liveUrl: isString,
|
|
10478
|
+
browser: isString
|
|
10284
10479
|
}
|
|
10285
10480
|
},
|
|
10286
10481
|
command: {
|
|
@@ -10290,7 +10485,7 @@ var init_dist = __esm({
|
|
|
10290
10485
|
ok: isBoolean
|
|
10291
10486
|
},
|
|
10292
10487
|
optional: {
|
|
10293
|
-
args:
|
|
10488
|
+
args: isPlainObject3,
|
|
10294
10489
|
urlBefore: isString,
|
|
10295
10490
|
urlAfter: isString,
|
|
10296
10491
|
resultBytes: isCount,
|
|
@@ -13311,6 +13506,23 @@ listed here; never invent a target.`;
|
|
|
13311
13506
|
}).strict();
|
|
13312
13507
|
__name(maskMcpServerHeaders, "maskMcpServerHeaders");
|
|
13313
13508
|
__name3(maskMcpServerHeaders, "maskMcpServerHeaders");
|
|
13509
|
+
SHARED_DATA_NAME_RE = /^[A-Za-z0-9_.-]{1,128}$/;
|
|
13510
|
+
SHARED_DATA_OWNER_PREFIX = "shared:";
|
|
13511
|
+
__name(sharedDataOwnerKey, "sharedDataOwnerKey");
|
|
13512
|
+
__name3(sharedDataOwnerKey, "sharedDataOwnerKey");
|
|
13513
|
+
__name(isSharedDataOwnerKey, "isSharedDataOwnerKey");
|
|
13514
|
+
__name3(isSharedDataOwnerKey, "isSharedDataOwnerKey");
|
|
13515
|
+
SHARED_DATA_ERRORS = {
|
|
13516
|
+
/** Not in the ACL for this access, the collection does not exist, or it belongs to another org: one answer. */
|
|
13517
|
+
FORBIDDEN: "shared_data_forbidden",
|
|
13518
|
+
/** A test session may read a shared collection but never write it (no shadow namespace for shared rows). */
|
|
13519
|
+
TEST_SESSION_WRITE_REFUSED: "shared_data_test_session_write_refused",
|
|
13520
|
+
/** `lua test` / offline runs have no server-side ACL to consult. */
|
|
13521
|
+
UNAVAILABLE_OFFLINE: "shared_data_unavailable_offline",
|
|
13522
|
+
/** A private Data route was called with a shared-collection owner key. */
|
|
13523
|
+
RESERVED_OWNER_KEY: "shared_data_reserved_owner_key",
|
|
13524
|
+
INVALID_NAME: "shared_data_invalid_name"
|
|
13525
|
+
};
|
|
13314
13526
|
}
|
|
13315
13527
|
});
|
|
13316
13528
|
|
|
@@ -13597,6 +13809,12 @@ function joinHint(...parts) {
|
|
|
13597
13809
|
const lines = parts.filter((part) => typeof part === "string" && part.length > 0);
|
|
13598
13810
|
return lines.length > 0 ? lines.join("\n") : void 0;
|
|
13599
13811
|
}
|
|
13812
|
+
function isLuaErrorBody(body) {
|
|
13813
|
+
return typeof body.message === "string" || typeof body.statusCode === "number" || typeof body.code === "string";
|
|
13814
|
+
}
|
|
13815
|
+
function isEdgeBlockedError(error) {
|
|
13816
|
+
return CliError.isCliError(error) && error.serverCode === EDGE_BLOCKED_CODE;
|
|
13817
|
+
}
|
|
13600
13818
|
function isAccessDeniedError(error) {
|
|
13601
13819
|
if (CliError.isCliError(error)) return error.statusCode === 403;
|
|
13602
13820
|
return error instanceof Error && error.message.startsWith("Access denied (403)");
|
|
@@ -13868,7 +14086,7 @@ function reportUnhandledCliError(error) {
|
|
|
13868
14086
|
process.exitCode = reported.exitCode;
|
|
13869
14087
|
return reported.exitCode;
|
|
13870
14088
|
}
|
|
13871
|
-
var CLI_EXIT, CliError, HandledCliError, debugFlag, 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, CLI_EXIT_CODE_HELP;
|
|
14089
|
+
var CLI_EXIT, CliError, EDGE_BLOCKED_CODE, HandledCliError, debugFlag, 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, CLI_EXIT_CODE_HELP;
|
|
13872
14090
|
var init_cli_error = __esm({
|
|
13873
14091
|
"src/errors/cli.error.ts"() {
|
|
13874
14092
|
"use strict";
|
|
@@ -13984,6 +14202,9 @@ var init_cli_error = __esm({
|
|
|
13984
14202
|
__name(isTypedCliError, "isTypedCliError");
|
|
13985
14203
|
__name(listHint, "listHint");
|
|
13986
14204
|
__name(joinHint, "joinHint");
|
|
14205
|
+
EDGE_BLOCKED_CODE = "EDGE_BLOCKED";
|
|
14206
|
+
__name(isLuaErrorBody, "isLuaErrorBody");
|
|
14207
|
+
__name(isEdgeBlockedError, "isEdgeBlockedError");
|
|
13987
14208
|
__name(isAccessDeniedError, "isAccessDeniedError");
|
|
13988
14209
|
HandledCliError = class extends Error {
|
|
13989
14210
|
static {
|
|
@@ -17306,7 +17527,7 @@ function resolvePlacements(calls) {
|
|
|
17306
17527
|
function isConditionalJoinId(stepId) {
|
|
17307
17528
|
return CONDITIONAL_JOIN_ID.test(stepId);
|
|
17308
17529
|
}
|
|
17309
|
-
function
|
|
17530
|
+
function isPlainObject4(v) {
|
|
17310
17531
|
return typeof v === "object" && v !== null && !Array.isArray(v);
|
|
17311
17532
|
}
|
|
17312
17533
|
function leafValue(row2) {
|
|
@@ -17327,7 +17548,7 @@ function deriveRunOutput(steps) {
|
|
|
17327
17548
|
if (leaves.length === 1) {
|
|
17328
17549
|
const leaf = leaves[0];
|
|
17329
17550
|
const value22 = leafValue(leaf);
|
|
17330
|
-
if (isConditionalJoinId(leaf.stepId) &&
|
|
17551
|
+
if (isConditionalJoinId(leaf.stepId) && isPlainObject4(value22)) {
|
|
17331
17552
|
const keys = Object.keys(value22);
|
|
17332
17553
|
if (keys.length === 1) return {
|
|
17333
17554
|
output: value22[keys[0]],
|
|
@@ -19317,8 +19538,8 @@ var init_dist2 = __esm({
|
|
|
19317
19538
|
CONDITIONAL_JOIN_ID = /^conditional@\d+\.join$/;
|
|
19318
19539
|
__name(isConditionalJoinId, "isConditionalJoinId");
|
|
19319
19540
|
__name6(isConditionalJoinId, "isConditionalJoinId");
|
|
19320
|
-
__name(
|
|
19321
|
-
__name6(
|
|
19541
|
+
__name(isPlainObject4, "isPlainObject");
|
|
19542
|
+
__name6(isPlainObject4, "isPlainObject");
|
|
19322
19543
|
__name(leafValue, "leafValue");
|
|
19323
19544
|
__name6(leafValue, "leafValue");
|
|
19324
19545
|
__name(runOutputLeaves, "runOutputLeaves");
|
|
@@ -20818,6 +21039,14 @@ async function classifyErrorResponse(response) {
|
|
|
20818
21039
|
}
|
|
20819
21040
|
throw new AuthenticationError(`Authentication failed: ${serverMessage}`, "unknown", serverMessage);
|
|
20820
21041
|
}
|
|
21042
|
+
if (response.status === 403 && !isLuaErrorBody(errorData) && isHtmlResponse(response)) {
|
|
21043
|
+
throw new CliError("forbidden", "The request was blocked before it reached Lua (HTTP 403 from the network firewall), not by your credentials.", {
|
|
21044
|
+
exitCode: CLI_EXIT.FORBIDDEN,
|
|
21045
|
+
statusCode: 403,
|
|
21046
|
+
serverCode: EDGE_BLOCKED_CODE,
|
|
21047
|
+
hint: "Something in the request looked like an attack to the firewall, for example a URL that contains a system path. Change the request and try again."
|
|
21048
|
+
});
|
|
21049
|
+
}
|
|
20821
21050
|
if (response.status === 403) {
|
|
20822
21051
|
const detail = errorData.message || "You do not have permission to access this resource.";
|
|
20823
21052
|
const serverCode = serverCodeOf(errorData.code, errorData.error);
|
|
@@ -20933,6 +21162,9 @@ async function* parseSseStream(body, signal) {
|
|
|
20933
21162
|
}
|
|
20934
21163
|
}
|
|
20935
21164
|
}
|
|
21165
|
+
function isHtmlResponse(response) {
|
|
21166
|
+
return (response.headers.get("content-type") ?? "").toLowerCase().includes("text/html");
|
|
21167
|
+
}
|
|
20936
21168
|
function parseRetryAfter(raw) {
|
|
20937
21169
|
if (!raw) return void 0;
|
|
20938
21170
|
const seconds = Number.parseInt(raw, 10);
|
|
@@ -21351,6 +21583,7 @@ var init_http_client = __esm({
|
|
|
21351
21583
|
__name(serverCodeOf, "serverCodeOf");
|
|
21352
21584
|
__name(refusalFromResponse, "refusalFromResponse");
|
|
21353
21585
|
__name(parseSseStream, "parseSseStream");
|
|
21586
|
+
__name(isHtmlResponse, "isHtmlResponse");
|
|
21354
21587
|
__name(parseRetryAfter, "parseRetryAfter");
|
|
21355
21588
|
__name(isCoreDrainApiError, "isCoreDrainApiError");
|
|
21356
21589
|
__name(coreDrainApiRetryDelayMs, "coreDrainApiRetryDelayMs");
|
|
@@ -23666,15 +23899,22 @@ var init_analytics = __esm({
|
|
|
23666
23899
|
});
|
|
23667
23900
|
|
|
23668
23901
|
// src/utils/write-info.ts
|
|
23902
|
+
function clearLineFor(stream) {
|
|
23903
|
+
return stream.isTTY ? CLEAR_LINE : "";
|
|
23904
|
+
}
|
|
23669
23905
|
function writeInfo(message) {
|
|
23670
|
-
process.stdout.write(
|
|
23906
|
+
process.stdout.write(clearLineFor(process.stdout) + message + "\n");
|
|
23671
23907
|
}
|
|
23672
23908
|
function writeProgress(message) {
|
|
23673
|
-
process.stderr.write(
|
|
23909
|
+
if (process.stderr.isTTY) process.stderr.write(CLEAR_LINE + message);
|
|
23910
|
+
else process.stderr.write(message + "\n");
|
|
23674
23911
|
}
|
|
23912
|
+
var CLEAR_LINE;
|
|
23675
23913
|
var init_write_info = __esm({
|
|
23676
23914
|
"src/utils/write-info.ts"() {
|
|
23677
23915
|
"use strict";
|
|
23916
|
+
CLEAR_LINE = "\r\x1B[K";
|
|
23917
|
+
__name(clearLineFor, "clearLineFor");
|
|
23678
23918
|
__name(writeInfo, "writeInfo");
|
|
23679
23919
|
__name(writeProgress, "writeProgress");
|
|
23680
23920
|
}
|
|
@@ -23843,10 +24083,10 @@ function clearPromptLines(count2 = 1) {
|
|
|
23843
24083
|
}
|
|
23844
24084
|
}
|
|
23845
24085
|
function writeSuccess(message) {
|
|
23846
|
-
process.stdout.write(
|
|
24086
|
+
process.stdout.write(clearLineFor(process.stdout) + message + "\n");
|
|
23847
24087
|
}
|
|
23848
24088
|
function writeError(message) {
|
|
23849
|
-
process.stderr.write(
|
|
24089
|
+
process.stderr.write(clearLineFor(process.stderr) + message + "\n");
|
|
23850
24090
|
}
|
|
23851
24091
|
var isCiMode, jsonOutputRequested;
|
|
23852
24092
|
var init_cli = __esm({
|
|
@@ -23859,6 +24099,7 @@ var init_cli = __esm({
|
|
|
23859
24099
|
init_analytics();
|
|
23860
24100
|
init_hints();
|
|
23861
24101
|
init_write_info();
|
|
24102
|
+
init_write_info();
|
|
23862
24103
|
isCiMode = false;
|
|
23863
24104
|
__name(setCiMode, "setCiMode");
|
|
23864
24105
|
__name(isCiModeEnabled, "isCiModeEnabled");
|
|
@@ -34311,7 +34552,7 @@ function unresolvedRefIssues(all, browsers) {
|
|
|
34311
34552
|
}
|
|
34312
34553
|
return issues;
|
|
34313
34554
|
}
|
|
34314
|
-
var oneOf2, stringList, positiveIntUpTo, SETTING_CHECKS, BROWSER_SETTING_KEYS, BrowserPlugin;
|
|
34555
|
+
var oneOf2, stringList, positiveIntUpTo, SETTING_CHECKS, wholeNumberUpTo, SETTING_RULES, BROWSER_SETTING_KEYS, BrowserPlugin;
|
|
34315
34556
|
var init_browser_plugin = __esm({
|
|
34316
34557
|
"src/compiler/plugins/browser.plugin.ts"() {
|
|
34317
34558
|
"use strict";
|
|
@@ -34338,6 +34579,21 @@ var init_browser_plugin = __esm({
|
|
|
34338
34579
|
persist: /* @__PURE__ */ __name((value3) => typeof value3 === "boolean", "persist"),
|
|
34339
34580
|
credentials: stringList
|
|
34340
34581
|
};
|
|
34582
|
+
wholeNumberUpTo = /* @__PURE__ */ __name((max, unit) => `it must be a whole number of ${unit} from 1 to ${max}`, "wholeNumberUpTo");
|
|
34583
|
+
SETTING_RULES = {
|
|
34584
|
+
engine: `it must be one of ${BROWSER_ENGINES.join(", ")}`,
|
|
34585
|
+
fallback: `it must be one of ${BROWSER_FALLBACKS.join(", ")}`,
|
|
34586
|
+
proxyCountry: 'it must be a two-letter country code, like "de"',
|
|
34587
|
+
allowedDomains: "it must be a list of non-empty domain strings",
|
|
34588
|
+
confirmActions: "it must be a list of non-empty action names",
|
|
34589
|
+
maxSessionMinutes: wholeNumberUpTo(BROWSER_LIMIT_MAX.maxSessionMinutes, "minutes"),
|
|
34590
|
+
idleTimeoutSeconds: wholeNumberUpTo(BROWSER_LIMIT_MAX.idleTimeoutSeconds, "seconds"),
|
|
34591
|
+
maxConcurrentSessions: wholeNumberUpTo(BROWSER_LIMIT_MAX.maxConcurrentSessions, "sessions"),
|
|
34592
|
+
screenshots: `it must be one of ${BROWSER_SCREENSHOT_POLICIES.join(", ")}`,
|
|
34593
|
+
logContent: `it must be one of ${BROWSER_LOG_CONTENT_MODES.join(", ")}`,
|
|
34594
|
+
persist: "it must be true or false",
|
|
34595
|
+
credentials: "it must be a list of non-empty credential names"
|
|
34596
|
+
};
|
|
34341
34597
|
BROWSER_SETTING_KEYS = Object.keys(SETTING_CHECKS);
|
|
34342
34598
|
__name(shapeBrowserSettings, "shapeBrowserSettings");
|
|
34343
34599
|
__name(duplicateNameIssues, "duplicateNameIssues");
|
|
@@ -34379,7 +34635,7 @@ var init_browser_plugin = __esm({
|
|
|
34379
34635
|
}));
|
|
34380
34636
|
}
|
|
34381
34637
|
for (const key of metadata.metadata.invalidSettings ?? []) {
|
|
34382
|
-
errors.push(validationError(`Browser "${metadata.name}" has an invalid \`${key}
|
|
34638
|
+
errors.push(validationError(`Browser "${metadata.name}" has an invalid \`${key}\`: ${SETTING_RULES[key]}`, {
|
|
34383
34639
|
line: metadata.line
|
|
34384
34640
|
}));
|
|
34385
34641
|
}
|
|
@@ -34600,7 +34856,7 @@ var init_decision_plugin = __esm({
|
|
|
34600
34856
|
line
|
|
34601
34857
|
}));
|
|
34602
34858
|
if (extractionErrors.length === 0) {
|
|
34603
|
-
const parsed =
|
|
34859
|
+
const parsed = DecisionDefinitionWriteSchema.safeParse(definitionOf(metadata.name, metadata.description, metadata.metadata));
|
|
34604
34860
|
if (!parsed.success) {
|
|
34605
34861
|
for (const issue of parsed.error.issues) {
|
|
34606
34862
|
const path32 = issue.path.length > 0 ? issue.path.join(".") : "<root>";
|
|
@@ -38695,6 +38951,49 @@ var init_data_entry_instance = __esm({
|
|
|
38695
38951
|
}
|
|
38696
38952
|
});
|
|
38697
38953
|
|
|
38954
|
+
// src/api/shared-data.offline.ts
|
|
38955
|
+
function assertSharedName(name) {
|
|
38956
|
+
if (typeof name !== "string" || !SHARED_DATA_NAME_RE.test(name)) {
|
|
38957
|
+
throw new SharedDataError(SHARED_DATA_ERRORS.INVALID_NAME, "Data.shared(name): name must be 1-128 of [A-Za-z0-9_.-]");
|
|
38958
|
+
}
|
|
38959
|
+
}
|
|
38960
|
+
function offlineSharedData(name) {
|
|
38961
|
+
assertSharedName(name);
|
|
38962
|
+
const refuse = /* @__PURE__ */ __name(async () => {
|
|
38963
|
+
throw new SharedDataError(SHARED_DATA_ERRORS.UNAVAILABLE_OFFLINE, `Data.shared('${name}') is only available to a deployed agent (the org ACL is checked on the platform); it is not available in local test runs`);
|
|
38964
|
+
}, "refuse");
|
|
38965
|
+
return {
|
|
38966
|
+
collections: refuse,
|
|
38967
|
+
create: refuse,
|
|
38968
|
+
get: refuse,
|
|
38969
|
+
getEntry: refuse,
|
|
38970
|
+
update: refuse,
|
|
38971
|
+
patch: refuse,
|
|
38972
|
+
increment: refuse,
|
|
38973
|
+
search: refuse,
|
|
38974
|
+
delete: refuse
|
|
38975
|
+
};
|
|
38976
|
+
}
|
|
38977
|
+
var SharedDataError;
|
|
38978
|
+
var init_shared_data_offline = __esm({
|
|
38979
|
+
"src/api/shared-data.offline.ts"() {
|
|
38980
|
+
"use strict";
|
|
38981
|
+
init_dist();
|
|
38982
|
+
SharedDataError = class extends Error {
|
|
38983
|
+
static {
|
|
38984
|
+
__name(this, "SharedDataError");
|
|
38985
|
+
}
|
|
38986
|
+
code;
|
|
38987
|
+
name = "SharedDataError";
|
|
38988
|
+
constructor(code, message) {
|
|
38989
|
+
super(message), this.code = code;
|
|
38990
|
+
}
|
|
38991
|
+
};
|
|
38992
|
+
__name(assertSharedName, "assertSharedName");
|
|
38993
|
+
__name(offlineSharedData, "offlineSharedData");
|
|
38994
|
+
}
|
|
38995
|
+
});
|
|
38996
|
+
|
|
38698
38997
|
// src/api/custom.data.api.service.ts
|
|
38699
38998
|
var CustomDataApi;
|
|
38700
38999
|
var init_custom_data_api_service = __esm({
|
|
@@ -38703,6 +39002,7 @@ var init_custom_data_api_service = __esm({
|
|
|
38703
39002
|
init_http_client();
|
|
38704
39003
|
init_custom_data();
|
|
38705
39004
|
init_data_entry_instance();
|
|
39005
|
+
init_shared_data_offline();
|
|
38706
39006
|
CustomDataApi = class extends HttpClient {
|
|
38707
39007
|
static {
|
|
38708
39008
|
__name(this, "CustomDataApi");
|
|
@@ -38903,6 +39203,10 @@ var init_custom_data_api_service = __esm({
|
|
|
38903
39203
|
}
|
|
38904
39204
|
throw new Error(response.error?.message || "Failed to delete custom data entry");
|
|
38905
39205
|
}
|
|
39206
|
+
/** Org-shared Data. Local runs have no org ACL to consult, so every call of the handle rejects (offline). */
|
|
39207
|
+
shared(name) {
|
|
39208
|
+
return offlineSharedData(name);
|
|
39209
|
+
}
|
|
38906
39210
|
};
|
|
38907
39211
|
}
|
|
38908
39212
|
});
|
|
@@ -39639,7 +39943,7 @@ var init_agents_api_service = __esm({
|
|
|
39639
39943
|
if (op === "lease.acquire" || op === "lease.release") {
|
|
39640
39944
|
refuse("supervision_offline_unsupported", `${op} is not available offline; run it on the platform`);
|
|
39641
39945
|
}
|
|
39642
|
-
if (op === "lifecycle.archive" || op === "lifecycle.delete" || op === "config.set" || op === "secrets.attach") {
|
|
39946
|
+
if (op === "lifecycle.archive" || op === "lifecycle.delete" || op === "config.set" || op === "secrets.attach" || op === "secrets.put") {
|
|
39643
39947
|
refuse("supervision_offline_unsupported", `${op} is not available offline; run it on the platform`);
|
|
39644
39948
|
}
|
|
39645
39949
|
if (op === "agents.directory" || op === "access.request" || op === "access.requests" || op === "access.cancel") {
|
|
@@ -39691,7 +39995,9 @@ var init_agents_api_service = __esm({
|
|
|
39691
39995
|
return runSummary(await get(`/workflows/${id2}/runs/${encodeURIComponent(String(args2.runId ?? ""))}`));
|
|
39692
39996
|
case "versions.list":
|
|
39693
39997
|
return get(`/developer/agents/${id2}/versions${q({
|
|
39694
|
-
limit: args2.limit
|
|
39998
|
+
limit: args2.limit,
|
|
39999
|
+
status: Array.isArray(args2.status) ? args2.status.join(",") : args2.status,
|
|
40000
|
+
offset: args2.offset
|
|
39695
40001
|
})}`);
|
|
39696
40002
|
case "versions.get":
|
|
39697
40003
|
return get(`/developer/agents/${id2}/versions/${encodeURIComponent(String(args2.version))}`);
|
|
@@ -40566,10 +40872,32 @@ function createWorkflowsRuntime(getApi) {
|
|
|
40566
40872
|
assertBoundAgent(api, agentId2, "goals.close");
|
|
40567
40873
|
return unwrap(await api.closeGoal(goalId, opts), "Workflows.goals.close");
|
|
40568
40874
|
}
|
|
40875
|
+
},
|
|
40876
|
+
// Lua Apps — off the platform (`lua apps dev`, `lua test webapp`) a route runs as you, so the viewer IS the
|
|
40877
|
+
// CLI's own credential; on the platform the sandbox global routes these through the gateway-sealed viewer.
|
|
40878
|
+
viewer: {
|
|
40879
|
+
async decideApproval(runId, approvalId, decision) {
|
|
40880
|
+
const api = viewerApi(await getApi(), decision.agentId);
|
|
40881
|
+
return unwrap(await api.resolveApproval(runId, approvalId, {
|
|
40882
|
+
decision: decision.decision,
|
|
40883
|
+
...decision.note !== void 0 ? {
|
|
40884
|
+
note: decision.note
|
|
40885
|
+
} : {},
|
|
40886
|
+
...decision.expectedFingerprint !== void 0 ? {
|
|
40887
|
+
expectedFingerprint: decision.expectedFingerprint
|
|
40888
|
+
} : {}
|
|
40889
|
+
}), "Workflows.viewer.decideApproval");
|
|
40890
|
+
},
|
|
40891
|
+
async resume(runId, stepId, resumeData, opts = {}) {
|
|
40892
|
+
const api = viewerApi(await getApi(), opts.agentId);
|
|
40893
|
+
return unwrap(await api.resumeRun(runId, stepId, {
|
|
40894
|
+
resumeData
|
|
40895
|
+
}), "Workflows.viewer.resume");
|
|
40896
|
+
}
|
|
40569
40897
|
}
|
|
40570
40898
|
};
|
|
40571
40899
|
}
|
|
40572
|
-
var WORKFLOW_START_MAX_WAIT_SECONDS, WORKFLOW_START_CLIENT_DEADLINE_SLACK_MS, CONTROL_UNAVAILABLE_HINT, WorkflowApiError, WORKFLOWS_RUNTIME_MEMBERS, unwrap, isWorkflowIdShaped, assertBoundAgent, pathId, WorkflowApi;
|
|
40900
|
+
var WORKFLOW_START_MAX_WAIT_SECONDS, WORKFLOW_START_CLIENT_DEADLINE_SLACK_MS, CONTROL_UNAVAILABLE_HINT, WorkflowApiError, WORKFLOWS_RUNTIME_MEMBERS, unwrap, isWorkflowIdShaped, viewerApi, assertBoundAgent, pathId, WorkflowApi;
|
|
40573
40901
|
var init_workflow_api_service = __esm({
|
|
40574
40902
|
"src/api/workflow.api.service.ts"() {
|
|
40575
40903
|
"use strict";
|
|
@@ -40616,6 +40944,7 @@ var init_workflow_api_service = __esm({
|
|
|
40616
40944
|
return res.data;
|
|
40617
40945
|
}, "unwrap");
|
|
40618
40946
|
isWorkflowIdShaped = /* @__PURE__ */ __name((v) => /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(v) || /^wfc?_[A-Za-z0-9]/.test(v), "isWorkflowIdShaped");
|
|
40947
|
+
viewerApi = /* @__PURE__ */ __name((api, agentId2) => agentId2 && agentId2 !== api.agentId ? api.forAgent(agentId2) : api, "viewerApi");
|
|
40619
40948
|
assertBoundAgent = /* @__PURE__ */ __name((api, agentId2, member) => {
|
|
40620
40949
|
if (agentId2 && agentId2 !== api.agentId) {
|
|
40621
40950
|
throw new WorkflowApiError("FORBIDDEN", `Workflows.${member}: goals are scoped to the bound agent ${api.agentId}`, 403);
|
|
@@ -40623,7 +40952,7 @@ var init_workflow_api_service = __esm({
|
|
|
40623
40952
|
}, "assertBoundAgent");
|
|
40624
40953
|
pathId = /* @__PURE__ */ __name((id2) => encodeURIComponent(id2), "pathId");
|
|
40625
40954
|
__name(createWorkflowsRuntime, "createWorkflowsRuntime");
|
|
40626
|
-
WorkflowApi = class extends HttpClient {
|
|
40955
|
+
WorkflowApi = class _WorkflowApi extends HttpClient {
|
|
40627
40956
|
static {
|
|
40628
40957
|
__name(this, "WorkflowApi");
|
|
40629
40958
|
}
|
|
@@ -40634,6 +40963,10 @@ var init_workflow_api_service = __esm({
|
|
|
40634
40963
|
this.credential = credential;
|
|
40635
40964
|
this.agentId = agentId2;
|
|
40636
40965
|
}
|
|
40966
|
+
/** The same client and credential, bound to another agent's workflow tree (`Workflows.viewer` with `agentId`). */
|
|
40967
|
+
forAgent(agentId2) {
|
|
40968
|
+
return new _WorkflowApi(this.baseUrl, this.credential, agentId2);
|
|
40969
|
+
}
|
|
40637
40970
|
/** PRO-1434 (main sync): auth rides the renewable request credential — resolve a current bearer per call. */
|
|
40638
40971
|
async auth() {
|
|
40639
40972
|
return {
|
|
@@ -48598,7 +48931,20 @@ function buildSupervisionAgentsApi(call2) {
|
|
|
48598
48931
|
secrets: /* @__PURE__ */ __name10((agentId2) => ({
|
|
48599
48932
|
attach: /* @__PURE__ */ __name10((requestIds) => call2("secrets.attach", agentId2, {
|
|
48600
48933
|
requestIds: copyList(requestIds)
|
|
48601
|
-
}), "attach")
|
|
48934
|
+
}), "attach"),
|
|
48935
|
+
/**
|
|
48936
|
+
* SW — write ONE secret row into `agentId`'s own Data: the row of `collection` whose `_pk` is `key`, replaced
|
|
48937
|
+
* whole by `value` (flat: string / number / boolean / null fields), created when absent. Needs `act` and the
|
|
48938
|
+
* collection in the grant's `secretWriteCollections`. Answers `{ ok, id, fingerprint }`, never the value; call it
|
|
48939
|
+
* from code (a workflow step, a job), so the secret never passes through a model.
|
|
48940
|
+
*/
|
|
48941
|
+
put: /* @__PURE__ */ __name10((collection, key, value3) => call2("secrets.put", agentId2, {
|
|
48942
|
+
collection,
|
|
48943
|
+
key,
|
|
48944
|
+
value: value3 && typeof value3 === "object" && !Array.isArray(value3) ? {
|
|
48945
|
+
...value3
|
|
48946
|
+
} : value3
|
|
48947
|
+
}), "put")
|
|
48602
48948
|
}), "secrets")
|
|
48603
48949
|
};
|
|
48604
48950
|
}
|
|
@@ -53085,6 +53431,7 @@ __name(printToolOutput, "printToolOutput");
|
|
|
53085
53431
|
|
|
53086
53432
|
// src/commands/test.ts
|
|
53087
53433
|
init_cli();
|
|
53434
|
+
init_write_info();
|
|
53088
53435
|
init_command_utils();
|
|
53089
53436
|
|
|
53090
53437
|
// src/utils/web-app-route.ts
|
|
@@ -53703,6 +54050,12 @@ var ALIAS_MAP = {
|
|
|
53703
54050
|
],
|
|
53704
54051
|
aliases: lowerKeys({
|
|
53705
54052
|
skills: "skill",
|
|
54053
|
+
// Lua Apps: a web app's route executions are logged as `web-route`.
|
|
54054
|
+
webapp: "web-route",
|
|
54055
|
+
webapps: "web-route",
|
|
54056
|
+
"web-app": "web-route",
|
|
54057
|
+
"web-apps": "web-route",
|
|
54058
|
+
"web-routes": "web-route",
|
|
53706
54059
|
jobs: "job",
|
|
53707
54060
|
webhooks: "webhook",
|
|
53708
54061
|
preprocessors: "preprocessor",
|
|
@@ -55821,7 +56174,7 @@ async function selectEntityOrPrompt(options) {
|
|
|
55821
56174
|
__name(selectEntityOrPrompt, "selectEntityOrPrompt");
|
|
55822
56175
|
function progress(asJson, message) {
|
|
55823
56176
|
if (asJson) {
|
|
55824
|
-
process.stderr.write(
|
|
56177
|
+
process.stderr.write(clearLineFor(process.stderr) + message + "\n");
|
|
55825
56178
|
} else {
|
|
55826
56179
|
writeProgress(message);
|
|
55827
56180
|
}
|
|
@@ -55829,7 +56182,7 @@ function progress(asJson, message) {
|
|
|
55829
56182
|
__name(progress, "progress");
|
|
55830
56183
|
function success(asJson, message) {
|
|
55831
56184
|
if (asJson) {
|
|
55832
|
-
process.stderr.write(
|
|
56185
|
+
process.stderr.write(clearLineFor(process.stderr) + message + "\n");
|
|
55833
56186
|
} else {
|
|
55834
56187
|
writeSuccess(message);
|
|
55835
56188
|
}
|
|
@@ -59832,19 +60185,19 @@ init_cli();
|
|
|
59832
60185
|
init_constants();
|
|
59833
60186
|
import { readFileSync as readFileSync12, writeFileSync as writeFileSync9, mkdirSync as mkdirSync7 } from "fs";
|
|
59834
60187
|
import { dirname as dirname6 } from "path";
|
|
59835
|
-
function
|
|
60188
|
+
function isPlainObject5(value3) {
|
|
59836
60189
|
return typeof value3 === "object" && value3 !== null && !Array.isArray(value3);
|
|
59837
60190
|
}
|
|
59838
|
-
__name(
|
|
60191
|
+
__name(isPlainObject5, "isPlainObject");
|
|
59839
60192
|
function readStore2() {
|
|
59840
60193
|
try {
|
|
59841
60194
|
const raw = readFileSync12(SANDBOX_STORAGE_FILE, "utf8");
|
|
59842
60195
|
const parsed = JSON.parse(raw);
|
|
59843
60196
|
return {
|
|
59844
|
-
skillsById:
|
|
59845
|
-
preprocessorsById:
|
|
59846
|
-
postprocessorsById:
|
|
59847
|
-
devicesById:
|
|
60197
|
+
skillsById: isPlainObject5(parsed.skillsById) ? parsed.skillsById : {},
|
|
60198
|
+
preprocessorsById: isPlainObject5(parsed.preprocessorsById) ? parsed.preprocessorsById : {},
|
|
60199
|
+
postprocessorsById: isPlainObject5(parsed.postprocessorsById) ? parsed.postprocessorsById : {},
|
|
60200
|
+
devicesById: isPlainObject5(parsed.devicesById) ? parsed.devicesById : {}
|
|
59848
60201
|
};
|
|
59849
60202
|
} catch {
|
|
59850
60203
|
return {
|
|
@@ -65312,7 +65665,9 @@ var ENTITY_SOURCES = /* @__PURE__ */ new Set([
|
|
|
65312
65665
|
"webhook",
|
|
65313
65666
|
"preprocessor",
|
|
65314
65667
|
"postprocessor",
|
|
65315
|
-
"device"
|
|
65668
|
+
"device",
|
|
65669
|
+
// Lua Apps: route executions, one entity per web app (`--type webapp --name <app>`).
|
|
65670
|
+
"web-route"
|
|
65316
65671
|
]);
|
|
65317
65672
|
var NON_ENTITY_SOURCES = new Set(ALL_VALID_SOURCES.filter((s) => !ENTITY_SOURCES.has(s)));
|
|
65318
65673
|
var FOLLOW_POLL_MS = 2e3;
|
|
@@ -65441,7 +65796,7 @@ function renderLogEntry(log, isLast) {
|
|
|
65441
65796
|
const icon = getLogIcon(log.subType, logSource);
|
|
65442
65797
|
const color = getLogColor(log.subType, logSource);
|
|
65443
65798
|
console.log(color(`${icon} [${timestamp}] ${log.subType.toUpperCase()}`));
|
|
65444
|
-
const capitalizedType = logSource ?
|
|
65799
|
+
const capitalizedType = logSource ? sourceLabel(logSource) : "Item";
|
|
65445
65800
|
if (logSource === "user_message" || logSource === "agent_response" || logSource === "agent_error") {
|
|
65446
65801
|
if (channel) {
|
|
65447
65802
|
console.log(chalk2.gray(` Channel: ${channel}`));
|
|
@@ -65451,7 +65806,8 @@ function renderLogEntry(log, isLast) {
|
|
|
65451
65806
|
}
|
|
65452
65807
|
} else {
|
|
65453
65808
|
if (primitiveName) {
|
|
65454
|
-
|
|
65809
|
+
const label2 = logSource === "browser" ? "Called by" : `${capitalizedType} Name`;
|
|
65810
|
+
console.log(chalk2.gray(` ${label2}: ${primitiveName}`));
|
|
65455
65811
|
}
|
|
65456
65812
|
if (primitiveId) {
|
|
65457
65813
|
console.log(chalk2.gray(` ${capitalizedType} ID: ${primitiveId}`));
|
|
@@ -65539,6 +65895,10 @@ async function fetchEntitiesByType(apiKey, agentId2, type) {
|
|
|
65539
65895
|
const res = await new DeviceApi(BASE_URLS.API, apiKey, agentId2).getDevices();
|
|
65540
65896
|
return res.data?.devices || [];
|
|
65541
65897
|
}
|
|
65898
|
+
case "web-route": {
|
|
65899
|
+
const res = await new WebAppApi(BASE_URLS.API, apiKey, agentId2).getWebApps();
|
|
65900
|
+
return res.data?.webApps || [];
|
|
65901
|
+
}
|
|
65542
65902
|
default:
|
|
65543
65903
|
return [];
|
|
65544
65904
|
}
|
|
@@ -65707,10 +66067,14 @@ async function nonInteractiveLogs(logsApi, agentId2, apiKey, options) {
|
|
|
65707
66067
|
throw CliError.usage(`--name is not applicable for ${filters.logSource} type`, `Usage: lua logs --type ${filters.logSource} (no --name needed)`);
|
|
65708
66068
|
}
|
|
65709
66069
|
const entityId = await resolveEntityId(apiKey, agentId2, filters.logSource, options.name);
|
|
65710
|
-
if (
|
|
65711
|
-
|
|
66070
|
+
if (entityId) {
|
|
66071
|
+
filters.primitiveId = entityId;
|
|
66072
|
+
} else if (filters.logSource === "web-route") {
|
|
66073
|
+
writeInfo(`\u2139\uFE0F No web app named "${options.name}" on the agent now; showing logs recorded under that name.`);
|
|
66074
|
+
filters.primitiveName = options.name;
|
|
66075
|
+
} else {
|
|
66076
|
+
throw CliError.notFound(`${sourceLabel(filters.logSource ?? "")} "${options.name}" not found`);
|
|
65712
66077
|
}
|
|
65713
|
-
filters.primitiveId = entityId;
|
|
65714
66078
|
}
|
|
65715
66079
|
if (options.userId) {
|
|
65716
66080
|
filters.userId = options.userId;
|
|
@@ -65742,7 +66106,7 @@ async function nonInteractiveLogs(logsApi, agentId2, apiKey, options) {
|
|
|
65742
66106
|
pagination: data.pagination
|
|
65743
66107
|
}, null, 2));
|
|
65744
66108
|
} else {
|
|
65745
|
-
const typeLabel = options.type ?
|
|
66109
|
+
const typeLabel = options.type ? sourceLabel(options.type) : "All";
|
|
65746
66110
|
displayLogsCore(data.logs, data.pagination, `\u{1F4CA} ${typeLabel} Logs`);
|
|
65747
66111
|
writeHintBlock({
|
|
65748
66112
|
headline: "If you see errors:",
|
|
@@ -65829,6 +66193,10 @@ async function filterAndShowLogsInteractive(logsApi, agentId2, apiKey) {
|
|
|
65829
66193
|
name: "Devices",
|
|
65830
66194
|
value: "device"
|
|
65831
66195
|
},
|
|
66196
|
+
{
|
|
66197
|
+
name: "Web Apps",
|
|
66198
|
+
value: "web-route"
|
|
66199
|
+
},
|
|
65832
66200
|
new inquirer9.Separator(),
|
|
65833
66201
|
{
|
|
65834
66202
|
name: "\u{1F4AC} User Messages",
|
|
@@ -65893,10 +66261,10 @@ async function filterAndShowLogsInteractive(logsApi, agentId2, apiKey) {
|
|
|
65893
66261
|
continue;
|
|
65894
66262
|
}
|
|
65895
66263
|
const entitySource = filterType;
|
|
65896
|
-
const capitalizedType =
|
|
66264
|
+
const capitalizedType = sourceLabel(entitySource);
|
|
65897
66265
|
const items = await fetchEntitiesByType(apiKey, agentId2, entitySource);
|
|
65898
66266
|
if (items.length === 0) {
|
|
65899
|
-
writeInfo(`\u2139\uFE0F No ${
|
|
66267
|
+
writeInfo(`\u2139\uFE0F No ${capitalizedType.toLowerCase()}s found for this agent.
|
|
65900
66268
|
`);
|
|
65901
66269
|
continue;
|
|
65902
66270
|
}
|
|
@@ -65904,7 +66272,7 @@ async function filterAndShowLogsInteractive(logsApi, agentId2, apiKey) {
|
|
|
65904
66272
|
{
|
|
65905
66273
|
type: "list",
|
|
65906
66274
|
name: "selectedId",
|
|
65907
|
-
message: `Select a ${
|
|
66275
|
+
message: `Select a ${capitalizedType.toLowerCase()}:`,
|
|
65908
66276
|
choices: [
|
|
65909
66277
|
{
|
|
65910
66278
|
name: `All ${capitalizedType}s`,
|
|
@@ -66031,6 +66399,10 @@ function capitalize(str3) {
|
|
|
66031
66399
|
return str3.charAt(0).toUpperCase() + str3.slice(1);
|
|
66032
66400
|
}
|
|
66033
66401
|
__name(capitalize, "capitalize");
|
|
66402
|
+
function sourceLabel(source) {
|
|
66403
|
+
return source === "web-route" ? "Web app" : capitalize(source);
|
|
66404
|
+
}
|
|
66405
|
+
__name(sourceLabel, "sourceLabel");
|
|
66034
66406
|
function getLogIcon(subType, logSource) {
|
|
66035
66407
|
if (logSource === "user_message") {
|
|
66036
66408
|
return "\u{1F4AC}";
|
|
@@ -72525,6 +72897,13 @@ function parseProvider2(raw) {
|
|
|
72525
72897
|
return provider;
|
|
72526
72898
|
}
|
|
72527
72899
|
__name(parseProvider2, "parseProvider");
|
|
72900
|
+
function parseModel(raw) {
|
|
72901
|
+
if (raw === void 0) return void 0;
|
|
72902
|
+
const model = raw.trim();
|
|
72903
|
+
if (!model) throw CliError.usage("--model must name a model, such as jev-latest, gpt-6-luna or liquid/d1");
|
|
72904
|
+
return model;
|
|
72905
|
+
}
|
|
72906
|
+
__name(parseModel, "parseModel");
|
|
72528
72907
|
function parseMinConfidence(raw) {
|
|
72529
72908
|
if (raw === void 0) return void 0;
|
|
72530
72909
|
const value3 = Number(raw);
|
|
@@ -72664,6 +73043,7 @@ async function runAction(api, name, options) {
|
|
|
72664
73043
|
const decisionName = requireArg(name, "A decision name", "lua decisions run <name> --message '<text>'");
|
|
72665
73044
|
const { state: state3, input } = parseState(options);
|
|
72666
73045
|
const provider = parseProvider2(options.provider);
|
|
73046
|
+
const model = parseModel(options.model);
|
|
72667
73047
|
const minConfidence = parseMinConfidence(options.minConfidence);
|
|
72668
73048
|
const request2 = {
|
|
72669
73049
|
name: decisionName,
|
|
@@ -72671,6 +73051,9 @@ async function runAction(api, name, options) {
|
|
|
72671
73051
|
...provider !== void 0 && {
|
|
72672
73052
|
provider
|
|
72673
73053
|
},
|
|
73054
|
+
...model !== void 0 && {
|
|
73055
|
+
model
|
|
73056
|
+
},
|
|
72674
73057
|
...minConfidence !== void 0 && {
|
|
72675
73058
|
minConfidence
|
|
72676
73059
|
}
|
|
@@ -72679,6 +73062,7 @@ async function runAction(api, name, options) {
|
|
|
72679
73062
|
trackEvent("cli_decisions_run", {
|
|
72680
73063
|
input,
|
|
72681
73064
|
provider: result.provider,
|
|
73065
|
+
model: model !== void 0,
|
|
72682
73066
|
rule: result.rule,
|
|
72683
73067
|
fallback: !!result.fallback,
|
|
72684
73068
|
cached: result.cached,
|
|
@@ -89482,14 +89866,29 @@ var REFUSAL_HINTS = {
|
|
|
89482
89866
|
BROWSER_CLI_CONCURRENCY: "Wait for a run to finish, or press Ctrl-C on it to cancel it.",
|
|
89483
89867
|
BROWSER_CLI_LIMITER_UNAVAILABLE: "Try again in a minute."
|
|
89484
89868
|
};
|
|
89869
|
+
var BROWSER_RUN_MAX_STEPS = 60;
|
|
89870
|
+
var BROWSER_RUN_MIN_COST_USD = 0.01;
|
|
89871
|
+
var BROWSER_RUN_MAX_COST_USD = 10;
|
|
89485
89872
|
function parseEnvironment2(raw) {
|
|
89486
89873
|
if (raw === void 0) return "sandbox";
|
|
89487
89874
|
const env = raw.toLowerCase();
|
|
89488
|
-
if (env === "sandbox" || env === "
|
|
89489
|
-
|
|
89490
|
-
throw CliError.usage(`-e must be sandbox, staging or production (got '${raw}')`);
|
|
89875
|
+
if (env === "sandbox" || env === "production") return env;
|
|
89876
|
+
throw CliError.usage(`-e must be sandbox or production (got '${raw}')`, "Log rows are tagged sandbox or production.");
|
|
89491
89877
|
}
|
|
89492
89878
|
__name(parseEnvironment2, "parseEnvironment");
|
|
89879
|
+
function parseWebUrl(raw, flag) {
|
|
89880
|
+
let parsed;
|
|
89881
|
+
try {
|
|
89882
|
+
parsed = new URL(raw.trim());
|
|
89883
|
+
} catch {
|
|
89884
|
+
throw CliError.usage(`${flag} must be a full web address like https://example.com (got '${raw}')`);
|
|
89885
|
+
}
|
|
89886
|
+
if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
|
|
89887
|
+
throw CliError.usage(`${flag} must start with http:// or https:// (got '${raw}')`);
|
|
89888
|
+
}
|
|
89889
|
+
return raw.trim();
|
|
89890
|
+
}
|
|
89891
|
+
__name(parseWebUrl, "parseWebUrl");
|
|
89493
89892
|
function parseReadFormat(raw) {
|
|
89494
89893
|
if (raw === void 0) return void 0;
|
|
89495
89894
|
const format = BROWSER_READ_FORMATS2.find((f) => f === raw);
|
|
@@ -89510,12 +89909,20 @@ function parseMaxCost(raw) {
|
|
|
89510
89909
|
if (raw === void 0) return void 0;
|
|
89511
89910
|
const amount = raw.trim().replace(/^\$/, "");
|
|
89512
89911
|
const n2 = Number(amount);
|
|
89513
|
-
if (!/^(\d+(\.\d+)?|\.\d+)$/.test(amount) || n2
|
|
89514
|
-
throw CliError.usage(`--max-cost must be an amount in USD
|
|
89912
|
+
if (!/^(\d+(\.\d+)?|\.\d+)$/.test(amount) || n2 < BROWSER_RUN_MIN_COST_USD || n2 > BROWSER_RUN_MAX_COST_USD) {
|
|
89913
|
+
throw CliError.usage(`--max-cost must be an amount in USD from ${BROWSER_RUN_MIN_COST_USD} to ${BROWSER_RUN_MAX_COST_USD}, like 0.50 (got '${raw}')`);
|
|
89515
89914
|
}
|
|
89516
89915
|
return n2;
|
|
89517
89916
|
}
|
|
89518
89917
|
__name(parseMaxCost, "parseMaxCost");
|
|
89918
|
+
function parseMaxSteps(raw) {
|
|
89919
|
+
const n2 = parsePositiveInt(raw, "--max-steps");
|
|
89920
|
+
if (n2 !== void 0 && n2 > BROWSER_RUN_MAX_STEPS) {
|
|
89921
|
+
throw CliError.usage(`--max-steps must be ${BROWSER_RUN_MAX_STEPS} or less (got '${raw}')`);
|
|
89922
|
+
}
|
|
89923
|
+
return n2;
|
|
89924
|
+
}
|
|
89925
|
+
__name(parseMaxSteps, "parseMaxSteps");
|
|
89519
89926
|
function readSchemaFile(path32, read = readUtf8) {
|
|
89520
89927
|
if (path32 === void 0) return void 0;
|
|
89521
89928
|
let text2;
|
|
@@ -89548,6 +89955,7 @@ function readResultLines(output) {
|
|
|
89548
89955
|
];
|
|
89549
89956
|
if (data.url && data.finalUrl && data.url !== data.finalUrl) lines.push(`Requested: ${data.url}`);
|
|
89550
89957
|
if (typeof data.status === "number" && data.status !== 200) lines.push(`Status: HTTP ${data.status}`);
|
|
89958
|
+
if (typeof data.matches === "number") lines.push(`Matches: ${data.matches}`);
|
|
89551
89959
|
lines.push(`Engine: ${output.engine}`, ...blockedLines(data), "", data.content ?? "");
|
|
89552
89960
|
if (data.truncated) lines.push("", "(content was cut short)");
|
|
89553
89961
|
return lines;
|
|
@@ -89616,7 +90024,7 @@ async function guarded(agentId2, call2) {
|
|
|
89616
90024
|
try {
|
|
89617
90025
|
return await call2();
|
|
89618
90026
|
} catch (error) {
|
|
89619
|
-
if (!isAccessDeniedError(error)) throw error;
|
|
90027
|
+
if (!isAccessDeniedError(error) || isEdgeBlockedError(error)) throw error;
|
|
89620
90028
|
throw CliError.forbidden(`Your API key can't run the browser for agent ${agentId2}.`, "It needs agents:write on that agent. Check the agent id, or run `lua auth configure` with a key for it.");
|
|
89621
90029
|
}
|
|
89622
90030
|
}
|
|
@@ -89656,8 +90064,9 @@ function logsHint() {
|
|
|
89656
90064
|
__name(logsHint, "logsHint");
|
|
89657
90065
|
async function runBrowserRead(ctx, url, options) {
|
|
89658
90066
|
const format = parseReadFormat(options.format);
|
|
90067
|
+
const target = parseWebUrl(url, "The URL");
|
|
89659
90068
|
const output = unwrap5(await guarded(ctx.agentId, () => ctx.api.read({
|
|
89660
|
-
url,
|
|
90069
|
+
url: target,
|
|
89661
90070
|
environment: ctx.environment,
|
|
89662
90071
|
...options.selector ? {
|
|
89663
90072
|
selector: options.selector
|
|
@@ -89719,22 +90128,31 @@ async function followBrowserRun(api, first, signal, out, startedAt = Date.now())
|
|
|
89719
90128
|
return view;
|
|
89720
90129
|
}
|
|
89721
90130
|
__name(followBrowserRun, "followBrowserRun");
|
|
89722
|
-
|
|
89723
|
-
|
|
89724
|
-
|
|
89725
|
-
|
|
90131
|
+
function terminalRunOutput(stderr = process.stderr) {
|
|
90132
|
+
return {
|
|
90133
|
+
write: /* @__PURE__ */ __name((line) => {
|
|
90134
|
+
if (stderr.isTTY) stderr.write("\r\x1B[K");
|
|
90135
|
+
console.log(line);
|
|
90136
|
+
}, "write"),
|
|
90137
|
+
progress: /* @__PURE__ */ __name((line) => {
|
|
90138
|
+
if (stderr.isTTY) writeProgress(line);
|
|
90139
|
+
}, "progress")
|
|
90140
|
+
};
|
|
90141
|
+
}
|
|
90142
|
+
__name(terminalRunOutput, "terminalRunOutput");
|
|
90143
|
+
async function runBrowserTask(ctx, task, options, out = terminalRunOutput()) {
|
|
89726
90144
|
if (!task.trim()) throw CliError.usage("A task is required", 'Usage: lua browser run "<task>"');
|
|
89727
90145
|
const body = {
|
|
89728
90146
|
task,
|
|
89729
90147
|
environment: ctx.environment,
|
|
89730
90148
|
...options.startUrl ? {
|
|
89731
|
-
startUrl: options.startUrl
|
|
90149
|
+
startUrl: parseWebUrl(options.startUrl, "--start-url")
|
|
89732
90150
|
} : {},
|
|
89733
90151
|
...options.schema ? {
|
|
89734
90152
|
schema: readSchemaFile(options.schema)
|
|
89735
90153
|
} : {},
|
|
89736
90154
|
...options.maxSteps !== void 0 ? {
|
|
89737
|
-
maxSteps:
|
|
90155
|
+
maxSteps: parseMaxSteps(options.maxSteps)
|
|
89738
90156
|
} : {},
|
|
89739
90157
|
...options.maxCost !== void 0 ? {
|
|
89740
90158
|
maxCostUsd: parseMaxCost(options.maxCost)
|
|
@@ -90211,6 +90629,8 @@ Examples:
|
|
|
90211
90629
|
$ lua logs --type skill --name mySkill --limit 10 Skill-specific logs
|
|
90212
90630
|
$ lua logs --type job --name healthCheck --json JSON output for CI
|
|
90213
90631
|
$ lua logs --type mcp View MCP tool execution logs
|
|
90632
|
+
$ lua logs --type webapp --name ops-dashboard A web app's route runs (console output, errors)
|
|
90633
|
+
$ lua logs --execution-id <id> One route call (the id is in X-Lua-Execution-Id)
|
|
90214
90634
|
$ lua logs --user-id user-123 View all logs for a user
|
|
90215
90635
|
$ lua logs --user-id user-123 --json > user-logs.json Export user logs
|
|
90216
90636
|
$ lua logs --channel integration:lua_crm Isolate one integration's wake-up turns
|
|
@@ -90392,7 +90812,7 @@ Examples:
|
|
|
90392
90812
|
$ lua jobs versions -i myJob View job versions
|
|
90393
90813
|
$ lua jobs history -i myJob View execution history
|
|
90394
90814
|
`).action(jobsCommand);
|
|
90395
|
-
program2.command("decisions [action] [name] [version]").description("\u{1F9ED} See, try and roll back named decisions (list, versions, publish, run, delete)").option("--json", "Machine-readable output (list, versions, run)").option("--force", "Skip the confirmation (publish, delete)").option("--state <json>", "run: the state to decide on, as JSON").option("--message <text>", "run: a message to decide on, sent as { message: <text> }").option("--provider <provider>", "run: jev, openai or auto").option("--min-confidence <n>", "run: below this confidence an answer is marked uncertain (0 to 1)").addHelpText("after", `
|
|
90815
|
+
program2.command("decisions [action] [name] [version]").description("\u{1F9ED} See, try and roll back named decisions (list, versions, publish, run, delete)").option("--json", "Machine-readable output (list, versions, run)").option("--force", "Skip the confirmation (publish, delete)").option("--state <json>", "run: the state to decide on, as JSON").option("--message <text>", "run: a message to decide on, sent as { message: <text> }").option("--provider <provider>", "run: jev, openai, openrouter or auto").option("--model <id>", "run: the model to answer with; an OpenRouter id such as liquid/d1 pins openrouter").option("--min-confidence <n>", "run: below this confidence an answer is marked uncertain (0 to 1)").addHelpText("after", `
|
|
90396
90816
|
Arguments:
|
|
90397
90817
|
action Optional: list (default), versions, publish, run, delete
|
|
90398
90818
|
name The decision's name
|