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
package/README.md
CHANGED
|
@@ -310,6 +310,62 @@ HTTP, web search, MCP, memory, approvals, and schedules.
|
|
|
310
310
|
- [Installed agent CLIs](https://docs.librewebui.org/AGENT_CLI_MODELS)
|
|
311
311
|
- [Libre Claw integration](https://docs.librewebui.org/LIBRE_CLAW_INTEGRATION)
|
|
312
312
|
|
|
313
|
+
## Cordis bridge
|
|
314
|
+
|
|
315
|
+
The optional Cordis bridge embeds the
|
|
316
|
+
[DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) engine inside
|
|
317
|
+
Libre WebUI's backend. The engine runs as a plugin tree in a
|
|
318
|
+
[Cordis](https://github.com/cordiverse/cordis) runtime that Libre WebUI hosts, so
|
|
319
|
+
its sessions, agents, and tools arrive as Cordis services rather than as
|
|
320
|
+
imported modules.
|
|
321
|
+
|
|
322
|
+
> **Privacy warning for external DSH:** Upstream `dsh-base` profiles enable
|
|
323
|
+
> session-log and plugin-inventory sharing by default, plus feedback-triggered
|
|
324
|
+
> session exports that can include tool output and earlier context. LWUI's
|
|
325
|
+
> embedded composition omits these uploaders. Before connecting a separate DSH
|
|
326
|
+
> instance, follow the [complete opt-out instructions](docs/65-CORDIS_CONFIGURATION.md#privacy-and-telemetry).
|
|
327
|
+
|
|
328
|
+
The engine is off by default. An administrator enables it in **Settings → User
|
|
329
|
+
Management → Access & policies → Cordis Engine**; the change takes effect
|
|
330
|
+
immediately, with no restart.
|
|
331
|
+
|
|
332
|
+
The engine still needs a composition, so configure one once:
|
|
333
|
+
|
|
334
|
+
```bash
|
|
335
|
+
cd backend
|
|
336
|
+
cp cordis.patch.example.yml cordis.patch.yml
|
|
337
|
+
cp cordis.config.example.yml cordis.config.yml
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
Because the engine is a plugin tree rather than an import, operators can:
|
|
341
|
+
|
|
342
|
+
- **Retarget the model provider** by editing YAML — Ollama, an
|
|
343
|
+
OpenAI-compatible gateway, or the first-party DeepSeek adapter.
|
|
344
|
+
- **Swap the model adapter at runtime** by reloading one plugin row, without
|
|
345
|
+
restarting Libre WebUI or losing the session store, tool registry, or agents.
|
|
346
|
+
- **Remove the engine cleanly** by disposing the tree, which withdraws its
|
|
347
|
+
services, releases its listeners, and disposes the agents it created.
|
|
348
|
+
|
|
349
|
+
Once enabled, administrators can use the **Cordis Engine** page for persistent
|
|
350
|
+
engine sessions and select **DeepSeek Harness** in Chat (with Agent CLI models also
|
|
351
|
+
enabled). In Work, select **DeepSeek Harness** in the **Engine** control to run its agent loop
|
|
352
|
+
through Work's existing container runtime, approval gates, and durable records.
|
|
353
|
+
Normal provider models remain available.
|
|
354
|
+
|
|
355
|
+
The host Engine is a shared administrator console for single-replica solo
|
|
356
|
+
installations. Its shipped filesystem tools are confined to the configured
|
|
357
|
+
workspace and use DSH's mutation policies. Work uses a separate in-memory DSH
|
|
358
|
+
composition with no host filesystem tools. Review the security notes before
|
|
359
|
+
enabling either surface.
|
|
360
|
+
|
|
361
|
+
```bash
|
|
362
|
+
curl -s http://127.0.0.1:3001/api/cordis/health | jq
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
- [Cordis bridge architecture](https://docs.librewebui.org/CORDIS_BRIDGE)
|
|
366
|
+
- [Cordis configuration reference](https://docs.librewebui.org/CORDIS_CONFIGURATION)
|
|
367
|
+
- [Writing Cordis plugins](https://docs.librewebui.org/CORDIS_PLUGIN_AUTHORING)
|
|
368
|
+
|
|
313
369
|
## Deployment options
|
|
314
370
|
|
|
315
371
|
| Deployment | Command or link | Use case |
|
|
@@ -349,6 +405,9 @@ See the [deployment documentation](https://docs.librewebui.org) for details.
|
|
|
349
405
|
- [Calendar](https://docs.librewebui.org/CALENDAR)
|
|
350
406
|
- [Public API](https://docs.librewebui.org/PUBLIC_API)
|
|
351
407
|
- [Plugin architecture](https://docs.librewebui.org/PLUGIN_ARCHITECTURE)
|
|
408
|
+
- [Cordis bridge](https://docs.librewebui.org/CORDIS_BRIDGE)
|
|
409
|
+
- [Cordis configuration](https://docs.librewebui.org/CORDIS_CONFIGURATION)
|
|
410
|
+
- [Writing Cordis plugins](https://docs.librewebui.org/CORDIS_PLUGIN_AUTHORING)
|
|
352
411
|
- [Capability contracts](https://docs.librewebui.org/CAPABILITY_CONTRACTS)
|
|
353
412
|
- [Authentication](https://docs.librewebui.org/AUTHENTICATION)
|
|
354
413
|
- [Data portability](https://docs.librewebui.org/DATA_PORTABILITY)
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transport- and implementation-neutral contracts for the embedded DSH engine.
|
|
3
|
+
*
|
|
4
|
+
* Everything Libre WebUI consumes from the DSH engine crosses this file. The
|
|
5
|
+
* route layer, the WebSocket bridge, and the frontend client all program
|
|
6
|
+
* against these shapes, and the `dsh-engine` Cordis plugin is what satisfies
|
|
7
|
+
* them. No Libre WebUI module outside `src/cordis/dsh/` may import a concrete
|
|
8
|
+
* `@deepseek-ai/dsh-*` package: that restriction is what makes the engine
|
|
9
|
+
* hot-swappable and what keeps the Cordis bridge a genuine seam rather than a
|
|
10
|
+
* direct dependency in disguise.
|
|
11
|
+
*
|
|
12
|
+
* @module cordis/contracts
|
|
13
|
+
*/
|
|
14
|
+
/** Stable Cordis service name under which the engine contract is published. */
|
|
15
|
+
export declare const DSH_ENGINE_SERVICE: 'libreDshEngine';
|
|
16
|
+
/** Lifecycle phase of one engine service, mirroring Cordis fiber states. */
|
|
17
|
+
export type EngineServiceState =
|
|
18
|
+
/** The providing plugin has not been mounted yet. */
|
|
19
|
+
'pending'
|
|
20
|
+
/** The providing plugin is mounted and the service is usable. */
|
|
21
|
+
| 'ready'
|
|
22
|
+
/** The providing plugin is mounted but cannot serve requests. */
|
|
23
|
+
| 'failed';
|
|
24
|
+
/** One engine service as observed through the contract. */
|
|
25
|
+
export interface EngineServiceStatus {
|
|
26
|
+
/** Service name as registered on the Cordis context. */
|
|
27
|
+
readonly name: string;
|
|
28
|
+
/** Current lifecycle phase. */
|
|
29
|
+
readonly state: EngineServiceState;
|
|
30
|
+
/** Human-readable reason, present only when `state` is `failed`. */
|
|
31
|
+
readonly detail?: string;
|
|
32
|
+
}
|
|
33
|
+
/** Role of one message projected from an engine session log. */
|
|
34
|
+
export type EngineMessageRole = 'user' | 'assistant' | 'system' | 'tool' | 'unknown';
|
|
35
|
+
/** One message projected from an engine session log. */
|
|
36
|
+
export interface EngineMessage {
|
|
37
|
+
/** Engine-assigned identifier, stable within a session. */
|
|
38
|
+
readonly id: string;
|
|
39
|
+
/** Projected author role. */
|
|
40
|
+
readonly role: EngineMessageRole;
|
|
41
|
+
/** Flattened text content; empty when the message carried none. */
|
|
42
|
+
readonly text: string;
|
|
43
|
+
/** Reasoning exposed by the provider, kept separate from the answer. */
|
|
44
|
+
readonly reasoning?: string;
|
|
45
|
+
/** Distinguishes human input from harness-injected runtime context. */
|
|
46
|
+
readonly source?: 'user' | 'model' | 'system' | 'context' | 'tool';
|
|
47
|
+
readonly toolCalls?: readonly EngineToolCall[];
|
|
48
|
+
readonly toolResults?: readonly EngineToolResult[];
|
|
49
|
+
/** Engine sequence number of the originating event, when known. */
|
|
50
|
+
readonly seq?: number;
|
|
51
|
+
}
|
|
52
|
+
/** One structured model-requested operation. */
|
|
53
|
+
export interface EngineToolCall {
|
|
54
|
+
readonly callId: string;
|
|
55
|
+
readonly name: string;
|
|
56
|
+
readonly arguments: string;
|
|
57
|
+
}
|
|
58
|
+
/** One structured operation result. */
|
|
59
|
+
export interface EngineToolResult {
|
|
60
|
+
readonly callId: string;
|
|
61
|
+
readonly name?: string;
|
|
62
|
+
readonly output: string;
|
|
63
|
+
readonly isError: boolean;
|
|
64
|
+
}
|
|
65
|
+
export type EnginePermissionMode = 'read-only' | 'workspace-write';
|
|
66
|
+
export interface EngineSessionSettings {
|
|
67
|
+
readonly model?: string;
|
|
68
|
+
readonly permissionMode: EnginePermissionMode;
|
|
69
|
+
}
|
|
70
|
+
export interface EngineApproval {
|
|
71
|
+
readonly id: string;
|
|
72
|
+
readonly sessionId: string;
|
|
73
|
+
readonly callId?: string;
|
|
74
|
+
readonly toolName: string;
|
|
75
|
+
readonly reason?: string;
|
|
76
|
+
}
|
|
77
|
+
export type EngineApprovalOutcome = 'allowed-once' | 'rejected' | 'cancelled' | 'unavailable';
|
|
78
|
+
/** Summary of one engine session. */
|
|
79
|
+
export interface EngineSessionSummary {
|
|
80
|
+
/** Opaque session identifier used by every other session operation. */
|
|
81
|
+
readonly id: string;
|
|
82
|
+
/** Engine-supplied title, absent until one is generated. */
|
|
83
|
+
readonly title?: string;
|
|
84
|
+
/** Epoch milliseconds when the session was created, when known. */
|
|
85
|
+
readonly createdAt?: number;
|
|
86
|
+
/** Number of events currently recorded for the session. */
|
|
87
|
+
readonly eventCount: number;
|
|
88
|
+
/** Canonical working directory recorded for this session. */
|
|
89
|
+
readonly workspacePath?: string;
|
|
90
|
+
}
|
|
91
|
+
/** A live or restored engine session. */
|
|
92
|
+
export interface EngineSession extends EngineSessionSummary {
|
|
93
|
+
readonly active: boolean;
|
|
94
|
+
readonly settings: EngineSessionSettings;
|
|
95
|
+
readonly capabilities: {
|
|
96
|
+
readonly permissions: boolean;
|
|
97
|
+
readonly approvals: boolean;
|
|
98
|
+
};
|
|
99
|
+
readonly approvals: readonly EngineApproval[];
|
|
100
|
+
/** Messages projected from the session log, oldest first. */
|
|
101
|
+
readonly messages: readonly EngineMessage[];
|
|
102
|
+
}
|
|
103
|
+
/** Identifies one live agent. */
|
|
104
|
+
export interface EngineAgentSummary {
|
|
105
|
+
/** Agent identifier, equal to its backing session id. */
|
|
106
|
+
readonly id: string;
|
|
107
|
+
/** Whether this agent is a runtime root rather than a child of another. */
|
|
108
|
+
readonly root: boolean;
|
|
109
|
+
}
|
|
110
|
+
/** One tool the engine can expose to a model. */
|
|
111
|
+
export interface EngineToolSummary {
|
|
112
|
+
/** Model-facing tool name. */
|
|
113
|
+
readonly name: string;
|
|
114
|
+
/** Model-facing description, empty when the tool declared none. */
|
|
115
|
+
readonly description: string;
|
|
116
|
+
}
|
|
117
|
+
/** Options accepted when creating an engine session. */
|
|
118
|
+
export interface EngineCreateSessionOptions {
|
|
119
|
+
/** Absolute working directory recorded in the session header. */
|
|
120
|
+
readonly cwd: string;
|
|
121
|
+
/** A temporary Chat invocation, excluded from the engine console. */
|
|
122
|
+
readonly transient?: boolean;
|
|
123
|
+
readonly model?: string;
|
|
124
|
+
readonly permissionMode?: EnginePermissionMode;
|
|
125
|
+
/** Authenticated caller used to validate a requested model; never persisted. */
|
|
126
|
+
readonly userId?: string;
|
|
127
|
+
/** Optional author-supplied title. */
|
|
128
|
+
readonly title?: string;
|
|
129
|
+
}
|
|
130
|
+
/** Options accepted when creating an agent bound to a session. */
|
|
131
|
+
export interface EngineCreateAgentOptions {
|
|
132
|
+
/** Session the agent should operate on. */
|
|
133
|
+
readonly sessionId: string;
|
|
134
|
+
/** Absolute working directory recorded in the session header. */
|
|
135
|
+
readonly cwd: string;
|
|
136
|
+
/** Provider route name, when the caller wants to pin one. */
|
|
137
|
+
readonly provider?: string;
|
|
138
|
+
/** Model identifier, when the caller wants to pin one. */
|
|
139
|
+
readonly model?: string;
|
|
140
|
+
}
|
|
141
|
+
/** One increment of a streaming agent response. */
|
|
142
|
+
export type EngineStreamChunk =
|
|
143
|
+
/** Incremental assistant text. */
|
|
144
|
+
{
|
|
145
|
+
readonly type: 'text';
|
|
146
|
+
readonly text: string;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Incremental reasoning the model exposed.
|
|
150
|
+
*
|
|
151
|
+
* Separate from `text` because it is not part of the reply: a consumer may
|
|
152
|
+
* show it, collapse it, or drop it, and mixing it into the answer would make
|
|
153
|
+
* that choice impossible.
|
|
154
|
+
*/
|
|
155
|
+
| {
|
|
156
|
+
readonly type: 'reasoning';
|
|
157
|
+
readonly text: string;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* The turn failed before producing a reply.
|
|
161
|
+
*
|
|
162
|
+
* Carried separately from `done` because the engine reports a structured
|
|
163
|
+
* failure reason, and collapsing it into a terminal status would leave a
|
|
164
|
+
* caller with "the turn ended" and no way to say why.
|
|
165
|
+
*/
|
|
166
|
+
| {
|
|
167
|
+
readonly type: 'error';
|
|
168
|
+
readonly message: string;
|
|
169
|
+
readonly code?: string;
|
|
170
|
+
}
|
|
171
|
+
/** A tool call the agent started. */
|
|
172
|
+
| {
|
|
173
|
+
readonly type: 'tool-call';
|
|
174
|
+
readonly callId: string;
|
|
175
|
+
readonly name: string;
|
|
176
|
+
readonly arguments?: string;
|
|
177
|
+
}
|
|
178
|
+
/** A tool call that finished, successfully or not. */
|
|
179
|
+
| {
|
|
180
|
+
readonly type: 'tool-result';
|
|
181
|
+
readonly callId: string;
|
|
182
|
+
readonly name: string;
|
|
183
|
+
readonly isError: boolean;
|
|
184
|
+
readonly output?: string;
|
|
185
|
+
} | {
|
|
186
|
+
readonly type: 'approval-request';
|
|
187
|
+
readonly approval: EngineApproval;
|
|
188
|
+
} | {
|
|
189
|
+
readonly type: 'approval-decision';
|
|
190
|
+
readonly approvalId: string;
|
|
191
|
+
readonly outcome: EngineApprovalOutcome;
|
|
192
|
+
}
|
|
193
|
+
/** A turn boundary; the terminal chunk of one response. */
|
|
194
|
+
| {
|
|
195
|
+
readonly type: 'done';
|
|
196
|
+
readonly reason: string;
|
|
197
|
+
readonly interrupted?: boolean;
|
|
198
|
+
};
|
|
199
|
+
/** Subscription handle returned by {@link EngineStreamHandle}. */
|
|
200
|
+
export interface EngineStreamSubscription {
|
|
201
|
+
/** Stop receiving chunks. Safe to call more than once. */
|
|
202
|
+
unsubscribe(): void;
|
|
203
|
+
}
|
|
204
|
+
/** Handle over one in-flight streaming response. */
|
|
205
|
+
export interface EngineStreamHandle {
|
|
206
|
+
/** Session the response belongs to. */
|
|
207
|
+
readonly sessionId: string;
|
|
208
|
+
/**
|
|
209
|
+
* Register a chunk listener.
|
|
210
|
+
*
|
|
211
|
+
* Everything the response has already produced is replayed first, so a
|
|
212
|
+
* listener that attaches after a fast answer still receives it.
|
|
213
|
+
*/
|
|
214
|
+
subscribe(listener: (chunk: EngineStreamChunk) => void): EngineStreamSubscription;
|
|
215
|
+
/**
|
|
216
|
+
* Release this handle's resources.
|
|
217
|
+
*
|
|
218
|
+
* Called when a client disconnects, so an abandoned response stops buffering
|
|
219
|
+
* for a reader that is gone. The turn stays durable: its transcript remains
|
|
220
|
+
* readable and the next message is not blocked.
|
|
221
|
+
*/
|
|
222
|
+
close(): void;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* The engine contract published as the `libreDshEngine` Cordis service.
|
|
226
|
+
*
|
|
227
|
+
* Every method rejects rather than returning a partial result when the engine
|
|
228
|
+
* is not ready, so callers never mistake an unmounted engine for an empty one.
|
|
229
|
+
*/
|
|
230
|
+
export interface DshEngine {
|
|
231
|
+
/** Report the lifecycle state of each engine service. */
|
|
232
|
+
status(): readonly EngineServiceStatus[];
|
|
233
|
+
/** Model defaults of the running composition, before per-session choices. */
|
|
234
|
+
modelConfiguration(): {
|
|
235
|
+
readonly provider?: string;
|
|
236
|
+
readonly model?: string;
|
|
237
|
+
};
|
|
238
|
+
/** List live and restored sessions, newest first. */
|
|
239
|
+
listSessions(): Promise<readonly EngineSessionSummary[]>;
|
|
240
|
+
/** Read one session with its projected messages. */
|
|
241
|
+
getSession(sessionId: string): Promise<EngineSession | undefined>;
|
|
242
|
+
/** Create a session. */
|
|
243
|
+
createSession(options: EngineCreateSessionOptions): Promise<EngineSession>;
|
|
244
|
+
updateSessionSettings(sessionId: string, settings: Partial<EngineSessionSettings>, options?: {
|
|
245
|
+
readonly userId?: string;
|
|
246
|
+
}): Promise<EngineSession>;
|
|
247
|
+
decideApproval(sessionId: string, approvalId: string, outcome: 'allowed-once' | 'rejected'): Promise<boolean>;
|
|
248
|
+
/** Delete a session and dispose any agent still bound to it. */
|
|
249
|
+
deleteSession(sessionId: string): Promise<boolean>;
|
|
250
|
+
/** List live agents. */
|
|
251
|
+
listAgents(): Promise<readonly EngineAgentSummary[]>;
|
|
252
|
+
/** List tools currently registered with the engine. */
|
|
253
|
+
listTools(): Promise<readonly EngineToolSummary[]>;
|
|
254
|
+
/**
|
|
255
|
+
* Send a user message to a session and stream the agent response.
|
|
256
|
+
*
|
|
257
|
+
* The returned handle is usable immediately: chunks emitted before the first
|
|
258
|
+
* subscriber attaches are buffered and replayed to that subscriber, so a
|
|
259
|
+
* caller can await the HTTP response and then attach without losing text.
|
|
260
|
+
*/
|
|
261
|
+
sendMessage(sessionId: string, text: string, options?: {
|
|
262
|
+
readonly cwd?: string;
|
|
263
|
+
readonly userId?: string;
|
|
264
|
+
}): Promise<EngineStreamHandle>;
|
|
265
|
+
/** Authenticated actor attached to the current turn only. */
|
|
266
|
+
requestUserId(sessionId: string): string | undefined;
|
|
267
|
+
/** Cancel the in-flight response for a session, if any. */
|
|
268
|
+
cancel(sessionId: string): Promise<boolean>;
|
|
269
|
+
}
|
|
270
|
+
//# sourceMappingURL=contracts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/cordis/contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
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
|
+
* Transport- and implementation-neutral contracts for the embedded DSH engine.
|
|
19
|
+
*
|
|
20
|
+
* Everything Libre WebUI consumes from the DSH engine crosses this file. The
|
|
21
|
+
* route layer, the WebSocket bridge, and the frontend client all program
|
|
22
|
+
* against these shapes, and the `dsh-engine` Cordis plugin is what satisfies
|
|
23
|
+
* them. No Libre WebUI module outside `src/cordis/dsh/` may import a concrete
|
|
24
|
+
* `@deepseek-ai/dsh-*` package: that restriction is what makes the engine
|
|
25
|
+
* hot-swappable and what keeps the Cordis bridge a genuine seam rather than a
|
|
26
|
+
* direct dependency in disguise.
|
|
27
|
+
*
|
|
28
|
+
* @module cordis/contracts
|
|
29
|
+
*/
|
|
30
|
+
/** Stable Cordis service name under which the engine contract is published. */
|
|
31
|
+
export const DSH_ENGINE_SERVICE = 'libreDshEngine';
|
|
32
|
+
//# sourceMappingURL=contracts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/cordis/contracts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;;;;;;;;;;;GAYG;AAEH,+EAA+E;AAC/E,MAAM,CAAC,MAAM,kBAAkB,GAAG,gBAAyB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { DshEngine } from '../contracts.js';
|
|
2
|
+
import type { BridgeModel } from './librewebui-llm-adapter.js';
|
|
3
|
+
/** Decode only the agent envelope; the provider route stays qualified. */
|
|
4
|
+
export declare function dshProviderModel(selector: string): string | undefined;
|
|
5
|
+
/** Discovery reads configuration but never starts the optional engine. */
|
|
6
|
+
export declare function dshChatModelChoices(userId: string): Promise<readonly BridgeModel[]>;
|
|
7
|
+
/** Validate a saved choice before starting an engine or allocating a session. */
|
|
8
|
+
export declare function resolveDshSelectedModel(selector: string, userId: string): Promise<string | undefined>;
|
|
9
|
+
export declare function requireDshProviderRoute(engine: DshEngine): void;
|
|
10
|
+
/** Titles and summaries use the selected LLM directly, without an agent turn. */
|
|
11
|
+
export declare function resolveDshProviderTarget(selector: string, userId: string): Promise<{
|
|
12
|
+
model: string;
|
|
13
|
+
providerType: 'ollama' | 'plugin' | 'dsh';
|
|
14
|
+
providerId: string | null;
|
|
15
|
+
}>;
|
|
16
|
+
//# sourceMappingURL=chat-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-model.d.ts","sourceRoot":"","sources":["../../../src/cordis/dsh/chat-model.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAiB/D,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAarE;AAaD,0EAA0E;AAC1E,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CA0BjC;AAED,iFAAiF;AACjF,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAW7B;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAK/D;AAED,iFAAiF;AACjF,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;IAC1C,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC,CAoBD"}
|
|
@@ -0,0 +1,104 @@
|
|
|
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 { getAgentCliModelsEnabled } from '../../services/agentAccessService.js';
|
|
18
|
+
import { userModel } from '../../models/userModel.js';
|
|
19
|
+
import { readCompositionFile } from '../host/composition.js';
|
|
20
|
+
import { isProviderModelIdentity, parseNativeDshModelId, } from './model-identity.js';
|
|
21
|
+
import { libreWebUiProviderHandler, resolveCordisProviderTarget, resolveEngineDefaultModel, } from './provider-handler.js';
|
|
22
|
+
const DSH_PREFIX = 'dsh:';
|
|
23
|
+
const PROVIDER_ROUTE = 'libre-webui';
|
|
24
|
+
/** Decode only the agent envelope; the provider route stays qualified. */
|
|
25
|
+
export function dshProviderModel(selector) {
|
|
26
|
+
if (selector === 'dsh')
|
|
27
|
+
return undefined;
|
|
28
|
+
const model = selector.startsWith(DSH_PREFIX)
|
|
29
|
+
? selector.slice(DSH_PREFIX.length)
|
|
30
|
+
: '';
|
|
31
|
+
if (selector.length > 2048 ||
|
|
32
|
+
(!model.startsWith('lwui:') && !model.startsWith('native:')) ||
|
|
33
|
+
!isProviderModelIdentity(model)) {
|
|
34
|
+
throw new Error('Choose a valid DeepSeek Harness provider model.');
|
|
35
|
+
}
|
|
36
|
+
return model;
|
|
37
|
+
}
|
|
38
|
+
async function requireDshChatAccess(userId) {
|
|
39
|
+
const user = await userModel.getUserById(userId);
|
|
40
|
+
if (user?.role !== 'admin' || user.status !== 'active')
|
|
41
|
+
throw new Error('DeepSeek Harness requires an active administrator.');
|
|
42
|
+
if (!(await getAgentCliModelsEnabled()))
|
|
43
|
+
throw new Error('Agent CLI models are disabled on this server.');
|
|
44
|
+
const { isCordisBridgeEnabled } = await import('../runtime.js');
|
|
45
|
+
if (!(await isCordisBridgeEnabled()))
|
|
46
|
+
throw new Error('The DeepSeek Harness engine is not available.');
|
|
47
|
+
}
|
|
48
|
+
/** Discovery reads configuration but never starts the optional engine. */
|
|
49
|
+
export async function dshChatModelChoices(userId) {
|
|
50
|
+
await requireDshChatAccess(userId);
|
|
51
|
+
const { cordisRuntimeConfig } = await import('../runtime.js');
|
|
52
|
+
const { BRIDGE_ENTRY_ID } = await import('../host/host.js');
|
|
53
|
+
const config = cordisRuntimeConfig();
|
|
54
|
+
const row = readCompositionFile(config.configPath).find(entry => entry.id === BRIDGE_ENTRY_ID);
|
|
55
|
+
if (!row || row.disabled)
|
|
56
|
+
return [];
|
|
57
|
+
const rowConfig = row.config && typeof row.config === 'object' && !Array.isArray(row.config)
|
|
58
|
+
? row.config
|
|
59
|
+
: {};
|
|
60
|
+
// A row pin wins over host defaults, including an unknown !!js expression.
|
|
61
|
+
// Such compositions keep their base profile rather than advertise a route
|
|
62
|
+
// that may not be the one their engine will execute.
|
|
63
|
+
const provider = Object.prototype.hasOwnProperty.call(rowConfig, 'defaultProvider')
|
|
64
|
+
? rowConfig.defaultProvider
|
|
65
|
+
: config.model.provider === 'libre-webui'
|
|
66
|
+
? PROVIDER_ROUTE
|
|
67
|
+
: config.model.route;
|
|
68
|
+
if (provider !== PROVIDER_ROUTE)
|
|
69
|
+
return [];
|
|
70
|
+
return libreWebUiProviderHandler.listModels(userId);
|
|
71
|
+
}
|
|
72
|
+
/** Validate a saved choice before starting an engine or allocating a session. */
|
|
73
|
+
export async function resolveDshSelectedModel(selector, userId) {
|
|
74
|
+
const model = dshProviderModel(selector);
|
|
75
|
+
await requireDshChatAccess(userId);
|
|
76
|
+
if (model &&
|
|
77
|
+
!(await dshChatModelChoices(userId)).some(candidate => candidate.id === model))
|
|
78
|
+
throw new Error('The selected DeepSeek Harness model is unavailable.');
|
|
79
|
+
return model;
|
|
80
|
+
}
|
|
81
|
+
export function requireDshProviderRoute(engine) {
|
|
82
|
+
if (engine.modelConfiguration().provider !== PROVIDER_ROUTE)
|
|
83
|
+
throw new Error('This DeepSeek Harness composition does not use Libre WebUI model providers.');
|
|
84
|
+
}
|
|
85
|
+
/** Titles and summaries use the selected LLM directly, without an agent turn. */
|
|
86
|
+
export async function resolveDshProviderTarget(selector, userId) {
|
|
87
|
+
const selected = await resolveDshSelectedModel(selector, userId);
|
|
88
|
+
if (selected && parseNativeDshModelId(selected))
|
|
89
|
+
return resolveCordisProviderTarget(selected, userId);
|
|
90
|
+
const { getCordisEngine } = await import('../runtime.js');
|
|
91
|
+
const result = await getCordisEngine();
|
|
92
|
+
if (!result.ok)
|
|
93
|
+
throw new Error(`The DeepSeek Harness engine is not available: ${result.reason}`);
|
|
94
|
+
requireDshProviderRoute(result.engine);
|
|
95
|
+
const configured = result.engine.modelConfiguration().model;
|
|
96
|
+
const model = selected ??
|
|
97
|
+
(isProviderModelIdentity(configured)
|
|
98
|
+
? configured
|
|
99
|
+
: await resolveEngineDefaultModel(userId));
|
|
100
|
+
if (!model)
|
|
101
|
+
throw new Error('No DeepSeek Harness provider model is available.');
|
|
102
|
+
return resolveCordisProviderTarget(model, userId);
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=chat-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-model.js","sourceRoot":"","sources":["../../../src/cordis/dsh/chat-model.ts"],"names":[],"mappings":"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"}
|