@webiny/ai-powerups 6.3.0-beta.0

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 (214) hide show
  1. package/AiPowerups.d.ts +2 -0
  2. package/AiPowerups.js +12 -0
  3. package/AiPowerups.js.map +1 -0
  4. package/LICENSE +36 -0
  5. package/README.md +11 -0
  6. package/admin/Extension.d.ts +2 -0
  7. package/admin/Extension.js +31 -0
  8. package/admin/Extension.js.map +1 -0
  9. package/admin/features/feature.d.ts +1 -0
  10. package/admin/features/feature.js +21 -0
  11. package/admin/features/feature.js.map +1 -0
  12. package/admin/features/generatePageContent/GeneratePageContentGateway.d.ts +12 -0
  13. package/admin/features/generatePageContent/GeneratePageContentGateway.js +26 -0
  14. package/admin/features/generatePageContent/GeneratePageContentGateway.js.map +1 -0
  15. package/admin/features/generatePageContent/GeneratePageContentUseCase.d.ts +11 -0
  16. package/admin/features/generatePageContent/GeneratePageContentUseCase.js +15 -0
  17. package/admin/features/generatePageContent/GeneratePageContentUseCase.js.map +1 -0
  18. package/admin/features/generatePageContent/abstractions.d.ts +20 -0
  19. package/admin/features/generatePageContent/abstractions.js +5 -0
  20. package/admin/features/generatePageContent/abstractions.js.map +1 -0
  21. package/admin/features/generatePageContent/feature.d.ts +1 -0
  22. package/admin/features/generatePageContent/feature.js +12 -0
  23. package/admin/features/generatePageContent/feature.js.map +1 -0
  24. package/admin/features/generatePageContent/index.d.ts +3 -0
  25. package/admin/features/generatePageContent/index.js +4 -0
  26. package/admin/features/generatePageContent/index.js.map +1 -0
  27. package/admin/features/listModels/ListModelsGateway.d.ts +12 -0
  28. package/admin/features/listModels/ListModelsGateway.js +31 -0
  29. package/admin/features/listModels/ListModelsGateway.js.map +1 -0
  30. package/admin/features/listModels/ListModelsRepository.d.ts +13 -0
  31. package/admin/features/listModels/ListModelsRepository.js +24 -0
  32. package/admin/features/listModels/ListModelsRepository.js.map +1 -0
  33. package/admin/features/listModels/ListModelsUseCase.d.ts +10 -0
  34. package/admin/features/listModels/ListModelsUseCase.js +15 -0
  35. package/admin/features/listModels/ListModelsUseCase.js.map +1 -0
  36. package/admin/features/listModels/abstractions.d.ts +28 -0
  37. package/admin/features/listModels/abstractions.js +6 -0
  38. package/admin/features/listModels/abstractions.js.map +1 -0
  39. package/admin/features/listModels/feature.d.ts +3 -0
  40. package/admin/features/listModels/feature.js +20 -0
  41. package/admin/features/listModels/feature.js.map +1 -0
  42. package/admin/features/listModels/index.d.ts +2 -0
  43. package/admin/features/listModels/index.js +4 -0
  44. package/admin/features/listModels/index.js.map +1 -0
  45. package/admin/features/settings/getSettings/GetSettingsGateway.d.ts +11 -0
  46. package/admin/features/settings/getSettings/GetSettingsGateway.js +26 -0
  47. package/admin/features/settings/getSettings/GetSettingsGateway.js.map +1 -0
  48. package/admin/features/settings/getSettings/GetSettingsRepository.d.ts +12 -0
  49. package/admin/features/settings/getSettings/GetSettingsRepository.js +23 -0
  50. package/admin/features/settings/getSettings/GetSettingsRepository.js.map +1 -0
  51. package/admin/features/settings/getSettings/GetSettingsUseCase.d.ts +10 -0
  52. package/admin/features/settings/getSettings/GetSettingsUseCase.js +15 -0
  53. package/admin/features/settings/getSettings/GetSettingsUseCase.js.map +1 -0
  54. package/admin/features/settings/getSettings/abstractions.d.ts +22 -0
  55. package/admin/features/settings/getSettings/abstractions.js +6 -0
  56. package/admin/features/settings/getSettings/abstractions.js.map +1 -0
  57. package/admin/features/settings/getSettings/feature.d.ts +3 -0
  58. package/admin/features/settings/getSettings/feature.js +20 -0
  59. package/admin/features/settings/getSettings/feature.js.map +1 -0
  60. package/admin/features/settings/getSettings/index.d.ts +2 -0
  61. package/admin/features/settings/getSettings/index.js +4 -0
  62. package/admin/features/settings/getSettings/index.js.map +1 -0
  63. package/admin/features/settings/shared/SettingsCache.d.ts +9 -0
  64. package/admin/features/settings/shared/SettingsCache.js +18 -0
  65. package/admin/features/settings/shared/SettingsCache.js.map +1 -0
  66. package/admin/features/settings/shared/abstractions.d.ts +9 -0
  67. package/admin/features/settings/shared/abstractions.js +21 -0
  68. package/admin/features/settings/shared/abstractions.js.map +1 -0
  69. package/admin/features/settings/shared/feature.d.ts +1 -0
  70. package/admin/features/settings/shared/feature.js +14 -0
  71. package/admin/features/settings/shared/feature.js.map +1 -0
  72. package/admin/features/settings/shared/index.d.ts +2 -0
  73. package/admin/features/settings/shared/index.js +4 -0
  74. package/admin/features/settings/shared/index.js.map +1 -0
  75. package/admin/features/settings/updateSettings/UpdateSettingsGateway.d.ts +12 -0
  76. package/admin/features/settings/updateSettings/UpdateSettingsGateway.js +29 -0
  77. package/admin/features/settings/updateSettings/UpdateSettingsGateway.js.map +1 -0
  78. package/admin/features/settings/updateSettings/UpdateSettingsRepository.d.ts +13 -0
  79. package/admin/features/settings/updateSettings/UpdateSettingsRepository.js +19 -0
  80. package/admin/features/settings/updateSettings/UpdateSettingsRepository.js.map +1 -0
  81. package/admin/features/settings/updateSettings/UpdateSettingsUseCase.d.ts +11 -0
  82. package/admin/features/settings/updateSettings/UpdateSettingsUseCase.js +15 -0
  83. package/admin/features/settings/updateSettings/UpdateSettingsUseCase.js.map +1 -0
  84. package/admin/features/settings/updateSettings/abstractions.d.ts +22 -0
  85. package/admin/features/settings/updateSettings/abstractions.js +6 -0
  86. package/admin/features/settings/updateSettings/abstractions.js.map +1 -0
  87. package/admin/features/settings/updateSettings/feature.d.ts +3 -0
  88. package/admin/features/settings/updateSettings/feature.js +20 -0
  89. package/admin/features/settings/updateSettings/feature.js.map +1 -0
  90. package/admin/features/settings/updateSettings/index.d.ts +2 -0
  91. package/admin/features/settings/updateSettings/index.js +4 -0
  92. package/admin/features/settings/updateSettings/index.js.map +1 -0
  93. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsConfig.d.ts +2 -0
  94. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsConfig.js +11 -0
  95. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsConfig.js.map +1 -0
  96. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsDialog.d.ts +5 -0
  97. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsDialog.js +58 -0
  98. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsDialog.js.map +1 -0
  99. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPresenter.d.ts +25 -0
  100. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPresenter.js +140 -0
  101. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPresenter.js.map +1 -0
  102. package/admin/presentation/AiPowerUpsSettings/abstractions.d.ts +17 -0
  103. package/admin/presentation/AiPowerUpsSettings/abstractions.js +4 -0
  104. package/admin/presentation/AiPowerUpsSettings/abstractions.js.map +1 -0
  105. package/admin/presentation/AiPowerUpsSettings/feature.d.ts +3 -0
  106. package/admin/presentation/AiPowerUpsSettings/feature.js +21 -0
  107. package/admin/presentation/AiPowerUpsSettings/feature.js.map +1 -0
  108. package/admin/presentation/AiPowerUpsSettings/index.d.ts +5 -0
  109. package/admin/presentation/AiPowerUpsSettings/index.js +7 -0
  110. package/admin/presentation/AiPowerUpsSettings/index.js.map +1 -0
  111. package/admin/presentation/AiPowerUpsSettings/settingsGroup.d.ts +18 -0
  112. package/admin/presentation/AiPowerUpsSettings/settingsGroup.js +4 -0
  113. package/admin/presentation/AiPowerUpsSettings/settingsGroup.js.map +1 -0
  114. package/admin/presentation/AiPowerUpsSettings/useAiPowerUpsSettingsDialog.d.ts +1 -0
  115. package/admin/presentation/AiPowerUpsSettings/useAiPowerUpsSettingsDialog.js +12 -0
  116. package/admin/presentation/AiPowerUpsSettings/useAiPowerUpsSettingsDialog.js.map +1 -0
  117. package/admin/presentation/PersonasSettings.d.ts +11 -0
  118. package/admin/presentation/PersonasSettings.js +28 -0
  119. package/admin/presentation/PersonasSettings.js.map +1 -0
  120. package/admin/presentation/ProvidersSettings.d.ts +16 -0
  121. package/admin/presentation/ProvidersSettings.js +37 -0
  122. package/admin/presentation/ProvidersSettings.js.map +1 -0
  123. package/admin/presentation/WbContentGeneration/Extension.d.ts +2 -0
  124. package/admin/presentation/WbContentGeneration/Extension.js +23 -0
  125. package/admin/presentation/WbContentGeneration/Extension.js.map +1 -0
  126. package/admin/presentation/WbContentGeneration/GenerateContentButton.d.ts +2 -0
  127. package/admin/presentation/WbContentGeneration/GenerateContentButton.js +17 -0
  128. package/admin/presentation/WbContentGeneration/GenerateContentButton.js.map +1 -0
  129. package/admin/presentation/WbContentGeneration/GenerateContentDialog.d.ts +21 -0
  130. package/admin/presentation/WbContentGeneration/GenerateContentDialog.js +102 -0
  131. package/admin/presentation/WbContentGeneration/GenerateContentDialog.js.map +1 -0
  132. package/admin/presentation/WbContentGeneration/GenerateContentPresenter.d.ts +24 -0
  133. package/admin/presentation/WbContentGeneration/GenerateContentPresenter.js +91 -0
  134. package/admin/presentation/WbContentGeneration/GenerateContentPresenter.js.map +1 -0
  135. package/admin/presentation/WbContentGeneration/PROCESS_IDEA.md +190 -0
  136. package/admin/presentation/WbContentGeneration/abstractions.d.ts +28 -0
  137. package/admin/presentation/WbContentGeneration/abstractions.js +4 -0
  138. package/admin/presentation/WbContentGeneration/abstractions.js.map +1 -0
  139. package/admin/presentation/WbContentGeneration/decompressGzipBase64.d.ts +1 -0
  140. package/admin/presentation/WbContentGeneration/decompressGzipBase64.js +14 -0
  141. package/admin/presentation/WbContentGeneration/decompressGzipBase64.js.map +1 -0
  142. package/admin/presentation/WbContentGeneration/feature.d.ts +3 -0
  143. package/admin/presentation/WbContentGeneration/feature.js +16 -0
  144. package/admin/presentation/WbContentGeneration/feature.js.map +1 -0
  145. package/api/Extension.d.ts +4 -0
  146. package/api/Extension.js +16 -0
  147. package/api/Extension.js.map +1 -0
  148. package/api/constants.d.ts +1 -0
  149. package/api/constants.js +3 -0
  150. package/api/constants.js.map +1 -0
  151. package/api/features/GetSettings/GetSettingsRepository.d.ts +15 -0
  152. package/api/features/GetSettings/GetSettingsRepository.js +45 -0
  153. package/api/features/GetSettings/GetSettingsRepository.js.map +1 -0
  154. package/api/features/GetSettings/GetSettingsUseCase.d.ts +10 -0
  155. package/api/features/GetSettings/GetSettingsUseCase.js +15 -0
  156. package/api/features/GetSettings/GetSettingsUseCase.js.map +1 -0
  157. package/api/features/GetSettings/abstractions.d.ts +16 -0
  158. package/api/features/GetSettings/abstractions.js +5 -0
  159. package/api/features/GetSettings/abstractions.js.map +1 -0
  160. package/api/features/GetSettings/feature.d.ts +4 -0
  161. package/api/features/GetSettings/feature.js +12 -0
  162. package/api/features/GetSettings/feature.js.map +1 -0
  163. package/api/features/GetSettings/index.d.ts +1 -0
  164. package/api/features/GetSettings/index.js +3 -0
  165. package/api/features/GetSettings/index.js.map +1 -0
  166. package/api/features/UpdateSettings/UpdateSettingsRepository.d.ts +15 -0
  167. package/api/features/UpdateSettings/UpdateSettingsRepository.js +42 -0
  168. package/api/features/UpdateSettings/UpdateSettingsRepository.js.map +1 -0
  169. package/api/features/UpdateSettings/UpdateSettingsUseCase.d.ts +14 -0
  170. package/api/features/UpdateSettings/UpdateSettingsUseCase.js +40 -0
  171. package/api/features/UpdateSettings/UpdateSettingsUseCase.js.map +1 -0
  172. package/api/features/UpdateSettings/abstractions.d.ts +46 -0
  173. package/api/features/UpdateSettings/abstractions.js +10 -0
  174. package/api/features/UpdateSettings/abstractions.js.map +1 -0
  175. package/api/features/UpdateSettings/events.d.ts +10 -0
  176. package/api/features/UpdateSettings/events.js +16 -0
  177. package/api/features/UpdateSettings/events.js.map +1 -0
  178. package/api/features/UpdateSettings/feature.d.ts +4 -0
  179. package/api/features/UpdateSettings/feature.js +12 -0
  180. package/api/features/UpdateSettings/feature.js.map +1 -0
  181. package/api/features/UpdateSettings/index.d.ts +1 -0
  182. package/api/features/UpdateSettings/index.js +3 -0
  183. package/api/features/UpdateSettings/index.js.map +1 -0
  184. package/api/features/UpdateSettings/validation.d.ts +17 -0
  185. package/api/features/UpdateSettings/validation.js +21 -0
  186. package/api/features/UpdateSettings/validation.js.map +1 -0
  187. package/api/features/WbGeneratePageContent/WbGeneratePageContentTask.d.ts +29 -0
  188. package/api/features/WbGeneratePageContent/WbGeneratePageContentTask.js +72 -0
  189. package/api/features/WbGeneratePageContent/WbGeneratePageContentTask.js.map +1 -0
  190. package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.d.ts +17 -0
  191. package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.js +62 -0
  192. package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.js.map +1 -0
  193. package/api/features/WbGeneratePageContent/abstractions.d.ts +14 -0
  194. package/api/features/WbGeneratePageContent/abstractions.js +4 -0
  195. package/api/features/WbGeneratePageContent/abstractions.js.map +1 -0
  196. package/api/features/WbGeneratePageContent/buildPrompt.d.ts +1 -0
  197. package/api/features/WbGeneratePageContent/buildPrompt.js +142 -0
  198. package/api/features/WbGeneratePageContent/buildPrompt.js.map +1 -0
  199. package/api/features/WbGeneratePageContent/feature.d.ts +4 -0
  200. package/api/features/WbGeneratePageContent/feature.js +12 -0
  201. package/api/features/WbGeneratePageContent/feature.js.map +1 -0
  202. package/api/features/WbGeneratePageContent/index.d.ts +1 -0
  203. package/api/features/WbGeneratePageContent/index.js +3 -0
  204. package/api/features/WbGeneratePageContent/index.js.map +1 -0
  205. package/api/graphql/BaseGraphQLSchema.d.ts +8 -0
  206. package/api/graphql/BaseGraphQLSchema.js +110 -0
  207. package/api/graphql/BaseGraphQLSchema.js.map +1 -0
  208. package/api/types.d.ts +19 -0
  209. package/api/types.js +3 -0
  210. package/api/types.js.map +1 -0
  211. package/index.d.ts +1 -0
  212. package/index.js +3 -0
  213. package/index.js.map +1 -0
  214. package/package.json +54 -0
