@webiny/ai-powerups 0.0.0-unstable.0156a4c312

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 (705) hide show
  1. package/AiPowerups.d.ts +14 -0
  2. package/AiPowerups.js +11 -0
  3. package/AiPowerups.js.map +1 -0
  4. package/LICENSE +36 -0
  5. package/README.md +11 -0
  6. package/admin/Extension.d.ts +2 -0
  7. package/admin/Extension.js +49 -0
  8. package/admin/Extension.js.map +1 -0
  9. package/admin/domain/errors.d.ts +12 -0
  10. package/admin/domain/errors.js +21 -0
  11. package/admin/domain/errors.js.map +1 -0
  12. package/admin/domain/modelRoles.d.ts +17 -0
  13. package/admin/domain/modelRoles.js +8 -0
  14. package/admin/domain/modelRoles.js.map +1 -0
  15. package/admin/features/compareEntryRevisions/CompareEntryRevisionsGateway.d.ts +12 -0
  16. package/admin/features/compareEntryRevisions/CompareEntryRevisionsGateway.js +46 -0
  17. package/admin/features/compareEntryRevisions/CompareEntryRevisionsGateway.js.map +1 -0
  18. package/admin/features/compareEntryRevisions/CompareEntryRevisionsRepository.d.ts +11 -0
  19. package/admin/features/compareEntryRevisions/CompareEntryRevisionsRepository.js +18 -0
  20. package/admin/features/compareEntryRevisions/CompareEntryRevisionsRepository.js.map +1 -0
  21. package/admin/features/compareEntryRevisions/CompareEntryRevisionsUseCase.d.ts +11 -0
  22. package/admin/features/compareEntryRevisions/CompareEntryRevisionsUseCase.js +18 -0
  23. package/admin/features/compareEntryRevisions/CompareEntryRevisionsUseCase.js.map +1 -0
  24. package/admin/features/compareEntryRevisions/abstractions.d.ts +32 -0
  25. package/admin/features/compareEntryRevisions/abstractions.js +7 -0
  26. package/admin/features/compareEntryRevisions/abstractions.js.map +1 -0
  27. package/admin/features/compareEntryRevisions/feature.d.ts +1 -0
  28. package/admin/features/compareEntryRevisions/feature.js +15 -0
  29. package/admin/features/compareEntryRevisions/feature.js.map +1 -0
  30. package/admin/features/compareEntryRevisions/index.d.ts +2 -0
  31. package/admin/features/compareEntryRevisions/index.js +2 -0
  32. package/admin/features/feature.d.ts +1 -0
  33. package/admin/features/feature.js +26 -0
  34. package/admin/features/feature.js.map +1 -0
  35. package/admin/features/generateEntryContent/GenerateEntryContentGateway.d.ts +12 -0
  36. package/admin/features/generateEntryContent/GenerateEntryContentGateway.js +45 -0
  37. package/admin/features/generateEntryContent/GenerateEntryContentGateway.js.map +1 -0
  38. package/admin/features/generateEntryContent/GenerateEntryContentUseCase.d.ts +11 -0
  39. package/admin/features/generateEntryContent/GenerateEntryContentUseCase.js +18 -0
  40. package/admin/features/generateEntryContent/GenerateEntryContentUseCase.js.map +1 -0
  41. package/admin/features/generateEntryContent/abstractions.d.ts +24 -0
  42. package/admin/features/generateEntryContent/abstractions.js +6 -0
  43. package/admin/features/generateEntryContent/abstractions.js.map +1 -0
  44. package/admin/features/generateEntryContent/feature.d.ts +1 -0
  45. package/admin/features/generateEntryContent/feature.js +13 -0
  46. package/admin/features/generateEntryContent/feature.js.map +1 -0
  47. package/admin/features/generateEntryContent/index.d.ts +3 -0
  48. package/admin/features/generateEntryContent/index.js +2 -0
  49. package/admin/features/generatePageContent/GeneratePageContentGateway.d.ts +12 -0
  50. package/admin/features/generatePageContent/GeneratePageContentGateway.js +47 -0
  51. package/admin/features/generatePageContent/GeneratePageContentGateway.js.map +1 -0
  52. package/admin/features/generatePageContent/GeneratePageContentUseCase.d.ts +11 -0
  53. package/admin/features/generatePageContent/GeneratePageContentUseCase.js +18 -0
  54. package/admin/features/generatePageContent/GeneratePageContentUseCase.js.map +1 -0
  55. package/admin/features/generatePageContent/abstractions.d.ts +25 -0
  56. package/admin/features/generatePageContent/abstractions.js +6 -0
  57. package/admin/features/generatePageContent/abstractions.js.map +1 -0
  58. package/admin/features/generatePageContent/feature.d.ts +1 -0
  59. package/admin/features/generatePageContent/feature.js +13 -0
  60. package/admin/features/generatePageContent/feature.js.map +1 -0
  61. package/admin/features/generatePageContent/index.d.ts +3 -0
  62. package/admin/features/generatePageContent/index.js +2 -0
  63. package/admin/features/listCapabilities/ListCapabilitiesGateway.d.ts +12 -0
  64. package/admin/features/listCapabilities/ListCapabilitiesGateway.js +34 -0
  65. package/admin/features/listCapabilities/ListCapabilitiesGateway.js.map +1 -0
  66. package/admin/features/listCapabilities/ListCapabilitiesRepository.d.ts +13 -0
  67. package/admin/features/listCapabilities/ListCapabilitiesRepository.js +27 -0
  68. package/admin/features/listCapabilities/ListCapabilitiesRepository.js.map +1 -0
  69. package/admin/features/listCapabilities/ListCapabilitiesUseCase.d.ts +10 -0
  70. package/admin/features/listCapabilities/ListCapabilitiesUseCase.js +18 -0
  71. package/admin/features/listCapabilities/ListCapabilitiesUseCase.js.map +1 -0
  72. package/admin/features/listCapabilities/abstractions.d.ts +28 -0
  73. package/admin/features/listCapabilities/abstractions.js +7 -0
  74. package/admin/features/listCapabilities/abstractions.js.map +1 -0
  75. package/admin/features/listCapabilities/feature.d.ts +3 -0
  76. package/admin/features/listCapabilities/feature.js +21 -0
  77. package/admin/features/listCapabilities/feature.js.map +1 -0
  78. package/admin/features/listCapabilities/index.d.ts +3 -0
  79. package/admin/features/listCapabilities/index.js +2 -0
  80. package/admin/features/listModels/ListModelsGateway.d.ts +12 -0
  81. package/admin/features/listModels/ListModelsGateway.js +51 -0
  82. package/admin/features/listModels/ListModelsGateway.js.map +1 -0
  83. package/admin/features/listModels/ListModelsRepository.d.ts +13 -0
  84. package/admin/features/listModels/ListModelsRepository.js +27 -0
  85. package/admin/features/listModels/ListModelsRepository.js.map +1 -0
  86. package/admin/features/listModels/ListModelsUseCase.d.ts +10 -0
  87. package/admin/features/listModels/ListModelsUseCase.js +18 -0
  88. package/admin/features/listModels/ListModelsUseCase.js.map +1 -0
  89. package/admin/features/listModels/abstractions.d.ts +30 -0
  90. package/admin/features/listModels/abstractions.js +7 -0
  91. package/admin/features/listModels/abstractions.js.map +1 -0
  92. package/admin/features/listModels/feature.d.ts +3 -0
  93. package/admin/features/listModels/feature.js +21 -0
  94. package/admin/features/listModels/feature.js.map +1 -0
  95. package/admin/features/listModels/index.d.ts +2 -0
  96. package/admin/features/listModels/index.js +2 -0
  97. package/admin/features/settings/getSettings/GetSettingsGateway.d.ts +12 -0
  98. package/admin/features/settings/getSettings/GetSettingsGateway.js +29 -0
  99. package/admin/features/settings/getSettings/GetSettingsGateway.js.map +1 -0
  100. package/admin/features/settings/getSettings/GetSettingsRepository.d.ts +14 -0
  101. package/admin/features/settings/getSettings/GetSettingsRepository.js +31 -0
  102. package/admin/features/settings/getSettings/GetSettingsRepository.js.map +1 -0
  103. package/admin/features/settings/getSettings/GetSettingsUseCase.d.ts +11 -0
  104. package/admin/features/settings/getSettings/GetSettingsUseCase.js +18 -0
  105. package/admin/features/settings/getSettings/GetSettingsUseCase.js.map +1 -0
  106. package/admin/features/settings/getSettings/abstractions.d.ts +22 -0
  107. package/admin/features/settings/getSettings/abstractions.js +7 -0
  108. package/admin/features/settings/getSettings/abstractions.js.map +1 -0
  109. package/admin/features/settings/getSettings/feature.d.ts +3 -0
  110. package/admin/features/settings/getSettings/feature.js +21 -0
  111. package/admin/features/settings/getSettings/feature.js.map +1 -0
  112. package/admin/features/settings/getSettings/index.d.ts +2 -0
  113. package/admin/features/settings/getSettings/index.js +2 -0
  114. package/admin/features/settings/shared/SettingsCache.d.ts +10 -0
  115. package/admin/features/settings/shared/SettingsCache.js +19 -0
  116. package/admin/features/settings/shared/SettingsCache.js.map +1 -0
  117. package/admin/features/settings/shared/abstractions.d.ts +83 -0
  118. package/admin/features/settings/shared/abstractions.js +5 -0
  119. package/admin/features/settings/shared/abstractions.js.map +1 -0
  120. package/admin/features/settings/shared/feature.d.ts +3 -0
  121. package/admin/features/settings/shared/feature.js +17 -0
  122. package/admin/features/settings/shared/feature.js.map +1 -0
  123. package/admin/features/settings/shared/index.d.ts +2 -0
  124. package/admin/features/settings/shared/index.js +2 -0
  125. package/admin/features/settings/updateSettings/UpdateSettingsGateway.d.ts +12 -0
  126. package/admin/features/settings/updateSettings/UpdateSettingsGateway.js +45 -0
  127. package/admin/features/settings/updateSettings/UpdateSettingsGateway.js.map +1 -0
  128. package/admin/features/settings/updateSettings/UpdateSettingsRepository.d.ts +13 -0
  129. package/admin/features/settings/updateSettings/UpdateSettingsRepository.js +23 -0
  130. package/admin/features/settings/updateSettings/UpdateSettingsRepository.js.map +1 -0
  131. package/admin/features/settings/updateSettings/UpdateSettingsUseCase.d.ts +11 -0
  132. package/admin/features/settings/updateSettings/UpdateSettingsUseCase.js +18 -0
  133. package/admin/features/settings/updateSettings/UpdateSettingsUseCase.js.map +1 -0
  134. package/admin/features/settings/updateSettings/abstractions.d.ts +22 -0
  135. package/admin/features/settings/updateSettings/abstractions.js +7 -0
  136. package/admin/features/settings/updateSettings/abstractions.js.map +1 -0
  137. package/admin/features/settings/updateSettings/feature.d.ts +3 -0
  138. package/admin/features/settings/updateSettings/feature.js +21 -0
  139. package/admin/features/settings/updateSettings/feature.js.map +1 -0
  140. package/admin/features/settings/updateSettings/index.d.ts +2 -0
  141. package/admin/features/settings/updateSettings/index.js +2 -0
  142. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPage.d.ts +4 -0
  143. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPage.js +49 -0
  144. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPage.js.map +1 -0
  145. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPresenter.d.ts +26 -0
  146. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPresenter.js +160 -0
  147. package/admin/presentation/AiPowerUpsSettings/AiPowerUpsSettingsPresenter.js.map +1 -0
  148. package/admin/presentation/AiPowerUpsSettings/abstractions.d.ts +18 -0
  149. package/admin/presentation/AiPowerUpsSettings/abstractions.js +5 -0
  150. package/admin/presentation/AiPowerUpsSettings/abstractions.js.map +1 -0
  151. package/admin/presentation/AiPowerUpsSettings/feature.d.ts +3 -0
  152. package/admin/presentation/AiPowerUpsSettings/feature.js +29 -0
  153. package/admin/presentation/AiPowerUpsSettings/feature.js.map +1 -0
  154. package/admin/presentation/AiPowerUpsSettings/hasUsableModel.d.ts +13 -0
  155. package/admin/presentation/AiPowerUpsSettings/hasUsableModel.js +9 -0
  156. package/admin/presentation/AiPowerUpsSettings/hasUsableModel.js.map +1 -0
  157. package/admin/presentation/AiPowerUpsSettings/index.d.ts +4 -0
  158. package/admin/presentation/AiPowerUpsSettings/index.js +4 -0
  159. package/admin/presentation/AiPowerUpsSettings/settingsGroup.d.ts +26 -0
  160. package/admin/presentation/AiPowerUpsSettings/settingsGroup.js +5 -0
  161. package/admin/presentation/AiPowerUpsSettings/settingsGroup.js.map +1 -0
  162. package/admin/presentation/AiPowerUpsSettings/useAiPowerUpsSettings.d.ts +4 -0
  163. package/admin/presentation/AiPowerUpsSettings/useAiPowerUpsSettings.js +27 -0
  164. package/admin/presentation/AiPowerUpsSettings/useAiPowerUpsSettings.js.map +1 -0
  165. package/admin/presentation/AiPromptFormFactory/AiPromptFormFactory.d.ts +20 -0
  166. package/admin/presentation/AiPromptFormFactory/AiPromptFormFactory.js +108 -0
  167. package/admin/presentation/AiPromptFormFactory/AiPromptFormFactory.js.map +1 -0
  168. package/admin/presentation/AiPromptFormFactory/abstractions.d.ts +14 -0
  169. package/admin/presentation/AiPromptFormFactory/abstractions.js +5 -0
  170. package/admin/presentation/AiPromptFormFactory/abstractions.js.map +1 -0
  171. package/admin/presentation/AiPromptFormFactory/feature.d.ts +1 -0
  172. package/admin/presentation/AiPromptFormFactory/feature.js +11 -0
  173. package/admin/presentation/AiPromptFormFactory/feature.js.map +1 -0
  174. package/admin/presentation/CapabilitiesSettings.d.ts +39 -0
  175. package/admin/presentation/CapabilitiesSettings.js +104 -0
  176. package/admin/presentation/CapabilitiesSettings.js.map +1 -0
  177. package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsDialog.d.ts +9 -0
  178. package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsDialog.js +118 -0
  179. package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsDialog.js.map +1 -0
  180. package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsDrawer.d.ts +9 -0
  181. package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsDrawer.js +72 -0
  182. package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsDrawer.js.map +1 -0
  183. package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsMenuItem.d.ts +4 -0
  184. package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsMenuItem.js +21 -0
  185. package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsMenuItem.js.map +1 -0
  186. package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsOverlays.d.ts +2 -0
  187. package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsOverlays.js +17 -0
  188. package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsOverlays.js.map +1 -0
  189. package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsPresenter.d.ts +25 -0
  190. package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsPresenter.js +90 -0
  191. package/admin/presentation/CmsCompareEntryRevisions/CmsCompareEntryRevisionsPresenter.js.map +1 -0
  192. package/admin/presentation/CmsCompareEntryRevisions/Extension.d.ts +2 -0
  193. package/admin/presentation/CmsCompareEntryRevisions/Extension.js +16 -0
  194. package/admin/presentation/CmsCompareEntryRevisions/Extension.js.map +1 -0
  195. package/admin/presentation/CmsCompareEntryRevisions/abstractions.d.ts +29 -0
  196. package/admin/presentation/CmsCompareEntryRevisions/abstractions.js +5 -0
  197. package/admin/presentation/CmsCompareEntryRevisions/abstractions.js.map +1 -0
  198. package/admin/presentation/CmsCompareEntryRevisions/feature.d.ts +3 -0
  199. package/admin/presentation/CmsCompareEntryRevisions/feature.js +17 -0
  200. package/admin/presentation/CmsCompareEntryRevisions/feature.js.map +1 -0
  201. package/admin/presentation/CmsContentGeneration/CmsGenerateContentButton.d.ts +4 -0
  202. package/admin/presentation/CmsContentGeneration/CmsGenerateContentButton.js +27 -0
  203. package/admin/presentation/CmsContentGeneration/CmsGenerateContentButton.js.map +1 -0
  204. package/admin/presentation/CmsContentGeneration/CmsGenerateContentDialog.d.ts +5 -0
  205. package/admin/presentation/CmsContentGeneration/CmsGenerateContentDialog.js +106 -0
  206. package/admin/presentation/CmsContentGeneration/CmsGenerateContentDialog.js.map +1 -0
  207. package/admin/presentation/CmsContentGeneration/CmsGenerateContentPresenter.d.ts +29 -0
  208. package/admin/presentation/CmsContentGeneration/CmsGenerateContentPresenter.js +120 -0
  209. package/admin/presentation/CmsContentGeneration/CmsGenerateContentPresenter.js.map +1 -0
  210. package/admin/presentation/CmsContentGeneration/Extension.d.ts +2 -0
  211. package/admin/presentation/CmsContentGeneration/Extension.js +27 -0
  212. package/admin/presentation/CmsContentGeneration/Extension.js.map +1 -0
  213. package/admin/presentation/CmsContentGeneration/abstractions.d.ts +20 -0
  214. package/admin/presentation/CmsContentGeneration/abstractions.js +5 -0
  215. package/admin/presentation/CmsContentGeneration/abstractions.js.map +1 -0
  216. package/admin/presentation/CmsContentGeneration/feature.d.ts +3 -0
  217. package/admin/presentation/CmsContentGeneration/feature.js +17 -0
  218. package/admin/presentation/CmsContentGeneration/feature.js.map +1 -0
  219. package/admin/presentation/CmsEntryWizard/CmsEntryWizard.d.ts +4 -0
  220. package/admin/presentation/CmsEntryWizard/CmsEntryWizard.js +113 -0
  221. package/admin/presentation/CmsEntryWizard/CmsEntryWizard.js.map +1 -0
  222. package/admin/presentation/CmsEntryWizard/CmsEntryWizardGate.d.ts +4 -0
  223. package/admin/presentation/CmsEntryWizard/CmsEntryWizardGate.js +22 -0
  224. package/admin/presentation/CmsEntryWizard/CmsEntryWizardGate.js.map +1 -0
  225. package/admin/presentation/CmsEntryWizard/Extension.d.ts +2 -0
  226. package/admin/presentation/CmsEntryWizard/Extension.js +10 -0
  227. package/admin/presentation/CmsEntryWizard/Extension.js.map +1 -0
  228. package/admin/presentation/ConnectionsSettings.d.ts +25 -0
  229. package/admin/presentation/ConnectionsSettings.js +52 -0
  230. package/admin/presentation/ConnectionsSettings.js.map +1 -0
  231. package/admin/presentation/ModelRolesSettings.d.ts +29 -0
  232. package/admin/presentation/ModelRolesSettings.js +67 -0
  233. package/admin/presentation/ModelRolesSettings.js.map +1 -0
  234. package/admin/presentation/ProjectsSettings.d.ts +11 -0
  235. package/admin/presentation/ProjectsSettings.js +56 -0
  236. package/admin/presentation/ProjectsSettings.js.map +1 -0
  237. package/admin/presentation/ProvidersSettings.d.ts +16 -0
  238. package/admin/presentation/ProvidersSettings.js +46 -0
  239. package/admin/presentation/ProvidersSettings.js.map +1 -0
  240. package/admin/presentation/ReaderPersonasSettings.d.ts +11 -0
  241. package/admin/presentation/ReaderPersonasSettings.js +37 -0
  242. package/admin/presentation/ReaderPersonasSettings.js.map +1 -0
  243. package/admin/presentation/WbContentGeneration/Extension.d.ts +2 -0
  244. package/admin/presentation/WbContentGeneration/Extension.js +22 -0
  245. package/admin/presentation/WbContentGeneration/Extension.js.map +1 -0
  246. package/admin/presentation/WbContentGeneration/GenerateContentButton.d.ts +2 -0
  247. package/admin/presentation/WbContentGeneration/GenerateContentButton.js +19 -0
  248. package/admin/presentation/WbContentGeneration/GenerateContentButton.js.map +1 -0
  249. package/admin/presentation/WbContentGeneration/GenerateContentDialog.d.ts +21 -0
  250. package/admin/presentation/WbContentGeneration/GenerateContentDialog.js +125 -0
  251. package/admin/presentation/WbContentGeneration/GenerateContentDialog.js.map +1 -0
  252. package/admin/presentation/WbContentGeneration/GenerateContentPresenter.d.ts +33 -0
  253. package/admin/presentation/WbContentGeneration/GenerateContentPresenter.js +161 -0
  254. package/admin/presentation/WbContentGeneration/GenerateContentPresenter.js.map +1 -0
  255. package/admin/presentation/WbContentGeneration/PROCESS_IDEA.md +190 -0
  256. package/admin/presentation/WbContentGeneration/abstractions.d.ts +31 -0
  257. package/admin/presentation/WbContentGeneration/abstractions.js +5 -0
  258. package/admin/presentation/WbContentGeneration/abstractions.js.map +1 -0
  259. package/admin/presentation/WbContentGeneration/decompressGzipBase64.d.ts +1 -0
  260. package/admin/presentation/WbContentGeneration/decompressGzipBase64.js +13 -0
  261. package/admin/presentation/WbContentGeneration/decompressGzipBase64.js.map +1 -0
  262. package/admin/presentation/WbContentGeneration/feature.d.ts +3 -0
  263. package/admin/presentation/WbContentGeneration/feature.js +17 -0
  264. package/admin/presentation/WbContentGeneration/feature.js.map +1 -0
  265. package/admin/presentation/WriterPersonasSettings.d.ts +11 -0
  266. package/admin/presentation/WriterPersonasSettings.js +37 -0
  267. package/admin/presentation/WriterPersonasSettings.js.map +1 -0
  268. package/admin/presentation/modelRoles.d.ts +10 -0
  269. package/admin/presentation/modelRoles.js +23 -0
  270. package/admin/presentation/modelRoles.js.map +1 -0
  271. package/admin/routes.d.ts +4 -0
  272. package/admin/routes.js +10 -0
  273. package/admin/routes.js.map +1 -0
  274. package/api/Extension.d.ts +4 -0
  275. package/api/Extension.js +68 -0
  276. package/api/Extension.js.map +1 -0
  277. package/api/constants.d.ts +1 -0
  278. package/api/constants.js +4 -0
  279. package/api/constants.js.map +1 -0
  280. package/api/features/AdminAssistant/AdminAssistantStreamRoute.d.ts +34 -0
  281. package/api/features/AdminAssistant/AdminAssistantStreamRoute.js +42 -0
  282. package/api/features/AdminAssistant/AdminAssistantStreamRoute.js.map +1 -0
  283. package/api/features/AdminAssistant/AdminAssistantUseCase.d.ts +42 -0
  284. package/api/features/AdminAssistant/AdminAssistantUseCase.js +170 -0
  285. package/api/features/AdminAssistant/AdminAssistantUseCase.js.map +1 -0
  286. package/api/features/AdminAssistant/abstractions.d.ts +38 -0
  287. package/api/features/AdminAssistant/abstractions.js +6 -0
  288. package/api/features/AdminAssistant/abstractions.js.map +1 -0
  289. package/api/features/AdminAssistant/approvals.d.ts +29 -0
  290. package/api/features/AdminAssistant/approvals.js +30 -0
  291. package/api/features/AdminAssistant/approvals.js.map +1 -0
  292. package/api/features/AdminAssistant/capability.d.ts +31 -0
  293. package/api/features/AdminAssistant/capability.js +19 -0
  294. package/api/features/AdminAssistant/capability.js.map +1 -0
  295. package/api/features/AdminAssistant/events.d.ts +54 -0
  296. package/api/features/AdminAssistant/events.js +0 -0
  297. package/api/features/AdminAssistant/feature.d.ts +12 -0
  298. package/api/features/AdminAssistant/feature.js +23 -0
  299. package/api/features/AdminAssistant/feature.js.map +1 -0
  300. package/api/features/AdminAssistant/index.d.ts +5 -0
  301. package/api/features/AdminAssistant/index.js +3 -0
  302. package/api/features/AdminAssistant/parseChatBody.d.ts +14 -0
  303. package/api/features/AdminAssistant/parseChatBody.js +33 -0
  304. package/api/features/AdminAssistant/parseChatBody.js.map +1 -0
  305. package/api/features/AdminAssistant/systemPrompt.d.ts +7 -0
  306. package/api/features/AdminAssistant/systemPrompt.js +24 -0
  307. package/api/features/AdminAssistant/systemPrompt.js.map +1 -0
  308. package/api/features/AiImageEnrichment/AiImageEnrichmentAfterCreateHandler.d.ts +11 -0
  309. package/api/features/AiImageEnrichment/AiImageEnrichmentAfterCreateHandler.js +27 -0
  310. package/api/features/AiImageEnrichment/AiImageEnrichmentAfterCreateHandler.js.map +1 -0
  311. package/api/features/AiImageEnrichment/AiImageEnrichmentStreamRoute.d.ts +36 -0
  312. package/api/features/AiImageEnrichment/AiImageEnrichmentStreamRoute.js +92 -0
  313. package/api/features/AiImageEnrichment/AiImageEnrichmentStreamRoute.js.map +1 -0
  314. package/api/features/AiImageEnrichment/AiImageEnrichmentTask.d.ts +41 -0
  315. package/api/features/AiImageEnrichment/AiImageEnrichmentTask.js +95 -0
  316. package/api/features/AiImageEnrichment/AiImageEnrichmentTask.js.map +1 -0
  317. package/api/features/AiImageEnrichment/ApplyImageEnrichmentUseCase.d.ts +18 -0
  318. package/api/features/AiImageEnrichment/ApplyImageEnrichmentUseCase.js +50 -0
  319. package/api/features/AiImageEnrichment/ApplyImageEnrichmentUseCase.js.map +1 -0
  320. package/api/features/AiImageEnrichment/EnrichmentCapabilityDisabledError.d.ts +9 -0
  321. package/api/features/AiImageEnrichment/EnrichmentCapabilityDisabledError.js +8 -0
  322. package/api/features/AiImageEnrichment/EnrichmentCapabilityDisabledError.js.map +1 -0
  323. package/api/features/AiImageEnrichment/PrepareImageEnrichmentUseCase.d.ts +17 -0
  324. package/api/features/AiImageEnrichment/PrepareImageEnrichmentUseCase.js +47 -0
  325. package/api/features/AiImageEnrichment/PrepareImageEnrichmentUseCase.js.map +1 -0
  326. package/api/features/AiImageEnrichment/abstractions.d.ts +66 -0
  327. package/api/features/AiImageEnrichment/abstractions.js +12 -0
  328. package/api/features/AiImageEnrichment/abstractions.js.map +1 -0
  329. package/api/features/AiImageEnrichment/buildEnrichmentAiRequest.d.ts +12 -0
  330. package/api/features/AiImageEnrichment/buildEnrichmentAiRequest.js +30 -0
  331. package/api/features/AiImageEnrichment/buildEnrichmentAiRequest.js.map +1 -0
  332. package/api/features/AiImageEnrichment/capability.d.ts +18 -0
  333. package/api/features/AiImageEnrichment/capability.js +19 -0
  334. package/api/features/AiImageEnrichment/capability.js.map +1 -0
  335. package/api/features/AiImageEnrichment/errors.d.ts +33 -0
  336. package/api/features/AiImageEnrichment/errors.js +29 -0
  337. package/api/features/AiImageEnrichment/errors.js.map +1 -0
  338. package/api/features/AiImageEnrichment/feature.d.ts +4 -0
  339. package/api/features/AiImageEnrichment/feature.js +24 -0
  340. package/api/features/AiImageEnrichment/feature.js.map +1 -0
  341. package/api/features/AiImageEnrichment/imageEnrichmentErrorStatusCode.d.ts +6 -0
  342. package/api/features/AiImageEnrichment/imageEnrichmentErrorStatusCode.js +10 -0
  343. package/api/features/AiImageEnrichment/imageEnrichmentErrorStatusCode.js.map +1 -0
  344. package/api/features/AiImageEnrichment/readEnrichmentPartial.d.ts +8 -0
  345. package/api/features/AiImageEnrichment/readEnrichmentPartial.js +16 -0
  346. package/api/features/AiImageEnrichment/readEnrichmentPartial.js.map +1 -0
  347. package/api/features/AiImageEnrichment/streamEvents.d.ts +36 -0
  348. package/api/features/AiImageEnrichment/streamEvents.js +0 -0
  349. package/api/features/AiPromptContext/AiPromptContextBuilder.d.ts +19 -0
  350. package/api/features/AiPromptContext/AiPromptContextBuilder.js +147 -0
  351. package/api/features/AiPromptContext/AiPromptContextBuilder.js.map +1 -0
  352. package/api/features/AiPromptContext/ProjectFileAssembler.d.ts +22 -0
  353. package/api/features/AiPromptContext/ProjectFileAssembler.js +76 -0
  354. package/api/features/AiPromptContext/ProjectFileAssembler.js.map +1 -0
  355. package/api/features/AiPromptContext/ProjectFileCache.d.ts +16 -0
  356. package/api/features/AiPromptContext/ProjectFileCache.js +61 -0
  357. package/api/features/AiPromptContext/ProjectFileCache.js.map +1 -0
  358. package/api/features/AiPromptContext/ProjectSection.d.ts +4 -0
  359. package/api/features/AiPromptContext/ProjectSection.js +35 -0
  360. package/api/features/AiPromptContext/ProjectSection.js.map +1 -0
  361. package/api/features/AiPromptContext/ReadProjectFileTool.d.ts +3 -0
  362. package/api/features/AiPromptContext/ReadProjectFileTool.js +36 -0
  363. package/api/features/AiPromptContext/ReadProjectFileTool.js.map +1 -0
  364. package/api/features/AiPromptContext/ReaderPersonaSection.d.ts +4 -0
  365. package/api/features/AiPromptContext/ReaderPersonaSection.js +10 -0
  366. package/api/features/AiPromptContext/ReaderPersonaSection.js.map +1 -0
  367. package/api/features/AiPromptContext/WriterPersonaSection.d.ts +4 -0
  368. package/api/features/AiPromptContext/WriterPersonaSection.js +10 -0
  369. package/api/features/AiPromptContext/WriterPersonaSection.js.map +1 -0
  370. package/api/features/AiPromptContext/abstractions.d.ts +71 -0
  371. package/api/features/AiPromptContext/abstractions.js +15 -0
  372. package/api/features/AiPromptContext/abstractions.js.map +1 -0
  373. package/api/features/AiPromptContext/feature.d.ts +4 -0
  374. package/api/features/AiPromptContext/feature.js +15 -0
  375. package/api/features/AiPromptContext/feature.js.map +1 -0
  376. package/api/features/AiPromptContext/index.d.ts +1 -0
  377. package/api/features/AiPromptContext/index.js +1 -0
  378. package/api/features/Capabilities/AiCapabilityDisabledError.d.ts +16 -0
  379. package/api/features/Capabilities/AiCapabilityDisabledError.js +8 -0
  380. package/api/features/Capabilities/AiCapabilityDisabledError.js.map +1 -0
  381. package/api/features/Capabilities/AiModelNotAvailableError.d.ts +13 -0
  382. package/api/features/Capabilities/AiModelNotAvailableError.js +8 -0
  383. package/api/features/Capabilities/AiModelNotAvailableError.js.map +1 -0
  384. package/api/features/Capabilities/CapabilitiesHandler.d.ts +28 -0
  385. package/api/features/Capabilities/CapabilitiesHandler.js +56 -0
  386. package/api/features/Capabilities/CapabilitiesHandler.js.map +1 -0
  387. package/api/features/Capabilities/ListAiCapabilitiesUseCase.d.ts +18 -0
  388. package/api/features/Capabilities/ListAiCapabilitiesUseCase.js +28 -0
  389. package/api/features/Capabilities/ListAiCapabilitiesUseCase.js.map +1 -0
  390. package/api/features/Capabilities/ResolveAiCapabilityUseCase.d.ts +33 -0
  391. package/api/features/Capabilities/ResolveAiCapabilityUseCase.js +114 -0
  392. package/api/features/Capabilities/ResolveAiCapabilityUseCase.js.map +1 -0
  393. package/api/features/Capabilities/abstractions.d.ts +90 -0
  394. package/api/features/Capabilities/abstractions.js +7 -0
  395. package/api/features/Capabilities/abstractions.js.map +1 -0
  396. package/api/features/Capabilities/composeSystemPrompt.d.ts +14 -0
  397. package/api/features/Capabilities/composeSystemPrompt.js +13 -0
  398. package/api/features/Capabilities/composeSystemPrompt.js.map +1 -0
  399. package/api/features/Capabilities/feature.d.ts +4 -0
  400. package/api/features/Capabilities/feature.js +15 -0
  401. package/api/features/Capabilities/feature.js.map +1 -0
  402. package/api/features/Capabilities/index.d.ts +7 -0
  403. package/api/features/Capabilities/index.js +5 -0
  404. package/api/features/Capabilities/types.d.ts +86 -0
  405. package/api/features/Capabilities/types.js +4 -0
  406. package/api/features/Capabilities/types.js.map +1 -0
  407. package/api/features/CmsCompareEntryRevisions/CmsCompareEntryRevisionsUseCase.d.ts +20 -0
  408. package/api/features/CmsCompareEntryRevisions/CmsCompareEntryRevisionsUseCase.js +82 -0
  409. package/api/features/CmsCompareEntryRevisions/CmsCompareEntryRevisionsUseCase.js.map +1 -0
  410. package/api/features/CmsCompareEntryRevisions/abstractions.d.ts +18 -0
  411. package/api/features/CmsCompareEntryRevisions/abstractions.js +5 -0
  412. package/api/features/CmsCompareEntryRevisions/abstractions.js.map +1 -0
  413. package/api/features/CmsCompareEntryRevisions/capability.d.ts +13 -0
  414. package/api/features/CmsCompareEntryRevisions/capability.js +64 -0
  415. package/api/features/CmsCompareEntryRevisions/capability.js.map +1 -0
  416. package/api/features/CmsCompareEntryRevisions/feature.d.ts +4 -0
  417. package/api/features/CmsCompareEntryRevisions/feature.js +13 -0
  418. package/api/features/CmsCompareEntryRevisions/feature.js.map +1 -0
  419. package/api/features/CmsCompareEntryRevisions/index.d.ts +2 -0
  420. package/api/features/CmsCompareEntryRevisions/index.js +2 -0
  421. package/api/features/CmsGenerateEntryContent/CmsGenerateEntryContentTask.d.ts +38 -0
  422. package/api/features/CmsGenerateEntryContent/CmsGenerateEntryContentTask.js +93 -0
  423. package/api/features/CmsGenerateEntryContent/CmsGenerateEntryContentTask.js.map +1 -0
  424. package/api/features/CmsGenerateEntryContent/CmsGenerateEntryContentUseCase.d.ts +27 -0
  425. package/api/features/CmsGenerateEntryContent/CmsGenerateEntryContentUseCase.js +133 -0
  426. package/api/features/CmsGenerateEntryContent/CmsGenerateEntryContentUseCase.js.map +1 -0
  427. package/api/features/CmsGenerateEntryContent/abstractions.d.ts +36 -0
  428. package/api/features/CmsGenerateEntryContent/abstractions.js +5 -0
  429. package/api/features/CmsGenerateEntryContent/abstractions.js.map +1 -0
  430. package/api/features/CmsGenerateEntryContent/buildPrompt.d.ts +2 -0
  431. package/api/features/CmsGenerateEntryContent/buildPrompt.js +61 -0
  432. package/api/features/CmsGenerateEntryContent/buildPrompt.js.map +1 -0
  433. package/api/features/CmsGenerateEntryContent/capability.d.ts +17 -0
  434. package/api/features/CmsGenerateEntryContent/capability.js +17 -0
  435. package/api/features/CmsGenerateEntryContent/capability.js.map +1 -0
  436. package/api/features/CmsGenerateEntryContent/feature.d.ts +4 -0
  437. package/api/features/CmsGenerateEntryContent/feature.js +15 -0
  438. package/api/features/CmsGenerateEntryContent/feature.js.map +1 -0
  439. package/api/features/CmsGenerateEntryContent/index.d.ts +1 -0
  440. package/api/features/CmsGenerateEntryContent/index.js +1 -0
  441. package/api/features/CmsGenerateEntryContent/injectDynamicZoneTypenames.d.ts +2 -0
  442. package/api/features/CmsGenerateEntryContent/injectDynamicZoneTypenames.js +30 -0
  443. package/api/features/CmsGenerateEntryContent/injectDynamicZoneTypenames.js.map +1 -0
  444. package/api/features/CmsResolveImageTool/CmsResolveImageTool.d.ts +14 -0
  445. package/api/features/CmsResolveImageTool/CmsResolveImageTool.js +27 -0
  446. package/api/features/CmsResolveImageTool/CmsResolveImageTool.js.map +1 -0
  447. package/api/features/CmsResolveImageTool/feature.d.ts +4 -0
  448. package/api/features/CmsResolveImageTool/feature.js +11 -0
  449. package/api/features/CmsResolveImageTool/feature.js.map +1 -0
  450. package/api/features/ConfiguredAiModels/ConfiguredAiModelsService.d.ts +18 -0
  451. package/api/features/ConfiguredAiModels/ConfiguredAiModelsService.js +92 -0
  452. package/api/features/ConfiguredAiModels/ConfiguredAiModelsService.js.map +1 -0
  453. package/api/features/ConfiguredAiModels/abstractions.d.ts +32 -0
  454. package/api/features/ConfiguredAiModels/abstractions.js +5 -0
  455. package/api/features/ConfiguredAiModels/abstractions.js.map +1 -0
  456. package/api/features/ConfiguredAiModels/feature.d.ts +4 -0
  457. package/api/features/ConfiguredAiModels/feature.js +11 -0
  458. package/api/features/ConfiguredAiModels/feature.js.map +1 -0
  459. package/api/features/ConfiguredAiModels/index.d.ts +2 -0
  460. package/api/features/ConfiguredAiModels/index.js +1 -0
  461. package/api/features/Connections/ConnectionsGraphQLMapper.d.ts +20 -0
  462. package/api/features/Connections/ConnectionsGraphQLMapper.js +37 -0
  463. package/api/features/Connections/ConnectionsGraphQLMapper.js.map +1 -0
  464. package/api/features/Connections/ConnectionsHandler.d.ts +25 -0
  465. package/api/features/Connections/ConnectionsHandler.js +84 -0
  466. package/api/features/Connections/ConnectionsHandler.js.map +1 -0
  467. package/api/features/Connections/feature.d.ts +4 -0
  468. package/api/features/Connections/feature.js +13 -0
  469. package/api/features/Connections/feature.js.map +1 -0
  470. package/api/features/Connections/index.d.ts +2 -0
  471. package/api/features/Connections/index.js +1 -0
  472. package/api/features/Connections/legacyProviders.d.ts +26 -0
  473. package/api/features/Connections/legacyProviders.js +9 -0
  474. package/api/features/Connections/legacyProviders.js.map +1 -0
  475. package/api/features/Connections/types.d.ts +36 -0
  476. package/api/features/Connections/types.js +0 -0
  477. package/api/features/ExtractFrontmatter/ExtractFrontmatterBeforeCreateHandler.d.ts +11 -0
  478. package/api/features/ExtractFrontmatter/ExtractFrontmatterBeforeCreateHandler.js +34 -0
  479. package/api/features/ExtractFrontmatter/ExtractFrontmatterBeforeCreateHandler.js.map +1 -0
  480. package/api/features/ExtractFrontmatter/feature.d.ts +4 -0
  481. package/api/features/ExtractFrontmatter/feature.js +11 -0
  482. package/api/features/ExtractFrontmatter/feature.js.map +1 -0
  483. package/api/features/GetSettings/GetSettingsRepository.d.ts +16 -0
  484. package/api/features/GetSettings/GetSettingsRepository.js +40 -0
  485. package/api/features/GetSettings/GetSettingsRepository.js.map +1 -0
  486. package/api/features/GetSettings/GetSettingsUseCase.d.ts +10 -0
  487. package/api/features/GetSettings/GetSettingsUseCase.js +18 -0
  488. package/api/features/GetSettings/GetSettingsUseCase.js.map +1 -0
  489. package/api/features/GetSettings/abstractions.d.ts +16 -0
  490. package/api/features/GetSettings/abstractions.js +6 -0
  491. package/api/features/GetSettings/abstractions.js.map +1 -0
  492. package/api/features/GetSettings/feature.d.ts +4 -0
  493. package/api/features/GetSettings/feature.js +13 -0
  494. package/api/features/GetSettings/feature.js.map +1 -0
  495. package/api/features/GetSettings/index.d.ts +2 -0
  496. package/api/features/GetSettings/index.js +2 -0
  497. package/api/features/ModelRoles/ModelRolesHandler.d.ts +15 -0
  498. package/api/features/ModelRoles/ModelRolesHandler.js +74 -0
  499. package/api/features/ModelRoles/ModelRolesHandler.js.map +1 -0
  500. package/api/features/ModelRoles/feature.d.ts +4 -0
  501. package/api/features/ModelRoles/feature.js +11 -0
  502. package/api/features/ModelRoles/feature.js.map +1 -0
  503. package/api/features/ModelRoles/index.d.ts +4 -0
  504. package/api/features/ModelRoles/index.js +2 -0
  505. package/api/features/ModelRoles/roles.d.ts +16 -0
  506. package/api/features/ModelRoles/roles.js +9 -0
  507. package/api/features/ModelRoles/roles.js.map +1 -0
  508. package/api/features/ModelRoles/types.d.ts +21 -0
  509. package/api/features/ModelRoles/types.js +7 -0
  510. package/api/features/ModelRoles/types.js.map +1 -0
  511. package/api/features/Projects/ProjectsHandler.d.ts +31 -0
  512. package/api/features/Projects/ProjectsHandler.js +103 -0
  513. package/api/features/Projects/ProjectsHandler.js.map +1 -0
  514. package/api/features/Projects/feature.d.ts +4 -0
  515. package/api/features/Projects/feature.js +11 -0
  516. package/api/features/Projects/feature.js.map +1 -0
  517. package/api/features/Projects/types.d.ts +50 -0
  518. package/api/features/Projects/types.js +0 -0
  519. package/api/features/Providers/ProvidersGraphQLMapper.d.ts +21 -0
  520. package/api/features/Providers/ProvidersGraphQLMapper.js +39 -0
  521. package/api/features/Providers/ProvidersGraphQLMapper.js.map +1 -0
  522. package/api/features/Providers/ProvidersHandler.d.ts +26 -0
  523. package/api/features/Providers/ProvidersHandler.js +79 -0
  524. package/api/features/Providers/ProvidersHandler.js.map +1 -0
  525. package/api/features/Providers/feature.d.ts +4 -0
  526. package/api/features/Providers/feature.js +13 -0
  527. package/api/features/Providers/feature.js.map +1 -0
  528. package/api/features/Providers/index.d.ts +1 -0
  529. package/api/features/Providers/index.js +0 -0
  530. package/api/features/Providers/types.d.ts +29 -0
  531. package/api/features/Providers/types.js +0 -0
  532. package/api/features/ReaderPersonas/ReaderPersonasHandler.d.ts +20 -0
  533. package/api/features/ReaderPersonas/ReaderPersonasHandler.js +43 -0
  534. package/api/features/ReaderPersonas/ReaderPersonasHandler.js.map +1 -0
  535. package/api/features/ReaderPersonas/feature.d.ts +4 -0
  536. package/api/features/ReaderPersonas/feature.js +11 -0
  537. package/api/features/ReaderPersonas/feature.js.map +1 -0
  538. package/api/features/ReaderPersonas/index.d.ts +2 -0
  539. package/api/features/ReaderPersonas/index.js +1 -0
  540. package/api/features/ReaderPersonas/types.d.ts +24 -0
  541. package/api/features/ReaderPersonas/types.js +0 -0
  542. package/api/features/UpdateSettings/UpdateSettingsRepository.d.ts +16 -0
  543. package/api/features/UpdateSettings/UpdateSettingsRepository.js +71 -0
  544. package/api/features/UpdateSettings/UpdateSettingsRepository.js.map +1 -0
  545. package/api/features/UpdateSettings/UpdateSettingsUseCase.d.ts +13 -0
  546. package/api/features/UpdateSettings/UpdateSettingsUseCase.js +30 -0
  547. package/api/features/UpdateSettings/UpdateSettingsUseCase.js.map +1 -0
  548. package/api/features/UpdateSettings/abstractions.d.ts +36 -0
  549. package/api/features/UpdateSettings/abstractions.js +8 -0
  550. package/api/features/UpdateSettings/abstractions.js.map +1 -0
  551. package/api/features/UpdateSettings/errors.d.ts +10 -0
  552. package/api/features/UpdateSettings/errors.js +14 -0
  553. package/api/features/UpdateSettings/errors.js.map +1 -0
  554. package/api/features/UpdateSettings/events.d.ts +10 -0
  555. package/api/features/UpdateSettings/events.js +21 -0
  556. package/api/features/UpdateSettings/events.js.map +1 -0
  557. package/api/features/UpdateSettings/feature.d.ts +4 -0
  558. package/api/features/UpdateSettings/feature.js +13 -0
  559. package/api/features/UpdateSettings/feature.js.map +1 -0
  560. package/api/features/UpdateSettings/index.d.ts +1 -0
  561. package/api/features/UpdateSettings/index.js +1 -0
  562. package/api/features/WbGeneratePageContent/ComponentFilter.d.ts +18 -0
  563. package/api/features/WbGeneratePageContent/ComponentFilter.js +69 -0
  564. package/api/features/WbGeneratePageContent/ComponentFilter.js.map +1 -0
  565. package/api/features/WbGeneratePageContent/WbGeneratePageContentTask.d.ts +39 -0
  566. package/api/features/WbGeneratePageContent/WbGeneratePageContentTask.js +94 -0
  567. package/api/features/WbGeneratePageContent/WbGeneratePageContentTask.js.map +1 -0
  568. package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.d.ts +21 -0
  569. package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.js +113 -0
  570. package/api/features/WbGeneratePageContent/WbGeneratePageContentUseCase.js.map +1 -0
  571. package/api/features/WbGeneratePageContent/abstractions.d.ts +31 -0
  572. package/api/features/WbGeneratePageContent/abstractions.js +5 -0
  573. package/api/features/WbGeneratePageContent/abstractions.js.map +1 -0
  574. package/api/features/WbGeneratePageContent/buildPrompt.d.ts +3 -0
  575. package/api/features/WbGeneratePageContent/buildPrompt.js +158 -0
  576. package/api/features/WbGeneratePageContent/buildPrompt.js.map +1 -0
  577. package/api/features/WbGeneratePageContent/capability.d.ts +16 -0
  578. package/api/features/WbGeneratePageContent/capability.js +17 -0
  579. package/api/features/WbGeneratePageContent/capability.js.map +1 -0
  580. package/api/features/WbGeneratePageContent/feature.d.ts +4 -0
  581. package/api/features/WbGeneratePageContent/feature.js +15 -0
  582. package/api/features/WbGeneratePageContent/feature.js.map +1 -0
  583. package/api/features/WbGeneratePageContent/index.d.ts +1 -0
  584. package/api/features/WbGeneratePageContent/index.js +1 -0
  585. package/api/features/WbTranslatePage/LexicalParser.d.ts +10 -0
  586. package/api/features/WbTranslatePage/LexicalParser.js +37 -0
  587. package/api/features/WbTranslatePage/LexicalParser.js.map +1 -0
  588. package/api/features/WbTranslatePage/WbTranslateLayoutDecorator.d.ts +44 -0
  589. package/api/features/WbTranslatePage/WbTranslateLayoutDecorator.js +185 -0
  590. package/api/features/WbTranslatePage/WbTranslateLayoutDecorator.js.map +1 -0
  591. package/api/features/WbTranslatePage/WbTranslatePageDecorator.d.ts +38 -0
  592. package/api/features/WbTranslatePage/WbTranslatePageDecorator.js +163 -0
  593. package/api/features/WbTranslatePage/WbTranslatePageDecorator.js.map +1 -0
  594. package/api/features/WbTranslatePage/abstractions/LexicalParser.d.ts +7 -0
  595. package/api/features/WbTranslatePage/abstractions/LexicalParser.js +5 -0
  596. package/api/features/WbTranslatePage/abstractions/LexicalParser.js.map +1 -0
  597. package/api/features/WbTranslatePage/capability.d.ts +13 -0
  598. package/api/features/WbTranslatePage/capability.js +19 -0
  599. package/api/features/WbTranslatePage/capability.js.map +1 -0
  600. package/api/features/WbTranslatePage/feature.d.ts +4 -0
  601. package/api/features/WbTranslatePage/feature.js +20 -0
  602. package/api/features/WbTranslatePage/feature.js.map +1 -0
  603. package/api/features/WbTranslatePage/index.d.ts +2 -0
  604. package/api/features/WbTranslatePage/index.js +2 -0
  605. package/api/features/WbTranslatePage/translatableBindings.d.ts +21 -0
  606. package/api/features/WbTranslatePage/translatableBindings.js +57 -0
  607. package/api/features/WbTranslatePage/translatableBindings.js.map +1 -0
  608. package/api/features/WbTranslatePage/translatableGlobals.d.ts +21 -0
  609. package/api/features/WbTranslatePage/translatableGlobals.js +29 -0
  610. package/api/features/WbTranslatePage/translatableGlobals.js.map +1 -0
  611. package/api/features/WorkflowReview/AiStepRunner/AiStepRunner.d.ts +41 -0
  612. package/api/features/WorkflowReview/AiStepRunner/AiStepRunner.js +253 -0
  613. package/api/features/WorkflowReview/AiStepRunner/AiStepRunner.js.map +1 -0
  614. package/api/features/WorkflowReview/AiStepRunner/aiRunFailureReasons.d.ts +4 -0
  615. package/api/features/WorkflowReview/AiStepRunner/aiRunFailureReasons.js +7 -0
  616. package/api/features/WorkflowReview/AiStepRunner/aiRunFailureReasons.js.map +1 -0
  617. package/api/features/WorkflowReview/AiStepRunner/feature.d.ts +5 -0
  618. package/api/features/WorkflowReview/AiStepRunner/feature.js +11 -0
  619. package/api/features/WorkflowReview/AiStepRunner/feature.js.map +1 -0
  620. package/api/features/WorkflowReview/AiStepType/AiStepType.d.ts +53 -0
  621. package/api/features/WorkflowReview/AiStepType/AiStepType.js +121 -0
  622. package/api/features/WorkflowReview/AiStepType/AiStepType.js.map +1 -0
  623. package/api/features/WorkflowReview/ListWorkflowAiModels/ListWorkflowAiModelsUseCase.d.ts +17 -0
  624. package/api/features/WorkflowReview/ListWorkflowAiModels/ListWorkflowAiModelsUseCase.js +61 -0
  625. package/api/features/WorkflowReview/ListWorkflowAiModels/ListWorkflowAiModelsUseCase.js.map +1 -0
  626. package/api/features/WorkflowReview/ListWorkflowAiModels/abstractions.d.ts +32 -0
  627. package/api/features/WorkflowReview/ListWorkflowAiModels/abstractions.js +5 -0
  628. package/api/features/WorkflowReview/ListWorkflowAiModels/abstractions.js.map +1 -0
  629. package/api/features/WorkflowReview/ListWorkflowAiModels/feature.d.ts +4 -0
  630. package/api/features/WorkflowReview/ListWorkflowAiModels/feature.js +11 -0
  631. package/api/features/WorkflowReview/ListWorkflowAiModels/feature.js.map +1 -0
  632. package/api/features/WorkflowReview/ListWorkflowAiModels/index.d.ts +2 -0
  633. package/api/features/WorkflowReview/ListWorkflowAiModels/index.js +1 -0
  634. package/api/features/WorkflowReview/WorkflowsReviewCapability.d.ts +12 -0
  635. package/api/features/WorkflowReview/WorkflowsReviewCapability.js +38 -0
  636. package/api/features/WorkflowReview/WorkflowsReviewCapability.js.map +1 -0
  637. package/api/features/WorkflowReview/aiFailureReasons.d.ts +11 -0
  638. package/api/features/WorkflowReview/aiFailureReasons.js +9 -0
  639. package/api/features/WorkflowReview/aiFailureReasons.js.map +1 -0
  640. package/api/features/WorkflowReview/aiReviewOutputSchema.d.ts +29 -0
  641. package/api/features/WorkflowReview/aiReviewOutputSchema.js +28 -0
  642. package/api/features/WorkflowReview/aiReviewOutputSchema.js.map +1 -0
  643. package/api/features/WorkflowReview/aiStepConfigSchema.d.ts +13 -0
  644. package/api/features/WorkflowReview/aiStepConfigSchema.js +11 -0
  645. package/api/features/WorkflowReview/aiStepConfigSchema.js.map +1 -0
  646. package/api/features/WorkflowReview/buildAiStepPrompt.d.ts +35 -0
  647. package/api/features/WorkflowReview/buildAiStepPrompt.js +47 -0
  648. package/api/features/WorkflowReview/buildAiStepPrompt.js.map +1 -0
  649. package/api/features/WorkflowReview/constants.d.ts +8 -0
  650. package/api/features/WorkflowReview/constants.js +7 -0
  651. package/api/features/WorkflowReview/constants.js.map +1 -0
  652. package/api/features/WorkflowReview/toLoggedAiError.d.ts +13 -0
  653. package/api/features/WorkflowReview/toLoggedAiError.js +27 -0
  654. package/api/features/WorkflowReview/toLoggedAiError.js.map +1 -0
  655. package/api/features/WriterPersonas/WriterPersonasHandler.d.ts +20 -0
  656. package/api/features/WriterPersonas/WriterPersonasHandler.js +43 -0
  657. package/api/features/WriterPersonas/WriterPersonasHandler.js.map +1 -0
  658. package/api/features/WriterPersonas/feature.d.ts +4 -0
  659. package/api/features/WriterPersonas/feature.js +11 -0
  660. package/api/features/WriterPersonas/feature.js.map +1 -0
  661. package/api/features/WriterPersonas/index.d.ts +2 -0
  662. package/api/features/WriterPersonas/index.js +1 -0
  663. package/api/features/WriterPersonas/types.d.ts +24 -0
  664. package/api/features/WriterPersonas/types.js +0 -0
  665. package/api/features/shared/SettingsCache.d.ts +12 -0
  666. package/api/features/shared/SettingsCache.js +22 -0
  667. package/api/features/shared/SettingsCache.js.map +1 -0
  668. package/api/features/shared/abstractions.d.ts +38 -0
  669. package/api/features/shared/abstractions.js +7 -0
  670. package/api/features/shared/abstractions.js.map +1 -0
  671. package/api/features/shared/index.d.ts +3 -0
  672. package/api/features/shared/index.js +1 -0
  673. package/api/features/shared/modelId.d.ts +11 -0
  674. package/api/features/shared/modelId.js +4 -0
  675. package/api/features/shared/modelId.js.map +1 -0
  676. package/api/graphql/AiPowerUpsSettingsGraphQLMapper.d.ts +13 -0
  677. package/api/graphql/AiPowerUpsSettingsGraphQLMapper.js +44 -0
  678. package/api/graphql/AiPowerUpsSettingsGraphQLMapper.js.map +1 -0
  679. package/api/graphql/BaseGraphQLSchema.d.ts +9 -0
  680. package/api/graphql/BaseGraphQLSchema.js +194 -0
  681. package/api/graphql/BaseGraphQLSchema.js.map +1 -0
  682. package/api/graphql/CmsCompareEntryRevisionsSchema.d.ts +9 -0
  683. package/api/graphql/CmsCompareEntryRevisionsSchema.js +72 -0
  684. package/api/graphql/CmsCompareEntryRevisionsSchema.js.map +1 -0
  685. package/api/graphql/ListWorkflowAiModelsSchema.d.ts +15 -0
  686. package/api/graphql/ListWorkflowAiModelsSchema.js +48 -0
  687. package/api/graphql/ListWorkflowAiModelsSchema.js.map +1 -0
  688. package/api/graphql/abstractions.d.ts +9 -0
  689. package/api/graphql/abstractions.js +5 -0
  690. package/api/graphql/abstractions.js.map +1 -0
  691. package/api/types.d.ts +8 -0
  692. package/api/types.js +6 -0
  693. package/domain/LlmJsonResponse.d.ts +8 -0
  694. package/domain/LlmJsonResponse.js +38 -0
  695. package/domain/LlmJsonResponse.js.map +1 -0
  696. package/domain/TranslatableBindingKey.d.ts +17 -0
  697. package/domain/TranslatableBindingKey.js +23 -0
  698. package/domain/TranslatableBindingKey.js.map +1 -0
  699. package/exports/admin/ai-powerups.d.ts +1 -0
  700. package/exports/admin/ai-powerups.js +1 -0
  701. package/exports/api/ai-powerups.d.ts +7 -0
  702. package/exports/api/ai-powerups.js +5 -0
  703. package/index.d.ts +1 -0
  704. package/index.js +1 -0
  705. package/package.json +72 -0
