@wayai/cli 0.3.204 → 0.3.206

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
@@ -9723,7 +9723,7 @@ var init_chunk_46WU2TD4 = __esm({
9723
9723
  }
9724
9724
  });
9725
9725
 
9726
- // ../../packages/core/dist/chunk-5RGL5RXH.js
9726
+ // ../../packages/core/dist/chunk-T3VB6VFG.js
9727
9727
  function cacheReconcileIdCount(body) {
9728
9728
  return body.conversations.length + body.histories.reduce((n, history) => n + history.conversation_ids.length, 0) + body.threads.length;
9729
9729
  }
@@ -9789,9 +9789,9 @@ function communityLessonVideoWatchUrl(video) {
9789
9789
  return `https://www.youtube.com/watch?v=${video.id}`;
9790
9790
  }
9791
9791
  }
9792
- var connectionIdParam, connectorIdParam, listConnectionsQuery, deleteConnectionQuery, addConnectionBody, editConnectionBody, PRODUCTION_DIRECT_FIELDS, setProductionCredentialBody, registerWhatsappQuery, registerWhatsappBody, retryProvisioningQuery, resendDomainStatusQuery, 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, 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, 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, CACHE_RECONCILE_MAX_IDS, CACHE_RECONCILE_MAX_HUBS, cacheReconcileScopeSchema, cachedConversationPageSchema, cachedHistoryThreadSchema, cachedPeopleThreadSchema, cacheReconcileBody, archiveHubIdParam, archiveConversationParams, archiveListQuery, archiveMessageObservabilityParams, conversationIdParam, conversationHubQuery, 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, templateIdParam, listTemplatesQuery, deleteTemplateQuery, templateStatusQuery, createTemplateBody, updateTemplateBody, submitTemplateBody, testTemplateBody, CONTACT_ENVIRONMENTS, CONTACT_NAME_MAX, CONTACT_EMAIL_MAX, CONTACT_PHONE_INPUT_MAX, CONTACT_INSTAGRAM_SID_MAX, CONTACT_METADATA_MAX_BYTES, CONTACT_LABEL_MAX, CONTACT_LABELS_MAX, CONTACT_SCOPE_TAGS_MAX, CONTACT_PAGE_MAX, CONTACT_IMPORT_BATCH_MAX, CONTACT_SEARCH_MAX, CONTACT_LIST_NAME_MAX, CONTACT_LIST_NAME_REGEX, CONTACT_LIST_DESCRIPTION_MAX, CONTACT_LIST_FILTER_MAX, CONTACT_LIST_PINS_PER_REQUEST_MAX, SUPPRESSION_SCOPES, SUPPRESSION_ID_REGEX, contactName, contactPhone, contactEmail, contactInstagramSid, contactLabel, contactLabels, contactMetadata, scopeTagIds, contactVisibilitySchema, hasIdentity, IDENTITY_REQUIRED, contactBookOrgQuery, contactBookContactParam, contactBookListParam, contactBookHubParam, contactBookPageQuery, listContactBookContactsQuery, listHubContactBookContactsQuery, contactBookLinkCandidatesQuery, listContactBookListMembersQuery, contactRowFields, createContactBookContactBody, updateContactBookContactBody, contactImportRowSchema, importContactBookContactsBody, linkContactBookContactBody, listName, contactListFilterSchema, createContactBookListBody, updateContactBookListBody, updateContactBookListPinsBody, suppressionIdentitySchema, createContactBookSuppressionBody, contactBookSuppressionParam, listContactBookSuppressionsQuery, CONTACT_BOOK_EMAIL_UNSUBSCRIBE_PATH, contactBookEmailUnsubscribeTokenSchema, contactBookEmailUnsubscribeQuery, orgListReferenceSchema, hubListNameSchema, HUB_LIST_FILTER_REQUIRED, hubContactListFilterSchema, hubContactListIdParam, hubContactListHubQuery, description, createHubContactListBody, updateHubContactListBody, AUTOMATION_TRIGGER_TYPES, AUTOMATION_EVENT_TYPES, AUTOMATION_TARGET_TYPES, AUTOMATION_ACTION_TYPES, AUTOMATION_CHANNEL_TYPES, AUTOMATION_PURPOSES, AUTOMATION_NAME_MAX, AUTOMATION_DESCRIPTION_MAX, AUTOMATION_INSTRUCTIONS_MAX, AUTOMATION_TEXT_MAX, AUTOMATION_CRON_MAX, AUTOMATION_WEBHOOK_AUTHS, AUTOMATION_WEBHOOK_HEADERS, AUTOMATION_WEBHOOK_BODY_MAX_BYTES, AUTOMATION_WEBHOOK_HEADER_NAME_MAX, AUTOMATION_WEBHOOK_MOUNT, WEBHOOK_RESERVED_HEADERS, automationTriggerSchema, automationTargetSchema, automationActionSchema, automationGateSchema, automationName, automationDescription, automationIdParam, automationHubQuery, automationWebhookParams, AUTOMATION_RUNS_PAGE_MAX, listAutomationRunsQuery, createAutomationBody, updateAutomationBody, AUTOMATION_ALERT_CATEGORIES, AUTOMATION_BLOCKED_ALERT_CATEGORY, automationEventSubscriberParam, 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, AUTOMATION_GATE_EVALUATIONS_PER_OPERATION_BOUND, automationGateEvaluationsPerOperation, AUTOMATION_RUN_RETENTION_DAYS_MAX, automationRunRetentionDays, 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, 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, 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, PEOPLE_REPORT_DETAILS_MAX_LENGTH, peopleReportReasonSchema, reportDetailsSchema, reportFields, peopleReportBody, PEOPLE_MODERATION_NOTE_MAX_LENGTH, ADMIN_PEOPLE_REPORTS_PAGE_MAX, ADMIN_PEOPLE_REPORTS_PAGE_DEFAULT, peopleModerationActionSchema, moderationNoteSchema, adminPeopleReportListQuery, adminPeopleReportIdParam, adminPeopleMessageRemovalBody, adminPeopleSuspendBody, adminPeopleNoteBody, COMMUNITIES_PER_ORG_MAX, COMMUNITY_NAME_MAX_LENGTH, COMMUNITY_REGISTRY_CLOSED_REASON, COMMUNITY_ADMISSIONS, COMMUNITY_ACCESS_ADD_MAX, COMMUNITY_JOIN_SOURCE_MAX_LENGTH, COMMUNITY_JOIN_FLOW_TOKEN_MAX_LENGTH, COMMUNITY_ROOMS_MAX, COMMUNITY_ROOM_NAME_MAX_LENGTH, COMMUNITY_MESSAGE_MAX_LENGTH, COMMUNITY_MESSAGES_PAGE_SIZE, COMMUNITY_ATTACHMENT_URLS_MAX, COMMUNITY_POST_TITLE_MAX_LENGTH, COMMUNITY_POST_SEARCH_MAX_LENGTH, COMMUNITY_MEMBER_STATUSES, COMMUNITY_RULES_MAX_LENGTH, COMMUNITY_SLOW_MODE_MAX_SECONDS, COMMUNITY_COURSES_LABEL_MAX_LENGTH, COMMUNITY_LIVE_TICKET_PREFIX, COMMUNITY_STATS_DAYS, communityNameSchema, adminCreateCommunityBody, communityIdParam, communityJoinTokenSchema, communityJoinSourceSchema, communityJoinPreviewQuery, communityJoinBody, communityRoomKindSchema, communityRoomNameSchema, communityRoomIdParam, communityMessageIdParam, communityRoomCreateBody, communityRoomUpdateBody, communityMessagesQuery, communityMessageBodySchema, communityPostTitleSchema, communityAttachmentUploadSchema, communitySendBody, communityEditBody, communityPostIdParam, communityPostsQuery, communityAnswerBody, communityReadBody, communityAttachmentUrlsBody, communityPersonParam, communityOrgParam, communityPeopleQuery, communityCoursesLabelSchema, communityAdmissionSchema, communitySettingsBody, communityAccessEmailSchema, communityAccessAddBody, communityAccessQuery, communityAccessIdParam, communityBanBody, communityLockBody, communityPinBody, communityModLogQuery, communityReportsQuery, communityReportIdParam, communityLiveTicketSchema, communityLiveQuery, communityMuteBody, communityEmailUnsubscribeTokenSchema, COMMUNITY_EMAIL_UNSUBSCRIBE_PATH, communityEmailUnsubscribeQuery, COMMUNITY_COURSES_MAX, COMMUNITY_COURSE_MODULES_MAX, COMMUNITY_COURSE_LESSONS_MAX, COMMUNITY_LESSONS_MAX, COMMUNITY_COURSE_TITLE_MAX_LENGTH, COMMUNITY_COURSE_DESCRIPTION_MAX_LENGTH, COMMUNITY_LESSON_BODY_MAX_LENGTH, COMMUNITY_LESSON_LINKS_MAX, COMMUNITY_LESSON_URL_MAX_LENGTH, YOUTUBE_ID, YOUTUBE_HOSTS, YOUTU_BE, YOUTUBE_ID_PATH, communityCourseIdParam, communityCourseModuleIdParam, communityLessonIdParam, communityCourseTitleSchema, communityCourseDescriptionSchema, communityCoursePositionSchema, communityLessonVideoUrlSchema, communityLessonLinkSchema, communityLessonLinksSchema, communityLessonBodySchema, communityCourseCreateBody, communityCourseUpdateBody, communityModuleCreateBody, communityModuleUpdateBody, communityLessonCreateBody, communityLessonUpdateBody, COMMUNITY_LESSON_TREE_MAX_BYTES, COMMUNITY_LESSON_LINK_PROTOCOLS, COMMUNITY_LESSON_TREE_TOO_LARGE_REASON, COMMUNITY_LESSON_TREE_TOO_DEEP_REASON, COMMUNITY_LESSON_LINE_PREFIX_TOO_WIDE_REASON, LINK_SCHEME, adminSetGuideHubBody, GUIDE_HUB_INELIGIBLE_REASON;
9793
- var init_chunk_5RGL5RXH = __esm({
9794
- "../../packages/core/dist/chunk-5RGL5RXH.js"() {
9792
+ var connectionIdParam, connectorIdParam, listConnectionsQuery, deleteConnectionQuery, addConnectionBody, editConnectionBody, PRODUCTION_DIRECT_FIELDS, setProductionCredentialBody, registerWhatsappQuery, registerWhatsappBody, retryProvisioningQuery, resendDomainStatusQuery, 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, 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, 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, CACHE_RECONCILE_MAX_IDS, CACHE_RECONCILE_MAX_HUBS, cacheReconcileScopeSchema, cachedConversationPageSchema, cachedHistoryThreadSchema, cachedPeopleThreadSchema, cacheReconcileBody, archiveHubIdParam, archiveConversationParams, archiveListQuery, archiveMessageObservabilityParams, conversationIdParam, conversationHubQuery, 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, templateIdParam, listTemplatesQuery, deleteTemplateQuery, templateStatusQuery, createTemplateBody, updateTemplateBody, submitTemplateBody, testTemplateBody, CONTACT_ENVIRONMENTS, CONTACT_NAME_MAX, CONTACT_EMAIL_MAX, CONTACT_PHONE_INPUT_MAX, CONTACT_INSTAGRAM_SID_MAX, CONTACT_METADATA_MAX_BYTES, CONTACT_LABEL_MAX, CONTACT_LABELS_MAX, CONTACT_SCOPE_TAGS_MAX, CONTACT_PAGE_MAX, CONTACT_IMPORT_BATCH_MAX, CONTACT_SEARCH_MAX, CONTACT_LIST_NAME_MAX, CONTACT_LIST_NAME_REGEX, CONTACT_LIST_DESCRIPTION_MAX, CONTACT_LIST_FILTER_MAX, CONTACT_LIST_PINS_PER_REQUEST_MAX, SUPPRESSION_SCOPES, SUPPRESSION_ID_REGEX, contactName, contactPhone, contactEmail, contactInstagramSid, contactLabel, contactLabels, contactMetadata, scopeTagIds, contactVisibilitySchema, hasIdentity, IDENTITY_REQUIRED, contactBookOrgQuery, contactBookContactParam, contactBookListParam, contactBookHubParam, contactBookPageQuery, listContactBookContactsQuery, listHubContactBookContactsQuery, contactBookLinkCandidatesQuery, listContactBookListMembersQuery, contactRowFields, createContactBookContactBody, updateContactBookContactBody, contactImportRowSchema, importContactBookContactsBody, linkContactBookContactBody, listName, contactListFilterSchema, createContactBookListBody, updateContactBookListBody, updateContactBookListPinsBody, suppressionIdentitySchema, createContactBookSuppressionBody, contactBookSuppressionParam, listContactBookSuppressionsQuery, CONTACT_BOOK_EMAIL_UNSUBSCRIBE_PATH, contactBookEmailUnsubscribeTokenSchema, contactBookEmailUnsubscribeQuery, orgListReferenceSchema, hubListNameSchema, HUB_LIST_FILTER_REQUIRED, hubContactListFilterSchema, hubContactListIdParam, hubContactListHubQuery, description, createHubContactListBody, updateHubContactListBody, AUTOMATION_TRIGGER_TYPES, AUTOMATION_EVENT_TYPES, AUTOMATION_TARGET_TYPES, AUTOMATION_ACTION_TYPES, AUTOMATION_CHANNEL_TYPES, AUTOMATION_PURPOSES, AUTOMATION_NAME_MAX, AUTOMATION_DESCRIPTION_MAX, AUTOMATION_INSTRUCTIONS_MAX, AUTOMATION_TEXT_MAX, AUTOMATION_CRON_MAX, AUTOMATION_WEBHOOK_AUTHS, AUTOMATION_WEBHOOK_HEADERS, AUTOMATION_WEBHOOK_BODY_MAX_BYTES, AUTOMATION_WEBHOOK_HEADER_NAME_MAX, AUTOMATION_WEBHOOK_MOUNT, WEBHOOK_RESERVED_HEADERS, automationTriggerSchema, automationTargetSchema, automationActionSchema, automationGateSchema, automationName, automationDescription, automationIdParam, automationHubQuery, automationWebhookParams, AUTOMATION_RUNS_PAGE_MAX, listAutomationRunsQuery, createAutomationBody, updateAutomationBody, AUTOMATION_ALERT_CATEGORIES, AUTOMATION_BLOCKED_ALERT_CATEGORY, automationEventSubscriberParam, 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, AUTOMATION_GATE_EVALUATIONS_PER_OPERATION_BOUND, automationGateEvaluationsPerOperation, AUTOMATION_RUN_RETENTION_DAYS_MAX, automationRunRetentionDays, 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, 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, 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, PEOPLE_REPORT_DETAILS_MAX_LENGTH, peopleReportReasonSchema, reportDetailsSchema, reportFields, peopleReportBody, PEOPLE_MODERATION_NOTE_MAX_LENGTH, ADMIN_PEOPLE_REPORTS_PAGE_MAX, ADMIN_PEOPLE_REPORTS_PAGE_DEFAULT, PEOPLE_SUSPENDED_REASON, peopleModerationActionSchema, moderationNoteSchema, adminPeopleReportListQuery, adminPeopleReportIdParam, adminPeopleMessageRemovalBody, adminPeopleSuspendBody, adminPeopleNoteBody, COMMUNITIES_PER_ORG_MAX, COMMUNITY_NAME_MAX_LENGTH, COMMUNITY_REGISTRY_CLOSED_REASON, COMMUNITY_MEMBERS_MAX, COMMUNITY_ADMISSIONS, COMMUNITY_ACCESS_MAX, COMMUNITY_ACCESS_ADD_MAX, COMMUNITY_ACCESS_FULL_REASON, COMMUNITY_JOIN_SOURCE_MAX_LENGTH, COMMUNITY_JOIN_FLOW_TOKEN_MAX_LENGTH, COMMUNITY_ROOMS_MAX, COMMUNITY_ROOM_NAME_MAX_LENGTH, COMMUNITY_MESSAGE_MAX_LENGTH, COMMUNITY_MESSAGES_PAGE_SIZE, COMMUNITY_ATTACHMENT_URLS_MAX, COMMUNITY_POST_TITLE_MAX_LENGTH, COMMUNITY_POST_SEARCH_MAX_LENGTH, COMMUNITY_MEMBER_STATUSES, COMMUNITY_RULES_MAX_LENGTH, COMMUNITY_SLOW_MODE_MAX_SECONDS, COMMUNITY_COURSES_LABEL_MAX_LENGTH, COMMUNITY_LIVE_TICKET_PREFIX, COMMUNITY_STATS_DAYS, communityNameSchema, adminCreateCommunityBody, communityIdParam, communityJoinTokenSchema, communityJoinSourceSchema, communityJoinPreviewQuery, communityJoinBody, communityRoomKindSchema, communityRoomNameSchema, communityRoomIdParam, communityMessageIdParam, communityRoomCreateBody, communityRoomUpdateBody, communityMessagesQuery, communityMessageBodySchema, communityPostTitleSchema, communityAttachmentUploadSchema, communitySendBody, communityEditBody, communityPostIdParam, communityPostsQuery, communityAnswerBody, communityReadBody, communityAttachmentUrlsBody, communityPersonParam, communityOrgParam, communityPeopleQuery, communityCoursesLabelSchema, communityAdmissionSchema, communitySettingsBody, communityAccessEmailSchema, communityAccessAddBody, communityAccessQuery, communityAccessIdParam, communityBanBody, communityLockBody, communityPinBody, communityModLogQuery, communityReportsQuery, communityReportIdParam, communityLiveTicketSchema, communityLiveQuery, communityMuteBody, communityEmailUnsubscribeTokenSchema, COMMUNITY_EMAIL_UNSUBSCRIBE_PATH, communityEmailUnsubscribeQuery, COMMUNITY_COURSES_MAX, COMMUNITY_COURSE_MODULES_MAX, COMMUNITY_COURSE_LESSONS_MAX, COMMUNITY_LESSONS_MAX, COMMUNITY_COURSE_TITLE_MAX_LENGTH, COMMUNITY_COURSE_DESCRIPTION_MAX_LENGTH, COMMUNITY_LESSON_BODY_MAX_LENGTH, COMMUNITY_LESSON_LINKS_MAX, COMMUNITY_LESSON_URL_MAX_LENGTH, YOUTUBE_ID, YOUTUBE_HOSTS, YOUTU_BE, YOUTUBE_ID_PATH, communityCourseIdParam, communityCourseModuleIdParam, communityLessonIdParam, communityCourseTitleSchema, communityCourseDescriptionSchema, communityCoursePositionSchema, communityLessonVideoUrlSchema, communityLessonLinkSchema, communityLessonLinksSchema, communityLessonBodySchema, communityCourseCreateBody, communityCourseUpdateBody, communityModuleCreateBody, communityModuleUpdateBody, communityLessonCreateBody, communityLessonUpdateBody, COMMUNITY_LESSON_TREE_MAX_BYTES, COMMUNITY_LESSON_LINK_PROTOCOLS, COMMUNITY_LESSON_TREE_TOO_LARGE_REASON, COMMUNITY_LESSON_TREE_TOO_DEEP_REASON, COMMUNITY_LESSON_LINE_PREFIX_TOO_WIDE_REASON, LINK_SCHEME, adminSetGuideHubBody, GUIDE_HUB_INELIGIBLE_REASON;
9793
+ var init_chunk_T3VB6VFG = __esm({
9794
+ "../../packages/core/dist/chunk-T3VB6VFG.js"() {
9795
9795
  "use strict";
9796
9796
  init_chunk_VORPHGDT();
9797
9797
  init_chunk_POL7B3EM();
@@ -12803,6 +12803,7 @@ var init_chunk_5RGL5RXH = __esm({
12803
12803
  PEOPLE_MODERATION_NOTE_MAX_LENGTH = 500;
12804
12804
  ADMIN_PEOPLE_REPORTS_PAGE_MAX = 100;
12805
12805
  ADMIN_PEOPLE_REPORTS_PAGE_DEFAULT = 50;
12806
+ PEOPLE_SUSPENDED_REASON = "suspended";
12806
12807
  peopleModerationActionSchema = external_exports.enum(["remove_message", "suspend", "unsuspend", "dismiss"]);
12807
12808
  moderationNoteSchema = optionalTrimmedText(PEOPLE_MODERATION_NOTE_MAX_LENGTH);
12808
12809
  adminPeopleReportListQuery = external_exports.object({
@@ -12819,8 +12820,11 @@ var init_chunk_5RGL5RXH = __esm({
12819
12820
  COMMUNITIES_PER_ORG_MAX = 10;
12820
12821
  COMMUNITY_NAME_MAX_LENGTH = 100;
12821
12822
  COMMUNITY_REGISTRY_CLOSED_REASON = "community_registry_closed";
12823
+ COMMUNITY_MEMBERS_MAX = 1e4;
12822
12824
  COMMUNITY_ADMISSIONS = ["link", "invite"];
12825
+ COMMUNITY_ACCESS_MAX = COMMUNITY_MEMBERS_MAX;
12823
12826
  COMMUNITY_ACCESS_ADD_MAX = 500;
12827
+ COMMUNITY_ACCESS_FULL_REASON = "community_access_full";
12824
12828
  COMMUNITY_JOIN_SOURCE_MAX_LENGTH = 32;
12825
12829
  COMMUNITY_JOIN_FLOW_TOKEN_MAX_LENGTH = 128;
12826
12830
  COMMUNITY_ROOMS_MAX = 20;
@@ -13287,7 +13291,7 @@ var init_chunk_BPDC67ML = __esm({
13287
13291
  var init_contracts = __esm({
13288
13292
  "../../packages/core/dist/contracts/index.js"() {
13289
13293
  "use strict";
13290
- init_chunk_5RGL5RXH();
13294
+ init_chunk_T3VB6VFG();
13291
13295
  init_chunk_VORPHGDT();
13292
13296
  init_chunk_POL7B3EM();
13293
13297
  init_chunk_46WU2TD4();
@@ -13503,6 +13507,21 @@ var init_api_client = __esm({
13503
13507
  async updateCommunitySettings(communityId, body) {
13504
13508
  return this.request("PATCH", `/api/communities/${encodeURIComponent(communityId)}/settings`, body);
13505
13509
  }
13510
+ // A community's access list (gh #5042, `wayai communities access`): one page of it, oldest first;
13511
+ // an add; the removal of one entry, which removes the members that entry admitted.
13512
+ async listCommunityAccess(communityId, cursor) {
13513
+ const qs = cursor === void 0 ? "" : `?${new URLSearchParams({ cursor })}`;
13514
+ return this.request("GET", `/api/communities/${encodeURIComponent(communityId)}/access${qs}`);
13515
+ }
13516
+ async addCommunityAccess(communityId, body) {
13517
+ return this.request("POST", `/api/communities/${encodeURIComponent(communityId)}/access`, body);
13518
+ }
13519
+ async removeCommunityAccess(communityId, accessId) {
13520
+ return this.request(
13521
+ "DELETE",
13522
+ `/api/communities/${encodeURIComponent(communityId)}/access/${encodeURIComponent(accessId)}`
13523
+ );
13524
+ }
13506
13525
  async listCommunityRooms(communityId) {
13507
13526
  return this.request("GET", `/api/communities/${encodeURIComponent(communityId)}/rooms`);
13508
13527
  }
@@ -14494,7 +14513,7 @@ var init_dist = __esm({
14494
14513
  "../../packages/core/dist/index.js"() {
14495
14514
  "use strict";
14496
14515
  init_chunk_WSROLRJN();
14497
- init_chunk_5RGL5RXH();
14516
+ init_chunk_T3VB6VFG();
14498
14517
  init_chunk_VORPHGDT();
14499
14518
  init_chunk_POL7B3EM();
14500
14519
  init_chunk_46WU2TD4();
@@ -21067,7 +21086,8 @@ function settingsContent(settings) {
21067
21086
  return {
21068
21087
  rules: normalizeRules(settings.rules),
21069
21088
  slow_mode_seconds: settings.slow_mode_seconds,
21070
- courses_label: (settings.courses_label ?? "").trim()
21089
+ courses_label: (settings.courses_label ?? "").trim(),
21090
+ admission: settings.admission ?? DEFAULT_ADMISSION
21071
21091
  };
21072
21092
  }
21073
21093
  function roomContent(room) {
@@ -21136,13 +21156,21 @@ function localName(name, id, taken, fallback) {
21136
21156
  const withPrefix = `${slug}--${id.slice(0, 8)}`;
21137
21157
  return taken.has(withPrefix) ? `${slug}--${id}` : withPrefix;
21138
21158
  }
21139
- var REV_VERSION, settingsRev, joinLinkRev, roomRev, courseRev, moduleRev, lessonRev;
21159
+ var REV_VERSION, DEFAULT_ADMISSION, settingsRev, joinLinkRev, roomRev, courseRev, moduleRev, lessonRev;
21140
21160
  var init_model = __esm({
21141
21161
  "src/communities/model.ts"() {
21142
21162
  "use strict";
21143
21163
  init_dist();
21144
21164
  REV_VERSION = "v1";
21145
- settingsRev = (communityId, c) => rev(["settings", communityId, c.rules, c.slow_mode_seconds, c.courses_label]);
21165
+ DEFAULT_ADMISSION = "link";
21166
+ settingsRev = (communityId, c) => rev([
21167
+ "settings",
21168
+ communityId,
21169
+ c.rules,
21170
+ c.slow_mode_seconds,
21171
+ c.courses_label,
21172
+ ...c.admission === DEFAULT_ADMISSION ? [] : [c.admission]
21173
+ ]);
21146
21174
  joinLinkRev = (communityId, c) => rev(["join_link", communityId, c.enabled]);
21147
21175
  roomRev = (roomId, c) => rev(["room", roomId, c.name, c.archived]);
21148
21176
  courseRev = (courseId, c) => rev(["course", courseId, c.title, c.description, c.published]);
@@ -21550,10 +21578,11 @@ function readCommunityFolder(folder) {
21550
21578
  const settingsRev2 = settings ? optionalString(settings, "rev", `${COMMUNITY_FILE} settings`, problems2) : void 0;
21551
21579
  const slowMode = settings?.slow_mode_seconds;
21552
21580
  const coursesLabel = settings?.courses_label ?? "";
21581
+ const admission = settings?.admission ?? DEFAULT_ADMISSION;
21553
21582
  if (settings && typeof slowMode !== "number") problems2.push(`${COMMUNITY_FILE} settings: slow_mode_seconds must be a number`);
21554
21583
  if (typeof coursesLabel !== "string") problems2.push(`${COMMUNITY_FILE} settings: courses_label must be text`);
21555
21584
  if (settings && typeof slowMode === "number" && typeof coursesLabel === "string") {
21556
- const parsed = communitySettingsBody.safeParse({ rules, slow_mode_seconds: slowMode, courses_label: coursesLabel });
21585
+ const parsed = communitySettingsBody.safeParse({ rules, slow_mode_seconds: slowMode, courses_label: coursesLabel, admission });
21557
21586
  if (!parsed.success) problems2.push(`settings: ${contractProblem(parsed.error)}`);
21558
21587
  }
21559
21588
  if (typeof doc.join_link_enabled !== "boolean") problems2.push(`${COMMUNITY_FILE}: join_link_enabled must be true or false`);
@@ -21572,7 +21601,8 @@ ${problems2.map((p) => ` - ${p}`).join("\n")}`);
21572
21601
  settings: {
21573
21602
  ...settingsRev2 === void 0 ? {} : { rev: settingsRev2 },
21574
21603
  slow_mode_seconds: slowMode,
21575
- courses_label: coursesLabel
21604
+ courses_label: coursesLabel,
21605
+ admission
21576
21606
  },
21577
21607
  rules,
21578
21608
  join_link_enabled: doc.join_link_enabled,
@@ -21675,7 +21705,8 @@ function renderCommunityYaml(files) {
21675
21705
  settings: {
21676
21706
  ...files.settings.rev ? { rev: files.settings.rev } : {},
21677
21707
  slow_mode_seconds: files.settings.slow_mode_seconds,
21678
- courses_label: files.settings.courses_label
21708
+ courses_label: files.settings.courses_label,
21709
+ admission: files.settings.admission
21679
21710
  },
21680
21711
  join_link_enabled: files.join_link_enabled,
21681
21712
  ...files.join_link_rev ? { join_link_rev: files.join_link_rev } : {},
@@ -21697,15 +21728,24 @@ function renderRules(rules) {
21697
21728
  return text === "" ? "" : `${text}
21698
21729
  `;
21699
21730
  }
21700
- function writeCommunityFiles(root, folder, files) {
21701
- const written = [];
21702
- for (const [name, content] of [
21731
+ function renderCommunityFiles(files) {
21732
+ return [
21703
21733
  [COMMUNITY_FILE, renderCommunityYaml(files)],
21704
21734
  [RULES_FILE, renderRules(files.rules)]
21705
- ]) {
21706
- if (writeFileIfChangedNoFollow(root, path25.join(folder, name), content)) written.push(name);
21707
- }
21708
- return written;
21735
+ ];
21736
+ }
21737
+ function writeCommunityFiles(root, folder, files) {
21738
+ return renderCommunityFiles(files).flatMap(([name, content]) => writeFileIfChangedNoFollow(root, path25.join(folder, name), content) ? [name] : []);
21739
+ }
21740
+ function communityFilesSaver(root, folder, files) {
21741
+ const saved = new Map(renderCommunityFiles(files));
21742
+ return () => {
21743
+ for (const [name, content] of renderCommunityFiles(files)) {
21744
+ if (saved.get(name) === content) continue;
21745
+ writeFileIfChangedNoFollow(root, path25.join(folder, name), content);
21746
+ saved.set(name, content);
21747
+ }
21748
+ };
21709
21749
  }
21710
21750
  function writeCommunityFolder(root, folder, files) {
21711
21751
  return [...writeCommunityFiles(root, folder, files), ...files.courses.flatMap((course) => writeCourseFolder(root, folder, course))];
@@ -21724,7 +21764,7 @@ var init_files = __esm({
21724
21764
  init_model();
21725
21765
  init_course_files();
21726
21766
  TOP_KEYS = ["community_id", "name", "settings", "join_link_enabled", "join_link_rev", "rooms", "courses", "synced"];
21727
- SETTINGS_KEYS = ["rev", "slow_mode_seconds", "courses_label"];
21767
+ SETTINGS_KEYS = ["rev", "slow_mode_seconds", "courses_label", "admission"];
21728
21768
  ROOM_KEYS = ["key", "id", "rev", "name", "kind", "archived"];
21729
21769
  }
21730
21770
  });
@@ -23162,9 +23202,13 @@ function settingsChanges(from, to) {
23162
23202
  const out = [];
23163
23203
  if (from.slow_mode_seconds !== to.slow_mode_seconds) out.push(`slow_mode_seconds ${from.slow_mode_seconds} \u2192 ${to.slow_mode_seconds}`);
23164
23204
  if (from.courses_label !== to.courses_label) out.push(`courses_label ${show(from.courses_label)} \u2192 ${show(to.courses_label)}`);
23205
+ if (from.admission !== to.admission) out.push(`admission ${from.admission} \u2192 ${to.admission}`);
23165
23206
  if (from.rules !== to.rules) out.push("rules (rules.md)");
23166
23207
  return out;
23167
23208
  }
23209
+ function admissionChange(to) {
23210
+ return to === "invite" ? "From now on the link admits only the organization's owners and admins and the emails on the access list (wayai communities access). Current members stay, including anyone who joined with a shared link; any other member who leaves needs their email on the list to join again." : "From now on anyone with the join link can join. The access list is kept.";
23211
+ }
23168
23212
  function roomChanges(from, to) {
23169
23213
  const out = [];
23170
23214
  if (from.name !== to.name) out.push(`name ${show(from.name)} \u2192 ${show(to.name)}`);
@@ -23200,7 +23244,8 @@ function settingsPatch(files, server) {
23200
23244
  // Raw: the text as the file holds it; the server trims it and reads '' as none.
23201
23245
  ...file.rules !== server.rules ? { rules: files.rules } : {},
23202
23246
  ...file.slow_mode_seconds !== server.slow_mode_seconds ? { slow_mode_seconds: files.settings.slow_mode_seconds } : {},
23203
- ...file.courses_label !== server.courses_label ? { courses_label: files.settings.courses_label } : {}
23247
+ ...file.courses_label !== server.courses_label ? { courses_label: files.settings.courses_label } : {},
23248
+ ...file.admission !== server.admission ? { admission: file.admission } : {}
23204
23249
  };
23205
23250
  }
23206
23251
  function roomPatch(entry, room) {
@@ -23220,10 +23265,12 @@ function takeRoom(entry, room) {
23220
23265
  entry.kind = room.kind;
23221
23266
  }
23222
23267
  function takeSettings(files, settings) {
23268
+ const { content, rev: rev2 } = serverSettings(files.community_id, settings);
23223
23269
  files.settings = {
23224
- rev: serverSettings(files.community_id, settings).rev,
23270
+ rev: rev2,
23225
23271
  slow_mode_seconds: settings.slow_mode_seconds,
23226
- courses_label: settings.courses_label ?? ""
23272
+ courses_label: settings.courses_label ?? "",
23273
+ admission: content.admission
23227
23274
  };
23228
23275
  files.rules = settings.rules ?? "";
23229
23276
  }
@@ -23337,6 +23384,7 @@ function pushListing(plan, courses) {
23337
23384
  const { settings, joinLink } = plan;
23338
23385
  if (settings.state === "local") {
23339
23386
  listing.changes.push(`~ settings: ${settingsChanges(settings.server, settings.file).join("; ")}`);
23387
+ if (settings.server.admission !== settings.file.admission) listing.changes.push(` ${admissionChange(settings.file.admission)}`);
23340
23388
  if (settings.server.rules !== settings.file.rules) {
23341
23389
  listing.changes.push(...lineDiff(settings.server.rules, settings.file.rules).map((line) => ` ${line}`));
23342
23390
  }
@@ -23390,9 +23438,7 @@ async function pushCommunity(gitRootOrNull, selector, args2) {
23390
23438
  ${problems2.map((p) => ` - ${p}`).join("\n")}`);
23391
23439
  }
23392
23440
  const { communitiesDir } = resolveLayout(gitRoot);
23393
- const save = () => {
23394
- writeCommunityFiles(communitiesDir, folder, files);
23395
- };
23441
+ const save = communityFilesSaver(communitiesDir, folder, files);
23396
23442
  const courses = new CoursePush(files, plan.courses, remote, courseSaver(communitiesDir, folder, save));
23397
23443
  const listing = pushListing(plan, courses);
23398
23444
  printListing(listing);
@@ -23524,7 +23570,7 @@ function filesFromServer(server) {
23524
23570
  const files = {
23525
23571
  community_id: server.community.community_id,
23526
23572
  name: server.community.name,
23527
- settings: { slow_mode_seconds: 0, courses_label: "" },
23573
+ settings: { slow_mode_seconds: 0, courses_label: "", admission: DEFAULT_ADMISSION },
23528
23574
  rules: "",
23529
23575
  join_link_enabled: false,
23530
23576
  rooms: [],
@@ -23597,7 +23643,7 @@ async function pullCommunity(gitRootOrNull, selector, args2) {
23597
23643
  const remote = await openRemote(communityId);
23598
23644
  const server = await remote.read(orgId);
23599
23645
  if (!existing) {
23600
- const taken = new Set(safeReaddir2(communitiesDir));
23646
+ const taken = new Set(safeReaddir2(communitiesDir).map((name) => name.toLowerCase()));
23601
23647
  const folder2 = path27.join(communitiesDir, localName(server.community.name, communityId, taken, "community"));
23602
23648
  const files = filesFromServer(server);
23603
23649
  const where = `${path27.relative(gitRoot, folder2)}/`;
@@ -31367,8 +31413,12 @@ async function communitiesCommand(args2) {
31367
31413
  if (sub === "join-link" && !JOIN_LINK_ACTIONS.includes(action)) {
31368
31414
  throw usageError("join-link takes get, rotate or off.");
31369
31415
  }
31416
+ if (sub === "access" && !ACCESS_ACTIONS.includes(action)) {
31417
+ throw usageError("access takes list, add or remove.");
31418
+ }
31370
31419
  const changesLink = sub === "join-link" && action !== "get";
31371
- if (yes && !changesLink) throw usageError("-y applies only to `join-link rotate` and `join-link off`.");
31420
+ const asks = changesLink || sub === "access" && action === "remove";
31421
+ if (yes && !asks) throw usageError("-y applies only to `join-link rotate`, `join-link off` and `access remove`.");
31372
31422
  switch (sub) {
31373
31423
  case "list":
31374
31424
  if (rest.length > 0) throw usageError(`Unexpected argument ${JSON.stringify(rest[0])}.`);
@@ -31386,6 +31436,21 @@ async function communitiesCommand(args2) {
31386
31436
  if (selector === void 0 || extra.length > 0) throw usageError("stats takes one <community>.");
31387
31437
  return runStats(targetOf(selector, org), json);
31388
31438
  }
31439
+ case "access": {
31440
+ const [, selector, ...emails] = rest;
31441
+ if (selector === void 0) throw usageError(`access ${action} takes a <community>.`);
31442
+ if (action === "list" && emails.length > 0) throw usageError("access list takes one <community>.");
31443
+ if (action === "add" && emails.length === 0) throw usageError("access add takes a <community> and one or more emails.");
31444
+ if (action === "remove" && emails.length !== 1) throw usageError("access remove takes a <community> and one email.");
31445
+ const valid = accessEmails(emails);
31446
+ if (action === "remove" && !yes && !isInteractive()) {
31447
+ throw usageError("access remove asks before it removes anyone; pass -y when not running in a terminal.");
31448
+ }
31449
+ const target = targetOf(selector, org);
31450
+ if (action === "list") return runAccessList(target, json);
31451
+ if (action === "add") return runAccessAdd(target, valid, json);
31452
+ return runAccessRemove(target, valid[0], { json, yes });
31453
+ }
31389
31454
  }
31390
31455
  }
31391
31456
  async function runList(orgId, json) {
@@ -31412,17 +31477,24 @@ async function runJoinLink(action, target, { json, yes }) {
31412
31477
  printLink(data2, label, json);
31413
31478
  return;
31414
31479
  }
31415
- console.error(
31416
- action === "rotate" ? `This replaces the join link of ${label} with a new one and turns it on.` : `This turns off the join link of ${label}.`
31480
+ await warnThenAsk(
31481
+ [
31482
+ action === "rotate" ? `This replaces the join link of ${label} with a new one and turns it on.` : `This turns off the join link of ${label}.`,
31483
+ "Every link shared before stops working."
31484
+ ],
31485
+ yes,
31486
+ "Aborted: the join link is unchanged."
31417
31487
  );
31418
- console.error("Every link shared before stops working.");
31419
- if (!yes && !await confirm("Proceed?")) throw expected("Aborted: the join link is unchanged.");
31420
31488
  const { data } = await callCommunities(
31421
31489
  action === "rotate" ? api.replaceCommunityJoinLink(id) : api.disableCommunityJoinLink(id),
31422
31490
  notFound
31423
31491
  );
31424
31492
  printLink(data, label, json);
31425
31493
  }
31494
+ async function warnThenAsk(warning, yes, aborted) {
31495
+ for (const line of warning) console.error(line);
31496
+ if (!yes && !await confirm("Proceed?")) throw expected(aborted);
31497
+ }
31426
31498
  function printLink(link, label, json) {
31427
31499
  if (json) {
31428
31500
  console.log(JSON.stringify(link, null, 2));
@@ -31479,11 +31551,107 @@ function printStats(stats, label) {
31479
31551
  }
31480
31552
  }
31481
31553
  }
31482
- var USAGE2, SUBCOMMANDS, JOIN_LINK_ACTIONS;
31554
+ function accessEmails(raw) {
31555
+ const emails = /* @__PURE__ */ new Set();
31556
+ const invalid = [];
31557
+ for (const value of raw) {
31558
+ const parsed = communityAccessEmailSchema.safeParse(value);
31559
+ if (parsed.success) emails.add(parsed.data);
31560
+ else invalid.push(JSON.stringify(sanitizeTerminalText(value)));
31561
+ }
31562
+ if (invalid.length > 0) {
31563
+ throw expected(`Not ${invalid.length === 1 ? "an email" : "emails"}: ${invalid.join(", ")}. Nothing was sent.`);
31564
+ }
31565
+ if (emails.size > COMMUNITY_ACCESS_ADD_MAX) {
31566
+ throw expected(`An add takes at most ${COMMUNITY_ACCESS_ADD_MAX} emails, and ${emails.size} were given. Nothing was sent.`);
31567
+ }
31568
+ return [...emails];
31569
+ }
31570
+ async function callAccess(request, notFound, label) {
31571
+ try {
31572
+ return await callCommunities(request, notFound);
31573
+ } catch (err) {
31574
+ if (err instanceof ApiError && err.status === 409) {
31575
+ const reason = extractApiErrorReason(err);
31576
+ if (reason === COMMUNITY_ACCESS_FULL_REASON) {
31577
+ throw expected(`Nothing was added: the access list of ${label} would hold more than ${COMMUNITY_ACCESS_MAX} emails.`);
31578
+ }
31579
+ if (reason === PEOPLE_SUSPENDED_REASON) {
31580
+ throw expected("WayAI has suspended this account, so it cannot change a community's access list.");
31581
+ }
31582
+ }
31583
+ throw err;
31584
+ }
31585
+ }
31586
+ async function* accessPages(api, id, notFound) {
31587
+ let cursor;
31588
+ do {
31589
+ const { data } = await callCommunities(api.listCommunityAccess(id, cursor), notFound);
31590
+ yield data.entries;
31591
+ cursor = data.next_cursor ?? void 0;
31592
+ } while (cursor !== void 0);
31593
+ }
31594
+ async function runAccessList(target, json) {
31595
+ const api = await communitiesClient();
31596
+ const { id, label } = await resolveCommunity(api, target);
31597
+ const entries = [];
31598
+ for await (const page of accessPages(api, id, communityNotFound(label))) entries.push(...page);
31599
+ if (json) {
31600
+ console.log(JSON.stringify(entries, null, 2));
31601
+ return;
31602
+ }
31603
+ if (entries.length === 0) {
31604
+ console.log(`The access list of ${label} is empty.`);
31605
+ return;
31606
+ }
31607
+ console.log(`The access list of ${label}: ${entries.length} email(s), oldest first
31608
+ `);
31609
+ printRows(entries.map((entry) => ({ email: entry.email, added: entry.created_at })));
31610
+ }
31611
+ async function runAccessAdd(target, emails, json) {
31612
+ const api = await communitiesClient();
31613
+ const { id, label } = await resolveCommunity(api, target);
31614
+ const { data } = await callAccess(api.addCommunityAccess(id, { emails }), communityNotFound(label), label);
31615
+ if (json) {
31616
+ console.log(JSON.stringify(data, null, 2));
31617
+ return;
31618
+ }
31619
+ const { added, already_listed: already } = data;
31620
+ const listed2 = already === 0 ? "" : `; ${already} ${already === 1 ? "was" : "were"} already on it`;
31621
+ console.log(`Added ${added.length} email(s) to the access list of ${label}${listed2}.`);
31622
+ }
31623
+ async function runAccessRemove(target, email, { json, yes }) {
31624
+ const api = await communitiesClient();
31625
+ const { id, label } = await resolveCommunity(api, target);
31626
+ let entry;
31627
+ for await (const page of accessPages(api, id, communityNotFound(label))) {
31628
+ entry = page.find((e) => e.email === email);
31629
+ if (entry) break;
31630
+ }
31631
+ if (!entry) throw expected(`${email} is not on the access list of ${label}. Nothing was removed.`);
31632
+ await warnThenAsk(
31633
+ [`This takes ${email} off the access list of ${label}.`, "Anyone this email let in is removed from the community now."],
31634
+ yes,
31635
+ "Aborted: the access list is unchanged."
31636
+ );
31637
+ await callAccess(
31638
+ api.removeCommunityAccess(id, entry.access_id),
31639
+ `${email} is no longer on the access list of ${label}, or you are not an owner or admin of its organization. Nothing was removed.`,
31640
+ label
31641
+ );
31642
+ if (json) {
31643
+ console.log(JSON.stringify(entry, null, 2));
31644
+ return;
31645
+ }
31646
+ console.log(`Removed ${email} from the access list of ${label}, and from the community anyone it let in.`);
31647
+ }
31648
+ var USAGE2, SUBCOMMANDS, JOIN_LINK_ACTIONS, ACCESS_ACTIONS;
31483
31649
  var init_communities = __esm({
31484
31650
  "src/commands/communities.ts"() {
31485
31651
  "use strict";
31486
31652
  init_contracts();
31653
+ init_api_client();
31654
+ init_errors2();
31487
31655
  init_expected();
31488
31656
  init_repo_config();
31489
31657
  init_terminal_output();
@@ -31500,6 +31668,9 @@ Usage:
31500
31668
  wayai communities join-link rotate <community> [--org <org_id>] [-y] [--json]
31501
31669
  wayai communities join-link off <community> [--org <org_id>] [-y] [--json]
31502
31670
  wayai communities stats <community> [--org <org_id>] [--json]
31671
+ wayai communities access list <community> [--org <org_id>] [--json]
31672
+ wayai communities access add <community> <email>... [--org <org_id>] [--json]
31673
+ wayai communities access remove <community> <email> [--org <org_id>] [-y] [--json]
31503
31674
 
31504
31675
  <community> is a community id, or its exact name within the organization.
31505
31676
  The organization is --org, else this repo's (wayai-ws/wayai.yaml).
@@ -31508,15 +31679,24 @@ join-link get Print the join link, or that it is off
31508
31679
  join-link rotate Replace the link with a new one and turn it on
31509
31680
  join-link off Turn the link off
31510
31681
  stats Members, joins by source, messages and course completions
31682
+ access list Print the emails on the access list, oldest first
31683
+ access add Add emails to it, at most ${COMMUNITY_ACCESS_ADD_MAX} at a time
31684
+ access remove Take an email off it, and remove from the community anyone it let in
31685
+
31686
+ The access list is who the join link admits once the community is invite-only
31687
+ (settings.admission: invite in community.yaml, or the web console). Emails
31688
+ match exactly, once trimmed and lowercased.
31511
31689
 
31512
- rotate and off make every link shared before stop working. Both ask first;
31513
- -y skips the question, and is required when not run in a terminal.
31690
+ rotate and off make every link shared before stop working, and access remove
31691
+ removes members. All three ask first; -y skips the question, and is required
31692
+ when not run in a terminal.
31514
31693
 
31515
31694
  These commands need a browser sign-in (\`wayai login\`). An API token
31516
31695
  (\`wayai login --token\`, or WAYAI_TOKEN) is refused.
31517
31696
  `.trim();
31518
- SUBCOMMANDS = ["list", "join-link", "stats"];
31697
+ SUBCOMMANDS = ["list", "join-link", "stats", "access"];
31519
31698
  JOIN_LINK_ACTIONS = ["get", "rotate", "off"];
31699
+ ACCESS_ACTIONS = ["list", "add", "remove"];
31520
31700
  }
31521
31701
  });
31522
31702
 
@@ -37341,7 +37521,7 @@ Commands:
37341
37521
  sync-skills Sync skills to Anthropic/OpenAI provider connections
37342
37522
  sync-mcp Re-discover an MCP connection's tools (refresh stale schemas)
37343
37523
  list List organizations and hubs
37344
- communities An organization's communities: list, join link (get/rotate/off), stats \u2014 \`wayai communities --help\`
37524
+ communities An organization's communities: list, join link (get/rotate/off), stats, access list (list/add/remove) \u2014 \`wayai communities --help\`
37345
37525
  report create Report a platform bug (submits to the triage queue)
37346
37526
  report edit Amend your own pending report (title/description/error/steps/context)
37347
37527
  update Update CLI to the latest version