@webiny/ai-powerups 0.0.0-unstable.0d717d18dd
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/AiPowerups.d.ts +2 -0
- package/AiPowerups.js +11 -0
- package/AiPowerups.js.map +1 -0
- package/LICENSE +36 -0
- package/README.md +11 -0
- package/admin/Extension.d.ts +2 -0
- package/admin/Extension.js +45 -0
- package/admin/Extension.js.map +1 -0
- package/admin/domain/errors.d.ts +12 -0
- package/admin/domain/errors.js +21 -0
- package/admin/domain/errors.js.map +1 -0
- package/admin/features/compareEntryRevisions/CompareEntryRevisionsGateway.d.ts +12 -0
- package/admin/features/compareEntryRevisions/CompareEntryRevisionsGateway.js +46 -0
- package/admin/features/compareEntryRevisions/CompareEntryRevisionsGateway.js.map +1 -0
- package/admin/features/compareEntryRevisions/CompareEntryRevisionsRepository.d.ts +11 -0
- package/admin/features/compareEntryRevisions/CompareEntryRevisionsRepository.js +18 -0
- package/admin/features/compareEntryRevisions/CompareEntryRevisionsRepository.js.map +1 -0
- package/admin/features/compareEntryRevisions/CompareEntryRevisionsUseCase.d.ts +11 -0
- package/admin/features/compareEntryRevisions/CompareEntryRevisionsUseCase.js +18 -0
- package/admin/features/compareEntryRevisions/CompareEntryRevisionsUseCase.js.map +1 -0
- package/admin/features/compareEntryRevisions/abstractions.d.ts +32 -0
- package/admin/features/compareEntryRevisions/abstractions.js +7 -0
- package/admin/features/compareEntryRevisions/abstractions.js.map +1 -0
- package/admin/features/compareEntryRevisions/feature.d.ts +1 -0
- package/admin/features/compareEntryRevisions/feature.js +15 -0
- package/admin/features/compareEntryRevisions/feature.js.map +1 -0
- package/admin/features/compareEntryRevisions/index.d.ts +2 -0
- package/admin/features/compareEntryRevisions/index.js +2 -0
- package/admin/features/feature.d.ts +1 -0
- package/admin/features/feature.js +24 -0
- package/admin/features/feature.js.map +1 -0
- package/admin/features/generateEntryContent/GenerateEntryContentGateway.d.ts +12 -0
- package/admin/features/generateEntryContent/GenerateEntryContentGateway.js +45 -0
- package/admin/features/generateEntryContent/GenerateEntryContentGateway.js.map +1 -0
- package/admin/features/generateEntryContent/GenerateEntryContentUseCase.d.ts +11 -0
- package/admin/features/generateEntryContent/GenerateEntryContentUseCase.js +18 -0
- package/admin/features/generateEntryContent/GenerateEntryContentUseCase.js.map +1 -0
- package/admin/features/generateEntryContent/abstractions.d.ts +24 -0
- package/admin/features/generateEntryContent/abstractions.js +6 -0
- package/admin/features/generateEntryContent/abstractions.js.map +1 -0
- package/admin/features/generateEntryContent/feature.d.ts +1 -0
- package/admin/features/generateEntryContent/feature.js +13 -0
- package/admin/features/generateEntryContent/feature.js.map +1 -0
- package/admin/features/generateEntryContent/index.d.ts +3 -0
- package/admin/features/generateEntryContent/index.js +2 -0
- package/admin/features/generatePageContent/GeneratePageContentGateway.d.ts +12 -0
- package/admin/features/generatePageContent/GeneratePageContentGateway.js +47 -0
- package/admin/features/generatePageContent/GeneratePageContentGateway.js.map +1 -0
- package/admin/features/generatePageContent/GeneratePageContentUseCase.d.ts +11 -0
- package/admin/features/generatePageContent/GeneratePageContentUseCase.js +18 -0
- package/admin/features/generatePageContent/GeneratePageContentUseCase.js.map +1 -0
- package/admin/features/generatePageContent/abstractions.d.ts +25 -0
- package/admin/features/generatePageContent/abstractions.js +6 -0
- package/admin/features/generatePageContent/abstractions.js.map +1 -0
- package/admin/features/generatePageContent/feature.d.ts +1 -0
- package/admin/features/generatePageContent/feature.js +13 -0
- package/admin/features/generatePageContent/feature.js.map +1 -0
- package/admin/features/generatePageContent/index.d.ts +3 -0
- package/admin/features/generatePageContent/index.js +2 -0
- package/admin/features/listModels/ListModelsGateway.d.ts +12 -0
- package/admin/features/listModels/ListModelsGateway.js +34 -0
- package/admin/features/listModels/ListModelsGateway.js.map +1 -0
- package/admin/features/listModels/ListModelsRepository.d.ts +13 -0
- package/admin/features/listModels/ListModelsRepository.js +27 -0
- package/admin/features/listModels/ListModelsRepository.js.map +1 -0
- package/admin/features/listModels/ListModelsUseCase.d.ts +10 -0
- package/admin/features/listModels/ListModelsUseCase.js +18 -0
- package/admin/features/listModels/ListModelsUseCase.js.map +1 -0
- package/admin/features/listModels/abstractions.d.ts +28 -0
- package/admin/features/listModels/abstractions.js +7 -0
- package/admin/features/listModels/abstractions.js.map +1 -0
- package/admin/features/listModels/feature.d.ts +3 -0
- package/admin/features/listModels/feature.js +21 -0
- package/admin/features/listModels/feature.js.map +1 -0
- package/admin/features/listModels/index.d.ts +2 -0
- package/admin/features/listModels/index.js +2 -0
- package/admin/features/settings/getSettings/GetSettingsGateway.d.ts +12 -0
- package/admin/features/settings/getSettings/GetSettingsGateway.js +29 -0
- package/admin/features/settings/getSettings/GetSettingsGateway.js.map +1 -0
- package/admin/features/settings/getSettings/GetSettingsRepository.d.ts +14 -0
- package/admin/features/settings/getSettings/GetSettingsRepository.js +31 -0
- package/admin/features/settings/getSettings/GetSettingsRepository.js.map +1 -0
- package/admin/features/settings/getSettings/GetSettingsUseCase.d.ts +11 -0
- package/admin/features/settings/getSettings/GetSettingsUseCase.js +18 -0
- package/admin/features/settings/getSettings/GetSettingsUseCase.js.map +1 -0
- package/admin/features/settings/getSettings/abstractions.d.ts +22 -0
- package/admin/features/settings/getSettings/abstractions.js +7 -0
- package/admin/features/settings/getSettings/abstractions.js.map +1 -0
- package/admin/features/settings/getSettings/feature.d.ts +3 -0
- package/admin/features/settings/getSettings/feature.js +21 -0
- package/admin/features/settings/getSettings/feature.js.map +1 -0
- package/admin/features/settings/getSettings/index.d.ts +2 -0
- package/admin/features/settings/getSettings/index.js +2 -0
- package/admin/features/settings/shared/SettingsCache.d.ts +10 -0
- package/admin/features/settings/shared/SettingsCache.js +19 -0
- package/admin/features/settings/shared/SettingsCache.js.map +1 -0
- package/admin/features/settings/shared/abstractions.d.ts +50 -0
- package/admin/features/settings/shared/abstractions.js +5 -0
- package/admin/features/settings/shared/abstractions.js.map +1 -0
- package/admin/features/settings/shared/feature.d.ts +3 -0
- package/admin/features/settings/shared/feature.js +17 -0
- package/admin/features/settings/shared/feature.js.map +1 -0
- package/admin/features/settings/shared/index.d.ts +2 -0
- package/admin/features/settings/shared/index.js +2 -0
- package/admin/features/settings/updateSettings/UpdateSettingsGateway.d.ts +12 -0
- package/admin/features/settings/updateSettings/UpdateSettingsGateway.js +45 -0
- package/admin/features/settings/updateSettings/UpdateSettingsGateway.js.map +1 -0
- package/admin/features/settings/updateSettings/UpdateSettingsRepository.d.ts +13 -0
- package/admin/features/settings/updateSettings/UpdateSettingsRepository.js +23 -0
- package/admin/features/settings/updateSettings/UpdateSettingsRepository.js.map +1 -0
- package/admin/features/settings/updateSettings/UpdateSettingsUseCase.d.ts +11 -0
- package/admin/features/settings/updateSettings/UpdateSettingsUseCase.js +18 -0
- package/admin/features/settings/updateSettings/UpdateSettingsUseCase.js.map +1 -0
- package/admin/features/settings/updateSettings/abstractions.d.ts +22 -0
- package/admin/features/settings/updateSettings/abstractions.js +7 -0
- package/admin/features/settings/updateSettings/abstractions.js.map +1 -0
- package/admin/features/settings/updateSettings/feature.d.ts +3 -0
- package/admin/features/settings/updateSettings/feature.js +21 -0
- package/admin/features/settings/updateSettings/feature.js.map +1 -0
- package/admin/features/settings/updateSettings/index.d.ts +2 -0
- package/admin/features/settings/updateSettings/index.js +2 -0
- package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPage.d.ts +4 -0
- package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPage.js +49 -0
- package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPage.js.map +1 -0
- package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPresenter.d.ts +26 -0
- package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPresenter.js +148 -0
- package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPresenter.js.map +1 -0
- package/admin/presentation/AiPowerUpsSettings/abstractions.d.ts +18 -0
- package/admin/presentation/AiPowerUpsSettings/abstractions.js +5 -0
- package/admin/presentation/AiPowerUpsSettings/abstractions.js.map +1 -0
- package/admin/presentation/AiPowerUpsSettings/feature.d.ts +3 -0
- package/admin/presentation/AiPowerUpsSettings/feature.js +25 -0
- package/admin/presentation/AiPowerUpsSettings/feature.js.map +1 -0
- package/admin/presentation/AiPowerUpsSettings/index.d.ts +3 -0
- package/admin/presentation/AiPowerUpsSettings/index.js +3 -0
- package/admin/presentation/AiPowerUpsSettings/settingsGroup.d.ts +17 -0
- package/admin/presentation/AiPowerUpsSettings/settingsGroup.js +5 -0
- package/admin/presentation/AiPowerUpsSettings/settingsGroup.js.map +1 -0
- package/admin/presentation/AiPowerUpsSettings/useAiPowerUpsSettings.d.ts +4 -0
- package/admin/presentation/AiPowerUpsSettings/useAiPowerUpsSettings.js +27 -0
- package/admin/presentation/AiPowerUpsSettings/useAiPowerUpsSettings.js.map +1 -0
- package/admin/presentation/AiPromptFormFactory/AiPromptFormFactory.d.ts +20 -0
- package/admin/presentation/AiPromptFormFactory/AiPromptFormFactory.js +108 -0
- package/admin/presentation/AiPromptFormFactory/AiPromptFormFactory.js.map +1 -0
- package/admin/presentation/AiPromptFormFactory/abstractions.d.ts +14 -0
- package/admin/presentation/AiPromptFormFactory/abstractions.js +5 -0
- package/admin/presentation/AiPromptFormFactory/abstractions.js.map +1 -0
- package/admin/presentation/AiPromptFormFactory/feature.d.ts +1 -0
- package/admin/presentation/AiPromptFormFactory/feature.js +11 -0
- package/admin/presentation/AiPromptFormFactory/feature.js.map +1 -0
- package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsDialog.d.ts +9 -0
- package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsDialog.js +118 -0
- package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsDialog.js.map +1 -0
- package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsDrawer.d.ts +9 -0
- package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsDrawer.js +72 -0
- package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsDrawer.js.map +1 -0
- package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsMenuItem.d.ts +4 -0
- package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsMenuItem.js +21 -0
- package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsMenuItem.js.map +1 -0
- package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsOverlays.d.ts +2 -0
- package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsOverlays.js +17 -0
- package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsOverlays.js.map +1 -0
- package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsPresenter.d.ts +25 -0
- package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsPresenter.js +90 -0
- package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsPresenter.js.map +1 -0
- package/admin/presentation/CmsCompareEntryRevisions/Extension.d.ts +2 -0
- package/admin/presentation/CmsCompareEntryRevisions/Extension.js +16 -0
- package/admin/presentation/CmsCompareEntryRevisions/Extension.js.map +1 -0
- package/admin/presentation/CmsCompareEntryRevisions/abstractions.d.ts +29 -0
- package/admin/presentation/CmsCompareEntryRevisions/abstractions.js +5 -0
- package/admin/presentation/CmsCompareEntryRevisions/abstractions.js.map +1 -0
- package/admin/presentation/CmsCompareEntryRevisions/feature.d.ts +3 -0
- package/admin/presentation/CmsCompareEntryRevisions/feature.js +17 -0
- package/admin/presentation/CmsCompareEntryRevisions/feature.js.map +1 -0
- package/admin/presentation/CmsContentGeneration/CmsGenerateContentButton.d.ts +4 -0
- package/admin/presentation/CmsContentGeneration/CmsGenerateContentButton.js +27 -0
- package/admin/presentation/CmsContentGeneration/CmsGenerateContentButton.js.map +1 -0
- package/admin/presentation/CmsContentGeneration/CmsGenerateContentDialog.d.ts +5 -0
- package/admin/presentation/CmsContentGeneration/CmsGenerateContentDialog.js +106 -0
- package/admin/presentation/CmsContentGeneration/CmsGenerateContentDialog.js.map +1 -0
- package/admin/presentation/CmsContentGeneration/CmsGenerateContentPresenter.d.ts +29 -0
- package/admin/presentation/CmsContentGeneration/CmsGenerateContentPresenter.js +120 -0
- package/admin/presentation/CmsContentGeneration/CmsGenerateContentPresenter.js.map +1 -0
- package/admin/presentation/CmsContentGeneration/Extension.d.ts +2 -0
- package/admin/presentation/CmsContentGeneration/Extension.js +27 -0
- package/admin/presentation/CmsContentGeneration/Extension.js.map +1 -0
- package/admin/presentation/CmsContentGeneration/abstractions.d.ts +20 -0
- package/admin/presentation/CmsContentGeneration/abstractions.js +5 -0
- package/admin/presentation/CmsContentGeneration/abstractions.js.map +1 -0
- package/admin/presentation/CmsContentGeneration/feature.d.ts +3 -0
- package/admin/presentation/CmsContentGeneration/feature.js +17 -0
- package/admin/presentation/CmsContentGeneration/feature.js.map +1 -0
- package/admin/presentation/CmsEntryWizard/CmsEntryWizard.d.ts +4 -0
- package/admin/presentation/CmsEntryWizard/CmsEntryWizard.js +113 -0
- package/admin/presentation/CmsEntryWizard/CmsEntryWizard.js.map +1 -0
- package/admin/presentation/CmsEntryWizard/CmsEntryWizardGate.d.ts +4 -0
- package/admin/presentation/CmsEntryWizard/CmsEntryWizardGate.js +19 -0
- package/admin/presentation/CmsEntryWizard/CmsEntryWizardGate.js.map +1 -0
- package/admin/presentation/CmsEntryWizard/Extension.d.ts +2 -0
- package/admin/presentation/CmsEntryWizard/Extension.js +10 -0
- package/admin/presentation/CmsEntryWizard/Extension.js.map +1 -0
- package/admin/presentation/ProjectsSettings.d.ts +11 -0
- package/admin/presentation/ProjectsSettings.js +56 -0
- package/admin/presentation/ProjectsSettings.js.map +1 -0
- package/admin/presentation/ProvidersSettings.d.ts +16 -0
- package/admin/presentation/ProvidersSettings.js +46 -0
- package/admin/presentation/ProvidersSettings.js.map +1 -0
- package/admin/presentation/ReaderPersonasSettings.d.ts +11 -0
- package/admin/presentation/ReaderPersonasSettings.js +37 -0
- package/admin/presentation/ReaderPersonasSettings.js.map +1 -0
- package/admin/presentation/WbContentGeneration/Extension.d.ts +2 -0
- package/admin/presentation/WbContentGeneration/Extension.js +22 -0
- package/admin/presentation/WbContentGeneration/Extension.js.map +1 -0
- package/admin/presentation/WbContentGeneration/GenerateContentButton.d.ts +2 -0
- package/admin/presentation/WbContentGeneration/GenerateContentButton.js +19 -0
- package/admin/presentation/WbContentGeneration/GenerateContentButton.js.map +1 -0
- package/admin/presentation/WbContentGeneration/GenerateContentDialog.d.ts +21 -0
- package/admin/presentation/WbContentGeneration/GenerateContentDialog.js +125 -0
- package/admin/presentation/WbContentGeneration/GenerateContentDialog.js.map +1 -0
- package/admin/presentation/WbContentGeneration/GenerateContentPresenter.d.ts +33 -0
- package/admin/presentation/WbContentGeneration/GenerateContentPresenter.js +161 -0
- package/admin/presentation/WbContentGeneration/GenerateContentPresenter.js.map +1 -0
- package/admin/presentation/WbContentGeneration/PROCESS_IDEA.md +190 -0
- package/admin/presentation/WbContentGeneration/abstractions.d.ts +31 -0
- package/admin/presentation/WbContentGeneration/abstractions.js +5 -0
- package/admin/presentation/WbContentGeneration/abstractions.js.map +1 -0
- package/admin/presentation/WbContentGeneration/decompressGzipBase64.d.ts +1 -0
- package/admin/presentation/WbContentGeneration/decompressGzipBase64.js +13 -0
- package/admin/presentation/WbContentGeneration/decompressGzipBase64.js.map +1 -0
- package/admin/presentation/WbContentGeneration/feature.d.ts +3 -0
- package/admin/presentation/WbContentGeneration/feature.js +17 -0
- package/admin/presentation/WbContentGeneration/feature.js.map +1 -0
- package/admin/presentation/WriterPersonasSettings.d.ts +11 -0
- package/admin/presentation/WriterPersonasSettings.js +37 -0
- package/admin/presentation/WriterPersonasSettings.js.map +1 -0
- package/admin/routes.d.ts +4 -0
- package/admin/routes.js +10 -0
- package/admin/routes.js.map +1 -0
- package/api/Extension.d.ts +4 -0
- package/api/Extension.js +45 -0
- package/api/Extension.js.map +1 -0
- package/api/constants.d.ts +1 -0
- package/api/constants.js +4 -0
- package/api/constants.js.map +1 -0
- package/api/features/AiImageEnrichment/AiImageEnrichmentAfterCreateHandler.d.ts +13 -0
- package/api/features/AiImageEnrichment/AiImageEnrichmentAfterCreateHandler.js +31 -0
- package/api/features/AiImageEnrichment/AiImageEnrichmentAfterCreateHandler.js.map +1 -0
- package/api/features/AiImageEnrichment/AiImageEnrichmentTask.d.ts +36 -0
- package/api/features/AiImageEnrichment/AiImageEnrichmentTask.js +142 -0
- package/api/features/AiImageEnrichment/AiImageEnrichmentTask.js.map +1 -0
- package/api/features/AiImageEnrichment/feature.d.ts +4 -0
- package/api/features/AiImageEnrichment/feature.js +13 -0
- package/api/features/AiImageEnrichment/feature.js.map +1 -0
- package/api/features/AiPromptContext/AiPromptContextBuilder.d.ts +19 -0
- package/api/features/AiPromptContext/AiPromptContextBuilder.js +147 -0
- package/api/features/AiPromptContext/AiPromptContextBuilder.js.map +1 -0
- package/api/features/AiPromptContext/ProjectFileAssembler.d.ts +22 -0
- package/api/features/AiPromptContext/ProjectFileAssembler.js +76 -0
- package/api/features/AiPromptContext/ProjectFileAssembler.js.map +1 -0
- package/api/features/AiPromptContext/ProjectFileCache.d.ts +16 -0
- package/api/features/AiPromptContext/ProjectFileCache.js +61 -0
- package/api/features/AiPromptContext/ProjectFileCache.js.map +1 -0
- package/api/features/AiPromptContext/ProjectSection.d.ts +4 -0
- package/api/features/AiPromptContext/ProjectSection.js +35 -0
- package/api/features/AiPromptContext/ProjectSection.js.map +1 -0
- package/api/features/AiPromptContext/ReadProjectFileTool.d.ts +3 -0
- package/api/features/AiPromptContext/ReadProjectFileTool.js +36 -0
- package/api/features/AiPromptContext/ReadProjectFileTool.js.map +1 -0
- package/api/features/AiPromptContext/ReaderPersonaSection.d.ts +4 -0
- package/api/features/AiPromptContext/ReaderPersonaSection.js +10 -0
- package/api/features/AiPromptContext/ReaderPersonaSection.js.map +1 -0
- package/api/features/AiPromptContext/WriterPersonaSection.d.ts +4 -0
- package/api/features/AiPromptContext/WriterPersonaSection.js +10 -0
- package/api/features/AiPromptContext/WriterPersonaSection.js.map +1 -0
- package/api/features/AiPromptContext/abstractions.d.ts +71 -0
- package/api/features/AiPromptContext/abstractions.js +15 -0
- package/api/features/AiPromptContext/abstractions.js.map +1 -0
- package/api/features/AiPromptContext/feature.d.ts +4 -0
- package/api/features/AiPromptContext/feature.js +15 -0
- package/api/features/AiPromptContext/feature.js.map +1 -0
- package/api/features/AiPromptContext/index.d.ts +1 -0
- package/api/features/AiPromptContext/index.js +1 -0
- package/api/features/CmsCompareEntryRevisions/CmsCompareEntryRevisionsUseCase.d.ts +22 -0
- package/api/features/CmsCompareEntryRevisions/CmsCompareEntryRevisionsUseCase.js +136 -0
- package/api/features/CmsCompareEntryRevisions/CmsCompareEntryRevisionsUseCase.js.map +1 -0
- package/api/features/CmsCompareEntryRevisions/abstractions.d.ts +18 -0
- package/api/features/CmsCompareEntryRevisions/abstractions.js +5 -0
- package/api/features/CmsCompareEntryRevisions/abstractions.js.map +1 -0
- package/api/features/CmsCompareEntryRevisions/feature.d.ts +4 -0
- package/api/features/CmsCompareEntryRevisions/feature.js +11 -0
- package/api/features/CmsCompareEntryRevisions/feature.js.map +1 -0
- package/api/features/CmsCompareEntryRevisions/index.d.ts +2 -0
- package/api/features/CmsCompareEntryRevisions/index.js +2 -0
- package/api/features/CmsGenerateEntryContent/CmsGenerateEntryContentTask.d.ts +33 -0
- package/api/features/CmsGenerateEntryContent/CmsGenerateEntryContentTask.js +84 -0
- package/api/features/CmsGenerateEntryContent/CmsGenerateEntryContentTask.js.map +1 -0
- package/api/features/CmsGenerateEntryContent/CmsGenerateEntryContentUseCase.d.ts +29 -0
- package/api/features/CmsGenerateEntryContent/CmsGenerateEntryContentUseCase.js +141 -0
- package/api/features/CmsGenerateEntryContent/CmsGenerateEntryContentUseCase.js.map +1 -0
- package/api/features/CmsGenerateEntryContent/abstractions.d.ts +36 -0
- package/api/features/CmsGenerateEntryContent/abstractions.js +5 -0
- package/api/features/CmsGenerateEntryContent/abstractions.js.map +1 -0
- package/api/features/CmsGenerateEntryContent/buildPrompt.d.ts +2 -0
- package/api/features/CmsGenerateEntryContent/buildPrompt.js +61 -0
- package/api/features/CmsGenerateEntryContent/buildPrompt.js.map +1 -0
- package/api/features/CmsGenerateEntryContent/feature.d.ts +4 -0
- package/api/features/CmsGenerateEntryContent/feature.js +13 -0
- package/api/features/CmsGenerateEntryContent/feature.js.map +1 -0
- package/api/features/CmsGenerateEntryContent/index.d.ts +1 -0
- package/api/features/CmsGenerateEntryContent/index.js +1 -0
- package/api/features/CmsGenerateEntryContent/injectDynamicZoneTypenames.d.ts +2 -0
- package/api/features/CmsGenerateEntryContent/injectDynamicZoneTypenames.js +30 -0
- package/api/features/CmsGenerateEntryContent/injectDynamicZoneTypenames.js.map +1 -0
- package/api/features/CmsResolveImageTool/CmsResolveImageTool.d.ts +14 -0
- package/api/features/CmsResolveImageTool/CmsResolveImageTool.js +27 -0
- package/api/features/CmsResolveImageTool/CmsResolveImageTool.js.map +1 -0
- package/api/features/CmsResolveImageTool/feature.d.ts +4 -0
- package/api/features/CmsResolveImageTool/feature.js +11 -0
- package/api/features/CmsResolveImageTool/feature.js.map +1 -0
- package/api/features/ExtractFrontmatter/ExtractFrontmatterBeforeCreateHandler.d.ts +11 -0
- package/api/features/ExtractFrontmatter/ExtractFrontmatterBeforeCreateHandler.js +34 -0
- package/api/features/ExtractFrontmatter/ExtractFrontmatterBeforeCreateHandler.js.map +1 -0
- package/api/features/ExtractFrontmatter/feature.d.ts +4 -0
- package/api/features/ExtractFrontmatter/feature.js +11 -0
- package/api/features/ExtractFrontmatter/feature.js.map +1 -0
- package/api/features/GetSettings/GetSettingsRepository.d.ts +16 -0
- package/api/features/GetSettings/GetSettingsRepository.js +40 -0
- package/api/features/GetSettings/GetSettingsRepository.js.map +1 -0
- package/api/features/GetSettings/GetSettingsUseCase.d.ts +10 -0
- package/api/features/GetSettings/GetSettingsUseCase.js +18 -0
- package/api/features/GetSettings/GetSettingsUseCase.js.map +1 -0
- package/api/features/GetSettings/abstractions.d.ts +16 -0
- package/api/features/GetSettings/abstractions.js +6 -0
- package/api/features/GetSettings/abstractions.js.map +1 -0
- package/api/features/GetSettings/feature.d.ts +4 -0
- package/api/features/GetSettings/feature.js +13 -0
- package/api/features/GetSettings/feature.js.map +1 -0
- package/api/features/GetSettings/index.d.ts +2 -0
- package/api/features/GetSettings/index.js +2 -0
- package/api/features/Projects/ProjectsHandler.d.ts +31 -0
- package/api/features/Projects/ProjectsHandler.js +103 -0
- package/api/features/Projects/ProjectsHandler.js.map +1 -0
- package/api/features/Projects/feature.d.ts +4 -0
- package/api/features/Projects/feature.js +11 -0
- package/api/features/Projects/feature.js.map +1 -0
- package/api/features/Projects/types.d.ts +50 -0
- package/api/features/Projects/types.js +0 -0
- package/api/features/Providers/ProvidersGraphQLMapper.d.ts +21 -0
- package/api/features/Providers/ProvidersGraphQLMapper.js +39 -0
- package/api/features/Providers/ProvidersGraphQLMapper.js.map +1 -0
- package/api/features/Providers/ProvidersHandler.d.ts +26 -0
- package/api/features/Providers/ProvidersHandler.js +79 -0
- package/api/features/Providers/ProvidersHandler.js.map +1 -0
- package/api/features/Providers/feature.d.ts +4 -0
- package/api/features/Providers/feature.js +13 -0
- package/api/features/Providers/feature.js.map +1 -0
- package/api/features/Providers/index.d.ts +1 -0
- package/api/features/Providers/index.js +0 -0
- package/api/features/Providers/types.d.ts +29 -0
- package/api/features/Providers/types.js +0 -0
- package/api/features/ReaderPersonas/ReaderPersonasHandler.d.ts +20 -0
- package/api/features/ReaderPersonas/ReaderPersonasHandler.js +43 -0
- package/api/features/ReaderPersonas/ReaderPersonasHandler.js.map +1 -0
- package/api/features/ReaderPersonas/feature.d.ts +4 -0
- package/api/features/ReaderPersonas/feature.js +11 -0
- package/api/features/ReaderPersonas/feature.js.map +1 -0
- package/api/features/ReaderPersonas/index.d.ts +2 -0
- package/api/features/ReaderPersonas/index.js +1 -0
- package/api/features/ReaderPersonas/types.d.ts +24 -0
- package/api/features/ReaderPersonas/types.js +0 -0
- package/api/features/UpdateSettings/UpdateSettingsRepository.d.ts +16 -0
- package/api/features/UpdateSettings/UpdateSettingsRepository.js +71 -0
- package/api/features/UpdateSettings/UpdateSettingsRepository.js.map +1 -0
- package/api/features/UpdateSettings/UpdateSettingsUseCase.d.ts +13 -0
- package/api/features/UpdateSettings/UpdateSettingsUseCase.js +30 -0
- package/api/features/UpdateSettings/UpdateSettingsUseCase.js.map +1 -0
- package/api/features/UpdateSettings/abstractions.d.ts +36 -0
- package/api/features/UpdateSettings/abstractions.js +8 -0
- package/api/features/UpdateSettings/abstractions.js.map +1 -0
- package/api/features/UpdateSettings/errors.d.ts +10 -0
- package/api/features/UpdateSettings/errors.js +14 -0
- package/api/features/UpdateSettings/errors.js.map +1 -0
- package/api/features/UpdateSettings/events.d.ts +10 -0
- package/api/features/UpdateSettings/events.js +21 -0
- package/api/features/UpdateSettings/events.js.map +1 -0
- package/api/features/UpdateSettings/feature.d.ts +4 -0
- package/api/features/UpdateSettings/feature.js +13 -0
- package/api/features/UpdateSettings/feature.js.map +1 -0
- package/api/features/UpdateSettings/index.d.ts +1 -0
- package/api/features/UpdateSettings/index.js +1 -0
- package/api/features/WbGeneratePageContent/ComponentFilter.d.ts +18 -0
- package/api/features/WbGeneratePageContent/ComponentFilter.js +69 -0
- package/api/features/WbGeneratePageContent/ComponentFilter.js.map +1 -0
- package/api/features/WbGeneratePageContent/LlmJsonResponse.d.ts +7 -0
- package/api/features/WbGeneratePageContent/LlmJsonResponse.js +35 -0
- package/api/features/WbGeneratePageContent/LlmJsonResponse.js.map +1 -0
- package/api/features/WbGeneratePageContent/WbGeneratePageContentTask.d.ts +34 -0
- package/api/features/WbGeneratePageContent/WbGeneratePageContentTask.js +85 -0
- package/api/features/WbGeneratePageContent/WbGeneratePageContentTask.js.map +1 -0
- package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.d.ts +23 -0
- package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.js +121 -0
- package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.js.map +1 -0
- package/api/features/WbGeneratePageContent/abstractions.d.ts +31 -0
- package/api/features/WbGeneratePageContent/abstractions.js +5 -0
- package/api/features/WbGeneratePageContent/abstractions.js.map +1 -0
- package/api/features/WbGeneratePageContent/buildPrompt.d.ts +3 -0
- package/api/features/WbGeneratePageContent/buildPrompt.js +158 -0
- package/api/features/WbGeneratePageContent/buildPrompt.js.map +1 -0
- package/api/features/WbGeneratePageContent/feature.d.ts +4 -0
- package/api/features/WbGeneratePageContent/feature.js +13 -0
- package/api/features/WbGeneratePageContent/feature.js.map +1 -0
- package/api/features/WbGeneratePageContent/index.d.ts +1 -0
- package/api/features/WbGeneratePageContent/index.js +1 -0
- package/api/features/WbTranslatePage/LexicalParser.d.ts +10 -0
- package/api/features/WbTranslatePage/LexicalParser.js +37 -0
- package/api/features/WbTranslatePage/LexicalParser.js.map +1 -0
- package/api/features/WbTranslatePage/WbTranslatePageDecorator.d.ts +27 -0
- package/api/features/WbTranslatePage/WbTranslatePageDecorator.js +134 -0
- package/api/features/WbTranslatePage/WbTranslatePageDecorator.js.map +1 -0
- package/api/features/WbTranslatePage/abstractions/LexicalParser.d.ts +7 -0
- package/api/features/WbTranslatePage/abstractions/LexicalParser.js +5 -0
- package/api/features/WbTranslatePage/abstractions/LexicalParser.js.map +1 -0
- package/api/features/WbTranslatePage/feature.d.ts +4 -0
- package/api/features/WbTranslatePage/feature.js +13 -0
- package/api/features/WbTranslatePage/feature.js.map +1 -0
- package/api/features/WbTranslatePage/index.d.ts +2 -0
- package/api/features/WbTranslatePage/index.js +2 -0
- package/api/features/WriterPersonas/WriterPersonasHandler.d.ts +20 -0
- package/api/features/WriterPersonas/WriterPersonasHandler.js +43 -0
- package/api/features/WriterPersonas/WriterPersonasHandler.js.map +1 -0
- package/api/features/WriterPersonas/feature.d.ts +4 -0
- package/api/features/WriterPersonas/feature.js +11 -0
- package/api/features/WriterPersonas/feature.js.map +1 -0
- package/api/features/WriterPersonas/index.d.ts +2 -0
- package/api/features/WriterPersonas/index.js +1 -0
- package/api/features/WriterPersonas/types.d.ts +24 -0
- package/api/features/WriterPersonas/types.js +0 -0
- package/api/features/shared/SettingsCache.d.ts +12 -0
- package/api/features/shared/SettingsCache.js +22 -0
- package/api/features/shared/SettingsCache.js.map +1 -0
- package/api/features/shared/abstractions.d.ts +33 -0
- package/api/features/shared/abstractions.js +7 -0
- package/api/features/shared/abstractions.js.map +1 -0
- package/api/features/shared/index.d.ts +3 -0
- package/api/features/shared/index.js +1 -0
- package/api/graphql/AiPowerUpsSettingsGraphQLMapper.d.ts +13 -0
- package/api/graphql/AiPowerUpsSettingsGraphQLMapper.js +44 -0
- package/api/graphql/AiPowerUpsSettingsGraphQLMapper.js.map +1 -0
- package/api/graphql/BaseGraphQLSchema.d.ts +8 -0
- package/api/graphql/BaseGraphQLSchema.js +172 -0
- package/api/graphql/BaseGraphQLSchema.js.map +1 -0
- package/api/graphql/CmsCompareEntryRevisionsSchema.d.ts +8 -0
- package/api/graphql/CmsCompareEntryRevisionsSchema.js +68 -0
- package/api/graphql/CmsCompareEntryRevisionsSchema.js.map +1 -0
- package/api/graphql/abstractions.d.ts +9 -0
- package/api/graphql/abstractions.js +5 -0
- package/api/graphql/abstractions.js.map +1 -0
- package/api/types.d.ts +5 -0
- package/api/types.js +3 -0
- package/exports/admin/ai-powerups.d.ts +1 -0
- package/exports/admin/ai-powerups.js +1 -0
- package/exports/api/ai-powerups.d.ts +2 -0
- package/exports/api/ai-powerups.js +2 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/package.json +65 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/AiPromptContext/ProjectSection.js","sources":["../../../../src/api/features/AiPromptContext/ProjectSection.ts"],"sourcesContent":["import type { ResolvedProject } from \"./abstractions.js\";\n\nexport class ProjectSection {\n static format(project: ResolvedProject): string {\n const hasInstructions = !!project.instructions;\n const hasFiles = project.files.length > 0;\n\n if (!hasInstructions && !hasFiles) {\n return \"\";\n }\n\n const parts: string[] = [`## Project: ${project.name}`];\n\n if (hasInstructions) {\n parts.push(project.instructions!);\n }\n\n if (hasFiles) {\n parts.push(\n [\n \"### Available reference files\",\n \"\",\n `You have access to ${project.files.length} reference files for this project. Use the`,\n \"`read_project_file` tool to read any file when its contents are relevant\",\n \"to the user's request. Read files only when needed — do not read all files\",\n \"preemptively.\",\n \"\",\n \"Files:\",\n \"\",\n ...project.files.map(file => {\n const lines = [\n `- id: \"${file.id}\"`,\n ` name: \"${file.name}\"`,\n ` description: \"${file.description || \"(no description)\"}\"`,\n ` tokens: ~${file.tokenCount}`\n ];\n return lines.join(\"\\n\");\n })\n ].join(\"\\n\")\n );\n }\n\n return parts.join(\"\\n\\n\");\n }\n}\n"],"names":["ProjectSection","project","hasInstructions","hasFiles","parts","file","lines"],"mappings":"AAEO,MAAMA;IACT,OAAO,OAAOC,OAAwB,EAAU;QAC5C,MAAMC,kBAAkB,CAAC,CAACD,QAAQ,YAAY;QAC9C,MAAME,WAAWF,QAAQ,KAAK,CAAC,MAAM,GAAG;QAExC,IAAI,CAACC,mBAAmB,CAACC,UACrB,OAAO;QAGX,MAAMC,QAAkB;YAAC,CAAC,YAAY,EAAEH,QAAQ,IAAI,EAAE;SAAC;QAEvD,IAAIC,iBACAE,MAAM,IAAI,CAACH,QAAQ,YAAY;QAGnC,IAAIE,UACAC,MAAM,IAAI,CACN;YACI;YACA;YACA,CAAC,mBAAmB,EAAEH,QAAQ,KAAK,CAAC,MAAM,CAAC,0CAA0C,CAAC;YACtF;YACA;YACA;YACA;YACA;YACA;eACGA,QAAQ,KAAK,CAAC,GAAG,CAACI,CAAAA;gBACjB,MAAMC,QAAQ;oBACV,CAAC,OAAO,EAAED,KAAK,EAAE,CAAC,CAAC,CAAC;oBACpB,CAAC,SAAS,EAAEA,KAAK,IAAI,CAAC,CAAC,CAAC;oBACxB,CAAC,gBAAgB,EAAEA,KAAK,WAAW,IAAI,mBAAmB,CAAC,CAAC;oBAC5D,CAAC,WAAW,EAAEA,KAAK,UAAU,EAAE;iBAClC;gBACD,OAAOC,MAAM,IAAI,CAAC;YACtB;SACH,CAAC,IAAI,CAAC;QAIf,OAAOF,MAAM,IAAI,CAAC;IACtB;AACJ"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
const inputSchema = z.object({
|
|
3
|
+
fileId: z.string().describe("The id of the file from the project manifest.")
|
|
4
|
+
});
|
|
5
|
+
function createReadProjectFileTool(files, excludedFileIds) {
|
|
6
|
+
const fileMap = new Map(files.map((f)=>[
|
|
7
|
+
f.id,
|
|
8
|
+
f
|
|
9
|
+
]));
|
|
10
|
+
return {
|
|
11
|
+
read_project_file: {
|
|
12
|
+
description: "Read the full contents of a project reference file by its id. Use this when a file from the manifest contains information relevant to the user's request.",
|
|
13
|
+
inputSchema: inputSchema,
|
|
14
|
+
execute: async (input)=>{
|
|
15
|
+
const { fileId } = input;
|
|
16
|
+
if (excludedFileIds.has(fileId)) return {
|
|
17
|
+
error: "File excluded for this generation."
|
|
18
|
+
};
|
|
19
|
+
const file = fileMap.get(fileId);
|
|
20
|
+
if (!file) {
|
|
21
|
+
const availableIds = files.map((f)=>f.id).join(", ");
|
|
22
|
+
return {
|
|
23
|
+
error: `File not found. Available ids: ${availableIds}`
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
content: file.content,
|
|
28
|
+
name: file.name
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export { createReadProjectFileTool };
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=ReadProjectFileTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/AiPromptContext/ReadProjectFileTool.js","sources":["../../../../src/api/features/AiPromptContext/ReadProjectFileTool.ts"],"sourcesContent":["import { z } from \"zod\";\nimport type { ToolSet } from \"ai\";\nimport type { ProjectFileContent } from \"./abstractions.js\";\n\nconst inputSchema = z.object({\n fileId: z.string().describe(\"The id of the file from the project manifest.\")\n});\n\nexport function createReadProjectFileTool(\n files: ProjectFileContent[],\n excludedFileIds: Set<string>\n): ToolSet {\n const fileMap = new Map(files.map(f => [f.id, f]));\n\n return {\n read_project_file: {\n description:\n \"Read the full contents of a project reference file by its id. \" +\n \"Use this when a file from the manifest contains information relevant to the user's request.\",\n inputSchema,\n execute: async (input: unknown) => {\n const { fileId } = input as z.infer<typeof inputSchema>;\n\n if (excludedFileIds.has(fileId)) {\n return { error: \"File excluded for this generation.\" };\n }\n\n const file = fileMap.get(fileId);\n if (!file) {\n const availableIds = files.map(f => f.id).join(\", \");\n return {\n error: `File not found. Available ids: ${availableIds}`\n };\n }\n\n return {\n content: file.content,\n name: file.name\n };\n }\n }\n };\n}\n"],"names":["inputSchema","z","createReadProjectFileTool","files","excludedFileIds","fileMap","Map","f","input","fileId","file","availableIds"],"mappings":";AAIA,MAAMA,cAAcC,EAAE,MAAM,CAAC;IACzB,QAAQA,EAAE,MAAM,GAAG,QAAQ,CAAC;AAChC;AAEO,SAASC,0BACZC,KAA2B,EAC3BC,eAA4B;IAE5B,MAAMC,UAAU,IAAIC,IAAIH,MAAM,GAAG,CAACI,CAAAA,IAAK;YAACA,EAAE,EAAE;YAAEA;SAAE;IAEhD,OAAO;QACH,mBAAmB;YACf,aACI;YAEJP,aAAAA;YACA,SAAS,OAAOQ;gBACZ,MAAM,EAAEC,MAAM,EAAE,GAAGD;gBAEnB,IAAIJ,gBAAgB,GAAG,CAACK,SACpB,OAAO;oBAAE,OAAO;gBAAqC;gBAGzD,MAAMC,OAAOL,QAAQ,GAAG,CAACI;gBACzB,IAAI,CAACC,MAAM;oBACP,MAAMC,eAAeR,MAAM,GAAG,CAACI,CAAAA,IAAKA,EAAE,EAAE,EAAE,IAAI,CAAC;oBAC/C,OAAO;wBACH,OAAO,CAAC,+BAA+B,EAAEI,cAAc;oBAC3D;gBACJ;gBAEA,OAAO;oBACH,SAASD,KAAK,OAAO;oBACrB,MAAMA,KAAK,IAAI;gBACnB;YACJ;QACJ;IACJ;AACJ"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
class ReaderPersonaSection {
|
|
2
|
+
static format(persona) {
|
|
3
|
+
let section = `### Reader Persona (Target Audience)\n\nYou are writing for "${persona.name}": ${persona.description}`;
|
|
4
|
+
if (persona.style) section += `\nExpected tone/style: ${persona.style}`;
|
|
5
|
+
return section;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
export { ReaderPersonaSection };
|
|
9
|
+
|
|
10
|
+
//# sourceMappingURL=ReaderPersonaSection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/AiPromptContext/ReaderPersonaSection.js","sources":["../../../../src/api/features/AiPromptContext/ReaderPersonaSection.ts"],"sourcesContent":["import type { ResolvedPersona } from \"./abstractions.js\";\n\nexport class ReaderPersonaSection {\n static format(persona: ResolvedPersona): string {\n let section = `### Reader Persona (Target Audience)\\n\\nYou are writing for \"${persona.name}\": ${persona.description}`;\n\n if (persona.style) {\n section += `\\nExpected tone/style: ${persona.style}`;\n }\n\n return section;\n }\n}\n"],"names":["ReaderPersonaSection","persona","section"],"mappings":"AAEO,MAAMA;IACT,OAAO,OAAOC,OAAwB,EAAU;QAC5C,IAAIC,UAAU,CAAC,6DAA6D,EAAED,QAAQ,IAAI,CAAC,GAAG,EAAEA,QAAQ,WAAW,EAAE;QAErH,IAAIA,QAAQ,KAAK,EACbC,WAAW,CAAC,uBAAuB,EAAED,QAAQ,KAAK,EAAE;QAGxD,OAAOC;IACX;AACJ"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
class WriterPersonaSection {
|
|
2
|
+
static format(persona) {
|
|
3
|
+
let section = `### Writer Persona\n\nYou are writing as "${persona.name}": ${persona.description}`;
|
|
4
|
+
if (persona.style) section += `\nStyle: ${persona.style}`;
|
|
5
|
+
return section;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
export { WriterPersonaSection };
|
|
9
|
+
|
|
10
|
+
//# sourceMappingURL=WriterPersonaSection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/AiPromptContext/WriterPersonaSection.js","sources":["../../../../src/api/features/AiPromptContext/WriterPersonaSection.ts"],"sourcesContent":["import type { ResolvedPersona } from \"./abstractions.js\";\n\nexport class WriterPersonaSection {\n static format(persona: ResolvedPersona): string {\n let section = `### Writer Persona\\n\\nYou are writing as \"${persona.name}\": ${persona.description}`;\n\n if (persona.style) {\n section += `\\nStyle: ${persona.style}`;\n }\n\n return section;\n }\n}\n"],"names":["WriterPersonaSection","persona","section"],"mappings":"AAEO,MAAMA;IACT,OAAO,OAAOC,OAAwB,EAAU;QAC5C,IAAIC,UAAU,CAAC,0CAA0C,EAAED,QAAQ,IAAI,CAAC,GAAG,EAAEA,QAAQ,WAAW,EAAE;QAElG,IAAIA,QAAQ,KAAK,EACbC,WAAW,CAAC,SAAS,EAAED,QAAQ,KAAK,EAAE;QAG1C,OAAOC;IACX;AACJ"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
export interface IProjectFileCache {
|
|
2
|
+
get(projectId: string, version: number): Promise<{
|
|
3
|
+
files: ProjectFileContent[];
|
|
4
|
+
hit: boolean;
|
|
5
|
+
}>;
|
|
6
|
+
set(projectId: string, version: number, files: ProjectFileContent[]): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
export declare const ProjectFileCache: import("@webiny/di").Abstraction<IProjectFileCache>;
|
|
9
|
+
export declare namespace ProjectFileCache {
|
|
10
|
+
type Interface = IProjectFileCache;
|
|
11
|
+
}
|
|
12
|
+
export interface IProjectFileAssembler {
|
|
13
|
+
execute(projectId: string, version: number, files: Array<{
|
|
14
|
+
id: string;
|
|
15
|
+
name: string;
|
|
16
|
+
mimeType: string;
|
|
17
|
+
}>, warnings: string[]): Promise<{
|
|
18
|
+
files: ProjectFileContent[];
|
|
19
|
+
cacheHit: boolean;
|
|
20
|
+
}>;
|
|
21
|
+
}
|
|
22
|
+
export declare const ProjectFileAssembler: import("@webiny/di").Abstraction<IProjectFileAssembler>;
|
|
23
|
+
export declare namespace ProjectFileAssembler {
|
|
24
|
+
type Interface = IProjectFileAssembler;
|
|
25
|
+
}
|
|
26
|
+
export interface AiPromptContextParams {
|
|
27
|
+
projectId?: string | null;
|
|
28
|
+
readerPersonaId?: string | null;
|
|
29
|
+
writerPersonaId?: string | null;
|
|
30
|
+
excludedFileIds?: string[] | null;
|
|
31
|
+
additionalFileIds?: string[] | null;
|
|
32
|
+
}
|
|
33
|
+
export interface ProjectFileContent {
|
|
34
|
+
id: string;
|
|
35
|
+
name: string;
|
|
36
|
+
content: string;
|
|
37
|
+
description?: string;
|
|
38
|
+
tokenCount: number;
|
|
39
|
+
}
|
|
40
|
+
export interface ResolvedProject {
|
|
41
|
+
name: string;
|
|
42
|
+
instructions?: string;
|
|
43
|
+
files: ProjectFileContent[];
|
|
44
|
+
totalTokens: number;
|
|
45
|
+
}
|
|
46
|
+
export interface ResolvedPersona {
|
|
47
|
+
name: string;
|
|
48
|
+
description: string;
|
|
49
|
+
style?: string;
|
|
50
|
+
}
|
|
51
|
+
export interface AiPromptContext {
|
|
52
|
+
project?: ResolvedProject;
|
|
53
|
+
readerPersona?: ResolvedPersona;
|
|
54
|
+
writerPersona?: ResolvedPersona;
|
|
55
|
+
allProjectFiles: ProjectFileContent[];
|
|
56
|
+
additionalFiles: ProjectFileContent[];
|
|
57
|
+
excludedFileIds: Set<string>;
|
|
58
|
+
cacheHit: boolean;
|
|
59
|
+
warnings: string[];
|
|
60
|
+
toString(): string;
|
|
61
|
+
}
|
|
62
|
+
export interface IAiPromptContextBuilder {
|
|
63
|
+
execute(params: AiPromptContextParams): Promise<AiPromptContext>;
|
|
64
|
+
}
|
|
65
|
+
export declare const AiPromptContextBuilder: import("@webiny/di").Abstraction<IAiPromptContextBuilder>;
|
|
66
|
+
export declare namespace AiPromptContextBuilder {
|
|
67
|
+
type Interface = IAiPromptContextBuilder;
|
|
68
|
+
type Params = AiPromptContextParams;
|
|
69
|
+
type Context = AiPromptContext;
|
|
70
|
+
}
|
|
71
|
+
export declare function formatAdditionalFilesContext(files: ProjectFileContent[]): string;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { createAbstraction } from "@webiny/feature/api";
|
|
2
|
+
const ProjectFileCache = createAbstraction("ProjectFileCache");
|
|
3
|
+
const ProjectFileAssembler = createAbstraction("ProjectFileAssembler");
|
|
4
|
+
const AiPromptContextBuilder = createAbstraction("AiPowerUpsPromptContextBuilder");
|
|
5
|
+
function formatAdditionalFilesContext(files) {
|
|
6
|
+
if (0 === files.length) return "";
|
|
7
|
+
const sections = files.map((f)=>{
|
|
8
|
+
const desc = f.description ? ` description="${f.description}"` : "";
|
|
9
|
+
return `<attached-file name="${f.name}"${desc}>\n${f.content}\n</attached-file>`;
|
|
10
|
+
});
|
|
11
|
+
return `\n\nThe user attached the following files as additional context for this generation:\n\n${sections.join("\n\n")}`;
|
|
12
|
+
}
|
|
13
|
+
export { AiPromptContextBuilder, ProjectFileAssembler, ProjectFileCache, formatAdditionalFilesContext };
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=abstractions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/AiPromptContext/abstractions.js","sources":["../../../../src/api/features/AiPromptContext/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\n\n// ============================================================================\n// ProjectFileCache\n// ============================================================================\n\nexport interface IProjectFileCache {\n get(projectId: string, version: number): Promise<{ files: ProjectFileContent[]; hit: boolean }>;\n set(projectId: string, version: number, files: ProjectFileContent[]): Promise<void>;\n}\n\nexport const ProjectFileCache = createAbstraction<IProjectFileCache>(\"ProjectFileCache\");\n\nexport namespace ProjectFileCache {\n export type Interface = IProjectFileCache;\n}\n\n// ============================================================================\n// ProjectFileAssembler\n// ============================================================================\n\nexport interface IProjectFileAssembler {\n execute(\n projectId: string,\n version: number,\n files: Array<{ id: string; name: string; mimeType: string }>,\n warnings: string[]\n ): Promise<{ files: ProjectFileContent[]; cacheHit: boolean }>;\n}\n\nexport const ProjectFileAssembler =\n createAbstraction<IProjectFileAssembler>(\"ProjectFileAssembler\");\n\nexport namespace ProjectFileAssembler {\n export type Interface = IProjectFileAssembler;\n}\n\n// ============================================================================\n// AiPromptContext\n// ============================================================================\n\nexport interface AiPromptContextParams {\n projectId?: string | null;\n readerPersonaId?: string | null;\n writerPersonaId?: string | null;\n excludedFileIds?: string[] | null;\n additionalFileIds?: string[] | null;\n}\n\nexport interface ProjectFileContent {\n id: string;\n name: string;\n content: string;\n description?: string;\n tokenCount: number;\n}\n\nexport interface ResolvedProject {\n name: string;\n instructions?: string;\n files: ProjectFileContent[];\n totalTokens: number;\n}\n\nexport interface ResolvedPersona {\n name: string;\n description: string;\n style?: string;\n}\n\nexport interface AiPromptContext {\n project?: ResolvedProject;\n readerPersona?: ResolvedPersona;\n writerPersona?: ResolvedPersona;\n allProjectFiles: ProjectFileContent[];\n additionalFiles: ProjectFileContent[];\n excludedFileIds: Set<string>;\n cacheHit: boolean;\n warnings: string[];\n toString(): string;\n}\n\nexport interface IAiPromptContextBuilder {\n execute(params: AiPromptContextParams): Promise<AiPromptContext>;\n}\n\nexport const AiPromptContextBuilder = createAbstraction<IAiPromptContextBuilder>(\n \"AiPowerUpsPromptContextBuilder\"\n);\n\nexport namespace AiPromptContextBuilder {\n export type Interface = IAiPromptContextBuilder;\n export type Params = AiPromptContextParams;\n export type Context = AiPromptContext;\n}\n\nexport function formatAdditionalFilesContext(files: ProjectFileContent[]): string {\n if (files.length === 0) {\n return \"\";\n }\n const sections = files.map(f => {\n const desc = f.description ? ` description=\"${f.description}\"` : \"\";\n return `<attached-file name=\"${f.name}\"${desc}>\\n${f.content}\\n</attached-file>`;\n });\n return `\\n\\nThe user attached the following files as additional context for this generation:\\n\\n${sections.join(\"\\n\\n\")}`;\n}\n"],"names":["ProjectFileCache","createAbstraction","ProjectFileAssembler","AiPromptContextBuilder","formatAdditionalFilesContext","files","sections","f","desc"],"mappings":";AAWO,MAAMA,mBAAmBC,kBAAqC;AAmB9D,MAAMC,uBACTD,kBAAyC;AAuDtC,MAAME,yBAAyBF,kBAClC;AASG,SAASG,6BAA6BC,KAA2B;IACpE,IAAIA,AAAiB,MAAjBA,MAAM,MAAM,EACZ,OAAO;IAEX,MAAMC,WAAWD,MAAM,GAAG,CAACE,CAAAA;QACvB,MAAMC,OAAOD,EAAE,WAAW,GAAG,CAAC,cAAc,EAAEA,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG;QACjE,OAAO,CAAC,qBAAqB,EAAEA,EAAE,IAAI,CAAC,CAAC,EAAEC,KAAK,GAAG,EAAED,EAAE,OAAO,CAAC,kBAAkB,CAAC;IACpF;IACA,OAAO,CAAC,wFAAwF,EAAED,SAAS,IAAI,CAAC,SAAS;AAC7H"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { ProjectFileCache } from "./ProjectFileCache.js";
|
|
3
|
+
import { ProjectFileAssembler } from "./ProjectFileAssembler.js";
|
|
4
|
+
import { AiPromptContextBuilder } from "./AiPromptContextBuilder.js";
|
|
5
|
+
const AiPromptContextFeature = createFeature({
|
|
6
|
+
name: "AiPowerUps/AiPromptContext",
|
|
7
|
+
register (container) {
|
|
8
|
+
container.register(ProjectFileCache);
|
|
9
|
+
container.register(ProjectFileAssembler);
|
|
10
|
+
container.register(AiPromptContextBuilder);
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
export { AiPromptContextFeature };
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/AiPromptContext/feature.js","sources":["../../../../src/api/features/AiPromptContext/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { ProjectFileCache } from \"./ProjectFileCache.js\";\nimport { ProjectFileAssembler } from \"./ProjectFileAssembler.js\";\nimport { AiPromptContextBuilder } from \"./AiPromptContextBuilder.js\";\n\nexport const AiPromptContextFeature = createFeature({\n name: \"AiPowerUps/AiPromptContext\",\n register(container) {\n container.register(ProjectFileCache);\n container.register(ProjectFileAssembler);\n container.register(AiPromptContextBuilder);\n }\n});\n"],"names":["AiPromptContextFeature","createFeature","container","ProjectFileCache","ProjectFileAssembler","AiPromptContextBuilder"],"mappings":";;;;AAKO,MAAMA,yBAAyBC,cAAc;IAChD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;QACnBD,UAAU,QAAQ,CAACE;QACnBF,UAAU,QAAQ,CAACG;IACvB;AACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { AiPromptContextBuilder, formatAdditionalFilesContext, type ResolvedProject, type ResolvedPersona, type ProjectFileContent } from "./abstractions.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { AiPromptContextBuilder, formatAdditionalFilesContext } from "./abstractions.js";
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Ai } from "@webiny/api-core/features/ai/index.js";
|
|
2
|
+
import { Encryption } from "@webiny/api-core/features/encryption/index.js";
|
|
3
|
+
import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
|
|
4
|
+
import { ModelToAstConverter } from "@webiny/api-headless-cms/features/contentModel/ModelToAstConverter/index.js";
|
|
5
|
+
import { GetRevisionByIdUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetRevisionById/index.js";
|
|
6
|
+
import { GetSettingsUseCase } from "../../../api/features/GetSettings/index.js";
|
|
7
|
+
import { CmsCompareEntryRevisionsUseCase } from "./abstractions.js";
|
|
8
|
+
import type { ICmsCompareEntryRevisionsParams, ICmsCompareEntryRevisionsResult } from "./abstractions.js";
|
|
9
|
+
declare class CmsCompareEntryRevisionsUseCaseImpl implements CmsCompareEntryRevisionsUseCase.Interface {
|
|
10
|
+
private getSettings;
|
|
11
|
+
private ai;
|
|
12
|
+
private encryption;
|
|
13
|
+
private getModel;
|
|
14
|
+
private getRevisionById;
|
|
15
|
+
private modelToAst;
|
|
16
|
+
constructor(getSettings: GetSettingsUseCase.Interface, ai: Ai.Interface, encryption: Encryption.Interface, getModel: GetModelUseCase.Interface, getRevisionById: GetRevisionByIdUseCase.Interface, modelToAst: ModelToAstConverter.Interface);
|
|
17
|
+
execute(params: ICmsCompareEntryRevisionsParams): Promise<ICmsCompareEntryRevisionsResult>;
|
|
18
|
+
}
|
|
19
|
+
export declare const CmsCompareEntryRevisionsUseCaseImplementation: typeof CmsCompareEntryRevisionsUseCaseImpl & {
|
|
20
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").ICmsCompareEntryRevisionsUseCase>;
|
|
21
|
+
};
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { Ai } from "@webiny/api-core/features/ai/index.js";
|
|
2
|
+
import { Encryption } from "@webiny/api-core/features/encryption/index.js";
|
|
3
|
+
import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
|
|
4
|
+
import { ModelToAstConverter } from "@webiny/api-headless-cms/features/contentModel/ModelToAstConverter/index.js";
|
|
5
|
+
import { CmsModelToJsonSchemaConverter } from "@webiny/api-headless-cms/utils/contentModelToJsonSchema/index.js";
|
|
6
|
+
import { GetRevisionByIdUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetRevisionById/index.js";
|
|
7
|
+
import { GetSettingsUseCase } from "../GetSettings/index.js";
|
|
8
|
+
import { CmsCompareEntryRevisionsUseCase } from "./abstractions.js";
|
|
9
|
+
const SYSTEM_PROMPT = `You are a content intelligence assistant specialized in version comparison for headless CMS platforms.
|
|
10
|
+
|
|
11
|
+
I will provide:
|
|
12
|
+
|
|
13
|
+
1. The content model JSON Schema that defines the structure of the entry.
|
|
14
|
+
2. Two versions of the content entry values in JSON format: Version A and Version B.
|
|
15
|
+
|
|
16
|
+
Your task:
|
|
17
|
+
|
|
18
|
+
- Parse both versions according to the JSON Schema.
|
|
19
|
+
- Identify all differences between Version A and Version B.
|
|
20
|
+
- For each difference, explain:
|
|
21
|
+
- The field name (use the human-readable label from the schema description if available)
|
|
22
|
+
- The value in Version A
|
|
23
|
+
- The value in Version B
|
|
24
|
+
- A brief summary of the change (e.g., "Title changed from 'Old' to 'New'")
|
|
25
|
+
- If nested fields or objects exist, perform a deep comparison.
|
|
26
|
+
- Return the comparison in clean HTML format.
|
|
27
|
+
|
|
28
|
+
Output format:
|
|
29
|
+
|
|
30
|
+
<div class="comparison-report">
|
|
31
|
+
<table class="comparison-table">
|
|
32
|
+
<thead>
|
|
33
|
+
<tr>
|
|
34
|
+
<th>Field</th>
|
|
35
|
+
<th>Version A</th>
|
|
36
|
+
<th>Version B</th>
|
|
37
|
+
<th>Change Summary</th>
|
|
38
|
+
</tr>
|
|
39
|
+
</thead>
|
|
40
|
+
<tbody>
|
|
41
|
+
<tr>
|
|
42
|
+
<td><strong>title</strong></td>
|
|
43
|
+
<td>Launch Plan</td>
|
|
44
|
+
<td>Updated Launch Plan</td>
|
|
45
|
+
<td>Title changed from 'Launch Plan' to 'Updated Launch Plan'</td>
|
|
46
|
+
</tr>
|
|
47
|
+
</tbody>
|
|
48
|
+
</table>
|
|
49
|
+
</div>
|
|
50
|
+
|
|
51
|
+
If no differences are found, return: <div class="no-changes"><h3>No differences detected between Version A and Version B.</h3></div>
|
|
52
|
+
|
|
53
|
+
Use semantic HTML with appropriate CSS classes for styling. Do not include <style> tags or CSS — only return the HTML structure.
|
|
54
|
+
For rich text or complex nested values, show a concise summary rather than raw JSON.`;
|
|
55
|
+
class CmsCompareEntryRevisionsUseCaseImpl {
|
|
56
|
+
constructor(getSettings, ai, encryption, getModel, getRevisionById, modelToAst){
|
|
57
|
+
this.getSettings = getSettings;
|
|
58
|
+
this.ai = ai;
|
|
59
|
+
this.encryption = encryption;
|
|
60
|
+
this.getModel = getModel;
|
|
61
|
+
this.getRevisionById = getRevisionById;
|
|
62
|
+
this.modelToAst = modelToAst;
|
|
63
|
+
}
|
|
64
|
+
async execute(params) {
|
|
65
|
+
const { modelId, revisionId1, revisionId2 } = params;
|
|
66
|
+
const settingsResult = await this.getSettings.execute();
|
|
67
|
+
if (settingsResult.isFail()) throw new Error("Failed to load AI Power Ups settings.");
|
|
68
|
+
const settings = settingsResult.value;
|
|
69
|
+
const firstProvider = settings.providers.presets[0];
|
|
70
|
+
if (!firstProvider) throw new Error("No AI provider configured. Add a provider in AI Power Ups settings.");
|
|
71
|
+
const modelResult = await this.getModel.execute(modelId);
|
|
72
|
+
if (modelResult.isFail()) throw new Error(`Content model "${modelId}" not found.`);
|
|
73
|
+
const model = modelResult.value;
|
|
74
|
+
const [rev1Result, rev2Result] = await Promise.all([
|
|
75
|
+
this.getRevisionById.execute(model, revisionId1),
|
|
76
|
+
this.getRevisionById.execute(model, revisionId2)
|
|
77
|
+
]);
|
|
78
|
+
if (rev1Result.isFail()) throw new Error(`Revision "${revisionId1}" not found.`);
|
|
79
|
+
if (rev2Result.isFail()) throw new Error(`Revision "${revisionId2}" not found.`);
|
|
80
|
+
const revision1 = rev1Result.value;
|
|
81
|
+
const revision2 = rev2Result.value;
|
|
82
|
+
const modelAst = this.modelToAst.toAst(model);
|
|
83
|
+
const jsonSchemaConverter = new CmsModelToJsonSchemaConverter();
|
|
84
|
+
const entrySchema = jsonSchemaConverter.convert(modelAst, {
|
|
85
|
+
name: model.name,
|
|
86
|
+
description: model.description
|
|
87
|
+
});
|
|
88
|
+
const apiKey = await this.encryption.decrypt(firstProvider.apiKeyEncrypted);
|
|
89
|
+
const userPrompt = `CONTENT MODEL JSON SCHEMA:
|
|
90
|
+
${JSON.stringify(entrySchema, null, 2)}
|
|
91
|
+
|
|
92
|
+
VERSION A (Revision #${revision1.version}):
|
|
93
|
+
${JSON.stringify(revision1.values, null, 2)}
|
|
94
|
+
|
|
95
|
+
VERSION B (Revision #${revision2.version}):
|
|
96
|
+
${JSON.stringify(revision2.values, null, 2)}`;
|
|
97
|
+
const result = await this.ai.generateText({
|
|
98
|
+
model: firstProvider.model,
|
|
99
|
+
connection: {
|
|
100
|
+
sdkName: firstProvider.model.split("/")[0],
|
|
101
|
+
apiKey
|
|
102
|
+
},
|
|
103
|
+
system: SYSTEM_PROMPT,
|
|
104
|
+
prompt: userPrompt,
|
|
105
|
+
temperature: 0.3
|
|
106
|
+
});
|
|
107
|
+
const text = result.text;
|
|
108
|
+
const noChangesMatch = text.match(/No differences detected/);
|
|
109
|
+
let summary = "Content comparison completed";
|
|
110
|
+
if (noChangesMatch) summary = "No differences detected between versions";
|
|
111
|
+
else {
|
|
112
|
+
const headingMatch = text.match(/<h[2-3][^>]*>([^<]+)<\/h[2-3]>/);
|
|
113
|
+
const trCount = (text.match(/<tr>/g) || []).length - 1;
|
|
114
|
+
if (headingMatch) summary = headingMatch[1].trim();
|
|
115
|
+
else if (trCount > 0) summary = `${trCount} field${1 === trCount ? "" : "s"} changed`;
|
|
116
|
+
}
|
|
117
|
+
return {
|
|
118
|
+
html: text,
|
|
119
|
+
summary
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
const CmsCompareEntryRevisionsUseCaseImplementation = CmsCompareEntryRevisionsUseCase.createImplementation({
|
|
124
|
+
implementation: CmsCompareEntryRevisionsUseCaseImpl,
|
|
125
|
+
dependencies: [
|
|
126
|
+
GetSettingsUseCase,
|
|
127
|
+
Ai,
|
|
128
|
+
Encryption,
|
|
129
|
+
GetModelUseCase,
|
|
130
|
+
GetRevisionByIdUseCase,
|
|
131
|
+
ModelToAstConverter
|
|
132
|
+
]
|
|
133
|
+
});
|
|
134
|
+
export { CmsCompareEntryRevisionsUseCaseImplementation };
|
|
135
|
+
|
|
136
|
+
//# sourceMappingURL=CmsCompareEntryRevisionsUseCase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/CmsCompareEntryRevisions/CmsCompareEntryRevisionsUseCase.js","sources":["../../../../src/api/features/CmsCompareEntryRevisions/CmsCompareEntryRevisionsUseCase.ts"],"sourcesContent":["import { Ai } from \"@webiny/api-core/features/ai/index.js\";\nimport { Encryption } from \"@webiny/api-core/features/encryption/index.js\";\nimport { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel/index.js\";\nimport { ModelToAstConverter } from \"@webiny/api-headless-cms/features/contentModel/ModelToAstConverter/index.js\";\nimport { CmsModelToJsonSchemaConverter } from \"@webiny/api-headless-cms/utils/contentModelToJsonSchema/index.js\";\nimport { GetRevisionByIdUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetRevisionById/index.js\";\nimport { GetSettingsUseCase } from \"~/api/features/GetSettings/index.js\";\nimport { CmsCompareEntryRevisionsUseCase } from \"./abstractions.js\";\nimport type {\n ICmsCompareEntryRevisionsParams,\n ICmsCompareEntryRevisionsResult\n} from \"./abstractions.js\";\n\nconst SYSTEM_PROMPT = `You are a content intelligence assistant specialized in version comparison for headless CMS platforms.\n\nI will provide:\n\n1. The content model JSON Schema that defines the structure of the entry.\n2. Two versions of the content entry values in JSON format: Version A and Version B.\n\nYour task:\n\n- Parse both versions according to the JSON Schema.\n- Identify all differences between Version A and Version B.\n- For each difference, explain:\n - The field name (use the human-readable label from the schema description if available)\n - The value in Version A\n - The value in Version B\n - A brief summary of the change (e.g., \"Title changed from 'Old' to 'New'\")\n- If nested fields or objects exist, perform a deep comparison.\n- Return the comparison in clean HTML format.\n\nOutput format:\n\n<div class=\"comparison-report\">\n <table class=\"comparison-table\">\n <thead>\n <tr>\n <th>Field</th>\n <th>Version A</th>\n <th>Version B</th>\n <th>Change Summary</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td><strong>title</strong></td>\n <td>Launch Plan</td>\n <td>Updated Launch Plan</td>\n <td>Title changed from 'Launch Plan' to 'Updated Launch Plan'</td>\n </tr>\n </tbody>\n </table>\n</div>\n\nIf no differences are found, return: <div class=\"no-changes\"><h3>No differences detected between Version A and Version B.</h3></div>\n\nUse semantic HTML with appropriate CSS classes for styling. Do not include <style> tags or CSS — only return the HTML structure.\nFor rich text or complex nested values, show a concise summary rather than raw JSON.`;\n\nclass CmsCompareEntryRevisionsUseCaseImpl implements CmsCompareEntryRevisionsUseCase.Interface {\n constructor(\n private getSettings: GetSettingsUseCase.Interface,\n private ai: Ai.Interface,\n private encryption: Encryption.Interface,\n private getModel: GetModelUseCase.Interface,\n private getRevisionById: GetRevisionByIdUseCase.Interface,\n private modelToAst: ModelToAstConverter.Interface\n ) {}\n\n async execute(\n params: ICmsCompareEntryRevisionsParams\n ): Promise<ICmsCompareEntryRevisionsResult> {\n const { modelId, revisionId1, revisionId2 } = params;\n\n const settingsResult = await this.getSettings.execute();\n if (settingsResult.isFail()) {\n throw new Error(\"Failed to load AI Power Ups settings.\");\n }\n\n const settings = settingsResult.value;\n const firstProvider = settings.providers.presets[0];\n\n if (!firstProvider) {\n throw new Error(\"No AI provider configured. Add a provider in AI Power Ups settings.\");\n }\n\n const modelResult = await this.getModel.execute(modelId);\n if (modelResult.isFail()) {\n throw new Error(`Content model \"${modelId}\" not found.`);\n }\n const model = modelResult.value;\n\n const [rev1Result, rev2Result] = await Promise.all([\n this.getRevisionById.execute(model, revisionId1),\n this.getRevisionById.execute(model, revisionId2)\n ]);\n\n if (rev1Result.isFail()) {\n throw new Error(`Revision \"${revisionId1}\" not found.`);\n }\n if (rev2Result.isFail()) {\n throw new Error(`Revision \"${revisionId2}\" not found.`);\n }\n\n const revision1 = rev1Result.value;\n const revision2 = rev2Result.value;\n\n const modelAst = this.modelToAst.toAst(model);\n const jsonSchemaConverter = new CmsModelToJsonSchemaConverter();\n const entrySchema = jsonSchemaConverter.convert(modelAst, {\n name: model.name,\n description: model.description\n });\n\n const apiKey = await this.encryption.decrypt(firstProvider.apiKeyEncrypted);\n\n const userPrompt = `CONTENT MODEL JSON SCHEMA:\n${JSON.stringify(entrySchema, null, 2)}\n\nVERSION A (Revision #${revision1.version}):\n${JSON.stringify(revision1.values, null, 2)}\n\nVERSION B (Revision #${revision2.version}):\n${JSON.stringify(revision2.values, null, 2)}`;\n\n const result = await this.ai.generateText({\n model: firstProvider.model,\n connection: {\n sdkName: firstProvider.model.split(\"/\")[0],\n apiKey\n },\n system: SYSTEM_PROMPT,\n prompt: userPrompt,\n temperature: 0.3\n });\n\n const text = result.text;\n\n const noChangesMatch = text.match(/No differences detected/);\n let summary = \"Content comparison completed\";\n if (noChangesMatch) {\n summary = \"No differences detected between versions\";\n } else {\n const headingMatch = text.match(/<h[2-3][^>]*>([^<]+)<\\/h[2-3]>/);\n const trCount = (text.match(/<tr>/g) || []).length - 1;\n if (headingMatch) {\n summary = headingMatch[1].trim();\n } else if (trCount > 0) {\n summary = `${trCount} field${trCount === 1 ? \"\" : \"s\"} changed`;\n }\n }\n\n return { html: text, summary };\n }\n}\n\nexport const CmsCompareEntryRevisionsUseCaseImplementation =\n CmsCompareEntryRevisionsUseCase.createImplementation({\n implementation: CmsCompareEntryRevisionsUseCaseImpl,\n dependencies: [\n GetSettingsUseCase,\n Ai,\n Encryption,\n GetModelUseCase,\n GetRevisionByIdUseCase,\n ModelToAstConverter\n ]\n });\n"],"names":["SYSTEM_PROMPT","CmsCompareEntryRevisionsUseCaseImpl","getSettings","ai","encryption","getModel","getRevisionById","modelToAst","params","modelId","revisionId1","revisionId2","settingsResult","Error","settings","firstProvider","modelResult","model","rev1Result","rev2Result","Promise","revision1","revision2","modelAst","jsonSchemaConverter","CmsModelToJsonSchemaConverter","entrySchema","apiKey","userPrompt","JSON","result","text","noChangesMatch","summary","headingMatch","trCount","CmsCompareEntryRevisionsUseCaseImplementation","CmsCompareEntryRevisionsUseCase","GetSettingsUseCase","Ai","Encryption","GetModelUseCase","GetRevisionByIdUseCase","ModelToAstConverter"],"mappings":";;;;;;;;AAaA,MAAMA,gBAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oFA6C6D,CAAC;AAErF,MAAMC;IACF,YACYC,WAAyC,EACzCC,EAAgB,EAChBC,UAAgC,EAChCC,QAAmC,EACnCC,eAAiD,EACjDC,UAAyC,CACnD;aANUL,WAAW,GAAXA;aACAC,EAAE,GAAFA;aACAC,UAAU,GAAVA;aACAC,QAAQ,GAARA;aACAC,eAAe,GAAfA;aACAC,UAAU,GAAVA;IACT;IAEH,MAAM,QACFC,MAAuC,EACC;QACxC,MAAM,EAAEC,OAAO,EAAEC,WAAW,EAAEC,WAAW,EAAE,GAAGH;QAE9C,MAAMI,iBAAiB,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO;QACrD,IAAIA,eAAe,MAAM,IACrB,MAAM,IAAIC,MAAM;QAGpB,MAAMC,WAAWF,eAAe,KAAK;QACrC,MAAMG,gBAAgBD,SAAS,SAAS,CAAC,OAAO,CAAC,EAAE;QAEnD,IAAI,CAACC,eACD,MAAM,IAAIF,MAAM;QAGpB,MAAMG,cAAc,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAACP;QAChD,IAAIO,YAAY,MAAM,IAClB,MAAM,IAAIH,MAAM,CAAC,eAAe,EAAEJ,QAAQ,YAAY,CAAC;QAE3D,MAAMQ,QAAQD,YAAY,KAAK;QAE/B,MAAM,CAACE,YAAYC,WAAW,GAAG,MAAMC,QAAQ,GAAG,CAAC;YAC/C,IAAI,CAAC,eAAe,CAAC,OAAO,CAACH,OAAOP;YACpC,IAAI,CAAC,eAAe,CAAC,OAAO,CAACO,OAAON;SACvC;QAED,IAAIO,WAAW,MAAM,IACjB,MAAM,IAAIL,MAAM,CAAC,UAAU,EAAEH,YAAY,YAAY,CAAC;QAE1D,IAAIS,WAAW,MAAM,IACjB,MAAM,IAAIN,MAAM,CAAC,UAAU,EAAEF,YAAY,YAAY,CAAC;QAG1D,MAAMU,YAAYH,WAAW,KAAK;QAClC,MAAMI,YAAYH,WAAW,KAAK;QAElC,MAAMI,WAAW,IAAI,CAAC,UAAU,CAAC,KAAK,CAACN;QACvC,MAAMO,sBAAsB,IAAIC;QAChC,MAAMC,cAAcF,oBAAoB,OAAO,CAACD,UAAU;YACtD,MAAMN,MAAM,IAAI;YAChB,aAAaA,MAAM,WAAW;QAClC;QAEA,MAAMU,SAAS,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAACZ,cAAc,eAAe;QAE1E,MAAMa,aAAa,CAAC;AAC5B,EAAEC,KAAK,SAAS,CAACH,aAAa,MAAM,GAAG;;qBAElB,EAAEL,UAAU,OAAO,CAAC;AACzC,EAAEQ,KAAK,SAAS,CAACR,UAAU,MAAM,EAAE,MAAM,GAAG;;qBAEvB,EAAEC,UAAU,OAAO,CAAC;AACzC,EAAEO,KAAK,SAAS,CAACP,UAAU,MAAM,EAAE,MAAM,IAAI;QAErC,MAAMQ,SAAS,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC;YACtC,OAAOf,cAAc,KAAK;YAC1B,YAAY;gBACR,SAASA,cAAc,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;gBAC1CY;YACJ;YACA,QAAQ3B;YACR,QAAQ4B;YACR,aAAa;QACjB;QAEA,MAAMG,OAAOD,OAAO,IAAI;QAExB,MAAME,iBAAiBD,KAAK,KAAK,CAAC;QAClC,IAAIE,UAAU;QACd,IAAID,gBACAC,UAAU;aACP;YACH,MAAMC,eAAeH,KAAK,KAAK,CAAC;YAChC,MAAMI,UAAWJ,AAAAA,CAAAA,KAAK,KAAK,CAAC,YAAY,EAAC,EAAG,MAAM,GAAG;YACrD,IAAIG,cACAD,UAAUC,YAAY,CAAC,EAAE,CAAC,IAAI;iBAC3B,IAAIC,UAAU,GACjBF,UAAU,GAAGE,QAAQ,MAAM,EAAEA,AAAY,MAAZA,UAAgB,KAAK,IAAI,QAAQ,CAAC;QAEvE;QAEA,OAAO;YAAE,MAAMJ;YAAME;QAAQ;IACjC;AACJ;AAEO,MAAMG,gDACTC,gCAAgC,oBAAoB,CAAC;IACjD,gBAAgBpC;IAChB,cAAc;QACVqC;QACAC;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface ICmsCompareEntryRevisionsResult {
|
|
2
|
+
html: string;
|
|
3
|
+
summary: string;
|
|
4
|
+
}
|
|
5
|
+
export interface ICmsCompareEntryRevisionsParams {
|
|
6
|
+
modelId: string;
|
|
7
|
+
revisionId1: string;
|
|
8
|
+
revisionId2: string;
|
|
9
|
+
}
|
|
10
|
+
export interface ICmsCompareEntryRevisionsUseCase {
|
|
11
|
+
execute(params: ICmsCompareEntryRevisionsParams): Promise<ICmsCompareEntryRevisionsResult>;
|
|
12
|
+
}
|
|
13
|
+
export declare const CmsCompareEntryRevisionsUseCase: import("@webiny/di").Abstraction<ICmsCompareEntryRevisionsUseCase>;
|
|
14
|
+
export declare namespace CmsCompareEntryRevisionsUseCase {
|
|
15
|
+
type Interface = ICmsCompareEntryRevisionsUseCase;
|
|
16
|
+
type Params = ICmsCompareEntryRevisionsParams;
|
|
17
|
+
type Result = ICmsCompareEntryRevisionsResult;
|
|
18
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/CmsCompareEntryRevisions/abstractions.js","sources":["../../../../src/api/features/CmsCompareEntryRevisions/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\n\nexport interface ICmsCompareEntryRevisionsResult {\n html: string;\n summary: string;\n}\n\nexport interface ICmsCompareEntryRevisionsParams {\n modelId: string;\n revisionId1: string;\n revisionId2: string;\n}\n\nexport interface ICmsCompareEntryRevisionsUseCase {\n execute(params: ICmsCompareEntryRevisionsParams): Promise<ICmsCompareEntryRevisionsResult>;\n}\n\nexport const CmsCompareEntryRevisionsUseCase = createAbstraction<ICmsCompareEntryRevisionsUseCase>(\n \"AiPowerUpsCmsCompareEntryRevisionsUseCase\"\n);\n\nexport namespace CmsCompareEntryRevisionsUseCase {\n export type Interface = ICmsCompareEntryRevisionsUseCase;\n export type Params = ICmsCompareEntryRevisionsParams;\n export type Result = ICmsCompareEntryRevisionsResult;\n}\n"],"names":["CmsCompareEntryRevisionsUseCase","createAbstraction"],"mappings":";AAiBO,MAAMA,kCAAkCC,kBAC3C"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { CmsCompareEntryRevisionsUseCaseImplementation } from "./CmsCompareEntryRevisionsUseCase.js";
|
|
3
|
+
const CmsCompareEntryRevisionsFeature = createFeature({
|
|
4
|
+
name: "AiPowerUps/CmsCompareEntryRevisions",
|
|
5
|
+
register (container) {
|
|
6
|
+
container.register(CmsCompareEntryRevisionsUseCaseImplementation);
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
export { CmsCompareEntryRevisionsFeature };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/CmsCompareEntryRevisions/feature.js","sources":["../../../../src/api/features/CmsCompareEntryRevisions/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { CmsCompareEntryRevisionsUseCaseImplementation } from \"./CmsCompareEntryRevisionsUseCase.js\";\n\nexport const CmsCompareEntryRevisionsFeature = createFeature({\n name: \"AiPowerUps/CmsCompareEntryRevisions\",\n register(container) {\n container.register(CmsCompareEntryRevisionsUseCaseImplementation);\n }\n});\n"],"names":["CmsCompareEntryRevisionsFeature","createFeature","container","CmsCompareEntryRevisionsUseCaseImplementation"],"mappings":";;AAGO,MAAMA,kCAAkCC,cAAc;IACzD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
|
|
2
|
+
import { WebsocketsSendToIdentityUseCase } from "@webiny/api-websockets/features/SendToIdentity/abstractions.js";
|
|
3
|
+
import { CmsGenerateEntryContentUseCase } from "../../../api/features/CmsGenerateEntryContent/index.js";
|
|
4
|
+
import { IdentityContext } from "@webiny/api-core/exports/api/security.js";
|
|
5
|
+
export declare const CMS_GENERATE_ENTRY_CONTENT_TASK_ID = "aiPowerUpsGenerateEntryContent";
|
|
6
|
+
export interface ICmsGenerateEntryContentTaskInput {
|
|
7
|
+
prompt: string;
|
|
8
|
+
modelId: string;
|
|
9
|
+
projectId?: string | null;
|
|
10
|
+
excludedFileIds?: string[] | null;
|
|
11
|
+
readerPersonaId?: string | null;
|
|
12
|
+
writerPersonaId?: string | null;
|
|
13
|
+
additionalFileIds?: string[] | null;
|
|
14
|
+
}
|
|
15
|
+
declare class CmsGenerateEntryContentTaskImpl implements TaskDefinition.Interface<ICmsGenerateEntryContentTaskInput> {
|
|
16
|
+
private identityContext;
|
|
17
|
+
private generateEntryContent;
|
|
18
|
+
private sendToIdentity;
|
|
19
|
+
id: string;
|
|
20
|
+
title: string;
|
|
21
|
+
description: string;
|
|
22
|
+
maxIterations: number;
|
|
23
|
+
isPrivate: boolean;
|
|
24
|
+
databaseLogs: boolean;
|
|
25
|
+
constructor(identityContext: IdentityContext.Interface, generateEntryContent: CmsGenerateEntryContentUseCase.Interface, sendToIdentity: WebsocketsSendToIdentityUseCase.Interface);
|
|
26
|
+
run({ input, controller }: TaskDefinition.RunParams<ICmsGenerateEntryContentTaskInput>): Promise<TaskDefinition.Result<ICmsGenerateEntryContentTaskInput>>;
|
|
27
|
+
private sendContentToUser;
|
|
28
|
+
private sendErrorToUser;
|
|
29
|
+
}
|
|
30
|
+
export declare const CmsGenerateEntryContentTask: typeof CmsGenerateEntryContentTaskImpl & {
|
|
31
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskDefinition<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskInput, import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskOutput>>;
|
|
32
|
+
};
|
|
33
|
+
export {};
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
|
|
2
|
+
import { WebsocketsSendToIdentityUseCase } from "@webiny/api-websockets/features/SendToIdentity/abstractions.js";
|
|
3
|
+
import { compressJson } from "@webiny/utils/features/compression/legacy/gzip.js";
|
|
4
|
+
import { CmsGenerateEntryContentUseCase } from "./index.js";
|
|
5
|
+
import { IdentityContext } from "@webiny/api-core/exports/api/security.js";
|
|
6
|
+
const CMS_GENERATE_ENTRY_CONTENT_TASK_ID = "aiPowerUpsGenerateEntryContent";
|
|
7
|
+
class CmsGenerateEntryContentTaskImpl {
|
|
8
|
+
constructor(identityContext, generateEntryContent, sendToIdentity){
|
|
9
|
+
this.identityContext = identityContext;
|
|
10
|
+
this.generateEntryContent = generateEntryContent;
|
|
11
|
+
this.sendToIdentity = sendToIdentity;
|
|
12
|
+
this.id = CMS_GENERATE_ENTRY_CONTENT_TASK_ID;
|
|
13
|
+
this.title = "AI Power-Ups - Generate Entry Content";
|
|
14
|
+
this.description = "Generates CMS entry content using AI based on a user prompt.";
|
|
15
|
+
this.maxIterations = 1;
|
|
16
|
+
this.isPrivate = true;
|
|
17
|
+
this.databaseLogs = false;
|
|
18
|
+
}
|
|
19
|
+
async run({ input, controller }) {
|
|
20
|
+
if (controller.runtime.isAborted()) return controller.response.aborted();
|
|
21
|
+
const identity = this.identityContext.getIdentity();
|
|
22
|
+
let result;
|
|
23
|
+
try {
|
|
24
|
+
result = await this.generateEntryContent.execute({
|
|
25
|
+
prompt: input.prompt,
|
|
26
|
+
modelId: input.modelId,
|
|
27
|
+
projectId: input.projectId,
|
|
28
|
+
excludedFileIds: input.excludedFileIds,
|
|
29
|
+
readerPersonaId: input.readerPersonaId,
|
|
30
|
+
writerPersonaId: input.writerPersonaId,
|
|
31
|
+
additionalFileIds: input.additionalFileIds
|
|
32
|
+
});
|
|
33
|
+
} catch (err) {
|
|
34
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
35
|
+
await this.sendErrorToUser(identity.id, message);
|
|
36
|
+
return controller.response.error({
|
|
37
|
+
message
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
if (result.isFail()) {
|
|
41
|
+
await this.sendErrorToUser(identity.id, result.error.message);
|
|
42
|
+
return controller.response.error({
|
|
43
|
+
message: result.error.message
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
const compressed = await compressJson(result.value.values);
|
|
47
|
+
const payload = compressed.toString("base64");
|
|
48
|
+
await this.sendContentToUser(identity.id, payload, result.value.telemetry);
|
|
49
|
+
return controller.response.done("Entry content generated successfully.");
|
|
50
|
+
}
|
|
51
|
+
async sendContentToUser(identityId, payload, telemetry) {
|
|
52
|
+
await this.sendToIdentity.execute({
|
|
53
|
+
id: identityId
|
|
54
|
+
}, {
|
|
55
|
+
action: "aiPowerUps.generateEntryContent.content",
|
|
56
|
+
data: {
|
|
57
|
+
compression: "gzip",
|
|
58
|
+
value: payload,
|
|
59
|
+
telemetry
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
async sendErrorToUser(identityId, message) {
|
|
64
|
+
await this.sendToIdentity.execute({
|
|
65
|
+
id: identityId
|
|
66
|
+
}, {
|
|
67
|
+
action: "aiPowerUps.generateEntryContent.error",
|
|
68
|
+
data: {
|
|
69
|
+
message
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
const CmsGenerateEntryContentTask = TaskDefinition.createImplementation({
|
|
75
|
+
implementation: CmsGenerateEntryContentTaskImpl,
|
|
76
|
+
dependencies: [
|
|
77
|
+
IdentityContext,
|
|
78
|
+
CmsGenerateEntryContentUseCase,
|
|
79
|
+
WebsocketsSendToIdentityUseCase
|
|
80
|
+
]
|
|
81
|
+
});
|
|
82
|
+
export { CMS_GENERATE_ENTRY_CONTENT_TASK_ID, CmsGenerateEntryContentTask };
|
|
83
|
+
|
|
84
|
+
//# sourceMappingURL=CmsGenerateEntryContentTask.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/CmsGenerateEntryContent/CmsGenerateEntryContentTask.js","sources":["../../../../src/api/features/CmsGenerateEntryContent/CmsGenerateEntryContentTask.ts"],"sourcesContent":["import { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { WebsocketsSendToIdentityUseCase } from \"@webiny/api-websockets/features/SendToIdentity/abstractions.js\";\nimport { compressJson } from \"@webiny/utils/features/compression/legacy/gzip.js\";\nimport { CmsGenerateEntryContentUseCase } from \"~/api/features/CmsGenerateEntryContent/index.js\";\nimport type { GenerateEntryContentTelemetry } from \"~/api/features/CmsGenerateEntryContent/abstractions.js\";\nimport { IdentityContext } from \"@webiny/api-core/exports/api/security.js\";\n\nexport const CMS_GENERATE_ENTRY_CONTENT_TASK_ID = \"aiPowerUpsGenerateEntryContent\";\n\nexport interface ICmsGenerateEntryContentTaskInput {\n prompt: string;\n modelId: string;\n projectId?: string | null;\n excludedFileIds?: string[] | null;\n readerPersonaId?: string | null;\n writerPersonaId?: string | null;\n additionalFileIds?: string[] | null;\n}\n\nclass CmsGenerateEntryContentTaskImpl implements TaskDefinition.Interface<ICmsGenerateEntryContentTaskInput> {\n id = CMS_GENERATE_ENTRY_CONTENT_TASK_ID;\n title = \"AI Power-Ups - Generate Entry Content\";\n description = \"Generates CMS entry content using AI based on a user prompt.\";\n maxIterations = 1;\n isPrivate = true;\n databaseLogs = false;\n\n constructor(\n private identityContext: IdentityContext.Interface,\n private generateEntryContent: CmsGenerateEntryContentUseCase.Interface,\n private sendToIdentity: WebsocketsSendToIdentityUseCase.Interface\n ) {}\n\n async run({\n input,\n controller\n }: TaskDefinition.RunParams<ICmsGenerateEntryContentTaskInput>): Promise<\n TaskDefinition.Result<ICmsGenerateEntryContentTaskInput>\n > {\n if (controller.runtime.isAborted()) {\n return controller.response.aborted();\n }\n\n const identity = this.identityContext.getIdentity();\n\n let result;\n try {\n result = await this.generateEntryContent.execute({\n prompt: input.prompt,\n modelId: input.modelId,\n projectId: input.projectId,\n excludedFileIds: input.excludedFileIds,\n readerPersonaId: input.readerPersonaId,\n writerPersonaId: input.writerPersonaId,\n additionalFileIds: input.additionalFileIds\n });\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n await this.sendErrorToUser(identity.id, message);\n return controller.response.error({ message });\n }\n\n if (result.isFail()) {\n await this.sendErrorToUser(identity.id, result.error.message);\n\n return controller.response.error({\n message: result.error.message\n });\n }\n\n // Serialize at the transport edge: the use case returns structured values; the\n // websocket stream carries a gzip+base64 JSON string that the Admin app decodes.\n const compressed = await compressJson(result.value.values);\n const payload = compressed.toString(\"base64\");\n\n await this.sendContentToUser(identity.id, payload, result.value.telemetry);\n\n return controller.response.done(\"Entry content generated successfully.\");\n }\n\n private async sendContentToUser(\n identityId: string,\n payload: string,\n telemetry: GenerateEntryContentTelemetry\n ) {\n await this.sendToIdentity.execute(\n { id: identityId },\n {\n action: \"aiPowerUps.generateEntryContent.content\",\n data: {\n compression: \"gzip\",\n value: payload,\n telemetry\n }\n }\n );\n }\n\n private async sendErrorToUser(identityId: string, message: string) {\n await this.sendToIdentity.execute(\n { id: identityId },\n {\n action: \"aiPowerUps.generateEntryContent.error\",\n data: {\n message\n }\n }\n );\n }\n}\n\nexport const CmsGenerateEntryContentTask = TaskDefinition.createImplementation({\n implementation: CmsGenerateEntryContentTaskImpl,\n dependencies: [IdentityContext, CmsGenerateEntryContentUseCase, WebsocketsSendToIdentityUseCase]\n});\n"],"names":["CMS_GENERATE_ENTRY_CONTENT_TASK_ID","CmsGenerateEntryContentTaskImpl","identityContext","generateEntryContent","sendToIdentity","input","controller","identity","result","err","message","Error","String","compressed","compressJson","payload","identityId","telemetry","CmsGenerateEntryContentTask","TaskDefinition","IdentityContext","CmsGenerateEntryContentUseCase","WebsocketsSendToIdentityUseCase"],"mappings":";;;;;AAOO,MAAMA,qCAAqC;AAYlD,MAAMC;IAQF,YACYC,eAA0C,EAC1CC,oBAA8D,EAC9DC,cAAyD,CACnE;aAHUF,eAAe,GAAfA;aACAC,oBAAoB,GAApBA;aACAC,cAAc,GAAdA;aAVZ,EAAE,GAAGJ;aACL,KAAK,GAAG;aACR,WAAW,GAAG;aACd,aAAa,GAAG;aAChB,SAAS,GAAG;aACZ,YAAY,GAAG;IAMZ;IAEH,MAAM,IAAI,EACNK,KAAK,EACLC,UAAU,EACgD,EAE5D;QACE,IAAIA,WAAW,OAAO,CAAC,SAAS,IAC5B,OAAOA,WAAW,QAAQ,CAAC,OAAO;QAGtC,MAAMC,WAAW,IAAI,CAAC,eAAe,CAAC,WAAW;QAEjD,IAAIC;QACJ,IAAI;YACAA,SAAS,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;gBAC7C,QAAQH,MAAM,MAAM;gBACpB,SAASA,MAAM,OAAO;gBACtB,WAAWA,MAAM,SAAS;gBAC1B,iBAAiBA,MAAM,eAAe;gBACtC,iBAAiBA,MAAM,eAAe;gBACtC,iBAAiBA,MAAM,eAAe;gBACtC,mBAAmBA,MAAM,iBAAiB;YAC9C;QACJ,EAAE,OAAOI,KAAK;YACV,MAAMC,UAAUD,eAAeE,QAAQF,IAAI,OAAO,GAAGG,OAAOH;YAC5D,MAAM,IAAI,CAAC,eAAe,CAACF,SAAS,EAAE,EAAEG;YACxC,OAAOJ,WAAW,QAAQ,CAAC,KAAK,CAAC;gBAAEI;YAAQ;QAC/C;QAEA,IAAIF,OAAO,MAAM,IAAI;YACjB,MAAM,IAAI,CAAC,eAAe,CAACD,SAAS,EAAE,EAAEC,OAAO,KAAK,CAAC,OAAO;YAE5D,OAAOF,WAAW,QAAQ,CAAC,KAAK,CAAC;gBAC7B,SAASE,OAAO,KAAK,CAAC,OAAO;YACjC;QACJ;QAIA,MAAMK,aAAa,MAAMC,aAAaN,OAAO,KAAK,CAAC,MAAM;QACzD,MAAMO,UAAUF,WAAW,QAAQ,CAAC;QAEpC,MAAM,IAAI,CAAC,iBAAiB,CAACN,SAAS,EAAE,EAAEQ,SAASP,OAAO,KAAK,CAAC,SAAS;QAEzE,OAAOF,WAAW,QAAQ,CAAC,IAAI,CAAC;IACpC;IAEA,MAAc,kBACVU,UAAkB,EAClBD,OAAe,EACfE,SAAwC,EAC1C;QACE,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B;YAAE,IAAID;QAAW,GACjB;YACI,QAAQ;YACR,MAAM;gBACF,aAAa;gBACb,OAAOD;gBACPE;YACJ;QACJ;IAER;IAEA,MAAc,gBAAgBD,UAAkB,EAAEN,OAAe,EAAE;QAC/D,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B;YAAE,IAAIM;QAAW,GACjB;YACI,QAAQ;YACR,MAAM;gBACFN;YACJ;QACJ;IAER;AACJ;AAEO,MAAMQ,8BAA8BC,eAAe,oBAAoB,CAAC;IAC3E,gBAAgBlB;IAChB,cAAc;QAACmB;QAAiBC;QAAgCC;KAAgC;AACpG"}
|