@wayai/cli 0.3.170 → 0.3.171

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
@@ -4776,6 +4776,11 @@ function readAgentSettingsModel(agentSettings) {
4776
4776
  const model = settings.model;
4777
4777
  return typeof model === "string" ? model : null;
4778
4778
  }
4779
+ function catalogToolSideEffects(toolName) {
4780
+ const sideEffects = CATALOG_SIDE_EFFECTS.get(toolName);
4781
+ if (sideEffects === void 0) return "unknown";
4782
+ return sideEffects ? "side_effects" : "none";
4783
+ }
4779
4784
  function resolveMonitorTrigger(monitorConfig) {
4780
4785
  if (!monitorConfig || typeof monitorConfig !== "object") return "idle";
4781
4786
  const raw = monitorConfig.trigger;
@@ -4800,6 +4805,60 @@ function monitorRuleKeysOffTrigger(monitorConfig) {
4800
4805
  const config = monitorConfig;
4801
4806
  return MONITOR_RULE_KEYS.filter((key) => config[key] !== void 0);
4802
4807
  }
4808
+ function monitorCallKeysOffTrigger(monitorConfig) {
4809
+ if (!monitorConfig || typeof monitorConfig !== "object") return [];
4810
+ if (resolveMonitorTrigger(monitorConfig) === "call_utterance") return [];
4811
+ const config = monitorConfig;
4812
+ return MONITOR_CALL_KEYS.filter((key) => config[key] !== void 0);
4813
+ }
4814
+ function callUtteranceConfidenceConditions(rule) {
4815
+ if (!rule || typeof rule !== "object" || Array.isArray(rule)) return [];
4816
+ const when = rule.when;
4817
+ if (!Array.isArray(when)) return [];
4818
+ return when.filter(isConfidenceCondition);
4819
+ }
4820
+ function isConfidenceCondition(condition) {
4821
+ if (!condition || typeof condition !== "object" || Array.isArray(condition)) return false;
4822
+ const { variable, operator, value } = condition;
4823
+ if (typeof variable !== "string" || variable.length <= CONFIDENCE_VARIABLE_SUFFIX.length) return false;
4824
+ if (!variable.endsWith(CONFIDENCE_VARIABLE_SUFFIX)) return false;
4825
+ const bar = numericBar(value);
4826
+ if (bar === null || bar < CALL_STEERING_MIN_CONFIDENCE) return false;
4827
+ if (operator === ">=") return bar <= 1;
4828
+ if (operator === ">") return bar < 1;
4829
+ return false;
4830
+ }
4831
+ function numericBar(value) {
4832
+ if (typeof value === "number") return Number.isFinite(value) ? value : null;
4833
+ if (typeof value !== "string" || value.trim() === "") return null;
4834
+ const parsed = Number(value);
4835
+ return Number.isFinite(parsed) ? parsed : null;
4836
+ }
4837
+ function callUtteranceRuleIssues(monitorConfig) {
4838
+ if (!monitorConfig || typeof monitorConfig !== "object") return [];
4839
+ if (resolveMonitorTrigger(monitorConfig) !== "call_utterance") return [];
4840
+ const config = monitorConfig;
4841
+ const issues = [];
4842
+ if (config.fallback !== void 0) {
4843
+ issues.push({ path: ["fallback"], message: CALL_UTTERANCE_FALLBACK_MESSAGE });
4844
+ }
4845
+ if (Array.isArray(config.flag_conditions) && config.flag_conditions.length > 0) {
4846
+ issues.push({ path: ["flag_conditions"], message: CALL_UTTERANCE_FLAG_CONDITIONS_MESSAGE });
4847
+ }
4848
+ if (Array.isArray(config.rules)) {
4849
+ config.rules.forEach((rule, index) => {
4850
+ if (callUtteranceConfidenceConditions(rule).length === 0) {
4851
+ issues.push({ path: ["rules", index, "when"], message: CALL_UTTERANCE_RULE_NOT_CONFIDENT_MESSAGE });
4852
+ }
4853
+ const action = rule && typeof rule === "object" ? rule.action : void 0;
4854
+ const { kind, note } = action && typeof action === "object" ? action : {};
4855
+ if (kind === "steer" && typeof note === "string" && note.trim() === "") {
4856
+ issues.push({ path: ["rules", index, "action", "note"], message: CALL_STEER_NOTE_BLANK_MESSAGE });
4857
+ }
4858
+ });
4859
+ }
4860
+ return issues;
4861
+ }
4803
4862
  function monitorRulesStructuredOutputMessage(trigger) {
4804
4863
  const [article, consequence] = trigger === "assistant_reply" ? ["an", "every reply is delivered unjudged"] : ["a", "none of their actions runs"];
4805
4864
  return `${article} ${trigger} monitor with rules needs structured output: its rules read variables only a JSON answer carries, so on text output no rule can match and ${consequence}. Set response_format to json_schema (wayai push), or remove the rules.`;
@@ -4826,19 +4885,31 @@ function decodedMonitorConfig(value) {
4826
4885
  }
4827
4886
  }
4828
4887
  function monitorRuleActionKinds(trigger) {
4829
- return trigger === "assistant_reply" ? MONITOR_ASSISTANT_REPLY_ACTION_KINDS : MONITOR_USER_MESSAGE_ACTION_KINDS;
4888
+ if (trigger === "assistant_reply") return MONITOR_ASSISTANT_REPLY_ACTION_KINDS;
4889
+ if (trigger === "call_utterance") return MONITOR_CALL_UTTERANCE_ACTION_KINDS;
4890
+ return MONITOR_USER_MESSAGE_ACTION_KINDS;
4830
4891
  }
4831
4892
  function monitorActionKindMessage(kind, trigger) {
4832
4893
  const allowed = monitorRuleActionKinds(trigger).join(", ");
4833
4894
  if (trigger === "assistant_reply") {
4834
4895
  return `an assistant_reply rule cannot select "${kind}". Use one of: ${allowed}.`;
4835
4896
  }
4897
+ if (trigger === "call_utterance") {
4898
+ return `a call_utterance rule cannot select "${kind}": there is no drafted reply on a live call. Use one of: ${allowed}.`;
4899
+ }
4900
+ if (kind === "steer") {
4901
+ return `a monitor rule cannot select "steer": it speaks to a live call's voice, so only a call_utterance monitor can steer. Use one of: ${allowed}.`;
4902
+ }
4836
4903
  return `a monitor rule cannot select "${kind}": it acts before the reply exists. Use one of: ${allowed}.`;
4837
4904
  }
4838
4905
  function monitorRuleReentryTrack(toolName) {
4839
4906
  return MONITOR_RULE_REENTRY_TRACKS.get(toolName);
4840
4907
  }
4841
4908
  function monitorRuleToolNotAllowedMessage(toolName, trigger) {
4909
+ if (trigger === "call_utterance") {
4910
+ const callable2 = MONITOR_RULE_ALLOWED_NATIVE_TOOLS.filter((name) => !isCallRefusedToolName(name));
4911
+ return `a call_utterance rule cannot call "${toolName}": it acts on a live call without the caller confirming anything, so it may call only a tool with no side effects \u2014 ${callable2.join(", ")}, or this hub's own HTTP tools that only read (GET, HEAD or OPTIONS). MCP tools, and tools whose effects are unknown, are refused.`;
4912
+ }
4842
4913
  if (trigger === "assistant_reply" && isReplyGateRefusedToolName(toolName)) {
4843
4914
  return `an assistant_reply rule cannot call "${toolName}": the reply already exists when this monitor runs, so there is no turn left for it to act on. Put it on a user_message monitor instead, which runs before the answering agent.`;
4844
4915
  }
@@ -4848,9 +4919,13 @@ function monitorRuleToolNotAllowedMessage(toolName, trigger) {
4848
4919
  function isReplyGateRefusedToolName(toolName) {
4849
4920
  return monitorRuleReentryTrack(toolName) === "agent" || toolName === INSERT_NOTE_TOOL_NAME;
4850
4921
  }
4922
+ function isCallRefusedToolName(toolName) {
4923
+ return toolName === INSERT_NOTE_TOOL_NAME || catalogToolSideEffects(toolName) !== "none";
4924
+ }
4851
4925
  function isRefusedNativeToolName(toolName, trigger) {
4852
4926
  if (!NATIVE_TOOL_NAMES.has(toolName)) return false;
4853
4927
  if (!MONITOR_RULE_ALLOWED_NATIVE_TOOLS.includes(toolName)) return true;
4928
+ if (trigger === "call_utterance") return isCallRefusedToolName(toolName);
4854
4929
  return trigger === "assistant_reply" && isReplyGateRefusedToolName(toolName);
4855
4930
  }
4856
4931
  function monitorRuleActions(monitorConfig) {
@@ -4875,8 +4950,9 @@ function collectMonitorRuleIssues(monitorConfig) {
4875
4950
  if (offTrigger.length > 0) return offTrigger;
4876
4951
  const trigger = resolveMonitorTrigger(monitorConfig);
4877
4952
  const kinds = monitorRuleActionKinds(trigger);
4878
- const issues = [];
4953
+ const issues = callUtteranceRuleIssues(monitorConfig);
4879
4954
  for (const { action, path: path35 } of monitorRuleActions(monitorConfig)) {
4955
+ if (trigger === "call_utterance" && path35[0] === "fallback") continue;
4880
4956
  const kind = action.kind;
4881
4957
  if (typeof kind === "string" && !kinds.includes(kind)) {
4882
4958
  issues.push({ path: [...path35, "kind"], message: monitorActionKindMessage(kind, trigger) });
@@ -5802,8 +5878,12 @@ function refineHubAsCodeMonitorConfig(config, ctx) {
5802
5878
  message: MONITOR_INPUT_SHAPING_IDLE_MESSAGE
5803
5879
  });
5804
5880
  }
5881
+ for (const key of monitorCallKeysOffTrigger(monitorConfig)) {
5882
+ ctx.addIssue({ code: external_exports.ZodIssueCode.custom, path: [...basePath, key], message: MONITOR_CALL_KEY_MESSAGE });
5883
+ }
5805
5884
  checkKeyValues(MONITOR_INPUT_SHAPING_KEYS, MONITOR_INPUT_SHAPING_SCHEMAS);
5806
5885
  checkKeyValues(MONITOR_RULE_KEYS, MONITOR_RULE_SCHEMAS);
5886
+ checkKeyValues(MONITOR_CALL_KEYS, MONITOR_CALL_SCHEMAS);
5807
5887
  for (const issue of collectMonitorRuleIssues(monitorConfig)) {
5808
5888
  ctx.addIssue({
5809
5889
  code: external_exports.ZodIssueCode.custom,
@@ -5854,18 +5934,7 @@ function refineHubAsCodeMonitorRulesOutput(config, ctx) {
5854
5934
  }
5855
5935
  });
5856
5936
  }
5857
- function parseVoiceCallsOrgAllowlist(raw) {
5858
- if (typeof raw !== "string") return [];
5859
- let value;
5860
- try {
5861
- value = JSON.parse(raw);
5862
- } catch {
5863
- return [];
5864
- }
5865
- const parsed = voiceCallsOrgAllowlistSchema.safeParse(value);
5866
- return parsed.success ? parsed.data : [];
5867
- }
5868
- var uuidSchema, paginationSchema, timestampSchema, idParamSchema, clientOptionalString, clientOptionalBoolean, clientOptionalNumber, messageAttachment, MAX_MESSAGE_BODY_BYTES, MAX_ATTACHMENTS_PER_MESSAGE, MAX_AUDIO_FILE_BASE64_BYTES, primaryRegionSchema, placementSourceSchema, orgIdParam, orgAdminIdParam, createOrganizationBody, updateOrganizationBody, addOrgAdminBody, AUTH_TYPE, ORG_CREDENTIAL_AUTH_TYPES, AUTH_TYPE_DISPLAY, LEGACY_AUTH_TYPE_MAP, VALID_AUTH_TYPES, AGENT_ROLES, SAFE_USER_ID_REGEX, SUPPORTED_LOCALES, SUMMARIZATION_THRESHOLD_MIN, SUMMARIZATION_THRESHOLD_MAX, PREVIOUS_CONVERSATIONS_MAX, FLAG_CONDITION_OPERATORS, DECISION_SCORE_MIN_LEVELS, DECISION_SCORE_MAX_LEVELS, DECISIONS_MODEL_PREFIXES, DECISION_CAPABLE_AGENT_ROLES, NATIVE_TOOL_SCHEMAS, WAYAI_CONNECTOR, BASE_NATIVE_TOOLS, NATIVE_TOOLS, NATIVE_TOOL_NAMES, previousConversationsCountField, summarizationThresholdField, flagConditionSchema, MONITOR_TRIGGERS, monitorTriggerSchema, MONITOR_FIRING_TRIGGERS, MONITOR_DELAY_SECONDS_MIN, MONITOR_IDLE_DELAY_REQUIRED_MESSAGE, MONITOR_HISTORY_MESSAGES_MAX, monitorHistoryMessagesSchema, monitorIncludeToolResultsSchema, MONITOR_INPUT_SHAPING_KEYS, MONITOR_INPUT_SHAPING_SCHEMAS, MONITOR_INPUT_SHAPING_IDLE_MESSAGE, monitorArgumentSourceSchema, MONITOR_NOTE_TEMPLATE_MAX, monitorActionSchema, monitorRuleSchema, MONITOR_RULE_KEYS, MONITOR_RULE_SCHEMAS, MONITOR_RULE_TRIGGERS, MONITOR_RULE_TRIGGER_MESSAGE, MONITOR_USER_MESSAGE_ACTION_KINDS, MONITOR_ASSISTANT_REPLY_ACTION_KINDS, INSERT_NOTE_TOOL_NAME, RUN_MONITOR_TOOL_NAME, MONITOR_RULE_ALLOWED_NATIVE_TOOLS, MONITOR_RULE_REENTRY_TOOLS, MONITOR_RULE_REENTRY_TRACKS, monitorConfigField, flagConditionsField, agentIdParam, listAgentsQuery, agentConnectionsQuery, createAgentBody, updateAgentBody, AGENT_PARAMETER_TYPES, AGENT_PARAMETER_NAME_REGEX, agentParameterCreateSchema, MAX_AGENT_PARAMETERS_PER_REQUEST, createAgentParametersBody, SLUG_REGEX, slugSchema, INVISIBLE_NAME_CHARS, MAX_KANBAN_STATUSES, MAX_FOLLOWUPS_PER_STATUS, MAX_LANES, MAX_ADDITIONAL_CONTEXT_SCHEMA_BYTES, RESERVED_TEMPLATE_DUMP_NAME, kanbanStatusSlugSchema, followupTypeSchema, EVENT_RELATIVE_FOLLOWUP_TYPES, followupTimeUnitSchema, followupIdSchema, SELECTABLE_FOLLOWUP_TYPES, MAX_LINKED_FOLLOWUP_TARGETS_PER_STATUS, followupSchema, MAX_OUTCOMES_PER_STATUS, kanbanOutcomeSchema, EXCLUSIVE_FLAG_PAIRS, kanbanStatusSchema, kanbanStatusesArraySchema, laneSchema, lanesArraySchema, hubIdParam, hubAdminIdParam, hubUserIdParam, hubIdentityIdParam, hubTeamIdParam, hubTeamUserDeleteParam, hubSchemaQuery, PREVIEW_LABEL_MAX_LENGTH, MAX_ENDED_INDEX_RETENTION_DAYS, MAX_EVAL_RETENTION_DAYS, previewLabelField, createHubBody, updateHubBody, addHubAdminBody, addHubIdentityAuthorizationBody, contactDecisionBody, approveContactBody, listContactAccessQuery, createHubTeamBody, updateHubTeamBody, addHubTeamUserBody, reassignHubUserBody, replicatePreviewBody, updateChannelTestIdentitiesBody, claimCodeChannelParam, claimCodeDeleteParam, connectionIdParam, connectorIdParam, listConnectionsQuery, deleteConnectionQuery, addConnectionBody, editConnectionBody, PRODUCTION_DIRECT_FIELDS, setProductionCredentialBody, registerWhatsappQuery, registerWhatsappBody, retryProvisioningQuery, resendDomainStatusQuery, PLACEHOLDER_TOKENS, ALLOWED_TYPES, SUBSCHEMA_OBJECT_KEYWORDS, SUBSCHEMA_LIST_KEYWORDS, SUBSCHEMA_MAP_KEYWORDS, MAX_SCHEMA_DEPTH, toolIdParam, listToolsQuery, toolAgentQuery, deleteToolQuery, toolConnectionsQuery, nativeToolIdSchema, CONTEXT_BOUNDARIES, contextBoundarySchema, addNativeToolBody, addMcpToolBody, createCustomToolBody, updateCustomToolBody, updateToolExecutionConfigBody, initialValueCreateSchema, initialValueUpdateSchema, stateIdParam, listStatesQuery, stateNameSchema, createStateBody, updateStateBody, reorderStatesBody, variantAiModeSchema, experimentStatusSchema, overlayUpdateSchema, experimentIdParam, variantIdParam, listExperimentsQuery, listVariantsQuery, listOverridesQuery, deleteOverrideQuery, createExperimentBody, updateExperimentBody, setExperimentStatusBody, createVariantBody, updateVariantBody, upsertOverrideBody, orgTagIdParam, listOrgTagsQuery, ORG_TAG_NAME_REGEX, ORG_TAG_NAME_MAX_LENGTH, createOrgTagBody, updateOrgTagBody, orgCredentialIdParam, listOrgCredentialsQuery, createOrgCredentialBody, updateOrgCredentialBody, BASE_CREDENTIAL_MANAGED_BY, BASE_CREDENTIAL_NAME_MAX, baseCredentialNameSchema, createBaseCredentialLinkBody, baseCredentialLinkParams, baseCredentialLinkQuery, orgResourceIdParam, orgResourceFileIdParam, orgResourceFolderIdParam, hubOrgResourceParam, listOrgResourcesQuery, orgIdQuery, createOrgResourceBody, updateOrgResourceBody, createOrgResourceFolderBody, updateOrgResourceFolderBody, uploadOrgResourceFileBody, updateOrgResourceFileBody, uploadOrgSkillZipBody, linkOrgResourceBody, resourceIdParam, listResourcesQuery, createResourceBody, updateResourceBody, syncSkillsBody, resourceFileIdParam, listResourceFilesQuery, createResourceFileBody, updateResourceFileBody, uploadResourceFileBody, uploadSkillZipBody, resourceFolderIdParam, listResourceFoldersQuery, createResourceFolderBody, updateResourceFolderBody, agentResourceQuery, hubResourceQuery, linkAgentResourceBody, updateAgentResourceBody, unlinkAgentResourceQuery, navItemSchema, hubCountResetBody, navItemCountResetBody, typingBody, analyticsHubIdParam, analyticsVariableIdParam, updateVariablePinBody, updateAnalyticsViewBody, NUMERIC_FILTER_OPS, TEXT_FILTER_OPS, CATEGORICAL_FILTER_OPS, VARIABLE_FILTER_OPS, STRUCTURED_QUERY_OPS, STRUCTURED_QUERY_AGGREGATIONS, filterValueSchema, conversationsBody, analyticsConversationIdParam, messagesQuery, conversationDetailDataQuery, analyticsDataBody, structuredQueryBody, analyticsSqlBody, analyticsSqlTable, analyticsSqlSchemaQuery, EVAL_PACING_PRESET_NAMES, PACING_INTERVAL_MIN_MS, PACING_INTERVAL_MAX_MS, EVAL_MAX_RUNS_PER_SCENARIO, EVAL_RUN_DEADLINE_MIN_MS, EVAL_RUN_DEADLINE_MAX_MS, ISO_UTC_RE, paginationSchema2, evalIdParam, sessionIdParam, scenarioSetIdParam, hubIdQuery, evalDateContextSchema, EVAL_FIXTURE_NAME_MAX_LENGTH, evalFixtureOverrideSchema, runSessionQuery, runJourneyQuery, EVAL_INPUT_ROLES, EVAL_INPUT_ROLE_LIST, ROLE_ECHO_MAX, EVAL_INITIAL_STATE_SCOPES, MAX_INITIAL_STATE_ENTRIES, evalInitialStateEntry, createEvalBody, updateEvalBody, EVAL_LIST_MAX_LIMIT, evalListLimit, getEvalsQuery, toggleEvalBody, bulkToggleEvalsBody, pacingConfigSchema, EVAL_MAX_SELECTED_SCENARIOS, evalScenarioSelectionEntrySchema, evalScenarioSelectionSchema, sessionConfigSchema, createSessionBody, getSessionsQuery, getSessionResultsQuery, getSessionRunsQuery, evalAnalyticsQuery, getSessionCostQuery, compareSessionsQuery, evalsSqlBody, evalsSqlSchemaQuery, exportResultsQuery, validateEvalBody, hubAgentsQuery, createScenarioSetBody, updateScenarioSetBody, scenarioSetsHubQuery, createScenarioFromConversationBody, createJourneyFromConversationBody, EVAL_ATTACHMENT_HASH_REGEX, evalAttachmentRef, turnMayCarryAttachments, ATTACHMENTS_USER_ONLY_MESSAGE, journeyIdParam, journeyToolCallSchema, journeyTurnSchema, journeyStepOverrideSchema, fixtureField, createJourneyBody, updateJourneyBody, evalSessionConfigResponseSchema, evalSessionResponseSchema, evalSessionListConfigSchema, evalSessionListItemSchema, seedReleaseStatusSchema, EVAL_SESSION_NOT_QUIESCENT, getConversationsQuery, getMessagesQuery, appMessageSenderType, appMessageReceiverType, apiChannelMessage, apiChannelMessageBody, appMessageBody, appMessageResponse, CALL_STATUSES, callStatus, CALL_END_REASONS, callEndReason, CALL_TRANSPORTS, callTransport, CALL_PARTICIPANT_TYPES, callParticipantType, callInstant, MAX_SDP_OFFER_LENGTH, sdpDescription, sdpOffer, MAX_CALL_REQUEST_BODY_BYTES, hubScoped, callSummaryFields, callSummary, callIdParam, createCallBody, createCallResponse, callReadyBody, callHangupBody, callStatusQuery, MAX_REPORTED_DELEGATION_IDS, callDelegationId, callDelegationsBody, callResponse, TTS_VOICE_REPLY_ENABLED_FIELD, COPILOT_TRIGGER_FIELD, AUDIO_LANGUAGE_OPTIONS, whatsapp, instagram, resend, telegram, API_CHANNEL_DELIVERY_EVENTS, apiChannel, OPENAI_REASONING_MODELS, openai, anthropic, googleAiStudio, openRouter, xai, groqStt, openaiStt, elevenLabsStt, openaiTts, groqTts, elevenLabsTts, GEMINI_TTS_VOICES, googleTts, wayai, externalResources, restApiTool, mcpServer, e2b, CLAUDE_HARNESS_MODELS, CLAUDE_HARNESS_MODEL_OPTIONS, HARNESS_MCP_SERVERS_FIELD, HARNESS_EGRESS_FIELDS, claudeAgentSdk, claudeManagedAgents, rekorMemory, gptLive, CONNECTORS, evalCallInstant, EVAL_CALL_MIN_SECONDS, EVAL_CALL_MAX_SECONDS, hubScoped2, createEvalCallBody, createEvalCallResponse, evalCallConversationQuery, evalCallSpeaker, evalCallUtterance, evalCallTurn, evalCallRecordResponse, evalCallFinishResponse, updateUserBody, updateProfileBody, pathnameRegex, updatePreferencesBody, registerPushTokenBody, deletePushTokenQuery, activityQuery, deletionModeSchema, deletionRequestBody, archiveHubIdParam, archiveConversationParams, archiveListQuery, archiveMessageObservabilityParams, conversationIdParam, claimBody, releaseBody, transferBody, closeBody, additionalContextPayloadSchema, kanbanUpdateBody, annotateConversationBody, observabilityParams, observabilityListParams, deleteUserConversationsBody, deleteUserConversationsResponse, sendMessageBody, listConversationsQuery, flagSourceSchema, getConversationsResponse, getConversationDetailParams, getConversationDetailQuery, getConversationDetailResponse, listWhatsAppTemplatesQuery, sendWhatsAppTemplateBody, copilotSuggestBody, copilotSuggestResponse, CONSULT_THREAD_STATUSES, consultThreadStatus, CONSULT_THREAD_TITLE_MAX, consultThreadTitle, consultThreadSummary, listConsultThreadsQuery, listConsultThreadsResponse, createConsultThreadBody, createConsultThreadResponse, consultThreadIdParam, updateConsultThreadBody, updateConsultThreadResponse, CONSULT_AWAIT_TIMEOUT_MS, billingOrgIdParam, subscriptionItemParams, spendCapBody, growthPacksBody, portalSessionBody, checkoutSessionBody, updateBillingCurrencyBody, invoicesQuery, planKeySchema, billingStatusSchema, billingPlanTypeSchema, dataUsageCountersSchema, REKOR_ENTITLEMENT_CONTRACT_VERSION, entitlementProjectionSchema, rekorEntitlementRefreshMessageSchema, downloadBody, uploadQuery, signUrlBody, outboundSchemaQuery, templateIdParam, listTemplatesQuery, deleteTemplateQuery, templateStatusQuery, createTemplateBody, updateTemplateBody, submitTemplateBody, testTemplateBody, contactIdParam, listContactsQuery, createContactBody, updateContactBody, listIdParam, listListsQuery, listListContactsQuery, createListBody, updateListBody, addListContactsBody, removeListContactsBody, scheduleIdParam, listSchedulesQuery, listExecutionsQuery, createScheduleBody, updateScheduleBody, MAX_RESOURCE_FILE_SIZE, MAX_10MB_BASE64_ENCODED_BYTES, MAX_EVAL_ATTACHMENT_ENCODED_BYTES, MAX_EVAL_ATTACHMENT_CARRIERS, MAX_EVAL_ATTACHMENT_AGGREGATE_ENCODED_BYTES, MAX_RESOURCE_ENCODED_BYTES, MAX_HUB_AS_CODE_RESOURCES, MAX_HUB_AS_CODE_RESOURCE_FILES, MAX_RESOURCE_AGGREGATE_ENCODED_BYTES, MAX_CI_CONFIG_BODY_BYTES, hubAsCodeStateSchema, hubAsCodeResourceFileSchema, hubAsCodeResourceSchema, uuidPattern, ciUuidSchema, boundedHubAsCodeResourcesSchema, hubAsCodeConfigSchema, ciPullHubIdParam, ciBranchParam, ciPullQuery, ciHubsQuery, ciLookupQuery, ciBranchesQuery, ciSyncBody, ciPushBody, ciDiffBody, ciPublishBody, ciPublishPreviewBody, ciSyncMcpBody, ciOrgResourcesParam, orgResourcesConfigSchema, ciOrgResourcesPushBody, ciOrgResourcesDiffBody, CI_APPLY_ENTITY_KINDS, CI_APPLY_OPERATIONS, ciApplyErrorBaseSchema, ciApplyErrorSchema, ciSyncCountSchema, ciSyncChangesSchema, ciSyncWarningSchema, ciSyncResponseSchema, adminOrgIdParam, adminVoiceCallsOrgIdParam, adminOrgAdminIdParam, adminUserIdParam, PRICING_PLAN_ID_RE, adminPlanIdParam, adminOrganizationsQuery, adminUserSearchQuery, kanbanSlugMigrationQuery, adjustQuotaBody, updatePlanBody, addAdminUserBody, MAX_VOICE_CALL_MINUTE_OPS, voiceCallMinuteOps, updatePlatformConfigBody, MAX_VOICE_CALLS_ALLOWLIST_ORGS, voiceCallsOrgAllowlistSchema, updateFreeOrgLimitBody, adminScopedTargetBody, adminRepairLegacyOrgGrantsBody, adminRepairCompedPlansBody, updatePricingPlanBody, dataExplorerSearchQuery, dataExplorerOrgIdParam, dataExplorerHubIdParam, dataExplorerConvIdParam, dataExplorerDoInstancesQuery, dataExplorerNsIdParam, dataExplorerKvKeysBody, dataExplorerKvKeyBody, uuidOrHexId, dataExplorerDeleteOrgParam, dataExplorerDeleteHubParam, dataExplorerDeleteConvParam, dataExplorerDeleteUserParam, dataExplorerDeleteQuery, dataExplorerKvDeleteBody, pitrDoNamespace, pitrBookmarkParam, pitrRestoreBody, healthSamplingTriggerBody, dataExplorerDebugDoType, DEBUG_READ_MAX_LIMIT, DEBUG_READ_DEFAULT_LIMIT, DEBUG_DO_HEX_PREFIX, debugDoEntityId, debugTableName, dataExplorerDebugTablesParam, dataExplorerDebugRowsParam, dataExplorerDebugRowsQuery, dataExplorerDebugAnalyticsTable, debugUuid, dataExplorerDebugAnalyticsRowsParam, dataExplorerDebugAnalyticsRowsQuery, debugHubConvParam, debugMessageIdQuery, sandboxEgressPolicy, SANDBOX_EXEC_MAX_CMD_LENGTH, SANDBOX_EXEC_MAX_ALLOWLIST, SANDBOX_EXEC_MAX_TIMEOUT_MS, adminSandboxExecBody, META_ENTITY_ID_PATTERN, metaEntityId, whatsappCallbackBody, authMeResponse, wsTicketResponse, sessionCheckResponse, logoutResponse, magicCodeSendBody, magicCodeSendResponse, magicCodeVerifyBody, magicCodeVerifyResponse, passwordLoginBody, browserParams, browserFoldersQuery, browserFilesQuery, stateOperationBody, conversationListResourcesQuery, conversationReadResourceQuery, listPendingSchedulesQuery, listHubAggregateSchedulesQuery, reportSourceSchema, intakeReportSourceSchema, reportClassificationSchema, reportStatusSchema, reportLocaleSchema, reportMessageAuthorRoleSchema, reportMessageSchema, sentryRefStatusSchema, createReportBody, editReportBody, reporterReportSummarySchema, reporterListResponseSchema, getReportResponseSchema, reporterTransitionResponseSchema, contestReportBody, reporterListQuery, listReportsQuery, GITHUB_ISSUE_URL_REGEX, githubIssueUrlSchema, transitionReportBody, groupReportsBody, holdReportBody, clickhouseReadyResponse, bootstrapQuery, requestSnapshotChunkMessage, MAX_NAME_LENGTH, MAX_VALUE_LENGTH, MAX_TAGS, MAX_TAG_LENGTH, MAX_SCOPE_HUBS, MAX_SCOPE_TAGS, vaultSecretScopeSchema, vaultCreateBody, vaultUpdateBody, PERMISSIONS, MAX_NAME_LENGTH2, MAX_HUBS_PER_GRANT, MAX_HUB_TAGS_PER_GRANT, MAX_GRANTS, permissionEnum, grantScopeSchema, grantSchema, createTokenBody, tokenOrgIdParam, tokenGrantScopeSchema, tokenGrantSchema, tokenMetadataSchema, listTokensResponse, createTokenResponse, orgTokenSummarySchema, listOrgTokensResponse, invitePreviewQuery, invitePreviewResponse, jsonSchemaSchema, hubUserIdentity, stateValueEntry, getHubUserContextResponse, updateHubUserBody, updateHubUserResponse, unlockHubUserNameResponse, stateResetParams, stateResetResponse, hubAlertsParam, hubAlertSeverity, hubAlert, hubAlertsListResponse, noticeSeveritySchema, noticeStatusSchema, NOTICE_SCOPE_REGEX, noticeScopeSchema, noticeLinkSchema, createNoticeBody, updateNoticeBody, listNoticesQuery, noticeIdParamSchema, ADMIN_SKILL_NAME_REGEX, adminSkillNameParam, REKOR_ACTOR_TYPE_HEADER, REKOR_ACTOR_ID_HEADER, REKOR_ACTOR_LABEL_HEADER, REKOR_ACTOR_ORG_HEADER, REKOR_ACTOR_ADMIN_HEADER, REKOR_CLIENT_HEADER, REKOR_TOOL_ID_HEADER, REKOR_CLIENTS, rekorClientSchema, MAX_REKOR_TOOL_ID_LENGTH, rekorToolIdSchema, DATA_PROXY_MOUNT, DATA_PROXY_PREFIX, REKOR_V1_PREFIX, DATA_PROXY_ORG_QUERY_PARAM, MAX_PROVISIONING_BODY_BYTES, dataProxyQuery, rekorAttestation, REQUIRED_REKOR_ATTESTATION_HEADERS, BASE_DESTRUCTION_MOUNT, BASE_DESTRUCTION_PREFIX, BASE_DESTRUCTION_CONFIRM_PATH, baseDestructionConfirmBody, BASE_DESTRUCTION_GRACE_MS, BASE_DESTRUCTION_CONFIRM_TTL_MS, BASE_DESTRUCTION_ORG_QUERY_PARAM, baseDestructionQuery, baseDestructionParam, baseDestructionInitiateBody, baseDestructionStatus, baseDestructionRequest, baseDestructionListResponse, baseDestructionInitiateResponse, baseDestructionConfirmResponse, baseDestructionCancelResponse, rekorBaseChangeMessageSchema;
5937
+ var uuidSchema, paginationSchema, timestampSchema, idParamSchema, clientOptionalString, clientOptionalBoolean, clientOptionalNumber, messageAttachment, MAX_MESSAGE_BODY_BYTES, MAX_ATTACHMENTS_PER_MESSAGE, MAX_AUDIO_FILE_BASE64_BYTES, primaryRegionSchema, placementSourceSchema, orgIdParam, orgAdminIdParam, createOrganizationBody, updateOrganizationBody, addOrgAdminBody, AUTH_TYPE, ORG_CREDENTIAL_AUTH_TYPES, AUTH_TYPE_DISPLAY, LEGACY_AUTH_TYPE_MAP, VALID_AUTH_TYPES, AGENT_ROLES, SAFE_USER_ID_REGEX, SUPPORTED_LOCALES, SUMMARIZATION_THRESHOLD_MIN, SUMMARIZATION_THRESHOLD_MAX, PREVIOUS_CONVERSATIONS_MAX, FLAG_CONDITION_OPERATORS, CONFIDENCE_VARIABLE_SUFFIX, DECISION_SCORE_MIN_LEVELS, DECISION_SCORE_MAX_LEVELS, DECISIONS_MODEL_PREFIXES, DECISION_CAPABLE_AGENT_ROLES, NATIVE_TOOL_SCHEMAS, WAYAI_CONNECTOR, BASE_NATIVE_TOOLS, NATIVE_TOOLS, CATALOG_SIDE_EFFECTS, NATIVE_TOOL_NAMES, previousConversationsCountField, summarizationThresholdField, flagConditionSchema, MONITOR_TRIGGERS, monitorTriggerSchema, MONITOR_FIRING_TRIGGERS, MONITOR_DELAY_SECONDS_MIN, MONITOR_IDLE_DELAY_REQUIRED_MESSAGE, MONITOR_HISTORY_MESSAGES_MAX, monitorHistoryMessagesSchema, monitorIncludeToolResultsSchema, MONITOR_INPUT_SHAPING_KEYS, MONITOR_INPUT_SHAPING_SCHEMAS, MONITOR_INPUT_SHAPING_IDLE_MESSAGE, monitorArgumentSourceSchema, MONITOR_NOTE_TEMPLATE_MAX, MONITOR_STEER_NOTE_MAX, monitorActionSchema, monitorRuleSchema, MONITOR_RULE_KEYS, MONITOR_RULE_SCHEMAS, MONITOR_RULE_TRIGGERS, MONITOR_RULE_TRIGGER_MESSAGE, CALL_UTTERANCE_SPEAKERS, callUtteranceSpeakerSchema, MONITOR_CALL_KEYS, MONITOR_CALL_SCHEMAS, MONITOR_CALL_KEY_MESSAGE, CALL_STEERING_MIN_CONFIDENCE, CALL_UTTERANCE_RULE_NOT_CONFIDENT_MESSAGE, CALL_UTTERANCE_FALLBACK_MESSAGE, CALL_UTTERANCE_FLAG_CONDITIONS_MESSAGE, CALL_STEER_NOTE_BLANK_MESSAGE, MONITOR_USER_MESSAGE_ACTION_KINDS, MONITOR_ASSISTANT_REPLY_ACTION_KINDS, MONITOR_CALL_UTTERANCE_ACTION_KINDS, INSERT_NOTE_TOOL_NAME, RUN_MONITOR_TOOL_NAME, MONITOR_RULE_ALLOWED_NATIVE_TOOLS, MONITOR_RULE_REENTRY_TOOLS, MONITOR_RULE_REENTRY_TRACKS, monitorConfigField, flagConditionsField, agentIdParam, listAgentsQuery, agentConnectionsQuery, createAgentBody, updateAgentBody, AGENT_PARAMETER_TYPES, AGENT_PARAMETER_NAME_REGEX, agentParameterCreateSchema, MAX_AGENT_PARAMETERS_PER_REQUEST, createAgentParametersBody, SLUG_REGEX, slugSchema, INVISIBLE_NAME_CHARS, MAX_KANBAN_STATUSES, MAX_FOLLOWUPS_PER_STATUS, MAX_LANES, MAX_ADDITIONAL_CONTEXT_SCHEMA_BYTES, RESERVED_TEMPLATE_DUMP_NAME, kanbanStatusSlugSchema, followupTypeSchema, EVENT_RELATIVE_FOLLOWUP_TYPES, followupTimeUnitSchema, followupIdSchema, SELECTABLE_FOLLOWUP_TYPES, MAX_LINKED_FOLLOWUP_TARGETS_PER_STATUS, followupSchema, MAX_OUTCOMES_PER_STATUS, kanbanOutcomeSchema, EXCLUSIVE_FLAG_PAIRS, kanbanStatusSchema, kanbanStatusesArraySchema, laneSchema, lanesArraySchema, hubIdParam, hubAdminIdParam, hubUserIdParam, hubIdentityIdParam, hubTeamIdParam, hubTeamUserDeleteParam, hubSchemaQuery, PREVIEW_LABEL_MAX_LENGTH, MAX_ENDED_INDEX_RETENTION_DAYS, MAX_EVAL_RETENTION_DAYS, previewLabelField, createHubBody, updateHubBody, addHubAdminBody, addHubIdentityAuthorizationBody, contactDecisionBody, approveContactBody, listContactAccessQuery, createHubTeamBody, updateHubTeamBody, addHubTeamUserBody, reassignHubUserBody, replicatePreviewBody, updateChannelTestIdentitiesBody, claimCodeChannelParam, claimCodeDeleteParam, connectionIdParam, connectorIdParam, listConnectionsQuery, deleteConnectionQuery, addConnectionBody, editConnectionBody, PRODUCTION_DIRECT_FIELDS, setProductionCredentialBody, registerWhatsappQuery, registerWhatsappBody, retryProvisioningQuery, resendDomainStatusQuery, PLACEHOLDER_TOKENS, ALLOWED_TYPES, SUBSCHEMA_OBJECT_KEYWORDS, SUBSCHEMA_LIST_KEYWORDS, SUBSCHEMA_MAP_KEYWORDS, MAX_SCHEMA_DEPTH, toolIdParam, listToolsQuery, toolAgentQuery, deleteToolQuery, toolConnectionsQuery, nativeToolIdSchema, CONTEXT_BOUNDARIES, contextBoundarySchema, addNativeToolBody, addMcpToolBody, createCustomToolBody, updateCustomToolBody, updateToolExecutionConfigBody, initialValueCreateSchema, initialValueUpdateSchema, stateIdParam, listStatesQuery, stateNameSchema, createStateBody, updateStateBody, reorderStatesBody, variantAiModeSchema, experimentStatusSchema, overlayUpdateSchema, experimentIdParam, variantIdParam, listExperimentsQuery, listVariantsQuery, listOverridesQuery, deleteOverrideQuery, createExperimentBody, updateExperimentBody, setExperimentStatusBody, createVariantBody, updateVariantBody, upsertOverrideBody, orgTagIdParam, listOrgTagsQuery, ORG_TAG_NAME_REGEX, ORG_TAG_NAME_MAX_LENGTH, createOrgTagBody, updateOrgTagBody, orgCredentialIdParam, listOrgCredentialsQuery, createOrgCredentialBody, updateOrgCredentialBody, BASE_CREDENTIAL_MANAGED_BY, BASE_CREDENTIAL_NAME_MAX, baseCredentialNameSchema, createBaseCredentialLinkBody, baseCredentialLinkParams, baseCredentialLinkQuery, orgResourceIdParam, orgResourceFileIdParam, orgResourceFolderIdParam, hubOrgResourceParam, listOrgResourcesQuery, orgIdQuery, createOrgResourceBody, updateOrgResourceBody, createOrgResourceFolderBody, updateOrgResourceFolderBody, uploadOrgResourceFileBody, updateOrgResourceFileBody, uploadOrgSkillZipBody, linkOrgResourceBody, resourceIdParam, listResourcesQuery, createResourceBody, updateResourceBody, syncSkillsBody, resourceFileIdParam, listResourceFilesQuery, createResourceFileBody, updateResourceFileBody, uploadResourceFileBody, uploadSkillZipBody, resourceFolderIdParam, listResourceFoldersQuery, createResourceFolderBody, updateResourceFolderBody, agentResourceQuery, hubResourceQuery, linkAgentResourceBody, updateAgentResourceBody, unlinkAgentResourceQuery, navItemSchema, hubCountResetBody, navItemCountResetBody, typingBody, analyticsHubIdParam, analyticsVariableIdParam, updateVariablePinBody, updateAnalyticsViewBody, NUMERIC_FILTER_OPS, TEXT_FILTER_OPS, CATEGORICAL_FILTER_OPS, VARIABLE_FILTER_OPS, STRUCTURED_QUERY_OPS, STRUCTURED_QUERY_AGGREGATIONS, filterValueSchema, conversationsBody, analyticsConversationIdParam, messagesQuery, conversationDetailDataQuery, analyticsDataBody, structuredQueryBody, analyticsSqlBody, analyticsSqlTable, analyticsSqlSchemaQuery, EVAL_PACING_PRESET_NAMES, PACING_INTERVAL_MIN_MS, PACING_INTERVAL_MAX_MS, EVAL_MAX_RUNS_PER_SCENARIO, EVAL_RUN_DEADLINE_MIN_MS, EVAL_RUN_DEADLINE_MAX_MS, ISO_UTC_RE, paginationSchema2, evalIdParam, sessionIdParam, scenarioSetIdParam, hubIdQuery, evalDateContextSchema, EVAL_FIXTURE_NAME_MAX_LENGTH, evalFixtureOverrideSchema, runSessionQuery, runJourneyQuery, EVAL_INPUT_ROLES, EVAL_INPUT_ROLE_LIST, ROLE_ECHO_MAX, EVAL_INITIAL_STATE_SCOPES, MAX_INITIAL_STATE_ENTRIES, evalInitialStateEntry, createEvalBody, updateEvalBody, EVAL_LIST_MAX_LIMIT, evalListLimit, getEvalsQuery, toggleEvalBody, bulkToggleEvalsBody, pacingConfigSchema, EVAL_MAX_SELECTED_SCENARIOS, evalScenarioSelectionEntrySchema, evalScenarioSelectionSchema, sessionConfigSchema, createSessionBody, getSessionsQuery, getSessionResultsQuery, getSessionRunsQuery, evalAnalyticsQuery, getSessionCostQuery, compareSessionsQuery, evalsSqlBody, evalsSqlSchemaQuery, exportResultsQuery, validateEvalBody, hubAgentsQuery, createScenarioSetBody, updateScenarioSetBody, scenarioSetsHubQuery, createScenarioFromConversationBody, createJourneyFromConversationBody, EVAL_ATTACHMENT_HASH_REGEX, evalAttachmentRef, turnMayCarryAttachments, ATTACHMENTS_USER_ONLY_MESSAGE, journeyIdParam, journeyToolCallSchema, journeyTurnSchema, journeyStepOverrideSchema, fixtureField, createJourneyBody, updateJourneyBody, evalSessionConfigResponseSchema, evalSessionResponseSchema, evalSessionListConfigSchema, evalSessionListItemSchema, seedReleaseStatusSchema, EVAL_SESSION_NOT_QUIESCENT, getConversationsQuery, getMessagesQuery, appMessageSenderType, appMessageReceiverType, apiChannelMessage, apiChannelMessageBody, appMessageBody, appMessageResponse, CALL_STATUSES, callStatus, CALL_END_REASONS, callEndReason, CALL_TRANSPORTS, callTransport, CALL_PARTICIPANT_TYPES, callParticipantType, callInstant, MAX_SDP_OFFER_LENGTH, sdpDescription, sdpOffer, MAX_CALL_REQUEST_BODY_BYTES, hubScoped, callSummaryFields, callSummary, callIdParam, createCallBody, createCallResponse, callReadyBody, callHangupBody, callStatusQuery, MAX_REPORTED_DELEGATION_IDS, callDelegationId, callDelegationsBody, callResponse, MAX_CALL_RECORDING_GAPS, callRecordingGap, callRecordingNoteMetadata, TTS_VOICE_REPLY_ENABLED_FIELD, COPILOT_TRIGGER_FIELD, AUDIO_LANGUAGE_OPTIONS, whatsapp, instagram, resend, telegram, API_CHANNEL_DELIVERY_EVENTS, apiChannel, OPENAI_REASONING_MODELS, openai, anthropic, googleAiStudio, openRouter, xai, groqStt, openaiStt, elevenLabsStt, openaiTts, groqTts, elevenLabsTts, GEMINI_TTS_VOICES, googleTts, wayai, externalResources, restApiTool, mcpServer, e2b, CLAUDE_HARNESS_MODELS, CLAUDE_HARNESS_MODEL_OPTIONS, HARNESS_MCP_SERVERS_FIELD, HARNESS_EGRESS_FIELDS, claudeAgentSdk, claudeManagedAgents, rekorMemory, gptLive, CONNECTORS, evalCallInstant, EVAL_CALL_MIN_SECONDS, EVAL_CALL_MAX_SECONDS, hubScoped2, createEvalCallBody, createEvalCallResponse, evalCallConversationQuery, evalCallSpeaker, evalCallUtterance, evalCallTurn, evalCallRecordResponse, evalCallFinishResponse, updateUserBody, updateProfileBody, pathnameRegex, updatePreferencesBody, registerPushTokenBody, deletePushTokenQuery, activityQuery, deletionModeSchema, deletionRequestBody, archiveHubIdParam, archiveConversationParams, archiveListQuery, archiveMessageObservabilityParams, conversationIdParam, claimBody, releaseBody, transferBody, closeBody, additionalContextPayloadSchema, kanbanUpdateBody, annotateConversationBody, observabilityParams, observabilityListParams, deleteUserConversationsBody, deleteUserConversationsResponse, sendMessageBody, listConversationsQuery, flagSourceSchema, getConversationsResponse, getConversationDetailParams, getConversationDetailQuery, getConversationDetailResponse, listWhatsAppTemplatesQuery, sendWhatsAppTemplateBody, copilotSuggestBody, copilotSuggestResponse, CONSULT_THREAD_STATUSES, consultThreadStatus, CONSULT_THREAD_TITLE_MAX, consultThreadTitle, consultThreadSummary, listConsultThreadsQuery, listConsultThreadsResponse, createConsultThreadBody, createConsultThreadResponse, consultThreadIdParam, updateConsultThreadBody, updateConsultThreadResponse, CONSULT_AWAIT_TIMEOUT_MS, billingOrgIdParam, subscriptionItemParams, spendCapBody, growthPacksBody, portalSessionBody, checkoutSessionBody, updateBillingCurrencyBody, invoicesQuery, planKeySchema, billingStatusSchema, billingPlanTypeSchema, dataUsageCountersSchema, REKOR_ENTITLEMENT_CONTRACT_VERSION, entitlementProjectionSchema, rekorEntitlementRefreshMessageSchema, downloadBody, uploadQuery, signUrlBody, outboundSchemaQuery, templateIdParam, listTemplatesQuery, deleteTemplateQuery, templateStatusQuery, createTemplateBody, updateTemplateBody, submitTemplateBody, testTemplateBody, contactIdParam, listContactsQuery, createContactBody, updateContactBody, listIdParam, listListsQuery, listListContactsQuery, createListBody, updateListBody, addListContactsBody, removeListContactsBody, scheduleIdParam, listSchedulesQuery, listExecutionsQuery, createScheduleBody, updateScheduleBody, MAX_RESOURCE_FILE_SIZE, MAX_10MB_BASE64_ENCODED_BYTES, MAX_EVAL_ATTACHMENT_ENCODED_BYTES, MAX_EVAL_ATTACHMENT_CARRIERS, MAX_EVAL_ATTACHMENT_AGGREGATE_ENCODED_BYTES, MAX_RESOURCE_ENCODED_BYTES, MAX_HUB_AS_CODE_RESOURCES, MAX_HUB_AS_CODE_RESOURCE_FILES, MAX_RESOURCE_AGGREGATE_ENCODED_BYTES, MAX_CI_CONFIG_BODY_BYTES, hubAsCodeStateSchema, hubAsCodeResourceFileSchema, hubAsCodeResourceSchema, uuidPattern, ciUuidSchema, boundedHubAsCodeResourcesSchema, hubAsCodeConfigSchema, ciPullHubIdParam, ciBranchParam, ciPullQuery, ciHubsQuery, ciLookupQuery, ciBranchesQuery, ciSyncBody, ciPushBody, ciDiffBody, ciPublishBody, ciPublishPreviewBody, ciSyncMcpBody, ciOrgResourcesParam, orgResourcesConfigSchema, ciOrgResourcesPushBody, ciOrgResourcesDiffBody, CI_APPLY_ENTITY_KINDS, CI_APPLY_OPERATIONS, ciApplyErrorBaseSchema, ciApplyErrorSchema, ciSyncCountSchema, ciSyncChangesSchema, ciSyncWarningSchema, ciSyncResponseSchema, adminOrgIdParam, adminOrgAdminIdParam, adminUserIdParam, PRICING_PLAN_ID_RE, adminPlanIdParam, adminOrganizationsQuery, adminUserSearchQuery, kanbanSlugMigrationQuery, adjustQuotaBody, updatePlanBody, addAdminUserBody, MAX_VOICE_CALL_MINUTE_OPS, voiceCallMinuteOps, updatePlatformConfigBody, updateFreeOrgLimitBody, adminScopedTargetBody, adminRepairLegacyOrgGrantsBody, adminRepairCompedPlansBody, updatePricingPlanBody, dataExplorerSearchQuery, dataExplorerOrgIdParam, dataExplorerHubIdParam, dataExplorerConvIdParam, dataExplorerDoInstancesQuery, dataExplorerNsIdParam, dataExplorerKvKeysBody, dataExplorerKvKeyBody, uuidOrHexId, dataExplorerDeleteOrgParam, dataExplorerDeleteHubParam, dataExplorerDeleteConvParam, dataExplorerDeleteUserParam, dataExplorerDeleteQuery, dataExplorerKvDeleteBody, pitrDoNamespace, pitrBookmarkParam, pitrRestoreBody, healthSamplingTriggerBody, dataExplorerDebugDoType, DEBUG_READ_MAX_LIMIT, DEBUG_READ_DEFAULT_LIMIT, DEBUG_DO_HEX_PREFIX, debugDoEntityId, debugTableName, dataExplorerDebugTablesParam, dataExplorerDebugRowsParam, dataExplorerDebugRowsQuery, dataExplorerDebugAnalyticsTable, debugUuid, dataExplorerDebugAnalyticsRowsParam, dataExplorerDebugAnalyticsRowsQuery, debugHubConvParam, debugMessageIdQuery, sandboxEgressPolicy, SANDBOX_EXEC_MAX_CMD_LENGTH, SANDBOX_EXEC_MAX_ALLOWLIST, SANDBOX_EXEC_MAX_TIMEOUT_MS, adminSandboxExecBody, META_ENTITY_ID_PATTERN, metaEntityId, whatsappCallbackBody, authMeResponse, wsTicketResponse, sessionCheckResponse, logoutResponse, magicCodeSendBody, magicCodeSendResponse, magicCodeVerifyBody, magicCodeVerifyResponse, passwordLoginBody, browserParams, browserFoldersQuery, browserFilesQuery, stateOperationBody, conversationListResourcesQuery, conversationReadResourceQuery, listPendingSchedulesQuery, listHubAggregateSchedulesQuery, reportSourceSchema, intakeReportSourceSchema, reportClassificationSchema, reportStatusSchema, reportLocaleSchema, reportMessageAuthorRoleSchema, reportMessageSchema, sentryRefStatusSchema, createReportBody, editReportBody, reporterReportSummarySchema, reporterListResponseSchema, getReportResponseSchema, reporterTransitionResponseSchema, contestReportBody, reporterListQuery, listReportsQuery, GITHUB_ISSUE_URL_REGEX, githubIssueUrlSchema, transitionReportBody, groupReportsBody, holdReportBody, clickhouseReadyResponse, bootstrapQuery, requestSnapshotChunkMessage, MAX_NAME_LENGTH, MAX_VALUE_LENGTH, MAX_TAGS, MAX_TAG_LENGTH, MAX_SCOPE_HUBS, MAX_SCOPE_TAGS, vaultSecretScopeSchema, vaultCreateBody, vaultUpdateBody, PERMISSIONS, MAX_NAME_LENGTH2, MAX_HUBS_PER_GRANT, MAX_HUB_TAGS_PER_GRANT, MAX_GRANTS, permissionEnum, grantScopeSchema, grantSchema, createTokenBody, tokenOrgIdParam, tokenGrantScopeSchema, tokenGrantSchema, tokenMetadataSchema, listTokensResponse, createTokenResponse, orgTokenSummarySchema, listOrgTokensResponse, invitePreviewQuery, invitePreviewResponse, jsonSchemaSchema, hubUserIdentity, stateValueEntry, getHubUserContextResponse, updateHubUserBody, updateHubUserResponse, unlockHubUserNameResponse, stateResetParams, stateResetResponse, hubAlertsParam, hubAlertSeverity, hubAlert, hubAlertsListResponse, noticeSeveritySchema, noticeStatusSchema, NOTICE_SCOPE_REGEX, noticeScopeSchema, noticeLinkSchema, createNoticeBody, updateNoticeBody, listNoticesQuery, noticeIdParamSchema, ADMIN_SKILL_NAME_REGEX, adminSkillNameParam, REKOR_ACTOR_TYPE_HEADER, REKOR_ACTOR_ID_HEADER, REKOR_ACTOR_LABEL_HEADER, REKOR_ACTOR_ORG_HEADER, REKOR_ACTOR_ADMIN_HEADER, REKOR_CLIENT_HEADER, REKOR_TOOL_ID_HEADER, REKOR_CLIENTS, rekorClientSchema, MAX_REKOR_TOOL_ID_LENGTH, rekorToolIdSchema, DATA_PROXY_MOUNT, DATA_PROXY_PREFIX, REKOR_V1_PREFIX, DATA_PROXY_ORG_QUERY_PARAM, MAX_PROVISIONING_BODY_BYTES, dataProxyQuery, rekorAttestation, REQUIRED_REKOR_ATTESTATION_HEADERS, BASE_DESTRUCTION_MOUNT, BASE_DESTRUCTION_PREFIX, BASE_DESTRUCTION_CONFIRM_PATH, baseDestructionConfirmBody, BASE_DESTRUCTION_GRACE_MS, BASE_DESTRUCTION_CONFIRM_TTL_MS, BASE_DESTRUCTION_ORG_QUERY_PARAM, baseDestructionQuery, baseDestructionParam, baseDestructionInitiateBody, baseDestructionStatus, baseDestructionRequest, baseDestructionListResponse, baseDestructionInitiateResponse, baseDestructionConfirmResponse, baseDestructionCancelResponse, rekorBaseChangeMessageSchema;
5869
5938
  var init_contracts = __esm({
5870
5939
  "../../packages/core/dist/contracts/index.js"() {
5871
5940
  "use strict";
@@ -6046,6 +6115,7 @@ var init_contracts = __esm({
6046
6115
  SUMMARIZATION_THRESHOLD_MAX = 1e6;
6047
6116
  PREVIOUS_CONVERSATIONS_MAX = 20;
6048
6117
  FLAG_CONDITION_OPERATORS = ["=", "!=", ">=", "<=", ">", "<"];
6118
+ CONFIDENCE_VARIABLE_SUFFIX = "_confidence";
6049
6119
  DECISION_SCORE_MIN_LEVELS = 2;
6050
6120
  DECISION_SCORE_MAX_LEVELS = 10;
6051
6121
  DECISIONS_MODEL_PREFIXES = ["typesafe/jev-", "jev-"];
@@ -6935,6 +7005,9 @@ var init_contracts = __esm({
6935
7005
  tool_instructions: schema.tool_instructions
6936
7006
  };
6937
7007
  });
7008
+ CATALOG_SIDE_EFFECTS = new Map(
7009
+ NATIVE_TOOLS.map((tool) => [tool.tool_name, tool.side_effects])
7010
+ );
6938
7011
  NATIVE_TOOL_NAMES = new Set(NATIVE_TOOLS.map((t) => t.tool_name));
6939
7012
  previousConversationsCountField = external_exports.number().int().min(0).max(PREVIOUS_CONVERSATIONS_MAX).nullable().optional();
6940
7013
  summarizationThresholdField = external_exports.number().int().min(SUMMARIZATION_THRESHOLD_MIN).max(SUMMARIZATION_THRESHOLD_MAX).nullable().optional();
@@ -6949,7 +7022,7 @@ var init_contracts = __esm({
6949
7022
  // fail on a hub configured through the other surface.
6950
7023
  value: external_exports.union([external_exports.string(), external_exports.number(), external_exports.boolean()])
6951
7024
  });
6952
- MONITOR_TRIGGERS = ["idle", "user_message", "assistant_reply", "manual"];
7025
+ MONITOR_TRIGGERS = ["idle", "user_message", "assistant_reply", "manual", "call_utterance"];
6953
7026
  monitorTriggerSchema = external_exports.enum(MONITOR_TRIGGERS);
6954
7027
  MONITOR_FIRING_TRIGGERS = MONITOR_TRIGGERS.filter(isFiringTrigger);
6955
7028
  MONITOR_DELAY_SECONDS_MIN = 10;
@@ -6962,12 +7035,13 @@ var init_contracts = __esm({
6962
7035
  history_messages: monitorHistoryMessagesSchema.optional(),
6963
7036
  include_tool_results: monitorIncludeToolResultsSchema.optional()
6964
7037
  };
6965
- MONITOR_INPUT_SHAPING_IDLE_MESSAGE = "only a user_message, assistant_reply or manual monitor reads this \u2014 an idle monitor runs as a full turn and takes the ordinary history window";
7038
+ MONITOR_INPUT_SHAPING_IDLE_MESSAGE = "only a user_message, assistant_reply, manual or call_utterance monitor reads this \u2014 an idle monitor runs as a full turn and takes the ordinary history window";
6966
7039
  monitorArgumentSourceSchema = external_exports.union([
6967
7040
  external_exports.object({ from_variable: external_exports.string().min(1) }).strict(),
6968
7041
  external_exports.object({ const: external_exports.union([external_exports.string(), external_exports.number(), external_exports.boolean()]) }).strict()
6969
7042
  ]);
6970
7043
  MONITOR_NOTE_TEMPLATE_MAX = 2e3;
7044
+ MONITOR_STEER_NOTE_MAX = 500;
6971
7045
  monitorActionSchema = external_exports.discriminatedUnion("kind", [
6972
7046
  external_exports.object({ kind: external_exports.literal("none") }).strict(),
6973
7047
  external_exports.object({
@@ -6976,7 +7050,8 @@ var init_contracts = __esm({
6976
7050
  args: external_exports.record(monitorArgumentSourceSchema).optional()
6977
7051
  }).strict(),
6978
7052
  external_exports.object({ kind: external_exports.literal("hold") }).strict(),
6979
- external_exports.object({ kind: external_exports.literal("rewrite"), note: external_exports.string().min(1).max(MONITOR_NOTE_TEMPLATE_MAX) }).strict()
7053
+ external_exports.object({ kind: external_exports.literal("rewrite"), note: external_exports.string().min(1).max(MONITOR_NOTE_TEMPLATE_MAX) }).strict(),
7054
+ external_exports.object({ kind: external_exports.literal("steer"), note: external_exports.string().min(1).max(MONITOR_STEER_NOTE_MAX) }).strict()
6980
7055
  ]);
6981
7056
  monitorRuleSchema = external_exports.object({
6982
7057
  when: external_exports.array(flagConditionSchema).min(1),
@@ -6987,10 +7062,23 @@ var init_contracts = __esm({
6987
7062
  rules: external_exports.array(monitorRuleSchema).optional(),
6988
7063
  fallback: monitorActionSchema.optional()
6989
7064
  };
6990
- MONITOR_RULE_TRIGGERS = ["user_message", "assistant_reply", "manual"];
6991
- MONITOR_RULE_TRIGGER_MESSAGE = "only a user_message, assistant_reply or manual monitor acts on rules \u2014 set one of those triggers, or remove this key. A manual monitor acts on its rules when another monitor runs it.";
7065
+ MONITOR_RULE_TRIGGERS = ["user_message", "assistant_reply", "manual", "call_utterance"];
7066
+ MONITOR_RULE_TRIGGER_MESSAGE = "only a user_message, assistant_reply, manual or call_utterance monitor acts on rules \u2014 set one of those triggers, or remove this key. A manual monitor acts on its rules when another monitor runs it.";
7067
+ CALL_UTTERANCE_SPEAKERS = ["caller", "voice", "both"];
7068
+ callUtteranceSpeakerSchema = external_exports.enum(CALL_UTTERANCE_SPEAKERS);
7069
+ MONITOR_CALL_KEYS = ["speaker"];
7070
+ MONITOR_CALL_SCHEMAS = {
7071
+ speaker: callUtteranceSpeakerSchema.optional()
7072
+ };
7073
+ MONITOR_CALL_KEY_MESSAGE = "only a call_utterance monitor reads this: it names whose speech on a live call a check waits for";
7074
+ CALL_STEERING_MIN_CONFIDENCE = 0.9;
7075
+ CALL_UTTERANCE_RULE_NOT_CONFIDENT_MESSAGE = `a call_utterance rule acts on a live call from a transcript that can be misheard, so it must be high-confidence: give it a condition on one of this monitor's "\u2026${CONFIDENCE_VARIABLE_SUFFIX}" variables with ">= ${CALL_STEERING_MIN_CONFIDENCE}" or a higher bar, up to 1.`;
7076
+ CALL_UTTERANCE_FALLBACK_MESSAGE = "a call_utterance monitor acts only when a high-confidence rule matches \u2014 a fallback would act on every check of the call. Remove it.";
7077
+ CALL_UTTERANCE_FLAG_CONDITIONS_MESSAGE = "a call_utterance monitor checks a live call every few seconds and does not flag the conversation. Remove its flag_conditions, or flag from a monitor on another trigger.";
7078
+ CALL_STEER_NOTE_BLANK_MESSAGE = "a steer's note is what the voice is told \u2014 write the instruction it should follow.";
6992
7079
  MONITOR_USER_MESSAGE_ACTION_KINDS = ["none", "call_tool"];
6993
7080
  MONITOR_ASSISTANT_REPLY_ACTION_KINDS = ["none", "call_tool", "hold", "rewrite"];
7081
+ MONITOR_CALL_UTTERANCE_ACTION_KINDS = ["none", "call_tool", "steer"];
6994
7082
  INSERT_NOTE_TOOL_NAME = "insert_note";
6995
7083
  RUN_MONITOR_TOOL_NAME = "run_monitor";
6996
7084
  MONITOR_RULE_ALLOWED_NATIVE_TOOLS = [
@@ -7011,6 +7099,7 @@ var init_contracts = __esm({
7011
7099
  trigger: monitorTriggerSchema.optional(),
7012
7100
  ...MONITOR_INPUT_SHAPING_SCHEMAS,
7013
7101
  ...MONITOR_RULE_SCHEMAS,
7102
+ ...MONITOR_CALL_SCHEMAS,
7014
7103
  flag_conditions: external_exports.array(flagConditionSchema).optional()
7015
7104
  }).passthrough().superRefine((config, ctx) => {
7016
7105
  if (monitorConfigNeedsDelay(config)) {
@@ -7027,6 +7116,9 @@ var init_contracts = __esm({
7027
7116
  message: MONITOR_INPUT_SHAPING_IDLE_MESSAGE
7028
7117
  });
7029
7118
  }
7119
+ for (const key of monitorCallKeysOffTrigger(config)) {
7120
+ ctx.addIssue({ code: external_exports.ZodIssueCode.custom, path: [key], message: MONITOR_CALL_KEY_MESSAGE });
7121
+ }
7030
7122
  for (const issue of collectMonitorRuleIssues(config)) {
7031
7123
  ctx.addIssue({ code: external_exports.ZodIssueCode.custom, path: issue.path, message: issue.message });
7032
7124
  }
@@ -8721,14 +8813,29 @@ var init_contracts = __esm({
8721
8813
  */
8722
8814
  conversation_id: external_exports.string().uuid().nullish().transform((v) => v ?? void 0),
8723
8815
  /** The browser's SDP offer, sent to the provider unchanged. */
8724
- sdp_offer: sdpOffer
8816
+ sdp_offer: sdpOffer,
8817
+ /**
8818
+ * The client plays the RECORDING NOTICE — the disclosure's part that tells the caller the
8819
+ * call is recorded — before the voice layer speaks, whenever the answer says `recorded`.
8820
+ * A hub that records calls records only a call whose client says so: a client without the
8821
+ * notice (one that predates it, or a stale tab) gets an unrecorded call, never a recorded
8822
+ * call its caller was not told about. Absent: false.
8823
+ */
8824
+ plays_recording_notice: external_exports.boolean().optional()
8725
8825
  });
8726
8826
  createCallResponse = external_exports.object({
8727
8827
  call_id: external_exports.string().uuid(),
8728
8828
  /** The conversation the call is attached to: the one named, or else the caller's active one. */
8729
8829
  conversation_id: external_exports.string().uuid(),
8730
8830
  /** The provider's SDP answer, for the browser's `setRemoteDescription`. */
8731
- sdp_answer: sdpDescription
8831
+ sdp_answer: sdpDescription,
8832
+ /**
8833
+ * The call is recorded: its hub records calls and the create said its client plays the
8834
+ * recording notice. The client plays the notice before it sends `ready`, and the recording
8835
+ * starts only once `ready` arrives. Absent only from a server that predates recording, which
8836
+ * records nothing: absent means not recorded.
8837
+ */
8838
+ recorded: external_exports.boolean().optional()
8732
8839
  });
8733
8840
  callReadyBody = external_exports.object(hubScoped);
8734
8841
  callHangupBody = external_exports.object(hubScoped);
@@ -8742,6 +8849,24 @@ var init_contracts = __esm({
8742
8849
  callResponse = external_exports.object({
8743
8850
  call: callSummary
8744
8851
  });
8852
+ MAX_CALL_RECORDING_GAPS = 500;
8853
+ callRecordingGap = external_exports.object({
8854
+ start_ms: external_exports.number().int().nonnegative(),
8855
+ end_ms: external_exports.number().int().positive()
8856
+ }).refine((gap) => gap.end_ms > gap.start_ms, "A gap ends after it starts");
8857
+ callRecordingNoteMetadata = external_exports.object({
8858
+ call_id: external_exports.string().min(1),
8859
+ team_notice: external_exports.literal("call_recording"),
8860
+ recording: external_exports.object({
8861
+ /** The recording's `conversation_file` row, the note's one file. */
8862
+ file_id: external_exports.string().uuid(),
8863
+ /** When its first audio arrived: its time 0. */
8864
+ started_at: callInstant,
8865
+ duration_ms: external_exports.number().int().nonnegative(),
8866
+ /** Ascending and disjoint, each within the recording. */
8867
+ gaps: external_exports.array(callRecordingGap).max(MAX_CALL_RECORDING_GAPS)
8868
+ })
8869
+ });
8745
8870
  TTS_VOICE_REPLY_ENABLED_FIELD = {
8746
8871
  voice_reply_enabled: {
8747
8872
  type: "toggle",
@@ -9738,7 +9863,9 @@ var init_contracts = __esm({
9738
9863
  // start + 7,199 s), so 119 whole minutes is the most a call can last.
9739
9864
  max_call_minutes: { type: "number", label: "Maximum Call Length (minutes)", min: 1, max: 119, default: 10, description: "A call ends when it reaches this length." },
9740
9865
  inactivity_timeout_seconds: { type: "number", label: "Inactivity Timeout (seconds)", min: 10, max: 600, default: 60, description: "A call ends after this many seconds in which neither side speaks." },
9741
- delegation_timeout_seconds: { type: "number", label: "Answer Timeout (seconds)", min: 5, max: 120, default: 30, description: "How long the voice waits for the hub's agent to answer one question before it gives up on that answer." }
9866
+ delegation_timeout_seconds: { type: "number", label: "Answer Timeout (seconds)", min: 5, max: 120, default: 30, description: "How long the voice waits for the hub's agent to answer one question before it gives up on that answer." },
9867
+ // Opt-in (D7): off unless turned on. Read by the call route (`resolveVoiceCallSettings`).
9868
+ record_calls: { type: "toggle", label: "Record Calls", default: false, description: "Keep each call's audio, both sides, as a recording your team can play from the conversation. Callers hear that the call is recorded before the voice speaks." }
9742
9869
  },
9743
9870
  channel_settings_schema: null,
9744
9871
  tool_settings_schema: null,
@@ -10749,9 +10876,6 @@ var init_contracts = __esm({
10749
10876
  adminOrgIdParam = external_exports.object({
10750
10877
  orgId: uuidSchema
10751
10878
  });
10752
- adminVoiceCallsOrgIdParam = external_exports.object({
10753
- orgId: uuidSchema.transform((id) => id.toLowerCase())
10754
- });
10755
10879
  adminOrgAdminIdParam = external_exports.object({
10756
10880
  orgId: uuidSchema,
10757
10881
  // `adminId` is a `member_grant.user_id`, which for a logged-in user is the
@@ -10852,11 +10976,9 @@ var init_contracts = __esm({
10852
10976
  */
10853
10977
  default_eval_retention_days: external_exports.number().int().min(0).max(MAX_EVAL_RETENTION_DAYS).optional(),
10854
10978
  /**
10855
- * The voice-calls kill switch, the platform half of the voice-calls rollout gate.
10856
- * 0 = off (the default: every voice-call surface stays dark for every org), 1 = on.
10857
- * On its own it opens nothing: an org must also be on `voice_calls_org_allowlist`,
10858
- * which this body cannot write (`PUT`/`DELETE /admin/voice-calls/allowlist/:orgId`
10859
- * change one org at a time). `wayai admin voice-calls enable|disable` flips this.
10979
+ * The voice-calls kill switch. 0 = off (the default: every voice-call surface stays dark
10980
+ * for every org), 1 = on (every org; a hub takes calls once it is configured for them).
10981
+ * `wayai admin voice-calls enable|disable` flips this.
10860
10982
  */
10861
10983
  voice_calls_enabled: external_exports.number().int().min(0).max(1).optional(),
10862
10984
  /** The voice-call meter's price (`voiceCallMinuteOps`). `wayai admin voice-calls price` sets it. */
@@ -10865,8 +10987,6 @@ var init_contracts = __esm({
10865
10987
  (data) => Object.keys(data).length > 0,
10866
10988
  { message: "No fields to update" }
10867
10989
  );
10868
- MAX_VOICE_CALLS_ALLOWLIST_ORGS = 200;
10869
- voiceCallsOrgAllowlistSchema = external_exports.array(uuidSchema).max(MAX_VOICE_CALLS_ALLOWLIST_ORGS);
10870
10990
  updateFreeOrgLimitBody = external_exports.object({
10871
10991
  max_free_orgs_override: external_exports.number().int().min(0).nullable()
10872
10992
  });
@@ -11827,20 +11947,6 @@ var init_api_client = __esm({
11827
11947
  async adminUpdateConfig(body) {
11828
11948
  return this.request("PATCH", "/api/admin/config", body);
11829
11949
  }
11830
- // Put one org on / take it off the voice-calls allowlist (platform-admin gated,
11831
- // idempotent). Used by `wayai admin voice-calls allow|deny --org`.
11832
- async adminAllowVoiceCallsOrg(orgId) {
11833
- return this.request(
11834
- "PUT",
11835
- `/api/admin/voice-calls/allowlist/${encodeURIComponent(orgId)}`
11836
- );
11837
- }
11838
- async adminDenyVoiceCallsOrg(orgId) {
11839
- return this.request(
11840
- "DELETE",
11841
- `/api/admin/voice-calls/allowlist/${encodeURIComponent(orgId)}`
11842
- );
11843
- }
11844
11950
  /**
11845
11951
  * Re-discover an MCP connection's tool/resource catalog (refreshes stale
11846
11952
  * input schemas that `push` leaves untouched). `connection` is the display
@@ -12789,6 +12895,11 @@ function readAgentSettingsModel2(agentSettings) {
12789
12895
  const model = settings.model;
12790
12896
  return typeof model === "string" ? model : null;
12791
12897
  }
12898
+ function catalogToolSideEffects2(toolName) {
12899
+ const sideEffects = CATALOG_SIDE_EFFECTS2.get(toolName);
12900
+ if (sideEffects === void 0) return "unknown";
12901
+ return sideEffects ? "side_effects" : "none";
12902
+ }
12792
12903
  function resolveMonitorTrigger2(monitorConfig) {
12793
12904
  if (!monitorConfig || typeof monitorConfig !== "object") return "idle";
12794
12905
  const raw = monitorConfig.trigger;
@@ -12813,6 +12924,60 @@ function monitorRuleKeysOffTrigger2(monitorConfig) {
12813
12924
  const config = monitorConfig;
12814
12925
  return MONITOR_RULE_KEYS2.filter((key) => config[key] !== void 0);
12815
12926
  }
12927
+ function monitorCallKeysOffTrigger2(monitorConfig) {
12928
+ if (!monitorConfig || typeof monitorConfig !== "object") return [];
12929
+ if (resolveMonitorTrigger2(monitorConfig) === "call_utterance") return [];
12930
+ const config = monitorConfig;
12931
+ return MONITOR_CALL_KEYS2.filter((key) => config[key] !== void 0);
12932
+ }
12933
+ function callUtteranceConfidenceConditions2(rule) {
12934
+ if (!rule || typeof rule !== "object" || Array.isArray(rule)) return [];
12935
+ const when = rule.when;
12936
+ if (!Array.isArray(when)) return [];
12937
+ return when.filter(isConfidenceCondition2);
12938
+ }
12939
+ function isConfidenceCondition2(condition) {
12940
+ if (!condition || typeof condition !== "object" || Array.isArray(condition)) return false;
12941
+ const { variable, operator, value } = condition;
12942
+ if (typeof variable !== "string" || variable.length <= CONFIDENCE_VARIABLE_SUFFIX2.length) return false;
12943
+ if (!variable.endsWith(CONFIDENCE_VARIABLE_SUFFIX2)) return false;
12944
+ const bar = numericBar2(value);
12945
+ if (bar === null || bar < CALL_STEERING_MIN_CONFIDENCE2) return false;
12946
+ if (operator === ">=") return bar <= 1;
12947
+ if (operator === ">") return bar < 1;
12948
+ return false;
12949
+ }
12950
+ function numericBar2(value) {
12951
+ if (typeof value === "number") return Number.isFinite(value) ? value : null;
12952
+ if (typeof value !== "string" || value.trim() === "") return null;
12953
+ const parsed = Number(value);
12954
+ return Number.isFinite(parsed) ? parsed : null;
12955
+ }
12956
+ function callUtteranceRuleIssues2(monitorConfig) {
12957
+ if (!monitorConfig || typeof monitorConfig !== "object") return [];
12958
+ if (resolveMonitorTrigger2(monitorConfig) !== "call_utterance") return [];
12959
+ const config = monitorConfig;
12960
+ const issues = [];
12961
+ if (config.fallback !== void 0) {
12962
+ issues.push({ path: ["fallback"], message: CALL_UTTERANCE_FALLBACK_MESSAGE2 });
12963
+ }
12964
+ if (Array.isArray(config.flag_conditions) && config.flag_conditions.length > 0) {
12965
+ issues.push({ path: ["flag_conditions"], message: CALL_UTTERANCE_FLAG_CONDITIONS_MESSAGE2 });
12966
+ }
12967
+ if (Array.isArray(config.rules)) {
12968
+ config.rules.forEach((rule, index) => {
12969
+ if (callUtteranceConfidenceConditions2(rule).length === 0) {
12970
+ issues.push({ path: ["rules", index, "when"], message: CALL_UTTERANCE_RULE_NOT_CONFIDENT_MESSAGE2 });
12971
+ }
12972
+ const action = rule && typeof rule === "object" ? rule.action : void 0;
12973
+ const { kind, note } = action && typeof action === "object" ? action : {};
12974
+ if (kind === "steer" && typeof note === "string" && note.trim() === "") {
12975
+ issues.push({ path: ["rules", index, "action", "note"], message: CALL_STEER_NOTE_BLANK_MESSAGE2 });
12976
+ }
12977
+ });
12978
+ }
12979
+ return issues;
12980
+ }
12816
12981
  function monitorRulesStructuredOutputMessage2(trigger) {
12817
12982
  const [article, consequence] = trigger === "assistant_reply" ? ["an", "every reply is delivered unjudged"] : ["a", "none of their actions runs"];
12818
12983
  return `${article} ${trigger} monitor with rules needs structured output: its rules read variables only a JSON answer carries, so on text output no rule can match and ${consequence}. Set response_format to json_schema (wayai push), or remove the rules.`;
@@ -12839,19 +13004,31 @@ function decodedMonitorConfig2(value) {
12839
13004
  }
12840
13005
  }
12841
13006
  function monitorRuleActionKinds2(trigger) {
12842
- return trigger === "assistant_reply" ? MONITOR_ASSISTANT_REPLY_ACTION_KINDS2 : MONITOR_USER_MESSAGE_ACTION_KINDS2;
13007
+ if (trigger === "assistant_reply") return MONITOR_ASSISTANT_REPLY_ACTION_KINDS2;
13008
+ if (trigger === "call_utterance") return MONITOR_CALL_UTTERANCE_ACTION_KINDS2;
13009
+ return MONITOR_USER_MESSAGE_ACTION_KINDS2;
12843
13010
  }
12844
13011
  function monitorActionKindMessage2(kind, trigger) {
12845
13012
  const allowed = monitorRuleActionKinds2(trigger).join(", ");
12846
13013
  if (trigger === "assistant_reply") {
12847
13014
  return `an assistant_reply rule cannot select "${kind}". Use one of: ${allowed}.`;
12848
13015
  }
13016
+ if (trigger === "call_utterance") {
13017
+ return `a call_utterance rule cannot select "${kind}": there is no drafted reply on a live call. Use one of: ${allowed}.`;
13018
+ }
13019
+ if (kind === "steer") {
13020
+ return `a monitor rule cannot select "steer": it speaks to a live call's voice, so only a call_utterance monitor can steer. Use one of: ${allowed}.`;
13021
+ }
12849
13022
  return `a monitor rule cannot select "${kind}": it acts before the reply exists. Use one of: ${allowed}.`;
12850
13023
  }
12851
13024
  function monitorRuleReentryTrack2(toolName) {
12852
13025
  return MONITOR_RULE_REENTRY_TRACKS2.get(toolName);
12853
13026
  }
12854
13027
  function monitorRuleToolNotAllowedMessage2(toolName, trigger) {
13028
+ if (trigger === "call_utterance") {
13029
+ const callable2 = MONITOR_RULE_ALLOWED_NATIVE_TOOLS2.filter((name) => !isCallRefusedToolName2(name));
13030
+ return `a call_utterance rule cannot call "${toolName}": it acts on a live call without the caller confirming anything, so it may call only a tool with no side effects \u2014 ${callable2.join(", ")}, or this hub's own HTTP tools that only read (GET, HEAD or OPTIONS). MCP tools, and tools whose effects are unknown, are refused.`;
13031
+ }
12855
13032
  if (trigger === "assistant_reply" && isReplyGateRefusedToolName2(toolName)) {
12856
13033
  return `an assistant_reply rule cannot call "${toolName}": the reply already exists when this monitor runs, so there is no turn left for it to act on. Put it on a user_message monitor instead, which runs before the answering agent.`;
12857
13034
  }
@@ -12861,9 +13038,13 @@ function monitorRuleToolNotAllowedMessage2(toolName, trigger) {
12861
13038
  function isReplyGateRefusedToolName2(toolName) {
12862
13039
  return monitorRuleReentryTrack2(toolName) === "agent" || toolName === INSERT_NOTE_TOOL_NAME2;
12863
13040
  }
13041
+ function isCallRefusedToolName2(toolName) {
13042
+ return toolName === INSERT_NOTE_TOOL_NAME2 || catalogToolSideEffects2(toolName) !== "none";
13043
+ }
12864
13044
  function isRefusedNativeToolName2(toolName, trigger) {
12865
13045
  if (!NATIVE_TOOL_NAMES2.has(toolName)) return false;
12866
13046
  if (!MONITOR_RULE_ALLOWED_NATIVE_TOOLS2.includes(toolName)) return true;
13047
+ if (trigger === "call_utterance") return isCallRefusedToolName2(toolName);
12867
13048
  return trigger === "assistant_reply" && isReplyGateRefusedToolName2(toolName);
12868
13049
  }
12869
13050
  function monitorRuleActions2(monitorConfig) {
@@ -12888,8 +13069,9 @@ function collectMonitorRuleIssues2(monitorConfig) {
12888
13069
  if (offTrigger.length > 0) return offTrigger;
12889
13070
  const trigger = resolveMonitorTrigger2(monitorConfig);
12890
13071
  const kinds = monitorRuleActionKinds2(trigger);
12891
- const issues = [];
13072
+ const issues = callUtteranceRuleIssues2(monitorConfig);
12892
13073
  for (const { action, path: path35 } of monitorRuleActions2(monitorConfig)) {
13074
+ if (trigger === "call_utterance" && path35[0] === "fallback") continue;
12893
13075
  const kind = action.kind;
12894
13076
  if (typeof kind === "string" && !kinds.includes(kind)) {
12895
13077
  issues.push({ path: [...path35, "kind"], message: monitorActionKindMessage2(kind, trigger) });
@@ -13838,8 +14020,12 @@ function refineHubAsCodeMonitorConfig2(config, ctx) {
13838
14020
  message: MONITOR_INPUT_SHAPING_IDLE_MESSAGE2
13839
14021
  });
13840
14022
  }
14023
+ for (const key of monitorCallKeysOffTrigger2(monitorConfig)) {
14024
+ ctx.addIssue({ code: external_exports.ZodIssueCode.custom, path: [...basePath, key], message: MONITOR_CALL_KEY_MESSAGE2 });
14025
+ }
13841
14026
  checkKeyValues(MONITOR_INPUT_SHAPING_KEYS2, MONITOR_INPUT_SHAPING_SCHEMAS2);
13842
14027
  checkKeyValues(MONITOR_RULE_KEYS2, MONITOR_RULE_SCHEMAS2);
14028
+ checkKeyValues(MONITOR_CALL_KEYS2, MONITOR_CALL_SCHEMAS2);
13843
14029
  for (const issue of collectMonitorRuleIssues2(monitorConfig)) {
13844
14030
  ctx.addIssue({
13845
14031
  code: external_exports.ZodIssueCode.custom,
@@ -13945,7 +14131,7 @@ function findStepBoundaries(transcript) {
13945
14131
  }
13946
14132
  return out;
13947
14133
  }
13948
- var UUID_RE, HEX_RE, WORKOS_ID_RE, OPAQUE_SECRET_RE, BASE64_SECRET_RE, BASE64_MARKER_RE, TOKEN_RE, SENSITIVE_FIELDS, SENSITIVE_KEY_ALTERNATION, SENSITIVE_KEY_PATTERN, JSON_CREDENTIAL_RE, QUERY_CREDENTIAL_RE, REDACTED, PROVIDER_TOKEN_RE, APP_ERROR_BRAND, AppError, LLM_RATE_LIMIT_BRAND, LlmRateLimitError, LLM_PROVIDER_HTTP_BRAND, LlmProviderHttpError, LLM_PROVIDER_CONTENT_BRAND, LlmProviderContentError, LLM_PROVIDER_TIMEOUT_BRAND, LlmProviderTimeoutError, ExternalServiceError, CHANNEL_PROVIDER_HTTP_BRAND, ChannelProviderHttpError, MEDIA_PROVIDER_HTTP_BRAND, MediaProviderHttpError, REKOR_ACTOR_TYPE_HEADER2, REKOR_ACTOR_ID_HEADER2, REKOR_ACTOR_LABEL_HEADER2, REKOR_ACTOR_ORG_HEADER2, REKOR_ACTOR_ADMIN_HEADER2, REKOR_CLIENT_HEADER2, REKOR_TOOL_ID_HEADER2, REKOR_CLIENTS2, rekorClientSchema2, MAX_REKOR_TOOL_ID_LENGTH2, rekorToolIdSchema2, DATA_PROXY_MOUNT2, DATA_PROXY_PREFIX2, DATA_PROXY_ORG_QUERY_PARAM2, MAX_PROVISIONING_BODY_BYTES2, dataProxyQuery2, rekorAttestation2, REQUIRED_REKOR_ATTESTATION_HEADERS2, BASE_DESTRUCTION_MOUNT2, BASE_DESTRUCTION_PREFIX2, BASE_DESTRUCTION_CONFIRM_PATH2, baseDestructionConfirmBody2, BASE_DESTRUCTION_GRACE_MS2, BASE_DESTRUCTION_CONFIRM_TTL_MS2, BASE_DESTRUCTION_ORG_QUERY_PARAM2, baseDestructionQuery2, baseDestructionParam2, baseDestructionInitiateBody2, baseDestructionStatus2, baseDestructionRequest2, baseDestructionListResponse2, baseDestructionInitiateResponse2, baseDestructionConfirmResponse2, baseDestructionCancelResponse2, ENDPOINT_CONFIGS, AUTH_TYPE2, ORG_CREDENTIAL_AUTH_TYPES2, AUTH_TYPE_DISPLAY2, LEGACY_AUTH_TYPE_MAP2, VALID_AUTH_TYPES2, AGENT_ROLES2, SAFE_USER_ID_REGEX2, SUPPORTED_LOCALES2, uuidSchema2, paginationSchema3, timestampSchema2, idParamSchema2, clientOptionalString2, clientOptionalBoolean2, clientOptionalNumber2, messageAttachment2, MAX_MESSAGE_BODY_BYTES2, MAX_ATTACHMENTS_PER_MESSAGE2, MAX_AUDIO_FILE_BASE64_BYTES2, primaryRegionSchema2, placementSourceSchema2, orgIdParam2, orgAdminIdParam2, createOrganizationBody2, updateOrganizationBody2, addOrgAdminBody2, SUMMARIZATION_THRESHOLD_MIN2, SUMMARIZATION_THRESHOLD_MAX2, PREVIOUS_CONVERSATIONS_MAX2, FLAG_CONDITION_OPERATORS2, DECISION_SCORE_MIN_LEVELS2, DECISION_SCORE_MAX_LEVELS2, DECISIONS_MODEL_PREFIXES2, DECISION_CAPABLE_AGENT_ROLES2, NATIVE_TOOL_SCHEMAS2, WAYAI_CONNECTOR2, BASE_NATIVE_TOOLS2, NATIVE_TOOLS2, NATIVE_TOOL_NAMES2, previousConversationsCountField2, summarizationThresholdField2, flagConditionSchema2, MONITOR_TRIGGERS2, monitorTriggerSchema2, MONITOR_FIRING_TRIGGERS2, MONITOR_DELAY_SECONDS_MIN2, MONITOR_IDLE_DELAY_REQUIRED_MESSAGE2, MONITOR_HISTORY_MESSAGES_MAX2, monitorHistoryMessagesSchema2, monitorIncludeToolResultsSchema2, MONITOR_INPUT_SHAPING_KEYS2, MONITOR_INPUT_SHAPING_SCHEMAS2, MONITOR_INPUT_SHAPING_IDLE_MESSAGE2, monitorArgumentSourceSchema2, MONITOR_NOTE_TEMPLATE_MAX2, monitorActionSchema2, monitorRuleSchema2, MONITOR_RULE_KEYS2, MONITOR_RULE_SCHEMAS2, MONITOR_RULE_TRIGGERS2, MONITOR_RULE_TRIGGER_MESSAGE2, MONITOR_USER_MESSAGE_ACTION_KINDS2, MONITOR_ASSISTANT_REPLY_ACTION_KINDS2, INSERT_NOTE_TOOL_NAME2, RUN_MONITOR_TOOL_NAME2, MONITOR_RULE_ALLOWED_NATIVE_TOOLS2, MONITOR_RULE_REENTRY_TOOLS2, MONITOR_RULE_REENTRY_TRACKS2, monitorConfigField2, flagConditionsField2, agentIdParam2, listAgentsQuery2, agentConnectionsQuery2, createAgentBody2, updateAgentBody2, AGENT_PARAMETER_TYPES2, AGENT_PARAMETER_NAME_REGEX2, agentParameterCreateSchema2, MAX_AGENT_PARAMETERS_PER_REQUEST2, createAgentParametersBody2, SLUG_REGEX2, slugSchema2, INVISIBLE_NAME_CHARS2, MAX_KANBAN_STATUSES2, MAX_FOLLOWUPS_PER_STATUS2, MAX_LANES2, MAX_ADDITIONAL_CONTEXT_SCHEMA_BYTES2, RESERVED_TEMPLATE_DUMP_NAME2, kanbanStatusSlugSchema2, followupTypeSchema2, EVENT_RELATIVE_FOLLOWUP_TYPES2, followupTimeUnitSchema2, followupIdSchema2, SELECTABLE_FOLLOWUP_TYPES2, MAX_LINKED_FOLLOWUP_TARGETS_PER_STATUS2, followupSchema2, MAX_OUTCOMES_PER_STATUS2, kanbanOutcomeSchema2, EXCLUSIVE_FLAG_PAIRS2, kanbanStatusSchema2, kanbanStatusesArraySchema2, laneSchema2, lanesArraySchema2, hubIdParam2, hubAdminIdParam2, hubUserIdParam2, hubIdentityIdParam2, hubTeamIdParam2, hubTeamUserDeleteParam2, hubSchemaQuery2, PREVIEW_LABEL_MAX_LENGTH2, MAX_ENDED_INDEX_RETENTION_DAYS2, MAX_EVAL_RETENTION_DAYS2, previewLabelField2, createHubBody2, updateHubBody2, addHubAdminBody2, addHubIdentityAuthorizationBody2, contactDecisionBody2, approveContactBody2, listContactAccessQuery2, createHubTeamBody2, updateHubTeamBody2, addHubTeamUserBody2, reassignHubUserBody2, replicatePreviewBody2, updateChannelTestIdentitiesBody2, claimCodeChannelParam2, claimCodeDeleteParam2, connectionIdParam2, connectorIdParam2, listConnectionsQuery2, deleteConnectionQuery2, addConnectionBody2, editConnectionBody2, PRODUCTION_DIRECT_FIELDS2, setProductionCredentialBody2, registerWhatsappQuery2, registerWhatsappBody2, retryProvisioningQuery2, resendDomainStatusQuery2, PLACEHOLDER_TOKENS2, ALLOWED_TYPES2, SUBSCHEMA_OBJECT_KEYWORDS2, SUBSCHEMA_LIST_KEYWORDS2, SUBSCHEMA_MAP_KEYWORDS2, MAX_SCHEMA_DEPTH2, toolIdParam2, listToolsQuery2, toolAgentQuery2, deleteToolQuery2, toolConnectionsQuery2, nativeToolIdSchema2, CONTEXT_BOUNDARIES2, contextBoundarySchema2, addNativeToolBody2, addMcpToolBody2, createCustomToolBody2, updateCustomToolBody2, updateToolExecutionConfigBody2, initialValueCreateSchema2, initialValueUpdateSchema2, stateIdParam2, listStatesQuery2, stateNameSchema2, createStateBody2, updateStateBody2, reorderStatesBody2, variantAiModeSchema2, experimentStatusSchema2, overlayUpdateSchema2, experimentIdParam2, variantIdParam2, listExperimentsQuery2, listVariantsQuery2, listOverridesQuery2, deleteOverrideQuery2, createExperimentBody2, updateExperimentBody2, setExperimentStatusBody2, createVariantBody2, updateVariantBody2, upsertOverrideBody2, orgTagIdParam2, listOrgTagsQuery2, ORG_TAG_NAME_REGEX2, ORG_TAG_NAME_MAX_LENGTH2, createOrgTagBody2, updateOrgTagBody2, orgCredentialIdParam2, listOrgCredentialsQuery2, createOrgCredentialBody2, updateOrgCredentialBody2, BASE_CREDENTIAL_NAME_MAX2, baseCredentialNameSchema2, createBaseCredentialLinkBody2, baseCredentialLinkParams2, baseCredentialLinkQuery2, orgResourceIdParam2, orgResourceFileIdParam2, orgResourceFolderIdParam2, hubOrgResourceParam2, listOrgResourcesQuery2, orgIdQuery2, createOrgResourceBody2, updateOrgResourceBody2, createOrgResourceFolderBody2, updateOrgResourceFolderBody2, uploadOrgResourceFileBody2, updateOrgResourceFileBody2, uploadOrgSkillZipBody2, linkOrgResourceBody2, resourceIdParam2, listResourcesQuery2, createResourceBody2, updateResourceBody2, syncSkillsBody2, resourceFileIdParam2, listResourceFilesQuery2, createResourceFileBody2, updateResourceFileBody2, uploadResourceFileBody2, uploadSkillZipBody2, resourceFolderIdParam2, listResourceFoldersQuery2, createResourceFolderBody2, updateResourceFolderBody2, agentResourceQuery2, hubResourceQuery2, linkAgentResourceBody2, updateAgentResourceBody2, unlinkAgentResourceQuery2, navItemSchema2, hubCountResetBody2, navItemCountResetBody2, typingBody2, analyticsHubIdParam2, analyticsVariableIdParam2, updateVariablePinBody2, updateAnalyticsViewBody2, NUMERIC_FILTER_OPS2, TEXT_FILTER_OPS2, CATEGORICAL_FILTER_OPS2, VARIABLE_FILTER_OPS2, STRUCTURED_QUERY_OPS2, STRUCTURED_QUERY_AGGREGATIONS2, filterValueSchema2, conversationsBody2, analyticsConversationIdParam2, messagesQuery2, conversationDetailDataQuery2, analyticsDataBody2, structuredQueryBody2, analyticsSqlBody2, analyticsSqlTable2, analyticsSqlSchemaQuery2, EVAL_PACING_PRESET_NAMES2, PACING_INTERVAL_MIN_MS2, PACING_INTERVAL_MAX_MS2, EVAL_MAX_RUNS_PER_SCENARIO2, EVAL_RUN_DEADLINE_MIN_MS2, EVAL_RUN_DEADLINE_MAX_MS2, ISO_UTC_RE2, paginationSchema22, evalIdParam2, sessionIdParam2, scenarioSetIdParam2, hubIdQuery2, evalDateContextSchema2, EVAL_FIXTURE_NAME_MAX_LENGTH2, evalFixtureOverrideSchema2, runSessionQuery2, runJourneyQuery2, EVAL_INPUT_ROLES2, EVAL_INPUT_ROLE_LIST2, ROLE_ECHO_MAX2, EVAL_INITIAL_STATE_SCOPES2, MAX_INITIAL_STATE_ENTRIES2, evalInitialStateEntry2, createEvalBody2, updateEvalBody2, EVAL_LIST_MAX_LIMIT2, evalListLimit2, getEvalsQuery2, toggleEvalBody2, bulkToggleEvalsBody2, pacingConfigSchema2, EVAL_MAX_SELECTED_SCENARIOS2, evalScenarioSelectionEntrySchema2, evalScenarioSelectionSchema2, sessionConfigSchema2, createSessionBody2, getSessionsQuery2, getSessionResultsQuery2, getSessionRunsQuery2, evalAnalyticsQuery2, getSessionCostQuery2, compareSessionsQuery2, evalsSqlBody2, evalsSqlSchemaQuery2, exportResultsQuery2, validateEvalBody2, hubAgentsQuery2, createScenarioSetBody2, updateScenarioSetBody2, scenarioSetsHubQuery2, createScenarioFromConversationBody2, createJourneyFromConversationBody2, EVAL_ATTACHMENT_HASH_REGEX2, evalAttachmentRef2, turnMayCarryAttachments2, ATTACHMENTS_USER_ONLY_MESSAGE2, journeyIdParam2, journeyToolCallSchema2, journeyTurnSchema2, journeyStepOverrideSchema2, fixtureField2, createJourneyBody2, updateJourneyBody2, evalSessionConfigResponseSchema2, evalSessionResponseSchema2, evalSessionListConfigSchema2, evalSessionListItemSchema2, seedReleaseStatusSchema2, getConversationsQuery2, getMessagesQuery2, appMessageSenderType2, appMessageReceiverType2, apiChannelMessage2, apiChannelMessageBody2, appMessageBody2, appMessageResponse2, CALL_STATUSES2, callStatus2, CALL_END_REASONS2, callEndReason2, CALL_TRANSPORTS2, callTransport2, CALL_PARTICIPANT_TYPES2, callParticipantType2, callInstant2, MAX_SDP_OFFER_LENGTH2, sdpDescription2, sdpOffer2, MAX_CALL_REQUEST_BODY_BYTES2, hubScoped3, callSummaryFields2, callSummary2, callIdParam2, createCallBody2, createCallResponse2, callReadyBody2, callHangupBody2, callStatusQuery2, MAX_REPORTED_DELEGATION_IDS2, callDelegationId2, callDelegationsBody2, callResponse2, TTS_VOICE_REPLY_ENABLED_FIELD2, COPILOT_TRIGGER_FIELD2, AUDIO_LANGUAGE_OPTIONS2, whatsapp2, instagram2, resend2, telegram2, API_CHANNEL_DELIVERY_EVENTS2, apiChannel2, OPENAI_REASONING_MODELS2, openai2, anthropic2, googleAiStudio2, openRouter2, xai2, groqStt2, openaiStt2, elevenLabsStt2, openaiTts2, groqTts2, elevenLabsTts2, GEMINI_TTS_VOICES2, googleTts2, wayai2, externalResources2, restApiTool2, mcpServer2, e2b2, CLAUDE_HARNESS_MODELS2, CLAUDE_HARNESS_MODEL_OPTIONS2, HARNESS_MCP_SERVERS_FIELD2, HARNESS_EGRESS_FIELDS2, claudeAgentSdk2, claudeManagedAgents2, rekorMemory2, gptLive2, CONNECTORS2, evalCallInstant2, EVAL_CALL_MIN_SECONDS2, EVAL_CALL_MAX_SECONDS2, hubScoped22, createEvalCallBody2, createEvalCallResponse2, evalCallConversationQuery2, evalCallSpeaker2, evalCallUtterance2, evalCallTurn2, evalCallRecordResponse2, evalCallFinishResponse2, updateUserBody2, updateProfileBody2, pathnameRegex2, updatePreferencesBody2, registerPushTokenBody2, deletePushTokenQuery2, activityQuery2, deletionModeSchema2, deletionRequestBody2, archiveHubIdParam2, archiveConversationParams2, archiveListQuery2, archiveMessageObservabilityParams2, conversationIdParam2, claimBody2, releaseBody2, transferBody2, closeBody2, additionalContextPayloadSchema2, kanbanUpdateBody2, annotateConversationBody2, observabilityParams2, observabilityListParams2, deleteUserConversationsBody2, deleteUserConversationsResponse2, sendMessageBody2, listConversationsQuery2, flagSourceSchema2, getConversationsResponse2, getConversationDetailParams2, getConversationDetailQuery2, getConversationDetailResponse2, listWhatsAppTemplatesQuery2, sendWhatsAppTemplateBody2, copilotSuggestBody2, copilotSuggestResponse2, CONSULT_THREAD_STATUSES2, consultThreadStatus2, CONSULT_THREAD_TITLE_MAX2, consultThreadTitle2, consultThreadSummary2, listConsultThreadsQuery2, listConsultThreadsResponse2, createConsultThreadBody2, createConsultThreadResponse2, consultThreadIdParam2, updateConsultThreadBody2, updateConsultThreadResponse2, CONSULT_AWAIT_TIMEOUT_MS2, billingOrgIdParam2, subscriptionItemParams2, spendCapBody2, growthPacksBody2, portalSessionBody2, checkoutSessionBody2, updateBillingCurrencyBody2, invoicesQuery2, planKeySchema2, billingStatusSchema2, billingPlanTypeSchema2, dataUsageCountersSchema2, REKOR_ENTITLEMENT_CONTRACT_VERSION2, entitlementProjectionSchema2, rekorEntitlementRefreshMessageSchema2, downloadBody2, uploadQuery2, signUrlBody2, outboundSchemaQuery2, templateIdParam2, listTemplatesQuery2, deleteTemplateQuery2, templateStatusQuery2, createTemplateBody2, updateTemplateBody2, submitTemplateBody2, testTemplateBody2, contactIdParam2, listContactsQuery2, createContactBody2, updateContactBody2, listIdParam2, listListsQuery2, listListContactsQuery2, createListBody2, updateListBody2, addListContactsBody2, removeListContactsBody2, scheduleIdParam2, listSchedulesQuery2, listExecutionsQuery2, createScheduleBody2, updateScheduleBody2, MAX_RESOURCE_FILE_SIZE2, MAX_10MB_BASE64_ENCODED_BYTES2, MAX_EVAL_ATTACHMENT_ENCODED_BYTES2, MAX_EVAL_ATTACHMENT_CARRIERS2, MAX_EVAL_ATTACHMENT_AGGREGATE_ENCODED_BYTES2, MAX_RESOURCE_ENCODED_BYTES2, MAX_HUB_AS_CODE_RESOURCES2, MAX_HUB_AS_CODE_RESOURCE_FILES2, MAX_RESOURCE_AGGREGATE_ENCODED_BYTES2, MAX_CI_CONFIG_BODY_BYTES2, hubAsCodeStateSchema2, hubAsCodeResourceFileSchema2, hubAsCodeResourceSchema2, uuidPattern2, ciUuidSchema2, boundedHubAsCodeResourcesSchema2, hubAsCodeConfigSchema2, ciPullHubIdParam2, ciBranchParam2, ciPullQuery2, ciHubsQuery2, ciLookupQuery2, ciBranchesQuery2, ciSyncBody2, ciPushBody2, ciDiffBody2, ciPublishBody2, ciPublishPreviewBody2, ciSyncMcpBody2, ciOrgResourcesParam2, orgResourcesConfigSchema2, ciOrgResourcesPushBody2, ciOrgResourcesDiffBody2, CI_APPLY_ENTITY_KINDS2, CI_APPLY_OPERATIONS2, ciApplyErrorBaseSchema2, ciApplyErrorSchema2, ciSyncCountSchema2, ciSyncChangesSchema2, ciSyncWarningSchema2, ciSyncResponseSchema2, adminOrgIdParam2, adminVoiceCallsOrgIdParam2, adminOrgAdminIdParam2, adminUserIdParam2, PRICING_PLAN_ID_RE2, adminPlanIdParam2, adminOrganizationsQuery2, adminUserSearchQuery2, kanbanSlugMigrationQuery2, adjustQuotaBody2, updatePlanBody2, addAdminUserBody2, MAX_VOICE_CALL_MINUTE_OPS2, voiceCallMinuteOps2, updatePlatformConfigBody2, MAX_VOICE_CALLS_ALLOWLIST_ORGS2, voiceCallsOrgAllowlistSchema2, updateFreeOrgLimitBody2, adminScopedTargetBody2, adminRepairLegacyOrgGrantsBody2, adminRepairCompedPlansBody2, updatePricingPlanBody2, dataExplorerSearchQuery2, dataExplorerOrgIdParam2, dataExplorerHubIdParam2, dataExplorerConvIdParam2, dataExplorerDoInstancesQuery2, dataExplorerNsIdParam2, dataExplorerKvKeysBody2, dataExplorerKvKeyBody2, uuidOrHexId2, dataExplorerDeleteOrgParam2, dataExplorerDeleteHubParam2, dataExplorerDeleteConvParam2, dataExplorerDeleteUserParam2, dataExplorerDeleteQuery2, dataExplorerKvDeleteBody2, pitrDoNamespace2, pitrBookmarkParam2, pitrRestoreBody2, healthSamplingTriggerBody2, dataExplorerDebugDoType2, DEBUG_READ_MAX_LIMIT2, DEBUG_READ_DEFAULT_LIMIT2, DEBUG_DO_HEX_PREFIX2, debugDoEntityId2, debugTableName2, dataExplorerDebugTablesParam2, dataExplorerDebugRowsParam2, dataExplorerDebugRowsQuery2, dataExplorerDebugAnalyticsTable2, debugUuid2, dataExplorerDebugAnalyticsRowsParam2, dataExplorerDebugAnalyticsRowsQuery2, debugHubConvParam2, debugMessageIdQuery2, sandboxEgressPolicy2, SANDBOX_EXEC_MAX_CMD_LENGTH2, SANDBOX_EXEC_MAX_ALLOWLIST2, SANDBOX_EXEC_MAX_TIMEOUT_MS2, adminSandboxExecBody2, META_ENTITY_ID_PATTERN2, metaEntityId2, whatsappCallbackBody2, authMeResponse2, wsTicketResponse2, sessionCheckResponse2, logoutResponse2, magicCodeSendBody2, magicCodeSendResponse2, magicCodeVerifyBody2, magicCodeVerifyResponse2, passwordLoginBody2, browserParams2, browserFoldersQuery2, browserFilesQuery2, stateOperationBody2, conversationListResourcesQuery2, conversationReadResourceQuery2, listPendingSchedulesQuery2, listHubAggregateSchedulesQuery2, reportSourceSchema2, intakeReportSourceSchema2, reportClassificationSchema2, reportStatusSchema2, reportLocaleSchema2, reportMessageAuthorRoleSchema2, reportMessageSchema2, sentryRefStatusSchema2, createReportBody2, editReportBody2, reporterReportSummarySchema2, reporterListResponseSchema2, getReportResponseSchema2, reporterTransitionResponseSchema2, contestReportBody2, reporterListQuery2, listReportsQuery2, GITHUB_ISSUE_URL_REGEX2, githubIssueUrlSchema2, transitionReportBody2, groupReportsBody2, holdReportBody2, clickhouseReadyResponse2, bootstrapQuery2, requestSnapshotChunkMessage2, MAX_NAME_LENGTH3, MAX_VALUE_LENGTH2, MAX_TAGS2, MAX_TAG_LENGTH2, MAX_SCOPE_HUBS2, MAX_SCOPE_TAGS2, vaultSecretScopeSchema2, vaultCreateBody2, vaultUpdateBody2, PERMISSIONS2, MAX_NAME_LENGTH22, MAX_HUBS_PER_GRANT2, MAX_HUB_TAGS_PER_GRANT2, MAX_GRANTS2, permissionEnum2, grantScopeSchema2, grantSchema2, createTokenBody2, tokenOrgIdParam2, tokenGrantScopeSchema2, tokenGrantSchema2, tokenMetadataSchema2, listTokensResponse2, createTokenResponse2, orgTokenSummarySchema2, listOrgTokensResponse2, invitePreviewQuery2, invitePreviewResponse2, jsonSchemaSchema2, hubUserIdentity2, stateValueEntry2, getHubUserContextResponse2, updateHubUserBody2, updateHubUserResponse2, unlockHubUserNameResponse2, stateResetParams2, stateResetResponse2, hubAlertsParam2, hubAlertSeverity2, hubAlert2, hubAlertsListResponse2, noticeSeveritySchema2, noticeStatusSchema2, NOTICE_SCOPE_REGEX2, noticeScopeSchema2, noticeLinkSchema2, createNoticeBody2, updateNoticeBody2, listNoticesQuery2, noticeIdParamSchema2, ADMIN_SKILL_NAME_REGEX2, adminSkillNameParam2, rekorBaseChangeMessageSchema2, WAYAI_WORKSPACE_LAYOUT, decisionAnswerSchema, decisionsResponseSchema;
14134
+ var UUID_RE, HEX_RE, WORKOS_ID_RE, OPAQUE_SECRET_RE, BASE64_SECRET_RE, BASE64_MARKER_RE, TOKEN_RE, SENSITIVE_FIELDS, SENSITIVE_KEY_ALTERNATION, SENSITIVE_KEY_PATTERN, JSON_CREDENTIAL_RE, QUERY_CREDENTIAL_RE, REDACTED, PROVIDER_TOKEN_RE, APP_ERROR_BRAND, AppError, LLM_RATE_LIMIT_BRAND, LlmRateLimitError, LLM_PROVIDER_HTTP_BRAND, LlmProviderHttpError, LLM_PROVIDER_CONTENT_BRAND, LlmProviderContentError, LLM_PROVIDER_TIMEOUT_BRAND, LlmProviderTimeoutError, ExternalServiceError, CHANNEL_PROVIDER_HTTP_BRAND, ChannelProviderHttpError, MEDIA_PROVIDER_HTTP_BRAND, MediaProviderHttpError, REKOR_ACTOR_TYPE_HEADER2, REKOR_ACTOR_ID_HEADER2, REKOR_ACTOR_LABEL_HEADER2, REKOR_ACTOR_ORG_HEADER2, REKOR_ACTOR_ADMIN_HEADER2, REKOR_CLIENT_HEADER2, REKOR_TOOL_ID_HEADER2, REKOR_CLIENTS2, rekorClientSchema2, MAX_REKOR_TOOL_ID_LENGTH2, rekorToolIdSchema2, DATA_PROXY_MOUNT2, DATA_PROXY_PREFIX2, DATA_PROXY_ORG_QUERY_PARAM2, MAX_PROVISIONING_BODY_BYTES2, dataProxyQuery2, rekorAttestation2, REQUIRED_REKOR_ATTESTATION_HEADERS2, BASE_DESTRUCTION_MOUNT2, BASE_DESTRUCTION_PREFIX2, BASE_DESTRUCTION_CONFIRM_PATH2, baseDestructionConfirmBody2, BASE_DESTRUCTION_GRACE_MS2, BASE_DESTRUCTION_CONFIRM_TTL_MS2, BASE_DESTRUCTION_ORG_QUERY_PARAM2, baseDestructionQuery2, baseDestructionParam2, baseDestructionInitiateBody2, baseDestructionStatus2, baseDestructionRequest2, baseDestructionListResponse2, baseDestructionInitiateResponse2, baseDestructionConfirmResponse2, baseDestructionCancelResponse2, ENDPOINT_CONFIGS, AUTH_TYPE2, ORG_CREDENTIAL_AUTH_TYPES2, AUTH_TYPE_DISPLAY2, LEGACY_AUTH_TYPE_MAP2, VALID_AUTH_TYPES2, AGENT_ROLES2, SAFE_USER_ID_REGEX2, SUPPORTED_LOCALES2, uuidSchema2, paginationSchema3, timestampSchema2, idParamSchema2, clientOptionalString2, clientOptionalBoolean2, clientOptionalNumber2, messageAttachment2, MAX_MESSAGE_BODY_BYTES2, MAX_ATTACHMENTS_PER_MESSAGE2, MAX_AUDIO_FILE_BASE64_BYTES2, primaryRegionSchema2, placementSourceSchema2, orgIdParam2, orgAdminIdParam2, createOrganizationBody2, updateOrganizationBody2, addOrgAdminBody2, SUMMARIZATION_THRESHOLD_MIN2, SUMMARIZATION_THRESHOLD_MAX2, PREVIOUS_CONVERSATIONS_MAX2, FLAG_CONDITION_OPERATORS2, CONFIDENCE_VARIABLE_SUFFIX2, DECISION_SCORE_MIN_LEVELS2, DECISION_SCORE_MAX_LEVELS2, DECISIONS_MODEL_PREFIXES2, DECISION_CAPABLE_AGENT_ROLES2, NATIVE_TOOL_SCHEMAS2, WAYAI_CONNECTOR2, BASE_NATIVE_TOOLS2, NATIVE_TOOLS2, CATALOG_SIDE_EFFECTS2, NATIVE_TOOL_NAMES2, previousConversationsCountField2, summarizationThresholdField2, flagConditionSchema2, MONITOR_TRIGGERS2, monitorTriggerSchema2, MONITOR_FIRING_TRIGGERS2, MONITOR_DELAY_SECONDS_MIN2, MONITOR_IDLE_DELAY_REQUIRED_MESSAGE2, MONITOR_HISTORY_MESSAGES_MAX2, monitorHistoryMessagesSchema2, monitorIncludeToolResultsSchema2, MONITOR_INPUT_SHAPING_KEYS2, MONITOR_INPUT_SHAPING_SCHEMAS2, MONITOR_INPUT_SHAPING_IDLE_MESSAGE2, monitorArgumentSourceSchema2, MONITOR_NOTE_TEMPLATE_MAX2, MONITOR_STEER_NOTE_MAX2, monitorActionSchema2, monitorRuleSchema2, MONITOR_RULE_KEYS2, MONITOR_RULE_SCHEMAS2, MONITOR_RULE_TRIGGERS2, MONITOR_RULE_TRIGGER_MESSAGE2, CALL_UTTERANCE_SPEAKERS2, callUtteranceSpeakerSchema2, MONITOR_CALL_KEYS2, MONITOR_CALL_SCHEMAS2, MONITOR_CALL_KEY_MESSAGE2, CALL_STEERING_MIN_CONFIDENCE2, CALL_UTTERANCE_RULE_NOT_CONFIDENT_MESSAGE2, CALL_UTTERANCE_FALLBACK_MESSAGE2, CALL_UTTERANCE_FLAG_CONDITIONS_MESSAGE2, CALL_STEER_NOTE_BLANK_MESSAGE2, MONITOR_USER_MESSAGE_ACTION_KINDS2, MONITOR_ASSISTANT_REPLY_ACTION_KINDS2, MONITOR_CALL_UTTERANCE_ACTION_KINDS2, INSERT_NOTE_TOOL_NAME2, RUN_MONITOR_TOOL_NAME2, MONITOR_RULE_ALLOWED_NATIVE_TOOLS2, MONITOR_RULE_REENTRY_TOOLS2, MONITOR_RULE_REENTRY_TRACKS2, monitorConfigField2, flagConditionsField2, agentIdParam2, listAgentsQuery2, agentConnectionsQuery2, createAgentBody2, updateAgentBody2, AGENT_PARAMETER_TYPES2, AGENT_PARAMETER_NAME_REGEX2, agentParameterCreateSchema2, MAX_AGENT_PARAMETERS_PER_REQUEST2, createAgentParametersBody2, SLUG_REGEX2, slugSchema2, INVISIBLE_NAME_CHARS2, MAX_KANBAN_STATUSES2, MAX_FOLLOWUPS_PER_STATUS2, MAX_LANES2, MAX_ADDITIONAL_CONTEXT_SCHEMA_BYTES2, RESERVED_TEMPLATE_DUMP_NAME2, kanbanStatusSlugSchema2, followupTypeSchema2, EVENT_RELATIVE_FOLLOWUP_TYPES2, followupTimeUnitSchema2, followupIdSchema2, SELECTABLE_FOLLOWUP_TYPES2, MAX_LINKED_FOLLOWUP_TARGETS_PER_STATUS2, followupSchema2, MAX_OUTCOMES_PER_STATUS2, kanbanOutcomeSchema2, EXCLUSIVE_FLAG_PAIRS2, kanbanStatusSchema2, kanbanStatusesArraySchema2, laneSchema2, lanesArraySchema2, hubIdParam2, hubAdminIdParam2, hubUserIdParam2, hubIdentityIdParam2, hubTeamIdParam2, hubTeamUserDeleteParam2, hubSchemaQuery2, PREVIEW_LABEL_MAX_LENGTH2, MAX_ENDED_INDEX_RETENTION_DAYS2, MAX_EVAL_RETENTION_DAYS2, previewLabelField2, createHubBody2, updateHubBody2, addHubAdminBody2, addHubIdentityAuthorizationBody2, contactDecisionBody2, approveContactBody2, listContactAccessQuery2, createHubTeamBody2, updateHubTeamBody2, addHubTeamUserBody2, reassignHubUserBody2, replicatePreviewBody2, updateChannelTestIdentitiesBody2, claimCodeChannelParam2, claimCodeDeleteParam2, connectionIdParam2, connectorIdParam2, listConnectionsQuery2, deleteConnectionQuery2, addConnectionBody2, editConnectionBody2, PRODUCTION_DIRECT_FIELDS2, setProductionCredentialBody2, registerWhatsappQuery2, registerWhatsappBody2, retryProvisioningQuery2, resendDomainStatusQuery2, PLACEHOLDER_TOKENS2, ALLOWED_TYPES2, SUBSCHEMA_OBJECT_KEYWORDS2, SUBSCHEMA_LIST_KEYWORDS2, SUBSCHEMA_MAP_KEYWORDS2, MAX_SCHEMA_DEPTH2, toolIdParam2, listToolsQuery2, toolAgentQuery2, deleteToolQuery2, toolConnectionsQuery2, nativeToolIdSchema2, CONTEXT_BOUNDARIES2, contextBoundarySchema2, addNativeToolBody2, addMcpToolBody2, createCustomToolBody2, updateCustomToolBody2, updateToolExecutionConfigBody2, initialValueCreateSchema2, initialValueUpdateSchema2, stateIdParam2, listStatesQuery2, stateNameSchema2, createStateBody2, updateStateBody2, reorderStatesBody2, variantAiModeSchema2, experimentStatusSchema2, overlayUpdateSchema2, experimentIdParam2, variantIdParam2, listExperimentsQuery2, listVariantsQuery2, listOverridesQuery2, deleteOverrideQuery2, createExperimentBody2, updateExperimentBody2, setExperimentStatusBody2, createVariantBody2, updateVariantBody2, upsertOverrideBody2, orgTagIdParam2, listOrgTagsQuery2, ORG_TAG_NAME_REGEX2, ORG_TAG_NAME_MAX_LENGTH2, createOrgTagBody2, updateOrgTagBody2, orgCredentialIdParam2, listOrgCredentialsQuery2, createOrgCredentialBody2, updateOrgCredentialBody2, BASE_CREDENTIAL_NAME_MAX2, baseCredentialNameSchema2, createBaseCredentialLinkBody2, baseCredentialLinkParams2, baseCredentialLinkQuery2, orgResourceIdParam2, orgResourceFileIdParam2, orgResourceFolderIdParam2, hubOrgResourceParam2, listOrgResourcesQuery2, orgIdQuery2, createOrgResourceBody2, updateOrgResourceBody2, createOrgResourceFolderBody2, updateOrgResourceFolderBody2, uploadOrgResourceFileBody2, updateOrgResourceFileBody2, uploadOrgSkillZipBody2, linkOrgResourceBody2, resourceIdParam2, listResourcesQuery2, createResourceBody2, updateResourceBody2, syncSkillsBody2, resourceFileIdParam2, listResourceFilesQuery2, createResourceFileBody2, updateResourceFileBody2, uploadResourceFileBody2, uploadSkillZipBody2, resourceFolderIdParam2, listResourceFoldersQuery2, createResourceFolderBody2, updateResourceFolderBody2, agentResourceQuery2, hubResourceQuery2, linkAgentResourceBody2, updateAgentResourceBody2, unlinkAgentResourceQuery2, navItemSchema2, hubCountResetBody2, navItemCountResetBody2, typingBody2, analyticsHubIdParam2, analyticsVariableIdParam2, updateVariablePinBody2, updateAnalyticsViewBody2, NUMERIC_FILTER_OPS2, TEXT_FILTER_OPS2, CATEGORICAL_FILTER_OPS2, VARIABLE_FILTER_OPS2, STRUCTURED_QUERY_OPS2, STRUCTURED_QUERY_AGGREGATIONS2, filterValueSchema2, conversationsBody2, analyticsConversationIdParam2, messagesQuery2, conversationDetailDataQuery2, analyticsDataBody2, structuredQueryBody2, analyticsSqlBody2, analyticsSqlTable2, analyticsSqlSchemaQuery2, EVAL_PACING_PRESET_NAMES2, PACING_INTERVAL_MIN_MS2, PACING_INTERVAL_MAX_MS2, EVAL_MAX_RUNS_PER_SCENARIO2, EVAL_RUN_DEADLINE_MIN_MS2, EVAL_RUN_DEADLINE_MAX_MS2, ISO_UTC_RE2, paginationSchema22, evalIdParam2, sessionIdParam2, scenarioSetIdParam2, hubIdQuery2, evalDateContextSchema2, EVAL_FIXTURE_NAME_MAX_LENGTH2, evalFixtureOverrideSchema2, runSessionQuery2, runJourneyQuery2, EVAL_INPUT_ROLES2, EVAL_INPUT_ROLE_LIST2, ROLE_ECHO_MAX2, EVAL_INITIAL_STATE_SCOPES2, MAX_INITIAL_STATE_ENTRIES2, evalInitialStateEntry2, createEvalBody2, updateEvalBody2, EVAL_LIST_MAX_LIMIT2, evalListLimit2, getEvalsQuery2, toggleEvalBody2, bulkToggleEvalsBody2, pacingConfigSchema2, EVAL_MAX_SELECTED_SCENARIOS2, evalScenarioSelectionEntrySchema2, evalScenarioSelectionSchema2, sessionConfigSchema2, createSessionBody2, getSessionsQuery2, getSessionResultsQuery2, getSessionRunsQuery2, evalAnalyticsQuery2, getSessionCostQuery2, compareSessionsQuery2, evalsSqlBody2, evalsSqlSchemaQuery2, exportResultsQuery2, validateEvalBody2, hubAgentsQuery2, createScenarioSetBody2, updateScenarioSetBody2, scenarioSetsHubQuery2, createScenarioFromConversationBody2, createJourneyFromConversationBody2, EVAL_ATTACHMENT_HASH_REGEX2, evalAttachmentRef2, turnMayCarryAttachments2, ATTACHMENTS_USER_ONLY_MESSAGE2, journeyIdParam2, journeyToolCallSchema2, journeyTurnSchema2, journeyStepOverrideSchema2, fixtureField2, createJourneyBody2, updateJourneyBody2, evalSessionConfigResponseSchema2, evalSessionResponseSchema2, evalSessionListConfigSchema2, evalSessionListItemSchema2, seedReleaseStatusSchema2, getConversationsQuery2, getMessagesQuery2, appMessageSenderType2, appMessageReceiverType2, apiChannelMessage2, apiChannelMessageBody2, appMessageBody2, appMessageResponse2, CALL_STATUSES2, callStatus2, CALL_END_REASONS2, callEndReason2, CALL_TRANSPORTS2, callTransport2, CALL_PARTICIPANT_TYPES2, callParticipantType2, callInstant2, MAX_SDP_OFFER_LENGTH2, sdpDescription2, sdpOffer2, MAX_CALL_REQUEST_BODY_BYTES2, hubScoped3, callSummaryFields2, callSummary2, callIdParam2, createCallBody2, createCallResponse2, callReadyBody2, callHangupBody2, callStatusQuery2, MAX_REPORTED_DELEGATION_IDS2, callDelegationId2, callDelegationsBody2, callResponse2, MAX_CALL_RECORDING_GAPS2, callRecordingGap2, callRecordingNoteMetadata2, TTS_VOICE_REPLY_ENABLED_FIELD2, COPILOT_TRIGGER_FIELD2, AUDIO_LANGUAGE_OPTIONS2, whatsapp2, instagram2, resend2, telegram2, API_CHANNEL_DELIVERY_EVENTS2, apiChannel2, OPENAI_REASONING_MODELS2, openai2, anthropic2, googleAiStudio2, openRouter2, xai2, groqStt2, openaiStt2, elevenLabsStt2, openaiTts2, groqTts2, elevenLabsTts2, GEMINI_TTS_VOICES2, googleTts2, wayai2, externalResources2, restApiTool2, mcpServer2, e2b2, CLAUDE_HARNESS_MODELS2, CLAUDE_HARNESS_MODEL_OPTIONS2, HARNESS_MCP_SERVERS_FIELD2, HARNESS_EGRESS_FIELDS2, claudeAgentSdk2, claudeManagedAgents2, rekorMemory2, gptLive2, CONNECTORS2, evalCallInstant2, EVAL_CALL_MIN_SECONDS2, EVAL_CALL_MAX_SECONDS2, hubScoped22, createEvalCallBody2, createEvalCallResponse2, evalCallConversationQuery2, evalCallSpeaker2, evalCallUtterance2, evalCallTurn2, evalCallRecordResponse2, evalCallFinishResponse2, updateUserBody2, updateProfileBody2, pathnameRegex2, updatePreferencesBody2, registerPushTokenBody2, deletePushTokenQuery2, activityQuery2, deletionModeSchema2, deletionRequestBody2, archiveHubIdParam2, archiveConversationParams2, archiveListQuery2, archiveMessageObservabilityParams2, conversationIdParam2, claimBody2, releaseBody2, transferBody2, closeBody2, additionalContextPayloadSchema2, kanbanUpdateBody2, annotateConversationBody2, observabilityParams2, observabilityListParams2, deleteUserConversationsBody2, deleteUserConversationsResponse2, sendMessageBody2, listConversationsQuery2, flagSourceSchema2, getConversationsResponse2, getConversationDetailParams2, getConversationDetailQuery2, getConversationDetailResponse2, listWhatsAppTemplatesQuery2, sendWhatsAppTemplateBody2, copilotSuggestBody2, copilotSuggestResponse2, CONSULT_THREAD_STATUSES2, consultThreadStatus2, CONSULT_THREAD_TITLE_MAX2, consultThreadTitle2, consultThreadSummary2, listConsultThreadsQuery2, listConsultThreadsResponse2, createConsultThreadBody2, createConsultThreadResponse2, consultThreadIdParam2, updateConsultThreadBody2, updateConsultThreadResponse2, CONSULT_AWAIT_TIMEOUT_MS2, billingOrgIdParam2, subscriptionItemParams2, spendCapBody2, growthPacksBody2, portalSessionBody2, checkoutSessionBody2, updateBillingCurrencyBody2, invoicesQuery2, planKeySchema2, billingStatusSchema2, billingPlanTypeSchema2, dataUsageCountersSchema2, REKOR_ENTITLEMENT_CONTRACT_VERSION2, entitlementProjectionSchema2, rekorEntitlementRefreshMessageSchema2, downloadBody2, uploadQuery2, signUrlBody2, outboundSchemaQuery2, templateIdParam2, listTemplatesQuery2, deleteTemplateQuery2, templateStatusQuery2, createTemplateBody2, updateTemplateBody2, submitTemplateBody2, testTemplateBody2, contactIdParam2, listContactsQuery2, createContactBody2, updateContactBody2, listIdParam2, listListsQuery2, listListContactsQuery2, createListBody2, updateListBody2, addListContactsBody2, removeListContactsBody2, scheduleIdParam2, listSchedulesQuery2, listExecutionsQuery2, createScheduleBody2, updateScheduleBody2, MAX_RESOURCE_FILE_SIZE2, MAX_10MB_BASE64_ENCODED_BYTES2, MAX_EVAL_ATTACHMENT_ENCODED_BYTES2, MAX_EVAL_ATTACHMENT_CARRIERS2, MAX_EVAL_ATTACHMENT_AGGREGATE_ENCODED_BYTES2, MAX_RESOURCE_ENCODED_BYTES2, MAX_HUB_AS_CODE_RESOURCES2, MAX_HUB_AS_CODE_RESOURCE_FILES2, MAX_RESOURCE_AGGREGATE_ENCODED_BYTES2, MAX_CI_CONFIG_BODY_BYTES2, hubAsCodeStateSchema2, hubAsCodeResourceFileSchema2, hubAsCodeResourceSchema2, uuidPattern2, ciUuidSchema2, boundedHubAsCodeResourcesSchema2, hubAsCodeConfigSchema2, ciPullHubIdParam2, ciBranchParam2, ciPullQuery2, ciHubsQuery2, ciLookupQuery2, ciBranchesQuery2, ciSyncBody2, ciPushBody2, ciDiffBody2, ciPublishBody2, ciPublishPreviewBody2, ciSyncMcpBody2, ciOrgResourcesParam2, orgResourcesConfigSchema2, ciOrgResourcesPushBody2, ciOrgResourcesDiffBody2, CI_APPLY_ENTITY_KINDS2, CI_APPLY_OPERATIONS2, ciApplyErrorBaseSchema2, ciApplyErrorSchema2, ciSyncCountSchema2, ciSyncChangesSchema2, ciSyncWarningSchema2, ciSyncResponseSchema2, adminOrgIdParam2, adminOrgAdminIdParam2, adminUserIdParam2, PRICING_PLAN_ID_RE2, adminPlanIdParam2, adminOrganizationsQuery2, adminUserSearchQuery2, kanbanSlugMigrationQuery2, adjustQuotaBody2, updatePlanBody2, addAdminUserBody2, MAX_VOICE_CALL_MINUTE_OPS2, voiceCallMinuteOps2, updatePlatformConfigBody2, updateFreeOrgLimitBody2, adminScopedTargetBody2, adminRepairLegacyOrgGrantsBody2, adminRepairCompedPlansBody2, updatePricingPlanBody2, dataExplorerSearchQuery2, dataExplorerOrgIdParam2, dataExplorerHubIdParam2, dataExplorerConvIdParam2, dataExplorerDoInstancesQuery2, dataExplorerNsIdParam2, dataExplorerKvKeysBody2, dataExplorerKvKeyBody2, uuidOrHexId2, dataExplorerDeleteOrgParam2, dataExplorerDeleteHubParam2, dataExplorerDeleteConvParam2, dataExplorerDeleteUserParam2, dataExplorerDeleteQuery2, dataExplorerKvDeleteBody2, pitrDoNamespace2, pitrBookmarkParam2, pitrRestoreBody2, healthSamplingTriggerBody2, dataExplorerDebugDoType2, DEBUG_READ_MAX_LIMIT2, DEBUG_READ_DEFAULT_LIMIT2, DEBUG_DO_HEX_PREFIX2, debugDoEntityId2, debugTableName2, dataExplorerDebugTablesParam2, dataExplorerDebugRowsParam2, dataExplorerDebugRowsQuery2, dataExplorerDebugAnalyticsTable2, debugUuid2, dataExplorerDebugAnalyticsRowsParam2, dataExplorerDebugAnalyticsRowsQuery2, debugHubConvParam2, debugMessageIdQuery2, sandboxEgressPolicy2, SANDBOX_EXEC_MAX_CMD_LENGTH2, SANDBOX_EXEC_MAX_ALLOWLIST2, SANDBOX_EXEC_MAX_TIMEOUT_MS2, adminSandboxExecBody2, META_ENTITY_ID_PATTERN2, metaEntityId2, whatsappCallbackBody2, authMeResponse2, wsTicketResponse2, sessionCheckResponse2, logoutResponse2, magicCodeSendBody2, magicCodeSendResponse2, magicCodeVerifyBody2, magicCodeVerifyResponse2, passwordLoginBody2, browserParams2, browserFoldersQuery2, browserFilesQuery2, stateOperationBody2, conversationListResourcesQuery2, conversationReadResourceQuery2, listPendingSchedulesQuery2, listHubAggregateSchedulesQuery2, reportSourceSchema2, intakeReportSourceSchema2, reportClassificationSchema2, reportStatusSchema2, reportLocaleSchema2, reportMessageAuthorRoleSchema2, reportMessageSchema2, sentryRefStatusSchema2, createReportBody2, editReportBody2, reporterReportSummarySchema2, reporterListResponseSchema2, getReportResponseSchema2, reporterTransitionResponseSchema2, contestReportBody2, reporterListQuery2, listReportsQuery2, GITHUB_ISSUE_URL_REGEX2, githubIssueUrlSchema2, transitionReportBody2, groupReportsBody2, holdReportBody2, clickhouseReadyResponse2, bootstrapQuery2, requestSnapshotChunkMessage2, MAX_NAME_LENGTH3, MAX_VALUE_LENGTH2, MAX_TAGS2, MAX_TAG_LENGTH2, MAX_SCOPE_HUBS2, MAX_SCOPE_TAGS2, vaultSecretScopeSchema2, vaultCreateBody2, vaultUpdateBody2, PERMISSIONS2, MAX_NAME_LENGTH22, MAX_HUBS_PER_GRANT2, MAX_HUB_TAGS_PER_GRANT2, MAX_GRANTS2, permissionEnum2, grantScopeSchema2, grantSchema2, createTokenBody2, tokenOrgIdParam2, tokenGrantScopeSchema2, tokenGrantSchema2, tokenMetadataSchema2, listTokensResponse2, createTokenResponse2, orgTokenSummarySchema2, listOrgTokensResponse2, invitePreviewQuery2, invitePreviewResponse2, jsonSchemaSchema2, hubUserIdentity2, stateValueEntry2, getHubUserContextResponse2, updateHubUserBody2, updateHubUserResponse2, unlockHubUserNameResponse2, stateResetParams2, stateResetResponse2, hubAlertsParam2, hubAlertSeverity2, hubAlert2, hubAlertsListResponse2, noticeSeveritySchema2, noticeStatusSchema2, NOTICE_SCOPE_REGEX2, noticeScopeSchema2, noticeLinkSchema2, createNoticeBody2, updateNoticeBody2, listNoticesQuery2, noticeIdParamSchema2, ADMIN_SKILL_NAME_REGEX2, adminSkillNameParam2, rekorBaseChangeMessageSchema2, WAYAI_WORKSPACE_LAYOUT, decisionAnswerSchema, decisionsResponseSchema;
13949
14135
  var init_dist = __esm({
13950
14136
  "../../packages/core/dist/index.js"() {
13951
14137
  "use strict";
@@ -14608,6 +14794,7 @@ var init_dist = __esm({
14608
14794
  SUMMARIZATION_THRESHOLD_MAX2 = 1e6;
14609
14795
  PREVIOUS_CONVERSATIONS_MAX2 = 20;
14610
14796
  FLAG_CONDITION_OPERATORS2 = ["=", "!=", ">=", "<=", ">", "<"];
14797
+ CONFIDENCE_VARIABLE_SUFFIX2 = "_confidence";
14611
14798
  DECISION_SCORE_MIN_LEVELS2 = 2;
14612
14799
  DECISION_SCORE_MAX_LEVELS2 = 10;
14613
14800
  DECISIONS_MODEL_PREFIXES2 = ["typesafe/jev-", "jev-"];
@@ -15497,6 +15684,9 @@ var init_dist = __esm({
15497
15684
  tool_instructions: schema.tool_instructions
15498
15685
  };
15499
15686
  });
15687
+ CATALOG_SIDE_EFFECTS2 = new Map(
15688
+ NATIVE_TOOLS2.map((tool) => [tool.tool_name, tool.side_effects])
15689
+ );
15500
15690
  NATIVE_TOOL_NAMES2 = new Set(NATIVE_TOOLS2.map((t) => t.tool_name));
15501
15691
  previousConversationsCountField2 = external_exports.number().int().min(0).max(PREVIOUS_CONVERSATIONS_MAX2).nullable().optional();
15502
15692
  summarizationThresholdField2 = external_exports.number().int().min(SUMMARIZATION_THRESHOLD_MIN2).max(SUMMARIZATION_THRESHOLD_MAX2).nullable().optional();
@@ -15511,7 +15701,7 @@ var init_dist = __esm({
15511
15701
  // fail on a hub configured through the other surface.
15512
15702
  value: external_exports.union([external_exports.string(), external_exports.number(), external_exports.boolean()])
15513
15703
  });
15514
- MONITOR_TRIGGERS2 = ["idle", "user_message", "assistant_reply", "manual"];
15704
+ MONITOR_TRIGGERS2 = ["idle", "user_message", "assistant_reply", "manual", "call_utterance"];
15515
15705
  monitorTriggerSchema2 = external_exports.enum(MONITOR_TRIGGERS2);
15516
15706
  MONITOR_FIRING_TRIGGERS2 = MONITOR_TRIGGERS2.filter(isFiringTrigger2);
15517
15707
  MONITOR_DELAY_SECONDS_MIN2 = 10;
@@ -15524,12 +15714,13 @@ var init_dist = __esm({
15524
15714
  history_messages: monitorHistoryMessagesSchema2.optional(),
15525
15715
  include_tool_results: monitorIncludeToolResultsSchema2.optional()
15526
15716
  };
15527
- MONITOR_INPUT_SHAPING_IDLE_MESSAGE2 = "only a user_message, assistant_reply or manual monitor reads this \u2014 an idle monitor runs as a full turn and takes the ordinary history window";
15717
+ MONITOR_INPUT_SHAPING_IDLE_MESSAGE2 = "only a user_message, assistant_reply, manual or call_utterance monitor reads this \u2014 an idle monitor runs as a full turn and takes the ordinary history window";
15528
15718
  monitorArgumentSourceSchema2 = external_exports.union([
15529
15719
  external_exports.object({ from_variable: external_exports.string().min(1) }).strict(),
15530
15720
  external_exports.object({ const: external_exports.union([external_exports.string(), external_exports.number(), external_exports.boolean()]) }).strict()
15531
15721
  ]);
15532
15722
  MONITOR_NOTE_TEMPLATE_MAX2 = 2e3;
15723
+ MONITOR_STEER_NOTE_MAX2 = 500;
15533
15724
  monitorActionSchema2 = external_exports.discriminatedUnion("kind", [
15534
15725
  external_exports.object({ kind: external_exports.literal("none") }).strict(),
15535
15726
  external_exports.object({
@@ -15538,7 +15729,8 @@ var init_dist = __esm({
15538
15729
  args: external_exports.record(monitorArgumentSourceSchema2).optional()
15539
15730
  }).strict(),
15540
15731
  external_exports.object({ kind: external_exports.literal("hold") }).strict(),
15541
- external_exports.object({ kind: external_exports.literal("rewrite"), note: external_exports.string().min(1).max(MONITOR_NOTE_TEMPLATE_MAX2) }).strict()
15732
+ external_exports.object({ kind: external_exports.literal("rewrite"), note: external_exports.string().min(1).max(MONITOR_NOTE_TEMPLATE_MAX2) }).strict(),
15733
+ external_exports.object({ kind: external_exports.literal("steer"), note: external_exports.string().min(1).max(MONITOR_STEER_NOTE_MAX2) }).strict()
15542
15734
  ]);
15543
15735
  monitorRuleSchema2 = external_exports.object({
15544
15736
  when: external_exports.array(flagConditionSchema2).min(1),
@@ -15549,10 +15741,23 @@ var init_dist = __esm({
15549
15741
  rules: external_exports.array(monitorRuleSchema2).optional(),
15550
15742
  fallback: monitorActionSchema2.optional()
15551
15743
  };
15552
- MONITOR_RULE_TRIGGERS2 = ["user_message", "assistant_reply", "manual"];
15553
- MONITOR_RULE_TRIGGER_MESSAGE2 = "only a user_message, assistant_reply or manual monitor acts on rules \u2014 set one of those triggers, or remove this key. A manual monitor acts on its rules when another monitor runs it.";
15744
+ MONITOR_RULE_TRIGGERS2 = ["user_message", "assistant_reply", "manual", "call_utterance"];
15745
+ MONITOR_RULE_TRIGGER_MESSAGE2 = "only a user_message, assistant_reply, manual or call_utterance monitor acts on rules \u2014 set one of those triggers, or remove this key. A manual monitor acts on its rules when another monitor runs it.";
15746
+ CALL_UTTERANCE_SPEAKERS2 = ["caller", "voice", "both"];
15747
+ callUtteranceSpeakerSchema2 = external_exports.enum(CALL_UTTERANCE_SPEAKERS2);
15748
+ MONITOR_CALL_KEYS2 = ["speaker"];
15749
+ MONITOR_CALL_SCHEMAS2 = {
15750
+ speaker: callUtteranceSpeakerSchema2.optional()
15751
+ };
15752
+ MONITOR_CALL_KEY_MESSAGE2 = "only a call_utterance monitor reads this: it names whose speech on a live call a check waits for";
15753
+ CALL_STEERING_MIN_CONFIDENCE2 = 0.9;
15754
+ CALL_UTTERANCE_RULE_NOT_CONFIDENT_MESSAGE2 = `a call_utterance rule acts on a live call from a transcript that can be misheard, so it must be high-confidence: give it a condition on one of this monitor's "\u2026${CONFIDENCE_VARIABLE_SUFFIX2}" variables with ">= ${CALL_STEERING_MIN_CONFIDENCE2}" or a higher bar, up to 1.`;
15755
+ CALL_UTTERANCE_FALLBACK_MESSAGE2 = "a call_utterance monitor acts only when a high-confidence rule matches \u2014 a fallback would act on every check of the call. Remove it.";
15756
+ CALL_UTTERANCE_FLAG_CONDITIONS_MESSAGE2 = "a call_utterance monitor checks a live call every few seconds and does not flag the conversation. Remove its flag_conditions, or flag from a monitor on another trigger.";
15757
+ CALL_STEER_NOTE_BLANK_MESSAGE2 = "a steer's note is what the voice is told \u2014 write the instruction it should follow.";
15554
15758
  MONITOR_USER_MESSAGE_ACTION_KINDS2 = ["none", "call_tool"];
15555
15759
  MONITOR_ASSISTANT_REPLY_ACTION_KINDS2 = ["none", "call_tool", "hold", "rewrite"];
15760
+ MONITOR_CALL_UTTERANCE_ACTION_KINDS2 = ["none", "call_tool", "steer"];
15556
15761
  INSERT_NOTE_TOOL_NAME2 = "insert_note";
15557
15762
  RUN_MONITOR_TOOL_NAME2 = "run_monitor";
15558
15763
  MONITOR_RULE_ALLOWED_NATIVE_TOOLS2 = [
@@ -15573,6 +15778,7 @@ var init_dist = __esm({
15573
15778
  trigger: monitorTriggerSchema2.optional(),
15574
15779
  ...MONITOR_INPUT_SHAPING_SCHEMAS2,
15575
15780
  ...MONITOR_RULE_SCHEMAS2,
15781
+ ...MONITOR_CALL_SCHEMAS2,
15576
15782
  flag_conditions: external_exports.array(flagConditionSchema2).optional()
15577
15783
  }).passthrough().superRefine((config, ctx) => {
15578
15784
  if (monitorConfigNeedsDelay2(config)) {
@@ -15589,6 +15795,9 @@ var init_dist = __esm({
15589
15795
  message: MONITOR_INPUT_SHAPING_IDLE_MESSAGE2
15590
15796
  });
15591
15797
  }
15798
+ for (const key of monitorCallKeysOffTrigger2(config)) {
15799
+ ctx.addIssue({ code: external_exports.ZodIssueCode.custom, path: [key], message: MONITOR_CALL_KEY_MESSAGE2 });
15800
+ }
15592
15801
  for (const issue of collectMonitorRuleIssues2(config)) {
15593
15802
  ctx.addIssue({ code: external_exports.ZodIssueCode.custom, path: issue.path, message: issue.message });
15594
15803
  }
@@ -17278,14 +17487,29 @@ var init_dist = __esm({
17278
17487
  */
17279
17488
  conversation_id: external_exports.string().uuid().nullish().transform((v) => v ?? void 0),
17280
17489
  /** The browser's SDP offer, sent to the provider unchanged. */
17281
- sdp_offer: sdpOffer2
17490
+ sdp_offer: sdpOffer2,
17491
+ /**
17492
+ * The client plays the RECORDING NOTICE — the disclosure's part that tells the caller the
17493
+ * call is recorded — before the voice layer speaks, whenever the answer says `recorded`.
17494
+ * A hub that records calls records only a call whose client says so: a client without the
17495
+ * notice (one that predates it, or a stale tab) gets an unrecorded call, never a recorded
17496
+ * call its caller was not told about. Absent: false.
17497
+ */
17498
+ plays_recording_notice: external_exports.boolean().optional()
17282
17499
  });
17283
17500
  createCallResponse2 = external_exports.object({
17284
17501
  call_id: external_exports.string().uuid(),
17285
17502
  /** The conversation the call is attached to: the one named, or else the caller's active one. */
17286
17503
  conversation_id: external_exports.string().uuid(),
17287
17504
  /** The provider's SDP answer, for the browser's `setRemoteDescription`. */
17288
- sdp_answer: sdpDescription2
17505
+ sdp_answer: sdpDescription2,
17506
+ /**
17507
+ * The call is recorded: its hub records calls and the create said its client plays the
17508
+ * recording notice. The client plays the notice before it sends `ready`, and the recording
17509
+ * starts only once `ready` arrives. Absent only from a server that predates recording, which
17510
+ * records nothing: absent means not recorded.
17511
+ */
17512
+ recorded: external_exports.boolean().optional()
17289
17513
  });
17290
17514
  callReadyBody2 = external_exports.object(hubScoped3);
17291
17515
  callHangupBody2 = external_exports.object(hubScoped3);
@@ -17299,6 +17523,24 @@ var init_dist = __esm({
17299
17523
  callResponse2 = external_exports.object({
17300
17524
  call: callSummary2
17301
17525
  });
17526
+ MAX_CALL_RECORDING_GAPS2 = 500;
17527
+ callRecordingGap2 = external_exports.object({
17528
+ start_ms: external_exports.number().int().nonnegative(),
17529
+ end_ms: external_exports.number().int().positive()
17530
+ }).refine((gap) => gap.end_ms > gap.start_ms, "A gap ends after it starts");
17531
+ callRecordingNoteMetadata2 = external_exports.object({
17532
+ call_id: external_exports.string().min(1),
17533
+ team_notice: external_exports.literal("call_recording"),
17534
+ recording: external_exports.object({
17535
+ /** The recording's `conversation_file` row, the note's one file. */
17536
+ file_id: external_exports.string().uuid(),
17537
+ /** When its first audio arrived: its time 0. */
17538
+ started_at: callInstant2,
17539
+ duration_ms: external_exports.number().int().nonnegative(),
17540
+ /** Ascending and disjoint, each within the recording. */
17541
+ gaps: external_exports.array(callRecordingGap2).max(MAX_CALL_RECORDING_GAPS2)
17542
+ })
17543
+ });
17302
17544
  TTS_VOICE_REPLY_ENABLED_FIELD2 = {
17303
17545
  voice_reply_enabled: {
17304
17546
  type: "toggle",
@@ -18295,7 +18537,9 @@ var init_dist = __esm({
18295
18537
  // start + 7,199 s), so 119 whole minutes is the most a call can last.
18296
18538
  max_call_minutes: { type: "number", label: "Maximum Call Length (minutes)", min: 1, max: 119, default: 10, description: "A call ends when it reaches this length." },
18297
18539
  inactivity_timeout_seconds: { type: "number", label: "Inactivity Timeout (seconds)", min: 10, max: 600, default: 60, description: "A call ends after this many seconds in which neither side speaks." },
18298
- delegation_timeout_seconds: { type: "number", label: "Answer Timeout (seconds)", min: 5, max: 120, default: 30, description: "How long the voice waits for the hub's agent to answer one question before it gives up on that answer." }
18540
+ delegation_timeout_seconds: { type: "number", label: "Answer Timeout (seconds)", min: 5, max: 120, default: 30, description: "How long the voice waits for the hub's agent to answer one question before it gives up on that answer." },
18541
+ // Opt-in (D7): off unless turned on. Read by the call route (`resolveVoiceCallSettings`).
18542
+ record_calls: { type: "toggle", label: "Record Calls", default: false, description: "Keep each call's audio, both sides, as a recording your team can play from the conversation. Callers hear that the call is recorded before the voice speaks." }
18299
18543
  },
18300
18544
  channel_settings_schema: null,
18301
18545
  tool_settings_schema: null,
@@ -19306,9 +19550,6 @@ var init_dist = __esm({
19306
19550
  adminOrgIdParam2 = external_exports.object({
19307
19551
  orgId: uuidSchema2
19308
19552
  });
19309
- adminVoiceCallsOrgIdParam2 = external_exports.object({
19310
- orgId: uuidSchema2.transform((id) => id.toLowerCase())
19311
- });
19312
19553
  adminOrgAdminIdParam2 = external_exports.object({
19313
19554
  orgId: uuidSchema2,
19314
19555
  // `adminId` is a `member_grant.user_id`, which for a logged-in user is the
@@ -19409,11 +19650,9 @@ var init_dist = __esm({
19409
19650
  */
19410
19651
  default_eval_retention_days: external_exports.number().int().min(0).max(MAX_EVAL_RETENTION_DAYS2).optional(),
19411
19652
  /**
19412
- * The voice-calls kill switch, the platform half of the voice-calls rollout gate.
19413
- * 0 = off (the default: every voice-call surface stays dark for every org), 1 = on.
19414
- * On its own it opens nothing: an org must also be on `voice_calls_org_allowlist`,
19415
- * which this body cannot write (`PUT`/`DELETE /admin/voice-calls/allowlist/:orgId`
19416
- * change one org at a time). `wayai admin voice-calls enable|disable` flips this.
19653
+ * The voice-calls kill switch. 0 = off (the default: every voice-call surface stays dark
19654
+ * for every org), 1 = on (every org; a hub takes calls once it is configured for them).
19655
+ * `wayai admin voice-calls enable|disable` flips this.
19417
19656
  */
19418
19657
  voice_calls_enabled: external_exports.number().int().min(0).max(1).optional(),
19419
19658
  /** The voice-call meter's price (`voiceCallMinuteOps`). `wayai admin voice-calls price` sets it. */
@@ -19422,8 +19661,6 @@ var init_dist = __esm({
19422
19661
  (data) => Object.keys(data).length > 0,
19423
19662
  { message: "No fields to update" }
19424
19663
  );
19425
- MAX_VOICE_CALLS_ALLOWLIST_ORGS2 = 200;
19426
- voiceCallsOrgAllowlistSchema2 = external_exports.array(uuidSchema2).max(MAX_VOICE_CALLS_ALLOWLIST_ORGS2);
19427
19664
  updateFreeOrgLimitBody2 = external_exports.object({
19428
19665
  max_free_orgs_override: external_exports.number().int().min(0).nullable()
19429
19666
  });
@@ -33451,12 +33688,6 @@ async function adminCommand(args2) {
33451
33688
  case "status":
33452
33689
  await runVoiceCallsStatus(flagArgs);
33453
33690
  return;
33454
- case "allow":
33455
- await runVoiceCallsAllowlist(true, flagArgs);
33456
- return;
33457
- case "deny":
33458
- await runVoiceCallsAllowlist(false, flagArgs);
33459
- return;
33460
33691
  case "price":
33461
33692
  await runVoiceCallsPrice(flagArgs);
33462
33693
  return;
@@ -34050,9 +34281,7 @@ async function runHarnessMassDestroy(flagArgs) {
34050
34281
  function rejectPlatformGateFlags(gate, sub, flagArgs) {
34051
34282
  if (flagArgs.length === 0) return;
34052
34283
  console.error(`Unknown flag: ${flagArgs[0]}`);
34053
- console.error(
34054
- gate.orgLayerCommand ? `The ${gate.label} is platform-wide; to target one org, use \`${gate.orgLayerCommand}\`.` : `The ${gate.label} is platform-wide; there is no --org/--hub layer.`
34055
- );
34284
+ console.error(`The ${gate.label} is platform-wide; there is no --org/--hub layer.`);
34056
34285
  console.error(`wayai admin ${gate.group} ${sub}`);
34057
34286
  process.exit(1);
34058
34287
  }
@@ -34104,17 +34333,14 @@ async function runHarnessToggle(enable, flagArgs) {
34104
34333
  async function runVoiceCallsToggle(enable, flagArgs) {
34105
34334
  await runPlatformGateToggle(VOICE_CALLS_GATE, enable, flagArgs);
34106
34335
  if (enable) {
34107
- console.log("Only orgs on the allowlist get voice-call surfaces; `wayai admin voice-calls status` lists them.");
34336
+ console.log("Every org's hubs get voice-call surfaces once configured for them.");
34108
34337
  } else {
34109
- console.log("Every voice-call surface is dark for every org. The allowlist is kept.");
34338
+ console.log("Every voice-call surface is dark for every org.");
34110
34339
  }
34111
34340
  console.log(VOICE_CALLS_PROPAGATION_NOTE);
34112
34341
  }
34113
34342
  async function runVoiceCallsStatus(flagArgs) {
34114
34343
  const data = await runPlatformGateStatus(VOICE_CALLS_GATE, flagArgs);
34115
- const orgIds = parseVoiceCallsOrgAllowlist(data.voice_calls_org_allowlist);
34116
- console.log(`voice_calls_org_allowlist: ${orgIds.length} org(s)${orgIds.length === 0 ? " (none)" : ""}`);
34117
- for (const orgId of orgIds) console.log(` ${orgId}`);
34118
34344
  console.log(voiceCallPriceLine(data));
34119
34345
  }
34120
34346
  function voiceCallPriceLine(data) {
@@ -34154,45 +34380,6 @@ async function runVoiceCallsPrice(flagArgs) {
34154
34380
  console.log(VOICE_CALLS_PROPAGATION_NOTE);
34155
34381
  }
34156
34382
  }
34157
- async function runVoiceCallsAllowlist(allow, flagArgs) {
34158
- const usage3 = `wayai admin voice-calls ${allow ? "allow" : "deny"} --org <org_id>`;
34159
- let orgId;
34160
- for (let i = 0; i < flagArgs.length; i++) {
34161
- if (flagArgs[i] === "--org") {
34162
- orgId = requireFlagValue(flagArgs, i + 1, "--org");
34163
- i++;
34164
- } else {
34165
- console.error(`Unknown flag: ${flagArgs[i]}`);
34166
- console.error(usage3);
34167
- process.exit(1);
34168
- }
34169
- }
34170
- if (!orgId) {
34171
- console.error("--org <org_id> is required");
34172
- console.error(usage3);
34173
- process.exit(1);
34174
- }
34175
- const { config, accessToken } = await requireAuth();
34176
- const client = new ApiClient({ apiUrl: config.api_url, accessToken });
34177
- let data;
34178
- try {
34179
- data = (allow ? await client.adminAllowVoiceCallsOrg(orgId) : await client.adminDenyVoiceCallsOrg(orgId)).data;
34180
- } catch (err) {
34181
- if (err instanceof ApiError && err.status === 409) {
34182
- console.error(`Refused: ${err.body || err.message}`);
34183
- process.exit(1);
34184
- }
34185
- exitOnApiError(err);
34186
- throw err;
34187
- }
34188
- const verb = allow ? "ALLOWED" : "DENIED";
34189
- const note = data.changed ? "" : allow ? " (already on the allowlist)" : " (was not on the allowlist)";
34190
- console.log(`Org ${data.org_id} ${verb} for voice calls${note}. Allowlist: ${data.org_ids.length} org(s).`);
34191
- if (allow) {
34192
- console.log("It gets voice-call surfaces only while the kill switch is on (`wayai admin voice-calls status`).");
34193
- }
34194
- if (data.changed) console.log(VOICE_CALLS_PROPAGATION_NOTE);
34195
- }
34196
34383
  function requireFlagValue(flagArgs, index, flag) {
34197
34384
  const v = flagArgs[index];
34198
34385
  if (v === void 0 || v === "" || v.startsWith("--")) {
@@ -34633,11 +34820,9 @@ Usage:
34633
34820
  wayai admin harness mass-destroy --all | --org <org_id> | --hub <hub_id> [--dry-run] [--yes] [--json]
34634
34821
  Reap every live harness sandbox/token/slot in scope (run --dry-run first to see the blast radius)
34635
34822
 
34636
- wayai admin voice-calls enable Flip the platform voice_calls_enabled kill switch ON (allowlisted orgs only)
34823
+ wayai admin voice-calls enable Flip the platform voice_calls_enabled kill switch ON (every org)
34637
34824
  wayai admin voice-calls disable Flip it OFF: every voice-call surface goes dark for every org
34638
- wayai admin voice-calls status Print the kill switch and the org allowlist
34639
- wayai admin voice-calls allow --org <org_id> Put one org on the voice-calls allowlist
34640
- wayai admin voice-calls deny --org <org_id> Take one org off the voice-calls allowlist
34825
+ wayai admin voice-calls status Print the kill switch and the call price
34641
34826
  wayai admin voice-calls price [--ops-per-minute <n>]
34642
34827
  Print, or set, the operations a call bills per connected minute (default 0)
34643
34828
 
@@ -34697,13 +34882,11 @@ Sources:
34697
34882
  sandbox/token/slot that is live NOW (scope: --hub < --org < --all, prefer
34698
34883
  the narrowest). Run \`mass-destroy --dry-run\` first to see the blast
34699
34884
  radius.
34700
- voice-calls The voice-calls rollout gate, default-deny on both layers. An org gets
34701
- voice-call surfaces only while the PLATFORM-wide voice_calls_enabled
34702
- switch is on (\`enable\`/\`disable\`) AND the org is on the allowlist
34703
- (\`allow\`/\`deny --org\`, one org at a time, idempotent). \`disable\` darkens
34704
- every org and keeps the list. \`price\` is the call meter's price in
34705
- operations per connected call-minute (0 until set). Changes land within
34706
- about 60 s.
34885
+ voice-calls The voice-calls gate, default-deny: the PLATFORM-wide voice_calls_enabled
34886
+ switch (\`enable\`/\`disable\`). While it is on, every org's hubs get
34887
+ voice-call surfaces once configured for them; \`disable\` darkens every
34888
+ org. \`price\` is the call meter's price in operations per connected
34889
+ call-minute (0 until set). Changes land within about 60 s.
34707
34890
 
34708
34891
  Types (do): ${VALID_TYPES.join(" | ")}
34709
34892
  Tables (analytics): ${VALID_ANALYTICS_TABLES.join(" | ")}
@@ -34765,8 +34948,7 @@ var init_admin = __esm({
34765
34948
  group: "voice-calls",
34766
34949
  key: "voice_calls_enabled",
34767
34950
  label: "voice-calls kill switch",
34768
- displayName: "Voice calls",
34769
- orgLayerCommand: "wayai admin voice-calls allow|deny --org <org_id>"
34951
+ displayName: "Voice calls"
34770
34952
  };
34771
34953
  VOICE_CALLS_PROPAGATION_NOTE = "Takes effect within about 60 s (the platform-config cache is dropped; KV deletes propagate eventually).";
34772
34954
  VALID_NOTICE_SEVERITIES = ["critical", "warn", "info"];