@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.
Files changed (246) hide show
  1. package/dist/index.js +0 -0
  2. package/dist/package.json +5 -5
  3. package/dist/src/acp/acp.d.ts +208 -0
  4. package/dist/src/acp/acp.js +193 -0
  5. package/dist/src/acp/acp.js.map +1 -0
  6. package/dist/src/acp/acpPeer.d.ts +8 -0
  7. package/dist/src/acp/acpPeer.js +537 -0
  8. package/dist/src/acp/acpPeer.js.map +1 -0
  9. package/dist/src/config/config.d.ts +2 -0
  10. package/dist/src/config/config.js +73 -19
  11. package/dist/src/config/config.js.map +1 -1
  12. package/dist/src/config/extension.d.ts +2 -2
  13. package/dist/src/config/extension.js +21 -16
  14. package/dist/src/config/extension.js.map +1 -1
  15. package/dist/src/config/settings.d.ts +7 -0
  16. package/dist/src/config/settings.js +15 -0
  17. package/dist/src/config/settings.js.map +1 -1
  18. package/dist/src/gemini.js +33 -34
  19. package/dist/src/gemini.js.map +1 -1
  20. package/dist/src/generated/git-commit.d.ts +1 -1
  21. package/dist/src/generated/git-commit.js +1 -1
  22. package/dist/src/nonInteractiveCli.js +36 -3
  23. package/dist/src/nonInteractiveCli.js.map +1 -1
  24. package/dist/src/providers/index.d.ts +1 -7
  25. package/dist/src/providers/index.js +2 -10
  26. package/dist/src/providers/index.js.map +1 -1
  27. package/dist/src/providers/providerConfigUtils.d.ts +1 -2
  28. package/dist/src/providers/providerConfigUtils.js +1 -1
  29. package/dist/src/providers/providerConfigUtils.js.map +1 -1
  30. package/dist/src/providers/providerManagerInstance.d.ts +2 -2
  31. package/dist/src/providers/providerManagerInstance.js +21 -19
  32. package/dist/src/providers/providerManagerInstance.js.map +1 -1
  33. package/dist/src/providers/types.d.ts +1 -9
  34. package/dist/src/providers/types.js +2 -10
  35. package/dist/src/providers/types.js.map +1 -1
  36. package/dist/src/services/CommandService.d.ts +3 -1
  37. package/dist/src/services/CommandService.js +50 -11
  38. package/dist/src/services/CommandService.js.map +1 -1
  39. package/dist/src/ui/App.js +24 -25
  40. package/dist/src/ui/App.js.map +1 -1
  41. package/dist/src/ui/commands/aboutCommand.js +21 -0
  42. package/dist/src/ui/commands/aboutCommand.js.map +1 -1
  43. package/dist/src/ui/commands/baseurlCommand.d.ts +7 -0
  44. package/dist/src/ui/commands/baseurlCommand.js +22 -0
  45. package/dist/src/ui/commands/baseurlCommand.js.map +1 -0
  46. package/dist/src/ui/commands/bugCommand.d.ts +7 -0
  47. package/dist/src/ui/commands/bugCommand.js +61 -0
  48. package/dist/src/ui/commands/bugCommand.js.map +1 -0
  49. package/dist/src/ui/commands/chatCommand.d.ts +7 -0
  50. package/dist/src/ui/commands/chatCommand.js +170 -0
  51. package/dist/src/ui/commands/chatCommand.js.map +1 -0
  52. package/dist/src/ui/commands/clearCommand.js +12 -2
  53. package/dist/src/ui/commands/clearCommand.js.map +1 -1
  54. package/dist/src/ui/commands/compressCommand.d.ts +7 -0
  55. package/dist/src/ui/commands/compressCommand.js +62 -0
  56. package/dist/src/ui/commands/compressCommand.js.map +1 -0
  57. package/dist/src/ui/commands/docsCommand.d.ts +7 -0
  58. package/dist/src/ui/commands/docsCommand.js +29 -0
  59. package/dist/src/ui/commands/docsCommand.js.map +1 -0
  60. package/dist/src/ui/commands/editorCommand.d.ts +7 -0
  61. package/dist/src/ui/commands/editorCommand.js +14 -0
  62. package/dist/src/ui/commands/editorCommand.js.map +1 -0
  63. package/dist/src/ui/commands/extensionsCommand.d.ts +7 -0
  64. package/dist/src/ui/commands/extensionsCommand.js +29 -0
  65. package/dist/src/ui/commands/extensionsCommand.js.map +1 -0
  66. package/dist/src/ui/commands/ideCommand.d.ts +8 -0
  67. package/dist/src/ui/commands/ideCommand.js +123 -0
  68. package/dist/src/ui/commands/ideCommand.js.map +1 -0
  69. package/dist/src/{providers/ProviderAwareContentGenerator.d.ts → ui/commands/keyCommand.d.ts} +2 -1
  70. package/dist/src/ui/commands/keyCommand.js +29 -0
  71. package/dist/src/ui/commands/keyCommand.js.map +1 -0
  72. package/dist/src/ui/commands/keyfileCommand.d.ts +7 -0
  73. package/dist/src/ui/commands/keyfileCommand.js +104 -0
  74. package/dist/src/ui/commands/keyfileCommand.js.map +1 -0
  75. package/dist/src/ui/commands/mcpCommand.d.ts +7 -0
  76. package/dist/src/ui/commands/mcpCommand.js +204 -0
  77. package/dist/src/ui/commands/mcpCommand.js.map +1 -0
  78. package/dist/src/ui/commands/modelCommand.d.ts +7 -0
  79. package/dist/src/ui/commands/modelCommand.js +60 -0
  80. package/dist/src/ui/commands/modelCommand.js.map +1 -0
  81. package/dist/src/ui/commands/providerCommand.d.ts +7 -0
  82. package/dist/src/ui/commands/providerCommand.js +86 -0
  83. package/dist/src/ui/commands/providerCommand.js.map +1 -0
  84. package/dist/src/ui/commands/quitCommand.d.ts +7 -0
  85. package/dist/src/ui/commands/quitCommand.js +32 -0
  86. package/dist/src/ui/commands/quitCommand.js.map +1 -0
  87. package/dist/src/ui/commands/restoreCommand.d.ts +8 -0
  88. package/dist/src/ui/commands/restoreCommand.js +126 -0
  89. package/dist/src/ui/commands/restoreCommand.js.map +1 -0
  90. package/dist/src/ui/commands/statsCommand.d.ts +7 -0
  91. package/dist/src/ui/commands/statsCommand.js +50 -0
  92. package/dist/src/ui/commands/statsCommand.js.map +1 -0
  93. package/dist/src/ui/commands/toolsCommand.d.ts +7 -0
  94. package/dist/src/ui/commands/toolsCommand.js +54 -0
  95. package/dist/src/ui/commands/toolsCommand.js.map +1 -0
  96. package/dist/src/ui/commands/types.d.ts +34 -2
  97. package/dist/src/ui/components/ContextSummaryDisplay.d.ts +6 -1
  98. package/dist/src/ui/components/ContextSummaryDisplay.js +46 -19
  99. package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -1
  100. package/dist/src/ui/components/Footer.d.ts +0 -1
  101. package/dist/src/ui/components/Footer.js +3 -21
  102. package/dist/src/ui/components/Footer.js.map +1 -1
  103. package/dist/src/ui/components/InputPrompt.js +110 -61
  104. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  105. package/dist/src/ui/components/ProviderModelDialog.d.ts +1 -1
  106. package/dist/src/ui/components/ThemeDialog.js +25 -24
  107. package/dist/src/ui/components/ThemeDialog.js.map +1 -1
  108. package/dist/src/ui/components/messages/ToolGroupMessage.js +3 -1
  109. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
  110. package/dist/src/ui/components/shared/MaxSizedBox.js +69 -2
  111. package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -1
  112. package/dist/src/ui/components/shared/RadioButtonSelect.d.ts +3 -1
  113. package/dist/src/ui/components/shared/RadioButtonSelect.js +60 -10
  114. package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
  115. package/dist/src/ui/components/shared/text-buffer.js +1 -1
  116. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  117. package/dist/src/ui/constants.d.ts +1 -0
  118. package/dist/src/ui/constants.js +1 -0
  119. package/dist/src/ui/constants.js.map +1 -1
  120. package/dist/src/ui/containers/SessionController.js +1 -1
  121. package/dist/src/ui/containers/SessionController.js.map +1 -1
  122. package/dist/src/ui/contexts/OpenAIProviderContext.d.ts +1 -2
  123. package/dist/src/ui/contexts/OpenAIProviderContext.js.map +1 -1
  124. package/dist/src/ui/hooks/shellCommandProcessor.d.ts +1 -1
  125. package/dist/src/ui/hooks/shellCommandProcessor.js +35 -11
  126. package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -1
  127. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +2 -9
  128. package/dist/src/ui/hooks/slashCommandProcessor.js +83 -622
  129. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  130. package/dist/src/ui/hooks/useAuthCommand.js +16 -2
  131. package/dist/src/ui/hooks/useAuthCommand.js.map +1 -1
  132. package/dist/src/ui/hooks/useCompletion.d.ts +1 -0
  133. package/dist/src/ui/hooks/useCompletion.js +21 -2
  134. package/dist/src/ui/hooks/useCompletion.js.map +1 -1
  135. package/dist/src/ui/hooks/useFocus.d.ts +6 -0
  136. package/dist/src/ui/hooks/useFocus.js +41 -0
  137. package/dist/src/ui/hooks/useFocus.js.map +1 -0
  138. package/dist/src/ui/hooks/useGeminiStream.js +34 -2
  139. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  140. package/dist/src/ui/hooks/useOpenAIProviderInfo.d.ts +3 -2
  141. package/dist/src/ui/hooks/useOpenAIProviderInfo.js +5 -4
  142. package/dist/src/ui/hooks/useOpenAIProviderInfo.js.map +1 -1
  143. package/dist/src/ui/hooks/usePrivacySettings.js +5 -5
  144. package/dist/src/ui/hooks/usePrivacySettings.js.map +1 -1
  145. package/dist/src/ui/hooks/useProviderDialog.d.ts +5 -2
  146. package/dist/src/ui/hooks/useProviderDialog.js +55 -3
  147. package/dist/src/ui/hooks/useProviderDialog.js.map +1 -1
  148. package/dist/src/ui/hooks/useProviderModelDialog.d.ts +1 -1
  149. package/dist/src/ui/themes/ansi-light.js +1 -1
  150. package/dist/src/ui/themes/ansi-light.js.map +1 -1
  151. package/dist/src/ui/themes/googlecode.js +1 -1
  152. package/dist/src/ui/themes/googlecode.js.map +1 -1
  153. package/dist/src/ui/themes/xcode.js +1 -1
  154. package/dist/src/ui/themes/xcode.js.map +1 -1
  155. package/dist/src/ui/types.d.ts +10 -0
  156. package/dist/src/ui/types.js.map +1 -1
  157. package/dist/src/ui/utils/updateCheck.js +10 -6
  158. package/dist/src/ui/utils/updateCheck.js.map +1 -1
  159. package/dist/src/utils/userStartupWarnings.js +1 -16
  160. package/dist/src/utils/userStartupWarnings.js.map +1 -1
  161. package/dist/tsconfig.tsbuildinfo +1 -1
  162. package/package.json +5 -5
  163. package/dist/src/providers/IMessage.d.ts +0 -38
  164. package/dist/src/providers/IMessage.js +0 -17
  165. package/dist/src/providers/IMessage.js.map +0 -1
  166. package/dist/src/providers/IModel.d.ts +0 -23
  167. package/dist/src/providers/IModel.js +0 -17
  168. package/dist/src/providers/IModel.js.map +0 -1
  169. package/dist/src/providers/IProvider.d.ts +0 -32
  170. package/dist/src/providers/IProvider.js +0 -17
  171. package/dist/src/providers/IProvider.js.map +0 -1
  172. package/dist/src/providers/ITool.d.ts +0 -23
  173. package/dist/src/providers/ITool.js +0 -17
  174. package/dist/src/providers/ITool.js.map +0 -1
  175. package/dist/src/providers/ProviderAwareContentGenerator.js +0 -9
  176. package/dist/src/providers/ProviderAwareContentGenerator.js.map +0 -1
  177. package/dist/src/providers/ProviderManager.d.ts +0 -19
  178. package/dist/src/providers/ProviderManager.js +0 -63
  179. package/dist/src/providers/ProviderManager.js.map +0 -1
  180. package/dist/src/providers/ProviderManagerAdapter.d.ts +0 -17
  181. package/dist/src/providers/ProviderManagerAdapter.js +0 -113
  182. package/dist/src/providers/ProviderManagerAdapter.js.map +0 -1
  183. package/dist/src/providers/README-qwen3.md +0 -60
  184. package/dist/src/providers/adapters/IStreamAdapter.d.ts +0 -18
  185. package/dist/src/providers/adapters/IStreamAdapter.js +0 -7
  186. package/dist/src/providers/adapters/IStreamAdapter.js.map +0 -1
  187. package/dist/src/providers/anthropic/AnthropicProvider.d.ts +0 -46
  188. package/dist/src/providers/anthropic/AnthropicProvider.js +0 -478
  189. package/dist/src/providers/anthropic/AnthropicProvider.js.map +0 -1
  190. package/dist/src/providers/contentGeneratorProvider.d.ts +0 -13
  191. package/dist/src/providers/contentGeneratorProvider.js +0 -17
  192. package/dist/src/providers/contentGeneratorProvider.js.map +0 -1
  193. package/dist/src/providers/gemini/GeminiProvider.d.ts +0 -72
  194. package/dist/src/providers/gemini/GeminiProvider.js +0 -454
  195. package/dist/src/providers/gemini/GeminiProvider.js.map +0 -1
  196. package/dist/src/providers/integration/TEST_INSTRUCTIONS.md +0 -197
  197. package/dist/src/providers/openai/ConversationCache.d.ts +0 -20
  198. package/dist/src/providers/openai/ConversationCache.js +0 -109
  199. package/dist/src/providers/openai/ConversationCache.js.map +0 -1
  200. package/dist/src/providers/openai/IChatGenerateParams.d.ts +0 -11
  201. package/dist/src/providers/openai/IChatGenerateParams.js +0 -2
  202. package/dist/src/providers/openai/IChatGenerateParams.js.map +0 -1
  203. package/dist/src/providers/openai/OpenAIProvider.d.ts +0 -71
  204. package/dist/src/providers/openai/OpenAIProvider.js +0 -486
  205. package/dist/src/providers/openai/OpenAIProvider.js.map +0 -1
  206. package/dist/src/providers/openai/Qwen3FireworksProvider.d.ts +0 -39
  207. package/dist/src/providers/openai/Qwen3FireworksProvider.js +0 -209
  208. package/dist/src/providers/openai/Qwen3FireworksProvider.js.map +0 -1
  209. package/dist/src/providers/openai/RESPONSES_API_MODELS.d.ts +0 -2
  210. package/dist/src/providers/openai/RESPONSES_API_MODELS.js +0 -14
  211. package/dist/src/providers/openai/RESPONSES_API_MODELS.js.map +0 -1
  212. package/dist/src/providers/openai/buildResponsesRequest.d.ts +0 -67
  213. package/dist/src/providers/openai/buildResponsesRequest.js +0 -144
  214. package/dist/src/providers/openai/buildResponsesRequest.js.map +0 -1
  215. package/dist/src/providers/openai/docs/accessing-provider-info.md +0 -172
  216. package/dist/src/providers/openai/docs/params-mapping.md +0 -91
  217. package/dist/src/providers/openai/docs/qwen3-fireworks.md +0 -47
  218. package/dist/src/providers/openai/docs/responses-api-tool-calls.md +0 -96
  219. package/dist/src/providers/openai/estimateRemoteTokens.d.ts +0 -26
  220. package/dist/src/providers/openai/estimateRemoteTokens.js +0 -75
  221. package/dist/src/providers/openai/estimateRemoteTokens.js.map +0 -1
  222. package/dist/src/providers/openai/getOpenAIProviderInfo.d.ts +0 -46
  223. package/dist/src/providers/openai/getOpenAIProviderInfo.js +0 -74
  224. package/dist/src/providers/openai/getOpenAIProviderInfo.js.map +0 -1
  225. package/dist/src/providers/openai/parseResponsesStream.d.ts +0 -3
  226. package/dist/src/providers/openai/parseResponsesStream.js +0 -444
  227. package/dist/src/providers/openai/parseResponsesStream.js.map +0 -1
  228. package/dist/src/providers/parsers/TextToolCallParser.d.ts +0 -35
  229. package/dist/src/providers/parsers/TextToolCallParser.js +0 -248
  230. package/dist/src/providers/parsers/TextToolCallParser.js.map +0 -1
  231. package/dist/src/providers/tokenizers/AnthropicTokenizer.d.ts +0 -19
  232. package/dist/src/providers/tokenizers/AnthropicTokenizer.js +0 -37
  233. package/dist/src/providers/tokenizers/AnthropicTokenizer.js.map +0 -1
  234. package/dist/src/providers/tokenizers/ITokenizer.d.ts +0 -18
  235. package/dist/src/providers/tokenizers/ITokenizer.js +0 -17
  236. package/dist/src/providers/tokenizers/ITokenizer.js.map +0 -1
  237. package/dist/src/providers/tokenizers/OpenAITokenizer.d.ts +0 -24
  238. package/dist/src/providers/tokenizers/OpenAITokenizer.js +0 -56
  239. package/dist/src/providers/tokenizers/OpenAITokenizer.js.map +0 -1
  240. package/dist/src/tools/IToolFormatter.d.ts +0 -40
  241. package/dist/src/tools/IToolFormatter.js +0 -17
  242. package/dist/src/tools/IToolFormatter.js.map +0 -1
  243. package/dist/src/tools/ToolFormatter.d.ts +0 -45
  244. package/dist/src/tools/ToolFormatter.js +0 -216
  245. package/dist/src/tools/ToolFormatter.js.map +0 -1
  246. 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
- }