@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,43 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { AiPowerUpsSettingsGroupHandler } from "../shared/index.js";
|
|
3
|
+
const inputSchema = z.object({
|
|
4
|
+
presets: z.array(z.object({
|
|
5
|
+
id: z.string().min(1),
|
|
6
|
+
name: z.string().min(1),
|
|
7
|
+
description: z.string().min(1),
|
|
8
|
+
style: z.string().nullish().optional()
|
|
9
|
+
}))
|
|
10
|
+
});
|
|
11
|
+
class ReaderPersonasHandlerImpl {
|
|
12
|
+
mapFromStorage(persisted) {
|
|
13
|
+
if (!persisted || "object" != typeof persisted) return {
|
|
14
|
+
presets: []
|
|
15
|
+
};
|
|
16
|
+
const data = persisted;
|
|
17
|
+
return {
|
|
18
|
+
presets: data.presets ?? []
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
async mapToStorage(internal) {
|
|
22
|
+
const input = internal;
|
|
23
|
+
return {
|
|
24
|
+
presets: input.presets.map((p)=>({
|
|
25
|
+
id: p.id,
|
|
26
|
+
name: p.name,
|
|
27
|
+
description: p.description,
|
|
28
|
+
style: p.style
|
|
29
|
+
}))
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
constructor(){
|
|
33
|
+
this.name = "readerPersonas";
|
|
34
|
+
this.inputSchema = inputSchema;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
const ReaderPersonasHandler = AiPowerUpsSettingsGroupHandler.createImplementation({
|
|
38
|
+
implementation: ReaderPersonasHandlerImpl,
|
|
39
|
+
dependencies: []
|
|
40
|
+
});
|
|
41
|
+
export default ReaderPersonasHandler;
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=ReaderPersonasHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/ReaderPersonas/ReaderPersonasHandler.js","sources":["../../../../src/api/features/ReaderPersonas/ReaderPersonasHandler.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { AiPowerUpsSettingsGroupHandler } from \"~/api/features/shared/index.js\";\nimport type { PersistedReaderPersonas, ReaderPersonasSettings } from \"./types.js\";\n\nconst inputSchema = z.object({\n presets: z.array(\n z.object({\n id: z.string().min(1),\n name: z.string().min(1),\n description: z.string().min(1),\n style: z.string().nullish().optional()\n })\n )\n});\n\nclass ReaderPersonasHandlerImpl implements AiPowerUpsSettingsGroupHandler.Interface {\n readonly name = \"readerPersonas\";\n readonly inputSchema = inputSchema;\n\n mapFromStorage(persisted: unknown): ReaderPersonasSettings {\n if (!persisted || typeof persisted !== \"object\") {\n return { presets: [] };\n }\n\n const data = persisted as PersistedReaderPersonas;\n return { presets: data.presets ?? [] };\n }\n\n async mapToStorage(internal: unknown): Promise<PersistedReaderPersonas> {\n const input = internal as ReaderPersonasSettings;\n return {\n presets: input.presets.map(p => ({\n id: p.id,\n name: p.name,\n description: p.description,\n style: p.style\n }))\n };\n }\n}\n\nexport default AiPowerUpsSettingsGroupHandler.createImplementation({\n implementation: ReaderPersonasHandlerImpl,\n dependencies: []\n});\n"],"names":["inputSchema","z","ReaderPersonasHandlerImpl","persisted","data","internal","input","p","AiPowerUpsSettingsGroupHandler"],"mappings":";;AAIA,MAAMA,cAAcC,EAAE,MAAM,CAAC;IACzB,SAASA,EAAE,KAAK,CACZA,EAAE,MAAM,CAAC;QACL,IAAIA,EAAE,MAAM,GAAG,GAAG,CAAC;QACnB,MAAMA,EAAE,MAAM,GAAG,GAAG,CAAC;QACrB,aAAaA,EAAE,MAAM,GAAG,GAAG,CAAC;QAC5B,OAAOA,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ;IACxC;AAER;AAEA,MAAMC;IAIF,eAAeC,SAAkB,EAA0B;QACvD,IAAI,CAACA,aAAa,AAAqB,YAArB,OAAOA,WACrB,OAAO;YAAE,SAAS,EAAE;QAAC;QAGzB,MAAMC,OAAOD;QACb,OAAO;YAAE,SAASC,KAAK,OAAO,IAAI,EAAE;QAAC;IACzC;IAEA,MAAM,aAAaC,QAAiB,EAAoC;QACpE,MAAMC,QAAQD;QACd,OAAO;YACH,SAASC,MAAM,OAAO,CAAC,GAAG,CAACC,CAAAA,IAAM;oBAC7B,IAAIA,EAAE,EAAE;oBACR,MAAMA,EAAE,IAAI;oBACZ,aAAaA,EAAE,WAAW;oBAC1B,OAAOA,EAAE,KAAK;gBAClB;QACJ;IACJ;;aAtBS,IAAI,GAAG;aACP,WAAW,GAAGP;;AAsB3B;AAEA,8BAAeQ,+BAA+B,oBAAoB,CAAC;IAC/D,gBAAgBN;IAChB,cAAc,EAAE;AACpB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import ReaderPersonasHandler from "./ReaderPersonasHandler.js";
|
|
3
|
+
const ReaderPersonasFeature = createFeature({
|
|
4
|
+
name: "AiPowerUpsReaderPersonas",
|
|
5
|
+
register (container) {
|
|
6
|
+
container.register(ReaderPersonasHandler);
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
export { ReaderPersonasFeature };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/ReaderPersonas/feature.js","sources":["../../../../src/api/features/ReaderPersonas/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport ReaderPersonasHandler from \"./ReaderPersonasHandler.js\";\n\nexport const ReaderPersonasFeature = createFeature({\n name: \"AiPowerUpsReaderPersonas\",\n register(container) {\n container.register(ReaderPersonasHandler);\n }\n});\n"],"names":["ReaderPersonasFeature","createFeature","container","ReaderPersonasHandler"],"mappings":";;AAGO,MAAMA,wBAAwBC,cAAc;IAC/C,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "./types.js";
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { IAiPowerUpsSettings } from "../../../api/types.js";
|
|
2
|
+
export interface ReaderPersonaPreset {
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
description: string;
|
|
6
|
+
style?: string;
|
|
7
|
+
}
|
|
8
|
+
declare module "~/api/types.js" {
|
|
9
|
+
interface IAiPowerUpsSettings {
|
|
10
|
+
readerPersonas: {
|
|
11
|
+
presets: ReaderPersonaPreset[];
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export type ReaderPersonasSettings = IAiPowerUpsSettings["readerPersonas"];
|
|
16
|
+
export interface PersistedReaderPersonaPreset {
|
|
17
|
+
id: string;
|
|
18
|
+
name: string;
|
|
19
|
+
description: string;
|
|
20
|
+
style?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface PersistedReaderPersonas {
|
|
23
|
+
presets: PersistedReaderPersonaPreset[];
|
|
24
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { KeyValueStore } from "@webiny/api-core/features/keyValueStore/index.js";
|
|
3
|
+
import { AiPowerUpsSettingsGroupHandler, AiPowerUpsSettingsCache } from "../../../api/features/shared/index.js";
|
|
4
|
+
import { UpdateSettingsRepository } from "./abstractions.js";
|
|
5
|
+
import type { IAiPowerUpsSettings } from "../../../api/types.js";
|
|
6
|
+
declare class UpdateSettingsRepositoryImpl implements UpdateSettingsRepository.Interface {
|
|
7
|
+
private keyValueStore;
|
|
8
|
+
private handlers;
|
|
9
|
+
private cache;
|
|
10
|
+
constructor(keyValueStore: KeyValueStore.Interface, handlers: AiPowerUpsSettingsGroupHandler.Interface[], cache: AiPowerUpsSettingsCache.Interface);
|
|
11
|
+
execute(input: IAiPowerUpsSettings): Promise<Result<IAiPowerUpsSettings, Error>>;
|
|
12
|
+
}
|
|
13
|
+
export declare const UpdateSettingsRepositoryImplementation: typeof UpdateSettingsRepositoryImpl & {
|
|
14
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IUpdateSettingsRepository>;
|
|
15
|
+
};
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { KeyValueStore } from "@webiny/api-core/features/keyValueStore/index.js";
|
|
3
|
+
import { AiPowerUpsSettingsCache, AiPowerUpsSettingsGroupHandler } from "../shared/index.js";
|
|
4
|
+
import { UpdateSettingsRepository } from "./abstractions.js";
|
|
5
|
+
import { SettingsValidationError } from "./errors.js";
|
|
6
|
+
import { AI_POWER_UPS_SETTINGS } from "../../constants.js";
|
|
7
|
+
class UpdateSettingsRepositoryImpl {
|
|
8
|
+
constructor(keyValueStore, handlers, cache){
|
|
9
|
+
this.keyValueStore = keyValueStore;
|
|
10
|
+
this.handlers = handlers;
|
|
11
|
+
this.cache = cache;
|
|
12
|
+
}
|
|
13
|
+
async execute(input) {
|
|
14
|
+
const cached = this.cache.get();
|
|
15
|
+
let raw;
|
|
16
|
+
if (cached) raw = cached.raw;
|
|
17
|
+
else {
|
|
18
|
+
const storeResult = await this.keyValueStore.get(AI_POWER_UPS_SETTINGS);
|
|
19
|
+
raw = storeResult.isOk() && storeResult.value ? storeResult.value : {};
|
|
20
|
+
}
|
|
21
|
+
const existingInternal = {};
|
|
22
|
+
for (const handler of this.handlers)existingInternal[handler.name] = handler.mapFromStorage(raw[handler.name]);
|
|
23
|
+
const newSettings = input;
|
|
24
|
+
const invalidFields = {};
|
|
25
|
+
for (const handler of this.handlers){
|
|
26
|
+
const parseResult = await handler.inputSchema.safeParseAsync(newSettings[handler.name]);
|
|
27
|
+
if (!parseResult.success) for (const issue of parseResult.error.issues){
|
|
28
|
+
const fieldPath = [
|
|
29
|
+
handler.name,
|
|
30
|
+
...issue.path.map(String)
|
|
31
|
+
].join(".");
|
|
32
|
+
invalidFields[fieldPath] = {
|
|
33
|
+
code: issue.code,
|
|
34
|
+
message: issue.message,
|
|
35
|
+
data: {
|
|
36
|
+
path: issue.path
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (Object.keys(invalidFields).length > 0) return Result.fail(new SettingsValidationError(invalidFields));
|
|
42
|
+
const persisted = {
|
|
43
|
+
...raw
|
|
44
|
+
};
|
|
45
|
+
for (const handler of this.handlers)persisted[handler.name] = await handler.mapToStorage(newSettings[handler.name], existingInternal[handler.name]);
|
|
46
|
+
const writeResult = await this.keyValueStore.set(AI_POWER_UPS_SETTINGS, persisted);
|
|
47
|
+
if (writeResult.isFail()) return Result.fail(new Error(String(writeResult.error)));
|
|
48
|
+
const result = {};
|
|
49
|
+
for (const handler of this.handlers)result[handler.name] = handler.mapFromStorage(persisted[handler.name]);
|
|
50
|
+
for (const key of Object.keys(persisted))if (!(key in result)) result[key] = persisted[key];
|
|
51
|
+
const mapped = result;
|
|
52
|
+
this.cache.set(persisted, mapped);
|
|
53
|
+
return Result.ok(mapped);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
const UpdateSettingsRepositoryImplementation = UpdateSettingsRepository.createImplementation({
|
|
57
|
+
implementation: UpdateSettingsRepositoryImpl,
|
|
58
|
+
dependencies: [
|
|
59
|
+
KeyValueStore,
|
|
60
|
+
[
|
|
61
|
+
AiPowerUpsSettingsGroupHandler,
|
|
62
|
+
{
|
|
63
|
+
multiple: true
|
|
64
|
+
}
|
|
65
|
+
],
|
|
66
|
+
AiPowerUpsSettingsCache
|
|
67
|
+
]
|
|
68
|
+
});
|
|
69
|
+
export { UpdateSettingsRepositoryImplementation };
|
|
70
|
+
|
|
71
|
+
//# sourceMappingURL=UpdateSettingsRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/UpdateSettings/UpdateSettingsRepository.js","sources":["../../../../src/api/features/UpdateSettings/UpdateSettingsRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { KeyValueStore } from \"@webiny/api-core/features/keyValueStore/index.js\";\nimport type { OutputErrors } from \"@webiny/utils/createZodError.js\";\nimport {\n AiPowerUpsSettingsGroupHandler,\n AiPowerUpsSettingsCache\n} from \"~/api/features/shared/index.js\";\nimport { UpdateSettingsRepository } from \"./abstractions.js\";\nimport { SettingsValidationError } from \"./errors.js\";\nimport type { IAiPowerUpsSettings } from \"~/api/types.js\";\nimport { AI_POWER_UPS_SETTINGS } from \"~/api/constants.js\";\n\nclass UpdateSettingsRepositoryImpl implements UpdateSettingsRepository.Interface {\n constructor(\n private keyValueStore: KeyValueStore.Interface,\n private handlers: AiPowerUpsSettingsGroupHandler.Interface[],\n private cache: AiPowerUpsSettingsCache.Interface\n ) {}\n\n async execute(input: IAiPowerUpsSettings): Promise<Result<IAiPowerUpsSettings, Error>> {\n const cached = this.cache.get();\n let raw: Record<string, unknown>;\n\n if (cached) {\n raw = cached.raw;\n } else {\n const storeResult =\n await this.keyValueStore.get<Record<string, unknown>>(AI_POWER_UPS_SETTINGS);\n raw = storeResult.isOk() && storeResult.value ? storeResult.value : {};\n }\n\n const existingInternal: Record<string, unknown> = {};\n for (const handler of this.handlers) {\n existingInternal[handler.name] = handler.mapFromStorage(raw[handler.name]);\n }\n\n const newSettings = input as unknown as Record<string, unknown>;\n const invalidFields: OutputErrors = {};\n\n for (const handler of this.handlers) {\n const parseResult = await handler.inputSchema.safeParseAsync(newSettings[handler.name]);\n if (!parseResult.success) {\n for (const issue of parseResult.error.issues) {\n const fieldPath = [handler.name, ...issue.path.map(String)].join(\".\");\n invalidFields[fieldPath] = {\n code: issue.code,\n message: issue.message,\n data: { path: issue.path }\n };\n }\n }\n }\n\n if (Object.keys(invalidFields).length > 0) {\n return Result.fail(new SettingsValidationError(invalidFields));\n }\n\n const persisted: Record<string, unknown> = { ...raw };\n for (const handler of this.handlers) {\n persisted[handler.name] = await handler.mapToStorage(\n newSettings[handler.name],\n existingInternal[handler.name]\n );\n }\n\n const writeResult = await this.keyValueStore.set(AI_POWER_UPS_SETTINGS, persisted);\n if (writeResult.isFail()) {\n return Result.fail(new Error(String(writeResult.error)));\n }\n\n const result: Record<string, unknown> = {};\n for (const handler of this.handlers) {\n result[handler.name] = handler.mapFromStorage(persisted[handler.name]);\n }\n\n for (const key of Object.keys(persisted)) {\n if (!(key in result)) {\n result[key] = persisted[key];\n }\n }\n\n const mapped = result as unknown as IAiPowerUpsSettings;\n this.cache.set(persisted, mapped);\n\n return Result.ok(mapped);\n }\n}\n\nexport const UpdateSettingsRepositoryImplementation = UpdateSettingsRepository.createImplementation(\n {\n implementation: UpdateSettingsRepositoryImpl,\n dependencies: [\n KeyValueStore,\n [AiPowerUpsSettingsGroupHandler, { multiple: true }],\n AiPowerUpsSettingsCache\n ]\n }\n);\n"],"names":["UpdateSettingsRepositoryImpl","keyValueStore","handlers","cache","input","cached","raw","storeResult","AI_POWER_UPS_SETTINGS","existingInternal","handler","newSettings","invalidFields","parseResult","issue","fieldPath","String","Object","Result","SettingsValidationError","persisted","writeResult","Error","result","key","mapped","UpdateSettingsRepositoryImplementation","UpdateSettingsRepository","KeyValueStore","AiPowerUpsSettingsGroupHandler","AiPowerUpsSettingsCache"],"mappings":";;;;;;AAYA,MAAMA;IACF,YACYC,aAAsC,EACtCC,QAAoD,EACpDC,KAAwC,CAClD;aAHUF,aAAa,GAAbA;aACAC,QAAQ,GAARA;aACAC,KAAK,GAALA;IACT;IAEH,MAAM,QAAQC,KAA0B,EAA+C;QACnF,MAAMC,SAAS,IAAI,CAAC,KAAK,CAAC,GAAG;QAC7B,IAAIC;QAEJ,IAAID,QACAC,MAAMD,OAAO,GAAG;aACb;YACH,MAAME,cACF,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAA0BC;YAC1DF,MAAMC,YAAY,IAAI,MAAMA,YAAY,KAAK,GAAGA,YAAY,KAAK,GAAG,CAAC;QACzE;QAEA,MAAME,mBAA4C,CAAC;QACnD,KAAK,MAAMC,WAAW,IAAI,CAAC,QAAQ,CAC/BD,gBAAgB,CAACC,QAAQ,IAAI,CAAC,GAAGA,QAAQ,cAAc,CAACJ,GAAG,CAACI,QAAQ,IAAI,CAAC;QAG7E,MAAMC,cAAcP;QACpB,MAAMQ,gBAA8B,CAAC;QAErC,KAAK,MAAMF,WAAW,IAAI,CAAC,QAAQ,CAAE;YACjC,MAAMG,cAAc,MAAMH,QAAQ,WAAW,CAAC,cAAc,CAACC,WAAW,CAACD,QAAQ,IAAI,CAAC;YACtF,IAAI,CAACG,YAAY,OAAO,EACpB,KAAK,MAAMC,SAASD,YAAY,KAAK,CAAC,MAAM,CAAE;gBAC1C,MAAME,YAAY;oBAACL,QAAQ,IAAI;uBAAKI,MAAM,IAAI,CAAC,GAAG,CAACE;iBAAQ,CAAC,IAAI,CAAC;gBACjEJ,aAAa,CAACG,UAAU,GAAG;oBACvB,MAAMD,MAAM,IAAI;oBAChB,SAASA,MAAM,OAAO;oBACtB,MAAM;wBAAE,MAAMA,MAAM,IAAI;oBAAC;gBAC7B;YACJ;QAER;QAEA,IAAIG,OAAO,IAAI,CAACL,eAAe,MAAM,GAAG,GACpC,OAAOM,OAAO,IAAI,CAAC,IAAIC,wBAAwBP;QAGnD,MAAMQ,YAAqC;YAAE,GAAGd,GAAG;QAAC;QACpD,KAAK,MAAMI,WAAW,IAAI,CAAC,QAAQ,CAC/BU,SAAS,CAACV,QAAQ,IAAI,CAAC,GAAG,MAAMA,QAAQ,YAAY,CAChDC,WAAW,CAACD,QAAQ,IAAI,CAAC,EACzBD,gBAAgB,CAACC,QAAQ,IAAI,CAAC;QAItC,MAAMW,cAAc,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAACb,uBAAuBY;QACxE,IAAIC,YAAY,MAAM,IAClB,OAAOH,OAAO,IAAI,CAAC,IAAII,MAAMN,OAAOK,YAAY,KAAK;QAGzD,MAAME,SAAkC,CAAC;QACzC,KAAK,MAAMb,WAAW,IAAI,CAAC,QAAQ,CAC/Ba,MAAM,CAACb,QAAQ,IAAI,CAAC,GAAGA,QAAQ,cAAc,CAACU,SAAS,CAACV,QAAQ,IAAI,CAAC;QAGzE,KAAK,MAAMc,OAAOP,OAAO,IAAI,CAACG,WAC1B,IAAI,CAAEI,CAAAA,OAAOD,MAAK,GACdA,MAAM,CAACC,IAAI,GAAGJ,SAAS,CAACI,IAAI;QAIpC,MAAMC,SAASF;QACf,IAAI,CAAC,KAAK,CAAC,GAAG,CAACH,WAAWK;QAE1B,OAAOP,OAAO,EAAE,CAACO;IACrB;AACJ;AAEO,MAAMC,yCAAyCC,yBAAyB,oBAAoB,CAC/F;IACI,gBAAgB3B;IAChB,cAAc;QACV4B;QACA;YAACC;YAAgC;gBAAE,UAAU;YAAK;SAAE;QACpDC;KACH;AACL"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
2
|
+
import { UpdateSettingsUseCase, UpdateSettingsRepository } from "./abstractions.js";
|
|
3
|
+
import type { IAiPowerUpsSettings } from "../../../api/types.js";
|
|
4
|
+
declare class UpdateSettingsUseCaseImpl implements UpdateSettingsUseCase.Interface {
|
|
5
|
+
private eventPublisher;
|
|
6
|
+
private repository;
|
|
7
|
+
constructor(eventPublisher: EventPublisher.Interface, repository: UpdateSettingsRepository.Interface);
|
|
8
|
+
execute(input: IAiPowerUpsSettings): UpdateSettingsUseCase.Return;
|
|
9
|
+
}
|
|
10
|
+
export declare const UpdateSettingsUseCaseImplementation: typeof UpdateSettingsUseCaseImpl & {
|
|
11
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IUpdateSettingsUseCase>;
|
|
12
|
+
};
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
2
|
+
import { UpdateSettingsRepository, UpdateSettingsUseCase } from "./abstractions.js";
|
|
3
|
+
import { AiPowerUpsSettingsAfterUpdateEvent, AiPowerUpsSettingsBeforeUpdateEvent } from "./events.js";
|
|
4
|
+
class UpdateSettingsUseCaseImpl {
|
|
5
|
+
constructor(eventPublisher, repository){
|
|
6
|
+
this.eventPublisher = eventPublisher;
|
|
7
|
+
this.repository = repository;
|
|
8
|
+
}
|
|
9
|
+
async execute(input) {
|
|
10
|
+
await this.eventPublisher.publish(new AiPowerUpsSettingsBeforeUpdateEvent({
|
|
11
|
+
input
|
|
12
|
+
}));
|
|
13
|
+
const result = await this.repository.execute(input);
|
|
14
|
+
if (result.isFail()) return result;
|
|
15
|
+
await this.eventPublisher.publish(new AiPowerUpsSettingsAfterUpdateEvent({
|
|
16
|
+
settings: result.value
|
|
17
|
+
}));
|
|
18
|
+
return result;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
const UpdateSettingsUseCaseImplementation = UpdateSettingsUseCase.createImplementation({
|
|
22
|
+
implementation: UpdateSettingsUseCaseImpl,
|
|
23
|
+
dependencies: [
|
|
24
|
+
EventPublisher,
|
|
25
|
+
UpdateSettingsRepository
|
|
26
|
+
]
|
|
27
|
+
});
|
|
28
|
+
export { UpdateSettingsUseCaseImplementation };
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=UpdateSettingsUseCase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/UpdateSettings/UpdateSettingsUseCase.js","sources":["../../../../src/api/features/UpdateSettings/UpdateSettingsUseCase.ts"],"sourcesContent":["import { EventPublisher } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { UpdateSettingsUseCase, UpdateSettingsRepository } from \"./abstractions.js\";\nimport type { IAiPowerUpsSettings } from \"~/api/types.js\";\nimport {\n AiPowerUpsSettingsBeforeUpdateEvent,\n AiPowerUpsSettingsAfterUpdateEvent\n} from \"./events.js\";\n\nclass UpdateSettingsUseCaseImpl implements UpdateSettingsUseCase.Interface {\n constructor(\n private eventPublisher: EventPublisher.Interface,\n private repository: UpdateSettingsRepository.Interface\n ) {}\n\n async execute(input: IAiPowerUpsSettings): UpdateSettingsUseCase.Return {\n await this.eventPublisher.publish(new AiPowerUpsSettingsBeforeUpdateEvent({ input }));\n\n const result = await this.repository.execute(input);\n\n if (result.isFail()) {\n return result;\n }\n\n await this.eventPublisher.publish(\n new AiPowerUpsSettingsAfterUpdateEvent({ settings: result.value })\n );\n\n return result;\n }\n}\n\nexport const UpdateSettingsUseCaseImplementation = UpdateSettingsUseCase.createImplementation({\n implementation: UpdateSettingsUseCaseImpl,\n dependencies: [EventPublisher, UpdateSettingsRepository]\n});\n"],"names":["UpdateSettingsUseCaseImpl","eventPublisher","repository","input","AiPowerUpsSettingsBeforeUpdateEvent","result","AiPowerUpsSettingsAfterUpdateEvent","UpdateSettingsUseCaseImplementation","UpdateSettingsUseCase","EventPublisher","UpdateSettingsRepository"],"mappings":";;;AAQA,MAAMA;IACF,YACYC,cAAwC,EACxCC,UAA8C,CACxD;aAFUD,cAAc,GAAdA;aACAC,UAAU,GAAVA;IACT;IAEH,MAAM,QAAQC,KAA0B,EAAgC;QACpE,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAIC,oCAAoC;YAAED;QAAM;QAElF,MAAME,SAAS,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAACF;QAE7C,IAAIE,OAAO,MAAM,IACb,OAAOA;QAGX,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,IAAIC,mCAAmC;YAAE,UAAUD,OAAO,KAAK;QAAC;QAGpE,OAAOA;IACX;AACJ;AAEO,MAAME,sCAAsCC,sBAAsB,oBAAoB,CAAC;IAC1F,gBAAgBR;IAChB,cAAc;QAACS;QAAgBC;KAAyB;AAC5D"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import type { DomainEvent, IEventHandler } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
3
|
+
import type { IAiPowerUpsSettings } from "../../../api/types.js";
|
|
4
|
+
export interface IUpdateSettingsRepository {
|
|
5
|
+
execute(input: IAiPowerUpsSettings): Promise<Result<IAiPowerUpsSettings, Error>>;
|
|
6
|
+
}
|
|
7
|
+
export declare const UpdateSettingsRepository: import("@webiny/di").Abstraction<IUpdateSettingsRepository>;
|
|
8
|
+
export declare namespace UpdateSettingsRepository {
|
|
9
|
+
type Interface = IUpdateSettingsRepository;
|
|
10
|
+
type Return = Promise<Result<IAiPowerUpsSettings, Error>>;
|
|
11
|
+
}
|
|
12
|
+
export interface IUpdateSettingsUseCase {
|
|
13
|
+
execute(input: IAiPowerUpsSettings): Promise<Result<IAiPowerUpsSettings, Error>>;
|
|
14
|
+
}
|
|
15
|
+
export declare const UpdateSettingsUseCase: import("@webiny/di").Abstraction<IUpdateSettingsUseCase>;
|
|
16
|
+
export declare namespace UpdateSettingsUseCase {
|
|
17
|
+
type Interface = IUpdateSettingsUseCase;
|
|
18
|
+
type Return = Promise<Result<IAiPowerUpsSettings, Error>>;
|
|
19
|
+
type Params = IAiPowerUpsSettings;
|
|
20
|
+
}
|
|
21
|
+
export interface AiPowerUpsSettingsBeforeUpdatePayload {
|
|
22
|
+
input: IAiPowerUpsSettings;
|
|
23
|
+
}
|
|
24
|
+
export interface AiPowerUpsSettingsAfterUpdatePayload {
|
|
25
|
+
settings: IAiPowerUpsSettings;
|
|
26
|
+
}
|
|
27
|
+
export declare const AiPowerUpsSettingsBeforeUpdateEventHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<AiPowerUpsSettingsBeforeUpdatePayload>>>;
|
|
28
|
+
export declare namespace AiPowerUpsSettingsBeforeUpdateEventHandler {
|
|
29
|
+
type Interface = IEventHandler<DomainEvent<AiPowerUpsSettingsBeforeUpdatePayload>>;
|
|
30
|
+
type Event = DomainEvent<AiPowerUpsSettingsBeforeUpdatePayload>;
|
|
31
|
+
}
|
|
32
|
+
export declare const AiPowerUpsSettingsAfterUpdateEventHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<AiPowerUpsSettingsAfterUpdatePayload>>>;
|
|
33
|
+
export declare namespace AiPowerUpsSettingsAfterUpdateEventHandler {
|
|
34
|
+
type Interface = IEventHandler<DomainEvent<AiPowerUpsSettingsAfterUpdatePayload>>;
|
|
35
|
+
type Event = DomainEvent<AiPowerUpsSettingsAfterUpdatePayload>;
|
|
36
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { createAbstraction } from "@webiny/feature/api";
|
|
2
|
+
const UpdateSettingsRepository = createAbstraction("AiPowerUpsUpdateSettingsRepository");
|
|
3
|
+
const UpdateSettingsUseCase = createAbstraction("AiPowerUpsUpdateSettingsUseCase");
|
|
4
|
+
const AiPowerUpsSettingsBeforeUpdateEventHandler = createAbstraction("AiPowerUpsSettingsBeforeUpdateEventHandler");
|
|
5
|
+
const AiPowerUpsSettingsAfterUpdateEventHandler = createAbstraction("AiPowerUpsSettingsAfterUpdateEventHandler");
|
|
6
|
+
export { AiPowerUpsSettingsAfterUpdateEventHandler, AiPowerUpsSettingsBeforeUpdateEventHandler, UpdateSettingsRepository, UpdateSettingsUseCase };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=abstractions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/UpdateSettings/abstractions.js","sources":["../../../../src/api/features/UpdateSettings/abstractions.ts"],"sourcesContent":["import { createAbstraction, Result } from \"@webiny/feature/api\";\nimport type { DomainEvent, IEventHandler } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { IAiPowerUpsSettings } from \"~/api/types.js\";\n\nexport interface IUpdateSettingsRepository {\n execute(input: IAiPowerUpsSettings): Promise<Result<IAiPowerUpsSettings, Error>>;\n}\n\nexport const UpdateSettingsRepository = createAbstraction<IUpdateSettingsRepository>(\n \"AiPowerUpsUpdateSettingsRepository\"\n);\n\nexport namespace UpdateSettingsRepository {\n export type Interface = IUpdateSettingsRepository;\n export type Return = Promise<Result<IAiPowerUpsSettings, Error>>;\n}\n\nexport interface IUpdateSettingsUseCase {\n execute(input: IAiPowerUpsSettings): Promise<Result<IAiPowerUpsSettings, Error>>;\n}\n\nexport const UpdateSettingsUseCase = createAbstraction<IUpdateSettingsUseCase>(\n \"AiPowerUpsUpdateSettingsUseCase\"\n);\n\nexport namespace UpdateSettingsUseCase {\n export type Interface = IUpdateSettingsUseCase;\n export type Return = Promise<Result<IAiPowerUpsSettings, Error>>;\n export type Params = IAiPowerUpsSettings;\n}\n\n// Domain events\nexport interface AiPowerUpsSettingsBeforeUpdatePayload {\n input: IAiPowerUpsSettings;\n}\n\nexport interface AiPowerUpsSettingsAfterUpdatePayload {\n settings: IAiPowerUpsSettings;\n}\n\nexport const AiPowerUpsSettingsBeforeUpdateEventHandler = createAbstraction<\n IEventHandler<DomainEvent<AiPowerUpsSettingsBeforeUpdatePayload>>\n>(\"AiPowerUpsSettingsBeforeUpdateEventHandler\");\n\nexport namespace AiPowerUpsSettingsBeforeUpdateEventHandler {\n export type Interface = IEventHandler<DomainEvent<AiPowerUpsSettingsBeforeUpdatePayload>>;\n export type Event = DomainEvent<AiPowerUpsSettingsBeforeUpdatePayload>;\n}\n\nexport const AiPowerUpsSettingsAfterUpdateEventHandler = createAbstraction<\n IEventHandler<DomainEvent<AiPowerUpsSettingsAfterUpdatePayload>>\n>(\"AiPowerUpsSettingsAfterUpdateEventHandler\");\n\nexport namespace AiPowerUpsSettingsAfterUpdateEventHandler {\n export type Interface = IEventHandler<DomainEvent<AiPowerUpsSettingsAfterUpdatePayload>>;\n export type Event = DomainEvent<AiPowerUpsSettingsAfterUpdatePayload>;\n}\n"],"names":["UpdateSettingsRepository","createAbstraction","UpdateSettingsUseCase","AiPowerUpsSettingsBeforeUpdateEventHandler","AiPowerUpsSettingsAfterUpdateEventHandler"],"mappings":";AAQO,MAAMA,2BAA2BC,kBACpC;AAYG,MAAMC,wBAAwBD,kBACjC;AAkBG,MAAME,6CAA6CF,kBAExD;AAOK,MAAMG,4CAA4CH,kBAEvD"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { BaseError } from "@webiny/feature/api";
|
|
2
|
+
import type { OutputErrors } from "@webiny/utils/createZodError.js";
|
|
3
|
+
interface ValidationParams {
|
|
4
|
+
invalidFields: OutputErrors;
|
|
5
|
+
}
|
|
6
|
+
export declare class SettingsValidationError extends BaseError<ValidationParams> {
|
|
7
|
+
readonly code: "AiPowerUps/Settings/ValidationError";
|
|
8
|
+
constructor(invalidFields: OutputErrors);
|
|
9
|
+
}
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { BaseError } from "@webiny/feature/api";
|
|
2
|
+
class SettingsValidationError extends BaseError {
|
|
3
|
+
constructor(invalidFields){
|
|
4
|
+
super({
|
|
5
|
+
message: "Validation failed.",
|
|
6
|
+
data: {
|
|
7
|
+
invalidFields
|
|
8
|
+
}
|
|
9
|
+
}), this.code = "AiPowerUps/Settings/ValidationError";
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export { SettingsValidationError };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/UpdateSettings/errors.js","sources":["../../../../src/api/features/UpdateSettings/errors.ts"],"sourcesContent":["import { BaseError } from \"@webiny/feature/api\";\nimport type { OutputErrors } from \"@webiny/utils/createZodError.js\";\n\ninterface ValidationParams {\n invalidFields: OutputErrors;\n}\n\nexport class SettingsValidationError extends BaseError<ValidationParams> {\n override readonly code = \"AiPowerUps/Settings/ValidationError\" as const;\n\n constructor(invalidFields: OutputErrors) {\n super({\n message: \"Validation failed.\",\n data: { invalidFields }\n });\n }\n}\n"],"names":["SettingsValidationError","BaseError","invalidFields"],"mappings":";AAOO,MAAMA,gCAAgCC;IAGzC,YAAYC,aAA2B,CAAE;QACrC,KAAK,CAAC;YACF,SAAS;YACT,MAAM;gBAAEA;YAAc;QAC1B,SANc,IAAI,GAAG;IAOzB;AACJ"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
2
|
+
import type { AiPowerUpsSettingsBeforeUpdatePayload, AiPowerUpsSettingsAfterUpdatePayload } from "./abstractions.js";
|
|
3
|
+
export declare class AiPowerUpsSettingsBeforeUpdateEvent extends DomainEvent<AiPowerUpsSettingsBeforeUpdatePayload> {
|
|
4
|
+
eventType: "ai-PowerUps.settings.beforeUpdate";
|
|
5
|
+
getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<DomainEvent<AiPowerUpsSettingsBeforeUpdatePayload>>>;
|
|
6
|
+
}
|
|
7
|
+
export declare class AiPowerUpsSettingsAfterUpdateEvent extends DomainEvent<AiPowerUpsSettingsAfterUpdatePayload> {
|
|
8
|
+
eventType: "ai-PowerUps.settings.afterUpdate";
|
|
9
|
+
getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<DomainEvent<AiPowerUpsSettingsAfterUpdatePayload>>>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
2
|
+
import { AiPowerUpsSettingsAfterUpdateEventHandler, AiPowerUpsSettingsBeforeUpdateEventHandler } from "./abstractions.js";
|
|
3
|
+
class AiPowerUpsSettingsBeforeUpdateEvent extends DomainEvent {
|
|
4
|
+
getHandlerAbstraction() {
|
|
5
|
+
return AiPowerUpsSettingsBeforeUpdateEventHandler;
|
|
6
|
+
}
|
|
7
|
+
constructor(...args){
|
|
8
|
+
super(...args), this.eventType = "ai-PowerUps.settings.beforeUpdate";
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
class AiPowerUpsSettingsAfterUpdateEvent extends DomainEvent {
|
|
12
|
+
getHandlerAbstraction() {
|
|
13
|
+
return AiPowerUpsSettingsAfterUpdateEventHandler;
|
|
14
|
+
}
|
|
15
|
+
constructor(...args){
|
|
16
|
+
super(...args), this.eventType = "ai-PowerUps.settings.afterUpdate";
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export { AiPowerUpsSettingsAfterUpdateEvent, AiPowerUpsSettingsBeforeUpdateEvent };
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/UpdateSettings/events.js","sources":["../../../../src/api/features/UpdateSettings/events.ts"],"sourcesContent":["import { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport {\n AiPowerUpsSettingsBeforeUpdateEventHandler,\n AiPowerUpsSettingsAfterUpdateEventHandler\n} from \"./abstractions.js\";\nimport type {\n AiPowerUpsSettingsBeforeUpdatePayload,\n AiPowerUpsSettingsAfterUpdatePayload\n} from \"./abstractions.js\";\n\nexport class AiPowerUpsSettingsBeforeUpdateEvent extends DomainEvent<AiPowerUpsSettingsBeforeUpdatePayload> {\n eventType = \"ai-PowerUps.settings.beforeUpdate\" as const;\n\n getHandlerAbstraction() {\n return AiPowerUpsSettingsBeforeUpdateEventHandler;\n }\n}\n\nexport class AiPowerUpsSettingsAfterUpdateEvent extends DomainEvent<AiPowerUpsSettingsAfterUpdatePayload> {\n eventType = \"ai-PowerUps.settings.afterUpdate\" as const;\n\n getHandlerAbstraction() {\n return AiPowerUpsSettingsAfterUpdateEventHandler;\n }\n}\n"],"names":["AiPowerUpsSettingsBeforeUpdateEvent","DomainEvent","AiPowerUpsSettingsBeforeUpdateEventHandler","AiPowerUpsSettingsAfterUpdateEvent","AiPowerUpsSettingsAfterUpdateEventHandler"],"mappings":";;AAUO,MAAMA,4CAA4CC;IAGrD,wBAAwB;QACpB,OAAOC;IACX;;QALG,qBACH,SAAS,GAAG;;AAKhB;AAEO,MAAMC,2CAA2CF;IAGpD,wBAAwB;QACpB,OAAOG;IACX;;QALG,qBACH,SAAS,GAAG;;AAKhB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { UpdateSettingsRepositoryImplementation } from "./UpdateSettingsRepository.js";
|
|
3
|
+
import { UpdateSettingsUseCaseImplementation } from "./UpdateSettingsUseCase.js";
|
|
4
|
+
const UpdateSettingsFeature = createFeature({
|
|
5
|
+
name: "AiPowerUpsUpdateSettings",
|
|
6
|
+
register (container) {
|
|
7
|
+
container.register(UpdateSettingsRepositoryImplementation).inSingletonScope();
|
|
8
|
+
container.register(UpdateSettingsUseCaseImplementation);
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
export { UpdateSettingsFeature };
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/UpdateSettings/feature.js","sources":["../../../../src/api/features/UpdateSettings/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { UpdateSettingsRepositoryImplementation } from \"./UpdateSettingsRepository.js\";\nimport { UpdateSettingsUseCaseImplementation } from \"./UpdateSettingsUseCase.js\";\n\nexport const UpdateSettingsFeature = createFeature({\n name: \"AiPowerUpsUpdateSettings\",\n register(container) {\n container.register(UpdateSettingsRepositoryImplementation).inSingletonScope();\n container.register(UpdateSettingsUseCaseImplementation);\n }\n});\n"],"names":["UpdateSettingsFeature","createFeature","container","UpdateSettingsRepositoryImplementation","UpdateSettingsUseCaseImplementation"],"mappings":";;;AAIO,MAAMA,wBAAwBC,cAAc;IAC/C,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC,wCAAwC,gBAAgB;QAC3ED,UAAU,QAAQ,CAACE;IACvB;AACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { UpdateSettingsUseCase, AiPowerUpsSettingsBeforeUpdateEventHandler, AiPowerUpsSettingsAfterUpdateEventHandler } from "./abstractions.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { AiPowerUpsSettingsAfterUpdateEventHandler, AiPowerUpsSettingsBeforeUpdateEventHandler, UpdateSettingsUseCase } from "./abstractions.js";
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validates LLM-generated page content against the component catalog.
|
|
3
|
+
* Recursively walks the element tree (including nested CreateElement actions
|
|
4
|
+
* inside slot inputs) and removes any element whose component name is not
|
|
5
|
+
* in the catalog. Tool envelopes are left untouched.
|
|
6
|
+
*/
|
|
7
|
+
export declare class ComponentFilter {
|
|
8
|
+
private readonly validNames;
|
|
9
|
+
constructor(components: Array<{
|
|
10
|
+
name: string;
|
|
11
|
+
}>);
|
|
12
|
+
filter(elements: unknown[]): unknown[];
|
|
13
|
+
private isValid;
|
|
14
|
+
private processInputs;
|
|
15
|
+
private getInputs;
|
|
16
|
+
private setInputs;
|
|
17
|
+
private processValue;
|
|
18
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
class ComponentFilter {
|
|
2
|
+
constructor(components){
|
|
3
|
+
this.validNames = new Set(components.map((c)=>c.name));
|
|
4
|
+
}
|
|
5
|
+
filter(elements) {
|
|
6
|
+
return elements.filter((el)=>this.isValid(el)).map((el)=>this.processInputs(el));
|
|
7
|
+
}
|
|
8
|
+
isValid(el) {
|
|
9
|
+
if (!el || "object" != typeof el) return true;
|
|
10
|
+
const obj = el;
|
|
11
|
+
if ("component" in obj && "string" == typeof obj.component) return this.validNames.has(obj.component);
|
|
12
|
+
if ("CreateElement" === obj.action && obj.params && "object" == typeof obj.params) {
|
|
13
|
+
const params = obj.params;
|
|
14
|
+
if ("component" in params && "string" == typeof params.component) return this.validNames.has(params.component);
|
|
15
|
+
}
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
processInputs(el) {
|
|
19
|
+
const inputs = this.getInputs(el);
|
|
20
|
+
if (!inputs) return el;
|
|
21
|
+
const cleaned = {};
|
|
22
|
+
for (const [key, value] of Object.entries(inputs))cleaned[key] = this.processValue(value);
|
|
23
|
+
return this.setInputs(el, cleaned);
|
|
24
|
+
}
|
|
25
|
+
getInputs(el) {
|
|
26
|
+
if ("inputs" in el && el.inputs && "object" == typeof el.inputs) return el.inputs;
|
|
27
|
+
if ("CreateElement" === el.action && el.params && "object" == typeof el.params && "inputs" in el.params) {
|
|
28
|
+
const params = el.params;
|
|
29
|
+
return params.inputs;
|
|
30
|
+
}
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
setInputs(el, inputs) {
|
|
34
|
+
if ("inputs" in el) return {
|
|
35
|
+
...el,
|
|
36
|
+
inputs
|
|
37
|
+
};
|
|
38
|
+
if ("CreateElement" === el.action && el.params && "object" == typeof el.params) return {
|
|
39
|
+
...el,
|
|
40
|
+
params: {
|
|
41
|
+
...el.params,
|
|
42
|
+
inputs
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
return el;
|
|
46
|
+
}
|
|
47
|
+
processValue(value) {
|
|
48
|
+
if (Array.isArray(value)) return value.filter((item)=>this.isValid(item)).map((item)=>this.processValue(item));
|
|
49
|
+
if (!value || "object" != typeof value) return value;
|
|
50
|
+
const obj = value;
|
|
51
|
+
if ("tool" in obj) return value;
|
|
52
|
+
if ("CreateElement" === obj.action) {
|
|
53
|
+
if (!this.isValid(obj)) return null;
|
|
54
|
+
return this.processInputs(obj);
|
|
55
|
+
}
|
|
56
|
+
if ("component" in obj && "inputs" in obj) return this.processInputs(obj);
|
|
57
|
+
const result = {};
|
|
58
|
+
let changed = false;
|
|
59
|
+
for (const [k, v] of Object.entries(obj)){
|
|
60
|
+
const processed = this.processValue(v);
|
|
61
|
+
result[k] = processed;
|
|
62
|
+
if (processed !== v) changed = true;
|
|
63
|
+
}
|
|
64
|
+
return changed ? result : value;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
export { ComponentFilter };
|
|
68
|
+
|
|
69
|
+
//# sourceMappingURL=ComponentFilter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/WbGeneratePageContent/ComponentFilter.js","sources":["../../../../src/api/features/WbGeneratePageContent/ComponentFilter.ts"],"sourcesContent":["/**\n * Validates LLM-generated page content against the component catalog.\n * Recursively walks the element tree (including nested CreateElement actions\n * inside slot inputs) and removes any element whose component name is not\n * in the catalog. Tool envelopes are left untouched.\n */\nexport class ComponentFilter {\n private readonly validNames: Set<string>;\n\n constructor(components: Array<{ name: string }>) {\n this.validNames = new Set(components.map(c => c.name));\n }\n\n filter(elements: unknown[]): unknown[] {\n return elements\n .filter(el => this.isValid(el))\n .map(el => this.processInputs(el as Record<string, unknown>));\n }\n\n private isValid(el: unknown): boolean {\n if (!el || typeof el !== \"object\") {\n return true;\n }\n\n const obj = el as Record<string, unknown>;\n\n if (\"component\" in obj && typeof obj.component === \"string\") {\n return this.validNames.has(obj.component);\n }\n\n if (obj.action === \"CreateElement\" && obj.params && typeof obj.params === \"object\") {\n const params = obj.params as Record<string, unknown>;\n if (\"component\" in params && typeof params.component === \"string\") {\n return this.validNames.has(params.component);\n }\n }\n\n return true;\n }\n\n private processInputs(el: Record<string, unknown>): Record<string, unknown> {\n const inputs = this.getInputs(el);\n if (!inputs) {\n return el;\n }\n\n const cleaned: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(inputs)) {\n cleaned[key] = this.processValue(value);\n }\n\n return this.setInputs(el, cleaned);\n }\n\n private getInputs(el: Record<string, unknown>): Record<string, unknown> | null {\n if (\"inputs\" in el && el.inputs && typeof el.inputs === \"object\") {\n return el.inputs as Record<string, unknown>;\n }\n\n if (\n el.action === \"CreateElement\" &&\n el.params &&\n typeof el.params === \"object\" &&\n \"inputs\" in (el.params as Record<string, unknown>)\n ) {\n const params = el.params as Record<string, unknown>;\n return params.inputs as Record<string, unknown>;\n }\n\n return null;\n }\n\n private setInputs(\n el: Record<string, unknown>,\n inputs: Record<string, unknown>\n ): Record<string, unknown> {\n if (\"inputs\" in el) {\n return { ...el, inputs };\n }\n\n if (el.action === \"CreateElement\" && el.params && typeof el.params === \"object\") {\n return { ...el, params: { ...el.params, inputs } };\n }\n\n return el;\n }\n\n private processValue(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.filter(item => this.isValid(item)).map(item => this.processValue(item));\n }\n\n if (!value || typeof value !== \"object\") {\n return value;\n }\n\n const obj = value as Record<string, unknown>;\n\n if (\"tool\" in obj) {\n return value;\n }\n\n if (obj.action === \"CreateElement\") {\n if (!this.isValid(obj)) {\n return null;\n }\n return this.processInputs(obj);\n }\n\n if (\"component\" in obj && \"inputs\" in obj) {\n return this.processInputs(obj);\n }\n\n const result: Record<string, unknown> = {};\n let changed = false;\n for (const [k, v] of Object.entries(obj)) {\n const processed = this.processValue(v);\n result[k] = processed;\n if (processed !== v) {\n changed = true;\n }\n }\n return changed ? result : value;\n }\n}\n"],"names":["ComponentFilter","components","Set","c","elements","el","obj","params","inputs","cleaned","key","value","Object","Array","item","result","changed","k","v","processed"],"mappings":"AAMO,MAAMA;IAGT,YAAYC,UAAmC,CAAE;QAC7C,IAAI,CAAC,UAAU,GAAG,IAAIC,IAAID,WAAW,GAAG,CAACE,CAAAA,IAAKA,EAAE,IAAI;IACxD;IAEA,OAAOC,QAAmB,EAAa;QACnC,OAAOA,SACF,MAAM,CAACC,CAAAA,KAAM,IAAI,CAAC,OAAO,CAACA,KAC1B,GAAG,CAACA,CAAAA,KAAM,IAAI,CAAC,aAAa,CAACA;IACtC;IAEQ,QAAQA,EAAW,EAAW;QAClC,IAAI,CAACA,MAAM,AAAc,YAAd,OAAOA,IACd,OAAO;QAGX,MAAMC,MAAMD;QAEZ,IAAI,eAAeC,OAAO,AAAyB,YAAzB,OAAOA,IAAI,SAAS,EAC1C,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAACA,IAAI,SAAS;QAG5C,IAAIA,AAAe,oBAAfA,IAAI,MAAM,IAAwBA,IAAI,MAAM,IAAI,AAAsB,YAAtB,OAAOA,IAAI,MAAM,EAAe;YAChF,MAAMC,SAASD,IAAI,MAAM;YACzB,IAAI,eAAeC,UAAU,AAA4B,YAA5B,OAAOA,OAAO,SAAS,EAChD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAACA,OAAO,SAAS;QAEnD;QAEA,OAAO;IACX;IAEQ,cAAcF,EAA2B,EAA2B;QACxE,MAAMG,SAAS,IAAI,CAAC,SAAS,CAACH;QAC9B,IAAI,CAACG,QACD,OAAOH;QAGX,MAAMI,UAAmC,CAAC;QAC1C,KAAK,MAAM,CAACC,KAAKC,MAAM,IAAIC,OAAO,OAAO,CAACJ,QACtCC,OAAO,CAACC,IAAI,GAAG,IAAI,CAAC,YAAY,CAACC;QAGrC,OAAO,IAAI,CAAC,SAAS,CAACN,IAAII;IAC9B;IAEQ,UAAUJ,EAA2B,EAAkC;QAC3E,IAAI,YAAYA,MAAMA,GAAG,MAAM,IAAI,AAAqB,YAArB,OAAOA,GAAG,MAAM,EAC/C,OAAOA,GAAG,MAAM;QAGpB,IACIA,AAAc,oBAAdA,GAAG,MAAM,IACTA,GAAG,MAAM,IACT,AAAqB,YAArB,OAAOA,GAAG,MAAM,IAChB,YAAaA,GAAG,MAAM,EACxB;YACE,MAAME,SAASF,GAAG,MAAM;YACxB,OAAOE,OAAO,MAAM;QACxB;QAEA,OAAO;IACX;IAEQ,UACJF,EAA2B,EAC3BG,MAA+B,EACR;QACvB,IAAI,YAAYH,IACZ,OAAO;YAAE,GAAGA,EAAE;YAAEG;QAAO;QAG3B,IAAIH,AAAc,oBAAdA,GAAG,MAAM,IAAwBA,GAAG,MAAM,IAAI,AAAqB,YAArB,OAAOA,GAAG,MAAM,EAC9D,OAAO;YAAE,GAAGA,EAAE;YAAE,QAAQ;gBAAE,GAAGA,GAAG,MAAM;gBAAEG;YAAO;QAAE;QAGrD,OAAOH;IACX;IAEQ,aAAaM,KAAc,EAAW;QAC1C,IAAIE,MAAM,OAAO,CAACF,QACd,OAAOA,MAAM,MAAM,CAACG,CAAAA,OAAQ,IAAI,CAAC,OAAO,CAACA,OAAO,GAAG,CAACA,CAAAA,OAAQ,IAAI,CAAC,YAAY,CAACA;QAGlF,IAAI,CAACH,SAAS,AAAiB,YAAjB,OAAOA,OACjB,OAAOA;QAGX,MAAML,MAAMK;QAEZ,IAAI,UAAUL,KACV,OAAOK;QAGX,IAAIL,AAAe,oBAAfA,IAAI,MAAM,EAAsB;YAChC,IAAI,CAAC,IAAI,CAAC,OAAO,CAACA,MACd,OAAO;YAEX,OAAO,IAAI,CAAC,aAAa,CAACA;QAC9B;QAEA,IAAI,eAAeA,OAAO,YAAYA,KAClC,OAAO,IAAI,CAAC,aAAa,CAACA;QAG9B,MAAMS,SAAkC,CAAC;QACzC,IAAIC,UAAU;QACd,KAAK,MAAM,CAACC,GAAGC,EAAE,IAAIN,OAAO,OAAO,CAACN,KAAM;YACtC,MAAMa,YAAY,IAAI,CAAC,YAAY,CAACD;YACpCH,MAAM,CAACE,EAAE,GAAGE;YACZ,IAAIA,cAAcD,GACdF,UAAU;QAElB;QACA,OAAOA,UAAUD,SAASJ;IAC9B;AACJ"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
class LlmJsonResponse {
|
|
2
|
+
constructor(text){
|
|
3
|
+
this.text = text;
|
|
4
|
+
}
|
|
5
|
+
static fromRawText(raw) {
|
|
6
|
+
let text = raw.replace(/^```(?:json)?\s*\n?/, "").replace(/\n?```\s*$/, "").trim();
|
|
7
|
+
const startIdx = text.search(/[\[{]/);
|
|
8
|
+
if (startIdx > 0) text = text.slice(startIdx);
|
|
9
|
+
if (text.startsWith("[")) {
|
|
10
|
+
const endIdx = text.lastIndexOf("]");
|
|
11
|
+
if (endIdx >= 0) text = text.slice(0, endIdx + 1);
|
|
12
|
+
} else if (text.startsWith("{")) {
|
|
13
|
+
const endIdx = text.lastIndexOf("}");
|
|
14
|
+
if (endIdx >= 0) text = text.slice(0, endIdx + 1);
|
|
15
|
+
}
|
|
16
|
+
return new LlmJsonResponse(text);
|
|
17
|
+
}
|
|
18
|
+
toArray() {
|
|
19
|
+
const parsed = JSON.parse(this.text);
|
|
20
|
+
if (Array.isArray(parsed)) return parsed;
|
|
21
|
+
if (parsed && "object" == typeof parsed) {
|
|
22
|
+
const firstKey = Object.keys(parsed)[0];
|
|
23
|
+
if (firstKey && Array.isArray(parsed[firstKey])) return parsed[firstKey];
|
|
24
|
+
}
|
|
25
|
+
return [
|
|
26
|
+
parsed
|
|
27
|
+
];
|
|
28
|
+
}
|
|
29
|
+
toString() {
|
|
30
|
+
return JSON.stringify(this.toArray());
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export { LlmJsonResponse };
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=LlmJsonResponse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/WbGeneratePageContent/LlmJsonResponse.js","sources":["../../../../src/api/features/WbGeneratePageContent/LlmJsonResponse.ts"],"sourcesContent":["export class LlmJsonResponse {\n private constructor(private readonly text: string) {}\n\n static fromRawText(raw: string): LlmJsonResponse {\n let text = raw\n .replace(/^```(?:json)?\\s*\\n?/, \"\")\n .replace(/\\n?```\\s*$/, \"\")\n .trim();\n\n // Models that use tool calls sometimes emit a brief preamble before\n // the JSON (\"Now I have the images, here's the page:\") and/or trailing\n // prose after. Slice to the first `[`/`{` and the matching last\n // `]`/`}` so JSON.parse sees only the structured block.\n const startIdx = text.search(/[\\[{]/);\n if (startIdx > 0) {\n text = text.slice(startIdx);\n }\n if (text.startsWith(\"[\")) {\n const endIdx = text.lastIndexOf(\"]\");\n if (endIdx >= 0) {\n text = text.slice(0, endIdx + 1);\n }\n } else if (text.startsWith(\"{\")) {\n const endIdx = text.lastIndexOf(\"}\");\n if (endIdx >= 0) {\n text = text.slice(0, endIdx + 1);\n }\n }\n\n return new LlmJsonResponse(text);\n }\n\n toArray(): unknown[] {\n const parsed = JSON.parse(this.text);\n\n if (Array.isArray(parsed)) {\n return parsed;\n }\n\n if (parsed && typeof parsed === \"object\") {\n const firstKey = Object.keys(parsed)[0];\n if (firstKey && Array.isArray(parsed[firstKey])) {\n return parsed[firstKey];\n }\n }\n\n return [parsed];\n }\n\n toString(): string {\n return JSON.stringify(this.toArray());\n }\n}\n"],"names":["LlmJsonResponse","text","raw","startIdx","endIdx","parsed","JSON","Array","firstKey","Object"],"mappings":"AAAO,MAAMA;IACT,YAAqCC,IAAY,CAAE;aAAdA,IAAI,GAAJA;IAAe;IAEpD,OAAO,YAAYC,GAAW,EAAmB;QAC7C,IAAID,OAAOC,IACN,OAAO,CAAC,uBAAuB,IAC/B,OAAO,CAAC,cAAc,IACtB,IAAI;QAMT,MAAMC,WAAWF,KAAK,MAAM,CAAC;QAC7B,IAAIE,WAAW,GACXF,OAAOA,KAAK,KAAK,CAACE;QAEtB,IAAIF,KAAK,UAAU,CAAC,MAAM;YACtB,MAAMG,SAASH,KAAK,WAAW,CAAC;YAChC,IAAIG,UAAU,GACVH,OAAOA,KAAK,KAAK,CAAC,GAAGG,SAAS;QAEtC,OAAO,IAAIH,KAAK,UAAU,CAAC,MAAM;YAC7B,MAAMG,SAASH,KAAK,WAAW,CAAC;YAChC,IAAIG,UAAU,GACVH,OAAOA,KAAK,KAAK,CAAC,GAAGG,SAAS;QAEtC;QAEA,OAAO,IAAIJ,gBAAgBC;IAC/B;IAEA,UAAqB;QACjB,MAAMI,SAASC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI;QAEnC,IAAIC,MAAM,OAAO,CAACF,SACd,OAAOA;QAGX,IAAIA,UAAU,AAAkB,YAAlB,OAAOA,QAAqB;YACtC,MAAMG,WAAWC,OAAO,IAAI,CAACJ,OAAO,CAAC,EAAE;YACvC,IAAIG,YAAYD,MAAM,OAAO,CAACF,MAAM,CAACG,SAAS,GAC1C,OAAOH,MAAM,CAACG,SAAS;QAE/B;QAEA,OAAO;YAACH;SAAO;IACnB;IAEA,WAAmB;QACf,OAAOC,KAAK,SAAS,CAAC,IAAI,CAAC,OAAO;IACtC;AACJ"}
|
|
@@ -0,0 +1,34 @@
|
|
|
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 { WbGeneratePageContentUseCase } from "../../../api/features/WbGeneratePageContent/index.js";
|
|
4
|
+
import { IdentityContext } from "@webiny/api-core/exports/api/security.js";
|
|
5
|
+
export declare const WB_GENERATE_PAGE_CONTENT_TASK_ID = "aiPowerUpsGeneratePageContent";
|
|
6
|
+
export interface IWbGeneratePageContentTaskInput {
|
|
7
|
+
prompt: string;
|
|
8
|
+
components: unknown;
|
|
9
|
+
tools: unknown;
|
|
10
|
+
projectId?: string | null;
|
|
11
|
+
excludedFileIds?: string[] | null;
|
|
12
|
+
readerPersonaId?: string | null;
|
|
13
|
+
writerPersonaId?: string | null;
|
|
14
|
+
additionalFileIds?: string[] | null;
|
|
15
|
+
}
|
|
16
|
+
declare class WbGeneratePageContentTaskImpl implements TaskDefinition.Interface<IWbGeneratePageContentTaskInput> {
|
|
17
|
+
private identityContext;
|
|
18
|
+
private generatePageContent;
|
|
19
|
+
private sendToIdentity;
|
|
20
|
+
id: string;
|
|
21
|
+
title: string;
|
|
22
|
+
description: string;
|
|
23
|
+
maxIterations: number;
|
|
24
|
+
isPrivate: boolean;
|
|
25
|
+
databaseLogs: boolean;
|
|
26
|
+
constructor(identityContext: IdentityContext.Interface, generatePageContent: WbGeneratePageContentUseCase.Interface, sendToIdentity: WebsocketsSendToIdentityUseCase.Interface);
|
|
27
|
+
run({ input, controller }: TaskDefinition.RunParams<IWbGeneratePageContentTaskInput>): Promise<TaskDefinition.Result<IWbGeneratePageContentTaskInput>>;
|
|
28
|
+
private sendContentToUser;
|
|
29
|
+
private sendErrorToUser;
|
|
30
|
+
}
|
|
31
|
+
export declare const WbGeneratePageContentTask: typeof WbGeneratePageContentTaskImpl & {
|
|
32
|
+
__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>>;
|
|
33
|
+
};
|
|
34
|
+
export {};
|