@webiny/ai-powerups 6.6.0-alpha.0 → 6.6.0-alpha.2

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.
Files changed (195) hide show
  1. package/AiPowerups.js +2 -2
  2. package/AiPowerups.js.map +1 -1
  3. package/admin/Extension.js +10 -2
  4. package/admin/Extension.js.map +1 -1
  5. package/admin/features/compareEntryRevisions/CompareEntryRevisionsGateway.d.ts +12 -0
  6. package/admin/features/compareEntryRevisions/CompareEntryRevisionsGateway.js +46 -0
  7. package/admin/features/compareEntryRevisions/CompareEntryRevisionsGateway.js.map +1 -0
  8. package/admin/features/compareEntryRevisions/CompareEntryRevisionsRepository.d.ts +11 -0
  9. package/admin/features/compareEntryRevisions/CompareEntryRevisionsRepository.js +18 -0
  10. package/admin/features/compareEntryRevisions/CompareEntryRevisionsRepository.js.map +1 -0
  11. package/admin/features/compareEntryRevisions/CompareEntryRevisionsUseCase.d.ts +11 -0
  12. package/admin/features/compareEntryRevisions/CompareEntryRevisionsUseCase.js +18 -0
  13. package/admin/features/compareEntryRevisions/CompareEntryRevisionsUseCase.js.map +1 -0
  14. package/admin/features/compareEntryRevisions/abstractions.d.ts +32 -0
  15. package/admin/features/compareEntryRevisions/abstractions.js +7 -0
  16. package/admin/features/compareEntryRevisions/abstractions.js.map +1 -0
  17. package/admin/features/compareEntryRevisions/feature.d.ts +1 -0
  18. package/admin/features/compareEntryRevisions/feature.js +15 -0
  19. package/admin/features/compareEntryRevisions/feature.js.map +1 -0
  20. package/admin/features/compareEntryRevisions/index.d.ts +2 -0
  21. package/admin/features/compareEntryRevisions/index.js +2 -0
  22. package/admin/features/feature.js +2 -0
  23. package/admin/features/feature.js.map +1 -1
  24. package/admin/features/generateEntryContent/GenerateEntryContentGateway.js +2 -0
  25. package/admin/features/generateEntryContent/GenerateEntryContentGateway.js.map +1 -1
  26. package/admin/features/generateEntryContent/abstractions.d.ts +1 -0
  27. package/admin/features/generateEntryContent/abstractions.js.map +1 -1
  28. package/admin/features/generatePageContent/GeneratePageContentGateway.js +2 -0
  29. package/admin/features/generatePageContent/GeneratePageContentGateway.js.map +1 -1
  30. package/admin/features/generatePageContent/abstractions.d.ts +1 -0
  31. package/admin/features/generatePageContent/abstractions.js.map +1 -1
  32. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPage.d.ts +2 -2
  33. package/admin/presentation/AiPromptFormFactory/AiPromptFormFactory.d.ts +20 -0
  34. package/admin/presentation/AiPromptFormFactory/AiPromptFormFactory.js +108 -0
  35. package/admin/presentation/AiPromptFormFactory/AiPromptFormFactory.js.map +1 -0
  36. package/admin/presentation/AiPromptFormFactory/abstractions.d.ts +14 -0
  37. package/admin/presentation/AiPromptFormFactory/abstractions.js +5 -0
  38. package/admin/presentation/AiPromptFormFactory/abstractions.js.map +1 -0
  39. package/admin/presentation/AiPromptFormFactory/feature.d.ts +1 -0
  40. package/admin/presentation/AiPromptFormFactory/feature.js +11 -0
  41. package/admin/presentation/AiPromptFormFactory/feature.js.map +1 -0
  42. package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsDialog.d.ts +9 -0
  43. package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsDialog.js +118 -0
  44. package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsDialog.js.map +1 -0
  45. package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsDrawer.d.ts +9 -0
  46. package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsDrawer.js +72 -0
  47. package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsDrawer.js.map +1 -0
  48. package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsMenuItem.d.ts +4 -0
  49. package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsMenuItem.js +21 -0
  50. package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsMenuItem.js.map +1 -0
  51. package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsOverlays.d.ts +2 -0
  52. package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsOverlays.js +17 -0
  53. package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsOverlays.js.map +1 -0
  54. package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsPresenter.d.ts +25 -0
  55. package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsPresenter.js +90 -0
  56. package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsPresenter.js.map +1 -0
  57. package/admin/presentation/CmsCompareEntryRevisions/Extension.d.ts +2 -0
  58. package/admin/presentation/CmsCompareEntryRevisions/Extension.js +16 -0
  59. package/admin/presentation/CmsCompareEntryRevisions/Extension.js.map +1 -0
  60. package/admin/presentation/CmsCompareEntryRevisions/abstractions.d.ts +29 -0
  61. package/admin/presentation/CmsCompareEntryRevisions/abstractions.js +5 -0
  62. package/admin/presentation/CmsCompareEntryRevisions/abstractions.js.map +1 -0
  63. package/admin/presentation/CmsCompareEntryRevisions/feature.d.ts +3 -0
  64. package/admin/presentation/CmsCompareEntryRevisions/feature.js +17 -0
  65. package/admin/presentation/CmsCompareEntryRevisions/feature.js.map +1 -0
  66. package/admin/presentation/CmsContentGeneration/CmsGenerateContentButton.d.ts +2 -2
  67. package/admin/presentation/CmsContentGeneration/CmsGenerateContentDialog.d.ts +2 -2
  68. package/admin/presentation/CmsContentGeneration/CmsGenerateContentPresenter.d.ts +4 -12
  69. package/admin/presentation/CmsContentGeneration/CmsGenerateContentPresenter.js +12 -94
  70. package/admin/presentation/CmsContentGeneration/CmsGenerateContentPresenter.js.map +1 -1
  71. package/admin/presentation/CmsContentGeneration/Extension.d.ts +1 -1
  72. package/admin/presentation/CmsContentGeneration/Extension.js +9 -5
  73. package/admin/presentation/CmsContentGeneration/Extension.js.map +1 -1
  74. package/admin/presentation/CmsEntryWizard/CmsEntryWizard.d.ts +4 -0
  75. package/admin/presentation/CmsEntryWizard/CmsEntryWizard.js +113 -0
  76. package/admin/presentation/CmsEntryWizard/CmsEntryWizard.js.map +1 -0
  77. package/admin/presentation/CmsEntryWizard/CmsEntryWizardGate.d.ts +4 -0
  78. package/admin/presentation/CmsEntryWizard/CmsEntryWizardGate.js +19 -0
  79. package/admin/presentation/CmsEntryWizard/CmsEntryWizardGate.js.map +1 -0
  80. package/admin/presentation/CmsEntryWizard/Extension.d.ts +2 -0
  81. package/admin/presentation/CmsEntryWizard/Extension.js +10 -0
  82. package/admin/presentation/CmsEntryWizard/Extension.js.map +1 -0
  83. package/admin/presentation/ProvidersSettings.js +1 -1
  84. package/admin/presentation/ProvidersSettings.js.map +1 -1
  85. package/admin/presentation/WbContentGeneration/GenerateContentDialog.d.ts +2 -2
  86. package/admin/presentation/WbContentGeneration/GenerateContentDialog.js +2 -2
  87. package/admin/presentation/WbContentGeneration/GenerateContentDialog.js.map +1 -1
  88. package/admin/presentation/WbContentGeneration/GenerateContentPresenter.d.ts +4 -12
  89. package/admin/presentation/WbContentGeneration/GenerateContentPresenter.js +12 -94
  90. package/admin/presentation/WbContentGeneration/GenerateContentPresenter.js.map +1 -1
  91. package/api/Extension.js +8 -0
  92. package/api/Extension.js.map +1 -1
  93. package/api/features/AiChatProvider/PowerUpsAiChatProvider.d.ts +24 -0
  94. package/api/features/AiChatProvider/PowerUpsAiChatProvider.js +31 -0
  95. package/api/features/AiChatProvider/PowerUpsAiChatProvider.js.map +1 -0
  96. package/api/features/AiChatProvider/feature.d.ts +9 -0
  97. package/api/features/AiChatProvider/feature.js +11 -0
  98. package/api/features/AiChatProvider/feature.js.map +1 -0
  99. package/api/features/AiChatProvider/index.d.ts +2 -0
  100. package/api/features/AiChatProvider/index.js +2 -0
  101. package/api/features/AiImageEnrichment/AiImageEnrichmentAfterCreateHandler.d.ts +1 -3
  102. package/api/features/AiImageEnrichment/AiImageEnrichmentAfterCreateHandler.js +2 -6
  103. package/api/features/AiImageEnrichment/AiImageEnrichmentAfterCreateHandler.js.map +1 -1
  104. package/api/features/AiImageEnrichment/AiImageEnrichmentStreamRoute.d.ts +36 -0
  105. package/api/features/AiImageEnrichment/AiImageEnrichmentStreamRoute.js +85 -0
  106. package/api/features/AiImageEnrichment/AiImageEnrichmentStreamRoute.js.map +1 -0
  107. package/api/features/AiImageEnrichment/AiImageEnrichmentTask.d.ts +10 -16
  108. package/api/features/AiImageEnrichment/AiImageEnrichmentTask.js +27 -102
  109. package/api/features/AiImageEnrichment/AiImageEnrichmentTask.js.map +1 -1
  110. package/api/features/AiImageEnrichment/ApplyImageEnrichmentUseCase.d.ts +18 -0
  111. package/api/features/AiImageEnrichment/ApplyImageEnrichmentUseCase.js +50 -0
  112. package/api/features/AiImageEnrichment/ApplyImageEnrichmentUseCase.js.map +1 -0
  113. package/api/features/AiImageEnrichment/PrepareImageEnrichmentUseCase.d.ts +19 -0
  114. package/api/features/AiImageEnrichment/PrepareImageEnrichmentUseCase.js +49 -0
  115. package/api/features/AiImageEnrichment/PrepareImageEnrichmentUseCase.js.map +1 -0
  116. package/api/features/AiImageEnrichment/abstractions.d.ts +60 -0
  117. package/api/features/AiImageEnrichment/abstractions.js +12 -0
  118. package/api/features/AiImageEnrichment/abstractions.js.map +1 -0
  119. package/api/features/AiImageEnrichment/buildEnrichmentAiRequest.d.ts +12 -0
  120. package/api/features/AiImageEnrichment/buildEnrichmentAiRequest.js +30 -0
  121. package/api/features/AiImageEnrichment/buildEnrichmentAiRequest.js.map +1 -0
  122. package/api/features/AiImageEnrichment/errors.d.ts +26 -0
  123. package/api/features/AiImageEnrichment/errors.js +28 -0
  124. package/api/features/AiImageEnrichment/errors.js.map +1 -0
  125. package/api/features/AiImageEnrichment/feature.js +9 -0
  126. package/api/features/AiImageEnrichment/feature.js.map +1 -1
  127. package/api/features/AiImageEnrichment/imageEnrichmentErrorStatusCode.d.ts +6 -0
  128. package/api/features/AiImageEnrichment/imageEnrichmentErrorStatusCode.js +9 -0
  129. package/api/features/AiImageEnrichment/imageEnrichmentErrorStatusCode.js.map +1 -0
  130. package/api/features/AiImageEnrichment/readEnrichmentPartial.d.ts +8 -0
  131. package/api/features/AiImageEnrichment/readEnrichmentPartial.js +16 -0
  132. package/api/features/AiImageEnrichment/readEnrichmentPartial.js.map +1 -0
  133. package/api/features/AiImageEnrichment/streamEvents.d.ts +36 -0
  134. package/api/features/AiImageEnrichment/streamEvents.js +0 -0
  135. package/api/features/AiPromptContext/AiPromptContextBuilder.d.ts +8 -1
  136. package/api/features/AiPromptContext/AiPromptContextBuilder.js +46 -2
  137. package/api/features/AiPromptContext/AiPromptContextBuilder.js.map +1 -1
  138. package/api/features/AiPromptContext/abstractions.d.ts +3 -0
  139. package/api/features/AiPromptContext/abstractions.js +9 -1
  140. package/api/features/AiPromptContext/abstractions.js.map +1 -1
  141. package/api/features/AiPromptContext/index.d.ts +1 -1
  142. package/api/features/AiPromptContext/index.js +1 -1
  143. package/api/features/CmsCompareEntryRevisions/CmsCompareEntryRevisionsUseCase.d.ts +22 -0
  144. package/api/features/CmsCompareEntryRevisions/CmsCompareEntryRevisionsUseCase.js +136 -0
  145. package/api/features/CmsCompareEntryRevisions/CmsCompareEntryRevisionsUseCase.js.map +1 -0
  146. package/api/features/CmsCompareEntryRevisions/abstractions.d.ts +18 -0
  147. package/api/features/CmsCompareEntryRevisions/abstractions.js +5 -0
  148. package/api/features/CmsCompareEntryRevisions/abstractions.js.map +1 -0
  149. package/api/features/CmsCompareEntryRevisions/feature.d.ts +4 -0
  150. package/api/features/CmsCompareEntryRevisions/feature.js +11 -0
  151. package/api/features/CmsCompareEntryRevisions/feature.js.map +1 -0
  152. package/api/features/CmsCompareEntryRevisions/index.d.ts +2 -0
  153. package/api/features/CmsCompareEntryRevisions/index.js +2 -0
  154. package/api/features/CmsGenerateEntryContent/CmsGenerateEntryContentTask.d.ts +1 -0
  155. package/api/features/CmsGenerateEntryContent/CmsGenerateEntryContentTask.js +20 -10
  156. package/api/features/CmsGenerateEntryContent/CmsGenerateEntryContentTask.js.map +1 -1
  157. package/api/features/CmsGenerateEntryContent/CmsGenerateEntryContentUseCase.d.ts +1 -1
  158. package/api/features/CmsGenerateEntryContent/CmsGenerateEntryContentUseCase.js +5 -5
  159. package/api/features/CmsGenerateEntryContent/CmsGenerateEntryContentUseCase.js.map +1 -1
  160. package/api/features/CmsGenerateEntryContent/abstractions.d.ts +10 -3
  161. package/api/features/CmsGenerateEntryContent/abstractions.js.map +1 -1
  162. package/api/features/GetSettings/index.d.ts +1 -0
  163. package/api/features/GetSettings/index.js +1 -0
  164. package/api/features/Providers/types.d.ts +2 -2
  165. package/api/features/WbGeneratePageContent/WbGeneratePageContentTask.d.ts +1 -0
  166. package/api/features/WbGeneratePageContent/WbGeneratePageContentTask.js +19 -9
  167. package/api/features/WbGeneratePageContent/WbGeneratePageContentTask.js.map +1 -1
  168. package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.js +4 -3
  169. package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.js.map +1 -1
  170. package/api/features/WbGeneratePageContent/abstractions.d.ts +1 -0
  171. package/api/features/WbGeneratePageContent/abstractions.js.map +1 -1
  172. package/api/features/WbTranslatePage/LexicalParser.d.ts +10 -0
  173. package/api/features/WbTranslatePage/LexicalParser.js +37 -0
  174. package/api/features/WbTranslatePage/LexicalParser.js.map +1 -0
  175. package/api/features/WbTranslatePage/WbTranslatePageDecorator.d.ts +27 -0
  176. package/api/features/WbTranslatePage/WbTranslatePageDecorator.js +134 -0
  177. package/api/features/WbTranslatePage/WbTranslatePageDecorator.js.map +1 -0
  178. package/api/features/WbTranslatePage/abstractions/LexicalParser.d.ts +7 -0
  179. package/api/features/WbTranslatePage/abstractions/LexicalParser.js +5 -0
  180. package/api/features/WbTranslatePage/abstractions/LexicalParser.js.map +1 -0
  181. package/api/features/WbTranslatePage/feature.d.ts +4 -0
  182. package/api/features/WbTranslatePage/feature.js +13 -0
  183. package/api/features/WbTranslatePage/feature.js.map +1 -0
  184. package/api/features/WbTranslatePage/index.d.ts +2 -0
  185. package/api/features/WbTranslatePage/index.js +2 -0
  186. package/api/graphql/BaseGraphQLSchema.js +11 -4
  187. package/api/graphql/BaseGraphQLSchema.js.map +1 -1
  188. package/api/graphql/CmsCompareEntryRevisionsSchema.d.ts +8 -0
  189. package/api/graphql/CmsCompareEntryRevisionsSchema.js +68 -0
  190. package/api/graphql/CmsCompareEntryRevisionsSchema.js.map +1 -0
  191. package/exports/admin/ai-powerups.d.ts +1 -0
  192. package/exports/admin/ai-powerups.js +1 -0
  193. package/exports/api/ai-powerups.d.ts +2 -0
  194. package/exports/api/ai-powerups.js +2 -0
  195. 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 { Wcp } from "@webiny/project";
