@gitkraken/core-gitlens 0.5.110 → 0.5.112
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/CHANGELOG.md +19 -1
- package/dist/git/cache.d.ts +111 -6
- package/dist/git/cache.d.ts.map +1 -1
- package/dist/git/cache.js +312 -43
- package/dist/git/cache.js.map +1 -1
- package/dist/git/context.d.ts +11 -0
- package/dist/git/context.d.ts.map +1 -1
- package/dist/git/context.js.map +1 -1
- package/dist/git/models/fileStatus.d.ts +1 -0
- package/dist/git/models/fileStatus.d.ts.map +1 -1
- package/dist/git/models/fileStatus.js +1 -0
- package/dist/git/models/fileStatus.js.map +1 -1
- package/dist/git/models/issue.d.ts +4 -0
- package/dist/git/models/issue.d.ts.map +1 -1
- package/dist/git/models/mergeConflicts.d.ts +2 -0
- package/dist/git/models/mergeConflicts.d.ts.map +1 -1
- package/dist/git/models/pullRequest.d.ts +38 -2
- package/dist/git/models/pullRequest.d.ts.map +1 -1
- package/dist/git/models/pullRequest.js +12 -1
- package/dist/git/models/pullRequest.js.map +1 -1
- package/dist/git/models/repository.d.ts +32 -5
- package/dist/git/models/repository.d.ts.map +1 -1
- package/dist/git/models/repository.js +58 -12
- package/dist/git/models/repository.js.map +1 -1
- package/dist/git/models/statusFile.d.ts.map +1 -1
- package/dist/git/models/statusFile.js +3 -0
- package/dist/git/models/statusFile.js.map +1 -1
- package/dist/git/providers/branches.d.ts +2 -0
- package/dist/git/providers/branches.d.ts.map +1 -1
- package/dist/git/providers/commits.d.ts +8 -0
- package/dist/git/providers/commits.d.ts.map +1 -1
- package/dist/git/providers/config.d.ts +19 -1
- package/dist/git/providers/config.d.ts.map +1 -1
- package/dist/git/providers/operations.d.ts +1 -0
- package/dist/git/providers/operations.d.ts.map +1 -1
- package/dist/git/providers/pausedOperations.d.ts +2 -0
- package/dist/git/providers/pausedOperations.d.ts.map +1 -1
- package/dist/git/providers/status.d.ts +1 -0
- package/dist/git/providers/status.d.ts.map +1 -1
- package/dist/git/utils/config.utils.d.ts +3 -0
- package/dist/git/utils/config.utils.d.ts.map +1 -0
- package/dist/git/utils/config.utils.js +8 -0
- package/dist/git/utils/config.utils.js.map +1 -0
- package/dist/git/utils/issue.utils.d.ts.map +1 -1
- package/dist/git/utils/issue.utils.js +2 -0
- package/dist/git/utils/issue.utils.js.map +1 -1
- package/dist/git/utils/pausedOperationStatus.utils.d.ts +14 -0
- package/dist/git/utils/pausedOperationStatus.utils.d.ts.map +1 -1
- package/dist/git/utils/pausedOperationStatus.utils.js +23 -0
- package/dist/git/utils/pausedOperationStatus.utils.js.map +1 -1
- package/dist/git/utils/pullRequest.utils.d.ts +14 -1
- package/dist/git/utils/pullRequest.utils.d.ts.map +1 -1
- package/dist/git/utils/pullRequest.utils.js +31 -0
- package/dist/git/utils/pullRequest.utils.js.map +1 -1
- package/dist/git/watching/changeEvent.d.ts +6 -1
- package/dist/git/watching/changeEvent.d.ts.map +1 -1
- package/dist/git/watching/classifyChange.d.ts.map +1 -1
- package/dist/git/watching/classifyChange.js +14 -1
- package/dist/git/watching/classifyChange.js.map +1 -1
- package/dist/git/watching/watchService.d.ts.map +1 -1
- package/dist/git/watching/watchService.js +18 -3
- package/dist/git/watching/watchService.js.map +1 -1
- package/dist/git/watching/watchSession.d.ts +8 -1
- package/dist/git/watching/watchSession.d.ts.map +1 -1
- package/dist/git/watching/watchSession.js +38 -6
- package/dist/git/watching/watchSession.js.map +1 -1
- package/dist/git/watching/watcherPatterns.d.ts +2 -2
- package/dist/git/watching/watcherPatterns.d.ts.map +1 -1
- package/dist/git/watching/watcherPatterns.js +1 -1
- package/dist/git/watching/watcherPatterns.js.map +1 -1
- package/dist/git-cli/exec/git.d.ts +1 -1
- package/dist/git-cli/exec/git.d.ts.map +1 -1
- package/dist/git-cli/exec/git.js +13 -3
- package/dist/git-cli/exec/git.js.map +1 -1
- package/dist/git-cli/providers/branches.d.ts +19 -0
- package/dist/git-cli/providers/branches.d.ts.map +1 -1
- package/dist/git-cli/providers/branches.js +282 -78
- package/dist/git-cli/providers/branches.js.map +1 -1
- package/dist/git-cli/providers/commits.d.ts +4 -0
- package/dist/git-cli/providers/commits.d.ts.map +1 -1
- package/dist/git-cli/providers/commits.js +84 -11
- package/dist/git-cli/providers/commits.js.map +1 -1
- package/dist/git-cli/providers/config.d.ts +42 -0
- package/dist/git-cli/providers/config.d.ts.map +1 -1
- package/dist/git-cli/providers/config.js +186 -5
- package/dist/git-cli/providers/config.js.map +1 -1
- package/dist/git-cli/providers/contributors.d.ts.map +1 -1
- package/dist/git-cli/providers/contributors.js +1 -1
- package/dist/git-cli/providers/contributors.js.map +1 -1
- package/dist/git-cli/providers/graph.d.ts +2 -2
- package/dist/git-cli/providers/graph.d.ts.map +1 -1
- package/dist/git-cli/providers/graph.js +27 -9
- package/dist/git-cli/providers/graph.js.map +1 -1
- package/dist/git-cli/providers/operations.d.ts.map +1 -1
- package/dist/git-cli/providers/operations.js +40 -12
- package/dist/git-cli/providers/operations.js.map +1 -1
- package/dist/git-cli/providers/pausedOperations.d.ts +5 -0
- package/dist/git-cli/providers/pausedOperations.d.ts.map +1 -1
- package/dist/git-cli/providers/pausedOperations.js +87 -16
- package/dist/git-cli/providers/pausedOperations.js.map +1 -1
- package/dist/git-cli/providers/refs.d.ts +5 -3
- package/dist/git-cli/providers/refs.d.ts.map +1 -1
- package/dist/git-cli/providers/refs.js +33 -4
- package/dist/git-cli/providers/refs.js.map +1 -1
- package/dist/git-cli/providers/status.d.ts +1 -0
- package/dist/git-cli/providers/status.d.ts.map +1 -1
- package/dist/git-cli/providers/status.js +18 -3
- package/dist/git-cli/providers/status.js.map +1 -1
- package/dist/git-cli/providers/worktrees.d.ts.map +1 -1
- package/dist/git-cli/providers/worktrees.js +4 -0
- package/dist/git-cli/providers/worktrees.js.map +1 -1
- package/dist/git-cli/service.d.ts.map +1 -1
- package/dist/git-cli/service.js.map +1 -1
- package/dist/plus/agents/providers/claudeCodeProvider.d.ts +39 -1
- package/dist/plus/agents/providers/claudeCodeProvider.d.ts.map +1 -1
- package/dist/plus/agents/providers/claudeCodeProvider.js +978 -71
- package/dist/plus/agents/providers/claudeCodeProvider.js.map +1 -1
- package/dist/plus/agents/providers/claudeCodeTranscript.d.ts +24 -2
- package/dist/plus/agents/providers/claudeCodeTranscript.d.ts.map +1 -1
- package/dist/plus/agents/providers/claudeCodeTranscript.js +84 -9
- package/dist/plus/agents/providers/claudeCodeTranscript.js.map +1 -1
- package/dist/plus/agents/types.d.ts +37 -2
- package/dist/plus/agents/types.d.ts.map +1 -1
- package/dist/plus/agents/types.js +2 -0
- package/dist/plus/agents/types.js.map +1 -1
- package/dist/plus/ai/errors.d.ts +10 -0
- package/dist/plus/ai/errors.d.ts.map +1 -1
- package/dist/plus/ai/errors.js +29 -0
- package/dist/plus/ai/errors.js.map +1 -1
- package/dist/plus/ai/models/model.d.ts +4 -0
- package/dist/plus/ai/models/model.d.ts.map +1 -1
- package/dist/plus/ai/models/model.js +51 -6
- package/dist/plus/ai/models/model.js.map +1 -1
- package/dist/plus/ai/models/promptTemplates.d.ts +1 -1
- package/dist/plus/ai/models/promptTemplates.d.ts.map +1 -1
- package/dist/plus/ai/models/provider.d.ts +60 -2
- package/dist/plus/ai/models/provider.d.ts.map +1 -1
- package/dist/plus/ai/prompts.d.ts +12 -0
- package/dist/plus/ai/prompts.d.ts.map +1 -1
- package/dist/plus/ai/prompts.js +177 -61
- package/dist/plus/ai/prompts.js.map +1 -1
- package/dist/plus/ai/providers/anthropicProvider.d.ts +10 -2
- package/dist/plus/ai/providers/anthropicProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/anthropicProvider.js +139 -46
- package/dist/plus/ai/providers/anthropicProvider.js.map +1 -1
- package/dist/plus/ai/providers/deepSeekProvider.d.ts +2 -0
- package/dist/plus/ai/providers/deepSeekProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/deepSeekProvider.js +10 -21
- package/dist/plus/ai/providers/deepSeekProvider.js.map +1 -1
- package/dist/plus/ai/providers/geminiProvider.d.ts +1 -0
- package/dist/plus/ai/providers/geminiProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/geminiProvider.js +19 -0
- package/dist/plus/ai/providers/geminiProvider.js.map +1 -1
- package/dist/plus/ai/providers/gitkrakenProvider.d.ts +5 -1
- package/dist/plus/ai/providers/gitkrakenProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/gitkrakenProvider.js +118 -3
- package/dist/plus/ai/providers/gitkrakenProvider.js.map +1 -1
- package/dist/plus/ai/providers/huggingFaceProvider.d.ts +1 -0
- package/dist/plus/ai/providers/huggingFaceProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/huggingFaceProvider.js +5 -0
- package/dist/plus/ai/providers/huggingFaceProvider.js.map +1 -1
- package/dist/plus/ai/providers/mistralProvider.d.ts +3 -1
- package/dist/plus/ai/providers/mistralProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/mistralProvider.js +99 -19
- package/dist/plus/ai/providers/mistralProvider.js.map +1 -1
- package/dist/plus/ai/providers/ollamaProvider.d.ts +4 -3
- package/dist/plus/ai/providers/ollamaProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/ollamaProvider.js +38 -3
- package/dist/plus/ai/providers/ollamaProvider.js.map +1 -1
- package/dist/plus/ai/providers/openAICompatibleProvider.d.ts +1 -0
- package/dist/plus/ai/providers/openAICompatibleProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/openAICompatibleProvider.js +4 -0
- package/dist/plus/ai/providers/openAICompatibleProvider.js.map +1 -1
- package/dist/plus/ai/providers/openAICompatibleProviderBase.d.ts +154 -5
- package/dist/plus/ai/providers/openAICompatibleProviderBase.d.ts.map +1 -1
- package/dist/plus/ai/providers/openAICompatibleProviderBase.js +259 -10
- package/dist/plus/ai/providers/openAICompatibleProviderBase.js.map +1 -1
- package/dist/plus/ai/providers/openRouterProvider.d.ts +4 -0
- package/dist/plus/ai/providers/openRouterProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/openRouterProvider.js +9 -0
- package/dist/plus/ai/providers/openRouterProvider.js.map +1 -1
- package/dist/plus/ai/providers/openaiProvider.d.ts +1 -0
- package/dist/plus/ai/providers/openaiProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/openaiProvider.js +1 -0
- package/dist/plus/ai/providers/openaiProvider.js.map +1 -1
- package/dist/plus/ai/providers/responseFormatCache.d.ts +8 -0
- package/dist/plus/ai/providers/responseFormatCache.d.ts.map +1 -0
- package/dist/plus/ai/providers/responseFormatCache.js +25 -0
- package/dist/plus/ai/providers/responseFormatCache.js.map +1 -0
- package/dist/plus/ai/providers/xaiProvider.d.ts +1 -0
- package/dist/plus/ai/providers/xaiProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/xaiProvider.js +10 -1
- package/dist/plus/ai/providers/xaiProvider.js.map +1 -1
- package/dist/plus/ai/utils/ai.utils.d.ts +3 -0
- package/dist/plus/ai/utils/ai.utils.d.ts.map +1 -1
- package/dist/plus/ai/utils/ai.utils.js +13 -0
- package/dist/plus/ai/utils/ai.utils.js.map +1 -1
- package/dist/plus/ai/utils/results.utils.d.ts +16 -2
- package/dist/plus/ai/utils/results.utils.d.ts.map +1 -1
- package/dist/plus/ai/utils/results.utils.js +204 -28
- package/dist/plus/ai/utils/results.utils.js.map +1 -1
- package/dist/plus/git-github/api/github.d.ts +55 -0
- package/dist/plus/git-github/api/github.d.ts.map +1 -1
- package/dist/plus/git-github/api/github.js +177 -4
- package/dist/plus/git-github/api/github.js.map +1 -1
- package/dist/plus/git-github/models.d.ts +16 -0
- package/dist/plus/git-github/models.d.ts.map +1 -1
- package/dist/plus/git-github/models.js +29 -3
- package/dist/plus/git-github/models.js.map +1 -1
- package/dist/plus/git-github/providers/github/status.d.ts +1 -0
- package/dist/plus/git-github/providers/github/status.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/status.js.map +1 -1
- package/dist/plus/integrations/context.d.ts +4 -0
- package/dist/plus/integrations/context.d.ts.map +1 -1
- package/dist/plus/integrations/index.d.ts.map +1 -1
- package/dist/plus/integrations/index.js +2 -0
- package/dist/plus/integrations/index.js.map +1 -1
- package/dist/plus/integrations/models/gitHostIntegration.d.ts +6 -3
- package/dist/plus/integrations/models/gitHostIntegration.d.ts.map +1 -1
- package/dist/plus/integrations/models/gitHostIntegration.js +12 -2
- package/dist/plus/integrations/models/gitHostIntegration.js.map +1 -1
- package/dist/plus/integrations/models/integration.d.ts +3 -1
- package/dist/plus/integrations/models/integration.d.ts.map +1 -1
- package/dist/plus/integrations/models/integration.js +2 -2
- package/dist/plus/integrations/models/integration.js.map +1 -1
- package/dist/plus/integrations/providers/accounts.d.ts.map +1 -1
- package/dist/plus/integrations/providers/accounts.js +4 -0
- package/dist/plus/integrations/providers/accounts.js.map +1 -1
- package/dist/plus/integrations/providers/azure/models.d.ts.map +1 -1
- package/dist/plus/integrations/providers/azure/models.js +3 -0
- package/dist/plus/integrations/providers/azure/models.js.map +1 -1
- package/dist/plus/integrations/providers/bitbucket/models.d.ts.map +1 -1
- package/dist/plus/integrations/providers/bitbucket/models.js +1 -0
- package/dist/plus/integrations/providers/bitbucket/models.js.map +1 -1
- package/dist/plus/integrations/providers/github.d.ts +14 -2
- package/dist/plus/integrations/providers/github.d.ts.map +1 -1
- package/dist/plus/integrations/providers/github.js +55 -3
- package/dist/plus/integrations/providers/github.js.map +1 -1
- package/dist/plus/integrations/providers/gitlab.d.ts.map +1 -1
- package/dist/plus/integrations/providers/gitlab.js.map +1 -1
- package/dist/plus/integrations/providers/models.d.ts.map +1 -1
- package/dist/plus/integrations/providers/models.js +30 -4
- package/dist/plus/integrations/providers/models.js.map +1 -1
- package/dist/plus/integrations/reads/broaden.d.ts.map +1 -1
- package/dist/plus/integrations/reads/broaden.js +6 -1
- package/dist/plus/integrations/reads/broaden.js.map +1 -1
- package/dist/plus/integrations/reads/drains.d.ts.map +1 -1
- package/dist/plus/integrations/reads/drains.js +7 -4
- package/dist/plus/integrations/reads/drains.js.map +1 -1
- package/dist/plus/integrations/reads/hierarchy.d.ts.map +1 -1
- package/dist/plus/integrations/reads/hierarchy.js +3 -1
- package/dist/plus/integrations/reads/hierarchy.js.map +1 -1
- package/dist/plus/integrations/reads/issueTracker.d.ts.map +1 -1
- package/dist/plus/integrations/reads/issueTracker.js +8 -3
- package/dist/plus/integrations/reads/issueTracker.js.map +1 -1
- package/dist/plus/integrations/reads/issues.d.ts.map +1 -1
- package/dist/plus/integrations/reads/issues.js +9 -4
- package/dist/plus/integrations/reads/issues.js.map +1 -1
- package/dist/plus/integrations/reads/pullRequests.d.ts.map +1 -1
- package/dist/plus/integrations/reads/pullRequests.js +9 -4
- package/dist/plus/integrations/reads/pullRequests.js.map +1 -1
- package/dist/utils/env/browser/base64.d.ts +1 -1
- package/dist/utils/env/browser/base64.d.ts.map +1 -1
- package/dist/utils/env/node/base64.d.ts +1 -1
- package/dist/utils/env/node/base64.d.ts.map +1 -1
- package/dist/utils/env/node/base64.js +2 -0
- package/dist/utils/env/node/base64.js.map +1 -1
- package/dist/utils/keys/chord.d.ts +52 -0
- package/dist/utils/keys/chord.d.ts.map +1 -0
- package/dist/utils/keys/chord.js +135 -0
- package/dist/utils/keys/chord.js.map +1 -0
- package/dist/utils/keys/keybinding.d.ts +53 -0
- package/dist/utils/keys/keybinding.d.ts.map +1 -0
- package/dist/utils/keys/keybinding.js +58 -0
- package/dist/utils/keys/keybinding.js.map +1 -0
- package/dist/utils/path.d.ts +11 -0
- package/dist/utils/path.d.ts.map +1 -1
- package/dist/utils/path.js +13 -0
- package/dist/utils/path.js.map +1 -1
- package/package.json +13 -5
- package/src/git/cache.ts +383 -47
- package/src/git/context.ts +11 -0
- package/src/git/models/fileStatus.ts +1 -0
- package/src/git/models/issue.ts +4 -0
- package/src/git/models/mergeConflicts.ts +3 -2
- package/src/git/models/pullRequest.ts +33 -1
- package/src/git/models/repository.ts +58 -17
- package/src/git/models/statusFile.ts +3 -0
- package/src/git/providers/branches.ts +6 -0
- package/src/git/providers/commits.ts +11 -0
- package/src/git/providers/config.ts +18 -0
- package/src/git/providers/operations.ts +1 -0
- package/src/git/providers/pausedOperations.ts +2 -0
- package/src/git/providers/status.ts +1 -0
- package/src/git/utils/config.utils.ts +8 -0
- package/src/git/utils/issue.utils.ts +2 -0
- package/src/git/utils/pausedOperationStatus.utils.ts +28 -0
- package/src/git/utils/pullRequest.utils.ts +36 -0
- package/src/git/watching/changeEvent.ts +6 -1
- package/src/git/watching/classifyChange.ts +15 -1
- package/src/git/watching/watchService.ts +20 -3
- package/src/git/watching/watchSession.ts +41 -6
- package/src/git/watching/watcherPatterns.ts +1 -1
- package/src/git-cli/exec/git.ts +13 -3
- package/src/git-cli/providers/branches.ts +384 -132
- package/src/git-cli/providers/commits.ts +106 -15
- package/src/git-cli/providers/config.ts +229 -8
- package/src/git-cli/providers/contributors.ts +5 -1
- package/src/git-cli/providers/graph.ts +26 -13
- package/src/git-cli/providers/operations.ts +45 -20
- package/src/git-cli/providers/pausedOperations.ts +109 -17
- package/src/git-cli/providers/refs.ts +33 -3
- package/src/git-cli/providers/status.ts +25 -4
- package/src/git-cli/providers/worktrees.ts +5 -0
- package/src/git-cli/service.ts +0 -1
- package/src/plus/agents/providers/claudeCodeProvider.ts +1130 -87
- package/src/plus/agents/providers/claudeCodeTranscript.ts +95 -9
- package/src/plus/agents/types.ts +46 -2
- package/src/plus/ai/errors.ts +30 -0
- package/src/plus/ai/models/model.ts +56 -6
- package/src/plus/ai/models/promptTemplates.ts +1 -1
- package/src/plus/ai/models/provider.ts +69 -2
- package/src/plus/ai/prompts.ts +186 -61
- package/src/plus/ai/providers/anthropicProvider.ts +155 -47
- package/src/plus/ai/providers/deepSeekProvider.ts +11 -21
- package/src/plus/ai/providers/geminiProvider.ts +19 -0
- package/src/plus/ai/providers/gitkrakenProvider.ts +126 -3
- package/src/plus/ai/providers/huggingFaceProvider.ts +6 -0
- package/src/plus/ai/providers/mistralProvider.ts +102 -19
- package/src/plus/ai/providers/ollamaProvider.ts +55 -4
- package/src/plus/ai/providers/openAICompatibleProvider.ts +5 -0
- package/src/plus/ai/providers/openAICompatibleProviderBase.ts +360 -17
- package/src/plus/ai/providers/openRouterProvider.ts +17 -0
- package/src/plus/ai/providers/openaiProvider.ts +1 -0
- package/src/plus/ai/providers/responseFormatCache.ts +39 -0
- package/src/plus/ai/providers/xaiProvider.ts +10 -1
- package/src/plus/ai/utils/ai.utils.ts +14 -0
- package/src/plus/ai/utils/results.utils.ts +255 -31
- package/src/plus/git-github/api/github.ts +291 -7
- package/src/plus/git-github/models.ts +48 -2
- package/src/plus/git-github/providers/github/status.ts +1 -0
- package/src/plus/integrations/context.ts +4 -0
- package/src/plus/integrations/index.ts +2 -0
- package/src/plus/integrations/models/gitHostIntegration.ts +25 -2
- package/src/plus/integrations/models/integration.ts +23 -13
- package/src/plus/integrations/providers/accounts.ts +4 -0
- package/src/plus/integrations/providers/azure/models.ts +3 -0
- package/src/plus/integrations/providers/bitbucket/models.ts +1 -0
- package/src/plus/integrations/providers/github.ts +85 -1
- package/src/plus/integrations/providers/gitlab.ts +2 -10
- package/src/plus/integrations/providers/models.ts +36 -4
- package/src/plus/integrations/reads/broaden.ts +6 -1
- package/src/plus/integrations/reads/drains.ts +7 -4
- package/src/plus/integrations/reads/hierarchy.ts +3 -1
- package/src/plus/integrations/reads/issueTracker.ts +9 -3
- package/src/plus/integrations/reads/issues.ts +9 -4
- package/src/plus/integrations/reads/pullRequests.ts +9 -4
- package/src/utils/env/browser/base64.ts +1 -1
- package/src/utils/env/node/base64.ts +3 -1
- package/src/utils/keys/chord.ts +184 -0
- package/src/utils/keys/keybinding.ts +116 -0
- package/src/utils/path.ts +14 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { uuid } from '../../../utils/crypto.js';
|
|
2
|
+
import { Logger } from '../../../utils/logger.js';
|
|
2
3
|
import { ollamaProviderDescriptor as provider } from '../constants.js';
|
|
3
4
|
import { OpenAICompatibleProviderBase } from './openAICompatibleProviderBase.js';
|
|
4
5
|
const defaultBaseUrl = 'http://localhost:11434';
|
|
@@ -90,13 +91,17 @@ export class OllamaProvider extends OpenAICompatibleProviderBase {
|
|
|
90
91
|
const url = this.getBaseUrl();
|
|
91
92
|
return url ? `${url}/api/chat` : undefined;
|
|
92
93
|
}
|
|
94
|
+
// Ollama < 0.5.0 rejects a schema-valued `format` (accepts only 'json')
|
|
95
|
+
isResponseFormatRejection(status, body) {
|
|
96
|
+
return status === 400 && /format/i.test(body);
|
|
97
|
+
}
|
|
93
98
|
getHeaders(_action, _apiKey, _model, _url) {
|
|
94
99
|
return {
|
|
95
100
|
Accept: 'application/json',
|
|
96
101
|
'Content-Type': 'application/json',
|
|
97
102
|
};
|
|
98
103
|
}
|
|
99
|
-
async fetch(action, model, apiKey, messages, modelOptions, signal) {
|
|
104
|
+
async fetch(action, model, apiKey, messages, modelOptions, responseFormat, signal) {
|
|
100
105
|
let retries = 0;
|
|
101
106
|
let maxInputTokens = model.maxTokens.input;
|
|
102
107
|
while (true) {
|
|
@@ -109,19 +114,48 @@ export class OllamaProvider extends OpenAICompatibleProviderBase {
|
|
|
109
114
|
}));
|
|
110
115
|
// Ensure temperature is within valid range for Ollama (0.0-1.0)
|
|
111
116
|
const temperature = Math.min(Math.max(modelOptions?.temperature ?? 0.7, 0), 1);
|
|
117
|
+
const format = responseFormat != null &&
|
|
118
|
+
!this.isResponseFormatSessionRejected(model, responseFormat) &&
|
|
119
|
+
this.supportsResponseFormat(model)
|
|
120
|
+
? responseFormat.schema
|
|
121
|
+
: undefined;
|
|
112
122
|
const request = {
|
|
113
123
|
model: model.id,
|
|
114
124
|
messages: ollamaMessages,
|
|
115
125
|
stream: false,
|
|
126
|
+
// Ollama takes the bare JSON schema (grammar-constrained sampling, any model)
|
|
127
|
+
format: format,
|
|
116
128
|
options: {
|
|
117
129
|
temperature: temperature,
|
|
118
130
|
// Add num_predict if outputTokens is specified
|
|
119
131
|
...(modelOptions?.outputTokens ? { num_predict: modelOptions.outputTokens } : {}),
|
|
120
132
|
},
|
|
121
133
|
};
|
|
122
|
-
|
|
134
|
+
let rsp = await this.fetchCore(action, model, apiKey, request, signal);
|
|
135
|
+
let errorBody;
|
|
136
|
+
if (!rsp.ok && rsp.status === 400 && request.format != null) {
|
|
137
|
+
// If the schema-valued format was rejected (Ollama < 0.5.0 accepts only 'json'),
|
|
138
|
+
// resend the same request without it — the prompt still describes the JSON
|
|
139
|
+
// Leave it `undefined` (not '') when the read fails, so `handleFetchFailure` falls
|
|
140
|
+
// back to reading the still-unconsumed response instead of parsing an empty string
|
|
141
|
+
errorBody = await rsp
|
|
142
|
+
.clone()
|
|
143
|
+
.text()
|
|
144
|
+
.catch(() => undefined);
|
|
145
|
+
if (this.isResponseFormatRejection(rsp.status, errorBody ?? '')) {
|
|
146
|
+
Logger.warn(`(${this.name}) ${model.id}: native response format was rejected (${rsp.status}); retrying without it`);
|
|
147
|
+
const rejected = responseFormat;
|
|
148
|
+
responseFormat = undefined;
|
|
149
|
+
delete request.format;
|
|
150
|
+
rsp = await this.fetchCore(action, model, apiKey, request, signal);
|
|
151
|
+
errorBody = undefined;
|
|
152
|
+
if (rsp.ok && rejected != null) {
|
|
153
|
+
this.rememberResponseFormatRejection(model, rejected);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
123
157
|
if (!rsp.ok) {
|
|
124
|
-
const result = await this.handleFetchFailure(rsp, action, model, retries, maxInputTokens);
|
|
158
|
+
const result = await this.handleFetchFailure(rsp, action, model, retries, maxInputTokens, errorBody);
|
|
125
159
|
if (result.retry) {
|
|
126
160
|
maxInputTokens = result.maxInputTokens;
|
|
127
161
|
retries++;
|
|
@@ -137,6 +171,7 @@ export class OllamaProvider extends OpenAICompatibleProviderBase {
|
|
|
137
171
|
return {
|
|
138
172
|
id: uuid(),
|
|
139
173
|
content: data.message.content,
|
|
174
|
+
finishReason: data.done_reason === 'length' ? 'length' : undefined,
|
|
140
175
|
model: model,
|
|
141
176
|
usage: {
|
|
142
177
|
promptTokens: data.prompt_eval_count ?? 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollamaProvider.js","sourceRoot":"","sources":["../../../../src/plus/ai/providers/ollamaProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,wBAAwB,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"ollamaProvider.js","sourceRoot":"","sources":["../../../../src/plus/ai/providers/ollamaProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@ export declare class OpenAICompatibleProvider extends OpenAICompatibleProviderBa
|
|
|
11
11
|
};
|
|
12
12
|
getModels(): Promise<readonly AIModel<typeof provider.id>[]>;
|
|
13
13
|
protected getUrl(_model?: AIModel<typeof provider.id>): string | undefined;
|
|
14
|
+
protected supportsResponseFormat(_model: AIModel<typeof provider.id>): boolean;
|
|
14
15
|
private getOrPromptBaseUrl;
|
|
15
16
|
configured(silent: boolean): Promise<boolean>;
|
|
16
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openAICompatibleProvider.d.ts","sourceRoot":"","sources":["../../../../src/plus/ai/providers/openAICompatibleProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kCAAkC,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAGlD,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAKjF,qBAAa,wBAAyB,SAAQ,4BAA4B,CAAC,OAAO,QAAQ,CAAC,EAAE,CAAC;IAC7F,QAAQ,CAAC,EAAE,qBAAe;IAC1B,QAAQ,CAAC,IAAI,SAAiB;IAC9B,SAAS,CAAC,QAAQ,CAAC,UAAU,wEAAY;IACzC,SAAS,CAAC,QAAQ,CAAC,MAAM;QACxB,MAAM;QACN,YAAY;MACX;IAEF,SAAS,IAAI,OAAO,CAAC,SAAS,OAAO,CAAC,OAAO,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAE3D;IAED,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,OAAO,QAAQ,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,SAAS,CAKzE;YAEa,kBAAkB;IAqBjB,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAO3D;CACD"}
|
|
1
|
+
{"version":3,"file":"openAICompatibleProvider.d.ts","sourceRoot":"","sources":["../../../../src/plus/ai/providers/openAICompatibleProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kCAAkC,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAGlD,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAKjF,qBAAa,wBAAyB,SAAQ,4BAA4B,CAAC,OAAO,QAAQ,CAAC,EAAE,CAAC;IAC7F,QAAQ,CAAC,EAAE,qBAAe;IAC1B,QAAQ,CAAC,IAAI,SAAiB;IAC9B,SAAS,CAAC,QAAQ,CAAC,UAAU,wEAAY;IACzC,SAAS,CAAC,QAAQ,CAAC,MAAM;QACxB,MAAM;QACN,YAAY;MACX;IAEF,SAAS,IAAI,OAAO,CAAC,SAAS,OAAO,CAAC,OAAO,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAE3D;IAED,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,OAAO,QAAQ,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,SAAS,CAKzE;IAGD,UAAmB,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,QAAQ,CAAC,EAAE,CAAC,GAAG,OAAO,CAEtF;YAEa,kBAAkB;IAqBjB,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAO3D;CACD"}
|
|
@@ -20,6 +20,10 @@ export class OpenAICompatibleProvider extends OpenAICompatibleProviderBase {
|
|
|
20
20
|
return undefined;
|
|
21
21
|
return cfg.url || undefined;
|
|
22
22
|
}
|
|
23
|
+
// Unknown user-configured backend — fall back to prompt-described JSON
|
|
24
|
+
supportsResponseFormat(_model) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
23
27
|
async getOrPromptBaseUrl(silent, hasApiKey) {
|
|
24
28
|
const orgConf = this.context.getProviderConfig(this.id);
|
|
25
29
|
if (!orgConf.enabled)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openAICompatibleProvider.js","sourceRoot":"","sources":["../../../../src/plus/ai/providers/openAICompatibleProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kCAAkC,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEjF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAGjF,MAAM,MAAM,GAA4B,YAAY,CAAC,QAAQ,CAAC,CAAC;AAE/D,MAAM,OAAO,wBAAyB,SAAQ,4BAAgD;IACpF,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;IACjB,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IACX,UAAU,GAAG,QAAQ,CAAC;IACtB,MAAM,GAAG;QAC3B,MAAM,EAAE,SAAS;QACjB,YAAY,EAAE,0BAA0B;KACxC,CAAC;IAEF,SAAS;QACR,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAES,MAAM,CAAC,MAAoC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QAEnC,OAAO,GAAG,CAAC,GAAG,IAAI,SAAS,CAAC;IAC7B,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,MAAe,EAAE,SAAkB;QACnE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QACvC,IAAI,OAAO,CAAC,GAAG;YAAE,OAAO,OAAO,CAAC,GAAG,CAAC;QAEpC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAE1B,IAAI,MAAM,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,SAAS,CAAC;YAAE,OAAO,GAAG,CAAC;QAErD,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CACjC,IAAI,CAAC,EAAE,EACP;YACC,UAAU,EAAE,GAAG;YACf,KAAK,EAAE,uCAAuC;YAC9C,WAAW,EAAE,sDAAsD;YACnE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,SAAS,CAAC;SACrF,EACD,MAAM,CACN,CAAC;IACH,CAAC;IAEQ,KAAK,CAAC,UAAU,CAAC,MAAe;QACxC,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAE/C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC7D,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAE1C,OAAO,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;CACD"}
|
|
1
|
+
{"version":3,"file":"openAICompatibleProvider.js","sourceRoot":"","sources":["../../../../src/plus/ai/providers/openAICompatibleProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kCAAkC,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEjF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAGjF,MAAM,MAAM,GAA4B,YAAY,CAAC,QAAQ,CAAC,CAAC;AAE/D,MAAM,OAAO,wBAAyB,SAAQ,4BAAgD;IACpF,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;IACjB,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IACX,UAAU,GAAG,QAAQ,CAAC;IACtB,MAAM,GAAG;QAC3B,MAAM,EAAE,SAAS;QACjB,YAAY,EAAE,0BAA0B;KACxC,CAAC;IAEF,SAAS;QACR,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAES,MAAM,CAAC,MAAoC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QAEnC,OAAO,GAAG,CAAC,GAAG,IAAI,SAAS,CAAC;IAC7B,CAAC;IAED,uEAAuE;IACpD,sBAAsB,CAAC,MAAmC;QAC5E,OAAO,KAAK,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,MAAe,EAAE,SAAkB;QACnE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QACvC,IAAI,OAAO,CAAC,GAAG;YAAE,OAAO,OAAO,CAAC,GAAG,CAAC;QAEpC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAE1B,IAAI,MAAM,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,SAAS,CAAC;YAAE,OAAO,GAAG,CAAC;QAErD,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CACjC,IAAI,CAAC,EAAE,EACP;YACC,UAAU,EAAE,GAAG;YACf,KAAK,EAAE,uCAAuC;YAC9C,WAAW,EAAE,sDAAsD;YACnE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,SAAS,CAAC;SACrF,EACD,MAAM,CACN,CAAC;IACH,CAAC;IAEQ,KAAK,CAAC,UAAU,CAAC,MAAe;QACxC,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAE/C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC7D,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAE1C,OAAO,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;CACD"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AIProviders } from '../constants.js';
|
|
2
2
|
import type { AIActionType, AIModel, AIProviderDescriptor } from '../models/model.js';
|
|
3
|
-
import type { AIChatMessage, AIChatMessageRole, AIProvider, AIProviderResponse } from '../models/provider.js';
|
|
3
|
+
import type { AIChatMessage, AIChatMessageRole, AIFinishReason, AIProvider, AIProviderResponse, AIResponseFormat, AIToolCall, AIToolDefinition, JSONSchema } from '../models/provider.js';
|
|
4
4
|
import type { AIProviderContext } from './context.js';
|
|
5
5
|
export declare abstract class OpenAICompatibleProviderBase<T extends AIProviders> implements AIProvider<T> {
|
|
6
6
|
protected readonly context: AIProviderContext;
|
|
@@ -17,20 +17,24 @@ export declare abstract class OpenAICompatibleProviderBase<T extends AIProviders
|
|
|
17
17
|
configured(silent: boolean): Promise<boolean>;
|
|
18
18
|
getApiKey(silent: boolean): Promise<string | undefined>;
|
|
19
19
|
abstract getModels(): Promise<readonly AIModel<T>[]>;
|
|
20
|
+
protected isResponseFormatSessionRejected(model: AIModel<T>, responseFormat: AIResponseFormat): boolean;
|
|
21
|
+
protected rememberResponseFormatRejection(model: AIModel<T>, responseFormat: AIResponseFormat): void;
|
|
20
22
|
protected abstract getUrl(_model: AIModel<T>): string | undefined;
|
|
21
23
|
protected getHeaders<TAction extends AIActionType>(_action: TAction, apiKey: string, _model: AIModel<T>, _url: string, _conversationId?: string): Record<string, string> | Promise<Record<string, string>>;
|
|
22
|
-
sendRequest<TAction extends AIActionType>(action: TAction, model: AIModel<T>, apiKey: string, getMessages: (maxInputTokens: number, retries: number) => Promise<AIChatMessage[]>, options: {
|
|
24
|
+
sendRequest<TAction extends AIActionType>(action: TAction, model: AIModel<T>, apiKey: string, getMessages: (maxInputTokens: number, retries: number) => Promise<AIChatMessage<AIChatMessageRole>[]>, options: {
|
|
23
25
|
signal: AbortSignal;
|
|
24
26
|
modelOptions?: {
|
|
25
27
|
outputTokens?: number;
|
|
26
28
|
temperature?: number;
|
|
27
29
|
};
|
|
28
30
|
conversationId?: string;
|
|
31
|
+
responseFormat?: AIResponseFormat;
|
|
32
|
+
tools?: readonly AIToolDefinition[];
|
|
29
33
|
}): Promise<AIProviderResponse<void> | undefined>;
|
|
30
|
-
protected fetch<TAction extends AIActionType>(action: TAction, model: AIModel<T>, apiKey: string, messages: (maxInputTokens: number, retries: number) => Promise<AIChatMessage[]>, modelOptions?: {
|
|
34
|
+
protected fetch<TAction extends AIActionType>(action: TAction, model: AIModel<T>, apiKey: string, messages: (maxInputTokens: number, retries: number) => Promise<AIChatMessage<AIChatMessageRole>[]>, modelOptions?: {
|
|
31
35
|
outputTokens?: number;
|
|
32
36
|
temperature?: number;
|
|
33
|
-
}, signal?: AbortSignal, conversationId?: string): Promise<AIProviderResponse<void>>;
|
|
37
|
+
}, responseFormat?: AIResponseFormat, signal?: AbortSignal, conversationId?: string, tools?: readonly AIToolDefinition[]): Promise<AIProviderResponse<void>>;
|
|
34
38
|
/**
|
|
35
39
|
* Returns the message-related request fields. The default sends every message inline (OpenAI
|
|
36
40
|
* Chat Completions semantics); providers whose API carries the initial system prompt separately
|
|
@@ -40,10 +44,155 @@ export declare abstract class OpenAICompatibleProviderBase<T extends AIProviders
|
|
|
40
44
|
messages: AIChatMessage<AIChatMessageRole>[];
|
|
41
45
|
system?: string;
|
|
42
46
|
};
|
|
43
|
-
|
|
47
|
+
/** Whether the given model accepts a native response-format/schema field; when false the
|
|
48
|
+
* prompt's JSON description is the only format control (the request is unchanged).
|
|
49
|
+
* Dynamic-catalog providers (GitKraken, OpenRouter) populate
|
|
50
|
+
* {@link AIModel.supportsStructuredOutputs}; static providers override with id-based gates */
|
|
51
|
+
protected supportsResponseFormat(model: AIModel<T>): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Whether a failed response reads as a rejection of the `tools` field rather than a problem with the
|
|
54
|
+
* prompt — the trigger for one retry without tools, so a tool-using feature degrades to single-shot
|
|
55
|
+
* instead of failing outright.
|
|
56
|
+
*
|
|
57
|
+
* Providers that wrap upstream rejections in their own envelope (e.g. GitKraken) must override this:
|
|
58
|
+
* the wrapper's prose names neither "tool" nor "function", so the text match here cannot see through
|
|
59
|
+
* it and the fallback would never fire.
|
|
60
|
+
*/
|
|
61
|
+
protected isToolsRejection(status: number, message: string | undefined): boolean;
|
|
62
|
+
/** Whether a failed response means the native response format itself was rejected — the
|
|
63
|
+
* trigger for stripping it and retrying via the prompt-described JSON. Providers that wrap
|
|
64
|
+
* upstream rejections in their own envelope (e.g. GitKraken) extend this */
|
|
65
|
+
protected isResponseFormatRejection(status: number, body: string): boolean;
|
|
66
|
+
/** Translates the canonical response format onto the request; called only when
|
|
67
|
+
* {@link supportsResponseFormat} allows it. Base emits the OpenAI `response_format.json_schema`
|
|
68
|
+
* envelope. Overrides must REPLACE this for providers with a different native field
|
|
69
|
+
* (e.g. Anthropic `output_config`) — never leave both on the request. */
|
|
70
|
+
protected applyResponseFormat(request: ChatCompletionRequest, _model: AIModel<T>, responseFormat: AIResponseFormat): void;
|
|
71
|
+
protected extractContent(data: ChatCompletionResponse): string;
|
|
72
|
+
/** Normalizes abnormal completion signals (all arrive as HTTP 200) so consumers can
|
|
73
|
+
* distinguish truncated/filtered/refused output from a malformed-but-complete reply */
|
|
74
|
+
protected extractFinishReason(data: ChatCompletionResponse): AIFinishReason | undefined;
|
|
75
|
+
/**
|
|
76
|
+
* Maps messages onto the provider's wire shape. The default is OpenAI Chat Completions: assistant
|
|
77
|
+
* tool calls go in `tool_calls` with `arguments` JSON-stringified, and tool results are `tool`-role
|
|
78
|
+
* entries keyed by `tool_call_id`. Providers with a different tool encoding (e.g. Anthropic's
|
|
79
|
+
* content blocks) override this.
|
|
80
|
+
*/
|
|
81
|
+
protected serializeMessages(messages: AIChatMessage<AIChatMessageRole>[]): unknown[];
|
|
82
|
+
/** Returns the tool-related request fields. The default is the OpenAI `function` envelope. */
|
|
83
|
+
protected serializeTools(tools: readonly AIToolDefinition[]): {
|
|
84
|
+
tools: unknown[];
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Extracts tool calls from a response, handling both the OpenAI shape
|
|
88
|
+
* (`choices[].message.tool_calls`, whose `arguments` is a JSON string) and the Anthropic shape
|
|
89
|
+
* (`content[]` blocks of type `tool_use`) — mirroring how {@link fetch} already reads content
|
|
90
|
+
* from both.
|
|
91
|
+
*/
|
|
92
|
+
protected parseToolCalls(data: ChatCompletionResponse): AIToolCall[] | undefined;
|
|
93
|
+
protected handleFetchFailure<TAction extends AIActionType>(rsp: Response, _action: TAction, model: AIModel<T>, retries: number, maxInputTokens: number,
|
|
94
|
+
/** The already-read error body, when the caller had to read it (avoids a second decode) */
|
|
95
|
+
body?: string, sentTools?: boolean): Promise<{
|
|
44
96
|
retry: true;
|
|
45
97
|
maxInputTokens: number;
|
|
98
|
+
withoutTools?: boolean;
|
|
46
99
|
}>;
|
|
47
100
|
protected fetchCore<TAction extends AIActionType>(action: TAction, model: AIModel<T>, apiKey: string, request: object, signal: AbortSignal | undefined, conversationId?: string): Promise<Response>;
|
|
48
101
|
}
|
|
102
|
+
export interface ChatCompletionRequest {
|
|
103
|
+
model: string;
|
|
104
|
+
/** Provider-shaped messages from {@link OpenAICompatibleProviderBase.serializeMessages} */
|
|
105
|
+
messages: unknown[];
|
|
106
|
+
/** Anthropic carries the initial system prompt here instead of as a `system`-role message */
|
|
107
|
+
system?: string;
|
|
108
|
+
/** Tool definitions, shaped by {@link OpenAICompatibleProviderBase.serializeTools} */
|
|
109
|
+
tools?: unknown[];
|
|
110
|
+
/** @deprecated but used by Anthropic & Gemini */
|
|
111
|
+
max_tokens?: number;
|
|
112
|
+
/** Currently can't be used for Anthropic & Gemini */
|
|
113
|
+
max_completion_tokens?: number;
|
|
114
|
+
metadata?: Record<string, string>;
|
|
115
|
+
stream?: boolean;
|
|
116
|
+
temperature?: number;
|
|
117
|
+
top_p?: number;
|
|
118
|
+
/** Not supported by many models/providers */
|
|
119
|
+
reasoning_effort?: 'low' | 'medium' | 'high';
|
|
120
|
+
/** OpenAI-compatible structured output (set via {@link OpenAICompatibleProviderBase.applyResponseFormat}) */
|
|
121
|
+
response_format?: {
|
|
122
|
+
type: 'json_schema';
|
|
123
|
+
json_schema: {
|
|
124
|
+
name: string;
|
|
125
|
+
strict: boolean;
|
|
126
|
+
schema: JSONSchema;
|
|
127
|
+
};
|
|
128
|
+
};
|
|
129
|
+
/** Anthropic-native structured output (set only by the Anthropic override) */
|
|
130
|
+
output_config?: {
|
|
131
|
+
format: {
|
|
132
|
+
type: 'json_schema';
|
|
133
|
+
schema: JSONSchema;
|
|
134
|
+
};
|
|
135
|
+
};
|
|
136
|
+
/** OpenRouter-only routing constraint (set only by the OpenRouter override) */
|
|
137
|
+
provider?: {
|
|
138
|
+
require_parameters: boolean;
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
export interface ChatCompletionResponse {
|
|
142
|
+
id: string;
|
|
143
|
+
model: string;
|
|
144
|
+
/** OpenAI compatible output */
|
|
145
|
+
choices?: {
|
|
146
|
+
index: number;
|
|
147
|
+
message: {
|
|
148
|
+
role: string;
|
|
149
|
+
content: string | null;
|
|
150
|
+
/** OpenAI-only; most OpenAI-compatible servers omit it entirely */
|
|
151
|
+
refusal?: string | null;
|
|
152
|
+
tool_calls?: {
|
|
153
|
+
id: string;
|
|
154
|
+
type: string;
|
|
155
|
+
function: {
|
|
156
|
+
name: string;
|
|
157
|
+
arguments: string;
|
|
158
|
+
};
|
|
159
|
+
/** GitKraken proxy only — an opaque provider reasoning token to round-trip */
|
|
160
|
+
thought_signature?: string;
|
|
161
|
+
}[];
|
|
162
|
+
};
|
|
163
|
+
finish_reason: string;
|
|
164
|
+
}[];
|
|
165
|
+
/** Anthropic output (non-text blocks, e.g. thinking, carry no text). `tool_use` blocks add the
|
|
166
|
+
* call fields, which is why `id`/`name` are optional here — {@link parseToolCalls} narrows on
|
|
167
|
+
* `type` and then checks them. */
|
|
168
|
+
content?: {
|
|
169
|
+
type: string;
|
|
170
|
+
text?: string;
|
|
171
|
+
id?: string;
|
|
172
|
+
name?: string;
|
|
173
|
+
input?: Record<string, unknown>;
|
|
174
|
+
}[];
|
|
175
|
+
/** Error envelope some providers/proxies return with an OK status (e.g. OpenRouter upstream failures) */
|
|
176
|
+
error?: {
|
|
177
|
+
message?: string;
|
|
178
|
+
code?: number | string;
|
|
179
|
+
} | null;
|
|
180
|
+
/** Anthropic stop reason */
|
|
181
|
+
stop_reason?: string;
|
|
182
|
+
usage: {
|
|
183
|
+
/** OpenAI compatible */
|
|
184
|
+
prompt_tokens?: number;
|
|
185
|
+
completion_tokens?: number;
|
|
186
|
+
total_tokens?: number;
|
|
187
|
+
/** Anthropic */
|
|
188
|
+
input_tokens?: number;
|
|
189
|
+
output_tokens?: number;
|
|
190
|
+
/** GitKraken */
|
|
191
|
+
gk: {
|
|
192
|
+
used: number;
|
|
193
|
+
limit: number;
|
|
194
|
+
resets_on: string;
|
|
195
|
+
};
|
|
196
|
+
};
|
|
197
|
+
}
|
|
49
198
|
//# sourceMappingURL=openAICompatibleProviderBase.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openAICompatibleProviderBase.d.ts","sourceRoot":"","sources":["../../../../src/plus/ai/providers/openAICompatibleProviderBase.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"openAICompatibleProviderBase.d.ts","sourceRoot":"","sources":["../../../../src/plus/ai/providers/openAICompatibleProviderBase.ts"],"names":[],"mappings":"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"}
|