@yrpri/api 9.0.101 → 9.0.103
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/active-citizen/engine/allOurIdeas/explainAnswersAssistant.js +11 -1
- package/active-citizen/llms/baseChatBot.js +8 -75
- package/active-citizen/llms/imageGeneration/chatGptImageGenerator.js +56 -0
- package/active-citizen/llms/imageGeneration/collectionImageGenerator.js +6 -0
- package/agents/assistants/agentAssistant.js +3 -2
- package/agents/assistants/baseAssistant.js +7 -30
- package/agents/assistants/baseAssistantWithVoice.js +3 -3
- package/agents/assistants/voiceAssistant.js +2 -2
- package/agents/controllers/agentProductController.js +2 -1
- package/agents/controllers/agentSubscriptionController.js +20 -11
- package/agents/controllers/assistantsController.js +171 -127
- package/agents/controllers/policySynthAgents.js +33 -12
- package/agents/managers/newAiModelSetup.js +96 -0
- package/agents/managers/subscriptionManager.js +2 -2
- package/app.js +12 -12
- package/authorization.cjs +4 -0
- package/controllers/allOurIdeas.js +2 -1
- package/controllers/communities.cjs +47 -1
- package/controllers/groups.cjs +67 -4
- package/controllers/index.cjs +7 -7
- package/controllers/nonSpa.cjs +1 -1
- package/dist/active-citizen/controllers/activities.cjs +174 -0
- package/dist/active-citizen/controllers/news_feeds.cjs +96 -0
- package/dist/active-citizen/controllers/notifications.cjs +243 -0
- package/dist/active-citizen/controllers/recommendations.cjs +280 -0
- package/dist/active-citizen/engine/allOurIdeas/aiHelper.js +204 -0
- package/dist/active-citizen/engine/allOurIdeas/explainAnswersAssistant.js +66 -0
- package/dist/active-citizen/engine/allOurIdeas/iconGenerator.js +38 -0
- package/dist/active-citizen/engine/analytics/export_anon_community_activities.js +334 -0
- package/dist/active-citizen/engine/analytics/importer.js +308 -0
- package/dist/active-citizen/engine/analytics/manager.cjs +377 -0
- package/dist/active-citizen/engine/analytics/plausible/manager.cjs +500 -0
- package/dist/active-citizen/engine/analytics/statsCalc.cjs +194 -0
- package/dist/active-citizen/engine/analytics/utils.cjs +369 -0
- package/dist/active-citizen/engine/marketing/campaign.cjs +90 -0
- package/dist/active-citizen/engine/moderation/fraud/CreateFraudAuditReport.cjs +313 -0
- package/dist/active-citizen/engine/moderation/fraud/FraudBase.cjs +239 -0
- package/dist/active-citizen/engine/moderation/fraud/FraudDeleteBase.cjs +211 -0
- package/dist/active-citizen/engine/moderation/fraud/FraudDeleteEndorsements.cjs +120 -0
- package/dist/active-citizen/engine/moderation/fraud/FraudDeletePointQualities.cjs +114 -0
- package/dist/active-citizen/engine/moderation/fraud/FraudDeletePoints.cjs +101 -0
- package/dist/active-citizen/engine/moderation/fraud/FraudDeletePosts.cjs +84 -0
- package/dist/active-citizen/engine/moderation/fraud/FraudDeleteRatings.cjs +15 -0
- package/dist/active-citizen/engine/moderation/fraud/FraudGetBase.cjs +133 -0
- package/dist/active-citizen/engine/moderation/fraud/FraudGetEndorsements.cjs +185 -0
- package/dist/active-citizen/engine/moderation/fraud/FraudGetPointQualities.cjs +184 -0
- package/dist/active-citizen/engine/moderation/fraud/FraudGetPoints.cjs +170 -0
- package/dist/active-citizen/engine/moderation/fraud/FraudGetPosts.cjs +109 -0
- package/dist/active-citizen/engine/moderation/fraud/FraudGetRatings.cjs +140 -0
- package/dist/active-citizen/engine/moderation/fraud/FraudScannerNotifier.cjs +279 -0
- package/dist/active-citizen/engine/moderation/get_moderation_items.cjs +386 -0
- package/dist/active-citizen/engine/moderation/image_labeling/CommunityLabeling.cjs +49 -0
- package/dist/active-citizen/engine/moderation/image_labeling/GroupLabeling.cjs +68 -0
- package/dist/active-citizen/engine/moderation/image_labeling/ImageLabelingBase.cjs +288 -0
- package/dist/active-citizen/engine/moderation/image_labeling/PointLabeling.cjs +33 -0
- package/dist/active-citizen/engine/moderation/image_labeling/PostLabeling.cjs +56 -0
- package/dist/active-citizen/engine/moderation/perspective_api_client.cjs +106 -0
- package/dist/active-citizen/engine/moderation/process_moderation_items.cjs +344 -0
- package/dist/active-citizen/engine/moderation/toxicity_analysis.cjs +810 -0
- package/dist/active-citizen/engine/news_feeds/activity_and_item_index_definitions.cjs +15 -0
- package/dist/active-citizen/engine/news_feeds/generate_dynamically.cjs +362 -0
- package/dist/active-citizen/engine/news_feeds/generate_from_notifications.cjs +268 -0
- package/dist/active-citizen/engine/news_feeds/news_feeds_utils.cjs +439 -0
- package/dist/active-citizen/engine/notifications/emails_utils.cjs +569 -0
- package/dist/active-citizen/engine/notifications/generate_point_notifications.cjs +233 -0
- package/dist/active-citizen/engine/notifications/generate_post_notifications.cjs +118 -0
- package/dist/active-citizen/engine/notifications/generate_post_status_change_notifications.cjs +41 -0
- package/dist/active-citizen/engine/notifications/notifications_utils.cjs +148 -0
- package/dist/active-citizen/engine/notifications/point_delivery.cjs +54 -0
- package/dist/active-citizen/engine/notifications/post_delivery.cjs +31 -0
- package/dist/active-citizen/engine/notifications/process_delayed_notifications.cjs +471 -0
- package/dist/active-citizen/engine/notifications/process_general_notifications.cjs +212 -0
- package/dist/active-citizen/engine/old/exporters/categories_dataset.js +153 -0
- package/dist/active-citizen/engine/old/exporters/dataset_tools.js +80 -0
- package/dist/active-citizen/engine/old/exporters/sentiment_dataset.js +157 -0
- package/dist/active-citizen/engine/recommendations/events_importer.cjs +139 -0
- package/dist/active-citizen/engine/recommendations/events_manager.cjs +212 -0
- package/dist/active-citizen/engine/reports/add_points_to_sheet.cjs +83 -0
- package/dist/active-citizen/engine/reports/commonUtils.js +75 -0
- package/dist/active-citizen/engine/reports/common_utils.cjs +740 -0
- package/dist/active-citizen/engine/reports/docx_group_report.cjs +596 -0
- package/dist/active-citizen/engine/reports/xlsAllOurIdeasExport.js +232 -0
- package/dist/active-citizen/engine/reports/xls_community_users_report.cjs +277 -0
- package/dist/active-citizen/engine/reports/xls_group_report.cjs +718 -0
- package/dist/active-citizen/llms/baseChatBot.js +183 -0
- package/dist/active-citizen/llms/imageGeneration/chatGptImageGenerator.js +56 -0
- package/dist/active-citizen/llms/imageGeneration/collectionImageGenerator.js +109 -0
- package/dist/active-citizen/llms/imageGeneration/dalleImageGenerator.js +84 -0
- package/dist/active-citizen/llms/imageGeneration/fluxImageGenerator.js +49 -0
- package/dist/active-citizen/llms/imageGeneration/imageProcessorService.js +64 -0
- package/dist/active-citizen/llms/imageGeneration/imagenImageGenerator.js +107 -0
- package/dist/active-citizen/llms/imageGeneration/s3Service.js +110 -0
- package/dist/active-citizen/llms/llmTranslation.js +472 -0
- package/dist/active-citizen/models/ac_activity.cjs +216 -0
- package/dist/active-citizen/models/ac_background_job.cjs +109 -0
- package/dist/active-citizen/models/ac_campaign.cjs +97 -0
- package/dist/active-citizen/models/ac_client_activity.cjs +23 -0
- package/dist/active-citizen/models/ac_delayed_notification.cjs +43 -0
- package/dist/active-citizen/models/ac_following.cjs +43 -0
- package/dist/active-citizen/models/ac_list.cjs +68 -0
- package/dist/active-citizen/models/ac_list_users.cjs +19 -0
- package/dist/active-citizen/models/ac_mute.cjs +27 -0
- package/dist/active-citizen/models/ac_news_feed_item.cjs +57 -0
- package/dist/active-citizen/models/ac_news_feed_processed_range.cjs +59 -0
- package/dist/active-citizen/models/ac_notification.cjs +292 -0
- package/dist/active-citizen/models/ac_translation_cache.cjs +750 -0
- package/dist/active-citizen/models/ac_watching.cjs +31 -0
- package/dist/active-citizen/scripts/analytics/setup_all_plausible_goals.cjs +13 -0
- package/dist/active-citizen/scripts/fix_old_delayed_notifications.js +63 -0
- package/dist/active-citizen/scripts/kue_status.js +31 -0
- package/dist/active-citizen/scripts/kue_watch_stuck_jobs.js +24 -0
- package/dist/active-citizen/scripts/translation_clear_language.js +117 -0
- package/dist/active-citizen/scripts/translation_delete.js +27 -0
- package/dist/active-citizen/scripts/translation_replace_text_from_url.js +180 -0
- package/dist/active-citizen/scripts/translation_update.js +28 -0
- package/dist/active-citizen/scripts/translations_list.js +27 -0
- package/{active-citizen/utils/airbrake.js → dist/active-citizen/utils/airbrake.cjs} +1 -1
- package/dist/active-citizen/utils/get_anonymous_system_user.cjs +21 -0
- package/dist/active-citizen/utils/i18n.cjs +3 -0
- package/dist/active-citizen/utils/logger.cjs +25 -0
- package/dist/active-citizen/utils/redisConnection.cjs +29 -0
- package/dist/active-citizen/utils/to_json.cjs +9 -0
- package/dist/active-citizen/utils/translation_cloning.cjs +171 -0
- package/dist/active-citizen/utils/translation_helpers.cjs +534 -0
- package/dist/active-citizen/utils/truncate_text.cjs +21 -0
- package/dist/active-citizen/utils/updateAllLocalesFromEn.js +253 -0
- package/dist/active-citizen/utils/updateLocaleFolders.js +34 -0
- package/dist/active-citizen/workers/activity.cjs +189 -0
- package/dist/active-citizen/workers/anonymizations.cjs +734 -0
- package/dist/active-citizen/workers/bulk_status_update.cjs +458 -0
- package/dist/active-citizen/workers/delayed_jobs.cjs +244 -0
- package/dist/active-citizen/workers/deletions.cjs +1911 -0
- package/dist/active-citizen/workers/email.cjs +9 -0
- package/dist/active-citizen/workers/fraud_management.cjs +109 -0
- package/dist/active-citizen/workers/generativeAi.js +56 -0
- package/dist/active-citizen/workers/main.cjs +89 -0
- package/dist/active-citizen/workers/marketing.cjs +25 -0
- package/dist/active-citizen/workers/moderation.cjs +73 -0
- package/dist/active-citizen/workers/notification_delivery.cjs +368 -0
- package/dist/active-citizen/workers/notification_news_feed.cjs +142 -0
- package/dist/active-citizen/workers/queue.cjs +99 -0
- package/dist/active-citizen/workers/recount.cjs +74 -0
- package/dist/active-citizen/workers/reports.cjs +42 -0
- package/dist/active-citizen/workers/similarities.cjs +21 -0
- package/dist/active-citizen/workers/speech_to_text.cjs +482 -0
- package/dist/agents/assistants/agentAssistant.js +88 -0
- package/dist/agents/assistants/baseAssistant.js +888 -0
- package/dist/agents/assistants/baseAssistantWithVoice.js +150 -0
- package/dist/agents/assistants/modes/agentDirectConnection.js +84 -0
- package/dist/agents/assistants/modes/agentSelectionMode.js +44 -0
- package/dist/agents/assistants/modes/baseAssistantMode.js +54 -0
- package/dist/agents/assistants/modes/tools/agentTools.js +447 -0
- package/dist/agents/assistants/modes/tools/baseTools.js +58 -0
- package/dist/agents/assistants/modes/tools/loginTools.js +156 -0
- package/dist/agents/assistants/modes/tools/models/agents.js +146 -0
- package/dist/agents/assistants/modes/tools/models/subscriptions.js +332 -0
- package/dist/agents/assistants/modes/tools/models/users.js +11 -0
- package/dist/agents/assistants/modes/tools/navigationTools.js +166 -0
- package/{agents/assistants/modes/tools/workflowConversationTools.js → dist/agents/assistants/modes/tools/subscriptionTools.js} +1 -4
- package/{agents/assistants/modes/tools/workflowTools.js → dist/agents/assistants/modes/tools/workflowConverstationTools.js} +1 -1
- package/dist/agents/assistants/voiceAssistant.js +619 -0
- package/dist/agents/controllers/agentProductController.js +103 -0
- package/dist/agents/controllers/agentSubscriptionController.js +261 -0
- package/dist/agents/controllers/assistantsController.js +511 -0
- package/dist/agents/controllers/policySynthAgents.js +395 -0
- package/{agents → dist/agents/managers}/agentProductManager.js +2 -2
- package/dist/agents/managers/emailInvitesManager.js +55 -0
- package/dist/agents/managers/emailTemplateRenderer.js +362 -0
- package/dist/agents/managers/newAiModelSetup.js +650 -0
- package/dist/agents/managers/notificationAgentQueueManager.js +510 -0
- package/dist/agents/managers/subscriptionManager.js +535 -0
- package/dist/agents/managers/workflowConversationManager.js +79 -0
- package/dist/agents/models/agentProduct.js +116 -0
- package/dist/agents/models/agentProductBoosterPurchase.js +58 -0
- package/dist/agents/models/agentProductBundle.js +68 -0
- package/dist/agents/models/agentProductRun.js +52 -0
- package/dist/agents/models/discount.js +88 -0
- package/dist/agents/models/subscription.js +79 -0
- package/dist/agents/models/subscriptionPlan.js +46 -0
- package/dist/agents/models/subscriptionUser.js +27 -0
- package/dist/agents/models/testData/createEvolyAgentProduct.js +477 -0
- package/dist/agents/models/testData/old/updateAgentWorkflowConfiguration.js +230 -0
- package/dist/agents/models/testData/setupEvolyAgentProductConfig.js +233 -0
- package/dist/agents/models/testData/updateAgentWorkflowConfiguration.js +230 -0
- package/{agents/models/workflowConverstation.js → dist/agents/models/workflowConversation.js} +1 -1
- package/{agents/tools/updateTemplateWorkflow.js → dist/agents/tools/setTemplateWorkflowCommunityId.js} +1 -0
- package/dist/app.js +943 -0
- package/dist/authorization.cjs +1860 -0
- package/dist/bot_control.js +1930 -0
- package/dist/config/config.cjs +14 -0
- package/dist/config/config.js +14 -0
- package/dist/controllers/allOurIdeas.js +696 -0
- package/dist/controllers/audios.cjs +100 -0
- package/dist/controllers/bulkStatusUpdates.cjs +202 -0
- package/dist/controllers/categories.cjs +199 -0
- package/dist/controllers/communities.cjs +2996 -0
- package/dist/controllers/domains.cjs +1341 -0
- package/dist/controllers/externalIds.cjs +223 -0
- package/dist/controllers/groups.cjs +4309 -0
- package/dist/controllers/images.cjs +499 -0
- package/dist/controllers/index.cjs +449 -0
- package/dist/controllers/legacyPages.cjs +35 -0
- package/dist/controllers/legacyPosts.cjs +56 -0
- package/dist/controllers/legacyUsers.cjs +36 -0
- package/dist/controllers/nonSpa.cjs +574 -0
- package/dist/controllers/organizations.cjs +250 -0
- package/dist/controllers/points.cjs +1137 -0
- package/dist/controllers/posts.cjs +2036 -0
- package/dist/controllers/ratings.cjs +234 -0
- package/dist/controllers/users.cjs +2255 -0
- package/dist/controllers/videos.cjs +226 -0
- package/dist/deleteUnwantedDeclerations.cjs +55 -0
- package/dist/migrations/agentAuditLogs.cjs +46 -0
- package/dist/migrations/agentClasses.cjs +60 -0
- package/dist/migrations/agentConnectorClasses.cjs +61 -0
- package/dist/migrations/agentConnectors.cjs +50 -0
- package/dist/migrations/agentEvals.cjs +45 -0
- package/dist/migrations/agentRegistries.cjs +40 -0
- package/dist/migrations/agents.cjs +54 -0
- package/dist/migrations/aiModels.cjs +49 -0
- package/dist/migrations/apiUsage.cjs +47 -0
- package/dist/migrations/apis.cjs +49 -0
- package/dist/migrations/groupPrivateData.cjs +30 -0
- package/dist/migrations/modelUsage.cjs +60 -0
- package/dist/migrations/oldMigrations/2019/20181030020612-AddActivitiesIndex.js +23 -0
- package/dist/migrations/oldMigrations/2019/20181102210612-AddFirstVideoFeatures.js +360 -0
- package/dist/migrations/oldMigrations/2019/20181212210612-ModerationFeatures.js +29 -0
- package/dist/migrations/oldMigrations/2019/2019010610612-CommunityFolders.js +43 -0
- package/dist/migrations/oldMigrations/2019/20190117020612-AddMissingIndexes.js +24 -0
- package/dist/migrations/oldMigrations/2019/20190117020612-RemoveUnusedIndexes.js +29 -0
- package/dist/migrations/oldMigrations/2019/20190127020612-RemoveUnusedIndexesPartThree.js +22 -0
- package/dist/migrations/oldMigrations/2019/20190127020612-RemoveUnusedIndexesPartTwo.js +23 -0
- package/{migrations/200824_create_embeddings_and_org_update.cjs → dist/migrations/oldMigrations/2019/20190223020612-AddPrivateProfileDataToUsers.js} +6 -3
- package/dist/migrations/oldMigrations/2019/20190706210612-AddCustomRatings.js +43 -0
- package/dist/migrations/oldMigrations/2019/20190829210612-AddGeneralStore.js +36 -0
- package/dist/migrations/oldMigrations/2019/20192811210612-AddAcClientActivities.js +41 -0
- package/dist/migrations/oldMigrations/2020/20190527020612-WorkOnIndexes.js +88 -0
- package/dist/migrations/oldMigrations/2020/20200409020612-AddBackgroundJob.js +33 -0
- package/dist/migrations/oldMigrations/2020/20200716210612-AddDataToCollections.js +38 -0
- package/dist/migrations/oldMigrations/2022/20220215100612-AddDataToEndorsements.js +19 -0
- package/dist/migrations/oldMigrations/2022/20220220100612-AddDataForFraudDetection.js +19 -0
- package/dist/migrations/oldMigrations/2022/20220903100612-AddPromotionFeatures.js +127 -0
- package/dist/migrations/oldMigrations/2022/onHold/20200527020612-AddCampaigns.js +68 -0
- package/dist/migrations/oldMigrations/2024/20241304175112-AddMediaSupportForHtmlGroups.cjs +63 -0
- package/dist/migrations/oldMigrations/older/20160511172514-AddNotificationFeatures.js +14 -0
- package/dist/migrations/oldMigrations/older/20161030020612-AddBulkStatusUpdate.js +71 -0
- package/dist/migrations/oldMigrations/older/20170514035258-add-metadata-to-invites.js +12 -0
- package/dist/migrations/oldMigrations/older/20180216020612-AddTranslationCaches.js +46 -0
- package/dist/migrations/oldMigrations/older/20180218210612-AddTranslationAndLanguages.js +46 -0
- package/dist/migrations/privateAccessStore.cjs +55 -0
- package/dist/migrations/zzz_associations.cjs +154 -0
- package/dist/migrations/zzzzz_create_agent_runs.cjs +606 -0
- package/dist/migrations/zzzzzz_create_agent_runs_fix.cjs +11 -0
- package/dist/migrations/zzzzzzz_create_trees.cjs +81 -0
- package/dist/models/audio.cjs +430 -0
- package/dist/models/bulk_status_update.cjs +58 -0
- package/dist/models/campaign.cjs +78 -0
- package/dist/models/category.cjs +94 -0
- package/dist/models/community.cjs +337 -0
- package/dist/models/domain.cjs +486 -0
- package/dist/models/endorsement.cjs +39 -0
- package/dist/models/general_data_store.cjs +20 -0
- package/dist/models/group.cjs +728 -0
- package/dist/models/image.cjs +579 -0
- package/dist/models/index.cjs +186 -0
- package/dist/models/invite.cjs +48 -0
- package/dist/models/iso_country.cjs +16 -0
- package/dist/models/organization.cjs +122 -0
- package/dist/models/page.cjs +273 -0
- package/dist/models/point.cjs +622 -0
- package/dist/models/point_quality.cjs +39 -0
- package/dist/models/point_revision.cjs +47 -0
- package/dist/models/post.cjs +680 -0
- package/dist/models/post_revision.cjs +38 -0
- package/dist/models/post_status_change.cjs +35 -0
- package/dist/models/promotion.cjs +34 -0
- package/dist/models/rating.cjs +51 -0
- package/dist/models/relationship.cjs +19 -0
- package/dist/models/request_to_join.cjs +20 -0
- package/dist/models/user.cjs +604 -0
- package/dist/models/user_legacy_password.cjs +13 -0
- package/dist/models/video.cjs +1137 -0
- package/dist/publish.js +40 -0
- package/dist/repack.js +53 -0
- package/dist/scripts/addRatingUsersToGroup.js +51 -0
- package/dist/scripts/addUserToOrganization.js +71 -0
- package/dist/scripts/analyseRatingsForCommunity.js +150 -0
- package/dist/scripts/analyzeAndFixBrokenPointUsers.js +28 -0
- package/dist/scripts/analyzeEndorsementsByCountry.js +70 -0
- package/dist/scripts/analyzePostsForCommunity.js +185 -0
- package/dist/scripts/bulkStatusUpdates/listUpdates.js +14 -0
- package/dist/scripts/bulkStatusUpdates/mergeLatestPostsToUpdate.js +110 -0
- package/dist/scripts/bulkStatusUpdates/performUpdate.js +116 -0
- package/{scripts/bulkStatusUpdates/performUpdateForGroup.js → dist/scripts/bulkStatusUpdates/performUpdateForGroup.cjs} +1 -2
- package/dist/scripts/bulkStatusUpdates/performUpdateForStatus.js +141 -0
- package/dist/scripts/change/changeVideoAspectTo.js +34 -0
- package/dist/scripts/change/setUseNewVersion.cjs +22 -0
- package/dist/scripts/changeCommunityGroupcount.js +30 -0
- package/dist/scripts/changeCommunityPostCount.js +30 -0
- package/dist/scripts/changeGroupPostCount.js +30 -0
- package/dist/scripts/changeLanguage.js +50 -0
- package/dist/scripts/changeOfficalStatus.js +30 -0
- package/{scripts/cleanups/deleteAnonNotifications.js → dist/scripts/cleanups/deleteAnonNotifications.cjs} +1 -1
- package/dist/scripts/cleanups/deleteLinkGroupsWithDeletedCommunities.js +62 -0
- package/dist/scripts/cleanups/deleteYearOldNotifications.cjs +72 -0
- package/dist/scripts/cleanups/removeAllUsersFromHiddenPublicGroup.js +43 -0
- package/dist/scripts/clearAllEndorsementInGroup.js +50 -0
- package/dist/scripts/cloning/clearUsersForCommunitiesFromUrl.js +129 -0
- package/dist/scripts/cloning/cloneFromUrlScript.js +65 -0
- package/dist/scripts/cloning/cloneWBFromUrlScriptAndCreateLinks.js +140 -0
- package/dist/scripts/cloning/cloneWBFromUrlScriptNoUsersOrPoints.js +140 -0
- package/dist/scripts/cloning/cloneWBSerbianFromUrlScriptAndCreateLinks.js +131 -0
- package/dist/scripts/cloning/copyCommunityConfigAndTranslationsFromURL.js +173 -0
- package/dist/scripts/cloning/copyCommunityOneGroupToDomainNoUsersNoEndorsements.js +18 -0
- package/dist/scripts/cloning/copyCommunityToDomainNoUsersNoEndorsements.js +17 -0
- package/dist/scripts/cloning/copyCommunityToDomainWithEverything.js +17 -0
- package/dist/scripts/cloning/copyCommunityToDomainWithOnlyGroups.js +26 -0
- package/dist/scripts/cloning/copyGroupConfigAndTranslationsFromURL.js +205 -0
- package/dist/scripts/cloning/copyPostToGroupOld.js +397 -0
- package/dist/scripts/cloning/copyPostVideosFromURL.js +236 -0
- package/dist/scripts/cloning/copyPostWithOutAnyVotingOrActivities.js +17 -0
- package/dist/scripts/cloning/deepCloneSerbianWBFromUrlScriptAndCreateLinks.js +131 -0
- package/dist/scripts/cloning/deepCloneWBFromUrlScriptAndCreateLinks.js +139 -0
- package/dist/scripts/cloning/setAdminsFromURL.js +161 -0
- package/dist/scripts/cloning/setExternalIdsFromURL.js +129 -0
- package/dist/scripts/countCommunity.js +291 -0
- package/dist/scripts/countCommunityUsers.js +152 -0
- package/dist/scripts/countDelayedNotifications.js +18 -0
- package/dist/scripts/countGroup.js +246 -0
- package/dist/scripts/countStuff.js +67 -0
- package/dist/scripts/countUniqueVotersInAGroup.js +48 -0
- package/dist/scripts/createInvitesAndShow.js +75 -0
- package/dist/scripts/database/sync_database.js +14 -0
- package/dist/scripts/database/sync_dev_database.js +17 -0
- package/dist/scripts/debugNotifications.js +58 -0
- package/dist/scripts/deleteAllNewsFeeds.js +10 -0
- package/dist/scripts/deleteCategory.js +13 -0
- package/dist/scripts/deleteOldAppActivities.js +40 -0
- package/dist/scripts/deletePostContactDataForCommunity.js +53 -0
- package/dist/scripts/destroy/destroy_all_but_one_domain.js +1026 -0
- package/dist/scripts/displayAuthorForPost.js +16 -0
- package/dist/scripts/endorsementFraudDetection/analyseEndorsementsForCommunity.js +183 -0
- package/dist/scripts/endorsementFraudDetection/bulkDeleteDuplicateEndorsmentsFromUrl.js +208 -0
- package/dist/scripts/exportAllStatusChanges.js +36 -0
- package/dist/scripts/exportClientAcitivity.js +36 -0
- package/dist/scripts/exportEndorsementsForCommunity.js +79 -0
- package/dist/scripts/exportPointQualitiesForCommunity.js +84 -0
- package/dist/scripts/exportPostsAndPointsForCommunity.js +147 -0
- package/dist/scripts/exportPostsDataSetForDomain.js +244 -0
- package/dist/scripts/exportPostsForGroup.js +173 -0
- package/dist/scripts/exportRatingsForPost.js +15 -0
- package/dist/scripts/exportUserEndorsementsWithUserAnalysis.js +123 -0
- package/dist/scripts/exportUsersForCommunity.js +24 -0
- package/dist/scripts/exportUsersForDomain.js +24 -0
- package/dist/scripts/exportUsersForGroup.js +24 -0
- package/dist/scripts/exports/ratingDistribution.js +71 -0
- package/dist/scripts/exports/whoEndorsedWhatByCommunity.js +56 -0
- package/dist/scripts/findUnusedClientImports.js +56 -0
- package/dist/scripts/fixAllPostPointCounts.js +22 -0
- package/dist/scripts/fixAnonNotificationsSettings.js +48 -0
- package/dist/scripts/fixCountKopavogur.js +9 -0
- package/dist/scripts/fixEndorsementsAfterCopyPostToGroup.js +190 -0
- package/dist/scripts/fixExternalUserId.js +24 -0
- package/dist/scripts/fixGroupAccess.js +16 -0
- package/dist/scripts/fixGroupIdeasAndPointsCount.js +49 -0
- package/dist/scripts/fixNotificationSettings.js +39 -0
- package/dist/scripts/fixSurveyRadioBakedInSubCodes.js +64 -0
- package/dist/scripts/fixWrongUserIdForStatusUpdates.js +49 -0
- package/dist/scripts/gallery/exportGalleryData.js +40 -0
- package/dist/scripts/gallery/importGalleryForCommunity.js +168 -0
- package/dist/scripts/gallery/readJsonAndDownloadImagesVersion2.js +55 -0
- package/dist/scripts/gallery/refreshAcApiPostIdsForCommunity.js +58 -0
- package/dist/scripts/genderAnalysis.js +63 -0
- package/dist/scripts/genderAnalysisByStatus.js +62 -0
- package/dist/scripts/importAllLocalesFromLocalFolders.js +55 -0
- package/dist/scripts/importDomain.js +1652 -0
- package/dist/scripts/keys/addOidcToDomain.cjs +61 -0
- package/dist/scripts/landUseGame/export3Ddata.js +162 -0
- package/dist/scripts/listLanguagesForGroup.js +54 -0
- package/dist/scripts/loadTestCreateDummyContentForGroup.js +27 -0
- package/dist/scripts/makeRecursiveMapData.js +103 -0
- package/dist/scripts/mapping/community_map_csv.js +145 -0
- package/dist/scripts/moveCommunityToDomain.js +22 -0
- package/dist/scripts/moveGroupToCommunity.js +23 -0
- package/dist/scripts/movePostToGroup.js +101 -0
- package/dist/scripts/movePostsToGroupsRecountGroupFromUrl.js +297 -0
- package/dist/scripts/oldMovePostToGroup.js +153 -0
- package/dist/scripts/processCsvForPdfUrls.js +37 -0
- package/dist/scripts/processCsvForTranslationAndToxicity.js +125 -0
- package/dist/scripts/recount/recount_recursive_communities.js +125 -0
- package/dist/scripts/recountALLCommunityGroupCounts.js +37 -0
- package/dist/scripts/recountAll.js +97 -0
- package/dist/scripts/recountCommunitesFromUrl.js +58 -0
- package/dist/scripts/recountCommunity.js +19 -0
- package/dist/scripts/recountGroup.js +218 -0
- package/dist/scripts/recountGroupNoUserChange.js +219 -0
- package/dist/scripts/resetAllEndorsementsForGroup.js +57 -0
- package/dist/scripts/resetEnTranslationForGroup.js +45 -0
- package/dist/scripts/setAdminOnAll.cjs +107 -0
- package/{scripts/change → dist/scripts}/setDomainAdmin.cjs +0 -2
- package/dist/scripts/setDomainLocales.js +33 -0
- package/dist/scripts/setEarlQuestionIdOnGroup.cjs +29 -0
- package/dist/scripts/setLanguageOnGroupCommunitesFromUrl.js +86 -0
- package/dist/scripts/setMemberOfAll.js +101 -0
- package/dist/scripts/setNewUserForContentOfCommunity.js +189 -0
- package/dist/scripts/setOfficialStatusOnAllPostsForCommunity.js +35 -0
- package/dist/scripts/setUserOnAll.js +101 -0
- package/dist/scripts/showCategoryForGroup.js +18 -0
- package/dist/scripts/showOldActivityTypes.js +14 -0
- package/dist/scripts/showPostsMissingCategoryForGroup.js +17 -0
- package/dist/scripts/showStatuses.js +17 -0
- package/dist/scripts/showUniqueVotersInCommunity.js +61 -0
- package/dist/scripts/showUserAgentsAndIpsForEmails.js +66 -0
- package/dist/scripts/simpleExportForGroupsForCommunity.js +46 -0
- package/dist/scripts/simpleExportForPointsForCommunity.js +82 -0
- package/dist/scripts/simpleExportForPostsForCommunity.js +61 -0
- package/dist/scripts/testForEndorsments.js +21 -0
- package/dist/scripts/undeleteGroupAndAllContent.js +151 -0
- package/dist/scripts/undeletePost.js +135 -0
- package/dist/scripts/unlinkSsn.js +23 -0
- package/dist/scripts/updateFromAlthingi.js +303 -0
- package/dist/server.js +3 -0
- package/dist/utils/airbrake.cjs +17 -0
- package/dist/utils/cjsCodeReview.js +99 -0
- package/dist/utils/community_mapping_tools.cjs +124 -0
- package/dist/utils/copy_utils.cjs +1399 -0
- package/dist/utils/docx_utils.cjs +464 -0
- package/dist/utils/export_utils.cjs +491 -0
- package/dist/utils/i18n.cjs +17 -0
- package/dist/utils/is_valid_db_id.cjs +28 -0
- package/dist/utils/logger.cjs +25 -0
- package/dist/utils/loggerTs.js +26 -0
- package/dist/utils/manifest_generator.cjs +104 -0
- package/dist/utils/parse_domain.cjs +16 -0
- package/dist/utils/recount_utils.cjs +415 -0
- package/dist/utils/sharing_parameters.cjs +111 -0
- package/dist/utils/sitemap_generator.cjs +286 -0
- package/dist/utils/to_json.cjs +14 -0
- package/dist/utils/ypLanguages.js +747 -0
- package/dist/webSockets.js +77 -0
- package/package.json +46 -44
- package/server.d.ts +104 -2
- package/utils/copy_utils.cjs +7 -1
- package/active-citizen/engine/allOurIdeas/aiHelper.d.ts +0 -21
- package/active-citizen/engine/allOurIdeas/aiHelper.d.ts.map +0 -1
- package/active-citizen/engine/allOurIdeas/explainAnswersAssistant.d.ts.map +0 -1
- package/active-citizen/engine/allOurIdeas/iconGenerator.d.ts +0 -12
- package/active-citizen/engine/allOurIdeas/iconGenerator.d.ts.map +0 -1
- package/active-citizen/engine/analytics/export_anon_community_activities.d.ts.map +0 -1
- package/active-citizen/engine/analytics/importer.d.ts.map +0 -1
- package/active-citizen/engine/old/exporters/categories_dataset.d.ts.map +0 -1
- package/active-citizen/engine/old/exporters/dataset_tools.d.ts.map +0 -1
- package/active-citizen/engine/old/exporters/sentiment_dataset.d.ts.map +0 -1
- package/active-citizen/engine/reports/xls_all_our_ideas_export.js +0 -141
- package/active-citizen/llms/baseChatBot.d.ts +0 -51
- package/active-citizen/llms/baseChatBot.d.ts.map +0 -1
- package/active-citizen/llms/collectionImageGenerator.js +0 -357
- package/active-citizen/llms/llmTranslation.d.ts +0 -24
- package/active-citizen/llms/llmTranslation.d.ts.map +0 -1
- package/active-citizen/scripts/fix_old_delayed_notifications.d.ts.map +0 -1
- package/active-citizen/scripts/kue_status.d.ts.map +0 -1
- package/active-citizen/scripts/kue_watch_stuck_jobs.d.ts.map +0 -1
- package/active-citizen/scripts/translation_clear_language.d.ts.map +0 -1
- package/active-citizen/scripts/translation_delete.d.ts.map +0 -1
- package/active-citizen/scripts/translation_replace_text_from_url.d.ts.map +0 -1
- package/active-citizen/scripts/translation_update.d.ts.map +0 -1
- package/active-citizen/scripts/translations_list.d.ts.map +0 -1
- package/active-citizen/utils/airbrake.d.ts.map +0 -1
- package/active-citizen/utils/updateAllLocalesFromEn.d.ts +0 -21
- package/active-citizen/utils/updateAllLocalesFromEn.d.ts.map +0 -1
- package/active-citizen/utils/updateLocaleFolders.d.ts +0 -2
- package/active-citizen/utils/updateLocaleFolders.d.ts.map +0 -1
- package/active-citizen/workers/cloudflare/voiceSession/worker.js +0 -213
- package/active-citizen/workers/generativeAi.d.ts.map +0 -1
- package/agents/assistants/agentAssistantOld.js +0 -863
- package/agents/assistants/modes/agentConfigurationMode.js +0 -63
- package/agents/assistants/modes/agentOperationsMode.js +0 -195
- package/agents/assistants/modes/commonTools.js +0 -58
- package/agents/assistants/modes/directConversationMode.js +0 -14
- package/agents/assistants/modes/toolHandlers/accountHandlers.js +0 -46
- package/agents/assistants/modes/toolHandlers/commonHandlers.js +0 -57
- package/agents/assistants/modes/toolHandlers/commonTools.js +0 -58
- package/agents/assistants/modes/toolHandlers/loginHandlers.js +0 -46
- package/agents/assistants/modes/toolHandlers/subscriptionHandlers.js +0 -469
- package/agents/assistants/modes/tools/agentConnectionTools.js +0 -326
- package/agents/assistants/modes/tools/commonHandlers.js +0 -57
- package/agents/assistants/modes/tools/loginHandlers.js +0 -46
- package/agents/assistants/modes/tools/subscriptionHandlers.js +0 -469
- package/agents/controllers/assistantController.js +0 -243
- package/agents/managers/workflowManager.js +0 -76
- package/agents/models/testData/setupConfig.js +0 -140
- package/agents/models/workflow.js +0 -53
- package/agents/subscriptionManager.js +0 -218
- package/app.d.ts +0 -40
- package/app.d.ts.map +0 -1
- package/bot_control.d.ts.map +0 -1
- package/publish.d.ts.map +0 -1
- package/repack.d.ts.map +0 -1
- package/scripts/addRatingUsersToGroup.d.ts.map +0 -1
- package/scripts/addUserToOrganization.d.ts.map +0 -1
- package/scripts/analyseRatingsForCommunity.d.ts.map +0 -1
- package/scripts/analyzeAndFixBrokenPointUsers.d.ts.map +0 -1
- package/scripts/analyzeEndorsementsByCountry.d.ts.map +0 -1
- package/scripts/analyzePostsForCommunity.d.ts.map +0 -1
- package/scripts/bulkStatusUpdates/listUpdates.d.ts.map +0 -1
- package/scripts/bulkStatusUpdates/mergeLatestPostsToUpdate.d.ts.map +0 -1
- package/scripts/bulkStatusUpdates/performUpdate.d.ts.map +0 -1
- package/scripts/bulkStatusUpdates/performUpdateForGroup.d.ts.map +0 -1
- package/scripts/bulkStatusUpdates/performUpdateForStatus.d.ts.map +0 -1
- package/scripts/change/changeVideoAspectTo.d.ts.map +0 -1
- package/scripts/changeCommunityGroupcount.d.ts.map +0 -1
- package/scripts/changeCommunityPostCount.d.ts.map +0 -1
- package/scripts/changeGroupPostCount.d.ts.map +0 -1
- package/scripts/changeLanguage.d.ts.map +0 -1
- package/scripts/changeOfficalStatus.d.ts.map +0 -1
- package/scripts/cleanups/deleteAnonNotifications.d.ts.map +0 -1
- package/scripts/cleanups/deleteLinkGroupsWithDeletedCommunities.d.ts.map +0 -1
- package/scripts/cleanups/removeAllUsersFromHiddenPublicGroup.d.ts.map +0 -1
- package/scripts/clearAllEndorsementInGroup.d.ts.map +0 -1
- package/scripts/cloning/clearUsersForCommunitiesFromUrl.d.ts.map +0 -1
- package/scripts/cloning/cloneFromUrlScript.d.ts.map +0 -1
- package/scripts/cloning/cloneWBFromUrlScriptAndCreateLinks.d.ts.map +0 -1
- package/scripts/cloning/cloneWBFromUrlScriptNoUsersOrPoints.d.ts.map +0 -1
- package/scripts/cloning/cloneWBSerbianFromUrlScriptAndCreateLinks.d.ts.map +0 -1
- package/scripts/cloning/copyCommunityConfigAndTranslationsFromURL.d.ts.map +0 -1
- package/scripts/cloning/copyCommunityOneGroupToDomainNoUsersNoEndorsements.d.ts.map +0 -1
- package/scripts/cloning/copyCommunityToDomainNoUsersNoEndorsements.d.ts.map +0 -1
- package/scripts/cloning/copyCommunityToDomainWithEverything.d.ts.map +0 -1
- package/scripts/cloning/copyCommunityToDomainWithOnlyGroups.d.ts.map +0 -1
- package/scripts/cloning/copyGroupConfigAndTranslationsFromURL.d.ts.map +0 -1
- package/scripts/cloning/copyPostToGroupOld.d.ts.map +0 -1
- package/scripts/cloning/copyPostVideosFromURL.d.ts.map +0 -1
- package/scripts/cloning/copyPostWithOutAnyVotingOrActivities.d.ts.map +0 -1
- package/scripts/cloning/deepCloneSerbianWBFromUrlScriptAndCreateLinks.d.ts.map +0 -1
- package/scripts/cloning/deepCloneWBFromUrlScriptAndCreateLinks.d.ts.map +0 -1
- package/scripts/cloning/setAdminsFromURL.d.ts.map +0 -1
- package/scripts/cloning/setExternalIdsFromURL.d.ts.map +0 -1
- package/scripts/countCommunity.d.ts.map +0 -1
- package/scripts/countCommunityUsers.d.ts.map +0 -1
- package/scripts/countDelayedNotifications.d.ts.map +0 -1
- package/scripts/countGroup.d.ts.map +0 -1
- package/scripts/countStuff.d.ts.map +0 -1
- package/scripts/countUniqueVotersInAGroup.d.ts.map +0 -1
- package/scripts/createInvitesAndShow.d.ts.map +0 -1
- package/scripts/database/seedTestAiModels.js +0 -64
- package/scripts/database/sync_database.d.ts.map +0 -1
- package/scripts/database/sync_dev_database.d.ts.map +0 -1
- package/scripts/debugNotifications.d.ts.map +0 -1
- package/scripts/deleteAllNewsFeeds.d.ts.map +0 -1
- package/scripts/deleteCategory.d.ts.map +0 -1
- package/scripts/deleteOldAppActivities.d.ts.map +0 -1
- package/scripts/deletePostContactDataForCommunity.d.ts.map +0 -1
- package/scripts/destroy/destroy_all_but_one_domain.d.ts.map +0 -1
- package/scripts/displayAuthorForPost.d.ts.map +0 -1
- package/scripts/endorsementFraudDetection/analyseEndorsementsForCommunity.d.ts.map +0 -1
- package/scripts/endorsementFraudDetection/bulkDeleteDuplicateEndorsmentsFromUrl.d.ts.map +0 -1
- package/scripts/exportAllStatusChanges.d.ts.map +0 -1
- package/scripts/exportClientAcitivity.d.ts.map +0 -1
- package/scripts/exportEndorsementsForCommunity.d.ts.map +0 -1
- package/scripts/exportPointQualitiesForCommunity.d.ts.map +0 -1
- package/scripts/exportPostsAndPointsForCommunity.d.ts.map +0 -1
- package/scripts/exportPostsDataSetForDomain.d.ts.map +0 -1
- package/scripts/exportPostsForGroup.d.ts.map +0 -1
- package/scripts/exportRatingsForPost.d.ts.map +0 -1
- package/scripts/exportUserEndorsementsWithUserAnalysis.d.ts.map +0 -1
- package/scripts/exportUsersForCommunity.d.ts.map +0 -1
- package/scripts/exportUsersForDomain.d.ts.map +0 -1
- package/scripts/exportUsersForGroup.d.ts.map +0 -1
- package/scripts/exports/ratingDistribution.d.ts.map +0 -1
- package/scripts/exports/whoEndorsedWhatByCommunity.d.ts.map +0 -1
- package/scripts/findUnusedClientImports.d.ts.map +0 -1
- package/scripts/fixAllPostPointCounts.d.ts.map +0 -1
- package/scripts/fixAnonNotificationsSettings.d.ts.map +0 -1
- package/scripts/fixCountKopavogur.d.ts.map +0 -1
- package/scripts/fixEndorsementsAfterCopyPostToGroup.d.ts.map +0 -1
- package/scripts/fixExternalUserId.d.ts.map +0 -1
- package/scripts/fixGroupAccess.d.ts.map +0 -1
- package/scripts/fixGroupIdeasAndPointsCount.d.ts.map +0 -1
- package/scripts/fixNotificationSettings.d.ts.map +0 -1
- package/scripts/fixSurveyRadioBakedInSubCodes.d.ts.map +0 -1
- package/scripts/fixWrongUserIdForStatusUpdates.d.ts.map +0 -1
- package/scripts/gallery/exportGalleryData.d.ts.map +0 -1
- package/scripts/gallery/importGalleryForCommunity.d.ts.map +0 -1
- package/scripts/gallery/readJsonAndDownloadImagesVersion2.d.ts.map +0 -1
- package/scripts/gallery/refreshAcApiPostIdsForCommunity.d.ts.map +0 -1
- package/scripts/genderAnalysis.d.ts.map +0 -1
- package/scripts/genderAnalysisByStatus.d.ts.map +0 -1
- package/scripts/importAllLocalesFromLocalFolders.d.ts.map +0 -1
- package/scripts/importDomain.d.ts.map +0 -1
- package/scripts/landUseGame/export3Ddata.d.ts.map +0 -1
- package/scripts/listLanguagesForGroup.d.ts.map +0 -1
- package/scripts/loadTestCreateDummyContentForGroup.d.ts.map +0 -1
- package/scripts/makeRecursiveMapData.d.ts.map +0 -1
- package/scripts/mapping/community_map_csv.d.ts.map +0 -1
- package/scripts/moveCommunityToDomain.d.ts.map +0 -1
- package/scripts/moveGroupToCommunity.d.ts.map +0 -1
- package/scripts/movePostToGroup.d.ts.map +0 -1
- package/scripts/movePostsToGroupsRecountGroupFromUrl.d.ts.map +0 -1
- package/scripts/oldMovePostToGroup.d.ts.map +0 -1
- package/scripts/processCsvForPdfUrls.d.ts.map +0 -1
- package/scripts/processCsvForTranslationAndToxicity.d.ts.map +0 -1
- package/scripts/recount/recount_recursive_communities.d.ts.map +0 -1
- package/scripts/recountALLCommunityGroupCounts.d.ts.map +0 -1
- package/scripts/recountAll.d.ts.map +0 -1
- package/scripts/recountCommunitesFromUrl.d.ts.map +0 -1
- package/scripts/recountCommunity.d.ts.map +0 -1
- package/scripts/recountGroup.d.ts.map +0 -1
- package/scripts/recountGroupNoUserChange.d.ts.map +0 -1
- package/scripts/resetAllEndorsementsForGroup.d.ts.map +0 -1
- package/scripts/resetEnTranslationForGroup.d.ts.map +0 -1
- package/scripts/setDomainLocales.d.ts.map +0 -1
- package/scripts/setLanguageOnGroupCommunitesFromUrl.d.ts.map +0 -1
- package/scripts/setMemberOfAll.d.ts.map +0 -1
- package/scripts/setNewUserForContentOfCommunity.d.ts.map +0 -1
- package/scripts/setOfficialStatusOnAllPostsForCommunity.d.ts.map +0 -1
- package/scripts/setUserOnAll.d.ts.map +0 -1
- package/scripts/showCategoryForGroup.d.ts.map +0 -1
- package/scripts/showOldActivityTypes.d.ts.map +0 -1
- package/scripts/showPostsMissingCategoryForGroup.d.ts.map +0 -1
- package/scripts/showStatuses.d.ts.map +0 -1
- package/scripts/showUniqueVotersInCommunity.d.ts.map +0 -1
- package/scripts/showUserAgentsAndIpsForEmails.d.ts.map +0 -1
- package/scripts/simpleExportForGroupsForCommunity.d.ts.map +0 -1
- package/scripts/simpleExportForPointsForCommunity.d.ts.map +0 -1
- package/scripts/simpleExportForPostsForCommunity.d.ts.map +0 -1
- package/scripts/testForEndorsments.d.ts.map +0 -1
- package/scripts/undeleteGroupAndAllContent.d.ts.map +0 -1
- package/scripts/undeletePost.d.ts.map +0 -1
- package/scripts/unlinkSsn.d.ts.map +0 -1
- package/scripts/updateFromAlthingi.d.ts.map +0 -1
- package/server.d.ts.map +0 -1
- package/utils/copyGroup.js +0 -246
- package/utils/loggerTs.d.ts +0 -4
- package/utils/loggerTs.d.ts.map +0 -1
- package/utils/ypLanguages.d.ts +0 -18
- package/utils/ypLanguages.d.ts.map +0 -1
- /package/{agents/tools/updateCommunityWorkflow.js → dist/active-citizen/llms/imageGeneration/iImageGenerator.js} +0 -0
- /package/{migrations/270724_createUsersAndAdminsForClasses.cjs → dist/migrations/zzzz_createUsersAndAdminsForClasses.cjs} +0 -0
|
@@ -0,0 +1,535 @@
|
|
|
1
|
+
// SubscriptionManager.ts
|
|
2
|
+
import { YpSubscriptionPlan } from "../models/subscriptionPlan.js";
|
|
3
|
+
import { YpSubscription } from "../models/subscription.js";
|
|
4
|
+
import { YpAgentProduct } from "../models/agentProduct.js";
|
|
5
|
+
import { YpAgentProductRun } from "../models/agentProductRun.js";
|
|
6
|
+
import { sequelize } from "@policysynth/agents/dbModels/sequelize.js";
|
|
7
|
+
import { copyCommunity } from "../../utils/copy_utils.cjs";
|
|
8
|
+
import Stripe from "stripe";
|
|
9
|
+
import { YpAgentProductBundle } from "../models/agentProductBundle.js";
|
|
10
|
+
import { PsAgentConnector } from "@policysynth/agents/dbModels/agentConnector.js";
|
|
11
|
+
import { PsAgent } from "@policysynth/agents/dbModels/agent.js";
|
|
12
|
+
import { PsAgentClass, PsAiModel } from "@policysynth/agents/dbModels/index.js";
|
|
13
|
+
import { NotificationAgentQueueManager } from "./notificationAgentQueueManager.js";
|
|
14
|
+
import models from "../../models/index.cjs";
|
|
15
|
+
const dbModels = models;
|
|
16
|
+
const YpGroup = dbModels.Group;
|
|
17
|
+
export class SubscriptionManager {
|
|
18
|
+
constructor() {
|
|
19
|
+
// Initialize if necessary
|
|
20
|
+
}
|
|
21
|
+
// Get available subscription plans
|
|
22
|
+
async getPlans() {
|
|
23
|
+
try {
|
|
24
|
+
const plans = await YpSubscriptionPlan.findAll({
|
|
25
|
+
attributes: {
|
|
26
|
+
exclude: ["created_at", "updated_at"],
|
|
27
|
+
},
|
|
28
|
+
include: [
|
|
29
|
+
{
|
|
30
|
+
model: YpAgentProduct,
|
|
31
|
+
as: "AgentProduct",
|
|
32
|
+
attributes: {
|
|
33
|
+
exclude: ["created_at", "updated_at"],
|
|
34
|
+
},
|
|
35
|
+
include: [
|
|
36
|
+
{
|
|
37
|
+
model: YpAgentProductBundle,
|
|
38
|
+
as: "AgentBundles",
|
|
39
|
+
attributes: {
|
|
40
|
+
exclude: ["created_at", "updated_at"],
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
},
|
|
45
|
+
],
|
|
46
|
+
});
|
|
47
|
+
return plans;
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
throw new Error(`Error fetching subscription plans: ${error.message}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
async cloneCommunityTemplate(communityTemplateId, toDomainId) {
|
|
54
|
+
console.log("cloneCommunityTemplate", communityTemplateId, toDomainId);
|
|
55
|
+
return new Promise((resolve, reject) => {
|
|
56
|
+
copyCommunity(communityTemplateId, toDomainId, {
|
|
57
|
+
copyGroups: true,
|
|
58
|
+
copyPosts: false,
|
|
59
|
+
copyPoints: false,
|
|
60
|
+
skipUsers: true,
|
|
61
|
+
recountGroupPosts: true,
|
|
62
|
+
skipEndorsementQualitiesAndRatings: true,
|
|
63
|
+
resetEndorsementCounters: true,
|
|
64
|
+
skipActivities: true,
|
|
65
|
+
}, null, (error, newCommunity) => {
|
|
66
|
+
if (error) {
|
|
67
|
+
reject(error);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
resolve(newCommunity);
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
async cloneCommunityWorkflowTemplate(agentProduct, domainId, currentUser) {
|
|
76
|
+
console.log("cloneCommunityWorkflowTemplate", agentProduct, domainId);
|
|
77
|
+
let newCommunity = await this.cloneCommunityTemplate(agentProduct.configuration.templateWorkflowCommunityId, domainId);
|
|
78
|
+
console.log("newCommunity", newCommunity);
|
|
79
|
+
const groups = await YpGroup.findAll({
|
|
80
|
+
where: {
|
|
81
|
+
community_id: newCommunity.id
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
console.log("groups", groups);
|
|
85
|
+
// Find the workflow group
|
|
86
|
+
const workflowGroup = groups.find((group) => group.configuration.groupType == 3);
|
|
87
|
+
if (!workflowGroup) {
|
|
88
|
+
throw new Error("Workflow group not found");
|
|
89
|
+
}
|
|
90
|
+
// Get the top level agent ID from the workflow group configuration
|
|
91
|
+
const topLevelAgentId = workflowGroup.configuration.agents?.topLevelAgentId;
|
|
92
|
+
if (!topLevelAgentId) {
|
|
93
|
+
throw new Error("Top level agent ID not found in workflow group configuration");
|
|
94
|
+
}
|
|
95
|
+
const dbModels = models;
|
|
96
|
+
const UserModel = dbModels.User; // Ensure you're using the same User model from dbModels
|
|
97
|
+
const userInstance = await UserModel.findByPk(currentUser.id);
|
|
98
|
+
if (!userInstance) {
|
|
99
|
+
throw new Error("User not found");
|
|
100
|
+
}
|
|
101
|
+
const hasCommunityUser = await newCommunity.hasCommunityUsers(userInstance);
|
|
102
|
+
if (!hasCommunityUser) {
|
|
103
|
+
await newCommunity.addCommunityUsers(userInstance);
|
|
104
|
+
console.log("Added current user as community user", userInstance.id);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
console.log("Community already has the user as user", userInstance.id);
|
|
108
|
+
}
|
|
109
|
+
for (const group of groups) {
|
|
110
|
+
const hasGroupAdmin = await group.hasGroupAdmins(userInstance);
|
|
111
|
+
if (!hasGroupAdmin) {
|
|
112
|
+
await group.addGroupAdmins(userInstance);
|
|
113
|
+
console.log("Added current user as group admin", userInstance.id);
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
console.log("Group already has the user as admin", userInstance.id);
|
|
117
|
+
}
|
|
118
|
+
const hasGroupUser = await group.hasGroupUsers(userInstance);
|
|
119
|
+
if (!hasGroupUser) {
|
|
120
|
+
await group.addGroupUsers(userInstance);
|
|
121
|
+
console.log("Added current user as group user", userInstance.id);
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
console.log("Group already has the user as user", userInstance.id);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// Create a map of old group IDs to new group IDs
|
|
128
|
+
const groupIdMap = newCommunity.groupMapping;
|
|
129
|
+
console.log("groupIdMap", groupIdMap);
|
|
130
|
+
// Get the original top level agent and all its sub-agents
|
|
131
|
+
const originalTopLevelAgent = await PsAgent.findByPk(topLevelAgentId, {
|
|
132
|
+
include: [
|
|
133
|
+
{
|
|
134
|
+
model: PsAgentClass,
|
|
135
|
+
as: "Class",
|
|
136
|
+
attributes: {
|
|
137
|
+
exclude: ["created_at", "updated_at"],
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
model: PsAgent,
|
|
142
|
+
as: "SubAgents",
|
|
143
|
+
include: [
|
|
144
|
+
{
|
|
145
|
+
model: PsAgentClass,
|
|
146
|
+
as: "Class",
|
|
147
|
+
attributes: {
|
|
148
|
+
exclude: ["created_at", "updated_at"],
|
|
149
|
+
},
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
model: PsAiModel,
|
|
153
|
+
as: "AiModels",
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
model: PsAgentConnector,
|
|
157
|
+
as: "InputConnectors",
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
model: PsAgentConnector,
|
|
161
|
+
as: "OutputConnectors",
|
|
162
|
+
},
|
|
163
|
+
],
|
|
164
|
+
},
|
|
165
|
+
],
|
|
166
|
+
});
|
|
167
|
+
if (!originalTopLevelAgent) {
|
|
168
|
+
throw new Error("Original top level agent not found");
|
|
169
|
+
}
|
|
170
|
+
// Create a map to store agentClassUuid to new agent ID mappings
|
|
171
|
+
const agentUuidMap = new Map();
|
|
172
|
+
const { uuid, user_id, class_id, configuration } = originalTopLevelAgent;
|
|
173
|
+
// Clone the top level agent and store its mapping
|
|
174
|
+
const clonedTopLevelAgent = await PsAgent.create({
|
|
175
|
+
user_id,
|
|
176
|
+
class_id,
|
|
177
|
+
configuration,
|
|
178
|
+
group_id: workflowGroup.id,
|
|
179
|
+
parent_agent_id: undefined
|
|
180
|
+
});
|
|
181
|
+
console.log("clonedTopLevelAgent", clonedTopLevelAgent);
|
|
182
|
+
if (originalTopLevelAgent.Class?.class_base_id) {
|
|
183
|
+
console.log("Setting agentUuidMap", originalTopLevelAgent.Class.class_base_id, clonedTopLevelAgent.id);
|
|
184
|
+
agentUuidMap.set(originalTopLevelAgent.Class.class_base_id, clonedTopLevelAgent.id);
|
|
185
|
+
}
|
|
186
|
+
const agentInputConnectorGroupsIds = new Map();
|
|
187
|
+
const agentOutputConnectorGroupsIds = new Map();
|
|
188
|
+
// Clone sub-agents and their connectors
|
|
189
|
+
for (const subAgent of originalTopLevelAgent.SubAgents ?? []) {
|
|
190
|
+
const { uuid, user_id, class_id, configuration } = subAgent;
|
|
191
|
+
const clonedSubAgent = await PsAgent.create({
|
|
192
|
+
user_id,
|
|
193
|
+
class_id,
|
|
194
|
+
configuration,
|
|
195
|
+
group_id: workflowGroup.id,
|
|
196
|
+
parent_agent_id: clonedTopLevelAgent.id,
|
|
197
|
+
});
|
|
198
|
+
// Store the mapping of agentClassUuid to new agent ID
|
|
199
|
+
if (subAgent.Class?.class_base_id) {
|
|
200
|
+
agentUuidMap.set(subAgent.Class.class_base_id, clonedSubAgent.id);
|
|
201
|
+
}
|
|
202
|
+
console.log("agentUuidMap", agentUuidMap);
|
|
203
|
+
const subAgentAiModels = await subAgent.getAiModels();
|
|
204
|
+
if (subAgentAiModels && subAgentAiModels.length > 0) {
|
|
205
|
+
await clonedSubAgent.setAiModels(subAgentAiModels);
|
|
206
|
+
}
|
|
207
|
+
// Clone input connectors and update group IDs
|
|
208
|
+
for (const connector of (subAgent.InputConnectors ??
|
|
209
|
+
[])) {
|
|
210
|
+
const connectorConfig = { ...connector.configuration };
|
|
211
|
+
console.log("connectorConfig", connectorConfig);
|
|
212
|
+
// Update the group ID if it exists in the map
|
|
213
|
+
if (connectorConfig.groupId &&
|
|
214
|
+
groupIdMap.has(connectorConfig.groupId)) {
|
|
215
|
+
connectorConfig.groupId = groupIdMap.get(connectorConfig.groupId);
|
|
216
|
+
agentInputConnectorGroupsIds.set(clonedSubAgent.id, connectorConfig.groupId);
|
|
217
|
+
}
|
|
218
|
+
const { user_id, group_id, configuration, class_id } = connector;
|
|
219
|
+
const clonedConnector = await PsAgentConnector.create({
|
|
220
|
+
user_id: clonedSubAgent.user_id,
|
|
221
|
+
group_id: workflowGroup.id,
|
|
222
|
+
class_id,
|
|
223
|
+
configuration: connectorConfig,
|
|
224
|
+
});
|
|
225
|
+
await sequelize.models.AgentInputConnectors.create({
|
|
226
|
+
agent_id: clonedSubAgent.id,
|
|
227
|
+
connector_id: clonedConnector.id,
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
// Clone output connectors and update group IDs
|
|
231
|
+
for (const connector of (subAgent.OutputConnectors ??
|
|
232
|
+
[])) {
|
|
233
|
+
const connectorConfig = { ...connector.configuration };
|
|
234
|
+
console.log("connectorConfig", connectorConfig);
|
|
235
|
+
// Update the group ID if it exists in the map
|
|
236
|
+
if (connectorConfig.groupId &&
|
|
237
|
+
groupIdMap.has(connectorConfig.groupId)) {
|
|
238
|
+
connectorConfig.groupId = groupIdMap.get(connectorConfig.groupId);
|
|
239
|
+
agentOutputConnectorGroupsIds.set(clonedSubAgent.id, connectorConfig.groupId);
|
|
240
|
+
}
|
|
241
|
+
const { user_id, group_id, configuration, class_id } = connector;
|
|
242
|
+
const clonedConnector = await PsAgentConnector.create({
|
|
243
|
+
user_id: clonedSubAgent.user_id,
|
|
244
|
+
group_id: workflowGroup.id,
|
|
245
|
+
class_id,
|
|
246
|
+
configuration: connectorConfig,
|
|
247
|
+
});
|
|
248
|
+
await sequelize.models.AgentOutputConnectors.create({
|
|
249
|
+
agent_id: clonedSubAgent.id,
|
|
250
|
+
connector_id: clonedConnector.id,
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
// Update the workflow group configuration
|
|
255
|
+
workflowGroup.configuration.agents.topLevelAgentId = clonedTopLevelAgent.id;
|
|
256
|
+
console.log(`Set top level agent id to ${clonedTopLevelAgent.id} for workflow group ${workflowGroup.id}`);
|
|
257
|
+
workflowGroup.changed('configuration', true);
|
|
258
|
+
await workflowGroup.save();
|
|
259
|
+
if (agentProduct.configuration.structuredAnswersOverride) {
|
|
260
|
+
for (const override of agentProduct.configuration
|
|
261
|
+
.structuredAnswersOverride) {
|
|
262
|
+
// Apply overrides to all agents in the workflow
|
|
263
|
+
for (const agent of [
|
|
264
|
+
...(originalTopLevelAgent.SubAgents ?? []),
|
|
265
|
+
originalTopLevelAgent,
|
|
266
|
+
]) {
|
|
267
|
+
console.log("update answers for agent", agent);
|
|
268
|
+
if (agent.configuration?.answers) {
|
|
269
|
+
const answerIndex = agent.configuration.answers.findIndex((a) => a.uniqueId === override.uniqueId);
|
|
270
|
+
if (answerIndex !== -1) {
|
|
271
|
+
console.log("update answers for agent", agent.configuration.answers[answerIndex], override);
|
|
272
|
+
agent.configuration.answers[answerIndex] = {
|
|
273
|
+
...agent.configuration.answers[answerIndex],
|
|
274
|
+
...override,
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
// Update workflow steps with new agent IDs
|
|
282
|
+
const updatedWorkflow = { ...agentProduct.configuration.workflow };
|
|
283
|
+
updatedWorkflow.steps = agentProduct.configuration.workflow.steps.map((step) => {
|
|
284
|
+
const newStep = { ...step };
|
|
285
|
+
if (step.agentClassUuid && agentUuidMap.has(step.agentClassUuid)) {
|
|
286
|
+
newStep.agentId = agentUuidMap.get(step.agentClassUuid);
|
|
287
|
+
}
|
|
288
|
+
else if (step.agentClassUuid) {
|
|
289
|
+
console.error("agentClassUuid not found in agentUuidMap", step.agentClassUuid);
|
|
290
|
+
}
|
|
291
|
+
if (newStep.type === "engagmentFromInputConnector" && newStep.agentId) {
|
|
292
|
+
newStep.groupId = agentInputConnectorGroupsIds.get(newStep.agentId);
|
|
293
|
+
}
|
|
294
|
+
else if (newStep.type === "engagmentFromOutputConnector" && newStep.agentId) {
|
|
295
|
+
newStep.groupId = agentOutputConnectorGroupsIds.get(newStep.agentId);
|
|
296
|
+
}
|
|
297
|
+
return newStep;
|
|
298
|
+
});
|
|
299
|
+
updatedWorkflow.workflowGroupId = workflowGroup.id;
|
|
300
|
+
console.log("updatedWorkflow", updatedWorkflow);
|
|
301
|
+
return {
|
|
302
|
+
workflow: updatedWorkflow,
|
|
303
|
+
requiredQuestions: agentProduct.configuration.requiredStructuredQuestions,
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
// Create subscriptions for a user
|
|
307
|
+
async createSubscriptions(userId, planIds, paymentMethodId) {
|
|
308
|
+
try {
|
|
309
|
+
let totalAmount = 0;
|
|
310
|
+
const currency = "usd";
|
|
311
|
+
// Calculate total amount to charge
|
|
312
|
+
for (let i = 0; i < planIds.length; i++) {
|
|
313
|
+
const plan = await YpSubscriptionPlan.findByPk(planIds[i]);
|
|
314
|
+
if (!plan) {
|
|
315
|
+
throw new Error(`Subscription plan with ID ${planIds[i]} not found`);
|
|
316
|
+
}
|
|
317
|
+
totalAmount += Number(plan.configuration.amount) * 100;
|
|
318
|
+
}
|
|
319
|
+
// If total amount is 0, return early indicating free subscription
|
|
320
|
+
if (totalAmount === 0) {
|
|
321
|
+
return { freeSubscription: true };
|
|
322
|
+
}
|
|
323
|
+
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, {
|
|
324
|
+
apiVersion: "2025-01-27.acacia",
|
|
325
|
+
});
|
|
326
|
+
// Create a PaymentIntent with Stripe
|
|
327
|
+
const paymentIntent = await stripe.paymentIntents.create({
|
|
328
|
+
amount: totalAmount,
|
|
329
|
+
currency: currency,
|
|
330
|
+
payment_method: paymentMethodId ?? undefined,
|
|
331
|
+
confirmation_method: "manual",
|
|
332
|
+
confirm: false,
|
|
333
|
+
payment_method_types: ["card"],
|
|
334
|
+
description: "Subscription Purchase",
|
|
335
|
+
metadata: {
|
|
336
|
+
userId: userId.toString(),
|
|
337
|
+
planIds: planIds.join(","),
|
|
338
|
+
},
|
|
339
|
+
});
|
|
340
|
+
// Return the client secret for frontend confirmation
|
|
341
|
+
return {
|
|
342
|
+
clientSecret: paymentIntent.client_secret,
|
|
343
|
+
subscriptionId: paymentIntent.id,
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
catch (error) {
|
|
347
|
+
if (error instanceof Stripe.errors.StripeCardError) {
|
|
348
|
+
throw new Error(`Payment failed: ${error.message}`);
|
|
349
|
+
}
|
|
350
|
+
else if (error instanceof Stripe.errors.StripeInvalidRequestError) {
|
|
351
|
+
throw new Error(`Invalid payment request: ${error.message}`);
|
|
352
|
+
}
|
|
353
|
+
else {
|
|
354
|
+
throw new Error(`Error creating subscriptions: ${error.message}`);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
// Add a new method to handle successful payments
|
|
359
|
+
async handleSuccessfulPayment(paymentIntentId) {
|
|
360
|
+
try {
|
|
361
|
+
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, {
|
|
362
|
+
apiVersion: "2025-01-27.acacia",
|
|
363
|
+
});
|
|
364
|
+
const paymentIntent = await stripe.paymentIntents.retrieve(paymentIntentId);
|
|
365
|
+
if (paymentIntent.status !== "succeeded") {
|
|
366
|
+
throw new Error("Payment not successful");
|
|
367
|
+
}
|
|
368
|
+
const userId = Number(paymentIntent.metadata.userId);
|
|
369
|
+
const agentProductIds = paymentIntent.metadata.agentProductIds
|
|
370
|
+
.split(",")
|
|
371
|
+
.map(Number);
|
|
372
|
+
const planIds = paymentIntent.metadata.planIds.split(",").map(Number);
|
|
373
|
+
const subscriptions = [];
|
|
374
|
+
// Create subscriptions after successful payment
|
|
375
|
+
for (let i = 0; i < agentProductIds.length; i++) {
|
|
376
|
+
const nextBillingDate = await this.calculateNextBillingDate(planIds[i]);
|
|
377
|
+
const subscription = await YpSubscription.create({
|
|
378
|
+
user_id: userId,
|
|
379
|
+
agent_product_id: agentProductIds[i],
|
|
380
|
+
subscription_plan_id: planIds[i],
|
|
381
|
+
start_date: new Date(),
|
|
382
|
+
next_billing_date: nextBillingDate,
|
|
383
|
+
status: "active",
|
|
384
|
+
payment_method: "stripe",
|
|
385
|
+
transaction_id: paymentIntentId,
|
|
386
|
+
});
|
|
387
|
+
subscriptions.push(subscription);
|
|
388
|
+
}
|
|
389
|
+
return subscriptions;
|
|
390
|
+
}
|
|
391
|
+
catch (error) {
|
|
392
|
+
throw new Error(`Error processing successful payment: ${error.message}`);
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
// Start an agent run
|
|
396
|
+
async startAgentRun(subscriptionId, wsClients, wsClientId, currentUser) {
|
|
397
|
+
try {
|
|
398
|
+
// Check if the subscription is active
|
|
399
|
+
const subscription = await YpSubscription.findByPk(subscriptionId, {
|
|
400
|
+
attributes: {
|
|
401
|
+
exclude: ["created_at", "updated_at"],
|
|
402
|
+
},
|
|
403
|
+
include: [
|
|
404
|
+
{
|
|
405
|
+
model: YpSubscriptionPlan,
|
|
406
|
+
as: "Plan",
|
|
407
|
+
attributes: {
|
|
408
|
+
exclude: ["created_at", "updated_at"],
|
|
409
|
+
},
|
|
410
|
+
},
|
|
411
|
+
{
|
|
412
|
+
model: YpAgentProduct,
|
|
413
|
+
as: "AgentProduct",
|
|
414
|
+
attributes: {
|
|
415
|
+
exclude: ["created_at", "updated_at"],
|
|
416
|
+
},
|
|
417
|
+
},
|
|
418
|
+
],
|
|
419
|
+
});
|
|
420
|
+
if (!subscription || subscription.status !== "active") {
|
|
421
|
+
throw new Error("Subscription is not active");
|
|
422
|
+
}
|
|
423
|
+
// Check runs limit
|
|
424
|
+
//TODO: Activate this again !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
|
|
425
|
+
//await this.checkRunsLimit(subscription);
|
|
426
|
+
const workflowAndRequiredQuestions = await this.cloneCommunityWorkflowTemplate(subscription.AgentProduct, subscription.domain_id, currentUser);
|
|
427
|
+
// Create a new agent product run
|
|
428
|
+
const agentRun = await YpAgentProductRun.create({
|
|
429
|
+
subscription_id: subscription.id,
|
|
430
|
+
start_time: new Date(),
|
|
431
|
+
workflow: workflowAndRequiredQuestions.workflow,
|
|
432
|
+
status: "ready",
|
|
433
|
+
});
|
|
434
|
+
// Update runs used
|
|
435
|
+
await this.incrementRunsUsed(subscription);
|
|
436
|
+
return { agentRun, subscription };
|
|
437
|
+
}
|
|
438
|
+
catch (error) {
|
|
439
|
+
throw new Error(`Error starting agent run: ${error.message}`);
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
async startFirstAgent(agentProductRun, wsClients, wsClientId) {
|
|
443
|
+
const workflow = agentProductRun.workflow;
|
|
444
|
+
if (!workflow) {
|
|
445
|
+
throw new Error("Workflow not found");
|
|
446
|
+
}
|
|
447
|
+
const firstStep = workflow.steps[0];
|
|
448
|
+
const agentId = firstStep.agentId;
|
|
449
|
+
if (!agentId) {
|
|
450
|
+
throw new Error("Agent ID not found in the first step");
|
|
451
|
+
}
|
|
452
|
+
const agentQueueManager = new NotificationAgentQueueManager(wsClients);
|
|
453
|
+
try {
|
|
454
|
+
const success = await agentQueueManager.startAgentProcessingWithWsClient(agentId, agentProductRun.id, wsClientId);
|
|
455
|
+
if (success) {
|
|
456
|
+
return true;
|
|
457
|
+
}
|
|
458
|
+
else {
|
|
459
|
+
return false;
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
catch (error) {
|
|
463
|
+
console.error("Error starting agent processing:", error);
|
|
464
|
+
return false;
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
// Stop an agent run
|
|
468
|
+
async stopAgentRun(agentProductRunId) {
|
|
469
|
+
try {
|
|
470
|
+
const agentProductRun = await YpAgentProductRun.findByPk(agentProductRunId);
|
|
471
|
+
if (!agentProductRun || agentProductRun.status !== "running") {
|
|
472
|
+
throw new Error("Agent run is not running");
|
|
473
|
+
}
|
|
474
|
+
agentProductRun.end_time = new Date();
|
|
475
|
+
agentProductRun.status = "completed";
|
|
476
|
+
agentProductRun.duration = Math.floor((agentProductRun.end_time.getTime() -
|
|
477
|
+
agentProductRun.start_time.getTime()) /
|
|
478
|
+
1000); // Duration in seconds
|
|
479
|
+
await agentProductRun.save();
|
|
480
|
+
}
|
|
481
|
+
catch (error) {
|
|
482
|
+
throw new Error(`Error stopping agent run: ${error.message}`);
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
// Additional helper methods
|
|
486
|
+
async calculateNextBillingDate(planId) {
|
|
487
|
+
const plan = await YpSubscriptionPlan.findByPk(planId);
|
|
488
|
+
if (!plan) {
|
|
489
|
+
throw new Error("Subscription plan not found");
|
|
490
|
+
}
|
|
491
|
+
const nextBillingDate = new Date();
|
|
492
|
+
switch (plan.configuration.billing_cycle) {
|
|
493
|
+
case "monthly":
|
|
494
|
+
nextBillingDate.setMonth(nextBillingDate.getMonth() + 1);
|
|
495
|
+
break;
|
|
496
|
+
case "yearly":
|
|
497
|
+
nextBillingDate.setFullYear(nextBillingDate.getFullYear() + 1);
|
|
498
|
+
break;
|
|
499
|
+
case "weekly":
|
|
500
|
+
nextBillingDate.setDate(nextBillingDate.getDate() + 7);
|
|
501
|
+
break;
|
|
502
|
+
default:
|
|
503
|
+
throw new Error("Invalid billing cycle");
|
|
504
|
+
}
|
|
505
|
+
return nextBillingDate;
|
|
506
|
+
}
|
|
507
|
+
async incrementRunsUsed(subscription) {
|
|
508
|
+
// Increment runs used in the subscription
|
|
509
|
+
// Also check if runs limit is reached
|
|
510
|
+
const plan = await YpSubscriptionPlan.findByPk(subscription.subscription_plan_id);
|
|
511
|
+
if (!plan) {
|
|
512
|
+
throw new Error("Subscription plan not found");
|
|
513
|
+
}
|
|
514
|
+
// For simplicity, we can assume runs_used is stored in subscription metadata
|
|
515
|
+
let runsUsed = subscription.metadata?.runs_used || 0;
|
|
516
|
+
runsUsed += 1;
|
|
517
|
+
if (runsUsed > plan.configuration.max_runs_per_cycle) {
|
|
518
|
+
console.error("Maximum runs per cycle exceeded");
|
|
519
|
+
//TODO: Look into activating this again !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
|
|
520
|
+
//throw new Error("Maximum runs per cycle exceeded");
|
|
521
|
+
}
|
|
522
|
+
subscription.metadata = { ...subscription.metadata, runs_used: runsUsed };
|
|
523
|
+
await subscription.save();
|
|
524
|
+
}
|
|
525
|
+
async checkRunsLimit(subscription) {
|
|
526
|
+
const plan = await YpSubscriptionPlan.findByPk(subscription.subscription_plan_id);
|
|
527
|
+
if (!plan) {
|
|
528
|
+
throw new Error("Subscription plan not found");
|
|
529
|
+
}
|
|
530
|
+
const runsUsed = subscription.metadata?.runs_used || 0;
|
|
531
|
+
if (runsUsed >= plan.configuration.max_runs_per_cycle) {
|
|
532
|
+
throw new Error("Maximum runs per cycle reached");
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { YpWorkflowConversation } from "../models/workflowConversation.js";
|
|
2
|
+
export class WorkflowConversationManager {
|
|
3
|
+
constructor() { }
|
|
4
|
+
async createWorkflowConversation(data) {
|
|
5
|
+
try {
|
|
6
|
+
const workflow = await YpWorkflowConversation.create({
|
|
7
|
+
agentProductId: data.agentProductId,
|
|
8
|
+
userId: data.userId || null,
|
|
9
|
+
configuration: data.configuration || {},
|
|
10
|
+
});
|
|
11
|
+
return workflow;
|
|
12
|
+
}
|
|
13
|
+
catch (error) {
|
|
14
|
+
throw new Error(`Error creating workflow conversation: ${error.message}`);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
async getWorkflowConversation(workflowConversationId) {
|
|
18
|
+
try {
|
|
19
|
+
const workflowConversation = await YpWorkflowConversation.findByPk(workflowConversationId);
|
|
20
|
+
return workflowConversation;
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
throw new Error(`Error retrieving workflow conversation: ${error.message}`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
async updateWorkflowConversation(workflowConversationId, updates) {
|
|
27
|
+
try {
|
|
28
|
+
const workflowConversation = await YpWorkflowConversation.findByPk(workflowConversationId);
|
|
29
|
+
if (!workflowConversation) {
|
|
30
|
+
throw new Error("Workflow conversation not found");
|
|
31
|
+
}
|
|
32
|
+
Object.assign(workflowConversation, updates);
|
|
33
|
+
await workflowConversation.save();
|
|
34
|
+
return workflowConversation;
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
throw new Error(`Error updating workflow conversation: ${error.message}`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
async connectToWorkflowConversation(workflowConversationId, connectionData) {
|
|
41
|
+
try {
|
|
42
|
+
const workflowConversation = await YpWorkflowConversation.findByPk(workflowConversationId);
|
|
43
|
+
if (!workflowConversation) {
|
|
44
|
+
throw new Error("Workflow conversation not found");
|
|
45
|
+
}
|
|
46
|
+
workflowConversation.configuration = {
|
|
47
|
+
...workflowConversation.configuration,
|
|
48
|
+
...connectionData,
|
|
49
|
+
};
|
|
50
|
+
await workflowConversation.save();
|
|
51
|
+
return workflowConversation;
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
throw new Error(`Error connecting to workflow: ${error.message}`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
async getWorkflowConversationsForUser(userId) {
|
|
58
|
+
try {
|
|
59
|
+
const workflowConversations = await YpWorkflowConversation.findAll({ where: { userId } });
|
|
60
|
+
return workflowConversations;
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
throw new Error(`Error retrieving workflow conversations for user ${userId}: ${error.message}`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
async getRunningWorkflowConversationsForUser(userId) {
|
|
67
|
+
try {
|
|
68
|
+
const allWorkflowConversations = await this.getWorkflowConversationsForUser(userId);
|
|
69
|
+
const runningWorkflowConversations = allWorkflowConversations.filter((workflowConversation) => {
|
|
70
|
+
return (workflowConversation.configuration &&
|
|
71
|
+
workflowConversation.configuration.running === true);
|
|
72
|
+
});
|
|
73
|
+
return runningWorkflowConversations;
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
throw new Error(`Error retrieving running workflows for user ${userId}: ${error.message}`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|