@wayai/cli 0.3.181 → 0.3.183

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
@@ -6046,7 +6046,7 @@ function refineScopedTarget(data, ctx) {
6046
6046
  }
6047
6047
  }
6048
6048
  }
6049
- var uuidSchema, USER_ID_REGEX, paginationSchema, timestampSchema, idParamSchema, clientOptionalString, clientOptionalBoolean, clientOptionalNumber, messageAttachment, MAX_MESSAGE_BODY_BYTES, MAX_ATTACHMENTS_PER_MESSAGE, MESSAGE_ENVELOPE_HEADROOM_BYTES, 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, evalBody, 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, CALL_OPENING_LANGUAGES, callOpeningLanguage, CALL_OPENING_MAX_DURATION_MS, CALL_OPENING_MAX_BYTES, CALL_OPENING_CAPTION_MAX_CHARS, CALL_OPENING_CONTENT_TYPES, callOpeningContentType, CALL_OPENING_HASH_REGEX, callOpeningHash, callOpeningCaption, storedCallOpening, MAX_CALL_OPENING_ENCODED_BYTES, MAX_CALL_OPENING_BODY_BYTES, agentCallOpeningParams, putAgentCallOpeningBody, deleteAgentCallOpeningQuery, callOpeningParam, callOpeningQuery, 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, SPOKEN_LINE_MAX_CHARS, gptLive, CONNECTORS, evalCallInstant, EVAL_CALL_MIN_SECONDS, EVAL_CALL_MAX_SECONDS, EVAL_CALL_SPOKEN_LINE_MAX_CHARS, hubScoped2, createEvalCallBody, createEvalCallResponse, evalCallConversationQuery, evalCallRecordQuery, evalCallSpeaker, evalCallUtterance, evalCallTurn, evalCallRecording, evalCallRecordResponse, evalCallFinishResponse, updateUserBody, updateProfileBody, pathnameRegex, updatePreferencesBody, registerPushTokenBody, deletePushTokenQuery, recordAiDisclosureAcceptanceBody, 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, MAX_CALL_OPENING_CARRIERS, MAX_CALL_OPENING_AGGREGATE_ENCODED_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, VERSION_PART, MOBILE_APP_VERSION_RE, mobileAppVersionSchema, MOBILE_PLATFORMS, mobilePlatformSchema, mobileVersionPolicyQuery, mobileVersionPolicySchema, mobileVersionPolicyResponse, adminOrgIdParam, adminOrgAdminIdParam, adminUserIdParam, PRICING_PLAN_ID_RE, adminPlanIdParam, adminOrganizationsQuery, adminUserSearchQuery, kanbanSlugMigrationQuery, adjustQuotaBody, updatePlanBody, addAdminUserBody, MAX_VOICE_CALL_MINUTE_OPS, voiceCallMinuteOps, updatePlatformConfigBody, updateFreeOrgLimitBody, adminScopedTargetShape, adminScopedTargetBody, BRANCHING_ORPHAN_ENTITY_TYPES, BRANCHING_ORPHAN_MAX_TARGETS, adminRepairBranchingOrphansBody, 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, 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, DESKTOP_SHELL_VERSION_RE, DESKTOP_PLATFORMS, DESKTOP_FLAVORS, desktopShellInfoSchema, DESKTOP_PRESENCE_STATES, desktopPresenceSchema, desktopUpdateSchema, DESKTOP_SIGN_IN_URL_MAX_LENGTH, DESKTOP_APP_PATH_MAX_LENGTH, desktopAppPathSchema, DESKTOP_NOTIFICATION_KINDS, DESKTOP_NOTIFICATION_TITLE_MAX_LENGTH, DESKTOP_NOTIFICATION_BODY_MAX_LENGTH, notificationTitleSchema, notificationBodySchema, desktopNotificationSchema, DESKTOP_BADGE_MAX_COUNT, DESKTOP_BADGE_LABEL_MAX_LENGTH, desktopBadgeSchema, desktopNavigateSchema, desktopSettingsSchema, desktopSettingsChangeSchema, desktopBridgeArgsSchemas, PEOPLE_CONTACT_PAGE_MAX, PEOPLE_CONTACT_PAGE_DEFAULT, PEOPLE_CONTACT_EMAIL_MAX_LENGTH, peopleUserIdSchema, peopleContactInviteBody, peopleContactInviteIdParam, peopleContactUserIdParam, peopleContactBlockBody, peopleContactPageQuery, peopleOutgoingInviteSchema, peopleContactPersonSchema, peopleContactSchema, peopleIncomingInviteSchema, peopleBlockedUserSchema;
6049
+ var uuidSchema, USER_ID_REGEX, timestampSchema, idParamSchema, clientOptionalString, clientOptionalBoolean, clientOptionalNumber, messageAttachment, MAX_MESSAGE_BODY_BYTES, MAX_ATTACHMENTS_PER_MESSAGE, MESSAGE_ENVELOPE_HEADROOM_BYTES, 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, paginationSchema, 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, evalBody, 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, CALL_OPENING_LANGUAGES, callOpeningLanguage, CALL_OPENING_MAX_DURATION_MS, CALL_OPENING_MAX_BYTES, CALL_OPENING_CAPTION_MAX_CHARS, CALL_OPENING_CONTENT_TYPES, callOpeningContentType, CALL_OPENING_HASH_REGEX, callOpeningHash, callOpeningCaption, storedCallOpening, MAX_CALL_OPENING_ENCODED_BYTES, MAX_CALL_OPENING_BODY_BYTES, agentCallOpeningParams, putAgentCallOpeningBody, deleteAgentCallOpeningQuery, callOpeningParam, callOpeningQuery, CALLER_LANGUAGE, 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, SPOKEN_LINE_MAX_CHARS, gptLive, CONNECTORS, evalCallInstant, EVAL_CALL_MIN_SECONDS, EVAL_CALL_MAX_SECONDS, EVAL_CALL_SPOKEN_LINE_MAX_CHARS, hubScoped2, createEvalCallBody, createEvalCallResponse, evalCallConversationQuery, evalCallRecordQuery, evalCallSpeaker, evalCallUtterance, evalCallTurn, evalCallRecording, evalCallRecordResponse, evalCallFinishResponse, updateUserBody, updateProfileBody, pathnameRegex, updatePreferencesBody, registerPushTokenBody, deletePushTokenQuery, recordAiDisclosureAcceptanceBody, 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, SIGN_URL_MAX_EXPIRES_IN_SECONDS, 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, MAX_CALL_OPENING_CARRIERS, MAX_CALL_OPENING_AGGREGATE_ENCODED_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, VERSION_PART, MOBILE_APP_VERSION_RE, mobileAppVersionSchema, MOBILE_PLATFORMS, mobilePlatformSchema, mobileVersionPolicyQuery, mobileVersionPolicySchema, mobileVersionPolicyResponse, adminOrgIdParam, adminOrgAdminIdParam, adminUserIdParam, PRICING_PLAN_ID_RE, adminPlanIdParam, adminOrganizationsQuery, adminUserSearchQuery, kanbanSlugMigrationQuery, adjustQuotaBody, updatePlanBody, addAdminUserBody, MAX_VOICE_CALL_MINUTE_OPS, voiceCallMinuteOps, updatePlatformConfigBody, updateFreeOrgLimitBody, adminScopedTargetShape, adminScopedTargetBody, BRANCHING_ORPHAN_ENTITY_TYPES, BRANCHING_ORPHAN_MAX_TARGETS, adminRepairBranchingOrphansBody, 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, 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, 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, invitePreviewQuery, inviteRolePreviewResponse, inviteContactPreviewResponse, invitePreviewResponse, inviteUnsubscribeBody, 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, DESKTOP_SHELL_VERSION_RE, DESKTOP_PLATFORMS, DESKTOP_FLAVORS, desktopShellInfoSchema, DESKTOP_PRESENCE_STATES, desktopPresenceSchema, desktopUpdateSchema, DESKTOP_SIGN_IN_URL_MAX_LENGTH, DESKTOP_APP_PATH_MAX_LENGTH, desktopAppPathSchema, DESKTOP_NOTIFICATION_KINDS, DESKTOP_NOTIFICATION_TITLE_MAX_LENGTH, DESKTOP_NOTIFICATION_BODY_MAX_LENGTH, notificationTitleSchema, notificationBodySchema, desktopNotificationSchema, DESKTOP_BADGE_MAX_COUNT, DESKTOP_BADGE_LABEL_MAX_LENGTH, desktopBadgeSchema, desktopNavigateSchema, desktopSettingsSchema, desktopSettingsChangeSchema, desktopBridgeArgsSchemas, PEOPLE_CONTACT_PAGE_MAX, PEOPLE_CONTACT_PAGE_DEFAULT, PEOPLE_CONTACT_EMAIL_MAX_LENGTH, peopleUserIdSchema, peopleInviteEmailSchema, peopleContactInviteBody, peopleContactInviteIdParam, peopleContactUserIdParam, peopleContactBlockBody, peopleContactPageQuery, peopleOutgoingInviteSchema, peopleContactPersonSchema, peopleContactSchema, peopleIncomingInviteSchema, peopleBlockedUserSchema, PEOPLE_THREAD_MESSAGE_MAX_LENGTH, PEOPLE_THREAD_MESSAGES_PAGE_MAX, PEOPLE_THREAD_PAGE_MAX, PEOPLE_THREAD_PAGE_DEFAULT, PEOPLE_GROUP_NAME_MAX_LENGTH, PEOPLE_GROUP_AVATAR_URL_MAX_LENGTH, PEOPLE_THREAD_ATTACHMENT_MAX_BYTES, PEOPLE_THREAD_ATTACHMENT_NAME_MAX_LENGTH, PEOPLE_ATTACHMENT_STORAGE_PER_USER_BYTES, PEOPLE_THREAD_ATTACHMENT_MAX_MB, PEOPLE_THREAD_ATTACHMENT_URL_TTL_SECONDS, PEOPLE_THREAD_ATTACHMENT_URLS_MAX, peopleThreadIdParam, peopleThreadMessageIdParam, peopleThreadListQuery, peopleThreadMessagesQuery, peopleThreadAttachmentUploadSchema, peopleThreadSendBody, peopleThreadAttachmentUrlsBody, peopleThreadReadBody, peopleThreadSettingsBody, peopleGroupNameSchema, peopleGroupAvatarUrlSchema, peopleGroupCreateBody, peopleOrgDirectBody, peopleGroupUpdateBody, peopleGroupInviteBody, peopleOrgErasureBody, peopleGroupLeaveBody, peopleGroupInviteIdParam, peopleGroupIncomingInviteIdParam, peopleGroupMemberParam, peopleThreadKindSchema, peopleThreadMemberSchema, peopleThreadLastMessageSchema, peopleGroupRoleSchema, peopleGroupSummarySchema, peopleThreadSummarySchema, peopleThreadAttachmentSchema, peopleThreadMessageSchema, peopleGroupMemberSchema, peopleGroupSentInviteSchema, peopleGroupIncomingInviteSchema;
6050
6050
  var init_contracts = __esm({
6051
6051
  "../../packages/core/dist/contracts/index.js"() {
6052
6052
  "use strict";
@@ -6107,12 +6107,9 @@ var init_contracts = __esm({
6107
6107
  init_zod();
6108
6108
  init_zod();
6109
6109
  init_zod();
6110
+ init_zod();
6110
6111
  uuidSchema = external_exports.string().uuid();
6111
6112
  USER_ID_REGEX = /^([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|user_[A-Za-z0-9]+)$/i;
6112
- paginationSchema = external_exports.object({
6113
- limit: external_exports.coerce.number().int().min(1).max(100).default(50),
6114
- offset: external_exports.coerce.number().int().min(0).default(0)
6115
- });
6116
6113
  timestampSchema = external_exports.string().datetime();
6117
6114
  idParamSchema = external_exports.object({
6118
6115
  id: uuidSchema
@@ -8063,7 +8060,6 @@ var init_contracts = __esm({
8063
8060
  folder_metadata_schema: external_exports.record(external_exports.unknown()).optional(),
8064
8061
  file_metadata_schema: external_exports.record(external_exports.unknown()).optional(),
8065
8062
  enabled: external_exports.boolean().optional(),
8066
- user_browsable: external_exports.boolean().optional(),
8067
8063
  tags: external_exports.array(external_exports.string().uuid()).optional(),
8068
8064
  environment: external_exports.enum(["preview", "production", "all"]).optional()
8069
8065
  });
@@ -8075,7 +8071,6 @@ var init_contracts = __esm({
8075
8071
  folder_metadata_schema: external_exports.record(external_exports.unknown()).optional(),
8076
8072
  file_metadata_schema: external_exports.record(external_exports.unknown()).optional(),
8077
8073
  enabled: external_exports.boolean().optional(),
8078
- user_browsable: external_exports.boolean().optional(),
8079
8074
  tags: external_exports.array(external_exports.string().uuid()).optional(),
8080
8075
  environment: external_exports.enum(["preview", "production", "all"]).optional()
8081
8076
  });
@@ -8140,8 +8135,7 @@ var init_contracts = __esm({
8140
8135
  file_metadata_schema: external_exports.record(external_exports.unknown()).optional(),
8141
8136
  resource_type: external_exports.enum(["knowledge", "skill"]).optional(),
8142
8137
  skill_name: external_exports.string().optional(),
8143
- skill_version: external_exports.string().optional(),
8144
- user_browsable: external_exports.boolean().optional()
8138
+ skill_version: external_exports.string().optional()
8145
8139
  });
8146
8140
  updateResourceBody = external_exports.object({
8147
8141
  resource_name: external_exports.string().min(1).optional(),
@@ -8150,11 +8144,10 @@ var init_contracts = __esm({
8150
8144
  folder_metadata_schema: external_exports.record(external_exports.unknown()).optional(),
8151
8145
  file_metadata_schema: external_exports.record(external_exports.unknown()).optional(),
8152
8146
  skill_name: external_exports.string().optional(),
8153
- skill_version: external_exports.string().optional(),
8147
+ skill_version: external_exports.string().optional()
8154
8148
  // No `anthropic_skill_id`/`anthropic_version`: `resource` has neither column.
8155
8149
  // The provider link lives on `resource_provider_sync.provider_skill_id`,
8156
8150
  // written by `skillSync.ts` — never through this body.
8157
- user_browsable: external_exports.boolean().optional()
8158
8151
  });
8159
8152
  syncSkillsBody = external_exports.object({
8160
8153
  hub_id: uuidSchema,
@@ -8390,7 +8383,7 @@ var init_contracts = __esm({
8390
8383
  EVAL_RUN_DEADLINE_MIN_MS = 1e3;
8391
8384
  EVAL_RUN_DEADLINE_MAX_MS = 18e5;
8392
8385
  ISO_UTC_RE = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/;
8393
- paginationSchema2 = external_exports.object({
8386
+ paginationSchema = external_exports.object({
8394
8387
  limit: external_exports.number().int().positive().max(1e3).default(50),
8395
8388
  offset: external_exports.number().int().min(0).default(0)
8396
8389
  }).optional();
@@ -9030,6 +9023,7 @@ var init_contracts = __esm({
9030
9023
  */
9031
9024
  v: external_exports.string().regex(/^[a-f0-9]{64}\.[a-f0-9]{8}$/, "Expected a call opening version")
9032
9025
  });
9026
+ CALLER_LANGUAGE = "caller";
9033
9027
  TTS_VOICE_REPLY_ENABLED_FIELD = {
9034
9028
  voice_reply_enabled: {
9035
9029
  type: "toggle",
@@ -10022,7 +10016,7 @@ var init_contracts = __esm({
10022
10016
  // `voice` is in that role's own name (`pilot_voice`).
10023
10017
  agent_settings_schema: {
10024
10018
  speaker_voice: { type: "select", label: "Voice", allowCustomValue: true, options: ["bossa", "tempo"], default: "bossa", description: "The built-in GPT-Live voice the caller hears. bossa and tempo are Brazilian Portuguese voices; another built-in voice id can be typed." },
10025
- language: { type: "select", label: "Language", options: [{ value: "", label: "Hub language" }, { value: "pt", label: "Portuguese" }, { value: "en", label: "English" }, { value: "es", label: "Spanish" }], default: "", description: "The language the voice speaks with the caller. Empty uses the hub's language." },
10019
+ language: { type: "select", label: "Language", options: [{ value: "", label: "Hub language" }, { value: CALLER_LANGUAGE, label: "Caller's language" }, { value: "pt", label: "Portuguese" }, { value: "en", label: "English" }, { value: "es", label: "Spanish" }], default: "", description: "The language the voice speaks with the caller. Empty uses the hub's language; Caller's language uses the language in the caller's profile, or the hub's when they have none." },
10026
10020
  // The provider ends every session about 2 hours after it starts (`expires_at` is
10027
10021
  // start + 7,199 s), so 119 whole minutes is the most a call can last.
10028
10022
  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." },
@@ -10238,7 +10232,13 @@ var init_contracts = __esm({
10238
10232
  token: external_exports.string().min(1).max(512),
10239
10233
  platform: external_exports.enum(["ios", "android"]),
10240
10234
  /** Stable per-install id so re-registration replaces the prior token for the device. */
10241
- device_id: external_exports.string().min(1).max(128).optional()
10235
+ device_id: external_exports.string().min(1).max(128).optional(),
10236
+ /**
10237
+ * The build opens a person-to-person thread from a push (gh #4661): only a token registered
10238
+ * with it receives thread pushes, whose `data` carries `thread_id` and no `conversation_id`.
10239
+ * Each registration states it afresh, so a build that sends none clears it.
10240
+ */
10241
+ supports_threads: external_exports.boolean().optional()
10242
10242
  });
10243
10243
  deletePushTokenQuery = external_exports.object({
10244
10244
  token: external_exports.string().min(1).max(512)
@@ -10698,10 +10698,11 @@ var init_contracts = __esm({
10698
10698
  agent_id: external_exports.string().uuid(),
10699
10699
  hub_id: external_exports.string().uuid()
10700
10700
  });
10701
+ SIGN_URL_MAX_EXPIRES_IN_SECONDS = 3600;
10701
10702
  signUrlBody = external_exports.object({
10702
10703
  bucket: external_exports.string(),
10703
10704
  filePath: external_exports.string(),
10704
- expiresIn: external_exports.number().int().positive().optional()
10705
+ expiresIn: external_exports.number().int().positive().max(SIGN_URL_MAX_EXPIRES_IN_SECONDS).optional()
10705
10706
  });
10706
10707
  outboundSchemaQuery = external_exports.object({
10707
10708
  type: external_exports.enum(["whatsapp", "email", "app", "all"]).default("all")
@@ -10878,7 +10879,9 @@ var init_contracts = __esm({
10878
10879
  // 'knowledge' (default) | 'skill'
10879
10880
  description: external_exports.string().optional(),
10880
10881
  enabled: external_exports.boolean().optional(),
10881
- user_browsable: external_exports.boolean().optional(),
10882
+ // No `user_browsable`: the field is retired (wayai#4710). This schema is `.passthrough()`,
10883
+ // so YAML pulled before that — and a CLI old enough to still send it — keeps parsing;
10884
+ // the diff and apply engines ignore the key.
10882
10885
  skill_name: external_exports.string().optional(),
10883
10886
  // skill-only; auto-derived when omitted
10884
10887
  files: external_exports.array(hubAsCodeResourceFileSchema).optional()
@@ -11680,11 +11683,12 @@ var init_contracts = __esm({
11680
11683
  bootstrapQuery = external_exports.object({
11681
11684
  active_hub_id: external_exports.string().uuid().optional(),
11682
11685
  active_conversation_id: external_exports.string().uuid().optional(),
11683
- active_nav: external_exports.enum(["chat", "task", "support"]).optional()
11684
- });
11685
- requestSnapshotChunkMessage = external_exports.object({
11686
- type: external_exports.literal("request_snapshot_chunk"),
11687
- cursor: external_exports.string()
11686
+ active_nav: external_exports.enum(["chat", "task", "support"]).optional(),
11687
+ /**
11688
+ * The people thread the URL names (`/chat/threads/:threadId`, gh #4661): the snapshot
11689
+ * preloads it as `people.active_thread` when the viewer is a member.
11690
+ */
11691
+ active_thread_id: external_exports.string().uuid().optional()
11688
11692
  });
11689
11693
  MAX_NAME_LENGTH = 100;
11690
11694
  MAX_VALUE_LENGTH = 32 * 1024;
@@ -11753,53 +11757,10 @@ var init_contracts = __esm({
11753
11757
  ).optional()
11754
11758
  });
11755
11759
  tokenOrgIdParam = external_exports.object({ orgId: uuidSchema });
11756
- tokenGrantScopeSchema = external_exports.object({
11757
- org_id: external_exports.string().min(1),
11758
- hubs: external_exports.array(external_exports.string().min(1)).min(1),
11759
- hub_tags: external_exports.array(external_exports.string().min(1)).min(1).optional(),
11760
- environments: external_exports.array(external_exports.enum(["production", "preview"])).min(1).optional()
11761
- });
11762
- tokenGrantSchema = external_exports.object({
11763
- scope: tokenGrantScopeSchema,
11764
- permissions: external_exports.array(external_exports.enum(PERMISSIONS)).min(1)
11765
- });
11766
- tokenMetadataSchema = external_exports.object({
11767
- token_id: external_exports.string(),
11768
- name: external_exports.string(),
11769
- token_prefix: external_exports.string(),
11770
- grants: external_exports.array(tokenGrantSchema),
11771
- created_at: external_exports.string(),
11772
- expires_at: external_exports.string().optional(),
11773
- last_used_at: external_exports.string().optional()
11774
- });
11775
- listTokensResponse = external_exports.object({
11776
- data: external_exports.array(tokenMetadataSchema)
11777
- });
11778
- createTokenResponse = external_exports.object({
11779
- data: external_exports.object({
11780
- token: external_exports.string(),
11781
- token_id: external_exports.string(),
11782
- name: external_exports.string(),
11783
- expires_at: external_exports.string().optional()
11784
- })
11785
- });
11786
- orgTokenSummarySchema = external_exports.object({
11787
- token_id: external_exports.string(),
11788
- name: external_exports.string(),
11789
- token_prefix: external_exports.string(),
11790
- owner_user_id: external_exports.string(),
11791
- created_at: external_exports.string(),
11792
- expires_at: external_exports.string().optional(),
11793
- last_used_at: external_exports.string().optional(),
11794
- grants_for_org: external_exports.array(tokenGrantSchema)
11795
- });
11796
- listOrgTokensResponse = external_exports.object({
11797
- data: external_exports.array(orgTokenSummarySchema)
11798
- });
11799
11760
  invitePreviewQuery = external_exports.object({
11800
11761
  token: external_exports.string().min(1).max(2048)
11801
11762
  });
11802
- invitePreviewResponse = external_exports.object({
11763
+ inviteRolePreviewResponse = external_exports.object({
11803
11764
  inviter_name: external_exports.string(),
11804
11765
  entity_id: external_exports.string().uuid(),
11805
11766
  entity_name: external_exports.string(),
@@ -11807,6 +11768,15 @@ var init_contracts = __esm({
11807
11768
  role: external_exports.enum(["org_admin", "admin", "team_user", "user"]),
11808
11769
  expires_at: external_exports.string().datetime()
11809
11770
  });
11771
+ inviteContactPreviewResponse = external_exports.object({
11772
+ inviter_name: external_exports.string().nullable(),
11773
+ entity_id: external_exports.string().uuid(),
11774
+ entity_type: external_exports.literal("contact"),
11775
+ role: external_exports.literal("contact"),
11776
+ expires_at: external_exports.string().datetime()
11777
+ });
11778
+ invitePreviewResponse = external_exports.union([inviteRolePreviewResponse, inviteContactPreviewResponse]);
11779
+ inviteUnsubscribeBody = external_exports.object({ token: external_exports.string().min(1).max(256) }).strict();
11810
11780
  jsonSchemaSchema = external_exports.record(external_exports.unknown());
11811
11781
  hubUserIdentity = external_exports.object({
11812
11782
  user_id: external_exports.string().nullable(),
@@ -12120,8 +12090,9 @@ var init_contracts = __esm({
12120
12090
  PEOPLE_CONTACT_PAGE_DEFAULT = 50;
12121
12091
  PEOPLE_CONTACT_EMAIL_MAX_LENGTH = 254;
12122
12092
  peopleUserIdSchema = external_exports.string().max(64).regex(USER_ID_REGEX, "must be a user id");
12093
+ peopleInviteEmailSchema = external_exports.string().trim().max(PEOPLE_CONTACT_EMAIL_MAX_LENGTH).email();
12123
12094
  peopleContactInviteBody = external_exports.object({
12124
- email: external_exports.string().trim().max(PEOPLE_CONTACT_EMAIL_MAX_LENGTH).email()
12095
+ email: peopleInviteEmailSchema
12125
12096
  }).strict();
12126
12097
  peopleContactInviteIdParam = external_exports.object({ inviteId: uuidSchema });
12127
12098
  peopleContactUserIdParam = external_exports.object({ userId: peopleUserIdSchema });
@@ -12142,7 +12113,7 @@ var init_contracts = __esm({
12142
12113
  display_name: external_exports.string().nullable(),
12143
12114
  email: external_exports.string().nullable()
12144
12115
  }).strict();
12145
- peopleContactSchema = peopleContactPersonSchema.extend({ contact_since: timestampSchema }).strict();
12116
+ peopleContactSchema = peopleContactPersonSchema.extend({ contact_since: timestampSchema, thread_id: uuidSchema }).strict();
12146
12117
  peopleIncomingInviteSchema = external_exports.object({
12147
12118
  invite_id: uuidSchema,
12148
12119
  inviter: peopleContactPersonSchema,
@@ -12150,6 +12121,146 @@ var init_contracts = __esm({
12150
12121
  expires_at: timestampSchema
12151
12122
  }).strict();
12152
12123
  peopleBlockedUserSchema = peopleContactPersonSchema.extend({ blocked_at: timestampSchema, deleted_user: external_exports.boolean() }).strict();
12124
+ PEOPLE_THREAD_MESSAGE_MAX_LENGTH = 4e3;
12125
+ PEOPLE_THREAD_MESSAGES_PAGE_MAX = 50;
12126
+ PEOPLE_THREAD_PAGE_MAX = 100;
12127
+ PEOPLE_THREAD_PAGE_DEFAULT = 50;
12128
+ PEOPLE_GROUP_NAME_MAX_LENGTH = 100;
12129
+ PEOPLE_GROUP_AVATAR_URL_MAX_LENGTH = 2048;
12130
+ PEOPLE_THREAD_ATTACHMENT_MAX_BYTES = 7 * 1024 * 1024;
12131
+ PEOPLE_THREAD_ATTACHMENT_NAME_MAX_LENGTH = 255;
12132
+ PEOPLE_ATTACHMENT_STORAGE_PER_USER_BYTES = 1024 * 1024 * 1024;
12133
+ PEOPLE_THREAD_ATTACHMENT_MAX_MB = Math.floor(PEOPLE_THREAD_ATTACHMENT_MAX_BYTES / (1024 * 1024));
12134
+ PEOPLE_THREAD_ATTACHMENT_URL_TTL_SECONDS = 15 * 60;
12135
+ PEOPLE_THREAD_ATTACHMENT_URLS_MAX = PEOPLE_THREAD_MESSAGES_PAGE_MAX;
12136
+ peopleThreadIdParam = external_exports.object({ threadId: uuidSchema });
12137
+ peopleThreadMessageIdParam = external_exports.object({ threadId: uuidSchema, messageId: uuidSchema });
12138
+ peopleThreadListQuery = external_exports.object({
12139
+ cursor: external_exports.string().min(1).max(256).optional(),
12140
+ limit: external_exports.coerce.number().int().min(1).max(PEOPLE_THREAD_PAGE_MAX).default(PEOPLE_THREAD_PAGE_DEFAULT)
12141
+ });
12142
+ peopleThreadMessagesQuery = external_exports.object({
12143
+ before_seq: external_exports.coerce.number().int().min(1).optional(),
12144
+ limit: external_exports.coerce.number().int().min(1).max(PEOPLE_THREAD_MESSAGES_PAGE_MAX).default(PEOPLE_THREAD_MESSAGES_PAGE_MAX)
12145
+ });
12146
+ peopleThreadAttachmentUploadSchema = external_exports.object({
12147
+ file_name: external_exports.string().trim().min(1).max(PEOPLE_THREAD_ATTACHMENT_NAME_MAX_LENGTH),
12148
+ file_binary: external_exports.string().min(1)
12149
+ }).strict();
12150
+ peopleThreadSendBody = external_exports.object({
12151
+ body: external_exports.string().max(PEOPLE_THREAD_MESSAGE_MAX_LENGTH).default(""),
12152
+ client_message_id: uuidSchema.optional(),
12153
+ attachment: peopleThreadAttachmentUploadSchema.optional()
12154
+ }).strict().refine((b) => b.body.trim().length > 0 || b.attachment !== void 0, {
12155
+ message: "must not be empty",
12156
+ path: ["body"]
12157
+ });
12158
+ peopleThreadAttachmentUrlsBody = external_exports.object({ attachment_ids: external_exports.array(uuidSchema).min(1).max(PEOPLE_THREAD_ATTACHMENT_URLS_MAX) }).strict();
12159
+ peopleThreadReadBody = external_exports.object({ seq: external_exports.number().int().min(0) }).strict();
12160
+ peopleThreadSettingsBody = external_exports.object({
12161
+ muted: external_exports.boolean().optional(),
12162
+ hidden: external_exports.boolean().optional()
12163
+ }).strict().refine((b) => b.muted !== void 0 || b.hidden !== void 0, "nothing to change");
12164
+ peopleGroupNameSchema = external_exports.string().trim().min(1).max(PEOPLE_GROUP_NAME_MAX_LENGTH);
12165
+ peopleGroupAvatarUrlSchema = external_exports.string().max(PEOPLE_GROUP_AVATAR_URL_MAX_LENGTH).url().refine((s) => s.startsWith("https://"), "must be an https URL");
12166
+ peopleGroupCreateBody = external_exports.object({
12167
+ name: peopleGroupNameSchema,
12168
+ avatar_url: peopleGroupAvatarUrlSchema.nullable().optional(),
12169
+ org_id: uuidSchema.optional()
12170
+ }).strict();
12171
+ peopleOrgDirectBody = external_exports.object({
12172
+ org_id: uuidSchema,
12173
+ user_id: peopleUserIdSchema
12174
+ }).strict();
12175
+ peopleGroupUpdateBody = external_exports.object({
12176
+ name: peopleGroupNameSchema.optional(),
12177
+ avatar_url: peopleGroupAvatarUrlSchema.nullable().optional()
12178
+ }).strict().refine((b) => b.name !== void 0 || b.avatar_url !== void 0, "nothing to change");
12179
+ peopleGroupInviteBody = external_exports.union([
12180
+ external_exports.object({ user_id: peopleUserIdSchema }).strict(),
12181
+ external_exports.object({ email: peopleInviteEmailSchema }).strict()
12182
+ ]);
12183
+ peopleOrgErasureBody = external_exports.object({
12184
+ org_id: uuidSchema,
12185
+ email: peopleInviteEmailSchema
12186
+ }).strict();
12187
+ peopleGroupLeaveBody = external_exports.object({ delete_my_messages: external_exports.boolean().optional() }).strict();
12188
+ peopleGroupInviteIdParam = external_exports.object({ threadId: uuidSchema, inviteId: uuidSchema });
12189
+ peopleGroupIncomingInviteIdParam = external_exports.object({ inviteId: uuidSchema });
12190
+ peopleGroupMemberParam = external_exports.object({ threadId: uuidSchema, userId: peopleUserIdSchema });
12191
+ peopleThreadKindSchema = external_exports.enum(["dm", "group"]);
12192
+ peopleThreadMemberSchema = external_exports.object({
12193
+ user_id: peopleUserIdSchema,
12194
+ display_name: external_exports.string().nullable(),
12195
+ deleted_user: external_exports.boolean()
12196
+ }).strict();
12197
+ peopleThreadLastMessageSchema = external_exports.object({
12198
+ message_id: uuidSchema,
12199
+ seq: external_exports.number().int().positive(),
12200
+ author_user_id: peopleUserIdSchema,
12201
+ preview: external_exports.string().nullable(),
12202
+ deleted: external_exports.boolean(),
12203
+ created_at: timestampSchema
12204
+ }).strict();
12205
+ peopleGroupRoleSchema = external_exports.enum(["admin", "member"]);
12206
+ peopleGroupSummarySchema = external_exports.object({
12207
+ membership: external_exports.enum(["member", "removed", "left"]),
12208
+ role: peopleGroupRoleSchema.nullable(),
12209
+ avatar_url: external_exports.string().nullable()
12210
+ }).strict();
12211
+ peopleThreadSummarySchema = external_exports.object({
12212
+ thread_id: uuidSchema,
12213
+ kind: peopleThreadKindSchema,
12214
+ org_id: external_exports.string().nullable(),
12215
+ org_name: external_exports.string().nullable(),
12216
+ title: external_exports.string().nullable(),
12217
+ counterpart: peopleThreadMemberSchema.nullable(),
12218
+ last_seq: external_exports.number().int().nonnegative(),
12219
+ last_message: peopleThreadLastMessageSchema.nullable(),
12220
+ last_activity_at: timestampSchema,
12221
+ read_seq: external_exports.number().int().nonnegative(),
12222
+ unread_count: external_exports.number().int().nonnegative(),
12223
+ muted: external_exports.boolean(),
12224
+ hidden: external_exports.boolean(),
12225
+ writable: external_exports.boolean(),
12226
+ group: peopleGroupSummarySchema.nullable().optional()
12227
+ }).strict();
12228
+ peopleThreadAttachmentSchema = external_exports.object({
12229
+ attachment_id: uuidSchema,
12230
+ file_name: external_exports.string(),
12231
+ content_type: external_exports.string(),
12232
+ size_bytes: external_exports.number().int().positive()
12233
+ }).strict();
12234
+ peopleThreadMessageSchema = external_exports.object({
12235
+ message_id: uuidSchema,
12236
+ seq: external_exports.number().int().positive(),
12237
+ author_user_id: peopleUserIdSchema,
12238
+ body: external_exports.string().nullable(),
12239
+ deleted: external_exports.boolean(),
12240
+ created_at: timestampSchema,
12241
+ deleted_at: timestampSchema.nullable(),
12242
+ client_message_id: uuidSchema.nullable(),
12243
+ attachment: peopleThreadAttachmentSchema.nullable().optional()
12244
+ }).strict();
12245
+ peopleGroupMemberSchema = peopleThreadMemberSchema.extend({ role: peopleGroupRoleSchema, joined_at: timestampSchema }).strict();
12246
+ peopleGroupSentInviteSchema = external_exports.object({
12247
+ invite_id: uuidSchema,
12248
+ invitee: peopleThreadMemberSchema,
12249
+ invitee_email: external_exports.string().nullable().optional(),
12250
+ status: external_exports.literal("sent"),
12251
+ created_at: timestampSchema,
12252
+ expires_at: timestampSchema
12253
+ }).strict();
12254
+ peopleGroupIncomingInviteSchema = external_exports.object({
12255
+ invite_id: uuidSchema,
12256
+ thread_id: uuidSchema,
12257
+ kind: peopleThreadKindSchema.optional(),
12258
+ group: external_exports.object({ name: external_exports.string() }).strict(),
12259
+ org: external_exports.object({ org_id: external_exports.string(), org_name: external_exports.string().nullable() }).strict().nullable().optional(),
12260
+ inviter: external_exports.object({ user_id: peopleUserIdSchema, display_name: external_exports.string().nullable(), email: external_exports.string().nullable() }).strict(),
12261
+ created_at: timestampSchema,
12262
+ expires_at: timestampSchema
12263
+ }).strict();
12153
12264
  }
12154
12265
  });
12155
12266
 
@@ -14610,7 +14721,7 @@ function findStepBoundaries(transcript) {
14610
14721
  }
14611
14722
  return out;
14612
14723
  }
14613
- 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, USER_ID_REGEX2, paginationSchema3, timestampSchema2, idParamSchema2, clientOptionalString2, clientOptionalBoolean2, clientOptionalNumber2, messageAttachment2, MAX_MESSAGE_BODY_BYTES2, MAX_ATTACHMENTS_PER_MESSAGE2, MESSAGE_ENVELOPE_HEADROOM_BYTES2, 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, evalBody2, 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, CALL_OPENING_LANGUAGES2, callOpeningLanguage2, CALL_OPENING_MAX_DURATION_MS2, CALL_OPENING_MAX_BYTES2, CALL_OPENING_CAPTION_MAX_CHARS2, CALL_OPENING_CONTENT_TYPES2, callOpeningContentType2, CALL_OPENING_HASH_REGEX2, callOpeningHash2, callOpeningCaption2, storedCallOpening2, MAX_CALL_OPENING_ENCODED_BYTES2, MAX_CALL_OPENING_BODY_BYTES2, agentCallOpeningParams2, putAgentCallOpeningBody2, deleteAgentCallOpeningQuery2, callOpeningParam2, callOpeningQuery2, 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, SPOKEN_LINE_MAX_CHARS2, gptLive2, CONNECTORS2, evalCallInstant2, EVAL_CALL_MIN_SECONDS2, EVAL_CALL_MAX_SECONDS2, EVAL_CALL_SPOKEN_LINE_MAX_CHARS2, hubScoped22, createEvalCallBody2, createEvalCallResponse2, evalCallConversationQuery2, evalCallRecordQuery2, evalCallSpeaker2, evalCallUtterance2, evalCallTurn2, evalCallRecording2, evalCallRecordResponse2, evalCallFinishResponse2, updateUserBody2, updateProfileBody2, pathnameRegex2, updatePreferencesBody2, registerPushTokenBody2, deletePushTokenQuery2, recordAiDisclosureAcceptanceBody2, 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, MAX_CALL_OPENING_CARRIERS2, MAX_CALL_OPENING_AGGREGATE_ENCODED_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, VERSION_PART2, MOBILE_APP_VERSION_RE2, mobileAppVersionSchema2, MOBILE_PLATFORMS2, mobilePlatformSchema2, mobileVersionPolicyQuery2, mobileVersionPolicySchema2, mobileVersionPolicyResponse2, adminOrgIdParam2, adminOrgAdminIdParam2, adminUserIdParam2, PRICING_PLAN_ID_RE2, adminPlanIdParam2, adminOrganizationsQuery2, adminUserSearchQuery2, kanbanSlugMigrationQuery2, adjustQuotaBody2, updatePlanBody2, addAdminUserBody2, MAX_VOICE_CALL_MINUTE_OPS2, voiceCallMinuteOps2, updatePlatformConfigBody2, updateFreeOrgLimitBody2, adminScopedTargetShape2, adminScopedTargetBody2, BRANCHING_ORPHAN_ENTITY_TYPES2, BRANCHING_ORPHAN_MAX_TARGETS2, adminRepairBranchingOrphansBody2, 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, 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, DESKTOP_SHELL_VERSION_RE2, DESKTOP_PLATFORMS2, DESKTOP_FLAVORS2, desktopShellInfoSchema2, DESKTOP_PRESENCE_STATES2, desktopPresenceSchema2, desktopUpdateSchema2, DESKTOP_SIGN_IN_URL_MAX_LENGTH2, DESKTOP_APP_PATH_MAX_LENGTH2, desktopAppPathSchema2, DESKTOP_NOTIFICATION_KINDS2, DESKTOP_NOTIFICATION_TITLE_MAX_LENGTH2, DESKTOP_NOTIFICATION_BODY_MAX_LENGTH2, notificationTitleSchema2, notificationBodySchema2, desktopNotificationSchema2, DESKTOP_BADGE_MAX_COUNT2, DESKTOP_BADGE_LABEL_MAX_LENGTH2, desktopBadgeSchema2, desktopNavigateSchema2, desktopSettingsSchema2, desktopSettingsChangeSchema2, desktopBridgeArgsSchemas2, PEOPLE_CONTACT_PAGE_MAX2, PEOPLE_CONTACT_PAGE_DEFAULT2, PEOPLE_CONTACT_EMAIL_MAX_LENGTH2, peopleUserIdSchema2, peopleContactInviteBody2, peopleContactInviteIdParam2, peopleContactUserIdParam2, peopleContactBlockBody2, peopleContactPageQuery2, peopleOutgoingInviteSchema2, peopleContactPersonSchema2, peopleContactSchema2, peopleIncomingInviteSchema2, peopleBlockedUserSchema2, WAYAI_WORKSPACE_LAYOUT, decisionAnswerSchema, decisionsResponseSchema;
14724
+ 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, USER_ID_REGEX2, timestampSchema2, idParamSchema2, clientOptionalString2, clientOptionalBoolean2, clientOptionalNumber2, messageAttachment2, MAX_MESSAGE_BODY_BYTES2, MAX_ATTACHMENTS_PER_MESSAGE2, MESSAGE_ENVELOPE_HEADROOM_BYTES2, 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, paginationSchema2, 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, evalBody2, 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, CALL_OPENING_LANGUAGES2, callOpeningLanguage2, CALL_OPENING_MAX_DURATION_MS2, CALL_OPENING_MAX_BYTES2, CALL_OPENING_CAPTION_MAX_CHARS2, CALL_OPENING_CONTENT_TYPES2, callOpeningContentType2, CALL_OPENING_HASH_REGEX2, callOpeningHash2, callOpeningCaption2, storedCallOpening2, MAX_CALL_OPENING_ENCODED_BYTES2, MAX_CALL_OPENING_BODY_BYTES2, agentCallOpeningParams2, putAgentCallOpeningBody2, deleteAgentCallOpeningQuery2, callOpeningParam2, callOpeningQuery2, CALLER_LANGUAGE2, 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, SPOKEN_LINE_MAX_CHARS2, gptLive2, CONNECTORS2, evalCallInstant2, EVAL_CALL_MIN_SECONDS2, EVAL_CALL_MAX_SECONDS2, EVAL_CALL_SPOKEN_LINE_MAX_CHARS2, hubScoped22, createEvalCallBody2, createEvalCallResponse2, evalCallConversationQuery2, evalCallRecordQuery2, evalCallSpeaker2, evalCallUtterance2, evalCallTurn2, evalCallRecording2, evalCallRecordResponse2, evalCallFinishResponse2, updateUserBody2, updateProfileBody2, pathnameRegex2, updatePreferencesBody2, registerPushTokenBody2, deletePushTokenQuery2, recordAiDisclosureAcceptanceBody2, 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, SIGN_URL_MAX_EXPIRES_IN_SECONDS2, 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, MAX_CALL_OPENING_CARRIERS2, MAX_CALL_OPENING_AGGREGATE_ENCODED_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, VERSION_PART2, MOBILE_APP_VERSION_RE2, mobileAppVersionSchema2, MOBILE_PLATFORMS2, mobilePlatformSchema2, mobileVersionPolicyQuery2, mobileVersionPolicySchema2, mobileVersionPolicyResponse2, adminOrgIdParam2, adminOrgAdminIdParam2, adminUserIdParam2, PRICING_PLAN_ID_RE2, adminPlanIdParam2, adminOrganizationsQuery2, adminUserSearchQuery2, kanbanSlugMigrationQuery2, adjustQuotaBody2, updatePlanBody2, addAdminUserBody2, MAX_VOICE_CALL_MINUTE_OPS2, voiceCallMinuteOps2, updatePlatformConfigBody2, updateFreeOrgLimitBody2, adminScopedTargetShape2, adminScopedTargetBody2, BRANCHING_ORPHAN_ENTITY_TYPES2, BRANCHING_ORPHAN_MAX_TARGETS2, adminRepairBranchingOrphansBody2, 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, 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, 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, invitePreviewQuery2, inviteRolePreviewResponse2, inviteContactPreviewResponse2, invitePreviewResponse2, inviteUnsubscribeBody2, 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, DESKTOP_SHELL_VERSION_RE2, DESKTOP_PLATFORMS2, DESKTOP_FLAVORS2, desktopShellInfoSchema2, DESKTOP_PRESENCE_STATES2, desktopPresenceSchema2, desktopUpdateSchema2, DESKTOP_SIGN_IN_URL_MAX_LENGTH2, DESKTOP_APP_PATH_MAX_LENGTH2, desktopAppPathSchema2, DESKTOP_NOTIFICATION_KINDS2, DESKTOP_NOTIFICATION_TITLE_MAX_LENGTH2, DESKTOP_NOTIFICATION_BODY_MAX_LENGTH2, notificationTitleSchema2, notificationBodySchema2, desktopNotificationSchema2, DESKTOP_BADGE_MAX_COUNT2, DESKTOP_BADGE_LABEL_MAX_LENGTH2, desktopBadgeSchema2, desktopNavigateSchema2, desktopSettingsSchema2, desktopSettingsChangeSchema2, desktopBridgeArgsSchemas2, PEOPLE_CONTACT_PAGE_MAX2, PEOPLE_CONTACT_PAGE_DEFAULT2, PEOPLE_CONTACT_EMAIL_MAX_LENGTH2, peopleUserIdSchema2, peopleInviteEmailSchema2, peopleContactInviteBody2, peopleContactInviteIdParam2, peopleContactUserIdParam2, peopleContactBlockBody2, peopleContactPageQuery2, peopleOutgoingInviteSchema2, peopleContactPersonSchema2, peopleContactSchema2, peopleIncomingInviteSchema2, peopleBlockedUserSchema2, PEOPLE_THREAD_MESSAGE_MAX_LENGTH2, PEOPLE_THREAD_MESSAGES_PAGE_MAX2, PEOPLE_THREAD_PAGE_MAX2, PEOPLE_THREAD_PAGE_DEFAULT2, PEOPLE_GROUP_NAME_MAX_LENGTH2, PEOPLE_GROUP_AVATAR_URL_MAX_LENGTH2, PEOPLE_THREAD_ATTACHMENT_MAX_BYTES2, PEOPLE_THREAD_ATTACHMENT_NAME_MAX_LENGTH2, PEOPLE_ATTACHMENT_STORAGE_PER_USER_BYTES2, PEOPLE_THREAD_ATTACHMENT_MAX_MB2, PEOPLE_THREAD_ATTACHMENT_URL_TTL_SECONDS2, PEOPLE_THREAD_ATTACHMENT_URLS_MAX2, peopleThreadIdParam2, peopleThreadMessageIdParam2, peopleThreadListQuery2, peopleThreadMessagesQuery2, peopleThreadAttachmentUploadSchema2, peopleThreadSendBody2, peopleThreadAttachmentUrlsBody2, peopleThreadReadBody2, peopleThreadSettingsBody2, peopleGroupNameSchema2, peopleGroupAvatarUrlSchema2, peopleGroupCreateBody2, peopleOrgDirectBody2, peopleGroupUpdateBody2, peopleGroupInviteBody2, peopleOrgErasureBody2, peopleGroupLeaveBody2, peopleGroupInviteIdParam2, peopleGroupIncomingInviteIdParam2, peopleGroupMemberParam2, peopleThreadKindSchema2, peopleThreadMemberSchema2, peopleThreadLastMessageSchema2, peopleGroupRoleSchema2, peopleGroupSummarySchema2, peopleThreadSummarySchema2, peopleThreadAttachmentSchema2, peopleThreadMessageSchema2, peopleGroupMemberSchema2, peopleGroupSentInviteSchema2, peopleGroupIncomingInviteSchema2, WAYAI_WORKSPACE_LAYOUT, decisionAnswerSchema, decisionsResponseSchema;
14614
14725
  var init_dist = __esm({
14615
14726
  "../../packages/core/dist/index.js"() {
14616
14727
  "use strict";
@@ -14672,6 +14783,7 @@ var init_dist = __esm({
14672
14783
  init_zod();
14673
14784
  init_zod();
14674
14785
  init_zod();
14786
+ init_zod();
14675
14787
  UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
14676
14788
  HEX_RE = /^[0-9a-f]{16,}$/;
14677
14789
  WORKOS_ID_RE = /^(?:user|org)_[0-9A-HJKMNP-TV-Z]{26}$/;
@@ -14943,21 +15055,109 @@ var init_dist = __esm({
14943
15055
  // authenticated caller). The fail-CLOSED brute-force guarantee for the static credential comes
14944
15056
  // from the route's per-email caps (burst + cumulative hourly), not this flag.
14945
15057
  "/api/auth/password/*": { tier: "STRICT", failClosed: true },
15058
+ // Every `/api/*` group whose paths carry ids pins `userLimitKey` (gh #4756), held there by
15059
+ // `security/endpoint-invariants.test.ts`.
14946
15060
  // Billing - moderate, fail-closed with user limits
14947
- "/api/billing/*": { tier: "MODERATE", userLimit: 100, failClosed: true, skipAuthenticatedUsers: true },
15061
+ "/api/billing/*": {
15062
+ tier: "MODERATE",
15063
+ userLimit: 100,
15064
+ failClosed: true,
15065
+ skipAuthenticatedUsers: true,
15066
+ userLimitKey: "/api/billing/*"
15067
+ },
14948
15068
  "/webhooks/stripe": { tier: "MODERATE", failClosed: true },
14949
15069
  "/webhooks/workos": { tier: "MODERATE", failClosed: true },
14950
15070
  // API endpoints - standard with user limits
14951
- "/api/setup/*": { tier: "STANDARD", userLimit: 150, skipAuthenticatedUsers: true },
14952
- "/api/conversations/*": { tier: "STANDARD", userLimit: 150, skipAuthenticatedUsers: true },
15071
+ // 500 because the web's settings live updates refetch per hub in every open tab, whatever page
15072
+ // it shows (`settingsLiveUpdateStore.ts`): one batch of changes costs about 10 + 4 per agent
15073
+ // whose tools were opened + 2 per loaded resource, so a CLI push and publish (both hubs) with
15074
+ // two tabs open passes 150 in a minute. A multi-file resource upload adds 2–5 per file.
15075
+ "/api/setup/*": {
15076
+ tier: "STANDARD",
15077
+ userLimit: 500,
15078
+ skipAuthenticatedUsers: true,
15079
+ userLimitKey: "/api/setup/*"
15080
+ },
15081
+ // 500 because an eval run's drill-down (`SessionResults.tsx`) fetches its list and then every
15082
+ // LLM turn's record at once: up to 201 requests (`OBSERVABILITY_LIST_CAP`, 200). Sending keeps
15083
+ // the 150 it had when each path held its own budget, on the exact key below.
15084
+ "/api/conversations/*": {
15085
+ tier: "STANDARD",
15086
+ userLimit: 500,
15087
+ skipAuthenticatedUsers: true,
15088
+ userLimitKey: "/api/conversations/*"
15089
+ },
15090
+ "/api/conversations/send-message": { tier: "STANDARD", userLimit: 150, skipAuthenticatedUsers: true },
14953
15091
  "/api/users/*": { tier: "STANDARD", userLimit: 150, skipAuthenticatedUsers: true },
14954
- "/api/analytics/*": { tier: "STANDARD", userLimit: 150, skipAuthenticatedUsers: true },
14955
- "/api/evals/*": { tier: "STANDARD", userLimit: 150, skipAuthenticatedUsers: true },
15092
+ "/api/analytics/*": {
15093
+ tier: "STANDARD",
15094
+ userLimit: 150,
15095
+ skipAuthenticatedUsers: true,
15096
+ userLimitKey: "/api/analytics/*"
15097
+ },
15098
+ // 500 because `wayai eval-results --eval` reads completed sessions one by one, newest first,
15099
+ // until one holds the eval (up to the 1000 the list returns). Tenant SQL keeps the 150 it had
15100
+ // when each path held its own budget: each query may run 30 s on shared-tenant ClickHouse
15101
+ // after its caller has gone (`sql-validator.ts`, stage 10b).
15102
+ "/api/evals/*": {
15103
+ tier: "STANDARD",
15104
+ userLimit: 500,
15105
+ skipAuthenticatedUsers: true,
15106
+ userLimitKey: "/api/evals/*"
15107
+ },
15108
+ "/api/evals/sql": { tier: "STANDARD", userLimit: 150, skipAuthenticatedUsers: true },
15109
+ // An eval run's calls (gh #4418), kept off the end user's call budgets below. Create keeps the
15110
+ // 150 it had: it opens a provider session on the org's own key, billed per second. The routes
15111
+ // on one call take a budget of their own so no eval read can spend it: a refused hang-up
15112
+ // leaves the call running, and billing. 500 because a call suite polls each run's record
15113
+ // every second, about 64 requests a minute per suite.
15114
+ "/api/evals/calls": { tier: "STANDARD", userLimit: 150, skipAuthenticatedUsers: true },
15115
+ "/api/evals/calls/*": {
15116
+ tier: "STANDARD",
15117
+ userLimit: 500,
15118
+ skipAuthenticatedUsers: true,
15119
+ userLimitKey: "/api/evals/calls/*"
15120
+ },
14956
15121
  "/api/files/*": { tier: "STANDARD", userLimit: 150, skipAuthenticatedUsers: true },
14957
- "/api/outbound/*": { tier: "STANDARD", userLimit: 150, skipAuthenticatedUsers: true },
15122
+ "/api/outbound/*": {
15123
+ tier: "STANDARD",
15124
+ userLimit: 150,
15125
+ skipAuthenticatedUsers: true,
15126
+ userLimitKey: "/api/outbound/*"
15127
+ },
14958
15128
  "/api/live-updates/*": { tier: "STANDARD", userLimit: 150, skipAuthenticatedUsers: true },
14959
- "/api/hub-users/*": { tier: "STANDARD", userLimit: 150, skipAuthenticatedUsers: true },
14960
- "/api/conversation-state/*": { tier: "STANDARD", userLimit: 150, skipAuthenticatedUsers: true },
15129
+ "/api/hub-users/*": {
15130
+ tier: "STANDARD",
15131
+ userLimit: 150,
15132
+ skipAuthenticatedUsers: true,
15133
+ userLimitKey: "/api/hub-users/*"
15134
+ },
15135
+ "/api/conversation-state/*": {
15136
+ tier: "STANDARD",
15137
+ userLimit: 150,
15138
+ skipAuthenticatedUsers: true,
15139
+ userLimitKey: "/api/conversation-state/*"
15140
+ },
15141
+ // The authenticated byte route (`routes/files/r2.ts`), mounted after its `authMiddleware` so
15142
+ // the caller is known: each request reads the HubDO its key names, and a hub id never created
15143
+ // starts a Durable Object that tombstones itself with a KV write (gh #4747). The key is pinned
15144
+ // because the paths are file keys, which would otherwise each get a fresh budget (and one
15145
+ // over 256 characters would be refused outright, `checkUserLimitNative`).
15146
+ //
15147
+ // 500 a minute because the web chat fetches every attachment of every loaded message at
15148
+ // once, with no list virtualization: up to 50 per 50-message page, 200 per ended
15149
+ // conversation or history entry at one file per message, and 4 per message at most in its
15150
+ // image grid. Repeats come from the browser's HTTP cache (`private, max-age=3600`); mobile
15151
+ // renders through a disk cache and plays audio from `/files/signed`. The budget is shared by
15152
+ // a caller's tabs and devices. The other two byte routes, `/files/signed/*` and
15153
+ // `/files/public/*`, mount no limiter (the reason is at their entries in
15154
+ // `security/endpoint-invariants.test.ts`'s route registry).
15155
+ "/files/auth/*": {
15156
+ tier: "STANDARD",
15157
+ userLimit: 500,
15158
+ skipAuthenticatedUsers: true,
15159
+ userLimitKey: "/files/auth/*"
15160
+ },
14961
15161
  // Channel webhooks - high throughput (external systems, never authenticated)
14962
15162
  "/webhooks/whatsapp/*": { tier: "HIGH" },
14963
15163
  "/webhooks/instagram/*": { tier: "HIGH" },
@@ -14971,8 +15171,8 @@ var init_dist = __esm({
14971
15171
  // so a runaway create loop merges rather than floods. Still STRICT tier + failClosed so a
14972
15172
  // genuinely runaway distinct-report loop surfaces as 429. The `/*` is load-bearing — an
14973
15173
  // exact `/api/reports` key would leave the `/:id` paths unmatched (→ unthrottled).
14974
- // `userLimitKey` is equally load-bearing: without it, middleware falls back to each raw
14975
- // pathname and report IDs/actions receive independent counters instead of this shared budget.
15174
+ // `userLimitKey` is equally load-bearing: without it, middleware falls back to each request's
15175
+ // path and report IDs/actions receive independent counters instead of this shared budget.
14976
15176
  "/api/reports/*": {
14977
15177
  tier: "STRICT",
14978
15178
  userLimit: 60,
@@ -14986,7 +15186,7 @@ var init_dist = __esm({
14986
15186
  // cap so legitimate triage bursts aren't throttled (grouping is one request
14987
15187
  // even for many members); deliberately NOT failClosed so a Redis blip never
14988
15188
  // blocks an admin's triage. The bare GET reads share this budget harmlessly.
14989
- "/api/admin/reports/*": { tier: "STANDARD", userLimit: 150 },
15189
+ "/api/admin/reports/*": { tier: "STANDARD", userLimit: 150, userLimitKey: "/api/admin/reports/*" },
14990
15190
  // GitHub webhook (issues.closed → platform_report addressed). MODERATE +
14991
15191
  // fail-closed; GitHub retries on transient failures so a brief Redis blip
14992
15192
  // doesn't lose state.
@@ -15020,30 +15220,48 @@ var init_dist = __esm({
15020
15220
  // The mutating routes: initiate, the authenticated confirm, and cancel. Per user rather than
15021
15221
  // per IP — all three are authenticated and org-admin gated — and hourly, since a single human
15022
15222
  // touching thirty production-deletion operations in an hour is already far past normal.
15023
- // Longest-prefix wins, so the two entries above are not widened by this one.
15024
- [`${BASE_DESTRUCTION_PREFIX2}/*`]: { tier: "STANDARD", userLimit: 30, userWindow: 3600, failClosed: true },
15223
+ // Longest-prefix wins, so the two entries above are not widened by this one. The key is
15224
+ // pinned so those thirty are counted across every base the caller touches (gh #4756).
15225
+ [`${BASE_DESTRUCTION_PREFIX2}/*`]: {
15226
+ tier: "STANDARD",
15227
+ userLimit: 30,
15228
+ userWindow: 3600,
15229
+ failClosed: true,
15230
+ userLimitKey: `${BASE_DESTRUCTION_PREFIX2}/*`
15231
+ },
15025
15232
  // Email-invite preview — public, fail-closed. MODERATE (30/min IP) leaves
15026
15233
  // headroom for the signup-page server-fetch + reloads + prefetches; STRICT
15027
15234
  // would throttle legitimate users opening the link in multiple tabs.
15028
15235
  "/api/invites/preview": { tier: "MODERATE", failClosed: true },
15236
+ // "Don't email me again" (gh #4661) — public; one POST per click on its confirm page. STRICT
15237
+ // per IP. No `failClosed`: it is consulted only on the per-user branch, which a pre-auth route
15238
+ // never reaches (see `BASE_DESTRUCTION_CONFIRM_PATH` above).
15239
+ "/api/invites/unsubscribe": { tier: "STRICT" },
15029
15240
  // Admin DO debug reads — the ONE deliberate deviation from the Data Explorer
15030
15241
  // catch-all below, and the only reason a per-route key still exists here.
15031
15242
  // Platform-admin is enforced at the route; this is the independent
15032
15243
  // defense-in-depth signal so a runaway investigation script surfaces as 429.
15033
15244
  //
15034
- // STRICT is kept ON PURPOSE even though the catch-all moved off it, because
15035
- // `tier` is the only layer that bounds enumeration on this surface: the
15036
- // per-user cap keys on the RAW pathname (see the CAVEAT below), so sweeping
15037
- // `/debug/do/hub/<id>/tables` across thousands of ids never trips it. At 5/min
15038
- // vs STANDARD's 100/min, walking 10k ids takes ~33h instead of ~100min — a
15039
- // detection window worth keeping on the routes that return RAW DO ROWS.
15245
+ // STRICT is kept ON PURPOSE even though the catch-all moved off it: per IP, at 5/min vs
15246
+ // STANDARD's 100/min, walking 10k ids takes ~33h instead of ~100min — a detection window
15247
+ // worth keeping on the routes that return RAW DO ROWS.
15040
15248
  //
15041
15249
  // The cost, stated rather than elided: STRICT is one bucket shared with
15042
15250
  // `/oauth/callback/*` and `/api/auth/magic-code/*`, so a debug session from a
15043
15251
  // NAT'd office IP can 429 a colleague's login for up to a minute. That trade is
15044
15252
  // accepted for a rare, deliberate investigation surface — and is exactly why the
15045
15253
  // browse routes below are NOT here.
15046
- "/api/admin/data-explorer/debug/*": { tier: "STRICT", userLimit: 60, userWindow: 3600, failClosed: true },
15254
+ //
15255
+ // The key is pinned, so a sweep of `/debug/do/hub/<id>/tables` across ids spends one
15256
+ // per-admin budget (gh #4756). 120 an hour: an agent's investigation of a dozen
15257
+ // conversations made 37 debug reads in its busiest hour.
15258
+ "/api/admin/data-explorer/debug/*": {
15259
+ tier: "STRICT",
15260
+ userLimit: 120,
15261
+ userWindow: 3600,
15262
+ failClosed: true,
15263
+ userLimitKey: "/api/admin/data-explorer/debug/*"
15264
+ },
15047
15265
  // Catch-all for the rest of the Data Explorer (`/search`, `/entity/*`, `/do/*`,
15048
15266
  // `/kv/*`, the DELETE routes). Added as a catch-all rather than another per-route
15049
15267
  // key because this budget kept lagging behind routes joining the debug boundary:
@@ -15062,8 +15280,8 @@ var init_dist = __esm({
15062
15280
  // `/oauth/callback/*` and `/api/auth/magic-code/*`, which on a NAT'd office IP
15063
15281
  // means all admins. The per-user hourly cap is the leg that matters here.
15064
15282
  //
15065
- // The canonical key is deliberate: raw pathnames contain DO ids and arbitrary
15066
- // malformed requests can contain credential material. Keying on the raw pathname
15283
+ // The canonical key is deliberate: request paths contain DO ids and arbitrary
15284
+ // malformed requests can contain credential material. Keying on the request path
15067
15285
  // both stores that material in Redis/logs and gives every target a fresh counter.
15068
15286
  // One stable identity makes every browse request consume the same per-admin
15069
15287
  // budget without storing request targets.
@@ -15079,17 +15297,29 @@ var init_dist = __esm({
15079
15297
  },
15080
15298
  // Admin sandbox exec (harness-agents PR 1.5) — this is ARBITRARY CODE EXECUTION,
15081
15299
  // so it gets the strictest budget on the platform: STRICT tier + a low per-user
15082
- // hourly cap (well below the 60/hr debug-read cap) + fail-closed. Platform-admin
15300
+ // hourly cap (well below the debug-read cap) + fail-closed. Platform-admin
15083
15301
  // is enforced at the route; this is the independent defense-in-depth signal so a
15084
15302
  // runaway exec loop surfaces as 429 instead of silently provisioning sandboxes.
15085
- "/api/admin/sandbox/*": { tier: "STRICT", userLimit: 20, userWindow: 3600, failClosed: true },
15303
+ "/api/admin/sandbox/*": {
15304
+ tier: "STRICT",
15305
+ userLimit: 20,
15306
+ userWindow: 3600,
15307
+ failClosed: true,
15308
+ userLimitKey: "/api/admin/sandbox/*"
15309
+ },
15086
15310
  // Admin harness incident-response (harness-agents PR 2.9b) — mass-destroy reaps
15087
15311
  // EVERY live harness sandbox/token/slot in scope, so it gets a strict budget
15088
15312
  // (STRICT + a low per-user hourly cap + fail-closed). Platform-admin is enforced
15089
15313
  // at the route; this is the independent defense-in-depth signal so a runaway
15090
15314
  // reap loop surfaces as 429. The break-glass disable/enable rides through
15091
15315
  // `/api/admin/config` (its own STANDARD budget), not this key.
15092
- "/api/admin/harness/*": { tier: "STRICT", userLimit: 10, userWindow: 3600, failClosed: true },
15316
+ "/api/admin/harness/*": {
15317
+ tier: "STRICT",
15318
+ userLimit: 10,
15319
+ userWindow: 3600,
15320
+ failClosed: true,
15321
+ userLimitKey: "/api/admin/harness/*"
15322
+ },
15093
15323
  // Platform-wide team-orphan repair — a single call can WRITE across every hub of
15094
15324
  // every org (HubDO purge + UserDO mirror fan-out), so it gets the same strict,
15095
15325
  // fail-closed budget as the other cross-platform admin write. Exact path (not a
@@ -15101,13 +15331,15 @@ var init_dist = __esm({
15101
15331
  // fans out over every production hub of every org, so it takes the same strict,
15102
15332
  // fail-closed budget as the team-orphan repair. Exact path, for the same reason.
15103
15333
  "/api/admin/hubs/repair-branching-orphans": { tier: "STRICT", userLimit: 10, userWindow: 3600, failClosed: true },
15104
- // CI/GitOps endpoints - standard with user limits
15105
- "/api/ci/*": { tier: "STANDARD", userLimit: 100, skipAuthenticatedUsers: true },
15106
- // Attested `/v1` proxy onto the Rekor Worker. `userLimitKey` is load-bearing here in a
15107
- // way it is not for the siblings above: the per-user budget defaults to the full request
15108
- // path, and this surface's paths carry base, record, and file ids — so without a pinned
15109
- // key every distinct resource would get its own fresh budget and the per-user limit
15110
- // would bound nothing. One shared budget across the whole data surface is the intent.
15334
+ // CI/GitOps endpoints - standard with user limits. 500 because `wayai push` makes four requests
15335
+ // (pull, diff, push, pull) and a GitOps job may push every hub at once with one token; when
15336
+ // each path held its own 100, that ran to 100 hubs a minute.
15337
+ "/api/ci/*": { tier: "STANDARD", userLimit: 500, skipAuthenticatedUsers: true, userLimitKey: "/api/ci/*" },
15338
+ // Attested `/v1` proxy onto the Rekor Worker. `userLimitKey` is load-bearing here: the
15339
+ // per-user budget defaults to the full request path, and this surface's paths carry base,
15340
+ // record, and file ids — so without a pinned key every distinct resource would get its own
15341
+ // fresh budget and the per-user limit would bound nothing. One shared budget across the
15342
+ // whole data surface is the intent.
15111
15343
  [`${DATA_PROXY_PREFIX2}/*`]: {
15112
15344
  tier: "STANDARD",
15113
15345
  userLimit: 150,
@@ -15159,6 +15391,27 @@ var init_dist = __esm({
15159
15391
  skipAuthenticatedUsers: true,
15160
15392
  userLimitKey: "/api/contacts/blocks/*"
15161
15393
  },
15394
+ // Person-to-person threads (gh #4661, `routes/api/threads`): the per-user send limit, 60 a
15395
+ // minute on the native binding. Every thread route shares the one budget, reads included:
15396
+ // the paths carry thread and message ids, so the key is pinned, and a pattern here cannot
15397
+ // tell a send from a read of the same path. Like every 60 s budget it fails open on a
15398
+ // binding error, so it bounds sends in the steady state only.
15399
+ "/api/threads/*": {
15400
+ tier: "STANDARD",
15401
+ userLimit: 60,
15402
+ skipAuthenticatedUsers: true,
15403
+ userLimitKey: "/api/threads/*"
15404
+ },
15405
+ // An org admin's erasure of one person's thread messages (gh #4661 owner decision 7): any user
15406
+ // can own a free org, so each request arms that org's alarm, and this caps how fast one person
15407
+ // can ask. The org's own daily cap (`PEOPLE_ORG_ERASURES_PER_DAY`, counted in its OrgDO in the
15408
+ // write it bounds) is the fail-closed bound; this budget, on the native binding, fails open.
15409
+ "/api/threads/org-erasures": {
15410
+ tier: "STANDARD",
15411
+ userLimit: 10,
15412
+ skipAuthenticatedUsers: true,
15413
+ userLimitKey: "/api/threads/org-erasures"
15414
+ },
15162
15415
  // App channel - high throughput with user limits
15163
15416
  "/channels/app/*": { tier: "HIGH", userLimit: 500, skipAuthenticatedUsers: true },
15164
15417
  // API channel (api-channel-connector) - machine-to-machine, high throughput
@@ -15222,10 +15475,6 @@ var init_dist = __esm({
15222
15475
  SUPPORTED_LOCALES2 = ["en", "pt", "es"];
15223
15476
  uuidSchema2 = external_exports.string().uuid();
15224
15477
  USER_ID_REGEX2 = /^([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|user_[A-Za-z0-9]+)$/i;
15225
- paginationSchema3 = external_exports.object({
15226
- limit: external_exports.coerce.number().int().min(1).max(100).default(50),
15227
- offset: external_exports.coerce.number().int().min(0).default(0)
15228
- });
15229
15478
  timestampSchema2 = external_exports.string().datetime();
15230
15479
  idParamSchema2 = external_exports.object({
15231
15480
  id: uuidSchema2
@@ -17127,7 +17376,6 @@ var init_dist = __esm({
17127
17376
  folder_metadata_schema: external_exports.record(external_exports.unknown()).optional(),
17128
17377
  file_metadata_schema: external_exports.record(external_exports.unknown()).optional(),
17129
17378
  enabled: external_exports.boolean().optional(),
17130
- user_browsable: external_exports.boolean().optional(),
17131
17379
  tags: external_exports.array(external_exports.string().uuid()).optional(),
17132
17380
  environment: external_exports.enum(["preview", "production", "all"]).optional()
17133
17381
  });
@@ -17139,7 +17387,6 @@ var init_dist = __esm({
17139
17387
  folder_metadata_schema: external_exports.record(external_exports.unknown()).optional(),
17140
17388
  file_metadata_schema: external_exports.record(external_exports.unknown()).optional(),
17141
17389
  enabled: external_exports.boolean().optional(),
17142
- user_browsable: external_exports.boolean().optional(),
17143
17390
  tags: external_exports.array(external_exports.string().uuid()).optional(),
17144
17391
  environment: external_exports.enum(["preview", "production", "all"]).optional()
17145
17392
  });
@@ -17204,8 +17451,7 @@ var init_dist = __esm({
17204
17451
  file_metadata_schema: external_exports.record(external_exports.unknown()).optional(),
17205
17452
  resource_type: external_exports.enum(["knowledge", "skill"]).optional(),
17206
17453
  skill_name: external_exports.string().optional(),
17207
- skill_version: external_exports.string().optional(),
17208
- user_browsable: external_exports.boolean().optional()
17454
+ skill_version: external_exports.string().optional()
17209
17455
  });
17210
17456
  updateResourceBody2 = external_exports.object({
17211
17457
  resource_name: external_exports.string().min(1).optional(),
@@ -17214,11 +17460,10 @@ var init_dist = __esm({
17214
17460
  folder_metadata_schema: external_exports.record(external_exports.unknown()).optional(),
17215
17461
  file_metadata_schema: external_exports.record(external_exports.unknown()).optional(),
17216
17462
  skill_name: external_exports.string().optional(),
17217
- skill_version: external_exports.string().optional(),
17463
+ skill_version: external_exports.string().optional()
17218
17464
  // No `anthropic_skill_id`/`anthropic_version`: `resource` has neither column.
17219
17465
  // The provider link lives on `resource_provider_sync.provider_skill_id`,
17220
17466
  // written by `skillSync.ts` — never through this body.
17221
- user_browsable: external_exports.boolean().optional()
17222
17467
  });
17223
17468
  syncSkillsBody2 = external_exports.object({
17224
17469
  hub_id: uuidSchema2,
@@ -17454,7 +17699,7 @@ var init_dist = __esm({
17454
17699
  EVAL_RUN_DEADLINE_MIN_MS2 = 1e3;
17455
17700
  EVAL_RUN_DEADLINE_MAX_MS2 = 18e5;
17456
17701
  ISO_UTC_RE2 = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/;
17457
- paginationSchema22 = external_exports.object({
17702
+ paginationSchema2 = external_exports.object({
17458
17703
  limit: external_exports.number().int().positive().max(1e3).default(50),
17459
17704
  offset: external_exports.number().int().min(0).default(0)
17460
17705
  }).optional();
@@ -18093,6 +18338,7 @@ var init_dist = __esm({
18093
18338
  */
18094
18339
  v: external_exports.string().regex(/^[a-f0-9]{64}\.[a-f0-9]{8}$/, "Expected a call opening version")
18095
18340
  });
18341
+ CALLER_LANGUAGE2 = "caller";
18096
18342
  TTS_VOICE_REPLY_ENABLED_FIELD2 = {
18097
18343
  voice_reply_enabled: {
18098
18344
  type: "toggle",
@@ -19085,7 +19331,7 @@ var init_dist = __esm({
19085
19331
  // `voice` is in that role's own name (`pilot_voice`).
19086
19332
  agent_settings_schema: {
19087
19333
  speaker_voice: { type: "select", label: "Voice", allowCustomValue: true, options: ["bossa", "tempo"], default: "bossa", description: "The built-in GPT-Live voice the caller hears. bossa and tempo are Brazilian Portuguese voices; another built-in voice id can be typed." },
19088
- language: { type: "select", label: "Language", options: [{ value: "", label: "Hub language" }, { value: "pt", label: "Portuguese" }, { value: "en", label: "English" }, { value: "es", label: "Spanish" }], default: "", description: "The language the voice speaks with the caller. Empty uses the hub's language." },
19334
+ language: { type: "select", label: "Language", options: [{ value: "", label: "Hub language" }, { value: CALLER_LANGUAGE2, label: "Caller's language" }, { value: "pt", label: "Portuguese" }, { value: "en", label: "English" }, { value: "es", label: "Spanish" }], default: "", description: "The language the voice speaks with the caller. Empty uses the hub's language; Caller's language uses the language in the caller's profile, or the hub's when they have none." },
19089
19335
  // The provider ends every session about 2 hours after it starts (`expires_at` is
19090
19336
  // start + 7,199 s), so 119 whole minutes is the most a call can last.
19091
19337
  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." },
@@ -19301,7 +19547,13 @@ var init_dist = __esm({
19301
19547
  token: external_exports.string().min(1).max(512),
19302
19548
  platform: external_exports.enum(["ios", "android"]),
19303
19549
  /** Stable per-install id so re-registration replaces the prior token for the device. */
19304
- device_id: external_exports.string().min(1).max(128).optional()
19550
+ device_id: external_exports.string().min(1).max(128).optional(),
19551
+ /**
19552
+ * The build opens a person-to-person thread from a push (gh #4661): only a token registered
19553
+ * with it receives thread pushes, whose `data` carries `thread_id` and no `conversation_id`.
19554
+ * Each registration states it afresh, so a build that sends none clears it.
19555
+ */
19556
+ supports_threads: external_exports.boolean().optional()
19305
19557
  });
19306
19558
  deletePushTokenQuery2 = external_exports.object({
19307
19559
  token: external_exports.string().min(1).max(512)
@@ -19761,10 +20013,11 @@ var init_dist = __esm({
19761
20013
  agent_id: external_exports.string().uuid(),
19762
20014
  hub_id: external_exports.string().uuid()
19763
20015
  });
20016
+ SIGN_URL_MAX_EXPIRES_IN_SECONDS2 = 3600;
19764
20017
  signUrlBody2 = external_exports.object({
19765
20018
  bucket: external_exports.string(),
19766
20019
  filePath: external_exports.string(),
19767
- expiresIn: external_exports.number().int().positive().optional()
20020
+ expiresIn: external_exports.number().int().positive().max(SIGN_URL_MAX_EXPIRES_IN_SECONDS2).optional()
19768
20021
  });
19769
20022
  outboundSchemaQuery2 = external_exports.object({
19770
20023
  type: external_exports.enum(["whatsapp", "email", "app", "all"]).default("all")
@@ -19941,7 +20194,9 @@ var init_dist = __esm({
19941
20194
  // 'knowledge' (default) | 'skill'
19942
20195
  description: external_exports.string().optional(),
19943
20196
  enabled: external_exports.boolean().optional(),
19944
- user_browsable: external_exports.boolean().optional(),
20197
+ // No `user_browsable`: the field is retired (wayai#4710). This schema is `.passthrough()`,
20198
+ // so YAML pulled before that — and a CLI old enough to still send it — keeps parsing;
20199
+ // the diff and apply engines ignore the key.
19945
20200
  skill_name: external_exports.string().optional(),
19946
20201
  // skill-only; auto-derived when omitted
19947
20202
  files: external_exports.array(hubAsCodeResourceFileSchema2).optional()
@@ -20743,11 +20998,12 @@ var init_dist = __esm({
20743
20998
  bootstrapQuery2 = external_exports.object({
20744
20999
  active_hub_id: external_exports.string().uuid().optional(),
20745
21000
  active_conversation_id: external_exports.string().uuid().optional(),
20746
- active_nav: external_exports.enum(["chat", "task", "support"]).optional()
20747
- });
20748
- requestSnapshotChunkMessage2 = external_exports.object({
20749
- type: external_exports.literal("request_snapshot_chunk"),
20750
- cursor: external_exports.string()
21001
+ active_nav: external_exports.enum(["chat", "task", "support"]).optional(),
21002
+ /**
21003
+ * The people thread the URL names (`/chat/threads/:threadId`, gh #4661): the snapshot
21004
+ * preloads it as `people.active_thread` when the viewer is a member.
21005
+ */
21006
+ active_thread_id: external_exports.string().uuid().optional()
20751
21007
  });
20752
21008
  MAX_NAME_LENGTH3 = 100;
20753
21009
  MAX_VALUE_LENGTH2 = 32 * 1024;
@@ -20816,53 +21072,10 @@ var init_dist = __esm({
20816
21072
  ).optional()
20817
21073
  });
20818
21074
  tokenOrgIdParam2 = external_exports.object({ orgId: uuidSchema2 });
20819
- tokenGrantScopeSchema2 = external_exports.object({
20820
- org_id: external_exports.string().min(1),
20821
- hubs: external_exports.array(external_exports.string().min(1)).min(1),
20822
- hub_tags: external_exports.array(external_exports.string().min(1)).min(1).optional(),
20823
- environments: external_exports.array(external_exports.enum(["production", "preview"])).min(1).optional()
20824
- });
20825
- tokenGrantSchema2 = external_exports.object({
20826
- scope: tokenGrantScopeSchema2,
20827
- permissions: external_exports.array(external_exports.enum(PERMISSIONS2)).min(1)
20828
- });
20829
- tokenMetadataSchema2 = external_exports.object({
20830
- token_id: external_exports.string(),
20831
- name: external_exports.string(),
20832
- token_prefix: external_exports.string(),
20833
- grants: external_exports.array(tokenGrantSchema2),
20834
- created_at: external_exports.string(),
20835
- expires_at: external_exports.string().optional(),
20836
- last_used_at: external_exports.string().optional()
20837
- });
20838
- listTokensResponse2 = external_exports.object({
20839
- data: external_exports.array(tokenMetadataSchema2)
20840
- });
20841
- createTokenResponse2 = external_exports.object({
20842
- data: external_exports.object({
20843
- token: external_exports.string(),
20844
- token_id: external_exports.string(),
20845
- name: external_exports.string(),
20846
- expires_at: external_exports.string().optional()
20847
- })
20848
- });
20849
- orgTokenSummarySchema2 = external_exports.object({
20850
- token_id: external_exports.string(),
20851
- name: external_exports.string(),
20852
- token_prefix: external_exports.string(),
20853
- owner_user_id: external_exports.string(),
20854
- created_at: external_exports.string(),
20855
- expires_at: external_exports.string().optional(),
20856
- last_used_at: external_exports.string().optional(),
20857
- grants_for_org: external_exports.array(tokenGrantSchema2)
20858
- });
20859
- listOrgTokensResponse2 = external_exports.object({
20860
- data: external_exports.array(orgTokenSummarySchema2)
20861
- });
20862
21075
  invitePreviewQuery2 = external_exports.object({
20863
21076
  token: external_exports.string().min(1).max(2048)
20864
21077
  });
20865
- invitePreviewResponse2 = external_exports.object({
21078
+ inviteRolePreviewResponse2 = external_exports.object({
20866
21079
  inviter_name: external_exports.string(),
20867
21080
  entity_id: external_exports.string().uuid(),
20868
21081
  entity_name: external_exports.string(),
@@ -20870,6 +21083,15 @@ var init_dist = __esm({
20870
21083
  role: external_exports.enum(["org_admin", "admin", "team_user", "user"]),
20871
21084
  expires_at: external_exports.string().datetime()
20872
21085
  });
21086
+ inviteContactPreviewResponse2 = external_exports.object({
21087
+ inviter_name: external_exports.string().nullable(),
21088
+ entity_id: external_exports.string().uuid(),
21089
+ entity_type: external_exports.literal("contact"),
21090
+ role: external_exports.literal("contact"),
21091
+ expires_at: external_exports.string().datetime()
21092
+ });
21093
+ invitePreviewResponse2 = external_exports.union([inviteRolePreviewResponse2, inviteContactPreviewResponse2]);
21094
+ inviteUnsubscribeBody2 = external_exports.object({ token: external_exports.string().min(1).max(256) }).strict();
20873
21095
  jsonSchemaSchema2 = external_exports.record(external_exports.unknown());
20874
21096
  hubUserIdentity2 = external_exports.object({
20875
21097
  user_id: external_exports.string().nullable(),
@@ -21091,8 +21313,9 @@ var init_dist = __esm({
21091
21313
  PEOPLE_CONTACT_PAGE_DEFAULT2 = 50;
21092
21314
  PEOPLE_CONTACT_EMAIL_MAX_LENGTH2 = 254;
21093
21315
  peopleUserIdSchema2 = external_exports.string().max(64).regex(USER_ID_REGEX2, "must be a user id");
21316
+ peopleInviteEmailSchema2 = external_exports.string().trim().max(PEOPLE_CONTACT_EMAIL_MAX_LENGTH2).email();
21094
21317
  peopleContactInviteBody2 = external_exports.object({
21095
- email: external_exports.string().trim().max(PEOPLE_CONTACT_EMAIL_MAX_LENGTH2).email()
21318
+ email: peopleInviteEmailSchema2
21096
21319
  }).strict();
21097
21320
  peopleContactInviteIdParam2 = external_exports.object({ inviteId: uuidSchema2 });
21098
21321
  peopleContactUserIdParam2 = external_exports.object({ userId: peopleUserIdSchema2 });
@@ -21113,7 +21336,7 @@ var init_dist = __esm({
21113
21336
  display_name: external_exports.string().nullable(),
21114
21337
  email: external_exports.string().nullable()
21115
21338
  }).strict();
21116
- peopleContactSchema2 = peopleContactPersonSchema2.extend({ contact_since: timestampSchema2 }).strict();
21339
+ peopleContactSchema2 = peopleContactPersonSchema2.extend({ contact_since: timestampSchema2, thread_id: uuidSchema2 }).strict();
21117
21340
  peopleIncomingInviteSchema2 = external_exports.object({
21118
21341
  invite_id: uuidSchema2,
21119
21342
  inviter: peopleContactPersonSchema2,
@@ -21121,6 +21344,146 @@ var init_dist = __esm({
21121
21344
  expires_at: timestampSchema2
21122
21345
  }).strict();
21123
21346
  peopleBlockedUserSchema2 = peopleContactPersonSchema2.extend({ blocked_at: timestampSchema2, deleted_user: external_exports.boolean() }).strict();
21347
+ PEOPLE_THREAD_MESSAGE_MAX_LENGTH2 = 4e3;
21348
+ PEOPLE_THREAD_MESSAGES_PAGE_MAX2 = 50;
21349
+ PEOPLE_THREAD_PAGE_MAX2 = 100;
21350
+ PEOPLE_THREAD_PAGE_DEFAULT2 = 50;
21351
+ PEOPLE_GROUP_NAME_MAX_LENGTH2 = 100;
21352
+ PEOPLE_GROUP_AVATAR_URL_MAX_LENGTH2 = 2048;
21353
+ PEOPLE_THREAD_ATTACHMENT_MAX_BYTES2 = 7 * 1024 * 1024;
21354
+ PEOPLE_THREAD_ATTACHMENT_NAME_MAX_LENGTH2 = 255;
21355
+ PEOPLE_ATTACHMENT_STORAGE_PER_USER_BYTES2 = 1024 * 1024 * 1024;
21356
+ PEOPLE_THREAD_ATTACHMENT_MAX_MB2 = Math.floor(PEOPLE_THREAD_ATTACHMENT_MAX_BYTES2 / (1024 * 1024));
21357
+ PEOPLE_THREAD_ATTACHMENT_URL_TTL_SECONDS2 = 15 * 60;
21358
+ PEOPLE_THREAD_ATTACHMENT_URLS_MAX2 = PEOPLE_THREAD_MESSAGES_PAGE_MAX2;
21359
+ peopleThreadIdParam2 = external_exports.object({ threadId: uuidSchema2 });
21360
+ peopleThreadMessageIdParam2 = external_exports.object({ threadId: uuidSchema2, messageId: uuidSchema2 });
21361
+ peopleThreadListQuery2 = external_exports.object({
21362
+ cursor: external_exports.string().min(1).max(256).optional(),
21363
+ limit: external_exports.coerce.number().int().min(1).max(PEOPLE_THREAD_PAGE_MAX2).default(PEOPLE_THREAD_PAGE_DEFAULT2)
21364
+ });
21365
+ peopleThreadMessagesQuery2 = external_exports.object({
21366
+ before_seq: external_exports.coerce.number().int().min(1).optional(),
21367
+ limit: external_exports.coerce.number().int().min(1).max(PEOPLE_THREAD_MESSAGES_PAGE_MAX2).default(PEOPLE_THREAD_MESSAGES_PAGE_MAX2)
21368
+ });
21369
+ peopleThreadAttachmentUploadSchema2 = external_exports.object({
21370
+ file_name: external_exports.string().trim().min(1).max(PEOPLE_THREAD_ATTACHMENT_NAME_MAX_LENGTH2),
21371
+ file_binary: external_exports.string().min(1)
21372
+ }).strict();
21373
+ peopleThreadSendBody2 = external_exports.object({
21374
+ body: external_exports.string().max(PEOPLE_THREAD_MESSAGE_MAX_LENGTH2).default(""),
21375
+ client_message_id: uuidSchema2.optional(),
21376
+ attachment: peopleThreadAttachmentUploadSchema2.optional()
21377
+ }).strict().refine((b) => b.body.trim().length > 0 || b.attachment !== void 0, {
21378
+ message: "must not be empty",
21379
+ path: ["body"]
21380
+ });
21381
+ peopleThreadAttachmentUrlsBody2 = external_exports.object({ attachment_ids: external_exports.array(uuidSchema2).min(1).max(PEOPLE_THREAD_ATTACHMENT_URLS_MAX2) }).strict();
21382
+ peopleThreadReadBody2 = external_exports.object({ seq: external_exports.number().int().min(0) }).strict();
21383
+ peopleThreadSettingsBody2 = external_exports.object({
21384
+ muted: external_exports.boolean().optional(),
21385
+ hidden: external_exports.boolean().optional()
21386
+ }).strict().refine((b) => b.muted !== void 0 || b.hidden !== void 0, "nothing to change");
21387
+ peopleGroupNameSchema2 = external_exports.string().trim().min(1).max(PEOPLE_GROUP_NAME_MAX_LENGTH2);
21388
+ peopleGroupAvatarUrlSchema2 = external_exports.string().max(PEOPLE_GROUP_AVATAR_URL_MAX_LENGTH2).url().refine((s) => s.startsWith("https://"), "must be an https URL");
21389
+ peopleGroupCreateBody2 = external_exports.object({
21390
+ name: peopleGroupNameSchema2,
21391
+ avatar_url: peopleGroupAvatarUrlSchema2.nullable().optional(),
21392
+ org_id: uuidSchema2.optional()
21393
+ }).strict();
21394
+ peopleOrgDirectBody2 = external_exports.object({
21395
+ org_id: uuidSchema2,
21396
+ user_id: peopleUserIdSchema2
21397
+ }).strict();
21398
+ peopleGroupUpdateBody2 = external_exports.object({
21399
+ name: peopleGroupNameSchema2.optional(),
21400
+ avatar_url: peopleGroupAvatarUrlSchema2.nullable().optional()
21401
+ }).strict().refine((b) => b.name !== void 0 || b.avatar_url !== void 0, "nothing to change");
21402
+ peopleGroupInviteBody2 = external_exports.union([
21403
+ external_exports.object({ user_id: peopleUserIdSchema2 }).strict(),
21404
+ external_exports.object({ email: peopleInviteEmailSchema2 }).strict()
21405
+ ]);
21406
+ peopleOrgErasureBody2 = external_exports.object({
21407
+ org_id: uuidSchema2,
21408
+ email: peopleInviteEmailSchema2
21409
+ }).strict();
21410
+ peopleGroupLeaveBody2 = external_exports.object({ delete_my_messages: external_exports.boolean().optional() }).strict();
21411
+ peopleGroupInviteIdParam2 = external_exports.object({ threadId: uuidSchema2, inviteId: uuidSchema2 });
21412
+ peopleGroupIncomingInviteIdParam2 = external_exports.object({ inviteId: uuidSchema2 });
21413
+ peopleGroupMemberParam2 = external_exports.object({ threadId: uuidSchema2, userId: peopleUserIdSchema2 });
21414
+ peopleThreadKindSchema2 = external_exports.enum(["dm", "group"]);
21415
+ peopleThreadMemberSchema2 = external_exports.object({
21416
+ user_id: peopleUserIdSchema2,
21417
+ display_name: external_exports.string().nullable(),
21418
+ deleted_user: external_exports.boolean()
21419
+ }).strict();
21420
+ peopleThreadLastMessageSchema2 = external_exports.object({
21421
+ message_id: uuidSchema2,
21422
+ seq: external_exports.number().int().positive(),
21423
+ author_user_id: peopleUserIdSchema2,
21424
+ preview: external_exports.string().nullable(),
21425
+ deleted: external_exports.boolean(),
21426
+ created_at: timestampSchema2
21427
+ }).strict();
21428
+ peopleGroupRoleSchema2 = external_exports.enum(["admin", "member"]);
21429
+ peopleGroupSummarySchema2 = external_exports.object({
21430
+ membership: external_exports.enum(["member", "removed", "left"]),
21431
+ role: peopleGroupRoleSchema2.nullable(),
21432
+ avatar_url: external_exports.string().nullable()
21433
+ }).strict();
21434
+ peopleThreadSummarySchema2 = external_exports.object({
21435
+ thread_id: uuidSchema2,
21436
+ kind: peopleThreadKindSchema2,
21437
+ org_id: external_exports.string().nullable(),
21438
+ org_name: external_exports.string().nullable(),
21439
+ title: external_exports.string().nullable(),
21440
+ counterpart: peopleThreadMemberSchema2.nullable(),
21441
+ last_seq: external_exports.number().int().nonnegative(),
21442
+ last_message: peopleThreadLastMessageSchema2.nullable(),
21443
+ last_activity_at: timestampSchema2,
21444
+ read_seq: external_exports.number().int().nonnegative(),
21445
+ unread_count: external_exports.number().int().nonnegative(),
21446
+ muted: external_exports.boolean(),
21447
+ hidden: external_exports.boolean(),
21448
+ writable: external_exports.boolean(),
21449
+ group: peopleGroupSummarySchema2.nullable().optional()
21450
+ }).strict();
21451
+ peopleThreadAttachmentSchema2 = external_exports.object({
21452
+ attachment_id: uuidSchema2,
21453
+ file_name: external_exports.string(),
21454
+ content_type: external_exports.string(),
21455
+ size_bytes: external_exports.number().int().positive()
21456
+ }).strict();
21457
+ peopleThreadMessageSchema2 = external_exports.object({
21458
+ message_id: uuidSchema2,
21459
+ seq: external_exports.number().int().positive(),
21460
+ author_user_id: peopleUserIdSchema2,
21461
+ body: external_exports.string().nullable(),
21462
+ deleted: external_exports.boolean(),
21463
+ created_at: timestampSchema2,
21464
+ deleted_at: timestampSchema2.nullable(),
21465
+ client_message_id: uuidSchema2.nullable(),
21466
+ attachment: peopleThreadAttachmentSchema2.nullable().optional()
21467
+ }).strict();
21468
+ peopleGroupMemberSchema2 = peopleThreadMemberSchema2.extend({ role: peopleGroupRoleSchema2, joined_at: timestampSchema2 }).strict();
21469
+ peopleGroupSentInviteSchema2 = external_exports.object({
21470
+ invite_id: uuidSchema2,
21471
+ invitee: peopleThreadMemberSchema2,
21472
+ invitee_email: external_exports.string().nullable().optional(),
21473
+ status: external_exports.literal("sent"),
21474
+ created_at: timestampSchema2,
21475
+ expires_at: timestampSchema2
21476
+ }).strict();
21477
+ peopleGroupIncomingInviteSchema2 = external_exports.object({
21478
+ invite_id: uuidSchema2,
21479
+ thread_id: uuidSchema2,
21480
+ kind: peopleThreadKindSchema2.optional(),
21481
+ group: external_exports.object({ name: external_exports.string() }).strict(),
21482
+ org: external_exports.object({ org_id: external_exports.string(), org_name: external_exports.string().nullable() }).strict().nullable().optional(),
21483
+ inviter: external_exports.object({ user_id: peopleUserIdSchema2, display_name: external_exports.string().nullable(), email: external_exports.string().nullable() }).strict(),
21484
+ created_at: timestampSchema2,
21485
+ expires_at: timestampSchema2
21486
+ }).strict();
21124
21487
  WAYAI_WORKSPACE_LAYOUT = {
21125
21488
  /** Product-namespaced root dir at the git root. */
21126
21489
  wsDir: "wayai-ws",
@@ -25112,7 +25475,6 @@ function parseResources(hubFolder, configResources, unreadable) {
25112
25475
  else if (res.type !== void 0) throw expected(`Invalid resource type for "${resource.name}": expected knowledge or skill`);
25113
25476
  if (res.description) resource.description = res.description;
25114
25477
  if (res.enabled === false) resource.enabled = false;
25115
- if (res.user_browsable) resource.user_browsable = res.user_browsable;
25116
25478
  if (res.skill_name) resource.skill_name = res.skill_name;
25117
25479
  const resSlug = slugify(resource.name);
25118
25480
  const resDir = path14.join(resourcesDir, resSlug);
@@ -33999,7 +34361,6 @@ function parseOrgResources(orgDir) {
33999
34361
  if (res.type) resource.type = res.type;
34000
34362
  if (res.description) resource.description = res.description;
34001
34363
  if (res.enabled === false) resource.enabled = false;
34002
- if (res.user_browsable) resource.user_browsable = res.user_browsable;
34003
34364
  if (res.skill_name) resource.skill_name = res.skill_name;
34004
34365
  if (res.environment) resource.environment = res.environment;
34005
34366
  if (Array.isArray(res.tags)) resource.tags = res.tags;
@@ -35418,7 +35779,7 @@ function exitOnApiError(err) {
35418
35779
  process.exit(1);
35419
35780
  }
35420
35781
  if (err.status === 429) {
35421
- console.error("Rate limited. `wayai admin` is capped at 60 reads/hour per user.");
35782
+ console.error("Rate limited. `wayai admin` is capped at 120 reads/hour per user.");
35422
35783
  process.exit(1);
35423
35784
  }
35424
35785
  if (err.status === 503) {
@@ -35951,7 +36312,7 @@ Examples:
35951
36312
 
35952
36313
  Audit + rate limit:
35953
36314
  Every successful read is logged as admin_debug_read (queryable in Grafana
35954
- Loki \u2014 info-level events are NOT sent to Sentry). Capped at 60 reads/hour/user
36315
+ Loki \u2014 info-level events are NOT sent to Sentry). Capped at 120 reads/hour/user
35955
36316
  across all sources. Platform-admin grant required.
35956
36317
  `.trim());
35957
36318
  }