@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,209 +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 { ContentGeneratorRole } from '../types.js';
8
- /**
9
- * Qwen3-Fireworks provider that extends OpenAI provider with Qwen3-specific handling
10
- * Fireworks AI provides an OpenAI-compatible API for Qwen3-235B model
11
- */
12
- export class Qwen3FireworksProvider extends OpenAIProvider {
13
- name = 'qwen3-fireworks';
14
- partialBuffer = '';
15
- streamTimeout = null;
16
- lastStreamActivity = 0;
17
- constructor(apiKey, settings) {
18
- // Initialize with Fireworks API endpoint
19
- super(apiKey, 'https://api.fireworks.ai/inference/v1', settings);
20
- // Set the default model for Qwen3
21
- this.setModel('accounts/fireworks/models/qwen3-235b-a22b');
22
- }
23
- /**
24
- * Override to return Qwen3-specific models
25
- */
26
- async getModels() {
27
- return [
28
- {
29
- id: 'accounts/fireworks/models/qwen3-235b-a22b',
30
- name: 'Qwen3 235B',
31
- provider: this.name,
32
- supportedToolFormats: ['openai'], // Fireworks uses OpenAI format
33
- },
34
- ];
35
- }
36
- /**
37
- * Override generateChatCompletion to handle Qwen3-specific content cleaning
38
- */
39
- async *generateChatCompletion(messages, tools, toolFormat) {
40
- // Debug logging to see what messages Qwen3 receives
41
- console.log('[Qwen3FireworksProvider] Received messages:', JSON.stringify(messages, null, 2));
42
- console.log('[Qwen3FireworksProvider] Number of messages:', messages.length);
43
- // Log tool messages specifically
44
- const toolMessages = messages.filter((m) => m.role === 'tool');
45
- if (toolMessages.length > 0) {
46
- console.log('[Qwen3FireworksProvider] Tool messages found:', toolMessages.length);
47
- toolMessages.forEach((msg, idx) => {
48
- console.log(`[Qwen3FireworksProvider] Tool message ${idx}:`, {
49
- tool_call_id: msg.tool_call_id,
50
- tool_name: msg.tool_name,
51
- content_length: msg.content?.length || 0,
52
- content_preview: msg.content?.substring(0, 100),
53
- });
54
- });
55
- }
56
- // Clean messages before sending
57
- const cleanedMessages = messages.map((msg) => ({
58
- ...msg,
59
- content: msg.content ? this.cleanQwen3Content(msg.content) : msg.content,
60
- }));
61
- // Reset buffer for new conversation
62
- this.partialBuffer = '';
63
- this.lastStreamActivity = Date.now();
64
- // Clear any existing timeout
65
- if (this.streamTimeout) {
66
- clearTimeout(this.streamTimeout);
67
- this.streamTimeout = null;
68
- }
69
- // Use parent's implementation with enhanced cleaning
70
- let accumulatedContent = '';
71
- let lastYieldedLength = 0;
72
- try {
73
- for await (const message of super.generateChatCompletion(cleanedMessages, tools, toolFormat)) {
74
- // Update activity timestamp
75
- this.lastStreamActivity = Date.now();
76
- // Handle content messages
77
- if (message.content !== undefined) {
78
- // Accumulate content
79
- accumulatedContent += message.content;
80
- // Clean and yield new content
81
- const newContent = accumulatedContent.slice(lastYieldedLength);
82
- const cleaned = this.cleanQwen3Content(newContent);
83
- if (cleaned) {
84
- yield {
85
- role: ContentGeneratorRole.ASSISTANT,
86
- content: cleaned,
87
- };
88
- lastYieldedLength = accumulatedContent.length;
89
- }
90
- }
91
- else {
92
- // Pass through non-content messages (tool calls, etc.)
93
- // But check if it's a valid tool call first
94
- if (message.tool_calls && Array.isArray(message.tool_calls)) {
95
- // Validate each tool call has required fields
96
- const validToolCalls = message.tool_calls.filter((tc) => tc && tc.function && tc.function.name && tc.function.arguments);
97
- if (validToolCalls.length > 0) {
98
- yield {
99
- ...message,
100
- tool_calls: validToolCalls,
101
- };
102
- }
103
- }
104
- else {
105
- yield message;
106
- }
107
- }
108
- }
109
- }
110
- catch (error) {
111
- // Log the error but don't throw - Qwen3 sometimes cuts off mid-stream
112
- console.error('[Qwen3FireworksProvider] Stream error:', error);
113
- // If we have accumulated content, try to salvage what we can
114
- if (accumulatedContent && lastYieldedLength < accumulatedContent.length) {
115
- const remaining = accumulatedContent.slice(lastYieldedLength);
116
- const cleaned = this.cleanQwen3Content(remaining);
117
- if (cleaned) {
118
- yield {
119
- role: ContentGeneratorRole.ASSISTANT,
120
- content: cleaned,
121
- };
122
- }
123
- }
124
- }
125
- finally {
126
- // Clear timeout
127
- if (this.streamTimeout) {
128
- clearTimeout(this.streamTimeout);
129
- this.streamTimeout = null;
130
- }
131
- }
132
- // Final cleanup
133
- if (accumulatedContent && lastYieldedLength < accumulatedContent.length) {
134
- const finalContent = accumulatedContent.slice(lastYieldedLength);
135
- const finalCleaned = this.cleanQwen3Content(finalContent);
136
- if (finalCleaned) {
137
- yield {
138
- role: ContentGeneratorRole.ASSISTANT,
139
- content: finalCleaned,
140
- };
141
- }
142
- }
143
- }
144
- /**
145
- * Enhanced Qwen3 content cleaning
146
- */
147
- cleanQwen3Content(content) {
148
- let cleaned = content;
149
- // Remove Qwen3 control tokens with any role
150
- cleaned = cleaned.replace(/<\|im_start\|>\w+\n?/g, '');
151
- cleaned = cleaned.replace(/<\|im_end\|>/g, '');
152
- // Remove special function tokens
153
- cleaned = cleaned.replace(/<\|reserved_special_token_\d+\|>/g, '');
154
- // Fix missing spaces between words (common Qwen3 issue)
155
- // This regex looks for lowercase letter followed by uppercase letter with no space
156
- cleaned = cleaned.replace(/([a-z])([A-Z])/g, '$1 $2');
157
- // Fix common concatenation patterns
158
- cleaned = cleaned.replace(/(\w)([,.])\s*(\w)/g, '$1$2 $3');
159
- // Keep <think> tags visible by default - useful for debugging
160
- // cleaned = cleaned.replace(/<think>[\s\S]*?<\/think>/g, '');
161
- // Remove incomplete/truncated tool calls
162
- // Match tool_call with incomplete JSON or cut off mid-stream
163
- cleaned = cleaned.replace(/<tool_call>\s*\{[^}]*$/gm, '');
164
- cleaned = cleaned.replace(/<tool_call>[\s\S]*?(?:<\/tool_call>|$)/g, (match) => {
165
- // Only keep if it's a complete tool call with closing tag
166
- if (match.includes('</tool_call>')) {
167
- return match;
168
- }
169
- return '';
170
- });
171
- // Fix malformed tool calls
172
- cleaned = cleaned.replace(/<tool_call>\s*{/g, '<tool_call>{');
173
- cleaned = cleaned.replace(/}\s*<\/tool_call>/g, '}</tool_call>');
174
- // Remove duplicate tool call attempts
175
- cleaned = cleaned.replace(/(<tool_call>.*?<\/tool_call>)\s*\1/g, '$1');
176
- // Remove tool call JSON fragments that appear outside of tags
177
- // Pattern: {"name": ... but not within <tool_call> tags
178
- cleaned = cleaned.replace(/(?<!<tool_call>)\s*\{"name"\s*:\s*"[^"]*"\s*,?\s*"arguments"\s*:\s*\{[^}]*$/gm, '');
179
- // Clean up extra whitespace and newlines
180
- cleaned = cleaned.replace(/\s+/g, ' ');
181
- cleaned = cleaned.replace(/\n{3,}/g, '\n\n');
182
- return cleaned.trim();
183
- }
184
- /**
185
- * Override model setting to ensure we use the correct Qwen3 model
186
- */
187
- setModel(modelId) {
188
- // Always use the full Qwen3 model path
189
- if (!modelId.includes('qwen3')) {
190
- super.setModel('accounts/fireworks/models/qwen3-235b-a22b');
191
- }
192
- else {
193
- super.setModel(modelId);
194
- }
195
- }
196
- /**
197
- * Check if API key is set (required for Fireworks)
198
- */
199
- isConfigured() {
200
- try {
201
- // The parent class will throw if no API key
202
- return true;
203
- }
204
- catch {
205
- return false;
206
- }
207
- }
208
- }
209
- //# sourceMappingURL=Qwen3FireworksProvider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Qwen3FireworksProvider.js","sourceRoot":"","sources":["../../../../src/providers/openai/Qwen3FireworksProvider.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare const RESPONSES_API_MODELS: readonly ["gpt-4o", "gpt-4o-mini", "gpt-4o-realtime", "gpt-4-turbo", "gpt-4-turbo-preview", "o3-pro", "o3", "o3-mini", "o1", "o1-mini", "gpt-4.1"];
2
- export type ResponsesApiModel = (typeof RESPONSES_API_MODELS)[number];
@@ -1,14 +0,0 @@
1
- export const RESPONSES_API_MODELS = [
2
- 'gpt-4o',
3
- 'gpt-4o-mini',
4
- 'gpt-4o-realtime',
5
- 'gpt-4-turbo',
6
- 'gpt-4-turbo-preview',
7
- 'o3-pro',
8
- 'o3',
9
- 'o3-mini',
10
- 'o1',
11
- 'o1-mini',
12
- 'gpt-4.1',
13
- ];
14
- //# sourceMappingURL=RESPONSES_API_MODELS.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RESPONSES_API_MODELS.js","sourceRoot":"","sources":["../../../../src/providers/openai/RESPONSES_API_MODELS.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,QAAQ;IACR,aAAa;IACb,iBAAiB;IACjB,aAAa;IACb,qBAAqB;IACrB,QAAQ;IACR,IAAI;IACJ,SAAS;IACT,IAAI;IACJ,SAAS;IACT,SAAS;CACD,CAAC"}
@@ -1,67 +0,0 @@
1
- import { IMessage } from '../IMessage.js';
2
- import { ITool } from '../ITool.js';
3
- import { ResponsesTool } from '../../tools/IToolFormatter.js';
4
- export interface ResponsesRequestParams {
5
- messages?: IMessage[];
6
- prompt?: string;
7
- tools?: ITool[] | ResponsesTool[];
8
- stream?: boolean;
9
- conversationId?: string;
10
- parentId?: string;
11
- tool_choice?: string | object;
12
- stateful?: boolean;
13
- model?: string;
14
- temperature?: number;
15
- max_tokens?: number;
16
- top_p?: number;
17
- frequency_penalty?: number;
18
- presence_penalty?: number;
19
- stop?: string | string[];
20
- n?: number;
21
- logprobs?: boolean;
22
- top_logprobs?: number;
23
- response_format?: object;
24
- seed?: number;
25
- logit_bias?: Record<string, number>;
26
- user?: string;
27
- }
28
- type ResponsesMessage = {
29
- role: 'assistant' | 'system' | 'developer' | 'user';
30
- content: string;
31
- usage?: {
32
- prompt_tokens?: number;
33
- completion_tokens?: number;
34
- total_tokens?: number;
35
- };
36
- } | FunctionCallOutput;
37
- type FunctionCallOutput = {
38
- type: 'function_call_output';
39
- call_id: string;
40
- output: string;
41
- };
42
- export interface ResponsesRequest {
43
- model: string;
44
- input?: ResponsesMessage[];
45
- prompt?: string;
46
- tools?: ResponsesTool[];
47
- stream?: boolean;
48
- previous_response_id?: string;
49
- store?: boolean;
50
- tool_choice?: string | object;
51
- stateful?: boolean;
52
- temperature?: number;
53
- max_tokens?: number;
54
- top_p?: number;
55
- frequency_penalty?: number;
56
- presence_penalty?: number;
57
- stop?: string | string[];
58
- n?: number;
59
- logprobs?: boolean;
60
- top_logprobs?: number;
61
- response_format?: object;
62
- seed?: number;
63
- logit_bias?: Record<string, number>;
64
- user?: string;
65
- }
66
- export declare function buildResponsesRequest(params: ResponsesRequestParams): ResponsesRequest;
67
- export {};
@@ -1,144 +0,0 @@
1
- const MAX_TOOLS = 16;
2
- const MAX_JSON_SIZE_KB = 32;
3
- export function buildResponsesRequest(params) {
4
- const { messages, prompt, tools, conversationId, parentId, tool_choice, stateful, model, ...otherParams } = params;
5
- // Validate prompt/messages ambiguity
6
- if (prompt && messages && messages.length > 0) {
7
- throw new Error('Cannot specify both "prompt" and "messages". Use either prompt (for simple queries) or messages (for conversation history).');
8
- }
9
- // Validate required fields
10
- if (!prompt && (!messages || messages.length === 0)) {
11
- throw new Error('Either "prompt" or "messages" must be provided.');
12
- }
13
- if (!model) {
14
- throw new Error('Model is required for Responses API.');
15
- }
16
- // Validate tools limit
17
- if (tools && tools.length > MAX_TOOLS) {
18
- throw new Error(`Too many tools provided. Maximum allowed is ${MAX_TOOLS}, but ${tools.length} were provided.`);
19
- }
20
- // Validate JSON size for tools
21
- if (tools) {
22
- const toolsJson = JSON.stringify(tools);
23
- const sizeKb = new TextEncoder().encode(toolsJson).length / 1024;
24
- if (sizeKb > MAX_JSON_SIZE_KB) {
25
- throw new Error(`Tools JSON size exceeds ${MAX_JSON_SIZE_KB}KB limit. Current size: ${sizeKb.toFixed(2)}KB`);
26
- }
27
- }
28
- // Handle message trimming for stateful mode
29
- let processedMessages = messages;
30
- if (messages && conversationId) {
31
- // For stateful mode, we need to be smarter about trimming to preserve tool call/response pairs
32
- if (messages.length > 2) {
33
- // Find the last complete interaction (user message -> assistant response/tool calls -> tool responses -> user message)
34
- let startIndex = messages.length - 1;
35
- // Work backwards to find a complete interaction
36
- while (startIndex > 0) {
37
- const msg = messages[startIndex];
38
- // If we find a tool message, we need to include the assistant message with the tool call
39
- if (msg.role === 'tool') {
40
- // Find the assistant message that contains this tool call
41
- for (let i = startIndex - 1; i >= 0; i--) {
42
- const prevMsg = messages[i];
43
- if (prevMsg.role === 'assistant' && prevMsg.tool_calls) {
44
- // Check if this assistant message contains the tool call for our tool response
45
- const hasMatchingCall = prevMsg.tool_calls.some((call) => call.id === msg.tool_call_id);
46
- if (hasMatchingCall) {
47
- startIndex = i;
48
- break;
49
- }
50
- }
51
- }
52
- }
53
- // If we find a user message after going through tool responses, this is a good starting point
54
- if (msg.role === 'user' && startIndex < messages.length - 1) {
55
- break;
56
- }
57
- startIndex--;
58
- }
59
- // Ensure we don't trim too aggressively
60
- startIndex = Math.max(0, Math.min(startIndex, messages.length - 2));
61
- processedMessages = messages.slice(startIndex);
62
- }
63
- }
64
- // Transform messages for Responses API format
65
- let transformedMessages;
66
- const functionCallOutputs = [];
67
- if (processedMessages) {
68
- // First, extract function call outputs from tool messages
69
- processedMessages
70
- .filter((msg) => msg !== undefined && msg !== null)
71
- .forEach((msg) => {
72
- if (msg.role === 'tool' && msg.tool_call_id && msg.content) {
73
- functionCallOutputs.push({
74
- type: 'function_call_output',
75
- call_id: msg.tool_call_id,
76
- output: msg.content,
77
- });
78
- }
79
- });
80
- // Then, create the regular messages array (excluding tool messages)
81
- transformedMessages = processedMessages
82
- .filter((msg) => msg !== undefined && msg !== null)
83
- .filter((msg) => msg.role !== 'tool') // Exclude tool messages
84
- .map((msg) => {
85
- // Remove tool_calls field as it's not accepted by Responses API
86
- const { tool_calls: _tool_calls, tool_call_id: _tool_call_id, usage, ...cleanMsg } = msg;
87
- // Ensure role is valid for Responses API
88
- const validRole = cleanMsg.role;
89
- return {
90
- role: validRole,
91
- content: cleanMsg.content,
92
- ...(usage ? { usage } : {}), // Preserve usage data if present
93
- };
94
- })
95
- .filter((msg) => msg !== null);
96
- }
97
- // Build the request object with conditional fields
98
- const request = {
99
- model,
100
- ...otherParams,
101
- ...(prompt ? { prompt } : {}),
102
- };
103
- // Add input array if we have messages or function call outputs
104
- if (transformedMessages || functionCallOutputs.length > 0) {
105
- const inputItems = [];
106
- // Add regular messages
107
- if (transformedMessages) {
108
- inputItems.push(...transformedMessages);
109
- }
110
- // Add function call outputs
111
- if (functionCallOutputs.length > 0) {
112
- inputItems.push(...functionCallOutputs);
113
- }
114
- request.input = inputItems;
115
- }
116
- // Map conversation fields
117
- if (model) {
118
- if (conversationId) {
119
- // Note: The API uses previous_response_id, not a conversation_id.
120
- // We are mapping our internal parentId to this field.
121
- if (parentId) {
122
- request.previous_response_id = parentId;
123
- request.store = true;
124
- }
125
- }
126
- }
127
- // Add tools if provided
128
- if (tools && tools.length > 0) {
129
- request.tools = tools;
130
- if (tool_choice) {
131
- request.tool_choice = tool_choice;
132
- }
133
- }
134
- // Add stateful flag if provided
135
- if (stateful !== undefined) {
136
- request.stateful = stateful;
137
- }
138
- // Add stream flag if provided
139
- if (params.stream !== undefined) {
140
- request.stream = params.stream;
141
- }
142
- return request;
143
- }
144
- //# sourceMappingURL=buildResponsesRequest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"buildResponsesRequest.js","sourceRoot":"","sources":["../../../../src/providers/openai/buildResponsesRequest.ts"],"names":[],"mappings":"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"}
@@ -1,172 +0,0 @@
1
- # Accessing OpenAI Provider Information
2
-
3
- This document explains how to access the OpenAI provider instance, conversation cache, and remote token information from within the React components.
4
-
5
- ## Overview
6
-
7
- The OpenAI provider information can be accessed through the Config object that's passed to the App component. We've created utilities to make this access type-safe and convenient.
8
-
9
- ## Key Components
10
-
11
- ### 1. `getOpenAIProviderInfo()` Function
12
-
13
- Located in `src/providers/openai/getOpenAIProviderInfo.ts`, this function extracts OpenAI provider information from the Config object:
14
-
15
- ```typescript
16
- import { getOpenAIProviderInfo } from '../../providers/openai/getOpenAIProviderInfo.js';
17
-
18
- // In your component
19
- const openAIInfo = getOpenAIProviderInfo(config);
20
-
21
- if (openAIInfo.provider) {
22
- console.log('OpenAI provider is active');
23
- console.log('Current model:', openAIInfo.currentModel);
24
- console.log('Using Responses API:', openAIInfo.isResponsesAPI);
25
- }
26
- ```
27
-
28
- ### 2. `useOpenAIProviderInfo()` Hook
29
-
30
- Located in `src/ui/hooks/useOpenAIProviderInfo.ts`, this React hook provides reactive access to provider information:
31
-
32
- ```typescript
33
- import { useOpenAIProviderInfo } from './hooks/useOpenAIProviderInfo.js';
34
-
35
- function MyComponent({ config }) {
36
- const openAIInfo = useOpenAIProviderInfo(config);
37
-
38
- // Access conversation cache
39
- const cachedMessages = openAIInfo.getCachedConversation(
40
- conversationId,
41
- parentId,
42
- );
43
-
44
- // Check if using Responses API
45
- if (openAIInfo.isResponsesAPI) {
46
- // Handle Responses API specific logic
47
- }
48
- }
49
- ```
50
-
51
- ### 3. `OpenAIProviderContext`
52
-
53
- Located in `src/ui/contexts/OpenAIProviderContext.tsx`, this context provides global access to OpenAI provider state including remote token tracking:
54
-
55
- ```typescript
56
- // Wrap your app
57
- <OpenAIProviderContextProvider config={config}>
58
- <App {...props} />
59
- </OpenAIProviderContextProvider>
60
-
61
- // Use in components
62
- import { useOpenAIProviderContext } from '../contexts/OpenAIProviderContext.js';
63
-
64
- function TokenDisplay() {
65
- const { remoteTokenStats, isResponsesAPI } = useOpenAIProviderContext();
66
-
67
- if (isResponsesAPI && remoteTokenStats.lastUpdated) {
68
- return (
69
- <div>
70
- Remote Tokens: {remoteTokenStats.totalTokenCount}
71
- </div>
72
- );
73
- }
74
-
75
- return null;
76
- }
77
- ```
78
-
79
- ## Integration Example
80
-
81
- Here's how to integrate OpenAI provider information access in the App component:
82
-
83
- ```typescript
84
- // In App.tsx
85
- import { useOpenAIProviderInfo } from './hooks/useOpenAIProviderInfo.js';
86
-
87
- const App = ({ config, settings, startupWarnings = [] }: AppProps) => {
88
- // Access OpenAI provider info
89
- const openAIInfo = useOpenAIProviderInfo(config);
90
-
91
- // Use in your component logic
92
- useEffect(() => {
93
- if (openAIInfo.isOpenAIActive && openAIInfo.isResponsesAPI) {
94
- console.log(
95
- 'OpenAI Responses API is active for model:',
96
- openAIInfo.currentModel,
97
- );
98
- }
99
- }, [openAIInfo]);
100
-
101
- // Access conversation cache when needed
102
- const handleConversationLookup = (
103
- conversationId: string,
104
- parentId: string,
105
- ) => {
106
- const cached = openAIInfo.getCachedConversation(conversationId, parentId);
107
- if (cached) {
108
- console.log('Found cached conversation:', cached);
109
- }
110
- };
111
-
112
- // ... rest of component
113
- };
114
- ```
115
-
116
- ## Tracking Remote Tokens
117
-
118
- To track remote tokens from the Responses API, you need to update the token stats when receiving responses:
119
-
120
- ```typescript
121
- // In your API response handler
122
- const handleResponsesAPIResponse = (response: any) => {
123
- // Extract token information from response
124
- const usage = response.usage;
125
-
126
- if (usage) {
127
- // Update remote token stats in context
128
- updateRemoteTokenStats({
129
- promptTokenCount: usage.prompt_tokens,
130
- candidatesTokenCount: usage.completion_tokens,
131
- totalTokenCount: usage.total_tokens,
132
- });
133
- }
134
- };
135
- ```
136
-
137
- ## Type Safety
138
-
139
- All interfaces are properly typed:
140
-
141
- ```typescript
142
- interface OpenAIProviderInfo {
143
- provider: OpenAIProvider | null;
144
- conversationCache: ConversationCache | null;
145
- isResponsesAPI: boolean;
146
- currentModel: string | null;
147
- remoteTokenInfo: {
148
- promptTokenCount?: number;
149
- candidatesTokenCount?: number;
150
- totalTokenCount?: number;
151
- };
152
- }
153
- ```
154
-
155
- ## Best Practices
156
-
157
- 1. **Check for null values**: Always check if the provider is active before accessing its properties
158
- 2. **Use the hook in components**: Prefer `useOpenAIProviderInfo` hook over direct function calls for reactive updates
159
- 3. **Context for global state**: Use `OpenAIProviderContext` when you need to share provider state across multiple components
160
- 4. **Handle provider switches**: The utilities automatically handle when users switch between providers
161
-
162
- ## Accessing Internal Properties
163
-
164
- Since some properties of OpenAIProvider are private, we use type casting to access them:
165
-
166
- ```typescript
167
- // Access private properties (use with caution)
168
- const conversationCache = (openaiProvider as any).conversationCache;
169
- const shouldUseResponses = (openaiProvider as any).shouldUseResponses;
170
- ```
171
-
172
- This approach provides type safety where possible while still allowing access to necessary internal state.