4
- const AiPowerups = ()=>/*#__PURE__*/ react.createElement(Wcp.CanUseMultiTenancy, null, /*#__PURE__*/ react.createElement(Api.Extension, {
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 { Wcp } from \"@webiny/project\";\n\nexport const AiPowerups = () => {\n return (\n <Wcp.CanUseMultiTenancy>\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 </Wcp.CanUseMultiTenancy>\n );\n};\n"],"names":["AiPowerups","Wcp","Api","Admin"],"mappings":";;;AAIO,MAAMA,aAAa,IACf,WAAP,GACI,oBAACC,IAAI,kBAAkB,sBAEnB,oBAACC,IAAI,SAAS;QAAC,KAAK,YAAY,OAAO,GAAG;sBAG1C,oBAACC,MAAM,SAAS;QAAC,KAAK,YAAY,OAAO,GAAG"}
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"}
@@ -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(AiPowerUpsSettingsPage, null))
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
@@ -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":";;;;;;;;AASA,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,oBAACC,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,oBAACT,oBAAkBA,OAAAA,WAAAA,GAEnB,oBAACU,qBAAmBA,OAAAA,WAAAA,GAEpB,oBAACC,sBAAoBA"}
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"}
@@ -0,0 +1,2 @@
1
+ export { CompareEntryRevisionsFeature } from "./feature.js";
2
+ export { CompareEntryRevisionsUseCase, CompareEntryRevisionsRepository, CompareEntryRevisionsGateway } from "./abstractions.js";
@@ -0,0 +1,2 @@
1
+ export { CompareEntryRevisionsFeature } from "./feature.js";
2
+ export { CompareEntryRevisionsGateway, CompareEntryRevisionsRepository, CompareEntryRevisionsUseCase } from "./abstractions.js";
@@ -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":";;;;;;AAOO,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;IACxC;IACA;QACI,OAAO,CAAC;IACZ;AACJ"}
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;;;;;;;;;;;;;;;;;;;;AAoB9C,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"}
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":";AAeO,MAAMA,8BAA8BC,kBACvC;AAYG,MAAMC,8BAA8BD,kBACvC"}
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;;;;;;;;;;;;;;;;;;;;;;AAsB7C,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"}
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":";AAgBO,MAAMA,6BAA6BC,kBACtC;AAYG,MAAMC,6BAA6BD,kBACtC"}
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
- displayName: string;
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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"}