@webiny/ai-powerups 0.0.0-unstable.0156a4c312
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 +14 -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 +49 -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/domain/modelRoles.d.ts +17 -0
- package/admin/domain/modelRoles.js +8 -0
- package/admin/domain/modelRoles.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 +26 -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/listCapabilities/ListCapabilitiesGateway.d.ts +12 -0
- package/admin/features/listCapabilities/ListCapabilitiesGateway.js +34 -0
- package/admin/features/listCapabilities/ListCapabilitiesGateway.js.map +1 -0
- package/admin/features/listCapabilities/ListCapabilitiesRepository.d.ts +13 -0
- package/admin/features/listCapabilities/ListCapabilitiesRepository.js +27 -0
- package/admin/features/listCapabilities/ListCapabilitiesRepository.js.map +1 -0
- package/admin/features/listCapabilities/ListCapabilitiesUseCase.d.ts +10 -0
- package/admin/features/listCapabilities/ListCapabilitiesUseCase.js +18 -0
- package/admin/features/listCapabilities/ListCapabilitiesUseCase.js.map +1 -0
- package/admin/features/listCapabilities/abstractions.d.ts +28 -0
- package/admin/features/listCapabilities/abstractions.js +7 -0
- package/admin/features/listCapabilities/abstractions.js.map +1 -0
- package/admin/features/listCapabilities/feature.d.ts +3 -0
- package/admin/features/listCapabilities/feature.js +21 -0
- package/admin/features/listCapabilities/feature.js.map +1 -0
- package/admin/features/listCapabilities/index.d.ts +3 -0
- package/admin/features/listCapabilities/index.js +2 -0
- package/admin/features/listModels/ListModelsGateway.d.ts +12 -0
- package/admin/features/listModels/ListModelsGateway.js +51 -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 +30 -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 +83 -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 +160 -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 +29 -0
- package/admin/presentation/AiPowerUpsSettings/feature.js.map +1 -0
- package/admin/presentation/AiPowerUpsSettings/hasUsableModel.d.ts +13 -0
- package/admin/presentation/AiPowerUpsSettings/hasUsableModel.js +9 -0
- package/admin/presentation/AiPowerUpsSettings/hasUsableModel.js.map +1 -0
- package/admin/presentation/AiPowerUpsSettings/index.d.ts +4 -0
- package/admin/presentation/AiPowerUpsSettings/index.js +4 -0
- package/admin/presentation/AiPowerUpsSettings/settingsGroup.d.ts +26 -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/CapabilitiesSettings.d.ts +39 -0
- package/admin/presentation/CapabilitiesSettings.js +104 -0
- package/admin/presentation/CapabilitiesSettings.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 +22 -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/ConnectionsSettings.d.ts +25 -0
- package/admin/presentation/ConnectionsSettings.js +52 -0
- package/admin/presentation/ConnectionsSettings.js.map +1 -0
- package/admin/presentation/ModelRolesSettings.d.ts +29 -0
- package/admin/presentation/ModelRolesSettings.js +67 -0
- package/admin/presentation/ModelRolesSettings.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/presentation/modelRoles.d.ts +10 -0
- package/admin/presentation/modelRoles.js +23 -0
- package/admin/presentation/modelRoles.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 +68 -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/AdminAssistant/AdminAssistantStreamRoute.d.ts +34 -0
- package/api/features/AdminAssistant/AdminAssistantStreamRoute.js +42 -0
- package/api/features/AdminAssistant/AdminAssistantStreamRoute.js.map +1 -0
- package/api/features/AdminAssistant/AdminAssistantUseCase.d.ts +42 -0
- package/api/features/AdminAssistant/AdminAssistantUseCase.js +170 -0
- package/api/features/AdminAssistant/AdminAssistantUseCase.js.map +1 -0
- package/api/features/AdminAssistant/abstractions.d.ts +38 -0
- package/api/features/AdminAssistant/abstractions.js +6 -0
- package/api/features/AdminAssistant/abstractions.js.map +1 -0
- package/api/features/AdminAssistant/approvals.d.ts +29 -0
- package/api/features/AdminAssistant/approvals.js +30 -0
- package/api/features/AdminAssistant/approvals.js.map +1 -0
- package/api/features/AdminAssistant/capability.d.ts +31 -0
- package/api/features/AdminAssistant/capability.js +19 -0
- package/api/features/AdminAssistant/capability.js.map +1 -0
- package/api/features/AdminAssistant/events.d.ts +54 -0
- package/api/features/AdminAssistant/events.js +0 -0
- package/api/features/AdminAssistant/feature.d.ts +12 -0
- package/api/features/AdminAssistant/feature.js +23 -0
- package/api/features/AdminAssistant/feature.js.map +1 -0
- package/api/features/AdminAssistant/index.d.ts +5 -0
- package/api/features/AdminAssistant/index.js +3 -0
- package/api/features/AdminAssistant/parseChatBody.d.ts +14 -0
- package/api/features/AdminAssistant/parseChatBody.js +33 -0
- package/api/features/AdminAssistant/parseChatBody.js.map +1 -0
- package/api/features/AdminAssistant/systemPrompt.d.ts +7 -0
- package/api/features/AdminAssistant/systemPrompt.js +24 -0
- package/api/features/AdminAssistant/systemPrompt.js.map +1 -0
- package/api/features/AiImageEnrichment/AiImageEnrichmentAfterCreateHandler.d.ts +11 -0
- package/api/features/AiImageEnrichment/AiImageEnrichmentAfterCreateHandler.js +27 -0
- package/api/features/AiImageEnrichment/AiImageEnrichmentAfterCreateHandler.js.map +1 -0
- package/api/features/AiImageEnrichment/AiImageEnrichmentStreamRoute.d.ts +36 -0
- package/api/features/AiImageEnrichment/AiImageEnrichmentStreamRoute.js +92 -0
- package/api/features/AiImageEnrichment/AiImageEnrichmentStreamRoute.js.map +1 -0
- package/api/features/AiImageEnrichment/AiImageEnrichmentTask.d.ts +41 -0
- package/api/features/AiImageEnrichment/AiImageEnrichmentTask.js +95 -0
- package/api/features/AiImageEnrichment/AiImageEnrichmentTask.js.map +1 -0
- package/api/features/AiImageEnrichment/ApplyImageEnrichmentUseCase.d.ts +18 -0
- package/api/features/AiImageEnrichment/ApplyImageEnrichmentUseCase.js +50 -0
- package/api/features/AiImageEnrichment/ApplyImageEnrichmentUseCase.js.map +1 -0
- package/api/features/AiImageEnrichment/EnrichmentCapabilityDisabledError.d.ts +9 -0
- package/api/features/AiImageEnrichment/EnrichmentCapabilityDisabledError.js +8 -0
- package/api/features/AiImageEnrichment/EnrichmentCapabilityDisabledError.js.map +1 -0
- package/api/features/AiImageEnrichment/PrepareImageEnrichmentUseCase.d.ts +17 -0
- package/api/features/AiImageEnrichment/PrepareImageEnrichmentUseCase.js +47 -0
- package/api/features/AiImageEnrichment/PrepareImageEnrichmentUseCase.js.map +1 -0
- package/api/features/AiImageEnrichment/abstractions.d.ts +66 -0
- package/api/features/AiImageEnrichment/abstractions.js +12 -0
- package/api/features/AiImageEnrichment/abstractions.js.map +1 -0
- package/api/features/AiImageEnrichment/buildEnrichmentAiRequest.d.ts +12 -0
- package/api/features/AiImageEnrichment/buildEnrichmentAiRequest.js +30 -0
- package/api/features/AiImageEnrichment/buildEnrichmentAiRequest.js.map +1 -0
- package/api/features/AiImageEnrichment/capability.d.ts +18 -0
- package/api/features/AiImageEnrichment/capability.js +19 -0
- package/api/features/AiImageEnrichment/capability.js.map +1 -0
- package/api/features/AiImageEnrichment/errors.d.ts +33 -0
- package/api/features/AiImageEnrichment/errors.js +29 -0
- package/api/features/AiImageEnrichment/errors.js.map +1 -0
- package/api/features/AiImageEnrichment/feature.d.ts +4 -0
- package/api/features/AiImageEnrichment/feature.js +24 -0
- package/api/features/AiImageEnrichment/feature.js.map +1 -0
- package/api/features/AiImageEnrichment/imageEnrichmentErrorStatusCode.d.ts +6 -0
- package/api/features/AiImageEnrichment/imageEnrichmentErrorStatusCode.js +10 -0
- package/api/features/AiImageEnrichment/imageEnrichmentErrorStatusCode.js.map +1 -0
- package/api/features/AiImageEnrichment/readEnrichmentPartial.d.ts +8 -0
- package/api/features/AiImageEnrichment/readEnrichmentPartial.js +16 -0
- package/api/features/AiImageEnrichment/readEnrichmentPartial.js.map +1 -0
- package/api/features/AiImageEnrichment/streamEvents.d.ts +36 -0
- package/api/features/AiImageEnrichment/streamEvents.js +0 -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/Capabilities/AiCapabilityDisabledError.d.ts +16 -0
- package/api/features/Capabilities/AiCapabilityDisabledError.js +8 -0
- package/api/features/Capabilities/AiCapabilityDisabledError.js.map +1 -0
- package/api/features/Capabilities/AiModelNotAvailableError.d.ts +13 -0
- package/api/features/Capabilities/AiModelNotAvailableError.js +8 -0
- package/api/features/Capabilities/AiModelNotAvailableError.js.map +1 -0
- package/api/features/Capabilities/CapabilitiesHandler.d.ts +28 -0
- package/api/features/Capabilities/CapabilitiesHandler.js +56 -0
- package/api/features/Capabilities/CapabilitiesHandler.js.map +1 -0
- package/api/features/Capabilities/ListAiCapabilitiesUseCase.d.ts +18 -0
- package/api/features/Capabilities/ListAiCapabilitiesUseCase.js +28 -0
- package/api/features/Capabilities/ListAiCapabilitiesUseCase.js.map +1 -0
- package/api/features/Capabilities/ResolveAiCapabilityUseCase.d.ts +33 -0
- package/api/features/Capabilities/ResolveAiCapabilityUseCase.js +114 -0
- package/api/features/Capabilities/ResolveAiCapabilityUseCase.js.map +1 -0
- package/api/features/Capabilities/abstractions.d.ts +90 -0
- package/api/features/Capabilities/abstractions.js +7 -0
- package/api/features/Capabilities/abstractions.js.map +1 -0
- package/api/features/Capabilities/composeSystemPrompt.d.ts +14 -0
- package/api/features/Capabilities/composeSystemPrompt.js +13 -0
- package/api/features/Capabilities/composeSystemPrompt.js.map +1 -0
- package/api/features/Capabilities/feature.d.ts +4 -0
- package/api/features/Capabilities/feature.js +15 -0
- package/api/features/Capabilities/feature.js.map +1 -0
- package/api/features/Capabilities/index.d.ts +7 -0
- package/api/features/Capabilities/index.js +5 -0
- package/api/features/Capabilities/types.d.ts +86 -0
- package/api/features/Capabilities/types.js +4 -0
- package/api/features/Capabilities/types.js.map +1 -0
- package/api/features/CmsCompareEntryRevisions/CmsCompareEntryRevisionsUseCase.d.ts +20 -0
- package/api/features/CmsCompareEntryRevisions/CmsCompareEntryRevisionsUseCase.js +82 -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/capability.d.ts +13 -0
- package/api/features/CmsCompareEntryRevisions/capability.js +64 -0
- package/api/features/CmsCompareEntryRevisions/capability.js.map +1 -0
- package/api/features/CmsCompareEntryRevisions/feature.d.ts +4 -0
- package/api/features/CmsCompareEntryRevisions/feature.js +13 -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 +38 -0
- package/api/features/CmsGenerateEntryContent/CmsGenerateEntryContentTask.js +93 -0
- package/api/features/CmsGenerateEntryContent/CmsGenerateEntryContentTask.js.map +1 -0
- package/api/features/CmsGenerateEntryContent/CmsGenerateEntryContentUseCase.d.ts +27 -0
- package/api/features/CmsGenerateEntryContent/CmsGenerateEntryContentUseCase.js +133 -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/capability.d.ts +17 -0
- package/api/features/CmsGenerateEntryContent/capability.js +17 -0
- package/api/features/CmsGenerateEntryContent/capability.js.map +1 -0
- package/api/features/CmsGenerateEntryContent/feature.d.ts +4 -0
- package/api/features/CmsGenerateEntryContent/feature.js +15 -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/ConfiguredAiModels/ConfiguredAiModelsService.d.ts +18 -0
- package/api/features/ConfiguredAiModels/ConfiguredAiModelsService.js +92 -0
- package/api/features/ConfiguredAiModels/ConfiguredAiModelsService.js.map +1 -0
- package/api/features/ConfiguredAiModels/abstractions.d.ts +32 -0
- package/api/features/ConfiguredAiModels/abstractions.js +5 -0
- package/api/features/ConfiguredAiModels/abstractions.js.map +1 -0
- package/api/features/ConfiguredAiModels/feature.d.ts +4 -0
- package/api/features/ConfiguredAiModels/feature.js +11 -0
- package/api/features/ConfiguredAiModels/feature.js.map +1 -0
- package/api/features/ConfiguredAiModels/index.d.ts +2 -0
- package/api/features/ConfiguredAiModels/index.js +1 -0
- package/api/features/Connections/ConnectionsGraphQLMapper.d.ts +20 -0
- package/api/features/Connections/ConnectionsGraphQLMapper.js +37 -0
- package/api/features/Connections/ConnectionsGraphQLMapper.js.map +1 -0
- package/api/features/Connections/ConnectionsHandler.d.ts +25 -0
- package/api/features/Connections/ConnectionsHandler.js +84 -0
- package/api/features/Connections/ConnectionsHandler.js.map +1 -0
- package/api/features/Connections/feature.d.ts +4 -0
- package/api/features/Connections/feature.js +13 -0
- package/api/features/Connections/feature.js.map +1 -0
- package/api/features/Connections/index.d.ts +2 -0
- package/api/features/Connections/index.js +1 -0
- package/api/features/Connections/legacyProviders.d.ts +26 -0
- package/api/features/Connections/legacyProviders.js +9 -0
- package/api/features/Connections/legacyProviders.js.map +1 -0
- package/api/features/Connections/types.d.ts +36 -0
- package/api/features/Connections/types.js +0 -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/ModelRoles/ModelRolesHandler.d.ts +15 -0
- package/api/features/ModelRoles/ModelRolesHandler.js +74 -0
- package/api/features/ModelRoles/ModelRolesHandler.js.map +1 -0
- package/api/features/ModelRoles/feature.d.ts +4 -0
- package/api/features/ModelRoles/feature.js +11 -0
- package/api/features/ModelRoles/feature.js.map +1 -0
- package/api/features/ModelRoles/index.d.ts +4 -0
- package/api/features/ModelRoles/index.js +2 -0
- package/api/features/ModelRoles/roles.d.ts +16 -0
- package/api/features/ModelRoles/roles.js +9 -0
- package/api/features/ModelRoles/roles.js.map +1 -0
- package/api/features/ModelRoles/types.d.ts +21 -0
- package/api/features/ModelRoles/types.js +7 -0
- package/api/features/ModelRoles/types.js.map +1 -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/WbGeneratePageContentTask.d.ts +39 -0
- package/api/features/WbGeneratePageContent/WbGeneratePageContentTask.js +94 -0
- package/api/features/WbGeneratePageContent/WbGeneratePageContentTask.js.map +1 -0
- package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.d.ts +21 -0
- package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.js +113 -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/capability.d.ts +16 -0
- package/api/features/WbGeneratePageContent/capability.js +17 -0
- package/api/features/WbGeneratePageContent/capability.js.map +1 -0
- package/api/features/WbGeneratePageContent/feature.d.ts +4 -0
- package/api/features/WbGeneratePageContent/feature.js +15 -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/WbTranslateLayoutDecorator.d.ts +44 -0
- package/api/features/WbTranslatePage/WbTranslateLayoutDecorator.js +185 -0
- package/api/features/WbTranslatePage/WbTranslateLayoutDecorator.js.map +1 -0
- package/api/features/WbTranslatePage/WbTranslatePageDecorator.d.ts +38 -0
- package/api/features/WbTranslatePage/WbTranslatePageDecorator.js +163 -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/capability.d.ts +13 -0
- package/api/features/WbTranslatePage/capability.js +19 -0
- package/api/features/WbTranslatePage/capability.js.map +1 -0
- package/api/features/WbTranslatePage/feature.d.ts +4 -0
- package/api/features/WbTranslatePage/feature.js +20 -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/WbTranslatePage/translatableBindings.d.ts +21 -0
- package/api/features/WbTranslatePage/translatableBindings.js +57 -0
- package/api/features/WbTranslatePage/translatableBindings.js.map +1 -0
- package/api/features/WbTranslatePage/translatableGlobals.d.ts +21 -0
- package/api/features/WbTranslatePage/translatableGlobals.js +29 -0
- package/api/features/WbTranslatePage/translatableGlobals.js.map +1 -0
- package/api/features/WorkflowReview/AiStepRunner/AiStepRunner.d.ts +41 -0
- package/api/features/WorkflowReview/AiStepRunner/AiStepRunner.js +253 -0
- package/api/features/WorkflowReview/AiStepRunner/AiStepRunner.js.map +1 -0
- package/api/features/WorkflowReview/AiStepRunner/aiRunFailureReasons.d.ts +4 -0
- package/api/features/WorkflowReview/AiStepRunner/aiRunFailureReasons.js +7 -0
- package/api/features/WorkflowReview/AiStepRunner/aiRunFailureReasons.js.map +1 -0
- package/api/features/WorkflowReview/AiStepRunner/feature.d.ts +5 -0
- package/api/features/WorkflowReview/AiStepRunner/feature.js +11 -0
- package/api/features/WorkflowReview/AiStepRunner/feature.js.map +1 -0
- package/api/features/WorkflowReview/AiStepType/AiStepType.d.ts +53 -0
- package/api/features/WorkflowReview/AiStepType/AiStepType.js +121 -0
- package/api/features/WorkflowReview/AiStepType/AiStepType.js.map +1 -0
- package/api/features/WorkflowReview/ListWorkflowAiModels/ListWorkflowAiModelsUseCase.d.ts +17 -0
- package/api/features/WorkflowReview/ListWorkflowAiModels/ListWorkflowAiModelsUseCase.js +61 -0
- package/api/features/WorkflowReview/ListWorkflowAiModels/ListWorkflowAiModelsUseCase.js.map +1 -0
- package/api/features/WorkflowReview/ListWorkflowAiModels/abstractions.d.ts +32 -0
- package/api/features/WorkflowReview/ListWorkflowAiModels/abstractions.js +5 -0
- package/api/features/WorkflowReview/ListWorkflowAiModels/abstractions.js.map +1 -0
- package/api/features/WorkflowReview/ListWorkflowAiModels/feature.d.ts +4 -0
- package/api/features/WorkflowReview/ListWorkflowAiModels/feature.js +11 -0
- package/api/features/WorkflowReview/ListWorkflowAiModels/feature.js.map +1 -0
- package/api/features/WorkflowReview/ListWorkflowAiModels/index.d.ts +2 -0
- package/api/features/WorkflowReview/ListWorkflowAiModels/index.js +1 -0
- package/api/features/WorkflowReview/WorkflowsReviewCapability.d.ts +12 -0
- package/api/features/WorkflowReview/WorkflowsReviewCapability.js +38 -0
- package/api/features/WorkflowReview/WorkflowsReviewCapability.js.map +1 -0
- package/api/features/WorkflowReview/aiFailureReasons.d.ts +11 -0
- package/api/features/WorkflowReview/aiFailureReasons.js +9 -0
- package/api/features/WorkflowReview/aiFailureReasons.js.map +1 -0
- package/api/features/WorkflowReview/aiReviewOutputSchema.d.ts +29 -0
- package/api/features/WorkflowReview/aiReviewOutputSchema.js +28 -0
- package/api/features/WorkflowReview/aiReviewOutputSchema.js.map +1 -0
- package/api/features/WorkflowReview/aiStepConfigSchema.d.ts +13 -0
- package/api/features/WorkflowReview/aiStepConfigSchema.js +11 -0
- package/api/features/WorkflowReview/aiStepConfigSchema.js.map +1 -0
- package/api/features/WorkflowReview/buildAiStepPrompt.d.ts +35 -0
- package/api/features/WorkflowReview/buildAiStepPrompt.js +47 -0
- package/api/features/WorkflowReview/buildAiStepPrompt.js.map +1 -0
- package/api/features/WorkflowReview/constants.d.ts +8 -0
- package/api/features/WorkflowReview/constants.js +7 -0
- package/api/features/WorkflowReview/constants.js.map +1 -0
- package/api/features/WorkflowReview/toLoggedAiError.d.ts +13 -0
- package/api/features/WorkflowReview/toLoggedAiError.js +27 -0
- package/api/features/WorkflowReview/toLoggedAiError.js.map +1 -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 +38 -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/features/shared/modelId.d.ts +11 -0
- package/api/features/shared/modelId.js +4 -0
- package/api/features/shared/modelId.js.map +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 +9 -0
- package/api/graphql/BaseGraphQLSchema.js +194 -0
- package/api/graphql/BaseGraphQLSchema.js.map +1 -0
- package/api/graphql/CmsCompareEntryRevisionsSchema.d.ts +9 -0
- package/api/graphql/CmsCompareEntryRevisionsSchema.js +72 -0
- package/api/graphql/CmsCompareEntryRevisionsSchema.js.map +1 -0
- package/api/graphql/ListWorkflowAiModelsSchema.d.ts +15 -0
- package/api/graphql/ListWorkflowAiModelsSchema.js +48 -0
- package/api/graphql/ListWorkflowAiModelsSchema.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 +8 -0
- package/api/types.js +6 -0
- package/domain/LlmJsonResponse.d.ts +8 -0
- package/domain/LlmJsonResponse.js +38 -0
- package/domain/LlmJsonResponse.js.map +1 -0
- package/domain/TranslatableBindingKey.d.ts +17 -0
- package/domain/TranslatableBindingKey.js +23 -0
- package/domain/TranslatableBindingKey.js.map +1 -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 +7 -0
- package/exports/api/ai-powerups.js +5 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/package.json +72 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { UpdateFileUseCase } from "@webiny/api-file-manager/features/file/UpdateFile/index.js";
|
|
3
|
+
import { WebsocketsSendToIdentityUseCase } from "@webiny/api-websockets/features/SendToIdentity/abstractions.js";
|
|
4
|
+
import { IdentityContext } from "@webiny/api-core/exports/api/security.js";
|
|
5
|
+
import { ApplyImageEnrichmentUseCase } from "./abstractions.js";
|
|
6
|
+
import { EnrichmentPersistError } from "./errors.js";
|
|
7
|
+
const FILE_ENRICHMENT_WEBSOCKET_ACTION = "fm.file.enrichment";
|
|
8
|
+
class ApplyImageEnrichmentUseCaseImpl {
|
|
9
|
+
constructor(updateFile, identityContext, sendToIdentity){
|
|
10
|
+
this.updateFile = updateFile;
|
|
11
|
+
this.identityContext = identityContext;
|
|
12
|
+
this.sendToIdentity = sendToIdentity;
|
|
13
|
+
}
|
|
14
|
+
async execute(params) {
|
|
15
|
+
const { tags, description, fileId } = params;
|
|
16
|
+
const updateResult = await this.updateFile.execute({
|
|
17
|
+
id: fileId,
|
|
18
|
+
tags,
|
|
19
|
+
description
|
|
20
|
+
});
|
|
21
|
+
if (updateResult.isFail()) return Result.fail(new EnrichmentPersistError(updateResult.error.message));
|
|
22
|
+
const identity = this.identityContext.getIdentity();
|
|
23
|
+
await this.sendToIdentity.execute({
|
|
24
|
+
id: identity.id
|
|
25
|
+
}, {
|
|
26
|
+
action: FILE_ENRICHMENT_WEBSOCKET_ACTION,
|
|
27
|
+
data: {
|
|
28
|
+
id: fileId,
|
|
29
|
+
tags,
|
|
30
|
+
description
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
return Result.ok({
|
|
34
|
+
fileId,
|
|
35
|
+
tags,
|
|
36
|
+
description
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
const ApplyImageEnrichmentUseCase_ApplyImageEnrichmentUseCase = ApplyImageEnrichmentUseCase.createImplementation({
|
|
41
|
+
implementation: ApplyImageEnrichmentUseCaseImpl,
|
|
42
|
+
dependencies: [
|
|
43
|
+
UpdateFileUseCase,
|
|
44
|
+
IdentityContext,
|
|
45
|
+
WebsocketsSendToIdentityUseCase
|
|
46
|
+
]
|
|
47
|
+
});
|
|
48
|
+
export { ApplyImageEnrichmentUseCase_ApplyImageEnrichmentUseCase as ApplyImageEnrichmentUseCase, FILE_ENRICHMENT_WEBSOCKET_ACTION };
|
|
49
|
+
|
|
50
|
+
//# sourceMappingURL=ApplyImageEnrichmentUseCase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/AiImageEnrichment/ApplyImageEnrichmentUseCase.js","sources":["../../../../src/api/features/AiImageEnrichment/ApplyImageEnrichmentUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { UpdateFileUseCase } from \"@webiny/api-file-manager/features/file/UpdateFile/index.js\";\nimport { WebsocketsSendToIdentityUseCase } from \"@webiny/api-websockets/features/SendToIdentity/abstractions.js\";\nimport { IdentityContext } from \"@webiny/api-core/exports/api/security.js\";\nimport {\n ApplyImageEnrichmentUseCase as UseCaseAbstraction,\n type IApplyImageEnrichmentParams,\n type IAppliedImageEnrichment\n} from \"./abstractions.js\";\nimport { EnrichmentPersistError } from \"./errors.js\";\nimport type { ImageEnrichmentError } from \"./errors.js\";\n\nexport const FILE_ENRICHMENT_WEBSOCKET_ACTION = \"fm.file.enrichment\";\n\nclass ApplyImageEnrichmentUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private updateFile: UpdateFileUseCase.Interface,\n private identityContext: IdentityContext.Interface,\n private sendToIdentity: WebsocketsSendToIdentityUseCase.Interface\n ) {}\n\n async execute(\n params: IApplyImageEnrichmentParams\n ): Promise<Result<IAppliedImageEnrichment, ImageEnrichmentError>> {\n // Enrichment REPLACES both fields. Tags used to be merged into the file's existing ones while\n // the description was overwritten, which is an odd split: re-running would accumulate tags\n // forever, so a wrong tag from an earlier run could never be dropped by re-running.\n const { tags, description, fileId } = params;\n\n const updateResult = await this.updateFile.execute({\n id: fileId,\n tags,\n description\n });\n\n if (updateResult.isFail()) {\n return Result.fail(new EnrichmentPersistError(updateResult.error.message));\n }\n\n // Push to the identity's open sockets even when the caller is streaming: the browser tab that\n // triggered this isn't necessarily the only one showing the file, and the client-side list\n // cache updates off this message (see AiImageEnrichmentEventHandler in @webiny/app-file-manager).\n const identity = this.identityContext.getIdentity();\n await this.sendToIdentity.execute(\n { id: identity.id },\n {\n action: FILE_ENRICHMENT_WEBSOCKET_ACTION,\n data: { id: fileId, tags, description }\n }\n );\n\n return Result.ok({ fileId, tags, description });\n }\n}\n\nexport const ApplyImageEnrichmentUseCase = UseCaseAbstraction.createImplementation({\n implementation: ApplyImageEnrichmentUseCaseImpl,\n dependencies: [UpdateFileUseCase, IdentityContext, WebsocketsSendToIdentityUseCase]\n});\n"],"names":["FILE_ENRICHMENT_WEBSOCKET_ACTION","ApplyImageEnrichmentUseCaseImpl","updateFile","identityContext","sendToIdentity","params","tags","description","fileId","updateResult","Result","EnrichmentPersistError","identity","ApplyImageEnrichmentUseCase","UseCaseAbstraction","UpdateFileUseCase","IdentityContext","WebsocketsSendToIdentityUseCase"],"mappings":";;;;;;AAYO,MAAMA,mCAAmC;AAEhD,MAAMC;IACF,YACYC,UAAuC,EACvCC,eAA0C,EAC1CC,cAAyD,CACnE;aAHUF,UAAU,GAAVA;aACAC,eAAe,GAAfA;aACAC,cAAc,GAAdA;IACT;IAEH,MAAM,QACFC,MAAmC,EAC2B;QAI9D,MAAM,EAAEC,IAAI,EAAEC,WAAW,EAAEC,MAAM,EAAE,GAAGH;QAEtC,MAAMI,eAAe,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YAC/C,IAAID;YACJF;YACAC;QACJ;QAEA,IAAIE,aAAa,MAAM,IACnB,OAAOC,OAAO,IAAI,CAAC,IAAIC,uBAAuBF,aAAa,KAAK,CAAC,OAAO;QAM5E,MAAMG,WAAW,IAAI,CAAC,eAAe,CAAC,WAAW;QACjD,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B;YAAE,IAAIA,SAAS,EAAE;QAAC,GAClB;YACI,QAAQZ;YACR,MAAM;gBAAE,IAAIQ;gBAAQF;gBAAMC;YAAY;QAC1C;QAGJ,OAAOG,OAAO,EAAE,CAAC;YAAEF;YAAQF;YAAMC;QAAY;IACjD;AACJ;AAEO,MAAMM,0DAA8BC,4BAAAA,oBAAuC,CAAC;IAC/E,gBAAgBb;IAChB,cAAc;QAACc;QAAmBC;QAAiBC;KAAgC;AACvF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Image enrichment is switched off in settings. Not a failure: someone chose it, so the upload task
|
|
3
|
+
* finishes as done, the same as for a file that is not an image. Kept apart from
|
|
4
|
+
* `EnrichmentNoProviderError`, which is a real misconfiguration and should stay loud.
|
|
5
|
+
*/
|
|
6
|
+
export declare class EnrichmentCapabilityDisabledError extends Error {
|
|
7
|
+
readonly code: "ENRICHMENT_CAPABILITY_DISABLED";
|
|
8
|
+
constructor(reason: string);
|
|
9
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/AiImageEnrichment/EnrichmentCapabilityDisabledError.js","sources":["../../../../src/api/features/AiImageEnrichment/EnrichmentCapabilityDisabledError.ts"],"sourcesContent":["/**\n * Image enrichment is switched off in settings. Not a failure: someone chose it, so the upload task\n * finishes as done, the same as for a file that is not an image. Kept apart from\n * `EnrichmentNoProviderError`, which is a real misconfiguration and should stay loud.\n */\nexport class EnrichmentCapabilityDisabledError extends Error {\n readonly code = \"ENRICHMENT_CAPABILITY_DISABLED\" as const;\n\n constructor(reason: string) {\n super(reason);\n }\n}\n"],"names":["EnrichmentCapabilityDisabledError","Error","reason"],"mappings":"AAKO,MAAMA,0CAA0CC;IAGnD,YAAYC,MAAc,CAAE;QACxB,KAAK,CAACA,SAAAA,IAAAA,CAHD,IAAI,GAAG;IAIhB;AACJ"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { GetFileUseCase } from "@webiny/api-file-manager/features/file/GetFile/index.js";
|
|
3
|
+
import { GetFileContentsByIdUseCase } from "@webiny/api-file-manager/features/file/GetFileContentsById/abstractions.js";
|
|
4
|
+
import { PrepareImageEnrichmentUseCase as UseCaseAbstraction, type IPreparedImageEnrichment } from "./abstractions.js";
|
|
5
|
+
import { ResolveAiCapabilityUseCase } from "../../../api/features/Capabilities/index.js";
|
|
6
|
+
import type { ImageEnrichmentError } from "./errors.js";
|
|
7
|
+
declare class PrepareImageEnrichmentUseCaseImpl implements UseCaseAbstraction.Interface {
|
|
8
|
+
private getFile;
|
|
9
|
+
private getFileContents;
|
|
10
|
+
private resolveCapability;
|
|
11
|
+
constructor(getFile: GetFileUseCase.Interface, getFileContents: GetFileContentsByIdUseCase.Interface, resolveCapability: ResolveAiCapabilityUseCase.Interface);
|
|
12
|
+
execute(fileId: string): Promise<Result<IPreparedImageEnrichment, ImageEnrichmentError>>;
|
|
13
|
+
}
|
|
14
|
+
export declare const PrepareImageEnrichmentUseCase: typeof PrepareImageEnrichmentUseCaseImpl & {
|
|
15
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IPrepareImageEnrichmentUseCase>;
|
|
16
|
+
};
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { GetFileUseCase } from "@webiny/api-file-manager/features/file/GetFile/index.js";
|
|
3
|
+
import { GetFileContentsByIdUseCase } from "@webiny/api-file-manager/features/file/GetFileContentsById/abstractions.js";
|
|
4
|
+
import { PrepareImageEnrichmentUseCase } from "./abstractions.js";
|
|
5
|
+
import { AiCapabilityDisabledError, ResolveAiCapabilityUseCase, withAdditionalInstructions } from "../Capabilities/index.js";
|
|
6
|
+
import { FM_IMAGE_ENRICHMENT_CAPABILITY } from "./capability.js";
|
|
7
|
+
import { EnrichmentCapabilityDisabledError, EnrichmentFileContentsError, EnrichmentFileNotFoundError, EnrichmentNoProviderError, EnrichmentNotAnImageError } from "./errors.js";
|
|
8
|
+
class PrepareImageEnrichmentUseCaseImpl {
|
|
9
|
+
constructor(getFile, getFileContents, resolveCapability){
|
|
10
|
+
this.getFile = getFile;
|
|
11
|
+
this.getFileContents = getFileContents;
|
|
12
|
+
this.resolveCapability = resolveCapability;
|
|
13
|
+
}
|
|
14
|
+
async execute(fileId) {
|
|
15
|
+
const fileResult = await this.getFile.execute(fileId);
|
|
16
|
+
if (fileResult.isFail()) return Result.fail(new EnrichmentFileNotFoundError(fileId));
|
|
17
|
+
const file = fileResult.value;
|
|
18
|
+
if (!file.type.startsWith("image/")) return Result.fail(new EnrichmentNotAnImageError(file.type));
|
|
19
|
+
const resolved = await this.resolveCapability.execute(FM_IMAGE_ENRICHMENT_CAPABILITY);
|
|
20
|
+
if (resolved.isFail()) {
|
|
21
|
+
if (resolved.error instanceof AiCapabilityDisabledError) return Result.fail(new EnrichmentCapabilityDisabledError(resolved.error.message));
|
|
22
|
+
return Result.fail(new EnrichmentNoProviderError(resolved.error.message));
|
|
23
|
+
}
|
|
24
|
+
const capability = resolved.value;
|
|
25
|
+
const contentsResult = await this.getFileContents.execute(fileId);
|
|
26
|
+
if (contentsResult.isFail()) return Result.fail(new EnrichmentFileContentsError(contentsResult.error.message));
|
|
27
|
+
return Result.ok({
|
|
28
|
+
fileId: file.id,
|
|
29
|
+
imageBase64: contentsResult.value.buffer.toString("base64"),
|
|
30
|
+
imageMediaType: contentsResult.value.contentType,
|
|
31
|
+
model: capability.model,
|
|
32
|
+
prompt: withAdditionalInstructions(capability),
|
|
33
|
+
connection: capability.connection
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
const PrepareImageEnrichmentUseCase_PrepareImageEnrichmentUseCase = PrepareImageEnrichmentUseCase.createImplementation({
|
|
38
|
+
implementation: PrepareImageEnrichmentUseCaseImpl,
|
|
39
|
+
dependencies: [
|
|
40
|
+
GetFileUseCase,
|
|
41
|
+
GetFileContentsByIdUseCase,
|
|
42
|
+
ResolveAiCapabilityUseCase
|
|
43
|
+
]
|
|
44
|
+
});
|
|
45
|
+
export { PrepareImageEnrichmentUseCase_PrepareImageEnrichmentUseCase as PrepareImageEnrichmentUseCase };
|
|
46
|
+
|
|
47
|
+
//# sourceMappingURL=PrepareImageEnrichmentUseCase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/AiImageEnrichment/PrepareImageEnrichmentUseCase.js","sources":["../../../../src/api/features/AiImageEnrichment/PrepareImageEnrichmentUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { GetFileUseCase } from \"@webiny/api-file-manager/features/file/GetFile/index.js\";\nimport { GetFileContentsByIdUseCase } from \"@webiny/api-file-manager/features/file/GetFileContentsById/abstractions.js\";\nimport {\n PrepareImageEnrichmentUseCase as UseCaseAbstraction,\n type IPreparedImageEnrichment\n} from \"./abstractions.js\";\nimport { AiCapabilityDisabledError } from \"~/api/features/Capabilities/index.js\";\nimport {\n ResolveAiCapabilityUseCase,\n withAdditionalInstructions\n} from \"~/api/features/Capabilities/index.js\";\nimport { FM_IMAGE_ENRICHMENT_CAPABILITY } from \"./capability.js\";\nimport { EnrichmentCapabilityDisabledError } from \"./errors.js\";\nimport {\n EnrichmentFileContentsError,\n EnrichmentFileNotFoundError,\n EnrichmentNoProviderError,\n EnrichmentNotAnImageError\n} from \"./errors.js\";\nimport type { ImageEnrichmentError } from \"./errors.js\";\n\nclass PrepareImageEnrichmentUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private getFile: GetFileUseCase.Interface,\n private getFileContents: GetFileContentsByIdUseCase.Interface,\n private resolveCapability: ResolveAiCapabilityUseCase.Interface\n ) {}\n\n async execute(fileId: string): Promise<Result<IPreparedImageEnrichment, ImageEnrichmentError>> {\n const fileResult = await this.getFile.execute(fileId);\n if (fileResult.isFail()) {\n return Result.fail(new EnrichmentFileNotFoundError(fileId));\n }\n\n const file = fileResult.value;\n\n if (!file.type.startsWith(\"image/\")) {\n return Result.fail(new EnrichmentNotAnImageError(file.type));\n }\n\n /*\n * Resolved before the download, not after. Switched off is now a quiet, normal outcome, so\n * checking it last would pull the whole image from storage on every upload only to throw it\n * away, with nothing in the logs to show for it.\n */\n const resolved = await this.resolveCapability.execute(FM_IMAGE_ENRICHMENT_CAPABILITY);\n if (resolved.isFail()) {\n /*\n * Switched off is a decision, not a missing model, so it must not become the error\n * that callers treat as a misconfiguration.\n */\n if (resolved.error instanceof AiCapabilityDisabledError) {\n return Result.fail(new EnrichmentCapabilityDisabledError(resolved.error.message));\n }\n return Result.fail(new EnrichmentNoProviderError(resolved.error.message));\n }\n\n const capability = resolved.value;\n\n // Read the image bytes and send them to the AI as base64, NOT a URL. A URL forces the\n // provider to fetch the file — which fails for private/access-controlled files, leaks the\n // domain, and can't reach a non-public origin (e.g. local dev). base64 is a portable standard\n // that works on every setup. (Also resolves the AI-SDK \"image part\" deprecation.)\n const contentsResult = await this.getFileContents.execute(fileId);\n if (contentsResult.isFail()) {\n return Result.fail(new EnrichmentFileContentsError(contentsResult.error.message));\n }\n\n return Result.ok({\n fileId: file.id,\n imageBase64: contentsResult.value.buffer.toString(\"base64\"),\n imageMediaType: contentsResult.value.contentType,\n model: capability.model,\n prompt: withAdditionalInstructions(capability),\n connection: capability.connection\n });\n }\n}\n\nexport const PrepareImageEnrichmentUseCase = UseCaseAbstraction.createImplementation({\n implementation: PrepareImageEnrichmentUseCaseImpl,\n dependencies: [GetFileUseCase, GetFileContentsByIdUseCase, ResolveAiCapabilityUseCase]\n});\n"],"names":["PrepareImageEnrichmentUseCaseImpl","getFile","getFileContents","resolveCapability","fileId","fileResult","Result","EnrichmentFileNotFoundError","file","EnrichmentNotAnImageError","resolved","FM_IMAGE_ENRICHMENT_CAPABILITY","AiCapabilityDisabledError","EnrichmentCapabilityDisabledError","EnrichmentNoProviderError","capability","contentsResult","EnrichmentFileContentsError","withAdditionalInstructions","PrepareImageEnrichmentUseCase","UseCaseAbstraction","GetFileUseCase","GetFileContentsByIdUseCase","ResolveAiCapabilityUseCase"],"mappings":";;;;;;;AAsBA,MAAMA;IACF,YACYC,OAAiC,EACjCC,eAAqD,EACrDC,iBAAuD,CACjE;aAHUF,OAAO,GAAPA;aACAC,eAAe,GAAfA;aACAC,iBAAiB,GAAjBA;IACT;IAEH,MAAM,QAAQC,MAAc,EAAmE;QAC3F,MAAMC,aAAa,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAACD;QAC9C,IAAIC,WAAW,MAAM,IACjB,OAAOC,OAAO,IAAI,CAAC,IAAIC,4BAA4BH;QAGvD,MAAMI,OAAOH,WAAW,KAAK;QAE7B,IAAI,CAACG,KAAK,IAAI,CAAC,UAAU,CAAC,WACtB,OAAOF,OAAO,IAAI,CAAC,IAAIG,0BAA0BD,KAAK,IAAI;QAQ9D,MAAME,WAAW,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAACC;QACtD,IAAID,SAAS,MAAM,IAAI;YAKnB,IAAIA,SAAS,KAAK,YAAYE,2BAC1B,OAAON,OAAO,IAAI,CAAC,IAAIO,kCAAkCH,SAAS,KAAK,CAAC,OAAO;YAEnF,OAAOJ,OAAO,IAAI,CAAC,IAAIQ,0BAA0BJ,SAAS,KAAK,CAAC,OAAO;QAC3E;QAEA,MAAMK,aAAaL,SAAS,KAAK;QAMjC,MAAMM,iBAAiB,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAACZ;QAC1D,IAAIY,eAAe,MAAM,IACrB,OAAOV,OAAO,IAAI,CAAC,IAAIW,4BAA4BD,eAAe,KAAK,CAAC,OAAO;QAGnF,OAAOV,OAAO,EAAE,CAAC;YACb,QAAQE,KAAK,EAAE;YACf,aAAaQ,eAAe,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;YAClD,gBAAgBA,eAAe,KAAK,CAAC,WAAW;YAChD,OAAOD,WAAW,KAAK;YACvB,QAAQG,2BAA2BH;YACnC,YAAYA,WAAW,UAAU;QACrC;IACJ;AACJ;AAEO,MAAMI,8DAAgCC,8BAAAA,oBAAuC,CAAC;IACjF,gBAAgBpB;IAChB,cAAc;QAACqB;QAAgBC;QAA4BC;KAA2B;AAC1F"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import type { ImageEnrichmentError } from "./errors.js";
|
|
4
|
+
export declare const AI_ENRICHMENT_PROMPT = "Analyze this image and return up to 5 lowercase descriptive tags and one short sentence describing the image.";
|
|
5
|
+
/**
|
|
6
|
+
* The shape both entry points ask the model for. Exported as the bare zod schema rather than a
|
|
7
|
+
* ready-made `Output.object(...)`: the AI SDK's `Output` type can't be named in emitted declarations
|
|
8
|
+
* (TS4023), so each call site wraps this locally instead.
|
|
9
|
+
*/
|
|
10
|
+
export declare const aiEnrichmentSchema: z.ZodObject<{
|
|
11
|
+
tags: z.ZodArray<z.ZodString>;
|
|
12
|
+
description: z.ZodString;
|
|
13
|
+
}, z.core.$strip>;
|
|
14
|
+
/** The enrichment result: what the model produces and what gets persisted. */
|
|
15
|
+
export interface IEnrichmentOutput {
|
|
16
|
+
tags: string[];
|
|
17
|
+
description: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Everything needed to run the AI call, gathered up front: the image bytes, the resolved provider,
|
|
21
|
+
* and the file's current tags (needed to merge rather than overwrite).
|
|
22
|
+
*
|
|
23
|
+
* Deliberately split from the AI call itself so both entry points share the same preparation and the
|
|
24
|
+
* same failure modes — and so the streaming route can answer with a real HTTP status code for
|
|
25
|
+
* anything knowable before the stream opens, instead of burying it in a 200 response.
|
|
26
|
+
*/
|
|
27
|
+
export interface IPreparedImageEnrichment {
|
|
28
|
+
fileId: string;
|
|
29
|
+
imageBase64: string;
|
|
30
|
+
imageMediaType: string;
|
|
31
|
+
model: string;
|
|
32
|
+
/**
|
|
33
|
+
* The resolved prompt: this capability's guidance (or the project's replacement for it) with
|
|
34
|
+
* the project's additional instructions appended. `AI_ENRICHMENT_PROMPT` is the default that
|
|
35
|
+
* feeds it, not what gets sent.
|
|
36
|
+
*/
|
|
37
|
+
prompt: string;
|
|
38
|
+
connection: {
|
|
39
|
+
sdkName: string;
|
|
40
|
+
apiKey: string;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export interface IPrepareImageEnrichmentUseCase {
|
|
44
|
+
execute(fileId: string): Promise<Result<IPreparedImageEnrichment, ImageEnrichmentError>>;
|
|
45
|
+
}
|
|
46
|
+
export declare const PrepareImageEnrichmentUseCase: import("@webiny/di").Abstraction<IPrepareImageEnrichmentUseCase>;
|
|
47
|
+
export declare namespace PrepareImageEnrichmentUseCase {
|
|
48
|
+
type Interface = IPrepareImageEnrichmentUseCase;
|
|
49
|
+
}
|
|
50
|
+
export interface IApplyImageEnrichmentParams {
|
|
51
|
+
fileId: string;
|
|
52
|
+
tags: string[];
|
|
53
|
+
description: string;
|
|
54
|
+
}
|
|
55
|
+
export interface IAppliedImageEnrichment {
|
|
56
|
+
fileId: string;
|
|
57
|
+
tags: string[];
|
|
58
|
+
description: string;
|
|
59
|
+
}
|
|
60
|
+
export interface IApplyImageEnrichmentUseCase {
|
|
61
|
+
execute(params: IApplyImageEnrichmentParams): Promise<Result<IAppliedImageEnrichment, ImageEnrichmentError>>;
|
|
62
|
+
}
|
|
63
|
+
export declare const ApplyImageEnrichmentUseCase: import("@webiny/di").Abstraction<IApplyImageEnrichmentUseCase>;
|
|
64
|
+
export declare namespace ApplyImageEnrichmentUseCase {
|
|
65
|
+
type Interface = IApplyImageEnrichmentUseCase;
|
|
66
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { createAbstraction } from "@webiny/feature/api";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
const AI_ENRICHMENT_PROMPT = "Analyze this image and return up to 5 lowercase descriptive tags and one short sentence describing the image.";
|
|
4
|
+
const aiEnrichmentSchema = z.object({
|
|
5
|
+
tags: z.array(z.string()),
|
|
6
|
+
description: z.string()
|
|
7
|
+
});
|
|
8
|
+
const PrepareImageEnrichmentUseCase = createAbstraction("PrepareImageEnrichmentUseCase");
|
|
9
|
+
const ApplyImageEnrichmentUseCase = createAbstraction("ApplyImageEnrichmentUseCase");
|
|
10
|
+
export { AI_ENRICHMENT_PROMPT, ApplyImageEnrichmentUseCase, PrepareImageEnrichmentUseCase, aiEnrichmentSchema };
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=abstractions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/AiImageEnrichment/abstractions.js","sources":["../../../../src/api/features/AiImageEnrichment/abstractions.ts"],"sourcesContent":["import { createAbstraction, Result } from \"@webiny/feature/api\";\nimport { z } from \"zod\";\nimport type { ImageEnrichmentError } from \"./errors.js\";\n\nexport const AI_ENRICHMENT_PROMPT =\n \"Analyze this image and return up to 5 lowercase descriptive tags and one short sentence describing the image.\";\n\n/**\n * The shape both entry points ask the model for. Exported as the bare zod schema rather than a\n * ready-made `Output.object(...)`: the AI SDK's `Output` type can't be named in emitted declarations\n * (TS4023), so each call site wraps this locally instead.\n */\nexport const aiEnrichmentSchema = z.object({\n tags: z.array(z.string()),\n description: z.string()\n});\n\n/** The enrichment result: what the model produces and what gets persisted. */\nexport interface IEnrichmentOutput {\n tags: string[];\n description: string;\n}\n\n/**\n * Everything needed to run the AI call, gathered up front: the image bytes, the resolved provider,\n * and the file's current tags (needed to merge rather than overwrite).\n *\n * Deliberately split from the AI call itself so both entry points share the same preparation and the\n * same failure modes — and so the streaming route can answer with a real HTTP status code for\n * anything knowable before the stream opens, instead of burying it in a 200 response.\n */\nexport interface IPreparedImageEnrichment {\n fileId: string;\n imageBase64: string;\n imageMediaType: string;\n model: string;\n /**\n * The resolved prompt: this capability's guidance (or the project's replacement for it) with\n * the project's additional instructions appended. `AI_ENRICHMENT_PROMPT` is the default that\n * feeds it, not what gets sent.\n */\n prompt: string;\n connection: {\n sdkName: string;\n apiKey: string;\n };\n}\n\nexport interface IPrepareImageEnrichmentUseCase {\n execute(fileId: string): Promise<Result<IPreparedImageEnrichment, ImageEnrichmentError>>;\n}\n\nexport const PrepareImageEnrichmentUseCase = createAbstraction<IPrepareImageEnrichmentUseCase>(\n \"PrepareImageEnrichmentUseCase\"\n);\n\nexport namespace PrepareImageEnrichmentUseCase {\n export type Interface = IPrepareImageEnrichmentUseCase;\n}\n\nexport interface IApplyImageEnrichmentParams {\n fileId: string;\n tags: string[];\n description: string;\n}\n\nexport interface IAppliedImageEnrichment {\n fileId: string;\n tags: string[];\n description: string;\n}\n\nexport interface IApplyImageEnrichmentUseCase {\n execute(\n params: IApplyImageEnrichmentParams\n ): Promise<Result<IAppliedImageEnrichment, ImageEnrichmentError>>;\n}\n\nexport const ApplyImageEnrichmentUseCase = createAbstraction<IApplyImageEnrichmentUseCase>(\n \"ApplyImageEnrichmentUseCase\"\n);\n\nexport namespace ApplyImageEnrichmentUseCase {\n export type Interface = IApplyImageEnrichmentUseCase;\n}\n"],"names":["AI_ENRICHMENT_PROMPT","aiEnrichmentSchema","z","PrepareImageEnrichmentUseCase","createAbstraction","ApplyImageEnrichmentUseCase"],"mappings":";;AAIO,MAAMA,uBACT;AAOG,MAAMC,qBAAqBC,EAAE,MAAM,CAAC;IACvC,MAAMA,EAAE,KAAK,CAACA,EAAE,MAAM;IACtB,aAAaA,EAAE,MAAM;AACzB;AAqCO,MAAMC,gCAAgCC,kBACzC;AAyBG,MAAMC,8BAA8BD,kBACvC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Ai } from "@webiny/api-core/features/ai/index.js";
|
|
2
|
+
import type { IPreparedImageEnrichment } from "./abstractions.js";
|
|
3
|
+
/**
|
|
4
|
+
* Builds the AI request both enrichment entry points send — the background task via `generateText`
|
|
5
|
+
* and the streaming route via `streamText`. Identical model, structured output, connection, and
|
|
6
|
+
* message payload; only the call differs.
|
|
7
|
+
*
|
|
8
|
+
* This is also where `Output.object(...)` lives rather than on `IPreparedImageEnrichment`: the AI
|
|
9
|
+
* SDK's `Output` type can't be named in emitted declarations (TS4023), so it has to be built inside a
|
|
10
|
+
* function body, not held on an exported interface.
|
|
11
|
+
*/
|
|
12
|
+
export declare function buildEnrichmentAiRequest(prepared: IPreparedImageEnrichment): Ai.GenerateTextParams;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Output } from "ai";
|
|
2
|
+
import { aiEnrichmentSchema } from "./abstractions.js";
|
|
3
|
+
function buildEnrichmentAiRequest(prepared) {
|
|
4
|
+
return {
|
|
5
|
+
model: prepared.model,
|
|
6
|
+
output: Output.object({
|
|
7
|
+
schema: aiEnrichmentSchema
|
|
8
|
+
}),
|
|
9
|
+
connection: prepared.connection,
|
|
10
|
+
messages: [
|
|
11
|
+
{
|
|
12
|
+
role: "user",
|
|
13
|
+
content: [
|
|
14
|
+
{
|
|
15
|
+
type: "file",
|
|
16
|
+
data: prepared.imageBase64,
|
|
17
|
+
mediaType: prepared.imageMediaType
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
type: "text",
|
|
21
|
+
text: prepared.prompt
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
}
|
|
25
|
+
]
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export { buildEnrichmentAiRequest };
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=buildEnrichmentAiRequest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/AiImageEnrichment/buildEnrichmentAiRequest.js","sources":["../../../../src/api/features/AiImageEnrichment/buildEnrichmentAiRequest.ts"],"sourcesContent":["import { Output } from \"ai\";\nimport type { Ai } from \"@webiny/api-core/features/ai/index.js\";\nimport { aiEnrichmentSchema } from \"./abstractions.js\";\nimport type { IPreparedImageEnrichment } from \"./abstractions.js\";\n\n/**\n * Builds the AI request both enrichment entry points send — the background task via `generateText`\n * and the streaming route via `streamText`. Identical model, structured output, connection, and\n * message payload; only the call differs.\n *\n * This is also where `Output.object(...)` lives rather than on `IPreparedImageEnrichment`: the AI\n * SDK's `Output` type can't be named in emitted declarations (TS4023), so it has to be built inside a\n * function body, not held on an exported interface.\n */\nexport function buildEnrichmentAiRequest(\n prepared: IPreparedImageEnrichment\n): Ai.GenerateTextParams {\n return {\n model: prepared.model,\n output: Output.object({ schema: aiEnrichmentSchema }),\n connection: prepared.connection,\n messages: [\n {\n role: \"user\",\n content: [\n {\n // Sent as base64, not a URL: a URL forces the provider to fetch the file,\n // which fails for private files and can't reach a non-public origin.\n type: \"file\",\n data: prepared.imageBase64,\n mediaType: prepared.imageMediaType\n },\n {\n type: \"text\",\n text: prepared.prompt\n }\n ]\n }\n ]\n };\n}\n"],"names":["buildEnrichmentAiRequest","prepared","Output","aiEnrichmentSchema"],"mappings":";;AAcO,SAASA,yBACZC,QAAkC;IAElC,OAAO;QACH,OAAOA,SAAS,KAAK;QACrB,QAAQC,OAAO,MAAM,CAAC;YAAE,QAAQC;QAAmB;QACnD,YAAYF,SAAS,UAAU;QAC/B,UAAU;YACN;gBACI,MAAM;gBACN,SAAS;oBACL;wBAGI,MAAM;wBACN,MAAMA,SAAS,WAAW;wBAC1B,WAAWA,SAAS,cAAc;oBACtC;oBACA;wBACI,MAAM;wBACN,MAAMA,SAAS,MAAM;oBACzB;iBACH;YACL;SACH;IACL;AACJ"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { AiCapability } from "../../../api/features/Capabilities/index.js";
|
|
2
|
+
export declare const FM_IMAGE_ENRICHMENT_CAPABILITY = "fmImageEnrichment";
|
|
3
|
+
declare class FmImageEnrichmentCapabilityImpl implements AiCapability.Interface {
|
|
4
|
+
readonly id = "fmImageEnrichment";
|
|
5
|
+
readonly label = "Image enrichment";
|
|
6
|
+
readonly description = "Reads an uploaded image and writes its alt text, title and tags. Needs a model that accepts image input.";
|
|
7
|
+
readonly defaultRole: "vision";
|
|
8
|
+
/**
|
|
9
|
+
* The one prompt here whose structure does not come from the prose: `Output.object(...)` in
|
|
10
|
+
* `buildEnrichmentAiRequest` enforces the tags/description shape. Projects still adjust it by
|
|
11
|
+
* appending, which is where house tag vocabularies go ("use our taxonomy", "British spelling").
|
|
12
|
+
*/
|
|
13
|
+
readonly guidance = "Analyze this image and return up to 5 lowercase descriptive tags and one short sentence describing the image.";
|
|
14
|
+
}
|
|
15
|
+
export declare const FmImageEnrichmentCapability: typeof FmImageEnrichmentCapabilityImpl & {
|
|
16
|
+
__abstraction: import("@webiny/di").Abstraction<import("~/api/features/Capabilities/index.js").IAiCapability>;
|
|
17
|
+
};
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { AiCapability } from "../Capabilities/index.js";
|
|
2
|
+
import { AI_ENRICHMENT_PROMPT } from "./abstractions.js";
|
|
3
|
+
const FM_IMAGE_ENRICHMENT_CAPABILITY = "fmImageEnrichment";
|
|
4
|
+
class FmImageEnrichmentCapabilityImpl {
|
|
5
|
+
constructor(){
|
|
6
|
+
this.id = FM_IMAGE_ENRICHMENT_CAPABILITY;
|
|
7
|
+
this.label = "Image enrichment";
|
|
8
|
+
this.description = "Reads an uploaded image and writes its alt text, title and tags. Needs a model that accepts image input.";
|
|
9
|
+
this.defaultRole = "vision";
|
|
10
|
+
this.guidance = AI_ENRICHMENT_PROMPT;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
const FmImageEnrichmentCapability = AiCapability.createImplementation({
|
|
14
|
+
implementation: FmImageEnrichmentCapabilityImpl,
|
|
15
|
+
dependencies: []
|
|
16
|
+
});
|
|
17
|
+
export { FM_IMAGE_ENRICHMENT_CAPABILITY, FmImageEnrichmentCapability };
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=capability.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/AiImageEnrichment/capability.js","sources":["../../../../src/api/features/AiImageEnrichment/capability.ts"],"sourcesContent":["import { AiCapability } from \"~/api/features/Capabilities/index.js\";\nimport { AI_ENRICHMENT_PROMPT } from \"./abstractions.js\";\n\nexport const FM_IMAGE_ENRICHMENT_CAPABILITY = \"fmImageEnrichment\";\n\nclass FmImageEnrichmentCapabilityImpl implements AiCapability.Interface {\n readonly id = FM_IMAGE_ENRICHMENT_CAPABILITY;\n readonly label = \"Image enrichment\";\n readonly description =\n \"Reads an uploaded image and writes its alt text, title and tags. Needs a model that accepts image input.\";\n readonly defaultRole = \"vision\" as const;\n /**\n * The one prompt here whose structure does not come from the prose: `Output.object(...)` in\n * `buildEnrichmentAiRequest` enforces the tags/description shape. Projects still adjust it by\n * appending, which is where house tag vocabularies go (\"use our taxonomy\", \"British spelling\").\n */\n readonly guidance = AI_ENRICHMENT_PROMPT;\n}\n\nexport const FmImageEnrichmentCapability = AiCapability.createImplementation({\n implementation: FmImageEnrichmentCapabilityImpl,\n dependencies: []\n});\n"],"names":["FM_IMAGE_ENRICHMENT_CAPABILITY","FmImageEnrichmentCapabilityImpl","AI_ENRICHMENT_PROMPT","FmImageEnrichmentCapability","AiCapability"],"mappings":";;AAGO,MAAMA,iCAAiC;AAE9C,MAAMC;;aACO,EAAE,GAAGD;aACL,KAAK,GAAG;aACR,WAAW,GAChB;aACK,WAAW,GAAG;QAKtB,KACQ,QAAQ,GAAGE;;AACxB;AAEO,MAAMC,8BAA8BC,aAAa,oBAAoB,CAAC;IACzE,gBAAgBH;IAChB,cAAc,EAAE;AACpB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { EnrichmentCapabilityDisabledError } from "./EnrichmentCapabilityDisabledError.js";
|
|
2
|
+
export { EnrichmentCapabilityDisabledError } from "./EnrichmentCapabilityDisabledError.js";
|
|
3
|
+
/**
|
|
4
|
+
* Errors shared by every image-enrichment entry point (the background task and the streaming HTTP
|
|
5
|
+
* route). Each carries a `code` so callers can map it to their own transport: the task turns them
|
|
6
|
+
* into task results, the route into HTTP status codes.
|
|
7
|
+
*/
|
|
8
|
+
export declare class EnrichmentFileNotFoundError extends Error {
|
|
9
|
+
readonly code: "ENRICHMENT_FILE_NOT_FOUND";
|
|
10
|
+
constructor(fileId: string);
|
|
11
|
+
}
|
|
12
|
+
export declare class EnrichmentNotAnImageError extends Error {
|
|
13
|
+
readonly code: "ENRICHMENT_NOT_AN_IMAGE";
|
|
14
|
+
constructor(type: string);
|
|
15
|
+
}
|
|
16
|
+
export declare class EnrichmentFileContentsError extends Error {
|
|
17
|
+
readonly code: "ENRICHMENT_FILE_CONTENTS_UNREADABLE";
|
|
18
|
+
constructor(reason: string);
|
|
19
|
+
}
|
|
20
|
+
export declare class EnrichmentNoProviderError extends Error {
|
|
21
|
+
readonly code: "ENRICHMENT_NO_AI_PROVIDER";
|
|
22
|
+
/**
|
|
23
|
+
* The reason comes from capability resolution, which knows which of the several ways this can
|
|
24
|
+
* fail actually happened: no model in the Vision role, a deleted connection, a missing key.
|
|
25
|
+
* Passing it through beats replacing all of them with one generic sentence.
|
|
26
|
+
*/
|
|
27
|
+
constructor(reason?: string);
|
|
28
|
+
}
|
|
29
|
+
export declare class EnrichmentPersistError extends Error {
|
|
30
|
+
readonly code: "ENRICHMENT_PERSIST_FAILED";
|
|
31
|
+
constructor(reason: string);
|
|
32
|
+
}
|
|
33
|
+
export type ImageEnrichmentError = EnrichmentFileNotFoundError | EnrichmentNotAnImageError | EnrichmentFileContentsError | EnrichmentNoProviderError | EnrichmentCapabilityDisabledError | EnrichmentPersistError;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
class EnrichmentFileNotFoundError extends Error {
|
|
2
|
+
constructor(fileId){
|
|
3
|
+
super(`File not found: ${fileId}`), this.code = "ENRICHMENT_FILE_NOT_FOUND";
|
|
4
|
+
}
|
|
5
|
+
}
|
|
6
|
+
class EnrichmentNotAnImageError extends Error {
|
|
7
|
+
constructor(type){
|
|
8
|
+
super(`File is not an image (received "${type}"); skipping AI enrichment.`), this.code = "ENRICHMENT_NOT_AN_IMAGE";
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
class EnrichmentFileContentsError extends Error {
|
|
12
|
+
constructor(reason){
|
|
13
|
+
super(`Unable to read file contents: ${reason}`), this.code = "ENRICHMENT_FILE_CONTENTS_UNREADABLE";
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
class EnrichmentNoProviderError extends Error {
|
|
17
|
+
constructor(reason){
|
|
18
|
+
super(reason ?? "No AI model is configured for image enrichment. Pick one under Settings → AI Power-Ups → Model roles."), this.code = "ENRICHMENT_NO_AI_PROVIDER";
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
class EnrichmentPersistError extends Error {
|
|
22
|
+
constructor(reason){
|
|
23
|
+
super(`Failed to update file: ${reason}`), this.code = "ENRICHMENT_PERSIST_FAILED";
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export { EnrichmentCapabilityDisabledError } from "./EnrichmentCapabilityDisabledError.js";
|
|
27
|
+
export { EnrichmentFileContentsError, EnrichmentFileNotFoundError, EnrichmentNoProviderError, EnrichmentNotAnImageError, EnrichmentPersistError };
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/AiImageEnrichment/errors.js","sources":["../../../../src/api/features/AiImageEnrichment/errors.ts"],"sourcesContent":["import type { EnrichmentCapabilityDisabledError } from \"./EnrichmentCapabilityDisabledError.js\";\n\n/* Its own file, one class per file, but re-exported so every caller imports errors from here. */\nexport { EnrichmentCapabilityDisabledError } from \"./EnrichmentCapabilityDisabledError.js\";\n\n/**\n * Errors shared by every image-enrichment entry point (the background task and the streaming HTTP\n * route). Each carries a `code` so callers can map it to their own transport: the task turns them\n * into task results, the route into HTTP status codes.\n */\nexport class EnrichmentFileNotFoundError extends Error {\n readonly code = \"ENRICHMENT_FILE_NOT_FOUND\" as const;\n\n constructor(fileId: string) {\n super(`File not found: ${fileId}`);\n }\n}\n\nexport class EnrichmentNotAnImageError extends Error {\n readonly code = \"ENRICHMENT_NOT_AN_IMAGE\" as const;\n\n constructor(type: string) {\n super(`File is not an image (received \"${type}\"); skipping AI enrichment.`);\n }\n}\n\nexport class EnrichmentFileContentsError extends Error {\n readonly code = \"ENRICHMENT_FILE_CONTENTS_UNREADABLE\" as const;\n\n constructor(reason: string) {\n super(`Unable to read file contents: ${reason}`);\n }\n}\n\nexport class EnrichmentNoProviderError extends Error {\n readonly code = \"ENRICHMENT_NO_AI_PROVIDER\" as const;\n\n /**\n * The reason comes from capability resolution, which knows which of the several ways this can\n * fail actually happened: no model in the Vision role, a deleted connection, a missing key.\n * Passing it through beats replacing all of them with one generic sentence.\n */\n constructor(reason?: string) {\n super(\n reason ??\n \"No AI model is configured for image enrichment. Pick one under Settings → AI Power-Ups → Model roles.\"\n );\n }\n}\n\nexport class EnrichmentPersistError extends Error {\n readonly code = \"ENRICHMENT_PERSIST_FAILED\" as const;\n\n constructor(reason: string) {\n super(`Failed to update file: ${reason}`);\n }\n}\n\nexport type ImageEnrichmentError =\n | EnrichmentFileNotFoundError\n | EnrichmentNotAnImageError\n | EnrichmentFileContentsError\n | EnrichmentNoProviderError\n | EnrichmentCapabilityDisabledError\n | EnrichmentPersistError;\n"],"names":["EnrichmentFileNotFoundError","Error","fileId","EnrichmentNotAnImageError","type","EnrichmentFileContentsError","reason","EnrichmentNoProviderError","EnrichmentPersistError"],"mappings":"AAUO,MAAMA,oCAAoCC;IAG7C,YAAYC,MAAc,CAAE;QACxB,KAAK,CAAC,CAAC,gBAAgB,EAAEA,QAAQ,QAH5B,IAAI,GAAG;IAIhB;AACJ;AAEO,MAAMC,kCAAkCF;IAG3C,YAAYG,IAAY,CAAE;QACtB,KAAK,CAAC,CAAC,gCAAgC,EAAEA,KAAK,2BAA2B,CAAC,QAHrE,IAAI,GAAG;IAIhB;AACJ;AAEO,MAAMC,oCAAoCJ;IAG7C,YAAYK,MAAc,CAAE;QACxB,KAAK,CAAC,CAAC,8BAA8B,EAAEA,QAAQ,QAH1C,IAAI,GAAG;IAIhB;AACJ;AAEO,MAAMC,kCAAkCN;IAQ3C,YAAYK,MAAe,CAAE;QACzB,KAAK,CACDA,UACI,+GAVH,IAAI,GAAG;IAYhB;AACJ;AAEO,MAAME,+BAA+BP;IAGxC,YAAYK,MAAc,CAAE;QACxB,KAAK,CAAC,CAAC,uBAAuB,EAAEA,QAAQ,QAHnC,IAAI,GAAG;IAIhB;AACJ"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { FeatureFlags } from "@webiny/api-core/features/featureFlags/abstractions.js";
|
|
3
|
+
import { AiImageEnrichmentAfterCreateHandler } from "./AiImageEnrichmentAfterCreateHandler.js";
|
|
4
|
+
import { AiImageEnrichmentTask } from "./AiImageEnrichmentTask.js";
|
|
5
|
+
import { AiImageEnrichmentStreamRouteDefinition } from "./AiImageEnrichmentStreamRoute.js";
|
|
6
|
+
import { PrepareImageEnrichmentUseCase } from "./PrepareImageEnrichmentUseCase.js";
|
|
7
|
+
import { ApplyImageEnrichmentUseCase } from "./ApplyImageEnrichmentUseCase.js";
|
|
8
|
+
import { FmImageEnrichmentCapability } from "./capability.js";
|
|
9
|
+
const AiImageEnrichmentFeature = createFeature({
|
|
10
|
+
name: "AiPowerUps/AiImageEnrichment",
|
|
11
|
+
register (container) {
|
|
12
|
+
const enabled = container.resolve(FeatureFlags).get().isEnabled("aiPowerups.fileManager.imageEnrichment");
|
|
13
|
+
if (!enabled) return;
|
|
14
|
+
container.register(FmImageEnrichmentCapability);
|
|
15
|
+
container.register(PrepareImageEnrichmentUseCase);
|
|
16
|
+
container.register(ApplyImageEnrichmentUseCase);
|
|
17
|
+
container.register(AiImageEnrichmentAfterCreateHandler);
|
|
18
|
+
container.register(AiImageEnrichmentTask);
|
|
19
|
+
container.register(AiImageEnrichmentStreamRouteDefinition);
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
export { AiImageEnrichmentFeature };
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/AiImageEnrichment/feature.js","sources":["../../../../src/api/features/AiImageEnrichment/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { FeatureFlags } from \"@webiny/api-core/features/featureFlags/abstractions.js\";\nimport { AiImageEnrichmentAfterCreateHandler } from \"./AiImageEnrichmentAfterCreateHandler.js\";\nimport { AiImageEnrichmentTask } from \"./AiImageEnrichmentTask.js\";\nimport { AiImageEnrichmentStreamRouteDefinition } from \"./AiImageEnrichmentStreamRoute.js\";\nimport { PrepareImageEnrichmentUseCase } from \"./PrepareImageEnrichmentUseCase.js\";\nimport { ApplyImageEnrichmentUseCase } from \"./ApplyImageEnrichmentUseCase.js\";\nimport { FmImageEnrichmentCapability } from \"./capability.js\";\n\nexport const AiImageEnrichmentFeature = createFeature({\n name: \"AiPowerUps/AiImageEnrichment\",\n register(container) {\n // Register-time gate on the effective feature flags (userFlag && live WCP license). Valid at\n // register() time because the license is refreshed PRE-register (WcpLicenseLoader.load() in\n // registerApiRequestStack) and FeatureFlags reads that process cache — and it re-evaluates per\n // request since the child re-registers, so a license change takes effect on the next request.\n const enabled = container\n .resolve(FeatureFlags)\n .get()\n .isEnabled(\"aiPowerups.fileManager.imageEnrichment\");\n\n if (!enabled) {\n return;\n }\n\n // Registered inside the gate, so a project without the license does not get a settings\n // row for a feature it cannot use.\n container.register(FmImageEnrichmentCapability);\n container.register(PrepareImageEnrichmentUseCase);\n container.register(ApplyImageEnrichmentUseCase);\n\n // Automatic enrichment after a file is created.\n container.register(AiImageEnrichmentAfterCreateHandler);\n container.register(AiImageEnrichmentTask);\n\n // On-demand re-enrichment, streamed.\n container.register(AiImageEnrichmentStreamRouteDefinition);\n }\n});\n"],"names":["AiImageEnrichmentFeature","createFeature","container","enabled","FeatureFlags","FmImageEnrichmentCapability","PrepareImageEnrichmentUseCase","ApplyImageEnrichmentUseCase","AiImageEnrichmentAfterCreateHandler","AiImageEnrichmentTask","AiImageEnrichmentStreamRouteDefinition"],"mappings":";;;;;;;;AASO,MAAMA,2BAA2BC,cAAc;IAClD,MAAM;IACN,UAASC,SAAS;QAKd,MAAMC,UAAUD,UACX,OAAO,CAACE,cACR,GAAG,GACH,SAAS,CAAC;QAEf,IAAI,CAACD,SACD;QAKJD,UAAU,QAAQ,CAACG;QACnBH,UAAU,QAAQ,CAACI;QACnBJ,UAAU,QAAQ,CAACK;QAGnBL,UAAU,QAAQ,CAACM;QACnBN,UAAU,QAAQ,CAACO;QAGnBP,UAAU,QAAQ,CAACQ;IACvB;AACJ"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ImageEnrichmentError } from "./errors.js";
|
|
2
|
+
/**
|
|
3
|
+
* Maps an enrichment failure to the HTTP status a transport should answer with. Lives next to the
|
|
4
|
+
* errors rather than in a route, so a second entry point can't invent a different mapping.
|
|
5
|
+
*/
|
|
6
|
+
export declare function imageEnrichmentErrorStatusCode(error: ImageEnrichmentError): number;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { EnrichmentCapabilityDisabledError, EnrichmentFileNotFoundError, EnrichmentNotAnImageError } from "./errors.js";
|
|
2
|
+
function imageEnrichmentErrorStatusCode(error) {
|
|
3
|
+
if (error instanceof EnrichmentFileNotFoundError) return 404;
|
|
4
|
+
if (error instanceof EnrichmentNotAnImageError) return 400;
|
|
5
|
+
if (error instanceof EnrichmentCapabilityDisabledError) return 409;
|
|
6
|
+
return 500;
|
|
7
|
+
}
|
|
8
|
+
export { imageEnrichmentErrorStatusCode };
|
|
9
|
+
|
|
10
|
+
//# sourceMappingURL=imageEnrichmentErrorStatusCode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/AiImageEnrichment/imageEnrichmentErrorStatusCode.js","sources":["../../../../src/api/features/AiImageEnrichment/imageEnrichmentErrorStatusCode.ts"],"sourcesContent":["import { EnrichmentFileNotFoundError, EnrichmentNotAnImageError } from \"./errors.js\";\nimport { EnrichmentCapabilityDisabledError } from \"./errors.js\";\nimport type { ImageEnrichmentError } from \"./errors.js\";\n\n/**\n * Maps an enrichment failure to the HTTP status a transport should answer with. Lives next to the\n * errors rather than in a route, so a second entry point can't invent a different mapping.\n */\nexport function imageEnrichmentErrorStatusCode(error: ImageEnrichmentError): number {\n if (error instanceof EnrichmentFileNotFoundError) {\n return 404;\n }\n if (error instanceof EnrichmentNotAnImageError) {\n return 400;\n }\n /*\n * The request is fine and the server is fine; the feature is switched off. A 500 would tell\n * whoever called it that something broke, which is the one thing that did not happen.\n */\n if (error instanceof EnrichmentCapabilityDisabledError) {\n return 409;\n }\n return 500;\n}\n"],"names":["imageEnrichmentErrorStatusCode","error","EnrichmentFileNotFoundError","EnrichmentNotAnImageError","EnrichmentCapabilityDisabledError"],"mappings":";AAQO,SAASA,+BAA+BC,KAA2B;IACtE,IAAIA,iBAAiBC,6BACjB,OAAO;IAEX,IAAID,iBAAiBE,2BACjB,OAAO;IAMX,IAAIF,iBAAiBG,mCACjB,OAAO;IAEX,OAAO;AACX"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { IEnrichmentOutput } from "./abstractions.js";
|
|
2
|
+
/**
|
|
3
|
+
* Normalises one value from `streamText`'s `partialOutputStream`.
|
|
4
|
+
*
|
|
5
|
+
* Partial output is exactly that: mid-stream the tag array can hold holes/undefined entries and the
|
|
6
|
+
* description may not have arrived, so callers get only the values that are actually present.
|
|
7
|
+
*/
|
|
8
|
+
export declare function readEnrichmentPartial(partial: unknown): IEnrichmentOutput;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
function readEnrichmentPartial(partial) {
|
|
2
|
+
const value = partial ?? {};
|
|
3
|
+
const tags = [];
|
|
4
|
+
if (Array.isArray(value.tags)) {
|
|
5
|
+
for (const tag of value.tags)if ("string" == typeof tag && "" !== tag) tags.push(tag);
|
|
6
|
+
}
|
|
7
|
+
let description = "";
|
|
8
|
+
if ("string" == typeof value.description) description = value.description;
|
|
9
|
+
return {
|
|
10
|
+
tags,
|
|
11
|
+
description
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export { readEnrichmentPartial };
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=readEnrichmentPartial.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/AiImageEnrichment/readEnrichmentPartial.js","sources":["../../../../src/api/features/AiImageEnrichment/readEnrichmentPartial.ts"],"sourcesContent":["import type { IEnrichmentOutput } from \"./abstractions.js\";\n\n/**\n * Normalises one value from `streamText`'s `partialOutputStream`.\n *\n * Partial output is exactly that: mid-stream the tag array can hold holes/undefined entries and the\n * description may not have arrived, so callers get only the values that are actually present.\n */\nexport function readEnrichmentPartial(partial: unknown): IEnrichmentOutput {\n const value = (partial ?? {}) as { tags?: unknown; description?: unknown };\n\n const tags: string[] = [];\n\n if (Array.isArray(value.tags)) {\n for (const tag of value.tags) {\n // Empty strings are dropped, not just non-strings: mid-stream the array can hold `\"\"`\n // for an entry the model has opened but not written into yet, which renders as a blank\n // chip.\n if (typeof tag === \"string\" && tag !== \"\") {\n tags.push(tag);\n }\n }\n }\n\n let description = \"\";\n\n if (typeof value.description === \"string\") {\n description = value.description;\n }\n\n return { tags, description };\n}\n"],"names":["readEnrichmentPartial","partial","value","tags","Array","tag","description"],"mappings":"AAQO,SAASA,sBAAsBC,OAAgB;IAClD,MAAMC,QAASD,WAAW,CAAC;IAE3B,MAAME,OAAiB,EAAE;IAEzB,IAAIC,MAAM,OAAO,CAACF,MAAM,IAAI,GACxB;QAAA,KAAK,MAAMG,OAAOH,MAAM,IAAI,CAIxB,IAAI,AAAe,YAAf,OAAOG,OAAoBA,AAAQ,OAARA,KAC3BF,KAAK,IAAI,CAACE;IAElB;IAGJ,IAAIC,cAAc;IAElB,IAAI,AAA6B,YAA7B,OAAOJ,MAAM,WAAW,EACxBI,cAAcJ,MAAM,WAAW;IAGnC,OAAO;QAAEC;QAAMG;IAAY;AAC/B"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server-sent event payloads emitted by `AiImageEnrichmentStreamRoute` — this feature's stream
|
|
3
|
+
* protocol, not a shared one. The SSE wire format itself (`toSseFrame`) is transport-level and lives
|
|
4
|
+
* in `@webiny/event-handler-core`; what the events are called and what they carry is per feature,
|
|
5
|
+
* since the next streaming route will want a different set.
|
|
6
|
+
*
|
|
7
|
+
* A small domain protocol rather than the AI SDK's UI message stream: the client
|
|
8
|
+
* doesn't render a chat transcript, it renders a progressively-completing `{ tags, description }`
|
|
9
|
+
* object, which is exactly what `streamText`'s `partialOutputStream` produces. The admin app mirrors
|
|
10
|
+
* these types (it can't import an api-side package), so keep the two in sync.
|
|
11
|
+
*/
|
|
12
|
+
export interface EnrichmentStreamStartEvent {
|
|
13
|
+
type: "start";
|
|
14
|
+
fileId: string;
|
|
15
|
+
model: string;
|
|
16
|
+
}
|
|
17
|
+
export interface EnrichmentStreamPartialEvent {
|
|
18
|
+
type: "partial";
|
|
19
|
+
tags: string[];
|
|
20
|
+
description: string;
|
|
21
|
+
}
|
|
22
|
+
export interface EnrichmentStreamDoneEvent {
|
|
23
|
+
type: "done";
|
|
24
|
+
fileId: string;
|
|
25
|
+
/**
|
|
26
|
+
* The model's final output. NOT persisted — the streaming route only proposes, and the client
|
|
27
|
+
* saves through the file's normal update path if the user accepts.
|
|
28
|
+
*/
|
|
29
|
+
tags: string[];
|
|
30
|
+
description: string;
|
|
31
|
+
}
|
|
32
|
+
export interface EnrichmentStreamErrorEvent {
|
|
33
|
+
type: "error";
|
|
34
|
+
message: string;
|
|
35
|
+
}
|
|
36
|
+
export type EnrichmentStreamEvent = EnrichmentStreamStartEvent | EnrichmentStreamPartialEvent | EnrichmentStreamDoneEvent | EnrichmentStreamErrorEvent;
|
|
File without changes
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { GetSettingsUseCase } from "../../../api/features/GetSettings/index.js";
|
|
2
|
+
import { GetFileContentsByIdUseCase } from "@webiny/api-file-manager/features/file/GetFileContentsById/index.js";
|
|
3
|
+
import { GetFileUseCase } from "@webiny/api-file-manager/features/file/GetFile/index.js";
|
|
4
|
+
import { TextExtractor } from "@webiny/api-core/features/ai/index.js";
|
|
5
|
+
import { AiPromptContextBuilder as Abstraction, ProjectFileAssembler, type AiPromptContext, type AiPromptContextParams } from "./abstractions.js";
|
|
6
|
+
declare class AiPromptContextBuilderImpl implements Abstraction.Interface {
|
|
7
|
+
private getSettings;
|
|
8
|
+
private fileAssembler;
|
|
9
|
+
private getFileContents;
|
|
10
|
+
private getFile;
|
|
11
|
+
private textExtractor;
|
|
12
|
+
constructor(getSettings: GetSettingsUseCase.Interface, fileAssembler: ProjectFileAssembler.Interface, getFileContents: GetFileContentsByIdUseCase.Interface, getFile: GetFileUseCase.Interface, textExtractor: TextExtractor.Interface);
|
|
13
|
+
execute(params: AiPromptContextParams): Promise<AiPromptContext>;
|
|
14
|
+
private fetchAdditionalFiles;
|
|
15
|
+
}
|
|
16
|
+
export declare const AiPromptContextBuilder: typeof AiPromptContextBuilderImpl & {
|
|
17
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IAiPromptContextBuilder>;
|
|
18
|
+
};
|
|
19
|
+
export {};
|