@@ -0,0 +1,133 @@
1
+ import { stepCountIs } from "ai";
2
+ import { Result } from "@webiny/feature/api";
3
+ import { Ai, AiSdkTools, AiToolPipelineRunner } from "@webiny/api-core/features/ai/index.js";
4
+ import { ListTagsUseCase } from "@webiny/api-file-manager/features/file/ListTags/index.js";
5
+ import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
6
+ import { ModelToAstConverter } from "@webiny/api-headless-cms/features/contentModel/ModelToAstConverter/index.js";
7
+ import { CmsModelToJsonSchemaConverter } from "@webiny/api-headless-cms/utils/contentModelToJsonSchema/index.js";
8
+ import { ResolveAiCapabilityUseCase, withAdditionalInstructions } from "../Capabilities/index.js";
9
+ import { CMS_GENERATE_ENTRY_CAPABILITY } from "./capability.js";
10
+ import { AiPromptContextBuilder, formatAdditionalFilesContext } from "../AiPromptContext/index.js";
11
+ import { createReadProjectFileTool } from "../AiPromptContext/ReadProjectFileTool.js";
12
+ import { CmsGenerateEntryContentUseCase } from "./abstractions.js";
13
+ import { buildEntryPrompt } from "./buildPrompt.js";
14
+ import { LlmJsonResponse } from "../../../domain/LlmJsonResponse.js";
15
+ import { injectDynamicZoneTypenames } from "./injectDynamicZoneTypenames.js";
16
+ class CmsGenerateEntryContentUseCaseImpl {
17
+ constructor(promptContextBuilder, resolveCapability, ai, aiSdkTools, listTags, getModel, modelToAst, toolPipelineRunner){
18
+ this.promptContextBuilder = promptContextBuilder;
19
+ this.resolveCapability = resolveCapability;
20
+ this.ai = ai;
21
+ this.aiSdkTools = aiSdkTools;
22
+ this.listTags = listTags;
23
+ this.getModel = getModel;
24
+ this.modelToAst = modelToAst;
25
+ this.toolPipelineRunner = toolPipelineRunner;
26
+ }
27
+ async execute(params) {
28
+ const resolved = await this.resolveCapability.execute(CMS_GENERATE_ENTRY_CAPABILITY);
29
+ if (resolved.isFail()) return Result.fail(resolved.error);
30
+ const capability = resolved.value;
31
+ const modelResult = await this.getModel.execute(params.modelId);
32
+ if (modelResult.isFail()) return Result.fail(new Error(`Content model "${params.modelId}" not found.`));
33
+ const model = modelResult.value;
34
+ const modelAst = this.modelToAst.toAst(model);
35
+ const jsonSchemaConverter = new CmsModelToJsonSchemaConverter();
36
+ const entrySchema = jsonSchemaConverter.convert(modelAst, {
37
+ name: model.name,
38
+ description: model.description
39
+ });
40
+ const sdkTools = this.aiSdkTools.getToolSet();
41
+ const context = await this.promptContextBuilder.execute({
42
+ projectId: params.projectId,
43
+ readerPersonaId: params.readerPersonaId,
44
+ writerPersonaId: params.writerPersonaId,
45
+ excludedFileIds: params.excludedFileIds,
46
+ additionalFileIds: params.additionalFileIds
47
+ });
48
+ if (context.allProjectFiles.length > 0) {
49
+ const projectFileTool = createReadProjectFileTool(context.allProjectFiles, context.excludedFileIds);
50
+ Object.assign(sdkTools, projectFileTool);
51
+ }
52
+ const tagsResult = await this.listTags.execute({
53
+ where: {
54
+ type_startsWith: "image/"
55
+ },
56
+ limit: 100
57
+ });
58
+ const imageTags = tagsResult.isOk() ? tagsResult.value.map((t)=>t.tag) : [];
59
+ const systemText = withAdditionalInstructions(capability, buildEntryPrompt(model.name, entrySchema, imageTags) + context.toString());
60
+ const system = {
61
+ role: "system",
62
+ content: systemText,
63
+ providerOptions: {
64
+ anthropic: {
65
+ cacheControl: {
66
+ type: "ephemeral"
67
+ }
68
+ }
69
+ }
70
+ };
71
+ try {
72
+ const aiResult = await this.ai.generateText({
73
+ model: capability.model,
74
+ connection: capability.connection,
75
+ system,
76
+ toolChoice: "auto",
77
+ prompt: params.prompt + formatAdditionalFilesContext(context.additionalFiles),
78
+ ...Object.keys(sdkTools).length > 0 ? {
79
+ tools: sdkTools,
80
+ stopWhen: stepCountIs(20)
81
+ } : {}
82
+ });
83
+ const text = aiResult.text || (aiResult.steps.filter((step)=>step.text.length > 0).pop()?.text ?? "");
84
+ const entry = LlmJsonResponse.fromRawText(text).toArray().pop();
85
+ let resolved;
86
+ if (entry) {
87
+ resolved = await this.toolPipelineRunner.resolve(entry);
88
+ await injectDynamicZoneTypenames(resolved, modelAst, model.singularApiName);
89
+ }
90
+ const filesRead = new Set();
91
+ let toolCallsMade = 0;
92
+ for (const step of aiResult.steps)for (const call of step.toolCalls){
93
+ toolCallsMade++;
94
+ if ("read_project_file" === call.toolName) {
95
+ const input = call.input;
96
+ if (input.fileId) filesRead.add(input.fileId);
97
+ }
98
+ }
99
+ const telemetry = {
100
+ filesRead: [
101
+ ...filesRead
102
+ ],
103
+ cacheHit: context.cacheHit,
104
+ toolCallsMade,
105
+ totalSteps: aiResult.steps.length,
106
+ toolsAvailable: Object.keys(sdkTools),
107
+ imageTagsInPrompt: imageTags
108
+ };
109
+ return Result.ok({
110
+ values: resolved ?? {},
111
+ telemetry
112
+ });
113
+ } catch (error) {
114
+ return Result.fail(new Error(`AI generation failed: ${error instanceof Error ? error.message : String(error)}`));
115
+ }
116
+ }
117
+ }
118
+ const CmsGenerateEntryContentUseCaseImplementation = CmsGenerateEntryContentUseCase.createImplementation({
119
+ implementation: CmsGenerateEntryContentUseCaseImpl,
120
+ dependencies: [
121
+ AiPromptContextBuilder,
122
+ ResolveAiCapabilityUseCase,
123
+ Ai,
124
+ AiSdkTools,
125
+ ListTagsUseCase,
126
+ GetModelUseCase,
127
+ ModelToAstConverter,
128
+ AiToolPipelineRunner
129
+ ]
130
+ });
131
+ export { CmsGenerateEntryContentUseCaseImplementation };
132
+
133
+ //# sourceMappingURL=CmsGenerateEntryContentUseCase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/CmsGenerateEntryContent/CmsGenerateEntryContentUseCase.js","sources":["../../../../src/api/features/CmsGenerateEntryContent/CmsGenerateEntryContentUseCase.ts"],"sourcesContent":["import { stepCountIs } from \"ai\";\nimport { Result } from \"@webiny/feature/api\";\nimport { Ai } from \"@webiny/api-core/features/ai/index.js\";\nimport { AiSdkTools } from \"@webiny/api-core/features/ai/index.js\";\nimport { AiToolPipelineRunner } from \"@webiny/api-core/features/ai/index.js\";\nimport { ListTagsUseCase } from \"@webiny/api-file-manager/features/file/ListTags/index.js\";\nimport { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel/index.js\";\nimport { ModelToAstConverter } from \"@webiny/api-headless-cms/features/contentModel/ModelToAstConverter/index.js\";\nimport { CmsModelToJsonSchemaConverter } from \"@webiny/api-headless-cms/utils/contentModelToJsonSchema/index.js\";\nimport {\n ResolveAiCapabilityUseCase,\n withAdditionalInstructions\n} from \"~/api/features/Capabilities/index.js\";\nimport { CMS_GENERATE_ENTRY_CAPABILITY } from \"./capability.js\";\nimport {\n AiPromptContextBuilder,\n formatAdditionalFilesContext\n} from \"~/api/features/AiPromptContext/index.js\";\nimport { createReadProjectFileTool } from \"~/api/features/AiPromptContext/ReadProjectFileTool.js\";\nimport { CmsGenerateEntryContentUseCase } from \"./abstractions.js\";\nimport type {\n CmsGenerateEntryContentParams,\n GenerateEntryContentResult,\n GenerateEntryContentTelemetry\n} from \"./abstractions.js\";\nimport { buildEntryPrompt } from \"./buildPrompt.js\";\nimport { LlmJsonResponse } from \"~/domain/LlmJsonResponse.js\";\nimport { injectDynamicZoneTypenames } from \"./injectDynamicZoneTypenames.js\";\n\nclass CmsGenerateEntryContentUseCaseImpl implements CmsGenerateEntryContentUseCase.Interface {\n constructor(\n private promptContextBuilder: AiPromptContextBuilder.Interface,\n private resolveCapability: ResolveAiCapabilityUseCase.Interface,\n private ai: Ai.Interface,\n private aiSdkTools: AiSdkTools.Interface,\n private listTags: ListTagsUseCase.Interface,\n private getModel: GetModelUseCase.Interface,\n private modelToAst: ModelToAstConverter.Interface,\n private toolPipelineRunner: AiToolPipelineRunner.Interface\n ) {}\n\n async execute<TValues = Record<string, any>>(\n params: CmsGenerateEntryContentParams\n ): Promise<Result<GenerateEntryContentResult<TValues>, Error>> {\n const resolved = await this.resolveCapability.execute(CMS_GENERATE_ENTRY_CAPABILITY);\n if (resolved.isFail()) {\n return Result.fail(resolved.error);\n }\n\n const capability = resolved.value;\n\n const modelResult = await this.getModel.execute(params.modelId);\n if (modelResult.isFail()) {\n return Result.fail(new Error(`Content model \"${params.modelId}\" not found.`));\n }\n\n const model = modelResult.value;\n const modelAst = this.modelToAst.toAst(model);\n const jsonSchemaConverter = new CmsModelToJsonSchemaConverter();\n const entrySchema = jsonSchemaConverter.convert(modelAst, {\n name: model.name,\n description: model.description\n });\n\n const sdkTools = this.aiSdkTools.getToolSet();\n\n const context = await this.promptContextBuilder.execute({\n projectId: params.projectId,\n readerPersonaId: params.readerPersonaId,\n writerPersonaId: params.writerPersonaId,\n excludedFileIds: params.excludedFileIds,\n additionalFileIds: params.additionalFileIds\n });\n\n if (context.allProjectFiles.length > 0) {\n const projectFileTool = createReadProjectFileTool(\n context.allProjectFiles,\n context.excludedFileIds\n );\n Object.assign(sdkTools, projectFileTool);\n }\n\n const tagsResult = await this.listTags.execute({\n where: { type_startsWith: \"image/\" },\n limit: 100\n });\n const imageTags = tagsResult.isOk() ? tagsResult.value.map(t => t.tag) : [];\n\n const systemText = withAdditionalInstructions(\n capability,\n buildEntryPrompt(model.name, entrySchema, imageTags) + context.toString()\n );\n\n const system = {\n role: \"system\" as const,\n content: systemText,\n providerOptions: {\n anthropic: {\n cacheControl: { type: \"ephemeral\" }\n }\n }\n };\n\n try {\n const aiResult = await this.ai.generateText({\n model: capability.model,\n connection: capability.connection,\n system,\n toolChoice: \"auto\",\n prompt: params.prompt + formatAdditionalFilesContext(context.additionalFiles),\n ...(Object.keys(sdkTools).length > 0\n ? { tools: sdkTools, stopWhen: stepCountIs(20) }\n : {})\n });\n\n const text =\n aiResult.text ||\n (aiResult.steps.filter(step => step.text.length > 0).pop()?.text ?? \"\");\n\n const entry = LlmJsonResponse.fromRawText(text).toArray().pop();\n\n let resolved: Record<string, any> | undefined;\n\n if (entry) {\n resolved = (await this.toolPipelineRunner.resolve(entry)) as Record<string, any>;\n await injectDynamicZoneTypenames(resolved, modelAst, model.singularApiName);\n }\n\n const filesRead = new Set<string>();\n let toolCallsMade = 0;\n for (const step of aiResult.steps) {\n for (const call of step.toolCalls) {\n toolCallsMade++;\n if (call.toolName === \"read_project_file\") {\n const input = call.input as { fileId?: string };\n if (input.fileId) {\n filesRead.add(input.fileId);\n }\n }\n }\n }\n\n const telemetry: GenerateEntryContentTelemetry = {\n filesRead: [...filesRead],\n cacheHit: context.cacheHit,\n toolCallsMade,\n totalSteps: aiResult.steps.length,\n toolsAvailable: Object.keys(sdkTools),\n imageTagsInPrompt: imageTags\n };\n\n // Boundary cast: the AI output is dynamic JSON, so this is the one honest point\n // where we hand the resolved values to the caller's chosen `TValues` shape.\n return Result.ok({ values: (resolved ?? {}) as TValues, telemetry });\n } catch (error) {\n return Result.fail(\n new Error(\n `AI generation failed: ${error instanceof Error ? error.message : String(error)}`\n )\n );\n }\n }\n}\n\nexport const CmsGenerateEntryContentUseCaseImplementation =\n CmsGenerateEntryContentUseCase.createImplementation({\n implementation: CmsGenerateEntryContentUseCaseImpl,\n dependencies: [\n AiPromptContextBuilder,\n ResolveAiCapabilityUseCase,\n Ai,\n AiSdkTools,\n ListTagsUseCase,\n GetModelUseCase,\n ModelToAstConverter,\n AiToolPipelineRunner\n ]\n });\n"],"names":["CmsGenerateEntryContentUseCaseImpl","promptContextBuilder","resolveCapability","ai","aiSdkTools","listTags","getModel","modelToAst","toolPipelineRunner","params","resolved","CMS_GENERATE_ENTRY_CAPABILITY","Result","capability","modelResult","Error","model","modelAst","jsonSchemaConverter","CmsModelToJsonSchemaConverter","entrySchema","sdkTools","context","projectFileTool","createReadProjectFileTool","Object","tagsResult","imageTags","t","systemText","withAdditionalInstructions","buildEntryPrompt","system","aiResult","formatAdditionalFilesContext","stepCountIs","text","step","entry","LlmJsonResponse","injectDynamicZoneTypenames","filesRead","Set","toolCallsMade","call","input","telemetry","error","String","CmsGenerateEntryContentUseCaseImplementation","CmsGenerateEntryContentUseCase","AiPromptContextBuilder","ResolveAiCapabilityUseCase","Ai","AiSdkTools","ListTagsUseCase","GetModelUseCase","ModelToAstConverter","AiToolPipelineRunner"],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { Result } from "@webiny/feature/api";
2
+ export interface CmsGenerateEntryContentParams {
3
+ prompt: string;
4
+ modelId: string;
5
+ projectId?: string | null;
6
+ excludedFileIds?: string[] | null;
7
+ readerPersonaId?: string | null;
8
+ writerPersonaId?: string | null;
9
+ additionalFileIds?: string[] | null;
10
+ }
11
+ export interface GenerateEntryContentTelemetry {
12
+ filesRead: string[];
13
+ cacheHit: boolean;
14
+ toolCallsMade: number;
15
+ totalSteps: number;
16
+ toolsAvailable: string[];
17
+ imageTagsInPrompt: string[];
18
+ }
19
+ export interface GenerateEntryContentResult<TValues = Record<string, any>> {
20
+ /**
21
+ * The generated entry values, keyed by fieldId. Callers that consume the result
22
+ * directly (e.g. a bulk action) can read fields straight off this object; transport
23
+ * edges (the background task / websocket stream) serialize it themselves. Pass a type
24
+ * argument to `execute` to shape this (e.g. `execute<{ aiSummary?: string }>`).
25
+ */
26
+ values: TValues;
27
+ telemetry: GenerateEntryContentTelemetry;
28
+ }
29
+ export interface ICmsGenerateEntryContentUseCase {
30
+ execute<TValues = Record<string, any>>(params: CmsGenerateEntryContentParams): Promise<Result<GenerateEntryContentResult<TValues>, Error>>;
31
+ }
32
+ export declare const CmsGenerateEntryContentUseCase: import("@webiny/di").Abstraction<ICmsGenerateEntryContentUseCase>;
33
+ export declare namespace CmsGenerateEntryContentUseCase {
34
+ type Interface = ICmsGenerateEntryContentUseCase;
35
+ type Params = CmsGenerateEntryContentParams;
36
+ }
@@ -0,0 +1,5 @@
1
+ import { createAbstraction } from "@webiny/feature/api";
2
+ const CmsGenerateEntryContentUseCase = createAbstraction("AiPowerUpsCmsGenerateEntryContentUseCase");
3
+ export { CmsGenerateEntryContentUseCase };
4
+
5
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/CmsGenerateEntryContent/abstractions.js","sources":["../../../../src/api/features/CmsGenerateEntryContent/abstractions.ts"],"sourcesContent":["import { createAbstraction, Result } from \"@webiny/feature/api\";\n\nexport interface CmsGenerateEntryContentParams {\n prompt: string;\n modelId: string;\n projectId?: string | null;\n excludedFileIds?: string[] | null;\n readerPersonaId?: string | null;\n writerPersonaId?: string | null;\n additionalFileIds?: string[] | null;\n}\n\nexport interface GenerateEntryContentTelemetry {\n filesRead: string[];\n cacheHit: boolean;\n toolCallsMade: number;\n totalSteps: number;\n toolsAvailable: string[];\n imageTagsInPrompt: string[];\n}\n\nexport interface GenerateEntryContentResult<TValues = Record<string, any>> {\n /**\n * The generated entry values, keyed by fieldId. Callers that consume the result\n * directly (e.g. a bulk action) can read fields straight off this object; transport\n * edges (the background task / websocket stream) serialize it themselves. Pass a type\n * argument to `execute` to shape this (e.g. `execute<{ aiSummary?: string }>`).\n */\n values: TValues;\n telemetry: GenerateEntryContentTelemetry;\n}\n\nexport interface ICmsGenerateEntryContentUseCase {\n execute<TValues = Record<string, any>>(\n params: CmsGenerateEntryContentParams\n ): Promise<Result<GenerateEntryContentResult<TValues>, Error>>;\n}\n\nexport const CmsGenerateEntryContentUseCase = createAbstraction<ICmsGenerateEntryContentUseCase>(\n \"AiPowerUpsCmsGenerateEntryContentUseCase\"\n);\n\nexport namespace CmsGenerateEntryContentUseCase {\n export type Interface = ICmsGenerateEntryContentUseCase;\n export type Params = CmsGenerateEntryContentParams;\n}\n"],"names":["CmsGenerateEntryContentUseCase","createAbstraction"],"mappings":";AAsCO,MAAMA,iCAAiCC,kBAC1C"}
@@ -0,0 +1,2 @@
1
+ import type { JsonSchema } from "@webiny/api-headless-cms/utils/contentModelToJsonSchema/types.js";
2
+ export declare function buildEntryPrompt(modelName: string, entrySchema: JsonSchema, availableImageTags: string[]): string;
@@ -0,0 +1,61 @@
1
+ function buildEntryPrompt(modelName, entrySchema, availableImageTags) {
2
+ const tagListing = availableImageTags.length > 0 ? availableImageTags.map((t)=>`\`${t}\``).join(", ") : "(no image tags available in the File Manager — image fields should be left empty or omitted)";
3
+ return `You are a CMS content entry generator. Given a user prompt, generate structured content for a "${modelName}" entry using the JSON Schema below.
4
+
5
+ ### Rich Text Content
6
+
7
+ For rich text fields, wrap the value in a tool envelope:
8
+ \`\`\`json
9
+ { "tool": "textToLexical", "params": { "text": "<html content>" } }
10
+ \`\`\`
11
+
12
+ Write the content as semantic HTML: use <h1>-<h6>, <p>, <strong>, <em>, <ul>, <ol>, <li>, <a>, <blockquote>.
13
+ A single rich text field CAN contain an entire article with all headings, paragraphs, lists, and blockquotes.
14
+
15
+ ### Image Selection
16
+
17
+ You MUST call the \`listImagesByTag\` tool BEFORE using any image ID.
18
+ Do NOT invent image IDs. Any ID not returned by \`listImagesByTag\` will fail to resolve.
19
+
20
+ The File Manager currently has images tagged with: ${tagListing}.
21
+
22
+ When a field needs an image:
23
+ 1. Pick the tag from the list above that best matches the content topic.
24
+ 2. Call \`listImagesByTag\` with that tag.
25
+ 3. If results are non-empty, wrap the image reference in a tool envelope:
26
+ \`{ "tool": "cmsResolveImage", "params": { "id": "<image_id_from_search>" } }\`
27
+ 4. If results are empty, try one more tag. If still nothing, leave the field empty.
28
+
29
+ ### File Fields
30
+
31
+ For file/image fields, always use the \`cmsResolveImage\` tool envelope with an ID obtained from \`listImagesByTag\`:
32
+ \`{ "tool": "cmsResolveImage", "params": { "id": "<file_id>" } }\`
33
+
34
+ ### Reference Fields
35
+
36
+ Reference fields expect \`{ "entryId": "<id>", "modelId": "<model>" }\`. If you don't have real entry IDs, leave reference fields empty or use placeholder values.
37
+
38
+ ### SEO & Content Best Practices
39
+
40
+ - Use exactly ONE <h1> per rich text field as the main title.
41
+ - Use <h2> for sections, <h3> for subsections. Never skip heading levels.
42
+ - Keep paragraphs short — 2 to 4 sentences.
43
+ - Lead with the most important information first.
44
+ - Incorporate topic keywords naturally without stuffing.
45
+
46
+ ### Entry Schema
47
+
48
+ The entry must conform to this JSON Schema:
49
+
50
+ \`\`\`json
51
+ ${JSON.stringify(entrySchema, null, 2)}
52
+ \`\`\`
53
+
54
+ You MUST generate the full entry content as JSON after using any tools.
55
+ Tool calls are for gathering information — your final response must always be the complete entry JSON object.
56
+
57
+ IMPORTANT: You MUST return a parsable JSON object conforming to the schema above. No extra text outside the JSON.`;
58
+ }
59
+ export { buildEntryPrompt };
60
+
61
+ //# sourceMappingURL=buildPrompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/CmsGenerateEntryContent/buildPrompt.js","sources":["../../../../src/api/features/CmsGenerateEntryContent/buildPrompt.ts"],"sourcesContent":["import type { JsonSchema } from \"@webiny/api-headless-cms/utils/contentModelToJsonSchema/types.js\";\n\nexport function buildEntryPrompt(\n modelName: string,\n entrySchema: JsonSchema,\n availableImageTags: string[]\n): string {\n const tagListing =\n availableImageTags.length > 0\n ? availableImageTags.map(t => `\\`${t}\\``).join(\", \")\n : \"(no image tags available in the File Manager — image fields should be left empty or omitted)\";\n\n return `You are a CMS content entry generator. Given a user prompt, generate structured content for a \"${modelName}\" entry using the JSON Schema below.\n\n### Rich Text Content\n\nFor rich text fields, wrap the value in a tool envelope:\n\\`\\`\\`json\n{ \"tool\": \"textToLexical\", \"params\": { \"text\": \"<html content>\" } }\n\\`\\`\\`\n\nWrite the content as semantic HTML: use <h1>-<h6>, <p>, <strong>, <em>, <ul>, <ol>, <li>, <a>, <blockquote>.\nA single rich text field CAN contain an entire article with all headings, paragraphs, lists, and blockquotes.\n\n### Image Selection\n\nYou MUST call the \\`listImagesByTag\\` tool BEFORE using any image ID.\nDo NOT invent image IDs. Any ID not returned by \\`listImagesByTag\\` will fail to resolve.\n\nThe File Manager currently has images tagged with: ${tagListing}.\n\nWhen a field needs an image:\n1. Pick the tag from the list above that best matches the content topic.\n2. Call \\`listImagesByTag\\` with that tag.\n3. If results are non-empty, wrap the image reference in a tool envelope:\n \\`{ \"tool\": \"cmsResolveImage\", \"params\": { \"id\": \"<image_id_from_search>\" } }\\`\n4. If results are empty, try one more tag. If still nothing, leave the field empty.\n\n### File Fields\n\nFor file/image fields, always use the \\`cmsResolveImage\\` tool envelope with an ID obtained from \\`listImagesByTag\\`:\n\\`{ \"tool\": \"cmsResolveImage\", \"params\": { \"id\": \"<file_id>\" } }\\`\n\n### Reference Fields\n\nReference fields expect \\`{ \"entryId\": \"<id>\", \"modelId\": \"<model>\" }\\`. If you don't have real entry IDs, leave reference fields empty or use placeholder values.\n\n### SEO & Content Best Practices\n\n- Use exactly ONE <h1> per rich text field as the main title.\n- Use <h2> for sections, <h3> for subsections. Never skip heading levels.\n- Keep paragraphs short — 2 to 4 sentences.\n- Lead with the most important information first.\n- Incorporate topic keywords naturally without stuffing.\n\n### Entry Schema\n\nThe entry must conform to this JSON Schema:\n\n\\`\\`\\`json\n${JSON.stringify(entrySchema, null, 2)}\n\\`\\`\\`\n\nYou MUST generate the full entry content as JSON after using any tools.\nTool calls are for gathering information — your final response must always be the complete entry JSON object.\n\nIMPORTANT: You MUST return a parsable JSON object conforming to the schema above. No extra text outside the JSON.`;\n}\n"],"names":["buildEntryPrompt","modelName","entrySchema","availableImageTags","tagListing","t","JSON"],"mappings":"AAEO,SAASA,iBACZC,SAAiB,EACjBC,WAAuB,EACvBC,kBAA4B;IAE5B,MAAMC,aACFD,mBAAmB,MAAM,GAAG,IACtBA,mBAAmB,GAAG,CAACE,CAAAA,IAAK,CAAC,EAAE,EAAEA,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,QAC7C;IAEV,OAAO,CAAC,+FAA+F,EAAEJ,UAAU;;;;;;;;;;;;;;;;;mDAiBpE,EAAEG,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BhE,EAAEE,KAAK,SAAS,CAACJ,aAAa,MAAM,GAAG;;;;;;iHAM0E,CAAC;AAClH"}
@@ -0,0 +1,17 @@
1
+ import { AiCapability } from "../../../api/features/Capabilities/index.js";
2
+ export declare const CMS_GENERATE_ENTRY_CAPABILITY = "cmsGenerateEntry";
3
+ /**
4
+ * No `guidance`: this prompt is rebuilt on every request from the content model's JSON Schema and
5
+ * the File Manager's current image tags, so there is no fixed block a project could replace without
6
+ * dropping the schema the output has to conform to. Additional instructions still apply.
7
+ */
8
+ declare class CmsGenerateEntryCapabilityImpl implements AiCapability.Interface {
9
+ readonly id = "cmsGenerateEntry";
10
+ readonly label = "CMS entry generation";
11
+ readonly description = "Writes a content entry from a prompt, following the content model's schema and picking images from the File Manager.";
12
+ readonly defaultRole: "standard";
13
+ }
14
+ export declare const CmsGenerateEntryCapability: typeof CmsGenerateEntryCapabilityImpl & {
15
+ __abstraction: import("@webiny/di").Abstraction<import("~/api/features/Capabilities/index.js").IAiCapability>;
16
+ };
17
+ export {};
@@ -0,0 +1,17 @@
1
+ import { AiCapability } from "../Capabilities/index.js";
2
+ const CMS_GENERATE_ENTRY_CAPABILITY = "cmsGenerateEntry";
3
+ class CmsGenerateEntryCapabilityImpl {
4
+ constructor(){
5
+ this.id = CMS_GENERATE_ENTRY_CAPABILITY;
6
+ this.label = "CMS entry generation";
7
+ this.description = "Writes a content entry from a prompt, following the content model's schema and picking images from the File Manager.";
8
+ this.defaultRole = "standard";
9
+ }
10
+ }
11
+ const CmsGenerateEntryCapability = AiCapability.createImplementation({
12
+ implementation: CmsGenerateEntryCapabilityImpl,
13
+ dependencies: []
14
+ });
15
+ export { CMS_GENERATE_ENTRY_CAPABILITY, CmsGenerateEntryCapability };
16
+
17
+ //# sourceMappingURL=capability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/CmsGenerateEntryContent/capability.js","sources":["../../../../src/api/features/CmsGenerateEntryContent/capability.ts"],"sourcesContent":["import { AiCapability } from \"~/api/features/Capabilities/index.js\";\n\nexport const CMS_GENERATE_ENTRY_CAPABILITY = \"cmsGenerateEntry\";\n\n/**\n * No `guidance`: this prompt is rebuilt on every request from the content model's JSON Schema and\n * the File Manager's current image tags, so there is no fixed block a project could replace without\n * dropping the schema the output has to conform to. Additional instructions still apply.\n */\nclass CmsGenerateEntryCapabilityImpl implements AiCapability.Interface {\n readonly id = CMS_GENERATE_ENTRY_CAPABILITY;\n readonly label = \"CMS entry generation\";\n readonly description =\n \"Writes a content entry from a prompt, following the content model's schema and picking images from the File Manager.\";\n readonly defaultRole = \"standard\" as const;\n}\n\nexport const CmsGenerateEntryCapability = AiCapability.createImplementation({\n implementation: CmsGenerateEntryCapabilityImpl,\n dependencies: []\n});\n"],"names":["CMS_GENERATE_ENTRY_CAPABILITY","CmsGenerateEntryCapabilityImpl","CmsGenerateEntryCapability","AiCapability"],"mappings":";AAEO,MAAMA,gCAAgC;AAO7C,MAAMC;;aACO,EAAE,GAAGD;aACL,KAAK,GAAG;aACR,WAAW,GAChB;aACK,WAAW,GAAG;;AAC3B;AAEO,MAAME,6BAA6BC,aAAa,oBAAoB,CAAC;IACxE,gBAAgBF;IAChB,cAAc,EAAE;AACpB"}
@@ -0,0 +1,4 @@
1
+ export declare const CmsGenerateEntryContentFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -0,0 +1,15 @@
1
+ import { createFeature } from "@webiny/feature/api";
2
+ import { CmsGenerateEntryContentUseCaseImplementation } from "./CmsGenerateEntryContentUseCase.js";
3
+ import { CmsGenerateEntryContentTask } from "./CmsGenerateEntryContentTask.js";
4
+ import { CmsGenerateEntryCapability } from "./capability.js";
5
+ const CmsGenerateEntryContentFeature = createFeature({
6
+ name: "AiPowerUps/CmsGenerateEntryContent",
7
+ register (container) {
8
+ container.register(CmsGenerateEntryCapability);
9
+ container.register(CmsGenerateEntryContentUseCaseImplementation);
10
+ container.register(CmsGenerateEntryContentTask);
11
+ }
12
+ });
13
+ export { CmsGenerateEntryContentFeature };
14
+
15
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/CmsGenerateEntryContent/feature.js","sources":["../../../../src/api/features/CmsGenerateEntryContent/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { CmsGenerateEntryContentUseCaseImplementation } from \"./CmsGenerateEntryContentUseCase.js\";\nimport { CmsGenerateEntryContentTask } from \"./CmsGenerateEntryContentTask.js\";\nimport { CmsGenerateEntryCapability } from \"./capability.js\";\n\nexport const CmsGenerateEntryContentFeature = createFeature({\n name: \"AiPowerUps/CmsGenerateEntryContent\",\n register(container) {\n container.register(CmsGenerateEntryCapability);\n container.register(CmsGenerateEntryContentUseCaseImplementation);\n container.register(CmsGenerateEntryContentTask);\n }\n});\n"],"names":["CmsGenerateEntryContentFeature","createFeature","container","CmsGenerateEntryCapability","CmsGenerateEntryContentUseCaseImplementation","CmsGenerateEntryContentTask"],"mappings":";;;;AAKO,MAAMA,iCAAiCC,cAAc;IACxD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;QACnBD,UAAU,QAAQ,CAACE;QACnBF,UAAU,QAAQ,CAACG;IACvB;AACJ"}
@@ -0,0 +1 @@
1
+ export { CmsGenerateEntryContentUseCase } from "./abstractions.js";
@@ -0,0 +1 @@
1
+ export { CmsGenerateEntryContentUseCase } from "./abstractions.js";
@@ -0,0 +1,2 @@
1
+ import type { CmsModelAst } from "@webiny/api-headless-cms/types";
2
+ export declare function injectDynamicZoneTypenames(values: Record<string, any>, modelAst: CmsModelAst, singularApiName: string): Promise<void>;
@@ -0,0 +1,30 @@
1
+ import { ContentEntryTraverser } from "@webiny/api-headless-cms/features/contentEntry/ContentEntryTraverser/ContentEntryTraverser.js";
2
+ import { createTypeName } from "@webiny/api-headless-cms/utils/createTypeName.js";
3
+ async function injectDynamicZoneTypenames(values, modelAst, singularApiName) {
4
+ const traverser = new ContentEntryTraverser(modelAst);
5
+ const graphQLTypeMap = new Map();
6
+ graphQLTypeMap.set("", singularApiName);
7
+ await traverser.traverse(values, async ({ field, value, path })=>{
8
+ if ("dynamicZone" !== field.type || null == value) return;
9
+ const pathParts = path.split(".");
10
+ const parentPrefix = pathParts.slice(0, -1).join(".");
11
+ const enclosingType = graphQLTypeMap.get(parentPrefix) || singularApiName;
12
+ const typeName = `${enclosingType}_${createTypeName(field.fieldId)}`;
13
+ const templates = field.settings?.templates || [];
14
+ const items = field.list && Array.isArray(value) ? value : [
15
+ value
16
+ ];
17
+ for(let i = 0; i < items.length; i++){
18
+ const item = items[i];
19
+ if (!item || !item._templateId) continue;
20
+ const template = templates.find((t)=>t.id === item._templateId);
21
+ if (!template) continue;
22
+ item.__typename = `${typeName}_${template.gqlTypeName}`;
23
+ const itemPath = field.list ? `${path}.${i}` : path;
24
+ graphQLTypeMap.set(itemPath, item.__typename);
25
+ }
26
+ });
27
+ }
28
+ export { injectDynamicZoneTypenames };
29
+
30
+ //# sourceMappingURL=injectDynamicZoneTypenames.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/CmsGenerateEntryContent/injectDynamicZoneTypenames.js","sources":["../../../../src/api/features/CmsGenerateEntryContent/injectDynamicZoneTypenames.ts"],"sourcesContent":["import type { CmsModelAst } from \"@webiny/api-headless-cms/types\";\nimport { ContentEntryTraverser } from \"@webiny/api-headless-cms/features/contentEntry/ContentEntryTraverser/ContentEntryTraverser.js\";\nimport { createTypeName } from \"@webiny/api-headless-cms/utils/createTypeName.js\";\n\ninterface DynamicZoneTemplate {\n id: string;\n gqlTypeName: string;\n}\n\nexport async function injectDynamicZoneTypenames(\n values: Record<string, any>,\n modelAst: CmsModelAst,\n singularApiName: string\n): Promise<void> {\n const traverser = new ContentEntryTraverser(modelAst);\n\n const graphQLTypeMap = new Map<string, string>();\n graphQLTypeMap.set(\"\", singularApiName);\n\n await traverser.traverse(values, async ({ field, value, path }) => {\n if (field.type !== \"dynamicZone\" || value == null) {\n return;\n }\n\n const pathParts = path.split(\".\");\n const parentPrefix = pathParts.slice(0, -1).join(\".\");\n const enclosingType = graphQLTypeMap.get(parentPrefix) || singularApiName;\n const typeName = `${enclosingType}_${createTypeName(field.fieldId)}`;\n\n const templates: DynamicZoneTemplate[] = field.settings?.templates || [];\n const items: Record<string, any>[] = field.list && Array.isArray(value) ? value : [value];\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n if (!item || !item._templateId) {\n continue;\n }\n\n const template = templates.find(t => t.id === item._templateId);\n if (!template) {\n continue;\n }\n\n item.__typename = `${typeName}_${template.gqlTypeName}`;\n\n const itemPath = field.list ? `${path}.${i}` : path;\n graphQLTypeMap.set(itemPath, item.__typename);\n }\n });\n}\n"],"names":["injectDynamicZoneTypenames","values","modelAst","singularApiName","traverser","ContentEntryTraverser","graphQLTypeMap","Map","field","value","path","pathParts","parentPrefix","enclosingType","typeName","createTypeName","templates","items","Array","i","item","template","t","itemPath"],"mappings":";;AASO,eAAeA,2BAClBC,MAA2B,EAC3BC,QAAqB,EACrBC,eAAuB;IAEvB,MAAMC,YAAY,IAAIC,sBAAsBH;IAE5C,MAAMI,iBAAiB,IAAIC;IAC3BD,eAAe,GAAG,CAAC,IAAIH;IAEvB,MAAMC,UAAU,QAAQ,CAACH,QAAQ,OAAO,EAAEO,KAAK,EAAEC,KAAK,EAAEC,IAAI,EAAE;QAC1D,IAAIF,AAAe,kBAAfA,MAAM,IAAI,IAAsBC,AAAS,QAATA,OAChC;QAGJ,MAAME,YAAYD,KAAK,KAAK,CAAC;QAC7B,MAAME,eAAeD,UAAU,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC;QACjD,MAAME,gBAAgBP,eAAe,GAAG,CAACM,iBAAiBT;QAC1D,MAAMW,WAAW,GAAGD,cAAc,CAAC,EAAEE,eAAeP,MAAM,OAAO,GAAG;QAEpE,MAAMQ,YAAmCR,MAAM,QAAQ,EAAE,aAAa,EAAE;QACxE,MAAMS,QAA+BT,MAAM,IAAI,IAAIU,MAAM,OAAO,CAACT,SAASA,QAAQ;YAACA;SAAM;QAEzF,IAAK,IAAIU,IAAI,GAAGA,IAAIF,MAAM,MAAM,EAAEE,IAAK;YACnC,MAAMC,OAAOH,KAAK,CAACE,EAAE;YACrB,IAAI,CAACC,QAAQ,CAACA,KAAK,WAAW,EAC1B;YAGJ,MAAMC,WAAWL,UAAU,IAAI,CAACM,CAAAA,IAAKA,EAAE,EAAE,KAAKF,KAAK,WAAW;YAC9D,IAAI,CAACC,UACD;YAGJD,KAAK,UAAU,GAAG,GAAGN,SAAS,CAAC,EAAEO,SAAS,WAAW,EAAE;YAEvD,MAAME,WAAWf,MAAM,IAAI,GAAG,GAAGE,KAAK,CAAC,EAAES,GAAG,GAAGT;YAC/CJ,eAAe,GAAG,CAACiB,UAAUH,KAAK,UAAU;QAChD;IACJ;AACJ"}
@@ -0,0 +1,14 @@
1
+ import { AiOutputTool } from "@webiny/api-core/features/ai/index.js";
2
+ import { GetFileUseCase } from "@webiny/api-file-manager/features/file/GetFile/index.js";
3
+ import { FileUrlGenerator } from "@webiny/api-file-manager/features/file/FileUrlGenerator/index.js";
4
+ declare class CmsResolveImageToolImpl implements AiOutputTool.Interface {
5
+ private getFile;
6
+ private urlGenerator;
7
+ readonly name = "cmsResolveImage";
8
+ constructor(getFile: GetFileUseCase.Interface, urlGenerator: FileUrlGenerator.Interface);
9
+ execute(params: Record<string, unknown>): Promise<unknown>;
10
+ }
11
+ export declare const CmsResolveImageTool: typeof CmsResolveImageToolImpl & {
12
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/ai/toolPipeline").IAiOutputTool>;
13
+ };
14
+ export {};
@@ -0,0 +1,27 @@
1
+ import { AiOutputTool } from "@webiny/api-core/features/ai/index.js";
2
+ import { GetFileUseCase } from "@webiny/api-file-manager/features/file/GetFile/index.js";
3
+ import { FileUrlGenerator } from "@webiny/api-file-manager/features/file/FileUrlGenerator/index.js";
4
+ class CmsResolveImageToolImpl {
5
+ constructor(getFile, urlGenerator){
6
+ this.getFile = getFile;
7
+ this.urlGenerator = urlGenerator;
8
+ this.name = "cmsResolveImage";
9
+ }
10
+ async execute(params) {
11
+ const id = params.id;
12
+ if ("string" != typeof id || !id) return null;
13
+ const result = await this.getFile.execute(id);
14
+ if (result.isFail()) return null;
15
+ return await this.urlGenerator.generateUrl(result.value);
16
+ }
17
+ }
18
+ const CmsResolveImageTool = AiOutputTool.createImplementation({
19
+ implementation: CmsResolveImageToolImpl,
20
+ dependencies: [
21
+ GetFileUseCase,
22
+ FileUrlGenerator
23
+ ]
24
+ });
25
+ export { CmsResolveImageTool };
26
+
27
+ //# sourceMappingURL=CmsResolveImageTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/CmsResolveImageTool/CmsResolveImageTool.js","sources":["../../../../src/api/features/CmsResolveImageTool/CmsResolveImageTool.ts"],"sourcesContent":["import { AiOutputTool } from \"@webiny/api-core/features/ai/index.js\";\nimport { GetFileUseCase } from \"@webiny/api-file-manager/features/file/GetFile/index.js\";\nimport { FileUrlGenerator } from \"@webiny/api-file-manager/features/file/FileUrlGenerator/index.js\";\n\nclass CmsResolveImageToolImpl implements AiOutputTool.Interface {\n readonly name = \"cmsResolveImage\";\n\n constructor(\n private getFile: GetFileUseCase.Interface,\n private urlGenerator: FileUrlGenerator.Interface\n ) {}\n\n async execute(params: Record<string, unknown>): Promise<unknown> {\n const id = params.id;\n if (typeof id !== \"string\" || !id) {\n return null;\n }\n\n const result = await this.getFile.execute(id);\n if (result.isFail()) {\n return null;\n }\n\n return await this.urlGenerator.generateUrl(result.value);\n }\n}\n\nexport const CmsResolveImageTool = AiOutputTool.createImplementation({\n implementation: CmsResolveImageToolImpl,\n dependencies: [GetFileUseCase, FileUrlGenerator]\n});\n"],"names":["CmsResolveImageToolImpl","getFile","urlGenerator","params","id","result","CmsResolveImageTool","AiOutputTool","GetFileUseCase","FileUrlGenerator"],"mappings":";;;AAIA,MAAMA;IAGF,YACYC,OAAiC,EACjCC,YAAwC,CAClD;aAFUD,OAAO,GAAPA;aACAC,YAAY,GAAZA;aAJH,IAAI,GAAG;IAKb;IAEH,MAAM,QAAQC,MAA+B,EAAoB;QAC7D,MAAMC,KAAKD,OAAO,EAAE;QACpB,IAAI,AAAc,YAAd,OAAOC,MAAmB,CAACA,IAC3B,OAAO;QAGX,MAAMC,SAAS,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAACD;QAC1C,IAAIC,OAAO,MAAM,IACb,OAAO;QAGX,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAACA,OAAO,KAAK;IAC3D;AACJ;AAEO,MAAMC,sBAAsBC,aAAa,oBAAoB,CAAC;IACjE,gBAAgBP;IAChB,cAAc;QAACQ;QAAgBC;KAAiB;AACpD"}
@@ -0,0 +1,4 @@
1
+ export declare const CmsResolveImageToolFeature: {
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 { CmsResolveImageTool } from "./CmsResolveImageTool.js";
3
+ const CmsResolveImageToolFeature = createFeature({
4
+ name: "AiPowerUps/CmsResolveImageTool",
5
+ register (container) {
6
+ container.register(CmsResolveImageTool);
7
+ }
8
+ });
9
+ export { CmsResolveImageToolFeature };
10
+
11
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/CmsResolveImageTool/feature.js","sources":["../../../../src/api/features/CmsResolveImageTool/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { CmsResolveImageTool } from \"./CmsResolveImageTool.js\";\n\nexport const CmsResolveImageToolFeature = createFeature({\n name: \"AiPowerUps/CmsResolveImageTool\",\n register(container) {\n container.register(CmsResolveImageTool);\n }\n});\n"],"names":["CmsResolveImageToolFeature","createFeature","container","CmsResolveImageTool"],"mappings":";;AAGO,MAAMA,6BAA6BC,cAAc;IACpD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
@@ -0,0 +1,18 @@
1
+ import { Result } from "@webiny/feature/api";
2
+ import { Ai } from "@webiny/api-core/features/ai/index.js";
3
+ import { Logger } from "@webiny/api-core/features/logger/index.js";
4
+ import { GetSettingsUseCase } from "../../../api/features/GetSettings/index.js";
5
+ import type { AiConnectionPreset } from "../../../api/features/Connections/index.js";
6
+ import { ConfiguredAiModelsService as Abstraction } from "./abstractions.js";
7
+ declare class ConfiguredAiModelsServiceImpl implements Abstraction.Interface {
8
+ private ai;
9
+ private getSettings;
10
+ private logger;
11
+ constructor(ai: Ai.Interface, getSettings: GetSettingsUseCase.Interface, logger: Logger.Interface);
12
+ list(): Promise<Result<Abstraction.Model[], Error>>;
13
+ findConnection(model: string): Promise<Result<AiConnectionPreset | null, Error>>;
14
+ }
15
+ export declare const ConfiguredAiModelsService: typeof ConfiguredAiModelsServiceImpl & {
16
+ __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IConfiguredAiModelsService>;
17
+ };
18
+ export {};
@@ -0,0 +1,92 @@
1
+ import { Result } from "@webiny/feature/api";
2
+ import { Ai } from "@webiny/api-core/features/ai/index.js";
3
+ import { Logger } from "@webiny/api-core/features/logger/index.js";
4
+ import { GetSettingsUseCase } from "../GetSettings/index.js";
5
+ import { sdkNameFromModel } from "../shared/modelId.js";
6
+ import { ConfiguredAiModelsService } from "./abstractions.js";
7
+ class ConfiguredAiModelsServiceImpl {
8
+ constructor(ai, getSettings, logger){
9
+ this.ai = ai;
10
+ this.getSettings = getSettings;
11
+ this.logger = logger;
12
+ }
13
+ async list() {
14
+ let settings;
15
+ try {
16
+ const settingsResult = await this.getSettings.execute();
17
+ if (settingsResult.isFail()) {
18
+ this.logger.error({
19
+ error: settingsResult.error
20
+ }, "Could not read the AI Power-Ups settings to list the configured models.");
21
+ return Result.fail(new Error("Failed to load AI Power-Ups settings."));
22
+ }
23
+ settings = settingsResult.value;
24
+ } catch (error) {
25
+ this.logger.error({
26
+ error
27
+ }, "Could not read the AI Power-Ups settings to list the configured models.");
28
+ return Result.fail(new Error("Failed to load AI Power-Ups settings."));
29
+ }
30
+ let models;
31
+ try {
32
+ models = await this.ai.listModels();
33
+ } catch (error) {
34
+ this.logger.error({
35
+ error
36
+ }, "Could not list the AI provider models.");
37
+ return Result.fail(new Error("Failed to list the configured AI models."));
38
+ }
39
+ const presets = settings.connections?.presets ?? [];
40
+ const providerIds = new Set(presets.filter((preset)=>preset.apiKeyEncrypted).map((preset)=>preset.sdkName));
41
+ const configured = new Map();
42
+ for (const model of models){
43
+ if (!providerIds.has(model.providerId)) continue;
44
+ const id = `${model.providerId}/${model.modelId}`;
45
+ if (!configured.has(id)) configured.set(id, {
46
+ id,
47
+ name: model.modelName,
48
+ providerId: model.providerId,
49
+ providerName: model.providerName
50
+ });
51
+ }
52
+ return Result.ok([
53
+ ...configured.values()
54
+ ]);
55
+ }
56
+ async findConnection(model) {
57
+ const separator = model.indexOf("/");
58
+ const idSegments = model.slice(separator + 1).split("/");
59
+ if (separator < 1 || idSegments.some((segment)=>"" === segment)) return Result.ok(null);
60
+ let settings;
61
+ try {
62
+ const settingsResult = await this.getSettings.execute();
63
+ if (settingsResult.isFail()) {
64
+ this.logger.error({
65
+ error: settingsResult.error
66
+ }, "Could not read the AI Power-Ups settings to find a model connection.");
67
+ return Result.fail(new Error("Failed to load AI Power-Ups settings."));
68
+ }
69
+ settings = settingsResult.value;
70
+ } catch (error) {
71
+ this.logger.error({
72
+ error
73
+ }, "Could not read the AI Power-Ups settings to find a model connection.");
74
+ return Result.fail(new Error("Failed to load AI Power-Ups settings."));
75
+ }
76
+ const sdkName = sdkNameFromModel(model);
77
+ const presets = settings.connections?.presets ?? [];
78
+ const connection = presets.find((preset)=>preset.sdkName === sdkName && Boolean(preset.apiKeyEncrypted));
79
+ return Result.ok(connection ?? null);
80
+ }
81
+ }
82
+ const ConfiguredAiModelsService_ConfiguredAiModelsService = ConfiguredAiModelsService.createImplementation({
83
+ implementation: ConfiguredAiModelsServiceImpl,
84
+ dependencies: [
85
+ Ai,
86
+ GetSettingsUseCase,
87
+ Logger
88
+ ]
89
+ });
90
+ export { ConfiguredAiModelsService_ConfiguredAiModelsService as ConfiguredAiModelsService };
91
+
92
+ //# sourceMappingURL=ConfiguredAiModelsService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/ConfiguredAiModels/ConfiguredAiModelsService.js","sources":["../../../../src/api/features/ConfiguredAiModels/ConfiguredAiModelsService.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { Ai } from \"@webiny/api-core/features/ai/index.js\";\nimport type { AiModel } from \"@webiny/api-core/features/ai/index.js\";\nimport { Logger } from \"@webiny/api-core/features/logger/index.js\";\nimport { GetSettingsUseCase } from \"~/api/features/GetSettings/index.js\";\nimport { sdkNameFromModel } from \"~/api/features/shared/modelId.js\";\nimport type { AiConnectionPreset } from \"~/api/features/Connections/index.js\";\nimport type { IAiPowerUpsSettings } from \"~/api/types.js\";\nimport { ConfiguredAiModelsService as Abstraction } from \"./abstractions.js\";\n\nclass ConfiguredAiModelsServiceImpl implements Abstraction.Interface {\n public constructor(\n private ai: Ai.Interface,\n private getSettings: GetSettingsUseCase.Interface,\n private logger: Logger.Interface\n ) {}\n\n public async list(): Promise<Result<Abstraction.Model[], Error>> {\n // Failures are logged here, once, with the raw error; the callers show their own fixed\n // text and do not log again. The returned Error carries a fixed message only.\n let settings: IAiPowerUpsSettings;\n try {\n const settingsResult = await this.getSettings.execute();\n if (settingsResult.isFail()) {\n this.logger.error(\n { error: settingsResult.error },\n \"Could not read the AI Power-Ups settings to list the configured models.\"\n );\n return Result.fail(new Error(\"Failed to load AI Power-Ups settings.\"));\n }\n settings = settingsResult.value;\n } catch (error) {\n this.logger.error(\n { error },\n \"Could not read the AI Power-Ups settings to list the configured models.\"\n );\n return Result.fail(new Error(\"Failed to load AI Power-Ups settings.\"));\n }\n\n let models: AiModel[];\n try {\n models = await this.ai.listModels();\n } catch (error) {\n this.logger.error({ error }, \"Could not list the AI provider models.\");\n return Result.fail(new Error(\"Failed to list the configured AI models.\"));\n }\n\n const presets = settings.connections?.presets ?? [];\n const providerIds = new Set(\n presets.filter(preset => preset.apiKeyEncrypted).map(preset => preset.sdkName)\n );\n\n const configured = new Map<string, Abstraction.Model>();\n for (const model of models) {\n if (!providerIds.has(model.providerId)) {\n continue;\n }\n const id = `${model.providerId}/${model.modelId}`;\n if (configured.has(id)) {\n continue;\n }\n configured.set(id, {\n id,\n name: model.modelName,\n providerId: model.providerId,\n providerName: model.providerName\n });\n }\n return Result.ok([...configured.values()]);\n }\n\n public async findConnection(model: string): Promise<Result<AiConnectionPreset | null, Error>> {\n // `<provider>/<id>`: a non-empty provider before the first \"/\" and a non-empty id after it.\n // The id may contain further \"/\" (a gateway model), but no empty segment (\"a//\", \"a/b/\").\n const separator = model.indexOf(\"/\");\n const idSegments = model.slice(separator + 1).split(\"/\");\n if (separator < 1 || idSegments.some(segment => segment === \"\")) {\n return Result.ok(null);\n }\n\n let settings: IAiPowerUpsSettings;\n try {\n const settingsResult = await this.getSettings.execute();\n if (settingsResult.isFail()) {\n this.logger.error(\n { error: settingsResult.error },\n \"Could not read the AI Power-Ups settings to find a model connection.\"\n );\n return Result.fail(new Error(\"Failed to load AI Power-Ups settings.\"));\n }\n settings = settingsResult.value;\n } catch (error) {\n this.logger.error(\n { error },\n \"Could not read the AI Power-Ups settings to find a model connection.\"\n );\n return Result.fail(new Error(\"Failed to load AI Power-Ups settings.\"));\n }\n\n const sdkName = sdkNameFromModel(model);\n const presets = settings.connections?.presets ?? [];\n const connection = presets.find(preset => {\n return preset.sdkName === sdkName && Boolean(preset.apiKeyEncrypted);\n });\n return Result.ok(connection ?? null);\n }\n}\n\nexport const ConfiguredAiModelsService = Abstraction.createImplementation({\n implementation: ConfiguredAiModelsServiceImpl,\n dependencies: [Ai, GetSettingsUseCase, Logger]\n});\n"],"names":["ConfiguredAiModelsServiceImpl","ai","getSettings","logger","settings","settingsResult","Result","Error","error","models","presets","providerIds","Set","preset","configured","Map","model","id","separator","idSegments","segment","sdkName","sdkNameFromModel","connection","Boolean","ConfiguredAiModelsService","Abstraction","Ai","GetSettingsUseCase","Logger"],"mappings":"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"}