@webiny/ai-powerups 6.3.0 → 6.4.0-beta.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.
Files changed (274) hide show
  1. package/AiPowerups.js +8 -9
  2. package/AiPowerups.js.map +1 -1
  3. package/admin/Extension.js +28 -26
  4. package/admin/Extension.js.map +1 -1
  5. package/admin/domain/errors.d.ts +12 -0
  6. package/admin/domain/errors.js +21 -0
  7. package/admin/domain/errors.js.map +1 -0
  8. package/admin/features/feature.js +13 -12
  9. package/admin/features/feature.js.map +1 -1
  10. package/admin/features/generatePageContent/GeneratePageContentGateway.js +35 -16
  11. package/admin/features/generatePageContent/GeneratePageContentGateway.js.map +1 -1
  12. package/admin/features/generatePageContent/GeneratePageContentUseCase.js +13 -10
  13. package/admin/features/generatePageContent/GeneratePageContentUseCase.js.map +1 -1
  14. package/admin/features/generatePageContent/abstractions.d.ts +4 -0
  15. package/admin/features/generatePageContent/abstractions.js +3 -2
  16. package/admin/features/generatePageContent/abstractions.js.map +1 -1
  17. package/admin/features/generatePageContent/feature.js +7 -6
  18. package/admin/features/generatePageContent/feature.js.map +1 -1
  19. package/admin/features/generatePageContent/index.js +1 -3
  20. package/admin/features/listModels/ListModelsGateway.js +17 -14
  21. package/admin/features/listModels/ListModelsGateway.js.map +1 -1
  22. package/admin/features/listModels/ListModelsRepository.js +21 -18
  23. package/admin/features/listModels/ListModelsRepository.js.map +1 -1
  24. package/admin/features/listModels/ListModelsUseCase.js +13 -10
  25. package/admin/features/listModels/ListModelsUseCase.js.map +1 -1
  26. package/admin/features/listModels/abstractions.js +4 -3
  27. package/admin/features/listModels/abstractions.js.map +1 -1
  28. package/admin/features/listModels/feature.js +15 -14
  29. package/admin/features/listModels/feature.js.map +1 -1
  30. package/admin/features/listModels/index.js +1 -3
  31. package/admin/features/settings/getSettings/GetSettingsGateway.js +17 -14
  32. package/admin/features/settings/getSettings/GetSettingsGateway.js.map +1 -1
  33. package/admin/features/settings/getSettings/GetSettingsRepository.js +23 -23
  34. package/admin/features/settings/getSettings/GetSettingsRepository.js.map +1 -1
  35. package/admin/features/settings/getSettings/GetSettingsUseCase.js +13 -10
  36. package/admin/features/settings/getSettings/GetSettingsUseCase.js.map +1 -1
  37. package/admin/features/settings/getSettings/abstractions.js +4 -3
  38. package/admin/features/settings/getSettings/abstractions.js.map +1 -1
  39. package/admin/features/settings/getSettings/feature.js +15 -14
  40. package/admin/features/settings/getSettings/feature.js.map +1 -1
  41. package/admin/features/settings/getSettings/index.js +1 -3
  42. package/admin/features/settings/shared/SettingsCache.js +14 -13
  43. package/admin/features/settings/shared/SettingsCache.js.map +1 -1
  44. package/admin/features/settings/shared/abstractions.d.ts +32 -0
  45. package/admin/features/settings/shared/abstractions.js +2 -18
  46. package/admin/features/settings/shared/abstractions.js.map +1 -1
  47. package/admin/features/settings/shared/feature.js +11 -10
  48. package/admin/features/settings/shared/feature.js.map +1 -1
  49. package/admin/features/settings/shared/index.js +0 -2
  50. package/admin/features/settings/updateSettings/UpdateSettingsGateway.js +34 -18
  51. package/admin/features/settings/updateSettings/UpdateSettingsGateway.js.map +1 -1
  52. package/admin/features/settings/updateSettings/UpdateSettingsRepository.js +17 -13
  53. package/admin/features/settings/updateSettings/UpdateSettingsRepository.js.map +1 -1
  54. package/admin/features/settings/updateSettings/UpdateSettingsUseCase.js +13 -10
  55. package/admin/features/settings/updateSettings/UpdateSettingsUseCase.js.map +1 -1
  56. package/admin/features/settings/updateSettings/abstractions.js +4 -3
  57. package/admin/features/settings/updateSettings/abstractions.js.map +1 -1
  58. package/admin/features/settings/updateSettings/feature.js +15 -14
  59. package/admin/features/settings/updateSettings/feature.js.map +1 -1
  60. package/admin/features/settings/updateSettings/index.js +1 -3
  61. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPage.d.ts +4 -0
  62. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPage.js +50 -0
  63. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPage.js.map +1 -0
  64. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPresenter.d.ts +2 -1
  65. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPresenter.js +133 -129
  66. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPresenter.js.map +1 -1
  67. package/admin/presentation/AiPowerUpsSettings/abstractions.d.ts +2 -1
  68. package/admin/presentation/AiPowerUpsSettings/abstractions.js +2 -1
  69. package/admin/presentation/AiPowerUpsSettings/abstractions.js.map +1 -1
  70. package/admin/presentation/AiPowerUpsSettings/feature.js +20 -16
  71. package/admin/presentation/AiPowerUpsSettings/feature.js.map +1 -1
  72. package/admin/presentation/AiPowerUpsSettings/index.d.ts +0 -3
  73. package/admin/presentation/AiPowerUpsSettings/index.js +0 -5
  74. package/admin/presentation/AiPowerUpsSettings/settingsGroup.js +2 -1
  75. package/admin/presentation/AiPowerUpsSettings/settingsGroup.js.map +1 -1
  76. package/admin/presentation/AiPowerUpsSettings/useAiPowerUpsSettings.js +19 -20
  77. package/admin/presentation/AiPowerUpsSettings/useAiPowerUpsSettings.js.map +1 -1
  78. package/admin/presentation/{PersonasSettings.d.ts → ProjectsSettings.d.ts} +2 -2
  79. package/admin/presentation/ProjectsSettings.js +56 -0
  80. package/admin/presentation/ProjectsSettings.js.map +1 -0
  81. package/admin/presentation/ProvidersSettings.js +39 -33
  82. package/admin/presentation/ProvidersSettings.js.map +1 -1
  83. package/admin/presentation/ReaderPersonasSettings.d.ts +11 -0
  84. package/admin/presentation/ReaderPersonasSettings.js +37 -0
  85. package/admin/presentation/ReaderPersonasSettings.js.map +1 -0
  86. package/admin/presentation/WbContentGeneration/Extension.js +15 -16
  87. package/admin/presentation/WbContentGeneration/Extension.js.map +1 -1
  88. package/admin/presentation/WbContentGeneration/GenerateContentButton.js +12 -17
  89. package/admin/presentation/WbContentGeneration/GenerateContentButton.js.map +1 -1
  90. package/admin/presentation/WbContentGeneration/GenerateContentDialog.js +94 -127
  91. package/admin/presentation/WbContentGeneration/GenerateContentDialog.js.map +1 -1
  92. package/admin/presentation/WbContentGeneration/GenerateContentPresenter.d.ts +19 -5
  93. package/admin/presentation/WbContentGeneration/GenerateContentPresenter.js +214 -77
  94. package/admin/presentation/WbContentGeneration/GenerateContentPresenter.js.map +1 -1
  95. package/admin/presentation/WbContentGeneration/abstractions.d.ts +4 -2
  96. package/admin/presentation/WbContentGeneration/abstractions.js +2 -1
  97. package/admin/presentation/WbContentGeneration/abstractions.js.map +1 -1
  98. package/admin/presentation/WbContentGeneration/decompressGzipBase64.js +10 -11
  99. package/admin/presentation/WbContentGeneration/decompressGzipBase64.js.map +1 -1
  100. package/admin/presentation/WbContentGeneration/feature.js +11 -10
  101. package/admin/presentation/WbContentGeneration/feature.js.map +1 -1
  102. package/admin/presentation/WriterPersonasSettings.d.ts +11 -0
  103. package/admin/presentation/WriterPersonasSettings.js +37 -0
  104. package/admin/presentation/WriterPersonasSettings.js.map +1 -0
  105. package/admin/routes.d.ts +4 -0
  106. package/admin/routes.js +10 -0
  107. package/admin/routes.js.map +1 -0
  108. package/api/Extension.js +28 -11
  109. package/api/Extension.js.map +1 -1
  110. package/api/constants.js +2 -1
  111. package/api/constants.js.map +1 -1
  112. package/api/features/AiImageEnrichment/AiImageEnrichmentAfterCreateHandler.d.ts +11 -0
  113. package/api/features/AiImageEnrichment/AiImageEnrichmentAfterCreateHandler.js +27 -0
  114. package/api/features/AiImageEnrichment/AiImageEnrichmentAfterCreateHandler.js.map +1 -0
  115. package/api/features/AiImageEnrichment/AiImageEnrichmentTask.d.ts +34 -0
  116. package/api/features/AiImageEnrichment/AiImageEnrichmentTask.js +140 -0
  117. package/api/features/AiImageEnrichment/AiImageEnrichmentTask.js.map +1 -0
  118. package/api/features/AiImageEnrichment/feature.d.ts +4 -0
  119. package/api/features/AiImageEnrichment/feature.js +13 -0
  120. package/api/features/AiImageEnrichment/feature.js.map +1 -0
  121. package/api/features/AiPromptContext/AiPromptContextBuilder.d.ts +12 -0
  122. package/api/features/AiPromptContext/AiPromptContextBuilder.js +103 -0
  123. package/api/features/AiPromptContext/AiPromptContextBuilder.js.map +1 -0
  124. package/api/features/AiPromptContext/ProjectFileAssembler.d.ts +22 -0
  125. package/api/features/AiPromptContext/ProjectFileAssembler.js +76 -0
  126. package/api/features/AiPromptContext/ProjectFileAssembler.js.map +1 -0
  127. package/api/features/AiPromptContext/ProjectFileCache.d.ts +16 -0
  128. package/api/features/AiPromptContext/ProjectFileCache.js +61 -0
  129. package/api/features/AiPromptContext/ProjectFileCache.js.map +1 -0
  130. package/api/features/AiPromptContext/ProjectSection.d.ts +4 -0
  131. package/api/features/AiPromptContext/ProjectSection.js +35 -0
  132. package/api/features/AiPromptContext/ProjectSection.js.map +1 -0
  133. package/api/features/AiPromptContext/ReadProjectFileTool.d.ts +3 -0
  134. package/api/features/AiPromptContext/ReadProjectFileTool.js +36 -0
  135. package/api/features/AiPromptContext/ReadProjectFileTool.js.map +1 -0
  136. package/api/features/AiPromptContext/ReaderPersonaSection.d.ts +4 -0
  137. package/api/features/AiPromptContext/ReaderPersonaSection.js +10 -0
  138. package/api/features/AiPromptContext/ReaderPersonaSection.js.map +1 -0
  139. package/api/features/AiPromptContext/WriterPersonaSection.d.ts +4 -0
  140. package/api/features/AiPromptContext/WriterPersonaSection.js +10 -0
  141. package/api/features/AiPromptContext/WriterPersonaSection.js.map +1 -0
  142. package/api/features/AiPromptContext/abstractions.d.ts +68 -0
  143. package/api/features/AiPromptContext/abstractions.js +7 -0
  144. package/api/features/AiPromptContext/abstractions.js.map +1 -0
  145. package/api/features/AiPromptContext/feature.d.ts +4 -0
  146. package/api/features/AiPromptContext/feature.js +15 -0
  147. package/api/features/AiPromptContext/feature.js.map +1 -0
  148. package/api/features/AiPromptContext/index.d.ts +1 -0
  149. package/api/features/AiPromptContext/index.js +1 -0
  150. package/api/features/ExtractFrontmatter/ExtractFrontmatterBeforeCreateHandler.d.ts +11 -0
  151. package/api/features/ExtractFrontmatter/ExtractFrontmatterBeforeCreateHandler.js +34 -0
  152. package/api/features/ExtractFrontmatter/ExtractFrontmatterBeforeCreateHandler.js.map +1 -0
  153. package/api/features/ExtractFrontmatter/feature.d.ts +4 -0
  154. package/api/features/ExtractFrontmatter/feature.js +11 -0
  155. package/api/features/ExtractFrontmatter/feature.js.map +1 -0
  156. package/api/features/GetSettings/GetSettingsRepository.d.ts +3 -2
  157. package/api/features/GetSettings/GetSettingsRepository.js +29 -26
  158. package/api/features/GetSettings/GetSettingsRepository.js.map +1 -1
  159. package/api/features/GetSettings/GetSettingsUseCase.js +13 -10
  160. package/api/features/GetSettings/GetSettingsUseCase.js.map +1 -1
  161. package/api/features/GetSettings/abstractions.js +3 -2
  162. package/api/features/GetSettings/abstractions.js.map +1 -1
  163. package/api/features/GetSettings/feature.js +7 -6
  164. package/api/features/GetSettings/feature.js.map +1 -1
  165. package/api/features/GetSettings/index.js +0 -2
  166. package/api/features/Projects/ProjectsHandler.d.ts +31 -0
  167. package/api/features/Projects/ProjectsHandler.js +103 -0
  168. package/api/features/Projects/ProjectsHandler.js.map +1 -0
  169. package/api/features/Projects/feature.d.ts +4 -0
  170. package/api/features/Projects/feature.js +11 -0
  171. package/api/features/Projects/feature.js.map +1 -0
  172. package/api/features/Projects/types.d.ts +50 -0
  173. package/api/features/Projects/types.js +0 -0
  174. package/api/features/Providers/ProvidersGraphQLMapper.js +33 -30
  175. package/api/features/Providers/ProvidersGraphQLMapper.js.map +1 -1
  176. package/api/features/Providers/ProvidersHandler.js +67 -64
  177. package/api/features/Providers/ProvidersHandler.js.map +1 -1
  178. package/api/features/Providers/feature.js +7 -6
  179. package/api/features/Providers/feature.js.map +1 -1
  180. package/api/features/Providers/index.js +0 -3
  181. package/api/features/Providers/types.js +0 -3
  182. package/api/features/ReaderPersonas/ReaderPersonasHandler.d.ts +20 -0
  183. package/api/features/ReaderPersonas/ReaderPersonasHandler.js +43 -0
  184. package/api/features/ReaderPersonas/ReaderPersonasHandler.js.map +1 -0
  185. package/api/features/ReaderPersonas/feature.d.ts +4 -0
  186. package/api/features/ReaderPersonas/feature.js +11 -0
  187. package/api/features/ReaderPersonas/feature.js.map +1 -0
  188. package/api/features/ReaderPersonas/index.d.ts +2 -0
  189. package/api/features/ReaderPersonas/index.js +1 -0
  190. package/api/features/ReaderPersonas/types.d.ts +24 -0
  191. package/api/features/ReaderPersonas/types.js +0 -0
  192. package/api/features/UpdateSettings/UpdateSettingsRepository.d.ts +3 -2
  193. package/api/features/UpdateSettings/UpdateSettingsRepository.js +59 -62
  194. package/api/features/UpdateSettings/UpdateSettingsRepository.js.map +1 -1
  195. package/api/features/UpdateSettings/UpdateSettingsUseCase.js +23 -21
  196. package/api/features/UpdateSettings/UpdateSettingsUseCase.js.map +1 -1
  197. package/api/features/UpdateSettings/abstractions.js +5 -7
  198. package/api/features/UpdateSettings/abstractions.js.map +1 -1
  199. package/api/features/UpdateSettings/errors.d.ts +10 -0
  200. package/api/features/UpdateSettings/errors.js +14 -0
  201. package/api/features/UpdateSettings/errors.js.map +1 -0
  202. package/api/features/UpdateSettings/events.js +16 -11
  203. package/api/features/UpdateSettings/events.js.map +1 -1
  204. package/api/features/UpdateSettings/feature.js +7 -6
  205. package/api/features/UpdateSettings/feature.js.map +1 -1
  206. package/api/features/UpdateSettings/index.js +1 -3
  207. package/api/features/WbGeneratePageContent/WbGeneratePageContentTask.d.ts +4 -0
  208. package/api/features/WbGeneratePageContent/WbGeneratePageContentTask.js +63 -60
  209. package/api/features/WbGeneratePageContent/WbGeneratePageContentTask.js.map +1 -1
  210. package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.d.ts +5 -3
  211. package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.js +92 -53
  212. package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.js.map +1 -1
  213. package/api/features/WbGeneratePageContent/abstractions.d.ts +15 -1
  214. package/api/features/WbGeneratePageContent/abstractions.js +2 -1
  215. package/api/features/WbGeneratePageContent/abstractions.js.map +1 -1
  216. package/api/features/WbGeneratePageContent/buildPrompt.d.ts +1 -1
  217. package/api/features/WbGeneratePageContent/buildPrompt.js +11 -10
  218. package/api/features/WbGeneratePageContent/buildPrompt.js.map +1 -1
  219. package/api/features/WbGeneratePageContent/feature.js +7 -6
  220. package/api/features/WbGeneratePageContent/feature.js.map +1 -1
  221. package/api/features/WbGeneratePageContent/index.js +0 -2
  222. package/api/features/WriterPersonas/WriterPersonasHandler.d.ts +20 -0
  223. package/api/features/WriterPersonas/WriterPersonasHandler.js +43 -0
  224. package/api/features/WriterPersonas/WriterPersonasHandler.js.map +1 -0
  225. package/api/features/WriterPersonas/feature.d.ts +4 -0
  226. package/api/features/WriterPersonas/feature.js +11 -0
  227. package/api/features/WriterPersonas/feature.js.map +1 -0
  228. package/api/features/WriterPersonas/index.d.ts +2 -0
  229. package/api/features/WriterPersonas/index.js +1 -0
  230. package/api/features/WriterPersonas/types.d.ts +24 -0
  231. package/api/features/WriterPersonas/types.js +0 -0
  232. package/api/features/shared/SettingsCache.d.ts +12 -0
  233. package/api/features/shared/SettingsCache.js +22 -0
  234. package/api/features/shared/SettingsCache.js.map +1 -0
  235. package/api/features/shared/abstractions.d.ts +13 -0
  236. package/api/features/shared/abstractions.js +4 -2
  237. package/api/features/shared/abstractions.js.map +1 -1
  238. package/api/features/shared/index.d.ts +3 -1
  239. package/api/features/shared/index.js +1 -3
  240. package/api/graphql/AiPowerUpsSettingsGraphQLMapper.js +35 -26
  241. package/api/graphql/AiPowerUpsSettingsGraphQLMapper.js.map +1 -1
  242. package/api/graphql/BaseGraphQLSchema.js +98 -81
  243. package/api/graphql/BaseGraphQLSchema.js.map +1 -1
  244. package/api/graphql/abstractions.js +2 -1
  245. package/api/graphql/abstractions.js.map +1 -1
  246. package/api/types.d.ts +1 -0
  247. package/api/types.js +1 -4
  248. package/index.js +0 -2
  249. package/package.json +26 -24
  250. package/admin/features/generatePageContent/index.js.map +0 -1
  251. package/admin/features/listModels/index.js.map +0 -1
  252. package/admin/features/settings/getSettings/index.js.map +0 -1
  253. package/admin/features/settings/shared/index.js.map +0 -1
  254. package/admin/features/settings/updateSettings/index.js.map +0 -1
  255. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsConfig.d.ts +0 -2
  256. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsConfig.js +0 -11
  257. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsConfig.js.map +0 -1
  258. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsDialog.d.ts +0 -5
  259. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsDialog.js +0 -58
  260. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsDialog.js.map +0 -1
  261. package/admin/presentation/AiPowerUpsSettings/index.js.map +0 -1
  262. package/admin/presentation/AiPowerUpsSettings/useAiPowerUpsSettingsDialog.d.ts +0 -1
  263. package/admin/presentation/AiPowerUpsSettings/useAiPowerUpsSettingsDialog.js +0 -12
  264. package/admin/presentation/AiPowerUpsSettings/useAiPowerUpsSettingsDialog.js.map +0 -1
  265. package/admin/presentation/PersonasSettings.js +0 -29
  266. package/admin/presentation/PersonasSettings.js.map +0 -1
  267. package/api/features/GetSettings/index.js.map +0 -1
  268. package/api/features/Providers/index.js.map +0 -1
  269. package/api/features/Providers/types.js.map +0 -1
  270. package/api/features/UpdateSettings/index.js.map +0 -1
  271. package/api/features/WbGeneratePageContent/index.js.map +0 -1
  272. package/api/features/shared/index.js.map +0 -1
  273. package/api/types.js.map +0 -1
  274. package/index.js.map +0 -1
