@webiny/ai-powerups 0.0.0-unstable.7be00a75a9

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 (311) hide show
  1. package/AiPowerups.d.ts +2 -0
  2. package/AiPowerups.js +11 -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 +33 -0
  8. package/admin/Extension.js.map +1 -0
  9. package/admin/domain/errors.d.ts +12 -0
  10. package/admin/domain/errors.js +21 -0
  11. package/admin/domain/errors.js.map +1 -0
  12. package/admin/features/feature.d.ts +1 -0
  13. package/admin/features/feature.js +22 -0
  14. package/admin/features/feature.js.map +1 -0
  15. package/admin/features/generatePageContent/GeneratePageContentGateway.d.ts +12 -0
  16. package/admin/features/generatePageContent/GeneratePageContentGateway.js +45 -0
  17. package/admin/features/generatePageContent/GeneratePageContentGateway.js.map +1 -0
  18. package/admin/features/generatePageContent/GeneratePageContentUseCase.d.ts +11 -0
  19. package/admin/features/generatePageContent/GeneratePageContentUseCase.js +18 -0
  20. package/admin/features/generatePageContent/GeneratePageContentUseCase.js.map +1 -0
  21. package/admin/features/generatePageContent/abstractions.d.ts +24 -0
  22. package/admin/features/generatePageContent/abstractions.js +6 -0
  23. package/admin/features/generatePageContent/abstractions.js.map +1 -0
  24. package/admin/features/generatePageContent/feature.d.ts +1 -0
  25. package/admin/features/generatePageContent/feature.js +13 -0
  26. package/admin/features/generatePageContent/feature.js.map +1 -0
  27. package/admin/features/generatePageContent/index.d.ts +3 -0
  28. package/admin/features/generatePageContent/index.js +2 -0
  29. package/admin/features/listModels/ListModelsGateway.d.ts +12 -0
  30. package/admin/features/listModels/ListModelsGateway.js +34 -0
  31. package/admin/features/listModels/ListModelsGateway.js.map +1 -0
  32. package/admin/features/listModels/ListModelsRepository.d.ts +13 -0
  33. package/admin/features/listModels/ListModelsRepository.js +27 -0
  34. package/admin/features/listModels/ListModelsRepository.js.map +1 -0
  35. package/admin/features/listModels/ListModelsUseCase.d.ts +10 -0
  36. package/admin/features/listModels/ListModelsUseCase.js +18 -0
  37. package/admin/features/listModels/ListModelsUseCase.js.map +1 -0
  38. package/admin/features/listModels/abstractions.d.ts +28 -0
  39. package/admin/features/listModels/abstractions.js +7 -0
  40. package/admin/features/listModels/abstractions.js.map +1 -0
  41. package/admin/features/listModels/feature.d.ts +3 -0
  42. package/admin/features/listModels/feature.js +21 -0
  43. package/admin/features/listModels/feature.js.map +1 -0
  44. package/admin/features/listModels/index.d.ts +2 -0
  45. package/admin/features/listModels/index.js +2 -0
  46. package/admin/features/settings/getSettings/GetSettingsGateway.d.ts +12 -0
  47. package/admin/features/settings/getSettings/GetSettingsGateway.js +29 -0
  48. package/admin/features/settings/getSettings/GetSettingsGateway.js.map +1 -0
  49. package/admin/features/settings/getSettings/GetSettingsRepository.d.ts +14 -0
  50. package/admin/features/settings/getSettings/GetSettingsRepository.js +31 -0
  51. package/admin/features/settings/getSettings/GetSettingsRepository.js.map +1 -0
  52. package/admin/features/settings/getSettings/GetSettingsUseCase.d.ts +11 -0
  53. package/admin/features/settings/getSettings/GetSettingsUseCase.js +18 -0
  54. package/admin/features/settings/getSettings/GetSettingsUseCase.js.map +1 -0
  55. package/admin/features/settings/getSettings/abstractions.d.ts +22 -0
  56. package/admin/features/settings/getSettings/abstractions.js +7 -0
  57. package/admin/features/settings/getSettings/abstractions.js.map +1 -0
  58. package/admin/features/settings/getSettings/feature.d.ts +3 -0
  59. package/admin/features/settings/getSettings/feature.js +21 -0
  60. package/admin/features/settings/getSettings/feature.js.map +1 -0
  61. package/admin/features/settings/getSettings/index.d.ts +2 -0
  62. package/admin/features/settings/getSettings/index.js +2 -0
  63. package/admin/features/settings/shared/SettingsCache.d.ts +10 -0
  64. package/admin/features/settings/shared/SettingsCache.js +19 -0
  65. package/admin/features/settings/shared/SettingsCache.js.map +1 -0
  66. package/admin/features/settings/shared/abstractions.d.ts +50 -0
  67. package/admin/features/settings/shared/abstractions.js +5 -0
  68. package/admin/features/settings/shared/abstractions.js.map +1 -0
  69. package/admin/features/settings/shared/feature.d.ts +3 -0
  70. package/admin/features/settings/shared/feature.js +17 -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 +2 -0
  74. package/admin/features/settings/updateSettings/UpdateSettingsGateway.d.ts +12 -0
  75. package/admin/features/settings/updateSettings/UpdateSettingsGateway.js +45 -0
  76. package/admin/features/settings/updateSettings/UpdateSettingsGateway.js.map +1 -0
  77. package/admin/features/settings/updateSettings/UpdateSettingsRepository.d.ts +13 -0
  78. package/admin/features/settings/updateSettings/UpdateSettingsRepository.js +23 -0
  79. package/admin/features/settings/updateSettings/UpdateSettingsRepository.js.map +1 -0
  80. package/admin/features/settings/updateSettings/UpdateSettingsUseCase.d.ts +11 -0
  81. package/admin/features/settings/updateSettings/UpdateSettingsUseCase.js +18 -0
  82. package/admin/features/settings/updateSettings/UpdateSettingsUseCase.js.map +1 -0
  83. package/admin/features/settings/updateSettings/abstractions.d.ts +22 -0
  84. package/admin/features/settings/updateSettings/abstractions.js +7 -0
  85. package/admin/features/settings/updateSettings/abstractions.js.map +1 -0
  86. package/admin/features/settings/updateSettings/feature.d.ts +3 -0
  87. package/admin/features/settings/updateSettings/feature.js +21 -0
  88. package/admin/features/settings/updateSettings/feature.js.map +1 -0
  89. package/admin/features/settings/updateSettings/index.d.ts +2 -0
  90. package/admin/features/settings/updateSettings/index.js +2 -0
  91. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPage.d.ts +4 -0
  92. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPage.js +50 -0
  93. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPage.js.map +1 -0
  94. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPresenter.d.ts +26 -0
  95. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPresenter.js +148 -0
  96. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPresenter.js.map +1 -0
  97. package/admin/presentation/AiPowerUpsSettings/abstractions.d.ts +18 -0
  98. package/admin/presentation/AiPowerUpsSettings/abstractions.js +5 -0
  99. package/admin/presentation/AiPowerUpsSettings/abstractions.js.map +1 -0
  100. package/admin/presentation/AiPowerUpsSettings/feature.d.ts +3 -0
  101. package/admin/presentation/AiPowerUpsSettings/feature.js +25 -0
  102. package/admin/presentation/AiPowerUpsSettings/feature.js.map +1 -0
  103. package/admin/presentation/AiPowerUpsSettings/index.d.ts +3 -0
  104. package/admin/presentation/AiPowerUpsSettings/index.js +3 -0
  105. package/admin/presentation/AiPowerUpsSettings/settingsGroup.d.ts +17 -0
  106. package/admin/presentation/AiPowerUpsSettings/settingsGroup.js +5 -0
  107. package/admin/presentation/AiPowerUpsSettings/settingsGroup.js.map +1 -0
  108. package/admin/presentation/AiPowerUpsSettings/useAiPowerUpsSettings.d.ts +4 -0
  109. package/admin/presentation/AiPowerUpsSettings/useAiPowerUpsSettings.js +27 -0
  110. package/admin/presentation/AiPowerUpsSettings/useAiPowerUpsSettings.js.map +1 -0
  111. package/admin/presentation/ProjectsSettings.d.ts +11 -0
  112. package/admin/presentation/ProjectsSettings.js +56 -0
  113. package/admin/presentation/ProjectsSettings.js.map +1 -0
  114. package/admin/presentation/ProvidersSettings.d.ts +16 -0
  115. package/admin/presentation/ProvidersSettings.js +46 -0
  116. package/admin/presentation/ProvidersSettings.js.map +1 -0
  117. package/admin/presentation/ReaderPersonasSettings.d.ts +11 -0
  118. package/admin/presentation/ReaderPersonasSettings.js +37 -0
  119. package/admin/presentation/ReaderPersonasSettings.js.map +1 -0
  120. package/admin/presentation/WbContentGeneration/Extension.d.ts +2 -0
  121. package/admin/presentation/WbContentGeneration/Extension.js +22 -0
  122. package/admin/presentation/WbContentGeneration/Extension.js.map +1 -0
  123. package/admin/presentation/WbContentGeneration/GenerateContentButton.d.ts +2 -0
  124. package/admin/presentation/WbContentGeneration/GenerateContentButton.js +19 -0
  125. package/admin/presentation/WbContentGeneration/GenerateContentButton.js.map +1 -0
  126. package/admin/presentation/WbContentGeneration/GenerateContentDialog.d.ts +21 -0
  127. package/admin/presentation/WbContentGeneration/GenerateContentDialog.js +105 -0
  128. package/admin/presentation/WbContentGeneration/GenerateContentDialog.js.map +1 -0
  129. package/admin/presentation/WbContentGeneration/GenerateContentPresenter.d.ts +38 -0
  130. package/admin/presentation/WbContentGeneration/GenerateContentPresenter.js +228 -0
  131. package/admin/presentation/WbContentGeneration/GenerateContentPresenter.js.map +1 -0
  132. package/admin/presentation/WbContentGeneration/PROCESS_IDEA.md +190 -0
  133. package/admin/presentation/WbContentGeneration/abstractions.d.ts +30 -0
  134. package/admin/presentation/WbContentGeneration/abstractions.js +5 -0
  135. package/admin/presentation/WbContentGeneration/abstractions.js.map +1 -0
  136. package/admin/presentation/WbContentGeneration/decompressGzipBase64.d.ts +1 -0
  137. package/admin/presentation/WbContentGeneration/decompressGzipBase64.js +13 -0
  138. package/admin/presentation/WbContentGeneration/decompressGzipBase64.js.map +1 -0
  139. package/admin/presentation/WbContentGeneration/feature.d.ts +3 -0
  140. package/admin/presentation/WbContentGeneration/feature.js +17 -0
  141. package/admin/presentation/WbContentGeneration/feature.js.map +1 -0
  142. package/admin/presentation/WriterPersonasSettings.d.ts +11 -0
  143. package/admin/presentation/WriterPersonasSettings.js +37 -0
  144. package/admin/presentation/WriterPersonasSettings.js.map +1 -0
  145. package/admin/routes.d.ts +4 -0
  146. package/admin/routes.js +10 -0
  147. package/admin/routes.js.map +1 -0
  148. package/api/Extension.d.ts +4 -0
  149. package/api/Extension.js +37 -0
  150. package/api/Extension.js.map +1 -0
  151. package/api/constants.d.ts +1 -0
  152. package/api/constants.js +4 -0
  153. package/api/constants.js.map +1 -0
  154. package/api/features/AiImageEnrichment/AiImageEnrichmentAfterCreateHandler.d.ts +11 -0
  155. package/api/features/AiImageEnrichment/AiImageEnrichmentAfterCreateHandler.js +27 -0
  156. package/api/features/AiImageEnrichment/AiImageEnrichmentAfterCreateHandler.js.map +1 -0
  157. package/api/features/AiImageEnrichment/AiImageEnrichmentTask.d.ts +34 -0
  158. package/api/features/AiImageEnrichment/AiImageEnrichmentTask.js +140 -0
  159. package/api/features/AiImageEnrichment/AiImageEnrichmentTask.js.map +1 -0
  160. package/api/features/AiImageEnrichment/feature.d.ts +4 -0
  161. package/api/features/AiImageEnrichment/feature.js +13 -0
  162. package/api/features/AiImageEnrichment/feature.js.map +1 -0
  163. package/api/features/AiPromptContext/AiPromptContextBuilder.d.ts +12 -0
  164. package/api/features/AiPromptContext/AiPromptContextBuilder.js +103 -0
  165. package/api/features/AiPromptContext/AiPromptContextBuilder.js.map +1 -0
  166. package/api/features/AiPromptContext/ProjectFileAssembler.d.ts +22 -0
  167. package/api/features/AiPromptContext/ProjectFileAssembler.js +76 -0
  168. package/api/features/AiPromptContext/ProjectFileAssembler.js.map +1 -0
  169. package/api/features/AiPromptContext/ProjectFileCache.d.ts +16 -0
  170. package/api/features/AiPromptContext/ProjectFileCache.js +61 -0
  171. package/api/features/AiPromptContext/ProjectFileCache.js.map +1 -0
  172. package/api/features/AiPromptContext/ProjectSection.d.ts +4 -0
  173. package/api/features/AiPromptContext/ProjectSection.js +35 -0
  174. package/api/features/AiPromptContext/ProjectSection.js.map +1 -0
  175. package/api/features/AiPromptContext/ReadProjectFileTool.d.ts +3 -0
  176. package/api/features/AiPromptContext/ReadProjectFileTool.js +36 -0
  177. package/api/features/AiPromptContext/ReadProjectFileTool.js.map +1 -0
  178. package/api/features/AiPromptContext/ReaderPersonaSection.d.ts +4 -0
  179. package/api/features/AiPromptContext/ReaderPersonaSection.js +10 -0
  180. package/api/features/AiPromptContext/ReaderPersonaSection.js.map +1 -0
  181. package/api/features/AiPromptContext/WriterPersonaSection.d.ts +4 -0
  182. package/api/features/AiPromptContext/WriterPersonaSection.js +10 -0
  183. package/api/features/AiPromptContext/WriterPersonaSection.js.map +1 -0
  184. package/api/features/AiPromptContext/abstractions.d.ts +68 -0
  185. package/api/features/AiPromptContext/abstractions.js +7 -0
  186. package/api/features/AiPromptContext/abstractions.js.map +1 -0
  187. package/api/features/AiPromptContext/feature.d.ts +4 -0
  188. package/api/features/AiPromptContext/feature.js +15 -0
  189. package/api/features/AiPromptContext/feature.js.map +1 -0
  190. package/api/features/AiPromptContext/index.d.ts +1 -0
  191. package/api/features/AiPromptContext/index.js +1 -0
  192. package/api/features/ExtractFrontmatter/ExtractFrontmatterBeforeCreateHandler.d.ts +11 -0
  193. package/api/features/ExtractFrontmatter/ExtractFrontmatterBeforeCreateHandler.js +34 -0
  194. package/api/features/ExtractFrontmatter/ExtractFrontmatterBeforeCreateHandler.js.map +1 -0
  195. package/api/features/ExtractFrontmatter/feature.d.ts +4 -0
  196. package/api/features/ExtractFrontmatter/feature.js +11 -0
  197. package/api/features/ExtractFrontmatter/feature.js.map +1 -0
  198. package/api/features/GetSettings/GetSettingsRepository.d.ts +16 -0
  199. package/api/features/GetSettings/GetSettingsRepository.js +40 -0
  200. package/api/features/GetSettings/GetSettingsRepository.js.map +1 -0
  201. package/api/features/GetSettings/GetSettingsUseCase.d.ts +10 -0
  202. package/api/features/GetSettings/GetSettingsUseCase.js +18 -0
  203. package/api/features/GetSettings/GetSettingsUseCase.js.map +1 -0
  204. package/api/features/GetSettings/abstractions.d.ts +16 -0
  205. package/api/features/GetSettings/abstractions.js +6 -0
  206. package/api/features/GetSettings/abstractions.js.map +1 -0
  207. package/api/features/GetSettings/feature.d.ts +4 -0
  208. package/api/features/GetSettings/feature.js +13 -0
  209. package/api/features/GetSettings/feature.js.map +1 -0
  210. package/api/features/GetSettings/index.d.ts +1 -0
  211. package/api/features/GetSettings/index.js +1 -0
  212. package/api/features/Projects/ProjectsHandler.d.ts +31 -0
  213. package/api/features/Projects/ProjectsHandler.js +103 -0
  214. package/api/features/Projects/ProjectsHandler.js.map +1 -0
  215. package/api/features/Projects/feature.d.ts +4 -0
  216. package/api/features/Projects/feature.js +11 -0
  217. package/api/features/Projects/feature.js.map +1 -0
  218. package/api/features/Projects/types.d.ts +50 -0
  219. package/api/features/Projects/types.js +0 -0
  220. package/api/features/Providers/ProvidersGraphQLMapper.d.ts +21 -0
  221. package/api/features/Providers/ProvidersGraphQLMapper.js +39 -0
  222. package/api/features/Providers/ProvidersGraphQLMapper.js.map +1 -0
  223. package/api/features/Providers/ProvidersHandler.d.ts +26 -0
  224. package/api/features/Providers/ProvidersHandler.js +79 -0
  225. package/api/features/Providers/ProvidersHandler.js.map +1 -0
  226. package/api/features/Providers/feature.d.ts +4 -0
  227. package/api/features/Providers/feature.js +13 -0
  228. package/api/features/Providers/feature.js.map +1 -0
  229. package/api/features/Providers/index.d.ts +1 -0
  230. package/api/features/Providers/index.js +0 -0
  231. package/api/features/Providers/types.d.ts +29 -0
  232. package/api/features/Providers/types.js +0 -0
  233. package/api/features/ReaderPersonas/ReaderPersonasHandler.d.ts +20 -0
  234. package/api/features/ReaderPersonas/ReaderPersonasHandler.js +43 -0
  235. package/api/features/ReaderPersonas/ReaderPersonasHandler.js.map +1 -0
  236. package/api/features/ReaderPersonas/feature.d.ts +4 -0
  237. package/api/features/ReaderPersonas/feature.js +11 -0
  238. package/api/features/ReaderPersonas/feature.js.map +1 -0
  239. package/api/features/ReaderPersonas/index.d.ts +2 -0
  240. package/api/features/ReaderPersonas/index.js +1 -0
  241. package/api/features/ReaderPersonas/types.d.ts +24 -0
  242. package/api/features/ReaderPersonas/types.js +0 -0
  243. package/api/features/UpdateSettings/UpdateSettingsRepository.d.ts +16 -0
  244. package/api/features/UpdateSettings/UpdateSettingsRepository.js +71 -0
  245. package/api/features/UpdateSettings/UpdateSettingsRepository.js.map +1 -0
  246. package/api/features/UpdateSettings/UpdateSettingsUseCase.d.ts +13 -0
  247. package/api/features/UpdateSettings/UpdateSettingsUseCase.js +30 -0
  248. package/api/features/UpdateSettings/UpdateSettingsUseCase.js.map +1 -0
  249. package/api/features/UpdateSettings/abstractions.d.ts +36 -0
  250. package/api/features/UpdateSettings/abstractions.js +8 -0
  251. package/api/features/UpdateSettings/abstractions.js.map +1 -0
  252. package/api/features/UpdateSettings/errors.d.ts +10 -0
  253. package/api/features/UpdateSettings/errors.js +14 -0
  254. package/api/features/UpdateSettings/errors.js.map +1 -0
  255. package/api/features/UpdateSettings/events.d.ts +10 -0
  256. package/api/features/UpdateSettings/events.js +21 -0
  257. package/api/features/UpdateSettings/events.js.map +1 -0
  258. package/api/features/UpdateSettings/feature.d.ts +4 -0
  259. package/api/features/UpdateSettings/feature.js +13 -0
  260. package/api/features/UpdateSettings/feature.js.map +1 -0
  261. package/api/features/UpdateSettings/index.d.ts +1 -0
  262. package/api/features/UpdateSettings/index.js +1 -0
  263. package/api/features/WbGeneratePageContent/WbGeneratePageContentTask.d.ts +33 -0
  264. package/api/features/WbGeneratePageContent/WbGeneratePageContentTask.js +75 -0
  265. package/api/features/WbGeneratePageContent/WbGeneratePageContentTask.js.map +1 -0
  266. package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.d.ts +21 -0
  267. package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.js +106 -0
  268. package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.js.map +1 -0
  269. package/api/features/WbGeneratePageContent/abstractions.d.ts +28 -0
  270. package/api/features/WbGeneratePageContent/abstractions.js +5 -0
  271. package/api/features/WbGeneratePageContent/abstractions.js.map +1 -0
  272. package/api/features/WbGeneratePageContent/buildPrompt.d.ts +1 -0
  273. package/api/features/WbGeneratePageContent/buildPrompt.js +143 -0
  274. package/api/features/WbGeneratePageContent/buildPrompt.js.map +1 -0
  275. package/api/features/WbGeneratePageContent/feature.d.ts +4 -0
  276. package/api/features/WbGeneratePageContent/feature.js +13 -0
  277. package/api/features/WbGeneratePageContent/feature.js.map +1 -0
  278. package/api/features/WbGeneratePageContent/index.d.ts +1 -0
  279. package/api/features/WbGeneratePageContent/index.js +1 -0
  280. package/api/features/WriterPersonas/WriterPersonasHandler.d.ts +20 -0
  281. package/api/features/WriterPersonas/WriterPersonasHandler.js +43 -0
  282. package/api/features/WriterPersonas/WriterPersonasHandler.js.map +1 -0
  283. package/api/features/WriterPersonas/feature.d.ts +4 -0
  284. package/api/features/WriterPersonas/feature.js +11 -0
  285. package/api/features/WriterPersonas/feature.js.map +1 -0
  286. package/api/features/WriterPersonas/index.d.ts +2 -0
  287. package/api/features/WriterPersonas/index.js +1 -0
  288. package/api/features/WriterPersonas/types.d.ts +24 -0
  289. package/api/features/WriterPersonas/types.js +0 -0
  290. package/api/features/shared/SettingsCache.d.ts +12 -0
  291. package/api/features/shared/SettingsCache.js +22 -0
  292. package/api/features/shared/SettingsCache.js.map +1 -0
  293. package/api/features/shared/abstractions.d.ts +33 -0
  294. package/api/features/shared/abstractions.js +7 -0
  295. package/api/features/shared/abstractions.js.map +1 -0
  296. package/api/features/shared/index.d.ts +3 -0
  297. package/api/features/shared/index.js +1 -0
  298. package/api/graphql/AiPowerUpsSettingsGraphQLMapper.d.ts +13 -0
  299. package/api/graphql/AiPowerUpsSettingsGraphQLMapper.js +44 -0
  300. package/api/graphql/AiPowerUpsSettingsGraphQLMapper.js.map +1 -0
  301. package/api/graphql/BaseGraphQLSchema.d.ts +8 -0
  302. package/api/graphql/BaseGraphQLSchema.js +133 -0
  303. package/api/graphql/BaseGraphQLSchema.js.map +1 -0
  304. package/api/graphql/abstractions.d.ts +9 -0
  305. package/api/graphql/abstractions.js +5 -0
  306. package/api/graphql/abstractions.js.map +1 -0
  307. package/api/types.d.ts +5 -0
  308. package/api/types.js +3 -0
  309. package/index.d.ts +1 -0
  310. package/index.js +1 -0
  311. package/package.json +60 -0
