lua-cli 3.42.0-beta.2 → 3.42.0-beta.3

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.
@@ -111,7 +111,11 @@ declare interface AgentCreateInput {
111
111
  * and the member's consent does not cover them.
112
112
  */
113
113
  unattendedWorkflowIds?: string[];
114
- /** U9 — `{ pendingFor }` secret requests to attach to the new agent (U9 owns the attach). */
114
+ /**
115
+ * U9 — `{ pendingFor }` secret requests to attach to the new agent (U9's `attachPending`). Only while
116
+ * `LUA_SECRET_REQUESTS_ENABLED` is on; each must be a stored, `ok`-tested request THIS provisioner made for
117
+ * the member in this org, and the member's consent must name the same ids.
118
+ */
115
119
  pendingSecretRequestIds?: string[];
116
120
  }
117
121
 
@@ -1063,6 +1067,39 @@ export declare interface AgentsApi {
1063
1067
  * ```
1064
1068
  */
1065
1069
  notifyOwner(agentId: string, input: SupervisionOwnerNotifyInput): Promise<SupervisionOwnerNotifyReceipt>;
1070
+ /**
1071
+ * Hand one of the agent OWNER's own personal connections to the agent (`supervision:act`), with the owner's consent
1072
+ * on Lua's own approval card, decided in their signed-in Desktop or inbox session (a chat-card, channel-reply or
1073
+ * API-key decision does not count). From a run the owner started, suspend on
1074
+ * `.approval(step, { approver: 'creator', title })` with the payload exactly
1075
+ * `{ connectionAssignment: { connectionId, agentId, agentName, supervisorName, integration, account } }` — the
1076
+ * agent's and YOUR agent's current names, the connection's integration type and its label (display name, else first
1077
+ * email), each checked against what Lua stores — and `title` exactly
1078
+ * `Give your <integration> connection to "<agentName>"?` (`connectionHandoverApprovalTitle`); no artefacts. Then call
1079
+ * `assign(connectionId, { approval: { runId, stepId } })` from a code step of THAT run within 10 minutes. One
1080
+ * assignment per approval. Refused `connection_handover_account_unidentified` / `connection_handover_agent_unidentified`
1081
+ * when the card could not say which account / agent (no label, a duplicate label or name, invisible characters). Refused `connection_handover_not_assignable` unless the connection is the owner's own and the agent is
1082
+ * their private agent. Off until the platform enables it (`connection_handover_disabled`); not available offline.
1083
+ */
1084
+ connections(agentId: string): {
1085
+ assign(connectionId: string, opts: {
1086
+ approval: AgentCreateApprovalRef;
1087
+ }): Promise<ConnectionHandoverResult>;
1088
+ };
1089
+ /**
1090
+ * Keys for an agent that already exists. On the owner's live chat turn, ask with `Secrets.request({ provider, key,
1091
+ * target: { pendingFor, agentId } })` (needs `supervision:act` on `agentId`, an agent of your org created by the
1092
+ * person you are talking to; never a `LUA_` / `NODE_` key). The OWNER submits it signed in
1093
+ * (`POST /developer/secrets/held-requests/:requestId/submit`; the public secret page refuses these), Lua tests it and
1094
+ * holds it encrypted; then attach it with `Agents.secrets(agentId).attach([requestId])`, again on the owner's live
1095
+ * chat turn (never a scheduled task, Job, workflow step or a user another agent chose). Only `ok`-tested requests you
1096
+ * held and the owner submitted are taken, all or none, and a key the agent already has is never replaced
1097
+ * (`secret_key_exists`). Off until `LUA_SECRET_ATTACH_EXISTING_ENABLED` is on (`secret_attach_existing_disabled`);
1098
+ * not available offline.
1099
+ */
1100
+ secrets(agentId: string): {
1101
+ attach(requestIds: string[]): Promise<SecretAttachResult>;
1102
+ };
1066
1103
  }
1067
1104
 
1068
1105
  export declare interface AgentStepOptions {
@@ -2310,6 +2347,13 @@ declare interface ConnectionCheckSafeMetadata {
2310
2347
  missingScopes?: string[];
2311
2348
  }
2312
2349
 
2350
+ declare interface ConnectionHandoverResult {
2351
+ agentId: string;
2352
+ connectionId: string;
2353
+ integration: string;
2354
+ status: 'assigned';
2355
+ }
2356
+
2313
2357
  /** `Integrations.requestConnection(...)` (u21 doc §15.2). The agent id comes from the runtime credential. */
2314
2358
  export declare interface ConnectionRequestCreateInput {
2315
2359
  integrationType: string;
@@ -6703,6 +6747,7 @@ export declare class LuaWebhook {
6703
6747
  private readonly headerSchema?;
6704
6748
  private readonly bodySchema?;
6705
6749
  private readonly secret?;
6750
+ private readonly enforceSchemas?;
6706
6751
  private readonly executeFunction;
6707
6752
  /**
6708
6753
  * Creates a new LuaWebhook instance.
@@ -6713,6 +6758,7 @@ export declare class LuaWebhook {
6713
6758
  * @param config.querySchema - Optional Zod schema for query parameter validation
6714
6759
  * @param config.headerSchema - Optional Zod schema for header validation
6715
6760
  * @param config.bodySchema - Optional Zod schema for body validation
6761
+ * @param config.enforceSchemas - Reject schema-violating requests with HTTP 400 (default: log a warning only)
6716
6762
  * @param config.execute - Function that processes the webhook request
6717
6763
  */
6718
6764
  constructor(config: LuaWebhookConfig);
@@ -6776,6 +6822,13 @@ export declare interface LuaWebhookConfig {
6776
6822
  * it and re-deploying.
6777
6823
  */
6778
6824
  secret?: string;
6825
+ /**
6826
+ * Opt in to rejecting requests that violate `querySchema` / `headerSchema` /
6827
+ * `bodySchema`. Default (`false`): violations are logged as a
6828
+ * `[lua:webhook-schema] would-reject` warning and `execute` still runs.
6829
+ * `true`: a violating request is rejected with HTTP 400 before `execute`.
6830
+ */
6831
+ enforceSchemas?: boolean;
6779
6832
  /** Function that executes the webhook logic */
6780
6833
  execute: (event: LuaWebhookEvent) => Promise<any>;
6781
6834
  }
@@ -8335,6 +8388,16 @@ declare const SECRET_REQUEST_STATES: readonly ["pending", "submitted", "stored",
8335
8388
  */
8336
8389
  declare const SECRET_TEST_RESULTS: readonly ["ok", "unauthorized", "wrong_key_type", "insufficient_permission", "unreachable", "unverified"];
8337
8390
 
8391
+ /**
8392
+ * `Agents.secrets(agentId).attach(requestIds)` (supervision op `secrets.attach`): the env keys set on the agent.
8393
+ * Never a value.
8394
+ */
8395
+ declare interface SecretAttachResult {
8396
+ agentId: string;
8397
+ attached: string[];
8398
+ envKeys: string[];
8399
+ }
8400
+
8338
8401
  declare type SecretDatadogRegion = (typeof SECRET_DATADOG_REGIONS)[number];
8339
8402
 
8340
8403
  /**
@@ -8404,9 +8467,15 @@ export declare interface SecretRequestStatus {
8404
8467
  * Where the secret goes. `'self'` = the calling agent; a string = that agent id (must be one the caller
8405
8468
  * may configure); `{ pendingFor }` = a not-yet-created agent: the value is held (encrypted) on the
8406
8469
  * request row and attached when U1 provisioning creates the agent with that request id.
8470
+ *
8471
+ * `{ pendingFor, agentId }` (held for an EXISTING agent, `LUA_SECRET_ATTACH_EXISTING_ENABLED`): the value is held
8472
+ * (encrypted) the same way, named for `agentId` — an agent of the caller's org, not the caller, created by the
8473
+ * conversation's person — and is attached only by the supervision op `secrets.attach` on that agent
8474
+ * (`Agents.secrets(agentId).attach([requestId])`, `act` grant, on the owner's own turn). Never by U1.
8407
8475
  */
8408
8476
  export declare type SecretRequestTarget = 'self' | string | {
8409
8477
  pendingFor: string;
8478
+ agentId?: string;
8410
8479
  };
8411
8480
 
8412
8481
  export declare const Secrets: SecretsApi;
@@ -8421,7 +8490,9 @@ export declare const Secrets: SecretsApi;
8421
8490
  export declare interface SecretsApi {
8422
8491
  /**
8423
8492
  * Open a request for a provider credential. `target` defaults to this agent (`'self'`); `{ pendingFor }`
8424
- * holds the value for an agent that is provisioned later on the requesting person's behalf.
8493
+ * holds the value for an agent that is provisioned later on the requesting person's behalf;
8494
+ * `{ pendingFor, agentId }` holds it for an EXISTING agent the person created (attach it with
8495
+ * `Agents.secrets(agentId).attach`).
8425
8496
  * The receipt's `pageToken` (returned once) opens the hosted secret page.
8426
8497
  *
8427
8498
  * **`pageToken` is a credential**: anyone holding it can write a value into this agent's env until the
@@ -9074,7 +9145,7 @@ export declare const Templates: {
9074
9145
  };
9075
9146
 
9076
9147
  /** Recorded effect kinds (DOC2 §7 seam table; `fetch` is sandbox egress record mode, §9.1). */
9077
- declare const TEST_EFFECT_KINDS: readonly ["channel.send", "whatsapp.template", "whatsapp.reaction", "whatsapp.phone_request", "email.send", "inbox.push", "voice.call", "passthrough", "mcp.tool", "supervision.write", "user.update_name", "browser.action", "jobs.create", "fetch", "refused", "metrics.record", "threads.open", "threads.follow_up", "secrets.request", "connection_request.create", "connection_request.reconnect", "connection_request.cancel"];
9148
+ declare const TEST_EFFECT_KINDS: readonly ["channel.send", "whatsapp.template", "whatsapp.reaction", "whatsapp.phone_request", "email.send", "inbox.push", "voice.call", "passthrough", "mcp.tool", "supervision.write", "user.update_name", "browser.action", "jobs.create", "fetch", "refused", "metrics.record", "threads.open", "threads.follow_up", "secrets.request", "connection_request.create", "connection_request.reconnect", "connection_request.cancel", "ai.generate"];
9078
9149
 
9079
9150
  declare type TestEffectKind = (typeof TEST_EFFECT_KINDS)[number];
9080
9151
 
@@ -391,16 +391,22 @@ function decideAgentProvisioning(params) {
391
391
  if (input.unattendedWorkflowIds.length) {
392
392
  return wf("unattendedWorkflowIds are not allowed on a provisioning grant (the member\u2019s consent does not cover them)");
393
393
  }
394
- if (input.pendingSecretRequestIds.length) {
394
+ if (input.pendingSecretRequestIds.length && !params.pendingSecretsEnabled) {
395
395
  return {
396
396
  code: AGENT_PROVISIONING_ERRORS.PENDING_SECRETS_UNSUPPORTED,
397
- message: "Pending secret requests cannot be attached yet"
397
+ message: "Pending secret requests are not enabled in this environment"
398
+ };
399
+ }
400
+ if (input.pendingSecretRequestIds.length > AGENT_PROVISIONING_LIMITS.pendingSecretsMax) {
401
+ return {
402
+ code: AGENT_PROVISIONING_ERRORS.PENDING_SECRETS_UNSUPPORTED,
403
+ message: `At most ${AGENT_PROVISIONING_LIMITS.pendingSecretsMax} pending secret requests can be attached`
398
404
  };
399
405
  }
400
406
  return null;
401
407
  }
402
408
  function consentCoversProvisioning(consent, request) {
403
- return consent.orgId === request.orgId && consent.userId === request.onBehalfOf && consent.provisionerAgentId === request.provisionerAgentId && consent.agentName.trim() === request.input.name && sameSet(consent.supervise ?? [], request.input.supervise) && sameSet(consent.connections ?? [], request.input.connections);
409
+ return consent.orgId === request.orgId && consent.userId === request.onBehalfOf && consent.provisionerAgentId === request.provisionerAgentId && consent.agentName.trim() === request.input.name && sameSet(consent.supervise ?? [], request.input.supervise) && sameSet(consent.connections ?? [], request.input.connections) && sameSet(consent.pendingSecretRequestIds ?? [], request.input.pendingSecretRequestIds);
404
410
  }
405
411
  function parseAgentProvisioningApprovalPayload(payload) {
406
412
  if (!payload || typeof payload !== "object" || Array.isArray(payload)) return null;
@@ -1743,6 +1749,75 @@ function supervisionAccessBindingViolation(merged) {
1743
1749
  }
1744
1750
  return null;
1745
1751
  }
1752
+ function hasFormatCharacters(text) {
1753
+ return FORMAT_CHARS.test(text);
1754
+ }
1755
+ function normalizedHandoverName(name) {
1756
+ return oneLine(name.normalize("NFKC")).toLowerCase();
1757
+ }
1758
+ function handoverAgentIdSuffix(agentId) {
1759
+ return agentId.slice(-6);
1760
+ }
1761
+ function parseConnectionHandoverApprovalPayload(payload) {
1762
+ if (!payload || typeof payload !== "object" || Array.isArray(payload)) return null;
1763
+ const top = Object.keys(payload);
1764
+ if (top.length !== 1 || top[0] !== CONNECTION_HANDOVER_APPROVAL_PAYLOAD_KEY) return null;
1765
+ const p = payload[CONNECTION_HANDOVER_APPROVAL_PAYLOAD_KEY];
1766
+ if (!p || typeof p !== "object" || Array.isArray(p)) return null;
1767
+ const r = p;
1768
+ if (Object.keys(r).some((k) => !MEMBERS.includes(k))) return null;
1769
+ const L = CONNECTION_HANDOVER_LIMITS;
1770
+ if (!boundedString(r.connectionId, L.idMax) || !boundedString(r.agentId, L.idMax) || !boundedString(r.agentName, L.agentNameMax) || !boundedString(r.supervisorName, L.agentNameMax) || !boundedString(r.integration, L.integrationMax) || r.account !== void 0 && !boundedString(r.account, L.accountMax)) {
1771
+ return null;
1772
+ }
1773
+ return {
1774
+ connectionId: r.connectionId.trim(),
1775
+ agentId: r.agentId.trim(),
1776
+ agentName: r.agentName.trim(),
1777
+ supervisorName: r.supervisorName.trim(),
1778
+ integration: r.integration.trim(),
1779
+ ...r.account !== void 0 ? {
1780
+ account: r.account.trim()
1781
+ } : {}
1782
+ };
1783
+ }
1784
+ function describeConnectionHandoverApproval(payload) {
1785
+ const parsed = parseConnectionHandoverApprovalPayload(payload);
1786
+ if (!parsed) return null;
1787
+ const agent = `"${oneLine(parsed.agentName)}" (\u2026${handoverAgentIdSuffix(parsed.agentId)})`;
1788
+ const supervisor = `"${oneLine(parsed.supervisorName)}"`;
1789
+ const integration = oneLine(parsed.integration);
1790
+ const account = parsed.account ? ` (${oneLine(parsed.account)})` : "";
1791
+ return [
1792
+ `Give your ${integration} connection${account} to your agent ${agent}.`,
1793
+ "It can then use this account through its tools.",
1794
+ `${supervisor}, the agent asking, supervises it, so it can also reach this account through it: in test runs, previews and the actions its supervision rights allow.`,
1795
+ "You can remove it at any time from the agent's connections."
1796
+ ].join("\n");
1797
+ }
1798
+ function connectionHandoverApprovalTitle(facts) {
1799
+ return `Give your ${oneLine(facts.integration)} connection to "${oneLine(facts.agentName)}"?`;
1800
+ }
1801
+ function normalizeConnectionHandoverArgs(raw) {
1802
+ if (!raw || typeof raw !== "object" || Array.isArray(raw)) return null;
1803
+ const r = raw;
1804
+ if (Object.keys(r).some((k) => k !== "connectionId" && k !== "approval")) return null;
1805
+ if (!boundedString(r.connectionId, CONNECTION_HANDOVER_LIMITS.idMax)) return null;
1806
+ const approval = normalizeApprovalRef(r.approval);
1807
+ if (!approval) return null;
1808
+ return {
1809
+ connectionId: r.connectionId.trim(),
1810
+ approval
1811
+ };
1812
+ }
1813
+ function approvalPayloadCoversConnectionHandover(payload, stored) {
1814
+ const p = parseConnectionHandoverApprovalPayload(payload);
1815
+ if (!p) return false;
1816
+ const text = describeConnectionHandoverApproval(payload) ?? "";
1817
+ if (text.length > CONNECTION_HANDOVER_APPROVAL_CARD_MAX_CHARS || scrubSecretText(text) !== text) return false;
1818
+ const storedAccount = stored.account?.trim() || void 0;
1819
+ return p.connectionId === stored.connectionId && p.agentId === stored.agentId && p.agentName === stored.agentName.trim() && p.supervisorName === stored.supervisorName.trim() && p.integration === stored.integration && p.account === storedAccount;
1820
+ }
1746
1821
  function agentMetricTagsKey(tags) {
1747
1822
  if (!tags) return "";
1748
1823
  return Object.keys(tags).sort().map((k) => `${encodeURIComponent(k)}=${encodeURIComponent(tags[k])}`).join("&");
@@ -5915,7 +5990,7 @@ function isPaymentRequiredChatErrorEnvelope(data) {
5915
5990
  if (d.type !== "error") return false;
5916
5991
  return d.textDelta === BILLING_REJECTION_TEXT_CREDITS || d.textDelta === BILLING_REJECTION_TEXT_SEAT || d.textDelta === BILLING_REJECTION_TEXT_USER_QUOTA;
5917
5992
  }
5918
- var __defProp3, __name3, PLUMBING_THREAD_CHANNELS, CHANNEL_CONVERSATION_CHANNELS, HIDDEN_THREAD_CHANNELS, CHOICE_PERSON_TURN_CHANNELS, CHOICE_REPLAY_CLIENT_CAPABILITIES, CHOICE_REPLAY_CLIENT_SURFACES, INTEGRATION_PASSTHROUGH_READ_METHODS, URL_REINTERPRETED_PATH_CHARACTERS, PERCENT_ENCODED_DOT, PERCENT_ESCAPE, DECODED_PATH_SEPARATORS, DECODED_LEADING_SEPARATOR, MAX_PERCENT_DECODE_ROUNDS, URL_RESOLUTION_PROBE_BASE, PLATFORM_INVOCATION_CALLERS, SUPERVISION_OPS, SUPERVISION_OPS_WAVE2, SUPERVISION_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, AGENT_METRIC_NAME_PATTERN, AGENT_METRIC_LIMITS, AGENT_OBJECTIVE_ERRORS, CHANGE_LEASE_TTL_MINUTES_MIN, CHANGE_LEASE_TTL_MINUTES_MAX, CHANGE_LEASE_REASON_MAX, CHANGE_LEASE_ERRORS, AGENT_CONFIG_SET_LIMITS, SECRET_ENV_KEY_SUFFIXES, DEFAULT_OWNER_DEPARTURE_POLICY, AGENT_LIFECYCLE_ERRORS, USER_COST_COUNTER_TTL_SECONDS, USER_COST_ATTRIBUTION_CHANNELS, CALLER_DEDUPE_KEY_MAX, FOLLOW_UP_IDEMPOTENCY_TTL_SECONDS, THREAD_FOLLOW_UP_LIMITS, THREAD_FOLLOW_UP_ERRORS, PROGRESS_UPDATE_LIMITS, PAUSABLE_CAPABILITY_KINDS, UNIFIED_CATCH_UP_MAX_WINDOW_HOURS, UNIFIED_CATCH_UP_EVENTS, UNIFIED_CATCH_UP_FILTERABLE_OBJECT_TYPES, AGENT_NEVER_RULES_MAX, AGENT_NEVER_RULE_FIELD_MAX, AGENT_NEVER_RULE_INPUT_MATCH_MAX, NEVER_RULE_ID_PATTERN, NEVER_RULE_HTTP_METHODS, TEMPLATE_DISTRIBUTION_MODES, CHANNEL_SEND_CHANNELS, TAKEOVER_MAX_IDLE_MINUTES, MINUTES_PER_DAY, DEFAULT_IDLE_RELEASE_MINUTES, FALLBACK_IDLE_RELEASE_MINUTES, VARIATION_SELECTORS, SLACK_EMOJI_NAMES, SLACK_SHORTCODE, PLAIN_EMAIL_ADDRESS, DOMAIN, UNSAFE_TEXT, SLACK_CONVERSATION_ID, CHANNEL_SETTING_GROUPS, 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, BROWSER_COMMANDS, BROWSER_COMMAND_NAMES, LOG_FIELDS_MAX_KEYS, LOG_FIELD_MAX_VALUE_BYTES, LOG_FIELDS_MAX_BYTES, LOG_FIELD_KEY_PATTERN, LOG_FIELD_SECRET_SHAPED_KEY_PATTERNS, LOG_FIELDS_CLAMPED_KEY, LOG_FIELD_ARRAY_COUNT_SUFFIX, LuaLogFieldsError, DESKTOP_FILE_COMMANDS, DESKTOP_FILE_COMMAND_SET, WORKFLOW_RETRY_BACKOFFS, WORKFLOW_RETRY_MIN_ATTEMPTS, WORKFLOW_RETRY_POLICY_KEYS, WORKFLOW_RETRY_MAX_ATTEMPTS, WORKFLOW_RETRY_ENGINE_KEYS, WORKFLOW_JOB_RESOURCES, WORKFLOW_SIDE_EFFECTS, WORKFLOW_MODEL_CLASSES, WORKFLOW_DEFAULT_TASK_CLASS_MAP, WORKFLOW_MODELS_MAX_CLASS_DEFAULT, WORKFLOW_AUTONOMY_NUMERIC_KEYS, WORKFLOW_AUTONOMY_ENVELOPE_KEYS, WORKFLOW_AUTONOMY_DEFAULTS, WORKFLOW_AUTONOMY_CEILINGS, WORKFLOW_AUTONOMY_MAX_RUNS_PER_HOUR_ENV, WORKFLOW_AUTONOMY_MAX_RUNS_PER_HOUR_CEILING, WORKFLOW_AUTONOMY_FORMS_DEFAULT, WORKFLOW_AUTONOMY_MIN_VALUE, WORKFLOW_JOB_RANGES, WORKFLOW_JOB_RANGE_MEMBERS, WORKFLOW_SINGLE_STEP_TYPES, WORKFLOW_HITL_ENTRY_TYPES, WORKFLOW_ARM_ENTRY_TYPES, WORKFLOW_HITL_ARM_CONTAINERS, WORKFLOW_GRAPH_ENTRY_STEP_KINDS, WORKFLOW_ARM_ENTRY_STEP_KINDS, WORKFLOW_BUDGET_MAX_DURATION_SECONDS, MODEL_ID_BYOK_PROVIDERS, MODEL_CLASS_REF_PREFIX, MODEL_SNAPSHOT_SUFFIX, REASONING_EFFORT_VALUES, IMPLICIT_MODEL_SELECTION_SOURCES, PLATFORM_FALLBACK_MODEL_SOURCE, AGENT_NAME_TOKEN, DEFAULT_PERSONA_GUIDE, PERSONAL_SPACE_STARTING_PERSONA, AGENT_LOG_SOURCES, AGENT_LOG_FIELDS_MAX_WIRE_KEYS, LOG_DRAIN_TYPES_PHASE1, LOG_DRAIN_TYPES_PHASE2, LOG_DRAIN_TYPES_IMPLEMENTED, LOG_DRAIN_SOURCES, LOG_DRAIN_MAX_PER_ORG, LOG_DRAIN_MAX_PER_ORG_ENTERPRISE, LOG_DRAIN_DATADOG_SITES, LOG_DRAIN_NEWRELIC_SITES, LOG_DRAIN_ENDPOINT_TEMPLATES, LOG_DRAIN_PRESET_SITES, LOG_DRAIN_BUCKET_NAME_PATTERN, LOG_DRAIN_BUCKET_HOST_PATTERNS, LOG_DRAIN_PRESET_HOST_SUFFIXES, DRAIN_CONTENT_ACK_ERROR_CODE, DRAIN_CONTENT_ACK_FIELD, DrainContentAckRequiredError, LOG_DRAIN_PRESET_PATHS, PRESET_SEGMENT_RE, LOG_DRAIN_QUOTAS, LOG_DRAIN_QUOTA_WARN_RATIO, LOG_DRAIN_QUOTA_DROP_DEBUG_RATIO, LOG_DRAIN_QUOTA_DROP_INFO_RATIO, LOG_DRAIN_QUOTA_PAUSE_RATIO, LOG_EXPORT_SOURCES, LOG_EXPORT_MAX_WINDOW_DAYS, LOG_EXPORT_MAX_WINDOW_MS, LOG_EXPORT_URL_TTL_SECONDS, LOG_EXPORT_FILE_RETENTION_DAYS, LOG_EXPORT_FILE_RETENTION_MS, LOG_EXPORT_PART_MAX_BYTES, LOG_DRAIN_NOTICE_RATE_LIMIT_MS, LOG_DRAIN_VERIFICATION_STALE_MS, LOG_DRAIN_DIGEST_INTERVAL_MS, LOG_DRAIN_DIGEST_MAX_ENTRIES, LOG_DRAIN_NOTICE_ERROR_MAX_CHARS, LOG_DRAIN_USAGE_LINE_ITEM, LOG_DRAIN_BYTES_PER_GIB, DEFAULT_LOG_DRAIN_PLAN_CONFIG, TIERS, LOG_CURSOR_MAX_LENGTH, LOG_CURSOR_MAX_ID_LENGTH, LOG_RELATIVE_TIME_PATTERN, LOG_ISO_TIME_PATTERN, RELATIVE_UNIT_MS, CORE_DRAINING_CODE, CORE_DRAINING_DEFAULT_RETRY_MS, CORE_DRAINING_MAX_RETRY_MS, VoiceNameSchema, PluginProviderSchema, RealtimeProviderSchema, PluginClassSchema, ModelDescriptorSchema, InferenceModelSchema, PluginModelSchema, RealtimeModelSchema, LuaVoiceModelSchema, TurnDetectionSchema, InterruptionSchema, BuiltinAudioClipSchema, AudioConfigSchema, BackgroundAudioEntrySchema, BackgroundAudioSchema, LuaVoiceConfigInnerSchema, LuaVoiceConfigSchema, LuaVoiceRefSchema, LUA_JOB_DEFAULT_TIMEOUT_SECONDS, LUA_JOB_MIN_TIMEOUT_SECONDS, LUA_JOB_MAX_TIMEOUT_SECONDS, KEYS, MAX_BODY_BYTES, MAX_ID_LENGTH, UTC_ISO, TEMPLATE_TRIGGER_URL_ENV_PREFIX, TEMPLATE_INSTALL_POLICY_PER_WORKSPACE_VALUES, SUBJECT_TYPES, SubjectTypeSchema, CREDENTIAL_TYPES, CredentialTypeSchema, DEVICE_OPERATIONS, DeviceOperationSchema, DEVICE_SCOPE_BY_OPERATION, DeviceBindingSchema, IdSchema, SESSION_AUTH_TIME_MAX_S, PrincipalDescriptorSchema, ActorDescriptorSchema, PrincipalOwnerSchema, CredentialLifecycleSchema, GeneralCredentialDescriptorSchema, DeviceCredentialDescriptorSchema, GeneralPrincipalContextSchema, DeviceCredentialPrincipalContextSchema, RawPrincipalContextSchema, PrincipalContextSchema, DeviceCredentialClaimSchema, LUA_CLIENT_HEADER, LUA_CLIENT_APPS, SEMVER_PATTERN, WEB_RELEASE_PATTERN, CLIENT_HEADER_PATTERN, LUA_SESSION_ID_CLAIM, SESSION_REVOKED_CODE, AUTHZ_PROJECTION_VERSION, ProjectedScopeSchema, DisplayRoleSchema, AuthorizationPrincipalSchema, CredentialContextSchema, ProjectionAnomalySchema, ProjectedOrgSchema, ProjectedResourceSchema, CapabilityProfilesSchema, RoleCatalogSchema, EffectiveAuthorizationSchema, ResourcePageSchema, SYSTEM_USER_PREFIX, WORKFLOW_RUN_IN_FLIGHT, WORKFLOW_RUN_IDLE, WORKFLOW_RUN_TERMINAL, WORKFLOW_RUN_STATUSES, WORKFLOW_RUN_GATE_KINDS, WORKFLOW_STEP_STATUSES, WORKFLOW_STEP_IN_FLIGHT, WORKFLOW_SIGNAL_EVENT_SITES, ARCHIVE_WINDOW_MARGIN_DAYS, WORKFLOW_ORG_PURGING_TTL_S, WORKFLOW_ORG_PURGE_FORCE_AFTER_MS, IDEMPOTENCY_HOLDING_STATUSES, WORKFLOW_SCHEDULED_RUN_ID_PREFIX, CLOUD_TASK_RUN_ID_PREFIX, WORKFLOW_SCHEDULE_KEY_MAX, WORKFLOW_SCHEDULE_IDEMPOTENCY_KEY_PREFIX, WORKFLOW_OPERATION_ID_PREFIX, WORKFLOW_CONNECTION_KEY_RE, WORKFLOW_JOB_MODEL_SOURCE_LABELS, WORKFLOW_SUSPEND_KINDS, WORKFLOW_RUN_NOTIFICATION_SUSPENDED_KINDS, WORKFLOW_SIGNAL_PAYLOAD_MAX_BYTES, WORKFLOW_SUSPEND_DEFAULT_TIMEOUT_HOURS, WORKFLOW_RESOLVE_OUTPUT_MAX_BYTES, SCHEDULE_HEALTH_NOTIFY_CHANNELS, SCHEDULE_HEALTH_DEFAULT_NOTIFY, SCHEDULE_HEALTH_LIMITS, KNOWN_KEYS, WORKFLOW_GOAL_JUDGE_SELF, APPROVAL_ARGS_MAX_CHARS, APPROVAL_ARG_STRING_MAX_CHARS, APPROVAL_ARGS_SUMMARY_MAX_CHARS, MAX_DEPTH, MAX_KEYS, MAX_ITEMS, MAX_NODES, MAX_KEY_CHARS, KEY_SCRUB_INPUT_MAX_CHARS, STRING_SCRUB_INPUT_MAX_CHARS, ELLIPSIS, SKIP, SCRUB_SECRETS_BEFORE_PERSIST_ENV, PERSIST_SCRUB_MAX_CHARS, PERSIST_SCRUB_REF_MAX_CHARS, WORKFLOW_AUDIT_EVENTS, WORKFLOW_AUDIT_METADATA_MAX_BYTES, INDENT, WRAP_WIDTH, NOUNS, GET_TOOL_NAMES, PREAMBLE, WORKFLOW_APPROVAL_OUTPUT_DECISIONS, WORKFLOW_APPROVAL_OUTPUT_SCHEMA, JSON_FENCE_RE, DEFAULT_ON_AGENT_FEATURES, SUBAGENT_PER_KEY_FLAG_ENV, PER_KEY_FLAG_VALUES, ONBOARDING_FLOW_KEY, ONBOARDING_SCHEMA_VERSION, id, copy, onboardingHeadingSchema, onboardingRichTextInlineSchema, onboardingRichTextSchema, onboardingDestinationSchema, onboardingArtworkSchema, onboardingAnswerSchema, onboardingQuestionSchema, onboardingTemplateSectionSchema, onboardingInstallScreenSchema, onboardingResultScreenSchema, onboardingConnectScreenSchema, onboardingTemplateContentSchema, onboardingUnavailableOutcomeSchema, onboardingFlowSchema, onboardingActorSchema, onboardingEditorSchema, onboardingPublicationSummarySchema, onboardingValidationIssueSchema, onboardingValidationResponseSchema, onboardingAssetSchema, onboardingPublicAssetSchema, getOnboardingConfigResponseSchema, saveOnboardingDraftRequestSchema, validateOnboardingRequestSchema, publishOnboardingRequestSchema, rollbackOnboardingRequestSchema, onboardingTemplateCatalogItemSchema, getPublishedOnboardingResponseSchema, WEB_ROUTE_PROTOCOL_VERSION, WEB_ROUTE_METHODS, WEB_ROUTE_REQUEST_HEADER_ALLOWLIST, WEB_ROUTE_RESPONSE_HEADER_ALLOWLIST, WEB_ROUTE_MAX_REQUEST_BODY_BYTES, WEB_ROUTE_MAX_RESPONSE_BYTES, WEB_APP_NAME_PATTERN, WEB_APP_ENTRY_HTML_MAX_CHARS, WEB_APP_MAX_ASSET_BYTES, EVIDENCE_SESSION_IDLE_MS, EVIDENCE_MIN_CONVERSATIONS, EVIDENCE_LOW_CONFIDENCE_N, EVIDENCE_SNIPPET_MAX_CHARS, EVIDENCE_EXAMPLES_PER_ITEM, EVIDENCE_SHOWN_ITEMS, EVIDENCE_LATENCY_BOUNDS_MS, EVIDENCE_WORD_BOUNDS, BAD_CONVERSATION_REASONS, ATTACHMENT_LINES, REVIEW_VERDICT_REASON_ORDER, ENV_TEMPLATE_SECRET_KEY_RE, CONNECTION_SEND_NOT_ALLOWED, CONNECTION_RECIPIENT_NOT_ALLOWED, NOT_SEND, PLAIN_ADDRESS, RecipientSet, MCP_MESSAGING_CREATE, MCP_CALENDAR_EVENT_WRITE, REPLY_KEYS, DEDICATED_MAIL_SLUGS, FULL_SUITE_SLUGS, WELL_KNOWN_MAIL_FOLDERS, MEMBER_KEYS, CANONICAL_ORIGIN, CANONICAL_PREFIX, STRICT_BASE64, GMAIL_PREFIX, GMAIL_MESSAGES_SEND, GMAIL_DRAFTS_SEND, GOOGLE_BATCH, GRAPH_VERSION, GRAPH_PRINCIPAL, GRAPH_SEND_MAIL, GRAPH_MESSAGE_ACTION, GRAPH_OWNER, GRAPH_EVENTS, GRAPH_EVENT_COLLECTION, GRAPH_EVENT_ID, GRAPH_EVENT_ITEM, GRAPH_EVENT_ACTION, GRAPH_BATCH, GRAPH_TEAMS_MESSAGE, GRAPH_ACTIVITY_NOTIFICATION, GRAPH_GROUP_CONVERSATION, GCAL_EVENTS, GRAPH_READ_KEYS, MALFORMED_POLICY, BILLING_REJECTION_TEXT_CREDITS, BILLING_REJECTION_TEXT_SEAT, BILLING_REJECTION_TEXT_USER_QUOTA;
5993
+ var __defProp3, __name3, PLUMBING_THREAD_CHANNELS, CHANNEL_CONVERSATION_CHANNELS, HIDDEN_THREAD_CHANNELS, CHOICE_PERSON_TURN_CHANNELS, CHOICE_REPLAY_CLIENT_CAPABILITIES, CHOICE_REPLAY_CLIENT_SURFACES, INTEGRATION_PASSTHROUGH_READ_METHODS, URL_REINTERPRETED_PATH_CHARACTERS, PERCENT_ENCODED_DOT, PERCENT_ESCAPE, DECODED_PATH_SEPARATORS, DECODED_LEADING_SEPARATOR, MAX_PERCENT_DECODE_ROUNDS, URL_RESOLUTION_PROBE_BASE, PLATFORM_INVOCATION_CALLERS, SUPERVISION_OPS, SUPERVISION_OPS_WAVE2, SUPERVISION_UNTARGETED_OPS, SUPERVISED_WORKFLOW_VERSIONS_MAX, SUPERVISION_EVENT_KINDS, AGENT_PROVISIONING_LIMITS, AGENT_PROVISIONING_APPROVAL_PAYLOAD_KEY, AGENT_PROVISIONING_ERRORS, PROVISIONED_SUPERVISION_ACTIONS, isNonEmptyString, uniqueStrings, sameSet, AGENT_PROVISIONING_APPROVAL_CARD_MAX_CHARS, APPROVAL_PAYLOAD_MEMBERS, AGENT_CONNECTION_POLICIES, AGENT_CONNECTION_POLICY_DEFAULT, AGENT_CONNECTION_MOUNT_MODES, AGENT_CONNECTION_GOVERNANCE_ERRORS, AGENT_CONNECTION_OPERATION_RULES_MAX, AGENT_CONNECTION_OPERATION_PATTERN_MAX_LENGTH, OPERATION_RULE_METHODS, PATH_SEPARATOR, PATH_SINGLE_SEGMENT_WILDCARD, PATH_REST_WILDCARD, METHOD_OVERRIDE_HEADER_NAMES, METHOD_OVERRIDE_QUERY_NAMES, ODATA_BATCH_SEGMENT, GOOGLE_BATCH_FIRST_SEGMENT, CONNECTION_CHECK_RESULTS, CONNECTION_CHECK_CATALOGUE_V1, CONNECTION_CHECK_NAME_PATTERN, CONNECTION_CHECK_NAME_MAX, CONNECT_OUTCOME_STATUSES, SECRET_TEST_RESULTS, SECRET_DATADOG_REGIONS, SECRET_PROVIDER_CATALOGUE_V1, SECRET_TEST_MAX_RESPONSE_BYTES, SECRET_ENV_KEY_PATTERN, SECRET_REQUEST_ERRORS, SECRET_OUTCOME_STATUSES, CLIENT_OUTCOME_TURNS_MAX, SHORT_TEXT_MAX, SLUG_MAX, shortText, optionalShortText, CONNECTION_REQUEST_TERMINAL_STATES, CONNECTION_USE_ORIGINS, AGENT_CONNECTION_OPERATION_LIMITS_BOUNDS, CURRENCY_CODE, LIMITS_KEYS, CAPS_KEYS, EXCLUSIONS_KEYS, EMAIL_IN_TEXT, MAX_EXCLUSION_DEPTH, PROJECTION_PARAMETER_KEYS, CHANNEL_PARAMETER_KEYS, GMAIL_SYSTEM_LABEL_IDS, ZERO_DECIMAL_CURRENCIES, THREE_DECIMAL_CURRENCIES, DECIMAL_AMOUNT, REDACTED_PLACEHOLDER, PROVIDER_MESSAGE_MAX_CHARS, ERROR_MESSAGE_MAX_CHARS, SECRET_LITERAL_PATTERNS, SECRET_NAME, SECRET_PAIR_PATTERNS, GROUP_COUNT, WORKFLOW_SECRET_KEY_RE, WORKFLOW_RESERVED_SECRET_KEYS, SCRUB_INPUT_MAX_CHARS, SCRUB_CUT_BACKOFF_CHARS, TEST_SESSION_ID_PATTERN, TEST_SESSION_COLLECTION_PREFIX, TEST_EFFECT_BODY_MAX_BYTES, TEST_EFFECT_DROPPED_HEADERS, EVAL_CREDITS_PER_1K_TOKENS, EVAL_RESERVED_TOOL_ID_PREFIXES, CONNECTION_HANDOVER_APPROVAL_PAYLOAD_KEY, CONNECTION_HANDOVER_APPROVAL_CARD_MAX_CHARS, CONNECTION_HANDOVER_LIMITS, MEMBERS, FORMAT_CHARS, oneLine, boundedString, AGENT_METRIC_NAME_PATTERN, AGENT_METRIC_LIMITS, AGENT_OBJECTIVE_ERRORS, CHANGE_LEASE_TTL_MINUTES_MIN, CHANGE_LEASE_TTL_MINUTES_MAX, CHANGE_LEASE_REASON_MAX, CHANGE_LEASE_ERRORS, AGENT_CONFIG_SET_LIMITS, SECRET_ENV_KEY_SUFFIXES, DEFAULT_OWNER_DEPARTURE_POLICY, AGENT_LIFECYCLE_ERRORS, USER_COST_COUNTER_TTL_SECONDS, USER_COST_ATTRIBUTION_CHANNELS, CALLER_DEDUPE_KEY_MAX, FOLLOW_UP_IDEMPOTENCY_TTL_SECONDS, THREAD_FOLLOW_UP_LIMITS, THREAD_FOLLOW_UP_ERRORS, PROGRESS_UPDATE_LIMITS, PAUSABLE_CAPABILITY_KINDS, UNIFIED_CATCH_UP_MAX_WINDOW_HOURS, UNIFIED_CATCH_UP_EVENTS, UNIFIED_CATCH_UP_FILTERABLE_OBJECT_TYPES, AGENT_NEVER_RULES_MAX, AGENT_NEVER_RULE_FIELD_MAX, AGENT_NEVER_RULE_INPUT_MATCH_MAX, NEVER_RULE_ID_PATTERN, NEVER_RULE_HTTP_METHODS, TEMPLATE_DISTRIBUTION_MODES, CHANNEL_SEND_CHANNELS, TAKEOVER_MAX_IDLE_MINUTES, MINUTES_PER_DAY, DEFAULT_IDLE_RELEASE_MINUTES, FALLBACK_IDLE_RELEASE_MINUTES, VARIATION_SELECTORS, SLACK_EMOJI_NAMES, SLACK_SHORTCODE, PLAIN_EMAIL_ADDRESS, DOMAIN, UNSAFE_TEXT, SLACK_CONVERSATION_ID, CHANNEL_SETTING_GROUPS, 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, BROWSER_COMMANDS, BROWSER_COMMAND_NAMES, LOG_FIELDS_MAX_KEYS, LOG_FIELD_MAX_VALUE_BYTES, LOG_FIELDS_MAX_BYTES, LOG_FIELD_KEY_PATTERN, LOG_FIELD_SECRET_SHAPED_KEY_PATTERNS, LOG_FIELDS_CLAMPED_KEY, LOG_FIELD_ARRAY_COUNT_SUFFIX, LuaLogFieldsError, DESKTOP_FILE_COMMANDS, DESKTOP_FILE_COMMAND_SET, WORKFLOW_RETRY_BACKOFFS, WORKFLOW_RETRY_MIN_ATTEMPTS, WORKFLOW_RETRY_POLICY_KEYS, WORKFLOW_RETRY_MAX_ATTEMPTS, WORKFLOW_RETRY_ENGINE_KEYS, WORKFLOW_JOB_RESOURCES, WORKFLOW_SIDE_EFFECTS, WORKFLOW_MODEL_CLASSES, WORKFLOW_DEFAULT_TASK_CLASS_MAP, WORKFLOW_MODELS_MAX_CLASS_DEFAULT, WORKFLOW_AUTONOMY_NUMERIC_KEYS, WORKFLOW_AUTONOMY_ENVELOPE_KEYS, WORKFLOW_AUTONOMY_DEFAULTS, WORKFLOW_AUTONOMY_CEILINGS, WORKFLOW_AUTONOMY_MAX_RUNS_PER_HOUR_ENV, WORKFLOW_AUTONOMY_MAX_RUNS_PER_HOUR_CEILING, WORKFLOW_AUTONOMY_FORMS_DEFAULT, WORKFLOW_AUTONOMY_MIN_VALUE, WORKFLOW_JOB_RANGES, WORKFLOW_JOB_RANGE_MEMBERS, WORKFLOW_SINGLE_STEP_TYPES, WORKFLOW_HITL_ENTRY_TYPES, WORKFLOW_ARM_ENTRY_TYPES, WORKFLOW_HITL_ARM_CONTAINERS, WORKFLOW_GRAPH_ENTRY_STEP_KINDS, WORKFLOW_ARM_ENTRY_STEP_KINDS, WORKFLOW_BUDGET_MAX_DURATION_SECONDS, MODEL_ID_BYOK_PROVIDERS, MODEL_CLASS_REF_PREFIX, MODEL_SNAPSHOT_SUFFIX, REASONING_EFFORT_VALUES, IMPLICIT_MODEL_SELECTION_SOURCES, PLATFORM_FALLBACK_MODEL_SOURCE, AGENT_NAME_TOKEN, DEFAULT_PERSONA_GUIDE, PERSONAL_SPACE_STARTING_PERSONA, AGENT_LOG_SOURCES, AGENT_LOG_FIELDS_MAX_WIRE_KEYS, LOG_DRAIN_TYPES_PHASE1, LOG_DRAIN_TYPES_PHASE2, LOG_DRAIN_TYPES_IMPLEMENTED, LOG_DRAIN_SOURCES, LOG_DRAIN_MAX_PER_ORG, LOG_DRAIN_MAX_PER_ORG_ENTERPRISE, LOG_DRAIN_DATADOG_SITES, LOG_DRAIN_NEWRELIC_SITES, LOG_DRAIN_ENDPOINT_TEMPLATES, LOG_DRAIN_PRESET_SITES, LOG_DRAIN_BUCKET_NAME_PATTERN, LOG_DRAIN_BUCKET_HOST_PATTERNS, LOG_DRAIN_PRESET_HOST_SUFFIXES, DRAIN_CONTENT_ACK_ERROR_CODE, DRAIN_CONTENT_ACK_FIELD, DrainContentAckRequiredError, LOG_DRAIN_PRESET_PATHS, PRESET_SEGMENT_RE, LOG_DRAIN_QUOTAS, LOG_DRAIN_QUOTA_WARN_RATIO, LOG_DRAIN_QUOTA_DROP_DEBUG_RATIO, LOG_DRAIN_QUOTA_DROP_INFO_RATIO, LOG_DRAIN_QUOTA_PAUSE_RATIO, LOG_EXPORT_SOURCES, LOG_EXPORT_MAX_WINDOW_DAYS, LOG_EXPORT_MAX_WINDOW_MS, LOG_EXPORT_URL_TTL_SECONDS, LOG_EXPORT_FILE_RETENTION_DAYS, LOG_EXPORT_FILE_RETENTION_MS, LOG_EXPORT_PART_MAX_BYTES, LOG_DRAIN_NOTICE_RATE_LIMIT_MS, LOG_DRAIN_VERIFICATION_STALE_MS, LOG_DRAIN_DIGEST_INTERVAL_MS, LOG_DRAIN_DIGEST_MAX_ENTRIES, LOG_DRAIN_NOTICE_ERROR_MAX_CHARS, LOG_DRAIN_USAGE_LINE_ITEM, LOG_DRAIN_BYTES_PER_GIB, DEFAULT_LOG_DRAIN_PLAN_CONFIG, TIERS, LOG_CURSOR_MAX_LENGTH, LOG_CURSOR_MAX_ID_LENGTH, LOG_RELATIVE_TIME_PATTERN, LOG_ISO_TIME_PATTERN, RELATIVE_UNIT_MS, CORE_DRAINING_CODE, CORE_DRAINING_DEFAULT_RETRY_MS, CORE_DRAINING_MAX_RETRY_MS, VoiceNameSchema, PluginProviderSchema, RealtimeProviderSchema, PluginClassSchema, ModelDescriptorSchema, InferenceModelSchema, PluginModelSchema, RealtimeModelSchema, LuaVoiceModelSchema, TurnDetectionSchema, InterruptionSchema, BuiltinAudioClipSchema, AudioConfigSchema, BackgroundAudioEntrySchema, BackgroundAudioSchema, LuaVoiceConfigInnerSchema, LuaVoiceConfigSchema, LuaVoiceRefSchema, LUA_JOB_DEFAULT_TIMEOUT_SECONDS, LUA_JOB_MIN_TIMEOUT_SECONDS, LUA_JOB_MAX_TIMEOUT_SECONDS, KEYS, MAX_BODY_BYTES, MAX_ID_LENGTH, UTC_ISO, TEMPLATE_TRIGGER_URL_ENV_PREFIX, TEMPLATE_INSTALL_POLICY_PER_WORKSPACE_VALUES, SUBJECT_TYPES, SubjectTypeSchema, CREDENTIAL_TYPES, CredentialTypeSchema, DEVICE_OPERATIONS, DeviceOperationSchema, DEVICE_SCOPE_BY_OPERATION, DeviceBindingSchema, IdSchema, SESSION_AUTH_TIME_MAX_S, PrincipalDescriptorSchema, ActorDescriptorSchema, PrincipalOwnerSchema, CredentialLifecycleSchema, GeneralCredentialDescriptorSchema, DeviceCredentialDescriptorSchema, GeneralPrincipalContextSchema, DeviceCredentialPrincipalContextSchema, RawPrincipalContextSchema, PrincipalContextSchema, DeviceCredentialClaimSchema, LUA_CLIENT_HEADER, LUA_CLIENT_APPS, SEMVER_PATTERN, WEB_RELEASE_PATTERN, CLIENT_HEADER_PATTERN, LUA_SESSION_ID_CLAIM, SESSION_REVOKED_CODE, AUTHZ_PROJECTION_VERSION, ProjectedScopeSchema, DisplayRoleSchema, AuthorizationPrincipalSchema, CredentialContextSchema, ProjectionAnomalySchema, ProjectedOrgSchema, ProjectedResourceSchema, CapabilityProfilesSchema, RoleCatalogSchema, EffectiveAuthorizationSchema, ResourcePageSchema, SYSTEM_USER_PREFIX, WORKFLOW_RUN_IN_FLIGHT, WORKFLOW_RUN_IDLE, WORKFLOW_RUN_TERMINAL, WORKFLOW_RUN_STATUSES, WORKFLOW_RUN_GATE_KINDS, WORKFLOW_STEP_STATUSES, WORKFLOW_STEP_IN_FLIGHT, WORKFLOW_SIGNAL_EVENT_SITES, ARCHIVE_WINDOW_MARGIN_DAYS, WORKFLOW_ORG_PURGING_TTL_S, WORKFLOW_ORG_PURGE_FORCE_AFTER_MS, IDEMPOTENCY_HOLDING_STATUSES, WORKFLOW_SCHEDULED_RUN_ID_PREFIX, CLOUD_TASK_RUN_ID_PREFIX, WORKFLOW_SCHEDULE_KEY_MAX, WORKFLOW_SCHEDULE_IDEMPOTENCY_KEY_PREFIX, WORKFLOW_OPERATION_ID_PREFIX, WORKFLOW_CONNECTION_KEY_RE, WORKFLOW_JOB_MODEL_SOURCE_LABELS, WORKFLOW_SUSPEND_KINDS, WORKFLOW_RUN_NOTIFICATION_SUSPENDED_KINDS, WORKFLOW_SIGNAL_PAYLOAD_MAX_BYTES, WORKFLOW_SUSPEND_DEFAULT_TIMEOUT_HOURS, WORKFLOW_RESOLVE_OUTPUT_MAX_BYTES, SCHEDULE_HEALTH_NOTIFY_CHANNELS, SCHEDULE_HEALTH_DEFAULT_NOTIFY, SCHEDULE_HEALTH_LIMITS, KNOWN_KEYS, WORKFLOW_GOAL_JUDGE_SELF, APPROVAL_ARGS_MAX_CHARS, APPROVAL_ARG_STRING_MAX_CHARS, APPROVAL_ARGS_SUMMARY_MAX_CHARS, MAX_DEPTH, MAX_KEYS, MAX_ITEMS, MAX_NODES, MAX_KEY_CHARS, KEY_SCRUB_INPUT_MAX_CHARS, STRING_SCRUB_INPUT_MAX_CHARS, ELLIPSIS, SKIP, SCRUB_SECRETS_BEFORE_PERSIST_ENV, PERSIST_SCRUB_MAX_CHARS, PERSIST_SCRUB_REF_MAX_CHARS, WORKFLOW_AUDIT_EVENTS, WORKFLOW_AUDIT_METADATA_MAX_BYTES, INDENT, WRAP_WIDTH, NOUNS, GET_TOOL_NAMES, PREAMBLE, WORKFLOW_APPROVAL_OUTPUT_DECISIONS, WORKFLOW_APPROVAL_OUTPUT_SCHEMA, JSON_FENCE_RE, DEFAULT_ON_AGENT_FEATURES, SUBAGENT_PER_KEY_FLAG_ENV, PER_KEY_FLAG_VALUES, ONBOARDING_FLOW_KEY, ONBOARDING_SCHEMA_VERSION, id, copy, onboardingHeadingSchema, onboardingRichTextInlineSchema, onboardingRichTextSchema, onboardingDestinationSchema, onboardingArtworkSchema, onboardingAnswerSchema, onboardingQuestionSchema, onboardingTemplateSectionSchema, onboardingInstallScreenSchema, onboardingResultScreenSchema, onboardingConnectScreenSchema, onboardingTemplateContentSchema, onboardingUnavailableOutcomeSchema, onboardingFlowSchema, onboardingActorSchema, onboardingEditorSchema, onboardingPublicationSummarySchema, onboardingValidationIssueSchema, onboardingValidationResponseSchema, onboardingAssetSchema, onboardingPublicAssetSchema, getOnboardingConfigResponseSchema, saveOnboardingDraftRequestSchema, validateOnboardingRequestSchema, publishOnboardingRequestSchema, rollbackOnboardingRequestSchema, onboardingTemplateCatalogItemSchema, getPublishedOnboardingResponseSchema, WEB_ROUTE_PROTOCOL_VERSION, WEB_ROUTE_METHODS, WEB_ROUTE_REQUEST_HEADER_ALLOWLIST, WEB_ROUTE_RESPONSE_HEADER_ALLOWLIST, WEB_ROUTE_MAX_REQUEST_BODY_BYTES, WEB_ROUTE_MAX_RESPONSE_BYTES, WEB_APP_NAME_PATTERN, WEB_APP_ENTRY_HTML_MAX_CHARS, WEB_APP_MAX_ASSET_BYTES, EVIDENCE_SESSION_IDLE_MS, EVIDENCE_MIN_CONVERSATIONS, EVIDENCE_LOW_CONFIDENCE_N, EVIDENCE_SNIPPET_MAX_CHARS, EVIDENCE_EXAMPLES_PER_ITEM, EVIDENCE_SHOWN_ITEMS, EVIDENCE_LATENCY_BOUNDS_MS, EVIDENCE_WORD_BOUNDS, BAD_CONVERSATION_REASONS, ATTACHMENT_LINES, REVIEW_VERDICT_REASON_ORDER, ENV_TEMPLATE_SECRET_KEY_RE, CONNECTION_SEND_NOT_ALLOWED, CONNECTION_RECIPIENT_NOT_ALLOWED, NOT_SEND, PLAIN_ADDRESS, RecipientSet, MCP_MESSAGING_CREATE, MCP_CALENDAR_EVENT_WRITE, REPLY_KEYS, DEDICATED_MAIL_SLUGS, FULL_SUITE_SLUGS, WELL_KNOWN_MAIL_FOLDERS, MEMBER_KEYS, CANONICAL_ORIGIN, CANONICAL_PREFIX, STRICT_BASE64, GMAIL_PREFIX, GMAIL_MESSAGES_SEND, GMAIL_DRAFTS_SEND, GOOGLE_BATCH, GRAPH_VERSION, GRAPH_PRINCIPAL, GRAPH_SEND_MAIL, GRAPH_MESSAGE_ACTION, GRAPH_OWNER, GRAPH_EVENTS, GRAPH_EVENT_COLLECTION, GRAPH_EVENT_ID, GRAPH_EVENT_ITEM, GRAPH_EVENT_ACTION, GRAPH_BATCH, GRAPH_TEAMS_MESSAGE, GRAPH_ACTIVITY_NOTIFICATION, GRAPH_GROUP_CONVERSATION, GCAL_EVENTS, GRAPH_READ_KEYS, MALFORMED_POLICY, BILLING_REJECTION_TEXT_CREDITS, BILLING_REJECTION_TEXT_SEAT, BILLING_REJECTION_TEXT_USER_QUOTA;
5919
5994
  var init_dist = __esm({
5920
5995
  "../shared-types/dist/index.mjs"() {
5921
5996
  "use strict";
@@ -6119,7 +6194,19 @@ var init_dist = __esm({
6119
6194
  * SV — `Agents.notifyOwner(id, { message })`: post a message (no model turn) to the TARGET OWNER's home thread with
6120
6195
  * the caller. Needs the owner's opt-in recorded on the grant (`ownerNotify`) and `LUA_SUPERVISION_OWNER_NOTIFY_ENABLED`.
6121
6196
  */
6122
- "owner.notify": "observe"
6197
+ "owner.notify": "observe",
6198
+ /**
6199
+ * SV — `Agents.connections(id).assign(connectionId, { approval })`: mount one of the target OWNER's personal
6200
+ * connections on the target, consented by the owner's own signed-in decision on Lua's approval card
6201
+ * (`supervised-connection-handover.types.ts`). Needs `LUA_SUPERVISED_CONNECTION_HANDOVER_ENABLED`.
6202
+ */
6203
+ "connections.assign": "act",
6204
+ /**
6205
+ * SV — `Agents.secrets(id).attach(requestIds)`: attach U9 requests HELD for this existing agent (`{ pendingFor,
6206
+ * agentId }`) to its env. `act`, on a turn whose platform-picked user is the target's owner, never overwriting a
6207
+ * key (`LUA_SECRET_ATTACH_EXISTING_ENABLED`).
6208
+ */
6209
+ "secrets.attach": "act"
6123
6210
  };
6124
6211
  __name(isSupervisionOp, "isSupervisionOp");
6125
6212
  __name3(isSupervisionOp, "isSupervisionOp");
@@ -6285,6 +6372,18 @@ var init_dist = __esm({
6285
6372
  gate: "observe",
6286
6373
  targeted: true,
6287
6374
  item: "SV"
6375
+ },
6376
+ /** SV — `Agents.connections(id).assign(connectionId, { approval })` (the owner's signed-in approval). */
6377
+ "connections.assign": {
6378
+ gate: "act",
6379
+ targeted: true,
6380
+ item: "SV"
6381
+ },
6382
+ /** SV — `Agents.secrets(id).attach(requestIds)`: held U9 requests onto an existing agent (owner's turn). */
6383
+ "secrets.attach": {
6384
+ gate: "act",
6385
+ targeted: true,
6386
+ item: "SV"
6288
6387
  }
6289
6388
  };
6290
6389
  SUPERVISION_UNTARGETED_OPS = [
@@ -6324,6 +6423,7 @@ var init_dist = __esm({
6324
6423
  nameMax: 80,
6325
6424
  personaMax: 2e4,
6326
6425
  connectionsMax: 20,
6426
+ pendingSecretsMax: 20,
6327
6427
  maxAgentsPerUserCeiling: 50
6328
6428
  };
6329
6429
  AGENT_PROVISIONING_APPROVAL_PAYLOAD_KEY = "agentProvisioning";
@@ -6337,8 +6437,13 @@ var init_dist = __esm({
6337
6437
  MODEL_NOT_ALLOWED: "agent_provisioning_model_not_allowed",
6338
6438
  ACTIONS_NOT_ALLOWED: "agent_provisioning_actions_not_allowed",
6339
6439
  WORKFLOW_IDS_INVALID: "agent_provisioning_workflow_ids_invalid",
6340
- /** Until U9 lands, a non-empty `pendingSecretRequestIds` is refused with this code. */
6440
+ /** A non-empty `pendingSecretRequestIds` while `LUA_SECRET_REQUESTS_ENABLED` is off (or over the limit). */
6341
6441
  PENDING_SECRETS_UNSUPPORTED: "agent_provisioning_pending_secrets_unsupported",
6442
+ /**
6443
+ * A pending secret request is not attachable to this create (unknown, another org / member / provisioner,
6444
+ * not `ok`-tested, already attached or purged). Checked before the agent exists.
6445
+ */
6446
+ PENDING_SECRET_NOT_ATTACHABLE: "agent_provisioning_pending_secret_not_attachable",
6342
6447
  /** The `Agents.create` input is malformed (name, model, persona, list shapes or limits). */
6343
6448
  INVALID_INPUT: "agent_provisioning_invalid_input",
6344
6449
  /** `PUT …/agent-provisioning-policy` body is malformed (`*`, unknown action, out-of-range quota…). */
@@ -6710,7 +6815,13 @@ var init_dist = __esm({
6710
6815
  /** The input's `fields` do not match the provider's catalogue bundle. */
6711
6816
  FIELDS_INVALID: "secret_fields_invalid",
6712
6817
  /** `Secrets.test(key)` / status on a key with no request on record (the provider is unknown). */
6713
- KEY_NOT_FOUND: "secret_key_not_found"
6818
+ KEY_NOT_FOUND: "secret_key_not_found",
6819
+ /** A held request for an existing agent while `LUA_SECRET_ATTACH_EXISTING_ENABLED` is off. */
6820
+ ATTACH_EXISTING_DISABLED: "secret_attach_existing_disabled",
6821
+ /** `secrets.attach` would set an env key the agent already has: never overwritten (remove or rotate it first). */
6822
+ KEY_EXISTS: "secret_key_exists",
6823
+ /** A request held for an existing agent submitted on the public token page: its owner submits it signed in. */
6824
+ OWNER_SUBMIT_REQUIRED: "secret_submit_requires_owner"
6714
6825
  };
6715
6826
  SECRET_OUTCOME_STATUSES = [
6716
6827
  ...SECRET_TEST_RESULTS,
@@ -7070,6 +7181,41 @@ var init_dist = __esm({
7070
7181
  __name3(sameSupervisionAccessFields, "sameSupervisionAccessFields");
7071
7182
  __name(supervisionAccessBindingViolation, "supervisionAccessBindingViolation");
7072
7183
  __name3(supervisionAccessBindingViolation, "supervisionAccessBindingViolation");
7184
+ CONNECTION_HANDOVER_APPROVAL_PAYLOAD_KEY = "connectionAssignment";
7185
+ CONNECTION_HANDOVER_APPROVAL_CARD_MAX_CHARS = 1200;
7186
+ CONNECTION_HANDOVER_LIMITS = {
7187
+ idMax: 128,
7188
+ agentNameMax: 200,
7189
+ integrationMax: 60,
7190
+ accountMax: 200
7191
+ };
7192
+ MEMBERS = [
7193
+ "connectionId",
7194
+ "agentId",
7195
+ "agentName",
7196
+ "supervisorName",
7197
+ "integration",
7198
+ "account"
7199
+ ];
7200
+ FORMAT_CHARS = /[\p{Cf}\u200b-\u200d\u202a-\u202e\u2066-\u2069\ufeff]/u;
7201
+ __name(hasFormatCharacters, "hasFormatCharacters");
7202
+ __name3(hasFormatCharacters, "hasFormatCharacters");
7203
+ oneLine = /* @__PURE__ */ __name3((text) => text.replace(/[\u0000-\u001f\u007f-\u009f\u2028\u2029"\u201c\u201d]/g, " ").replace(/\s+/g, " ").trim(), "oneLine");
7204
+ __name(normalizedHandoverName, "normalizedHandoverName");
7205
+ __name3(normalizedHandoverName, "normalizedHandoverName");
7206
+ __name(handoverAgentIdSuffix, "handoverAgentIdSuffix");
7207
+ __name3(handoverAgentIdSuffix, "handoverAgentIdSuffix");
7208
+ boundedString = /* @__PURE__ */ __name3((v, max) => typeof v === "string" && v.trim().length > 0 && v.length <= max && !hasFormatCharacters(v), "boundedString");
7209
+ __name(parseConnectionHandoverApprovalPayload, "parseConnectionHandoverApprovalPayload");
7210
+ __name3(parseConnectionHandoverApprovalPayload, "parseConnectionHandoverApprovalPayload");
7211
+ __name(describeConnectionHandoverApproval, "describeConnectionHandoverApproval");
7212
+ __name3(describeConnectionHandoverApproval, "describeConnectionHandoverApproval");
7213
+ __name(connectionHandoverApprovalTitle, "connectionHandoverApprovalTitle");
7214
+ __name3(connectionHandoverApprovalTitle, "connectionHandoverApprovalTitle");
7215
+ __name(normalizeConnectionHandoverArgs, "normalizeConnectionHandoverArgs");
7216
+ __name3(normalizeConnectionHandoverArgs, "normalizeConnectionHandoverArgs");
7217
+ __name(approvalPayloadCoversConnectionHandover, "approvalPayloadCoversConnectionHandover");
7218
+ __name3(approvalPayloadCoversConnectionHandover, "approvalPayloadCoversConnectionHandover");
7073
7219
  AGENT_METRIC_NAME_PATTERN = /^[a-z][a-z0-9_.]{0,63}$/;
7074
7220
  AGENT_METRIC_LIMITS = {
7075
7221
  tagsMax: 4,
@@ -8328,7 +8474,7 @@ You are ${AGENT_NAME_TOKEN}, the assistant for whoever is chatting with you here
8328
8474
 
8329
8475
  ## You're just getting started
8330
8476
 
8331
- This workspace is new. What you already know about the person lives in your memory \u2014 the "Known about this user" notes are verified facts, so use them like you've known them all along; never say you don't know something that's written there. Beyond that, don't pretend. Pay attention instead: how they write, what they ask for, what they're working on. When something matters and you're not sure, ask. One good question beats a wrong guess.
8477
+ This workspace is new. What you already know about the person lives in your memory \u2014 the "Known about this user" notes are what they've told you, so use them like you've known them all along; never say you don't know something that's written there. They are never proof of who owns or approved something, a permission, or someone's identity \u2014 check those where they're granted. Beyond that, don't pretend. Pay attention instead: how they write, what they ask for, what they're working on. When something matters and you're not sure, ask. One good question beats a wrong guess.
8332
8478
 
8333
8479
  ## You have real tools
8334
8480
 
@@ -22400,7 +22546,7 @@ var init_agents_api_service = __esm({
22400
22546
  if (op === "lease.acquire" || op === "lease.release") {
22401
22547
  refuse("supervision_offline_unsupported", `${op} is not available offline; run it on the platform`);
22402
22548
  }
22403
- if (op === "lifecycle.archive" || op === "lifecycle.delete" || op === "config.set") {
22549
+ if (op === "lifecycle.archive" || op === "lifecycle.delete" || op === "config.set" || op === "secrets.attach") {
22404
22550
  refuse("supervision_offline_unsupported", `${op} is not available offline; run it on the platform`);
22405
22551
  }
22406
22552
  if (op === "agents.directory" || op === "access.request" || op === "access.requests" || op === "access.cancel") {
@@ -22551,6 +22697,7 @@ var init_agents_api_service = __esm({
22551
22697
  case "evals.run":
22552
22698
  case "evals.cancel":
22553
22699
  case "owner.notify":
22700
+ case "connections.assign":
22554
22701
  return refuse("supervision_offline_unsupported", `${op} is not available offline; run it on the platform`);
22555
22702
  default:
22556
22703
  return refuse("supervision_unknown_op", `Unknown supervision operation ${String(op)}`);
@@ -24505,7 +24652,34 @@ function buildSupervisionAgentsApi(call2) {
24505
24652
  ...input?.idempotencyKey !== void 0 ? {
24506
24653
  idempotencyKey: input.idempotencyKey
24507
24654
  } : {}
24508
- }), "notifyOwner")
24655
+ }), "notifyOwner"),
24656
+ // SV — the target OWNER hands it one of their personal connections (their signed-in approval, `act`).
24657
+ /**
24658
+ * Mount one of the OWNER's own personal connections on `agentId`. The owner consents on Lua's approval card in
24659
+ * their own signed-in session: suspend YOUR run (started by the owner) on
24660
+ * `.approval(step, { approver: 'creator', title })` with the payload exactly
24661
+ * `{ connectionAssignment: { connectionId, agentId, agentName, supervisorName, integration, account } }` and `title`
24662
+ * exactly `Give your <integration> connection to "<agentName>"?`, then call this from a code step of THAT run with
24663
+ * `{ approval: { runId, stepId } }`. Needs an `act` grant on the agent.
24664
+ */
24665
+ connections: /* @__PURE__ */ __name2((agentId) => ({
24666
+ assign: /* @__PURE__ */ __name2((connectionId, opts) => call2("connections.assign", agentId, {
24667
+ connectionId,
24668
+ approval: opts?.approval && typeof opts.approval === "object" ? {
24669
+ ...opts.approval
24670
+ } : opts?.approval
24671
+ }), "assign")
24672
+ }), "connections"),
24673
+ // SV — held U9 secret requests (`Secrets.request({ target: { pendingFor, agentId } })`) onto an EXISTING agent.
24674
+ /**
24675
+ * Attach requests held for `agentId` to its env (`act`, on the agent owner's own turn; never overwrites a key).
24676
+ * Answers the env keys set, never a value.
24677
+ */
24678
+ secrets: /* @__PURE__ */ __name2((agentId) => ({
24679
+ attach: /* @__PURE__ */ __name2((requestIds) => call2("secrets.attach", agentId, {
24680
+ requestIds: copyList(requestIds)
24681
+ }), "attach")
24682
+ }), "secrets")
24509
24683
  };
24510
24684
  }
24511
24685
  __name(buildSupervisionAgentsApi, "buildSupervisionAgentsApi");
@@ -24838,6 +25012,7 @@ var LuaWebhook = class {
24838
25012
  headerSchema;
24839
25013
  bodySchema;
24840
25014
  secret;
25015
+ enforceSchemas;
24841
25016
  executeFunction;
24842
25017
  /**
24843
25018
  * Creates a new LuaWebhook instance.
@@ -24848,6 +25023,7 @@ var LuaWebhook = class {
24848
25023
  * @param config.querySchema - Optional Zod schema for query parameter validation
24849
25024
  * @param config.headerSchema - Optional Zod schema for header validation
24850
25025
  * @param config.bodySchema - Optional Zod schema for body validation
25026
+ * @param config.enforceSchemas - Reject schema-violating requests with HTTP 400 (default: log a warning only)
24851
25027
  * @param config.execute - Function that processes the webhook request
24852
25028
  */
24853
25029
  constructor(config) {
@@ -24860,6 +25036,7 @@ var LuaWebhook = class {
24860
25036
  this.headerSchema = config.headerSchema;
24861
25037
  this.bodySchema = config.bodySchema;
24862
25038
  this.secret = config.secret;
25039
+ this.enforceSchemas = config.enforceSchemas;
24863
25040
  this.executeFunction = config.execute;
24864
25041
  }
24865
25042
  /**