@@ -1 +1 @@
1
- export declare function buildSystemPrompt(components: unknown, tools: unknown): string;
1
+ export declare function buildDomainPrompt(components: unknown, tools: unknown): string;
@@ -1,5 +1,5 @@
1
- export function buildSystemPrompt(components, tools) {
2
- return `You are a page content generator. Given a user prompt, generate structured page content using the provided component catalog and available tools.
1
+ function buildDomainPrompt(components, tools) {
2
+ return `You are a page content generator. Given a user prompt, generate structured page content using the provided component catalog and available tools.
3
3
 
4
4
  ###
5
5
 
@@ -13,13 +13,13 @@ Example: RichText - Banner - RichText - Image - Banner - RichText
13
13
 
14
14
  ### Image Selection
15
15
 
16
- When the page content requires images, use the listImagesByTag tool
17
- to search for available images. After receiving the results, select
16
+ When the page content requires images, use the listImagesByTag tool
17
+ to search for available images. After receiving the results, select
18
18
  the most appropriate image and reference it in your output using:
19
19
  { "tool": "resolveImage", "params": { "id": "<image_id_from_search>" } }
20
20
 
21
- You MUST generate the full page content as JSON after using any tools.
22
- Tool calls are for gathering information — your final response must
21
+ You MUST generate the full page content as JSON after using any tools.
22
+ Tool calls are for gathering information — your final response must
23
23
  always be the complete page JSON array.
24
24
 
25
25
  ### SEO & Content Structure Best Practices
@@ -90,8 +90,8 @@ Note: \`CreateElement\` uses "action" — it is a structural instruction for the
90
90
 
91
91
  ### Grid Structure Example
92
92
 
93
- When using Webiny/Grid, each column entry must use a CreateElement action
94
- to create a Webiny/GridColumn, and the GridColumn's children contain the
93
+ When using Webiny/Grid, each column entry must use a CreateElement action
94
+ to create a Webiny/GridColumn, and the GridColumn's children contain the
95
95
  actual content elements:
96
96
 
97
97
  \`\`\`json
@@ -131,12 +131,13 @@ actual content elements:
131
131
 
132
132
  Key rules:
133
133
  - "columns" is an array, not an object with numeric keys
134
- - Each column has a "children" property containing a single CreateElement
134
+ - Each column has a "children" property containing a single CreateElement
135
135
  for Webiny/GridColumn
136
- - Webiny/GridColumn's "children" is an array of CreateElement actions for
136
+ - Webiny/GridColumn's "children" is an array of CreateElement actions for
137
137
  the actual content
138
138
 
139
139
  You MUST return parsable JSON string without any extra text or envelopes.`;
140
140
  }
