lua-cli 3.49.2 → 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/index.js CHANGED
@@ -2668,6 +2668,31 @@ function scrubProviderMessage(raw, max = PROVIDER_MESSAGE_MAX_CHARS) {
2668
2668
  function scrubStepErrorMessage(raw) {
2669
2669
  return scrubProviderMessage(raw, ERROR_MESSAGE_MAX_CHARS);
2670
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
+ }
2671
2696
  function isTestSessionId(value3) {
2672
2697
  return typeof value3 === "string" && TEST_SESSION_ID_PATTERN.test(value3);
2673
2698
  }
@@ -2792,6 +2817,68 @@ function supervisionAccessBindingViolation(merged) {
2792
2817
  }
2793
2818
  return null;
2794
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
+ }
2795
2882
  function hasFormatCharacters(text2) {
2796
2883
  return FORMAT_CHARS.test(text2);
2797
2884
  }
@@ -4677,7 +4764,7 @@ function describeFieldViolation(key, value3, check) {
4677
4764
  return void 0;
4678
4765
  }
4679
4766
  function describeBrowserLogEventViolation(value3) {
4680
- if (!isPlainObject2(value3)) return "event must be an object";
4767
+ if (!isPlainObject3(value3)) return "event must be an object";
4681
4768
  const event = value3;
4682
4769
  const base = describeBaseViolation(event);
4683
4770
  if (base) return base;
@@ -4697,7 +4784,7 @@ function isBrowserLogEvent(value3) {
4697
4784
  }
4698
4785
  function describeBrowserLogContextViolation(value3) {
4699
4786
  if (value3 === void 0) return void 0;
4700
- if (!isPlainObject2(value3)) return "logContext must be an object";
4787
+ if (!isPlainObject3(value3)) return "logContext must be an object";
4701
4788
  for (const [key, entry] of Object.entries(value3)) {
4702
4789
  if (!BROWSER_LOG_CONTEXT_KEYS.includes(key)) return `logContext.${key} is not allowed`;
4703
4790
  if (entry === void 0) continue;
@@ -7529,7 +7616,13 @@ function maskMcpServerHeaders(server) {
7529
7616
  headersSet: headerNames.length > 0
7530
7617
  };
7531
7618
  }
7532
- 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, 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;
7533
7626
  var init_dist = __esm({
7534
7627
  "../shared-types/dist/index.mjs"() {
7535
7628
  "use strict";
@@ -7991,7 +8084,14 @@ var init_dist = __esm({
7991
8084
  * the target (`snapshot.jobs[]`) so the promote activates and schedules it. Mongo-only marker write; EventBridge stays
7992
8085
  * on the post-promote reconcile. Release-class: needs `register-job` AND `release` on the grant, from a signed step.
7993
8086
  */
7994
- "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"
7995
8095
  };
7996
8096
  __name(isSupervisionOp, "isSupervisionOp");
7997
8097
  __name3(isSupervisionOp, "isSupervisionOp");
@@ -8187,6 +8287,12 @@ var init_dist = __esm({
8187
8287
  gate: "register-job",
8188
8288
  targeted: true,
8189
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"
8190
8296
  }
8191
8297
  };
8192
8298
  SUPERVISION_WATCHDOG_OPS = {
@@ -8874,6 +8980,12 @@ var init_dist = __esm({
8874
8980
  {
8875
8981
  re: /\b(npm_)[A-Za-z0-9]{36}\b/g
8876
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
+ },
8877
8989
  {
8878
8990
  re: /\b(sk-ant-)[A-Za-z0-9_-]{16,}/g
8879
8991
  },
@@ -8892,11 +9004,16 @@ var init_dist = __esm({
8892
9004
  {
8893
9005
  re: /\b(ya29\.)[A-Za-z0-9_-]{20,}/g
8894
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.
8895
9010
  {
8896
- re: /\b(eyJ)[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}/g
9011
+ re: /(?<![A-Za-z0-9_-])(eyJ)[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}/g
8897
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.
8898
9015
  {
8899
- 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
8900
9017
  },
8901
9018
  // `https://x-access-token:<token>@github.com/…` (the git credential shape the pod scrubbed already)
8902
9019
  {
@@ -8904,7 +9021,7 @@ var init_dist = __esm({
8904
9021
  suffix: true
8905
9022
  }
8906
9023
  ];
8907
- 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?)";
8908
9025
  SECRET_PAIR_PATTERNS = [
8909
9026
  // `Authorization: Bearer x`, `x-api-key: x`, `AWS_SECRET_ACCESS_KEY=x`, `SVC_JOB_KEY=x`, `"apiKey": "x"`,
8910
9027
  // `FOO_TOKEN=x`, `secretKey=x`, `password=x`. Groups: the char before the name, the name, the separator
@@ -8980,6 +9097,13 @@ var init_dist = __esm({
8980
9097
  __name3(scrubProviderMessage, "scrubProviderMessage");
8981
9098
  __name(scrubStepErrorMessage, "scrubStepErrorMessage");
8982
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");
8983
9107
  TEST_SESSION_ID_PATTERN = /^tsn_[0-9a-f-]{36}$/;
8984
9108
  __name(isTestSessionId, "isTestSessionId");
8985
9109
  __name3(isTestSessionId, "isTestSessionId");
@@ -9031,6 +9155,27 @@ var init_dist = __esm({
9031
9155
  __name3(sameSupervisionAccessFields, "sameSupervisionAccessFields");
9032
9156
  __name(supervisionAccessBindingViolation, "supervisionAccessBindingViolation");
9033
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");
9034
9179
  CONNECTION_HANDOVER_APPROVAL_PAYLOAD_KEY = "connectionAssignment";
9035
9180
  CONNECTION_HANDOVER_APPROVAL_CARD_MAX_CHARS = 1200;
9036
9181
  CONNECTION_HANDOVER_LIMITS = {
@@ -9910,7 +10055,7 @@ var init_dist = __esm({
9910
10055
  },
9911
10056
  {
9912
10057
  name: "find",
9913
- description: "Act by semantic locator. Args: by(role|text|label|placeholder|alt|title|testid), query, action(click|fill|type|hover|focus|check|uncheck|text), value?, name?, exact?."
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?."
9914
10059
  },
9915
10060
  // AI fallbacks
9916
10061
  {
@@ -9924,7 +10069,7 @@ var init_dist = __esm({
9924
10069
  // wait
9925
10070
  {
9926
10071
  name: "wait",
9927
- description: "Wait for a condition. Provide one of: selector(+state), ms, text, url, load, fn."
10072
+ description: "Wait for a condition. Provide one of: selector (waits until it is visible), ms, text, url, load, fn."
9928
10073
  },
9929
10074
  // tabs / frames
9930
10075
  {
@@ -9959,7 +10104,7 @@ var init_dist = __esm({
9959
10104
  },
9960
10105
  {
9961
10106
  name: "set",
9962
- 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[]."
9963
10108
  },
9964
10109
  // files / clipboard
9965
10110
  {
@@ -10003,7 +10148,7 @@ var init_dist = __esm({
10003
10148
  },
10004
10149
  {
10005
10150
  name: "keyboard",
10006
- description: "Low-level keyboard at focus. Args: action(type|inserttext|keydown|keyup), text?, key?."
10151
+ description: "Low-level keyboard at focus. Args: action(type|inserttext), text. Use press for single keys and chords."
10007
10152
  },
10008
10153
  {
10009
10154
  name: "state",
@@ -10318,9 +10463,9 @@ var init_dist = __esm({
10318
10463
  isString = /* @__PURE__ */ __name3((value3) => typeof value3 === "string", "isString");
10319
10464
  isBoolean = /* @__PURE__ */ __name3((value3) => typeof value3 === "boolean", "isBoolean");
10320
10465
  isCount = /* @__PURE__ */ __name3((value3) => typeof value3 === "number" && Number.isFinite(value3) && value3 >= 0, "isCount");
10321
- isPlainObject2 = /* @__PURE__ */ __name3((value3) => typeof value3 === "object" && value3 !== null && !Array.isArray(value3), "isPlainObject");
10466
+ isPlainObject3 = /* @__PURE__ */ __name3((value3) => typeof value3 === "object" && value3 !== null && !Array.isArray(value3), "isPlainObject");
10322
10467
  oneOf = /* @__PURE__ */ __name3((values) => (value3) => typeof value3 === "string" && values.includes(value3), "oneOf");
10323
- isLimits = /* @__PURE__ */ __name3((value3) => isPlainObject2(value3) && Object.values(value3).every((entry) => isCount(entry)), "isLimits");
10468
+ isLimits = /* @__PURE__ */ __name3((value3) => isPlainObject3(value3) && Object.values(value3).every((entry) => isCount(entry)), "isLimits");
10324
10469
  EVENT_SHAPES = {
10325
10470
  "session.opened": {
10326
10471
  required: {
@@ -10340,7 +10485,7 @@ var init_dist = __esm({
10340
10485
  ok: isBoolean
10341
10486
  },
10342
10487
  optional: {
10343
- args: isPlainObject2,
10488
+ args: isPlainObject3,
10344
10489
  urlBefore: isString,
10345
10490
  urlAfter: isString,
10346
10491
  resultBytes: isCount,
@@ -13361,6 +13506,23 @@ listed here; never invent a target.`;
13361
13506
  }).strict();
13362
13507
  __name(maskMcpServerHeaders, "maskMcpServerHeaders");
13363
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
+ };
13364
13526
  }
13365
13527
  });
13366
13528
 
@@ -17365,7 +17527,7 @@ function resolvePlacements(calls) {
17365
17527
  function isConditionalJoinId(stepId) {
17366
17528
  return CONDITIONAL_JOIN_ID.test(stepId);
17367
17529
  }
17368
- function isPlainObject3(v) {
17530
+ function isPlainObject4(v) {
17369
17531
  return typeof v === "object" && v !== null && !Array.isArray(v);
17370
17532
  }
17371
17533
  function leafValue(row2) {
@@ -17386,7 +17548,7 @@ function deriveRunOutput(steps) {
17386
17548
  if (leaves.length === 1) {
17387
17549
  const leaf = leaves[0];
17388
17550
  const value22 = leafValue(leaf);
17389
- if (isConditionalJoinId(leaf.stepId) && isPlainObject3(value22)) {
17551
+ if (isConditionalJoinId(leaf.stepId) && isPlainObject4(value22)) {
17390
17552
  const keys = Object.keys(value22);
17391
17553
  if (keys.length === 1) return {
17392
17554
  output: value22[keys[0]],
@@ -19376,8 +19538,8 @@ var init_dist2 = __esm({
19376
19538
  CONDITIONAL_JOIN_ID = /^conditional@\d+\.join$/;
19377
19539
  __name(isConditionalJoinId, "isConditionalJoinId");
19378
19540
  __name6(isConditionalJoinId, "isConditionalJoinId");
19379
- __name(isPlainObject3, "isPlainObject");
19380
- __name6(isPlainObject3, "isPlainObject");
19541
+ __name(isPlainObject4, "isPlainObject");
19542
+ __name6(isPlainObject4, "isPlainObject");
19381
19543
  __name(leafValue, "leafValue");
19382
19544
  __name6(leafValue, "leafValue");
19383
19545
  __name(runOutputLeaves, "runOutputLeaves");
@@ -38789,6 +38951,49 @@ var init_data_entry_instance = __esm({
38789
38951
  }
38790
38952
  });
38791
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
+
38792
38997
  // src/api/custom.data.api.service.ts
38793
38998
  var CustomDataApi;
38794
38999
  var init_custom_data_api_service = __esm({
@@ -38797,6 +39002,7 @@ var init_custom_data_api_service = __esm({
38797
39002
  init_http_client();
38798
39003
  init_custom_data();
38799
39004
  init_data_entry_instance();
39005
+ init_shared_data_offline();
38800
39006
  CustomDataApi = class extends HttpClient {
38801
39007
  static {
38802
39008
  __name(this, "CustomDataApi");
@@ -38997,6 +39203,10 @@ var init_custom_data_api_service = __esm({
38997
39203
  }
38998
39204
  throw new Error(response.error?.message || "Failed to delete custom data entry");
38999
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
+ }
39000
39210
  };
39001
39211
  }
39002
39212
  });
@@ -39733,7 +39943,7 @@ var init_agents_api_service = __esm({
39733
39943
  if (op === "lease.acquire" || op === "lease.release") {
39734
39944
  refuse("supervision_offline_unsupported", `${op} is not available offline; run it on the platform`);
39735
39945
  }
39736
- 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") {
39737
39947
  refuse("supervision_offline_unsupported", `${op} is not available offline; run it on the platform`);
39738
39948
  }
39739
39949
  if (op === "agents.directory" || op === "access.request" || op === "access.requests" || op === "access.cancel") {
@@ -39785,7 +39995,9 @@ var init_agents_api_service = __esm({
39785
39995
  return runSummary(await get(`/workflows/${id2}/runs/${encodeURIComponent(String(args2.runId ?? ""))}`));
39786
39996
  case "versions.list":
39787
39997
  return get(`/developer/agents/${id2}/versions${q({
39788
- limit: args2.limit
39998
+ limit: args2.limit,
39999
+ status: Array.isArray(args2.status) ? args2.status.join(",") : args2.status,
40000
+ offset: args2.offset
39789
40001
  })}`);
39790
40002
  case "versions.get":
39791
40003
  return get(`/developer/agents/${id2}/versions/${encodeURIComponent(String(args2.version))}`);
@@ -40660,10 +40872,32 @@ function createWorkflowsRuntime(getApi) {
40660
40872
  assertBoundAgent(api, agentId2, "goals.close");
40661
40873
  return unwrap(await api.closeGoal(goalId, opts), "Workflows.goals.close");
40662
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
+ }
40663
40897
  }
40664
40898
  };
40665
40899
  }
40666
- 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;
40667
40901
  var init_workflow_api_service = __esm({
40668
40902
  "src/api/workflow.api.service.ts"() {
40669
40903
  "use strict";
@@ -40710,6 +40944,7 @@ var init_workflow_api_service = __esm({
40710
40944
  return res.data;
40711
40945
  }, "unwrap");
40712
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");
40713
40948
  assertBoundAgent = /* @__PURE__ */ __name((api, agentId2, member) => {
40714
40949
  if (agentId2 && agentId2 !== api.agentId) {
40715
40950
  throw new WorkflowApiError("FORBIDDEN", `Workflows.${member}: goals are scoped to the bound agent ${api.agentId}`, 403);
@@ -40717,7 +40952,7 @@ var init_workflow_api_service = __esm({
40717
40952
  }, "assertBoundAgent");
40718
40953
  pathId = /* @__PURE__ */ __name((id2) => encodeURIComponent(id2), "pathId");
40719
40954
  __name(createWorkflowsRuntime, "createWorkflowsRuntime");
40720
- WorkflowApi = class extends HttpClient {
40955
+ WorkflowApi = class _WorkflowApi extends HttpClient {
40721
40956
  static {
40722
40957
  __name(this, "WorkflowApi");
40723
40958
  }
@@ -40728,6 +40963,10 @@ var init_workflow_api_service = __esm({
40728
40963
  this.credential = credential;
40729
40964
  this.agentId = agentId2;
40730
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
+ }
40731
40970
  /** PRO-1434 (main sync): auth rides the renewable request credential — resolve a current bearer per call. */
40732
40971
  async auth() {
40733
40972
  return {
@@ -48692,7 +48931,20 @@ function buildSupervisionAgentsApi(call2) {
48692
48931
  secrets: /* @__PURE__ */ __name10((agentId2) => ({
48693
48932
  attach: /* @__PURE__ */ __name10((requestIds) => call2("secrets.attach", agentId2, {
48694
48933
  requestIds: copyList(requestIds)
48695
- }), "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")
48696
48948
  }), "secrets")
48697
48949
  };
48698
48950
  }
@@ -53798,6 +54050,12 @@ var ALIAS_MAP = {
53798
54050
  ],
53799
54051
  aliases: lowerKeys({
53800
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",
53801
54059
  jobs: "job",
53802
54060
  webhooks: "webhook",
53803
54061
  preprocessors: "preprocessor",
@@ -59927,19 +60185,19 @@ init_cli();
59927
60185
  init_constants();
59928
60186
  import { readFileSync as readFileSync12, writeFileSync as writeFileSync9, mkdirSync as mkdirSync7 } from "fs";
59929
60187
  import { dirname as dirname6 } from "path";
59930
- function isPlainObject4(value3) {
60188
+ function isPlainObject5(value3) {
59931
60189
  return typeof value3 === "object" && value3 !== null && !Array.isArray(value3);
59932
60190
  }
59933
- __name(isPlainObject4, "isPlainObject");
60191
+ __name(isPlainObject5, "isPlainObject");
59934
60192
  function readStore2() {
59935
60193
  try {
59936
60194
  const raw = readFileSync12(SANDBOX_STORAGE_FILE, "utf8");
59937
60195
  const parsed = JSON.parse(raw);
59938
60196
  return {
59939
- skillsById: isPlainObject4(parsed.skillsById) ? parsed.skillsById : {},
59940
- preprocessorsById: isPlainObject4(parsed.preprocessorsById) ? parsed.preprocessorsById : {},
59941
- postprocessorsById: isPlainObject4(parsed.postprocessorsById) ? parsed.postprocessorsById : {},
59942
- devicesById: isPlainObject4(parsed.devicesById) ? parsed.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 : {}
59943
60201
  };
59944
60202
  } catch {
59945
60203
  return {
@@ -65407,7 +65665,9 @@ var ENTITY_SOURCES = /* @__PURE__ */ new Set([
65407
65665
  "webhook",
65408
65666
  "preprocessor",
65409
65667
  "postprocessor",
65410
- "device"
65668
+ "device",
65669
+ // Lua Apps: route executions, one entity per web app (`--type webapp --name <app>`).
65670
+ "web-route"
65411
65671
  ]);
65412
65672
  var NON_ENTITY_SOURCES = new Set(ALL_VALID_SOURCES.filter((s) => !ENTITY_SOURCES.has(s)));
65413
65673
  var FOLLOW_POLL_MS = 2e3;
@@ -65536,7 +65796,7 @@ function renderLogEntry(log, isLast) {
65536
65796
  const icon = getLogIcon(log.subType, logSource);
65537
65797
  const color = getLogColor(log.subType, logSource);
65538
65798
  console.log(color(`${icon} [${timestamp}] ${log.subType.toUpperCase()}`));
65539
- const capitalizedType = logSource ? capitalize(logSource) : "Item";
65799
+ const capitalizedType = logSource ? sourceLabel(logSource) : "Item";
65540
65800
  if (logSource === "user_message" || logSource === "agent_response" || logSource === "agent_error") {
65541
65801
  if (channel) {
65542
65802
  console.log(chalk2.gray(` Channel: ${channel}`));
@@ -65635,6 +65895,10 @@ async function fetchEntitiesByType(apiKey, agentId2, type) {
65635
65895
  const res = await new DeviceApi(BASE_URLS.API, apiKey, agentId2).getDevices();
65636
65896
  return res.data?.devices || [];
65637
65897
  }
65898
+ case "web-route": {
65899
+ const res = await new WebAppApi(BASE_URLS.API, apiKey, agentId2).getWebApps();
65900
+ return res.data?.webApps || [];
65901
+ }
65638
65902
  default:
65639
65903
  return [];
65640
65904
  }
@@ -65803,10 +66067,14 @@ async function nonInteractiveLogs(logsApi, agentId2, apiKey, options) {
65803
66067
  throw CliError.usage(`--name is not applicable for ${filters.logSource} type`, `Usage: lua logs --type ${filters.logSource} (no --name needed)`);
65804
66068
  }
65805
66069
  const entityId = await resolveEntityId(apiKey, agentId2, filters.logSource, options.name);
65806
- if (!entityId) {
65807
- throw CliError.notFound(`${capitalize(filters.logSource ?? "")} "${options.name}" not found`);
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`);
65808
66077
  }
65809
- filters.primitiveId = entityId;
65810
66078
  }
65811
66079
  if (options.userId) {
65812
66080
  filters.userId = options.userId;
@@ -65838,7 +66106,7 @@ async function nonInteractiveLogs(logsApi, agentId2, apiKey, options) {
65838
66106
  pagination: data.pagination
65839
66107
  }, null, 2));
65840
66108
  } else {
65841
- const typeLabel = options.type ? capitalize(options.type) : "All";
66109
+ const typeLabel = options.type ? sourceLabel(options.type) : "All";
65842
66110
  displayLogsCore(data.logs, data.pagination, `\u{1F4CA} ${typeLabel} Logs`);
65843
66111
  writeHintBlock({
65844
66112
  headline: "If you see errors:",
@@ -65925,6 +66193,10 @@ async function filterAndShowLogsInteractive(logsApi, agentId2, apiKey) {
65925
66193
  name: "Devices",
65926
66194
  value: "device"
65927
66195
  },
66196
+ {
66197
+ name: "Web Apps",
66198
+ value: "web-route"
66199
+ },
65928
66200
  new inquirer9.Separator(),
65929
66201
  {
65930
66202
  name: "\u{1F4AC} User Messages",
@@ -65989,10 +66261,10 @@ async function filterAndShowLogsInteractive(logsApi, agentId2, apiKey) {
65989
66261
  continue;
65990
66262
  }
65991
66263
  const entitySource = filterType;
65992
- const capitalizedType = capitalize(entitySource);
66264
+ const capitalizedType = sourceLabel(entitySource);
65993
66265
  const items = await fetchEntitiesByType(apiKey, agentId2, entitySource);
65994
66266
  if (items.length === 0) {
65995
- writeInfo(`\u2139\uFE0F No ${entitySource}s found for this agent.
66267
+ writeInfo(`\u2139\uFE0F No ${capitalizedType.toLowerCase()}s found for this agent.
65996
66268
  `);
65997
66269
  continue;
65998
66270
  }
@@ -66000,7 +66272,7 @@ async function filterAndShowLogsInteractive(logsApi, agentId2, apiKey) {
66000
66272
  {
66001
66273
  type: "list",
66002
66274
  name: "selectedId",
66003
- message: `Select a ${entitySource}:`,
66275
+ message: `Select a ${capitalizedType.toLowerCase()}:`,
66004
66276
  choices: [
66005
66277
  {
66006
66278
  name: `All ${capitalizedType}s`,
@@ -66127,6 +66399,10 @@ function capitalize(str3) {
66127
66399
  return str3.charAt(0).toUpperCase() + str3.slice(1);
66128
66400
  }
66129
66401
  __name(capitalize, "capitalize");
66402
+ function sourceLabel(source) {
66403
+ return source === "web-route" ? "Web app" : capitalize(source);
66404
+ }
66405
+ __name(sourceLabel, "sourceLabel");
66130
66406
  function getLogIcon(subType, logSource) {
66131
66407
  if (logSource === "user_message") {
66132
66408
  return "\u{1F4AC}";
@@ -90353,6 +90629,8 @@ Examples:
90353
90629
  $ lua logs --type skill --name mySkill --limit 10 Skill-specific logs
90354
90630
  $ lua logs --type job --name healthCheck --json JSON output for CI
90355
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)
90356
90634
  $ lua logs --user-id user-123 View all logs for a user
90357
90635
  $ lua logs --user-id user-123 --json > user-logs.json Export user logs
90358
90636
  $ lua logs --channel integration:lua_crm Isolate one integration's wake-up turns