libre-webui 0.36.0 → 0.37.1
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.
- package/README.md +59 -0
- package/backend/dist/cordis/contracts.d.ts +270 -0
- package/backend/dist/cordis/contracts.d.ts.map +1 -0
- package/backend/dist/cordis/contracts.js +32 -0
- package/backend/dist/cordis/contracts.js.map +1 -0
- package/backend/dist/cordis/dsh/chat-model.d.ts +16 -0
- package/backend/dist/cordis/dsh/chat-model.d.ts.map +1 -0
- package/backend/dist/cordis/dsh/chat-model.js +104 -0
- package/backend/dist/cordis/dsh/chat-model.js.map +1 -0
- package/backend/dist/cordis/dsh/engine-plugin.d.ts +186 -0
- package/backend/dist/cordis/dsh/engine-plugin.d.ts.map +1 -0
- package/backend/dist/cordis/dsh/engine-plugin.js +1116 -0
- package/backend/dist/cordis/dsh/engine-plugin.js.map +1 -0
- package/backend/dist/cordis/dsh/librewebui-llm-adapter.d.ts +175 -0
- package/backend/dist/cordis/dsh/librewebui-llm-adapter.d.ts.map +1 -0
- package/backend/dist/cordis/dsh/librewebui-llm-adapter.js +480 -0
- package/backend/dist/cordis/dsh/librewebui-llm-adapter.js.map +1 -0
- package/backend/dist/cordis/dsh/model-identity.d.ts +12 -0
- package/backend/dist/cordis/dsh/model-identity.d.ts.map +1 -0
- package/backend/dist/cordis/dsh/model-identity.js +87 -0
- package/backend/dist/cordis/dsh/model-identity.js.map +1 -0
- package/backend/dist/cordis/dsh/native-provider-client.d.ts +44 -0
- package/backend/dist/cordis/dsh/native-provider-client.d.ts.map +1 -0
- package/backend/dist/cordis/dsh/native-provider-client.js +524 -0
- package/backend/dist/cordis/dsh/native-provider-client.js.map +1 -0
- package/backend/dist/cordis/dsh/native-provider-plugin.d.ts +11 -0
- package/backend/dist/cordis/dsh/native-provider-plugin.d.ts.map +1 -0
- package/backend/dist/cordis/dsh/native-provider-plugin.js +416 -0
- package/backend/dist/cordis/dsh/native-provider-plugin.js.map +1 -0
- package/backend/dist/cordis/dsh/native-provider-protocol.d.ts +37 -0
- package/backend/dist/cordis/dsh/native-provider-protocol.d.ts.map +1 -0
- package/backend/dist/cordis/dsh/native-provider-protocol.js +325 -0
- package/backend/dist/cordis/dsh/native-provider-protocol.js.map +1 -0
- package/backend/dist/cordis/dsh/provider-handler.d.ts +36 -0
- package/backend/dist/cordis/dsh/provider-handler.d.ts.map +1 -0
- package/backend/dist/cordis/dsh/provider-handler.js +582 -0
- package/backend/dist/cordis/dsh/provider-handler.js.map +1 -0
- package/backend/dist/cordis/dsh/session-files.d.ts +9 -0
- package/backend/dist/cordis/dsh/session-files.d.ts.map +1 -0
- package/backend/dist/cordis/dsh/session-files.js +60 -0
- package/backend/dist/cordis/dsh/session-files.js.map +1 -0
- package/backend/dist/cordis/dsh/session-settings.d.ts +15 -0
- package/backend/dist/cordis/dsh/session-settings.d.ts.map +1 -0
- package/backend/dist/cordis/dsh/session-settings.js +51 -0
- package/backend/dist/cordis/dsh/session-settings.js.map +1 -0
- package/backend/dist/cordis/dsh/work-driver.d.ts +12 -0
- package/backend/dist/cordis/dsh/work-driver.d.ts.map +1 -0
- package/backend/dist/cordis/dsh/work-driver.js +402 -0
- package/backend/dist/cordis/dsh/work-driver.js.map +1 -0
- package/backend/dist/cordis/dsh/workspace-policy.d.ts +10 -0
- package/backend/dist/cordis/dsh/workspace-policy.d.ts.map +1 -0
- package/backend/dist/cordis/dsh/workspace-policy.js +44 -0
- package/backend/dist/cordis/dsh/workspace-policy.js.map +1 -0
- package/backend/dist/cordis/host/composition.d.ts +73 -0
- package/backend/dist/cordis/host/composition.d.ts.map +1 -0
- package/backend/dist/cordis/host/composition.js +205 -0
- package/backend/dist/cordis/host/composition.js.map +1 -0
- package/backend/dist/cordis/host/config.d.ts +159 -0
- package/backend/dist/cordis/host/config.d.ts.map +1 -0
- package/backend/dist/cordis/host/config.js +184 -0
- package/backend/dist/cordis/host/config.js.map +1 -0
- package/backend/dist/cordis/host/host.d.ts +74 -0
- package/backend/dist/cordis/host/host.d.ts.map +1 -0
- package/backend/dist/cordis/host/host.js +420 -0
- package/backend/dist/cordis/host/host.js.map +1 -0
- package/backend/dist/cordis/host/loader-entry.d.ts +41 -0
- package/backend/dist/cordis/host/loader-entry.d.ts.map +1 -0
- package/backend/dist/cordis/host/loader-entry.js +52 -0
- package/backend/dist/cordis/host/loader-entry.js.map +1 -0
- package/backend/dist/cordis/host/model.d.ts +45 -0
- package/backend/dist/cordis/host/model.d.ts.map +1 -0
- package/backend/dist/cordis/host/model.js +54 -0
- package/backend/dist/cordis/host/model.js.map +1 -0
- package/backend/dist/cordis/host/privacy.d.ts +8 -0
- package/backend/dist/cordis/host/privacy.d.ts.map +1 -0
- package/backend/dist/cordis/host/privacy.js +73 -0
- package/backend/dist/cordis/host/privacy.js.map +1 -0
- package/backend/dist/cordis/index.d.ts +14 -0
- package/backend/dist/cordis/index.d.ts.map +1 -0
- package/backend/dist/cordis/index.js +30 -0
- package/backend/dist/cordis/index.js.map +1 -0
- package/backend/dist/cordis/runtime.d.ts +97 -0
- package/backend/dist/cordis/runtime.d.ts.map +1 -0
- package/backend/dist/cordis/runtime.js +231 -0
- package/backend/dist/cordis/runtime.js.map +1 -0
- package/backend/dist/cordis/work-model.d.ts +7 -0
- package/backend/dist/cordis/work-model.d.ts.map +1 -0
- package/backend/dist/cordis/work-model.js +30 -0
- package/backend/dist/cordis/work-model.js.map +1 -0
- package/backend/dist/db.js +1 -1
- package/backend/dist/index.d.ts.map +1 -1
- package/backend/dist/index.js +9 -0
- package/backend/dist/index.js.map +1 -1
- package/backend/dist/main.js +12 -0
- package/backend/dist/main.js.map +1 -1
- package/backend/dist/persistence/extensionTypes.d.ts +2 -0
- package/backend/dist/persistence/extensionTypes.d.ts.map +1 -1
- package/backend/dist/persistence/extensionTypes.js.map +1 -1
- package/backend/dist/persistence/postgresExtensionRepositories.d.ts.map +1 -1
- package/backend/dist/persistence/postgresExtensionRepositories.js +38 -0
- package/backend/dist/persistence/postgresExtensionRepositories.js.map +1 -1
- package/backend/dist/persistence/postgresResourceRepositories.d.ts.map +1 -1
- package/backend/dist/persistence/postgresResourceRepositories.js +6 -1
- package/backend/dist/persistence/postgresResourceRepositories.js.map +1 -1
- package/backend/dist/persistence/resourceTypes.d.ts +3 -1
- package/backend/dist/persistence/resourceTypes.d.ts.map +1 -1
- package/backend/dist/persistence/resourceTypes.js.map +1 -1
- package/backend/dist/persistence/sqliteExtensionRepositories.d.ts.map +1 -1
- package/backend/dist/persistence/sqliteExtensionRepositories.js +40 -0
- package/backend/dist/persistence/sqliteExtensionRepositories.js.map +1 -1
- package/backend/dist/persistence/sqliteResourceRepositories.d.ts.map +1 -1
- package/backend/dist/persistence/sqliteResourceRepositories.js +7 -1
- package/backend/dist/persistence/sqliteResourceRepositories.js.map +1 -1
- package/backend/dist/routes/agentCli.d.ts.map +1 -1
- package/backend/dist/routes/agentCli.js +34 -2
- package/backend/dist/routes/agentCli.js.map +1 -1
- package/backend/dist/routes/chat.d.ts.map +1 -1
- package/backend/dist/routes/chat.js +9 -1
- package/backend/dist/routes/chat.js.map +1 -1
- package/backend/dist/routes/cordis.d.ts +3 -0
- package/backend/dist/routes/cordis.d.ts.map +1 -0
- package/backend/dist/routes/cordis.js +440 -0
- package/backend/dist/routes/cordis.js.map +1 -0
- package/backend/dist/routes/libreClaw.js +1 -1
- package/backend/dist/routes/libreClaw.js.map +1 -1
- package/backend/dist/routes/work.d.ts.map +1 -1
- package/backend/dist/routes/work.js +23 -8
- package/backend/dist/routes/work.js.map +1 -1
- package/backend/dist/services/agentAccessService.d.ts +4 -0
- package/backend/dist/services/agentAccessService.d.ts.map +1 -1
- package/backend/dist/services/agentAccessService.js +48 -16
- package/backend/dist/services/agentAccessService.js.map +1 -1
- package/backend/dist/services/agentCliService.d.ts +42 -1
- package/backend/dist/services/agentCliService.d.ts.map +1 -1
- package/backend/dist/services/agentCliService.js +206 -7
- package/backend/dist/services/agentCliService.js.map +1 -1
- package/backend/dist/services/agentCliUsage.d.ts +22 -0
- package/backend/dist/services/agentCliUsage.d.ts.map +1 -0
- package/backend/dist/services/agentCliUsage.js +192 -0
- package/backend/dist/services/agentCliUsage.js.map +1 -0
- package/backend/dist/services/authService.d.ts +3 -0
- package/backend/dist/services/authService.d.ts.map +1 -1
- package/backend/dist/services/authService.js +4 -1
- package/backend/dist/services/authService.js.map +1 -1
- package/backend/dist/services/chatGenerationService.d.ts +7 -0
- package/backend/dist/services/chatGenerationService.d.ts.map +1 -1
- package/backend/dist/services/chatGenerationService.js +32 -1
- package/backend/dist/services/chatGenerationService.js.map +1 -1
- package/backend/dist/services/cordisAccessService.d.ts +56 -0
- package/backend/dist/services/cordisAccessService.d.ts.map +1 -0
- package/backend/dist/services/cordisAccessService.js +98 -0
- package/backend/dist/services/cordisAccessService.js.map +1 -0
- package/backend/dist/services/durableChatGenerationService.d.ts.map +1 -1
- package/backend/dist/services/durableChatGenerationService.js +9 -1
- package/backend/dist/services/durableChatGenerationService.js.map +1 -1
- package/backend/dist/services/emailService.d.ts.map +1 -1
- package/backend/dist/services/emailService.js +8 -1
- package/backend/dist/services/emailService.js.map +1 -1
- package/backend/dist/services/pluginService.d.ts.map +1 -1
- package/backend/dist/services/pluginService.js +7 -26
- package/backend/dist/services/pluginService.js.map +1 -1
- package/backend/dist/services/pluginUsageService.d.ts +52 -0
- package/backend/dist/services/pluginUsageService.d.ts.map +1 -1
- package/backend/dist/services/pluginUsageService.js +89 -1
- package/backend/dist/services/pluginUsageService.js.map +1 -1
- package/backend/dist/services/systemSettingsService.d.ts +1 -1
- package/backend/dist/services/systemSettingsService.d.ts.map +1 -1
- package/backend/dist/services/systemSettingsService.js +1 -1
- package/backend/dist/services/systemSettingsService.js.map +1 -1
- package/backend/dist/services/thinkingSummaryService.d.ts +3 -0
- package/backend/dist/services/thinkingSummaryService.d.ts.map +1 -1
- package/backend/dist/services/thinkingSummaryService.js +56 -17
- package/backend/dist/services/thinkingSummaryService.js.map +1 -1
- package/backend/dist/services/titleGenerationService.d.ts +22 -2
- package/backend/dist/services/titleGenerationService.d.ts.map +1 -1
- package/backend/dist/services/titleGenerationService.js +63 -8
- package/backend/dist/services/titleGenerationService.js.map +1 -1
- package/backend/dist/services/workAgentService.d.ts +1 -1
- package/backend/dist/services/workAgentService.d.ts.map +1 -1
- package/backend/dist/services/workAgentService.js +76 -12
- package/backend/dist/services/workAgentService.js.map +1 -1
- package/backend/dist/services/workModelProviderService.d.ts +5 -0
- package/backend/dist/services/workModelProviderService.d.ts.map +1 -1
- package/backend/dist/services/workModelProviderService.js +52 -3
- package/backend/dist/services/workModelProviderService.js.map +1 -1
- package/backend/dist/services/workRuntimeService.d.ts.map +1 -1
- package/backend/dist/services/workRuntimeService.js +4 -1
- package/backend/dist/services/workRuntimeService.js.map +1 -1
- package/backend/dist/services/workTaskService.d.ts.map +1 -1
- package/backend/dist/services/workTaskService.js +6 -6
- package/backend/dist/services/workTaskService.js.map +1 -1
- package/backend/dist/types/work.d.ts +12 -1
- package/backend/dist/types/work.d.ts.map +1 -1
- package/backend/dist/utils/pluginStreamAdapter.d.ts.map +1 -1
- package/backend/dist/utils/pluginStreamAdapter.js +18 -4
- package/backend/dist/utils/pluginStreamAdapter.js.map +1 -1
- package/backend/dist/utils/pluginStreaming.d.ts +6 -0
- package/backend/dist/utils/pluginStreaming.d.ts.map +1 -1
- package/backend/dist/utils/pluginStreaming.js +10 -0
- package/backend/dist/utils/pluginStreaming.js.map +1 -1
- package/backend/dist/utils/smtpClient.d.ts +5 -1
- package/backend/dist/utils/smtpClient.d.ts.map +1 -1
- package/backend/dist/utils/smtpClient.js +29 -3
- package/backend/dist/utils/smtpClient.js.map +1 -1
- package/backend/dist/websocketServer.d.ts.map +1 -1
- package/backend/dist/websocketServer.js +4 -0
- package/backend/dist/websocketServer.js.map +1 -1
- package/backend/package.json +37 -2
- package/frontend/dist/artifact-runtime/.build-fingerprint +1 -1
- package/frontend/dist/artifact-runtime/framer-motion.js +3 -3
- package/frontend/dist/artifact-runtime/lucide-react.js +1 -1
- package/frontend/dist/artifact-runtime/react.js +5 -5
- package/frontend/dist/artifact-runtime/recharts.js +45 -45
- package/frontend/dist/assets/index-BrDSO609.js +20 -0
- package/frontend/dist/assets/index-C8_AByBq.css +1 -0
- package/frontend/dist/index.html +33 -31
- package/frontend/dist/js/{ArtifactContainer-B8tyPtWd.js → ArtifactContainer-B1-GVzVf.js} +1 -1
- package/frontend/dist/js/{ArtifactDemoPage-BwRfWoSK.js → ArtifactDemoPage-goftRHdk.js} +1 -1
- package/frontend/dist/js/{ArtifactSandboxFrame-Ctcwt_l2.js → ArtifactSandboxFrame-_8RA8_JV.js} +1 -1
- package/frontend/dist/js/ArtifactSlideOutPanel-DlkOZI5N.js +1 -0
- package/frontend/dist/js/{AutomationModal-mTYs9LrJ.js → AutomationModal-BaaxZF1M.js} +1 -1
- package/frontend/dist/js/AutomationsPage-DY2x7zVm.js +1 -0
- package/frontend/dist/js/{AvatarUpload-wWUAi3e2.js → AvatarUpload-CH_n1Ef0.js} +1 -1
- package/frontend/dist/js/{Button-ZQ6BePid.js → Button-CGMYia4g.js} +1 -1
- package/frontend/dist/js/{CalendarPage-Ch4racU2.js → CalendarPage-DLo5nm3Q.js} +1 -1
- package/frontend/dist/js/ChannelsPage-DnQI7mzq.js +1 -0
- package/frontend/dist/js/ChatPage-BaDkJnEC.js +14 -0
- package/frontend/dist/js/ConnectModels-B4dGb5yc.js +1 -0
- package/frontend/dist/js/CordisPage-CPiYn2Bx.js +1 -0
- package/frontend/dist/js/{EvaluationsPage-DHPnNBkW.js → EvaluationsPage-DpdGpd7x.js} +2 -2
- package/frontend/dist/js/{FirstTimeSetup-CoF83yY8.js → FirstTimeSetup-By8OE1JS.js} +1 -1
- package/frontend/dist/js/GalleryPage-ByZyIhZQ.js +1 -0
- package/frontend/dist/js/HomePage-Btc-Mvin.js +1 -0
- package/frontend/dist/js/{LanguageSwitcher-CogfczNm.js → LanguageSwitcher-B3CxRW6J.js} +1 -1
- package/frontend/dist/js/LibreClawPage-3Sonm1gu.js +1 -0
- package/frontend/dist/js/{Logo-C9fsEUaY.js → Logo-HZvdAk2c.js} +1 -1
- package/frontend/dist/js/{LogoMark-Cvu5CQOW.js → LogoMark-GJnfMXsk.js} +1 -1
- package/frontend/dist/js/{ModelManagerModals-Bc2Woor7.js → ModelManagerModals-Bk6OQzJI.js} +1 -1
- package/frontend/dist/js/NotesPage-lFhfjMqJ.js +3 -0
- package/frontend/dist/js/{OptimizedSyntaxHighlighter-aKWyHj_c.js → OptimizedSyntaxHighlighter-CzzV6ONG.js} +1 -1
- package/frontend/dist/js/OptimizedSyntaxHighlighter-ajqwyBQm.js +1 -0
- package/frontend/dist/js/{PasswordStrengthMeter-BJr4eBbo.js → PasswordStrengthMeter-DasfJa4P.js} +1 -1
- package/frontend/dist/js/{PersonasPage-ff5opf9B.js → PersonasPage-nOThOpXp.js} +2 -2
- package/frontend/dist/js/PluginUsagePage-BRbHeRf7.js +1 -0
- package/frontend/dist/js/{RichMessageContent-BNNylVAb.js → RichMessageContent-BZ7KKJKK.js} +2 -2
- package/frontend/dist/js/RichMessageContent-oyydJjgc.js +1 -0
- package/frontend/dist/js/SettingsModal-VpsAx2Ns.js +19 -0
- package/frontend/dist/js/{SettingsToggle-CKLHOUt-.js → SettingsToggle-oxvw7ulA.js} +1 -1
- package/frontend/dist/js/{ShareDialog-DykD70uB.js → ShareDialog-CnxPGPb_.js} +1 -1
- package/frontend/dist/js/SystemPage-D2ikvhDp.js +1 -0
- package/frontend/dist/js/{TurnstileWidget-BO2ceTt8.js → TurnstileWidget-CVepEMEQ.js} +1 -1
- package/frontend/dist/js/{UserManagementPage-Ch-PvYQ9.js → UserManagementPage-2yHv89ZA.js} +1 -1
- package/frontend/dist/js/UserManagementPanel-vxpiyiTZ.js +1 -0
- package/frontend/dist/js/{WhatsNewModal-Bu4H4MEb.js → WhatsNewModal-DAAFzY0d.js} +1 -1
- package/frontend/dist/js/WorkPage-BYpYD9mr.js +8 -0
- package/frontend/dist/js/api-C0ligMmL.js +1 -0
- package/frontend/dist/js/api-CVUaOaq4.js +14 -0
- package/frontend/dist/js/{appNavigation-CVsQuDI1.js → appNavigation-CqtrZ9bm.js} +1 -1
- package/frontend/dist/js/{appStore-Din-tTD9.js → appStore-Biw63DtJ.js} +2 -2
- package/frontend/dist/js/appVersion-D78eXAb-.js +1 -0
- package/frontend/dist/js/ar-Cq-DrSYL.js +2 -0
- package/frontend/dist/js/authStore-2DsDTcIu.js +1 -0
- package/frontend/dist/js/{authStore-Cm8P6rYs.js → authStore-C5qKrmn4.js} +3 -3
- package/frontend/dist/js/bn-BqxLh-KL.js +2 -0
- package/frontend/dist/js/chatStore-DQhEqb9F.js +3 -0
- package/frontend/dist/js/client-gf5bjBrn.js +2 -0
- package/frontend/dist/js/composerStyles-C83jssgZ.js +1 -0
- package/frontend/dist/js/{config-DHea4b8N.js → config-CNvgxwAm.js} +1 -1
- package/frontend/dist/js/cordisApi-BYjA4EOQ.js +2 -0
- package/frontend/dist/js/cs-D2DDNZf-.js +2 -0
- package/frontend/dist/js/da-BciY-TSG.js +2 -0
- package/frontend/dist/js/de-DjU_eXQ-.js +2 -0
- package/frontend/dist/js/es-ChIEs80I.js +2 -0
- package/frontend/dist/js/{estree-DCT3Jm65.js → estree-DGmLqopC.js} +17 -17
- package/frontend/dist/js/evaluationsApi-Bg12ekHo.js +1 -0
- package/frontend/dist/js/fr-Bi8BGRW4.js +2 -0
- package/frontend/dist/js/hi-BMsCnWg7.js +2 -0
- package/frontend/dist/js/{html-CBXMuS97.js → html-BryNQ_yx.js} +6 -6
- package/frontend/dist/js/id-CpcN1vhk.js +2 -0
- package/frontend/dist/js/is-DkUy2cmP.js +2 -0
- package/frontend/dist/js/it-BglK9DRZ.js +2 -0
- package/frontend/dist/js/ja-IrprzwLJ.js +2 -0
- package/frontend/dist/js/ko--wwEsMPi.js +2 -0
- package/frontend/dist/js/{markdown-Bo71X2X2.js → markdown-CZ1tYEW8.js} +17 -17
- package/frontend/dist/js/{markdown-core-BFkBYv2v.js → markdown-core-KjS96SYW.js} +1 -1
- package/frontend/dist/js/{markdown-html-CwjnwJbl.js → markdown-html-DQEwrWcf.js} +1 -1
- package/frontend/dist/js/{markdown-math-CJvHdD1l.js → markdown-math-CKi32S5d.js} +1 -1
- package/frontend/dist/js/{markdownHtml-egpK3_YY.js → markdownHtml-lrXhxBhK.js} +1 -1
- package/frontend/dist/js/markdownMath-B0BpyFBS.js +1 -0
- package/frontend/dist/js/{messageCodeStyles-euWoxwoo.js → messageCodeStyles-DJZ4QMVq.js} +2 -2
- package/frontend/dist/js/ms-BWj59y7-.js +2 -0
- package/frontend/dist/js/nl-D-QndW_A.js +2 -0
- package/frontend/dist/js/pl-Dw7d7iDV.js +2 -0
- package/frontend/dist/js/pt-BI53uHJw.js +2 -0
- package/frontend/dist/js/react-vendor-wiHys0m2.js +9 -0
- package/frontend/dist/js/router-vendor-HZm4FR0A.js +1 -0
- package/frontend/dist/js/ru-JKyTgPg9.js +2 -0
- package/frontend/dist/js/{standalone-6z5x8CWe.js → standalone-DbyFjvTU.js} +1 -1
- package/frontend/dist/js/sv-BIkBLPSQ.js +2 -0
- package/frontend/dist/js/{syntax-highlight-7t8DGG2n.js → syntax-highlight-DNc3FFCa.js} +1 -1
- package/frontend/dist/js/{teamEventStream-DGgjrVqw.js → teamEventStream-PXiwR5Kr.js} +1 -1
- package/frontend/dist/js/th-CZ_LcCU0.js +2 -0
- package/frontend/dist/js/tr-B265byx1.js +2 -0
- package/frontend/dist/js/{typescript-CslHIgIJ.js → typescript-DUM5niRM.js} +1 -1
- package/frontend/dist/js/{ui-CNcEDQ95.js → ui-DDMjO5dd.js} +2 -2
- package/frontend/dist/js/ui-vendor-BhHHyHk3.js +1 -0
- package/frontend/dist/js/uk-VTAlChwf.js +2 -0
- package/frontend/dist/js/{useChat-YRODF1y1.js → useChat-DaIZ2Dbu.js} +1 -1
- package/frontend/dist/js/{useDialogFocus-BQLdAGYH.js → useDialogFocus-BPTG_Zmy.js} +1 -1
- package/frontend/dist/js/useDictation-BXyX1U8r.js +1 -0
- package/frontend/dist/js/useQuery-hWmQjdLu.js +1 -0
- package/frontend/dist/js/{useTranslation-Kn7_iLGj.js → useTranslation-B9kflK9S.js} +1 -1
- package/frontend/dist/js/{utils-Dq1w7K0c.js → utils-p8Gt72YP.js} +1 -1
- package/frontend/dist/js/{utils-vendor-dx9vGAt3.js → utils-vendor-DISWt2y9.js} +1 -1
- package/frontend/dist/js/vi-D8rXh-53.js +2 -0
- package/frontend/dist/js/{workStatus-oU04ZrUq.js → work-DmJpVPPO.js} +1 -1
- package/frontend/dist/js/workApi-BIS9RxRi.js +1 -0
- package/frontend/dist/js/workApi-C3Td_lFD.js +5 -0
- package/frontend/dist/js/workModels-MzU2Ab7l.js +1 -0
- package/frontend/dist/js/zh-BEGd9iBD.js +2 -0
- package/package.json +43 -8
- package/scripts/prepare-dsh-provider.mjs +124 -0
- package/frontend/dist/assets/index-BXTzjRcS.js +0 -92
- package/frontend/dist/assets/index-uzzNXp5R.css +0 -1
- package/frontend/dist/js/ArtifactSlideOutPanel-DPWGjHhp.js +0 -1
- package/frontend/dist/js/AutomationsPage-DvsLZWtg.js +0 -1
- package/frontend/dist/js/ChannelsPage-D252gXwf.js +0 -1
- package/frontend/dist/js/ChatPage-D_CzOiHw.js +0 -14
- package/frontend/dist/js/ConnectModels-DYOtIOEY.js +0 -1
- package/frontend/dist/js/GalleryPage-BpK-vrvd.js +0 -1
- package/frontend/dist/js/HomePage-zJkkDNJl.js +0 -1
- package/frontend/dist/js/LibreClawPage-CAgNj9GM.js +0 -1
- package/frontend/dist/js/NotesPage-CNTqlwNc.js +0 -3
- package/frontend/dist/js/OptimizedSyntaxHighlighter-BFjOBavF.js +0 -1
- package/frontend/dist/js/PluginUsagePage-Cp4j4-VZ.js +0 -1
- package/frontend/dist/js/RichMessageContent-BOY5jqj-.js +0 -1
- package/frontend/dist/js/SettingsModal-WAdVG4-g.js +0 -19
- package/frontend/dist/js/SystemPage-Dwi8leEQ.js +0 -1
- package/frontend/dist/js/UserManagementPanel-CfG67c_k.js +0 -1
- package/frontend/dist/js/WorkPage-D_cL9wp4.js +0 -8
- package/frontend/dist/js/api-29NO19CP.js +0 -14
- package/frontend/dist/js/api-DhafOTdF.js +0 -1
- package/frontend/dist/js/appVersion-BNuquyI6.js +0 -1
- package/frontend/dist/js/ar-WHne6B0o.js +0 -2
- package/frontend/dist/js/authStore-snvjjOuX.js +0 -1
- package/frontend/dist/js/bn-BZvCjqwO.js +0 -2
- package/frontend/dist/js/chatStore-BPpcL4I5.js +0 -3
- package/frontend/dist/js/composerStyles-bNlrIugf.js +0 -1
- package/frontend/dist/js/cs-DfSqWQ9V.js +0 -2
- package/frontend/dist/js/da-BmMLW4Dl.js +0 -2
- package/frontend/dist/js/de-BQMiQwQT.js +0 -2
- package/frontend/dist/js/es-DXf6jt4Z.js +0 -2
- package/frontend/dist/js/evaluationsApi-Btc9Mg9z.js +0 -1
- package/frontend/dist/js/fr-BD6nT1oc.js +0 -2
- package/frontend/dist/js/hi-BSuNic-8.js +0 -2
- package/frontend/dist/js/id-wodbwt3B.js +0 -2
- package/frontend/dist/js/is-CEjw-OJE.js +0 -2
- package/frontend/dist/js/it-X_pq8C7q.js +0 -2
- package/frontend/dist/js/ja-DWM2HZZd.js +0 -2
- package/frontend/dist/js/ko-DFi2khBB.js +0 -2
- package/frontend/dist/js/markdownMath-mesq3ZcY.js +0 -1
- package/frontend/dist/js/ms-DNQateTR.js +0 -2
- package/frontend/dist/js/nl-DSWhi8W8.js +0 -2
- package/frontend/dist/js/pl-W9WEDpZ3.js +0 -2
- package/frontend/dist/js/pt-DCCGvdNt.js +0 -2
- package/frontend/dist/js/react-vendor-D0Ec-185.js +0 -9
- package/frontend/dist/js/router-vendor-CM0PhOMl.js +0 -1
- package/frontend/dist/js/ru-D-Ww6dXe.js +0 -2
- package/frontend/dist/js/sv-B0Iry-H3.js +0 -2
- package/frontend/dist/js/th-CEZS0WeE.js +0 -2
- package/frontend/dist/js/tr-BFJ8TeYb.js +0 -2
- package/frontend/dist/js/ui-vendor-LatG6rFF.js +0 -177
- package/frontend/dist/js/uk-BmW3yDel.js +0 -2
- package/frontend/dist/js/useQuery-C3O4CZ54.js +0 -1
- package/frontend/dist/js/vi-Cu25FXnp.js +0 -2
- package/frontend/dist/js/work-DVgm81bJ.js +0 -1
- package/frontend/dist/js/workApi-BdUNugC3.js +0 -1
- package/frontend/dist/js/workApi-OieM8qEL.js +0 -6
- package/frontend/dist/js/zh-CuCAx3oH.js +0 -2
|
@@ -0,0 +1,440 @@
|
|
|
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
|
+
/**
|
|
18
|
+
* HTTP surface for the embedded Cordis/DSH engine.
|
|
19
|
+
*
|
|
20
|
+
* Everything here consumes the `libreDshEngine` contract only; no handler knows
|
|
21
|
+
* that DSH exists. That is what allows the whole engine to be swapped or
|
|
22
|
+
* removed through the composition document without touching a route.
|
|
23
|
+
*
|
|
24
|
+
* Authentication is not optional: the engine can run tools with real
|
|
25
|
+
* filesystem access, so an unauthenticated endpoint would be a remote code
|
|
26
|
+
* execution surface. Every route requires an authenticated session.
|
|
27
|
+
*
|
|
28
|
+
* @module routes/cordis
|
|
29
|
+
*/
|
|
30
|
+
import express from 'express';
|
|
31
|
+
import { authenticate, requireAdmin } from '../middleware/auth.js';
|
|
32
|
+
import { cordisAccessState, getCordisEngine, isCordisBridgeEnabled, stopCordisHost, } from '../cordis/runtime.js';
|
|
33
|
+
import { setCordisEnabled } from '../services/cordisAccessService.js';
|
|
34
|
+
import { getCordisModelCatalog } from '../cordis/dsh/provider-handler.js';
|
|
35
|
+
const router = express.Router();
|
|
36
|
+
/** Status code and payload for a bridge that cannot serve a request. */
|
|
37
|
+
function unavailable(status, detail) {
|
|
38
|
+
if (status === 'disabled') {
|
|
39
|
+
return {
|
|
40
|
+
status: 503,
|
|
41
|
+
body: {
|
|
42
|
+
success: false,
|
|
43
|
+
error: 'The Cordis bridge is not enabled.',
|
|
44
|
+
code: 'CORDIS_DISABLED',
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
if (status === 'starting') {
|
|
49
|
+
return {
|
|
50
|
+
status: 503,
|
|
51
|
+
body: {
|
|
52
|
+
success: false,
|
|
53
|
+
error: 'The Cordis bridge is still starting.',
|
|
54
|
+
code: 'CORDIS_STARTING',
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
status: 503,
|
|
60
|
+
body: {
|
|
61
|
+
success: false,
|
|
62
|
+
error: detail ?? 'The Cordis bridge failed to start.',
|
|
63
|
+
code: 'CORDIS_UNAVAILABLE',
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
router.use((_req, res, next) => {
|
|
68
|
+
res.setHeader('Cache-Control', 'no-store');
|
|
69
|
+
next();
|
|
70
|
+
});
|
|
71
|
+
// Health is reachable without a session so an operator can tell "disabled"
|
|
72
|
+
// apart from a broken one before they have credentials to hand.
|
|
73
|
+
router.get('/health', async (_req, res) => {
|
|
74
|
+
if (!(await isCordisBridgeEnabled())) {
|
|
75
|
+
res.json({ success: true, enabled: false, ready: false });
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
const result = await getCordisEngine();
|
|
79
|
+
if (!result.ok) {
|
|
80
|
+
const { status, body } = unavailable(result.reason, result.detail);
|
|
81
|
+
res.status(status).json({ enabled: true, ready: false, ...body });
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
res.json({
|
|
85
|
+
success: true,
|
|
86
|
+
enabled: true,
|
|
87
|
+
ready: true,
|
|
88
|
+
services: result.engine.status(),
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
/**
|
|
92
|
+
* Read the administrator opt-in.
|
|
93
|
+
*
|
|
94
|
+
* Administrator-only: the answer decides whether the engine's page exists for
|
|
95
|
+
* this deployment, and the setting is a deployment-wide switch rather than a
|
|
96
|
+
* per-user preference.
|
|
97
|
+
*/
|
|
98
|
+
router.get('/access', authenticate, requireAdmin, async (_req, res) => {
|
|
99
|
+
const access = await cordisAccessState();
|
|
100
|
+
res.json({ success: true, ...access });
|
|
101
|
+
});
|
|
102
|
+
/**
|
|
103
|
+
* Set the administrator opt-in.
|
|
104
|
+
*
|
|
105
|
+
* Enabling starts the engine on its next request; disabling stops it
|
|
106
|
+
* immediately so the decision takes effect without a restart. Disposal is what
|
|
107
|
+
* withdraws the engine's services and releases its listeners, so turning the
|
|
108
|
+
* feature off does not leave a running engine behind a hidden page.
|
|
109
|
+
*/
|
|
110
|
+
router.put('/access', authenticate, requireAdmin, async (req, res) => {
|
|
111
|
+
const { enabled } = req.body ?? {};
|
|
112
|
+
if (typeof enabled !== 'boolean') {
|
|
113
|
+
res
|
|
114
|
+
.status(400)
|
|
115
|
+
.json({ success: false, error: 'enabled must be a boolean.' });
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
const access = await cordisAccessState();
|
|
119
|
+
if (access.lockedByEnv) {
|
|
120
|
+
res.status(409).json({
|
|
121
|
+
success: false,
|
|
122
|
+
error: access.lockedBy === 'env'
|
|
123
|
+
? 'The Cordis engine is pinned by LIBRE_CORDIS_ENABLED; unset the environment variable to manage it here.'
|
|
124
|
+
: 'The Cordis engine is pinned by features.enabled in cordis.config.yml; remove that key to manage it here.',
|
|
125
|
+
});
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
await setCordisEnabled(enabled);
|
|
129
|
+
if (!enabled)
|
|
130
|
+
await stopCordisHost();
|
|
131
|
+
res.json({ success: true, enabled, lockedByEnv: false });
|
|
132
|
+
});
|
|
133
|
+
// The host engine is an administrator console with deployment-wide sessions.
|
|
134
|
+
// Navigation visibility is not an authorization boundary.
|
|
135
|
+
router.use(authenticate, requireAdmin);
|
|
136
|
+
/** Validate only choices advertised for the authenticated administrator. */
|
|
137
|
+
async function sessionSettings(body, userId) {
|
|
138
|
+
if (body === null || typeof body !== 'object' || Array.isArray(body)) {
|
|
139
|
+
throw new Error('Session settings must be an object.');
|
|
140
|
+
}
|
|
141
|
+
const input = body;
|
|
142
|
+
const settings = {};
|
|
143
|
+
if (input.model !== undefined) {
|
|
144
|
+
if (typeof input.model !== 'string' ||
|
|
145
|
+
!input.model.trim() ||
|
|
146
|
+
input.model.length > 2048) {
|
|
147
|
+
throw new Error('Choose an available engine model.');
|
|
148
|
+
}
|
|
149
|
+
const catalog = await getCordisModelCatalog(userId);
|
|
150
|
+
if (!catalog.models.some(model => model.id === input.model)) {
|
|
151
|
+
throw new Error('The selected engine model is not available to this account.');
|
|
152
|
+
}
|
|
153
|
+
settings.model = input.model;
|
|
154
|
+
}
|
|
155
|
+
if (input.permissionMode !== undefined) {
|
|
156
|
+
if (input.permissionMode !== 'read-only' &&
|
|
157
|
+
input.permissionMode !== 'workspace-write') {
|
|
158
|
+
throw new Error('Permission mode must be read-only or workspace-write.');
|
|
159
|
+
}
|
|
160
|
+
settings.permissionMode = input.permissionMode;
|
|
161
|
+
}
|
|
162
|
+
return settings;
|
|
163
|
+
}
|
|
164
|
+
router.get('/models', async (req, res) => {
|
|
165
|
+
if (!(await isCordisBridgeEnabled())) {
|
|
166
|
+
const response = unavailable('disabled');
|
|
167
|
+
res.status(response.status).json(response.body);
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
const catalog = await getCordisModelCatalog(req.user.userId);
|
|
171
|
+
res.json({ success: true, ...catalog });
|
|
172
|
+
});
|
|
173
|
+
router.get('/sessions', async (_req, res) => {
|
|
174
|
+
const result = await getCordisEngine();
|
|
175
|
+
if (!result.ok) {
|
|
176
|
+
const { status, body } = unavailable(result.reason, result.detail);
|
|
177
|
+
res.status(status).json(body);
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
res.json({ success: true, sessions: await result.engine.listSessions() });
|
|
181
|
+
});
|
|
182
|
+
router.post('/sessions', async (req, res) => {
|
|
183
|
+
const result = await getCordisEngine();
|
|
184
|
+
if (!result.ok) {
|
|
185
|
+
const { status, body } = unavailable(result.reason, result.detail);
|
|
186
|
+
res.status(status).json(body);
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
const cwd = typeof req.body?.cwd === 'string' && req.body.cwd.trim() !== ''
|
|
190
|
+
? req.body.cwd
|
|
191
|
+
: undefined;
|
|
192
|
+
const title = typeof req.body?.title === 'string' && req.body.title.trim() !== ''
|
|
193
|
+
? req.body.title
|
|
194
|
+
: undefined;
|
|
195
|
+
try {
|
|
196
|
+
// The engine resolves an omitted cwd to its configured workspace, so the
|
|
197
|
+
// route never invents one.
|
|
198
|
+
const settings = await sessionSettings(req.body ?? {}, req.user.userId);
|
|
199
|
+
const session = await result.engine.createSession({
|
|
200
|
+
cwd: cwd ?? '',
|
|
201
|
+
...(title === undefined ? {} : { title }),
|
|
202
|
+
...settings,
|
|
203
|
+
userId: req.user.userId,
|
|
204
|
+
});
|
|
205
|
+
res.status(201).json({ success: true, session });
|
|
206
|
+
}
|
|
207
|
+
catch (error) {
|
|
208
|
+
res.status(400).json({
|
|
209
|
+
success: false,
|
|
210
|
+
error: error instanceof Error ? error.message : String(error),
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
router.get('/sessions/:id', async (req, res) => {
|
|
215
|
+
const result = await getCordisEngine();
|
|
216
|
+
if (!result.ok) {
|
|
217
|
+
const { status, body } = unavailable(result.reason, result.detail);
|
|
218
|
+
res.status(status).json(body);
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
const session = await result.engine.getSession(req.params.id);
|
|
222
|
+
if (!session) {
|
|
223
|
+
res.status(404).json({ success: false, error: 'Session not found.' });
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
res.json({ success: true, session });
|
|
227
|
+
});
|
|
228
|
+
router.patch('/sessions/:id/settings', async (req, res) => {
|
|
229
|
+
const result = await getCordisEngine();
|
|
230
|
+
if (!result.ok) {
|
|
231
|
+
const response = unavailable(result.reason, result.detail);
|
|
232
|
+
res.status(response.status).json(response.body);
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
try {
|
|
236
|
+
const settings = await sessionSettings(req.body, req.user.userId);
|
|
237
|
+
if (Object.keys(settings).length === 0) {
|
|
238
|
+
res.status(400).json({
|
|
239
|
+
success: false,
|
|
240
|
+
error: 'Choose a model or permission mode to update.',
|
|
241
|
+
});
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
if (!(await result.engine.getSession(req.params.id))) {
|
|
245
|
+
res.status(404).json({ success: false, error: 'Session not found.' });
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
const session = await result.engine.updateSessionSettings(req.params.id, settings, { userId: req.user.userId });
|
|
249
|
+
res.json({ success: true, session });
|
|
250
|
+
}
|
|
251
|
+
catch (error) {
|
|
252
|
+
const code = error?.code;
|
|
253
|
+
res.status(code === 'CORDIS_SESSION_BUSY' ? 409 : 400).json({
|
|
254
|
+
success: false,
|
|
255
|
+
error: error instanceof Error ? error.message : String(error),
|
|
256
|
+
...(typeof code === 'string' ? { code } : {}),
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
});
|
|
260
|
+
router.post('/sessions/:id/approvals/:approvalId', async (req, res) => {
|
|
261
|
+
const decision = req.body?.decision;
|
|
262
|
+
if (decision !== 'allowed-once' && decision !== 'rejected') {
|
|
263
|
+
res.status(400).json({
|
|
264
|
+
success: false,
|
|
265
|
+
error: 'Choose allow once or reject for this approval.',
|
|
266
|
+
});
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
const result = await getCordisEngine();
|
|
270
|
+
if (!result.ok) {
|
|
271
|
+
const response = unavailable(result.reason, result.detail);
|
|
272
|
+
res.status(response.status).json(response.body);
|
|
273
|
+
return;
|
|
274
|
+
}
|
|
275
|
+
const accepted = await result.engine.decideApproval(req.params.id, req.params.approvalId, decision);
|
|
276
|
+
if (!accepted) {
|
|
277
|
+
res.status(409).json({
|
|
278
|
+
success: false,
|
|
279
|
+
error: 'This approval is no longer pending for this session.',
|
|
280
|
+
});
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
res.json({ success: true });
|
|
284
|
+
});
|
|
285
|
+
router.delete('/sessions/:id', async (req, res) => {
|
|
286
|
+
const result = await getCordisEngine();
|
|
287
|
+
if (!result.ok) {
|
|
288
|
+
const { status, body } = unavailable(result.reason, result.detail);
|
|
289
|
+
res.status(status).json(body);
|
|
290
|
+
return;
|
|
291
|
+
}
|
|
292
|
+
const deleted = await result.engine.deleteSession(req.params.id);
|
|
293
|
+
res.status(deleted ? 200 : 404).json({ success: deleted });
|
|
294
|
+
});
|
|
295
|
+
router.get('/agents', async (_req, res) => {
|
|
296
|
+
const result = await getCordisEngine();
|
|
297
|
+
if (!result.ok) {
|
|
298
|
+
const { status, body } = unavailable(result.reason, result.detail);
|
|
299
|
+
res.status(status).json(body);
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
res.json({ success: true, agents: await result.engine.listAgents() });
|
|
303
|
+
});
|
|
304
|
+
router.get('/tools', async (_req, res) => {
|
|
305
|
+
const result = await getCordisEngine();
|
|
306
|
+
if (!result.ok) {
|
|
307
|
+
const { status, body } = unavailable(result.reason, result.detail);
|
|
308
|
+
res.status(status).json(body);
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
311
|
+
res.json({ success: true, tools: await result.engine.listTools() });
|
|
312
|
+
});
|
|
313
|
+
/**
|
|
314
|
+
* Send a chat message and stream the agent response as newline-delimited JSON.
|
|
315
|
+
*
|
|
316
|
+
* NDJSON is chosen over WebSocket deliberately: an agent turn is a single
|
|
317
|
+
* server-to-client sequence with no client-to-server frames after the request,
|
|
318
|
+
* so a streaming POST keeps the whole turn inside one authenticated request and
|
|
319
|
+
* needs no separate handshake, ticket, or reconnect protocol.
|
|
320
|
+
*/
|
|
321
|
+
router.post('/sessions/:id/messages', async (req, res) => {
|
|
322
|
+
const result = await getCordisEngine();
|
|
323
|
+
if (!result.ok) {
|
|
324
|
+
const { status, body } = unavailable(result.reason, result.detail);
|
|
325
|
+
res.status(status).json(body);
|
|
326
|
+
return;
|
|
327
|
+
}
|
|
328
|
+
const text = typeof req.body?.text === 'string' ? req.body.text : '';
|
|
329
|
+
if (text.trim() === '') {
|
|
330
|
+
res
|
|
331
|
+
.status(400)
|
|
332
|
+
.json({ success: false, error: 'A message text is required.' });
|
|
333
|
+
return;
|
|
334
|
+
}
|
|
335
|
+
if (text.length > 100000) {
|
|
336
|
+
res.status(400).json({
|
|
337
|
+
success: false,
|
|
338
|
+
error: 'Message text exceeds 100000 characters.',
|
|
339
|
+
});
|
|
340
|
+
return;
|
|
341
|
+
}
|
|
342
|
+
let disconnected = false;
|
|
343
|
+
const onDisconnect = () => {
|
|
344
|
+
disconnected = true;
|
|
345
|
+
void result.engine.cancel(req.params.id).catch(() => undefined);
|
|
346
|
+
};
|
|
347
|
+
res.once('close', onDisconnect);
|
|
348
|
+
let stream;
|
|
349
|
+
try {
|
|
350
|
+
stream = await result.engine.sendMessage(req.params.id, text, {
|
|
351
|
+
userId: req.user.userId,
|
|
352
|
+
});
|
|
353
|
+
if (disconnected) {
|
|
354
|
+
await result.engine.cancel(req.params.id);
|
|
355
|
+
stream.close();
|
|
356
|
+
return;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
catch (error) {
|
|
360
|
+
// A failure here is caller-visible (unknown session, a turn already in
|
|
361
|
+
// flight, streaming disabled), so it is a request error rather than a
|
|
362
|
+
// bridge outage.
|
|
363
|
+
res.off('close', onDisconnect);
|
|
364
|
+
if (!res.destroyed)
|
|
365
|
+
res.status(400).json({
|
|
366
|
+
success: false,
|
|
367
|
+
error: error instanceof Error ? error.message : String(error),
|
|
368
|
+
});
|
|
369
|
+
return;
|
|
370
|
+
}
|
|
371
|
+
res.setHeader('Content-Type', 'application/x-ndjson');
|
|
372
|
+
res.setHeader('Cache-Control', 'no-store');
|
|
373
|
+
// The response must not be buffered by an intermediary: the point of the
|
|
374
|
+
// endpoint is that chunks reach the client as the model produces them.
|
|
375
|
+
res.setHeader('X-Accel-Buffering', 'no');
|
|
376
|
+
res.flushHeaders?.();
|
|
377
|
+
let closed = false;
|
|
378
|
+
let subscription;
|
|
379
|
+
const finish = () => {
|
|
380
|
+
if (closed)
|
|
381
|
+
return;
|
|
382
|
+
closed = true;
|
|
383
|
+
res.off('close', onDisconnect);
|
|
384
|
+
subscription?.unsubscribe();
|
|
385
|
+
res.end();
|
|
386
|
+
};
|
|
387
|
+
// Subscribing replays whatever the model already produced, so a fast first
|
|
388
|
+
// token cannot be lost between the engine starting the turn and this handler
|
|
389
|
+
// attaching its listener.
|
|
390
|
+
subscription = stream.subscribe(chunk => {
|
|
391
|
+
if (closed)
|
|
392
|
+
return;
|
|
393
|
+
res.write(`${JSON.stringify(chunk)}\n`);
|
|
394
|
+
if (res.writableLength > 1048576) {
|
|
395
|
+
onDisconnect();
|
|
396
|
+
finish();
|
|
397
|
+
return;
|
|
398
|
+
}
|
|
399
|
+
// `done` is the terminal chunk of one turn, so the response ends here
|
|
400
|
+
// rather than waiting for the client to close it.
|
|
401
|
+
if (chunk.type === 'done')
|
|
402
|
+
finish();
|
|
403
|
+
});
|
|
404
|
+
if (closed)
|
|
405
|
+
subscription.unsubscribe();
|
|
406
|
+
// Disconnecting cancels model and tool work, as well as releasing the reader.
|
|
407
|
+
res.on('close', () => {
|
|
408
|
+
if (closed)
|
|
409
|
+
return;
|
|
410
|
+
closed = true;
|
|
411
|
+
subscription?.unsubscribe();
|
|
412
|
+
stream.close();
|
|
413
|
+
});
|
|
414
|
+
});
|
|
415
|
+
router.post('/sessions/:id/cancel', async (req, res) => {
|
|
416
|
+
const result = await getCordisEngine();
|
|
417
|
+
if (!result.ok) {
|
|
418
|
+
const { status, body } = unavailable(result.reason, result.detail);
|
|
419
|
+
res.status(status).json(body);
|
|
420
|
+
return;
|
|
421
|
+
}
|
|
422
|
+
res.json({ success: await result.engine.cancel(req.params.id) });
|
|
423
|
+
});
|
|
424
|
+
// Keep corrupt legacy sessions visible as a recoverable conflict. Never bypass
|
|
425
|
+
// the engine's event validator or discard a transcript to make it readable.
|
|
426
|
+
const sessionErrorHandler = (error, _req, res, next) => {
|
|
427
|
+
if (error instanceof Error &&
|
|
428
|
+
error.name === 'SessionPersistenceCorruptionError') {
|
|
429
|
+
res.status(409).json({
|
|
430
|
+
success: false,
|
|
431
|
+
code: 'CORDIS_SESSION_INVALID',
|
|
432
|
+
error: 'This saved session has an invalid event log. Preserve the original files and use the Cordis session repair tool before reopening it.',
|
|
433
|
+
});
|
|
434
|
+
return;
|
|
435
|
+
}
|
|
436
|
+
next(error);
|
|
437
|
+
};
|
|
438
|
+
router.use(sessionErrorHandler);
|
|
439
|
+
export default router;
|
|
440
|
+
//# sourceMappingURL=cordis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cordis.js","sourceRoot":"","sources":["../../src/routes/cordis.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,7 +43,7 @@ router.put('/access', async (req, res) => {
|
|
|
43
43
|
if (agentsEnabledLockedByEnv()) {
|
|
44
44
|
res.status(409).json({
|
|
45
45
|
success: false,
|
|
46
|
-
error: '
|
|
46
|
+
error: 'Libre Claw is pinned by LIBRE_CLAW_ENABLED; unset the environment variable to manage it here.',
|
|
47
47
|
});
|
|
48
48
|
return;
|
|
49
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libreClaw.js","sourceRoot":"","sources":["../../src/routes/libreClaw.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,OAA8B,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EACL,wBAAwB,EACxB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,gBAAgB,EAAE,EAGvB,qBAAqB,GACtB,MAAM,iCAAiC,CAAC;AAGzC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;AAEhC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AAEvC;;;;GAIG;AACH,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,IAAa,EAAE,GAAa,EAAiB,EAAE;IAC1E,WAAW,CAAC,GAAG,EAAE;QACf,OAAO,EAAE,MAAM,gBAAgB,EAAE;QACjC,WAAW,EAAE,wBAAwB,EAAE;KACxC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAiB,EAAE;IACzE,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC;IAClC,IAAI,OAAO,OAAO,KAAK,SAAS,EAAE,CAAC;QACjC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,4BAA4B;SACd,CAAC,CAAC;QACzB,OAAO;IACT,CAAC;IACD,IAAI,wBAAwB,EAAE,EAAE,CAAC;QAC/B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,KAAK;YACd,KAAK,EACH
|
|
1
|
+
{"version":3,"file":"libreClaw.js","sourceRoot":"","sources":["../../src/routes/libreClaw.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"work.d.ts","sourceRoot":"","sources":["../../src/routes/work.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"work.d.ts","sourceRoot":"","sources":["../../src/routes/work.ts"],"names":[],"mappings":"AAgFA,QAAA,MAAM,MAAM,4CAAmB,CAAC;eAs3DjB,MAAM"}
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
* See the License for the specific language governing permissions and
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
|
+
import { nativeDshProviderService } from '../cordis/dsh/native-provider-client.js';
|
|
17
18
|
import express from 'express';
|
|
18
19
|
import { authenticate, requireAdmin, } from '../middleware/auth.js';
|
|
19
20
|
import { userModel } from '../models/userModel.js';
|
|
@@ -104,11 +105,14 @@ router.put('/access', requireAdmin, async (req, res) => {
|
|
|
104
105
|
router.use(requireWorkAccess);
|
|
105
106
|
router.get('/capabilities', async (req, res) => {
|
|
106
107
|
const userId = requireUserId(req);
|
|
107
|
-
const [runtimeAvailable, providers] = await Promise.all([
|
|
108
|
+
const [runtimeAvailable, providers, nativeDsh] = await Promise.all([
|
|
108
109
|
workRuntimeService.isRuntimeAvailable(),
|
|
109
110
|
workModelProviderService.availability(userId),
|
|
111
|
+
nativeDshProviderService.catalog(userId),
|
|
110
112
|
]);
|
|
111
|
-
const providerAvailable = providers.ollamaAvailable ||
|
|
113
|
+
const providerAvailable = providers.ollamaAvailable ||
|
|
114
|
+
providers.pluginAvailable ||
|
|
115
|
+
(nativeDsh.status === 'ready' && nativeDsh.models.length > 0);
|
|
112
116
|
const recoveryPending = workRuntimeService.recoveryPending;
|
|
113
117
|
const recoveryPendingCount = workRuntimeService.recoveryPendingCount;
|
|
114
118
|
const available = runtimeAvailable && !recoveryPending && providerAvailable;
|
|
@@ -118,7 +122,7 @@ router.get('/capabilities', async (req, res) => {
|
|
|
118
122
|
? workRuntimeService.runtimeUnavailableReason ||
|
|
119
123
|
`The ${workRuntimeService.runtimeKind} runtime is not available to the Libre WebUI backend.`
|
|
120
124
|
: !providerAvailable
|
|
121
|
-
? 'No
|
|
125
|
+
? 'No configured Work model provider is available.'
|
|
122
126
|
: undefined;
|
|
123
127
|
sendSuccess(res, {
|
|
124
128
|
available,
|
|
@@ -127,6 +131,17 @@ router.get('/capabilities', async (req, res) => {
|
|
|
127
131
|
runtimeAvailable,
|
|
128
132
|
ollamaAvailable: providers.ollamaAvailable,
|
|
129
133
|
pluginAvailable: providers.pluginAvailable,
|
|
134
|
+
nativeDsh: {
|
|
135
|
+
status: nativeDsh.status,
|
|
136
|
+
models: nativeDsh.models.map(model => ({
|
|
137
|
+
model: model.model,
|
|
138
|
+
providerType: 'dsh',
|
|
139
|
+
providerId: model.providerId,
|
|
140
|
+
key: `dsh:${encodeURIComponent(model.providerId)}:${encodeURIComponent(model.model)}`,
|
|
141
|
+
label: `${model.name} · ${model.providerName}`,
|
|
142
|
+
remote: true,
|
|
143
|
+
})),
|
|
144
|
+
},
|
|
130
145
|
runtimeImage: workRuntimeService.image,
|
|
131
146
|
reason,
|
|
132
147
|
// Structured alongside `reason` so the interface can say how many
|
|
@@ -1195,25 +1210,25 @@ async function requireIdleGitTask(req) {
|
|
|
1195
1210
|
function readProviderSelection(body, fallback) {
|
|
1196
1211
|
const record = body && typeof body === 'object' ? body : {};
|
|
1197
1212
|
const rawType = record.providerType ?? fallback?.providerType ?? 'ollama';
|
|
1198
|
-
if (rawType !== 'ollama' && rawType !== 'plugin') {
|
|
1199
|
-
throw new WorkRouteError('Field "providerType" must be "ollama" or "
|
|
1213
|
+
if (rawType !== 'ollama' && rawType !== 'plugin' && rawType !== 'dsh') {
|
|
1214
|
+
throw new WorkRouteError('Field "providerType" must be "ollama", "plugin", or "dsh".', 400);
|
|
1200
1215
|
}
|
|
1201
1216
|
if (rawType === 'ollama') {
|
|
1202
1217
|
if (record.providerId !== undefined &&
|
|
1203
1218
|
record.providerId !== null &&
|
|
1204
1219
|
String(record.providerId).trim()) {
|
|
1205
|
-
throw new WorkRouteError('Field "providerId" is only valid for plugin providers.', 400);
|
|
1220
|
+
throw new WorkRouteError('Field "providerId" is only valid for plugin or native DSH providers.', 400);
|
|
1206
1221
|
}
|
|
1207
1222
|
return { providerType: 'ollama' };
|
|
1208
1223
|
}
|
|
1209
1224
|
const rawProviderId = record.providerId ?? fallback?.providerId;
|
|
1210
1225
|
if (typeof rawProviderId !== 'string' || !rawProviderId.trim()) {
|
|
1211
|
-
throw new WorkRouteError('Field "providerId" is required for plugin providers.', 400);
|
|
1226
|
+
throw new WorkRouteError('Field "providerId" is required for plugin or native DSH providers.', 400);
|
|
1212
1227
|
}
|
|
1213
1228
|
if (rawProviderId.length > 200) {
|
|
1214
1229
|
throw new WorkRouteError('Field "providerId" exceeds the 200 character limit.', 413);
|
|
1215
1230
|
}
|
|
1216
|
-
return { providerType:
|
|
1231
|
+
return { providerType: rawType, providerId: rawProviderId.trim() };
|
|
1217
1232
|
}
|
|
1218
1233
|
function requireBodyString(value, name, maxLength) {
|
|
1219
1234
|
if (typeof value !== 'string' || !value.trim()) {
|