141
+ export { buildDomainPrompt };
141
142
 
142
143
  //# sourceMappingURL=buildPrompt.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["buildSystemPrompt","components","tools","JSON","stringify"],"sources":["buildPrompt.ts"],"sourcesContent":["export function buildSystemPrompt(components: unknown, tools: unknown): string {\n return `You are a page content generator. Given a user prompt, generate structured page content using the provided component catalog and available tools.\n\n###\n\n### Rich Text Content\n\nA single Webiny/Lexical element CAN contain an entire article, blog post, or content section,\nwith all headings, paragraphs, lists, and blockquotes in a single HTML string.\n\nCreate separate Webiny/Lexical elements when it needs to be mixed with other content elements.\nExample: RichText - Banner - RichText - Image - Banner - RichText\n\n### Image Selection\n\nWhen the page content requires images, use the listImagesByTag tool \nto search for available images. After receiving the results, select \nthe most appropriate image and reference it in your output using:\n{ \"tool\": \"resolveImage\", \"params\": { \"id\": \"<image_id_from_search>\" } }\n\nYou MUST generate the full page content as JSON after using any tools. \nTool calls are for gathering information — your final response must \nalways be the complete page JSON array.\n\n### SEO & Content Structure Best Practices\n\nWhen generating page content, follow these SEO guidelines:\n\nHeading hierarchy:\n- Use exactly ONE <h1> per page, as the main title/headline.\n- Use <h2> for major sections, <h3> for subsections. Never skip levels (e.g., no <h3> directly after <h1>).\n- Headings should be descriptive and include relevant keywords naturally — avoid generic headings like \"Introduction\" or \"Section 1\".\n\nParagraphs and readability:\n- Keep paragraphs short — 2 to 4 sentences each.\n- Use <strong> and <em> to emphasize key terms and phrases that a reader scanning the page should notice.\n- Use bullet lists (<ul>) or numbered lists (<ol>) to break down complex information.\n- Write in an active voice. Be direct and concise.\n\nContent structure:\n- Lead with the most important information first (inverted pyramid).\n- Include a compelling opening paragraph immediately after the <h1> that summarizes the page's value proposition.\n- Use transition sentences between sections to maintain reading flow.\n- End with a clear call-to-action or summary.\n\nKeyword usage:\n- Incorporate the main topic keywords naturally in the <h1>, at least one <h2>, the opening paragraph, and throughout the body.\n- Avoid keyword stuffing — content must read naturally to a human.\n- Use semantic variations and related terms rather than repeating the exact same phrase.\n\nLinks:\n- Where appropriate, use descriptive anchor text for links (not \"click here\" or \"read more\").\n\n### Component Catalog\n\n\\`\\`\\`json\n${JSON.stringify(components, null, 2)}\n\\`\\`\\`\n\nGrid layout options: \\`12\\`, \\`6-6\\`, \\`4-4-4\\`, \\`8-4\\`, \\`4-8\\`, \\`3-3-3-3\\`\n\n### Available Tools\n\nFor input fields that require post-processing, wrap the value in a tool envelope: \\`{ \"tool\": \"<toolName>\", \"params\": { ... } }\\`.\n\nPlain values (text, number, boolean, select) should be set directly without an envelope.\n\n\\`\\`\\`json\n${JSON.stringify(tools, null, 2)}\n\\`\\`\\`\n\n### Page Schema\n\n\\`\\`\\`typescript\ntype ElementSchema = {\n component: string;\n inputs: Record<string, unknown>;\n};\n\ntype CreateElementAction = {\n action: \"CreateElement\";\n params: ElementSchema;\n};\n\ntype PageSchema = ElementSchema[];\n\\`\\`\\`\n\nFor slot inputs, use \\`{ \"action\": \"CreateElement\", \"params\": { \"component\": \"...\", \"inputs\": { ... } } }\\`. For root array items, use \\`ElementSchema\\` shape.\nNote: \\`CreateElement\\` uses \"action\" — it is a structural instruction for the page builder, not a tool invocation.\n\n### Grid Structure Example\n\nWhen using Webiny/Grid, each column entry must use a CreateElement action \nto create a Webiny/GridColumn, and the GridColumn's children contain the \nactual content elements:\n\n\\`\\`\\`json\n{\n \"component\": \"Webiny/Grid\",\n \"inputs\": {\n \"gridLayout\": \"6-6\",\n \"columns\": [\n {\n \"children\": {\n \"action\": \"CreateElement\",\n \"params\": {\n \"component\": \"Webiny/GridColumn\",\n \"inputs\": {\n \"children\": [\n {\n \"action\": \"CreateElement\",\n \"params\": {\n \"component\": \"Webiny/Lexical\",\n \"inputs\": {\n \"content\": {\n \"tool\": \"textToLexical\",\n \"params\": { \"text\": \"...\" }\n }\n }\n }\n }\n ]\n }\n }\n }\n }\n ]\n }\n}\n\\`\\`\\`\n\nKey rules:\n- \"columns\" is an array, not an object with numeric keys\n- Each column has a \"children\" property containing a single CreateElement \n for Webiny/GridColumn\n- Webiny/GridColumn's \"children\" is an array of CreateElement actions for \n the actual content\n\nYou MUST return parsable JSON string without any extra text or envelopes.`;\n}\n"],"mappings":"AAAA,OAAO,SAASA,iBAAiBA,CAACC,UAAmB,EAAEC,KAAc,EAAU;EAC3E,OAAO;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAEC,IAAI,CAACC,SAAS,CAACH,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAEE,IAAI,CAACC,SAAS,CAACF,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E","ignoreList":[]}
