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
|
@@ -0,0 +1,42 @@
|
|
|
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
|
+
/** Engine selection stored alongside the model in Work records. */
|
|
18
|
+
export const WORK_STRANDS_MODEL_PREFIX = 'strands:';
|
|
19
|
+
/**
|
|
20
|
+
* Work records written before the Strands engine replaced the DeepSeek
|
|
21
|
+
* Harness used this prefix. They run on the Strands driver now, so stored
|
|
22
|
+
* tasks keep working without a data migration.
|
|
23
|
+
*/
|
|
24
|
+
const LEGACY_ENGINE_MODEL_PREFIXES = ['dsh:'];
|
|
25
|
+
function enginePrefix(model) {
|
|
26
|
+
const selected = model.trim();
|
|
27
|
+
if (selected.startsWith(WORK_STRANDS_MODEL_PREFIX)) {
|
|
28
|
+
return WORK_STRANDS_MODEL_PREFIX;
|
|
29
|
+
}
|
|
30
|
+
return LEGACY_ENGINE_MODEL_PREFIXES.find(prefix => selected.startsWith(prefix));
|
|
31
|
+
}
|
|
32
|
+
/** Whether Work should use the Strands driver for this model selection. */
|
|
33
|
+
export function isWorkStrandsModel(model) {
|
|
34
|
+
return enginePrefix(model) !== undefined;
|
|
35
|
+
}
|
|
36
|
+
/** Recover the provider's exact model id without changing provider identity. */
|
|
37
|
+
export function workProviderModel(model) {
|
|
38
|
+
const selected = model.trim();
|
|
39
|
+
const prefix = enginePrefix(selected);
|
|
40
|
+
return prefix ? selected.slice(prefix.length).trim() : selected;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=work-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work-model.js","sourceRoot":"","sources":["../../src/strands/work-model.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,mEAAmE;AACnE,MAAM,CAAC,MAAM,yBAAyB,GAAG,UAAU,CAAC;AAEpD;;;;GAIG;AACH,MAAM,4BAA4B,GAAG,CAAC,MAAM,CAAU,CAAC;AAEvD,SAAS,YAAY,CAAC,KAAa;IACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,QAAQ,CAAC,UAAU,CAAC,yBAAyB,CAAC,EAAE,CAAC;QACnD,OAAO,yBAAyB,CAAC;IACnC,CAAC;IACD,OAAO,4BAA4B,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAChD,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAC5B,CAAC;AACJ,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,OAAO,YAAY,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC;AAC3C,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACtC,OAAO,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;AAClE,CAAC"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import type { ThinkingPreference } from '../utils/thinkingOptions.js';
|
|
1
2
|
export type WorkTaskStatus = 'idle' | 'preparing' | 'running' | 'completed' | 'needs_input' | 'failed' | 'cancelled';
|
|
2
3
|
/** Statuses after which a task needs an explicit reopen before its preview or screen starts. */
|
|
3
4
|
export declare const FINISHED_WORK_STATUSES: readonly WorkTaskStatus[];
|
|
4
5
|
export declare const isFinishedWorkStatus: (status: WorkTaskStatus) => boolean;
|
|
5
6
|
export type WorkRunStatus = 'queued' | 'preparing' | 'running' | 'completed' | 'needs_input' | 'failed' | 'cancelled';
|
|
6
7
|
export type WorkPreviewStatus = 'stopped' | 'starting' | 'running' | 'failed';
|
|
7
|
-
export type WorkProviderType = 'ollama' | 'plugin'
|
|
8
|
+
export type WorkProviderType = 'ollama' | 'plugin';
|
|
8
9
|
export interface WorkProviderSelection {
|
|
9
10
|
providerType: WorkProviderType;
|
|
10
11
|
providerId?: string;
|
|
@@ -39,6 +40,8 @@ export interface WorkRun {
|
|
|
39
40
|
changedFiles?: string[];
|
|
40
41
|
/** Short machine reason for the terminal transition. */
|
|
41
42
|
exitState?: string;
|
|
43
|
+
/** Requested reasoning level; unset means the model's own default. */
|
|
44
|
+
think?: ThinkingPreference;
|
|
42
45
|
createdAt: number;
|
|
43
46
|
startedAt?: number;
|
|
44
47
|
finishedAt?: number;
|
|
@@ -271,16 +274,9 @@ export interface WorkCapabilities {
|
|
|
271
274
|
ollamaAvailable: boolean;
|
|
272
275
|
pluginAvailable: boolean;
|
|
273
276
|
runtimeImage: string;
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
model: string;
|
|
278
|
-
providerType: 'dsh';
|
|
279
|
-
providerId: string;
|
|
280
|
-
key: string;
|
|
281
|
-
label: string;
|
|
282
|
-
remote: true;
|
|
283
|
-
}>;
|
|
277
|
+
/** Whether this user may run Work tasks on the Strands agent engine. */
|
|
278
|
+
strands?: {
|
|
279
|
+
enabled: boolean;
|
|
284
280
|
};
|
|
285
281
|
reason?: string;
|
|
286
282
|
limits: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"work.d.ts","sourceRoot":"","sources":["../../src/types/work.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,WAAW,GACX,SAAS,GACT,WAAW,GACX,aAAa,GACb,QAAQ,GACR,WAAW,CAAC;AAEhB,gGAAgG;AAChG,eAAO,MAAM,sBAAsB,EAAE,SAAS,cAAc,EAI3D,CAAC;AAEF,eAAO,MAAM,oBAAoB,WAAY,cAAc,KAAG,OACrB,CAAC;AAE1C,MAAM,MAAM,aAAa,GACrB,QAAQ,GACR,WAAW,GACX,SAAS,GACT,WAAW,GACX,aAAa,GACb,QAAQ,GACR,WAAW,CAAC;AAEhB,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE9E,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,QAAQ,
|
|
1
|
+
{"version":3,"file":"work.d.ts","sourceRoot":"","sources":["../../src/types/work.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"work.js","sourceRoot":"","sources":["../../src/types/work.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"work.js","sourceRoot":"","sources":["../../src/types/work.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAaH,gGAAgG;AAChG,MAAM,CAAC,MAAM,sBAAsB,GAA8B;IAC/D,WAAW;IACX,QAAQ;IACR,WAAW;CACZ,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,MAAsB,EAAW,EAAE,CACtE,sBAAsB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Plugin } from '../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Amazon Bedrock through its Mantle endpoint, which takes a Bedrock API key as
|
|
4
|
+
* a bearer token and lists every model the account can call from one
|
|
5
|
+
* `/v1/models` route. Chat is split across three routes on the same host:
|
|
6
|
+
* Claude only answers the Anthropic Messages API, and the remaining models
|
|
7
|
+
* answer Chat Completions on either `/v1` or `/openai/v1` with no field in the
|
|
8
|
+
* catalog saying which. Claude is routed by its ID; the other two are tried in
|
|
9
|
+
* order and the route that answers is remembered per model.
|
|
10
|
+
*/
|
|
11
|
+
export declare const BEDROCK_PLUGIN_ID = "bedrock";
|
|
12
|
+
export declare const BEDROCK_DEFAULT_REGION = "us-east-1";
|
|
13
|
+
/** Commercial Regions that publish a bedrock-mantle endpoint. */
|
|
14
|
+
export declare const BEDROCK_MANTLE_REGIONS: readonly string[];
|
|
15
|
+
export type BedrockChatRoute = 'anthropic' | 'mantle' | 'openai';
|
|
16
|
+
export declare function isBedrockPlugin(plugin: Pick<Plugin, 'id'>): boolean;
|
|
17
|
+
export declare function isBedrockAnthropicModel(model: string): boolean;
|
|
18
|
+
/** The Claude model name without the Bedrock provider prefix. */
|
|
19
|
+
export declare function bedrockAnthropicModelName(model: string): string;
|
|
20
|
+
export declare function isBedrockMantleRegion(value: unknown): value is string;
|
|
21
|
+
/**
|
|
22
|
+
* Point a Mantle endpoint at the chosen Region. Only Mantle hosts are
|
|
23
|
+
* rewritten, and only to another listed Region, so the setting can never send
|
|
24
|
+
* the key anywhere except bedrock-mantle.<region>.api.aws.
|
|
25
|
+
*/
|
|
26
|
+
export declare function applyBedrockRegion(endpoint: string, region: unknown): string;
|
|
27
|
+
export declare function bedrockChatRoute(endpoint: string, model: string): BedrockChatRoute;
|
|
28
|
+
export declare function bedrockRouteEndpoint(endpoint: string, route: BedrockChatRoute): string;
|
|
29
|
+
/** Test hook: forget every remembered route. */
|
|
30
|
+
export declare function resetBedrockRoutes(): void;
|
|
31
|
+
/** The URL a chat request for this model goes to. */
|
|
32
|
+
export declare function pluginChatEndpoint(plugin: Pick<Plugin, 'id'>, endpoint: string, model: string): string;
|
|
33
|
+
/** Which wire format a plugin speaks for a given model. */
|
|
34
|
+
export declare function pluginChatProtocol(plugin: Pick<Plugin, 'id'>, model: string): 'anthropic' | 'gemini' | 'openai';
|
|
35
|
+
export declare function isBedrockRouteMismatch(status: number, body: unknown): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Send a chat request, retrying once on the other Chat Completions route when
|
|
38
|
+
* Mantle says the model lives there. `send` is called with the final URL; for
|
|
39
|
+
* any other plugin it runs exactly once against `pluginChatEndpoint`.
|
|
40
|
+
*/
|
|
41
|
+
export declare function sendPluginChat<T>(plugin: Pick<Plugin, 'id'>, endpoint: string, model: string, send: (url: string) => Promise<T>, mismatch: (result: T | undefined, error: unknown) => Promise<boolean>): Promise<T>;
|
|
42
|
+
/** `sendPluginChat` for fetch callers that read the Response themselves. */
|
|
43
|
+
export declare function fetchPluginChat(plugin: Pick<Plugin, 'id'>, endpoint: string, model: string, init: RequestInit, fetchImpl?: typeof fetch): Promise<Response>;
|
|
44
|
+
/** `sendPluginChat` for callers whose client throws on a non-2xx status. */
|
|
45
|
+
export declare function requestPluginChat<T>(plugin: Pick<Plugin, 'id'>, endpoint: string, model: string, send: (url: string) => Promise<T>): Promise<T>;
|
|
46
|
+
//# sourceMappingURL=bedrockMantle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bedrockMantle.d.ts","sourceRoot":"","sources":["../../src/utils/bedrockMantle.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C;;;;;;;;GAQG;AAEH,eAAO,MAAM,iBAAiB,YAAY,CAAC;AAC3C,eAAO,MAAM,sBAAsB,cAAc,CAAC;AAElD,iEAAiE;AACjE,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EAkBnD,CAAC;AAOF,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAcjE,wBAAgB,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,OAAO,CAEnE;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED,iEAAiE;AACjE,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAErE;AAcD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAM5E;AAOD,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,gBAAgB,CAQlB;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,gBAAgB,GACtB,MAAM,CAIR;AAiBD,gDAAgD;AAChD,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED,qDAAqD;AACrD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAC1B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,MAAM,CAGR;AAED,2DAA2D;AAC3D,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAC1B,KAAK,EAAE,MAAM,GACZ,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAOnC;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAI7E;AAMD;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,CAAC,EACpC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAC1B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EACjC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,GACpE,OAAO,CAAC,CAAC,CAAC,CAwBZ;AAED,4EAA4E;AAC5E,wBAAgB,eAAe,CAC7B,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAC1B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,WAAW,EACjB,SAAS,GAAE,OAAO,KAAa,GAC9B,OAAO,CAAC,QAAQ,CAAC,CAWnB;AAED,4EAA4E;AAC5E,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAC1B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAChC,OAAO,CAAC,CAAC,CAAC,CAUZ"}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Libre WebUI
|
|
3
|
+
* Copyright (C) 2025 Kroonen AI, Inc.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Amazon Bedrock through its Mantle endpoint, which takes a Bedrock API key as
|
|
19
|
+
* a bearer token and lists every model the account can call from one
|
|
20
|
+
* `/v1/models` route. Chat is split across three routes on the same host:
|
|
21
|
+
* Claude only answers the Anthropic Messages API, and the remaining models
|
|
22
|
+
* answer Chat Completions on either `/v1` or `/openai/v1` with no field in the
|
|
23
|
+
* catalog saying which. Claude is routed by its ID; the other two are tried in
|
|
24
|
+
* order and the route that answers is remembered per model.
|
|
25
|
+
*/
|
|
26
|
+
export const BEDROCK_PLUGIN_ID = 'bedrock';
|
|
27
|
+
export const BEDROCK_DEFAULT_REGION = 'us-east-1';
|
|
28
|
+
/** Commercial Regions that publish a bedrock-mantle endpoint. */
|
|
29
|
+
export const BEDROCK_MANTLE_REGIONS = [
|
|
30
|
+
'us-east-1',
|
|
31
|
+
'us-east-2',
|
|
32
|
+
'us-west-2',
|
|
33
|
+
'sa-east-1',
|
|
34
|
+
'eu-west-1',
|
|
35
|
+
'eu-west-2',
|
|
36
|
+
'eu-central-1',
|
|
37
|
+
'eu-central-2',
|
|
38
|
+
'eu-north-1',
|
|
39
|
+
'eu-south-1',
|
|
40
|
+
'ap-northeast-1',
|
|
41
|
+
'ap-northeast-2',
|
|
42
|
+
'ap-south-1',
|
|
43
|
+
'ap-southeast-1',
|
|
44
|
+
'ap-southeast-2',
|
|
45
|
+
'ap-southeast-3',
|
|
46
|
+
'ap-southeast-4',
|
|
47
|
+
];
|
|
48
|
+
const MANTLE_HOST = /^bedrock-mantle\.([a-z0-9-]+)\.api\.aws$/;
|
|
49
|
+
const ANTHROPIC_MODEL = /^(?:[a-z]{2,6}\.)?anthropic\./;
|
|
50
|
+
const ROUTE_MISMATCH = /(?:isn't|is not|not) supported on this route/i;
|
|
51
|
+
const ROUTE_CACHE_LIMIT = 512;
|
|
52
|
+
const ROUTE_PATHS = {
|
|
53
|
+
anthropic: '/anthropic/v1/messages',
|
|
54
|
+
mantle: '/v1/chat/completions',
|
|
55
|
+
openai: '/openai/v1/chat/completions',
|
|
56
|
+
};
|
|
57
|
+
// Families Mantle serves only on /openai/v1, so the first call skips a 400.
|
|
58
|
+
const OPENAI_ROUTE_MODELS = [/^xai\./, /^google\.gemma-4/];
|
|
59
|
+
const learnedRoutes = new Map();
|
|
60
|
+
export function isBedrockPlugin(plugin) {
|
|
61
|
+
return plugin.id === BEDROCK_PLUGIN_ID;
|
|
62
|
+
}
|
|
63
|
+
export function isBedrockAnthropicModel(model) {
|
|
64
|
+
return ANTHROPIC_MODEL.test(model.trim().toLowerCase());
|
|
65
|
+
}
|
|
66
|
+
/** The Claude model name without the Bedrock provider prefix. */
|
|
67
|
+
export function bedrockAnthropicModelName(model) {
|
|
68
|
+
return model.trim().replace(ANTHROPIC_MODEL, '');
|
|
69
|
+
}
|
|
70
|
+
export function isBedrockMantleRegion(value) {
|
|
71
|
+
return typeof value === 'string' && BEDROCK_MANTLE_REGIONS.includes(value);
|
|
72
|
+
}
|
|
73
|
+
function mantleOrigin(endpoint) {
|
|
74
|
+
try {
|
|
75
|
+
const url = new URL(endpoint);
|
|
76
|
+
if (url.protocol !== 'https:' || !MANTLE_HOST.test(url.hostname)) {
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
return url;
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
return undefined;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Point a Mantle endpoint at the chosen Region. Only Mantle hosts are
|
|
87
|
+
* rewritten, and only to another listed Region, so the setting can never send
|
|
88
|
+
* the key anywhere except bedrock-mantle.<region>.api.aws.
|
|
89
|
+
*/
|
|
90
|
+
export function applyBedrockRegion(endpoint, region) {
|
|
91
|
+
if (!isBedrockMantleRegion(region))
|
|
92
|
+
return endpoint;
|
|
93
|
+
const url = mantleOrigin(endpoint);
|
|
94
|
+
if (!url)
|
|
95
|
+
return endpoint;
|
|
96
|
+
url.hostname = `bedrock-mantle.${region}.api.aws`;
|
|
97
|
+
return url.toString();
|
|
98
|
+
}
|
|
99
|
+
function routeKey(endpoint, model) {
|
|
100
|
+
const url = mantleOrigin(endpoint);
|
|
101
|
+
return url ? `${url.host}\n${model.trim()}` : undefined;
|
|
102
|
+
}
|
|
103
|
+
export function bedrockChatRoute(endpoint, model) {
|
|
104
|
+
if (isBedrockAnthropicModel(model))
|
|
105
|
+
return 'anthropic';
|
|
106
|
+
const key = routeKey(endpoint, model);
|
|
107
|
+
const learned = key ? learnedRoutes.get(key) : undefined;
|
|
108
|
+
if (learned)
|
|
109
|
+
return learned;
|
|
110
|
+
return OPENAI_ROUTE_MODELS.some(pattern => pattern.test(model.trim()))
|
|
111
|
+
? 'openai'
|
|
112
|
+
: 'mantle';
|
|
113
|
+
}
|
|
114
|
+
export function bedrockRouteEndpoint(endpoint, route) {
|
|
115
|
+
const url = mantleOrigin(endpoint);
|
|
116
|
+
if (!url)
|
|
117
|
+
return endpoint;
|
|
118
|
+
return `${url.origin}${ROUTE_PATHS[route]}`;
|
|
119
|
+
}
|
|
120
|
+
function rememberRoute(endpoint, model, route) {
|
|
121
|
+
const key = routeKey(endpoint, model);
|
|
122
|
+
if (!key)
|
|
123
|
+
return;
|
|
124
|
+
learnedRoutes.delete(key);
|
|
125
|
+
learnedRoutes.set(key, route);
|
|
126
|
+
if (learnedRoutes.size > ROUTE_CACHE_LIMIT) {
|
|
127
|
+
const oldest = learnedRoutes.keys().next().value;
|
|
128
|
+
if (oldest !== undefined)
|
|
129
|
+
learnedRoutes.delete(oldest);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/** Test hook: forget every remembered route. */
|
|
133
|
+
export function resetBedrockRoutes() {
|
|
134
|
+
learnedRoutes.clear();
|
|
135
|
+
}
|
|
136
|
+
/** The URL a chat request for this model goes to. */
|
|
137
|
+
export function pluginChatEndpoint(plugin, endpoint, model) {
|
|
138
|
+
if (!isBedrockPlugin(plugin))
|
|
139
|
+
return endpoint;
|
|
140
|
+
return bedrockRouteEndpoint(endpoint, bedrockChatRoute(endpoint, model));
|
|
141
|
+
}
|
|
142
|
+
/** Which wire format a plugin speaks for a given model. */
|
|
143
|
+
export function pluginChatProtocol(plugin, model) {
|
|
144
|
+
if (plugin.id === 'anthropic')
|
|
145
|
+
return 'anthropic';
|
|
146
|
+
if (plugin.id === 'gemini')
|
|
147
|
+
return 'gemini';
|
|
148
|
+
if (isBedrockPlugin(plugin) && isBedrockAnthropicModel(model)) {
|
|
149
|
+
return 'anthropic';
|
|
150
|
+
}
|
|
151
|
+
return 'openai';
|
|
152
|
+
}
|
|
153
|
+
export function isBedrockRouteMismatch(status, body) {
|
|
154
|
+
if (status !== 400)
|
|
155
|
+
return false;
|
|
156
|
+
const text = typeof body === 'string' ? body : JSON.stringify(body ?? '');
|
|
157
|
+
return ROUTE_MISMATCH.test(text);
|
|
158
|
+
}
|
|
159
|
+
function alternateRoute(route) {
|
|
160
|
+
return route === 'mantle' ? 'openai' : 'mantle';
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Send a chat request, retrying once on the other Chat Completions route when
|
|
164
|
+
* Mantle says the model lives there. `send` is called with the final URL; for
|
|
165
|
+
* any other plugin it runs exactly once against `pluginChatEndpoint`.
|
|
166
|
+
*/
|
|
167
|
+
export async function sendPluginChat(plugin, endpoint, model, send, mismatch) {
|
|
168
|
+
const route = isBedrockPlugin(plugin)
|
|
169
|
+
? bedrockChatRoute(endpoint, model)
|
|
170
|
+
: undefined;
|
|
171
|
+
if (!route || route === 'anthropic' || !mantleOrigin(endpoint)) {
|
|
172
|
+
return send(pluginChatEndpoint(plugin, endpoint, model));
|
|
173
|
+
}
|
|
174
|
+
let result;
|
|
175
|
+
let failure;
|
|
176
|
+
try {
|
|
177
|
+
result = await send(bedrockRouteEndpoint(endpoint, route));
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
failure = error;
|
|
181
|
+
}
|
|
182
|
+
if (!(await mismatch(result, failure))) {
|
|
183
|
+
if (failure !== undefined)
|
|
184
|
+
throw failure;
|
|
185
|
+
return result;
|
|
186
|
+
}
|
|
187
|
+
const next = alternateRoute(route);
|
|
188
|
+
const retried = await send(bedrockRouteEndpoint(endpoint, next));
|
|
189
|
+
rememberRoute(endpoint, model, next);
|
|
190
|
+
return retried;
|
|
191
|
+
}
|
|
192
|
+
/** `sendPluginChat` for fetch callers that read the Response themselves. */
|
|
193
|
+
export function fetchPluginChat(plugin, endpoint, model, init, fetchImpl = fetch) {
|
|
194
|
+
return sendPluginChat(plugin, endpoint, model, url => fetchImpl(url, init), async (response) => response !== undefined &&
|
|
195
|
+
response.status === 400 &&
|
|
196
|
+
isBedrockRouteMismatch(400, await response.clone().text()));
|
|
197
|
+
}
|
|
198
|
+
/** `sendPluginChat` for callers whose client throws on a non-2xx status. */
|
|
199
|
+
export function requestPluginChat(plugin, endpoint, model, send) {
|
|
200
|
+
return sendPluginChat(plugin, endpoint, model, send, async (_, error) => {
|
|
201
|
+
const response = error?.response;
|
|
202
|
+
return (typeof response?.status === 'number' &&
|
|
203
|
+
isBedrockRouteMismatch(response.status, response.data));
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=bedrockMantle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bedrockMantle.js","sourceRoot":"","sources":["../../src/utils/bedrockMantle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface CorsOriginPolicyOptions {
|
|
2
|
+
allowedOrigins: readonly string[];
|
|
3
|
+
allowNetworkOrigins: boolean;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Build the application's CORS policy without importing its stateful server.
|
|
7
|
+
* Origin headers are serialized origins, not arbitrary URLs or origin lists.
|
|
8
|
+
*/
|
|
9
|
+
export declare function createCorsOriginPolicy({ allowedOrigins, allowNetworkOrigins, }: CorsOriginPolicyOptions): (origin: unknown) => boolean;
|
|
10
|
+
//# sourceMappingURL=corsOriginPolicy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"corsOriginPolicy.d.ts","sourceRoot":"","sources":["../../src/utils/corsOriginPolicy.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAgBD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,cAAc,EACd,mBAAmB,GACpB,EAAE,uBAAuB,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAgCxD"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Libre WebUI
|
|
3
|
+
* Copyright (C) 2025 Kroonen AI, Inc.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at:
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
import { isIPv4 } from 'node:net';
|
|
18
|
+
/** Match the existing Docker/development network policy against literal hosts. */
|
|
19
|
+
function isNetworkHostname(hostname) {
|
|
20
|
+
if (hostname === 'localhost')
|
|
21
|
+
return true;
|
|
22
|
+
if (!isIPv4(hostname))
|
|
23
|
+
return false;
|
|
24
|
+
const [first, second] = hostname.split('.').map(Number);
|
|
25
|
+
return (first === 127 ||
|
|
26
|
+
first === 10 ||
|
|
27
|
+
(first === 172 && second >= 16 && second <= 31) ||
|
|
28
|
+
(first === 192 && second === 168) ||
|
|
29
|
+
(first === 100 && second >= 64 && second <= 127));
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Build the application's CORS policy without importing its stateful server.
|
|
33
|
+
* Origin headers are serialized origins, not arbitrary URLs or origin lists.
|
|
34
|
+
*/
|
|
35
|
+
export function createCorsOriginPolicy({ allowedOrigins, allowNetworkOrigins, }) {
|
|
36
|
+
const configured = new Set(allowedOrigins);
|
|
37
|
+
return (origin) => {
|
|
38
|
+
// Native clients may omit Origin; an empty or malformed header is different.
|
|
39
|
+
if (origin === undefined)
|
|
40
|
+
return true;
|
|
41
|
+
if (typeof origin !== 'string')
|
|
42
|
+
return false;
|
|
43
|
+
// Opaque origins remain an explicit operator choice, never a LAN exception.
|
|
44
|
+
if (origin === 'null')
|
|
45
|
+
return configured.has('*') || configured.has(origin);
|
|
46
|
+
let parsed;
|
|
47
|
+
try {
|
|
48
|
+
parsed = new URL(origin);
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
// Node treats extension schemes as opaque; their explicitly configured
|
|
54
|
+
// browser origins still have a scheme and authority. They never gain the
|
|
55
|
+
// automatic HTTP(S) network exception below.
|
|
56
|
+
const serializedOrigin = parsed.origin === 'null'
|
|
57
|
+
? `${parsed.protocol}//${parsed.host}`
|
|
58
|
+
: parsed.origin;
|
|
59
|
+
// Reject credentials, paths, query/fragment components, multiple origins,
|
|
60
|
+
// and alternate IP spellings instead of normalizing them into trusted hosts.
|
|
61
|
+
if (!parsed.host || serializedOrigin !== origin)
|
|
62
|
+
return false;
|
|
63
|
+
if (configured.has('*') || configured.has(origin))
|
|
64
|
+
return true;
|
|
65
|
+
return (allowNetworkOrigins &&
|
|
66
|
+
(parsed.protocol === 'http:' || parsed.protocol === 'https:') &&
|
|
67
|
+
isNetworkHostname(parsed.hostname));
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=corsOriginPolicy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"corsOriginPolicy.js","sourceRoot":"","sources":["../../src/utils/corsOriginPolicy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAOlC,kFAAkF;AAClF,SAAS,iBAAiB,CAAC,QAAgB;IACzC,IAAI,QAAQ,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxD,OAAO,CACL,KAAK,KAAK,GAAG;QACb,KAAK,KAAK,EAAE;QACZ,CAAC,KAAK,KAAK,GAAG,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,IAAI,EAAE,CAAC;QAC/C,CAAC,KAAK,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,CAAC;QACjC,CAAC,KAAK,KAAK,GAAG,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,IAAI,GAAG,CAAC,CACjD,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,EACrC,cAAc,EACd,mBAAmB,GACK;IACxB,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC;IAC3C,OAAO,CAAC,MAAe,EAAW,EAAE;QAClC,6EAA6E;QAC7E,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACtC,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC7C,4EAA4E;QAC5E,IAAI,MAAM,KAAK,MAAM;YAAE,OAAO,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAE5E,IAAI,MAAW,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;QACD,uEAAuE;QACvE,yEAAyE;QACzE,6CAA6C;QAC7C,MAAM,gBAAgB,GACpB,MAAM,CAAC,MAAM,KAAK,MAAM;YACtB,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,IAAI,EAAE;YACtC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;QACpB,0EAA0E;QAC1E,6EAA6E;QAC7E,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,gBAAgB,KAAK,MAAM;YAAE,OAAO,KAAK,CAAC;QAC9D,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;QAC/D,OAAO,CACL,mBAAmB;YACnB,CAAC,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC;YAC7D,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CACnC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -54,6 +54,42 @@ export declare function toOpenAICompatibleMessages(messages: ChatMessage[], opti
|
|
|
54
54
|
tool_calls?: ChatMessage['tool_calls'];
|
|
55
55
|
tool_call_id?: string;
|
|
56
56
|
}>;
|
|
57
|
+
/**
|
|
58
|
+
* Anthropic prices thinking in tokens and takes it as its own block. The
|
|
59
|
+
* budget has to fit inside max_tokens with room left for the answer; an
|
|
60
|
+
* explicit user ceiling shrinks the budget rather than being raised, and the
|
|
61
|
+
* model's own documented ceiling bounds them both. Adaptive models take no
|
|
62
|
+
* budget, so max_tokens is left to the user or a roomy default. Chat and Work
|
|
63
|
+
* both build Anthropic requests from this, so the two cannot drift.
|
|
64
|
+
*/
|
|
65
|
+
export declare function resolveAnthropicThinking(model: string, think: unknown, requestedMaxTokens: number | undefined,
|
|
66
|
+
/** Ceiling for a non-adaptive request that asked for no budget. */
|
|
67
|
+
defaultMaxTokens?: number): {
|
|
68
|
+
maxTokens: number;
|
|
69
|
+
/** Set when a manual budget went out; sampling parameters must then stay off. */
|
|
70
|
+
budgetTokens?: number;
|
|
71
|
+
fields: Record<string, unknown>;
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Gemini takes a thinking budget inside the generation config. Only an
|
|
75
|
+
* enabled setting is sent: a zero budget is rejected by the models that
|
|
76
|
+
* always reason, so switching thinking off is left to the model. Thinking
|
|
77
|
+
* tokens count against maxOutputTokens, so the ceiling has to hold the budget
|
|
78
|
+
* plus the answer or the reply arrives empty at MAX_TOKENS.
|
|
79
|
+
*/
|
|
80
|
+
export declare function resolveGeminiThinking(think: unknown, requestedMaxTokens: number | undefined): {
|
|
81
|
+
maxOutputTokens: number;
|
|
82
|
+
thinkingConfig?: Record<string, unknown>;
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Reasoning fields for OpenAI-compatible Chat Completions. OpenAI and the
|
|
86
|
+
* providers that copy its shape name the levels instead of budgeting tokens.
|
|
87
|
+
* Nothing is sent unless thinking was asked for: the field is unknown to
|
|
88
|
+
* models that do not reason. DeepSeek documents low, high and max only; its
|
|
89
|
+
* middle is the provider default, so a plain "thinking on" preference sends
|
|
90
|
+
* no effort at all, and it toggles thinking with its own object.
|
|
91
|
+
*/
|
|
92
|
+
export declare function openAICompatibleReasoningFields(plugin: Pick<Plugin, 'id'>, think: unknown): Record<string, unknown>;
|
|
57
93
|
export declare function buildPluginChatPayload(plugin: Plugin, model: string, messages: ChatMessage[], options?: GenerationOptions, pluginVars?: PluginVariables, streamOverride?: boolean, apiMode?: PluginApiMode, providerStateScope?: string): PluginChatPayloadResult;
|
|
58
94
|
export declare function convertAnthropicResponse(anthropicResponse: Record<string, unknown>, model: string): PluginResponse;
|
|
59
95
|
export declare function convertGeminiResponse(geminiResponse: Record<string, unknown>, model: string): PluginResponse;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pluginChatAdapter.d.ts","sourceRoot":"","sources":["../../src/utils/pluginChatAdapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pluginChatAdapter.d.ts","sourceRoot":"","sources":["../../src/utils/pluginChatAdapter.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,MAAM,EACN,aAAa,EACb,cAAc,EACd,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAY3B,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;AAExE,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,KAAK,kCAAkC,GAAG,OAAO,CAAC;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC,CAAC;AA8EH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAM1E;AAED,wBAAgB,2BAA2B,CACzC,OAAO,GAAE,iBAAsB,EAC/B,UAAU,GAAE,eAAoB,GAC/B,oBAAoB,CAoBtB;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAWlE;AAED,wBAAgB,qCAAqC,CACnD,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAC1B,MAAM,EAAE,oBAAoB,GAC3B,kCAAkC,CAcpC;AAED;;;;;;GAMG;AACH,wBAAgB,qCAAqC,CACnD,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAC1B,KAAK,EAAE,OAAO,GACb,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOzB;AAED,kFAAkF;AAClF,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,SAAS,gBAAgB,EAAE,GAAG,SAAS,GAC7C,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAU5C;AA0CD,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,GAAE;IACP,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,8EAA8E;IAC9E,cAAc,CAAC,EAAE,WAAW,GAAG,mBAAmB,CAAC;CAC/C,GACL,KAAK,CAAC;IACP,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EACH,MAAM,GACN,KAAK,CACD;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAC9B;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,SAAS,EAAE;YAAE,GAAG,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CACpD,CAAC;IACN,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC,CA+CD;AAiGD;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,OAAO,EACd,kBAAkB,EAAE,MAAM,GAAG,SAAS;AACtC,mEAAmE;AACnE,gBAAgB,SAAO,GACtB;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC,CAsCA;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,OAAO,EACd,kBAAkB,EAAE,MAAM,GAAG,SAAS,GACrC;IAAE,eAAe,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAkBvE;AAED;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAC1B,KAAK,EAAE,OAAO,GACb,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAUzB;AA2ID,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,GAAE,iBAAsB,EAC/B,UAAU,GAAE,eAAoB,EAChC,cAAc,CAAC,EAAE,OAAO,EACxB,OAAO,GAAE,aAAkC,EAC3C,kBAAkB,CAAC,EAAE,MAAM,GAC1B,uBAAuB,CAkDzB;AAED,wBAAgB,wBAAwB,CACtC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1C,KAAK,EAAE,MAAM,GACZ,cAAc,CAsEhB;AAED,wBAAgB,qBAAqB,CACnC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,KAAK,EAAE,MAAM,GACZ,cAAc,CAuFhB;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,aAAkC,EAC3C,kBAAkB,CAAC,EAAE,MAAM,GAC1B,cAAc,CAkBhB"}
|