@blackbox_ai/blackbox-cli-core 0.0.9 → 0.8.1

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 (247) hide show
  1. package/README.md +11 -183
  2. package/dist/index.d.ts +2 -1
  3. package/dist/index.js +2 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/src/blackbox/blackboxOAuth2.js +17 -1
  6. package/dist/src/blackbox/blackboxOAuth2.js.map +1 -1
  7. package/dist/src/code_assist/oauth2.js +15 -3
  8. package/dist/src/code_assist/oauth2.js.map +1 -1
  9. package/dist/src/config/blackboxModels.d.ts +3 -2
  10. package/dist/src/config/blackboxModels.js +262 -33
  11. package/dist/src/config/blackboxModels.js.map +1 -1
  12. package/dist/src/config/config.d.ts +65 -0
  13. package/dist/src/config/config.js +282 -17
  14. package/dist/src/config/config.js.map +1 -1
  15. package/dist/src/config/models.d.ts +1 -1
  16. package/dist/src/config/models.js +1 -1
  17. package/dist/src/config/models.js.map +1 -1
  18. package/dist/src/config/multiAgentModels.d.ts +63 -0
  19. package/dist/src/config/multiAgentModels.js +194 -0
  20. package/dist/src/config/multiAgentModels.js.map +1 -0
  21. package/dist/src/core/client.js +8 -2
  22. package/dist/src/core/client.js.map +1 -1
  23. package/dist/src/core/contentGenerator.d.ts +1 -0
  24. package/dist/src/core/contentGenerator.js +57 -7
  25. package/dist/src/core/contentGenerator.js.map +1 -1
  26. package/dist/src/core/encryptedClientFactory.d.ts +17 -0
  27. package/dist/src/core/encryptedClientFactory.js +92 -0
  28. package/dist/src/core/encryptedClientFactory.js.map +1 -0
  29. package/dist/src/core/encryptedContentGenerator.d.ts +47 -0
  30. package/dist/src/core/encryptedContentGenerator.js +445 -0
  31. package/dist/src/core/encryptedContentGenerator.js.map +1 -0
  32. package/dist/src/core/encryptedGeminiClient.d.ts +59 -0
  33. package/dist/src/core/encryptedGeminiClient.js +177 -0
  34. package/dist/src/core/encryptedGeminiClient.js.map +1 -0
  35. package/dist/src/core/encryptedGeminiClientBridge.d.ts +107 -0
  36. package/dist/src/core/encryptedGeminiClientBridge.js +808 -0
  37. package/dist/src/core/encryptedGeminiClientBridge.js.map +1 -0
  38. package/dist/src/core/encryptedGeminiClientWrapper.d.ts +129 -0
  39. package/dist/src/core/encryptedGeminiClientWrapper.js +305 -0
  40. package/dist/src/core/encryptedGeminiClientWrapper.js.map +1 -0
  41. package/dist/src/core/encryptedTurn.d.ts +40 -0
  42. package/dist/src/core/encryptedTurn.js +114 -0
  43. package/dist/src/core/encryptedTurn.js.map +1 -0
  44. package/dist/src/core/logger.d.ts +21 -0
  45. package/dist/src/core/logger.js +110 -0
  46. package/dist/src/core/logger.js.map +1 -1
  47. package/dist/src/core/openaiContentGenerator/constants.d.ts +2 -0
  48. package/dist/src/core/openaiContentGenerator/constants.js +2 -0
  49. package/dist/src/core/openaiContentGenerator/constants.js.map +1 -1
  50. package/dist/src/core/openaiContentGenerator/converter.d.ts +16 -1
  51. package/dist/src/core/openaiContentGenerator/converter.js +135 -4
  52. package/dist/src/core/openaiContentGenerator/converter.js.map +1 -1
  53. package/dist/src/core/openaiContentGenerator/pipeline.js +6 -2
  54. package/dist/src/core/openaiContentGenerator/pipeline.js.map +1 -1
  55. package/dist/src/core/openaiContentGenerator/provider/default.js +10 -1
  56. package/dist/src/core/openaiContentGenerator/provider/default.js.map +1 -1
  57. package/dist/src/core/prompts.d.ts +17 -0
  58. package/dist/src/core/prompts.js +347 -19
  59. package/dist/src/core/prompts.js.map +1 -1
  60. package/dist/src/core/tokenLimits.d.ts +1 -0
  61. package/dist/src/core/tokenLimits.js +37 -2
  62. package/dist/src/core/tokenLimits.js.map +1 -1
  63. package/dist/src/core/tokenLimits.test.js +36 -1
  64. package/dist/src/core/tokenLimits.test.js.map +1 -1
  65. package/dist/src/encrypt/attestation.d.ts +5 -0
  66. package/dist/src/encrypt/attestation.js +100 -0
  67. package/dist/src/encrypt/attestation.js.map +1 -0
  68. package/dist/src/encrypt/client.d.ts +14 -0
  69. package/dist/src/encrypt/client.js +132 -0
  70. package/dist/src/encrypt/client.js.map +1 -0
  71. package/dist/src/encrypt/config.d.ts +22 -0
  72. package/dist/src/encrypt/config.js +43 -0
  73. package/dist/src/encrypt/config.js.map +1 -0
  74. package/dist/src/encrypt/crypto-utils.d.ts +57 -0
  75. package/dist/src/encrypt/crypto-utils.js +257 -0
  76. package/dist/src/encrypt/crypto-utils.js.map +1 -0
  77. package/dist/src/encrypt/history-manager.d.ts +43 -0
  78. package/dist/src/encrypt/history-manager.js +164 -0
  79. package/dist/src/encrypt/history-manager.js.map +1 -0
  80. package/dist/src/encrypt/minimax-template.d.ts +73 -0
  81. package/dist/src/encrypt/minimax-template.js +276 -0
  82. package/dist/src/encrypt/minimax-template.js.map +1 -0
  83. package/dist/src/encrypt/sessions.d.ts +17 -0
  84. package/dist/src/encrypt/sessions.js +221 -0
  85. package/dist/src/encrypt/sessions.js.map +1 -0
  86. package/dist/src/encrypt/streaming-client.d.ts +29 -0
  87. package/dist/src/encrypt/streaming-client.js +232 -0
  88. package/dist/src/encrypt/streaming-client.js.map +1 -0
  89. package/dist/src/encrypt/tool-formatter.d.ts +36 -0
  90. package/dist/src/encrypt/tool-formatter.js +353 -0
  91. package/dist/src/encrypt/tool-formatter.js.map +1 -0
  92. package/dist/src/encrypt/tool-parser.d.ts +93 -0
  93. package/dist/src/encrypt/tool-parser.js +567 -0
  94. package/dist/src/encrypt/tool-parser.js.map +1 -0
  95. package/dist/src/encrypt/types.d.ts +81 -0
  96. package/dist/src/encrypt/types.js +2 -0
  97. package/dist/src/encrypt/types.js.map +1 -0
  98. package/dist/src/generated/git-commit.d.ts +3 -3
  99. package/dist/src/generated/git-commit.js +3 -3
  100. package/dist/src/ide/ide-client.js +9 -19
  101. package/dist/src/ide/ide-client.js.map +1 -1
  102. package/dist/src/index.d.ts +15 -0
  103. package/dist/src/index.js +15 -0
  104. package/dist/src/index.js.map +1 -1
  105. package/dist/src/mcp/oauth-provider.js +2 -6
  106. package/dist/src/mcp/oauth-provider.js.map +1 -1
  107. package/dist/src/mcp/oauth-token-storage.d.ts +7 -0
  108. package/dist/src/mcp/oauth-token-storage.js +24 -0
  109. package/dist/src/mcp/oauth-token-storage.js.map +1 -1
  110. package/dist/src/services/EncryptedChatService.d.ts +80 -0
  111. package/dist/src/services/EncryptedChatService.js +202 -0
  112. package/dist/src/services/EncryptedChatService.js.map +1 -0
  113. package/dist/src/services/StatsHistoryService.d.ts +131 -0
  114. package/dist/src/services/StatsHistoryService.js +427 -0
  115. package/dist/src/services/StatsHistoryService.js.map +1 -0
  116. package/dist/src/services/checkpointApiService.d.ts +101 -0
  117. package/dist/src/services/checkpointApiService.js +215 -0
  118. package/dist/src/services/checkpointApiService.js.map +1 -0
  119. package/dist/src/services/environmentSanitization.d.ts +24 -0
  120. package/dist/src/services/environmentSanitization.js +152 -0
  121. package/dist/src/services/environmentSanitization.js.map +1 -0
  122. package/dist/src/telemetry/blackbox-logger/blackbox-logger.d.ts +2 -6
  123. package/dist/src/telemetry/blackbox-logger/blackbox-logger.js +29 -135
  124. package/dist/src/telemetry/blackbox-logger/blackbox-logger.js.map +1 -1
  125. package/dist/src/telemetry/blackbox-logger/blackbox-logger.test.js +1 -1
  126. package/dist/src/telemetry/blackbox-logger/blackbox-logger.test.js.map +1 -1
  127. package/dist/src/telemetry/uiTelemetry.d.ts +8 -0
  128. package/dist/src/telemetry/uiTelemetry.js +17 -0
  129. package/dist/src/telemetry/uiTelemetry.js.map +1 -1
  130. package/dist/src/tools/browser-interactive.d.ts +63 -0
  131. package/dist/src/tools/browser-interactive.js +394 -0
  132. package/dist/src/tools/browser-interactive.js.map +1 -0
  133. package/dist/src/tools/browser_use.d.ts +22 -1
  134. package/dist/src/tools/browser_use.js +403 -23
  135. package/dist/src/tools/browser_use.js.map +1 -1
  136. package/dist/src/tools/data-file-constants.d.ts +17 -0
  137. package/dist/src/tools/data-file-constants.js +30 -0
  138. package/dist/src/tools/data-file-constants.js.map +1 -0
  139. package/dist/src/tools/edit.js +44 -7
  140. package/dist/src/tools/edit.js.map +1 -1
  141. package/dist/src/tools/ls.js +40 -6
  142. package/dist/src/tools/ls.js.map +1 -1
  143. package/dist/src/tools/ls.test.js +4 -4
  144. package/dist/src/tools/ls.test.js.map +1 -1
  145. package/dist/src/tools/mcp-client-manager.d.ts +28 -2
  146. package/dist/src/tools/mcp-client-manager.js +62 -4
  147. package/dist/src/tools/mcp-client-manager.js.map +1 -1
  148. package/dist/src/tools/mcp-client.d.ts +5 -3
  149. package/dist/src/tools/mcp-client.js +39 -11
  150. package/dist/src/tools/mcp-client.js.map +1 -1
  151. package/dist/src/tools/mcp-tool.d.ts +3 -1
  152. package/dist/src/tools/mcp-tool.js +37 -9
  153. package/dist/src/tools/mcp-tool.js.map +1 -1
  154. package/dist/src/tools/memoryTool.d.ts +14 -4
  155. package/dist/src/tools/memoryTool.js +98 -39
  156. package/dist/src/tools/memoryTool.js.map +1 -1
  157. package/dist/src/tools/read-data-file.d.ts +31 -0
  158. package/dist/src/tools/read-data-file.js +469 -0
  159. package/dist/src/tools/read-data-file.js.map +1 -0
  160. package/dist/src/tools/read-file.js +64 -5
  161. package/dist/src/tools/read-file.js.map +1 -1
  162. package/dist/src/tools/read-file.test.js +40 -6
  163. package/dist/src/tools/read-file.test.js.map +1 -1
  164. package/dist/src/tools/shell.d.ts +3 -1
  165. package/dist/src/tools/shell.js +25 -4
  166. package/dist/src/tools/shell.js.map +1 -1
  167. package/dist/src/tools/skill.d.ts +34 -0
  168. package/dist/src/tools/skill.js +143 -0
  169. package/dist/src/tools/skill.js.map +1 -0
  170. package/dist/src/tools/sql_db.d.ts +101 -0
  171. package/dist/src/tools/sql_db.js +1033 -0
  172. package/dist/src/tools/sql_db.js.map +1 -0
  173. package/dist/src/tools/sql_db_configure.d.ts +18 -0
  174. package/dist/src/tools/sql_db_configure.js +96 -0
  175. package/dist/src/tools/sql_db_configure.js.map +1 -0
  176. package/dist/src/tools/taskCompletion.d.ts +29 -0
  177. package/dist/src/tools/taskCompletion.js +231 -0
  178. package/dist/src/tools/taskCompletion.js.map +1 -0
  179. package/dist/src/tools/tool-error.d.ts +3 -1
  180. package/dist/src/tools/tool-error.js +3 -0
  181. package/dist/src/tools/tool-error.js.map +1 -1
  182. package/dist/src/tools/tool-names.d.ts +8 -0
  183. package/dist/src/tools/tool-names.js +8 -0
  184. package/dist/src/tools/tool-names.js.map +1 -1
  185. package/dist/src/tools/tool-registry.d.ts +22 -0
  186. package/dist/src/tools/tool-registry.js +41 -1
  187. package/dist/src/tools/tool-registry.js.map +1 -1
  188. package/dist/src/tools/tools.d.ts +18 -2
  189. package/dist/src/tools/tools.js +3 -0
  190. package/dist/src/tools/tools.js.map +1 -1
  191. package/dist/src/tools/web-fetch.js +24 -4
  192. package/dist/src/tools/web-fetch.js.map +1 -1
  193. package/dist/src/tools/web-search.js +160 -2
  194. package/dist/src/tools/web-search.js.map +1 -1
  195. package/dist/src/tools/workspace-error-helper.d.ts +9 -0
  196. package/dist/src/tools/workspace-error-helper.js +43 -0
  197. package/dist/src/tools/workspace-error-helper.js.map +1 -0
  198. package/dist/src/tools/workspace-error-helper.test.js +85 -0
  199. package/dist/src/tools/workspace-error-helper.test.js.map +1 -0
  200. package/dist/src/tools/write-file.js +42 -7
  201. package/dist/src/tools/write-file.js.map +1 -1
  202. package/dist/src/utils/environmentContext.js +3 -1
  203. package/dist/src/utils/environmentContext.js.map +1 -1
  204. package/dist/src/utils/environmentContext.test.js +3 -2
  205. package/dist/src/utils/environmentContext.test.js.map +1 -1
  206. package/dist/src/utils/fetch.d.ts +3 -1
  207. package/dist/src/utils/fetch.js +35 -2
  208. package/dist/src/utils/fetch.js.map +1 -1
  209. package/dist/src/utils/fileUtils.js +30 -3
  210. package/dist/src/utils/fileUtils.js.map +1 -1
  211. package/dist/src/utils/filesearch/fileSearch.d.ts +2 -0
  212. package/dist/src/utils/filesearch/fileSearch.js +38 -7
  213. package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
  214. package/dist/src/utils/git-worktree-utils.d.ts +56 -0
  215. package/dist/src/utils/git-worktree-utils.js +176 -0
  216. package/dist/src/utils/git-worktree-utils.js.map +1 -0
  217. package/dist/src/utils/imageCompression.d.ts +34 -0
  218. package/dist/src/utils/imageCompression.js +170 -0
  219. package/dist/src/utils/imageCompression.js.map +1 -0
  220. package/dist/src/utils/messageTruncator.d.ts +51 -0
  221. package/dist/src/utils/messageTruncator.js +346 -0
  222. package/dist/src/utils/messageTruncator.js.map +1 -0
  223. package/dist/src/utils/pathReader.js +26 -6
  224. package/dist/src/utils/pathReader.js.map +1 -1
  225. package/dist/src/utils/skill.d.ts +65 -0
  226. package/dist/src/utils/skill.js +241 -0
  227. package/dist/src/utils/skill.js.map +1 -0
  228. package/dist/src/utils/textCleaning.d.ts +51 -0
  229. package/dist/src/utils/textCleaning.js +327 -0
  230. package/dist/src/utils/textCleaning.js.map +1 -0
  231. package/dist/tsconfig.tsbuildinfo +1 -1
  232. package/package.json +16 -2
  233. package/dist/src/tools/mcp-client-manager.test.js +0 -39
  234. package/dist/src/tools/mcp-client-manager.test.js.map +0 -1
  235. package/dist/src/tools/mcp-client.test.d.ts +0 -6
  236. package/dist/src/tools/mcp-client.test.js +0 -454
  237. package/dist/src/tools/mcp-client.test.js.map +0 -1
  238. package/dist/src/tools/mcp-tool.test.d.ts +0 -6
  239. package/dist/src/tools/mcp-tool.test.js +0 -576
  240. package/dist/src/tools/mcp-tool.test.js.map +0 -1
  241. package/dist/src/tools/memoryTool.test.d.ts +0 -6
  242. package/dist/src/tools/memoryTool.test.js +0 -420
  243. package/dist/src/tools/memoryTool.test.js.map +0 -1
  244. package/dist/src/tools/tool-registry.test.d.ts +0 -6
  245. package/dist/src/tools/tool-registry.test.js +0 -332
  246. package/dist/src/tools/tool-registry.test.js.map +0 -1
  247. /package/dist/src/tools/{mcp-client-manager.test.d.ts → workspace-error-helper.test.d.ts} +0 -0