1
+ {"version":3,"file":"api/features/WbGeneratePageContent/buildPrompt.js","sources":["../../../../src/api/features/WbGeneratePageContent/buildPrompt.ts"],"sourcesContent":["export function buildDomainPrompt(components: unknown, tools: unknown): string {\n return `You are a page content generator. Given a user prompt, generate structured page content using the provided component catalog and available tools.\n\n###\n\n### Rich Text Content\n\nA single Webiny/Lexical element CAN contain an entire article, blog post, or content section,\nwith all headings, paragraphs, lists, and blockquotes in a single HTML string.\n\nCreate separate Webiny/Lexical elements when it needs to be mixed with other content elements.\nExample: RichText - Banner - RichText - Image - Banner - RichText\n\n### Image Selection\n\nWhen the page content requires images, use the listImagesByTag tool\nto search for available images. After receiving the results, select\nthe most appropriate image and reference it in your output using:\n{ \"tool\": \"resolveImage\", \"params\": { \"id\": \"<image_id_from_search>\" } }\n\nYou MUST generate the full page content as JSON after using any tools.\nTool calls are for gathering information — your final response must\nalways be the complete page JSON array.\n\n### SEO & Content Structure Best Practices\n\nWhen generating page content, follow these SEO guidelines:\n\nHeading hierarchy:\n- Use exactly ONE <h1> per page, as the main title/headline.\n- Use <h2> for major sections, <h3> for subsections. Never skip levels (e.g., no <h3> directly after <h1>).\n- Headings should be descriptive and include relevant keywords naturally — avoid generic headings like \"Introduction\" or \"Section 1\".\n\nParagraphs and readability:\n- Keep paragraphs short — 2 to 4 sentences each.\n- Use <strong> and <em> to emphasize key terms and phrases that a reader scanning the page should notice.\n- Use bullet lists (<ul>) or numbered lists (<ol>) to break down complex information.\n- Write in an active voice. Be direct and concise.\n\nContent structure:\n- Lead with the most important information first (inverted pyramid).\n- Include a compelling opening paragraph immediately after the <h1> that summarizes the page's value proposition.\n- Use transition sentences between sections to maintain reading flow.\n- End with a clear call-to-action or summary.\n\nKeyword usage:\n- Incorporate the main topic keywords naturally in the <h1>, at least one <h2>, the opening paragraph, and throughout the body.\n- Avoid keyword stuffing — content must read naturally to a human.\n- Use semantic variations and related terms rather than repeating the exact same phrase.\n\nLinks:\n- Where appropriate, use descriptive anchor text for links (not \"click here\" or \"read more\").\n\n### Component Catalog\n\n\\`\\`\\`json\n${JSON.stringify(components, null, 2)}\n\\`\\`\\`\n\nGrid layout options: \\`12\\`, \\`6-6\\`, \\`4-4-4\\`, \\`8-4\\`, \\`4-8\\`, \\`3-3-3-3\\`\n\n### Available Tools\n\nFor input fields that require post-processing, wrap the value in a tool envelope: \\`{ \"tool\": \"<toolName>\", \"params\": { ... } }\\`.\n\nPlain values (text, number, boolean, select) should be set directly without an envelope.\n\n\\`\\`\\`json\n${JSON.stringify(tools, null, 2)}\n\\`\\`\\`\n\n### Page Schema\n\n\\`\\`\\`typescript\ntype ElementSchema = {\n component: string;\n inputs: Record<string, unknown>;\n};\n\ntype CreateElementAction = {\n action: \"CreateElement\";\n params: ElementSchema;\n};\n\ntype PageSchema = ElementSchema[];\n\\`\\`\\`\n\nFor slot inputs, use \\`{ \"action\": \"CreateElement\", \"params\": { \"component\": \"...\", \"inputs\": { ... } } }\\`. For root array items, use \\`ElementSchema\\` shape.\nNote: \\`CreateElement\\` uses \"action\" — it is a structural instruction for the page builder, not a tool invocation.\n\n### Grid Structure Example\n\nWhen using Webiny/Grid, each column entry must use a CreateElement action\nto create a Webiny/GridColumn, and the GridColumn's children contain the\nactual content elements:\n\n\\`\\`\\`json\n{\n \"component\": \"Webiny/Grid\",\n \"inputs\": {\n \"gridLayout\": \"6-6\",\n \"columns\": [\n {\n \"children\": {\n \"action\": \"CreateElement\",\n \"params\": {\n \"component\": \"Webiny/GridColumn\",\n \"inputs\": {\n \"children\": [\n {\n \"action\": \"CreateElement\",\n \"params\": {\n \"component\": \"Webiny/Lexical\",\n \"inputs\": {\n \"content\": {\n \"tool\": \"textToLexical\",\n \"params\": { \"text\": \"...\" }\n }\n }\n }\n }\n ]\n }\n }\n }\n }\n ]\n }\n}\n\\`\\`\\`\n\nKey rules:\n- \"columns\" is an array, not an object with numeric keys\n- Each column has a \"children\" property containing a single CreateElement\n for Webiny/GridColumn\n- Webiny/GridColumn's \"children\" is an array of CreateElement actions for\n the actual content\n\nYou MUST return parsable JSON string without any extra text or envelopes.`;\n}\n"],"names":["buildDomainPrompt","components","tools","JSON"],"mappings":"AAAO,SAASA,kBAAkBC,UAAmB,EAAEC,KAAc;IACjE,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuDZ,EAAEC,KAAK,SAAS,CAACF,YAAY,MAAM,GAAG;;;;;;;;;;;;AAYtC,EAAEE,KAAK,SAAS,CAACD,OAAO,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yEAsEwC,CAAC;AAC1E"}
@@ -1,12 +1,13 @@
1
1
  import { createFeature } from "@webiny/feature/api";
