@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 @@
1
+ {"version":3,"file":"api/features/AdminAssistant/capability.js","sources":["../../../../src/api/features/AdminAssistant/capability.ts"],"sourcesContent":["import { AiCapability } from \"~/api/features/Capabilities/index.js\";\nimport { SYSTEM_PROMPT } from \"./systemPrompt.js\";\n\nexport const ADMIN_ASSISTANT_CAPABILITY = \"adminAssistant\";\n\n/**\n * The assistant behind the admin command palette.\n *\n * `adminAssistant` matches the WCP licence option and the `aiPowerups.adminAssistant` flag, so the\n * feature has one name everywhere. It is also the name that survives: every other id says what the\n * feature does (`fmImageEnrichment`, `cmsGenerateEntry`), and this one deliberately does not do\n * one thing. Today it reads and changes content, and the direction is for it to build things\n * too, like a field renderer or a menu change. The id is the persisted settings key, so a later rename\n * orphans a project's overrides.\n *\n * `guidance` is the prompt this feature ships, imported rather than restated so the two cannot\n * drift. Unlike most capabilities this one is safe to append to freely: its output is prose for a\n * human, not a shape the surrounding code parses. House rules (\"our product is spelled like this\",\n * \"never mention internal model ids\") belong here.\n *\n * `standard` rather than `fast`: the assistant chains tool calls and has to reason about which model\n * to describe before it can query anything, which is where small models fall down.\n */\nclass AdminAssistantCapabilityImpl implements AiCapability.Interface {\n readonly id = ADMIN_ASSISTANT_CAPABILITY;\n readonly label = \"Admin assistant\";\n readonly description =\n \"The assistant in the command palette. Answers questions about this project and proposes changes for approval, under the permissions of whoever is asking. The most open-ended capability here: it plans across several tool calls, so it gains the most from a strong model.\";\n readonly defaultRole = \"standard\" as const;\n readonly guidance = SYSTEM_PROMPT;\n}\n\nexport const AdminAssistantCapability = AiCapability.createImplementation({\n implementation: AdminAssistantCapabilityImpl,\n dependencies: []\n});\n"],"names":["ADMIN_ASSISTANT_CAPABILITY","AdminAssistantCapabilityImpl","SYSTEM_PROMPT","AdminAssistantCapability","AiCapability"],"mappings":";;AAGO,MAAMA,6BAA6B;AAoB1C,MAAMC;;aACO,EAAE,GAAGD;aACL,KAAK,GAAG;aACR,WAAW,GAChB;aACK,WAAW,GAAG;aACd,QAAQ,GAAGE;;AACxB;AAEO,MAAMC,2BAA2BC,aAAa,oBAAoB,CAAC;IACtE,gBAAgBH;IAChB,cAAc,EAAE;AACpB"}
@@ -0,0 +1,54 @@
1
+ import type { ModelMessage } from "ai";
2
+ import type { PendingApproval } from "./approvals.js";
3
+ /**
4
+ * What the assistant emits while it works.
5
+ *
6
+ * Deliberately a small, purpose-built set rather than the AI SDK's UI-message protocol: the client is
7
+ * a command palette, not a chat framework, and it needs one thing the SDK protocol does not model for
8
+ * us — the approval pause. Keeping our own events also means the admin bundle carries no AI SDK code.
9
+ *
10
+ * Transport-free by design. A transport frames these (as SSE, as newline JSON, as a CLI render); the
11
+ * feature only says what happened.
12
+ */
13
+ export type AdminAssistantEvent =
14
+ /** A fragment of the answer. Concatenate in arrival order. */
15
+ {
16
+ type: "text";
17
+ text: string;
18
+ }
19
+ /** A tool started running. Named so the UI can show work in progress, not just a spinner. */
20
+ | {
21
+ type: "tool-call";
22
+ name: string;
23
+ }
24
+ /** A tool finished. Pairs with `tool-call` by name. */
25
+ | {
26
+ type: "tool-result";
27
+ name: string;
28
+ }
29
+ /**
30
+ * A tool threw. Also pairs with `tool-call` by name, and is NOT terminal: the model reads the
31
+ * message and usually corrects itself on the next step, which is why tools report failure by
32
+ * throwing. Without this the call would have no outcome and its chip would spin forever.
33
+ */
34
+ | {
35
+ type: "tool-error";
36
+ name: string;
37
+ message: string;
38
+ }
39
+ /** The loop paused: these calls change something and need a human decision. */
40
+ | {
41
+ type: "approval";
42
+ approvals: PendingApproval[];
43
+ }
44
+ /** Terminal success. Carries what the client must replay to resume after an approval. */
45
+ | {
46
+ type: "done";
47
+ messages: ModelMessage[];
48
+ steps: number;
49
+ }
50
+ /** Terminal failure. The run produced no usable answer. */
51
+ | {
52
+ type: "error";
53
+ message: string;
54
+ };
File without changes
@@ -0,0 +1,12 @@
1
+ /**
2
+ * The admin assistant: its capability, the use case, and the HTTP route that reaches it.
3
+ *
4
+ * Lives in AI Power-Ups rather than in a package of its own because everything it needs is here —
5
+ * the settings that choose its model, the capability resolver that reads them, and the tools it
6
+ * calls. As a separate package it could only reach those through an abstraction registered back
7
+ * from this side, which is an indirection that bought nothing.
8
+ */
9
+ export declare const AdminAssistantFeature: {
10
+ name: string;
11
+ register(container: import("@webiny/di").Container): void;
12
+ };
@@ -0,0 +1,23 @@
1
+ import { createFeature } from "@webiny/feature/api";
2
+ import { FeatureFlags } from "@webiny/api-core/features/featureFlags/abstractions.js";
3
+ import { AdminAssistantConfig } from "./abstractions.js";
4
+ import { AdminAssistantUseCase } from "./AdminAssistantUseCase.js";
5
+ import { AdminAssistantStreamRouteDefinition } from "./AdminAssistantStreamRoute.js";
6
+ import { AdminAssistantCapability } from "./capability.js";
7
+ const MAX_STEPS = 12;
8
+ const AdminAssistantFeature = createFeature({
9
+ name: "AiPowerUps/AdminAssistant",
10
+ register (container) {
11
+ const enabled = container.resolve(FeatureFlags).get().isEnabled("aiPowerups.adminAssistant");
12
+ if (!enabled) return;
13
+ container.register(AdminAssistantCapability);
14
+ container.registerInstance(AdminAssistantConfig, {
15
+ maxSteps: MAX_STEPS
16
+ });
17
+ container.register(AdminAssistantUseCase);
18
+ container.register(AdminAssistantStreamRouteDefinition);
19
+ }
20
+ });
21
+ export { AdminAssistantFeature };
22
+
23
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/AdminAssistant/feature.js","sources":["../../../../src/api/features/AdminAssistant/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { FeatureFlags } from \"@webiny/api-core/features/featureFlags/abstractions.js\";\nimport { AdminAssistantConfig } from \"./abstractions.js\";\nimport { AdminAssistantUseCase } from \"./AdminAssistantUseCase.js\";\nimport { AdminAssistantStreamRouteDefinition } from \"./AdminAssistantStreamRoute.js\";\nimport { AdminAssistantCapability } from \"./capability.js\";\n\n/**\n * How many rounds the agent loop may take before it is cut off.\n *\n * Enough for the deepest expected chain: list models, describe one, query it, answer — plus room for\n * a corrected retry after a rejected filter.\n *\n * Deliberately not configurable. It is a runaway guard, closer to a timeout than a setting, and the\n * number only means something next to the tool chains the assistant actually walks. Exposing it\n * invites a project to raise it to 100 and find out what that costs.\n */\nconst MAX_STEPS = 12;\n\n/**\n * The admin assistant: its capability, the use case, and the HTTP route that reaches it.\n *\n * Lives in AI Power-Ups rather than in a package of its own because everything it needs is here —\n * the settings that choose its model, the capability resolver that reads them, and the tools it\n * calls. As a separate package it could only reach those through an abstraction registered back\n * from this side, which is an indirection that bought nothing.\n */\nexport const AdminAssistantFeature = createFeature({\n name: \"AiPowerUps/AdminAssistant\",\n register(container) {\n // Register-time gate on the effective flags (project config && live WCP license), matching\n // how every other AI feature gates itself. Nothing is registered when it is off, so an\n // unlicensed project has no `/stream/ai/admin-assistant` route and no settings row.\n const enabled = container\n .resolve(FeatureFlags)\n .get()\n .isEnabled(\"aiPowerups.adminAssistant\");\n\n if (!enabled) {\n return;\n }\n\n container.register(AdminAssistantCapability);\n container.registerInstance(AdminAssistantConfig, { maxSteps: MAX_STEPS });\n container.register(AdminAssistantUseCase);\n\n /*\n * Only the definition is registered: the router matches on it and builds the handler it\n * names once a request actually hits the path.\n */\n container.register(AdminAssistantStreamRouteDefinition);\n }\n});\n"],"names":["MAX_STEPS","AdminAssistantFeature","createFeature","container","enabled","FeatureFlags","AdminAssistantCapability","AdminAssistantConfig","AdminAssistantUseCase","AdminAssistantStreamRouteDefinition"],"mappings":";;;;;;AAiBA,MAAMA,YAAY;AAUX,MAAMC,wBAAwBC,cAAc;IAC/C,MAAM;IACN,UAASC,SAAS;QAId,MAAMC,UAAUD,UACX,OAAO,CAACE,cACR,GAAG,GACH,SAAS,CAAC;QAEf,IAAI,CAACD,SACD;QAGJD,UAAU,QAAQ,CAACG;QACnBH,UAAU,gBAAgB,CAACI,sBAAsB;YAAE,UAAUP;QAAU;QACvEG,UAAU,QAAQ,CAACK;QAMnBL,UAAU,QAAQ,CAACM;IACvB;AACJ"}
@@ -0,0 +1,5 @@
1
+ export { AdminAssistantUseCase, AdminAssistantConfig } from "./abstractions.js";
2
+ export type { AdminAssistantParams } from "./abstractions.js";
3
+ export type { AdminAssistantEvent } from "./events.js";
4
+ export { AdminAssistantCapability, ADMIN_ASSISTANT_CAPABILITY } from "./capability.js";
5
+ export { AdminAssistantFeature } from "./feature.js";
@@ -0,0 +1,3 @@
1
+ export { AdminAssistantConfig, AdminAssistantUseCase } from "./abstractions.js";
2
+ export { ADMIN_ASSISTANT_CAPABILITY, AdminAssistantCapability } from "./capability.js";
3
+ export { AdminAssistantFeature } from "./feature.js";
@@ -0,0 +1,14 @@
1
+ import type { ModelMessage } from "ai";
2
+ import type { ApprovalDecision } from "./approvals.js";
3
+ export interface ParsedChatBody {
4
+ messages: ModelMessage[];
5
+ decisions: ApprovalDecision[];
6
+ }
7
+ /**
8
+ * Accepts either a fresh question or a continuation. A continuation replays `messages` verbatim,
9
+ * including the assistant message carrying the approval request, because the SDK matches an approval
10
+ * response to its request by id and that request exists nowhere else. We keep no session.
11
+ *
12
+ * Returns null for anything unusable, so the caller decides the status code.
13
+ */
14
+ export declare const parseChatBody: (body: unknown) => ParsedChatBody | null;
@@ -0,0 +1,33 @@
1
+ import { parseDecisions } from "./approvals.js";
2
+ const safeParse = (value)=>{
3
+ try {
4
+ return JSON.parse(value);
5
+ } catch {
6
+ return;
7
+ }
8
+ };
9
+ const parseChatBody = (body)=>{
10
+ const raw = "string" == typeof body ? safeParse(body) : body;
11
+ const payload = raw;
12
+ if (!payload) return null;
13
+ const decisions = parseDecisions(payload["approvals"]);
14
+ const prompt = payload["prompt"];
15
+ if ("string" == typeof prompt && prompt.trim()) return {
16
+ messages: [
17
+ {
18
+ role: "user",
19
+ content: prompt
20
+ }
21
+ ],
22
+ decisions
23
+ };
24
+ const messages = payload["messages"];
25
+ if (!Array.isArray(messages) || 0 === messages.length) return null;
26
+ return {
27
+ messages: messages,
28
+ decisions
29
+ };
30
+ };
31
+ export { parseChatBody };
32
+
33
+ //# sourceMappingURL=parseChatBody.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/AdminAssistant/parseChatBody.js","sources":["../../../../src/api/features/AdminAssistant/parseChatBody.ts"],"sourcesContent":["import type { ModelMessage } from \"ai\";\nimport { parseDecisions } from \"./approvals.js\";\nimport type { ApprovalDecision } from \"./approvals.js\";\n\nexport interface ParsedChatBody {\n messages: ModelMessage[];\n decisions: ApprovalDecision[];\n}\n\nconst safeParse = (value: string): unknown => {\n try {\n return JSON.parse(value);\n } catch {\n return undefined;\n }\n};\n\n/**\n * Accepts either a fresh question or a continuation. A continuation replays `messages` verbatim,\n * including the assistant message carrying the approval request, because the SDK matches an approval\n * response to its request by id and that request exists nowhere else. We keep no session.\n *\n * Returns null for anything unusable, so the caller decides the status code.\n */\nexport const parseChatBody = (body: unknown): ParsedChatBody | null => {\n const raw = typeof body === \"string\" ? safeParse(body) : body;\n const payload = raw as Record<string, unknown> | undefined;\n\n if (!payload) {\n return null;\n }\n\n const decisions = parseDecisions(payload[\"approvals\"]);\n const prompt = payload[\"prompt\"];\n\n if (typeof prompt === \"string\" && prompt.trim()) {\n return { messages: [{ role: \"user\", content: prompt }], decisions };\n }\n\n const messages = payload[\"messages\"];\n\n if (!Array.isArray(messages) || messages.length === 0) {\n return null;\n }\n\n return { messages: messages as ModelMessage[], decisions };\n};\n"],"names":["safeParse","value","JSON","parseChatBody","body","raw","payload","decisions","parseDecisions","prompt","messages","Array"],"mappings":";AASA,MAAMA,YAAY,CAACC;IACf,IAAI;QACA,OAAOC,KAAK,KAAK,CAACD;IACtB,EAAE,OAAM;QACJ;IACJ;AACJ;AASO,MAAME,gBAAgB,CAACC;IAC1B,MAAMC,MAAM,AAAgB,YAAhB,OAAOD,OAAoBJ,UAAUI,QAAQA;IACzD,MAAME,UAAUD;IAEhB,IAAI,CAACC,SACD,OAAO;IAGX,MAAMC,YAAYC,eAAeF,OAAO,CAAC,YAAY;IACrD,MAAMG,SAASH,OAAO,CAAC,SAAS;IAEhC,IAAI,AAAkB,YAAlB,OAAOG,UAAuBA,OAAO,IAAI,IACzC,OAAO;QAAE,UAAU;YAAC;gBAAE,MAAM;gBAAQ,SAASA;YAAO;SAAE;QAAEF;IAAU;IAGtE,MAAMG,WAAWJ,OAAO,CAAC,WAAW;IAEpC,IAAI,CAACK,MAAM,OAAO,CAACD,aAAaA,AAAoB,MAApBA,SAAS,MAAM,EAC3C,OAAO;IAGX,OAAO;QAAE,UAAUA;QAA4BH;IAAU;AAC7D"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * The assistant is deliberately told to DISCOVER rather than guess. Model IDs and field IDs are
3
+ * project-specific — there is no way to know them from training data — so every concrete answer has to
4
+ * come from a tool call. Without this instruction models happily invent a plausible `modelId` and then
5
+ * report the resulting error as if the content did not exist.
6
+ */
7
+ export declare const SYSTEM_PROMPT = "You are the Webiny admin assistant. You help editors and developers find, understand and change the content in their Webiny project.\n\nYou have tools available. Use them \u2014 never answer a question about this project's content, models, or files from memory or assumption.\n\nHow to work:\n- Content model IDs and field IDs are specific to this project. Always discover them with listContentModels, then describeContentModel, before querying.\n- Build filters with the field IDs describeContentModel returned. Do not guess field names.\n- If a tool returns an error, read it and correct your call. A \"not allowed\" error means the user lacks permission \u2014 say so plainly rather than retrying.\n- If a query returns nothing, say so. Do not present an empty result as if it were data.\n\nChanging things:\n- Tools that change something are not executed until the user approves them. Propose the change by calling the tool; the user sees exactly what you asked for and confirms it.\n- Read first, then propose. Look up the ids you need (teams, folders, entries) rather than guessing them, because the user is approving the arguments you supply.\n- Propose one coherent change at a time. Do not bundle unrelated edits into a single step.\n- If an approval is denied, do not retry the same call. Acknowledge it and stop.\n\nHow to answer:\n- Be brief. These answers appear in a command palette, not a chat window.\n- Lead with the answer. No preamble, no restating the question.\n- When you list entries, give the few fields that matter, not every field you received.\n- State counts precisely (\"3 products are on sale\"), never vaguely.";
@@ -0,0 +1,24 @@
1
+ const SYSTEM_PROMPT = `You are the Webiny admin assistant. You help editors and developers find, understand and change the content in their Webiny project.
2
+
3
+ You have tools available. Use them — never answer a question about this project's content, models, or files from memory or assumption.
4
+
5
+ How to work:
6
+ - Content model IDs and field IDs are specific to this project. Always discover them with listContentModels, then describeContentModel, before querying.
7
+ - Build filters with the field IDs describeContentModel returned. Do not guess field names.
8
+ - If a tool returns an error, read it and correct your call. A "not allowed" error means the user lacks permission — say so plainly rather than retrying.
9
+ - If a query returns nothing, say so. Do not present an empty result as if it were data.
10
+
11
+ Changing things:
12
+ - Tools that change something are not executed until the user approves them. Propose the change by calling the tool; the user sees exactly what you asked for and confirms it.
13
+ - Read first, then propose. Look up the ids you need (teams, folders, entries) rather than guessing them, because the user is approving the arguments you supply.
14
+ - Propose one coherent change at a time. Do not bundle unrelated edits into a single step.
15
+ - If an approval is denied, do not retry the same call. Acknowledge it and stop.
16
+
17
+ How to answer:
18
+ - Be brief. These answers appear in a command palette, not a chat window.
19
+ - Lead with the answer. No preamble, no restating the question.
20
+ - When you list entries, give the few fields that matter, not every field you received.
21
+ - State counts precisely ("3 products are on sale"), never vaguely.`;
22
+ export { SYSTEM_PROMPT };
23
+
24
+ //# sourceMappingURL=systemPrompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/AdminAssistant/systemPrompt.js","sources":["../../../../src/api/features/AdminAssistant/systemPrompt.ts"],"sourcesContent":["/**\n * The assistant is deliberately told to DISCOVER rather than guess. Model IDs and field IDs are\n * project-specific — there is no way to know them from training data — so every concrete answer has to\n * come from a tool call. Without this instruction models happily invent a plausible `modelId` and then\n * report the resulting error as if the content did not exist.\n */\nexport const SYSTEM_PROMPT = `You are the Webiny admin assistant. You help editors and developers find, understand and change the content in their Webiny project.\n\nYou have tools available. Use them — never answer a question about this project's content, models, or files from memory or assumption.\n\nHow to work:\n- Content model IDs and field IDs are specific to this project. Always discover them with listContentModels, then describeContentModel, before querying.\n- Build filters with the field IDs describeContentModel returned. Do not guess field names.\n- If a tool returns an error, read it and correct your call. A \"not allowed\" error means the user lacks permission — say so plainly rather than retrying.\n- If a query returns nothing, say so. Do not present an empty result as if it were data.\n\nChanging things:\n- Tools that change something are not executed until the user approves them. Propose the change by calling the tool; the user sees exactly what you asked for and confirms it.\n- Read first, then propose. Look up the ids you need (teams, folders, entries) rather than guessing them, because the user is approving the arguments you supply.\n- Propose one coherent change at a time. Do not bundle unrelated edits into a single step.\n- If an approval is denied, do not retry the same call. Acknowledge it and stop.\n\nHow to answer:\n- Be brief. These answers appear in a command palette, not a chat window.\n- Lead with the answer. No preamble, no restating the question.\n- When you list entries, give the few fields that matter, not every field you received.\n- State counts precisely (\"3 products are on sale\"), never vaguely.`;\n"],"names":["SYSTEM_PROMPT"],"mappings":"AAMO,MAAMA,gBAAgB,CAAC;;;;;;;;;;;;;;;;;;;;mEAoBqC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { FileAfterCreateEventHandler } from "@webiny/api-file-manager/features/file/CreateFile/events.js";
2
+ import { TaskService } from "@webiny/api-core/features/task/TaskService/index.js";
3
+ declare class AiImageEnrichmentAfterCreateHandlerImpl implements FileAfterCreateEventHandler.Interface {
4
+ private taskService;
5
+ constructor(taskService: TaskService.Interface);
6
+ handle(event: FileAfterCreateEventHandler.Event): Promise<void>;
7
+ }
8
+ export declare const AiImageEnrichmentAfterCreateHandler: typeof AiImageEnrichmentAfterCreateHandlerImpl & {
9
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<import("@webiny/api-file-manager/features/file/CreateFile/events.js").FileAfterCreateEvent>>;
10
+ };
11
+ export {};
@@ -0,0 +1,27 @@
1
+ import { FileAfterCreateEventHandler } from "@webiny/api-file-manager/features/file/CreateFile/events.js";
2
+ import { TaskService } from "@webiny/api-core/features/task/TaskService/index.js";
3
+ import { AI_IMAGE_ENRICHMENT_TASK_ID } from "./AiImageEnrichmentTask.js";
4
+ class AiImageEnrichmentAfterCreateHandlerImpl {
5
+ constructor(taskService){
6
+ this.taskService = taskService;
7
+ }
8
+ async handle(event) {
9
+ const { file } = event.payload;
10
+ if (!file.type.startsWith("image/")) return;
11
+ await this.taskService.trigger({
12
+ definition: AI_IMAGE_ENRICHMENT_TASK_ID,
13
+ input: {
14
+ fileId: file.id
15
+ }
16
+ });
17
+ }
18
+ }
19
+ const AiImageEnrichmentAfterCreateHandler = FileAfterCreateEventHandler.createImplementation({
20
+ implementation: AiImageEnrichmentAfterCreateHandlerImpl,
21
+ dependencies: [
22
+ TaskService
23
+ ]
24
+ });
25
+ export { AiImageEnrichmentAfterCreateHandler };
26
+
27
+ //# sourceMappingURL=AiImageEnrichmentAfterCreateHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/AiImageEnrichment/AiImageEnrichmentAfterCreateHandler.js","sources":["../../../../src/api/features/AiImageEnrichment/AiImageEnrichmentAfterCreateHandler.ts"],"sourcesContent":["import { FileAfterCreateEventHandler } from \"@webiny/api-file-manager/features/file/CreateFile/events.js\";\nimport { TaskService } from \"@webiny/api-core/features/task/TaskService/index.js\";\nimport type { IAiImageEnrichmentTaskInput } from \"./AiImageEnrichmentTask.js\";\nimport { AI_IMAGE_ENRICHMENT_TASK_ID } from \"./AiImageEnrichmentTask.js\";\n\nclass AiImageEnrichmentAfterCreateHandlerImpl implements FileAfterCreateEventHandler.Interface {\n constructor(private taskService: TaskService.Interface) {}\n\n async handle(event: FileAfterCreateEventHandler.Event): Promise<void> {\n const { file } = event.payload;\n\n if (!file.type.startsWith(\"image/\")) {\n return;\n }\n\n await this.taskService.trigger<IAiImageEnrichmentTaskInput>({\n definition: AI_IMAGE_ENRICHMENT_TASK_ID,\n input: {\n fileId: file.id\n }\n });\n }\n}\n\nexport const AiImageEnrichmentAfterCreateHandler = FileAfterCreateEventHandler.createImplementation(\n {\n implementation: AiImageEnrichmentAfterCreateHandlerImpl,\n dependencies: [TaskService]\n }\n);\n"],"names":["AiImageEnrichmentAfterCreateHandlerImpl","taskService","event","file","AI_IMAGE_ENRICHMENT_TASK_ID","AiImageEnrichmentAfterCreateHandler","FileAfterCreateEventHandler","TaskService"],"mappings":";;;AAKA,MAAMA;IACF,YAAoBC,WAAkC,CAAE;aAApCA,WAAW,GAAXA;IAAqC;IAEzD,MAAM,OAAOC,KAAwC,EAAiB;QAClE,MAAM,EAAEC,IAAI,EAAE,GAAGD,MAAM,OAAO;QAE9B,IAAI,CAACC,KAAK,IAAI,CAAC,UAAU,CAAC,WACtB;QAGJ,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAA8B;YACxD,YAAYC;YACZ,OAAO;gBACH,QAAQD,KAAK,EAAE;YACnB;QACJ;IACJ;AACJ;AAEO,MAAME,sCAAsCC,4BAA4B,oBAAoB,CAC/F;IACI,gBAAgBN;IAChB,cAAc;QAACO;KAAY;AAC/B"}
@@ -0,0 +1,36 @@
1
+ import { HttpRouteDefinition, HttpRouteHandler } from "@webiny/event-handler-core";
2
+ import type { IHttpRequest, IHttpResponseBuilder } from "@webiny/event-handler-core";
3
+ import { Ai } from "@webiny/api-core/features/ai/index.js";
4
+ import { PrepareImageEnrichmentUseCase } from "./abstractions.js";
5
+ /**
6
+ * Re-runs AI enrichment for a single file, streaming the model's output to the caller as
7
+ * server-sent events. Read-only: the result is a proposal the caller can accept or discard.
8
+ *
9
+ * Preparation (file lookup, image read, provider resolution) happens BEFORE the response opens, so
10
+ * anything knowable up front — missing file, wrong type, no provider — comes back as a real status
11
+ * code. Only the AI call itself streams; once the first byte is out the status is committed to 200
12
+ * and failures can only be reported as an `error` event.
13
+ */
14
+ declare class AiImageEnrichmentStreamRouteImpl implements HttpRouteHandler.Interface {
15
+ private prepare;
16
+ private ai;
17
+ constructor(prepare: PrepareImageEnrichmentUseCase.Interface, ai: Ai.Interface);
18
+ handle(request: IHttpRequest, response: IHttpResponseBuilder): Promise<IHttpResponseBuilder>;
19
+ private enrich;
20
+ }
21
+ export declare const AiImageEnrichmentStreamRoute: typeof AiImageEnrichmentStreamRouteImpl & {
22
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/event-handler-core").IHttpRoute>;
23
+ };
24
+ declare class AiImageEnrichmentStreamRouteDefinitionImpl implements HttpRouteDefinition.Interface {
25
+ readonly name = "ai-image-enrichment-stream";
26
+ readonly method = "POST";
27
+ readonly path = "/stream/fm/files/:fileId/enrich";
28
+ readonly handler: typeof AiImageEnrichmentStreamRouteImpl & {
29
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/event-handler-core").IHttpRoute>;
30
+ };
31
+ }
32
+ /** What the router matches on. Zero dependencies, so building it costs nothing. */
33
+ export declare const AiImageEnrichmentStreamRouteDefinition: typeof AiImageEnrichmentStreamRouteDefinitionImpl & {
34
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/event-handler-core").IHttpRouteDefinition>;
35
+ };
36
+ export {};
@@ -0,0 +1,92 @@
1
+ import { HttpRouteDefinition, HttpRouteHandler, toSseFrame } from "@webiny/event-handler-core";
2
+ import { Ai } from "@webiny/api-core/features/ai/index.js";
3
+ import { PrepareImageEnrichmentUseCase } from "./abstractions.js";
4
+ import { buildEnrichmentAiRequest } from "./buildEnrichmentAiRequest.js";
5
+ import { readEnrichmentPartial } from "./readEnrichmentPartial.js";
6
+ import { imageEnrichmentErrorStatusCode } from "./imageEnrichmentErrorStatusCode.js";
7
+ class AiImageEnrichmentStreamRouteImpl {
8
+ constructor(prepare, ai){
9
+ this.prepare = prepare;
10
+ this.ai = ai;
11
+ }
12
+ async handle(request, response) {
13
+ const fileId = request.pathParameters.fileId;
14
+ if (!fileId) return response.status(400).json({
15
+ message: "Missing file ID."
16
+ });
17
+ const preparedResult = await this.prepare.execute(fileId);
18
+ if (preparedResult.isFail()) {
19
+ const error = preparedResult.error;
20
+ const statusCode = imageEnrichmentErrorStatusCode(error);
21
+ return response.status(statusCode).json({
22
+ message: error.message,
23
+ code: error.code
24
+ });
25
+ }
26
+ const events = this.enrich(preparedResult.value);
27
+ return response.sse(events);
28
+ }
29
+ async *enrich(prepared) {
30
+ yield toSseFrame({
31
+ type: "start",
32
+ fileId: prepared.fileId,
33
+ model: prepared.model
34
+ });
35
+ let output = {
36
+ tags: [],
37
+ description: ""
38
+ };
39
+ let failure;
40
+ try {
41
+ const request = buildEnrichmentAiRequest(prepared);
42
+ const stream = await this.ai.streamText({
43
+ ...request,
44
+ onError: ({ error })=>{
45
+ failure ??= error;
46
+ }
47
+ });
48
+ for await (const partial of stream.partialOutputStream){
49
+ output = readEnrichmentPartial(partial);
50
+ yield toSseFrame({
51
+ type: "partial",
52
+ ...output
53
+ });
54
+ }
55
+ if (void 0 !== failure) throw failure;
56
+ } catch (error) {
57
+ yield toSseFrame({
58
+ type: "error",
59
+ message: `AI enrichment failed: ${error instanceof Error ? error.message : String(error)}`
60
+ });
61
+ return;
62
+ }
63
+ yield toSseFrame({
64
+ type: "done",
65
+ fileId: prepared.fileId,
66
+ tags: output.tags,
67
+ description: output.description
68
+ });
69
+ }
70
+ }
71
+ const AiImageEnrichmentStreamRoute = HttpRouteHandler.createImplementation({
72
+ implementation: AiImageEnrichmentStreamRouteImpl,
73
+ dependencies: [
74
+ PrepareImageEnrichmentUseCase,
75
+ Ai
76
+ ]
77
+ });
78
+ class AiImageEnrichmentStreamRouteDefinitionImpl {
79
+ constructor(){
80
+ this.name = "ai-image-enrichment-stream";
81
+ this.method = "POST";
82
+ this.path = "/stream/fm/files/:fileId/enrich";
83
+ this.handler = AiImageEnrichmentStreamRoute;
84
+ }
85
+ }
86
+ const AiImageEnrichmentStreamRouteDefinition = HttpRouteDefinition.createImplementation({
87
+ implementation: AiImageEnrichmentStreamRouteDefinitionImpl,
88
+ dependencies: []
89
+ });
90
+ export { AiImageEnrichmentStreamRoute, AiImageEnrichmentStreamRouteDefinition };
91
+
92
+ //# sourceMappingURL=AiImageEnrichmentStreamRoute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/AiImageEnrichment/AiImageEnrichmentStreamRoute.js","sources":["../../../../src/api/features/AiImageEnrichment/AiImageEnrichmentStreamRoute.ts"],"sourcesContent":["import { HttpRouteDefinition, HttpRouteHandler, toSseFrame } from \"@webiny/event-handler-core\";\nimport type { IHttpRequest, IHttpResponseBuilder } from \"@webiny/event-handler-core\";\nimport { Ai } from \"@webiny/api-core/features/ai/index.js\";\nimport { PrepareImageEnrichmentUseCase } from \"./abstractions.js\";\nimport type { IPreparedImageEnrichment } from \"./abstractions.js\";\nimport { buildEnrichmentAiRequest } from \"./buildEnrichmentAiRequest.js\";\nimport { readEnrichmentPartial } from \"./readEnrichmentPartial.js\";\nimport { imageEnrichmentErrorStatusCode } from \"./imageEnrichmentErrorStatusCode.js\";\n\n/**\n * Re-runs AI enrichment for a single file, streaming the model's output to the caller as\n * server-sent events. Read-only: the result is a proposal the caller can accept or discard.\n *\n * Preparation (file lookup, image read, provider resolution) happens BEFORE the response opens, so\n * anything knowable up front — missing file, wrong type, no provider — comes back as a real status\n * code. Only the AI call itself streams; once the first byte is out the status is committed to 200\n * and failures can only be reported as an `error` event.\n */\nclass AiImageEnrichmentStreamRouteImpl implements HttpRouteHandler.Interface {\n constructor(\n private prepare: PrepareImageEnrichmentUseCase.Interface,\n private ai: Ai.Interface\n ) {}\n\n async handle(\n request: IHttpRequest,\n response: IHttpResponseBuilder\n ): Promise<IHttpResponseBuilder> {\n const fileId = request.pathParameters.fileId;\n\n if (!fileId) {\n return response.status(400).json({ message: \"Missing file ID.\" });\n }\n\n const preparedResult = await this.prepare.execute(fileId);\n\n if (preparedResult.isFail()) {\n const error = preparedResult.error;\n\n const statusCode = imageEnrichmentErrorStatusCode(error);\n\n return response.status(statusCode).json({ message: error.message, code: error.code });\n }\n\n const events = this.enrich(preparedResult.value);\n\n return response.sse(events);\n }\n\n private async *enrich(prepared: IPreparedImageEnrichment): AsyncGenerator<string> {\n yield toSseFrame({ type: \"start\", fileId: prepared.fileId, model: prepared.model });\n\n let output = { tags: [] as string[], description: \"\" };\n\n /*\n * `streamText` never throws a provider error. It hands it to `onError` and ends the stream,\n * so without this an overloaded or rejected request drained the loop below with nothing in\n * it and came back as a `done` with empty tags and description.\n */\n let failure: unknown;\n\n try {\n const request = buildEnrichmentAiRequest(prepared);\n const stream = await this.ai.streamText({\n ...request,\n onError: ({ error }) => {\n failure ??= error;\n }\n });\n\n for await (const partial of stream.partialOutputStream) {\n output = readEnrichmentPartial(partial);\n yield toSseFrame({ type: \"partial\", ...output });\n }\n\n if (failure !== undefined) {\n throw failure;\n }\n } catch (error) {\n yield toSseFrame({\n type: \"error\",\n message: `AI enrichment failed: ${\n error instanceof Error ? error.message : String(error)\n }`\n });\n return;\n }\n\n // Nothing is persisted here. The route PROPOSES; the user accepts in the UI, and the save\n // goes through the file's normal update path. The upload-time task still applies\n // automatically — there is nobody to ask at that point.\n yield toSseFrame({\n type: \"done\",\n fileId: prepared.fileId,\n tags: output.tags,\n description: output.description\n });\n }\n}\n\nexport const AiImageEnrichmentStreamRoute = HttpRouteHandler.createImplementation({\n implementation: AiImageEnrichmentStreamRouteImpl,\n dependencies: [PrepareImageEnrichmentUseCase, Ai]\n});\n\nclass AiImageEnrichmentStreamRouteDefinitionImpl implements HttpRouteDefinition.Interface {\n readonly name = \"ai-image-enrichment-stream\";\n readonly method = \"POST\";\n readonly path = \"/stream/fm/files/:fileId/enrich\";\n readonly handler = AiImageEnrichmentStreamRoute;\n}\n\n/** What the router matches on. Zero dependencies, so building it costs nothing. */\nexport const AiImageEnrichmentStreamRouteDefinition = HttpRouteDefinition.createImplementation({\n implementation: AiImageEnrichmentStreamRouteDefinitionImpl,\n dependencies: []\n});\n"],"names":["AiImageEnrichmentStreamRouteImpl","prepare","ai","request","response","fileId","preparedResult","error","statusCode","imageEnrichmentErrorStatusCode","events","prepared","toSseFrame","output","failure","buildEnrichmentAiRequest","stream","partial","readEnrichmentPartial","undefined","Error","String","AiImageEnrichmentStreamRoute","HttpRouteHandler","PrepareImageEnrichmentUseCase","Ai","AiImageEnrichmentStreamRouteDefinitionImpl","AiImageEnrichmentStreamRouteDefinition","HttpRouteDefinition"],"mappings":";;;;;;AAkBA,MAAMA;IACF,YACYC,OAAgD,EAChDC,EAAgB,CAC1B;aAFUD,OAAO,GAAPA;aACAC,EAAE,GAAFA;IACT;IAEH,MAAM,OACFC,OAAqB,EACrBC,QAA8B,EACD;QAC7B,MAAMC,SAASF,QAAQ,cAAc,CAAC,MAAM;QAE5C,IAAI,CAACE,QACD,OAAOD,SAAS,MAAM,CAAC,KAAK,IAAI,CAAC;YAAE,SAAS;QAAmB;QAGnE,MAAME,iBAAiB,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAACD;QAElD,IAAIC,eAAe,MAAM,IAAI;YACzB,MAAMC,QAAQD,eAAe,KAAK;YAElC,MAAME,aAAaC,+BAA+BF;YAElD,OAAOH,SAAS,MAAM,CAACI,YAAY,IAAI,CAAC;gBAAE,SAASD,MAAM,OAAO;gBAAE,MAAMA,MAAM,IAAI;YAAC;QACvF;QAEA,MAAMG,SAAS,IAAI,CAAC,MAAM,CAACJ,eAAe,KAAK;QAE/C,OAAOF,SAAS,GAAG,CAACM;IACxB;IAEA,OAAe,OAAOC,QAAkC,EAA0B;QAC9E,MAAMC,WAAW;YAAE,MAAM;YAAS,QAAQD,SAAS,MAAM;YAAE,OAAOA,SAAS,KAAK;QAAC;QAEjF,IAAIE,SAAS;YAAE,MAAM,EAAE;YAAc,aAAa;QAAG;QAOrD,IAAIC;QAEJ,IAAI;YACA,MAAMX,UAAUY,yBAAyBJ;YACzC,MAAMK,SAAS,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC;gBACpC,GAAGb,OAAO;gBACV,SAAS,CAAC,EAAEI,KAAK,EAAE;oBACfO,YAAYP;gBAChB;YACJ;YAEA,WAAW,MAAMU,WAAWD,OAAO,mBAAmB,CAAE;gBACpDH,SAASK,sBAAsBD;gBAC/B,MAAML,WAAW;oBAAE,MAAM;oBAAW,GAAGC,MAAM;gBAAC;YAClD;YAEA,IAAIC,AAAYK,WAAZL,SACA,MAAMA;QAEd,EAAE,OAAOP,OAAO;YACZ,MAAMK,WAAW;gBACb,MAAM;gBACN,SAAS,CAAC,sBAAsB,EAC5BL,iBAAiBa,QAAQb,MAAM,OAAO,GAAGc,OAAOd,QAClD;YACN;YACA;QACJ;QAKA,MAAMK,WAAW;YACb,MAAM;YACN,QAAQD,SAAS,MAAM;YACvB,MAAME,OAAO,IAAI;YACjB,aAAaA,OAAO,WAAW;QACnC;IACJ;AACJ;AAEO,MAAMS,+BAA+BC,iBAAiB,oBAAoB,CAAC;IAC9E,gBAAgBvB;IAChB,cAAc;QAACwB;QAA+BC;KAAG;AACrD;AAEA,MAAMC;;aACO,IAAI,GAAG;aACP,MAAM,GAAG;aACT,IAAI,GAAG;aACP,OAAO,GAAGJ;;AACvB;AAGO,MAAMK,yCAAyCC,oBAAoB,oBAAoB,CAAC;IAC3F,gBAAgBF;IAChB,cAAc,EAAE;AACpB"}
@@ -0,0 +1,41 @@
1
+ import { TaskDefinition, TaskHandler } from "@webiny/api-core/features/task/TaskDefinition/index.js";
2
+ import { Ai } from "@webiny/api-core/features/ai/index.js";
3
+ import { IdentityContext } from "@webiny/api-core/exports/api/security.js";
4
+ import { WebsocketsSendToIdentityUseCase } from "@webiny/api-websockets/features/SendToIdentity/abstractions.js";
5
+ import { ApplyImageEnrichmentUseCase, PrepareImageEnrichmentUseCase } from "./abstractions.js";
6
+ export declare const AI_IMAGE_ENRICHMENT_TASK_ID = "fmAiImageEnrichment";
7
+ export declare const FILE_ENRICHMENT_FAILED_WEBSOCKET_ACTION = "fm.file.enrichment.failed";
8
+ export interface IAiImageEnrichmentTaskInput {
9
+ fileId: string;
10
+ }
11
+ /**
12
+ * Background enrichment, triggered after a file is created. Shares its preparation and persistence
13
+ * with the streaming HTTP route (`AiImageEnrichmentStreamRoute`); the only difference is that this
14
+ * one waits for the whole AI response, because a background task has no one to stream to.
15
+ */
16
+ declare class AiImageEnrichmentTaskHandlerImpl implements TaskHandler.Interface<IAiImageEnrichmentTaskInput> {
17
+ private prepare;
18
+ private apply;
19
+ private ai;
20
+ private identityContext;
21
+ private sendToIdentity;
22
+ constructor(prepare: PrepareImageEnrichmentUseCase.Interface, apply: ApplyImageEnrichmentUseCase.Interface, ai: Ai.Interface, identityContext: IdentityContext.Interface, sendToIdentity: WebsocketsSendToIdentityUseCase.Interface);
23
+ run({ input, controller }: TaskHandler.RunParams<IAiImageEnrichmentTaskInput>): Promise<TaskDefinition.Result<IAiImageEnrichmentTaskInput>>;
24
+ private fail;
25
+ }
26
+ declare class AiImageEnrichmentTaskImpl implements TaskDefinition.Interface {
27
+ id: string;
28
+ title: string;
29
+ description: string;
30
+ maxIterations: number;
31
+ isPrivate: boolean;
32
+ databaseLogs: boolean;
33
+ readonly selfCleanup: ("onAbort" | "onSuccess")[];
34
+ handler: typeof AiImageEnrichmentTaskHandlerImpl & {
35
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskHandler<import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskInput, import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskOutput>>;
36
+ };
37
+ }
38
+ export declare const AiImageEnrichmentTask: typeof AiImageEnrichmentTaskImpl & {
39
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskDefinition<import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskInput, import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskOutput>>;
40
+ };
41
+ export {};
@@ -0,0 +1,95 @@
1
+ import { TaskDefinition, TaskHandler } from "@webiny/api-core/features/task/TaskDefinition/index.js";
2
+ import { Ai } from "@webiny/api-core/features/ai/index.js";
3
+ import { IdentityContext } from "@webiny/api-core/exports/api/security.js";
4
+ import { WebsocketsSendToIdentityUseCase } from "@webiny/api-websockets/features/SendToIdentity/abstractions.js";
5
+ import { ApplyImageEnrichmentUseCase, PrepareImageEnrichmentUseCase } from "./abstractions.js";
6
+ import { buildEnrichmentAiRequest } from "./buildEnrichmentAiRequest.js";
7
+ import { EnrichmentCapabilityDisabledError, EnrichmentNotAnImageError } from "./errors.js";
8
+ const AI_IMAGE_ENRICHMENT_TASK_ID = "fmAiImageEnrichment";
9
+ const FILE_ENRICHMENT_FAILED_WEBSOCKET_ACTION = "fm.file.enrichment.failed";
10
+ class AiImageEnrichmentTaskHandlerImpl {
11
+ constructor(prepare, apply, ai, identityContext, sendToIdentity){
12
+ this.prepare = prepare;
13
+ this.apply = apply;
14
+ this.ai = ai;
15
+ this.identityContext = identityContext;
16
+ this.sendToIdentity = sendToIdentity;
17
+ }
18
+ async run({ input, controller }) {
19
+ if (controller.runtime.isAborted()) return controller.response.aborted();
20
+ const preparedResult = await this.prepare.execute(input.fileId);
21
+ if (preparedResult.isFail()) {
22
+ const error = preparedResult.error;
23
+ if (error instanceof EnrichmentNotAnImageError || error instanceof EnrichmentCapabilityDisabledError) return controller.response.done(error.message);
24
+ return this.fail(controller, input.fileId, error.message);
25
+ }
26
+ const prepared = preparedResult.value;
27
+ let tags;
28
+ let description;
29
+ try {
30
+ const request = buildEnrichmentAiRequest(prepared);
31
+ const aiResult = await this.ai.generateText(request);
32
+ tags = aiResult.output.tags;
33
+ description = aiResult.output.description;
34
+ } catch (error) {
35
+ const reason = error instanceof Error ? error.message : String(error);
36
+ return this.fail(controller, input.fileId, `AI enrichment failed: ${reason}`);
37
+ }
38
+ const appliedResult = await this.apply.execute({
39
+ fileId: prepared.fileId,
40
+ tags,
41
+ description
42
+ });
43
+ if (appliedResult.isFail()) return this.fail(controller, input.fileId, appliedResult.error.message);
44
+ return controller.response.done("AI image enrichment completed successfully.");
45
+ }
46
+ async fail(controller, fileId, message) {
47
+ const identity = this.identityContext.getIdentity();
48
+ if (identity?.id) try {
49
+ await this.sendToIdentity.execute({
50
+ id: identity.id
51
+ }, {
52
+ action: FILE_ENRICHMENT_FAILED_WEBSOCKET_ACTION,
53
+ data: {
54
+ id: fileId,
55
+ message
56
+ }
57
+ });
58
+ } catch {}
59
+ return controller.response.error({
60
+ message
61
+ });
62
+ }
63
+ }
64
+ const AiImageEnrichmentTaskHandler = TaskHandler.createImplementation({
65
+ implementation: AiImageEnrichmentTaskHandlerImpl,
66
+ dependencies: [
67
+ PrepareImageEnrichmentUseCase,
68
+ ApplyImageEnrichmentUseCase,
69
+ Ai,
70
+ IdentityContext,
71
+ WebsocketsSendToIdentityUseCase
72
+ ]
73
+ });
74
+ class AiImageEnrichmentTaskImpl {
75
+ constructor(){
76
+ this.id = AI_IMAGE_ENRICHMENT_TASK_ID;
77
+ this.title = "File Manager - AI Image Enrichment";
78
+ this.description = "Automatically enriches uploaded images with AI-generated tags and description.";
79
+ this.maxIterations = 1;
80
+ this.isPrivate = true;
81
+ this.databaseLogs = false;
82
+ this.selfCleanup = [
83
+ "onSuccess",
84
+ "onAbort"
85
+ ];
86
+ this.handler = AiImageEnrichmentTaskHandler;
87
+ }
88
+ }
89
+ const AiImageEnrichmentTask = TaskDefinition.createImplementation({
90
+ implementation: AiImageEnrichmentTaskImpl,
91
+ dependencies: []
92
+ });
93
+ export { AI_IMAGE_ENRICHMENT_TASK_ID, AiImageEnrichmentTask, FILE_ENRICHMENT_FAILED_WEBSOCKET_ACTION };
94
+
95
+ //# sourceMappingURL=AiImageEnrichmentTask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/AiImageEnrichment/AiImageEnrichmentTask.js","sources":["../../../../src/api/features/AiImageEnrichment/AiImageEnrichmentTask.ts"],"sourcesContent":["import {\n TaskDefinition,\n TaskHandler\n} from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { Ai } from \"@webiny/api-core/features/ai/index.js\";\nimport { IdentityContext } from \"@webiny/api-core/exports/api/security.js\";\nimport { WebsocketsSendToIdentityUseCase } from \"@webiny/api-websockets/features/SendToIdentity/abstractions.js\";\nimport { ApplyImageEnrichmentUseCase, PrepareImageEnrichmentUseCase } from \"./abstractions.js\";\nimport { buildEnrichmentAiRequest } from \"./buildEnrichmentAiRequest.js\";\nimport { EnrichmentCapabilityDisabledError } from \"./errors.js\";\nimport { EnrichmentNotAnImageError } from \"./errors.js\";\n\nexport const AI_IMAGE_ENRICHMENT_TASK_ID = \"fmAiImageEnrichment\";\n\nexport const FILE_ENRICHMENT_FAILED_WEBSOCKET_ACTION = \"fm.file.enrichment.failed\";\n\nexport interface IAiImageEnrichmentTaskInput {\n fileId: string;\n}\n\n/**\n * Background enrichment, triggered after a file is created. Shares its preparation and persistence\n * with the streaming HTTP route (`AiImageEnrichmentStreamRoute`); the only difference is that this\n * one waits for the whole AI response, because a background task has no one to stream to.\n */\nclass AiImageEnrichmentTaskHandlerImpl implements TaskHandler.Interface<IAiImageEnrichmentTaskInput> {\n constructor(\n private prepare: PrepareImageEnrichmentUseCase.Interface,\n private apply: ApplyImageEnrichmentUseCase.Interface,\n private ai: Ai.Interface,\n private identityContext: IdentityContext.Interface,\n private sendToIdentity: WebsocketsSendToIdentityUseCase.Interface\n ) {}\n\n async run({\n input,\n controller\n }: TaskHandler.RunParams<IAiImageEnrichmentTaskInput>): Promise<\n TaskDefinition.Result<IAiImageEnrichmentTaskInput>\n > {\n if (controller.runtime.isAborted()) {\n return controller.response.aborted();\n }\n\n const preparedResult = await this.prepare.execute(input.fileId);\n if (preparedResult.isFail()) {\n const error = preparedResult.error;\n /*\n * Neither of these is a failure. A non-image has nothing to enrich, and a switched-off\n * capability is a setting someone chose. Reporting either as an error would log one on\n * every upload. A real misconfiguration still falls through to the error below.\n */\n if (\n error instanceof EnrichmentNotAnImageError ||\n error instanceof EnrichmentCapabilityDisabledError\n ) {\n return controller.response.done(error.message);\n }\n return this.fail(controller, input.fileId, error.message);\n }\n\n const prepared = preparedResult.value;\n\n let tags: string[];\n let description: string;\n try {\n const request = buildEnrichmentAiRequest(prepared);\n const aiResult = await this.ai.generateText(request);\n\n tags = aiResult.output.tags;\n description = aiResult.output.description;\n } catch (error) {\n const reason = error instanceof Error ? error.message : String(error);\n\n return this.fail(controller, input.fileId, `AI enrichment failed: ${reason}`);\n }\n\n const appliedResult = await this.apply.execute({\n fileId: prepared.fileId,\n tags,\n description\n });\n\n if (appliedResult.isFail()) {\n return this.fail(controller, input.fileId, appliedResult.error.message);\n }\n\n return controller.response.done(\"AI image enrichment completed successfully.\");\n }\n\n /*\n * Fails the task AND tells the uploader. A failed task on its own only reaches the API log, so\n * a missing Vision model or an overloaded provider looked, from the File Manager, exactly like\n * enrichment never having run. Success already reaches the uploader the same way, from\n * `ApplyImageEnrichmentUseCase`.\n */\n private async fail(\n controller: TaskHandler.RunParams<IAiImageEnrichmentTaskInput>[\"controller\"],\n fileId: string,\n message: string\n ): Promise<TaskDefinition.Result<IAiImageEnrichmentTaskInput>> {\n const identity = this.identityContext.getIdentity();\n\n // A notification is a courtesy; failing to send one must not replace the real error.\n if (identity?.id) {\n try {\n await this.sendToIdentity.execute(\n { id: identity.id },\n {\n action: FILE_ENRICHMENT_FAILED_WEBSOCKET_ACTION,\n data: { id: fileId, message }\n }\n );\n } catch {\n // Deliberately ignored, see above.\n }\n }\n\n return controller.response.error({ message });\n }\n}\n\nconst AiImageEnrichmentTaskHandler = TaskHandler.createImplementation({\n implementation: AiImageEnrichmentTaskHandlerImpl,\n dependencies: [\n PrepareImageEnrichmentUseCase,\n ApplyImageEnrichmentUseCase,\n Ai,\n IdentityContext,\n WebsocketsSendToIdentityUseCase\n ]\n});\n\nclass AiImageEnrichmentTaskImpl implements TaskDefinition.Interface {\n id = AI_IMAGE_ENRICHMENT_TASK_ID;\n title = \"File Manager - AI Image Enrichment\";\n description = \"Automatically enriches uploaded images with AI-generated tags and description.\";\n maxIterations = 1;\n isPrivate = true;\n databaseLogs = false;\n public readonly selfCleanup = [\"onSuccess\" as const, \"onAbort\" as const];\n\n handler = AiImageEnrichmentTaskHandler;\n}\n\nexport const AiImageEnrichmentTask = TaskDefinition.createImplementation({\n implementation: AiImageEnrichmentTaskImpl,\n dependencies: []\n});\n"],"names":["AI_IMAGE_ENRICHMENT_TASK_ID","FILE_ENRICHMENT_FAILED_WEBSOCKET_ACTION","AiImageEnrichmentTaskHandlerImpl","prepare","apply","ai","identityContext","sendToIdentity","input","controller","preparedResult","error","EnrichmentNotAnImageError","EnrichmentCapabilityDisabledError","prepared","tags","description","request","buildEnrichmentAiRequest","aiResult","reason","Error","String","appliedResult","fileId","message","identity","AiImageEnrichmentTaskHandler","TaskHandler","PrepareImageEnrichmentUseCase","ApplyImageEnrichmentUseCase","Ai","IdentityContext","WebsocketsSendToIdentityUseCase","AiImageEnrichmentTaskImpl","AiImageEnrichmentTask","TaskDefinition"],"mappings":";;;;;;;AAYO,MAAMA,8BAA8B;AAEpC,MAAMC,0CAA0C;AAWvD,MAAMC;IACF,YACYC,OAAgD,EAChDC,KAA4C,EAC5CC,EAAgB,EAChBC,eAA0C,EAC1CC,cAAyD,CACnE;aALUJ,OAAO,GAAPA;aACAC,KAAK,GAALA;aACAC,EAAE,GAAFA;aACAC,eAAe,GAAfA;aACAC,cAAc,GAAdA;IACT;IAEH,MAAM,IAAI,EACNC,KAAK,EACLC,UAAU,EACuC,EAEnD;QACE,IAAIA,WAAW,OAAO,CAAC,SAAS,IAC5B,OAAOA,WAAW,QAAQ,CAAC,OAAO;QAGtC,MAAMC,iBAAiB,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAACF,MAAM,MAAM;QAC9D,IAAIE,eAAe,MAAM,IAAI;YACzB,MAAMC,QAAQD,eAAe,KAAK;YAMlC,IACIC,iBAAiBC,6BACjBD,iBAAiBE,mCAEjB,OAAOJ,WAAW,QAAQ,CAAC,IAAI,CAACE,MAAM,OAAO;YAEjD,OAAO,IAAI,CAAC,IAAI,CAACF,YAAYD,MAAM,MAAM,EAAEG,MAAM,OAAO;QAC5D;QAEA,MAAMG,WAAWJ,eAAe,KAAK;QAErC,IAAIK;QACJ,IAAIC;QACJ,IAAI;YACA,MAAMC,UAAUC,yBAAyBJ;YACzC,MAAMK,WAAW,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAACF;YAE5CF,OAAOI,SAAS,MAAM,CAAC,IAAI;YAC3BH,cAAcG,SAAS,MAAM,CAAC,WAAW;QAC7C,EAAE,OAAOR,OAAO;YACZ,MAAMS,SAAST,iBAAiBU,QAAQV,MAAM,OAAO,GAAGW,OAAOX;YAE/D,OAAO,IAAI,CAAC,IAAI,CAACF,YAAYD,MAAM,MAAM,EAAE,CAAC,sBAAsB,EAAEY,QAAQ;QAChF;QAEA,MAAMG,gBAAgB,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YAC3C,QAAQT,SAAS,MAAM;YACvBC;YACAC;QACJ;QAEA,IAAIO,cAAc,MAAM,IACpB,OAAO,IAAI,CAAC,IAAI,CAACd,YAAYD,MAAM,MAAM,EAAEe,cAAc,KAAK,CAAC,OAAO;QAG1E,OAAOd,WAAW,QAAQ,CAAC,IAAI,CAAC;IACpC;IAQA,MAAc,KACVA,UAA4E,EAC5Ee,MAAc,EACdC,OAAe,EAC4C;QAC3D,MAAMC,WAAW,IAAI,CAAC,eAAe,CAAC,WAAW;QAGjD,IAAIA,UAAU,IACV,IAAI;YACA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B;gBAAE,IAAIA,SAAS,EAAE;YAAC,GAClB;gBACI,QAAQzB;gBACR,MAAM;oBAAE,IAAIuB;oBAAQC;gBAAQ;YAChC;QAER,EAAE,OAAM,CAER;QAGJ,OAAOhB,WAAW,QAAQ,CAAC,KAAK,CAAC;YAAEgB;QAAQ;IAC/C;AACJ;AAEA,MAAME,+BAA+BC,YAAY,oBAAoB,CAAC;IAClE,gBAAgB1B;IAChB,cAAc;QACV2B;QACAC;QACAC;QACAC;QACAC;KACH;AACL;AAEA,MAAMC;;aACF,EAAE,GAAGlC;aACL,KAAK,GAAG;aACR,WAAW,GAAG;aACd,aAAa,GAAG;aAChB,SAAS,GAAG;aACZ,YAAY,GAAG;aACC,WAAW,GAAG;YAAC;YAAsB;SAAmB;aAExE,OAAO,GAAG2B;;AACd;AAEO,MAAMQ,wBAAwBC,eAAe,oBAAoB,CAAC;IACrE,gBAAgBF;IAChB,cAAc,EAAE;AACpB"}
@@ -0,0 +1,18 @@
1
+ import { Result } from "@webiny/feature/api";
2
+ import { UpdateFileUseCase } from "@webiny/api-file-manager/features/file/UpdateFile/index.js";
3
+ import { WebsocketsSendToIdentityUseCase } from "@webiny/api-websockets/features/SendToIdentity/abstractions.js";
4
+ import { IdentityContext } from "@webiny/api-core/exports/api/security.js";
5
+ import { ApplyImageEnrichmentUseCase as UseCaseAbstraction, type IApplyImageEnrichmentParams, type IAppliedImageEnrichment } from "./abstractions.js";
6
+ import type { ImageEnrichmentError } from "./errors.js";
7
+ export declare const FILE_ENRICHMENT_WEBSOCKET_ACTION = "fm.file.enrichment";
8
+ declare class ApplyImageEnrichmentUseCaseImpl implements UseCaseAbstraction.Interface {
9
+ private updateFile;
10
+ private identityContext;
11
+ private sendToIdentity;
12
+ constructor(updateFile: UpdateFileUseCase.Interface, identityContext: IdentityContext.Interface, sendToIdentity: WebsocketsSendToIdentityUseCase.Interface);
13
+ execute(params: IApplyImageEnrichmentParams): Promise<Result<IAppliedImageEnrichment, ImageEnrichmentError>>;
14
+ }
15
+ export declare const ApplyImageEnrichmentUseCase: typeof ApplyImageEnrichmentUseCaseImpl & {
16
+ __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IApplyImageEnrichmentUseCase>;
17
+ };
18
+ export {};