@webiny/ai-powerups 6.3.0 → 6.4.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (274) hide show
  1. package/AiPowerups.js +8 -9
  2. package/AiPowerups.js.map +1 -1
  3. package/admin/Extension.js +28 -26
  4. package/admin/Extension.js.map +1 -1
  5. package/admin/domain/errors.d.ts +12 -0
  6. package/admin/domain/errors.js +21 -0
  7. package/admin/domain/errors.js.map +1 -0
  8. package/admin/features/feature.js +13 -12
  9. package/admin/features/feature.js.map +1 -1
  10. package/admin/features/generatePageContent/GeneratePageContentGateway.js +35 -16
  11. package/admin/features/generatePageContent/GeneratePageContentGateway.js.map +1 -1
  12. package/admin/features/generatePageContent/GeneratePageContentUseCase.js +13 -10
  13. package/admin/features/generatePageContent/GeneratePageContentUseCase.js.map +1 -1
  14. package/admin/features/generatePageContent/abstractions.d.ts +4 -0
  15. package/admin/features/generatePageContent/abstractions.js +3 -2
  16. package/admin/features/generatePageContent/abstractions.js.map +1 -1
  17. package/admin/features/generatePageContent/feature.js +7 -6
  18. package/admin/features/generatePageContent/feature.js.map +1 -1
  19. package/admin/features/generatePageContent/index.js +1 -3
  20. package/admin/features/listModels/ListModelsGateway.js +17 -14
  21. package/admin/features/listModels/ListModelsGateway.js.map +1 -1
  22. package/admin/features/listModels/ListModelsRepository.js +21 -18
  23. package/admin/features/listModels/ListModelsRepository.js.map +1 -1
  24. package/admin/features/listModels/ListModelsUseCase.js +13 -10
  25. package/admin/features/listModels/ListModelsUseCase.js.map +1 -1
  26. package/admin/features/listModels/abstractions.js +4 -3
  27. package/admin/features/listModels/abstractions.js.map +1 -1
  28. package/admin/features/listModels/feature.js +15 -14
  29. package/admin/features/listModels/feature.js.map +1 -1
  30. package/admin/features/listModels/index.js +1 -3
  31. package/admin/features/settings/getSettings/GetSettingsGateway.js +17 -14
  32. package/admin/features/settings/getSettings/GetSettingsGateway.js.map +1 -1
  33. package/admin/features/settings/getSettings/GetSettingsRepository.js +23 -23
  34. package/admin/features/settings/getSettings/GetSettingsRepository.js.map +1 -1
  35. package/admin/features/settings/getSettings/GetSettingsUseCase.js +13 -10
  36. package/admin/features/settings/getSettings/GetSettingsUseCase.js.map +1 -1
  37. package/admin/features/settings/getSettings/abstractions.js +4 -3
  38. package/admin/features/settings/getSettings/abstractions.js.map +1 -1
  39. package/admin/features/settings/getSettings/feature.js +15 -14
  40. package/admin/features/settings/getSettings/feature.js.map +1 -1
  41. package/admin/features/settings/getSettings/index.js +1 -3
  42. package/admin/features/settings/shared/SettingsCache.js +14 -13
  43. package/admin/features/settings/shared/SettingsCache.js.map +1 -1
  44. package/admin/features/settings/shared/abstractions.d.ts +32 -0
  45. package/admin/features/settings/shared/abstractions.js +2 -18
  46. package/admin/features/settings/shared/abstractions.js.map +1 -1
  47. package/admin/features/settings/shared/feature.js +11 -10
  48. package/admin/features/settings/shared/feature.js.map +1 -1
  49. package/admin/features/settings/shared/index.js +0 -2
  50. package/admin/features/settings/updateSettings/UpdateSettingsGateway.js +34 -18
  51. package/admin/features/settings/updateSettings/UpdateSettingsGateway.js.map +1 -1
  52. package/admin/features/settings/updateSettings/UpdateSettingsRepository.js +17 -13
  53. package/admin/features/settings/updateSettings/UpdateSettingsRepository.js.map +1 -1
  54. package/admin/features/settings/updateSettings/UpdateSettingsUseCase.js +13 -10
  55. package/admin/features/settings/updateSettings/UpdateSettingsUseCase.js.map +1 -1
  56. package/admin/features/settings/updateSettings/abstractions.js +4 -3
  57. package/admin/features/settings/updateSettings/abstractions.js.map +1 -1
  58. package/admin/features/settings/updateSettings/feature.js +15 -14
  59. package/admin/features/settings/updateSettings/feature.js.map +1 -1
  60. package/admin/features/settings/updateSettings/index.js +1 -3
  61. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPage.d.ts +4 -0
  62. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPage.js +50 -0
  63. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPage.js.map +1 -0
  64. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPresenter.d.ts +2 -1
  65. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPresenter.js +133 -129
  66. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPresenter.js.map +1 -1
  67. package/admin/presentation/AiPowerUpsSettings/abstractions.d.ts +2 -1
  68. package/admin/presentation/AiPowerUpsSettings/abstractions.js +2 -1
  69. package/admin/presentation/AiPowerUpsSettings/abstractions.js.map +1 -1
  70. package/admin/presentation/AiPowerUpsSettings/feature.js +20 -16
  71. package/admin/presentation/AiPowerUpsSettings/feature.js.map +1 -1
  72. package/admin/presentation/AiPowerUpsSettings/index.d.ts +0 -3
  73. package/admin/presentation/AiPowerUpsSettings/index.js +0 -5
  74. package/admin/presentation/AiPowerUpsSettings/settingsGroup.js +2 -1
  75. package/admin/presentation/AiPowerUpsSettings/settingsGroup.js.map +1 -1
  76. package/admin/presentation/AiPowerUpsSettings/useAiPowerUpsSettings.js +19 -20
  77. package/admin/presentation/AiPowerUpsSettings/useAiPowerUpsSettings.js.map +1 -1
  78. package/admin/presentation/{PersonasSettings.d.ts → ProjectsSettings.d.ts} +2 -2
  79. package/admin/presentation/ProjectsSettings.js +56 -0
  80. package/admin/presentation/ProjectsSettings.js.map +1 -0
  81. package/admin/presentation/ProvidersSettings.js +39 -33
  82. package/admin/presentation/ProvidersSettings.js.map +1 -1
  83. package/admin/presentation/ReaderPersonasSettings.d.ts +11 -0
  84. package/admin/presentation/ReaderPersonasSettings.js +37 -0
  85. package/admin/presentation/ReaderPersonasSettings.js.map +1 -0
  86. package/admin/presentation/WbContentGeneration/Extension.js +15 -16
  87. package/admin/presentation/WbContentGeneration/Extension.js.map +1 -1
  88. package/admin/presentation/WbContentGeneration/GenerateContentButton.js +12 -17
  89. package/admin/presentation/WbContentGeneration/GenerateContentButton.js.map +1 -1
  90. package/admin/presentation/WbContentGeneration/GenerateContentDialog.js +94 -127
  91. package/admin/presentation/WbContentGeneration/GenerateContentDialog.js.map +1 -1
  92. package/admin/presentation/WbContentGeneration/GenerateContentPresenter.d.ts +19 -5
  93. package/admin/presentation/WbContentGeneration/GenerateContentPresenter.js +214 -77
  94. package/admin/presentation/WbContentGeneration/GenerateContentPresenter.js.map +1 -1
  95. package/admin/presentation/WbContentGeneration/abstractions.d.ts +4 -2
  96. package/admin/presentation/WbContentGeneration/abstractions.js +2 -1
  97. package/admin/presentation/WbContentGeneration/abstractions.js.map +1 -1
  98. package/admin/presentation/WbContentGeneration/decompressGzipBase64.js +10 -11
  99. package/admin/presentation/WbContentGeneration/decompressGzipBase64.js.map +1 -1
  100. package/admin/presentation/WbContentGeneration/feature.js +11 -10
  101. package/admin/presentation/WbContentGeneration/feature.js.map +1 -1
  102. package/admin/presentation/WriterPersonasSettings.d.ts +11 -0
  103. package/admin/presentation/WriterPersonasSettings.js +37 -0
  104. package/admin/presentation/WriterPersonasSettings.js.map +1 -0
  105. package/admin/routes.d.ts +4 -0
  106. package/admin/routes.js +10 -0
  107. package/admin/routes.js.map +1 -0
  108. package/api/Extension.js +28 -11
  109. package/api/Extension.js.map +1 -1
  110. package/api/constants.js +2 -1
  111. package/api/constants.js.map +1 -1
  112. package/api/features/AiImageEnrichment/AiImageEnrichmentAfterCreateHandler.d.ts +11 -0
  113. package/api/features/AiImageEnrichment/AiImageEnrichmentAfterCreateHandler.js +27 -0
  114. package/api/features/AiImageEnrichment/AiImageEnrichmentAfterCreateHandler.js.map +1 -0
  115. package/api/features/AiImageEnrichment/AiImageEnrichmentTask.d.ts +34 -0
  116. package/api/features/AiImageEnrichment/AiImageEnrichmentTask.js +140 -0
  117. package/api/features/AiImageEnrichment/AiImageEnrichmentTask.js.map +1 -0
  118. package/api/features/AiImageEnrichment/feature.d.ts +4 -0
  119. package/api/features/AiImageEnrichment/feature.js +13 -0
  120. package/api/features/AiImageEnrichment/feature.js.map +1 -0
  121. package/api/features/AiPromptContext/AiPromptContextBuilder.d.ts +12 -0
  122. package/api/features/AiPromptContext/AiPromptContextBuilder.js +103 -0
  123. package/api/features/AiPromptContext/AiPromptContextBuilder.js.map +1 -0
  124. package/api/features/AiPromptContext/ProjectFileAssembler.d.ts +22 -0
  125. package/api/features/AiPromptContext/ProjectFileAssembler.js +76 -0
  126. package/api/features/AiPromptContext/ProjectFileAssembler.js.map +1 -0
  127. package/api/features/AiPromptContext/ProjectFileCache.d.ts +16 -0
  128. package/api/features/AiPromptContext/ProjectFileCache.js +61 -0
  129. package/api/features/AiPromptContext/ProjectFileCache.js.map +1 -0
  130. package/api/features/AiPromptContext/ProjectSection.d.ts +4 -0
  131. package/api/features/AiPromptContext/ProjectSection.js +35 -0
  132. package/api/features/AiPromptContext/ProjectSection.js.map +1 -0
  133. package/api/features/AiPromptContext/ReadProjectFileTool.d.ts +3 -0
  134. package/api/features/AiPromptContext/ReadProjectFileTool.js +36 -0
  135. package/api/features/AiPromptContext/ReadProjectFileTool.js.map +1 -0
  136. package/api/features/AiPromptContext/ReaderPersonaSection.d.ts +4 -0
  137. package/api/features/AiPromptContext/ReaderPersonaSection.js +10 -0
  138. package/api/features/AiPromptContext/ReaderPersonaSection.js.map +1 -0
  139. package/api/features/AiPromptContext/WriterPersonaSection.d.ts +4 -0
  140. package/api/features/AiPromptContext/WriterPersonaSection.js +10 -0
  141. package/api/features/AiPromptContext/WriterPersonaSection.js.map +1 -0
  142. package/api/features/AiPromptContext/abstractions.d.ts +68 -0
  143. package/api/features/AiPromptContext/abstractions.js +7 -0
  144. package/api/features/AiPromptContext/abstractions.js.map +1 -0
  145. package/api/features/AiPromptContext/feature.d.ts +4 -0
  146. package/api/features/AiPromptContext/feature.js +15 -0
  147. package/api/features/AiPromptContext/feature.js.map +1 -0
  148. package/api/features/AiPromptContext/index.d.ts +1 -0
  149. package/api/features/AiPromptContext/index.js +1 -0
  150. package/api/features/ExtractFrontmatter/ExtractFrontmatterBeforeCreateHandler.d.ts +11 -0
  151. package/api/features/ExtractFrontmatter/ExtractFrontmatterBeforeCreateHandler.js +34 -0
  152. package/api/features/ExtractFrontmatter/ExtractFrontmatterBeforeCreateHandler.js.map +1 -0
  153. package/api/features/ExtractFrontmatter/feature.d.ts +4 -0
  154. package/api/features/ExtractFrontmatter/feature.js +11 -0
  155. package/api/features/ExtractFrontmatter/feature.js.map +1 -0
  156. package/api/features/GetSettings/GetSettingsRepository.d.ts +3 -2
  157. package/api/features/GetSettings/GetSettingsRepository.js +29 -26
  158. package/api/features/GetSettings/GetSettingsRepository.js.map +1 -1
  159. package/api/features/GetSettings/GetSettingsUseCase.js +13 -10
  160. package/api/features/GetSettings/GetSettingsUseCase.js.map +1 -1
  161. package/api/features/GetSettings/abstractions.js +3 -2
  162. package/api/features/GetSettings/abstractions.js.map +1 -1
  163. package/api/features/GetSettings/feature.js +7 -6
  164. package/api/features/GetSettings/feature.js.map +1 -1
  165. package/api/features/GetSettings/index.js +0 -2
  166. package/api/features/Projects/ProjectsHandler.d.ts +31 -0
  167. package/api/features/Projects/ProjectsHandler.js +103 -0
  168. package/api/features/Projects/ProjectsHandler.js.map +1 -0
  169. package/api/features/Projects/feature.d.ts +4 -0
  170. package/api/features/Projects/feature.js +11 -0
  171. package/api/features/Projects/feature.js.map +1 -0
  172. package/api/features/Projects/types.d.ts +50 -0
  173. package/api/features/Projects/types.js +0 -0
  174. package/api/features/Providers/ProvidersGraphQLMapper.js +33 -30
  175. package/api/features/Providers/ProvidersGraphQLMapper.js.map +1 -1
  176. package/api/features/Providers/ProvidersHandler.js +67 -64
  177. package/api/features/Providers/ProvidersHandler.js.map +1 -1
  178. package/api/features/Providers/feature.js +7 -6
  179. package/api/features/Providers/feature.js.map +1 -1
  180. package/api/features/Providers/index.js +0 -3
  181. package/api/features/Providers/types.js +0 -3
  182. package/api/features/ReaderPersonas/ReaderPersonasHandler.d.ts +20 -0
  183. package/api/features/ReaderPersonas/ReaderPersonasHandler.js +43 -0
  184. package/api/features/ReaderPersonas/ReaderPersonasHandler.js.map +1 -0
  185. package/api/features/ReaderPersonas/feature.d.ts +4 -0
  186. package/api/features/ReaderPersonas/feature.js +11 -0
  187. package/api/features/ReaderPersonas/feature.js.map +1 -0
  188. package/api/features/ReaderPersonas/index.d.ts +2 -0
  189. package/api/features/ReaderPersonas/index.js +1 -0
  190. package/api/features/ReaderPersonas/types.d.ts +24 -0
  191. package/api/features/ReaderPersonas/types.js +0 -0
  192. package/api/features/UpdateSettings/UpdateSettingsRepository.d.ts +3 -2
  193. package/api/features/UpdateSettings/UpdateSettingsRepository.js +59 -62
  194. package/api/features/UpdateSettings/UpdateSettingsRepository.js.map +1 -1
  195. package/api/features/UpdateSettings/UpdateSettingsUseCase.js +23 -21
  196. package/api/features/UpdateSettings/UpdateSettingsUseCase.js.map +1 -1
  197. package/api/features/UpdateSettings/abstractions.js +5 -7
  198. package/api/features/UpdateSettings/abstractions.js.map +1 -1
  199. package/api/features/UpdateSettings/errors.d.ts +10 -0
  200. package/api/features/UpdateSettings/errors.js +14 -0
  201. package/api/features/UpdateSettings/errors.js.map +1 -0
  202. package/api/features/UpdateSettings/events.js +16 -11
  203. package/api/features/UpdateSettings/events.js.map +1 -1
  204. package/api/features/UpdateSettings/feature.js +7 -6
  205. package/api/features/UpdateSettings/feature.js.map +1 -1
  206. package/api/features/UpdateSettings/index.js +1 -3
  207. package/api/features/WbGeneratePageContent/WbGeneratePageContentTask.d.ts +4 -0
  208. package/api/features/WbGeneratePageContent/WbGeneratePageContentTask.js +63 -60
  209. package/api/features/WbGeneratePageContent/WbGeneratePageContentTask.js.map +1 -1
  210. package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.d.ts +5 -3
  211. package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.js +92 -53
  212. package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.js.map +1 -1
  213. package/api/features/WbGeneratePageContent/abstractions.d.ts +15 -1
  214. package/api/features/WbGeneratePageContent/abstractions.js +2 -1
  215. package/api/features/WbGeneratePageContent/abstractions.js.map +1 -1
  216. package/api/features/WbGeneratePageContent/buildPrompt.d.ts +1 -1
  217. package/api/features/WbGeneratePageContent/buildPrompt.js +11 -10
  218. package/api/features/WbGeneratePageContent/buildPrompt.js.map +1 -1
  219. package/api/features/WbGeneratePageContent/feature.js +7 -6
  220. package/api/features/WbGeneratePageContent/feature.js.map +1 -1
  221. package/api/features/WbGeneratePageContent/index.js +0 -2
  222. package/api/features/WriterPersonas/WriterPersonasHandler.d.ts +20 -0
  223. package/api/features/WriterPersonas/WriterPersonasHandler.js +43 -0
  224. package/api/features/WriterPersonas/WriterPersonasHandler.js.map +1 -0
  225. package/api/features/WriterPersonas/feature.d.ts +4 -0
  226. package/api/features/WriterPersonas/feature.js +11 -0
  227. package/api/features/WriterPersonas/feature.js.map +1 -0
  228. package/api/features/WriterPersonas/index.d.ts +2 -0
  229. package/api/features/WriterPersonas/index.js +1 -0
  230. package/api/features/WriterPersonas/types.d.ts +24 -0
  231. package/api/features/WriterPersonas/types.js +0 -0
  232. package/api/features/shared/SettingsCache.d.ts +12 -0
  233. package/api/features/shared/SettingsCache.js +22 -0
  234. package/api/features/shared/SettingsCache.js.map +1 -0
  235. package/api/features/shared/abstractions.d.ts +13 -0
  236. package/api/features/shared/abstractions.js +4 -2
  237. package/api/features/shared/abstractions.js.map +1 -1
  238. package/api/features/shared/index.d.ts +3 -1
  239. package/api/features/shared/index.js +1 -3
  240. package/api/graphql/AiPowerUpsSettingsGraphQLMapper.js +35 -26
  241. package/api/graphql/AiPowerUpsSettingsGraphQLMapper.js.map +1 -1
  242. package/api/graphql/BaseGraphQLSchema.js +98 -81
  243. package/api/graphql/BaseGraphQLSchema.js.map +1 -1
  244. package/api/graphql/abstractions.js +2 -1
  245. package/api/graphql/abstractions.js.map +1 -1
  246. package/api/types.d.ts +1 -0
  247. package/api/types.js +1 -4
  248. package/index.js +0 -2
  249. package/package.json +26 -24
  250. package/admin/features/generatePageContent/index.js.map +0 -1
  251. package/admin/features/listModels/index.js.map +0 -1
  252. package/admin/features/settings/getSettings/index.js.map +0 -1
  253. package/admin/features/settings/shared/index.js.map +0 -1
  254. package/admin/features/settings/updateSettings/index.js.map +0 -1
  255. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsConfig.d.ts +0 -2
  256. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsConfig.js +0 -11
  257. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsConfig.js.map +0 -1
  258. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsDialog.d.ts +0 -5
  259. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsDialog.js +0 -58
  260. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsDialog.js.map +0 -1
  261. package/admin/presentation/AiPowerUpsSettings/index.js.map +0 -1
  262. package/admin/presentation/AiPowerUpsSettings/useAiPowerUpsSettingsDialog.d.ts +0 -1
  263. package/admin/presentation/AiPowerUpsSettings/useAiPowerUpsSettingsDialog.js +0 -12
  264. package/admin/presentation/AiPowerUpsSettings/useAiPowerUpsSettingsDialog.js.map +0 -1
  265. package/admin/presentation/PersonasSettings.js +0 -29
  266. package/admin/presentation/PersonasSettings.js.map +0 -1
  267. package/api/features/GetSettings/index.js.map +0 -1
  268. package/api/features/Providers/index.js.map +0 -1
  269. package/api/features/Providers/types.js.map +0 -1
  270. package/api/features/UpdateSettings/index.js.map +0 -1
  271. package/api/features/WbGeneratePageContent/index.js.map +0 -1
  272. package/api/features/shared/index.js.map +0 -1
  273. package/api/types.js.map +0 -1
  274. package/index.js.map +0 -1
