libre-webui 0.37.1 → 0.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (357) hide show
  1. package/README.md +28 -65
  2. package/backend/dist/db.js +1 -1
  3. package/backend/dist/index.d.ts.map +1 -1
  4. package/backend/dist/index.js +13 -36
  5. package/backend/dist/index.js.map +1 -1
  6. package/backend/dist/main.js +0 -12
  7. package/backend/dist/main.js.map +1 -1
  8. package/backend/dist/middleware/cors.d.ts.map +1 -1
  9. package/backend/dist/middleware/cors.js +5 -0
  10. package/backend/dist/middleware/cors.js.map +1 -1
  11. package/backend/dist/persistence/postgresExtensionRepositories.d.ts.map +1 -1
  12. package/backend/dist/persistence/postgresExtensionRepositories.js +2 -4
  13. package/backend/dist/persistence/postgresExtensionRepositories.js.map +1 -1
  14. package/backend/dist/persistence/sqliteExtensionRepositories.d.ts.map +1 -1
  15. package/backend/dist/persistence/sqliteExtensionRepositories.js +2 -4
  16. package/backend/dist/persistence/sqliteExtensionRepositories.js.map +1 -1
  17. package/backend/dist/routes/agentCli.d.ts.map +1 -1
  18. package/backend/dist/routes/agentCli.js +8 -3
  19. package/backend/dist/routes/agentCli.js.map +1 -1
  20. package/backend/dist/routes/{cordis.d.ts → strands.d.ts} +1 -1
  21. package/backend/dist/routes/strands.d.ts.map +1 -0
  22. package/backend/dist/routes/strands.js +300 -0
  23. package/backend/dist/routes/strands.js.map +1 -0
  24. package/backend/dist/routes/work.d.ts.map +1 -1
  25. package/backend/dist/routes/work.js +9 -21
  26. package/backend/dist/routes/work.js.map +1 -1
  27. package/backend/dist/services/agentAccessService.d.ts +0 -5
  28. package/backend/dist/services/agentAccessService.d.ts.map +1 -1
  29. package/backend/dist/services/agentAccessService.js +7 -35
  30. package/backend/dist/services/agentAccessService.js.map +1 -1
  31. package/backend/dist/services/agentCliService.d.ts +16 -23
  32. package/backend/dist/services/agentCliService.d.ts.map +1 -1
  33. package/backend/dist/services/agentCliService.js +87 -112
  34. package/backend/dist/services/agentCliService.js.map +1 -1
  35. package/backend/dist/services/authService.d.ts +3 -3
  36. package/backend/dist/services/authService.d.ts.map +1 -1
  37. package/backend/dist/services/authService.js +3 -4
  38. package/backend/dist/services/authService.js.map +1 -1
  39. package/backend/dist/services/authorizationService.d.ts +1 -1
  40. package/backend/dist/services/authorizationService.d.ts.map +1 -1
  41. package/backend/dist/services/authorizationService.js +17 -8
  42. package/backend/dist/services/authorizationService.js.map +1 -1
  43. package/backend/dist/services/pluginUsageService.d.ts +0 -34
  44. package/backend/dist/services/pluginUsageService.d.ts.map +1 -1
  45. package/backend/dist/services/pluginUsageService.js +0 -62
  46. package/backend/dist/services/pluginUsageService.js.map +1 -1
  47. package/backend/dist/services/strandsAccessService.d.ts +26 -0
  48. package/backend/dist/services/strandsAccessService.d.ts.map +1 -0
  49. package/backend/dist/services/strandsAccessService.js +95 -0
  50. package/backend/dist/services/strandsAccessService.js.map +1 -0
  51. package/backend/dist/services/thinkingSummaryService.d.ts +2 -3
  52. package/backend/dist/services/thinkingSummaryService.d.ts.map +1 -1
  53. package/backend/dist/services/thinkingSummaryService.js +13 -27
  54. package/backend/dist/services/thinkingSummaryService.js.map +1 -1
  55. package/backend/dist/services/titleGenerationService.d.ts +7 -18
  56. package/backend/dist/services/titleGenerationService.d.ts.map +1 -1
  57. package/backend/dist/services/titleGenerationService.js +15 -36
  58. package/backend/dist/services/titleGenerationService.js.map +1 -1
  59. package/backend/dist/services/workAgentService.d.ts +1 -1
  60. package/backend/dist/services/workAgentService.d.ts.map +1 -1
  61. package/backend/dist/services/workAgentService.js +14 -60
  62. package/backend/dist/services/workAgentService.js.map +1 -1
  63. package/backend/dist/services/workModelProviderService.d.ts +1 -4
  64. package/backend/dist/services/workModelProviderService.d.ts.map +1 -1
  65. package/backend/dist/services/workModelProviderService.js +17 -37
  66. package/backend/dist/services/workModelProviderService.js.map +1 -1
  67. package/backend/dist/services/workTaskService.js +1 -1
  68. package/backend/dist/services/workTaskService.js.map +1 -1
  69. package/backend/dist/strands/catalog.d.ts +57 -0
  70. package/backend/dist/strands/catalog.d.ts.map +1 -0
  71. package/backend/dist/strands/catalog.js +241 -0
  72. package/backend/dist/strands/catalog.js.map +1 -0
  73. package/backend/dist/strands/engine.d.ts +131 -0
  74. package/backend/dist/strands/engine.d.ts.map +1 -0
  75. package/backend/dist/strands/engine.js +477 -0
  76. package/backend/dist/strands/engine.js.map +1 -0
  77. package/backend/dist/strands/harness.d.ts +14 -0
  78. package/backend/dist/strands/harness.d.ts.map +1 -0
  79. package/backend/dist/strands/harness.js +41 -0
  80. package/backend/dist/strands/harness.js.map +1 -0
  81. package/backend/dist/strands/model.d.ts +24 -0
  82. package/backend/dist/strands/model.d.ts.map +1 -0
  83. package/backend/dist/strands/model.js +381 -0
  84. package/backend/dist/strands/model.js.map +1 -0
  85. package/backend/dist/strands/runtime.d.ts +4 -0
  86. package/backend/dist/strands/runtime.d.ts.map +1 -0
  87. package/backend/dist/{cordis/work-model.js → strands/runtime.js} +16 -12
  88. package/backend/dist/strands/runtime.js.map +1 -0
  89. package/backend/dist/strands/sandbox.d.ts +24 -0
  90. package/backend/dist/strands/sandbox.d.ts.map +1 -0
  91. package/backend/dist/strands/sandbox.js +156 -0
  92. package/backend/dist/strands/sandbox.js.map +1 -0
  93. package/backend/dist/strands/work-driver.d.ts +11 -0
  94. package/backend/dist/strands/work-driver.d.ts.map +1 -0
  95. package/backend/dist/strands/work-driver.js +443 -0
  96. package/backend/dist/strands/work-driver.js.map +1 -0
  97. package/backend/dist/strands/work-model.d.ts +7 -0
  98. package/backend/dist/strands/work-model.d.ts.map +1 -0
  99. package/backend/dist/strands/work-model.js +42 -0
  100. package/backend/dist/strands/work-model.js.map +1 -0
  101. package/backend/dist/types/work.d.ts +4 -11
  102. package/backend/dist/types/work.d.ts.map +1 -1
  103. package/backend/dist/utils/corsOriginPolicy.d.ts +10 -0
  104. package/backend/dist/utils/corsOriginPolicy.d.ts.map +1 -0
  105. package/backend/dist/utils/corsOriginPolicy.js +70 -0
  106. package/backend/dist/utils/corsOriginPolicy.js.map +1 -0
  107. package/backend/dist/utils/pluginDefinitionTrust.js +1 -1
  108. package/backend/package.json +4 -34
  109. package/frontend/dist/artifact-runtime/.build-fingerprint +1 -1
  110. package/frontend/dist/assets/index-CJHJxwjA.js +68 -0
  111. package/frontend/dist/assets/index-DSHdOZRK.css +1 -0
  112. package/frontend/dist/index.html +30 -30
  113. package/frontend/dist/js/{ArtifactContainer-B1-GVzVf.js → ArtifactContainer-BWTN4QSW.js} +1 -1
  114. package/frontend/dist/js/{ArtifactDemoPage-goftRHdk.js → ArtifactDemoPage-CCh7lQEw.js} +1 -1
  115. package/frontend/dist/js/{ArtifactSandboxFrame-_8RA8_JV.js → ArtifactSandboxFrame-D1ntMsqe.js} +1 -1
  116. package/frontend/dist/js/{ArtifactSlideOutPanel-DlkOZI5N.js → ArtifactSlideOutPanel-zPEBPoMh.js} +1 -1
  117. package/frontend/dist/js/AutomationModal-DN98Eyym.js +1 -0
  118. package/frontend/dist/js/AutomationsPage-3DBwRKME.js +1 -0
  119. package/frontend/dist/js/{AvatarUpload-CH_n1Ef0.js → AvatarUpload-D5_wGUb5.js} +1 -1
  120. package/frontend/dist/js/{Button-CGMYia4g.js → Button-CTwi9N3d.js} +1 -1
  121. package/frontend/dist/js/{CalendarPage-DLo5nm3Q.js → CalendarPage-CUbGH3Tl.js} +1 -1
  122. package/frontend/dist/js/ChannelsPage-B1hC1rRS.js +1 -0
  123. package/frontend/dist/js/ChatPage-B7mEg5z2.js +14 -0
  124. package/frontend/dist/js/{ConnectModels-B4dGb5yc.js → ConnectModels-Cby89_Mc.js} +1 -1
  125. package/frontend/dist/js/{EvaluationsPage-DpdGpd7x.js → EvaluationsPage-BaND2qQM.js} +2 -2
  126. package/frontend/dist/js/{FirstTimeSetup-By8OE1JS.js → FirstTimeSetup-D8ktLJKO.js} +1 -1
  127. package/frontend/dist/js/GalleryPage-DXQLoU0l.js +1 -0
  128. package/frontend/dist/js/HomePage-WVug1vWc.js +1 -0
  129. package/frontend/dist/js/LanguageSwitcher-DHHTrDBR.js +1 -0
  130. package/frontend/dist/js/{Logo-HZvdAk2c.js → Logo-D1o5k_wt.js} +1 -1
  131. package/frontend/dist/js/{LogoMark-GJnfMXsk.js → LogoMark-lnmc98jv.js} +1 -1
  132. package/frontend/dist/js/{ModelManagerModals-Bk6OQzJI.js → ModelManagerModals-BPALNMDH.js} +1 -1
  133. package/frontend/dist/js/NotesPage-CRzX2Wa8.js +3 -0
  134. package/frontend/dist/js/{PasswordStrengthMeter-DasfJa4P.js → PasswordStrengthMeter-BGrHWG0B.js} +1 -1
  135. package/frontend/dist/js/{PersonasPage-nOThOpXp.js → PersonasPage-BRU9151f.js} +2 -2
  136. package/frontend/dist/js/PluginUsagePage-BlhYZq1l.js +1 -0
  137. package/frontend/dist/js/RichMessageContent-FiuPwDG7.js +1 -0
  138. package/frontend/dist/js/{RichMessageContent-BZ7KKJKK.js → RichMessageContent-OGBLO64L.js} +1 -1
  139. package/frontend/dist/js/SettingsModal-sLkxG-lW.js +19 -0
  140. package/frontend/dist/js/{SettingsToggle-oxvw7ulA.js → SettingsToggle-Du2FSUPO.js} +1 -1
  141. package/frontend/dist/js/{ShareDialog-CnxPGPb_.js → ShareDialog-DEhxnLfn.js} +1 -1
  142. package/frontend/dist/js/StrandsPage-DWnUKSb0.js +1 -0
  143. package/frontend/dist/js/{SystemPage-D2ikvhDp.js → SystemPage-cqq8lSxB.js} +1 -1
  144. package/frontend/dist/js/UserManagementPanel-NZmoTk6V.js +1 -0
  145. package/frontend/dist/js/{WhatsNewModal-DAAFzY0d.js → WhatsNewModal-5SwIdmU1.js} +1 -1
  146. package/frontend/dist/js/WorkPage-BIuaVNEC.js +8 -0
  147. package/frontend/dist/js/api-C2k0OqEk.js +1 -0
  148. package/frontend/dist/js/api-CnJYEbRz.js +14 -0
  149. package/frontend/dist/js/{appNavigation-CqtrZ9bm.js → appNavigation-BXNRwrN-.js} +1 -1
  150. package/frontend/dist/js/appStore-DULGAJnH.js +2 -0
  151. package/frontend/dist/js/appVersion-DooVk4c_.js +1 -0
  152. package/frontend/dist/js/ar-Bp843BgG.js +2 -0
  153. package/frontend/dist/js/authStore-CaLdzyAr.js +1 -0
  154. package/frontend/dist/js/{authStore-C5qKrmn4.js → authStore-DwaPsICv.js} +3 -3
  155. package/frontend/dist/js/bn-DmSGkklY.js +2 -0
  156. package/frontend/dist/js/chatStore-j8bGpkeT.js +3 -0
  157. package/frontend/dist/js/{client-gf5bjBrn.js → client-DQy1iGRM.js} +2 -2
  158. package/frontend/dist/js/{config-CNvgxwAm.js → config-BbrsmDn2.js} +1 -1
  159. package/frontend/dist/js/cs-BcauIRyG.js +2 -0
  160. package/frontend/dist/js/da-CJ14DPJ_.js +2 -0
  161. package/frontend/dist/js/de-ajswyAhq.js +2 -0
  162. package/frontend/dist/js/es-rlf8FsMZ.js +2 -0
  163. package/frontend/dist/js/{evaluationsApi-Bg12ekHo.js → evaluationsApi-KVsH7yXe.js} +1 -1
  164. package/frontend/dist/js/fr-BwkM1wie.js +2 -0
  165. package/frontend/dist/js/hi-B3eId9-I.js +2 -0
  166. package/frontend/dist/js/id-BcgPFJh2.js +2 -0
  167. package/frontend/dist/js/is-Crvd3K7f.js +2 -0
  168. package/frontend/dist/js/it-DrLx24hb.js +2 -0
  169. package/frontend/dist/js/ja-DZMcf-oB.js +2 -0
  170. package/frontend/dist/js/ko-Cm0NiOE8.js +2 -0
  171. package/frontend/dist/js/{messageCodeStyles-DJZ4QMVq.js → messageCodeStyles-CDnMKLgo.js} +1 -1
  172. package/frontend/dist/js/ms-ymaG59hx.js +2 -0
  173. package/frontend/dist/js/nl-CdIdeA9d.js +2 -0
  174. package/frontend/dist/js/pl-CuO0b605.js +2 -0
  175. package/frontend/dist/js/pt-Vy413FG5.js +2 -0
  176. package/frontend/dist/js/ru-D0zOEVrL.js +2 -0
  177. package/frontend/dist/js/strandsApi-SeoX_IsY.js +2 -0
  178. package/frontend/dist/js/sv-JoS4krpk.js +2 -0
  179. package/frontend/dist/js/{teamEventStream-PXiwR5Kr.js → teamEventStream-CZYdpbVw.js} +1 -1
  180. package/frontend/dist/js/th-afhelaqR.js +2 -0
  181. package/frontend/dist/js/tr-BhSy9UrR.js +2 -0
  182. package/frontend/dist/js/{ui-DDMjO5dd.js → ui-CW3gJ4Kl.js} +2 -2
  183. package/frontend/dist/js/ui-vendor-_fvLnmDx.js +1 -0
  184. package/frontend/dist/js/uk-CibXypnZ.js +2 -0
  185. package/frontend/dist/js/{useChat-DaIZ2Dbu.js → useChat-CBySqLqR.js} +4 -4
  186. package/frontend/dist/js/useDialogFocus-DbW0oA9H.js +1 -0
  187. package/frontend/dist/js/useDictation-DEAp64eu.js +1 -0
  188. package/frontend/dist/js/{useTranslation-B9kflK9S.js → useTranslation-UHEMTEHd.js} +1 -1
  189. package/frontend/dist/js/utils-DaXuqmQm.js +1 -0
  190. package/frontend/dist/js/utils-vendor-CvhktdS_.js +1 -0
  191. package/frontend/dist/js/vi-Cg0WKHtb.js +2 -0
  192. package/frontend/dist/js/{work-DmJpVPPO.js → work-CdbmBok5.js} +1 -1
  193. package/frontend/dist/js/{workApi-C3Td_lFD.js → workApi-BqkCbCLQ.js} +1 -1
  194. package/frontend/dist/js/workApi-gpxrWwCm.js +1 -0
  195. package/frontend/dist/js/workModels-BM2Zyiba.js +1 -0
  196. package/frontend/dist/js/zh-DTqys9TE.js +2 -0
  197. package/package.json +10 -39
  198. package/plugins/codex-oauth.json +2 -0
  199. package/backend/dist/cordis/contracts.d.ts +0 -270
  200. package/backend/dist/cordis/contracts.d.ts.map +0 -1
  201. package/backend/dist/cordis/contracts.js +0 -32
  202. package/backend/dist/cordis/contracts.js.map +0 -1
  203. package/backend/dist/cordis/dsh/chat-model.d.ts +0 -16
  204. package/backend/dist/cordis/dsh/chat-model.d.ts.map +0 -1
  205. package/backend/dist/cordis/dsh/chat-model.js +0 -104
  206. package/backend/dist/cordis/dsh/chat-model.js.map +0 -1
  207. package/backend/dist/cordis/dsh/engine-plugin.d.ts +0 -186
  208. package/backend/dist/cordis/dsh/engine-plugin.d.ts.map +0 -1
  209. package/backend/dist/cordis/dsh/engine-plugin.js +0 -1116
  210. package/backend/dist/cordis/dsh/engine-plugin.js.map +0 -1
  211. package/backend/dist/cordis/dsh/librewebui-llm-adapter.d.ts +0 -175
  212. package/backend/dist/cordis/dsh/librewebui-llm-adapter.d.ts.map +0 -1
  213. package/backend/dist/cordis/dsh/librewebui-llm-adapter.js +0 -480
  214. package/backend/dist/cordis/dsh/librewebui-llm-adapter.js.map +0 -1
  215. package/backend/dist/cordis/dsh/model-identity.d.ts +0 -12
  216. package/backend/dist/cordis/dsh/model-identity.d.ts.map +0 -1
  217. package/backend/dist/cordis/dsh/model-identity.js +0 -87
  218. package/backend/dist/cordis/dsh/model-identity.js.map +0 -1
  219. package/backend/dist/cordis/dsh/native-provider-client.d.ts +0 -44
  220. package/backend/dist/cordis/dsh/native-provider-client.d.ts.map +0 -1
  221. package/backend/dist/cordis/dsh/native-provider-client.js +0 -524
  222. package/backend/dist/cordis/dsh/native-provider-client.js.map +0 -1
  223. package/backend/dist/cordis/dsh/native-provider-plugin.d.ts +0 -11
  224. package/backend/dist/cordis/dsh/native-provider-plugin.d.ts.map +0 -1
  225. package/backend/dist/cordis/dsh/native-provider-plugin.js +0 -416
  226. package/backend/dist/cordis/dsh/native-provider-plugin.js.map +0 -1
  227. package/backend/dist/cordis/dsh/native-provider-protocol.d.ts +0 -37
  228. package/backend/dist/cordis/dsh/native-provider-protocol.d.ts.map +0 -1
  229. package/backend/dist/cordis/dsh/native-provider-protocol.js +0 -325
  230. package/backend/dist/cordis/dsh/native-provider-protocol.js.map +0 -1
  231. package/backend/dist/cordis/dsh/provider-handler.d.ts +0 -36
  232. package/backend/dist/cordis/dsh/provider-handler.d.ts.map +0 -1
  233. package/backend/dist/cordis/dsh/provider-handler.js +0 -582
  234. package/backend/dist/cordis/dsh/provider-handler.js.map +0 -1
  235. package/backend/dist/cordis/dsh/session-files.d.ts +0 -9
  236. package/backend/dist/cordis/dsh/session-files.d.ts.map +0 -1
  237. package/backend/dist/cordis/dsh/session-files.js +0 -60
  238. package/backend/dist/cordis/dsh/session-files.js.map +0 -1
  239. package/backend/dist/cordis/dsh/session-settings.d.ts +0 -15
  240. package/backend/dist/cordis/dsh/session-settings.d.ts.map +0 -1
  241. package/backend/dist/cordis/dsh/session-settings.js +0 -51
  242. package/backend/dist/cordis/dsh/session-settings.js.map +0 -1
  243. package/backend/dist/cordis/dsh/work-driver.d.ts +0 -12
  244. package/backend/dist/cordis/dsh/work-driver.d.ts.map +0 -1
  245. package/backend/dist/cordis/dsh/work-driver.js +0 -402
  246. package/backend/dist/cordis/dsh/work-driver.js.map +0 -1
  247. package/backend/dist/cordis/dsh/workspace-policy.d.ts +0 -10
  248. package/backend/dist/cordis/dsh/workspace-policy.d.ts.map +0 -1
  249. package/backend/dist/cordis/dsh/workspace-policy.js +0 -44
  250. package/backend/dist/cordis/dsh/workspace-policy.js.map +0 -1
  251. package/backend/dist/cordis/host/composition.d.ts +0 -73
  252. package/backend/dist/cordis/host/composition.d.ts.map +0 -1
  253. package/backend/dist/cordis/host/composition.js +0 -205
  254. package/backend/dist/cordis/host/composition.js.map +0 -1
  255. package/backend/dist/cordis/host/config.d.ts +0 -159
  256. package/backend/dist/cordis/host/config.d.ts.map +0 -1
  257. package/backend/dist/cordis/host/config.js +0 -184
  258. package/backend/dist/cordis/host/config.js.map +0 -1
  259. package/backend/dist/cordis/host/host.d.ts +0 -74
  260. package/backend/dist/cordis/host/host.d.ts.map +0 -1
  261. package/backend/dist/cordis/host/host.js +0 -420
  262. package/backend/dist/cordis/host/host.js.map +0 -1
  263. package/backend/dist/cordis/host/loader-entry.d.ts +0 -41
  264. package/backend/dist/cordis/host/loader-entry.d.ts.map +0 -1
  265. package/backend/dist/cordis/host/loader-entry.js +0 -52
  266. package/backend/dist/cordis/host/loader-entry.js.map +0 -1
  267. package/backend/dist/cordis/host/model.d.ts +0 -45
  268. package/backend/dist/cordis/host/model.d.ts.map +0 -1
  269. package/backend/dist/cordis/host/model.js +0 -54
  270. package/backend/dist/cordis/host/model.js.map +0 -1
  271. package/backend/dist/cordis/host/privacy.d.ts +0 -8
  272. package/backend/dist/cordis/host/privacy.d.ts.map +0 -1
  273. package/backend/dist/cordis/host/privacy.js +0 -73
  274. package/backend/dist/cordis/host/privacy.js.map +0 -1
  275. package/backend/dist/cordis/index.d.ts +0 -14
  276. package/backend/dist/cordis/index.d.ts.map +0 -1
  277. package/backend/dist/cordis/index.js +0 -30
  278. package/backend/dist/cordis/index.js.map +0 -1
  279. package/backend/dist/cordis/runtime.d.ts +0 -97
  280. package/backend/dist/cordis/runtime.d.ts.map +0 -1
  281. package/backend/dist/cordis/runtime.js +0 -231
  282. package/backend/dist/cordis/runtime.js.map +0 -1
  283. package/backend/dist/cordis/work-model.d.ts +0 -7
  284. package/backend/dist/cordis/work-model.d.ts.map +0 -1
  285. package/backend/dist/cordis/work-model.js.map +0 -1
  286. package/backend/dist/routes/cordis.d.ts.map +0 -1
  287. package/backend/dist/routes/cordis.js +0 -440
  288. package/backend/dist/routes/cordis.js.map +0 -1
  289. package/backend/dist/routes/libreClaw.d.ts +0 -3
  290. package/backend/dist/routes/libreClaw.d.ts.map +0 -1
  291. package/backend/dist/routes/libreClaw.js +0 -200
  292. package/backend/dist/routes/libreClaw.js.map +0 -1
  293. package/backend/dist/services/cordisAccessService.d.ts +0 -56
  294. package/backend/dist/services/cordisAccessService.d.ts.map +0 -1
  295. package/backend/dist/services/cordisAccessService.js +0 -98
  296. package/backend/dist/services/cordisAccessService.js.map +0 -1
  297. package/backend/dist/services/libreClawService.d.ts +0 -105
  298. package/backend/dist/services/libreClawService.d.ts.map +0 -1
  299. package/backend/dist/services/libreClawService.js +0 -169
  300. package/backend/dist/services/libreClawService.js.map +0 -1
  301. package/frontend/dist/assets/index-BrDSO609.js +0 -20
  302. package/frontend/dist/assets/index-C8_AByBq.css +0 -1
  303. package/frontend/dist/js/AutomationModal-BaaxZF1M.js +0 -1
  304. package/frontend/dist/js/AutomationsPage-DY2x7zVm.js +0 -1
  305. package/frontend/dist/js/ChannelsPage-DnQI7mzq.js +0 -1
  306. package/frontend/dist/js/ChatPage-BaDkJnEC.js +0 -14
  307. package/frontend/dist/js/CordisPage-CPiYn2Bx.js +0 -1
  308. package/frontend/dist/js/GalleryPage-ByZyIhZQ.js +0 -1
  309. package/frontend/dist/js/HomePage-Btc-Mvin.js +0 -1
  310. package/frontend/dist/js/LanguageSwitcher-B3CxRW6J.js +0 -1
  311. package/frontend/dist/js/LibreClawPage-3Sonm1gu.js +0 -1
  312. package/frontend/dist/js/NotesPage-lFhfjMqJ.js +0 -3
  313. package/frontend/dist/js/PluginUsagePage-BRbHeRf7.js +0 -1
  314. package/frontend/dist/js/RichMessageContent-oyydJjgc.js +0 -1
  315. package/frontend/dist/js/SettingsModal-VpsAx2Ns.js +0 -19
  316. package/frontend/dist/js/UserManagementPanel-vxpiyiTZ.js +0 -1
  317. package/frontend/dist/js/WorkPage-BYpYD9mr.js +0 -8
  318. package/frontend/dist/js/api-C0ligMmL.js +0 -1
  319. package/frontend/dist/js/api-CVUaOaq4.js +0 -14
  320. package/frontend/dist/js/appStore-Biw63DtJ.js +0 -2
  321. package/frontend/dist/js/appVersion-D78eXAb-.js +0 -1
  322. package/frontend/dist/js/ar-Cq-DrSYL.js +0 -2
  323. package/frontend/dist/js/authStore-2DsDTcIu.js +0 -1
  324. package/frontend/dist/js/bn-BqxLh-KL.js +0 -2
  325. package/frontend/dist/js/chatStore-DQhEqb9F.js +0 -3
  326. package/frontend/dist/js/cordisApi-BYjA4EOQ.js +0 -2
  327. package/frontend/dist/js/cs-D2DDNZf-.js +0 -2
  328. package/frontend/dist/js/da-BciY-TSG.js +0 -2
  329. package/frontend/dist/js/de-DjU_eXQ-.js +0 -2
  330. package/frontend/dist/js/es-ChIEs80I.js +0 -2
  331. package/frontend/dist/js/fr-Bi8BGRW4.js +0 -2
  332. package/frontend/dist/js/hi-BMsCnWg7.js +0 -2
  333. package/frontend/dist/js/i18next-DOICz7ZY.js +0 -1
  334. package/frontend/dist/js/id-CpcN1vhk.js +0 -2
  335. package/frontend/dist/js/is-DkUy2cmP.js +0 -2
  336. package/frontend/dist/js/it-BglK9DRZ.js +0 -2
  337. package/frontend/dist/js/ja-IrprzwLJ.js +0 -2
  338. package/frontend/dist/js/ko--wwEsMPi.js +0 -2
  339. package/frontend/dist/js/ms-BWj59y7-.js +0 -2
  340. package/frontend/dist/js/nl-D-QndW_A.js +0 -2
  341. package/frontend/dist/js/pl-Dw7d7iDV.js +0 -2
  342. package/frontend/dist/js/pt-BI53uHJw.js +0 -2
  343. package/frontend/dist/js/ru-JKyTgPg9.js +0 -2
  344. package/frontend/dist/js/sv-BIkBLPSQ.js +0 -2
  345. package/frontend/dist/js/th-CZ_LcCU0.js +0 -2
  346. package/frontend/dist/js/tr-B265byx1.js +0 -2
  347. package/frontend/dist/js/ui-vendor-BhHHyHk3.js +0 -1
  348. package/frontend/dist/js/uk-VTAlChwf.js +0 -2
  349. package/frontend/dist/js/useDialogFocus-BPTG_Zmy.js +0 -1
  350. package/frontend/dist/js/useDictation-BXyX1U8r.js +0 -1
  351. package/frontend/dist/js/utils-p8Gt72YP.js +0 -1
  352. package/frontend/dist/js/utils-vendor-DISWt2y9.js +0 -1
  353. package/frontend/dist/js/vi-D8rXh-53.js +0 -2
  354. package/frontend/dist/js/workApi-BIS9RxRi.js +0 -1
  355. package/frontend/dist/js/workModels-MzU2Ab7l.js +0 -1
  356. package/frontend/dist/js/zh-BEGd9iBD.js +0 -2
  357. package/scripts/prepare-dsh-provider.mjs +0 -124
