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
|
@@ -14,8 +14,17 @@
|
|
|
14
14
|
* See the License for the specific language governing permissions and
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
|
-
import { normalizeChatProviderSelection, } from '../utils/chatProviderSelection.js';
|
|
17
|
+
import { ChatProviderSelectionError, normalizeChatProviderSelection, } from '../utils/chatProviderSelection.js';
|
|
18
18
|
export const AUTO_TITLE_CURRENT_MODEL = '__current_running_model__';
|
|
19
|
+
export const generateNativeDshText = async (input) => {
|
|
20
|
+
const { nativeDshProviderService } = await import('../cordis/dsh/native-provider-client.js');
|
|
21
|
+
return nativeDshProviderService.text(input);
|
|
22
|
+
};
|
|
23
|
+
/** Resolve text calls without creating an agent session or invoking tools. */
|
|
24
|
+
export const resolveDshAuxiliaryTarget = async (model, userId) => {
|
|
25
|
+
const { resolveDshProviderTarget } = await import('../cordis/dsh/chat-model.js');
|
|
26
|
+
return resolveDshProviderTarget(model, userId);
|
|
27
|
+
};
|
|
19
28
|
const TITLE_GENERATION_OPTIONS = {
|
|
20
29
|
temperature: 0.3,
|
|
21
30
|
num_predict: 20,
|
|
@@ -93,16 +102,20 @@ export function sanitizeGeneratedTitle(rawTitle, sourceMessage) {
|
|
|
93
102
|
return sanitizeGeneratedTitleResult(rawTitle, sourceMessage).title;
|
|
94
103
|
}
|
|
95
104
|
export class TitleGenerationService {
|
|
96
|
-
constructor({ chatService, chatGenerationService, pluginService, ollamaService, now = Date.now, logger = console, }) {
|
|
105
|
+
constructor({ chatService, chatGenerationService, pluginService, ollamaService, now = Date.now, logger = console, resolveDshProviderTarget = resolveDshAuxiliaryTarget, generateDshText = generateNativeDshText, }) {
|
|
97
106
|
this.chatService = chatService;
|
|
98
107
|
this.chatGenerationService = chatGenerationService;
|
|
99
108
|
this.pluginService = pluginService;
|
|
100
109
|
this.ollamaService = ollamaService;
|
|
101
110
|
this.now = now;
|
|
102
111
|
this.logger = logger;
|
|
112
|
+
this.resolveDshProviderTarget = resolveDshProviderTarget;
|
|
113
|
+
this.generateDshText = generateDshText;
|
|
103
114
|
}
|
|
104
115
|
async resolveTitleGenerationModel(requestedModel, session, userId) {
|
|
105
116
|
if (requestedModel === AUTO_TITLE_CURRENT_MODEL) {
|
|
117
|
+
if (session.providerType === 'agent')
|
|
118
|
+
return session.model;
|
|
106
119
|
return this.chatGenerationService.resolveActualModelName(session.model, userId);
|
|
107
120
|
}
|
|
108
121
|
return requestedModel;
|
|
@@ -112,18 +125,53 @@ export class TitleGenerationService {
|
|
|
112
125
|
if (!session) {
|
|
113
126
|
return null;
|
|
114
127
|
}
|
|
115
|
-
|
|
116
|
-
const providerSelection = requestedModel === AUTO_TITLE_CURRENT_MODEL
|
|
128
|
+
let providerSelection = requestedModel === AUTO_TITLE_CURRENT_MODEL
|
|
117
129
|
? // A persona session's binding points at the pseudo-model; the
|
|
118
130
|
// resolved backing model finds its own provider by name.
|
|
119
|
-
session.model.startsWith('persona:')
|
|
131
|
+
session.model.startsWith('persona:') &&
|
|
132
|
+
session.providerType !== 'agent'
|
|
120
133
|
? undefined
|
|
121
134
|
: normalizeChatProviderSelection(session)
|
|
122
135
|
: normalizeChatProviderSelection({ providerType, providerId });
|
|
136
|
+
if (requestedModel.startsWith('persona:') &&
|
|
137
|
+
providerSelection?.providerType !== 'agent') {
|
|
138
|
+
// Task personas carry the same synthetic binding as Chat personas.
|
|
139
|
+
// Their backing model owns provider resolution, including plugin routes.
|
|
140
|
+
providerSelection = undefined;
|
|
141
|
+
}
|
|
142
|
+
const usesDsh = providerSelection?.providerType === 'agent' &&
|
|
143
|
+
providerSelection.providerId === 'dsh';
|
|
144
|
+
if (providerSelection?.providerType === 'agent' && !usesDsh) {
|
|
145
|
+
throw new ChatProviderSelectionError('Title generation requires an Ollama, plugin, or DeepSeek Harness model.');
|
|
146
|
+
}
|
|
147
|
+
let model = await this.resolveTitleGenerationModel(requestedModel, session, userId);
|
|
123
148
|
let title = buildFallbackTitle(message);
|
|
124
149
|
let source = 'fallback';
|
|
125
150
|
try {
|
|
126
|
-
|
|
151
|
+
let nativeProviderId;
|
|
152
|
+
if (usesDsh) {
|
|
153
|
+
const resolved = await this.resolveDshProviderTarget(model, userId);
|
|
154
|
+
model = resolved.model;
|
|
155
|
+
if (resolved.providerType === 'dsh') {
|
|
156
|
+
if (!resolved.providerId)
|
|
157
|
+
throw new Error('Native DSH provider identity is missing.');
|
|
158
|
+
nativeProviderId = resolved.providerId;
|
|
159
|
+
}
|
|
160
|
+
else
|
|
161
|
+
providerSelection = normalizeChatProviderSelection(resolved);
|
|
162
|
+
}
|
|
163
|
+
const generation = nativeProviderId
|
|
164
|
+
? {
|
|
165
|
+
title: await this.generateDshText({
|
|
166
|
+
model,
|
|
167
|
+
providerId: nativeProviderId,
|
|
168
|
+
userId,
|
|
169
|
+
prompt: buildTitlePrompt(message),
|
|
170
|
+
purpose: 'session-title',
|
|
171
|
+
}),
|
|
172
|
+
source: 'dsh',
|
|
173
|
+
}
|
|
174
|
+
: await this.generateTitleWithModel(sessionId, model, message, userId, providerSelection);
|
|
127
175
|
const sanitizedTitle = sanitizeGeneratedTitleResult(generation.title, message);
|
|
128
176
|
title = sanitizedTitle.title;
|
|
129
177
|
source = sanitizedTitle.usedFallback ? 'fallback' : generation.source;
|
|
@@ -144,6 +192,13 @@ export class TitleGenerationService {
|
|
|
144
192
|
}
|
|
145
193
|
async generateTitleWithModel(sessionId, model, message, userId, providerSelection) {
|
|
146
194
|
const target = await this.chatGenerationService.prepareGenerationTarget(model, userId, TITLE_GENERATION_OPTIONS, providerSelection);
|
|
195
|
+
if (target.providerType === 'agent' ||
|
|
196
|
+
(providerSelection?.providerType === 'plugin' &&
|
|
197
|
+
target.activePlugin?.id !== providerSelection.providerId) ||
|
|
198
|
+
(providerSelection?.providerType === 'ollama' && target.activePlugin)) {
|
|
199
|
+
throw new Error('The selected title provider is unavailable.');
|
|
200
|
+
}
|
|
201
|
+
const { tools: _tools, ...textOptions } = target.mergedOptions;
|
|
147
202
|
const prompt = buildTitlePrompt(message);
|
|
148
203
|
if (target.activePlugin) {
|
|
149
204
|
const pluginResponse = await this.pluginService.executePluginRequest(target.actualModelName, [
|
|
@@ -153,7 +208,7 @@ export class TitleGenerationService {
|
|
|
153
208
|
content: prompt,
|
|
154
209
|
timestamp: this.now(),
|
|
155
210
|
},
|
|
156
|
-
], { ...
|
|
211
|
+
], { ...textOptions, ...PLUGIN_TITLE_GENERATION_OPTIONS }, userId, target.activePlugin.id);
|
|
157
212
|
return {
|
|
158
213
|
title: this.chatGenerationService.extractPluginAssistantContent(pluginResponse),
|
|
159
214
|
source: 'plugin',
|
|
@@ -161,7 +216,7 @@ export class TitleGenerationService {
|
|
|
161
216
|
}
|
|
162
217
|
// Ollama takes the thinking setting beside the options, never inside
|
|
163
218
|
// them, and this call answers it for itself below.
|
|
164
|
-
const { think: _think, ...ollamaOptions } =
|
|
219
|
+
const { think: _think, ...ollamaOptions } = textOptions;
|
|
165
220
|
const response = await this.ollamaService.generateResponse({
|
|
166
221
|
model: target.actualModelName,
|
|
167
222
|
prompt,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"titleGenerationService.js","sourceRoot":"","sources":["../../src/services/titleGenerationService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAYH,OAAO,EACL,8BAA8B,GAE/B,MAAM,mCAAmC,CAAC;AAE3C,MAAM,CAAC,MAAM,wBAAwB,GAAG,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"titleGenerationService.js","sourceRoot":"","sources":["../../src/services/titleGenerationService.ts"],"names":[],"mappings":"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"}
|
|
@@ -140,7 +140,7 @@ export declare class WorkAgentHttpError extends Error {
|
|
|
140
140
|
readonly code: string;
|
|
141
141
|
constructor(message: string, status: number, code: string);
|
|
142
142
|
}
|
|
143
|
-
export declare function restorePersistedWorkContext(messages: WorkMessage[], provider: Pick<WorkRun, 'providerType' | 'providerId' | 'model'>, expectedStateScope?: string): OllamaChatMessage[];
|
|
143
|
+
export declare function restorePersistedWorkContext(messages: WorkMessage[], provider: Pick<WorkRun, 'providerType' | 'providerId' | 'model'>, expectedStateScope?: string, expectedUserId?: string): OllamaChatMessage[];
|
|
144
144
|
export declare function normalizeToolCalls(response: OllamaChatResponse): WorkToolCall[];
|
|
145
145
|
export declare const workAgentService: WorkAgentService;
|
|
146
146
|
export default workAgentService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workAgentService.d.ts","sourceRoot":"","sources":["../../src/services/workAgentService.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"workAgentService.d.ts","sourceRoot":"","sources":["../../src/services/workAgentService.ts"],"names":[],"mappings":"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"}
|
|
@@ -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 { isWorkDshModel } from '../cordis/work-model.js';
|
|
17
18
|
import workModelProviderService, { WORK_TOOL_ARGUMENTS_ERROR_METADATA_KEY, WORK_TOOL_ARGUMENTS_ERROR_MESSAGE, } from './workModelProviderService.js';
|
|
18
19
|
import workEventService from './workEventService.js';
|
|
19
20
|
import { buildWorkAgentSystemPrompt, buildWorkBudgetExhaustionPrompt, buildWorkComputerAmbiguityPrompt, buildWorkComputerStallPrompt, buildWorkEmptyRoundNudgePrompt, buildWorkScreenshotsUnsupportedPrompt, buildWorkStatusBlurbPrompt, workAgentSkillsForContext, WORK_WRITE_FILE_RECOMMENDED_CHARS, workToolCallBudget, } from './workAgentGuidance.js';
|
|
@@ -574,6 +575,7 @@ export class WorkAgentService {
|
|
|
574
575
|
let runDelegation;
|
|
575
576
|
let releaseExecutionLease;
|
|
576
577
|
let executionContainerSettled = false;
|
|
578
|
+
let dshDriver;
|
|
577
579
|
// Files this run created, moved, or deleted, in first-touch order. They
|
|
578
580
|
// are persisted with the run so the workspace chips survive a reload.
|
|
579
581
|
const changedFiles = [];
|
|
@@ -700,6 +702,9 @@ export class WorkAgentService {
|
|
|
700
702
|
description: 'Taught procedure demonstrated by the user.',
|
|
701
703
|
}, `skill:taught:${skill.slug}`, durableAttemptIdentity);
|
|
702
704
|
}
|
|
705
|
+
if (run.providerType === 'dsh') {
|
|
706
|
+
await workModelProviderService.assertModelSupportsTools(run.model, { providerType: run.providerType, providerId: run.providerId }, userId);
|
|
707
|
+
}
|
|
703
708
|
releaseExecutionLease = await workRuntimeService.prepare(task, controller.signal);
|
|
704
709
|
await this.throwIfCancelled(runId, controller);
|
|
705
710
|
await workTaskService.updateRun(runId, 'running', { started: true });
|
|
@@ -712,6 +717,12 @@ export class WorkAgentService {
|
|
|
712
717
|
};
|
|
713
718
|
const providerRoutingFingerprint = await workModelProviderService.getRoutingFingerprint(run.model, providerSelection, userId);
|
|
714
719
|
const providerStateScope = await workModelProviderService.getResponsesStateScope(run.model, providerSelection, userId);
|
|
720
|
+
if (run.providerType === 'dsh' || isWorkDshModel(run.model)) {
|
|
721
|
+
const { createWorkDshDriver } = await import('../cordis/dsh/work-driver.js');
|
|
722
|
+
dshDriver = await createWorkDshDriver({
|
|
723
|
+
generate: (request, observer, signal) => workModelProviderService.generateChatStreamResponse(request, providerSelection, userId, observer, signal),
|
|
724
|
+
});
|
|
725
|
+
}
|
|
715
726
|
// A5 approvals: whether side-effecting tool calls pause for review.
|
|
716
727
|
// Resolved once per run — the policy force-flag or the task opt-in;
|
|
717
728
|
// per-call rules are re-read at gate time so an Always-allow decision
|
|
@@ -807,7 +818,9 @@ export class WorkAgentService {
|
|
|
807
818
|
let response;
|
|
808
819
|
try {
|
|
809
820
|
await this.assertStableProviderRouting(run, userId, providerRoutingFingerprint);
|
|
810
|
-
response = await
|
|
821
|
+
response = await (dshDriver
|
|
822
|
+
? dshDriver.generate.bind(dshDriver)
|
|
823
|
+
: (request, observer, signal) => workModelProviderService.generateChatStreamResponse(request, providerSelection, userId, observer, signal))({
|
|
811
824
|
model: run.model,
|
|
812
825
|
messages,
|
|
813
826
|
tools: [
|
|
@@ -817,7 +830,7 @@ export class WorkAgentService {
|
|
|
817
830
|
...(externalTools?.schemas ?? []),
|
|
818
831
|
],
|
|
819
832
|
stream: true,
|
|
820
|
-
},
|
|
833
|
+
}, {
|
|
821
834
|
onContent: delta => contentStream.push(delta),
|
|
822
835
|
onReasoning: delta => reasoningStream.push(delta),
|
|
823
836
|
onUsage: usage => {
|
|
@@ -881,7 +894,15 @@ export class WorkAgentService {
|
|
|
881
894
|
undefined ||
|
|
882
895
|
providerMetadata?.[OPENAI_RESPONSES_STATE_SCOPE_METADATA_KEY] !==
|
|
883
896
|
undefined;
|
|
884
|
-
const
|
|
897
|
+
const nativeStateMetadata = run.providerType === 'dsh'
|
|
898
|
+
? toPersistedWorkChatToolCalls(run, toolCalls, boundUtf8(response.message.thinking?.trim() ?? '', 100000), { userId, metadata: objectValue(providerMetadata?.nativeDsh) })
|
|
899
|
+
: undefined;
|
|
900
|
+
if (run.providerType === 'dsh' &&
|
|
901
|
+
providerMetadata?.nativeDsh &&
|
|
902
|
+
!nativeStateMetadata)
|
|
903
|
+
throw new WorkAgentHttpError('The native provider replay state exceeds the durable Work context limit.', 502, 'WORK_PROVIDER_INVALID_TOOL_CALLS');
|
|
904
|
+
const providerStateMetadata = toPersistedWorkProviderState(run, providerMetadata) ??
|
|
905
|
+
nativeStateMetadata;
|
|
885
906
|
if (toolCalls.length > 0 &&
|
|
886
907
|
(providerStateScope || hasResponsesStateMetadata) &&
|
|
887
908
|
(providerMetadata?.[OPENAI_RESPONSES_STATE_DROPPED_METADATA_KEY] ===
|
|
@@ -915,6 +936,9 @@ export class WorkAgentService {
|
|
|
915
936
|
messages.push({
|
|
916
937
|
role: 'assistant',
|
|
917
938
|
content: '',
|
|
939
|
+
...(run.providerType === 'dsh' && reasoningContent
|
|
940
|
+
? { thinking: reasoningContent }
|
|
941
|
+
: {}),
|
|
918
942
|
providerMetadata: response.message.providerMetadata,
|
|
919
943
|
});
|
|
920
944
|
}
|
|
@@ -1000,6 +1024,9 @@ export class WorkAgentService {
|
|
|
1000
1024
|
role: 'assistant',
|
|
1001
1025
|
content: assistantContent,
|
|
1002
1026
|
tool_calls: toolCalls,
|
|
1027
|
+
...(run.providerType === 'dsh' && reasoningContent
|
|
1028
|
+
? { thinking: reasoningContent }
|
|
1029
|
+
: {}),
|
|
1003
1030
|
...(response.message.providerMetadata
|
|
1004
1031
|
? { providerMetadata: response.message.providerMetadata }
|
|
1005
1032
|
: {}),
|
|
@@ -1236,7 +1263,7 @@ export class WorkAgentService {
|
|
|
1236
1263
|
},
|
|
1237
1264
|
],
|
|
1238
1265
|
tools: [],
|
|
1239
|
-
options: run.providerType
|
|
1266
|
+
options: run.providerType !== 'ollama'
|
|
1240
1267
|
? { num_predict: 2048 }
|
|
1241
1268
|
: undefined,
|
|
1242
1269
|
stream: true,
|
|
@@ -1412,10 +1439,15 @@ export class WorkAgentService {
|
|
|
1412
1439
|
finally {
|
|
1413
1440
|
this.controllers.delete(runId);
|
|
1414
1441
|
try {
|
|
1415
|
-
await
|
|
1442
|
+
await dshDriver?.dispose();
|
|
1416
1443
|
}
|
|
1417
1444
|
finally {
|
|
1418
|
-
|
|
1445
|
+
try {
|
|
1446
|
+
await settleExecutionContainer();
|
|
1447
|
+
}
|
|
1448
|
+
finally {
|
|
1449
|
+
releaseExecutionLease?.();
|
|
1450
|
+
}
|
|
1419
1451
|
}
|
|
1420
1452
|
}
|
|
1421
1453
|
}
|
|
@@ -1457,7 +1489,7 @@ export class WorkAgentService {
|
|
|
1457
1489
|
}
|
|
1458
1490
|
}
|
|
1459
1491
|
async contextMessages(task, roundLimit, computerAvailable, taughtSkills, providerStateScope, provider = task, persona, approvalsActive, peerAgents = [], delegatedBy, connectedTools = []) {
|
|
1460
|
-
const persisted = restorePersistedWorkContext(await workTaskService.getRecentModelContextMessages(task.id, 30), provider, providerStateScope);
|
|
1492
|
+
const persisted = restorePersistedWorkContext(await workTaskService.getRecentModelContextMessages(task.id, 30), provider, providerStateScope, task.userId);
|
|
1461
1493
|
return [
|
|
1462
1494
|
{
|
|
1463
1495
|
role: 'system',
|
|
@@ -1978,7 +2010,7 @@ export class WorkAgentService {
|
|
|
1978
2010
|
},
|
|
1979
2011
|
],
|
|
1980
2012
|
tools: [],
|
|
1981
|
-
options: run.providerType
|
|
2013
|
+
options: run.providerType !== 'ollama' ? { num_predict: 64 } : undefined,
|
|
1982
2014
|
stream: true,
|
|
1983
2015
|
}, {
|
|
1984
2016
|
providerType: run.providerType,
|
|
@@ -2079,14 +2111,23 @@ function toPersistedWorkProviderState(run, providerMetadata) {
|
|
|
2079
2111
|
* assistant/tool message pairs and silently drops every tool result — the
|
|
2080
2112
|
* model then re-discovers its own work each turn.
|
|
2081
2113
|
*/
|
|
2082
|
-
function toPersistedWorkChatToolCalls(run, toolCalls) {
|
|
2083
|
-
if (toolCalls.length === 0)
|
|
2114
|
+
function toPersistedWorkChatToolCalls(run, toolCalls, thinking, native) {
|
|
2115
|
+
if (toolCalls.length === 0 && !native)
|
|
2084
2116
|
return undefined;
|
|
2085
2117
|
const persisted = {
|
|
2086
2118
|
[WORK_PROVIDER_STATE_METADATA_KEY]: {
|
|
2087
2119
|
providerType: run.providerType,
|
|
2088
2120
|
...(run.providerId ? { providerId: run.providerId } : {}),
|
|
2089
2121
|
model: run.model,
|
|
2122
|
+
...(thinking ? { thinking } : {}),
|
|
2123
|
+
...(native
|
|
2124
|
+
? {
|
|
2125
|
+
userId: native.userId,
|
|
2126
|
+
...(native.metadata
|
|
2127
|
+
? { providerMetadata: { nativeDsh: native.metadata } }
|
|
2128
|
+
: {}),
|
|
2129
|
+
}
|
|
2130
|
+
: {}),
|
|
2090
2131
|
toolCalls: toolCalls.map(call => ({
|
|
2091
2132
|
id: call.id,
|
|
2092
2133
|
name: call.function.name,
|
|
@@ -2159,7 +2200,7 @@ function persistedChatToolCalls(message) {
|
|
|
2159
2200
|
}
|
|
2160
2201
|
return calls;
|
|
2161
2202
|
}
|
|
2162
|
-
export function restorePersistedWorkContext(messages, provider, expectedStateScope) {
|
|
2203
|
+
export function restorePersistedWorkContext(messages, provider, expectedStateScope, expectedUserId) {
|
|
2163
2204
|
const restored = [];
|
|
2164
2205
|
let pendingGroup;
|
|
2165
2206
|
const flushPendingGroup = () => {
|
|
@@ -2189,6 +2230,22 @@ export function restorePersistedWorkContext(messages, provider, expectedStateSco
|
|
|
2189
2230
|
(message.role === 'assistant' && message.kind === 'message')) {
|
|
2190
2231
|
flushPendingGroup();
|
|
2191
2232
|
const providerMetadata = matchingWorkProviderMetadata(message, provider, expectedStateScope);
|
|
2233
|
+
const nativeState = objectValue(message.metadata?.[WORK_PROVIDER_STATE_METADATA_KEY]);
|
|
2234
|
+
const sameNativeRoute = provider.providerType === 'dsh' &&
|
|
2235
|
+
nativeState?.providerType === 'dsh' &&
|
|
2236
|
+
nativeState.providerId === provider.providerId &&
|
|
2237
|
+
nativeState.model === provider.model;
|
|
2238
|
+
const sameNativeActor = sameNativeRoute &&
|
|
2239
|
+
typeof expectedUserId === 'string' &&
|
|
2240
|
+
nativeState?.userId === expectedUserId;
|
|
2241
|
+
const nativeThinking = sameNativeRoute &&
|
|
2242
|
+
(nativeState?.userId === undefined || sameNativeActor) &&
|
|
2243
|
+
typeof nativeState?.thinking === 'string'
|
|
2244
|
+
? nativeState.thinking
|
|
2245
|
+
: undefined;
|
|
2246
|
+
const nativeMetadata = sameNativeActor
|
|
2247
|
+
? objectValue(objectValue(nativeState?.providerMetadata)?.nativeDsh)
|
|
2248
|
+
: undefined;
|
|
2192
2249
|
// Chat-mode rounds persist their tool calls directly (no Responses
|
|
2193
2250
|
// replay state exists for them). Restore those only when the current
|
|
2194
2251
|
// provider requires no such state either — the strict Responses
|
|
@@ -2206,6 +2263,7 @@ export function restorePersistedWorkContext(messages, provider, expectedStateSco
|
|
|
2206
2263
|
: responseCalls.length;
|
|
2207
2264
|
const expectedCallIds = new Set(responseCalls.map(call => call.id));
|
|
2208
2265
|
if (!providerMetadata &&
|
|
2266
|
+
!nativeMetadata &&
|
|
2209
2267
|
message.metadata?.[WORK_EMPTY_MODEL_RESPONSE_METADATA_KEY] === true) {
|
|
2210
2268
|
// The empty-response placeholder informs the user; it is not
|
|
2211
2269
|
// something the model said, so keep it out of model context.
|
|
@@ -2213,6 +2271,7 @@ export function restorePersistedWorkContext(messages, provider, expectedStateSco
|
|
|
2213
2271
|
}
|
|
2214
2272
|
if (message.kind === 'provider_state' &&
|
|
2215
2273
|
!providerMetadata &&
|
|
2274
|
+
!nativeMetadata &&
|
|
2216
2275
|
!chatCalls) {
|
|
2217
2276
|
continue;
|
|
2218
2277
|
}
|
|
@@ -2229,6 +2288,7 @@ export function restorePersistedWorkContext(messages, provider, expectedStateSco
|
|
|
2229
2288
|
const assistant = {
|
|
2230
2289
|
role: 'assistant',
|
|
2231
2290
|
content: message.content,
|
|
2291
|
+
...(nativeThinking ? { thinking: nativeThinking } : {}),
|
|
2232
2292
|
...(responseCalls.length > 0
|
|
2233
2293
|
? {
|
|
2234
2294
|
tool_calls: responseCalls.map(call => ({
|
|
@@ -2241,7 +2301,11 @@ export function restorePersistedWorkContext(messages, provider, expectedStateSco
|
|
|
2241
2301
|
})),
|
|
2242
2302
|
}
|
|
2243
2303
|
: {}),
|
|
2244
|
-
...(providerMetadata
|
|
2304
|
+
...(providerMetadata
|
|
2305
|
+
? { providerMetadata }
|
|
2306
|
+
: nativeMetadata
|
|
2307
|
+
? { providerMetadata: { nativeDsh: nativeMetadata } }
|
|
2308
|
+
: {}),
|
|
2245
2309
|
};
|
|
2246
2310
|
if (responseCalls.length === 0) {
|
|
2247
2311
|
restored.push(assistant);
|