libre-webui 0.37.2 → 0.39.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -65
- package/backend/dist/db.js +1 -1
- package/backend/dist/index.d.ts.map +1 -1
- package/backend/dist/index.js +13 -36
- package/backend/dist/index.js.map +1 -1
- package/backend/dist/main.js +0 -12
- package/backend/dist/main.js.map +1 -1
- package/backend/dist/middleware/cors.d.ts.map +1 -1
- package/backend/dist/middleware/cors.js +5 -0
- package/backend/dist/middleware/cors.js.map +1 -1
- package/backend/dist/persistence/postgresExtensionRepositories.d.ts.map +1 -1
- package/backend/dist/persistence/postgresExtensionRepositories.js +2 -4
- package/backend/dist/persistence/postgresExtensionRepositories.js.map +1 -1
- package/backend/dist/persistence/postgresMigrationRegistry.d.ts.map +1 -1
- package/backend/dist/persistence/postgresMigrationRegistry.js +2 -0
- package/backend/dist/persistence/postgresMigrationRegistry.js.map +1 -1
- package/backend/dist/persistence/postgresWorkRunThinkMigration.d.ts +9 -0
- package/backend/dist/persistence/postgresWorkRunThinkMigration.d.ts.map +1 -0
- package/backend/dist/persistence/postgresWorkRunThinkMigration.js +39 -0
- package/backend/dist/persistence/postgresWorkRunThinkMigration.js.map +1 -0
- package/backend/dist/persistence/sqliteExtensionRepositories.d.ts.map +1 -1
- package/backend/dist/persistence/sqliteExtensionRepositories.js +2 -4
- package/backend/dist/persistence/sqliteExtensionRepositories.js.map +1 -1
- package/backend/dist/persistence/sqliteMigrations.d.ts.map +1 -1
- package/backend/dist/persistence/sqliteMigrations.js +20 -0
- package/backend/dist/persistence/sqliteMigrations.js.map +1 -1
- package/backend/dist/persistence/sqliteToPostgresMigration.d.ts.map +1 -1
- package/backend/dist/persistence/sqliteToPostgresMigration.js +1 -0
- package/backend/dist/persistence/sqliteToPostgresMigration.js.map +1 -1
- package/backend/dist/platform/workPersistence/postgresWorkPersistence.d.ts.map +1 -1
- package/backend/dist/platform/workPersistence/postgresWorkPersistence.js +3 -2
- package/backend/dist/platform/workPersistence/postgresWorkPersistence.js.map +1 -1
- package/backend/dist/platform/workPersistence/sqliteWorkPersistence.d.ts.map +1 -1
- package/backend/dist/platform/workPersistence/sqliteWorkPersistence.js +3 -3
- package/backend/dist/platform/workPersistence/sqliteWorkPersistence.js.map +1 -1
- package/backend/dist/platform/workPersistence/types.d.ts +5 -0
- package/backend/dist/platform/workPersistence/types.d.ts.map +1 -1
- package/backend/dist/platform/workPersistence/types.js.map +1 -1
- package/backend/dist/routes/agentCli.d.ts.map +1 -1
- package/backend/dist/routes/agentCli.js +8 -3
- package/backend/dist/routes/agentCli.js.map +1 -1
- package/backend/dist/routes/{cordis.d.ts → strands.d.ts} +1 -1
- package/backend/dist/routes/strands.d.ts.map +1 -0
- package/backend/dist/routes/strands.js +300 -0
- package/backend/dist/routes/strands.js.map +1 -0
- package/backend/dist/routes/work.d.ts.map +1 -1
- package/backend/dist/routes/work.js +26 -23
- package/backend/dist/routes/work.js.map +1 -1
- package/backend/dist/services/agentAccessService.d.ts +0 -5
- package/backend/dist/services/agentAccessService.d.ts.map +1 -1
- package/backend/dist/services/agentAccessService.js +7 -35
- package/backend/dist/services/agentAccessService.js.map +1 -1
- package/backend/dist/services/agentCliService.d.ts +16 -23
- package/backend/dist/services/agentCliService.d.ts.map +1 -1
- package/backend/dist/services/agentCliService.js +85 -112
- package/backend/dist/services/agentCliService.js.map +1 -1
- package/backend/dist/services/authService.d.ts +3 -3
- package/backend/dist/services/authService.d.ts.map +1 -1
- package/backend/dist/services/authService.js +3 -4
- package/backend/dist/services/authService.js.map +1 -1
- package/backend/dist/services/authorizationService.d.ts +1 -1
- package/backend/dist/services/authorizationService.d.ts.map +1 -1
- package/backend/dist/services/authorizationService.js +17 -8
- package/backend/dist/services/authorizationService.js.map +1 -1
- package/backend/dist/services/followUpService.d.ts +4 -1
- package/backend/dist/services/followUpService.d.ts.map +1 -1
- package/backend/dist/services/followUpService.js +23 -2
- package/backend/dist/services/followUpService.js.map +1 -1
- package/backend/dist/services/pluginService.d.ts.map +1 -1
- package/backend/dist/services/pluginService.js +10 -6
- package/backend/dist/services/pluginService.js.map +1 -1
- package/backend/dist/services/pluginUsageService.d.ts +0 -34
- package/backend/dist/services/pluginUsageService.d.ts.map +1 -1
- package/backend/dist/services/pluginUsageService.js +0 -62
- package/backend/dist/services/pluginUsageService.js.map +1 -1
- package/backend/dist/services/strandsAccessService.d.ts +26 -0
- package/backend/dist/services/strandsAccessService.d.ts.map +1 -0
- package/backend/dist/services/strandsAccessService.js +95 -0
- package/backend/dist/services/strandsAccessService.js.map +1 -0
- package/backend/dist/services/thinkingSummaryService.d.ts +2 -3
- package/backend/dist/services/thinkingSummaryService.d.ts.map +1 -1
- package/backend/dist/services/thinkingSummaryService.js +13 -27
- package/backend/dist/services/thinkingSummaryService.js.map +1 -1
- package/backend/dist/services/titleGenerationService.d.ts +7 -18
- package/backend/dist/services/titleGenerationService.d.ts.map +1 -1
- package/backend/dist/services/titleGenerationService.js +15 -36
- 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 +17 -60
- package/backend/dist/services/workAgentService.js.map +1 -1
- package/backend/dist/services/workModelProviderService.d.ts +1 -4
- package/backend/dist/services/workModelProviderService.d.ts.map +1 -1
- package/backend/dist/services/workModelProviderService.js +60 -50
- package/backend/dist/services/workModelProviderService.js.map +1 -1
- package/backend/dist/services/workTaskService.d.ts +3 -2
- package/backend/dist/services/workTaskService.d.ts.map +1 -1
- package/backend/dist/services/workTaskService.js +11 -7
- package/backend/dist/services/workTaskService.js.map +1 -1
- package/backend/dist/strands/catalog.d.ts +57 -0
- package/backend/dist/strands/catalog.d.ts.map +1 -0
- package/backend/dist/strands/catalog.js +241 -0
- package/backend/dist/strands/catalog.js.map +1 -0
- package/backend/dist/strands/engine.d.ts +131 -0
- package/backend/dist/strands/engine.d.ts.map +1 -0
- package/backend/dist/strands/engine.js +477 -0
- package/backend/dist/strands/engine.js.map +1 -0
- package/backend/dist/strands/harness.d.ts +14 -0
- package/backend/dist/strands/harness.d.ts.map +1 -0
- package/backend/dist/strands/harness.js +41 -0
- package/backend/dist/strands/harness.js.map +1 -0
- package/backend/dist/strands/model.d.ts +24 -0
- package/backend/dist/strands/model.d.ts.map +1 -0
- package/backend/dist/strands/model.js +381 -0
- package/backend/dist/strands/model.js.map +1 -0
- package/backend/dist/strands/runtime.d.ts +4 -0
- package/backend/dist/strands/runtime.d.ts.map +1 -0
- package/backend/dist/{cordis/work-model.js → strands/runtime.js} +16 -12
- package/backend/dist/strands/runtime.js.map +1 -0
- package/backend/dist/strands/sandbox.d.ts +24 -0
- package/backend/dist/strands/sandbox.d.ts.map +1 -0
- package/backend/dist/strands/sandbox.js +156 -0
- package/backend/dist/strands/sandbox.js.map +1 -0
- package/backend/dist/strands/work-driver.d.ts +11 -0
- package/backend/dist/strands/work-driver.d.ts.map +1 -0
- package/backend/dist/strands/work-driver.js +443 -0
- package/backend/dist/strands/work-driver.js.map +1 -0
- package/backend/dist/strands/work-model.d.ts +7 -0
- package/backend/dist/strands/work-model.d.ts.map +1 -0
- package/backend/dist/strands/work-model.js +42 -0
- package/backend/dist/strands/work-model.js.map +1 -0
- package/backend/dist/types/work.d.ts +7 -11
- package/backend/dist/types/work.d.ts.map +1 -1
- package/backend/dist/types/work.js.map +1 -1
- package/backend/dist/utils/bedrockMantle.d.ts +46 -0
- package/backend/dist/utils/bedrockMantle.d.ts.map +1 -0
- package/backend/dist/utils/bedrockMantle.js +206 -0
- package/backend/dist/utils/bedrockMantle.js.map +1 -0
- package/backend/dist/utils/corsOriginPolicy.d.ts +10 -0
- package/backend/dist/utils/corsOriginPolicy.d.ts.map +1 -0
- package/backend/dist/utils/corsOriginPolicy.js +70 -0
- package/backend/dist/utils/corsOriginPolicy.js.map +1 -0
- package/backend/dist/utils/pluginChatAdapter.d.ts +36 -0
- package/backend/dist/utils/pluginChatAdapter.d.ts.map +1 -1
- package/backend/dist/utils/pluginChatAdapter.js +122 -47
- package/backend/dist/utils/pluginChatAdapter.js.map +1 -1
- package/backend/dist/utils/pluginDefinitionTrust.d.ts.map +1 -1
- package/backend/dist/utils/pluginDefinitionTrust.js +3 -2
- package/backend/dist/utils/pluginDefinitionTrust.js.map +1 -1
- package/backend/dist/utils/pluginValidation.d.ts +1 -1
- package/backend/dist/utils/pluginValidation.d.ts.map +1 -1
- package/backend/dist/utils/pluginValidation.js +11 -0
- package/backend/dist/utils/pluginValidation.js.map +1 -1
- package/backend/package.json +6 -36
- package/frontend/dist/artifact-runtime/.build-fingerprint +1 -1
- package/frontend/dist/artifact-runtime/babel.js +170 -170
- 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/mathjs.js +1 -1
- package/frontend/dist/artifact-runtime/mermaid.js +1 -1
- package/frontend/dist/artifact-runtime/plotly.js +1 -1
- package/frontend/dist/artifact-runtime/react.js +3 -3
- package/frontend/dist/assets/index-D99DS5c6.js +57 -0
- package/frontend/dist/assets/index-Dz1JufgZ.css +1 -0
- package/frontend/dist/assets/{markdown-math-D1Bj3pDB.css → markdown-math-DzFXvcrH.css} +1 -1
- package/frontend/dist/index.html +34 -34
- package/frontend/dist/js/{ArtifactContainer-D4v4l15L.js → ArtifactContainer-Cn7X9HGm.js} +1 -1
- package/frontend/dist/js/{ArtifactDemoPage-B2uaVpsi.js → ArtifactDemoPage-Ddpy2O_v.js} +1 -1
- package/frontend/dist/js/{ArtifactSandboxFrame-DlWJHI-r.js → ArtifactSandboxFrame-CdsAqv8H.js} +1 -1
- package/frontend/dist/js/{ArtifactSlideOutPanel-laZ98QKB.js → ArtifactSlideOutPanel-cVd9X80o.js} +1 -1
- package/frontend/dist/js/AutomationModal-B4UaWjkk.js +1 -0
- package/frontend/dist/js/AutomationsPage-huCrvLUp.js +1 -0
- package/frontend/dist/js/{AvatarUpload-KaBaTKoG.js → AvatarUpload-CG-w6Mpt.js} +1 -1
- package/frontend/dist/js/{Button-CGMYia4g.js → Button-j68Q8KVh.js} +1 -1
- package/frontend/dist/js/{CalendarPage-Dc7r-86c.js → CalendarPage-CZXT1w99.js} +1 -1
- package/frontend/dist/js/ChannelsPage-DbtdHnSL.js +1 -0
- package/frontend/dist/js/ChatPage-BZE65kiq.js +14 -0
- package/frontend/dist/js/ConnectModels-DD4bLgdq.js +1 -0
- package/frontend/dist/js/{EvaluationsPage-BB7sPhIR.js → EvaluationsPage-Dq53LaXd.js} +2 -2
- package/frontend/dist/js/{FirstTimeSetup-elqSi9JH.js → FirstTimeSetup-BoJIfuQT.js} +1 -1
- package/frontend/dist/js/GalleryPage-DKwqeB2A.js +1 -0
- package/frontend/dist/js/HomePage-C8bCJfls.js +1 -0
- package/frontend/dist/js/LanguageSwitcher-B_YyU5JG.js +1 -0
- package/frontend/dist/js/{Logo-HZvdAk2c.js → Logo-DnfVtjgj.js} +1 -1
- package/frontend/dist/js/{LogoMark-GJnfMXsk.js → LogoMark-BzObGdA9.js} +1 -1
- package/frontend/dist/js/{ModelManagerModals-Bk6OQzJI.js → ModelManagerModals-BzjZ-QwL.js} +1 -1
- package/frontend/dist/js/NotesPage-CnaAp_w_.js +3 -0
- package/frontend/dist/js/{OptimizedSyntaxHighlighter-CzzV6ONG.js → OptimizedSyntaxHighlighter-B0g8cxZQ.js} +1 -1
- package/frontend/dist/js/OptimizedSyntaxHighlighter-B_BbHeO1.js +1 -0
- package/frontend/dist/js/{PasswordStrengthMeter-DasfJa4P.js → PasswordStrengthMeter-DI4RDv67.js} +1 -1
- package/frontend/dist/js/{PersonasPage-CIJINcQK.js → PersonasPage-CH3GUKph.js} +2 -2
- package/frontend/dist/js/PluginUsagePage-d54K2gAj.js +1 -0
- package/frontend/dist/js/{RichMessageContent-DxCHlUlY.js → RichMessageContent-BfYbVBFz.js} +2 -2
- package/frontend/dist/js/RichMessageContent-CDxxs3Tt.js +1 -0
- package/frontend/dist/js/SettingsModal-BvtJcvow.js +19 -0
- package/frontend/dist/js/{SettingsToggle-oxvw7ulA.js → SettingsToggle-DrJ0Bapi.js} +1 -1
- package/frontend/dist/js/{ShareDialog-Bhpt_Y1N.js → ShareDialog-DaSxkTKS.js} +1 -1
- package/frontend/dist/js/StrandsPage-BQwz0mWq.js +1 -0
- package/frontend/dist/js/{SystemPage-BfhVXqar.js → SystemPage-BqNZoFxR.js} +1 -1
- package/frontend/dist/js/{TurnstileWidget-CVepEMEQ.js → TurnstileWidget-tI50c7Kc.js} +1 -1
- package/frontend/dist/js/{UserManagementPage-2yHv89ZA.js → UserManagementPage-UvPjA9RP.js} +1 -1
- package/frontend/dist/js/UserManagementPanel-C3T1ReJJ.js +1 -0
- package/frontend/dist/js/{WhatsNewModal-Dl69bG2T.js → WhatsNewModal-CLcU2Ugk.js} +1 -1
- package/frontend/dist/js/WorkPage-BpjGn--1.js +8 -0
- package/frontend/dist/js/api-BrHW-VGd.js +14 -0
- package/frontend/dist/js/api-K_hhqPdx.js +1 -0
- package/frontend/dist/js/{appNavigation-R8iKverf.js → appNavigation-B6xYIgLi.js} +1 -1
- package/frontend/dist/js/appStore-DkRdQQeY.js +2 -0
- package/frontend/dist/js/appVersion-BVtSqLVj.js +1 -0
- package/frontend/dist/js/ar-XTZGEtBr.js +2 -0
- package/frontend/dist/js/authStore-DBS6Kbvh.js +1 -0
- package/frontend/dist/js/{authStore-D8fc-Hl0.js → authStore-DjAsRpNL.js} +3 -3
- package/frontend/dist/js/bn-JiK7ZWmy.js +2 -0
- package/frontend/dist/js/chatStore-DpVxt9VX.js +3 -0
- package/frontend/dist/js/{client-BeJbHHWx.js → client-DppLngAs.js} +2 -2
- package/frontend/dist/js/{config-D6Kcp5n3.js → config-4_s8hdqO.js} +1 -1
- package/frontend/dist/js/cs-D8ju18CO.js +2 -0
- package/frontend/dist/js/da-BJWcAoUc.js +2 -0
- package/frontend/dist/js/de-CLJLmy69.js +2 -0
- package/frontend/dist/js/es-BvqHEL-3.js +2 -0
- package/frontend/dist/js/{evaluationsApi-2YwZBPk5.js → evaluationsApi-DyuW7IJ_.js} +1 -1
- package/frontend/dist/js/fr-B8ZoZomI.js +2 -0
- package/frontend/dist/js/hi-AzJLALo-.js +2 -0
- package/frontend/dist/js/id-DZYGQhvC.js +2 -0
- package/frontend/dist/js/is-Da_kvtzW.js +2 -0
- package/frontend/dist/js/it-B90zSlqn.js +2 -0
- package/frontend/dist/js/ja-DU_K1GOr.js +2 -0
- package/frontend/dist/js/ko-DicfoO-e.js +2 -0
- package/frontend/dist/js/{markdown-CZ1tYEW8.js → markdown-DU84620G.js} +1 -1
- package/frontend/dist/js/{markdown-core-KjS96SYW.js → markdown-core-Cyql92Hg.js} +1 -1
- package/frontend/dist/js/{markdown-html-DQEwrWcf.js → markdown-html-CUc2fCgY.js} +1 -1
- package/frontend/dist/js/{markdown-math-CKi32S5d.js → markdown-math-DxPfMKvO.js} +1 -1
- package/frontend/dist/js/{markdownHtml-lrXhxBhK.js → markdownHtml-KhS0cFNH.js} +1 -1
- package/frontend/dist/js/markdownMath-CsfRQAcz.js +1 -0
- package/frontend/dist/js/{messageCodeStyles-D4haBw80.js → messageCodeStyles-CuQPkfEK.js} +1 -1
- package/frontend/dist/js/ms-CfH7wjUY.js +2 -0
- package/frontend/dist/js/nl-ELlOz-B3.js +2 -0
- package/frontend/dist/js/pl-33dayyUk.js +2 -0
- package/frontend/dist/js/pt-aIXSQPCT.js +2 -0
- package/frontend/dist/js/react-vendor-CR5VJ85Q.js +9 -0
- package/frontend/dist/js/{router-vendor-HZm4FR0A.js → router-vendor-DqMnEJWK.js} +1 -1
- package/frontend/dist/js/ru-BSvGtBtW.js +2 -0
- package/frontend/dist/js/{standalone-DbyFjvTU.js → standalone-D_lg5NC9.js} +1 -1
- package/frontend/dist/js/strandsApi-BFbeEpAY.js +2 -0
- package/frontend/dist/js/sv-B7KOz81W.js +2 -0
- package/frontend/dist/js/{syntax-highlight-DNc3FFCa.js → syntax-highlight-D7dQ5s5-.js} +1 -1
- package/frontend/dist/js/{teamEventStream-omPy51va.js → teamEventStream-DsAS6P4m.js} +1 -1
- package/frontend/dist/js/th-DgpjGxvA.js +2 -0
- package/frontend/dist/js/tr-BQTbl2h-.js +2 -0
- package/frontend/dist/js/{ui-D5-4niRk.js → ui-Aq8MP7Ph.js} +2 -2
- package/frontend/dist/js/ui-vendor-DVTj_sKN.js +1 -0
- package/frontend/dist/js/uk-JLymloot.js +2 -0
- package/frontend/dist/js/{useChat-DnGClJeX.js → useChat-D3ZAGz70.js} +4 -4
- package/frontend/dist/js/useDialogFocus-zSGHkpE4.js +1 -0
- package/frontend/dist/js/useDictation-B6l8QzeM.js +1 -0
- package/frontend/dist/js/{useQuery-hWmQjdLu.js → useQuery-BTKpXudI.js} +1 -1
- package/frontend/dist/js/{useTranslation-B9kflK9S.js → useTranslation-Boi0fB1B.js} +1 -1
- package/frontend/dist/js/utils-B-Bhh1pF.js +1 -0
- package/frontend/dist/js/utils-vendor-DPJG-EG_.js +1 -0
- package/frontend/dist/js/vi-BXdLOJ8q.js +2 -0
- package/frontend/dist/js/{work-DmJpVPPO.js → work-CdbmBok5.js} +1 -1
- package/frontend/dist/js/workApi-D1xtiG3Q.js +1 -0
- package/frontend/dist/js/{workApi-C5InfT8x.js → workApi-UPxumrEF.js} +1 -1
- package/frontend/dist/js/workModels-BM2Zyiba.js +1 -0
- package/frontend/dist/js/zh-gdUf9sXa.js +2 -0
- package/package.json +11 -40
- package/plugins/anthropic.json +3 -1
- package/plugins/bedrock.json +86 -0
- package/plugins/openrouter.json +2 -0
- package/backend/dist/cordis/contracts.d.ts +0 -270
- package/backend/dist/cordis/contracts.d.ts.map +0 -1
- package/backend/dist/cordis/contracts.js +0 -32
- package/backend/dist/cordis/contracts.js.map +0 -1
- package/backend/dist/cordis/dsh/chat-model.d.ts +0 -16
- package/backend/dist/cordis/dsh/chat-model.d.ts.map +0 -1
- package/backend/dist/cordis/dsh/chat-model.js +0 -104
- package/backend/dist/cordis/dsh/chat-model.js.map +0 -1
- package/backend/dist/cordis/dsh/engine-plugin.d.ts +0 -186
- package/backend/dist/cordis/dsh/engine-plugin.d.ts.map +0 -1
- package/backend/dist/cordis/dsh/engine-plugin.js +0 -1116
- package/backend/dist/cordis/dsh/engine-plugin.js.map +0 -1
- package/backend/dist/cordis/dsh/librewebui-llm-adapter.d.ts +0 -175
- package/backend/dist/cordis/dsh/librewebui-llm-adapter.d.ts.map +0 -1
- package/backend/dist/cordis/dsh/librewebui-llm-adapter.js +0 -480
- package/backend/dist/cordis/dsh/librewebui-llm-adapter.js.map +0 -1
- package/backend/dist/cordis/dsh/model-identity.d.ts +0 -12
- package/backend/dist/cordis/dsh/model-identity.d.ts.map +0 -1
- package/backend/dist/cordis/dsh/model-identity.js +0 -87
- package/backend/dist/cordis/dsh/model-identity.js.map +0 -1
- package/backend/dist/cordis/dsh/native-provider-client.d.ts +0 -44
- package/backend/dist/cordis/dsh/native-provider-client.d.ts.map +0 -1
- package/backend/dist/cordis/dsh/native-provider-client.js +0 -524
- package/backend/dist/cordis/dsh/native-provider-client.js.map +0 -1
- package/backend/dist/cordis/dsh/native-provider-plugin.d.ts +0 -11
- package/backend/dist/cordis/dsh/native-provider-plugin.d.ts.map +0 -1
- package/backend/dist/cordis/dsh/native-provider-plugin.js +0 -416
- package/backend/dist/cordis/dsh/native-provider-plugin.js.map +0 -1
- package/backend/dist/cordis/dsh/native-provider-protocol.d.ts +0 -37
- package/backend/dist/cordis/dsh/native-provider-protocol.d.ts.map +0 -1
- package/backend/dist/cordis/dsh/native-provider-protocol.js +0 -325
- package/backend/dist/cordis/dsh/native-provider-protocol.js.map +0 -1
- package/backend/dist/cordis/dsh/provider-handler.d.ts +0 -36
- package/backend/dist/cordis/dsh/provider-handler.d.ts.map +0 -1
- package/backend/dist/cordis/dsh/provider-handler.js +0 -582
- package/backend/dist/cordis/dsh/provider-handler.js.map +0 -1
- package/backend/dist/cordis/dsh/session-files.d.ts +0 -9
- package/backend/dist/cordis/dsh/session-files.d.ts.map +0 -1
- package/backend/dist/cordis/dsh/session-files.js +0 -60
- package/backend/dist/cordis/dsh/session-files.js.map +0 -1
- package/backend/dist/cordis/dsh/session-settings.d.ts +0 -15
- package/backend/dist/cordis/dsh/session-settings.d.ts.map +0 -1
- package/backend/dist/cordis/dsh/session-settings.js +0 -51
- package/backend/dist/cordis/dsh/session-settings.js.map +0 -1
- package/backend/dist/cordis/dsh/work-driver.d.ts +0 -12
- package/backend/dist/cordis/dsh/work-driver.d.ts.map +0 -1
- package/backend/dist/cordis/dsh/work-driver.js +0 -402
- package/backend/dist/cordis/dsh/work-driver.js.map +0 -1
- package/backend/dist/cordis/dsh/workspace-policy.d.ts +0 -10
- package/backend/dist/cordis/dsh/workspace-policy.d.ts.map +0 -1
- package/backend/dist/cordis/dsh/workspace-policy.js +0 -44
- package/backend/dist/cordis/dsh/workspace-policy.js.map +0 -1
- package/backend/dist/cordis/host/composition.d.ts +0 -73
- package/backend/dist/cordis/host/composition.d.ts.map +0 -1
- package/backend/dist/cordis/host/composition.js +0 -205
- package/backend/dist/cordis/host/composition.js.map +0 -1
- package/backend/dist/cordis/host/config.d.ts +0 -159
- package/backend/dist/cordis/host/config.d.ts.map +0 -1
- package/backend/dist/cordis/host/config.js +0 -184
- package/backend/dist/cordis/host/config.js.map +0 -1
- package/backend/dist/cordis/host/host.d.ts +0 -74
- package/backend/dist/cordis/host/host.d.ts.map +0 -1
- package/backend/dist/cordis/host/host.js +0 -420
- package/backend/dist/cordis/host/host.js.map +0 -1
- package/backend/dist/cordis/host/loader-entry.d.ts +0 -41
- package/backend/dist/cordis/host/loader-entry.d.ts.map +0 -1
- package/backend/dist/cordis/host/loader-entry.js +0 -52
- package/backend/dist/cordis/host/loader-entry.js.map +0 -1
- package/backend/dist/cordis/host/model.d.ts +0 -45
- package/backend/dist/cordis/host/model.d.ts.map +0 -1
- package/backend/dist/cordis/host/model.js +0 -54
- package/backend/dist/cordis/host/model.js.map +0 -1
- package/backend/dist/cordis/host/privacy.d.ts +0 -8
- package/backend/dist/cordis/host/privacy.d.ts.map +0 -1
- package/backend/dist/cordis/host/privacy.js +0 -73
- package/backend/dist/cordis/host/privacy.js.map +0 -1
- package/backend/dist/cordis/index.d.ts +0 -14
- package/backend/dist/cordis/index.d.ts.map +0 -1
- package/backend/dist/cordis/index.js +0 -30
- package/backend/dist/cordis/index.js.map +0 -1
- package/backend/dist/cordis/runtime.d.ts +0 -97
- package/backend/dist/cordis/runtime.d.ts.map +0 -1
- package/backend/dist/cordis/runtime.js +0 -231
- package/backend/dist/cordis/runtime.js.map +0 -1
- package/backend/dist/cordis/work-model.d.ts +0 -7
- package/backend/dist/cordis/work-model.d.ts.map +0 -1
- package/backend/dist/cordis/work-model.js.map +0 -1
- package/backend/dist/routes/cordis.d.ts.map +0 -1
- package/backend/dist/routes/cordis.js +0 -440
- package/backend/dist/routes/cordis.js.map +0 -1
- package/backend/dist/routes/libreClaw.d.ts +0 -3
- package/backend/dist/routes/libreClaw.d.ts.map +0 -1
- package/backend/dist/routes/libreClaw.js +0 -200
- package/backend/dist/routes/libreClaw.js.map +0 -1
- package/backend/dist/services/cordisAccessService.d.ts +0 -56
- package/backend/dist/services/cordisAccessService.d.ts.map +0 -1
- package/backend/dist/services/cordisAccessService.js +0 -98
- package/backend/dist/services/cordisAccessService.js.map +0 -1
- package/backend/dist/services/libreClawService.d.ts +0 -105
- package/backend/dist/services/libreClawService.d.ts.map +0 -1
- package/backend/dist/services/libreClawService.js +0 -169
- package/backend/dist/services/libreClawService.js.map +0 -1
- package/frontend/dist/assets/index-C8_AByBq.css +0 -1
- package/frontend/dist/assets/index-DWLnkKwj.js +0 -16
- package/frontend/dist/js/AutomationModal-CjjiEZFA.js +0 -1
- package/frontend/dist/js/AutomationsPage-jnWmD58y.js +0 -1
- package/frontend/dist/js/ChannelsPage-DHPabX1e.js +0 -1
- package/frontend/dist/js/ChatPage-ZvGp-iqV.js +0 -14
- package/frontend/dist/js/ConnectModels-aUTD6s9B.js +0 -1
- package/frontend/dist/js/CordisPage-DZKcpPVj.js +0 -1
- package/frontend/dist/js/GalleryPage-CrlNRnkn.js +0 -1
- package/frontend/dist/js/HomePage-lR9h7_a1.js +0 -1
- package/frontend/dist/js/LanguageSwitcher-CWkbzpxT.js +0 -1
- package/frontend/dist/js/LibreClawPage-P19FnNlu.js +0 -1
- package/frontend/dist/js/NotesPage-DopG0M4B.js +0 -3
- package/frontend/dist/js/OptimizedSyntaxHighlighter-ajqwyBQm.js +0 -1
- package/frontend/dist/js/PluginUsagePage-Cj0mUxD8.js +0 -1
- package/frontend/dist/js/RichMessageContent-BZndQSJU.js +0 -1
- package/frontend/dist/js/SettingsModal-wAuFQOE4.js +0 -19
- package/frontend/dist/js/UserManagementPanel-BU95ZPOv.js +0 -1
- package/frontend/dist/js/WorkPage-CSderbeT.js +0 -8
- package/frontend/dist/js/api-CU-JXx2u.js +0 -1
- package/frontend/dist/js/api-DPXCtanG.js +0 -14
- package/frontend/dist/js/appStore-BD70bvas.js +0 -2
- package/frontend/dist/js/appVersion-C7sxqgMd.js +0 -1
- package/frontend/dist/js/ar-Cq-DrSYL.js +0 -2
- package/frontend/dist/js/authStore-FNKLFUQp.js +0 -1
- package/frontend/dist/js/bn-BqxLh-KL.js +0 -2
- package/frontend/dist/js/chatStore-CK5ojwft.js +0 -3
- package/frontend/dist/js/cordisApi-BS8QMSV4.js +0 -2
- package/frontend/dist/js/cs-D2DDNZf-.js +0 -2
- package/frontend/dist/js/da-BciY-TSG.js +0 -2
- package/frontend/dist/js/de-DjU_eXQ-.js +0 -2
- package/frontend/dist/js/es-ChIEs80I.js +0 -2
- package/frontend/dist/js/fr-Bi8BGRW4.js +0 -2
- package/frontend/dist/js/hi-BMsCnWg7.js +0 -2
- package/frontend/dist/js/i18next-DOICz7ZY.js +0 -1
- package/frontend/dist/js/id-CpcN1vhk.js +0 -2
- package/frontend/dist/js/is-DkUy2cmP.js +0 -2
- package/frontend/dist/js/it-BglK9DRZ.js +0 -2
- package/frontend/dist/js/ja-IrprzwLJ.js +0 -2
- package/frontend/dist/js/ko--wwEsMPi.js +0 -2
- package/frontend/dist/js/markdownMath-B0BpyFBS.js +0 -1
- package/frontend/dist/js/ms-BWj59y7-.js +0 -2
- package/frontend/dist/js/nl-D-QndW_A.js +0 -2
- package/frontend/dist/js/pl-Dw7d7iDV.js +0 -2
- package/frontend/dist/js/pt-BI53uHJw.js +0 -2
- package/frontend/dist/js/react-vendor-wiHys0m2.js +0 -9
- package/frontend/dist/js/ru-JKyTgPg9.js +0 -2
- package/frontend/dist/js/sv-BIkBLPSQ.js +0 -2
- package/frontend/dist/js/th-CZ_LcCU0.js +0 -2
- package/frontend/dist/js/tr-B265byx1.js +0 -2
- package/frontend/dist/js/ui-vendor-BhHHyHk3.js +0 -1
- package/frontend/dist/js/uk-VTAlChwf.js +0 -2
- package/frontend/dist/js/useDialogFocus-BPTG_Zmy.js +0 -1
- package/frontend/dist/js/useDictation-D7zVBjDJ.js +0 -1
- package/frontend/dist/js/utils-p8Gt72YP.js +0 -1
- package/frontend/dist/js/utils-vendor-DISWt2y9.js +0 -1
- package/frontend/dist/js/vi-D8rXh-53.js +0 -2
- package/frontend/dist/js/workApi-FV75LKJn.js +0 -1
- package/frontend/dist/js/workModels-MzU2Ab7l.js +0 -1
- package/frontend/dist/js/zh-BEGd9iBD.js +0 -2
- package/scripts/prepare-dsh-provider.mjs +0 -124
|
@@ -1,416 +0,0 @@
|
|
|
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
|
-
/** Native DSH plugin exposing only its LLM service through a private local socket. */
|
|
18
|
-
import { randomUUID } from 'node:crypto';
|
|
19
|
-
import { once } from 'node:events';
|
|
20
|
-
import { chmod, lstat, mkdir, realpath, unlink } from 'node:fs/promises';
|
|
21
|
-
import { createServer, } from 'node:http';
|
|
22
|
-
import path from 'node:path';
|
|
23
|
-
import { MAX_REQUEST_BYTES, MAX_RESPONSE_BYTES, NATIVE_PROVIDER_INSTANCE_HEADER, NativeProviderProtocolError, parseNativeProviderCatalog, parseNativeProviderChunk, parseNativeProviderRequest, } from './native-provider-protocol.js';
|
|
24
|
-
export const name = 'libre-webui-native-provider';
|
|
25
|
-
export const inject = ['llm'];
|
|
26
|
-
function configuration(value) {
|
|
27
|
-
if (!value ||
|
|
28
|
-
typeof value !== 'object' ||
|
|
29
|
-
Array.isArray(value) ||
|
|
30
|
-
Object.keys(value).some(key => !['socketPath', 'requestTimeoutMs', 'maxConcurrentRequests'].includes(key)) ||
|
|
31
|
-
typeof value.socketPath !== 'string' ||
|
|
32
|
-
!path.isAbsolute(value.socketPath) ||
|
|
33
|
-
path.resolve(value.socketPath) !== value.socketPath ||
|
|
34
|
-
Buffer.byteLength(value.socketPath) > 100) {
|
|
35
|
-
throw new Error('Native provider socketPath must be an absolute canonical Unix socket path of at most 100 bytes.');
|
|
36
|
-
}
|
|
37
|
-
const requestTimeoutMs = value.requestTimeoutMs ?? 600000;
|
|
38
|
-
const maxConcurrentRequests = value.maxConcurrentRequests ?? 8;
|
|
39
|
-
if (!Number.isSafeInteger(requestTimeoutMs) ||
|
|
40
|
-
requestTimeoutMs < 10 ||
|
|
41
|
-
requestTimeoutMs > 3600000 ||
|
|
42
|
-
!Number.isSafeInteger(maxConcurrentRequests) ||
|
|
43
|
-
maxConcurrentRequests < 1 ||
|
|
44
|
-
maxConcurrentRequests > 64) {
|
|
45
|
-
throw new Error('Invalid native provider request limits.');
|
|
46
|
-
}
|
|
47
|
-
return {
|
|
48
|
-
socketPath: value.socketPath,
|
|
49
|
-
requestTimeoutMs,
|
|
50
|
-
maxConcurrentRequests,
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
async function prepareDirectory(socketPath) {
|
|
54
|
-
if (typeof process.getuid !== 'function')
|
|
55
|
-
throw new Error('Native provider sockets require a POSIX host.');
|
|
56
|
-
const uid = process.getuid();
|
|
57
|
-
const parent = path.dirname(socketPath);
|
|
58
|
-
let ancestor = path.parse(parent).root;
|
|
59
|
-
for (const segment of parent
|
|
60
|
-
.slice(ancestor.length)
|
|
61
|
-
.split(path.sep)
|
|
62
|
-
.filter(Boolean)) {
|
|
63
|
-
ancestor = path.join(ancestor, segment);
|
|
64
|
-
const existing = await lstat(ancestor).catch(error => {
|
|
65
|
-
if (error.code === 'ENOENT')
|
|
66
|
-
return undefined;
|
|
67
|
-
throw error;
|
|
68
|
-
});
|
|
69
|
-
if (existing && (!existing.isDirectory() || existing.isSymbolicLink())) {
|
|
70
|
-
throw new Error('Native provider socket directory cannot contain symbolic links.');
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
await mkdir(parent, { recursive: true, mode: 0o700 });
|
|
74
|
-
const info = await lstat(parent);
|
|
75
|
-
if (!info.isDirectory() ||
|
|
76
|
-
info.isSymbolicLink() ||
|
|
77
|
-
info.uid !== uid ||
|
|
78
|
-
(info.mode & 0o777) !== 0o700 ||
|
|
79
|
-
(await realpath(parent)) !== parent) {
|
|
80
|
-
throw new Error('Native provider socket directory must be physical, owned by the current user, and mode 0700.');
|
|
81
|
-
}
|
|
82
|
-
const existing = await lstat(socketPath).catch(error => {
|
|
83
|
-
if (error.code === 'ENOENT')
|
|
84
|
-
return undefined;
|
|
85
|
-
throw error;
|
|
86
|
-
});
|
|
87
|
-
if (existing)
|
|
88
|
-
throw new Error('Native provider socket path already exists; refusing to replace it.');
|
|
89
|
-
return uid;
|
|
90
|
-
}
|
|
91
|
-
function abortable(promise, signal) {
|
|
92
|
-
return new Promise((resolve, reject) => {
|
|
93
|
-
const aborted = () => reject(signal.reason);
|
|
94
|
-
signal.addEventListener('abort', aborted, { once: true });
|
|
95
|
-
if (signal.aborted)
|
|
96
|
-
aborted();
|
|
97
|
-
promise
|
|
98
|
-
.then(resolve, reject)
|
|
99
|
-
.finally(() => signal.removeEventListener('abort', aborted));
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
async function requestJson(request) {
|
|
103
|
-
const length = request.headers['content-length'];
|
|
104
|
-
if (length && (!/^\d+$/.test(length) || Number(length) > MAX_REQUEST_BYTES)) {
|
|
105
|
-
throw new NativeProviderProtocolError('Native provider request exceeds its byte limit.', 413);
|
|
106
|
-
}
|
|
107
|
-
if (request.headers['content-type']?.split(';')[0].trim() !==
|
|
108
|
-
'application/json' ||
|
|
109
|
-
request.headers['content-encoding']) {
|
|
110
|
-
throw new NativeProviderProtocolError('Native provider requests require unencoded application/json.', 415);
|
|
111
|
-
}
|
|
112
|
-
const chunks = [];
|
|
113
|
-
let size = 0;
|
|
114
|
-
for await (const chunk of request) {
|
|
115
|
-
const bytes = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
|
|
116
|
-
size += bytes.length;
|
|
117
|
-
if (size > MAX_REQUEST_BYTES)
|
|
118
|
-
throw new NativeProviderProtocolError('Native provider request exceeds its byte limit.', 413);
|
|
119
|
-
chunks.push(bytes);
|
|
120
|
-
}
|
|
121
|
-
try {
|
|
122
|
-
return JSON.parse(new TextDecoder('utf-8', { fatal: true }).decode(Buffer.concat(chunks, size)));
|
|
123
|
-
}
|
|
124
|
-
catch {
|
|
125
|
-
throw new NativeProviderProtocolError('Native provider request must be valid UTF-8 JSON.');
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
/** Start one local-only provider transport, owned and closed by this plugin fiber. */
|
|
129
|
-
export async function apply(ctx, options) {
|
|
130
|
-
const config = configuration(options);
|
|
131
|
-
await ctx.effect(async () => {
|
|
132
|
-
const uid = await prepareDirectory(config.socketPath);
|
|
133
|
-
let instanceId = randomUUID();
|
|
134
|
-
let stopping = false;
|
|
135
|
-
const active = new Set();
|
|
136
|
-
const operations = new Set();
|
|
137
|
-
const connections = new Set();
|
|
138
|
-
const rotate = () => {
|
|
139
|
-
instanceId = randomUUID();
|
|
140
|
-
for (const controller of active)
|
|
141
|
-
controller.abort(new NativeProviderProtocolError('Native provider configuration changed; refresh its catalog.', 409));
|
|
142
|
-
};
|
|
143
|
-
const listeners = [
|
|
144
|
-
ctx.on('llm/adapters-updated', rotate),
|
|
145
|
-
ctx.on('credentials/reference-updated', rotate),
|
|
146
|
-
ctx.on('credentials/record-updated', rotate),
|
|
147
|
-
ctx.on('settings/updated', ns => {
|
|
148
|
-
if (ctx.llm
|
|
149
|
-
.listConfigurableProviders()
|
|
150
|
-
.some(provider => provider.settingsNs === ns))
|
|
151
|
-
rotate();
|
|
152
|
-
}),
|
|
153
|
-
];
|
|
154
|
-
const catalog = async (signal, selection) => {
|
|
155
|
-
const generation = instanceId;
|
|
156
|
-
const models = [];
|
|
157
|
-
for (const provider of ctx.llm.listProviders()) {
|
|
158
|
-
if (selection && provider.id !== selection.providerId)
|
|
159
|
-
continue;
|
|
160
|
-
try {
|
|
161
|
-
const entries = await abortable(ctx.llm.listModels(provider.id), signal);
|
|
162
|
-
for (const entry of entries) {
|
|
163
|
-
if (selection && entry.id !== selection.model)
|
|
164
|
-
continue;
|
|
165
|
-
const resolved = await abortable(ctx.llm.resolveModelInfo(provider.id, entry.id, signal), signal);
|
|
166
|
-
models.push({
|
|
167
|
-
providerId: provider.id,
|
|
168
|
-
model: entry.id,
|
|
169
|
-
name: entry.name,
|
|
170
|
-
providerName: provider.name,
|
|
171
|
-
...(resolved.context?.contextWindow
|
|
172
|
-
? { contextWindow: resolved.context.contextWindow }
|
|
173
|
-
: {}),
|
|
174
|
-
...(resolved.defaultMaxTokens
|
|
175
|
-
? { defaultMaxTokens: resolved.defaultMaxTokens }
|
|
176
|
-
: {}),
|
|
177
|
-
...(resolved.reasoning
|
|
178
|
-
? {
|
|
179
|
-
reasoning: {
|
|
180
|
-
efforts: resolved.reasoning.efforts.map(effort => ({
|
|
181
|
-
id: effort.id,
|
|
182
|
-
name: effort.name,
|
|
183
|
-
...(effort.description === undefined
|
|
184
|
-
? {}
|
|
185
|
-
: { description: effort.description }),
|
|
186
|
-
})),
|
|
187
|
-
...(resolved.reasoning.defaultEffort
|
|
188
|
-
? { defaultEffort: resolved.reasoning.defaultEffort }
|
|
189
|
-
: {}),
|
|
190
|
-
},
|
|
191
|
-
}
|
|
192
|
-
: {}),
|
|
193
|
-
});
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
catch (error) {
|
|
197
|
-
signal.throwIfAborted();
|
|
198
|
-
ctx.logger.warn('Native provider catalog group is unavailable', provider.id, error instanceof Error ? error.message : String(error));
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
signal.throwIfAborted();
|
|
202
|
-
if (generation !== instanceId)
|
|
203
|
-
throw new NativeProviderProtocolError('Native provider configuration changed; refresh its catalog.', 409);
|
|
204
|
-
return parseNativeProviderCatalog({ instanceId: generation, models });
|
|
205
|
-
};
|
|
206
|
-
const handle = async (request, response) => {
|
|
207
|
-
if (stopping || active.size >= config.maxConcurrentRequests) {
|
|
208
|
-
response.writeHead(503, {
|
|
209
|
-
'content-type': 'application/json',
|
|
210
|
-
connection: 'close',
|
|
211
|
-
});
|
|
212
|
-
response.end(JSON.stringify({
|
|
213
|
-
error: 'Native provider request capacity is unavailable.',
|
|
214
|
-
}));
|
|
215
|
-
request.resume();
|
|
216
|
-
return;
|
|
217
|
-
}
|
|
218
|
-
const controller = new AbortController();
|
|
219
|
-
const { signal } = controller;
|
|
220
|
-
active.add(controller);
|
|
221
|
-
const disconnected = () => {
|
|
222
|
-
if (!response.writableEnded)
|
|
223
|
-
controller.abort(new Error('Native provider client disconnected.'));
|
|
224
|
-
};
|
|
225
|
-
response.once('close', disconnected);
|
|
226
|
-
request.once('aborted', disconnected);
|
|
227
|
-
const timeout = setTimeout(() => controller.abort(new NativeProviderProtocolError('Native provider request timed out.', 504)), config.requestTimeoutMs);
|
|
228
|
-
timeout.unref();
|
|
229
|
-
const generation = instanceId;
|
|
230
|
-
let bytesSent = 0;
|
|
231
|
-
let finished = false;
|
|
232
|
-
let iterator;
|
|
233
|
-
const writeChunk = async (value) => {
|
|
234
|
-
const chunk = parseNativeProviderChunk(value);
|
|
235
|
-
const line = `${JSON.stringify(chunk)}\n`;
|
|
236
|
-
bytesSent += Buffer.byteLength(line);
|
|
237
|
-
if (bytesSent > MAX_RESPONSE_BYTES)
|
|
238
|
-
throw new NativeProviderProtocolError('Native provider response exceeds its byte limit.', 413);
|
|
239
|
-
if (!response.write(line))
|
|
240
|
-
await once(response, 'drain', { signal });
|
|
241
|
-
};
|
|
242
|
-
try {
|
|
243
|
-
if (request.method !== 'POST' ||
|
|
244
|
-
!['/catalog', '/generate'].includes(request.url ?? '')) {
|
|
245
|
-
throw new NativeProviderProtocolError('Unknown native provider operation.', 404);
|
|
246
|
-
}
|
|
247
|
-
const body = await abortable(requestJson(request), signal);
|
|
248
|
-
if (request.url === '/catalog') {
|
|
249
|
-
if (!body ||
|
|
250
|
-
typeof body !== 'object' ||
|
|
251
|
-
Array.isArray(body) ||
|
|
252
|
-
Object.keys(body).length !== 0) {
|
|
253
|
-
throw new NativeProviderProtocolError('Native provider catalog request must be an empty object.');
|
|
254
|
-
}
|
|
255
|
-
const result = await catalog(signal);
|
|
256
|
-
response.writeHead(200, {
|
|
257
|
-
'content-type': 'application/json',
|
|
258
|
-
[NATIVE_PROVIDER_INSTANCE_HEADER]: result.instanceId,
|
|
259
|
-
});
|
|
260
|
-
response.end(JSON.stringify(result));
|
|
261
|
-
return;
|
|
262
|
-
}
|
|
263
|
-
const parsed = parseNativeProviderRequest(body);
|
|
264
|
-
if (parsed.instanceId !== undefined &&
|
|
265
|
-
parsed.instanceId !== generation) {
|
|
266
|
-
throw new NativeProviderProtocolError('Native provider configuration changed; refresh its catalog.', 409);
|
|
267
|
-
}
|
|
268
|
-
// Generation needs only its exact route; unrelated catalogs or model
|
|
269
|
-
// metadata must not delay a healthy selected provider.
|
|
270
|
-
const available = await catalog(signal, {
|
|
271
|
-
providerId: parsed.provider,
|
|
272
|
-
model: parsed.model,
|
|
273
|
-
});
|
|
274
|
-
if (!available.models.some(model => model.providerId === parsed.provider &&
|
|
275
|
-
model.model === parsed.model)) {
|
|
276
|
-
throw new NativeProviderProtocolError('The selected native provider model is unavailable.', 422);
|
|
277
|
-
}
|
|
278
|
-
if (generation !== instanceId)
|
|
279
|
-
throw new NativeProviderProtocolError('Native provider configuration changed; refresh its catalog.', 409);
|
|
280
|
-
const { instanceId: _instanceId, ...call } = parsed;
|
|
281
|
-
response.writeHead(200, {
|
|
282
|
-
'content-type': 'application/x-ndjson',
|
|
283
|
-
[NATIVE_PROVIDER_INSTANCE_HEADER]: generation,
|
|
284
|
-
'cache-control': 'no-store',
|
|
285
|
-
});
|
|
286
|
-
iterator = ctx.llm.stream({ ...call, signal })[Symbol.asyncIterator]();
|
|
287
|
-
for (;;) {
|
|
288
|
-
const next = await abortable(Promise.resolve(iterator.next()), signal);
|
|
289
|
-
if (next.done)
|
|
290
|
-
break;
|
|
291
|
-
await writeChunk(next.value);
|
|
292
|
-
if (next.value.type === 'finish') {
|
|
293
|
-
finished = true;
|
|
294
|
-
break;
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
if (!finished)
|
|
298
|
-
throw new NativeProviderProtocolError('Native provider ended without a terminal finish.', 502);
|
|
299
|
-
response.end();
|
|
300
|
-
}
|
|
301
|
-
catch (error) {
|
|
302
|
-
controller.abort(error);
|
|
303
|
-
if (response.destroyed)
|
|
304
|
-
return;
|
|
305
|
-
if (!response.headersSent) {
|
|
306
|
-
const status = error instanceof NativeProviderProtocolError ? error.status : 502;
|
|
307
|
-
response.writeHead(status, {
|
|
308
|
-
'content-type': 'application/json',
|
|
309
|
-
connection: 'close',
|
|
310
|
-
});
|
|
311
|
-
response.end(JSON.stringify({
|
|
312
|
-
error: error instanceof NativeProviderProtocolError
|
|
313
|
-
? error.message
|
|
314
|
-
: 'Native provider request failed.',
|
|
315
|
-
}));
|
|
316
|
-
request.resume();
|
|
317
|
-
}
|
|
318
|
-
else if (!finished) {
|
|
319
|
-
const chunk = {
|
|
320
|
-
type: 'finish',
|
|
321
|
-
reason: {
|
|
322
|
-
kind: 'error',
|
|
323
|
-
failure: {
|
|
324
|
-
code: error instanceof NativeProviderProtocolError &&
|
|
325
|
-
error.status === 409
|
|
326
|
-
? 'NATIVE_PROVIDER_CHANGED'
|
|
327
|
-
: 'NATIVE_PROVIDER_STREAM_FAILED',
|
|
328
|
-
message: error instanceof NativeProviderProtocolError
|
|
329
|
-
? error.message
|
|
330
|
-
: 'Native provider generation failed.',
|
|
331
|
-
},
|
|
332
|
-
},
|
|
333
|
-
};
|
|
334
|
-
response.end(`${JSON.stringify(chunk)}\n`);
|
|
335
|
-
}
|
|
336
|
-
else
|
|
337
|
-
response.end();
|
|
338
|
-
}
|
|
339
|
-
finally {
|
|
340
|
-
clearTimeout(timeout);
|
|
341
|
-
response.removeListener('close', disconnected);
|
|
342
|
-
request.removeListener('aborted', disconnected);
|
|
343
|
-
controller.abort(new Error('Native provider request finished.'));
|
|
344
|
-
active.delete(controller);
|
|
345
|
-
// A disconnected reader must not keep teardown waiting on an adapter
|
|
346
|
-
// that ignores cancellation. Its live signal already orders it to stop.
|
|
347
|
-
if (iterator?.return) {
|
|
348
|
-
try {
|
|
349
|
-
void Promise.resolve(iterator.return()).catch(() => undefined);
|
|
350
|
-
}
|
|
351
|
-
catch {
|
|
352
|
-
// Cancellation has already been delivered through the live signal.
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
};
|
|
357
|
-
const server = createServer((request, response) => {
|
|
358
|
-
const operation = handle(request, response);
|
|
359
|
-
operations.add(operation);
|
|
360
|
-
void operation
|
|
361
|
-
.catch(() => response.destroy())
|
|
362
|
-
.finally(() => operations.delete(operation));
|
|
363
|
-
});
|
|
364
|
-
server.requestTimeout = config.requestTimeoutMs;
|
|
365
|
-
server.headersTimeout = Math.min(config.requestTimeoutMs, 60000);
|
|
366
|
-
server.on('connection', socket => {
|
|
367
|
-
connections.add(socket);
|
|
368
|
-
socket.once('close', () => connections.delete(socket));
|
|
369
|
-
});
|
|
370
|
-
server.on('clientError', (_error, socket) => socket.destroy());
|
|
371
|
-
let socketIdentity;
|
|
372
|
-
const close = async () => {
|
|
373
|
-
stopping = true;
|
|
374
|
-
listeners.forEach(dispose => dispose());
|
|
375
|
-
for (const controller of active)
|
|
376
|
-
controller.abort(new Error('Native provider plugin stopped.'));
|
|
377
|
-
const closed = new Promise(resolve => server.close(() => resolve()));
|
|
378
|
-
for (const socket of connections)
|
|
379
|
-
socket.destroy();
|
|
380
|
-
await closed;
|
|
381
|
-
await Promise.allSettled([...operations]);
|
|
382
|
-
const current = await lstat(config.socketPath).catch(error => {
|
|
383
|
-
if (error.code === 'ENOENT')
|
|
384
|
-
return undefined;
|
|
385
|
-
throw error;
|
|
386
|
-
});
|
|
387
|
-
if (current?.isSocket() &&
|
|
388
|
-
socketIdentity &&
|
|
389
|
-
current.ino === socketIdentity.ino &&
|
|
390
|
-
current.dev === socketIdentity.dev)
|
|
391
|
-
await unlink(config.socketPath);
|
|
392
|
-
};
|
|
393
|
-
try {
|
|
394
|
-
await new Promise((resolve, reject) => {
|
|
395
|
-
server.once('error', reject);
|
|
396
|
-
server.listen(config.socketPath, () => {
|
|
397
|
-
server.removeListener('error', reject);
|
|
398
|
-
resolve();
|
|
399
|
-
});
|
|
400
|
-
});
|
|
401
|
-
await chmod(config.socketPath, 0o600);
|
|
402
|
-
const socket = await lstat(config.socketPath);
|
|
403
|
-
if (!socket.isSocket() ||
|
|
404
|
-
socket.uid !== uid ||
|
|
405
|
-
(socket.mode & 0o777) !== 0o600)
|
|
406
|
-
throw new Error('Native provider socket permissions are invalid.');
|
|
407
|
-
socketIdentity = { ino: socket.ino, dev: socket.dev };
|
|
408
|
-
return close;
|
|
409
|
-
}
|
|
410
|
-
catch (error) {
|
|
411
|
-
await close();
|
|
412
|
-
throw error;
|
|
413
|
-
}
|
|
414
|
-
}, 'native-provider: private Unix socket');
|
|
415
|
-
}
|
|
416
|
-
//# sourceMappingURL=native-provider-plugin.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"native-provider-plugin.js","sourceRoot":"","sources":["../../../src/cordis/dsh/native-provider-plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/** JSON-only protocol for one-call access to a native DSH model registry. */
|
|
2
|
-
import type { GenerateOptions, StreamChunk } from '@deepseek-ai/dsh-llm';
|
|
3
|
-
export declare const MAX_REQUEST_BYTES: number;
|
|
4
|
-
export declare const MAX_CHUNK_BYTES: number;
|
|
5
|
-
export declare const MAX_RESPONSE_BYTES: number;
|
|
6
|
-
export declare const NATIVE_PROVIDER_INSTANCE_HEADER = "x-native-provider-instance";
|
|
7
|
-
export interface NativeProviderModel {
|
|
8
|
-
providerId: string;
|
|
9
|
-
model: string;
|
|
10
|
-
name: string;
|
|
11
|
-
providerName: string;
|
|
12
|
-
contextWindow?: number;
|
|
13
|
-
defaultMaxTokens?: number;
|
|
14
|
-
reasoning?: {
|
|
15
|
-
efforts: Array<{
|
|
16
|
-
id: string;
|
|
17
|
-
name: string;
|
|
18
|
-
description?: string;
|
|
19
|
-
}>;
|
|
20
|
-
defaultEffort?: string;
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
export interface NativeProviderCatalog {
|
|
24
|
-
instanceId: string;
|
|
25
|
-
models: NativeProviderModel[];
|
|
26
|
-
}
|
|
27
|
-
export type NativeProviderRequest = Omit<GenerateOptions, 'signal' | 'sessionId'> & {
|
|
28
|
-
instanceId?: string;
|
|
29
|
-
};
|
|
30
|
-
export declare class NativeProviderProtocolError extends Error {
|
|
31
|
-
readonly status: number;
|
|
32
|
-
constructor(message: string, status?: number);
|
|
33
|
-
}
|
|
34
|
-
export declare function parseNativeProviderRequest(value: unknown): NativeProviderRequest;
|
|
35
|
-
export declare function parseNativeProviderCatalog(value: unknown): NativeProviderCatalog;
|
|
36
|
-
export declare function parseNativeProviderChunk(value: unknown): StreamChunk;
|
|
37
|
-
//# sourceMappingURL=native-provider-protocol.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"native-provider-protocol.d.ts","sourceRoot":"","sources":["../../../src/cordis/dsh/native-provider-protocol.ts"],"names":[],"mappings":"AAiBA,6EAA6E;AAC7E,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEzE,eAAO,MAAM,iBAAiB,QAAkB,CAAC;AACjD,eAAO,MAAM,eAAe,QAAmB,CAAC;AAChD,eAAO,MAAM,kBAAkB,QAAoB,CAAC;AACpD,eAAO,MAAM,+BAA+B,+BAA+B,CAAC;AAE5E,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE;QACV,OAAO,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACnE,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,mBAAmB,EAAE,CAAC;CAC/B;AAED,MAAM,MAAM,qBAAqB,GAAG,IAAI,CACtC,eAAe,EACf,QAAQ,GAAG,WAAW,CACvB,GAAG;IACF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,qBAAa,2BAA4B,SAAQ,KAAK;IAGlD,QAAQ,CAAC,MAAM;IAFjB,YACE,OAAO,EAAE,MAAM,EACN,MAAM,SAAM,EAItB;CACF;AAsKD,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,GACb,qBAAqB,CA6DvB;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,GACb,qBAAqB,CA+CvB;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAqFpE"}
|