@@ -0,0 +1,142 @@
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.
3
+
4
+ ###
5
+
6
+ ### Rich Text Content
7
+
8
+ A single Webiny/Lexical element CAN contain an entire article, blog post, or content section,
9
+ with all headings, paragraphs, lists, and blockquotes in a single HTML string.
10
+
11
+ Create separate Webiny/Lexical elements when it needs to be mixed with other content elements.
12
+ Example: RichText - Banner - RichText - Image - Banner - RichText
13
+
14
+ ### Image Selection
15
+
16
+ When the page content requires images, use the listImagesByTag tool
17
+ to search for available images. After receiving the results, select
18
+ the most appropriate image and reference it in your output using:
19
+ { "tool": "resolveImage", "params": { "id": "<image_id_from_search>" } }
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
23
+ always be the complete page JSON array.
24
+
25
+ ### SEO & Content Structure Best Practices
26
+
27
+ When generating page content, follow these SEO guidelines:
28
+
29
+ Heading hierarchy:
30
+ - Use exactly ONE <h1> per page, as the main title/headline.
31
+ - Use <h2> for major sections, <h3> for subsections. Never skip levels (e.g., no <h3> directly after <h1>).
32
+ - Headings should be descriptive and include relevant keywords naturally — avoid generic headings like "Introduction" or "Section 1".
33
+
34
+ Paragraphs and readability:
35
+ - Keep paragraphs short — 2 to 4 sentences each.
36
+ - Use <strong> and <em> to emphasize key terms and phrases that a reader scanning the page should notice.
37
+ - Use bullet lists (<ul>) or numbered lists (<ol>) to break down complex information.
38
+ - Write in an active voice. Be direct and concise.
39
+
40
+ Content structure:
41
+ - Lead with the most important information first (inverted pyramid).
42
+ - Include a compelling opening paragraph immediately after the <h1> that summarizes the page's value proposition.
43
+ - Use transition sentences between sections to maintain reading flow.
44
+ - End with a clear call-to-action or summary.
45
+
46
+ Keyword usage:
47
+ - Incorporate the main topic keywords naturally in the <h1>, at least one <h2>, the opening paragraph, and throughout the body.
48
+ - Avoid keyword stuffing — content must read naturally to a human.
49
+ - Use semantic variations and related terms rather than repeating the exact same phrase.
50
+
51
+ Links:
52
+ - Where appropriate, use descriptive anchor text for links (not "click here" or "read more").
53
+
54
+ ### Component Catalog
55
+
56
+ \`\`\`json
57
+ ${JSON.stringify(components, null, 2)}
58
+ \`\`\`
59
+
60
+ Grid layout options: \`12\`, \`6-6\`, \`4-4-4\`, \`8-4\`, \`4-8\`, \`3-3-3-3\`
61
+
62
+ ### Available Tools
63
+
64
+ For input fields that require post-processing, wrap the value in a tool envelope: \`{ "tool": "<toolName>", "params": { ... } }\`.
65
+
66
+ Plain values (text, number, boolean, select) should be set directly without an envelope.
67
+
68
+ \`\`\`json
69
+ ${JSON.stringify(tools, null, 2)}
70
+ \`\`\`
71
+
72
+ ### Page Schema
73
+
74
+ \`\`\`typescript
75
+ type ElementSchema = {
76
+ component: string;
77
+ inputs: Record<string, unknown>;
78
+ };
79
+
80
+ type CreateElementAction = {
81
+ action: "CreateElement";
82
+ params: ElementSchema;
83
+ };
84
+
85
+ type PageSchema = ElementSchema[];
86
+ \`\`\`
87
+
88
+ For slot inputs, use \`{ "action": "CreateElement", "params": { "component": "...", "inputs": { ... } } }\`. For root array items, use \`ElementSchema\` shape.
89
+ Note: \`CreateElement\` uses "action" — it is a structural instruction for the page builder, not a tool invocation.
90
+
91
+ ### Grid Structure Example
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
95
+ actual content elements:
96
+
97
+ \`\`\`json
98
+ {
99
+ "component": "Webiny/Grid",
100
+ "inputs": {
101
+ "gridLayout": "6-6",
102
+ "columns": [
103
+ {
104
+ "children": {
105
+ "action": "CreateElement",
106
+ "params": {
107
+ "component": "Webiny/GridColumn",
108
+ "inputs": {
109
+ "children": [
110
+ {
111
+ "action": "CreateElement",
112
+ "params": {
113
+ "component": "Webiny/Lexical",
114
+ "inputs": {
115
+ "content": {
116
+ "tool": "textToLexical",
117
+ "params": { "text": "..." }
118
+ }
119
+ }
120
+ }
121
+ }
122
+ ]
123
+ }
124
+ }
125
+ }
126
+ }
127
+ ]
128
+ }
129
+ }
130
+ \`\`\`
131
+
132
+ Key rules:
133
+ - "columns" is an array, not an object with numeric keys
134
+ - Each column has a "children" property containing a single CreateElement
135
+ for Webiny/GridColumn
136
+ - Webiny/GridColumn's "children" is an array of CreateElement actions for
137
+ the actual content
138
+
139
+ You MUST return parsable JSON string without any extra text or envelopes.`;
140
+ }
141
+
142
+ //# sourceMappingURL=buildPrompt.js.map
@@ -0,0 +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":[]}
@@ -0,0 +1,4 @@
1
+ export declare const WbGeneratePageContentFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -0,0 +1,12 @@
1
+ import { createFeature } from "@webiny/feature/api";
2
+ import { WbGeneratePageContentUseCaseImplementation } from "./WbGeneratePageContentUseCase.js";
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
+ }
10
+ });
11
+
12
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +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":[]}
@@ -0,0 +1 @@
1
+ export { WbGeneratePageContentUseCase } from "./abstractions.js";
@@ -0,0 +1,3 @@
1
+ export { WbGeneratePageContentUseCase } from "./abstractions.js";
2
+
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["WbGeneratePageContentUseCase"],"sources":["index.ts"],"sourcesContent":["export { WbGeneratePageContentUseCase } from \"./abstractions.js\";\n"],"mappings":"AAAA,SAASA,4BAA4B","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ import { CoreGraphQLSchemaFactory } from "@webiny/handler-graphql/graphql/abstractions.core.js";
2
+ declare class BaseGraphQLSchemaImpl implements CoreGraphQLSchemaFactory.Interface {
3
+ execute(builder: CoreGraphQLSchemaFactory.SchemaBuilder): Promise<CoreGraphQLSchemaFactory.SchemaBuilder>;
4
+ }
5
+ export declare const BaseGraphQLSchema: typeof BaseGraphQLSchemaImpl & {
6
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/handler-graphql/graphql/abstractions.public").IGraphQLSchemaFactory>;
7
+ };
8
+ export {};
@@ -0,0 +1,110 @@
1
+ import { CoreGraphQLSchemaFactory } from "@webiny/handler-graphql/graphql/abstractions.core.js";
2
+ import { Ai } from "@webiny/api-core/features/ai/index.js";
3
+ import { TaskService } from "@webiny/api-core/features/task/TaskService/index.js";
4
+ import { GetSettingsUseCase } from "../features/GetSettings/index.js";
5
+ import { UpdateSettingsUseCase } from "../features/UpdateSettings/index.js";
6
+ import { WB_GENERATE_PAGE_CONTENT_TASK_ID } from "../features/WbGeneratePageContent/WbGeneratePageContentTask.js";
7
+ class BaseGraphQLSchemaImpl {
8
+ async execute(builder) {
9
+ builder.addTypeDefs(/* GraphQL */`
10
+ type AiModel {
11
+ providerId: String!
12
+ providerName: String!
13
+ modelId: String!
14
+ modelName: String!
15
+ }
16
+
17
+ type AiPowerUpsQuery {
18
+ listModels: [AiModel!]!
19
+ getSettings: JSON
20
+ }
21
+
22
+ type AiPowerUpsMutation {
23
+ updateSettings(input: JSON!): JSON!
24
+ generatePageContent(prompt: String!, components: JSON!, tools: JSON!): JSON!
25
+ }
26
+
27
+ extend type Query {
28
+ aiPowerUps: AiPowerUpsQuery
29
+ }
30
+
31
+ extend type Mutation {
32
+ aiPowerUps: AiPowerUpsMutation
33
+ }
34
+ `);
35
+ builder.addResolver({
36
+ path: "Query.aiPowerUps",
37
+ resolver: () => () => ({})
38
+ });
39
+ builder.addResolver({
40
+ path: "Mutation.aiPowerUps",
41
+ resolver: () => () => ({})
42
+ });
43
+ builder.addResolver({
44
+ path: "AiPowerUpsQuery.listModels",
45
+ dependencies: [Ai],
46
+ resolver: ai => {
47
+ return async () => ai.listModels();
48
+ }
49
+ });
50
+ builder.addResolver({
51
+ path: "AiPowerUpsQuery.getSettings",
52
+ dependencies: [GetSettingsUseCase],
53
+ resolver: useCase => {
54
+ return async () => {
55
+ const result = await useCase.execute();
56
+ if (result.isOk()) {
57
+ return result.value;
58
+ }
59
+ throw result.error;
60
+ };
61
+ }
62
+ });
63
+ builder.addResolver({
64
+ path: "AiPowerUpsMutation.generatePageContent",
65
+ dependencies: [TaskService],
66
+ resolver: taskService => {
67
+ return async ({
68
+ args
69
+ }) => {
70
+ const result = await taskService.trigger({
71
+ definition: WB_GENERATE_PAGE_CONTENT_TASK_ID,
72
+ input: {
73
+ prompt: args.prompt,
74
+ components: args.components,
75
+ tools: args.tools
76
+ }
77
+ });
78
+ if (result.isFail()) {
79
+ throw result.error;
80
+ }
81
+ return {
82
+ id: result.value.id
83
+ };
84
+ };
85
+ }
86
+ });
87
+ builder.addResolver({
88
+ path: "AiPowerUpsMutation.updateSettings",
89
+ dependencies: [UpdateSettingsUseCase],
90
+ resolver: useCase => {
91
+ return async ({
92
+ args
93
+ }) => {
94
+ const result = await useCase.execute(args.input);
95
+ if (result.isFail()) {
96
+ throw result.error;
97
+ }
98
+ return result.value;
99
+ };
100
+ }
101
+ });
102
+ return builder;
103
+ }
104
+ }
105
+ export const BaseGraphQLSchema = CoreGraphQLSchemaFactory.createImplementation({
106
+ implementation: BaseGraphQLSchemaImpl,
107
+ dependencies: []
108
+ });
109
+
110
+ //# sourceMappingURL=BaseGraphQLSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CoreGraphQLSchemaFactory","Ai","TaskService","GetSettingsUseCase","UpdateSettingsUseCase","WB_GENERATE_PAGE_CONTENT_TASK_ID","BaseGraphQLSchemaImpl","execute","builder","addTypeDefs","addResolver","path","resolver","dependencies","ai","listModels","useCase","result","isOk","value","error","taskService","args","trigger","definition","input","prompt","components","tools","isFail","id","BaseGraphQLSchema","createImplementation","implementation"],"sources":["BaseGraphQLSchema.ts"],"sourcesContent":["import { CoreGraphQLSchemaFactory } from \"@webiny/handler-graphql/graphql/abstractions.core.js\";\nimport { Ai } from \"@webiny/api-core/features/ai/index.js\";\nimport { TaskService } from \"@webiny/api-core/features/task/TaskService/index.js\";\nimport { GetSettingsUseCase } from \"~/api/features/GetSettings/index.js\";\nimport { UpdateSettingsUseCase } from \"~/api/features/UpdateSettings/index.js\";\nimport {\n WB_GENERATE_PAGE_CONTENT_TASK_ID,\n type IWbGeneratePageContentTaskInput\n} from \"~/api/features/WbGeneratePageContent/WbGeneratePageContentTask.js\";\n\nclass BaseGraphQLSchemaImpl implements CoreGraphQLSchemaFactory.Interface {\n async execute(\n builder: CoreGraphQLSchemaFactory.SchemaBuilder\n ): Promise<CoreGraphQLSchemaFactory.SchemaBuilder> {\n builder.addTypeDefs(/* GraphQL */ `\n type AiModel {\n providerId: String!\n providerName: String!\n modelId: String!\n modelName: String!\n }\n\n type AiPowerUpsQuery {\n listModels: [AiModel!]!\n getSettings: JSON\n }\n\n type AiPowerUpsMutation {\n updateSettings(input: JSON!): JSON!\n generatePageContent(prompt: String!, components: JSON!, tools: JSON!): JSON!\n }\n\n extend type Query {\n aiPowerUps: AiPowerUpsQuery\n }\n\n extend type Mutation {\n aiPowerUps: AiPowerUpsMutation\n }\n `);\n\n builder.addResolver({\n path: \"Query.aiPowerUps\",\n resolver: () => () => ({})\n });\n\n builder.addResolver({\n path: \"Mutation.aiPowerUps\",\n resolver: () => () => ({})\n });\n\n builder.addResolver({\n path: \"AiPowerUpsQuery.listModels\",\n dependencies: [Ai],\n resolver: (ai: Ai.Interface) => {\n return async () => ai.listModels();\n }\n });\n\n builder.addResolver({\n path: \"AiPowerUpsQuery.getSettings\",\n dependencies: [GetSettingsUseCase],\n resolver: (useCase: GetSettingsUseCase.Interface) => {\n return async () => {\n const result = await useCase.execute();\n if (result.isOk()) {\n return result.value;\n }\n\n throw result.error;\n };\n }\n });\n\n builder.addResolver<IWbGeneratePageContentTaskInput>({\n path: \"AiPowerUpsMutation.generatePageContent\",\n dependencies: [TaskService],\n resolver: (taskService: TaskService.Interface) => {\n return async ({ args }) => {\n const result = await taskService.trigger<IWbGeneratePageContentTaskInput>({\n definition: WB_GENERATE_PAGE_CONTENT_TASK_ID,\n input: {\n prompt: args.prompt,\n components: args.components,\n tools: args.tools\n }\n });\n\n if (result.isFail()) {\n throw result.error;\n }\n\n return { id: result.value.id };\n };\n }\n });\n\n builder.addResolver<{ input: UpdateSettingsUseCase.Params }>({\n path: \"AiPowerUpsMutation.updateSettings\",\n dependencies: [UpdateSettingsUseCase],\n resolver: (useCase: UpdateSettingsUseCase.Interface) => {\n return async ({ args }) => {\n const result = await useCase.execute(args.input);\n\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n };\n }\n });\n\n return builder;\n }\n}\n\nexport const BaseGraphQLSchema = CoreGraphQLSchemaFactory.createImplementation({\n implementation: BaseGraphQLSchemaImpl,\n dependencies: []\n});\n"],"mappings":"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","ignoreList":[]}
package/api/types.d.ts ADDED
@@ -0,0 +1,19 @@
1
+ import "@webiny/tasks/features/TaskController/augmentation.js";
2
+ export interface AiProvider {
3
+ name: string;
4
+ description?: string;
5
+ model: string;
6
+ apiKey: string;
7
+ }
8
+ export interface AiPersona {
9
+ name: string;
10
+ description: string;
11
+ }
12
+ export interface AiPowerUpsSettings {
13
+ providers: {
14
+ presets: AiProvider[];
15
+ };
16
+ personas: {
17
+ presets: AiPersona[];
18
+ };
19
+ }
package/api/types.js ADDED
@@ -0,0 +1,3 @@
1
+ import "@webiny/tasks/features/TaskController/augmentation.js";
2
+
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import \"@webiny/tasks/features/TaskController/augmentation.js\";\n\nexport interface AiProvider {\n name: string;\n description?: string;\n model: string;\n apiKey: string;\n}\n\nexport interface AiPersona {\n name: string;\n description: string;\n}\n\nexport interface AiPowerUpsSettings {\n providers: {\n presets: AiProvider[];\n };\n personas: {\n presets: AiPersona[];\n };\n}\n"],"mappings":"AAAA,OAAO,uDAAuD","ignoreList":[]}
package/index.d.ts ADDED
@@ -0,0 +1 @@
1
+ export { AiPowerups } from "./AiPowerups.js";
package/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export { AiPowerups } from "./AiPowerups.js";
2
+
3
+ //# sourceMappingURL=index.js.map
package/index.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AiPowerups"],"sources":["index.ts"],"sourcesContent":["export { AiPowerups } from \"./AiPowerups.js\";\n"],"mappings":"AAAA,SAASA,UAAU","ignoreList":[]}
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "@webiny/ai-powerups",
3
+ "version": "6.3.0-beta.0",
4
+ "type": "module",
5
+ "sideEffects": false,
6
+ "main": "index.js",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/webiny/webiny-js.git"
10
+ },
11
+ "imports": {
12
+ "#/*": "./src/*"
13
+ },
14
+ "description": "Tenant Management module for Webiny CMS.",
15
+ "author": "Webiny Ltd.",
16
+ "license": "Webiny Enterprise",
17
+ "dependencies": {
18
+ "@webiny/admin-ui": "6.3.0-beta.0",
19
+ "@webiny/api-core": "6.3.0-beta.0",
20
+ "@webiny/api-websockets": "6.3.0-beta.0",
21
+ "@webiny/app": "6.3.0-beta.0",
22
+ "@webiny/app-admin": "6.3.0-beta.0",
23
+ "@webiny/app-website-builder": "6.3.0-beta.0",
24
+ "@webiny/app-websockets": "6.3.0-beta.0",
25
+ "@webiny/feature": "6.3.0-beta.0",
26
+ "@webiny/icons": "6.3.0-beta.0",
27
+ "@webiny/project": "6.3.0-beta.0",
28
+ "@webiny/project-aws": "6.3.0-beta.0",
29
+ "@webiny/tasks": "6.3.0-beta.0",
30
+ "@webiny/utils": "6.3.0-beta.0",
31
+ "ai": "6.0.168",
32
+ "lodash": "4.18.1",
33
+ "mobx": "6.15.0",
34
+ "mobx-react-lite": "4.1.1",
35
+ "react": "18.3.1",
36
+ "react-dom": "18.3.1",
37
+ "zod": "4.3.6"
38
+ },
39
+ "devDependencies": {
40
+ "@webiny/build-tools": "6.3.0-beta.0",
41
+ "@webiny/handler-aws": "6.3.0-beta.0",
42
+ "@webiny/handler-graphql": "6.3.0-beta.0",
43
+ "@webiny/project-utils": "6.3.0-beta.0",
44
+ "@webiny/wcp": "6.3.0-beta.0",
45
+ "rimraf": "6.1.3",
46
+ "typescript": "6.0.3",
47
+ "vitest": "4.1.4"
48
+ },
49
+ "publishConfig": {
50
+ "access": "public",
51
+ "directory": "dist"
52
+ },
53
+ "gitHead": "94c21e58aebc9855bf1ae972423281faa0f5c135"
54
+ }