@webiny/ai-powerups 6.6.0-alpha.0 → 6.6.0-alpha.1
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.js +2 -2
- package/AiPowerups.js.map +1 -1
- package/admin/Extension.js +10 -2
- package/admin/Extension.js.map +1 -1
- 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.js +2 -0
- package/admin/features/feature.js.map +1 -1
- package/admin/features/generateEntryContent/GenerateEntryContentGateway.js +2 -0
- package/admin/features/generateEntryContent/GenerateEntryContentGateway.js.map +1 -1
- package/admin/features/generateEntryContent/abstractions.d.ts +1 -0
- package/admin/features/generateEntryContent/abstractions.js.map +1 -1
- package/admin/features/generatePageContent/GeneratePageContentGateway.js +2 -0
- package/admin/features/generatePageContent/GeneratePageContentGateway.js.map +1 -1
- package/admin/features/generatePageContent/abstractions.d.ts +1 -0
- package/admin/features/generatePageContent/abstractions.js.map +1 -1
- package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPage.d.ts +2 -2
- package/admin/presentation/AiPromptFormFactory/AiPromptFormFactory.d.ts +20 -0
- package/admin/presentation/AiPromptFormFactory/AiPromptFormFactory.js +108 -0
- package/admin/presentation/AiPromptFormFactory/AiPromptFormFactory.js.map +1 -0
- package/admin/presentation/AiPromptFormFactory/abstractions.d.ts +14 -0
- package/admin/presentation/AiPromptFormFactory/abstractions.js +5 -0
- package/admin/presentation/AiPromptFormFactory/abstractions.js.map +1 -0
- package/admin/presentation/AiPromptFormFactory/feature.d.ts +1 -0
- package/admin/presentation/AiPromptFormFactory/feature.js +11 -0
- package/admin/presentation/AiPromptFormFactory/feature.js.map +1 -0
- package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsDialog.d.ts +9 -0
- package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsDialog.js +118 -0
- package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsDialog.js.map +1 -0
- package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsDrawer.d.ts +9 -0
- package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsDrawer.js +72 -0
- package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsDrawer.js.map +1 -0
- package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsMenuItem.d.ts +4 -0
- package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsMenuItem.js +21 -0
- package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsMenuItem.js.map +1 -0
- package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsOverlays.d.ts +2 -0
- package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsOverlays.js +17 -0
- package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsOverlays.js.map +1 -0
- package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsPresenter.d.ts +25 -0
- package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsPresenter.js +90 -0
- package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsPresenter.js.map +1 -0
- package/admin/presentation/CmsCompareEntryRevisions/Extension.d.ts +2 -0
- package/admin/presentation/CmsCompareEntryRevisions/Extension.js +16 -0
- package/admin/presentation/CmsCompareEntryRevisions/Extension.js.map +1 -0
- package/admin/presentation/CmsCompareEntryRevisions/abstractions.d.ts +29 -0
- package/admin/presentation/CmsCompareEntryRevisions/abstractions.js +5 -0
- package/admin/presentation/CmsCompareEntryRevisions/abstractions.js.map +1 -0
- package/admin/presentation/CmsCompareEntryRevisions/feature.d.ts +3 -0
- package/admin/presentation/CmsCompareEntryRevisions/feature.js +17 -0
- package/admin/presentation/CmsCompareEntryRevisions/feature.js.map +1 -0
- package/admin/presentation/CmsContentGeneration/CmsGenerateContentButton.d.ts +2 -2
- package/admin/presentation/CmsContentGeneration/CmsGenerateContentDialog.d.ts +2 -2
- package/admin/presentation/CmsContentGeneration/CmsGenerateContentPresenter.d.ts +4 -12
- package/admin/presentation/CmsContentGeneration/CmsGenerateContentPresenter.js +12 -94
- package/admin/presentation/CmsContentGeneration/CmsGenerateContentPresenter.js.map +1 -1
- package/admin/presentation/CmsContentGeneration/Extension.d.ts +1 -1
- package/admin/presentation/CmsContentGeneration/Extension.js +9 -5
- package/admin/presentation/CmsContentGeneration/Extension.js.map +1 -1
- package/admin/presentation/CmsEntryWizard/CmsEntryWizard.d.ts +4 -0
- package/admin/presentation/CmsEntryWizard/CmsEntryWizard.js +113 -0
- package/admin/presentation/CmsEntryWizard/CmsEntryWizard.js.map +1 -0
- package/admin/presentation/CmsEntryWizard/CmsEntryWizardGate.d.ts +4 -0
- package/admin/presentation/CmsEntryWizard/CmsEntryWizardGate.js +19 -0
- package/admin/presentation/CmsEntryWizard/CmsEntryWizardGate.js.map +1 -0
- package/admin/presentation/CmsEntryWizard/Extension.d.ts +2 -0
- package/admin/presentation/CmsEntryWizard/Extension.js +10 -0
- package/admin/presentation/CmsEntryWizard/Extension.js.map +1 -0
- package/admin/presentation/ProvidersSettings.js +1 -1
- package/admin/presentation/ProvidersSettings.js.map +1 -1
- package/admin/presentation/WbContentGeneration/GenerateContentDialog.d.ts +2 -2
- package/admin/presentation/WbContentGeneration/GenerateContentDialog.js +2 -2
- package/admin/presentation/WbContentGeneration/GenerateContentDialog.js.map +1 -1
- package/admin/presentation/WbContentGeneration/GenerateContentPresenter.d.ts +4 -12
- package/admin/presentation/WbContentGeneration/GenerateContentPresenter.js +12 -94
- package/admin/presentation/WbContentGeneration/GenerateContentPresenter.js.map +1 -1
- package/api/Extension.js +8 -0
- package/api/Extension.js.map +1 -1
- package/api/features/AiChatProvider/PowerUpsAiChatProvider.d.ts +24 -0
- package/api/features/AiChatProvider/PowerUpsAiChatProvider.js +31 -0
- package/api/features/AiChatProvider/PowerUpsAiChatProvider.js.map +1 -0
- package/api/features/AiChatProvider/feature.d.ts +9 -0
- package/api/features/AiChatProvider/feature.js +11 -0
- package/api/features/AiChatProvider/feature.js.map +1 -0
- package/api/features/AiChatProvider/index.d.ts +2 -0
- package/api/features/AiChatProvider/index.js +2 -0
- package/api/features/AiImageEnrichment/AiImageEnrichmentAfterCreateHandler.d.ts +1 -3
- package/api/features/AiImageEnrichment/AiImageEnrichmentAfterCreateHandler.js +2 -6
- package/api/features/AiImageEnrichment/AiImageEnrichmentAfterCreateHandler.js.map +1 -1
- package/api/features/AiImageEnrichment/AiImageEnrichmentStreamRoute.d.ts +36 -0
- package/api/features/AiImageEnrichment/AiImageEnrichmentStreamRoute.js +85 -0
- package/api/features/AiImageEnrichment/AiImageEnrichmentStreamRoute.js.map +1 -0
- package/api/features/AiImageEnrichment/AiImageEnrichmentTask.d.ts +10 -16
- package/api/features/AiImageEnrichment/AiImageEnrichmentTask.js +27 -102
- package/api/features/AiImageEnrichment/AiImageEnrichmentTask.js.map +1 -1
- 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/PrepareImageEnrichmentUseCase.d.ts +19 -0
- package/api/features/AiImageEnrichment/PrepareImageEnrichmentUseCase.js +49 -0
- package/api/features/AiImageEnrichment/PrepareImageEnrichmentUseCase.js.map +1 -0
- package/api/features/AiImageEnrichment/abstractions.d.ts +60 -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/errors.d.ts +26 -0
- package/api/features/AiImageEnrichment/errors.js +28 -0
- package/api/features/AiImageEnrichment/errors.js.map +1 -0
- package/api/features/AiImageEnrichment/feature.js +9 -0
- package/api/features/AiImageEnrichment/feature.js.map +1 -1
- package/api/features/AiImageEnrichment/imageEnrichmentErrorStatusCode.d.ts +6 -0
- package/api/features/AiImageEnrichment/imageEnrichmentErrorStatusCode.js +9 -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 +8 -1
- package/api/features/AiPromptContext/AiPromptContextBuilder.js +46 -2
- package/api/features/AiPromptContext/AiPromptContextBuilder.js.map +1 -1
- package/api/features/AiPromptContext/abstractions.d.ts +3 -0
- package/api/features/AiPromptContext/abstractions.js +9 -1
- package/api/features/AiPromptContext/abstractions.js.map +1 -1
- package/api/features/AiPromptContext/index.d.ts +1 -1
- package/api/features/AiPromptContext/index.js +1 -1
- package/api/features/CmsCompareEntryRevisions/CmsCompareEntryRevisionsUseCase.d.ts +22 -0
- package/api/features/CmsCompareEntryRevisions/CmsCompareEntryRevisionsUseCase.js +136 -0
- package/api/features/CmsCompareEntryRevisions/CmsCompareEntryRevisionsUseCase.js.map +1 -0
- package/api/features/CmsCompareEntryRevisions/abstractions.d.ts +18 -0
- package/api/features/CmsCompareEntryRevisions/abstractions.js +5 -0
- package/api/features/CmsCompareEntryRevisions/abstractions.js.map +1 -0
- package/api/features/CmsCompareEntryRevisions/feature.d.ts +4 -0
- package/api/features/CmsCompareEntryRevisions/feature.js +11 -0
- package/api/features/CmsCompareEntryRevisions/feature.js.map +1 -0
- package/api/features/CmsCompareEntryRevisions/index.d.ts +2 -0
- package/api/features/CmsCompareEntryRevisions/index.js +2 -0
- package/api/features/CmsGenerateEntryContent/CmsGenerateEntryContentTask.d.ts +1 -0
- package/api/features/CmsGenerateEntryContent/CmsGenerateEntryContentTask.js +20 -10
- package/api/features/CmsGenerateEntryContent/CmsGenerateEntryContentTask.js.map +1 -1
- package/api/features/CmsGenerateEntryContent/CmsGenerateEntryContentUseCase.d.ts +1 -1
- package/api/features/CmsGenerateEntryContent/CmsGenerateEntryContentUseCase.js +5 -5
- package/api/features/CmsGenerateEntryContent/CmsGenerateEntryContentUseCase.js.map +1 -1
- package/api/features/CmsGenerateEntryContent/abstractions.d.ts +10 -3
- package/api/features/CmsGenerateEntryContent/abstractions.js.map +1 -1
- package/api/features/GetSettings/index.d.ts +1 -0
- package/api/features/GetSettings/index.js +1 -0
- package/api/features/Providers/types.d.ts +2 -2
- package/api/features/WbGeneratePageContent/WbGeneratePageContentTask.d.ts +1 -0
- package/api/features/WbGeneratePageContent/WbGeneratePageContentTask.js +19 -9
- package/api/features/WbGeneratePageContent/WbGeneratePageContentTask.js.map +1 -1
- package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.js +4 -3
- package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.js.map +1 -1
- package/api/features/WbGeneratePageContent/abstractions.d.ts +1 -0
- package/api/features/WbGeneratePageContent/abstractions.js.map +1 -1
- package/api/features/WbTranslatePage/LexicalParser.d.ts +10 -0
- package/api/features/WbTranslatePage/LexicalParser.js +37 -0
- package/api/features/WbTranslatePage/LexicalParser.js.map +1 -0
- package/api/features/WbTranslatePage/WbTranslatePageDecorator.d.ts +27 -0
- package/api/features/WbTranslatePage/WbTranslatePageDecorator.js +134 -0
- package/api/features/WbTranslatePage/WbTranslatePageDecorator.js.map +1 -0
- package/api/features/WbTranslatePage/abstractions/LexicalParser.d.ts +7 -0
- package/api/features/WbTranslatePage/abstractions/LexicalParser.js +5 -0
- package/api/features/WbTranslatePage/abstractions/LexicalParser.js.map +1 -0
- package/api/features/WbTranslatePage/feature.d.ts +4 -0
- package/api/features/WbTranslatePage/feature.js +13 -0
- package/api/features/WbTranslatePage/feature.js.map +1 -0
- package/api/features/WbTranslatePage/index.d.ts +2 -0
- package/api/features/WbTranslatePage/index.js +2 -0
- package/api/graphql/BaseGraphQLSchema.js +11 -4
- package/api/graphql/BaseGraphQLSchema.js.map +1 -1
- package/api/graphql/CmsCompareEntryRevisionsSchema.d.ts +8 -0
- package/api/graphql/CmsCompareEntryRevisionsSchema.js +68 -0
- package/api/graphql/CmsCompareEntryRevisionsSchema.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 +2 -0
- package/exports/api/ai-powerups.js +2 -0
- package/package.json +32 -25
package/AiPowerups.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import react from "react";
|
|
2
2
|
import { Admin, Api } from "@webiny/project-aws";
|
|
3
|
-
import {
|
|
4
|
-
const AiPowerups = ()=>/*#__PURE__*/ react.createElement(
|
|
3
|
+
import { FeatureFlag } from "@webiny/project";
|
|
4
|
+
const AiPowerups = ()=>/*#__PURE__*/ react.createElement(FeatureFlag.CanUseAiPowerups, null, /*#__PURE__*/ react.createElement(Api.Extension, {
|
|
5
5
|
src: import.meta.dirname + "/api/Extension.js"
|
|
6
6
|
}), /*#__PURE__*/ react.createElement(Admin.Extension, {
|
|
7
7
|
src: import.meta.dirname + "/admin/Extension.js"
|
package/AiPowerups.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AiPowerups.js","sources":["../src/AiPowerups.tsx"],"sourcesContent":["import React from \"react\";\nimport { Api, Admin } from \"@webiny/project-aws\";\nimport {
|
|
1
|
+
{"version":3,"file":"AiPowerups.js","sources":["../src/AiPowerups.tsx"],"sourcesContent":["import React from \"react\";\nimport { Api, Admin } from \"@webiny/project-aws\";\nimport { FeatureFlag } from \"@webiny/project\";\n\nexport const AiPowerups = () => {\n return (\n <FeatureFlag.CanUseAiPowerups>\n {/* Api extensions */}\n <Api.Extension src={import.meta.dirname + \"/api/Extension.js\"} />\n\n {/* Admin extensions */}\n <Admin.Extension src={import.meta.dirname + \"/admin/Extension.js\"} />\n </FeatureFlag.CanUseAiPowerups>\n );\n};\n"],"names":["AiPowerups","FeatureFlag","Api","Admin"],"mappings":";;;AAIO,MAAMA,aAAa,IACf,WAAP,GACI,oBAACC,YAAY,gBAAgB,sBAEzB,oBAACC,IAAI,SAAS;QAAC,KAAK,YAAY,OAAO,GAAG;sBAG1C,oBAACC,MAAM,SAAS;QAAC,KAAK,YAAY,OAAO,GAAG"}
|
package/admin/Extension.js
CHANGED
|
@@ -4,7 +4,10 @@ import { AiPowerUpsSettingsFeature } from "./presentation/AiPowerUpsSettings/ind
|
|
|
4
4
|
import { AiPowerUpsSettingsPage } from "./presentation/AiPowerUpsSettings/AiPowerUpsSettingsPage.js";
|
|
5
5
|
import { WbContentGeneration } from "./presentation/WbContentGeneration/Extension.js";
|
|
6
6
|
import { CmsContentGeneration } from "./presentation/CmsContentGeneration/Extension.js";
|
|
7
|
+
import { CmsEntryWizardExtension } from "./presentation/CmsEntryWizard/Extension.js";
|
|
8
|
+
import { CmsCompareEntryRevisions } from "./presentation/CmsCompareEntryRevisions/Extension.js";
|
|
7
9
|
import { AiPowerUpsHeadlessFeatures } from "./features/feature.js";
|
|
10
|
+
import { AiPromptFormFeature } from "./presentation/AiPromptFormFactory/feature.js";
|
|
8
11
|
import { Routes } from "./routes.js";
|
|
9
12
|
const { Menu: Menu, Route: Route } = AdminConfig;
|
|
10
13
|
const AiPowerUpsSettings = ()=>{
|
|
@@ -13,7 +16,10 @@ const AiPowerUpsSettings = ()=>{
|
|
|
13
16
|
route: Routes.Settings,
|
|
14
17
|
element: /*#__PURE__*/ react.createElement(AdminLayout, {
|
|
15
18
|
title: "AI Power-Ups"
|
|
16
|
-
}, /*#__PURE__*/ react.createElement(
|
|
19
|
+
}, /*#__PURE__*/ react.createElement(AdminConfig.Breadcrumb, {
|
|
20
|
+
name: "ai-powerups",
|
|
21
|
+
label: "AI Power-Ups"
|
|
22
|
+
}), /*#__PURE__*/ react.createElement(AiPowerUpsSettingsPage, null))
|
|
17
23
|
}), /*#__PURE__*/ react.createElement(Menu, {
|
|
18
24
|
parent: "settings.system",
|
|
19
25
|
name: "aiPowerUps",
|
|
@@ -28,10 +34,12 @@ const AiPowerUpsSettings = ()=>{
|
|
|
28
34
|
}));
|
|
29
35
|
};
|
|
30
36
|
const Extension = ()=>/*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(RegisterFeature, {
|
|
37
|
+
feature: AiPromptFormFeature
|
|
38
|
+
}), /*#__PURE__*/ react.createElement(RegisterFeature, {
|
|
31
39
|
feature: AiPowerUpsHeadlessFeatures
|
|
32
40
|
}), /*#__PURE__*/ react.createElement(RegisterFeature, {
|
|
33
41
|
feature: AiPowerUpsSettingsFeature
|
|
34
|
-
}), /*#__PURE__*/ react.createElement(AiPowerUpsSettings, null), /*#__PURE__*/ react.createElement(WbContentGeneration, null), /*#__PURE__*/ react.createElement(CmsContentGeneration, null));
|
|
42
|
+
}), /*#__PURE__*/ react.createElement(AiPowerUpsSettings, null), /*#__PURE__*/ react.createElement(WbContentGeneration, null), /*#__PURE__*/ react.createElement(CmsContentGeneration, null), /*#__PURE__*/ react.createElement(CmsCompareEntryRevisions, null), /*#__PURE__*/ react.createElement(CmsEntryWizardExtension, null));
|
|
35
43
|
export { Extension };
|
|
36
44
|
|
|
37
45
|
//# sourceMappingURL=Extension.js.map
|
package/admin/Extension.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin/Extension.js","sources":["../../src/admin/Extension.tsx"],"sourcesContent":["import React from \"react\";\nimport { AdminConfig, AdminLayout, useRouter, RegisterFeature } from \"@webiny/app-admin\";\nimport { AiPowerUpsSettingsFeature } from \"./presentation/AiPowerUpsSettings/index.js\";\nimport { AiPowerUpsSettingsPage } from \"./presentation/AiPowerUpsSettings/AiPowerUpsSettingsPage.js\";\nimport { WbContentGeneration } from \"~/admin/presentation/WbContentGeneration/Extension.js\";\nimport { CmsContentGeneration } from \"~/admin/presentation/CmsContentGeneration/Extension.js\";\nimport { AiPowerUpsHeadlessFeatures } from \"~/admin/features/feature.js\";\nimport { Routes } from \"./routes.js\";\n\nconst { Menu, Route } = AdminConfig;\n\nconst AiPowerUpsSettings = () => {\n const { getLink } = useRouter();\n\n return (\n <AdminConfig>\n <Route\n route={Routes.Settings}\n element={\n <AdminLayout title={\"AI Power-Ups\"}>\n <AiPowerUpsSettingsPage />\n </AdminLayout>\n }\n />\n <Menu\n parent={\"settings.system\"}\n name={\"aiPowerUps\"}\n element={\n <Menu.Link\n text={\"AI Power-Ups\"}\n badge={<Menu.Link.Badge text=\"BETA\" />}\n to={getLink(Routes.Settings)}\n pinnable={true}\n />\n }\n />\n </AdminConfig>\n );\n};\n\nexport const Extension = () => {\n return (\n <>\n <RegisterFeature feature={AiPowerUpsHeadlessFeatures} />\n <RegisterFeature feature={AiPowerUpsSettingsFeature} />\n <AiPowerUpsSettings />\n {/* Website Builder Extension */}\n <WbContentGeneration />\n {/* Headless CMS Extension */}\n <CmsContentGeneration />\n </>\n );\n};\n"],"names":["Menu","Route","AdminConfig","AiPowerUpsSettings","getLink","useRouter","Routes","AdminLayout","AiPowerUpsSettingsPage","Extension","RegisterFeature","AiPowerUpsHeadlessFeatures","AiPowerUpsSettingsFeature","WbContentGeneration","CmsContentGeneration"],"mappings":"
|
|
1
|
+
{"version":3,"file":"admin/Extension.js","sources":["../../src/admin/Extension.tsx"],"sourcesContent":["import React from \"react\";\nimport { AdminConfig, AdminLayout, useRouter, RegisterFeature } from \"@webiny/app-admin\";\nimport { AiPowerUpsSettingsFeature } from \"./presentation/AiPowerUpsSettings/index.js\";\nimport { AiPowerUpsSettingsPage } from \"./presentation/AiPowerUpsSettings/AiPowerUpsSettingsPage.js\";\nimport { WbContentGeneration } from \"~/admin/presentation/WbContentGeneration/Extension.js\";\nimport { CmsContentGeneration } from \"~/admin/presentation/CmsContentGeneration/Extension.js\";\nimport { CmsEntryWizardExtension } from \"~/admin/presentation/CmsEntryWizard/Extension.js\";\nimport { CmsCompareEntryRevisions } from \"~/admin/presentation/CmsCompareEntryRevisions/Extension.js\";\nimport { AiPowerUpsHeadlessFeatures } from \"~/admin/features/feature.js\";\nimport { AiPromptFormFeature } from \"~/admin/presentation/AiPromptFormFactory/feature.js\";\nimport { Routes } from \"./routes.js\";\n\nconst { Menu, Route } = AdminConfig;\n\nconst AiPowerUpsSettings = () => {\n const { getLink } = useRouter();\n\n return (\n <AdminConfig>\n <Route\n route={Routes.Settings}\n element={\n <AdminLayout title={\"AI Power-Ups\"}>\n <AdminConfig.Breadcrumb name={\"ai-powerups\"} label={\"AI Power-Ups\"} />\n <AiPowerUpsSettingsPage />\n </AdminLayout>\n }\n />\n <Menu\n parent={\"settings.system\"}\n name={\"aiPowerUps\"}\n element={\n <Menu.Link\n text={\"AI Power-Ups\"}\n badge={<Menu.Link.Badge text=\"BETA\" />}\n to={getLink(Routes.Settings)}\n pinnable={true}\n />\n }\n />\n </AdminConfig>\n );\n};\n\nexport const Extension = () => {\n return (\n <>\n <RegisterFeature feature={AiPromptFormFeature} />\n <RegisterFeature feature={AiPowerUpsHeadlessFeatures} />\n <RegisterFeature feature={AiPowerUpsSettingsFeature} />\n <AiPowerUpsSettings />\n {/* Website Builder Extension */}\n <WbContentGeneration />\n {/* Headless CMS Extension */}\n <CmsContentGeneration />\n {/* CMS Revision Comparison */}\n <CmsCompareEntryRevisions />\n {/* AI Entry Wizard (registered first so custom wizards can override) */}\n <CmsEntryWizardExtension />\n </>\n );\n};\n"],"names":["Menu","Route","AdminConfig","AiPowerUpsSettings","getLink","useRouter","Routes","AdminLayout","AiPowerUpsSettingsPage","Extension","RegisterFeature","AiPromptFormFeature","AiPowerUpsHeadlessFeatures","AiPowerUpsSettingsFeature","WbContentGeneration","CmsContentGeneration","CmsCompareEntryRevisions","CmsEntryWizardExtension"],"mappings":";;;;;;;;;;;AAYA,MAAM,EAAEA,MAAAA,IAAI,EAAEC,OAAAA,KAAK,EAAE,GAAGC;AAExB,MAAMC,qBAAqB;IACvB,MAAM,EAAEC,OAAO,EAAE,GAAGC;IAEpB,OAAO,WAAP,GACI,oBAACH,aAAWA,MAAAA,WAAAA,GACR,oBAACD,OAAKA;QACF,OAAOK,OAAO,QAAQ;QACtB,uBACI,oBAACC,aAAWA;YAAC,OAAO;yBAChB,oBAACL,YAAY,UAAU;YAAC,MAAM;YAAe,OAAO;0BACpD,oBAACM,wBAAsBA;sBAInC,oBAACR,MAAIA;QACD,QAAQ;QACR,MAAM;QACN,uBACI,oBAACA,KAAK,IAAI;YACN,MAAM;YACN,qBAAO,oBAACA,KAAK,IAAI,CAAC,KAAK;gBAAC,MAAK;;YAC7B,IAAII,QAAQE,OAAO,QAAQ;YAC3B,UAAU;;;AAMlC;AAEO,MAAMG,YAAY,IACd,WAAP,GACI,wDACI,oBAACC,iBAAeA;QAAC,SAASC;sBAC1B,oBAACD,iBAAeA;QAAC,SAASE;sBAC1B,oBAACF,iBAAeA;QAAC,SAASG;sBAC1B,oBAACV,oBAAkBA,OAAAA,WAAAA,GAEnB,oBAACW,qBAAmBA,OAAAA,WAAAA,GAEpB,oBAACC,sBAAoBA,OAAAA,WAAAA,GAErB,oBAACC,0BAAwBA,OAAAA,WAAAA,GAEzB,oBAACC,yBAAuBA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CompareEntryRevisionsGateway as GatewayAbstraction } from "./abstractions.js";
|
|
2
|
+
import type { ICompareEntryRevisionsParams, ICompareEntryRevisionsResult } from "./abstractions.js";
|
|
3
|
+
import { MainGraphQLClient } from "@webiny/app/exports/admin.js";
|
|
4
|
+
declare class CompareEntryRevisionsGatewayImpl implements GatewayAbstraction.Interface {
|
|
5
|
+
private client;
|
|
6
|
+
constructor(client: MainGraphQLClient.Interface);
|
|
7
|
+
execute(params: ICompareEntryRevisionsParams): Promise<ICompareEntryRevisionsResult>;
|
|
8
|
+
}
|
|
9
|
+
export declare const CompareEntryRevisionsGateway: typeof CompareEntryRevisionsGatewayImpl & {
|
|
10
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").ICompareEntryRevisionsGateway>;
|
|
11
|
+
};
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { CompareEntryRevisionsGateway } from "./abstractions.js";
|
|
2
|
+
import { MainGraphQLClient } from "@webiny/app/exports/admin.js";
|
|
3
|
+
const COMPARE_ENTRY_REVISIONS_QUERY = `
|
|
4
|
+
query CompareEntryRevisions($modelId: String!, $revisionId1: String!, $revisionId2: String!) {
|
|
5
|
+
cms {
|
|
6
|
+
compareEntryRevisions(
|
|
7
|
+
modelId: $modelId
|
|
8
|
+
revisionId1: $revisionId1
|
|
9
|
+
revisionId2: $revisionId2
|
|
10
|
+
) {
|
|
11
|
+
data {
|
|
12
|
+
html
|
|
13
|
+
summary
|
|
14
|
+
}
|
|
15
|
+
error {
|
|
16
|
+
message
|
|
17
|
+
code
|
|
18
|
+
data
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
`;
|
|
24
|
+
class CompareEntryRevisionsGatewayImpl {
|
|
25
|
+
constructor(client){
|
|
26
|
+
this.client = client;
|
|
27
|
+
}
|
|
28
|
+
async execute(params) {
|
|
29
|
+
const response = await this.client.execute({
|
|
30
|
+
query: COMPARE_ENTRY_REVISIONS_QUERY,
|
|
31
|
+
variables: params
|
|
32
|
+
});
|
|
33
|
+
const { data, error } = response.cms.compareEntryRevisions;
|
|
34
|
+
if (!data || error) throw new Error(error ? error.message : "Failed to compare revisions");
|
|
35
|
+
return data;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const CompareEntryRevisionsGateway_CompareEntryRevisionsGateway = CompareEntryRevisionsGateway.createImplementation({
|
|
39
|
+
implementation: CompareEntryRevisionsGatewayImpl,
|
|
40
|
+
dependencies: [
|
|
41
|
+
MainGraphQLClient
|
|
42
|
+
]
|
|
43
|
+
});
|
|
44
|
+
export { CompareEntryRevisionsGateway_CompareEntryRevisionsGateway as CompareEntryRevisionsGateway };
|
|
45
|
+
|
|
46
|
+
//# sourceMappingURL=CompareEntryRevisionsGateway.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/features/compareEntryRevisions/CompareEntryRevisionsGateway.js","sources":["../../../../src/admin/features/compareEntryRevisions/CompareEntryRevisionsGateway.ts"],"sourcesContent":["import { CompareEntryRevisionsGateway as GatewayAbstraction } from \"./abstractions.js\";\nimport type { ICompareEntryRevisionsParams, ICompareEntryRevisionsResult } from \"./abstractions.js\";\nimport { MainGraphQLClient } from \"@webiny/app/exports/admin.js\";\n\ninterface CompareEntryRevisionsResponse {\n cms: {\n compareEntryRevisions: {\n data: ICompareEntryRevisionsResult | null;\n error: { message: string; code: string; data: unknown } | null;\n };\n };\n}\n\nconst COMPARE_ENTRY_REVISIONS_QUERY = /* GraphQL */ `\n query CompareEntryRevisions($modelId: String!, $revisionId1: String!, $revisionId2: String!) {\n cms {\n compareEntryRevisions(\n modelId: $modelId\n revisionId1: $revisionId1\n revisionId2: $revisionId2\n ) {\n data {\n html\n summary\n }\n error {\n message\n code\n data\n }\n }\n }\n }\n`;\n\nclass CompareEntryRevisionsGatewayImpl implements GatewayAbstraction.Interface {\n constructor(private client: MainGraphQLClient.Interface) {}\n\n async execute(params: ICompareEntryRevisionsParams): Promise<ICompareEntryRevisionsResult> {\n const response = await this.client.execute<CompareEntryRevisionsResponse>({\n query: COMPARE_ENTRY_REVISIONS_QUERY,\n variables: params\n });\n\n const { data, error } = response.cms.compareEntryRevisions;\n\n if (!data || error) {\n throw new Error(error ? error.message : \"Failed to compare revisions\");\n }\n\n return data;\n }\n}\n\nexport const CompareEntryRevisionsGateway = GatewayAbstraction.createImplementation({\n implementation: CompareEntryRevisionsGatewayImpl,\n dependencies: [MainGraphQLClient]\n});\n"],"names":["COMPARE_ENTRY_REVISIONS_QUERY","CompareEntryRevisionsGatewayImpl","client","params","response","data","error","Error","CompareEntryRevisionsGateway","GatewayAbstraction","MainGraphQLClient"],"mappings":";;AAaA,MAAMA,gCAA8C,CAAC;;;;;;;;;;;;;;;;;;;;AAoBrD,CAAC;AAED,MAAMC;IACF,YAAoBC,MAAmC,CAAE;aAArCA,MAAM,GAANA;IAAsC;IAE1D,MAAM,QAAQC,MAAoC,EAAyC;QACvF,MAAMC,WAAW,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAgC;YACtE,OAAOJ;YACP,WAAWG;QACf;QAEA,MAAM,EAAEE,IAAI,EAAEC,KAAK,EAAE,GAAGF,SAAS,GAAG,CAAC,qBAAqB;QAE1D,IAAI,CAACC,QAAQC,OACT,MAAM,IAAIC,MAAMD,QAAQA,MAAM,OAAO,GAAG;QAG5C,OAAOD;IACX;AACJ;AAEO,MAAMG,4DAA+BC,6BAAAA,oBAAuC,CAAC;IAChF,gBAAgBR;IAChB,cAAc;QAACS;KAAkB;AACrC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CompareEntryRevisionsRepository as RepositoryAbstraction, CompareEntryRevisionsGateway } from "./abstractions.js";
|
|
2
|
+
import type { ICompareEntryRevisionsParams, ICompareEntryRevisionsResult } from "./abstractions.js";
|
|
3
|
+
declare class CompareEntryRevisionsRepositoryImpl implements RepositoryAbstraction.Interface {
|
|
4
|
+
private gateway;
|
|
5
|
+
constructor(gateway: CompareEntryRevisionsGateway.Interface);
|
|
6
|
+
execute(params: ICompareEntryRevisionsParams): Promise<ICompareEntryRevisionsResult>;
|
|
7
|
+
}
|
|
8
|
+
export declare const CompareEntryRevisionsRepository: typeof CompareEntryRevisionsRepositoryImpl & {
|
|
9
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").ICompareEntryRevisionsRepository>;
|
|
10
|
+
};
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { CompareEntryRevisionsGateway, CompareEntryRevisionsRepository } from "./abstractions.js";
|
|
2
|
+
class CompareEntryRevisionsRepositoryImpl {
|
|
3
|
+
constructor(gateway){
|
|
4
|
+
this.gateway = gateway;
|
|
5
|
+
}
|
|
6
|
+
async execute(params) {
|
|
7
|
+
return this.gateway.execute(params);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
const CompareEntryRevisionsRepository_CompareEntryRevisionsRepository = CompareEntryRevisionsRepository.createImplementation({
|
|
11
|
+
implementation: CompareEntryRevisionsRepositoryImpl,
|
|
12
|
+
dependencies: [
|
|
13
|
+
CompareEntryRevisionsGateway
|
|
14
|
+
]
|
|
15
|
+
});
|
|
16
|
+
export { CompareEntryRevisionsRepository_CompareEntryRevisionsRepository as CompareEntryRevisionsRepository };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=CompareEntryRevisionsRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/features/compareEntryRevisions/CompareEntryRevisionsRepository.js","sources":["../../../../src/admin/features/compareEntryRevisions/CompareEntryRevisionsRepository.ts"],"sourcesContent":["import {\n CompareEntryRevisionsRepository as RepositoryAbstraction,\n CompareEntryRevisionsGateway\n} from \"./abstractions.js\";\nimport type { ICompareEntryRevisionsParams, ICompareEntryRevisionsResult } from \"./abstractions.js\";\n\nclass CompareEntryRevisionsRepositoryImpl implements RepositoryAbstraction.Interface {\n constructor(private gateway: CompareEntryRevisionsGateway.Interface) {}\n\n async execute(params: ICompareEntryRevisionsParams): Promise<ICompareEntryRevisionsResult> {\n return this.gateway.execute(params);\n }\n}\n\nexport const CompareEntryRevisionsRepository = RepositoryAbstraction.createImplementation({\n implementation: CompareEntryRevisionsRepositoryImpl,\n dependencies: [CompareEntryRevisionsGateway]\n});\n"],"names":["CompareEntryRevisionsRepositoryImpl","gateway","params","CompareEntryRevisionsRepository","RepositoryAbstraction","CompareEntryRevisionsGateway"],"mappings":";AAMA,MAAMA;IACF,YAAoBC,OAA+C,CAAE;aAAjDA,OAAO,GAAPA;IAAkD;IAEtE,MAAM,QAAQC,MAAoC,EAAyC;QACvF,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAACA;IAChC;AACJ;AAEO,MAAMC,kEAAkCC,gCAAAA,oBAA0C,CAAC;IACtF,gBAAgBJ;IAChB,cAAc;QAACK;KAA6B;AAChD"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CompareEntryRevisionsUseCase as UseCaseAbstraction, CompareEntryRevisionsRepository } from "./abstractions.js";
|
|
2
|
+
import type { ICompareEntryRevisionsParams, ICompareEntryRevisionsResult } from "./abstractions.js";
|
|
3
|
+
declare class CompareEntryRevisionsUseCaseImpl implements UseCaseAbstraction.Interface {
|
|
4
|
+
private repository;
|
|
5
|
+
constructor(repository: CompareEntryRevisionsRepository.Interface);
|
|
6
|
+
execute(params: ICompareEntryRevisionsParams): Promise<ICompareEntryRevisionsResult>;
|
|
7
|
+
}
|
|
8
|
+
export declare const CompareEntryRevisionsUseCase: typeof CompareEntryRevisionsUseCaseImpl & {
|
|
9
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").ICompareEntryRevisionsUseCase>;
|
|
10
|
+
};
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { CompareEntryRevisionsRepository, CompareEntryRevisionsUseCase } from "./abstractions.js";
|
|
2
|
+
class CompareEntryRevisionsUseCaseImpl {
|
|
3
|
+
constructor(repository){
|
|
4
|
+
this.repository = repository;
|
|
5
|
+
}
|
|
6
|
+
async execute(params) {
|
|
7
|
+
return this.repository.execute(params);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
const CompareEntryRevisionsUseCase_CompareEntryRevisionsUseCase = CompareEntryRevisionsUseCase.createImplementation({
|
|
11
|
+
implementation: CompareEntryRevisionsUseCaseImpl,
|
|
12
|
+
dependencies: [
|
|
13
|
+
CompareEntryRevisionsRepository
|
|
14
|
+
]
|
|
15
|
+
});
|
|
16
|
+
export { CompareEntryRevisionsUseCase_CompareEntryRevisionsUseCase as CompareEntryRevisionsUseCase };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=CompareEntryRevisionsUseCase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/features/compareEntryRevisions/CompareEntryRevisionsUseCase.js","sources":["../../../../src/admin/features/compareEntryRevisions/CompareEntryRevisionsUseCase.ts"],"sourcesContent":["import {\n CompareEntryRevisionsUseCase as UseCaseAbstraction,\n CompareEntryRevisionsRepository\n} from \"./abstractions.js\";\nimport type { ICompareEntryRevisionsParams, ICompareEntryRevisionsResult } from \"./abstractions.js\";\n\nclass CompareEntryRevisionsUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(private repository: CompareEntryRevisionsRepository.Interface) {}\n\n async execute(params: ICompareEntryRevisionsParams): Promise<ICompareEntryRevisionsResult> {\n return this.repository.execute(params);\n }\n}\n\nexport const CompareEntryRevisionsUseCase = UseCaseAbstraction.createImplementation({\n implementation: CompareEntryRevisionsUseCaseImpl,\n dependencies: [CompareEntryRevisionsRepository]\n});\n"],"names":["CompareEntryRevisionsUseCaseImpl","repository","params","CompareEntryRevisionsUseCase","UseCaseAbstraction","CompareEntryRevisionsRepository"],"mappings":";AAMA,MAAMA;IACF,YAAoBC,UAAqD,CAAE;aAAvDA,UAAU,GAAVA;IAAwD;IAE5E,MAAM,QAAQC,MAAoC,EAAyC;QACvF,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAACA;IACnC;AACJ;AAEO,MAAMC,4DAA+BC,6BAAAA,oBAAuC,CAAC;IAChF,gBAAgBJ;IAChB,cAAc;QAACK;KAAgC;AACnD"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export interface ICompareEntryRevisionsResult {
|
|
2
|
+
html: string;
|
|
3
|
+
summary: string;
|
|
4
|
+
}
|
|
5
|
+
export interface ICompareEntryRevisionsParams {
|
|
6
|
+
modelId: string;
|
|
7
|
+
revisionId1: string;
|
|
8
|
+
revisionId2: string;
|
|
9
|
+
}
|
|
10
|
+
export interface ICompareEntryRevisionsUseCase {
|
|
11
|
+
execute(params: ICompareEntryRevisionsParams): Promise<ICompareEntryRevisionsResult>;
|
|
12
|
+
}
|
|
13
|
+
export declare const CompareEntryRevisionsUseCase: import("@webiny/di").Abstraction<ICompareEntryRevisionsUseCase>;
|
|
14
|
+
export declare namespace CompareEntryRevisionsUseCase {
|
|
15
|
+
type Interface = ICompareEntryRevisionsUseCase;
|
|
16
|
+
type Params = ICompareEntryRevisionsParams;
|
|
17
|
+
type Result = ICompareEntryRevisionsResult;
|
|
18
|
+
}
|
|
19
|
+
export interface ICompareEntryRevisionsRepository {
|
|
20
|
+
execute(params: ICompareEntryRevisionsParams): Promise<ICompareEntryRevisionsResult>;
|
|
21
|
+
}
|
|
22
|
+
export declare const CompareEntryRevisionsRepository: import("@webiny/di").Abstraction<ICompareEntryRevisionsRepository>;
|
|
23
|
+
export declare namespace CompareEntryRevisionsRepository {
|
|
24
|
+
type Interface = ICompareEntryRevisionsRepository;
|
|
25
|
+
}
|
|
26
|
+
export interface ICompareEntryRevisionsGateway {
|
|
27
|
+
execute(params: ICompareEntryRevisionsParams): Promise<ICompareEntryRevisionsResult>;
|
|
28
|
+
}
|
|
29
|
+
export declare const CompareEntryRevisionsGateway: import("@webiny/di").Abstraction<ICompareEntryRevisionsGateway>;
|
|
30
|
+
export declare namespace CompareEntryRevisionsGateway {
|
|
31
|
+
type Interface = ICompareEntryRevisionsGateway;
|
|
32
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createAbstraction } from "@webiny/feature/admin";
|
|
2
|
+
const CompareEntryRevisionsUseCase = createAbstraction("AiPowerUps/CompareEntryRevisionsUseCase");
|
|
3
|
+
const CompareEntryRevisionsRepository = createAbstraction("AiPowerUps/CompareEntryRevisionsRepository");
|
|
4
|
+
const CompareEntryRevisionsGateway = createAbstraction("AiPowerUps/CompareEntryRevisionsGateway");
|
|
5
|
+
export { CompareEntryRevisionsGateway, CompareEntryRevisionsRepository, CompareEntryRevisionsUseCase };
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=abstractions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/features/compareEntryRevisions/abstractions.js","sources":["../../../../src/admin/features/compareEntryRevisions/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/admin\";\n\nexport interface ICompareEntryRevisionsResult {\n html: string;\n summary: string;\n}\n\nexport interface ICompareEntryRevisionsParams {\n modelId: string;\n revisionId1: string;\n revisionId2: string;\n}\n\nexport interface ICompareEntryRevisionsUseCase {\n execute(params: ICompareEntryRevisionsParams): Promise<ICompareEntryRevisionsResult>;\n}\n\nexport const CompareEntryRevisionsUseCase = createAbstraction<ICompareEntryRevisionsUseCase>(\n \"AiPowerUps/CompareEntryRevisionsUseCase\"\n);\n\nexport namespace CompareEntryRevisionsUseCase {\n export type Interface = ICompareEntryRevisionsUseCase;\n export type Params = ICompareEntryRevisionsParams;\n export type Result = ICompareEntryRevisionsResult;\n}\n\nexport interface ICompareEntryRevisionsRepository {\n execute(params: ICompareEntryRevisionsParams): Promise<ICompareEntryRevisionsResult>;\n}\n\nexport const CompareEntryRevisionsRepository = createAbstraction<ICompareEntryRevisionsRepository>(\n \"AiPowerUps/CompareEntryRevisionsRepository\"\n);\n\nexport namespace CompareEntryRevisionsRepository {\n export type Interface = ICompareEntryRevisionsRepository;\n}\n\nexport interface ICompareEntryRevisionsGateway {\n execute(params: ICompareEntryRevisionsParams): Promise<ICompareEntryRevisionsResult>;\n}\n\nexport const CompareEntryRevisionsGateway = createAbstraction<ICompareEntryRevisionsGateway>(\n \"AiPowerUps/CompareEntryRevisionsGateway\"\n);\n\nexport namespace CompareEntryRevisionsGateway {\n export type Interface = ICompareEntryRevisionsGateway;\n}\n"],"names":["CompareEntryRevisionsUseCase","createAbstraction","CompareEntryRevisionsRepository","CompareEntryRevisionsGateway"],"mappings":";AAiBO,MAAMA,+BAA+BC,kBACxC;AAaG,MAAMC,kCAAkCD,kBAC3C;AAWG,MAAME,+BAA+BF,kBACxC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const CompareEntryRevisionsFeature: import("@webiny/feature/admin").FeatureDefinition<any, []>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/admin";
|
|
2
|
+
import { CompareEntryRevisionsUseCase } from "./CompareEntryRevisionsUseCase.js";
|
|
3
|
+
import { CompareEntryRevisionsRepository } from "./CompareEntryRevisionsRepository.js";
|
|
4
|
+
import { CompareEntryRevisionsGateway } from "./CompareEntryRevisionsGateway.js";
|
|
5
|
+
const CompareEntryRevisionsFeature = createFeature({
|
|
6
|
+
name: "AiPowerUps/CompareEntryRevisions",
|
|
7
|
+
register (container) {
|
|
8
|
+
container.register(CompareEntryRevisionsUseCase);
|
|
9
|
+
container.register(CompareEntryRevisionsRepository).inSingletonScope();
|
|
10
|
+
container.register(CompareEntryRevisionsGateway).inSingletonScope();
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
export { CompareEntryRevisionsFeature };
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/features/compareEntryRevisions/feature.js","sources":["../../../../src/admin/features/compareEntryRevisions/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { CompareEntryRevisionsUseCase } from \"./CompareEntryRevisionsUseCase.js\";\nimport { CompareEntryRevisionsRepository } from \"./CompareEntryRevisionsRepository.js\";\nimport { CompareEntryRevisionsGateway } from \"./CompareEntryRevisionsGateway.js\";\n\nexport const CompareEntryRevisionsFeature = createFeature({\n name: \"AiPowerUps/CompareEntryRevisions\",\n register(container) {\n container.register(CompareEntryRevisionsUseCase);\n container.register(CompareEntryRevisionsRepository).inSingletonScope();\n container.register(CompareEntryRevisionsGateway).inSingletonScope();\n }\n});\n"],"names":["CompareEntryRevisionsFeature","createFeature","container","CompareEntryRevisionsUseCase","CompareEntryRevisionsRepository","CompareEntryRevisionsGateway"],"mappings":";;;;AAKO,MAAMA,+BAA+BC,cAAc;IACtD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;QACnBD,UAAU,QAAQ,CAACE,iCAAiC,gBAAgB;QACpEF,UAAU,QAAQ,CAACG,8BAA8B,gBAAgB;IACrE;AACJ"}
|
|
@@ -4,6 +4,7 @@ import { SharedSettingsFeature } from "./settings/shared/index.js";
|
|
|
4
4
|
import { GetSettingsFeature } from "./settings/getSettings/index.js";
|
|
5
5
|
import { UpdateSettingsFeature } from "./settings/updateSettings/index.js";
|
|
6
6
|
import { GeneratePageContentFeature } from "./generatePageContent/index.js";
|
|
7
|
+
import { CompareEntryRevisionsFeature } from "./compareEntryRevisions/index.js";
|
|
7
8
|
const AiPowerUpsHeadlessFeatures = createFeature({
|
|
8
9
|
name: "AiPowerUps/HeadlessFeatures",
|
|
9
10
|
register (container) {
|
|
@@ -12,6 +13,7 @@ const AiPowerUpsHeadlessFeatures = createFeature({
|
|
|
12
13
|
UpdateSettingsFeature.register(container);
|
|
13
14
|
ListModelsFeature.register(container);
|
|
14
15
|
GeneratePageContentFeature.register(container);
|
|
16
|
+
CompareEntryRevisionsFeature.register(container);
|
|
15
17
|
},
|
|
16
18
|
resolve () {
|
|
17
19
|
return {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin/features/feature.js","sources":["../../../src/admin/features/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { ListModelsFeature } from \"~/admin/features/listModels/index.js\";\nimport { SharedSettingsFeature } from \"~/admin/features/settings/shared/index.js\";\nimport { GetSettingsFeature } from \"~/admin/features/settings/getSettings/index.js\";\nimport { UpdateSettingsFeature } from \"~/admin/features/settings/updateSettings/index.js\";\nimport { GeneratePageContentFeature } from \"~/admin/features/generatePageContent/index.js\";\n\nexport const AiPowerUpsHeadlessFeatures = createFeature({\n name: \"AiPowerUps/HeadlessFeatures\",\n register(container) {\n SharedSettingsFeature.register(container);\n GetSettingsFeature.register(container);\n UpdateSettingsFeature.register(container);\n ListModelsFeature.register(container);\n GeneratePageContentFeature.register(container);\n },\n resolve() {\n return {};\n }\n});\n"],"names":["AiPowerUpsHeadlessFeatures","createFeature","container","SharedSettingsFeature","GetSettingsFeature","UpdateSettingsFeature","ListModelsFeature","GeneratePageContentFeature"],"mappings":"
|
|
1
|
+
{"version":3,"file":"admin/features/feature.js","sources":["../../../src/admin/features/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { ListModelsFeature } from \"~/admin/features/listModels/index.js\";\nimport { SharedSettingsFeature } from \"~/admin/features/settings/shared/index.js\";\nimport { GetSettingsFeature } from \"~/admin/features/settings/getSettings/index.js\";\nimport { UpdateSettingsFeature } from \"~/admin/features/settings/updateSettings/index.js\";\nimport { GeneratePageContentFeature } from \"~/admin/features/generatePageContent/index.js\";\nimport { CompareEntryRevisionsFeature } from \"~/admin/features/compareEntryRevisions/index.js\";\n\nexport const AiPowerUpsHeadlessFeatures = createFeature({\n name: \"AiPowerUps/HeadlessFeatures\",\n register(container) {\n SharedSettingsFeature.register(container);\n GetSettingsFeature.register(container);\n UpdateSettingsFeature.register(container);\n ListModelsFeature.register(container);\n GeneratePageContentFeature.register(container);\n CompareEntryRevisionsFeature.register(container);\n },\n resolve() {\n return {};\n }\n});\n"],"names":["AiPowerUpsHeadlessFeatures","createFeature","container","SharedSettingsFeature","GetSettingsFeature","UpdateSettingsFeature","ListModelsFeature","GeneratePageContentFeature","CompareEntryRevisionsFeature"],"mappings":";;;;;;;AAQO,MAAMA,6BAA6BC,cAAc;IACpD,MAAM;IACN,UAASC,SAAS;QACdC,sBAAsB,QAAQ,CAACD;QAC/BE,mBAAmB,QAAQ,CAACF;QAC5BG,sBAAsB,QAAQ,CAACH;QAC/BI,kBAAkB,QAAQ,CAACJ;QAC3BK,2BAA2B,QAAQ,CAACL;QACpCM,6BAA6B,QAAQ,CAACN;IAC1C;IACA;QACI,OAAO,CAAC;IACZ;AACJ"}
|
|
@@ -8,6 +8,7 @@ const GENERATE_ENTRY_CONTENT = `
|
|
|
8
8
|
$excludedFileIds: [String!]
|
|
9
9
|
$readerPersonaId: String
|
|
10
10
|
$writerPersonaId: String
|
|
11
|
+
$additionalFileIds: [String!]
|
|
11
12
|
) {
|
|
12
13
|
aiPowerUps {
|
|
13
14
|
generateEntryContent(
|
|
@@ -17,6 +18,7 @@ const GENERATE_ENTRY_CONTENT = `
|
|
|
17
18
|
excludedFileIds: $excludedFileIds
|
|
18
19
|
readerPersonaId: $readerPersonaId
|
|
19
20
|
writerPersonaId: $writerPersonaId
|
|
21
|
+
additionalFileIds: $additionalFileIds
|
|
20
22
|
)
|
|
21
23
|
}
|
|
22
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin/features/generateEntryContent/GenerateEntryContentGateway.js","sources":["../../../../src/admin/features/generateEntryContent/GenerateEntryContentGateway.ts"],"sourcesContent":["import { GenerateEntryContentGateway as GatewayAbstraction } from \"./abstractions.js\";\nimport type { GenerateEntryContentParams } from \"./abstractions.js\";\nimport { MainGraphQLClient } from \"@webiny/app/exports/admin.js\";\n\nconst GENERATE_ENTRY_CONTENT = /* GraphQL */ `\n mutation GenerateEntryContent(\n $prompt: String!\n $modelId: String!\n $projectId: String\n $excludedFileIds: [String!]\n $readerPersonaId: String\n $writerPersonaId: String\n ) {\n aiPowerUps {\n generateEntryContent(\n prompt: $prompt\n modelId: $modelId\n projectId: $projectId\n excludedFileIds: $excludedFileIds\n readerPersonaId: $readerPersonaId\n writerPersonaId: $writerPersonaId\n )\n }\n }\n`;\n\ntype GenerateEntryContentResponse = {\n aiPowerUps: {\n generateEntryContent: { id: string };\n };\n};\n\nclass GenerateEntryContentGatewayImpl implements GatewayAbstraction.Interface {\n constructor(private client: MainGraphQLClient.Interface) {}\n\n async execute(params: GenerateEntryContentParams): Promise<void> {\n await this.client.execute<GenerateEntryContentResponse>({\n query: GENERATE_ENTRY_CONTENT,\n variables: params\n });\n }\n}\n\nexport const GenerateEntryContentGateway = GatewayAbstraction.createImplementation({\n implementation: GenerateEntryContentGatewayImpl,\n dependencies: [MainGraphQLClient]\n});\n"],"names":["GENERATE_ENTRY_CONTENT","GenerateEntryContentGatewayImpl","client","params","GenerateEntryContentGateway","GatewayAbstraction","MainGraphQLClient"],"mappings":";;AAIA,MAAMA,yBAAuC,CAAC
|
|
1
|
+
{"version":3,"file":"admin/features/generateEntryContent/GenerateEntryContentGateway.js","sources":["../../../../src/admin/features/generateEntryContent/GenerateEntryContentGateway.ts"],"sourcesContent":["import { GenerateEntryContentGateway as GatewayAbstraction } from \"./abstractions.js\";\nimport type { GenerateEntryContentParams } from \"./abstractions.js\";\nimport { MainGraphQLClient } from \"@webiny/app/exports/admin.js\";\n\nconst GENERATE_ENTRY_CONTENT = /* GraphQL */ `\n mutation GenerateEntryContent(\n $prompt: String!\n $modelId: String!\n $projectId: String\n $excludedFileIds: [String!]\n $readerPersonaId: String\n $writerPersonaId: String\n $additionalFileIds: [String!]\n ) {\n aiPowerUps {\n generateEntryContent(\n prompt: $prompt\n modelId: $modelId\n projectId: $projectId\n excludedFileIds: $excludedFileIds\n readerPersonaId: $readerPersonaId\n writerPersonaId: $writerPersonaId\n additionalFileIds: $additionalFileIds\n )\n }\n }\n`;\n\ntype GenerateEntryContentResponse = {\n aiPowerUps: {\n generateEntryContent: { id: string };\n };\n};\n\nclass GenerateEntryContentGatewayImpl implements GatewayAbstraction.Interface {\n constructor(private client: MainGraphQLClient.Interface) {}\n\n async execute(params: GenerateEntryContentParams): Promise<void> {\n await this.client.execute<GenerateEntryContentResponse>({\n query: GENERATE_ENTRY_CONTENT,\n variables: params\n });\n }\n}\n\nexport const GenerateEntryContentGateway = GatewayAbstraction.createImplementation({\n implementation: GenerateEntryContentGatewayImpl,\n dependencies: [MainGraphQLClient]\n});\n"],"names":["GENERATE_ENTRY_CONTENT","GenerateEntryContentGatewayImpl","client","params","GenerateEntryContentGateway","GatewayAbstraction","MainGraphQLClient"],"mappings":";;AAIA,MAAMA,yBAAuC,CAAC;;;;;;;;;;;;;;;;;;;;;;AAsB9C,CAAC;AAQD,MAAMC;IACF,YAAoBC,MAAmC,CAAE;aAArCA,MAAM,GAANA;IAAsC;IAE1D,MAAM,QAAQC,MAAkC,EAAiB;QAC7D,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA+B;YACpD,OAAOH;YACP,WAAWG;QACf;IACJ;AACJ;AAEO,MAAMC,0DAA8BC,4BAAAA,oBAAuC,CAAC;IAC/E,gBAAgBJ;IAChB,cAAc;QAACK;KAAkB;AACrC"}
|
|
@@ -5,6 +5,7 @@ export interface GenerateEntryContentParams {
|
|
|
5
5
|
excludedFileIds?: string[] | null;
|
|
6
6
|
readerPersonaId?: string | null;
|
|
7
7
|
writerPersonaId?: string | null;
|
|
8
|
+
additionalFileIds?: string[] | null;
|
|
8
9
|
}
|
|
9
10
|
export interface IGenerateEntryContentUseCase {
|
|
10
11
|
execute(params: GenerateEntryContentParams): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin/features/generateEntryContent/abstractions.js","sources":["../../../../src/admin/features/generateEntryContent/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/admin\";\n\nexport interface GenerateEntryContentParams {\n prompt: string;\n modelId: string;\n projectId?: string | null;\n excludedFileIds?: string[] | null;\n readerPersonaId?: string | null;\n writerPersonaId?: string | null;\n}\n\nexport interface IGenerateEntryContentUseCase {\n execute(params: GenerateEntryContentParams): Promise<void>;\n}\n\nexport const GenerateEntryContentUseCase = createAbstraction<IGenerateEntryContentUseCase>(\n \"AiPowerUps/GenerateEntryContentUseCase\"\n);\n\nexport namespace GenerateEntryContentUseCase {\n export type Interface = IGenerateEntryContentUseCase;\n export type Params = GenerateEntryContentParams;\n}\n\nexport interface IGenerateEntryContentGateway {\n execute(params: GenerateEntryContentParams): Promise<void>;\n}\n\nexport const GenerateEntryContentGateway = createAbstraction<IGenerateEntryContentGateway>(\n \"AiPowerUps/GenerateEntryContentGateway\"\n);\n\nexport namespace GenerateEntryContentGateway {\n export type Interface = IGenerateEntryContentGateway;\n}\n"],"names":["GenerateEntryContentUseCase","createAbstraction","GenerateEntryContentGateway"],"mappings":";
|
|
1
|
+
{"version":3,"file":"admin/features/generateEntryContent/abstractions.js","sources":["../../../../src/admin/features/generateEntryContent/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/admin\";\n\nexport interface GenerateEntryContentParams {\n prompt: string;\n modelId: string;\n projectId?: string | null;\n excludedFileIds?: string[] | null;\n readerPersonaId?: string | null;\n writerPersonaId?: string | null;\n additionalFileIds?: string[] | null;\n}\n\nexport interface IGenerateEntryContentUseCase {\n execute(params: GenerateEntryContentParams): Promise<void>;\n}\n\nexport const GenerateEntryContentUseCase = createAbstraction<IGenerateEntryContentUseCase>(\n \"AiPowerUps/GenerateEntryContentUseCase\"\n);\n\nexport namespace GenerateEntryContentUseCase {\n export type Interface = IGenerateEntryContentUseCase;\n export type Params = GenerateEntryContentParams;\n}\n\nexport interface IGenerateEntryContentGateway {\n execute(params: GenerateEntryContentParams): Promise<void>;\n}\n\nexport const GenerateEntryContentGateway = createAbstraction<IGenerateEntryContentGateway>(\n \"AiPowerUps/GenerateEntryContentGateway\"\n);\n\nexport namespace GenerateEntryContentGateway {\n export type Interface = IGenerateEntryContentGateway;\n}\n"],"names":["GenerateEntryContentUseCase","createAbstraction","GenerateEntryContentGateway"],"mappings":";AAgBO,MAAMA,8BAA8BC,kBACvC;AAYG,MAAMC,8BAA8BD,kBACvC"}
|
|
@@ -9,6 +9,7 @@ const GENERATE_PAGE_CONTENT = `
|
|
|
9
9
|
$excludedFileIds: [String!]
|
|
10
10
|
$readerPersonaId: String
|
|
11
11
|
$writerPersonaId: String
|
|
12
|
+
$additionalFileIds: [String!]
|
|
12
13
|
) {
|
|
13
14
|
aiPowerUps {
|
|
14
15
|
generatePageContent(
|
|
@@ -19,6 +20,7 @@ const GENERATE_PAGE_CONTENT = `
|
|
|
19
20
|
excludedFileIds: $excludedFileIds
|
|
20
21
|
readerPersonaId: $readerPersonaId
|
|
21
22
|
writerPersonaId: $writerPersonaId
|
|
23
|
+
additionalFileIds: $additionalFileIds
|
|
22
24
|
)
|
|
23
25
|
}
|
|
24
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin/features/generatePageContent/GeneratePageContentGateway.js","sources":["../../../../src/admin/features/generatePageContent/GeneratePageContentGateway.ts"],"sourcesContent":["import { GeneratePageContentGateway as GatewayAbstraction } from \"./abstractions.js\";\nimport type { GeneratePageContentParams } from \"./abstractions.js\";\nimport { MainGraphQLClient } from \"@webiny/app/exports/admin.js\";\n\nconst GENERATE_PAGE_CONTENT = /* GraphQL */ `\n mutation GeneratePageContent(\n $prompt: String!\n $components: JSON!\n $tools: JSON!\n $projectId: String\n $excludedFileIds: [String!]\n $readerPersonaId: String\n $writerPersonaId: String\n ) {\n aiPowerUps {\n generatePageContent(\n prompt: $prompt\n components: $components\n tools: $tools\n projectId: $projectId\n excludedFileIds: $excludedFileIds\n readerPersonaId: $readerPersonaId\n writerPersonaId: $writerPersonaId\n )\n }\n }\n`;\n\ntype GeneratePageContentResponse = {\n aiPowerUps: {\n generatePageContent: { id: string };\n };\n};\n\nclass GeneratePageContentGatewayImpl implements GatewayAbstraction.Interface {\n constructor(private client: MainGraphQLClient.Interface) {}\n\n async execute(params: GeneratePageContentParams): Promise<void> {\n await this.client.execute<GeneratePageContentResponse>({\n query: GENERATE_PAGE_CONTENT,\n variables: params\n });\n }\n}\n\nexport const GeneratePageContentGateway = GatewayAbstraction.createImplementation({\n implementation: GeneratePageContentGatewayImpl,\n dependencies: [MainGraphQLClient]\n});\n"],"names":["GENERATE_PAGE_CONTENT","GeneratePageContentGatewayImpl","client","params","GeneratePageContentGateway","GatewayAbstraction","MainGraphQLClient"],"mappings":";;AAIA,MAAMA,wBAAsC,CAAC
|
|
1
|
+
{"version":3,"file":"admin/features/generatePageContent/GeneratePageContentGateway.js","sources":["../../../../src/admin/features/generatePageContent/GeneratePageContentGateway.ts"],"sourcesContent":["import { GeneratePageContentGateway as GatewayAbstraction } from \"./abstractions.js\";\nimport type { GeneratePageContentParams } from \"./abstractions.js\";\nimport { MainGraphQLClient } from \"@webiny/app/exports/admin.js\";\n\nconst GENERATE_PAGE_CONTENT = /* GraphQL */ `\n mutation GeneratePageContent(\n $prompt: String!\n $components: JSON!\n $tools: JSON!\n $projectId: String\n $excludedFileIds: [String!]\n $readerPersonaId: String\n $writerPersonaId: String\n $additionalFileIds: [String!]\n ) {\n aiPowerUps {\n generatePageContent(\n prompt: $prompt\n components: $components\n tools: $tools\n projectId: $projectId\n excludedFileIds: $excludedFileIds\n readerPersonaId: $readerPersonaId\n writerPersonaId: $writerPersonaId\n additionalFileIds: $additionalFileIds\n )\n }\n }\n`;\n\ntype GeneratePageContentResponse = {\n aiPowerUps: {\n generatePageContent: { id: string };\n };\n};\n\nclass GeneratePageContentGatewayImpl implements GatewayAbstraction.Interface {\n constructor(private client: MainGraphQLClient.Interface) {}\n\n async execute(params: GeneratePageContentParams): Promise<void> {\n await this.client.execute<GeneratePageContentResponse>({\n query: GENERATE_PAGE_CONTENT,\n variables: params\n });\n }\n}\n\nexport const GeneratePageContentGateway = GatewayAbstraction.createImplementation({\n implementation: GeneratePageContentGatewayImpl,\n dependencies: [MainGraphQLClient]\n});\n"],"names":["GENERATE_PAGE_CONTENT","GeneratePageContentGatewayImpl","client","params","GeneratePageContentGateway","GatewayAbstraction","MainGraphQLClient"],"mappings":";;AAIA,MAAMA,wBAAsC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;AAwB7C,CAAC;AAQD,MAAMC;IACF,YAAoBC,MAAmC,CAAE;aAArCA,MAAM,GAANA;IAAsC;IAE1D,MAAM,QAAQC,MAAiC,EAAiB;QAC5D,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA8B;YACnD,OAAOH;YACP,WAAWG;QACf;IACJ;AACJ;AAEO,MAAMC,wDAA6BC,2BAAAA,oBAAuC,CAAC;IAC9E,gBAAgBJ;IAChB,cAAc;QAACK;KAAkB;AACrC"}
|
|
@@ -6,6 +6,7 @@ export interface GeneratePageContentParams {
|
|
|
6
6
|
excludedFileIds?: string[] | null;
|
|
7
7
|
readerPersonaId?: string | null;
|
|
8
8
|
writerPersonaId?: string | null;
|
|
9
|
+
additionalFileIds?: string[] | null;
|
|
9
10
|
}
|
|
10
11
|
export interface IGeneratePageContentUseCase {
|
|
11
12
|
execute(params: GeneratePageContentParams): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin/features/generatePageContent/abstractions.js","sources":["../../../../src/admin/features/generatePageContent/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/admin\";\n\nexport interface GeneratePageContentParams {\n prompt: string;\n components: unknown;\n tools: unknown;\n projectId?: string | null;\n excludedFileIds?: string[] | null;\n readerPersonaId?: string | null;\n writerPersonaId?: string | null;\n}\n\nexport interface IGeneratePageContentUseCase {\n execute(params: GeneratePageContentParams): Promise<void>;\n}\n\nexport const GeneratePageContentUseCase = createAbstraction<IGeneratePageContentUseCase>(\n \"AiPowerUps/GeneratePageContentUseCase\"\n);\n\nexport namespace GeneratePageContentUseCase {\n export type Interface = IGeneratePageContentUseCase;\n export type Params = GeneratePageContentParams;\n}\n\nexport interface IGeneratePageContentGateway {\n execute(params: GeneratePageContentParams): Promise<void>;\n}\n\nexport const GeneratePageContentGateway = createAbstraction<IGeneratePageContentGateway>(\n \"AiPowerUps/GeneratePageContentGateway\"\n);\n\nexport namespace GeneratePageContentGateway {\n export type Interface = IGeneratePageContentGateway;\n}\n"],"names":["GeneratePageContentUseCase","createAbstraction","GeneratePageContentGateway"],"mappings":";
|
|
1
|
+
{"version":3,"file":"admin/features/generatePageContent/abstractions.js","sources":["../../../../src/admin/features/generatePageContent/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/admin\";\n\nexport interface GeneratePageContentParams {\n prompt: string;\n components: unknown;\n tools: unknown;\n projectId?: string | null;\n excludedFileIds?: string[] | null;\n readerPersonaId?: string | null;\n writerPersonaId?: string | null;\n additionalFileIds?: string[] | null;\n}\n\nexport interface IGeneratePageContentUseCase {\n execute(params: GeneratePageContentParams): Promise<void>;\n}\n\nexport const GeneratePageContentUseCase = createAbstraction<IGeneratePageContentUseCase>(\n \"AiPowerUps/GeneratePageContentUseCase\"\n);\n\nexport namespace GeneratePageContentUseCase {\n export type Interface = IGeneratePageContentUseCase;\n export type Params = GeneratePageContentParams;\n}\n\nexport interface IGeneratePageContentGateway {\n execute(params: GeneratePageContentParams): Promise<void>;\n}\n\nexport const GeneratePageContentGateway = createAbstraction<IGeneratePageContentGateway>(\n \"AiPowerUps/GeneratePageContentGateway\"\n);\n\nexport namespace GeneratePageContentGateway {\n export type Interface = IGeneratePageContentGateway;\n}\n"],"names":["GeneratePageContentUseCase","createAbstraction","GeneratePageContentGateway"],"mappings":";AAiBO,MAAMA,6BAA6BC,kBACtC;AAYG,MAAMC,6BAA6BD,kBACtC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
export declare const AiPowerUpsSettingsPage: (() => React.JSX.Element) & {
|
|
3
|
-
|
|
2
|
+
export declare const AiPowerUpsSettingsPage: (() => React.JSX.Element) & React.NamedExoticComponent<unknown> & {
|
|
3
|
+
readonly type: () => React.JSX.Element;
|
|
4
4
|
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { FormModelFactory } from "@webiny/app-admin";
|
|
2
|
+
import type { FormModel } from "@webiny/app-admin";
|
|
3
|
+
import { AiPromptFormFactory as Abstraction, type AiPromptFormConfig } from "./abstractions.js";
|
|
4
|
+
import { GetSettingsUseCase } from "../../../admin/features/settings/getSettings/abstractions.js";
|
|
5
|
+
declare class AiPromptFormFactoryImpl implements Abstraction.Interface {
|
|
6
|
+
private formModelFactory;
|
|
7
|
+
private getSettings;
|
|
8
|
+
private _settings;
|
|
9
|
+
constructor(formModelFactory: FormModelFactory.Interface, getSettings: GetSettingsUseCase.Interface);
|
|
10
|
+
createForm(config?: AiPromptFormConfig): FormModel.Interface;
|
|
11
|
+
computeExcludedFileIds(form: FormModel.Interface): string[] | null;
|
|
12
|
+
private getProjectOptions;
|
|
13
|
+
private getPersonaOptions;
|
|
14
|
+
private loadSettings;
|
|
15
|
+
private getProjectFileOptions;
|
|
16
|
+
}
|
|
17
|
+
export declare const AiPromptFormFactory: typeof AiPromptFormFactoryImpl & {
|
|
18
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IAiPromptFormFactory>;
|
|
19
|
+
};
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { makeAutoObservable, runInAction } from "mobx";
|
|
2
|
+
import { FormModelFactory } from "@webiny/app-admin";
|
|
3
|
+
import { AiPromptFormFactory } from "./abstractions.js";
|
|
4
|
+
import { GetSettingsUseCase } from "../../features/settings/getSettings/abstractions.js";
|
|
5
|
+
class AiPromptFormFactoryImpl {
|
|
6
|
+
constructor(formModelFactory, getSettings){
|
|
7
|
+
this.formModelFactory = formModelFactory;
|
|
8
|
+
this.getSettings = getSettings;
|
|
9
|
+
this._settings = null;
|
|
10
|
+
makeAutoObservable(this, {}, {
|
|
11
|
+
autoBind: true
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
createForm(config) {
|
|
15
|
+
this.loadSettings();
|
|
16
|
+
return this.formModelFactory.create({
|
|
17
|
+
fields: (fields)=>({
|
|
18
|
+
project: fields.text().label("Project").description("Select a predefined context to attach.").options(()=>this.getProjectOptions()).afterChange((value, { form })=>{
|
|
19
|
+
const projectId = value;
|
|
20
|
+
const project = projectId ? this._settings?.projects?.presets?.find((p)=>p.id === projectId) : void 0;
|
|
21
|
+
if (project?.defaultReaderPersonaId) form.field("readerPersona").setValue(project.defaultReaderPersonaId);
|
|
22
|
+
if (project?.defaultWriterPersonaId) form.field("writerPersona").setValue(project.defaultWriterPersonaId);
|
|
23
|
+
const fileIds = (project?.files ?? []).map((f)=>f.id);
|
|
24
|
+
form.field("includedFiles").setValue(fileIds);
|
|
25
|
+
}),
|
|
26
|
+
includedFiles: fields.text().label("Files included").description("Uncheck files to exclude them from this generation only.").options(({ form })=>this.getProjectFileOptions(form)).renderer("multiSelect", {
|
|
27
|
+
showSelectionCount: true
|
|
28
|
+
}).list().hiddenWhen(({ form })=>{
|
|
29
|
+
const projectId = form.field("project").as("text").getValue();
|
|
30
|
+
if (!projectId) return true;
|
|
31
|
+
const project = this._settings?.projects?.presets?.find((p)=>p.id === projectId);
|
|
32
|
+
return !project?.files || 0 === project.files.length;
|
|
33
|
+
}),
|
|
34
|
+
readerPersona: fields.text().label("Reader Persona").description("Select the target audience for the generated content.").options(()=>this.getPersonaOptions("reader")),
|
|
35
|
+
writerPersona: fields.text().label("Writer Persona").description("Select the writing style for the generated content.").options(()=>this.getPersonaOptions("writer")),
|
|
36
|
+
prompt: fields.text().label("Prompt").description(config?.promptDescription ?? "Describe the content you want to generate.").required("Prompt is required").renderer("textarea", {
|
|
37
|
+
rows: 6
|
|
38
|
+
}).defaultValue(config?.promptDefaultValue ?? ""),
|
|
39
|
+
additionalFiles: fields.file().list().accept([
|
|
40
|
+
"text/*",
|
|
41
|
+
"application/vnd.openxmlformats-officedocument.wordprocessingml.document"
|
|
42
|
+
]).label("Additional files").description("Attach files as one-off context for this generation.")
|
|
43
|
+
}),
|
|
44
|
+
layout: (layout)=>[
|
|
45
|
+
layout.row("project"),
|
|
46
|
+
layout.row("includedFiles"),
|
|
47
|
+
layout.row("readerPersona"),
|
|
48
|
+
layout.row("writerPersona"),
|
|
49
|
+
layout.row("prompt"),
|
|
50
|
+
layout.row("additionalFiles")
|
|
51
|
+
]
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
computeExcludedFileIds(form) {
|
|
55
|
+
const projectId = form.field("project").getValue();
|
|
56
|
+
if (!projectId) return null;
|
|
57
|
+
const project = this._settings?.projects?.presets?.find((p)=>p.id === projectId);
|
|
58
|
+
const allFileIds = (project?.files ?? []).map((f)=>f.id);
|
|
59
|
+
if (0 === allFileIds.length) return null;
|
|
60
|
+
const includedFiles = form.field("includedFiles").getValue() ?? [];
|
|
61
|
+
const included = new Set(includedFiles);
|
|
62
|
+
const excluded = allFileIds.filter((id)=>!included.has(id));
|
|
63
|
+
return excluded.length > 0 ? excluded : null;
|
|
64
|
+
}
|
|
65
|
+
getProjectOptions() {
|
|
66
|
+
const presets = this._settings?.projects?.presets;
|
|
67
|
+
if (!presets || 0 === presets.length) return [];
|
|
68
|
+
return presets.map((preset)=>({
|
|
69
|
+
label: preset.name,
|
|
70
|
+
value: preset.id
|
|
71
|
+
}));
|
|
72
|
+
}
|
|
73
|
+
getPersonaOptions(type) {
|
|
74
|
+
const presets = "reader" === type ? this._settings?.readerPersonas?.presets : this._settings?.writerPersonas?.presets;
|
|
75
|
+
if (!presets || 0 === presets.length) return [];
|
|
76
|
+
return presets.map((preset)=>({
|
|
77
|
+
label: preset.name,
|
|
78
|
+
value: preset.id
|
|
79
|
+
}));
|
|
80
|
+
}
|
|
81
|
+
async loadSettings() {
|
|
82
|
+
const settings = await this.getSettings.execute();
|
|
83
|
+
runInAction(()=>{
|
|
84
|
+
this._settings = settings;
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
getProjectFileOptions(form) {
|
|
88
|
+
const projectId = form.field("project").getValue();
|
|
89
|
+
if (!projectId) return [];
|
|
90
|
+
const project = this._settings?.projects?.presets?.find((p)=>p.id === projectId);
|
|
91
|
+
const files = project?.files;
|
|
92
|
+
if (!files || 0 === files.length) return [];
|
|
93
|
+
return files.map((f)=>({
|
|
94
|
+
label: f.name,
|
|
95
|
+
value: f.id
|
|
96
|
+
}));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
const AiPromptFormFactory_AiPromptFormFactory = AiPromptFormFactory.createImplementation({
|
|
100
|
+
implementation: AiPromptFormFactoryImpl,
|
|
101
|
+
dependencies: [
|
|
102
|
+
FormModelFactory,
|
|
103
|
+
GetSettingsUseCase
|
|
104
|
+
]
|
|
105
|
+
});
|
|
106
|
+
export { AiPromptFormFactory_AiPromptFormFactory as AiPromptFormFactory };
|
|
107
|
+
|
|
108
|
+
//# sourceMappingURL=AiPromptFormFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/presentation/AiPromptFormFactory/AiPromptFormFactory.js","sources":["../../../../src/admin/presentation/AiPromptFormFactory/AiPromptFormFactory.ts"],"sourcesContent":["import { makeAutoObservable, runInAction } from \"mobx\";\nimport { FormModelFactory } from \"@webiny/app-admin\";\nimport type { FormModel } from \"@webiny/app-admin\";\nimport { AiPromptFormFactory as Abstraction, type AiPromptFormConfig } from \"./abstractions.js\";\nimport { GetSettingsUseCase } from \"~/admin/features/settings/getSettings/abstractions.js\";\nimport type { IAiPowerUpsSettings } from \"~/admin/features/settings/shared/abstractions.js\";\n\nclass AiPromptFormFactoryImpl implements Abstraction.Interface {\n private _settings: IAiPowerUpsSettings | null = null;\n\n constructor(\n private formModelFactory: FormModelFactory.Interface,\n private getSettings: GetSettingsUseCase.Interface\n ) {\n makeAutoObservable(this, {}, { autoBind: true });\n }\n\n createForm(config?: AiPromptFormConfig): FormModel.Interface {\n this.loadSettings();\n\n return this.formModelFactory.create({\n fields: fields => ({\n project: fields\n .text()\n .label(\"Project\")\n .description(\"Select a predefined context to attach.\")\n .options(() => this.getProjectOptions())\n .afterChange((value, { form }) => {\n const projectId = value as string | undefined;\n const project = projectId\n ? this._settings?.projects?.presets?.find(p => p.id === projectId)\n : undefined;\n\n if (project?.defaultReaderPersonaId) {\n form.field(\"readerPersona\").setValue(project.defaultReaderPersonaId);\n }\n if (project?.defaultWriterPersonaId) {\n form.field(\"writerPersona\").setValue(project.defaultWriterPersonaId);\n }\n\n const fileIds = (project?.files ?? []).map((f: { id: string }) => f.id);\n form.field(\"includedFiles\").setValue(fileIds);\n }),\n includedFiles: fields\n .text()\n .label(\"Files included\")\n .description(\"Uncheck files to exclude them from this generation only.\")\n .options(({ form }) => this.getProjectFileOptions(form))\n .renderer(\"multiSelect\", { showSelectionCount: true })\n .list()\n .hiddenWhen(({ form }) => {\n const projectId = form.field(\"project\").as(\"text\").getValue();\n if (!projectId) {\n return true;\n }\n const project = this._settings?.projects?.presets?.find(\n p => p.id === projectId\n );\n return !project?.files || project.files.length === 0;\n }),\n readerPersona: fields\n .text()\n .label(\"Reader Persona\")\n .description(\"Select the target audience for the generated content.\")\n .options(() => this.getPersonaOptions(\"reader\")),\n writerPersona: fields\n .text()\n .label(\"Writer Persona\")\n .description(\"Select the writing style for the generated content.\")\n .options(() => this.getPersonaOptions(\"writer\")),\n prompt: fields\n .text()\n .label(\"Prompt\")\n .description(\n config?.promptDescription ?? \"Describe the content you want to generate.\"\n )\n .required(\"Prompt is required\")\n .renderer(\"textarea\", { rows: 6 })\n .defaultValue(config?.promptDefaultValue ?? \"\"),\n additionalFiles: fields\n .file()\n .list()\n .accept([\n \"text/*\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\"\n ])\n .label(\"Additional files\")\n .description(\"Attach files as one-off context for this generation.\")\n }),\n layout: layout => [\n layout.row(\"project\"),\n layout.row(\"includedFiles\"),\n layout.row(\"readerPersona\"),\n layout.row(\"writerPersona\"),\n layout.row(\"prompt\"),\n layout.row(\"additionalFiles\")\n ]\n });\n }\n\n computeExcludedFileIds(form: FormModel.Interface): string[] | null {\n const projectId = form.field(\"project\").getValue<string>();\n if (!projectId) {\n return null;\n }\n const project = this._settings?.projects?.presets?.find(p => p.id === projectId);\n const allFileIds = (project?.files ?? []).map((f: { id: string }) => f.id);\n if (allFileIds.length === 0) {\n return null;\n }\n const includedFiles = form.field(\"includedFiles\").getValue<string[]>() ?? [];\n const included = new Set(includedFiles);\n const excluded = allFileIds.filter((id: string) => !included.has(id));\n return excluded.length > 0 ? excluded : null;\n }\n\n private getProjectOptions() {\n const presets = this._settings?.projects?.presets;\n if (!presets || presets.length === 0) {\n return [];\n }\n return presets.map(preset => ({\n label: preset.name,\n value: preset.id\n }));\n }\n\n private getPersonaOptions(type: \"reader\" | \"writer\") {\n const presets =\n type === \"reader\"\n ? this._settings?.readerPersonas?.presets\n : this._settings?.writerPersonas?.presets;\n\n if (!presets || presets.length === 0) {\n return [];\n }\n\n return presets.map(preset => ({\n label: preset.name,\n value: preset.id\n }));\n }\n\n private async loadSettings(): Promise<void> {\n const settings = await this.getSettings.execute();\n runInAction(() => {\n this._settings = settings;\n });\n }\n\n private getProjectFileOptions(form: FormModel.Interface) {\n const projectId = form.field(\"project\").getValue<string>();\n if (!projectId) {\n return [];\n }\n const project = this._settings?.projects?.presets?.find(p => p.id === projectId);\n const files = project?.files;\n if (!files || files.length === 0) {\n return [];\n }\n return files.map((f: { id: string; name: string }) => ({\n label: f.name,\n value: f.id\n }));\n }\n}\n\nexport const AiPromptFormFactory = Abstraction.createImplementation({\n implementation: AiPromptFormFactoryImpl,\n dependencies: [FormModelFactory, GetSettingsUseCase]\n});\n"],"names":["AiPromptFormFactoryImpl","formModelFactory","getSettings","makeAutoObservable","config","fields","value","form","projectId","project","p","undefined","fileIds","f","layout","allFileIds","includedFiles","included","Set","excluded","id","presets","preset","type","settings","runInAction","files","AiPromptFormFactory","Abstraction","FormModelFactory","GetSettingsUseCase"],"mappings":"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"}
|