@wayai/cli 0.3.205 → 0.3.207
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 +298 -47
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -9789,7 +9789,7 @@ 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;
|
|
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
9793
|
var init_chunk_T3VB6VFG = __esm({
|
|
9794
9794
|
"../../packages/core/dist/chunk-T3VB6VFG.js"() {
|
|
9795
9795
|
"use strict";
|
|
@@ -12803,6 +12803,7 @@ var init_chunk_T3VB6VFG = __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_T3VB6VFG = __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;
|
|
@@ -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
|
}
|
|
@@ -15012,6 +15031,21 @@ var init_expected = __esm({
|
|
|
15012
15031
|
}
|
|
15013
15032
|
});
|
|
15014
15033
|
|
|
15034
|
+
// src/lib/terminal-output.ts
|
|
15035
|
+
import { stripVTControlCharacters } from "util";
|
|
15036
|
+
function sanitizeTerminalText(value) {
|
|
15037
|
+
const normalizedNewlines = value.replace(/\r\n?/g, "\n");
|
|
15038
|
+
return stripVTControlCharacters(normalizedNewlines).replace(
|
|
15039
|
+
/[\u0000-\u0009\u000b-\u001f\u007f-\u009f]/g,
|
|
15040
|
+
""
|
|
15041
|
+
);
|
|
15042
|
+
}
|
|
15043
|
+
var init_terminal_output = __esm({
|
|
15044
|
+
"src/lib/terminal-output.ts"() {
|
|
15045
|
+
"use strict";
|
|
15046
|
+
}
|
|
15047
|
+
});
|
|
15048
|
+
|
|
15015
15049
|
// src/lib/fs-safety.ts
|
|
15016
15050
|
import * as fs from "fs";
|
|
15017
15051
|
import * as path from "path";
|
|
@@ -15471,7 +15505,7 @@ function findEnclosingNewHubFolder(workspaceDir) {
|
|
|
15471
15505
|
return null;
|
|
15472
15506
|
}
|
|
15473
15507
|
function resolvePushTarget(workspaceDir, existingHubs, newHubs, selector) {
|
|
15474
|
-
if (selector) {
|
|
15508
|
+
if (selector !== void 0) {
|
|
15475
15509
|
const existingMatch = existingHubs.find(
|
|
15476
15510
|
(h) => h.hubId === selector || path3.basename(h.hubFolder) === selector
|
|
15477
15511
|
);
|
|
@@ -15491,7 +15525,7 @@ function resolvePushTarget(workspaceDir, existingHubs, newHubs, selector) {
|
|
|
15491
15525
|
return previewHubs.length === 1 ? { ok: true, target: { kind: "existing", hub: previewHubs[0] } } : { ok: true, target: { kind: "new", hub: newHubs[0] } };
|
|
15492
15526
|
}
|
|
15493
15527
|
function resolveNewHubForCreate(workspaceDir, existingHubs, newHubs, selector) {
|
|
15494
|
-
if (selector) {
|
|
15528
|
+
if (selector !== void 0) {
|
|
15495
15529
|
const newMatch = newHubs.find((h) => path3.basename(h.hubFolder) === selector);
|
|
15496
15530
|
if (newMatch) return { ok: true, hub: newMatch };
|
|
15497
15531
|
const existingMatch = existingHubs.find(
|
|
@@ -16065,6 +16099,38 @@ function shouldInterceptHelp(command2, args2, ownHelpCommands) {
|
|
|
16065
16099
|
if (ownHelpCommands.has(command2)) return false;
|
|
16066
16100
|
return wantsHelp(args2);
|
|
16067
16101
|
}
|
|
16102
|
+
function isDryRunToken(arg) {
|
|
16103
|
+
return /^--dry-run(=\S*)?$/.test(arg);
|
|
16104
|
+
}
|
|
16105
|
+
function unreadDryRunRefusal(invocation, token, readsBare) {
|
|
16106
|
+
const only = readsBare ? " (only a bare `--dry-run`)" : "";
|
|
16107
|
+
return `\`${invocation}\` does not read \`${sanitizeTerminalText(token)}\`${only}, so it is refused rather than run without it.`;
|
|
16108
|
+
}
|
|
16109
|
+
function entryFlagRefusal(command2, args2, dataNamespaces) {
|
|
16110
|
+
if (command2 === void 0 || ["help", "--help", "-h", "--version", "-v"].includes(command2)) return null;
|
|
16111
|
+
if (dataNamespaces.has(command2)) return null;
|
|
16112
|
+
const words = [command2];
|
|
16113
|
+
for (const arg of args2.slice(0, 2)) {
|
|
16114
|
+
if (!/^[a-z][a-z-]*$/.test(arg)) break;
|
|
16115
|
+
words.push(arg);
|
|
16116
|
+
}
|
|
16117
|
+
const invocation = `wayai ${words.join(" ")}`;
|
|
16118
|
+
let parsed;
|
|
16119
|
+
for (let n = words.length; n > 0 && parsed === void 0; n--) {
|
|
16120
|
+
parsed = PARSED_BY_THE_COMMAND.get(words.slice(0, n).join(" "));
|
|
16121
|
+
}
|
|
16122
|
+
if (parsed === "all") return null;
|
|
16123
|
+
const dryRuns = args2.filter(isDryRunToken);
|
|
16124
|
+
const readsBare = parsed === "bare --dry-run";
|
|
16125
|
+
const refused = readsBare ? dryRuns.find((token) => token !== "--dry-run") : dryRuns[0];
|
|
16126
|
+
if (refused !== void 0) return unreadDryRunRefusal(invocation, refused, readsBare);
|
|
16127
|
+
if (parsed === "selectors") return null;
|
|
16128
|
+
for (const { flag, noun } of SELECTOR_FLAGS) {
|
|
16129
|
+
const empty = args2.some((arg, i) => arg === `${flag}=` || arg === flag && (args2[i + 1] ?? "") === "");
|
|
16130
|
+
if (empty) return `\`${invocation} ${flag}\` needs ${noun}, and none followed it.`;
|
|
16131
|
+
}
|
|
16132
|
+
return null;
|
|
16133
|
+
}
|
|
16068
16134
|
function isNewerVersion(latest, current) {
|
|
16069
16135
|
const strip = (v) => v.replace(/[-+].*$/, "");
|
|
16070
16136
|
const l = strip(latest).split(".").map(Number);
|
|
@@ -16096,12 +16162,13 @@ function resolveSecretSource(source) {
|
|
|
16096
16162
|
}
|
|
16097
16163
|
return "prompt";
|
|
16098
16164
|
}
|
|
16099
|
-
var UUID_RE3, slugify2, OWN_HELP_COMMANDS;
|
|
16165
|
+
var UUID_RE3, slugify2, OWN_HELP_COMMANDS, PARSED_BY_THE_COMMAND, SELECTOR_FLAGS;
|
|
16100
16166
|
var init_utils = __esm({
|
|
16101
16167
|
"src/lib/utils.ts"() {
|
|
16102
16168
|
"use strict";
|
|
16103
16169
|
init_dist();
|
|
16104
16170
|
init_expected();
|
|
16171
|
+
init_terminal_output();
|
|
16105
16172
|
UUID_RE3 = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
16106
16173
|
slugify2 = slugifySkillName;
|
|
16107
16174
|
OWN_HELP_COMMANDS = /* @__PURE__ */ new Set([
|
|
@@ -16112,6 +16179,23 @@ var init_utils = __esm({
|
|
|
16112
16179
|
"alerts",
|
|
16113
16180
|
"communities"
|
|
16114
16181
|
]);
|
|
16182
|
+
PARSED_BY_THE_COMMAND = /* @__PURE__ */ new Map([
|
|
16183
|
+
["pull", "all"],
|
|
16184
|
+
["push", "all"],
|
|
16185
|
+
["communities", "all"],
|
|
16186
|
+
["sync-mcp", "bare --dry-run"],
|
|
16187
|
+
["admin hubs repair-team-orphans", "bare --dry-run"],
|
|
16188
|
+
["admin hubs repair-branching-orphans", "bare --dry-run"],
|
|
16189
|
+
["admin orgs repair-legacy-grants", "bare --dry-run"],
|
|
16190
|
+
["admin harness mass-destroy", "bare --dry-run"],
|
|
16191
|
+
["use", "selectors"],
|
|
16192
|
+
["unbind", "selectors"],
|
|
16193
|
+
["unlock", "selectors"]
|
|
16194
|
+
]);
|
|
16195
|
+
SELECTOR_FLAGS = [
|
|
16196
|
+
{ flag: "--hub", noun: "a hub" },
|
|
16197
|
+
{ flag: "--org", noun: "an organization" }
|
|
16198
|
+
];
|
|
16115
16199
|
}
|
|
16116
16200
|
});
|
|
16117
16201
|
|
|
@@ -19540,21 +19624,6 @@ var init_hub_materializer = __esm({
|
|
|
19540
19624
|
}
|
|
19541
19625
|
});
|
|
19542
19626
|
|
|
19543
|
-
// src/lib/terminal-output.ts
|
|
19544
|
-
import { stripVTControlCharacters } from "util";
|
|
19545
|
-
function sanitizeTerminalText(value) {
|
|
19546
|
-
const normalizedNewlines = value.replace(/\r\n?/g, "\n");
|
|
19547
|
-
return stripVTControlCharacters(normalizedNewlines).replace(
|
|
19548
|
-
/[\u0000-\u0009\u000b-\u001f\u007f-\u009f]/g,
|
|
19549
|
-
""
|
|
19550
|
-
);
|
|
19551
|
-
}
|
|
19552
|
-
var init_terminal_output = __esm({
|
|
19553
|
-
"src/lib/terminal-output.ts"() {
|
|
19554
|
-
"use strict";
|
|
19555
|
-
}
|
|
19556
|
-
});
|
|
19557
|
-
|
|
19558
19627
|
// src/lib/base-workspace.ts
|
|
19559
19628
|
import * as fs15 from "fs";
|
|
19560
19629
|
import * as path19 from "path";
|
|
@@ -19618,7 +19687,7 @@ function assertValidBaseSelector(selector, source = "base") {
|
|
|
19618
19687
|
}
|
|
19619
19688
|
function resolveBaseTarget(gitRoot, selector, cwd = process.cwd()) {
|
|
19620
19689
|
const basesDir = resolveBasesDir(gitRoot);
|
|
19621
|
-
if (selector) {
|
|
19690
|
+
if (selector !== void 0) {
|
|
19622
19691
|
const folder = folderForSelector(basesDir, selector);
|
|
19623
19692
|
if (!isUnder(basesDir, folder)) {
|
|
19624
19693
|
throw expected(`Refusing to target ${folder}: it is outside ${basesDir}.`);
|
|
@@ -19818,7 +19887,7 @@ function routeToSubtree(options) {
|
|
|
19818
19887
|
const cwd = options.cwd ?? process.cwd();
|
|
19819
19888
|
const tokens2 = parseRoutingTokens(args2);
|
|
19820
19889
|
const { hubFlag, baseFlag, communityFlag, positional, orgFlag } = tokens2;
|
|
19821
|
-
if (orgFlag !== void 0) {
|
|
19890
|
+
if (orgFlag !== void 0 || args2.includes("--org")) {
|
|
19822
19891
|
return {
|
|
19823
19892
|
ok: false,
|
|
19824
19893
|
refusal: [
|
|
@@ -19830,6 +19899,10 @@ function routeToSubtree(options) {
|
|
|
19830
19899
|
].join("\n")
|
|
19831
19900
|
};
|
|
19832
19901
|
}
|
|
19902
|
+
const valuedDryRun = args2.find((arg) => isDryRunToken(arg) && arg !== "--dry-run");
|
|
19903
|
+
if (valuedDryRun !== void 0) {
|
|
19904
|
+
return { ok: false, refusal: unreadDryRunRefusal(`wayai ${verb}`, valuedDryRun, true) };
|
|
19905
|
+
}
|
|
19833
19906
|
if (tokens2.takenAsValue) {
|
|
19834
19907
|
const { flag: flag2, by } = tokens2.takenAsValue;
|
|
19835
19908
|
return {
|
|
@@ -19850,7 +19923,23 @@ function routeToSubtree(options) {
|
|
|
19850
19923
|
if (flagged.length > 1) {
|
|
19851
19924
|
return { ok: false, refusal: mixedInvocationRefusal(verb, flagged) };
|
|
19852
19925
|
}
|
|
19926
|
+
if (positional === "") {
|
|
19927
|
+
return {
|
|
19928
|
+
ok: false,
|
|
19929
|
+
refusal: `\`wayai ${verb} ""\` names nothing, so it is refused rather than run on a folder it did not name.`
|
|
19930
|
+
};
|
|
19931
|
+
}
|
|
19853
19932
|
const fromPositional = positional !== void 0 ? resolveSelectorSubtree(layout, positional, cwd) : void 0;
|
|
19933
|
+
if (positional !== void 0 && fromPositional && fromPositional.kind !== "both" && fromPositional.kind !== "unknown" && fromPositional.target === "") {
|
|
19934
|
+
const { kind } = fromPositional;
|
|
19935
|
+
const { target, value } = SUBTREE_FLAGS.find(({ subtree }) => subtree === kind);
|
|
19936
|
+
const dir = `${SUBDIR[kind]}/`;
|
|
19937
|
+
return {
|
|
19938
|
+
ok: false,
|
|
19939
|
+
refusal: `\`wayai ${verb} ${sanitizeTerminalText(positional)}\` names ${dir}, not ${target} in it, so it is refused rather than run on a folder it did not name.
|
|
19940
|
+
wayai ${verb} ${dir}${value}`
|
|
19941
|
+
};
|
|
19942
|
+
}
|
|
19854
19943
|
if (fromPositional?.kind === "both") {
|
|
19855
19944
|
return {
|
|
19856
19945
|
ok: false,
|
|
@@ -19914,6 +20003,7 @@ var init_subtree_routing = __esm({
|
|
|
19914
20003
|
"use strict";
|
|
19915
20004
|
init_layout();
|
|
19916
20005
|
init_terminal_output();
|
|
20006
|
+
init_utils();
|
|
19917
20007
|
init_workspace_manifest();
|
|
19918
20008
|
init_workspace();
|
|
19919
20009
|
init_base_workspace();
|
|
@@ -21067,7 +21157,8 @@ function settingsContent(settings) {
|
|
|
21067
21157
|
return {
|
|
21068
21158
|
rules: normalizeRules(settings.rules),
|
|
21069
21159
|
slow_mode_seconds: settings.slow_mode_seconds,
|
|
21070
|
-
courses_label: (settings.courses_label ?? "").trim()
|
|
21160
|
+
courses_label: (settings.courses_label ?? "").trim(),
|
|
21161
|
+
admission: settings.admission ?? DEFAULT_ADMISSION
|
|
21071
21162
|
};
|
|
21072
21163
|
}
|
|
21073
21164
|
function roomContent(room) {
|
|
@@ -21136,13 +21227,21 @@ function localName(name, id, taken, fallback) {
|
|
|
21136
21227
|
const withPrefix = `${slug}--${id.slice(0, 8)}`;
|
|
21137
21228
|
return taken.has(withPrefix) ? `${slug}--${id}` : withPrefix;
|
|
21138
21229
|
}
|
|
21139
|
-
var REV_VERSION, settingsRev, joinLinkRev, roomRev, courseRev, moduleRev, lessonRev;
|
|
21230
|
+
var REV_VERSION, DEFAULT_ADMISSION, settingsRev, joinLinkRev, roomRev, courseRev, moduleRev, lessonRev;
|
|
21140
21231
|
var init_model = __esm({
|
|
21141
21232
|
"src/communities/model.ts"() {
|
|
21142
21233
|
"use strict";
|
|
21143
21234
|
init_dist();
|
|
21144
21235
|
REV_VERSION = "v1";
|
|
21145
|
-
|
|
21236
|
+
DEFAULT_ADMISSION = "link";
|
|
21237
|
+
settingsRev = (communityId, c) => rev([
|
|
21238
|
+
"settings",
|
|
21239
|
+
communityId,
|
|
21240
|
+
c.rules,
|
|
21241
|
+
c.slow_mode_seconds,
|
|
21242
|
+
c.courses_label,
|
|
21243
|
+
...c.admission === DEFAULT_ADMISSION ? [] : [c.admission]
|
|
21244
|
+
]);
|
|
21146
21245
|
joinLinkRev = (communityId, c) => rev(["join_link", communityId, c.enabled]);
|
|
21147
21246
|
roomRev = (roomId, c) => rev(["room", roomId, c.name, c.archived]);
|
|
21148
21247
|
courseRev = (courseId, c) => rev(["course", courseId, c.title, c.description, c.published]);
|
|
@@ -21550,10 +21649,11 @@ function readCommunityFolder(folder) {
|
|
|
21550
21649
|
const settingsRev2 = settings ? optionalString(settings, "rev", `${COMMUNITY_FILE} settings`, problems2) : void 0;
|
|
21551
21650
|
const slowMode = settings?.slow_mode_seconds;
|
|
21552
21651
|
const coursesLabel = settings?.courses_label ?? "";
|
|
21652
|
+
const admission = settings?.admission ?? DEFAULT_ADMISSION;
|
|
21553
21653
|
if (settings && typeof slowMode !== "number") problems2.push(`${COMMUNITY_FILE} settings: slow_mode_seconds must be a number`);
|
|
21554
21654
|
if (typeof coursesLabel !== "string") problems2.push(`${COMMUNITY_FILE} settings: courses_label must be text`);
|
|
21555
21655
|
if (settings && typeof slowMode === "number" && typeof coursesLabel === "string") {
|
|
21556
|
-
const parsed = communitySettingsBody.safeParse({ rules, slow_mode_seconds: slowMode, courses_label: coursesLabel });
|
|
21656
|
+
const parsed = communitySettingsBody.safeParse({ rules, slow_mode_seconds: slowMode, courses_label: coursesLabel, admission });
|
|
21557
21657
|
if (!parsed.success) problems2.push(`settings: ${contractProblem(parsed.error)}`);
|
|
21558
21658
|
}
|
|
21559
21659
|
if (typeof doc.join_link_enabled !== "boolean") problems2.push(`${COMMUNITY_FILE}: join_link_enabled must be true or false`);
|
|
@@ -21572,7 +21672,8 @@ ${problems2.map((p) => ` - ${p}`).join("\n")}`);
|
|
|
21572
21672
|
settings: {
|
|
21573
21673
|
...settingsRev2 === void 0 ? {} : { rev: settingsRev2 },
|
|
21574
21674
|
slow_mode_seconds: slowMode,
|
|
21575
|
-
courses_label: coursesLabel
|
|
21675
|
+
courses_label: coursesLabel,
|
|
21676
|
+
admission
|
|
21576
21677
|
},
|
|
21577
21678
|
rules,
|
|
21578
21679
|
join_link_enabled: doc.join_link_enabled,
|
|
@@ -21675,7 +21776,8 @@ function renderCommunityYaml(files) {
|
|
|
21675
21776
|
settings: {
|
|
21676
21777
|
...files.settings.rev ? { rev: files.settings.rev } : {},
|
|
21677
21778
|
slow_mode_seconds: files.settings.slow_mode_seconds,
|
|
21678
|
-
courses_label: files.settings.courses_label
|
|
21779
|
+
courses_label: files.settings.courses_label,
|
|
21780
|
+
admission: files.settings.admission
|
|
21679
21781
|
},
|
|
21680
21782
|
join_link_enabled: files.join_link_enabled,
|
|
21681
21783
|
...files.join_link_rev ? { join_link_rev: files.join_link_rev } : {},
|
|
@@ -21733,7 +21835,7 @@ var init_files = __esm({
|
|
|
21733
21835
|
init_model();
|
|
21734
21836
|
init_course_files();
|
|
21735
21837
|
TOP_KEYS = ["community_id", "name", "settings", "join_link_enabled", "join_link_rev", "rooms", "courses", "synced"];
|
|
21736
|
-
SETTINGS_KEYS = ["rev", "slow_mode_seconds", "courses_label"];
|
|
21838
|
+
SETTINGS_KEYS = ["rev", "slow_mode_seconds", "courses_label", "admission"];
|
|
21737
21839
|
ROOM_KEYS = ["key", "id", "rev", "name", "kind", "archived"];
|
|
21738
21840
|
}
|
|
21739
21841
|
});
|
|
@@ -23171,9 +23273,13 @@ function settingsChanges(from, to) {
|
|
|
23171
23273
|
const out = [];
|
|
23172
23274
|
if (from.slow_mode_seconds !== to.slow_mode_seconds) out.push(`slow_mode_seconds ${from.slow_mode_seconds} \u2192 ${to.slow_mode_seconds}`);
|
|
23173
23275
|
if (from.courses_label !== to.courses_label) out.push(`courses_label ${show(from.courses_label)} \u2192 ${show(to.courses_label)}`);
|
|
23276
|
+
if (from.admission !== to.admission) out.push(`admission ${from.admission} \u2192 ${to.admission}`);
|
|
23174
23277
|
if (from.rules !== to.rules) out.push("rules (rules.md)");
|
|
23175
23278
|
return out;
|
|
23176
23279
|
}
|
|
23280
|
+
function admissionChange(to) {
|
|
23281
|
+
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.";
|
|
23282
|
+
}
|
|
23177
23283
|
function roomChanges(from, to) {
|
|
23178
23284
|
const out = [];
|
|
23179
23285
|
if (from.name !== to.name) out.push(`name ${show(from.name)} \u2192 ${show(to.name)}`);
|
|
@@ -23209,7 +23315,8 @@ function settingsPatch(files, server) {
|
|
|
23209
23315
|
// Raw: the text as the file holds it; the server trims it and reads '' as none.
|
|
23210
23316
|
...file.rules !== server.rules ? { rules: files.rules } : {},
|
|
23211
23317
|
...file.slow_mode_seconds !== server.slow_mode_seconds ? { slow_mode_seconds: files.settings.slow_mode_seconds } : {},
|
|
23212
|
-
...file.courses_label !== server.courses_label ? { courses_label: files.settings.courses_label } : {}
|
|
23318
|
+
...file.courses_label !== server.courses_label ? { courses_label: files.settings.courses_label } : {},
|
|
23319
|
+
...file.admission !== server.admission ? { admission: file.admission } : {}
|
|
23213
23320
|
};
|
|
23214
23321
|
}
|
|
23215
23322
|
function roomPatch(entry, room) {
|
|
@@ -23229,10 +23336,12 @@ function takeRoom(entry, room) {
|
|
|
23229
23336
|
entry.kind = room.kind;
|
|
23230
23337
|
}
|
|
23231
23338
|
function takeSettings(files, settings) {
|
|
23339
|
+
const { content, rev: rev2 } = serverSettings(files.community_id, settings);
|
|
23232
23340
|
files.settings = {
|
|
23233
|
-
rev:
|
|
23341
|
+
rev: rev2,
|
|
23234
23342
|
slow_mode_seconds: settings.slow_mode_seconds,
|
|
23235
|
-
courses_label: settings.courses_label ?? ""
|
|
23343
|
+
courses_label: settings.courses_label ?? "",
|
|
23344
|
+
admission: content.admission
|
|
23236
23345
|
};
|
|
23237
23346
|
files.rules = settings.rules ?? "";
|
|
23238
23347
|
}
|
|
@@ -23346,6 +23455,7 @@ function pushListing(plan, courses) {
|
|
|
23346
23455
|
const { settings, joinLink } = plan;
|
|
23347
23456
|
if (settings.state === "local") {
|
|
23348
23457
|
listing.changes.push(`~ settings: ${settingsChanges(settings.server, settings.file).join("; ")}`);
|
|
23458
|
+
if (settings.server.admission !== settings.file.admission) listing.changes.push(` ${admissionChange(settings.file.admission)}`);
|
|
23349
23459
|
if (settings.server.rules !== settings.file.rules) {
|
|
23350
23460
|
listing.changes.push(...lineDiff(settings.server.rules, settings.file.rules).map((line) => ` ${line}`));
|
|
23351
23461
|
}
|
|
@@ -23531,7 +23641,7 @@ function filesFromServer(server) {
|
|
|
23531
23641
|
const files = {
|
|
23532
23642
|
community_id: server.community.community_id,
|
|
23533
23643
|
name: server.community.name,
|
|
23534
|
-
settings: { slow_mode_seconds: 0, courses_label: "" },
|
|
23644
|
+
settings: { slow_mode_seconds: 0, courses_label: "", admission: DEFAULT_ADMISSION },
|
|
23535
23645
|
rules: "",
|
|
23536
23646
|
join_link_enabled: false,
|
|
23537
23647
|
rooms: [],
|
|
@@ -24063,7 +24173,7 @@ async function pushSingleHub(client, hubId, hubFolder, autoConfirm, organization
|
|
|
24063
24173
|
return true;
|
|
24064
24174
|
}
|
|
24065
24175
|
function selectExistingHub(workspaceDir, allHubs, selector, wsLabel) {
|
|
24066
|
-
if (selector) {
|
|
24176
|
+
if (selector !== void 0) {
|
|
24067
24177
|
const match = allHubs.find(
|
|
24068
24178
|
(h) => h.hubId === selector || path28.basename(h.hubFolder) === selector
|
|
24069
24179
|
);
|
|
@@ -24248,7 +24358,7 @@ function resolveHubTarget(workspaceDir, selector) {
|
|
|
24248
24358
|
const gitRoot = findGitRoot();
|
|
24249
24359
|
const wsLabel = hubsDirLabel(gitRoot);
|
|
24250
24360
|
const allHubs = scanWorkspaceHubs(workspaceDir);
|
|
24251
|
-
if (selector) {
|
|
24361
|
+
if (selector !== void 0) {
|
|
24252
24362
|
const match = allHubs.find(
|
|
24253
24363
|
(h) => h.hubId === selector || path29.basename(h.hubFolder) === selector
|
|
24254
24364
|
);
|
|
@@ -24471,7 +24581,8 @@ var init_pull = __esm({
|
|
|
24471
24581
|
// src/commands/create.ts
|
|
24472
24582
|
var create_exports = {};
|
|
24473
24583
|
__export(create_exports, {
|
|
24474
|
-
createCommand: () => createCommand
|
|
24584
|
+
createCommand: () => createCommand,
|
|
24585
|
+
parseArgs: () => parseArgs8
|
|
24475
24586
|
});
|
|
24476
24587
|
import * as path30 from "path";
|
|
24477
24588
|
import * as fs22 from "fs";
|
|
@@ -24483,7 +24594,7 @@ function parseArgs8(args2) {
|
|
|
24483
24594
|
const arg = args2[i];
|
|
24484
24595
|
if (arg === "--yes" || arg === "-y") {
|
|
24485
24596
|
autoConfirm = true;
|
|
24486
|
-
} else if (arg === "--label"
|
|
24597
|
+
} else if (arg === "--label") {
|
|
24487
24598
|
label = args2[++i];
|
|
24488
24599
|
} else if (!arg.startsWith("-") && folderSelector === void 0) {
|
|
24489
24600
|
folderSelector = arg;
|
|
@@ -24633,6 +24744,7 @@ var init_diff = __esm({
|
|
|
24633
24744
|
// src/commands/replicate.ts
|
|
24634
24745
|
var replicate_exports = {};
|
|
24635
24746
|
__export(replicate_exports, {
|
|
24747
|
+
parseArgs: () => parseArgs10,
|
|
24636
24748
|
replicateCommand: () => replicateCommand
|
|
24637
24749
|
});
|
|
24638
24750
|
import * as fs23 from "fs";
|
|
@@ -24642,7 +24754,7 @@ function parseArgs10(args2) {
|
|
|
24642
24754
|
let hubSelector;
|
|
24643
24755
|
for (let i = 0; i < args2.length; i++) {
|
|
24644
24756
|
const arg = args2[i];
|
|
24645
|
-
if (arg === "--label"
|
|
24757
|
+
if (arg === "--label") {
|
|
24646
24758
|
label = args2[++i];
|
|
24647
24759
|
} else if (arg === "--hub" && args2[i + 1]) {
|
|
24648
24760
|
hubSelector = args2[++i];
|
|
@@ -31374,8 +31486,12 @@ async function communitiesCommand(args2) {
|
|
|
31374
31486
|
if (sub === "join-link" && !JOIN_LINK_ACTIONS.includes(action)) {
|
|
31375
31487
|
throw usageError("join-link takes get, rotate or off.");
|
|
31376
31488
|
}
|
|
31489
|
+
if (sub === "access" && !ACCESS_ACTIONS.includes(action)) {
|
|
31490
|
+
throw usageError("access takes list, add or remove.");
|
|
31491
|
+
}
|
|
31377
31492
|
const changesLink = sub === "join-link" && action !== "get";
|
|
31378
|
-
|
|
31493
|
+
const asks = changesLink || sub === "access" && action === "remove";
|
|
31494
|
+
if (yes && !asks) throw usageError("-y applies only to `join-link rotate`, `join-link off` and `access remove`.");
|
|
31379
31495
|
switch (sub) {
|
|
31380
31496
|
case "list":
|
|
31381
31497
|
if (rest.length > 0) throw usageError(`Unexpected argument ${JSON.stringify(rest[0])}.`);
|
|
@@ -31393,6 +31509,21 @@ async function communitiesCommand(args2) {
|
|
|
31393
31509
|
if (selector === void 0 || extra.length > 0) throw usageError("stats takes one <community>.");
|
|
31394
31510
|
return runStats(targetOf(selector, org), json);
|
|
31395
31511
|
}
|
|
31512
|
+
case "access": {
|
|
31513
|
+
const [, selector, ...emails] = rest;
|
|
31514
|
+
if (selector === void 0) throw usageError(`access ${action} takes a <community>.`);
|
|
31515
|
+
if (action === "list" && emails.length > 0) throw usageError("access list takes one <community>.");
|
|
31516
|
+
if (action === "add" && emails.length === 0) throw usageError("access add takes a <community> and one or more emails.");
|
|
31517
|
+
if (action === "remove" && emails.length !== 1) throw usageError("access remove takes a <community> and one email.");
|
|
31518
|
+
const valid = accessEmails(emails);
|
|
31519
|
+
if (action === "remove" && !yes && !isInteractive()) {
|
|
31520
|
+
throw usageError("access remove asks before it removes anyone; pass -y when not running in a terminal.");
|
|
31521
|
+
}
|
|
31522
|
+
const target = targetOf(selector, org);
|
|
31523
|
+
if (action === "list") return runAccessList(target, json);
|
|
31524
|
+
if (action === "add") return runAccessAdd(target, valid, json);
|
|
31525
|
+
return runAccessRemove(target, valid[0], { json, yes });
|
|
31526
|
+
}
|
|
31396
31527
|
}
|
|
31397
31528
|
}
|
|
31398
31529
|
async function runList(orgId, json) {
|
|
@@ -31419,17 +31550,24 @@ async function runJoinLink(action, target, { json, yes }) {
|
|
|
31419
31550
|
printLink(data2, label, json);
|
|
31420
31551
|
return;
|
|
31421
31552
|
}
|
|
31422
|
-
|
|
31423
|
-
|
|
31553
|
+
await warnThenAsk(
|
|
31554
|
+
[
|
|
31555
|
+
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}.`,
|
|
31556
|
+
"Every link shared before stops working."
|
|
31557
|
+
],
|
|
31558
|
+
yes,
|
|
31559
|
+
"Aborted: the join link is unchanged."
|
|
31424
31560
|
);
|
|
31425
|
-
console.error("Every link shared before stops working.");
|
|
31426
|
-
if (!yes && !await confirm("Proceed?")) throw expected("Aborted: the join link is unchanged.");
|
|
31427
31561
|
const { data } = await callCommunities(
|
|
31428
31562
|
action === "rotate" ? api.replaceCommunityJoinLink(id) : api.disableCommunityJoinLink(id),
|
|
31429
31563
|
notFound
|
|
31430
31564
|
);
|
|
31431
31565
|
printLink(data, label, json);
|
|
31432
31566
|
}
|
|
31567
|
+
async function warnThenAsk(warning, yes, aborted) {
|
|
31568
|
+
for (const line of warning) console.error(line);
|
|
31569
|
+
if (!yes && !await confirm("Proceed?")) throw expected(aborted);
|
|
31570
|
+
}
|
|
31433
31571
|
function printLink(link, label, json) {
|
|
31434
31572
|
if (json) {
|
|
31435
31573
|
console.log(JSON.stringify(link, null, 2));
|
|
@@ -31486,11 +31624,107 @@ function printStats(stats, label) {
|
|
|
31486
31624
|
}
|
|
31487
31625
|
}
|
|
31488
31626
|
}
|
|
31489
|
-
|
|
31627
|
+
function accessEmails(raw) {
|
|
31628
|
+
const emails = /* @__PURE__ */ new Set();
|
|
31629
|
+
const invalid = [];
|
|
31630
|
+
for (const value of raw) {
|
|
31631
|
+
const parsed = communityAccessEmailSchema.safeParse(value);
|
|
31632
|
+
if (parsed.success) emails.add(parsed.data);
|
|
31633
|
+
else invalid.push(JSON.stringify(sanitizeTerminalText(value)));
|
|
31634
|
+
}
|
|
31635
|
+
if (invalid.length > 0) {
|
|
31636
|
+
throw expected(`Not ${invalid.length === 1 ? "an email" : "emails"}: ${invalid.join(", ")}. Nothing was sent.`);
|
|
31637
|
+
}
|
|
31638
|
+
if (emails.size > COMMUNITY_ACCESS_ADD_MAX) {
|
|
31639
|
+
throw expected(`An add takes at most ${COMMUNITY_ACCESS_ADD_MAX} emails, and ${emails.size} were given. Nothing was sent.`);
|
|
31640
|
+
}
|
|
31641
|
+
return [...emails];
|
|
31642
|
+
}
|
|
31643
|
+
async function callAccess(request, notFound, label) {
|
|
31644
|
+
try {
|
|
31645
|
+
return await callCommunities(request, notFound);
|
|
31646
|
+
} catch (err) {
|
|
31647
|
+
if (err instanceof ApiError && err.status === 409) {
|
|
31648
|
+
const reason = extractApiErrorReason(err);
|
|
31649
|
+
if (reason === COMMUNITY_ACCESS_FULL_REASON) {
|
|
31650
|
+
throw expected(`Nothing was added: the access list of ${label} would hold more than ${COMMUNITY_ACCESS_MAX} emails.`);
|
|
31651
|
+
}
|
|
31652
|
+
if (reason === PEOPLE_SUSPENDED_REASON) {
|
|
31653
|
+
throw expected("WayAI has suspended this account, so it cannot change a community's access list.");
|
|
31654
|
+
}
|
|
31655
|
+
}
|
|
31656
|
+
throw err;
|
|
31657
|
+
}
|
|
31658
|
+
}
|
|
31659
|
+
async function* accessPages(api, id, notFound) {
|
|
31660
|
+
let cursor;
|
|
31661
|
+
do {
|
|
31662
|
+
const { data } = await callCommunities(api.listCommunityAccess(id, cursor), notFound);
|
|
31663
|
+
yield data.entries;
|
|
31664
|
+
cursor = data.next_cursor ?? void 0;
|
|
31665
|
+
} while (cursor !== void 0);
|
|
31666
|
+
}
|
|
31667
|
+
async function runAccessList(target, json) {
|
|
31668
|
+
const api = await communitiesClient();
|
|
31669
|
+
const { id, label } = await resolveCommunity(api, target);
|
|
31670
|
+
const entries = [];
|
|
31671
|
+
for await (const page of accessPages(api, id, communityNotFound(label))) entries.push(...page);
|
|
31672
|
+
if (json) {
|
|
31673
|
+
console.log(JSON.stringify(entries, null, 2));
|
|
31674
|
+
return;
|
|
31675
|
+
}
|
|
31676
|
+
if (entries.length === 0) {
|
|
31677
|
+
console.log(`The access list of ${label} is empty.`);
|
|
31678
|
+
return;
|
|
31679
|
+
}
|
|
31680
|
+
console.log(`The access list of ${label}: ${entries.length} email(s), oldest first
|
|
31681
|
+
`);
|
|
31682
|
+
printRows(entries.map((entry) => ({ email: entry.email, added: entry.created_at })));
|
|
31683
|
+
}
|
|
31684
|
+
async function runAccessAdd(target, emails, json) {
|
|
31685
|
+
const api = await communitiesClient();
|
|
31686
|
+
const { id, label } = await resolveCommunity(api, target);
|
|
31687
|
+
const { data } = await callAccess(api.addCommunityAccess(id, { emails }), communityNotFound(label), label);
|
|
31688
|
+
if (json) {
|
|
31689
|
+
console.log(JSON.stringify(data, null, 2));
|
|
31690
|
+
return;
|
|
31691
|
+
}
|
|
31692
|
+
const { added, already_listed: already } = data;
|
|
31693
|
+
const listed2 = already === 0 ? "" : `; ${already} ${already === 1 ? "was" : "were"} already on it`;
|
|
31694
|
+
console.log(`Added ${added.length} email(s) to the access list of ${label}${listed2}.`);
|
|
31695
|
+
}
|
|
31696
|
+
async function runAccessRemove(target, email, { json, yes }) {
|
|
31697
|
+
const api = await communitiesClient();
|
|
31698
|
+
const { id, label } = await resolveCommunity(api, target);
|
|
31699
|
+
let entry;
|
|
31700
|
+
for await (const page of accessPages(api, id, communityNotFound(label))) {
|
|
31701
|
+
entry = page.find((e) => e.email === email);
|
|
31702
|
+
if (entry) break;
|
|
31703
|
+
}
|
|
31704
|
+
if (!entry) throw expected(`${email} is not on the access list of ${label}. Nothing was removed.`);
|
|
31705
|
+
await warnThenAsk(
|
|
31706
|
+
[`This takes ${email} off the access list of ${label}.`, "Anyone this email let in is removed from the community now."],
|
|
31707
|
+
yes,
|
|
31708
|
+
"Aborted: the access list is unchanged."
|
|
31709
|
+
);
|
|
31710
|
+
await callAccess(
|
|
31711
|
+
api.removeCommunityAccess(id, entry.access_id),
|
|
31712
|
+
`${email} is no longer on the access list of ${label}, or you are not an owner or admin of its organization. Nothing was removed.`,
|
|
31713
|
+
label
|
|
31714
|
+
);
|
|
31715
|
+
if (json) {
|
|
31716
|
+
console.log(JSON.stringify(entry, null, 2));
|
|
31717
|
+
return;
|
|
31718
|
+
}
|
|
31719
|
+
console.log(`Removed ${email} from the access list of ${label}, and from the community anyone it let in.`);
|
|
31720
|
+
}
|
|
31721
|
+
var USAGE2, SUBCOMMANDS, JOIN_LINK_ACTIONS, ACCESS_ACTIONS;
|
|
31490
31722
|
var init_communities = __esm({
|
|
31491
31723
|
"src/commands/communities.ts"() {
|
|
31492
31724
|
"use strict";
|
|
31493
31725
|
init_contracts();
|
|
31726
|
+
init_api_client();
|
|
31727
|
+
init_errors2();
|
|
31494
31728
|
init_expected();
|
|
31495
31729
|
init_repo_config();
|
|
31496
31730
|
init_terminal_output();
|
|
@@ -31507,6 +31741,9 @@ Usage:
|
|
|
31507
31741
|
wayai communities join-link rotate <community> [--org <org_id>] [-y] [--json]
|
|
31508
31742
|
wayai communities join-link off <community> [--org <org_id>] [-y] [--json]
|
|
31509
31743
|
wayai communities stats <community> [--org <org_id>] [--json]
|
|
31744
|
+
wayai communities access list <community> [--org <org_id>] [--json]
|
|
31745
|
+
wayai communities access add <community> <email>... [--org <org_id>] [--json]
|
|
31746
|
+
wayai communities access remove <community> <email> [--org <org_id>] [-y] [--json]
|
|
31510
31747
|
|
|
31511
31748
|
<community> is a community id, or its exact name within the organization.
|
|
31512
31749
|
The organization is --org, else this repo's (wayai-ws/wayai.yaml).
|
|
@@ -31515,15 +31752,24 @@ join-link get Print the join link, or that it is off
|
|
|
31515
31752
|
join-link rotate Replace the link with a new one and turn it on
|
|
31516
31753
|
join-link off Turn the link off
|
|
31517
31754
|
stats Members, joins by source, messages and course completions
|
|
31755
|
+
access list Print the emails on the access list, oldest first
|
|
31756
|
+
access add Add emails to it, at most ${COMMUNITY_ACCESS_ADD_MAX} at a time
|
|
31757
|
+
access remove Take an email off it, and remove from the community anyone it let in
|
|
31518
31758
|
|
|
31519
|
-
|
|
31520
|
-
|
|
31759
|
+
The access list is who the join link admits once the community is invite-only
|
|
31760
|
+
(settings.admission: invite in community.yaml, or the web console). Emails
|
|
31761
|
+
match exactly, once trimmed and lowercased.
|
|
31762
|
+
|
|
31763
|
+
rotate and off make every link shared before stop working, and access remove
|
|
31764
|
+
removes members. All three ask first; -y skips the question, and is required
|
|
31765
|
+
when not run in a terminal.
|
|
31521
31766
|
|
|
31522
31767
|
These commands need a browser sign-in (\`wayai login\`). An API token
|
|
31523
31768
|
(\`wayai login --token\`, or WAYAI_TOKEN) is refused.
|
|
31524
31769
|
`.trim();
|
|
31525
|
-
SUBCOMMANDS = ["list", "join-link", "stats"];
|
|
31770
|
+
SUBCOMMANDS = ["list", "join-link", "stats", "access"];
|
|
31526
31771
|
JOIN_LINK_ACTIONS = ["get", "rotate", "off"];
|
|
31772
|
+
ACCESS_ACTIONS = ["list", "add", "remove"];
|
|
31527
31773
|
}
|
|
31528
31774
|
});
|
|
31529
31775
|
|
|
@@ -37085,6 +37331,11 @@ async function main() {
|
|
|
37085
37331
|
await printHelp3();
|
|
37086
37332
|
return;
|
|
37087
37333
|
}
|
|
37334
|
+
const flagRefusal = entryFlagRefusal(command, args, new Set(DATA_NAMESPACES));
|
|
37335
|
+
if (flagRefusal) {
|
|
37336
|
+
console.error(flagRefusal);
|
|
37337
|
+
process.exit(1);
|
|
37338
|
+
}
|
|
37088
37339
|
if (command && !wantsHelp(args)) {
|
|
37089
37340
|
const { findGitRoot: findGitRoot2 } = await Promise.resolve().then(() => (init_workspace(), workspace_exports));
|
|
37090
37341
|
const { healSkillLinkForCommand: healSkillLinkForCommand2 } = await Promise.resolve().then(() => (init_skill_symlink(), skill_symlink_exports));
|
|
@@ -37348,7 +37599,7 @@ Commands:
|
|
|
37348
37599
|
sync-skills Sync skills to Anthropic/OpenAI provider connections
|
|
37349
37600
|
sync-mcp Re-discover an MCP connection's tools (refresh stale schemas)
|
|
37350
37601
|
list List organizations and hubs
|
|
37351
|
-
communities An organization's communities: list, join link (get/rotate/off), stats \u2014 \`wayai communities --help\`
|
|
37602
|
+
communities An organization's communities: list, join link (get/rotate/off), stats, access list (list/add/remove) \u2014 \`wayai communities --help\`
|
|
37352
37603
|
report create Report a platform bug (submits to the triage queue)
|
|
37353
37604
|
report edit Amend your own pending report (title/description/error/steps/context)
|
|
37354
37605
|
update Update CLI to the latest version
|