@vybestack/llxprt-code 0.1.12 → 0.1.13-nightly.250727.2261021c
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/dist/index.js +0 -0
- package/dist/package.json +5 -5
- package/dist/src/acp/acp.d.ts +208 -0
- package/dist/src/acp/acp.js +193 -0
- package/dist/src/acp/acp.js.map +1 -0
- package/dist/src/acp/acpPeer.d.ts +8 -0
- package/dist/src/acp/acpPeer.js +537 -0
- package/dist/src/acp/acpPeer.js.map +1 -0
- package/dist/src/config/config.d.ts +2 -0
- package/dist/src/config/config.js +73 -19
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/extension.d.ts +2 -2
- package/dist/src/config/extension.js +21 -16
- package/dist/src/config/extension.js.map +1 -1
- package/dist/src/config/settings.d.ts +7 -0
- package/dist/src/config/settings.js +15 -0
- package/dist/src/config/settings.js.map +1 -1
- package/dist/src/gemini.js +33 -34
- package/dist/src/gemini.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +1 -1
- package/dist/src/generated/git-commit.js +1 -1
- package/dist/src/nonInteractiveCli.js +36 -3
- package/dist/src/nonInteractiveCli.js.map +1 -1
- package/dist/src/providers/index.d.ts +1 -7
- package/dist/src/providers/index.js +2 -10
- package/dist/src/providers/index.js.map +1 -1
- package/dist/src/providers/providerConfigUtils.d.ts +1 -2
- package/dist/src/providers/providerConfigUtils.js +1 -1
- package/dist/src/providers/providerConfigUtils.js.map +1 -1
- package/dist/src/providers/providerManagerInstance.d.ts +2 -2
- package/dist/src/providers/providerManagerInstance.js +21 -19
- package/dist/src/providers/providerManagerInstance.js.map +1 -1
- package/dist/src/providers/types.d.ts +1 -9
- package/dist/src/providers/types.js +2 -10
- package/dist/src/providers/types.js.map +1 -1
- package/dist/src/services/CommandService.d.ts +3 -1
- package/dist/src/services/CommandService.js +50 -11
- package/dist/src/services/CommandService.js.map +1 -1
- package/dist/src/ui/App.js +24 -25
- package/dist/src/ui/App.js.map +1 -1
- package/dist/src/ui/commands/aboutCommand.js +21 -0
- package/dist/src/ui/commands/aboutCommand.js.map +1 -1
- package/dist/src/ui/commands/baseurlCommand.d.ts +7 -0
- package/dist/src/ui/commands/baseurlCommand.js +22 -0
- package/dist/src/ui/commands/baseurlCommand.js.map +1 -0
- package/dist/src/ui/commands/bugCommand.d.ts +7 -0
- package/dist/src/ui/commands/bugCommand.js +61 -0
- package/dist/src/ui/commands/bugCommand.js.map +1 -0
- package/dist/src/ui/commands/chatCommand.d.ts +7 -0
- package/dist/src/ui/commands/chatCommand.js +170 -0
- package/dist/src/ui/commands/chatCommand.js.map +1 -0
- package/dist/src/ui/commands/clearCommand.js +12 -2
- package/dist/src/ui/commands/clearCommand.js.map +1 -1
- package/dist/src/ui/commands/compressCommand.d.ts +7 -0
- package/dist/src/ui/commands/compressCommand.js +62 -0
- package/dist/src/ui/commands/compressCommand.js.map +1 -0
- package/dist/src/ui/commands/docsCommand.d.ts +7 -0
- package/dist/src/ui/commands/docsCommand.js +29 -0
- package/dist/src/ui/commands/docsCommand.js.map +1 -0
- package/dist/src/ui/commands/editorCommand.d.ts +7 -0
- package/dist/src/ui/commands/editorCommand.js +14 -0
- package/dist/src/ui/commands/editorCommand.js.map +1 -0
- package/dist/src/ui/commands/extensionsCommand.d.ts +7 -0
- package/dist/src/ui/commands/extensionsCommand.js +29 -0
- package/dist/src/ui/commands/extensionsCommand.js.map +1 -0
- package/dist/src/ui/commands/ideCommand.d.ts +8 -0
- package/dist/src/ui/commands/ideCommand.js +123 -0
- package/dist/src/ui/commands/ideCommand.js.map +1 -0
- package/dist/src/{providers/ProviderAwareContentGenerator.d.ts → ui/commands/keyCommand.d.ts} +2 -1
- package/dist/src/ui/commands/keyCommand.js +29 -0
- package/dist/src/ui/commands/keyCommand.js.map +1 -0
- package/dist/src/ui/commands/keyfileCommand.d.ts +7 -0
- package/dist/src/ui/commands/keyfileCommand.js +104 -0
- package/dist/src/ui/commands/keyfileCommand.js.map +1 -0
- package/dist/src/ui/commands/mcpCommand.d.ts +7 -0
- package/dist/src/ui/commands/mcpCommand.js +204 -0
- package/dist/src/ui/commands/mcpCommand.js.map +1 -0
- package/dist/src/ui/commands/modelCommand.d.ts +7 -0
- package/dist/src/ui/commands/modelCommand.js +60 -0
- package/dist/src/ui/commands/modelCommand.js.map +1 -0
- package/dist/src/ui/commands/providerCommand.d.ts +7 -0
- package/dist/src/ui/commands/providerCommand.js +86 -0
- package/dist/src/ui/commands/providerCommand.js.map +1 -0
- package/dist/src/ui/commands/quitCommand.d.ts +7 -0
- package/dist/src/ui/commands/quitCommand.js +32 -0
- package/dist/src/ui/commands/quitCommand.js.map +1 -0
- package/dist/src/ui/commands/restoreCommand.d.ts +8 -0
- package/dist/src/ui/commands/restoreCommand.js +126 -0
- package/dist/src/ui/commands/restoreCommand.js.map +1 -0
- package/dist/src/ui/commands/statsCommand.d.ts +7 -0
- package/dist/src/ui/commands/statsCommand.js +50 -0
- package/dist/src/ui/commands/statsCommand.js.map +1 -0
- package/dist/src/ui/commands/toolsCommand.d.ts +7 -0
- package/dist/src/ui/commands/toolsCommand.js +54 -0
- package/dist/src/ui/commands/toolsCommand.js.map +1 -0
- package/dist/src/ui/commands/types.d.ts +34 -2
- package/dist/src/ui/components/ContextSummaryDisplay.d.ts +6 -1
- package/dist/src/ui/components/ContextSummaryDisplay.js +46 -19
- package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -1
- package/dist/src/ui/components/Footer.d.ts +0 -1
- package/dist/src/ui/components/Footer.js +3 -21
- package/dist/src/ui/components/Footer.js.map +1 -1
- package/dist/src/ui/components/InputPrompt.js +110 -61
- package/dist/src/ui/components/InputPrompt.js.map +1 -1
- package/dist/src/ui/components/ProviderModelDialog.d.ts +1 -1
- package/dist/src/ui/components/ThemeDialog.js +25 -24
- package/dist/src/ui/components/ThemeDialog.js.map +1 -1
- package/dist/src/ui/components/messages/ToolGroupMessage.js +3 -1
- package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
- package/dist/src/ui/components/shared/MaxSizedBox.js +69 -2
- package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -1
- package/dist/src/ui/components/shared/RadioButtonSelect.d.ts +3 -1
- package/dist/src/ui/components/shared/RadioButtonSelect.js +60 -10
- package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
- package/dist/src/ui/components/shared/text-buffer.js +1 -1
- package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
- package/dist/src/ui/constants.d.ts +1 -0
- package/dist/src/ui/constants.js +1 -0
- package/dist/src/ui/constants.js.map +1 -1
- package/dist/src/ui/containers/SessionController.js +1 -1
- package/dist/src/ui/containers/SessionController.js.map +1 -1
- package/dist/src/ui/contexts/OpenAIProviderContext.d.ts +1 -2
- package/dist/src/ui/contexts/OpenAIProviderContext.js.map +1 -1
- package/dist/src/ui/hooks/shellCommandProcessor.d.ts +1 -1
- package/dist/src/ui/hooks/shellCommandProcessor.js +35 -11
- package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.d.ts +2 -9
- package/dist/src/ui/hooks/slashCommandProcessor.js +83 -622
- package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/useAuthCommand.js +16 -2
- package/dist/src/ui/hooks/useAuthCommand.js.map +1 -1
- package/dist/src/ui/hooks/useCompletion.d.ts +1 -0
- package/dist/src/ui/hooks/useCompletion.js +21 -2
- package/dist/src/ui/hooks/useCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useFocus.d.ts +6 -0
- package/dist/src/ui/hooks/useFocus.js +41 -0
- package/dist/src/ui/hooks/useFocus.js.map +1 -0
- package/dist/src/ui/hooks/useGeminiStream.js +34 -2
- package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
- package/dist/src/ui/hooks/useOpenAIProviderInfo.d.ts +3 -2
- package/dist/src/ui/hooks/useOpenAIProviderInfo.js +5 -4
- package/dist/src/ui/hooks/useOpenAIProviderInfo.js.map +1 -1
- package/dist/src/ui/hooks/usePrivacySettings.js +5 -5
- package/dist/src/ui/hooks/usePrivacySettings.js.map +1 -1
- package/dist/src/ui/hooks/useProviderDialog.d.ts +5 -2
- package/dist/src/ui/hooks/useProviderDialog.js +55 -3
- package/dist/src/ui/hooks/useProviderDialog.js.map +1 -1
- package/dist/src/ui/hooks/useProviderModelDialog.d.ts +1 -1
- package/dist/src/ui/themes/ansi-light.js +1 -1
- package/dist/src/ui/themes/ansi-light.js.map +1 -1
- package/dist/src/ui/themes/googlecode.js +1 -1
- package/dist/src/ui/themes/googlecode.js.map +1 -1
- package/dist/src/ui/themes/xcode.js +1 -1
- package/dist/src/ui/themes/xcode.js.map +1 -1
- package/dist/src/ui/types.d.ts +10 -0
- package/dist/src/ui/types.js.map +1 -1
- package/dist/src/ui/utils/updateCheck.js +10 -6
- package/dist/src/ui/utils/updateCheck.js.map +1 -1
- package/dist/src/utils/userStartupWarnings.js +1 -16
- package/dist/src/utils/userStartupWarnings.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -5
- package/dist/src/providers/IMessage.d.ts +0 -38
- package/dist/src/providers/IMessage.js +0 -17
- package/dist/src/providers/IMessage.js.map +0 -1
- package/dist/src/providers/IModel.d.ts +0 -23
- package/dist/src/providers/IModel.js +0 -17
- package/dist/src/providers/IModel.js.map +0 -1
- package/dist/src/providers/IProvider.d.ts +0 -32
- package/dist/src/providers/IProvider.js +0 -17
- package/dist/src/providers/IProvider.js.map +0 -1
- package/dist/src/providers/ITool.d.ts +0 -23
- package/dist/src/providers/ITool.js +0 -17
- package/dist/src/providers/ITool.js.map +0 -1
- package/dist/src/providers/ProviderAwareContentGenerator.js +0 -9
- package/dist/src/providers/ProviderAwareContentGenerator.js.map +0 -1
- package/dist/src/providers/ProviderManager.d.ts +0 -19
- package/dist/src/providers/ProviderManager.js +0 -63
- package/dist/src/providers/ProviderManager.js.map +0 -1
- package/dist/src/providers/ProviderManagerAdapter.d.ts +0 -17
- package/dist/src/providers/ProviderManagerAdapter.js +0 -113
- package/dist/src/providers/ProviderManagerAdapter.js.map +0 -1
- package/dist/src/providers/README-qwen3.md +0 -60
- package/dist/src/providers/adapters/IStreamAdapter.d.ts +0 -18
- package/dist/src/providers/adapters/IStreamAdapter.js +0 -7
- package/dist/src/providers/adapters/IStreamAdapter.js.map +0 -1
- package/dist/src/providers/anthropic/AnthropicProvider.d.ts +0 -46
- package/dist/src/providers/anthropic/AnthropicProvider.js +0 -478
- package/dist/src/providers/anthropic/AnthropicProvider.js.map +0 -1
- package/dist/src/providers/contentGeneratorProvider.d.ts +0 -13
- package/dist/src/providers/contentGeneratorProvider.js +0 -17
- package/dist/src/providers/contentGeneratorProvider.js.map +0 -1
- package/dist/src/providers/gemini/GeminiProvider.d.ts +0 -72
- package/dist/src/providers/gemini/GeminiProvider.js +0 -454
- package/dist/src/providers/gemini/GeminiProvider.js.map +0 -1
- package/dist/src/providers/integration/TEST_INSTRUCTIONS.md +0 -197
- package/dist/src/providers/openai/ConversationCache.d.ts +0 -20
- package/dist/src/providers/openai/ConversationCache.js +0 -109
- package/dist/src/providers/openai/ConversationCache.js.map +0 -1
- package/dist/src/providers/openai/IChatGenerateParams.d.ts +0 -11
- package/dist/src/providers/openai/IChatGenerateParams.js +0 -2
- package/dist/src/providers/openai/IChatGenerateParams.js.map +0 -1
- package/dist/src/providers/openai/OpenAIProvider.d.ts +0 -71
- package/dist/src/providers/openai/OpenAIProvider.js +0 -486
- package/dist/src/providers/openai/OpenAIProvider.js.map +0 -1
- package/dist/src/providers/openai/Qwen3FireworksProvider.d.ts +0 -39
- package/dist/src/providers/openai/Qwen3FireworksProvider.js +0 -209
- package/dist/src/providers/openai/Qwen3FireworksProvider.js.map +0 -1
- package/dist/src/providers/openai/RESPONSES_API_MODELS.d.ts +0 -2
- package/dist/src/providers/openai/RESPONSES_API_MODELS.js +0 -14
- package/dist/src/providers/openai/RESPONSES_API_MODELS.js.map +0 -1
- package/dist/src/providers/openai/buildResponsesRequest.d.ts +0 -67
- package/dist/src/providers/openai/buildResponsesRequest.js +0 -144
- package/dist/src/providers/openai/buildResponsesRequest.js.map +0 -1
- package/dist/src/providers/openai/docs/accessing-provider-info.md +0 -172
- package/dist/src/providers/openai/docs/params-mapping.md +0 -91
- package/dist/src/providers/openai/docs/qwen3-fireworks.md +0 -47
- package/dist/src/providers/openai/docs/responses-api-tool-calls.md +0 -96
- package/dist/src/providers/openai/estimateRemoteTokens.d.ts +0 -26
- package/dist/src/providers/openai/estimateRemoteTokens.js +0 -75
- package/dist/src/providers/openai/estimateRemoteTokens.js.map +0 -1
- package/dist/src/providers/openai/getOpenAIProviderInfo.d.ts +0 -46
- package/dist/src/providers/openai/getOpenAIProviderInfo.js +0 -74
- package/dist/src/providers/openai/getOpenAIProviderInfo.js.map +0 -1
- package/dist/src/providers/openai/parseResponsesStream.d.ts +0 -3
- package/dist/src/providers/openai/parseResponsesStream.js +0 -444
- package/dist/src/providers/openai/parseResponsesStream.js.map +0 -1
- package/dist/src/providers/parsers/TextToolCallParser.d.ts +0 -35
- package/dist/src/providers/parsers/TextToolCallParser.js +0 -248
- package/dist/src/providers/parsers/TextToolCallParser.js.map +0 -1
- package/dist/src/providers/tokenizers/AnthropicTokenizer.d.ts +0 -19
- package/dist/src/providers/tokenizers/AnthropicTokenizer.js +0 -37
- package/dist/src/providers/tokenizers/AnthropicTokenizer.js.map +0 -1
- package/dist/src/providers/tokenizers/ITokenizer.d.ts +0 -18
- package/dist/src/providers/tokenizers/ITokenizer.js +0 -17
- package/dist/src/providers/tokenizers/ITokenizer.js.map +0 -1
- package/dist/src/providers/tokenizers/OpenAITokenizer.d.ts +0 -24
- package/dist/src/providers/tokenizers/OpenAITokenizer.js +0 -56
- package/dist/src/providers/tokenizers/OpenAITokenizer.js.map +0 -1
- package/dist/src/tools/IToolFormatter.d.ts +0 -40
- package/dist/src/tools/IToolFormatter.js +0 -17
- package/dist/src/tools/IToolFormatter.js.map +0 -1
- package/dist/src/tools/ToolFormatter.d.ts +0 -45
- package/dist/src/tools/ToolFormatter.js +0 -216
- package/dist/src/tools/ToolFormatter.js.map +0 -1
- package/dist/vybestack-llxprt-code-0.1.12.tgz +0 -0
@@ -1,486 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Copyright 2025 Vybestack LLC
|
3
|
-
*
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
-
* you may not use this file except in compliance with the License.
|
6
|
-
* You may obtain a copy of the License at
|
7
|
-
*
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
9
|
-
*
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
-
* See the License for the specific language governing permissions and
|
14
|
-
* limitations under the License.
|
15
|
-
*/
|
16
|
-
import { ContentGeneratorRole } from '../types.js';
|
17
|
-
import OpenAI from 'openai';
|
18
|
-
import { GemmaToolCallParser } from '../parsers/TextToolCallParser.js';
|
19
|
-
import { ToolFormatter } from '../../tools/ToolFormatter.js';
|
20
|
-
import { RESPONSES_API_MODELS } from './RESPONSES_API_MODELS.js';
|
21
|
-
import { ConversationCache } from './ConversationCache.js';
|
22
|
-
import { estimateMessagesTokens, estimateRemoteTokens, } from './estimateRemoteTokens.js';
|
23
|
-
import { ConversationContext } from '../../utils/ConversationContext.js';
|
24
|
-
import { parseResponsesStream, parseErrorResponse, } from './parseResponsesStream.js';
|
25
|
-
import { buildResponsesRequest } from './buildResponsesRequest.js';
|
26
|
-
export class OpenAIProvider {
|
27
|
-
name = 'openai';
|
28
|
-
openai;
|
29
|
-
currentModel = 'gpt-4.1';
|
30
|
-
apiKey;
|
31
|
-
baseURL;
|
32
|
-
settings;
|
33
|
-
toolFormatter;
|
34
|
-
toolFormatOverride;
|
35
|
-
conversationCache;
|
36
|
-
constructor(apiKey, baseURL, settings) {
|
37
|
-
this.apiKey = apiKey;
|
38
|
-
this.baseURL = baseURL;
|
39
|
-
this.settings = settings;
|
40
|
-
this.toolFormatter = new ToolFormatter();
|
41
|
-
this.conversationCache = new ConversationCache();
|
42
|
-
this.openai = new OpenAI({
|
43
|
-
apiKey,
|
44
|
-
baseURL,
|
45
|
-
// Allow browser environment for tests
|
46
|
-
dangerouslyAllowBrowser: process.env.NODE_ENV === 'test',
|
47
|
-
});
|
48
|
-
}
|
49
|
-
requiresTextToolCallParsing() {
|
50
|
-
if (this.settings?.enableTextToolCallParsing === false) {
|
51
|
-
return false;
|
52
|
-
}
|
53
|
-
// Check if current tool format requires text-based parsing
|
54
|
-
const currentFormat = this.getToolFormat();
|
55
|
-
const textBasedFormats = ['hermes', 'xml', 'llama', 'gemma'];
|
56
|
-
if (textBasedFormats.includes(currentFormat)) {
|
57
|
-
return true;
|
58
|
-
}
|
59
|
-
const defaultModels = ['gemma-3-12b-it', 'gemma-2-27b-it'];
|
60
|
-
const configuredModels = this.settings?.textToolCallModels || [];
|
61
|
-
const allModels = [...defaultModels, ...configuredModels];
|
62
|
-
return allModels.includes(this.currentModel);
|
63
|
-
}
|
64
|
-
getToolFormat() {
|
65
|
-
// Check manual override first
|
66
|
-
if (this.toolFormatOverride) {
|
67
|
-
return this.toolFormatOverride;
|
68
|
-
}
|
69
|
-
// Check for settings override
|
70
|
-
if (this.settings?.providerToolFormatOverrides?.[this.name]) {
|
71
|
-
return this.settings.providerToolFormatOverrides[this.name];
|
72
|
-
}
|
73
|
-
// Auto-detect tool format based on model or base URL
|
74
|
-
if (this.currentModel.includes('deepseek') ||
|
75
|
-
this.baseURL?.includes('deepseek')) {
|
76
|
-
return 'deepseek';
|
77
|
-
}
|
78
|
-
if (this.currentModel.includes('qwen') || this.baseURL?.includes('qwen')) {
|
79
|
-
return 'qwen';
|
80
|
-
}
|
81
|
-
// Default to OpenAI format
|
82
|
-
return 'openai';
|
83
|
-
}
|
84
|
-
shouldUseResponses(model) {
|
85
|
-
// Check env flag override (highest priority)
|
86
|
-
if (process.env.OPENAI_RESPONSES_DISABLE === 'true') {
|
87
|
-
return false;
|
88
|
-
}
|
89
|
-
// Check settings override
|
90
|
-
if (this.settings?.openaiResponsesEnabled !== undefined) {
|
91
|
-
return this.settings.openaiResponsesEnabled;
|
92
|
-
}
|
93
|
-
// Default: Check if model starts with any of the responses API model prefixes
|
94
|
-
return RESPONSES_API_MODELS.some((responsesModel) => model.startsWith(responsesModel));
|
95
|
-
}
|
96
|
-
async callResponsesEndpoint(messages, tools, options) {
|
97
|
-
// Check if API key is available
|
98
|
-
if (!this.apiKey || this.apiKey.trim() === '') {
|
99
|
-
throw new Error('OpenAI API key is required to make API calls');
|
100
|
-
}
|
101
|
-
// Remove the stateful mode error to allow O3 to work with conversation IDs
|
102
|
-
// Check context usage and warn if getting close to limit
|
103
|
-
if (options?.conversationId && options?.parentId) {
|
104
|
-
const contextInfo = this.estimateContextUsage(options.conversationId, options.parentId, messages);
|
105
|
-
// Warn if less than 4k tokens remaining
|
106
|
-
if (contextInfo.tokensRemaining < 4000) {
|
107
|
-
console.warn(`[OpenAI] Warning: Only ${contextInfo.tokensRemaining} tokens remaining ` +
|
108
|
-
`(${contextInfo.contextUsedPercent.toFixed(1)}% context used). ` +
|
109
|
-
`Consider starting a new conversation.`);
|
110
|
-
}
|
111
|
-
}
|
112
|
-
// Check cache for existing conversation
|
113
|
-
if (options?.conversationId && options?.parentId) {
|
114
|
-
const cachedMessages = this.conversationCache.get(options.conversationId, options.parentId);
|
115
|
-
if (cachedMessages) {
|
116
|
-
// Return cached messages as an async iterable
|
117
|
-
return (async function* () {
|
118
|
-
for (const message of cachedMessages) {
|
119
|
-
yield message;
|
120
|
-
}
|
121
|
-
})();
|
122
|
-
}
|
123
|
-
}
|
124
|
-
// Format tools for Responses API
|
125
|
-
const formattedTools = tools
|
126
|
-
? this.toolFormatter.toResponsesTool(tools)
|
127
|
-
: undefined;
|
128
|
-
// Build the request
|
129
|
-
const request = buildResponsesRequest({
|
130
|
-
model: this.currentModel,
|
131
|
-
messages,
|
132
|
-
tools: formattedTools,
|
133
|
-
stream: options?.stream ?? true,
|
134
|
-
conversationId: options?.conversationId,
|
135
|
-
parentId: options?.parentId,
|
136
|
-
tool_choice: options?.tool_choice,
|
137
|
-
});
|
138
|
-
// Make the API call
|
139
|
-
const baseURL = this.baseURL || 'https://api.openai.com/v1';
|
140
|
-
const responsesURL = `${baseURL}/responses`;
|
141
|
-
const response = await fetch(responsesURL, {
|
142
|
-
method: 'POST',
|
143
|
-
headers: {
|
144
|
-
Authorization: `Bearer ${this.apiKey}`,
|
145
|
-
'Content-Type': 'application/json',
|
146
|
-
},
|
147
|
-
body: JSON.stringify(request),
|
148
|
-
});
|
149
|
-
// Handle errors
|
150
|
-
if (!response.ok) {
|
151
|
-
const errorBody = await response.text();
|
152
|
-
// Handle 422 context_length_exceeded error
|
153
|
-
if (response.status === 422 &&
|
154
|
-
errorBody.includes('context_length_exceeded')) {
|
155
|
-
console.warn('[OpenAI] Context length exceeded, invalidating cache and retrying stateless...');
|
156
|
-
// Invalidate the cache for this conversation
|
157
|
-
if (options?.conversationId && options?.parentId) {
|
158
|
-
this.conversationCache.invalidate(options.conversationId, options.parentId);
|
159
|
-
}
|
160
|
-
// Retry without conversation context (pure stateless)
|
161
|
-
const retryRequest = buildResponsesRequest({
|
162
|
-
model: this.currentModel,
|
163
|
-
messages,
|
164
|
-
tools: formattedTools,
|
165
|
-
stream: options?.stream ?? true,
|
166
|
-
// Omit conversationId and parentId for stateless retry
|
167
|
-
tool_choice: options?.tool_choice,
|
168
|
-
});
|
169
|
-
const retryResponse = await fetch(responsesURL, {
|
170
|
-
method: 'POST',
|
171
|
-
headers: {
|
172
|
-
Authorization: `Bearer ${this.apiKey}`,
|
173
|
-
'Content-Type': 'application/json',
|
174
|
-
},
|
175
|
-
body: JSON.stringify(retryRequest),
|
176
|
-
});
|
177
|
-
if (!retryResponse.ok) {
|
178
|
-
const retryErrorBody = await retryResponse.text();
|
179
|
-
throw parseErrorResponse(retryResponse.status, retryErrorBody, this.name);
|
180
|
-
}
|
181
|
-
// Use the retry response
|
182
|
-
return this.handleResponsesApiResponse(retryResponse, messages, undefined, // No conversation context on retry
|
183
|
-
undefined, options?.stream !== false);
|
184
|
-
}
|
185
|
-
throw parseErrorResponse(response.status, errorBody, this.name);
|
186
|
-
}
|
187
|
-
// Handle the response
|
188
|
-
return this.handleResponsesApiResponse(response, messages, options?.conversationId, options?.parentId, options?.stream !== false);
|
189
|
-
}
|
190
|
-
async handleResponsesApiResponse(response, messages, conversationId, parentId, isStreaming) {
|
191
|
-
// Handle streaming response
|
192
|
-
if (isStreaming && response.body) {
|
193
|
-
const collectedMessages = [];
|
194
|
-
const cache = this.conversationCache;
|
195
|
-
return (async function* () {
|
196
|
-
for await (const message of parseResponsesStream(response.body)) {
|
197
|
-
// Collect messages for caching
|
198
|
-
if (message.content || message.tool_calls) {
|
199
|
-
collectedMessages.push(message);
|
200
|
-
}
|
201
|
-
// Update the parentId in the context as soon as we get a message ID
|
202
|
-
if (message.id) {
|
203
|
-
ConversationContext.setParentId(message.id);
|
204
|
-
}
|
205
|
-
yield message;
|
206
|
-
}
|
207
|
-
// Cache the collected messages with token count
|
208
|
-
if (conversationId && parentId && collectedMessages.length > 0) {
|
209
|
-
// Get previous accumulated tokens
|
210
|
-
const previousTokens = cache.getAccumulatedTokens(conversationId, parentId);
|
211
|
-
// Calculate tokens for this request (messages + response)
|
212
|
-
const requestTokens = estimateMessagesTokens(messages);
|
213
|
-
const responseTokens = estimateMessagesTokens(collectedMessages);
|
214
|
-
const totalTokensForRequest = requestTokens + responseTokens;
|
215
|
-
// Update cache with new accumulated total
|
216
|
-
cache.set(conversationId, parentId, collectedMessages, previousTokens + totalTokensForRequest);
|
217
|
-
}
|
218
|
-
})();
|
219
|
-
}
|
220
|
-
// Handle non-streaming response
|
221
|
-
const data = await response.json();
|
222
|
-
const resultMessages = [];
|
223
|
-
if (data.choices && data.choices.length > 0) {
|
224
|
-
const choice = data.choices[0];
|
225
|
-
const message = {
|
226
|
-
role: choice.message.role,
|
227
|
-
content: choice.message.content || '',
|
228
|
-
};
|
229
|
-
if (choice.message.tool_calls) {
|
230
|
-
message.tool_calls = choice.message.tool_calls;
|
231
|
-
}
|
232
|
-
if (data.usage) {
|
233
|
-
message.usage = {
|
234
|
-
prompt_tokens: data.usage.prompt_tokens,
|
235
|
-
completion_tokens: data.usage.completion_tokens,
|
236
|
-
total_tokens: data.usage.total_tokens,
|
237
|
-
};
|
238
|
-
}
|
239
|
-
resultMessages.push(message);
|
240
|
-
}
|
241
|
-
// Cache the result with token count
|
242
|
-
if (conversationId && parentId && resultMessages.length > 0) {
|
243
|
-
// Get previous accumulated tokens
|
244
|
-
const previousTokens = this.conversationCache.getAccumulatedTokens(conversationId, parentId);
|
245
|
-
// Calculate tokens for this request
|
246
|
-
const requestTokens = estimateMessagesTokens(messages);
|
247
|
-
const responseTokens = estimateMessagesTokens(resultMessages);
|
248
|
-
const totalTokensForRequest = requestTokens + responseTokens;
|
249
|
-
// Update cache with new accumulated total
|
250
|
-
this.conversationCache.set(conversationId, parentId, resultMessages, previousTokens + totalTokensForRequest);
|
251
|
-
}
|
252
|
-
return (async function* () {
|
253
|
-
for (const message of resultMessages) {
|
254
|
-
yield message;
|
255
|
-
}
|
256
|
-
})();
|
257
|
-
}
|
258
|
-
async getModels() {
|
259
|
-
// Check if API key is available
|
260
|
-
if (!this.apiKey || this.apiKey.trim() === '') {
|
261
|
-
throw new Error('OpenAI API key is required to fetch models');
|
262
|
-
}
|
263
|
-
try {
|
264
|
-
const response = await this.openai.models.list();
|
265
|
-
const models = [];
|
266
|
-
for await (const model of response) {
|
267
|
-
// Filter out non-chat models (embeddings, audio, image, moderation, DALL·E, etc.)
|
268
|
-
if (!/embedding|whisper|audio|tts|image|vision|dall[- ]?e|moderation/i.test(model.id)) {
|
269
|
-
models.push({
|
270
|
-
id: model.id,
|
271
|
-
name: model.id,
|
272
|
-
provider: 'openai',
|
273
|
-
supportedToolFormats: ['openai'],
|
274
|
-
});
|
275
|
-
}
|
276
|
-
}
|
277
|
-
return models;
|
278
|
-
}
|
279
|
-
catch (error) {
|
280
|
-
console.error('Error fetching models from OpenAI:', error);
|
281
|
-
// Return a hardcoded list as fallback
|
282
|
-
return [
|
283
|
-
{
|
284
|
-
id: 'gpt-4o',
|
285
|
-
name: 'gpt-4o',
|
286
|
-
provider: 'openai',
|
287
|
-
supportedToolFormats: ['openai'],
|
288
|
-
},
|
289
|
-
{
|
290
|
-
id: 'gpt-4o-mini',
|
291
|
-
name: 'gpt-4o-mini',
|
292
|
-
provider: 'openai',
|
293
|
-
supportedToolFormats: ['openai'],
|
294
|
-
},
|
295
|
-
{
|
296
|
-
id: 'gpt-4-turbo',
|
297
|
-
name: 'gpt-4-turbo',
|
298
|
-
provider: 'openai',
|
299
|
-
supportedToolFormats: ['openai'],
|
300
|
-
},
|
301
|
-
{
|
302
|
-
id: 'gpt-3.5-turbo',
|
303
|
-
name: 'gpt-3.5-turbo',
|
304
|
-
provider: 'openai',
|
305
|
-
supportedToolFormats: ['openai'],
|
306
|
-
},
|
307
|
-
];
|
308
|
-
}
|
309
|
-
}
|
310
|
-
async *generateChatCompletion(messages, tools, _toolFormat) {
|
311
|
-
// Check if API key is available
|
312
|
-
if (!this.apiKey || this.apiKey.trim() === '') {
|
313
|
-
throw new Error('OpenAI API key is required to generate completions');
|
314
|
-
}
|
315
|
-
// Check if we should use responses endpoint
|
316
|
-
if (this.shouldUseResponses(this.currentModel)) {
|
317
|
-
// Get the current conversation context
|
318
|
-
const { conversationId, parentId } = ConversationContext.getContext();
|
319
|
-
yield* await this.callResponsesEndpoint(messages, tools, {
|
320
|
-
stream: true,
|
321
|
-
tool_choice: tools && tools.length > 0 ? 'auto' : undefined,
|
322
|
-
stateful: false, // Always stateless for Phase 22-01
|
323
|
-
conversationId,
|
324
|
-
parentId,
|
325
|
-
});
|
326
|
-
return;
|
327
|
-
}
|
328
|
-
// Validate tool messages have required tool_call_id
|
329
|
-
const toolMessages = messages.filter((msg) => msg.role === 'tool');
|
330
|
-
const missingIds = toolMessages.filter((msg) => !msg.tool_call_id);
|
331
|
-
if (missingIds.length > 0) {
|
332
|
-
console.error('[OpenAIProvider] FATAL: Tool messages missing tool_call_id:', missingIds);
|
333
|
-
throw new Error(`OpenAI API requires tool_call_id for all tool messages. Found ${missingIds.length} tool message(s) without IDs.`);
|
334
|
-
}
|
335
|
-
const parser = this.requiresTextToolCallParsing()
|
336
|
-
? new GemmaToolCallParser()
|
337
|
-
: null;
|
338
|
-
// Get current tool format (with override support)
|
339
|
-
const currentToolFormat = this.getToolFormat();
|
340
|
-
// Format tools using ToolFormatter
|
341
|
-
const formattedTools = tools
|
342
|
-
? this.toolFormatter.toProviderFormat(tools, currentToolFormat)
|
343
|
-
: undefined;
|
344
|
-
const stream = await this.openai.chat.completions.create({
|
345
|
-
model: this.currentModel,
|
346
|
-
messages: messages,
|
347
|
-
stream: true,
|
348
|
-
stream_options: { include_usage: true },
|
349
|
-
tools: formattedTools,
|
350
|
-
tool_choice: tools && tools.length > 0 ? 'auto' : undefined,
|
351
|
-
});
|
352
|
-
let fullContent = '';
|
353
|
-
const accumulatedToolCalls = [];
|
354
|
-
let usageData;
|
355
|
-
for await (const chunk of stream) {
|
356
|
-
const delta = chunk.choices[0]?.delta;
|
357
|
-
if (delta?.content) {
|
358
|
-
fullContent += delta.content;
|
359
|
-
// For text-based models, don't yield content chunks yet
|
360
|
-
if (!parser) {
|
361
|
-
yield {
|
362
|
-
role: ContentGeneratorRole.ASSISTANT,
|
363
|
-
content: delta.content,
|
364
|
-
};
|
365
|
-
}
|
366
|
-
}
|
367
|
-
if (delta?.tool_calls) {
|
368
|
-
for (const toolCall of delta.tool_calls) {
|
369
|
-
this.toolFormatter.accumulateStreamingToolCall(toolCall, accumulatedToolCalls, currentToolFormat);
|
370
|
-
}
|
371
|
-
}
|
372
|
-
// Check for usage data in the chunk
|
373
|
-
if (chunk.usage) {
|
374
|
-
usageData = {
|
375
|
-
prompt_tokens: chunk.usage.prompt_tokens,
|
376
|
-
completion_tokens: chunk.usage.completion_tokens,
|
377
|
-
total_tokens: chunk.usage.total_tokens,
|
378
|
-
};
|
379
|
-
}
|
380
|
-
}
|
381
|
-
// After stream ends, parse text-based tool calls if needed
|
382
|
-
if (parser && fullContent) {
|
383
|
-
const { cleanedContent, toolCalls } = parser.parse(fullContent);
|
384
|
-
if (toolCalls.length > 0) {
|
385
|
-
// Convert to standard format
|
386
|
-
const standardToolCalls = toolCalls.map((tc, index) => ({
|
387
|
-
id: `call_${Date.now()}_${index}`,
|
388
|
-
type: 'function',
|
389
|
-
function: {
|
390
|
-
name: tc.name,
|
391
|
-
arguments: JSON.stringify(tc.arguments),
|
392
|
-
},
|
393
|
-
}));
|
394
|
-
yield {
|
395
|
-
role: ContentGeneratorRole.ASSISTANT,
|
396
|
-
content: cleanedContent,
|
397
|
-
tool_calls: standardToolCalls,
|
398
|
-
usage: usageData,
|
399
|
-
};
|
400
|
-
}
|
401
|
-
else {
|
402
|
-
// No tool calls found, yield cleaned content
|
403
|
-
yield {
|
404
|
-
role: ContentGeneratorRole.ASSISTANT,
|
405
|
-
content: cleanedContent,
|
406
|
-
usage: usageData,
|
407
|
-
};
|
408
|
-
}
|
409
|
-
}
|
410
|
-
else {
|
411
|
-
// Standard OpenAI tool call handling
|
412
|
-
if (accumulatedToolCalls.length > 0) {
|
413
|
-
yield {
|
414
|
-
role: ContentGeneratorRole.ASSISTANT,
|
415
|
-
content: fullContent || '',
|
416
|
-
tool_calls: accumulatedToolCalls,
|
417
|
-
usage: usageData,
|
418
|
-
};
|
419
|
-
}
|
420
|
-
else if (usageData) {
|
421
|
-
// Always emit usage data so downstream consumers can update stats
|
422
|
-
yield {
|
423
|
-
role: ContentGeneratorRole.ASSISTANT,
|
424
|
-
content: '',
|
425
|
-
usage: usageData,
|
426
|
-
};
|
427
|
-
}
|
428
|
-
}
|
429
|
-
}
|
430
|
-
setModel(modelId) {
|
431
|
-
this.currentModel = modelId;
|
432
|
-
}
|
433
|
-
getCurrentModel() {
|
434
|
-
return this.currentModel;
|
435
|
-
}
|
436
|
-
setApiKey(apiKey) {
|
437
|
-
this.apiKey = apiKey;
|
438
|
-
// Create a new OpenAI client with the updated API key
|
439
|
-
this.openai = new OpenAI({
|
440
|
-
apiKey,
|
441
|
-
baseURL: this.baseURL,
|
442
|
-
dangerouslyAllowBrowser: process.env.NODE_ENV === 'test',
|
443
|
-
});
|
444
|
-
}
|
445
|
-
setBaseUrl(baseUrl) {
|
446
|
-
// If no baseUrl is provided, clear to default (undefined)
|
447
|
-
this.baseURL = baseUrl && baseUrl.trim() !== '' ? baseUrl : undefined;
|
448
|
-
// Create a new OpenAI client with the updated (or cleared) base URL
|
449
|
-
this.openai = new OpenAI({
|
450
|
-
apiKey: this.apiKey,
|
451
|
-
baseURL: this.baseURL,
|
452
|
-
dangerouslyAllowBrowser: process.env.NODE_ENV === 'test',
|
453
|
-
});
|
454
|
-
}
|
455
|
-
setSettings(settings) {
|
456
|
-
this.settings = settings;
|
457
|
-
}
|
458
|
-
setToolFormatOverride(format) {
|
459
|
-
this.toolFormatOverride = format || undefined;
|
460
|
-
}
|
461
|
-
/**
|
462
|
-
* Estimates the remote context usage for the current conversation
|
463
|
-
* @param conversationId The conversation ID
|
464
|
-
* @param parentId The parent message ID
|
465
|
-
* @param promptMessages The messages being sent in the current prompt
|
466
|
-
* @returns Context usage information including remote tokens
|
467
|
-
*/
|
468
|
-
estimateContextUsage(conversationId, parentId, promptMessages) {
|
469
|
-
const promptTokens = estimateMessagesTokens(promptMessages);
|
470
|
-
return estimateRemoteTokens(this.currentModel, this.conversationCache, conversationId, parentId, promptTokens);
|
471
|
-
}
|
472
|
-
/**
|
473
|
-
* Get the conversation cache instance
|
474
|
-
* @returns The conversation cache
|
475
|
-
*/
|
476
|
-
getConversationCache() {
|
477
|
-
return this.conversationCache;
|
478
|
-
}
|
479
|
-
/**
|
480
|
-
* OpenAI always requires payment (API key)
|
481
|
-
*/
|
482
|
-
isPaidMode() {
|
483
|
-
return true;
|
484
|
-
}
|
485
|
-
}
|
486
|
-
//# sourceMappingURL=OpenAIProvider.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"OpenAIProvider.js","sourceRoot":"","sources":["../../../../src/providers/openai/OpenAIProvider.ts"],"names":[],"mappings":"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"}
|
@@ -1,39 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* @license
|
3
|
-
* Copyright 2025 Vybestack LLC
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
5
|
-
*/
|
6
|
-
import { OpenAIProvider } from './OpenAIProvider.js';
|
7
|
-
import { IMessage, ITool, IModel } from '../IProvider.js';
|
8
|
-
import { Settings } from '../../config/settings.js';
|
9
|
-
/**
|
10
|
-
* Qwen3-Fireworks provider that extends OpenAI provider with Qwen3-specific handling
|
11
|
-
* Fireworks AI provides an OpenAI-compatible API for Qwen3-235B model
|
12
|
-
*/
|
13
|
-
export declare class Qwen3FireworksProvider extends OpenAIProvider {
|
14
|
-
name: string;
|
15
|
-
private partialBuffer;
|
16
|
-
private streamTimeout;
|
17
|
-
private lastStreamActivity;
|
18
|
-
constructor(apiKey: string, settings?: Settings);
|
19
|
-
/**
|
20
|
-
* Override to return Qwen3-specific models
|
21
|
-
*/
|
22
|
-
getModels(): Promise<IModel[]>;
|
23
|
-
/**
|
24
|
-
* Override generateChatCompletion to handle Qwen3-specific content cleaning
|
25
|
-
*/
|
26
|
-
generateChatCompletion(messages: IMessage[], tools?: ITool[], toolFormat?: string): AsyncIterableIterator<IMessage>;
|
27
|
-
/**
|
28
|
-
* Enhanced Qwen3 content cleaning
|
29
|
-
*/
|
30
|
-
private cleanQwen3Content;
|
31
|
-
/**
|
32
|
-
* Override model setting to ensure we use the correct Qwen3 model
|
33
|
-
*/
|
34
|
-
setModel(modelId: string): void;
|
35
|
-
/**
|
36
|
-
* Check if API key is set (required for Fireworks)
|
37
|
-
*/
|
38
|
-
isConfigured(): boolean;
|
39
|
-
}
|