@@ -0,0 +1,10 @@
1
+ class ReaderPersonaSection {
2
+ static format(persona) {
3
+ let section = `### Reader Persona (Target Audience)\n\nYou are writing for "${persona.name}": ${persona.description}`;
4
+ if (persona.style) section += `\nExpected tone/style: ${persona.style}`;
5
+ return section;
6
+ }
7
+ }
8
+ export { ReaderPersonaSection };
9
+
10
+ //# sourceMappingURL=ReaderPersonaSection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/AiPromptContext/ReaderPersonaSection.js","sources":["../../../../src/api/features/AiPromptContext/ReaderPersonaSection.ts"],"sourcesContent":["import type { ResolvedPersona } from \"./abstractions.js\";\n\nexport class ReaderPersonaSection {\n static format(persona: ResolvedPersona): string {\n let section = `### Reader Persona (Target Audience)\\n\\nYou are writing for \"${persona.name}\": ${persona.description}`;\n\n if (persona.style) {\n section += `\\nExpected tone/style: ${persona.style}`;\n }\n\n return section;\n }\n}\n"],"names":["ReaderPersonaSection","persona","section"],"mappings":"AAEO,MAAMA;IACT,OAAO,OAAOC,OAAwB,EAAU;QAC5C,IAAIC,UAAU,CAAC,6DAA6D,EAAED,QAAQ,IAAI,CAAC,GAAG,EAAEA,QAAQ,WAAW,EAAE;QAErH,IAAIA,QAAQ,KAAK,EACbC,WAAW,CAAC,uBAAuB,EAAED,QAAQ,KAAK,EAAE;QAGxD,OAAOC;IACX;AACJ"}
@@ -0,0 +1,4 @@
1
+ import type { ResolvedPersona } from "./abstractions.js";
2
+ export declare class WriterPersonaSection {
3
+ static format(persona: ResolvedPersona): string;
4
+ }
@@ -0,0 +1,10 @@
1
+ class WriterPersonaSection {
2
+ static format(persona) {
3
+ let section = `### Writer Persona\n\nYou are writing as "${persona.name}": ${persona.description}`;
4
+ if (persona.style) section += `\nStyle: ${persona.style}`;
5
+ return section;
6
+ }
7
+ }
8
+ export { WriterPersonaSection };
9
+
10
+ //# sourceMappingURL=WriterPersonaSection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/AiPromptContext/WriterPersonaSection.js","sources":["../../../../src/api/features/AiPromptContext/WriterPersonaSection.ts"],"sourcesContent":["import type { ResolvedPersona } from \"./abstractions.js\";\n\nexport class WriterPersonaSection {\n static format(persona: ResolvedPersona): string {\n let section = `### Writer Persona\\n\\nYou are writing as \"${persona.name}\": ${persona.description}`;\n\n if (persona.style) {\n section += `\\nStyle: ${persona.style}`;\n }\n\n return section;\n }\n}\n"],"names":["WriterPersonaSection","persona","section"],"mappings":"AAEO,MAAMA;IACT,OAAO,OAAOC,OAAwB,EAAU;QAC5C,IAAIC,UAAU,CAAC,0CAA0C,EAAED,QAAQ,IAAI,CAAC,GAAG,EAAEA,QAAQ,WAAW,EAAE;QAElG,IAAIA,QAAQ,KAAK,EACbC,WAAW,CAAC,SAAS,EAAED,QAAQ,KAAK,EAAE;QAG1C,OAAOC;IACX;AACJ"}
@@ -0,0 +1,68 @@
1
+ export interface IProjectFileCache {
2
+ get(projectId: string, version: number): Promise<{
3
+ files: ProjectFileContent[];
4
+ hit: boolean;
5
+ }>;
6
+ set(projectId: string, version: number, files: ProjectFileContent[]): Promise<void>;
7
+ }
8
+ export declare const ProjectFileCache: import("@webiny/di").Abstraction<IProjectFileCache>;
9
+ export declare namespace ProjectFileCache {
10
+ type Interface = IProjectFileCache;
11
+ }
12
+ export interface IProjectFileAssembler {
13
+ execute(projectId: string, version: number, files: Array<{
14
+ id: string;
15
+ name: string;
16
+ mimeType: string;
17
+ }>, warnings: string[]): Promise<{
18
+ files: ProjectFileContent[];
19
+ cacheHit: boolean;
20
+ }>;
21
+ }
22
+ export declare const ProjectFileAssembler: import("@webiny/di").Abstraction<IProjectFileAssembler>;
23
+ export declare namespace ProjectFileAssembler {
24
+ type Interface = IProjectFileAssembler;
25
+ }
26
+ export interface AiPromptContextParams {
27
+ projectId?: string | null;
28
+ readerPersonaId?: string | null;
29
+ writerPersonaId?: string | null;
30
+ excludedFileIds?: string[] | null;
31
+ }
32
+ export interface ProjectFileContent {
33
+ id: string;
34
+ name: string;
35
+ content: string;
36
+ description?: string;
37
+ tokenCount: number;
38
+ }
39
+ export interface ResolvedProject {
40
+ name: string;
41
+ instructions?: string;
42
+ files: ProjectFileContent[];
43
+ totalTokens: number;
44
+ }
45
+ export interface ResolvedPersona {
46
+ name: string;
47
+ description: string;
48
+ style?: string;
49
+ }
50
+ export interface AiPromptContext {
51
+ project?: ResolvedProject;
52
+ readerPersona?: ResolvedPersona;
53
+ writerPersona?: ResolvedPersona;
54
+ allProjectFiles: ProjectFileContent[];
55
+ excludedFileIds: Set<string>;
56
+ cacheHit: boolean;
57
+ warnings: string[];
58
+ toString(): string;
59
+ }
60
+ export interface IAiPromptContextBuilder {
61
+ execute(params: AiPromptContextParams): Promise<AiPromptContext>;
62
+ }
63
+ export declare const AiPromptContextBuilder: import("@webiny/di").Abstraction<IAiPromptContextBuilder>;
64
+ export declare namespace AiPromptContextBuilder {
65
+ type Interface = IAiPromptContextBuilder;
66
+ type Params = AiPromptContextParams;
67
+ type Context = AiPromptContext;
68
+ }
@@ -0,0 +1,7 @@
1
+ import { createAbstraction } from "@webiny/feature/api";
2
+ const ProjectFileCache = createAbstraction("ProjectFileCache");
3
+ const ProjectFileAssembler = createAbstraction("ProjectFileAssembler");
4
+ const AiPromptContextBuilder = createAbstraction("AiPowerUpsPromptContextBuilder");
5
+ export { AiPromptContextBuilder, ProjectFileAssembler, ProjectFileCache };
6
+
7
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/AiPromptContext/abstractions.js","sources":["../../../../src/api/features/AiPromptContext/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\n\n// ============================================================================\n// ProjectFileCache\n// ============================================================================\n\nexport interface IProjectFileCache {\n get(projectId: string, version: number): Promise<{ files: ProjectFileContent[]; hit: boolean }>;\n set(projectId: string, version: number, files: ProjectFileContent[]): Promise<void>;\n}\n\nexport const ProjectFileCache = createAbstraction<IProjectFileCache>(\"ProjectFileCache\");\n\nexport namespace ProjectFileCache {\n export type Interface = IProjectFileCache;\n}\n\n// ============================================================================\n// ProjectFileAssembler\n// ============================================================================\n\nexport interface IProjectFileAssembler {\n execute(\n projectId: string,\n version: number,\n files: Array<{ id: string; name: string; mimeType: string }>,\n warnings: string[]\n ): Promise<{ files: ProjectFileContent[]; cacheHit: boolean }>;\n}\n\nexport const ProjectFileAssembler =\n createAbstraction<IProjectFileAssembler>(\"ProjectFileAssembler\");\n\nexport namespace ProjectFileAssembler {\n export type Interface = IProjectFileAssembler;\n}\n\n// ============================================================================\n// AiPromptContext\n// ============================================================================\n\nexport interface AiPromptContextParams {\n projectId?: string | null;\n readerPersonaId?: string | null;\n writerPersonaId?: string | null;\n excludedFileIds?: string[] | null;\n}\n\nexport interface ProjectFileContent {\n id: string;\n name: string;\n content: string;\n description?: string;\n tokenCount: number;\n}\n\nexport interface ResolvedProject {\n name: string;\n instructions?: string;\n files: ProjectFileContent[];\n totalTokens: number;\n}\n\nexport interface ResolvedPersona {\n name: string;\n description: string;\n style?: string;\n}\n\nexport interface AiPromptContext {\n project?: ResolvedProject;\n readerPersona?: ResolvedPersona;\n writerPersona?: ResolvedPersona;\n allProjectFiles: ProjectFileContent[];\n excludedFileIds: Set<string>;\n cacheHit: boolean;\n warnings: string[];\n toString(): string;\n}\n\nexport interface IAiPromptContextBuilder {\n execute(params: AiPromptContextParams): Promise<AiPromptContext>;\n}\n\nexport const AiPromptContextBuilder = createAbstraction<IAiPromptContextBuilder>(\n \"AiPowerUpsPromptContextBuilder\"\n);\n\nexport namespace AiPromptContextBuilder {\n export type Interface = IAiPromptContextBuilder;\n export type Params = AiPromptContextParams;\n export type Context = AiPromptContext;\n}\n"],"names":["ProjectFileCache","createAbstraction","ProjectFileAssembler","AiPromptContextBuilder"],"mappings":";AAWO,MAAMA,mBAAmBC,kBAAqC;AAmB9D,MAAMC,uBACTD,kBAAyC;AAqDtC,MAAME,yBAAyBF,kBAClC"}
@@ -0,0 +1,4 @@
1
+ export declare const AiPromptContextFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -0,0 +1,15 @@
1
+ import { createFeature } from "@webiny/feature/api";
2
+ import { ProjectFileCache } from "./ProjectFileCache.js";
3
+ import { ProjectFileAssembler } from "./ProjectFileAssembler.js";
4
+ import { AiPromptContextBuilder } from "./AiPromptContextBuilder.js";
5
+ const AiPromptContextFeature = createFeature({
6
+ name: "AiPowerUps/AiPromptContext",
7
+ register (container) {
8
+ container.register(ProjectFileCache);
9
+ container.register(ProjectFileAssembler);
10
+ container.register(AiPromptContextBuilder);
11
+ }
12
+ });
13
+ export { AiPromptContextFeature };
14
+
15
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/AiPromptContext/feature.js","sources":["../../../../src/api/features/AiPromptContext/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { ProjectFileCache } from \"./ProjectFileCache.js\";\nimport { ProjectFileAssembler } from \"./ProjectFileAssembler.js\";\nimport { AiPromptContextBuilder } from \"./AiPromptContextBuilder.js\";\n\nexport const AiPromptContextFeature = createFeature({\n name: \"AiPowerUps/AiPromptContext\",\n register(container) {\n container.register(ProjectFileCache);\n container.register(ProjectFileAssembler);\n container.register(AiPromptContextBuilder);\n }\n});\n"],"names":["AiPromptContextFeature","createFeature","container","ProjectFileCache","ProjectFileAssembler","AiPromptContextBuilder"],"mappings":";;;;AAKO,MAAMA,yBAAyBC,cAAc;IAChD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;QACnBD,UAAU,QAAQ,CAACE;QACnBF,UAAU,QAAQ,CAACG;IACvB;AACJ"}
@@ -0,0 +1 @@
1
+ export { AiPromptContextBuilder, type ResolvedProject, type ResolvedPersona, type ProjectFileContent } from "./abstractions.js";
@@ -0,0 +1 @@
1
+ export { AiPromptContextBuilder } from "./abstractions.js";
@@ -0,0 +1,11 @@
1
+ import { FileBeforeCreateEventHandler } from "@webiny/api-file-manager/features/file/CreateFile/events.js";
2
+ import { GetFileContentsByKeyUseCase } from "@webiny/api-file-manager/features/file/GetFileContentsByKey/index.js";
3
+ declare class ExtractFrontmatterBeforeCreateHandlerImpl implements FileBeforeCreateEventHandler.Interface {
4
+ private getFileContentsByKey;
5
+ constructor(getFileContentsByKey: GetFileContentsByKeyUseCase.Interface);
6
+ handle(event: FileBeforeCreateEventHandler.Event): Promise<void>;
7
+ }
8
+ export declare const ExtractFrontmatterBeforeCreateHandler: typeof ExtractFrontmatterBeforeCreateHandlerImpl & {
9
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher").IEventHandler<import("@webiny/api-file-manager/features/file/CreateFile/events.js").FileBeforeCreateEvent>>;
10
+ };
11
+ export {};
@@ -0,0 +1,34 @@
1
+ import front_matter from "front-matter";
2
+ import { FileBeforeCreateEventHandler } from "@webiny/api-file-manager/features/file/CreateFile/events.js";
3
+ import { GetFileContentsByKeyUseCase } from "@webiny/api-file-manager/features/file/GetFileContentsByKey/index.js";
4
+ function isMarkdownFile(name) {
5
+ return name.endsWith(".md") || name.endsWith(".mdx");
6
+ }
7
+ class ExtractFrontmatterBeforeCreateHandlerImpl {
8
+ constructor(getFileContentsByKey){
9
+ this.getFileContentsByKey = getFileContentsByKey;
10
+ }
11
+ async handle(event) {
12
+ const { file } = event.payload;
13
+ if (!isMarkdownFile(file.name)) return;
14
+ if (file.description) return;
15
+ const result = await this.getFileContentsByKey.execute(file.key);
16
+ if (result.isFail()) return;
17
+ const content = result.value.buffer.toString("utf-8");
18
+ try {
19
+ const parsed = front_matter(content);
20
+ if (parsed.attributes.description) file.description = parsed.attributes.description;
21
+ else if (parsed.attributes.title) file.description = parsed.attributes.title;
22
+ if (parsed.attributes.tags) file.tags = parsed.attributes.tags;
23
+ } catch {}
24
+ }
25
+ }
26
+ const ExtractFrontmatterBeforeCreateHandler = FileBeforeCreateEventHandler.createImplementation({
27
+ implementation: ExtractFrontmatterBeforeCreateHandlerImpl,
28
+ dependencies: [
29
+ GetFileContentsByKeyUseCase
30
+ ]
31
+ });
32
+ export { ExtractFrontmatterBeforeCreateHandler };
33
+
34
+ //# sourceMappingURL=ExtractFrontmatterBeforeCreateHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/ExtractFrontmatter/ExtractFrontmatterBeforeCreateHandler.js","sources":["../../../../src/api/features/ExtractFrontmatter/ExtractFrontmatterBeforeCreateHandler.ts"],"sourcesContent":["import frontmatter from \"front-matter\";\nimport { FileBeforeCreateEventHandler } from \"@webiny/api-file-manager/features/file/CreateFile/events.js\";\nimport { GetFileContentsByKeyUseCase } from \"@webiny/api-file-manager/features/file/GetFileContentsByKey/index.js\";\n\nfunction isMarkdownFile(name: string): boolean {\n return name.endsWith(\".md\") || name.endsWith(\".mdx\");\n}\n\ntype Frontmatter = { description?: string; title?: string; tags?: string[] };\n\nclass ExtractFrontmatterBeforeCreateHandlerImpl implements FileBeforeCreateEventHandler.Interface {\n constructor(private getFileContentsByKey: GetFileContentsByKeyUseCase.Interface) {}\n\n async handle(event: FileBeforeCreateEventHandler.Event): Promise<void> {\n const { file } = event.payload;\n\n if (!isMarkdownFile(file.name)) {\n return;\n }\n\n if (file.description) {\n return;\n }\n\n const result = await this.getFileContentsByKey.execute(file.key);\n if (result.isFail()) {\n return;\n }\n\n const content = result.value.buffer.toString(\"utf-8\");\n\n try {\n const parsed = frontmatter<Frontmatter>(content);\n // Description takes precedence over title.\n if (parsed.attributes.description) {\n file.description = parsed.attributes.description;\n } else if (parsed.attributes.title) {\n file.description = parsed.attributes.title;\n }\n\n if (parsed.attributes.tags) {\n file.tags = parsed.attributes.tags;\n }\n } catch {\n // Malformed frontmatter — skip silently.\n }\n }\n}\n\nexport const ExtractFrontmatterBeforeCreateHandler =\n FileBeforeCreateEventHandler.createImplementation({\n implementation: ExtractFrontmatterBeforeCreateHandlerImpl,\n dependencies: [GetFileContentsByKeyUseCase]\n });\n"],"names":["isMarkdownFile","name","ExtractFrontmatterBeforeCreateHandlerImpl","getFileContentsByKey","event","file","result","content","parsed","frontmatter","ExtractFrontmatterBeforeCreateHandler","FileBeforeCreateEventHandler","GetFileContentsByKeyUseCase"],"mappings":";;;AAIA,SAASA,eAAeC,IAAY;IAChC,OAAOA,KAAK,QAAQ,CAAC,UAAUA,KAAK,QAAQ,CAAC;AACjD;AAIA,MAAMC;IACF,YAAoBC,oBAA2D,CAAE;aAA7DA,oBAAoB,GAApBA;IAA8D;IAElF,MAAM,OAAOC,KAAyC,EAAiB;QACnE,MAAM,EAAEC,IAAI,EAAE,GAAGD,MAAM,OAAO;QAE9B,IAAI,CAACJ,eAAeK,KAAK,IAAI,GACzB;QAGJ,IAAIA,KAAK,WAAW,EAChB;QAGJ,MAAMC,SAAS,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAACD,KAAK,GAAG;QAC/D,IAAIC,OAAO,MAAM,IACb;QAGJ,MAAMC,UAAUD,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;QAE7C,IAAI;YACA,MAAME,SAASC,aAAyBF;YAExC,IAAIC,OAAO,UAAU,CAAC,WAAW,EAC7BH,KAAK,WAAW,GAAGG,OAAO,UAAU,CAAC,WAAW;iBAC7C,IAAIA,OAAO,UAAU,CAAC,KAAK,EAC9BH,KAAK,WAAW,GAAGG,OAAO,UAAU,CAAC,KAAK;YAG9C,IAAIA,OAAO,UAAU,CAAC,IAAI,EACtBH,KAAK,IAAI,GAAGG,OAAO,UAAU,CAAC,IAAI;QAE1C,EAAE,OAAM,CAER;IACJ;AACJ;AAEO,MAAME,wCACTC,6BAA6B,oBAAoB,CAAC;IAC9C,gBAAgBT;IAChB,cAAc;QAACU;KAA4B;AAC/C"}
@@ -0,0 +1,4 @@
1
+ export declare const ExtractFrontmatterFeature: {
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 { ExtractFrontmatterBeforeCreateHandler } from "./ExtractFrontmatterBeforeCreateHandler.js";
3
+ const ExtractFrontmatterFeature = createFeature({
4
+ name: "AiPowerUps/ExtractFrontmatter",
5
+ register (container) {
6
+ container.register(ExtractFrontmatterBeforeCreateHandler);
7
+ }
8
+ });
9
+ export { ExtractFrontmatterFeature };
10
+
11
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/ExtractFrontmatter/feature.js","sources":["../../../../src/api/features/ExtractFrontmatter/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { ExtractFrontmatterBeforeCreateHandler } from \"./ExtractFrontmatterBeforeCreateHandler.js\";\n\nexport const ExtractFrontmatterFeature = createFeature({\n name: \"AiPowerUps/ExtractFrontmatter\",\n register(container) {\n container.register(ExtractFrontmatterBeforeCreateHandler);\n }\n});\n"],"names":["ExtractFrontmatterFeature","createFeature","container","ExtractFrontmatterBeforeCreateHandler"],"mappings":";;AAGO,MAAMA,4BAA4BC,cAAc;IACnD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
@@ -0,0 +1,16 @@
1
+ import { Result } from "@webiny/feature/api";
2
+ import { KeyValueStore } from "@webiny/api-core/features/keyValueStore/index.js";
3
+ import { AiPowerUpsSettingsGroupHandler, AiPowerUpsSettingsCache } from "../../../api/features/shared/index.js";
4
+ import { GetSettingsRepository } from "./abstractions.js";
5
+ import type { IAiPowerUpsSettings } from "../../../api/types.js";
6
+ declare class GetSettingsRepositoryImpl implements GetSettingsRepository.Interface {
7
+ private keyValueStore;
8
+ private handlers;
9
+ private cache;
10
+ constructor(keyValueStore: KeyValueStore.Interface, handlers: AiPowerUpsSettingsGroupHandler.Interface[], cache: AiPowerUpsSettingsCache.Interface);
11
+ get(): Promise<Result<IAiPowerUpsSettings>>;
12
+ }
13
+ export declare const GetSettingsRepositoryImplementation: typeof GetSettingsRepositoryImpl & {
14
+ __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IGetSettingsRepository>;
15
+ };
16
+ export {};
@@ -0,0 +1,40 @@
1
+ import { Result } from "@webiny/feature/api";
2
+ import { KeyValueStore } from "@webiny/api-core/features/keyValueStore/index.js";
3
+ import { AiPowerUpsSettingsCache, AiPowerUpsSettingsGroupHandler } from "../shared/index.js";
4
+ import { GetSettingsRepository } from "./abstractions.js";
5
+ import { AI_POWER_UPS_SETTINGS } from "../../constants.js";
6
+ class GetSettingsRepositoryImpl {
7
+ constructor(keyValueStore, handlers, cache){
8
+ this.keyValueStore = keyValueStore;
9
+ this.handlers = handlers;
10
+ this.cache = cache;
11
+ }
12
+ async get() {
13
+ const cached = this.cache.get();
14
+ if (cached) return Result.ok(cached.mapped);
15
+ const storeResult = await this.keyValueStore.get(AI_POWER_UPS_SETTINGS);
16
+ const raw = storeResult.isOk() && storeResult.value ? storeResult.value : {};
17
+ const result = {};
18
+ for (const handler of this.handlers)result[handler.name] = handler.mapFromStorage(raw[handler.name]);
19
+ for (const key of Object.keys(raw))if (!(key in result)) result[key] = raw[key];
20
+ const mapped = result;
21
+ this.cache.set(raw, mapped);
22
+ return Result.ok(mapped);
23
+ }
24
+ }
25
+ const GetSettingsRepositoryImplementation = GetSettingsRepository.createImplementation({
26
+ implementation: GetSettingsRepositoryImpl,
27
+ dependencies: [
28
+ KeyValueStore,
29
+ [
30
+ AiPowerUpsSettingsGroupHandler,
31
+ {
32
+ multiple: true
33
+ }
34
+ ],
35
+ AiPowerUpsSettingsCache
36
+ ]
37
+ });
38
+ export { GetSettingsRepositoryImplementation };
39
+
40
+ //# sourceMappingURL=GetSettingsRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/GetSettings/GetSettingsRepository.js","sources":["../../../../src/api/features/GetSettings/GetSettingsRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { KeyValueStore } from \"@webiny/api-core/features/keyValueStore/index.js\";\nimport {\n AiPowerUpsSettingsGroupHandler,\n AiPowerUpsSettingsCache\n} from \"~/api/features/shared/index.js\";\nimport { GetSettingsRepository } from \"./abstractions.js\";\nimport type { IAiPowerUpsSettings } from \"~/api/types.js\";\nimport { AI_POWER_UPS_SETTINGS } from \"~/api/constants.js\";\n\nclass GetSettingsRepositoryImpl implements GetSettingsRepository.Interface {\n constructor(\n private keyValueStore: KeyValueStore.Interface,\n private handlers: AiPowerUpsSettingsGroupHandler.Interface[],\n private cache: AiPowerUpsSettingsCache.Interface\n ) {}\n\n async get(): Promise<Result<IAiPowerUpsSettings>> {\n const cached = this.cache.get();\n if (cached) {\n return Result.ok(cached.mapped);\n }\n\n const storeResult =\n await this.keyValueStore.get<Record<string, unknown>>(AI_POWER_UPS_SETTINGS);\n\n const raw: Record<string, unknown> =\n storeResult.isOk() && storeResult.value ? storeResult.value : {};\n\n const result: Record<string, unknown> = {};\n\n for (const handler of this.handlers) {\n result[handler.name] = handler.mapFromStorage(raw[handler.name]);\n }\n\n for (const key of Object.keys(raw)) {\n if (!(key in result)) {\n result[key] = raw[key];\n }\n }\n\n const mapped = result as unknown as IAiPowerUpsSettings;\n this.cache.set(raw, mapped);\n\n return Result.ok(mapped);\n }\n}\n\nexport const GetSettingsRepositoryImplementation = GetSettingsRepository.createImplementation({\n implementation: GetSettingsRepositoryImpl,\n dependencies: [\n KeyValueStore,\n [AiPowerUpsSettingsGroupHandler, { multiple: true }],\n AiPowerUpsSettingsCache\n ]\n});\n"],"names":["GetSettingsRepositoryImpl","keyValueStore","handlers","cache","cached","Result","storeResult","AI_POWER_UPS_SETTINGS","raw","result","handler","key","Object","mapped","GetSettingsRepositoryImplementation","GetSettingsRepository","KeyValueStore","AiPowerUpsSettingsGroupHandler","AiPowerUpsSettingsCache"],"mappings":";;;;;AAUA,MAAMA;IACF,YACYC,aAAsC,EACtCC,QAAoD,EACpDC,KAAwC,CAClD;aAHUF,aAAa,GAAbA;aACAC,QAAQ,GAARA;aACAC,KAAK,GAALA;IACT;IAEH,MAAM,MAA4C;QAC9C,MAAMC,SAAS,IAAI,CAAC,KAAK,CAAC,GAAG;QAC7B,IAAIA,QACA,OAAOC,OAAO,EAAE,CAACD,OAAO,MAAM;QAGlC,MAAME,cACF,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAA0BC;QAE1D,MAAMC,MACFF,YAAY,IAAI,MAAMA,YAAY,KAAK,GAAGA,YAAY,KAAK,GAAG,CAAC;QAEnE,MAAMG,SAAkC,CAAC;QAEzC,KAAK,MAAMC,WAAW,IAAI,CAAC,QAAQ,CAC/BD,MAAM,CAACC,QAAQ,IAAI,CAAC,GAAGA,QAAQ,cAAc,CAACF,GAAG,CAACE,QAAQ,IAAI,CAAC;QAGnE,KAAK,MAAMC,OAAOC,OAAO,IAAI,CAACJ,KAC1B,IAAI,CAAEG,CAAAA,OAAOF,MAAK,GACdA,MAAM,CAACE,IAAI,GAAGH,GAAG,CAACG,IAAI;QAI9B,MAAME,SAASJ;QACf,IAAI,CAAC,KAAK,CAAC,GAAG,CAACD,KAAKK;QAEpB,OAAOR,OAAO,EAAE,CAACQ;IACrB;AACJ;AAEO,MAAMC,sCAAsCC,sBAAsB,oBAAoB,CAAC;IAC1F,gBAAgBf;IAChB,cAAc;QACVgB;QACA;YAACC;YAAgC;gBAAE,UAAU;YAAK;SAAE;QACpDC;KACH;AACL"}
@@ -0,0 +1,10 @@
1
+ import { GetSettingsUseCase, GetSettingsRepository } from "./abstractions.js";
2
+ declare class GetSettingsUseCaseImpl implements GetSettingsUseCase.Interface {
3
+ private repository;
4
+ constructor(repository: GetSettingsRepository.Interface);
5
+ execute(): Promise<import("@webiny/feature/api").Result<import("~/api/types.js").IAiPowerUpsSettings, never>>;
6
+ }
7
+ export declare const GetSettingsUseCaseImplementation: typeof GetSettingsUseCaseImpl & {
8
+ __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IGetSettingsUseCase>;
9
+ };
10
+ export {};
@@ -0,0 +1,18 @@
1
+ import { GetSettingsRepository, GetSettingsUseCase } from "./abstractions.js";
2
+ class GetSettingsUseCaseImpl {
3
+ constructor(repository){
4
+ this.repository = repository;
5
+ }
6
+ execute() {
7
+ return this.repository.get();
8
+ }
9
+ }
10
+ const GetSettingsUseCaseImplementation = GetSettingsUseCase.createImplementation({
11
+ implementation: GetSettingsUseCaseImpl,
12
+ dependencies: [
13
+ GetSettingsRepository
14
+ ]
15
+ });
16
+ export { GetSettingsUseCaseImplementation };
17
+
18
+ //# sourceMappingURL=GetSettingsUseCase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/GetSettings/GetSettingsUseCase.js","sources":["../../../../src/api/features/GetSettings/GetSettingsUseCase.ts"],"sourcesContent":["import { GetSettingsUseCase, GetSettingsRepository } from \"./abstractions.js\";\n\nclass GetSettingsUseCaseImpl implements GetSettingsUseCase.Interface {\n constructor(private repository: GetSettingsRepository.Interface) {}\n\n execute() {\n return this.repository.get();\n }\n}\n\nexport const GetSettingsUseCaseImplementation = GetSettingsUseCase.createImplementation({\n implementation: GetSettingsUseCaseImpl,\n dependencies: [GetSettingsRepository]\n});\n"],"names":["GetSettingsUseCaseImpl","repository","GetSettingsUseCaseImplementation","GetSettingsUseCase","GetSettingsRepository"],"mappings":";AAEA,MAAMA;IACF,YAAoBC,UAA2C,CAAE;aAA7CA,UAAU,GAAVA;IAA8C;IAElE,UAAU;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG;IAC9B;AACJ;AAEO,MAAMC,mCAAmCC,mBAAmB,oBAAoB,CAAC;IACpF,gBAAgBH;IAChB,cAAc;QAACI;KAAsB;AACzC"}
@@ -0,0 +1,16 @@
1
+ import { Result } from "@webiny/feature/api";
2
+ import type { IAiPowerUpsSettings } from "../../../api/types.js";
3
+ export interface IGetSettingsRepository {
4
+ get(): Promise<Result<IAiPowerUpsSettings>>;
5
+ }
6
+ export declare const GetSettingsRepository: import("@webiny/di").Abstraction<IGetSettingsRepository>;
7
+ export declare namespace GetSettingsRepository {
8
+ type Interface = IGetSettingsRepository;
9
+ }
10
+ export interface IGetSettingsUseCase {
11
+ execute(): Promise<Result<IAiPowerUpsSettings>>;
12
+ }
13
+ export declare const GetSettingsUseCase: import("@webiny/di").Abstraction<IGetSettingsUseCase>;
14
+ export declare namespace GetSettingsUseCase {
15
+ type Interface = IGetSettingsUseCase;
16
+ }
@@ -0,0 +1,6 @@
1
+ import { createAbstraction } from "@webiny/feature/api";
2
+ const GetSettingsRepository = createAbstraction("AiPowerUpsGetSettingsRepository");
3
+ const GetSettingsUseCase = createAbstraction("AiPowerUpsGetSettingsUseCase");
4
+ export { GetSettingsRepository, GetSettingsUseCase };
5
+
6
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/GetSettings/abstractions.js","sources":["../../../../src/api/features/GetSettings/abstractions.ts"],"sourcesContent":["import { createAbstraction, Result } from \"@webiny/feature/api\";\nimport type { IAiPowerUpsSettings } from \"~/api/types.js\";\n\nexport interface IGetSettingsRepository {\n get(): Promise<Result<IAiPowerUpsSettings>>;\n}\n\nexport const GetSettingsRepository = createAbstraction<IGetSettingsRepository>(\n \"AiPowerUpsGetSettingsRepository\"\n);\n\nexport namespace GetSettingsRepository {\n export type Interface = IGetSettingsRepository;\n}\n\nexport interface IGetSettingsUseCase {\n execute(): Promise<Result<IAiPowerUpsSettings>>;\n}\n\nexport const GetSettingsUseCase = createAbstraction<IGetSettingsUseCase>(\n \"AiPowerUpsGetSettingsUseCase\"\n);\n\nexport namespace GetSettingsUseCase {\n export type Interface = IGetSettingsUseCase;\n}\n"],"names":["GetSettingsRepository","createAbstraction","GetSettingsUseCase"],"mappings":";AAOO,MAAMA,wBAAwBC,kBACjC;AAWG,MAAMC,qBAAqBD,kBAC9B"}
@@ -0,0 +1,4 @@
1
+ export declare const GetSettingsFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -0,0 +1,13 @@
1
+ import { createFeature } from "@webiny/feature/api";
2
+ import { GetSettingsRepositoryImplementation } from "./GetSettingsRepository.js";
3
+ import { GetSettingsUseCaseImplementation } from "./GetSettingsUseCase.js";
4
+ const GetSettingsFeature = createFeature({
5
+ name: "AiPowerUpsGetSettings",
6
+ register (container) {
7
+ container.register(GetSettingsRepositoryImplementation).inSingletonScope();
8
+ container.register(GetSettingsUseCaseImplementation);
9
+ }
10
+ });
11
+ export { GetSettingsFeature };
12
+
13
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/GetSettings/feature.js","sources":["../../../../src/api/features/GetSettings/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { GetSettingsRepositoryImplementation } from \"./GetSettingsRepository.js\";\nimport { GetSettingsUseCaseImplementation } from \"./GetSettingsUseCase.js\";\n\nexport const GetSettingsFeature = createFeature({\n name: \"AiPowerUpsGetSettings\",\n register(container) {\n container.register(GetSettingsRepositoryImplementation).inSingletonScope();\n container.register(GetSettingsUseCaseImplementation);\n }\n});\n"],"names":["GetSettingsFeature","createFeature","container","GetSettingsRepositoryImplementation","GetSettingsUseCaseImplementation"],"mappings":";;;AAIO,MAAMA,qBAAqBC,cAAc;IAC5C,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC,qCAAqC,gBAAgB;QACxED,UAAU,QAAQ,CAACE;IACvB;AACJ"}
@@ -0,0 +1 @@
1
+ export { GetSettingsUseCase } from "./abstractions.js";
@@ -0,0 +1 @@
1
+ export { GetSettingsUseCase } from "./abstractions.js";
@@ -0,0 +1,31 @@
1
+ import { z } from "zod";
2
+ import { AiPowerUpsSettingsGroupHandler } from "../../../api/features/shared/index.js";
3
+ import type { PersistedProjects, ProjectsSettings } from "./types.js";
4
+ declare class ProjectsHandlerImpl implements AiPowerUpsSettingsGroupHandler.Interface {
5
+ readonly name = "projects";
6
+ readonly inputSchema: z.ZodObject<{
7
+ presets: z.ZodArray<z.ZodObject<{
8
+ id: z.ZodString;
9
+ name: z.ZodString;
10
+ description: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
11
+ instructions: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
12
+ defaultReaderPersonaId: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
13
+ defaultWriterPersonaId: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
14
+ files: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
15
+ id: z.ZodString;
16
+ name: z.ZodString;
17
+ size: z.ZodNumber;
18
+ mimeType: z.ZodString;
19
+ src: z.ZodString;
20
+ }, z.core.$strip>>>>>;
21
+ version: z.ZodOptional<z.ZodNumber>;
22
+ }, z.core.$strip>>;
23
+ }, z.core.$strip>;
24
+ mapFromStorage(persisted: unknown): ProjectsSettings;
25
+ mapToStorage(internal: unknown, existing: unknown | null): Promise<PersistedProjects>;
26
+ private projectChanged;
27
+ }
28
+ declare const _default: typeof ProjectsHandlerImpl & {
29
+ __abstraction: import("@webiny/di").Abstraction<import("../shared/abstractions.js").IAiPowerUpsSettingsGroupHandler>;
30
+ };
31
+ export default _default;
@@ -0,0 +1,103 @@
1
+ import { z } from "zod";
2
+ import { AiPowerUpsSettingsGroupHandler } from "../shared/index.js";
3
+ const fileItemSchema = z.object({
4
+ id: z.string().min(1),
5
+ name: z.string().min(1),
6
+ size: z.number(),
7
+ mimeType: z.string().min(1),
8
+ src: z.string().min(1)
9
+ });
10
+ const TOKEN_BUDGET = 150000;
11
+ const CHARS_PER_TOKEN = 4;
12
+ const MAX_CONTEXT_BYTES = TOKEN_BUDGET * CHARS_PER_TOKEN;
13
+ const presetSchema = z.object({
14
+ id: z.string().min(1),
15
+ name: z.string().min(1),
16
+ description: z.string().nullish().optional(),
17
+ instructions: z.string().nullish().optional(),
18
+ defaultReaderPersonaId: z.string().nullish().optional(),
19
+ defaultWriterPersonaId: z.string().nullish().optional(),
20
+ files: z.array(fileItemSchema).nullish().optional(),
21
+ version: z.number().optional()
22
+ }).superRefine((preset, ctx)=>{
23
+ const instructionsBytes = preset.instructions?.length ?? 0;
24
+ const files = preset.files ?? [];
25
+ const totalFileBytes = files.reduce((sum, f)=>sum + f.size, 0);
26
+ const totalBytes = instructionsBytes + totalFileBytes;
27
+ if (totalBytes <= MAX_CONTEXT_BYTES) return;
28
+ const estimatedTokens = Math.ceil(totalBytes / CHARS_PER_TOKEN);
29
+ const sorted = [
30
+ ...files
31
+ ].sort((a, b)=>b.size - a.size);
32
+ const top = sorted.slice(0, 3).map((f)=>`${f.name} (~${Math.ceil(f.size / CHARS_PER_TOKEN).toLocaleString()} tokens)`);
33
+ ctx.addIssue({
34
+ code: z.ZodIssueCode.custom,
35
+ path: [
36
+ "files"
37
+ ],
38
+ message: `Project "${preset.name}" exceeds the ${TOKEN_BUDGET.toLocaleString()} token budget (~${estimatedTokens.toLocaleString()} tokens). Largest files: ${top.join(", ")}.`
39
+ });
40
+ });
41
+ const inputSchema = z.object({
42
+ presets: z.array(presetSchema)
43
+ });
44
+ class ProjectsHandlerImpl {
45
+ mapFromStorage(persisted) {
46
+ if (!persisted || "object" != typeof persisted) return {
47
+ presets: []
48
+ };
49
+ const data = persisted;
50
+ return {
51
+ presets: data.presets ?? []
52
+ };
53
+ }
54
+ async mapToStorage(internal, existing) {
55
+ const input = internal;
56
+ const prev = existing;
57
+ const prevById = new Map((prev?.presets ?? []).map((p)=>[
58
+ p.id,
59
+ p
60
+ ]));
61
+ return {
62
+ presets: input.presets.map((p)=>{
63
+ const prevProject = prevById.get(p.id);
64
+ const prevVersion = prevProject?.version ?? 0;
65
+ const changed = this.projectChanged(p, prevProject);
66
+ return {
67
+ id: p.id,
68
+ name: p.name,
69
+ description: p.description,
70
+ instructions: p.instructions,
71
+ defaultReaderPersonaId: p.defaultReaderPersonaId,
72
+ defaultWriterPersonaId: p.defaultWriterPersonaId,
73
+ files: (p.files ?? []).map((f)=>({
74
+ id: f.id,
75
+ name: f.name,
76
+ size: f.size,
77
+ mimeType: f.mimeType,
78
+ src: f.src
79
+ })),
80
+ version: changed ? prevVersion + 1 : prevVersion
81
+ };
82
+ })
83
+ };
84
+ }
85
+ projectChanged(current, prev) {
86
+ if (!prev) return true;
87
+ if (current.instructions !== prev.instructions) return true;
88
+ const currentFileIds = (current.files ?? []).map((f)=>f.id).join(",");
89
+ const prevFileIds = (prev.files ?? []).map((f)=>f.id).join(",");
90
+ return currentFileIds !== prevFileIds;
91
+ }
92
+ constructor(){
93
+ this.name = "projects";
94
+ this.inputSchema = inputSchema;
95
+ }
96
+ }
97
+ const ProjectsHandler = AiPowerUpsSettingsGroupHandler.createImplementation({
98
+ implementation: ProjectsHandlerImpl,
99
+ dependencies: []
100
+ });
101
+ export default ProjectsHandler;
102
+
103
+ //# sourceMappingURL=ProjectsHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/Projects/ProjectsHandler.js","sources":["../../../../src/api/features/Projects/ProjectsHandler.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { AiPowerUpsSettingsGroupHandler } from \"~/api/features/shared/index.js\";\nimport type {\n PersistedProjectPreset,\n PersistedProjects,\n ProjectPreset,\n ProjectsSettings\n} from \"./types.js\";\n\nconst fileItemSchema = z.object({\n id: z.string().min(1),\n name: z.string().min(1),\n size: z.number(),\n mimeType: z.string().min(1),\n src: z.string().min(1)\n});\n\nconst TOKEN_BUDGET = 150_000;\nconst CHARS_PER_TOKEN = 4;\nconst MAX_CONTEXT_BYTES = TOKEN_BUDGET * CHARS_PER_TOKEN;\n\nconst presetSchema = z\n .object({\n id: z.string().min(1),\n name: z.string().min(1),\n description: z.string().nullish().optional(),\n instructions: z.string().nullish().optional(),\n defaultReaderPersonaId: z.string().nullish().optional(),\n defaultWriterPersonaId: z.string().nullish().optional(),\n files: z.array(fileItemSchema).nullish().optional(),\n version: z.number().optional()\n })\n .superRefine((preset, ctx) => {\n const instructionsBytes = preset.instructions?.length ?? 0;\n const files = preset.files ?? [];\n const totalFileBytes = files.reduce((sum, f) => sum + f.size, 0);\n const totalBytes = instructionsBytes + totalFileBytes;\n\n if (totalBytes <= MAX_CONTEXT_BYTES) {\n return;\n }\n\n const estimatedTokens = Math.ceil(totalBytes / CHARS_PER_TOKEN);\n const sorted = [...files].sort((a, b) => b.size - a.size);\n const top = sorted\n .slice(0, 3)\n .map(\n f => `${f.name} (~${Math.ceil(f.size / CHARS_PER_TOKEN).toLocaleString()} tokens)`\n );\n\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"files\"],\n message: `Project \"${preset.name}\" exceeds the ${TOKEN_BUDGET.toLocaleString()} token budget (~${estimatedTokens.toLocaleString()} tokens). Largest files: ${top.join(\", \")}.`\n });\n });\n\nconst inputSchema = z.object({\n presets: z.array(presetSchema)\n});\n\nclass ProjectsHandlerImpl implements AiPowerUpsSettingsGroupHandler.Interface {\n readonly name = \"projects\";\n readonly inputSchema = inputSchema;\n\n mapFromStorage(persisted: unknown): ProjectsSettings {\n if (!persisted || typeof persisted !== \"object\") {\n return { presets: [] };\n }\n\n const data = persisted as PersistedProjects;\n return { presets: data.presets ?? [] };\n }\n\n async mapToStorage(internal: unknown, existing: unknown | null): Promise<PersistedProjects> {\n const input = internal as ProjectsSettings;\n const prev = existing as PersistedProjects | null;\n const prevById = new Map((prev?.presets ?? []).map(p => [p.id, p]));\n\n return {\n presets: input.presets.map(p => {\n const prevProject = prevById.get(p.id);\n const prevVersion = prevProject?.version ?? 0;\n const changed = this.projectChanged(p, prevProject);\n\n return {\n id: p.id,\n name: p.name,\n description: p.description,\n instructions: p.instructions,\n defaultReaderPersonaId: p.defaultReaderPersonaId,\n defaultWriterPersonaId: p.defaultWriterPersonaId,\n files: (p.files ?? []).map(f => ({\n id: f.id,\n name: f.name,\n size: f.size,\n mimeType: f.mimeType,\n src: f.src\n })),\n version: changed ? prevVersion + 1 : prevVersion\n };\n })\n };\n }\n\n private projectChanged(\n current: ProjectPreset,\n prev: PersistedProjectPreset | undefined\n ): boolean {\n if (!prev) {\n return true;\n }\n if (current.instructions !== prev.instructions) {\n return true;\n }\n const currentFileIds = (current.files ?? []).map(f => f.id).join(\",\");\n const prevFileIds = (prev.files ?? []).map(f => f.id).join(\",\");\n return currentFileIds !== prevFileIds;\n }\n}\n\nexport default AiPowerUpsSettingsGroupHandler.createImplementation({\n implementation: ProjectsHandlerImpl,\n dependencies: []\n});\n"],"names":["fileItemSchema","z","TOKEN_BUDGET","CHARS_PER_TOKEN","MAX_CONTEXT_BYTES","presetSchema","preset","ctx","instructionsBytes","files","totalFileBytes","sum","f","totalBytes","estimatedTokens","Math","sorted","a","b","top","inputSchema","ProjectsHandlerImpl","persisted","data","internal","existing","input","prev","prevById","Map","p","prevProject","prevVersion","changed","current","currentFileIds","prevFileIds","AiPowerUpsSettingsGroupHandler"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare const ProjectsFeature: {
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 ProjectsHandler from "./ProjectsHandler.js";
3
+ const ProjectsFeature = createFeature({
4
+ name: "AiPowerUpsProjects",
5
+ register (container) {
6
+ container.register(ProjectsHandler);
7
+ }
8
+ });
9
+ export { ProjectsFeature };
10
+
11
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/Projects/feature.js","sources":["../../../../src/api/features/Projects/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport ProjectsHandler from \"./ProjectsHandler.js\";\n\nexport const ProjectsFeature = createFeature({\n name: \"AiPowerUpsProjects\",\n register(container) {\n container.register(ProjectsHandler);\n }\n});\n"],"names":["ProjectsFeature","createFeature","container","ProjectsHandler"],"mappings":";;AAGO,MAAMA,kBAAkBC,cAAc;IACzC,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}