@@ -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"}
@@ -1,12 +1,13 @@
1
1
  import { Result } from "@webiny/feature/api";
2
2
  import { KeyValueStore } from "@webiny/api-core/features/keyValueStore/index.js";
3
- import { AiPowerUpsSettingsGroupHandler } from "../../../api/features/shared/index.js";
3
+ import { AiPowerUpsSettingsGroupHandler, AiPowerUpsSettingsCache } from "../../../api/features/shared/index.js";
4
4
  import { GetSettingsRepository } from "./abstractions.js";
5
5
  import type { IAiPowerUpsSettings } from "../../../api/types.js";
6
6
  declare class GetSettingsRepositoryImpl implements GetSettingsRepository.Interface {
7
7
  private keyValueStore;
8
8
  private handlers;
9
- constructor(keyValueStore: KeyValueStore.Interface, handlers: AiPowerUpsSettingsGroupHandler.Interface[]);
9
+ private cache;
10
+ constructor(keyValueStore: KeyValueStore.Interface, handlers: AiPowerUpsSettingsGroupHandler.Interface[], cache: AiPowerUpsSettingsCache.Interface);
10
11
  get(): Promise<Result<IAiPowerUpsSettings>>;
11
12
  }
12
13
  export declare const GetSettingsRepositoryImplementation: typeof GetSettingsRepositoryImpl & {
@@ -1,37 +1,40 @@
1
1
  import { Result } from "@webiny/feature/api";
2
2
  import { KeyValueStore } from "@webiny/api-core/features/keyValueStore/index.js";
3
- import { AiPowerUpsSettingsGroupHandler } from "../shared/index.js";
3
+ import { AiPowerUpsSettingsCache, AiPowerUpsSettingsGroupHandler } from "../shared/index.js";
4
4
  import { GetSettingsRepository } from "./abstractions.js";
5
5
  import { AI_POWER_UPS_SETTINGS } from "../../constants.js";
6
6
  class GetSettingsRepositoryImpl {
7
- constructor(keyValueStore, handlers) {
8
- this.keyValueStore = keyValueStore;
9
- this.handlers = handlers;
10
- }
11
- async get() {
12
- const storeResult = await this.keyValueStore.get(AI_POWER_UPS_SETTINGS);
13
- const raw = storeResult.isOk() && storeResult.value ? storeResult.value : {};
14
- const result = {};
15
-
16
- // Run each handler's mapFromStorage for its section.
17
- for (const handler of this.handlers) {
18
- result[handler.name] = handler.mapFromStorage(raw[handler.name]);
7
+ constructor(keyValueStore, handlers, cache){
8
+ this.keyValueStore = keyValueStore;
9
+ this.handlers = handlers;
10
+ this.cache = cache;
19
11
  }
20
-
21
- // Preserve unknown sections (sections without a handler).
22
- for (const key of Object.keys(raw)) {
23
- if (!(key in result)) {
24
- result[key] = raw[key];
25
- }
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);
26
23
  }
27
- return Result.ok(result);
28
- }
29
24
  }
30
- export const GetSettingsRepositoryImplementation = GetSettingsRepository.createImplementation({
31
- implementation: GetSettingsRepositoryImpl,
32
- dependencies: [KeyValueStore, [AiPowerUpsSettingsGroupHandler, {
33
- multiple: true
34
- }]]
25
+ const GetSettingsRepositoryImplementation = GetSettingsRepository.createImplementation({
26
+ implementation: GetSettingsRepositoryImpl,
27
+ dependencies: [
28
+ KeyValueStore,
29
+ [
30
+ AiPowerUpsSettingsGroupHandler,
31
+ {
32
+ multiple: true
33
+ }
34
+ ],
35
+ AiPowerUpsSettingsCache
36
+ ]
35
37
  });
38
+ export { GetSettingsRepositoryImplementation };
36
39
 
37
40
  //# sourceMappingURL=GetSettingsRepository.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Result","KeyValueStore","AiPowerUpsSettingsGroupHandler","GetSettingsRepository","AI_POWER_UPS_SETTINGS","GetSettingsRepositoryImpl","constructor","keyValueStore","handlers","get","storeResult","raw","isOk","value","result","handler","name","mapFromStorage","key","Object","keys","ok","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 { AiPowerUpsSettingsGroupHandler } 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 ) {}\n\n async get(): Promise<Result<IAiPowerUpsSettings>> {\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 // Run each handler's mapFromStorage for its section.\n for (const handler of this.handlers) {\n result[handler.name] = handler.mapFromStorage(raw[handler.name]);\n }\n\n // Preserve unknown sections (sections without a handler).\n for (const key of Object.keys(raw)) {\n if (!(key in result)) {\n result[key] = raw[key];\n }\n }\n\n return Result.ok(result as unknown as IAiPowerUpsSettings);\n }\n}\n\nexport const GetSettingsRepositoryImplementation = GetSettingsRepository.createImplementation({\n implementation: GetSettingsRepositoryImpl,\n dependencies: [KeyValueStore, [AiPowerUpsSettingsGroupHandler, { multiple: true }]]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,aAAa,QAAQ,kDAAkD;AAChF,SAASC,8BAA8B;AACvC,SAASC,qBAAqB;AAE9B,SAASC,qBAAqB;AAE9B,MAAMC,yBAAyB,CAA4C;EACvEC,WAAWA,CACCC,aAAsC,EACtCC,QAAoD,EAC9D;IAAA,KAFUD,aAAsC,GAAtCA,aAAsC;IAAA,KACtCC,QAAoD,GAApDA,QAAoD;EAC7D;EAEH,MAAMC,GAAGA,CAAA,EAAyC;IAC9C,MAAMC,WAAW,GACb,MAAM,IAAI,CAACH,aAAa,CAACE,GAAG,CAA0BL,qBAAqB,CAAC;IAEhF,MAAMO,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;IACA,KAAK,MAAMC,OAAO,IAAI,IAAI,CAACP,QAAQ,EAAE;MACjCM,MAAM,CAACC,OAAO,CAACC,IAAI,CAAC,GAAGD,OAAO,CAACE,cAAc,CAACN,GAAG,CAACI,OAAO,CAACC,IAAI,CAAC,CAAC;IACpE;;IAEA;IACA,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,OAAOlB,MAAM,CAACqB,EAAE,CAACP,MAAwC,CAAC;EAC9D;AACJ;AAEA,OAAO,MAAMQ,mCAAmC,GAAGnB,qBAAqB,CAACoB,oBAAoB,CAAC;EAC1FC,cAAc,EAAEnB,yBAAyB;EACzCoB,YAAY,EAAE,CAACxB,aAAa,EAAE,CAACC,8BAA8B,EAAE;IAAEwB,QAAQ,EAAE;EAAK,CAAC,CAAC;AACtF,CAAC,CAAC","ignoreList":[]}
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"}
@@ -1,15 +1,18 @@
1
- import { GetSettingsUseCase, GetSettingsRepository } from "./abstractions.js";
1
+ import { GetSettingsRepository, GetSettingsUseCase } from "./abstractions.js";
2
2
  class GetSettingsUseCaseImpl {
3
- constructor(repository) {
4
- this.repository = repository;
5
- }
6
- execute() {
7
- return this.repository.get();
8
- }
3
+ constructor(repository){
4
+ this.repository = repository;
5
+ }
6
+ execute() {
7
+ return this.repository.get();
8
+ }
9
9
  }
10
- export const GetSettingsUseCaseImplementation = GetSettingsUseCase.createImplementation({
11
- implementation: GetSettingsUseCaseImpl,
12
- dependencies: [GetSettingsRepository]
10
+ const GetSettingsUseCaseImplementation = GetSettingsUseCase.createImplementation({
11
+ implementation: GetSettingsUseCaseImpl,
12
+ dependencies: [
13
+ GetSettingsRepository
14
+ ]
13
15
  });
16
+ export { GetSettingsUseCaseImplementation };
14
17
 
15
18
  //# sourceMappingURL=GetSettingsUseCase.js.map
@@ -1 +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":[]}
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"}
@@ -1,5 +1,6 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
- export const GetSettingsRepository = createAbstraction("AiPowerUpsGetSettingsRepository");
3
- export const GetSettingsUseCase = createAbstraction("AiPowerUpsGetSettingsUseCase");
2
+ const GetSettingsRepository = createAbstraction("AiPowerUpsGetSettingsRepository");
3
+ const GetSettingsUseCase = createAbstraction("AiPowerUpsGetSettingsUseCase");
4
+ export { GetSettingsRepository, GetSettingsUseCase };
4
5
 
5
6
  //# sourceMappingURL=abstractions.js.map
@@ -1 +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":[]}
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"}
@@ -1,12 +1,13 @@
1
1
  import { createFeature } from "@webiny/feature/api";
2
2
  import { GetSettingsRepositoryImplementation } from "./GetSettingsRepository.js";
3
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
- }
4
+ const GetSettingsFeature = createFeature({
5
+ name: "AiPowerUpsGetSettings",
6
+ register (container) {
7
+ container.register(GetSettingsRepositoryImplementation).inSingletonScope();
8
+ container.register(GetSettingsUseCaseImplementation);
9
+ }
10
10
  });
11
+ export { GetSettingsFeature };
11
12
 
12
13
  //# sourceMappingURL=feature.js.map
@@ -1 +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":[]}
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"}
@@ -1,3 +1 @@
1
1
  export { GetSettingsUseCase } from "./abstractions.js";
2
-
3
- //# sourceMappingURL=index.js.map
@@ -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"}
@@ -0,0 +1,50 @@
1
+ import type { IAiPowerUpsSettings } from "../../../api/types.js";
2
+ export interface ProjectFileItem {
3
+ id: string;
4
+ name: string;
5
+ size: number;
6
+ mimeType: string;
7
+ src: string;
8
+ width?: number;
9
+ height?: number;
10
+ }
11
+ export interface ProjectPreset {
12
+ id: string;
13
+ name: string;
14
+ description?: string;
15
+ instructions?: string;
16
+ defaultReaderPersonaId?: string;
17
+ defaultWriterPersonaId?: string;
18
+ files?: ProjectFileItem[];
19
+ version: number;
20
+ }
21
+ declare module "~/api/types.js" {
22
+ interface IAiPowerUpsSettings {
23
+ projects: {
24
+ presets: ProjectPreset[];
25
+ };
26
+ }
27
+ }
28
+ export type ProjectsSettings = IAiPowerUpsSettings["projects"];
29
+ export interface PersistedProjectFileItem {
30
+ id: string;
31
+ name: string;
32
+ size: number;
33
+ mimeType: string;
34
+ src: string;
35
+ width?: number;
36
+ height?: number;
37
+ }
38
+ export interface PersistedProjectPreset {
39
+ id: string;
40
+ name: string;
41
+ description?: string;
42
+ instructions?: string;
43
+ defaultReaderPersonaId?: string;
44
+ defaultWriterPersonaId?: string;
45
+ files?: PersistedProjectFileItem[];
46
+ version: number;
47
+ }
48
+ export interface PersistedProjects {
49
+ presets: PersistedProjectPreset[];
50
+ }
File without changes
@@ -1,36 +1,39 @@
1
1
  import { AiPowerUpsSettingsGroupGraphQLMapper } from "../shared/index.js";
2
2
  class ProvidersGraphQLMapperImpl {
3
- name = "providers";
4
- toApi(internal) {
5
- const data = internal;
6
- return {
7
- presets: data.presets.map(p => ({
8
- id: p.id,
9
- name: p.name,
10
- description: p.description,
11
- model: p.model,
12
- apiKey: p.apiKeyMasked ?? null
13
- }))
14
- };
15
- }
16
- fromApi(api) {
17
- const data = api;
18
- return {
19
- presets: data.presets.map(p => ({
20
- id: p.id,
21
- name: p.name,
22
- description: p.description,
23
- model: p.model,
24
- apiKey: p.apiKey,
25
- apiKeyMasked: "",
26
- apiKeyEncrypted: ""
27
- }))
28
- };
29
- }
3
+ toApi(internal) {
4
+ const data = internal;
5
+ return {
6
+ presets: data.presets.map((p)=>({
7
+ id: p.id,
8
+ name: p.name,
9
+ description: p.description,
10
+ model: p.model,
11
+ apiKey: p.apiKeyMasked ?? null
12
+ }))
13
+ };
14
+ }
15
+ fromApi(api) {
16
+ const data = api;
17
+ return {
18
+ presets: data.presets.map((p)=>({
19
+ id: p.id,
20
+ name: p.name,
21
+ description: p.description,
22
+ model: p.model,
23
+ apiKey: p.apiKey,
24
+ apiKeyMasked: "",
25
+ apiKeyEncrypted: ""
26
+ }))
27
+ };
28
+ }
29
+ constructor(){
30
+ this.name = "providers";
31
+ }
30
32
  }
31
- export default AiPowerUpsSettingsGroupGraphQLMapper.createImplementation({
32
- implementation: ProvidersGraphQLMapperImpl,
33
- dependencies: []
33
+ const ProvidersGraphQLMapper = AiPowerUpsSettingsGroupGraphQLMapper.createImplementation({
34
+ implementation: ProvidersGraphQLMapperImpl,
35
+ dependencies: []
34
36
  });
37
+ export default ProvidersGraphQLMapper;
35
38
 
36
39
  //# sourceMappingURL=ProvidersGraphQLMapper.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["AiPowerUpsSettingsGroupGraphQLMapper","ProvidersGraphQLMapperImpl","name","toApi","internal","data","presets","map","p","id","description","model","apiKey","apiKeyMasked","fromApi","api","apiKeyEncrypted","createImplementation","implementation","dependencies"],"sources":["ProvidersGraphQLMapper.ts"],"sourcesContent":["import { AiPowerUpsSettingsGroupGraphQLMapper } from \"~/api/features/shared/index.js\";\nimport type { ProvidersSettings } from \"./types.js\";\n\ninterface ApiProviderPreset {\n id: string;\n name: string;\n description?: string;\n model: string;\n apiKey: string | null;\n}\n\ninterface ApiProviders {\n presets: ApiProviderPreset[];\n}\n\ninterface ApiInputProviderPreset {\n id: string;\n name: string;\n description?: string;\n model: string;\n apiKey?: string;\n}\n\ninterface ApiInputProviders {\n presets: ApiInputProviderPreset[];\n}\n\nclass ProvidersGraphQLMapperImpl implements AiPowerUpsSettingsGroupGraphQLMapper.Interface {\n readonly name = \"providers\";\n\n toApi(internal: unknown): ApiProviders {\n const data = internal as ProvidersSettings;\n return {\n presets: data.presets.map(p => ({\n id: p.id,\n name: p.name,\n description: p.description,\n model: p.model,\n apiKey: p.apiKeyMasked ?? null\n }))\n };\n }\n\n fromApi(api: unknown): ProvidersSettings {\n const data = api as ApiInputProviders;\n return {\n presets: data.presets.map(p => ({\n id: p.id,\n name: p.name,\n description: p.description,\n model: p.model,\n apiKey: p.apiKey,\n apiKeyMasked: \"\",\n apiKeyEncrypted: \"\"\n }))\n };\n }\n}\n\nexport default AiPowerUpsSettingsGroupGraphQLMapper.createImplementation({\n implementation: ProvidersGraphQLMapperImpl,\n dependencies: []\n});\n"],"mappings":"AAAA,SAASA,oCAAoC;AA2B7C,MAAMC,0BAA0B,CAA2D;EAC9EC,IAAI,GAAG,WAAW;EAE3BC,KAAKA,CAACC,QAAiB,EAAgB;IACnC,MAAMC,IAAI,GAAGD,QAA6B;IAC1C,OAAO;MACHE,OAAO,EAAED,IAAI,CAACC,OAAO,CAACC,GAAG,CAACC,CAAC,KAAK;QAC5BC,EAAE,EAAED,CAAC,CAACC,EAAE;QACRP,IAAI,EAAEM,CAAC,CAACN,IAAI;QACZQ,WAAW,EAAEF,CAAC,CAACE,WAAW;QAC1BC,KAAK,EAAEH,CAAC,CAACG,KAAK;QACdC,MAAM,EAAEJ,CAAC,CAACK,YAAY,IAAI;MAC9B,CAAC,CAAC;IACN,CAAC;EACL;EAEAC,OAAOA,CAACC,GAAY,EAAqB;IACrC,MAAMV,IAAI,GAAGU,GAAwB;IACrC,OAAO;MACHT,OAAO,EAAED,IAAI,CAACC,OAAO,CAACC,GAAG,CAACC,CAAC,KAAK;QAC5BC,EAAE,EAAED,CAAC,CAACC,EAAE;QACRP,IAAI,EAAEM,CAAC,CAACN,IAAI;QACZQ,WAAW,EAAEF,CAAC,CAACE,WAAW;QAC1BC,KAAK,EAAEH,CAAC,CAACG,KAAK;QACdC,MAAM,EAAEJ,CAAC,CAACI,MAAM;QAChBC,YAAY,EAAE,EAAE;QAChBG,eAAe,EAAE;MACrB,CAAC,CAAC;IACN,CAAC;EACL;AACJ;AAEA,eAAehB,oCAAoC,CAACiB,oBAAoB,CAAC;EACrEC,cAAc,EAAEjB,0BAA0B;EAC1CkB,YAAY,EAAE;AAClB,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"api/features/Providers/ProvidersGraphQLMapper.js","sources":["../../../../src/api/features/Providers/ProvidersGraphQLMapper.ts"],"sourcesContent":["import { AiPowerUpsSettingsGroupGraphQLMapper } from \"~/api/features/shared/index.js\";\nimport type { ProvidersSettings } from \"./types.js\";\n\ninterface ApiProviderPreset {\n id: string;\n name: string;\n description?: string;\n model: string;\n apiKey: string | null;\n}\n\ninterface ApiProviders {\n presets: ApiProviderPreset[];\n}\n\ninterface ApiInputProviderPreset {\n id: string;\n name: string;\n description?: string;\n model: string;\n apiKey?: string;\n}\n\ninterface ApiInputProviders {\n presets: ApiInputProviderPreset[];\n}\n\nclass ProvidersGraphQLMapperImpl implements AiPowerUpsSettingsGroupGraphQLMapper.Interface {\n readonly name = \"providers\";\n\n toApi(internal: unknown): ApiProviders {\n const data = internal as ProvidersSettings;\n return {\n presets: data.presets.map(p => ({\n id: p.id,\n name: p.name,\n description: p.description,\n model: p.model,\n apiKey: p.apiKeyMasked ?? null\n }))\n };\n }\n\n fromApi(api: unknown): ProvidersSettings {\n const data = api as ApiInputProviders;\n return {\n presets: data.presets.map(p => ({\n id: p.id,\n name: p.name,\n description: p.description,\n model: p.model,\n apiKey: p.apiKey,\n apiKeyMasked: \"\",\n apiKeyEncrypted: \"\"\n }))\n };\n }\n}\n\nexport default AiPowerUpsSettingsGroupGraphQLMapper.createImplementation({\n implementation: ProvidersGraphQLMapperImpl,\n dependencies: []\n});\n"],"names":["ProvidersGraphQLMapperImpl","internal","data","p","api","AiPowerUpsSettingsGroupGraphQLMapper"],"mappings":";AA2BA,MAAMA;IAGF,MAAMC,QAAiB,EAAgB;QACnC,MAAMC,OAAOD;QACb,OAAO;YACH,SAASC,KAAK,OAAO,CAAC,GAAG,CAACC,CAAAA,IAAM;oBAC5B,IAAIA,EAAE,EAAE;oBACR,MAAMA,EAAE,IAAI;oBACZ,aAAaA,EAAE,WAAW;oBAC1B,OAAOA,EAAE,KAAK;oBACd,QAAQA,EAAE,YAAY,IAAI;gBAC9B;QACJ;IACJ;IAEA,QAAQC,GAAY,EAAqB;QACrC,MAAMF,OAAOE;QACb,OAAO;YACH,SAASF,KAAK,OAAO,CAAC,GAAG,CAACC,CAAAA,IAAM;oBAC5B,IAAIA,EAAE,EAAE;oBACR,MAAMA,EAAE,IAAI;oBACZ,aAAaA,EAAE,WAAW;oBAC1B,OAAOA,EAAE,KAAK;oBACd,QAAQA,EAAE,MAAM;oBAChB,cAAc;oBACd,iBAAiB;gBACrB;QACJ;IACJ;;aA5BS,IAAI,GAAG;;AA6BpB;AAEA,+BAAeE,qCAAqC,oBAAoB,CAAC;IACrE,gBAAgBL;IAChB,cAAc,EAAE;AACpB"}