@webiny/ai-powerups 0.0.0-unstable.e6f0dc8ca7

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 (316) 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 +39 -0
  8. package/admin/Extension.js.map +1 -0
  9. package/admin/domain/errors.d.ts +12 -0
  10. package/admin/domain/errors.js +22 -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 +21 -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 +42 -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 +15 -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 +5 -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 +12 -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 +4 -0
  29. package/admin/features/generatePageContent/index.js.map +1 -0
  30. package/admin/features/listModels/ListModelsGateway.d.ts +12 -0
  31. package/admin/features/listModels/ListModelsGateway.js +31 -0
  32. package/admin/features/listModels/ListModelsGateway.js.map +1 -0
  33. package/admin/features/listModels/ListModelsRepository.d.ts +13 -0
  34. package/admin/features/listModels/ListModelsRepository.js +24 -0
  35. package/admin/features/listModels/ListModelsRepository.js.map +1 -0
  36. package/admin/features/listModels/ListModelsUseCase.d.ts +10 -0
  37. package/admin/features/listModels/ListModelsUseCase.js +15 -0
  38. package/admin/features/listModels/ListModelsUseCase.js.map +1 -0
  39. package/admin/features/listModels/abstractions.d.ts +28 -0
  40. package/admin/features/listModels/abstractions.js +6 -0
  41. package/admin/features/listModels/abstractions.js.map +1 -0
  42. package/admin/features/listModels/feature.d.ts +3 -0
  43. package/admin/features/listModels/feature.js +20 -0
  44. package/admin/features/listModels/feature.js.map +1 -0
  45. package/admin/features/listModels/index.d.ts +2 -0
  46. package/admin/features/listModels/index.js +4 -0
  47. package/admin/features/listModels/index.js.map +1 -0
  48. package/admin/features/settings/getSettings/GetSettingsGateway.d.ts +12 -0
  49. package/admin/features/settings/getSettings/GetSettingsGateway.js +26 -0
  50. package/admin/features/settings/getSettings/GetSettingsGateway.js.map +1 -0
  51. package/admin/features/settings/getSettings/GetSettingsRepository.d.ts +14 -0
  52. package/admin/features/settings/getSettings/GetSettingsRepository.js +31 -0
  53. package/admin/features/settings/getSettings/GetSettingsRepository.js.map +1 -0
  54. package/admin/features/settings/getSettings/GetSettingsUseCase.d.ts +11 -0
  55. package/admin/features/settings/getSettings/GetSettingsUseCase.js +15 -0
  56. package/admin/features/settings/getSettings/GetSettingsUseCase.js.map +1 -0
  57. package/admin/features/settings/getSettings/abstractions.d.ts +22 -0
  58. package/admin/features/settings/getSettings/abstractions.js +6 -0
  59. package/admin/features/settings/getSettings/abstractions.js.map +1 -0
  60. package/admin/features/settings/getSettings/feature.d.ts +3 -0
  61. package/admin/features/settings/getSettings/feature.js +20 -0
  62. package/admin/features/settings/getSettings/feature.js.map +1 -0
  63. package/admin/features/settings/getSettings/index.d.ts +2 -0
  64. package/admin/features/settings/getSettings/index.js +4 -0
  65. package/admin/features/settings/getSettings/index.js.map +1 -0
  66. package/admin/features/settings/shared/SettingsCache.d.ts +10 -0
  67. package/admin/features/settings/shared/SettingsCache.js +18 -0
  68. package/admin/features/settings/shared/SettingsCache.js.map +1 -0
  69. package/admin/features/settings/shared/abstractions.d.ts +50 -0
  70. package/admin/features/settings/shared/abstractions.js +4 -0
  71. package/admin/features/settings/shared/abstractions.js.map +1 -0
  72. package/admin/features/settings/shared/feature.d.ts +3 -0
  73. package/admin/features/settings/shared/feature.js +16 -0
  74. package/admin/features/settings/shared/feature.js.map +1 -0
  75. package/admin/features/settings/shared/index.d.ts +2 -0
  76. package/admin/features/settings/shared/index.js +4 -0
  77. package/admin/features/settings/shared/index.js.map +1 -0
  78. package/admin/features/settings/updateSettings/UpdateSettingsGateway.d.ts +12 -0
  79. package/admin/features/settings/updateSettings/UpdateSettingsGateway.js +44 -0
  80. package/admin/features/settings/updateSettings/UpdateSettingsGateway.js.map +1 -0
  81. package/admin/features/settings/updateSettings/UpdateSettingsRepository.d.ts +13 -0
  82. package/admin/features/settings/updateSettings/UpdateSettingsRepository.js +19 -0
  83. package/admin/features/settings/updateSettings/UpdateSettingsRepository.js.map +1 -0
  84. package/admin/features/settings/updateSettings/UpdateSettingsUseCase.d.ts +11 -0
  85. package/admin/features/settings/updateSettings/UpdateSettingsUseCase.js +15 -0
  86. package/admin/features/settings/updateSettings/UpdateSettingsUseCase.js.map +1 -0
  87. package/admin/features/settings/updateSettings/abstractions.d.ts +22 -0
  88. package/admin/features/settings/updateSettings/abstractions.js +6 -0
  89. package/admin/features/settings/updateSettings/abstractions.js.map +1 -0
  90. package/admin/features/settings/updateSettings/feature.d.ts +3 -0
  91. package/admin/features/settings/updateSettings/feature.js +20 -0
  92. package/admin/features/settings/updateSettings/feature.js.map +1 -0
  93. package/admin/features/settings/updateSettings/index.d.ts +2 -0
  94. package/admin/features/settings/updateSettings/index.js +4 -0
  95. package/admin/features/settings/updateSettings/index.js.map +1 -0
  96. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPage.d.ts +4 -0
  97. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPage.js +53 -0
  98. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPage.js.map +1 -0
  99. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPresenter.d.ts +26 -0
  100. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPresenter.js +158 -0
  101. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPresenter.js.map +1 -0
  102. package/admin/presentation/AiPowerUpsSettings/abstractions.d.ts +18 -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 +24 -0
  107. package/admin/presentation/AiPowerUpsSettings/feature.js.map +1 -0
  108. package/admin/presentation/AiPowerUpsSettings/index.d.ts +3 -0
  109. package/admin/presentation/AiPowerUpsSettings/index.js +5 -0
  110. package/admin/presentation/AiPowerUpsSettings/index.js.map +1 -0
  111. package/admin/presentation/AiPowerUpsSettings/settingsGroup.d.ts +17 -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/useAiPowerUpsSettings.d.ts +4 -0
  115. package/admin/presentation/AiPowerUpsSettings/useAiPowerUpsSettings.js +28 -0
  116. package/admin/presentation/AiPowerUpsSettings/useAiPowerUpsSettings.js.map +1 -0
  117. package/admin/presentation/ProjectsSettings.d.ts +11 -0
  118. package/admin/presentation/ProjectsSettings.js +55 -0
  119. package/admin/presentation/ProjectsSettings.js.map +1 -0
  120. package/admin/presentation/ProvidersSettings.d.ts +16 -0
  121. package/admin/presentation/ProvidersSettings.js +40 -0
  122. package/admin/presentation/ProvidersSettings.js.map +1 -0
  123. package/admin/presentation/ReaderPersonasSettings.d.ts +11 -0
  124. package/admin/presentation/ReaderPersonasSettings.js +32 -0
  125. package/admin/presentation/ReaderPersonasSettings.js.map +1 -0
  126. package/admin/presentation/WbContentGeneration/Extension.d.ts +2 -0
  127. package/admin/presentation/WbContentGeneration/Extension.js +23 -0
  128. package/admin/presentation/WbContentGeneration/Extension.js.map +1 -0
  129. package/admin/presentation/WbContentGeneration/GenerateContentButton.d.ts +2 -0
  130. package/admin/presentation/WbContentGeneration/GenerateContentButton.js +24 -0
  131. package/admin/presentation/WbContentGeneration/GenerateContentButton.js.map +1 -0
  132. package/admin/presentation/WbContentGeneration/GenerateContentDialog.d.ts +21 -0
  133. package/admin/presentation/WbContentGeneration/GenerateContentDialog.js +107 -0
  134. package/admin/presentation/WbContentGeneration/GenerateContentDialog.js.map +1 -0
  135. package/admin/presentation/WbContentGeneration/GenerateContentPresenter.d.ts +38 -0
  136. package/admin/presentation/WbContentGeneration/GenerateContentPresenter.js +231 -0
  137. package/admin/presentation/WbContentGeneration/GenerateContentPresenter.js.map +1 -0
  138. package/admin/presentation/WbContentGeneration/PROCESS_IDEA.md +190 -0
  139. package/admin/presentation/WbContentGeneration/abstractions.d.ts +30 -0
  140. package/admin/presentation/WbContentGeneration/abstractions.js +4 -0
  141. package/admin/presentation/WbContentGeneration/abstractions.js.map +1 -0
  142. package/admin/presentation/WbContentGeneration/decompressGzipBase64.d.ts +1 -0
  143. package/admin/presentation/WbContentGeneration/decompressGzipBase64.js +14 -0
  144. package/admin/presentation/WbContentGeneration/decompressGzipBase64.js.map +1 -0
  145. package/admin/presentation/WbContentGeneration/feature.d.ts +3 -0
  146. package/admin/presentation/WbContentGeneration/feature.js +16 -0
  147. package/admin/presentation/WbContentGeneration/feature.js.map +1 -0
  148. package/admin/presentation/WriterPersonasSettings.d.ts +11 -0
  149. package/admin/presentation/WriterPersonasSettings.js +32 -0
  150. package/admin/presentation/WriterPersonasSettings.js.map +1 -0
  151. package/admin/routes.d.ts +4 -0
  152. package/admin/routes.js +9 -0
  153. package/admin/routes.js.map +1 -0
  154. package/api/Extension.d.ts +4 -0
  155. package/api/Extension.js +36 -0
  156. package/api/Extension.js.map +1 -0
  157. package/api/constants.d.ts +1 -0
  158. package/api/constants.js +3 -0
  159. package/api/constants.js.map +1 -0
  160. package/api/features/AiImageEnrichment/AiImageEnrichmentAfterCreateHandler.d.ts +11 -0
  161. package/api/features/AiImageEnrichment/AiImageEnrichmentAfterCreateHandler.js +28 -0
  162. package/api/features/AiImageEnrichment/AiImageEnrichmentAfterCreateHandler.js.map +1 -0
  163. package/api/features/AiImageEnrichment/AiImageEnrichmentTask.d.ts +34 -0
  164. package/api/features/AiImageEnrichment/AiImageEnrichmentTask.js +132 -0
  165. package/api/features/AiImageEnrichment/AiImageEnrichmentTask.js.map +1 -0
  166. package/api/features/AiImageEnrichment/feature.d.ts +4 -0
  167. package/api/features/AiImageEnrichment/feature.js +12 -0
  168. package/api/features/AiImageEnrichment/feature.js.map +1 -0
  169. package/api/features/AiPromptContext/AiPromptContextBuilder.d.ts +19 -0
  170. package/api/features/AiPromptContext/AiPromptContextBuilder.js +154 -0
  171. package/api/features/AiPromptContext/AiPromptContextBuilder.js.map +1 -0
  172. package/api/features/AiPromptContext/ProjectSection.d.ts +4 -0
  173. package/api/features/AiPromptContext/ProjectSection.js +22 -0
  174. package/api/features/AiPromptContext/ProjectSection.js.map +1 -0
  175. package/api/features/AiPromptContext/ReaderPersonaSection.d.ts +4 -0
  176. package/api/features/AiPromptContext/ReaderPersonaSection.js +11 -0
  177. package/api/features/AiPromptContext/ReaderPersonaSection.js.map +1 -0
  178. package/api/features/AiPromptContext/WriterPersonaSection.d.ts +4 -0
  179. package/api/features/AiPromptContext/WriterPersonaSection.js +11 -0
  180. package/api/features/AiPromptContext/WriterPersonaSection.js.map +1 -0
  181. package/api/features/AiPromptContext/abstractions.d.ts +37 -0
  182. package/api/features/AiPromptContext/abstractions.js +4 -0
  183. package/api/features/AiPromptContext/abstractions.js.map +1 -0
  184. package/api/features/AiPromptContext/feature.d.ts +4 -0
  185. package/api/features/AiPromptContext/feature.js +10 -0
  186. package/api/features/AiPromptContext/feature.js.map +1 -0
  187. package/api/features/AiPromptContext/index.d.ts +1 -0
  188. package/api/features/AiPromptContext/index.js +3 -0
  189. package/api/features/AiPromptContext/index.js.map +1 -0
  190. package/api/features/GetSettings/GetSettingsRepository.d.ts +16 -0
  191. package/api/features/GetSettings/GetSettingsRepository.js +40 -0
  192. package/api/features/GetSettings/GetSettingsRepository.js.map +1 -0
  193. package/api/features/GetSettings/GetSettingsUseCase.d.ts +10 -0
  194. package/api/features/GetSettings/GetSettingsUseCase.js +15 -0
  195. package/api/features/GetSettings/GetSettingsUseCase.js.map +1 -0
  196. package/api/features/GetSettings/abstractions.d.ts +16 -0
  197. package/api/features/GetSettings/abstractions.js +5 -0
  198. package/api/features/GetSettings/abstractions.js.map +1 -0
  199. package/api/features/GetSettings/feature.d.ts +4 -0
  200. package/api/features/GetSettings/feature.js +12 -0
  201. package/api/features/GetSettings/feature.js.map +1 -0
  202. package/api/features/GetSettings/index.d.ts +1 -0
  203. package/api/features/GetSettings/index.js +3 -0
  204. package/api/features/GetSettings/index.js.map +1 -0
  205. package/api/features/Projects/ProjectsHandler.d.ts +31 -0
  206. package/api/features/Projects/ProjectsHandler.js +101 -0
  207. package/api/features/Projects/ProjectsHandler.js.map +1 -0
  208. package/api/features/Projects/feature.d.ts +4 -0
  209. package/api/features/Projects/feature.js +10 -0
  210. package/api/features/Projects/feature.js.map +1 -0
  211. package/api/features/Projects/types.d.ts +50 -0
  212. package/api/features/Projects/types.js +3 -0
  213. package/api/features/Projects/types.js.map +1 -0
  214. package/api/features/Providers/ProvidersGraphQLMapper.d.ts +21 -0
  215. package/api/features/Providers/ProvidersGraphQLMapper.js +36 -0
  216. package/api/features/Providers/ProvidersGraphQLMapper.js.map +1 -0
  217. package/api/features/Providers/ProvidersHandler.d.ts +26 -0
  218. package/api/features/Providers/ProvidersHandler.js +76 -0
  219. package/api/features/Providers/ProvidersHandler.js.map +1 -0
  220. package/api/features/Providers/feature.d.ts +4 -0
  221. package/api/features/Providers/feature.js +12 -0
  222. package/api/features/Providers/feature.js.map +1 -0
  223. package/api/features/Providers/index.d.ts +1 -0
  224. package/api/features/Providers/index.js +3 -0
  225. package/api/features/Providers/index.js.map +1 -0
  226. package/api/features/Providers/types.d.ts +29 -0
  227. package/api/features/Providers/types.js +3 -0
  228. package/api/features/Providers/types.js.map +1 -0
  229. package/api/features/ReaderPersonas/ReaderPersonasHandler.d.ts +20 -0
  230. package/api/features/ReaderPersonas/ReaderPersonasHandler.js +42 -0
  231. package/api/features/ReaderPersonas/ReaderPersonasHandler.js.map +1 -0
  232. package/api/features/ReaderPersonas/feature.d.ts +4 -0
  233. package/api/features/ReaderPersonas/feature.js +10 -0
  234. package/api/features/ReaderPersonas/feature.js.map +1 -0
  235. package/api/features/ReaderPersonas/index.d.ts +2 -0
  236. package/api/features/ReaderPersonas/index.js +3 -0
  237. package/api/features/ReaderPersonas/index.js.map +1 -0
  238. package/api/features/ReaderPersonas/types.d.ts +24 -0
  239. package/api/features/ReaderPersonas/types.js +3 -0
  240. package/api/features/ReaderPersonas/types.js.map +1 -0
  241. package/api/features/UpdateSettings/UpdateSettingsRepository.d.ts +16 -0
  242. package/api/features/UpdateSettings/UpdateSettingsRepository.js +77 -0
  243. package/api/features/UpdateSettings/UpdateSettingsRepository.js.map +1 -0
  244. package/api/features/UpdateSettings/UpdateSettingsUseCase.d.ts +13 -0
  245. package/api/features/UpdateSettings/UpdateSettingsUseCase.js +28 -0
  246. package/api/features/UpdateSettings/UpdateSettingsUseCase.js.map +1 -0
  247. package/api/features/UpdateSettings/abstractions.d.ts +36 -0
  248. package/api/features/UpdateSettings/abstractions.js +10 -0
  249. package/api/features/UpdateSettings/abstractions.js.map +1 -0
  250. package/api/features/UpdateSettings/errors.d.ts +10 -0
  251. package/api/features/UpdateSettings/errors.js +14 -0
  252. package/api/features/UpdateSettings/errors.js.map +1 -0
  253. package/api/features/UpdateSettings/events.d.ts +10 -0
  254. package/api/features/UpdateSettings/events.js +16 -0
  255. package/api/features/UpdateSettings/events.js.map +1 -0
  256. package/api/features/UpdateSettings/feature.d.ts +4 -0
  257. package/api/features/UpdateSettings/feature.js +12 -0
  258. package/api/features/UpdateSettings/feature.js.map +1 -0
  259. package/api/features/UpdateSettings/index.d.ts +1 -0
  260. package/api/features/UpdateSettings/index.js +3 -0
  261. package/api/features/UpdateSettings/index.js.map +1 -0
  262. package/api/features/WbGeneratePageContent/WbGeneratePageContentTask.d.ts +33 -0
  263. package/api/features/WbGeneratePageContent/WbGeneratePageContentTask.js +76 -0
  264. package/api/features/WbGeneratePageContent/WbGeneratePageContentTask.js.map +1 -0
  265. package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.d.ts +21 -0
  266. package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.js +79 -0
  267. package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.js.map +1 -0
  268. package/api/features/WbGeneratePageContent/abstractions.d.ts +18 -0
  269. package/api/features/WbGeneratePageContent/abstractions.js +4 -0
  270. package/api/features/WbGeneratePageContent/abstractions.js.map +1 -0
  271. package/api/features/WbGeneratePageContent/buildPrompt.d.ts +1 -0
  272. package/api/features/WbGeneratePageContent/buildPrompt.js +142 -0
  273. package/api/features/WbGeneratePageContent/buildPrompt.js.map +1 -0
  274. package/api/features/WbGeneratePageContent/feature.d.ts +4 -0
  275. package/api/features/WbGeneratePageContent/feature.js +12 -0
  276. package/api/features/WbGeneratePageContent/feature.js.map +1 -0
  277. package/api/features/WbGeneratePageContent/index.d.ts +1 -0
  278. package/api/features/WbGeneratePageContent/index.js +3 -0
  279. package/api/features/WbGeneratePageContent/index.js.map +1 -0
  280. package/api/features/WriterPersonas/WriterPersonasHandler.d.ts +20 -0
  281. package/api/features/WriterPersonas/WriterPersonasHandler.js +42 -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 +10 -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 +3 -0
  288. package/api/features/WriterPersonas/index.js.map +1 -0
  289. package/api/features/WriterPersonas/types.d.ts +24 -0
  290. package/api/features/WriterPersonas/types.js +3 -0
  291. package/api/features/WriterPersonas/types.js.map +1 -0
  292. package/api/features/shared/SettingsCache.d.ts +12 -0
  293. package/api/features/shared/SettingsCache.js +19 -0
  294. package/api/features/shared/SettingsCache.js.map +1 -0
  295. package/api/features/shared/abstractions.d.ts +33 -0
  296. package/api/features/shared/abstractions.js +6 -0
  297. package/api/features/shared/abstractions.js.map +1 -0
  298. package/api/features/shared/index.d.ts +3 -0
  299. package/api/features/shared/index.js +5 -0
  300. package/api/features/shared/index.js.map +1 -0
  301. package/api/graphql/AiPowerUpsSettingsGraphQLMapper.d.ts +13 -0
  302. package/api/graphql/AiPowerUpsSettingsGraphQLMapper.js +35 -0
  303. package/api/graphql/AiPowerUpsSettingsGraphQLMapper.js.map +1 -0
  304. package/api/graphql/BaseGraphQLSchema.d.ts +8 -0
  305. package/api/graphql/BaseGraphQLSchema.js +141 -0
  306. package/api/graphql/BaseGraphQLSchema.js.map +1 -0
  307. package/api/graphql/abstractions.d.ts +9 -0
  308. package/api/graphql/abstractions.js +4 -0
  309. package/api/graphql/abstractions.js.map +1 -0
  310. package/api/types.d.ts +5 -0
  311. package/api/types.js +7 -0
  312. package/api/types.js.map +1 -0
  313. package/index.d.ts +1 -0
  314. package/index.js +3 -0
  315. package/index.js.map +1 -0
  316. package/package.json +58 -0
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Output","z","TaskDefinition","Ai","Encryption","GetFileUseCase","UpdateFileUseCase","GetSettingsUseCase","FmGetSettingsUseCase","WebsocketService","AI_IMAGE_ENRICHMENT_TASK_ID","AI_PROMPT","aiOutputSchema","object","schema","tags","array","string","description","AiImageEnrichmentTaskImpl","id","title","maxIterations","isPrivate","databaseLogs","selfCleanup","constructor","getFile","fmSettings","updateFile","ai","getSettings","encryption","websocketService","run","input","controller","runtime","isAborted","response","aborted","fileResult","execute","fileId","isFail","error","message","file","value","type","startsWith","done","settingsResult","srcPrefix","isOk","imageUrl","key","aiSettingsResult","aiSettings","firstProvider","providers","presets","aiResult","generateText","model","output","connection","sdkName","split","apiKey","decrypt","apiKeyEncrypted","messages","role","content","image","URL","text","console","log","Error","String","mergedTags","Set","updateResult","connectionsResult","listConnections","length","sendToConnections","action","data","AiImageEnrichmentTask","createImplementation","implementation","dependencies","optional"],"sources":["AiImageEnrichmentTask.ts"],"sourcesContent":["import { Output } from \"ai\";\nimport { z } from \"zod\";\nimport { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { Ai } from \"@webiny/api-core/features/ai/index.js\";\nimport { Encryption } from \"@webiny/api-core/features/encryption/index.js\";\nimport { GetFileUseCase } from \"@webiny/api-file-manager/features/file/GetFile/index.js\";\nimport { UpdateFileUseCase } from \"@webiny/api-file-manager/features/file/UpdateFile/index.js\";\nimport { GetSettingsUseCase as FmGetSettingsUseCase } from \"@webiny/api-file-manager/features/settings/GetSettings/abstractions.js\";\nimport { WebsocketService } from \"@webiny/api-websockets/features/WebsocketService/index.js\";\nimport { GetSettingsUseCase } from \"~/api/features/GetSettings/index.js\";\n\nexport const AI_IMAGE_ENRICHMENT_TASK_ID = \"fmAiImageEnrichment\";\n\nconst AI_PROMPT =\n \"Analyze this image and return up to 5 lowercase descriptive tags and one short sentence describing the image.\";\n\nconst aiOutputSchema = Output.object({\n schema: z.object({\n tags: z.array(z.string()),\n description: z.string()\n })\n});\n\nexport interface IAiImageEnrichmentTaskInput {\n fileId: string;\n}\n\nclass AiImageEnrichmentTaskImpl implements TaskDefinition.Interface<IAiImageEnrichmentTaskInput> {\n id = AI_IMAGE_ENRICHMENT_TASK_ID;\n title = \"File Manager - AI Image Enrichment\";\n description = \"Automatically enriches uploaded images with AI-generated tags and description.\";\n maxIterations = 1;\n isPrivate = true;\n databaseLogs = false;\n\n public readonly selfCleanup = [\"onSuccess\" as const, \"onAbort\" as const];\n\n constructor(\n private getFile: GetFileUseCase.Interface,\n private fmSettings: FmGetSettingsUseCase.Interface,\n private updateFile: UpdateFileUseCase.Interface,\n private ai: Ai.Interface,\n private getSettings: GetSettingsUseCase.Interface,\n private encryption: Encryption.Interface,\n private websocketService?: WebsocketService.Interface\n ) {}\n\n async run({\n input,\n controller\n }: TaskDefinition.RunParams<IAiImageEnrichmentTaskInput>): Promise<\n TaskDefinition.Result<IAiImageEnrichmentTaskInput>\n > {\n if (controller.runtime.isAborted()) {\n return controller.response.aborted();\n }\n\n const fileResult = await this.getFile.execute(input.fileId);\n if (fileResult.isFail()) {\n return controller.response.error({\n message: `File not found: ${input.fileId}`\n });\n }\n\n const file = fileResult.value;\n\n if (!file.type.startsWith(\"image/\")) {\n return controller.response.done(\"File is not an image; skipping AI enrichment.\");\n }\n\n const settingsResult = await this.fmSettings.execute();\n const srcPrefix = settingsResult.isOk() ? (settingsResult.value.srcPrefix ?? \"\") : \"\";\n const imageUrl = `${srcPrefix}${file.key}`;\n\n const aiSettingsResult = await this.getSettings.execute();\n\n if (aiSettingsResult.isFail()) {\n return controller.response.error({\n message: \"No AI provider configured. Add a provider in AI Power Ups settings.\"\n });\n }\n\n const aiSettings = aiSettingsResult.value;\n\n const firstProvider = aiSettings.providers.presets[0];\n\n if (!firstProvider) {\n return controller.response.done({\n message: \"No AI provider configured. Add a provider in AI Power Ups settings.\"\n });\n }\n\n let tags: string[] = [];\n let description = \"\";\n try {\n const aiResult = await this.ai.generateText({\n model: firstProvider.model,\n output: aiOutputSchema,\n connection: {\n sdkName: firstProvider.model.split(\"/\")[0],\n apiKey: this.encryption.decrypt(firstProvider.apiKeyEncrypted)\n },\n messages: [\n {\n role: \"user\",\n content: [\n {\n type: \"image\",\n image: new URL(imageUrl)\n },\n {\n type: \"text\",\n text: AI_PROMPT\n }\n ]\n }\n ]\n });\n\n tags = aiResult.output.tags;\n description = aiResult.output.description;\n } catch (error) {\n console.log(\"error\", error.message);\n return controller.response.error({\n message: `AI enrichment failed: ${error instanceof Error ? error.message : String(error)}`\n });\n }\n\n const mergedTags = [...new Set([...file.tags, ...tags])];\n\n const updateResult = await this.updateFile.execute({\n id: file.id,\n tags: mergedTags,\n description\n });\n\n if (updateResult.isFail()) {\n return controller.response.error({\n message: `Failed to update file: ${updateResult.error.message}`\n });\n }\n\n if (this.websocketService) {\n const connectionsResult = await this.websocketService.listConnections();\n if (connectionsResult.isOk() && connectionsResult.value.length > 0) {\n await this.websocketService.sendToConnections(connectionsResult.value, {\n action: \"fm.file.enrichment\",\n data: {\n id: file.id,\n tags: mergedTags,\n description\n }\n });\n }\n }\n\n return controller.response.done(\"AI image enrichment completed successfully.\");\n }\n}\n\nexport const AiImageEnrichmentTask = TaskDefinition.createImplementation({\n implementation: AiImageEnrichmentTaskImpl,\n dependencies: [\n GetFileUseCase,\n FmGetSettingsUseCase,\n UpdateFileUseCase,\n Ai,\n GetSettingsUseCase,\n Encryption,\n [WebsocketService, { optional: true }]\n ]\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ export declare const AiImageEnrichmentFeature: {
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 { AiImageEnrichmentAfterCreateHandler } from "./AiImageEnrichmentAfterCreateHandler.js";
3
+ import { AiImageEnrichmentTask } from "./AiImageEnrichmentTask.js";
4
+ export const AiImageEnrichmentFeature = createFeature({
5
+ name: "AiPowerUps/AiImageEnrichment",
6
+ register(container) {
7
+ container.register(AiImageEnrichmentAfterCreateHandler);
8
+ container.register(AiImageEnrichmentTask);
9
+ }
10
+ });
11
+
12
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createFeature","AiImageEnrichmentAfterCreateHandler","AiImageEnrichmentTask","AiImageEnrichmentFeature","name","register","container"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { AiImageEnrichmentAfterCreateHandler } from \"./AiImageEnrichmentAfterCreateHandler.js\";\nimport { AiImageEnrichmentTask } from \"./AiImageEnrichmentTask.js\";\n\nexport const AiImageEnrichmentFeature = createFeature({\n name: \"AiPowerUps/AiImageEnrichment\",\n register(container) {\n container.register(AiImageEnrichmentAfterCreateHandler);\n container.register(AiImageEnrichmentTask);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,mCAAmC;AAC5C,SAASC,qBAAqB;AAE9B,OAAO,MAAMC,wBAAwB,GAAGH,aAAa,CAAC;EAClDI,IAAI,EAAE,8BAA8B;EACpCC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACD,QAAQ,CAACJ,mCAAmC,CAAC;IACvDK,SAAS,CAACD,QAAQ,CAACH,qBAAqB,CAAC;EAC7C;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,19 @@
1
+ import { GlobalKeyValueStore } from "@webiny/api-core/features/keyValueStore/index.js";
2
+ import { GetFileContentsUseCase } from "@webiny/api-file-manager/features/file/GetFileContents/index.js";
3
+ import { GetSettingsUseCase } from "../../../api/features/GetSettings/index.js";
4
+ import { AiPromptContextBuilder as Abstraction, type AiPromptContext, type AiPromptContextParams } from "./abstractions.js";
5
+ declare class AiPromptContextBuilderImpl implements Abstraction.Interface {
6
+ private getSettings;
7
+ private getFileContents;
8
+ private keyValueStore;
9
+ constructor(getSettings: GetSettingsUseCase.Interface, getFileContents: GetFileContentsUseCase.Interface, keyValueStore: GlobalKeyValueStore.Interface);
10
+ execute(params: AiPromptContextParams): Promise<AiPromptContext>;
11
+ private buildContext;
12
+ private loadProjectFiles;
13
+ private getOrAssembleFiles;
14
+ private assembleFiles;
15
+ }
16
+ export declare const AiPromptContextBuilder: typeof AiPromptContextBuilderImpl & {
17
+ __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IAiPromptContextBuilder>;
18
+ };
19
+ export {};
@@ -0,0 +1,154 @@
1
+ import { compress, decompress } from "@webiny/utils/features/compression/legacy/gzip.js";
2
+ import { GlobalKeyValueStore } from "@webiny/api-core/features/keyValueStore/index.js";
3
+ import { GetFileContentsUseCase } from "@webiny/api-file-manager/features/file/GetFileContents/index.js";
4
+ import { GetSettingsUseCase } from "../GetSettings/index.js";
5
+ import { AiPromptContextBuilder as Abstraction } from "./abstractions.js";
6
+ import { WriterPersonaSection } from "./WriterPersonaSection.js";
7
+ import { ReaderPersonaSection } from "./ReaderPersonaSection.js";
8
+ import { ProjectSection } from "./ProjectSection.js";
9
+ const SUPPORTED_MIME_PREFIXES = ["text/"];
10
+ const SUPPORTED_MIME_TYPES = new Set(["application/json", "application/csv"]);
11
+ const CACHE_TTL_DAYS = 30;
12
+ function isSupportedType(mimeType) {
13
+ if (SUPPORTED_MIME_PREFIXES.some(prefix => mimeType.startsWith(prefix))) {
14
+ return true;
15
+ }
16
+ return SUPPORTED_MIME_TYPES.has(mimeType);
17
+ }
18
+ class AiPromptContextBuilderImpl {
19
+ constructor(getSettings, getFileContents, keyValueStore) {
20
+ this.getSettings = getSettings;
21
+ this.getFileContents = getFileContents;
22
+ this.keyValueStore = keyValueStore;
23
+ }
24
+ async execute(params) {
25
+ const warnings = [];
26
+ const settingsResult = await this.getSettings.execute();
27
+ if (settingsResult.isFail()) {
28
+ warnings.push("Failed to load AI PowerUps settings.");
29
+ return this.buildContext(undefined, undefined, undefined, warnings);
30
+ }
31
+ const settings = settingsResult.value;
32
+ const project = params.projectId ? settings.projects?.presets?.find(p => p.id === params.projectId) : undefined;
33
+ const readerPersonaId = params.readerPersonaId ?? project?.defaultReaderPersonaId ?? undefined;
34
+ const writerPersonaId = params.writerPersonaId ?? project?.defaultWriterPersonaId ?? undefined;
35
+ const readerPersona = readerPersonaId ? settings.readerPersonas?.presets?.find(p => p.id === readerPersonaId) : undefined;
36
+ const writerPersona = writerPersonaId ? settings.writerPersonas?.presets?.find(p => p.id === writerPersonaId) : undefined;
37
+ let resolvedProject;
38
+ if (project) {
39
+ const files = await this.loadProjectFiles(project.id, project.version ?? 0, project.files ?? [], params.excludedFileIds, warnings);
40
+ resolvedProject = {
41
+ name: project.name,
42
+ instructions: project.instructions,
43
+ files
44
+ };
45
+ }
46
+ const resolvedReader = readerPersona ? {
47
+ name: readerPersona.name,
48
+ description: readerPersona.description,
49
+ style: readerPersona.style
50
+ } : undefined;
51
+ const resolvedWriter = writerPersona ? {
52
+ name: writerPersona.name,
53
+ description: writerPersona.description,
54
+ style: writerPersona.style
55
+ } : undefined;
56
+ return this.buildContext(resolvedProject, resolvedReader, resolvedWriter, warnings);
57
+ }
58
+ buildContext(project, readerPersona, writerPersona, warnings) {
59
+ return {
60
+ project,
61
+ readerPersona,
62
+ writerPersona,
63
+ warnings,
64
+ toString() {
65
+ const sections = [];
66
+ if (writerPersona) {
67
+ sections.push(WriterPersonaSection.format(writerPersona));
68
+ }
69
+ if (readerPersona) {
70
+ sections.push(ReaderPersonaSection.format(readerPersona));
71
+ }
72
+ if (project) {
73
+ const projectText = ProjectSection.format(project);
74
+ if (projectText) {
75
+ sections.push(projectText);
76
+ }
77
+ }
78
+ return sections.length > 0 ? "\n\n" + sections.join("\n\n") : "";
79
+ }
80
+ };
81
+ }
82
+ async loadProjectFiles(projectId, version, files, excludedFileIds, warnings) {
83
+ if (files.length === 0) {
84
+ return [];
85
+ }
86
+ const allFiles = await this.getOrAssembleFiles(projectId, version, files, warnings);
87
+ if (excludedFileIds && excludedFileIds.length > 0) {
88
+ const excluded = new Set(excludedFileIds);
89
+ return allFiles.filter(f => !excluded.has(f.id));
90
+ }
91
+ return allFiles;
92
+ }
93
+ async getOrAssembleFiles(projectId, version, files, warnings) {
94
+ const key = `AiProjectContext/${projectId}/v${version}`;
95
+ const cached = await this.keyValueStore.get(key);
96
+ if (!cached.isFail() && cached.value) {
97
+ try {
98
+ const decompressed = await decompress(Buffer.from(cached.value, "base64"));
99
+ const parsed = JSON.parse(decompressed.toString("utf-8"));
100
+ return parsed.files;
101
+ } catch (error) {
102
+ console.warn("AiPromptContextBuilder: cache entry corrupted, rebuilding", {
103
+ key,
104
+ error
105
+ });
106
+ }
107
+ }
108
+ const assembled = await this.assembleFiles(files, warnings);
109
+ try {
110
+ const payload = {
111
+ files: assembled
112
+ };
113
+ const compressed = await compress(JSON.stringify(payload));
114
+ const expiresAt = new Date();
115
+ expiresAt.setDate(expiresAt.getDate() + CACHE_TTL_DAYS);
116
+ await this.keyValueStore.set(key, compressed.toString("base64"), {
117
+ expiresAt
118
+ });
119
+ } catch (error) {
120
+ console.warn("AiPromptContextBuilder: cache write failed", {
121
+ key,
122
+ error
123
+ });
124
+ }
125
+ return assembled;
126
+ }
127
+ async assembleFiles(files, warnings) {
128
+ const supportedFiles = files.filter(f => isSupportedType(f.mimeType));
129
+ if (supportedFiles.length === 0) {
130
+ return [];
131
+ }
132
+ const results = await Promise.all(supportedFiles.map(async file => {
133
+ const result = await this.getFileContents.execute(file.id);
134
+ if (result.isFail()) {
135
+ const msg = `Failed to load file "${file.name}" (${file.id}): ${result.error.message}`;
136
+ console.warn("AiPromptContextBuilder:", msg);
137
+ warnings.push(msg);
138
+ return null;
139
+ }
140
+ return {
141
+ id: file.id,
142
+ name: file.name,
143
+ content: result.value.buffer.toString("utf-8")
144
+ };
145
+ }));
146
+ return results.filter(r => r !== null);
147
+ }
148
+ }
149
+ export const AiPromptContextBuilder = Abstraction.createImplementation({
150
+ implementation: AiPromptContextBuilderImpl,
151
+ dependencies: [GetSettingsUseCase, GetFileContentsUseCase, GlobalKeyValueStore]
152
+ });
153
+
154
+ //# sourceMappingURL=AiPromptContextBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["compress","decompress","GlobalKeyValueStore","GetFileContentsUseCase","GetSettingsUseCase","AiPromptContextBuilder","Abstraction","WriterPersonaSection","ReaderPersonaSection","ProjectSection","SUPPORTED_MIME_PREFIXES","SUPPORTED_MIME_TYPES","Set","CACHE_TTL_DAYS","isSupportedType","mimeType","some","prefix","startsWith","has","AiPromptContextBuilderImpl","constructor","getSettings","getFileContents","keyValueStore","execute","params","warnings","settingsResult","isFail","push","buildContext","undefined","settings","value","project","projectId","projects","presets","find","p","id","readerPersonaId","defaultReaderPersonaId","writerPersonaId","defaultWriterPersonaId","readerPersona","readerPersonas","writerPersona","writerPersonas","resolvedProject","files","loadProjectFiles","version","excludedFileIds","name","instructions","resolvedReader","description","style","resolvedWriter","toString","sections","format","projectText","length","join","allFiles","getOrAssembleFiles","excluded","filter","f","key","cached","get","decompressed","Buffer","from","parsed","JSON","parse","error","console","warn","assembled","assembleFiles","payload","compressed","stringify","expiresAt","Date","setDate","getDate","set","supportedFiles","results","Promise","all","map","file","result","msg","message","content","buffer","r","createImplementation","implementation","dependencies"],"sources":["AiPromptContextBuilder.ts"],"sourcesContent":["import { compress, decompress } from \"@webiny/utils/features/compression/legacy/gzip.js\";\nimport { GlobalKeyValueStore } from \"@webiny/api-core/features/keyValueStore/index.js\";\nimport { GetFileContentsUseCase } from \"@webiny/api-file-manager/features/file/GetFileContents/index.js\";\nimport { GetSettingsUseCase } from \"~/api/features/GetSettings/index.js\";\nimport {\n AiPromptContextBuilder as Abstraction,\n type AiPromptContext,\n type AiPromptContextParams,\n type ProjectFileContent,\n type ResolvedPersona,\n type ResolvedProject\n} from \"./abstractions.js\";\nimport { WriterPersonaSection } from \"./WriterPersonaSection.js\";\nimport { ReaderPersonaSection } from \"./ReaderPersonaSection.js\";\nimport { ProjectSection } from \"./ProjectSection.js\";\n\nconst SUPPORTED_MIME_PREFIXES = [\"text/\"];\nconst SUPPORTED_MIME_TYPES = new Set([\"application/json\", \"application/csv\"]);\nconst CACHE_TTL_DAYS = 30;\n\nfunction isSupportedType(mimeType: string): boolean {\n if (SUPPORTED_MIME_PREFIXES.some(prefix => mimeType.startsWith(prefix))) {\n return true;\n }\n return SUPPORTED_MIME_TYPES.has(mimeType);\n}\n\ninterface CachedProjectContext {\n files: ProjectFileContent[];\n}\n\nclass AiPromptContextBuilderImpl implements Abstraction.Interface {\n constructor(\n private getSettings: GetSettingsUseCase.Interface,\n private getFileContents: GetFileContentsUseCase.Interface,\n private keyValueStore: GlobalKeyValueStore.Interface\n ) {}\n\n async execute(params: AiPromptContextParams): Promise<AiPromptContext> {\n const warnings: string[] = [];\n\n const settingsResult = await this.getSettings.execute();\n if (settingsResult.isFail()) {\n warnings.push(\"Failed to load AI PowerUps settings.\");\n return this.buildContext(undefined, undefined, undefined, warnings);\n }\n\n const settings = settingsResult.value;\n\n const project = params.projectId\n ? settings.projects?.presets?.find(p => p.id === params.projectId)\n : undefined;\n\n const readerPersonaId =\n params.readerPersonaId ?? project?.defaultReaderPersonaId ?? undefined;\n const writerPersonaId =\n params.writerPersonaId ?? project?.defaultWriterPersonaId ?? undefined;\n\n const readerPersona = readerPersonaId\n ? settings.readerPersonas?.presets?.find(p => p.id === readerPersonaId)\n : undefined;\n\n const writerPersona = writerPersonaId\n ? settings.writerPersonas?.presets?.find(p => p.id === writerPersonaId)\n : undefined;\n\n let resolvedProject: ResolvedProject | undefined;\n\n if (project) {\n const files = await this.loadProjectFiles(\n project.id,\n project.version ?? 0,\n project.files ?? [],\n params.excludedFileIds,\n warnings\n );\n\n resolvedProject = {\n name: project.name,\n instructions: project.instructions,\n files\n };\n }\n\n const resolvedReader: ResolvedPersona | undefined = readerPersona\n ? {\n name: readerPersona.name,\n description: readerPersona.description,\n style: readerPersona.style\n }\n : undefined;\n\n const resolvedWriter: ResolvedPersona | undefined = writerPersona\n ? {\n name: writerPersona.name,\n description: writerPersona.description,\n style: writerPersona.style\n }\n : undefined;\n\n return this.buildContext(resolvedProject, resolvedReader, resolvedWriter, warnings);\n }\n\n private buildContext(\n project: ResolvedProject | undefined,\n readerPersona: ResolvedPersona | undefined,\n writerPersona: ResolvedPersona | undefined,\n warnings: string[]\n ): AiPromptContext {\n return {\n project,\n readerPersona,\n writerPersona,\n warnings,\n toString() {\n const sections: string[] = [];\n\n if (writerPersona) {\n sections.push(WriterPersonaSection.format(writerPersona));\n }\n if (readerPersona) {\n sections.push(ReaderPersonaSection.format(readerPersona));\n }\n if (project) {\n const projectText = ProjectSection.format(project);\n if (projectText) {\n sections.push(projectText);\n }\n }\n\n return sections.length > 0 ? \"\\n\\n\" + sections.join(\"\\n\\n\") : \"\";\n }\n };\n }\n\n private async loadProjectFiles(\n projectId: string,\n version: number,\n files: Array<{ id: string; name: string; mimeType: string }>,\n excludedFileIds: string[] | null | undefined,\n warnings: string[]\n ): Promise<ProjectFileContent[]> {\n if (files.length === 0) {\n return [];\n }\n\n const allFiles = await this.getOrAssembleFiles(projectId, version, files, warnings);\n\n if (excludedFileIds && excludedFileIds.length > 0) {\n const excluded = new Set(excludedFileIds);\n return allFiles.filter(f => !excluded.has(f.id));\n }\n\n return allFiles;\n }\n\n private async getOrAssembleFiles(\n projectId: string,\n version: number,\n files: Array<{ id: string; name: string; mimeType: string }>,\n warnings: string[]\n ): Promise<ProjectFileContent[]> {\n const key = `AiProjectContext/${projectId}/v${version}`;\n\n const cached = await this.keyValueStore.get<string>(key);\n if (!cached.isFail() && cached.value) {\n try {\n const decompressed = await decompress(Buffer.from(cached.value, \"base64\"));\n const parsed = JSON.parse(decompressed.toString(\"utf-8\")) as CachedProjectContext;\n return parsed.files;\n } catch (error) {\n console.warn(\"AiPromptContextBuilder: cache entry corrupted, rebuilding\", {\n key,\n error\n });\n }\n }\n\n const assembled = await this.assembleFiles(files, warnings);\n\n try {\n const payload: CachedProjectContext = { files: assembled };\n const compressed = await compress(JSON.stringify(payload));\n const expiresAt = new Date();\n expiresAt.setDate(expiresAt.getDate() + CACHE_TTL_DAYS);\n await this.keyValueStore.set(key, compressed.toString(\"base64\"), { expiresAt });\n } catch (error) {\n console.warn(\"AiPromptContextBuilder: cache write failed\", { key, error });\n }\n\n return assembled;\n }\n\n private async assembleFiles(\n files: Array<{ id: string; name: string; mimeType: string }>,\n warnings: string[]\n ): Promise<ProjectFileContent[]> {\n const supportedFiles = files.filter(f => isSupportedType(f.mimeType));\n\n if (supportedFiles.length === 0) {\n return [];\n }\n\n const results = await Promise.all(\n supportedFiles.map(async (file): Promise<ProjectFileContent | null> => {\n const result = await this.getFileContents.execute(file.id);\n\n if (result.isFail()) {\n const msg = `Failed to load file \"${file.name}\" (${file.id}): ${result.error.message}`;\n console.warn(\"AiPromptContextBuilder:\", msg);\n warnings.push(msg);\n return null;\n }\n\n return {\n id: file.id,\n name: file.name,\n content: result.value.buffer.toString(\"utf-8\")\n };\n })\n );\n\n return results.filter((r): r is ProjectFileContent => r !== null);\n }\n}\n\nexport const AiPromptContextBuilder = Abstraction.createImplementation({\n implementation: AiPromptContextBuilderImpl,\n dependencies: [GetSettingsUseCase, GetFileContentsUseCase, GlobalKeyValueStore]\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ import type { ResolvedProject } from "./abstractions.js";
2
+ export declare class ProjectSection {
3
+ static format(project: ResolvedProject): string;
4
+ }
@@ -0,0 +1,22 @@
1
+ export class ProjectSection {
2
+ static format(project) {
3
+ const hasInstructions = !!project.instructions;
4
+ const hasFiles = project.files.length > 0;
5
+ if (!hasInstructions && !hasFiles) {
6
+ return "";
7
+ }
8
+ const parts = [`## Project: ${project.name}`];
9
+ if (hasInstructions) {
10
+ parts.push(project.instructions);
11
+ }
12
+ if (hasFiles) {
13
+ parts.push("### Reference files");
14
+ for (const file of project.files) {
15
+ parts.push(`--- ${file.name} ---\n${file.content}`);
16
+ }
17
+ }
18
+ return parts.join("\n\n");
19
+ }
20
+ }
21
+
22
+ //# sourceMappingURL=ProjectSection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ProjectSection","format","project","hasInstructions","instructions","hasFiles","files","length","parts","name","push","file","content","join"],"sources":["ProjectSection.ts"],"sourcesContent":["import type { ResolvedProject } from \"./abstractions.js\";\n\nexport class ProjectSection {\n static format(project: ResolvedProject): string {\n const hasInstructions = !!project.instructions;\n const hasFiles = project.files.length > 0;\n\n if (!hasInstructions && !hasFiles) {\n return \"\";\n }\n\n const parts: string[] = [`## Project: ${project.name}`];\n\n if (hasInstructions) {\n parts.push(project.instructions!);\n }\n\n if (hasFiles) {\n parts.push(\"### Reference files\");\n for (const file of project.files) {\n parts.push(`--- ${file.name} ---\\n${file.content}`);\n }\n }\n\n return parts.join(\"\\n\\n\");\n }\n}\n"],"mappings":"AAEA,OAAO,MAAMA,cAAc,CAAC;EACxB,OAAOC,MAAMA,CAACC,OAAwB,EAAU;IAC5C,MAAMC,eAAe,GAAG,CAAC,CAACD,OAAO,CAACE,YAAY;IAC9C,MAAMC,QAAQ,GAAGH,OAAO,CAACI,KAAK,CAACC,MAAM,GAAG,CAAC;IAEzC,IAAI,CAACJ,eAAe,IAAI,CAACE,QAAQ,EAAE;MAC/B,OAAO,EAAE;IACb;IAEA,MAAMG,KAAe,GAAG,CAAC,eAAeN,OAAO,CAACO,IAAI,EAAE,CAAC;IAEvD,IAAIN,eAAe,EAAE;MACjBK,KAAK,CAACE,IAAI,CAACR,OAAO,CAACE,YAAa,CAAC;IACrC;IAEA,IAAIC,QAAQ,EAAE;MACVG,KAAK,CAACE,IAAI,CAAC,qBAAqB,CAAC;MACjC,KAAK,MAAMC,IAAI,IAAIT,OAAO,CAACI,KAAK,EAAE;QAC9BE,KAAK,CAACE,IAAI,CAAC,OAAOC,IAAI,CAACF,IAAI,SAASE,IAAI,CAACC,OAAO,EAAE,CAAC;MACvD;IACJ;IAEA,OAAOJ,KAAK,CAACK,IAAI,CAAC,MAAM,CAAC;EAC7B;AACJ","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ import type { ResolvedPersona } from "./abstractions.js";
2
+ export declare class ReaderPersonaSection {
3
+ static format(persona: ResolvedPersona): string;
4
+ }
@@ -0,0 +1,11 @@
1
+ export 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) {
5
+ section += `\nExpected tone/style: ${persona.style}`;
6
+ }
7
+ return section;
8
+ }
9
+ }
10
+
11
+ //# sourceMappingURL=ReaderPersonaSection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ReaderPersonaSection","format","persona","section","name","description","style"],"sources":["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"],"mappings":"AAEA,OAAO,MAAMA,oBAAoB,CAAC;EAC9B,OAAOC,MAAMA,CAACC,OAAwB,EAAU;IAC5C,IAAIC,OAAO,GAAG,gEAAgED,OAAO,CAACE,IAAI,MAAMF,OAAO,CAACG,WAAW,EAAE;IAErH,IAAIH,OAAO,CAACI,KAAK,EAAE;MACfH,OAAO,IAAI,0BAA0BD,OAAO,CAACI,KAAK,EAAE;IACxD;IAEA,OAAOH,OAAO;EAClB;AACJ","ignoreList":[]}
@@ -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,11 @@
1
+ export class WriterPersonaSection {
2
+ static format(persona) {
3
+ let section = `### Writer Persona\n\nYou are writing as "${persona.name}": ${persona.description}`;
4
+ if (persona.style) {
5
+ section += `\nStyle: ${persona.style}`;
6
+ }
7
+ return section;
8
+ }
9
+ }
10
+
11
+ //# sourceMappingURL=WriterPersonaSection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["WriterPersonaSection","format","persona","section","name","description","style"],"sources":["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"],"mappings":"AAEA,OAAO,MAAMA,oBAAoB,CAAC;EAC9B,OAAOC,MAAMA,CAACC,OAAwB,EAAU;IAC5C,IAAIC,OAAO,GAAG,6CAA6CD,OAAO,CAACE,IAAI,MAAMF,OAAO,CAACG,WAAW,EAAE;IAElG,IAAIH,OAAO,CAACI,KAAK,EAAE;MACfH,OAAO,IAAI,YAAYD,OAAO,CAACI,KAAK,EAAE;IAC1C;IAEA,OAAOH,OAAO;EAClB;AACJ","ignoreList":[]}
@@ -0,0 +1,37 @@
1
+ export interface AiPromptContextParams {
2
+ projectId?: string | null;
3
+ readerPersonaId?: string | null;
4
+ writerPersonaId?: string | null;
5
+ excludedFileIds?: string[] | null;
6
+ }
7
+ export interface ProjectFileContent {
8
+ id: string;
9
+ name: string;
10
+ content: string;
11
+ }
12
+ export interface ResolvedProject {
13
+ name: string;
14
+ instructions?: string;
15
+ files: ProjectFileContent[];
16
+ }
17
+ export interface ResolvedPersona {
18
+ name: string;
19
+ description: string;
20
+ style?: string;
21
+ }
22
+ export interface AiPromptContext {
23
+ project?: ResolvedProject;
24
+ readerPersona?: ResolvedPersona;
25
+ writerPersona?: ResolvedPersona;
26
+ warnings: string[];
27
+ toString(): string;
28
+ }
29
+ export interface IAiPromptContextBuilder {
30
+ execute(params: AiPromptContextParams): Promise<AiPromptContext>;
31
+ }
32
+ export declare const AiPromptContextBuilder: import("@webiny/di").Abstraction<IAiPromptContextBuilder>;
33
+ export declare namespace AiPromptContextBuilder {
34
+ type Interface = IAiPromptContextBuilder;
35
+ type Params = AiPromptContextParams;
36
+ type Context = AiPromptContext;
37
+ }
@@ -0,0 +1,4 @@
1
+ import { createAbstraction } from "@webiny/feature/api";
2
+ export const AiPromptContextBuilder = createAbstraction("AiPowerUpsPromptContextBuilder");
3
+
4
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createAbstraction","AiPromptContextBuilder"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\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}\n\nexport interface ResolvedProject {\n name: string;\n instructions?: string;\n files: ProjectFileContent[];\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 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"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AAuCvD,OAAO,MAAMC,sBAAsB,GAAGD,iBAAiB,CACnD,gCACJ,CAAC","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ export declare const AiPromptContextFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -0,0 +1,10 @@
1
+ import { createFeature } from "@webiny/feature/api";
2
+ import { AiPromptContextBuilder } from "./AiPromptContextBuilder.js";
3
+ export const AiPromptContextFeature = createFeature({
4
+ name: "AiPowerUps/AiPromptContext",
5
+ register(container) {
6
+ container.register(AiPromptContextBuilder);
7
+ }
8
+ });
9
+
10
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createFeature","AiPromptContextBuilder","AiPromptContextFeature","name","register","container"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { AiPromptContextBuilder } from \"./AiPromptContextBuilder.js\";\n\nexport const AiPromptContextFeature = createFeature({\n name: \"AiPowerUps/AiPromptContext\",\n register(container) {\n container.register(AiPromptContextBuilder);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,sBAAsB;AAE/B,OAAO,MAAMC,sBAAsB,GAAGF,aAAa,CAAC;EAChDG,IAAI,EAAE,4BAA4B;EAClCC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACD,QAAQ,CAACH,sBAAsB,CAAC;EAC9C;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export { AiPromptContextBuilder, type ResolvedProject, type ResolvedPersona, type ProjectFileContent } from "./abstractions.js";
@@ -0,0 +1,3 @@
1
+ export { AiPromptContextBuilder } from "./abstractions.js";
2
+
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AiPromptContextBuilder"],"sources":["index.ts"],"sourcesContent":["export {\n AiPromptContextBuilder,\n type ResolvedProject,\n type ResolvedPersona,\n type ProjectFileContent\n} from \"./abstractions.js\";\n"],"mappings":"AAAA,SACIA,sBAAsB","ignoreList":[]}
@@ -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 { AiPowerUpsSettingsGroupHandler, AiPowerUpsSettingsCache } 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) {
15
+ return Result.ok(cached.mapped);
16
+ }
17
+ const storeResult = await this.keyValueStore.get(AI_POWER_UPS_SETTINGS);
18
+ const raw = storeResult.isOk() && storeResult.value ? storeResult.value : {};
19
+ const result = {};
20
+ for (const handler of this.handlers) {
21
+ result[handler.name] = handler.mapFromStorage(raw[handler.name]);
22
+ }
23
+ for (const key of Object.keys(raw)) {
24
+ if (!(key in result)) {
25
+ result[key] = raw[key];
26
+ }
27
+ }
28
+ const mapped = result;
29
+ this.cache.set(raw, mapped);
30
+ return Result.ok(mapped);
31
+ }
32
+ }
33
+ export const GetSettingsRepositoryImplementation = GetSettingsRepository.createImplementation({
34
+ implementation: GetSettingsRepositoryImpl,
35
+ dependencies: [KeyValueStore, [AiPowerUpsSettingsGroupHandler, {
36
+ multiple: true
37
+ }], AiPowerUpsSettingsCache]
38
+ });
39
+
40
+ //# sourceMappingURL=GetSettingsRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Result","KeyValueStore","AiPowerUpsSettingsGroupHandler","AiPowerUpsSettingsCache","GetSettingsRepository","AI_POWER_UPS_SETTINGS","GetSettingsRepositoryImpl","constructor","keyValueStore","handlers","cache","get","cached","ok","mapped","storeResult","raw","isOk","value","result","handler","name","mapFromStorage","key","Object","keys","set","GetSettingsRepositoryImplementation","createImplementation","implementation","dependencies","multiple"],"sources":["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"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,aAAa,QAAQ,kDAAkD;AAChF,SACIC,8BAA8B,EAC9BC,uBAAuB;AAE3B,SAASC,qBAAqB;AAE9B,SAASC,qBAAqB;AAE9B,MAAMC,yBAAyB,CAA4C;EACvEC,WAAWA,CACCC,aAAsC,EACtCC,QAAoD,EACpDC,KAAwC,EAClD;IAAA,KAHUF,aAAsC,GAAtCA,aAAsC;IAAA,KACtCC,QAAoD,GAApDA,QAAoD;IAAA,KACpDC,KAAwC,GAAxCA,KAAwC;EACjD;EAEH,MAAMC,GAAGA,CAAA,EAAyC;IAC9C,MAAMC,MAAM,GAAG,IAAI,CAACF,KAAK,CAACC,GAAG,CAAC,CAAC;IAC/B,IAAIC,MAAM,EAAE;MACR,OAAOZ,MAAM,CAACa,EAAE,CAACD,MAAM,CAACE,MAAM,CAAC;IACnC;IAEA,MAAMC,WAAW,GACb,MAAM,IAAI,CAACP,aAAa,CAACG,GAAG,CAA0BN,qBAAqB,CAAC;IAEhF,MAAMW,GAA4B,GAC9BD,WAAW,CAACE,IAAI,CAAC,CAAC,IAAIF,WAAW,CAACG,KAAK,GAAGH,WAAW,CAACG,KAAK,GAAG,CAAC,CAAC;IAEpE,MAAMC,MAA+B,GAAG,CAAC,CAAC;IAE1C,KAAK,MAAMC,OAAO,IAAI,IAAI,CAACX,QAAQ,EAAE;MACjCU,MAAM,CAACC,OAAO,CAACC,IAAI,CAAC,GAAGD,OAAO,CAACE,cAAc,CAACN,GAAG,CAACI,OAAO,CAACC,IAAI,CAAC,CAAC;IACpE;IAEA,KAAK,MAAME,GAAG,IAAIC,MAAM,CAACC,IAAI,CAACT,GAAG,CAAC,EAAE;MAChC,IAAI,EAAEO,GAAG,IAAIJ,MAAM,CAAC,EAAE;QAClBA,MAAM,CAACI,GAAG,CAAC,GAAGP,GAAG,CAACO,GAAG,CAAC;MAC1B;IACJ;IAEA,MAAMT,MAAM,GAAGK,MAAwC;IACvD,IAAI,CAACT,KAAK,CAACgB,GAAG,CAACV,GAAG,EAAEF,MAAM,CAAC;IAE3B,OAAOd,MAAM,CAACa,EAAE,CAACC,MAAM,CAAC;EAC5B;AACJ;AAEA,OAAO,MAAMa,mCAAmC,GAAGvB,qBAAqB,CAACwB,oBAAoB,CAAC;EAC1FC,cAAc,EAAEvB,yBAAyB;EACzCwB,YAAY,EAAE,CACV7B,aAAa,EACb,CAACC,8BAA8B,EAAE;IAAE6B,QAAQ,EAAE;EAAK,CAAC,CAAC,EACpD5B,uBAAuB;AAE/B,CAAC,CAAC","ignoreList":[]}
@@ -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,15 @@
1
+ import { GetSettingsUseCase, GetSettingsRepository } from "./abstractions.js";
2
+ class GetSettingsUseCaseImpl {
3
+ constructor(repository) {
4
+ this.repository = repository;
5
+ }
6
+ execute() {
7
+ return this.repository.get();
8
+ }
9
+ }
10
+ export const GetSettingsUseCaseImplementation = GetSettingsUseCase.createImplementation({
11
+ implementation: GetSettingsUseCaseImpl,
12
+ dependencies: [GetSettingsRepository]
13
+ });
14
+
15
+ //# sourceMappingURL=GetSettingsUseCase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["GetSettingsUseCase","GetSettingsRepository","GetSettingsUseCaseImpl","constructor","repository","execute","get","GetSettingsUseCaseImplementation","createImplementation","implementation","dependencies"],"sources":["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"],"mappings":"AAAA,SAASA,kBAAkB,EAAEC,qBAAqB;AAElD,MAAMC,sBAAsB,CAAyC;EACjEC,WAAWA,CAASC,UAA2C,EAAE;IAAA,KAA7CA,UAA2C,GAA3CA,UAA2C;EAAG;EAElEC,OAAOA,CAAA,EAAG;IACN,OAAO,IAAI,CAACD,UAAU,CAACE,GAAG,CAAC,CAAC;EAChC;AACJ;AAEA,OAAO,MAAMC,gCAAgC,GAAGP,kBAAkB,CAACQ,oBAAoB,CAAC;EACpFC,cAAc,EAAEP,sBAAsB;EACtCQ,YAAY,EAAE,CAACT,qBAAqB;AACxC,CAAC,CAAC","ignoreList":[]}
@@ -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,5 @@
1
+ import { createAbstraction } from "@webiny/feature/api";
2
+ export const GetSettingsRepository = createAbstraction("AiPowerUpsGetSettingsRepository");
3
+ export const GetSettingsUseCase = createAbstraction("AiPowerUpsGetSettingsUseCase");
4
+
5
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createAbstraction","GetSettingsRepository","GetSettingsUseCase"],"sources":["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"],"mappings":"AAAA,SAASA,iBAAiB,QAAgB,qBAAqB;AAO/D,OAAO,MAAMC,qBAAqB,GAAGD,iBAAiB,CAClD,iCACJ,CAAC;AAUD,OAAO,MAAME,kBAAkB,GAAGF,iBAAiB,CAC/C,8BACJ,CAAC","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ export declare const GetSettingsFeature: {
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 { GetSettingsRepositoryImplementation } from "./GetSettingsRepository.js";
3
+ import { GetSettingsUseCaseImplementation } from "./GetSettingsUseCase.js";
4
+ export const GetSettingsFeature = createFeature({
5
+ name: "AiPowerUpsGetSettings",
6
+ register(container) {
7
+ container.register(GetSettingsRepositoryImplementation).inSingletonScope();
8
+ container.register(GetSettingsUseCaseImplementation);
9
+ }
10
+ });
11
+
12
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createFeature","GetSettingsRepositoryImplementation","GetSettingsUseCaseImplementation","GetSettingsFeature","name","register","container","inSingletonScope"],"sources":["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"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,mCAAmC;AAC5C,SAASC,gCAAgC;AAEzC,OAAO,MAAMC,kBAAkB,GAAGH,aAAa,CAAC;EAC5CI,IAAI,EAAE,uBAAuB;EAC7BC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACD,QAAQ,CAACJ,mCAAmC,CAAC,CAACM,gBAAgB,CAAC,CAAC;IAC1ED,SAAS,CAACD,QAAQ,CAACH,gCAAgC,CAAC;EACxD;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export { GetSettingsUseCase } from "./abstractions.js";
@@ -0,0 +1,3 @@
1
+ export { GetSettingsUseCase } from "./abstractions.js";
2
+
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["GetSettingsUseCase"],"sources":["index.ts"],"sourcesContent":["export { GetSettingsUseCase } from \"./abstractions.js\";\n"],"mappings":"AAAA,SAASA,kBAAkB","ignoreList":[]}