2
2
  import { WbGeneratePageContentUseCaseImplementation } from "./WbGeneratePageContentUseCase.js";
3
3
  import { WbGeneratePageContentTask } from "./WbGeneratePageContentTask.js";
4
- export const WbGeneratePageContentFeature = createFeature({
5
- name: "AiPowerUps/WbGeneratePageContent",
6
- register(container) {
7
- container.register(WbGeneratePageContentUseCaseImplementation);
8
- container.register(WbGeneratePageContentTask);
9
- }
4
+ const WbGeneratePageContentFeature = createFeature({
5
+ name: "AiPowerUps/WbGeneratePageContent",
6
+ register (container) {
7
+ container.register(WbGeneratePageContentUseCaseImplementation);
8
+ container.register(WbGeneratePageContentTask);
9
+ }
10
10
  });
11
+ export { WbGeneratePageContentFeature };
11
12
 
12
13
  //# sourceMappingURL=feature.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createFeature","WbGeneratePageContentUseCaseImplementation","WbGeneratePageContentTask","WbGeneratePageContentFeature","name","register","container"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { WbGeneratePageContentUseCaseImplementation } from \"./WbGeneratePageContentUseCase.js\";\nimport { WbGeneratePageContentTask } from \"./WbGeneratePageContentTask.js\";\n\nexport const WbGeneratePageContentFeature = createFeature({\n name: \"AiPowerUps/WbGeneratePageContent\",\n register(container) {\n container.register(WbGeneratePageContentUseCaseImplementation);\n container.register(WbGeneratePageContentTask);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,0CAA0C;AACnD,SAASC,yBAAyB;AAElC,OAAO,MAAMC,4BAA4B,GAAGH,aAAa,CAAC;EACtDI,IAAI,EAAE,kCAAkC;EACxCC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACD,QAAQ,CAACJ,0CAA0C,CAAC;IAC9DK,SAAS,CAACD,QAAQ,CAACH,yBAAyB,CAAC;EACjD;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"api/features/WbGeneratePageContent/feature.js","sources":["../../../../src/api/features/WbGeneratePageContent/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { WbGeneratePageContentUseCaseImplementation } from \"./WbGeneratePageContentUseCase.js\";\nimport { WbGeneratePageContentTask } from \"./WbGeneratePageContentTask.js\";\n\nexport const WbGeneratePageContentFeature = createFeature({\n name: \"AiPowerUps/WbGeneratePageContent\",\n register(container) {\n container.register(WbGeneratePageContentUseCaseImplementation);\n container.register(WbGeneratePageContentTask);\n }\n});\n"],"names":["WbGeneratePageContentFeature","createFeature","container","WbGeneratePageContentUseCaseImplementation","WbGeneratePageContentTask"],"mappings":";;;AAIO,MAAMA,+BAA+BC,cAAc;IACtD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;QACnBD,UAAU,QAAQ,CAACE;IACvB;AACJ"}
@@ -1,3 +1 @@
1
1
  export { WbGeneratePageContentUseCase } from "./abstractions.js";
2
-
3
- //# sourceMappingURL=index.js.map
@@ -0,0 +1,20 @@
1
+ import { z } from "zod";
2
+ import { AiPowerUpsSettingsGroupHandler } from "../../../api/features/shared/index.js";
3
+ import type { PersistedWriterPersonas, WriterPersonasSettings } from "./types.js";
4
+ declare class WriterPersonasHandlerImpl implements AiPowerUpsSettingsGroupHandler.Interface {
5
+ readonly name = "writerPersonas";
6
+ readonly inputSchema: z.ZodObject<{
7
+ presets: z.ZodArray<z.ZodObject<{
8
+ id: z.ZodString;
9
+ name: z.ZodString;
10
+ description: z.ZodString;
11
+ style: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
12
+ }, z.core.$strip>>;
13
+ }, z.core.$strip>;
14
+ mapFromStorage(persisted: unknown): WriterPersonasSettings;
15
+ mapToStorage(internal: unknown): Promise<PersistedWriterPersonas>;
16
+ }
17
+ declare const _default: typeof WriterPersonasHandlerImpl & {
18
+ __abstraction: import("@webiny/di").Abstraction<import("../shared/abstractions.js").IAiPowerUpsSettingsGroupHandler>;
19
+ };
20
+ export default _default;
@@ -0,0 +1,43 @@
1
+ import { z } from "zod";
2
+ import { AiPowerUpsSettingsGroupHandler } from "../shared/index.js";
3
+ const inputSchema = z.object({
4
+ presets: z.array(z.object({
5
+ id: z.string().min(1),
6
+ name: z.string().min(1),
7
+ description: z.string().min(1),
8
+ style: z.string().nullish().optional()
9
+ }))
10
+ });
11
+ class WriterPersonasHandlerImpl {
12
+ mapFromStorage(persisted) {
13
+ if (!persisted || "object" != typeof persisted) return {
14
+ presets: []
15
+ };
16
+ const data = persisted;
17
+ return {
18
+ presets: data.presets ?? []
19
+ };
20
+ }
21
+ async mapToStorage(internal) {
22
+ const input = internal;
23
+ return {
24
+ presets: input.presets.map((p)=>({
25
+ id: p.id,
26
+ name: p.name,
27
+ description: p.description,
28
+ style: p.style
29
+ }))
30
+ };
31
+ }
32
+ constructor(){
33
+ this.name = "writerPersonas";
34
+ this.inputSchema = inputSchema;
35
+ }
36
+ }
37
+ const WriterPersonasHandler = AiPowerUpsSettingsGroupHandler.createImplementation({
38
+ implementation: WriterPersonasHandlerImpl,
39
+ dependencies: []
40
+ });
41
+ export default WriterPersonasHandler;
42
+
43
+ //# sourceMappingURL=WriterPersonasHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/WriterPersonas/WriterPersonasHandler.js","sources":["../../../../src/api/features/WriterPersonas/WriterPersonasHandler.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { AiPowerUpsSettingsGroupHandler } from \"~/api/features/shared/index.js\";\nimport type { PersistedWriterPersonas, WriterPersonasSettings } from \"./types.js\";\n\nconst inputSchema = z.object({\n presets: z.array(\n z.object({\n id: z.string().min(1),\n name: z.string().min(1),\n description: z.string().min(1),\n style: z.string().nullish().optional()\n })\n )\n});\n\nclass WriterPersonasHandlerImpl implements AiPowerUpsSettingsGroupHandler.Interface {\n readonly name = \"writerPersonas\";\n readonly inputSchema = inputSchema;\n\n mapFromStorage(persisted: unknown): WriterPersonasSettings {\n if (!persisted || typeof persisted !== \"object\") {\n return { presets: [] };\n }\n\n const data = persisted as PersistedWriterPersonas;\n return { presets: data.presets ?? [] };\n }\n\n async mapToStorage(internal: unknown): Promise<PersistedWriterPersonas> {\n const input = internal as WriterPersonasSettings;\n return {\n presets: input.presets.map(p => ({\n id: p.id,\n name: p.name,\n description: p.description,\n style: p.style\n }))\n };\n }\n}\n\nexport default AiPowerUpsSettingsGroupHandler.createImplementation({\n implementation: WriterPersonasHandlerImpl,\n dependencies: []\n});\n"],"names":["inputSchema","z","WriterPersonasHandlerImpl","persisted","data","internal","input","p","AiPowerUpsSettingsGroupHandler"],"mappings":";;AAIA,MAAMA,cAAcC,EAAE,MAAM,CAAC;IACzB,SAASA,EAAE,KAAK,CACZA,EAAE,MAAM,CAAC;QACL,IAAIA,EAAE,MAAM,GAAG,GAAG,CAAC;QACnB,MAAMA,EAAE,MAAM,GAAG,GAAG,CAAC;QACrB,aAAaA,EAAE,MAAM,GAAG,GAAG,CAAC;QAC5B,OAAOA,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ;IACxC;AAER;AAEA,MAAMC;IAIF,eAAeC,SAAkB,EAA0B;QACvD,IAAI,CAACA,aAAa,AAAqB,YAArB,OAAOA,WACrB,OAAO;YAAE,SAAS,EAAE;QAAC;QAGzB,MAAMC,OAAOD;QACb,OAAO;YAAE,SAASC,KAAK,OAAO,IAAI,EAAE;QAAC;IACzC;IAEA,MAAM,aAAaC,QAAiB,EAAoC;QACpE,MAAMC,QAAQD;QACd,OAAO;YACH,SAASC,MAAM,OAAO,CAAC,GAAG,CAACC,CAAAA,IAAM;oBAC7B,IAAIA,EAAE,EAAE;oBACR,MAAMA,EAAE,IAAI;oBACZ,aAAaA,EAAE,WAAW;oBAC1B,OAAOA,EAAE,KAAK;gBAClB;QACJ;IACJ;;aAtBS,IAAI,GAAG;aACP,WAAW,GAAGP;;AAsB3B;AAEA,8BAAeQ,+BAA+B,oBAAoB,CAAC;IAC/D,gBAAgBN;IAChB,cAAc,EAAE;AACpB"}
@@ -0,0 +1,4 @@
1
+ export declare const WriterPersonasFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -0,0 +1,11 @@
1
+ import { createFeature } from "@webiny/feature/api";
2
+ import WriterPersonasHandler from "./WriterPersonasHandler.js";
3
+ const WriterPersonasFeature = createFeature({
4
+ name: "AiPowerUpsWriterPersonas",
5
+ register (container) {
6
+ container.register(WriterPersonasHandler);
7
+ }
8
+ });
9
+ export { WriterPersonasFeature };
10
+
11
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/WriterPersonas/feature.js","sources":["../../../../src/api/features/WriterPersonas/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport WriterPersonasHandler from \"./WriterPersonasHandler.js\";\n\nexport const WriterPersonasFeature = createFeature({\n name: \"AiPowerUpsWriterPersonas\",\n register(container) {\n container.register(WriterPersonasHandler);\n }\n});\n"],"names":["WriterPersonasFeature","createFeature","container","WriterPersonasHandler"],"mappings":";;AAGO,MAAMA,wBAAwBC,cAAc;IAC/C,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
@@ -0,0 +1,2 @@
1
+ export type { WriterPersonaPreset, WriterPersonasSettings } from "./types.js";
2
+ import "~/api/features/WriterPersonas/types.js";
@@ -0,0 +1 @@
1
+ import "./types.js";
@@ -0,0 +1,24 @@
1
+ import type { IAiPowerUpsSettings } from "../../../api/types.js";
2
+ export interface WriterPersonaPreset {
3
+ id: string;
4
+ name: string;
5
+ description: string;
6
+ style?: string;
7
+ }
8
+ declare module "~/api/types.js" {
9
+ interface IAiPowerUpsSettings {
10
+ writerPersonas: {
11
+ presets: WriterPersonaPreset[];
12
+ };
13
+ }
14
+ }
15
+ export type WriterPersonasSettings = IAiPowerUpsSettings["writerPersonas"];
16
+ export interface PersistedWriterPersonaPreset {
17
+ id: string;
18
+ name: string;
19
+ description: string;
20
+ style?: string;
21
+ }
22
+ export interface PersistedWriterPersonas {
23
+ presets: PersistedWriterPersonaPreset[];
24
+ }
File without changes
@@ -0,0 +1,12 @@
1
+ import type { SettingsCacheEntry } from "./abstractions.js";
2
+ import { AiPowerUpsSettingsCache as Abstraction } from "./abstractions.js";
3
+ import type { IAiPowerUpsSettings } from "../../../api/types.js";
4
+ declare class AiPowerUpsSettingsCacheImpl implements Abstraction.Interface {
5
+ private cached;
6
+ get(): SettingsCacheEntry | null;
7
+ set(raw: Record<string, unknown>, mapped: IAiPowerUpsSettings): void;
8
+ }
9
+ export declare const AiPowerUpsSettingsCache: typeof AiPowerUpsSettingsCacheImpl & {
10
+ __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IAiPowerUpsSettingsCache>;
11
+ };
12
+ export {};
@@ -0,0 +1,22 @@
1
+ import { AiPowerUpsSettingsCache } from "./abstractions.js";
2
+ class AiPowerUpsSettingsCacheImpl {
3
+ get() {
4
+ return this.cached;
5
+ }
6
+ set(raw, mapped) {
7
+ this.cached = {
8
+ raw,
9
+ mapped
10
+ };
11
+ }
12
+ constructor(){
13
+ this.cached = null;
14
+ }
15
+ }
16
+ const SettingsCache_AiPowerUpsSettingsCache = AiPowerUpsSettingsCache.createImplementation({
17
+ implementation: AiPowerUpsSettingsCacheImpl,
18
+ dependencies: []
19
+ });
20
+ export { SettingsCache_AiPowerUpsSettingsCache as AiPowerUpsSettingsCache };
21
+
22
+ //# sourceMappingURL=SettingsCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/shared/SettingsCache.js","sources":["../../../../src/api/features/shared/SettingsCache.ts"],"sourcesContent":["import type { SettingsCacheEntry } from \"./abstractions.js\";\nimport { AiPowerUpsSettingsCache as Abstraction } from \"./abstractions.js\";\nimport type { IAiPowerUpsSettings } from \"~/api/types.js\";\n\nclass AiPowerUpsSettingsCacheImpl implements Abstraction.Interface {\n private cached: SettingsCacheEntry | null = null;\n\n get(): SettingsCacheEntry | null {\n return this.cached;\n }\n\n set(raw: Record<string, unknown>, mapped: IAiPowerUpsSettings): void {\n this.cached = { raw, mapped };\n }\n}\n\nexport const AiPowerUpsSettingsCache = Abstraction.createImplementation({\n implementation: AiPowerUpsSettingsCacheImpl,\n dependencies: []\n});\n"],"names":["AiPowerUpsSettingsCacheImpl","raw","mapped","AiPowerUpsSettingsCache","Abstraction"],"mappings":";AAIA,MAAMA;IAGF,MAAiC;QAC7B,OAAO,IAAI,CAAC,MAAM;IACtB;IAEA,IAAIC,GAA4B,EAAEC,MAA2B,EAAQ;QACjE,IAAI,CAAC,MAAM,GAAG;YAAED;YAAKC;QAAO;IAChC;;aARQ,MAAM,GAA8B;;AAShD;AAEO,MAAMC,wCAA0BC,wBAAAA,oBAAgC,CAAC;IACpE,gBAAgBJ;IAChB,cAAc,EAAE;AACpB"}
@@ -18,3 +18,16 @@ export declare const AiPowerUpsSettingsGroupGraphQLMapper: import("@webiny/di").
18
18
  export declare namespace AiPowerUpsSettingsGroupGraphQLMapper {
19
19
  type Interface = IAiPowerUpsSettingsGroupGraphQLMapper;
20
20
  }
21
+ import type { IAiPowerUpsSettings } from "../../../api/types.js";
22
+ export interface SettingsCacheEntry {
23
+ raw: Record<string, unknown>;
24
+ mapped: IAiPowerUpsSettings;
25
+ }
26
+ export interface IAiPowerUpsSettingsCache {
27
+ get(): SettingsCacheEntry | null;
28
+ set(raw: Record<string, unknown>, mapped: IAiPowerUpsSettings): void;
29
+ }
30
+ export declare const AiPowerUpsSettingsCache: import("@webiny/di").Abstraction<IAiPowerUpsSettingsCache>;
31
+ export declare namespace AiPowerUpsSettingsCache {
32
+ type Interface = IAiPowerUpsSettingsCache;
33
+ }
@@ -1,5 +1,7 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
- export const AiPowerUpsSettingsGroupHandler = createAbstraction("AiPowerUpsSettingsGroupHandler");
3
- export const AiPowerUpsSettingsGroupGraphQLMapper = createAbstraction("AiPowerUpsSettingsGroupGraphQLMapper");
2
+ const AiPowerUpsSettingsGroupHandler = createAbstraction("AiPowerUpsSettingsGroupHandler");
3
+ const AiPowerUpsSettingsGroupGraphQLMapper = createAbstraction("AiPowerUpsSettingsGroupGraphQLMapper");
4
+ const AiPowerUpsSettingsCache = createAbstraction("AiPowerUpsSettingsCache");
5
+ export { AiPowerUpsSettingsCache, AiPowerUpsSettingsGroupGraphQLMapper, AiPowerUpsSettingsGroupHandler };
4
6
 
5
7
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","AiPowerUpsSettingsGroupHandler","AiPowerUpsSettingsGroupGraphQLMapper"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { ZodType } from \"zod\";\n\nexport interface IAiPowerUpsSettingsGroupHandler {\n readonly name: string;\n readonly inputSchema: ZodType<unknown>;\n mapFromStorage(persisted: unknown): unknown;\n mapToStorage(internal: unknown, existing: unknown | null): Promise<unknown>;\n}\n\nexport const AiPowerUpsSettingsGroupHandler = createAbstraction<IAiPowerUpsSettingsGroupHandler>(\n \"AiPowerUpsSettingsGroupHandler\"\n);\n\nexport namespace AiPowerUpsSettingsGroupHandler {\n export type Interface = IAiPowerUpsSettingsGroupHandler;\n}\n\nexport interface IAiPowerUpsSettingsGroupGraphQLMapper {\n readonly name: string;\n toApi(internal: unknown): unknown | Promise<unknown>;\n fromApi(api: unknown, existing: unknown | null): unknown | Promise<unknown>;\n}\n\nexport const AiPowerUpsSettingsGroupGraphQLMapper =\n createAbstraction<IAiPowerUpsSettingsGroupGraphQLMapper>(\n \"AiPowerUpsSettingsGroupGraphQLMapper\"\n );\n\nexport namespace AiPowerUpsSettingsGroupGraphQLMapper {\n export type Interface = IAiPowerUpsSettingsGroupGraphQLMapper;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AAUvD,OAAO,MAAMC,8BAA8B,GAAGD,iBAAiB,CAC3D,gCACJ,CAAC;AAYD,OAAO,MAAME,oCAAoC,GAC7CF,iBAAiB,CACb,sCACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"api/features/shared/abstractions.js","sources":["../../../../src/api/features/shared/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { ZodType } from \"zod\";\n\nexport interface IAiPowerUpsSettingsGroupHandler {\n readonly name: string;\n readonly inputSchema: ZodType<unknown>;\n mapFromStorage(persisted: unknown): unknown;\n mapToStorage(internal: unknown, existing: unknown | null): Promise<unknown>;\n}\n\nexport const AiPowerUpsSettingsGroupHandler = createAbstraction<IAiPowerUpsSettingsGroupHandler>(\n \"AiPowerUpsSettingsGroupHandler\"\n);\n\nexport namespace AiPowerUpsSettingsGroupHandler {\n export type Interface = IAiPowerUpsSettingsGroupHandler;\n}\n\nexport interface IAiPowerUpsSettingsGroupGraphQLMapper {\n readonly name: string;\n toApi(internal: unknown): unknown | Promise<unknown>;\n fromApi(api: unknown, existing: unknown | null): unknown | Promise<unknown>;\n}\n\nexport const AiPowerUpsSettingsGroupGraphQLMapper =\n createAbstraction<IAiPowerUpsSettingsGroupGraphQLMapper>(\n \"AiPowerUpsSettingsGroupGraphQLMapper\"\n );\n\nexport namespace AiPowerUpsSettingsGroupGraphQLMapper {\n export type Interface = IAiPowerUpsSettingsGroupGraphQLMapper;\n}\n\nimport type { IAiPowerUpsSettings } from \"~/api/types.js\";\n\nexport interface SettingsCacheEntry {\n raw: Record<string, unknown>;\n mapped: IAiPowerUpsSettings;\n}\n\nexport interface IAiPowerUpsSettingsCache {\n get(): SettingsCacheEntry | null;\n set(raw: Record<string, unknown>, mapped: IAiPowerUpsSettings): void;\n}\n\nexport const AiPowerUpsSettingsCache =\n createAbstraction<IAiPowerUpsSettingsCache>(\"AiPowerUpsSettingsCache\");\n\nexport namespace AiPowerUpsSettingsCache {\n export type Interface = IAiPowerUpsSettingsCache;\n}\n"],"names":["AiPowerUpsSettingsGroupHandler","createAbstraction","AiPowerUpsSettingsGroupGraphQLMapper","AiPowerUpsSettingsCache"],"mappings":";AAUO,MAAMA,iCAAiCC,kBAC1C;AAaG,MAAMC,uCACTD,kBACI;AAmBD,MAAME,0BACTF,kBAA4C"}
@@ -1 +1,3 @@
1
- export { AiPowerUpsSettingsGroupHandler, AiPowerUpsSettingsGroupGraphQLMapper } from "./abstractions.js";
1
+ export { AiPowerUpsSettingsCache } from "./abstractions.js";
2
+ export { AiPowerUpsSettingsGroupHandler } from "./abstractions.js";
3
+ export { AiPowerUpsSettingsGroupGraphQLMapper } from "./abstractions.js";
@@ -1,3 +1 @@
1
- export { AiPowerUpsSettingsGroupHandler, AiPowerUpsSettingsGroupGraphQLMapper } from "./abstractions.js";
2
-
3
- //# sourceMappingURL=index.js.map
1
+ export { AiPowerUpsSettingsCache, AiPowerUpsSettingsGroupGraphQLMapper, AiPowerUpsSettingsGroupHandler } from "./abstractions.js";
@@ -1,35 +1,44 @@
1
1
  import { AiPowerUpsSettingsGroupGraphQLMapper } from "../features/shared/index.js";