@@ -0,0 +1,241 @@
1
+ /*
2
+ * Libre WebUI
3
+ * Copyright (C) 2025 Kroonen AI, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at:
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import pluginService from '../services/pluginService.js';
18
+ import ollamaService from '../services/ollamaService.js';
19
+ import { getOllamaRuntimeSettings } from '../services/ollamaSettingsService.js';
20
+ import preferencesService, { instanceDefaultModel, } from '../services/preferencesService.js';
21
+ import { createLogger } from '../utils/logger.js';
22
+ const logger = createLogger('strands-catalog');
23
+ /** Chat selector for the engine's default model. */
24
+ export const STRANDS_AGENT_ID = 'strands';
25
+ const STRANDS_SELECTOR_PREFIX = `${STRANDS_AGENT_ID}:`;
26
+ export class StrandsModelError extends Error {
27
+ constructor(message) {
28
+ super(message);
29
+ this.name = 'StrandsModelError';
30
+ }
31
+ }
32
+ export function strandsModelRouteId(route) {
33
+ return route.type === 'ollama'
34
+ ? `ollama:${encodeURIComponent(route.model)}`
35
+ : `plugin:${encodeURIComponent(route.pluginId)}:${encodeURIComponent(route.model)}`;
36
+ }
37
+ /** Parse a route id. Returns undefined for a bare model name. */
38
+ export function parseStrandsModelRoute(id) {
39
+ const parts = id.split(':');
40
+ try {
41
+ if (parts[0] === 'ollama' && parts.length === 2 && parts[1]) {
42
+ return { type: 'ollama', model: decodeURIComponent(parts[1]) };
43
+ }
44
+ if (parts[0] === 'plugin' && parts.length === 3 && parts[1] && parts[2]) {
45
+ return {
46
+ type: 'plugin',
47
+ pluginId: decodeURIComponent(parts[1]),
48
+ model: decodeURIComponent(parts[2]),
49
+ };
50
+ }
51
+ }
52
+ catch {
53
+ throw new StrandsModelError('The Strands model route is invalid.');
54
+ }
55
+ if (parts[0] === 'ollama' || parts[0] === 'plugin') {
56
+ throw new StrandsModelError('The Strands model route is invalid.');
57
+ }
58
+ return undefined;
59
+ }
60
+ /**
61
+ * Strip the chat selector prefix. `strands` alone means the engine default;
62
+ * `strands:<route>` pins a model. Anything else is returned as given.
63
+ */
64
+ export function strandsSelectorModel(selector) {
65
+ const value = selector.trim();
66
+ if (value === STRANDS_AGENT_ID)
67
+ return undefined;
68
+ if (value.startsWith(STRANDS_SELECTOR_PREFIX)) {
69
+ const model = value.slice(STRANDS_SELECTOR_PREFIX.length).trim();
70
+ return model || undefined;
71
+ }
72
+ return value || undefined;
73
+ }
74
+ function isEmbeddingModel(id) {
75
+ const name = id.toLowerCase();
76
+ return (name.includes('embed') ||
77
+ name.includes('minilm') ||
78
+ name.includes('bge-') ||
79
+ name.includes('rerank'));
80
+ }
81
+ function isChatModelId(id) {
82
+ return (typeof id === 'string' &&
83
+ id.trim().length > 0 &&
84
+ id.length <= 512 &&
85
+ // eslint-disable-next-line no-control-regex
86
+ !/[\u0000-\u001f\u007f]/.test(id) &&
87
+ !id.startsWith('persona:') &&
88
+ !id.startsWith(STRANDS_SELECTOR_PREFIX) &&
89
+ !isEmbeddingModel(id));
90
+ }
91
+ async function requirePluginRoute(route, userId) {
92
+ let plugin;
93
+ try {
94
+ plugin = await pluginService.getActivePluginForModel(route.model, userId, route.pluginId);
95
+ }
96
+ catch {
97
+ plugin = null;
98
+ }
99
+ if (!plugin || (plugin.type !== 'chat' && plugin.type !== 'completion')) {
100
+ throw new StrandsModelError('The selected Strands provider is unavailable.');
101
+ }
102
+ return plugin;
103
+ }
104
+ async function requireOllamaEnabled() {
105
+ if (!(await getOllamaRuntimeSettings()).enabled) {
106
+ throw new StrandsModelError('Ollama is disabled. Choose a plugin model for the Strands engine.');
107
+ }
108
+ }
109
+ /** Every chat model the engine may drive for this account. */
110
+ export async function listStrandsModels(userId) {
111
+ const models = new Map();
112
+ try {
113
+ const local = (await getOllamaRuntimeSettings()).enabled
114
+ ? await ollamaService.getModels()
115
+ : [];
116
+ for (const model of local) {
117
+ if (!isChatModelId(model.name))
118
+ continue;
119
+ const id = strandsModelRouteId({ type: 'ollama', model: model.name });
120
+ models.set(id, {
121
+ id,
122
+ name: model.name,
123
+ providerType: 'ollama',
124
+ providerId: null,
125
+ providerName: 'Ollama',
126
+ });
127
+ }
128
+ }
129
+ catch (error) {
130
+ logger.debug('Ollama models are unavailable to the Strands engine', {
131
+ error,
132
+ });
133
+ }
134
+ try {
135
+ const statuses = await pluginService.getPluginStatus(userId);
136
+ for (const plugin of await pluginService.getActivePlugins(userId)) {
137
+ if ((plugin.type !== 'completion' && plugin.type !== 'chat') ||
138
+ !statuses.some(status => status.id === plugin.id && status.available)) {
139
+ continue;
140
+ }
141
+ for (const model of plugin.model_map) {
142
+ if (!isChatModelId(model))
143
+ continue;
144
+ const id = strandsModelRouteId({
145
+ type: 'plugin',
146
+ model,
147
+ pluginId: plugin.id,
148
+ });
149
+ models.set(id, {
150
+ id,
151
+ name: model,
152
+ providerType: 'plugin',
153
+ providerId: plugin.id,
154
+ providerName: plugin.name,
155
+ });
156
+ }
157
+ }
158
+ }
159
+ catch (error) {
160
+ logger.debug('Plugin models are unavailable to the Strands engine', {
161
+ error,
162
+ });
163
+ }
164
+ return [...models.values()];
165
+ }
166
+ /**
167
+ * Resolve a model selection to a concrete provider route. Accepts a route id,
168
+ * a chat selector (`strands`, `strands:<route>`), a bare model name, or
169
+ * nothing, in which case the account's default chat model is used.
170
+ */
171
+ export async function resolveStrandsRoute(requested, userId) {
172
+ const selected = requested ? strandsSelectorModel(requested) : undefined;
173
+ const preferences = await preferencesService
174
+ .getPreferences(userId)
175
+ .catch(() => undefined);
176
+ const model = selected ??
177
+ (preferences?.defaultProviderType === 'agent'
178
+ ? undefined
179
+ : preferences?.defaultModel || instanceDefaultModel() || undefined);
180
+ if (model) {
181
+ const qualified = parseStrandsModelRoute(model);
182
+ if (qualified) {
183
+ if (!isChatModelId(qualified.model)) {
184
+ throw new StrandsModelError('Choose a chat model for Strands.');
185
+ }
186
+ if (qualified.type === 'plugin') {
187
+ const plugin = await requirePluginRoute(qualified, userId);
188
+ return { id: strandsModelRouteId(qualified), route: qualified, plugin };
189
+ }
190
+ await requireOllamaEnabled();
191
+ return { id: strandsModelRouteId(qualified), route: qualified };
192
+ }
193
+ if (!isChatModelId(model)) {
194
+ throw new StrandsModelError('Choose a provider chat model for Strands; personas and agent selectors cannot be used.');
195
+ }
196
+ const preferred = preferences?.defaultModel === model;
197
+ if (preferred &&
198
+ preferences?.defaultProviderType === 'plugin' &&
199
+ preferences.defaultProviderId) {
200
+ const route = {
201
+ type: 'plugin',
202
+ model,
203
+ pluginId: preferences.defaultProviderId,
204
+ };
205
+ const plugin = await requirePluginRoute(route, userId);
206
+ return { id: strandsModelRouteId(route), route, plugin };
207
+ }
208
+ const ollamaEnabled = (await getOllamaRuntimeSettings()).enabled;
209
+ if (ollamaEnabled) {
210
+ const local = await ollamaService.getModels().catch(() => []);
211
+ if ((preferred && preferences?.defaultProviderType === 'ollama') ||
212
+ local.some(candidate => candidate.name === model)) {
213
+ const route = { type: 'ollama', model };
214
+ return { id: strandsModelRouteId(route), route };
215
+ }
216
+ }
217
+ const plugin = await pluginService
218
+ .getActivePluginForModel(model, userId)
219
+ .catch(() => null);
220
+ if (plugin && (plugin.type === 'chat' || plugin.type === 'completion')) {
221
+ const route = { type: 'plugin', model, pluginId: plugin.id };
222
+ return { id: strandsModelRouteId(route), route, plugin };
223
+ }
224
+ if (selected) {
225
+ throw new StrandsModelError(`The model "${model}" is not available to the Strands engine.`);
226
+ }
227
+ }
228
+ const first = (await listStrandsModels(userId))[0];
229
+ if (!first) {
230
+ throw new StrandsModelError('No chat model is available to the Strands engine. Enable Ollama or a chat plugin first.');
231
+ }
232
+ return resolveStrandsRoute(first.id, userId);
233
+ }
234
+ /** Plain text target for titles and summaries, with no agent loop. */
235
+ export async function resolveStrandsProviderTarget(requested, userId) {
236
+ const { route } = await resolveStrandsRoute(requested, userId);
237
+ return route.type === 'plugin'
238
+ ? { model: route.model, providerType: 'plugin', providerId: route.pluginId }
239
+ : { model: route.model, providerType: 'ollama', providerId: null };
240
+ }
241
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/strands/catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,131 @@
1
+ import type { Agent, MessageData } from '@strands-agents/sdk';
2
+ import type { ChatMessage } from '../types/index.js';
3
+ import { type ResolvedStrandsRoute } from './catalog.js';
4
+ export declare const STRANDS_MAX_TURNS = 24;
5
+ export declare const STRANDS_MAX_SESSIONS_PER_USER = 200;
6
+ export declare const STRANDS_MAX_PROMPT_CHARS = 32000;
7
+ export declare const STRANDS_INSTRUCTIONS = "You are the Strands agent inside Libre WebUI.\nYou have a private workspace at /workspace. File tools take absolute paths under /workspace; nothing outside it exists for you.\nYou cannot run shell commands or reach the network. Plan multi-step work with the todo tool, keep answers concise, and say plainly when something is outside what you can do.";
8
+ export type StrandsTurnEvent = {
9
+ type: 'turn-start';
10
+ sessionId: string;
11
+ messageId: string;
12
+ } | {
13
+ type: 'text';
14
+ text: string;
15
+ } | {
16
+ type: 'reasoning';
17
+ text: string;
18
+ } | {
19
+ type: 'tool-start';
20
+ toolUseId: string;
21
+ name: string;
22
+ input: unknown;
23
+ } | {
24
+ type: 'tool-result';
25
+ toolUseId: string;
26
+ status: 'success' | 'error';
27
+ output: string;
28
+ } | {
29
+ type: 'done';
30
+ stopReason: string;
31
+ usage?: {
32
+ inputTokens: number;
33
+ outputTokens: number;
34
+ };
35
+ } | {
36
+ type: 'error';
37
+ message: string;
38
+ };
39
+ export interface StrandsToolTrace {
40
+ id: string;
41
+ name: string;
42
+ input: unknown;
43
+ status?: 'success' | 'error';
44
+ output?: string;
45
+ }
46
+ export interface StrandsTranscriptEntry {
47
+ id: string;
48
+ role: 'user' | 'assistant';
49
+ content: string;
50
+ thinking?: string;
51
+ tools?: StrandsToolTrace[];
52
+ stopReason?: string;
53
+ error?: string;
54
+ createdAt: number;
55
+ }
56
+ export interface StrandsSessionSummary {
57
+ id: string;
58
+ title: string;
59
+ model: string | null;
60
+ createdAt: number;
61
+ updatedAt: number;
62
+ messageCount: number;
63
+ }
64
+ export declare class StrandsEngineError extends Error {
65
+ readonly status: number;
66
+ constructor(message: string, status?: number);
67
+ }
68
+ export declare function strandsDataDirectory(): string;
69
+ interface AgentOptions {
70
+ userId: string;
71
+ target: ResolvedStrandsRoute;
72
+ workspace: string;
73
+ session?: {
74
+ id: string;
75
+ dir: string;
76
+ };
77
+ messages?: MessageData[];
78
+ instructions?: string;
79
+ }
80
+ /** Build a harness agent with Libre WebUI's locked-down defaults. */
81
+ export declare function createStrandsAgent(options: AgentOptions): Promise<Agent>;
82
+ /**
83
+ * Run one agent invocation and translate the Strands stream into the
84
+ * engine's event vocabulary. Returns the stop reason.
85
+ */
86
+ export declare function streamAgentTurn(agent: Agent, prompt: string, signal?: AbortSignal): AsyncGenerator<StrandsTurnEvent, void, undefined>;
87
+ /** Fold engine events into a transcript entry as they stream. */
88
+ export declare function applyTurnEvent(entry: StrandsTranscriptEntry, event: StrandsTurnEvent): void;
89
+ export declare class StrandsEngine {
90
+ private readonly agents;
91
+ private readonly active;
92
+ private readonly locks;
93
+ /** Serialize registry writes per account. */
94
+ private withUserLock;
95
+ private registryFile;
96
+ private transcriptFile;
97
+ private workspaceDirectory;
98
+ private snapshotDirectory;
99
+ private registry;
100
+ listSessions(userId: string): Promise<StrandsSessionSummary[]>;
101
+ getSession(userId: string, sessionId: string): Promise<StrandsSessionSummary>;
102
+ createSession(userId: string, input?: {
103
+ title?: string;
104
+ model?: string | null;
105
+ }): Promise<StrandsSessionSummary>;
106
+ updateSession(userId: string, sessionId: string, input: {
107
+ title?: string;
108
+ model?: string | null;
109
+ }): Promise<StrandsSessionSummary>;
110
+ deleteSession(userId: string, sessionId: string): Promise<void>;
111
+ transcript(userId: string, sessionId: string): Promise<StrandsTranscriptEntry[]>;
112
+ isRunning(userId: string, sessionId: string): boolean;
113
+ cancel(userId: string, sessionId: string): boolean;
114
+ private evictIdle;
115
+ private sessionAgent;
116
+ /** Send one message to a session and stream the turn. */
117
+ sendMessage(userId: string, sessionId: string, text: string, signal?: AbortSignal): AsyncGenerator<StrandsTurnEvent, void, undefined>;
118
+ /**
119
+ * One Chat turn. Chat owns its transcript, so the agent is rebuilt from it
120
+ * each time with no snapshot, and files land in a per-account scratch
121
+ * workspace.
122
+ */
123
+ chatTurn(userId: string, messages: readonly ChatMessage[], options?: {
124
+ model?: string;
125
+ signal?: AbortSignal;
126
+ }): AsyncGenerator<StrandsTurnEvent, void, undefined>;
127
+ stop(): Promise<void>;
128
+ }
129
+ export declare const strandsEngine: StrandsEngine;
130
+ export {};
131
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/strands/engine.ts"],"names":[],"mappings":"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"}