@@ -4,23 +4,57 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { DEFAULT_BLACKBOX_API_MODEL } from './models.js';
7
+ import * as fs from 'fs';
8
+ import * as path from 'path';
9
+ import * as os from 'os';
7
10
  // Default models list (fallback when API is unavailable)
11
+ // Ordered with priority models first, then alphabetically
8
12
  export const DEFAULT_BLACKBOX_API_MODELS = [
9
13
  {
10
- id: 'blackboxai/x-ai/grok-code-fast-1:free',
11
- name: 'Grok Code Fast (Free)',
12
- description: 'Fast coding model optimized for quick responses',
14
+ id: 'blackboxai/anthropic/claude-sonnet-4.5',
15
+ name: 'Claude Sonnet 4.5',
16
+ description: 'Anthropic Claude Sonnet 4.5 model',
13
17
  },
14
18
  {
15
- id: 'blackboxai/openai/gpt-4o',
16
- name: 'GPT-4o',
17
- description: 'OpenAI GPT-4o model',
19
+ id: 'blackboxai/anthropic/claude-opus-4.5',
20
+ name: 'Claude Opus 4.5',
21
+ description: 'Anthropic Claude Opus 4.5 model',
22
+ },
23
+ {
24
+ id: 'blackboxai/anthropic/claude-sonnet-4',
25
+ name: 'Claude Sonnet 4',
26
+ description: 'Anthropic Claude Sonnet 4 model',
27
+ },
28
+ {
29
+ id: 'blackboxai/minimax/minimax-m2.1',
30
+ name: 'Minimax M2.1',
31
+ description: 'Minimax M2.1 model',
32
+ },
33
+ {
34
+ id: 'blackboxai/anthropic/claude-opus-4',
35
+ name: 'Claude Opus 4',
36
+ description: 'Anthropic Claude Opus 4 model',
37
+ },
38
+ {
39
+ id: 'blackboxai/anthropic/claude-3.7-sonnet:thinking',
40
+ name: 'Claude 3.7 Sonnet (Thinking)',
41
+ description: 'Anthropic Claude 3.7 Sonnet with extended thinking',
42
+ },
43
+ {
44
+ id: 'blackboxai/anthropic/claude-haiku-4.5',
45
+ name: 'Claude Haiku 4.5',
46
+ description: 'Anthropic Claude Haiku 4.5 model',
18
47
  },
19
48
  {
20
49
  id: 'blackboxai/anthropic/claude-3.5-sonnet',
21
50
  name: 'Claude 3.5 Sonnet',
22
51
  description: 'Anthropic Claude 3.5 Sonnet model',
23
52
  },
53
+ {
54
+ id: 'blackboxai/encrypted',
55
+ name: 'Blackbox Encrypted',
56
+ description: 'BlackboxAI encrypted model',
57
+ },
24
58
  {
25
59
  id: 'blackboxai/google/gemini-2.5-flash',
26
60
  name: 'Gemini 2.5 Flash',
@@ -31,9 +65,94 @@ export const DEFAULT_BLACKBOX_API_MODELS = [
31
65
  name: 'Llama 3.3 70B',
32
66
  description: 'Meta Llama 3.3 70B Instruct model',
33
67
  },
68
+ {
69
+ id: 'blackboxai/openai/gpt-4o',
70
+ name: 'GPT-4o',
71
+ description: 'OpenAI GPT-4o model',
72
+ },
73
+ {
74
+ id: 'blackboxai/x-ai/grok-code-fast-1:free',
75
+ name: 'Grok Code Fast (Free)',
76
+ description: 'Fast coding model optimized for quick responses',
77
+ },
34
78
  ];
35
79
  let modelCache = null;
36
- const CACHE_DURATION_MS = 10 * 60 * 1000; // 10 minutes
80
+ const CACHE_DURATION_MS = 3 * 60 * 60 * 1000; // 3 hours
81
+ const FETCH_TIMEOUT_MS = 3 * 1000; // 5 seconds
82
+ /**
83
+ * Fetch with timeout wrapper
84
+ * @param url - URL to fetch
85
+ * @param options - Fetch options
86
+ * @param timeoutMs - Timeout in milliseconds (default: 5000ms)
87
+ * @returns Promise that resolves with Response or rejects on timeout
88
+ */
89
+ async function fetchWithTimeout(url, options, timeoutMs = FETCH_TIMEOUT_MS) {
90
+ const controller = new AbortController();
91
+ const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
92
+ try {
93
+ const response = await fetch(url, {
94
+ ...options,
95
+ signal: controller.signal,
96
+ });
97
+ clearTimeout(timeoutId);
98
+ return response;
99
+ }
100
+ catch (error) {
101
+ clearTimeout(timeoutId);
102
+ if (error instanceof Error && error.name === 'AbortError') {
103
+ throw new Error(`Request timeout after ${timeoutMs}ms`);
104
+ }
105
+ throw error;
106
+ }
107
+ }
108
+ /**
109
+ * Get the cache file path
110
+ */
111
+ function getCacheFilePath() {
112
+ const homeDir = os.homedir();
113
+ const cacheDir = path.join(homeDir, '.blackboxcli', 'cache');
114
+ return path.join(cacheDir, 'models-cache.json');
115
+ }
116
+ /**
117
+ * Load cache from disk
118
+ */
119
+ function loadCacheFromDisk() {
120
+ try {
121
+ const cacheFile = getCacheFilePath();
122
+ if (!fs.existsSync(cacheFile)) {
123
+ return null;
124
+ }
125
+ const data = fs.readFileSync(cacheFile, 'utf-8');
126
+ const cache = JSON.parse(data);
127
+ // Validate cache structure
128
+ if (!cache.models || !Array.isArray(cache.models) || typeof cache.timestamp !== 'number') {
129
+ console.warn('[BlackboxModels] Invalid cache file structure, ignoring');
130
+ return null;
131
+ }
132
+ return cache;
133
+ }
134
+ catch (error) {
135
+ console.warn('[BlackboxModels] Failed to load cache from disk:', error);
136
+ return null;
137
+ }
138
+ }
139
+ /**
140
+ * Save cache to disk
141
+ */
142
+ function saveCacheToDisk(cache) {
143
+ try {
144
+ const cacheFile = getCacheFilePath();
145
+ const cacheDir = path.dirname(cacheFile);
146
+ // Create cache directory if it doesn't exist
147
+ if (!fs.existsSync(cacheDir)) {
148
+ fs.mkdirSync(cacheDir, { recursive: true });
149
+ }
150
+ fs.writeFileSync(cacheFile, JSON.stringify(cache, null, 2), 'utf-8');
151
+ }
152
+ catch (error) {
153
+ console.warn('[BlackboxModels] Failed to save cache to disk:', error);
154
+ }
155
+ }
37
156
  /**
38
157
  * Formats model name from ID
39
158
  */
@@ -50,22 +169,71 @@ function formatModelName(id) {
50
169
  .join(' ');
51
170
  }
52
171
  /**
53
- * Fetches available models from BlackboxAI API
172
+ * Priority order for specific models
173
+ */
174
+ const MODEL_PRIORITY_ORDER = [
175
+ 'blackboxai/anthropic/claude-sonnet-4.5',
176
+ 'blackboxai/anthropic/claude-opus-4.5',
177
+ 'blackboxai/anthropic/claude-sonnet-4',
178
+ 'blackboxai/minimaxai/minimax-m2',
179
+ 'blackboxai/anthropic/claude-opus-4',
180
+ 'blackboxai/anthropic/claude-3.7-sonnet:thinking',
181
+ 'blackboxai/anthropic/claude-haiku-4.5',
182
+ 'blackboxai/encrypted',
183
+ ];
184
+ /**
185
+ * Sorts models with priority models first, then alphabetically
186
+ */
187
+ function sortModels(models) {
188
+ return models.sort((a, b) => {
189
+ const priorityA = MODEL_PRIORITY_ORDER.indexOf(a.id);
190
+ const priorityB = MODEL_PRIORITY_ORDER.indexOf(b.id);
191
+ // If both models are in priority list, sort by priority order
192
+ if (priorityA !== -1 && priorityB !== -1) {
193
+ return priorityA - priorityB;
194
+ }
195
+ // If only a is in priority list, a comes first
196
+ if (priorityA !== -1) {
197
+ return -1;
198
+ }
199
+ // If only b is in priority list, b comes first
200
+ if (priorityB !== -1) {
201
+ return 1;
202
+ }
203
+ // Otherwise, sort alphabetically by id
204
+ return a.id.localeCompare(b.id);
205
+ });
206
+ }
207
+ function ensureEncryptedModel(models) {
208
+ if (models.some((model) => model.id === 'blackboxai/encrypted')) {
209
+ return;
210
+ }
211
+ models.push({
212
+ id: 'blackboxai/encrypted',
213
+ name: 'Blackbox Encrypted',
214
+ description: 'BlackboxAI encrypted model',
215
+ });
216
+ }
217
+ /**
218
+ * Fetches available models from BlackboxAI API with timeout
219
+ * @param apiKey - API key for authentication
220
+ * @param timeoutMs - Timeout in milliseconds (default: 5000ms)
221
+ * @returns Promise that resolves with models array
54
222
  */
55
- async function fetchBlackboxApiModels(apiKey) {
223
+ async function fetchBlackboxApiModels(apiKey, timeoutMs = FETCH_TIMEOUT_MS) {
56
224
  try {
57
225
  // Try the /model/info endpoint first for detailed information
58
- const infoResponse = await fetch('https://api.blackbox.ai/model/info', {
226
+ const infoResponse = await fetchWithTimeout('https://api.blackbox.ai/model/info', {
59
227
  method: 'GET',
60
228
  headers: {
61
229
  'Content-Type': 'application/json',
62
230
  'Authorization': `Bearer ${apiKey}`,
63
231
  },
64
- });
232
+ }, timeoutMs);
65
233
  if (infoResponse.ok) {
66
234
  const infoData = await infoResponse.json();
67
235
  if (infoData.data && Array.isArray(infoData.data)) {
68
- return infoData.data.map((item) => {
236
+ const models = infoData.data.map((item) => {
69
237
  const modelInfo = (item['model_info'] || {});
70
238
  const sourceMetadata = (modelInfo['source_metadata'] || {});
71
239
  return {
@@ -77,60 +245,111 @@ async function fetchBlackboxApiModels(apiKey) {
77
245
  outputCost: modelInfo['output_cost_per_token'],
78
246
  };
79
247
  });
248
+ ensureEncryptedModel(models);
249
+ return sortModels(models);
80
250
  }
81
251
  }
82
252
  // Fallback to /models endpoint
83
- const response = await fetch('https://api.blackbox.ai/models', {
253
+ const response = await fetchWithTimeout('https://api.blackbox.ai/models', {
84
254
  method: 'GET',
85
255
  headers: {
86
256
  'Content-Type': 'application/json',
87
257
  'Authorization': `Bearer ${apiKey}`,
88
258
  },
89
- });
259
+ }, timeoutMs);
90
260
  if (!response.ok) {
91
- console.warn(`Failed to fetch Blackbox models: ${response.status} ${response.statusText}`);
92
- return DEFAULT_BLACKBOX_API_MODELS;
261
+ console.warn(`[BlackboxModels] Failed to fetch models: ${response.status} ${response.statusText}`);
262
+ // Try to return cached models if available
263
+ return getCachedModelsOrDefault();
93
264
  }
94
265
  const data = await response.json();
95
266
  // Parse the /models response format
96
267
  if (data.data && Array.isArray(data.data)) {
97
- return data.data.map((model) => ({
268
+ const models = data.data.map((model) => ({
98
269
  id: model['id'],
99
270
  name: formatModelName(model['id']),
100
271
  description: undefined,
101
272
  }));
273
+ ensureEncryptedModel(models);
274
+ return sortModels(models);
102
275
  }
103
- return DEFAULT_BLACKBOX_API_MODELS;
276
+ return getCachedModelsOrDefault();
104
277
  }
105
278
  catch (error) {
106
- console.warn('Error fetching Blackbox models:', error);
107
- return DEFAULT_BLACKBOX_API_MODELS;
279
+ const errorMsg = error instanceof Error ? error.message : String(error);
280
+ const isTimeout = errorMsg.includes('timeout');
281
+ if (isTimeout) {
282
+ console.warn(`[BlackboxModels] Request timed out after ${timeoutMs}ms, using cached models`);
283
+ }
284
+ else {
285
+ console.warn('[BlackboxModels] Error fetching models:', errorMsg);
286
+ }
287
+ // Try to return cached models (even if expired) or default models
288
+ return getCachedModelsOrDefault();
289
+ }
290
+ }
291
+ /**
292
+ * Gets cached models (even if expired) or returns default models
293
+ * @returns Cached models or default models
294
+ */
295
+ function getCachedModelsOrDefault() {
296
+ // Try memory cache first (even if expired)
297
+ if (modelCache !== null && modelCache.models.length > 0) {
298
+ console.log('[BlackboxModels] Using cached models from memory (may be expired)');
299
+ return modelCache.models;
300
+ }
301
+ // Try disk cache (even if expired)
302
+ const diskCache = loadCacheFromDisk();
303
+ if (diskCache !== null && diskCache.models.length > 0) {
304
+ console.log('[BlackboxModels] Using cached models from disk (may be expired)');
305
+ // Load into memory cache for future use
306
+ modelCache = diskCache;
307
+ return diskCache.models;
108
308
  }
309
+ // Fall back to default models
310
+ console.log('[BlackboxModels] No cache available, using default models');
311
+ return DEFAULT_BLACKBOX_API_MODELS;
109
312
  }
110
313
  /**
111
314
  * Gets available Blackbox models with caching
112
315
  * @param apiKey - Optional API key. If not provided, returns default models
113
316
  * @param forceRefresh - Force refresh the cache
317
+ * @param timeoutMs - Timeout in milliseconds for API requests (default: 5000ms)
114
318
  */
115
- export async function getBlackboxApiModels(apiKey, forceRefresh = false) {
319
+ export async function getBlackboxApiModels(apiKey, forceRefresh = false, timeoutMs = FETCH_TIMEOUT_MS) {
116
320
  // If no API key, return default models
117
321
  if (!apiKey) {
118
322
  return DEFAULT_BLACKBOX_API_MODELS;
119
323
  }
120
324
  const now = Date.now();
121
- // Check if cache is valid
122
- if (!forceRefresh &&
123
- modelCache &&
124
- now - modelCache.timestamp < CACHE_DURATION_MS) {
325
+ // Try to load from memory cache first
326
+ if (!forceRefresh && modelCache !== null && now - modelCache.timestamp < CACHE_DURATION_MS) {
125
327
  return modelCache.models;
126
328
  }
127
- // Fetch fresh models
128
- const models = await fetchBlackboxApiModels(apiKey);
129
- // Update cache
130
- modelCache = {
131
- models,
132
- timestamp: now,
133
- };
329
+ // Try to load from disk cache if memory cache is invalid
330
+ if (!forceRefresh && modelCache === null) {
331
+ const diskCache = loadCacheFromDisk();
332
+ if (diskCache !== null && now - diskCache.timestamp < CACHE_DURATION_MS) {
333
+ // Load into memory cache
334
+ modelCache = diskCache;
335
+ return diskCache.models;
336
+ }
337
+ }
338
+ // Fetch fresh models from API (with timeout and cache fallback)
339
+ const models = await fetchBlackboxApiModels(apiKey, timeoutMs);
340
+ // Only update cache if we got fresh models (not from cache fallback)
341
+ // Check if models are different from cached ones to determine if they're fresh
342
+ const isFreshData = modelCache === null ||
343
+ JSON.stringify(models) !== JSON.stringify(modelCache.models) ||
344
+ models !== DEFAULT_BLACKBOX_API_MODELS;
345
+ if (isFreshData) {
346
+ // Update both memory and disk cache
347
+ modelCache = {
348
+ models,
349
+ timestamp: now,
350
+ };
351
+ saveCacheToDisk(modelCache);
352
+ }
134
353
  return models;
135
354
  }
136
355
  /**
@@ -140,9 +359,19 @@ export function getDefaultBlackboxApiModel() {
140
359
  return DEFAULT_BLACKBOX_API_MODEL;
141
360
  }
142
361
  /**
143
- * Clears the model cache
362
+ * Clears the model cache (both memory and disk)
144
363
  */
145
364
  export function clearBlackboxApiModelCache() {
146
365
  modelCache = null;
366
+ // Also clear disk cache
367
+ try {
368
+ const cacheFile = getCacheFilePath();
369
+ if (fs.existsSync(cacheFile)) {
370
+ fs.unlinkSync(cacheFile);
371
+ }
372
+ }
373
+ catch (error) {
374
+ console.warn('[BlackboxModels] Failed to clear disk cache:', error);
375
+ }
147
376
  }
148
377
  //# sourceMappingURL=blackboxModels.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"blackboxModels.js","sourceRoot":"","sources":["../../../src/config/blackboxModels.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blackboxModels.js","sourceRoot":"","sources":["../../../src/config/blackboxModels.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,13 @@ export interface BugCommandSettings {
39
39
  export interface ChatCompressionSettings {
40
40
  contextPercentageThreshold?: number;
41
41
  }
42
+ export interface MessageTruncationSettings {
43
+ enabled?: boolean;
44
+ maxOutputTokens?: number;
45
+ preserveSystemPrompt?: boolean;
46
+ minTokensToPreserve?: number;
47
+ initialMessagesToKeep?: number;
48
+ }
42
49
  export interface SummarizeToolOutputSettings {
43
50
  tokenBudget?: number;
44
51
  }
@@ -95,6 +102,14 @@ export interface SandboxConfig {
95
102
  image: string;
96
103
  }
97
104
  export type FlashFallbackHandler = (currentModel: string, fallbackModel: string, error?: unknown) => Promise<boolean | string | null>;
105
+ export type SqlDbType = 'postgres' | 'mysql' | 'mongodb' | 'redis';
106
+ export type SqlDbConfigureResult = {
107
+ dbType: SqlDbType;
108
+ connectionUri: string;
109
+ };
110
+ export type InteractiveUiActions = {
111
+ sqlDbConfigure?: () => Promise<SqlDbConfigureResult | null>;
112
+ };
98
113
  export interface ConfigParameters {
99
114
  sessionId: string;
100
115
  embeddingModel?: string;
@@ -166,6 +181,7 @@ export interface ConfigParameters {
166
181
  loadMemoryFromIncludeDirectories?: boolean;
167
182
  tavilyApiKey?: string;
168
183
  chatCompression?: ChatCompressionSettings;
184
+ messageTruncation?: MessageTruncationSettings;
169
185
  interactive?: boolean;
170
186
  trustedFolder?: boolean;
171
187
  useRipgrep?: boolean;
@@ -176,6 +192,10 @@ export interface ConfigParameters {
176
192
  skipLoopDetection?: boolean;
177
193
  vlmSwitchMode?: string;
178
194
  supressToolErrors?: boolean;
195
+ saveCheckpoint?: string;
196
+ autoSave?: boolean;
197
+ resumeCheckpoint?: string;
198
+ listCheckpoints?: boolean;
179
199
  }
180
200
  export declare class Config {
181
201
  private toolRegistry;
@@ -237,8 +257,10 @@ export declare class Config {
237
257
  private readonly cliVersion?;
238
258
  private readonly experimentalZedIntegration;
239
259
  private readonly loadMemoryFromIncludeDirectories;
260
+ private interactiveUiActions?;
240
261
  private readonly tavilyApiKey?;
241
262
  private readonly chatCompression;
263
+ private messageTruncation;
242
264
  private readonly interactive;
243
265
  private readonly trustedFolder;
244
266
  private readonly useRipgrep;
@@ -248,6 +270,10 @@ export declare class Config {
248
270
  private readonly enablePromptCompletion;
249
271
  private readonly skipLoopDetection;
250
272
  private readonly vlmSwitchMode;
273
+ private readonly saveCheckpoint;
274
+ private readonly autoSave;
275
+ private readonly resumeCheckpoint;
276
+ private readonly listCheckpoints;
251
277
  private initialized;
252
278
  readonly storage: Storage;
253
279
  private readonly fileExclusions;
@@ -283,6 +309,14 @@ export declare class Config {
283
309
  getWorkspaceContext(): WorkspaceContext;
284
310
  getToolRegistry(): ToolRegistry;
285
311
  getPromptRegistry(): PromptRegistry;
312
+ /**
313
+ * Returns all MCP server errors that occurred during discovery
314
+ */
315
+ getMcpServerErrors(): import("../tools/mcp-client-manager.js").McpServerError[];
316
+ /**
317
+ * Checks if there are any MCP server errors
318
+ */
319
+ hasMcpServerErrors(): boolean;
286
320
  getDebugMode(): boolean;
287
321
  getQuestion(): string | undefined;
288
322
  getFullContext(): boolean;
@@ -352,6 +386,7 @@ export declare class Config {
352
386
  getContentGeneratorMaxRetries(): number | undefined;
353
387
  getContentGeneratorDisableCacheControl(): boolean | undefined;
354
388
  getContentGeneratorSamplingParams(): ContentGeneratorConfig['samplingParams'];
389
+ getContentGeneratorCustomHeaders(): Record<string, string> | undefined;
355
390
  getCliVersion(): string | undefined;
356
391
  getSystemPromptMappings(): Array<{
357
392
  baseUrls?: string[];
@@ -367,14 +402,44 @@ export declare class Config {
367
402
  */
368
403
  setFileSystemService(fileSystemService: FileSystemService): void;
369
404
  getChatCompression(): ChatCompressionSettings | undefined;
405
+ getMessageTruncation(): MessageTruncationSettings | undefined;
406
+ setMessageTruncation(settings: MessageTruncationSettings): void;
370
407
  isInteractive(): boolean;
371
408
  getUseRipgrep(): boolean;
372
409
  getShouldUseNodePtyShell(): boolean;
410
+ getApprovedShellCommands(): string[];
411
+ saveApprovedShellCommands(commands: string[]): void;
412
+ getApprovedMemoryScopes(): string[];
413
+ saveApprovedMemoryScopes(scopes: string[]): void;
414
+ getApprovedFileOperations(): string[];
415
+ saveApprovedFileOperations(filePaths: string[]): void;
416
+ getApprovedExternalPaths(): string[];
417
+ saveApprovedExternalPaths(paths: string[]): void;
418
+ getApprovedMcpServers(): string[];
419
+ saveApprovedMcpServers(servers: string[]): void;
420
+ getApprovedMcpTools(): string[];
421
+ saveApprovedMcpTools(tools: string[]): void;
422
+ getWebSearchAlwaysAllow(): boolean;
423
+ saveWebSearchAlwaysAllow(allow: boolean): void;
424
+ /**
425
+ * Helper method to load tool approvals from settings
426
+ */
427
+ private loadToolApprovals;
428
+ /**
429
+ * Helper method to save tool approvals to settings
430
+ */
431
+ private saveToolApprovals;
373
432
  getSkipNextSpeakerCheck(): boolean;
374
433
  getScreenReader(): boolean;
375
434
  getEnablePromptCompletion(): boolean;
376
435
  getSkipLoopDetection(): boolean;
377
436
  getVlmSwitchMode(): string | undefined;
437
+ getSaveCheckpoint(): string | undefined;
438
+ getAutoSave(): boolean;
439
+ getResumeCheckpoint(): string | undefined;
440
+ getListCheckpoints(): boolean;
441
+ setInteractiveUiActions(actions: InteractiveUiActions | undefined): void;
442
+ getInteractiveUiActions(): InteractiveUiActions | undefined;
378
443
  getSupressToolIterationErrors(): boolean;
379
444
  getGitService(): Promise<GitService>;
380
445
  getFileExclusions(): FileExclusions;