2
2
  import { AiPowerUpsSettingsGraphQLMapper } from "./abstractions.js";
3
3
  class AiPowerUpsSettingsGraphQLMapperImpl {
4
- constructor(mappers) {
5
- this.mapperLookup = new Map(mappers.map(m => [m.name, m]));
6
- }
7
- async toApi(settings) {
8
- const raw = settings;
9
- const result = {};
10
- for (const key of Object.keys(raw)) {
11
- const mapper = this.mapperLookup.get(key);
12
- result[key] = mapper ? await mapper.toApi(raw[key]) : raw[key];
4
+ constructor(mappers){
5
+ this.mapperLookup = new Map(mappers.map((m)=>[
6
+ m.name,
7
+ m
8
+ ]));
13
9
  }
14
- return result;
15
- }
16
- async fromApi(input, current) {
17
- const currentRaw = current;
18
- const assembled = {
19
- ...currentRaw
20
- };
21
- for (const key of Object.keys(input)) {
22
- const mapper = this.mapperLookup.get(key);
23
- assembled[key] = mapper ? await mapper.fromApi(input[key], currentRaw[key]) : input[key];
10
+ async toApi(settings) {
11
+ const raw = settings;
12
+ const result = {};
13
+ for (const key of Object.keys(raw)){
14
+ const mapper = this.mapperLookup.get(key);
15
+ result[key] = mapper ? await mapper.toApi(raw[key]) : raw[key];
16
+ }
17
+ return result;
18
+ }
19
+ async fromApi(input, current) {
20
+ const currentRaw = current;
21
+ const assembled = {
22
+ ...currentRaw
23
+ };
24
+ for (const key of Object.keys(input)){
25
+ const mapper = this.mapperLookup.get(key);
26
+ assembled[key] = mapper ? await mapper.fromApi(input[key], currentRaw[key]) : input[key];
27
+ }
28
+ return assembled;
24
29
  }
25
- return assembled;
26
- }
27
30
  }
28
- export default AiPowerUpsSettingsGraphQLMapper.createImplementation({
29
- implementation: AiPowerUpsSettingsGraphQLMapperImpl,
30
- dependencies: [[AiPowerUpsSettingsGroupGraphQLMapper, {
31
- multiple: true
32
- }]]
31
+ const graphql_AiPowerUpsSettingsGraphQLMapper = AiPowerUpsSettingsGraphQLMapper.createImplementation({
32
+ implementation: AiPowerUpsSettingsGraphQLMapperImpl,
33
+ dependencies: [
34
+ [
35
+ AiPowerUpsSettingsGroupGraphQLMapper,
36
+ {
37
+ multiple: true
38
+ }
39
+ ]
40
+ ]
33
41
  });
42
+ export default graphql_AiPowerUpsSettingsGraphQLMapper;
34
43
 
35
44
  //# sourceMappingURL=AiPowerUpsSettingsGraphQLMapper.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["AiPowerUpsSettingsGroupGraphQLMapper","AiPowerUpsSettingsGraphQLMapper","AiPowerUpsSettingsGraphQLMapperImpl","constructor","mappers","mapperLookup","Map","map","m","name","toApi","settings","raw","result","key","Object","keys","mapper","get","fromApi","input","current","currentRaw","assembled","createImplementation","implementation","dependencies","multiple"],"sources":["AiPowerUpsSettingsGraphQLMapper.ts"],"sourcesContent":["import { AiPowerUpsSettingsGroupGraphQLMapper } from \"~/api/features/shared/index.js\";\nimport { AiPowerUpsSettingsGraphQLMapper } from \"./abstractions.js\";\nimport type { IAiPowerUpsSettings } from \"~/api/types.js\";\n\nclass AiPowerUpsSettingsGraphQLMapperImpl implements AiPowerUpsSettingsGraphQLMapper.Interface {\n private mapperLookup: Map<string, AiPowerUpsSettingsGroupGraphQLMapper.Interface>;\n\n constructor(mappers: AiPowerUpsSettingsGroupGraphQLMapper.Interface[]) {\n this.mapperLookup = new Map(mappers.map(m => [m.name, m]));\n }\n\n async toApi(settings: IAiPowerUpsSettings): Promise<Record<string, unknown>> {\n const raw = settings as unknown as Record<string, unknown>;\n const result: Record<string, unknown> = {};\n\n for (const key of Object.keys(raw)) {\n const mapper = this.mapperLookup.get(key);\n result[key] = mapper ? await mapper.toApi(raw[key]) : raw[key];\n }\n\n return result;\n }\n\n async fromApi(\n input: Record<string, unknown>,\n current: IAiPowerUpsSettings\n ): Promise<IAiPowerUpsSettings> {\n const currentRaw = current as unknown as Record<string, unknown>;\n const assembled: Record<string, unknown> = { ...currentRaw };\n\n for (const key of Object.keys(input)) {\n const mapper = this.mapperLookup.get(key);\n assembled[key] = mapper\n ? await mapper.fromApi(input[key], currentRaw[key])\n : input[key];\n }\n\n return assembled as unknown as IAiPowerUpsSettings;\n }\n}\n\nexport default AiPowerUpsSettingsGraphQLMapper.createImplementation({\n implementation: AiPowerUpsSettingsGraphQLMapperImpl,\n dependencies: [[AiPowerUpsSettingsGroupGraphQLMapper, { multiple: true }]]\n});\n"],"mappings":"AAAA,SAASA,oCAAoC;AAC7C,SAASC,+BAA+B;AAGxC,MAAMC,mCAAmC,CAAsD;EAG3FC,WAAWA,CAACC,OAAyD,EAAE;IACnE,IAAI,CAACC,YAAY,GAAG,IAAIC,GAAG,CAACF,OAAO,CAACG,GAAG,CAACC,CAAC,IAAI,CAACA,CAAC,CAACC,IAAI,EAAED,CAAC,CAAC,CAAC,CAAC;EAC9D;EAEA,MAAME,KAAKA,CAACC,QAA6B,EAAoC;IACzE,MAAMC,GAAG,GAAGD,QAA8C;IAC1D,MAAME,MAA+B,GAAG,CAAC,CAAC;IAE1C,KAAK,MAAMC,GAAG,IAAIC,MAAM,CAACC,IAAI,CAACJ,GAAG,CAAC,EAAE;MAChC,MAAMK,MAAM,GAAG,IAAI,CAACZ,YAAY,CAACa,GAAG,CAACJ,GAAG,CAAC;MACzCD,MAAM,CAACC,GAAG,CAAC,GAAGG,MAAM,GAAG,MAAMA,MAAM,CAACP,KAAK,CAACE,GAAG,CAACE,GAAG,CAAC,CAAC,GAAGF,GAAG,CAACE,GAAG,CAAC;IAClE;IAEA,OAAOD,MAAM;EACjB;EAEA,MAAMM,OAAOA,CACTC,KAA8B,EAC9BC,OAA4B,EACA;IAC5B,MAAMC,UAAU,GAAGD,OAA6C;IAChE,MAAME,SAAkC,GAAG;MAAE,GAAGD;IAAW,CAAC;IAE5D,KAAK,MAAMR,GAAG,IAAIC,MAAM,CAACC,IAAI,CAACI,KAAK,CAAC,EAAE;MAClC,MAAMH,MAAM,GAAG,IAAI,CAACZ,YAAY,CAACa,GAAG,CAACJ,GAAG,CAAC;MACzCS,SAAS,CAACT,GAAG,CAAC,GAAGG,MAAM,GACjB,MAAMA,MAAM,CAACE,OAAO,CAACC,KAAK,CAACN,GAAG,CAAC,EAAEQ,UAAU,CAACR,GAAG,CAAC,CAAC,GACjDM,KAAK,CAACN,GAAG,CAAC;IACpB;IAEA,OAAOS,SAAS;EACpB;AACJ;AAEA,eAAetB,+BAA+B,CAACuB,oBAAoB,CAAC;EAChEC,cAAc,EAAEvB,mCAAmC;EACnDwB,YAAY,EAAE,CAAC,CAAC1B,oCAAoC,EAAE;IAAE2B,QAAQ,EAAE;EAAK,CAAC,CAAC;AAC7E,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"api/graphql/AiPowerUpsSettingsGraphQLMapper.js","sources":["../../../src/api/graphql/AiPowerUpsSettingsGraphQLMapper.ts"],"sourcesContent":["import { AiPowerUpsSettingsGroupGraphQLMapper } from \"~/api/features/shared/index.js\";\nimport { AiPowerUpsSettingsGraphQLMapper } from \"./abstractions.js\";\nimport type { IAiPowerUpsSettings } from \"~/api/types.js\";\n\nclass AiPowerUpsSettingsGraphQLMapperImpl implements AiPowerUpsSettingsGraphQLMapper.Interface {\n private mapperLookup: Map<string, AiPowerUpsSettingsGroupGraphQLMapper.Interface>;\n\n constructor(mappers: AiPowerUpsSettingsGroupGraphQLMapper.Interface[]) {\n this.mapperLookup = new Map(mappers.map(m => [m.name, m]));\n }\n\n async toApi(settings: IAiPowerUpsSettings): Promise<Record<string, unknown>> {\n const raw = settings as unknown as Record<string, unknown>;\n const result: Record<string, unknown> = {};\n\n for (const key of Object.keys(raw)) {\n const mapper = this.mapperLookup.get(key);\n result[key] = mapper ? await mapper.toApi(raw[key]) : raw[key];\n }\n\n return result;\n }\n\n async fromApi(\n input: Record<string, unknown>,\n current: IAiPowerUpsSettings\n ): Promise<IAiPowerUpsSettings> {\n const currentRaw = current as unknown as Record<string, unknown>;\n const assembled: Record<string, unknown> = { ...currentRaw };\n\n for (const key of Object.keys(input)) {\n const mapper = this.mapperLookup.get(key);\n assembled[key] = mapper\n ? await mapper.fromApi(input[key], currentRaw[key])\n : input[key];\n }\n\n return assembled as unknown as IAiPowerUpsSettings;\n }\n}\n\nexport default AiPowerUpsSettingsGraphQLMapper.createImplementation({\n implementation: AiPowerUpsSettingsGraphQLMapperImpl,\n dependencies: [[AiPowerUpsSettingsGroupGraphQLMapper, { multiple: true }]]\n});\n"],"names":["AiPowerUpsSettingsGraphQLMapperImpl","mappers","Map","m","settings","raw","result","key","Object","mapper","input","current","currentRaw","assembled","AiPowerUpsSettingsGraphQLMapper","AiPowerUpsSettingsGroupGraphQLMapper"],"mappings":";;AAIA,MAAMA;IAGF,YAAYC,OAAyD,CAAE;QACnE,IAAI,CAAC,YAAY,GAAG,IAAIC,IAAID,QAAQ,GAAG,CAACE,CAAAA,IAAK;gBAACA,EAAE,IAAI;gBAAEA;aAAE;IAC5D;IAEA,MAAM,MAAMC,QAA6B,EAAoC;QACzE,MAAMC,MAAMD;QACZ,MAAME,SAAkC,CAAC;QAEzC,KAAK,MAAMC,OAAOC,OAAO,IAAI,CAACH,KAAM;YAChC,MAAMI,SAAS,IAAI,CAAC,YAAY,CAAC,GAAG,CAACF;YACrCD,MAAM,CAACC,IAAI,GAAGE,SAAS,MAAMA,OAAO,KAAK,CAACJ,GAAG,CAACE,IAAI,IAAIF,GAAG,CAACE,IAAI;QAClE;QAEA,OAAOD;IACX;IAEA,MAAM,QACFI,KAA8B,EAC9BC,OAA4B,EACA;QAC5B,MAAMC,aAAaD;QACnB,MAAME,YAAqC;YAAE,GAAGD,UAAU;QAAC;QAE3D,KAAK,MAAML,OAAOC,OAAO,IAAI,CAACE,OAAQ;YAClC,MAAMD,SAAS,IAAI,CAAC,YAAY,CAAC,GAAG,CAACF;YACrCM,SAAS,CAACN,IAAI,GAAGE,SACX,MAAMA,OAAO,OAAO,CAACC,KAAK,CAACH,IAAI,EAAEK,UAAU,CAACL,IAAI,IAChDG,KAAK,CAACH,IAAI;QACpB;QAEA,OAAOM;IACX;AACJ;AAEA,gDAAeC,gCAAgC,oBAAoB,CAAC;IAChE,gBAAgBd;IAChB,cAAc;QAAC;YAACe;YAAsC;gBAAE,UAAU;YAAK;SAAE;KAAC;AAC9E"}