@blackbox_ai/blackbox-cli-core 0.0.7 → 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 (255) 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 +11 -5
  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/coreToolScheduler.js +2 -2
  27. package/dist/src/core/coreToolScheduler.js.map +1 -1
  28. package/dist/src/core/encryptedClientFactory.d.ts +17 -0
  29. package/dist/src/core/encryptedClientFactory.js +92 -0
  30. package/dist/src/core/encryptedClientFactory.js.map +1 -0
  31. package/dist/src/core/encryptedContentGenerator.d.ts +47 -0
  32. package/dist/src/core/encryptedContentGenerator.js +445 -0
  33. package/dist/src/core/encryptedContentGenerator.js.map +1 -0
  34. package/dist/src/core/encryptedGeminiClient.d.ts +59 -0
  35. package/dist/src/core/encryptedGeminiClient.js +177 -0
  36. package/dist/src/core/encryptedGeminiClient.js.map +1 -0
  37. package/dist/src/core/encryptedGeminiClientBridge.d.ts +107 -0
  38. package/dist/src/core/encryptedGeminiClientBridge.js +808 -0
  39. package/dist/src/core/encryptedGeminiClientBridge.js.map +1 -0
  40. package/dist/src/core/encryptedGeminiClientWrapper.d.ts +129 -0
  41. package/dist/src/core/encryptedGeminiClientWrapper.js +305 -0
  42. package/dist/src/core/encryptedGeminiClientWrapper.js.map +1 -0
  43. package/dist/src/core/encryptedTurn.d.ts +40 -0
  44. package/dist/src/core/encryptedTurn.js +114 -0
  45. package/dist/src/core/encryptedTurn.js.map +1 -0
  46. package/dist/src/core/logger.d.ts +21 -0
  47. package/dist/src/core/logger.js +110 -0
  48. package/dist/src/core/logger.js.map +1 -1
  49. package/dist/src/core/openaiContentGenerator/constants.d.ts +2 -0
  50. package/dist/src/core/openaiContentGenerator/constants.js +2 -0
  51. package/dist/src/core/openaiContentGenerator/constants.js.map +1 -1
  52. package/dist/src/core/openaiContentGenerator/converter.d.ts +16 -1
  53. package/dist/src/core/openaiContentGenerator/converter.js +135 -4
  54. package/dist/src/core/openaiContentGenerator/converter.js.map +1 -1
  55. package/dist/src/core/openaiContentGenerator/pipeline.js +22 -8
  56. package/dist/src/core/openaiContentGenerator/pipeline.js.map +1 -1
  57. package/dist/src/core/openaiContentGenerator/pipeline.test.js +51 -0
  58. package/dist/src/core/openaiContentGenerator/pipeline.test.js.map +1 -1
  59. package/dist/src/core/openaiContentGenerator/provider/default.js +10 -1
  60. package/dist/src/core/openaiContentGenerator/provider/default.js.map +1 -1
  61. package/dist/src/core/prompts.d.ts +18 -1
  62. package/dist/src/core/prompts.js +388 -459
  63. package/dist/src/core/prompts.js.map +1 -1
  64. package/dist/src/core/tokenLimits.d.ts +1 -0
  65. package/dist/src/core/tokenLimits.js +37 -2
  66. package/dist/src/core/tokenLimits.js.map +1 -1
  67. package/dist/src/core/tokenLimits.test.js +36 -1
  68. package/dist/src/core/tokenLimits.test.js.map +1 -1
  69. package/dist/src/encrypt/attestation.d.ts +5 -0
  70. package/dist/src/encrypt/attestation.js +100 -0
  71. package/dist/src/encrypt/attestation.js.map +1 -0
  72. package/dist/src/encrypt/client.d.ts +14 -0
  73. package/dist/src/encrypt/client.js +132 -0
  74. package/dist/src/encrypt/client.js.map +1 -0
  75. package/dist/src/encrypt/config.d.ts +22 -0
  76. package/dist/src/encrypt/config.js +43 -0
  77. package/dist/src/encrypt/config.js.map +1 -0
  78. package/dist/src/encrypt/crypto-utils.d.ts +57 -0
  79. package/dist/src/encrypt/crypto-utils.js +257 -0
  80. package/dist/src/encrypt/crypto-utils.js.map +1 -0
  81. package/dist/src/encrypt/history-manager.d.ts +43 -0
  82. package/dist/src/encrypt/history-manager.js +164 -0
  83. package/dist/src/encrypt/history-manager.js.map +1 -0
  84. package/dist/src/encrypt/minimax-template.d.ts +73 -0
  85. package/dist/src/encrypt/minimax-template.js +276 -0
  86. package/dist/src/encrypt/minimax-template.js.map +1 -0
  87. package/dist/src/encrypt/sessions.d.ts +17 -0
  88. package/dist/src/encrypt/sessions.js +221 -0
  89. package/dist/src/encrypt/sessions.js.map +1 -0
  90. package/dist/src/encrypt/streaming-client.d.ts +29 -0
  91. package/dist/src/encrypt/streaming-client.js +232 -0
  92. package/dist/src/encrypt/streaming-client.js.map +1 -0
  93. package/dist/src/encrypt/tool-formatter.d.ts +36 -0
  94. package/dist/src/encrypt/tool-formatter.js +353 -0
  95. package/dist/src/encrypt/tool-formatter.js.map +1 -0
  96. package/dist/src/encrypt/tool-parser.d.ts +93 -0
  97. package/dist/src/encrypt/tool-parser.js +567 -0
  98. package/dist/src/encrypt/tool-parser.js.map +1 -0
  99. package/dist/src/encrypt/types.d.ts +81 -0
  100. package/dist/src/encrypt/types.js +2 -0
  101. package/dist/src/encrypt/types.js.map +1 -0
  102. package/dist/src/generated/git-commit.d.ts +3 -3
  103. package/dist/src/generated/git-commit.js +3 -3
  104. package/dist/src/ide/ide-client.js +9 -19
  105. package/dist/src/ide/ide-client.js.map +1 -1
  106. package/dist/src/index.d.ts +15 -0
  107. package/dist/src/index.js +15 -0
  108. package/dist/src/index.js.map +1 -1
  109. package/dist/src/mcp/oauth-provider.js +2 -6
  110. package/dist/src/mcp/oauth-provider.js.map +1 -1
  111. package/dist/src/mcp/oauth-token-storage.d.ts +7 -0
  112. package/dist/src/mcp/oauth-token-storage.js +24 -0
  113. package/dist/src/mcp/oauth-token-storage.js.map +1 -1
  114. package/dist/src/services/EncryptedChatService.d.ts +80 -0
  115. package/dist/src/services/EncryptedChatService.js +202 -0
  116. package/dist/src/services/EncryptedChatService.js.map +1 -0
  117. package/dist/src/services/StatsHistoryService.d.ts +131 -0
  118. package/dist/src/services/StatsHistoryService.js +427 -0
  119. package/dist/src/services/StatsHistoryService.js.map +1 -0
  120. package/dist/src/services/checkpointApiService.d.ts +101 -0
  121. package/dist/src/services/checkpointApiService.js +215 -0
  122. package/dist/src/services/checkpointApiService.js.map +1 -0
  123. package/dist/src/services/environmentSanitization.d.ts +24 -0
  124. package/dist/src/services/environmentSanitization.js +152 -0
  125. package/dist/src/services/environmentSanitization.js.map +1 -0
  126. package/dist/src/telemetry/blackbox-logger/blackbox-logger.d.ts +2 -6
  127. package/dist/src/telemetry/blackbox-logger/blackbox-logger.js +29 -135
  128. package/dist/src/telemetry/blackbox-logger/blackbox-logger.js.map +1 -1
  129. package/dist/src/telemetry/blackbox-logger/blackbox-logger.test.js +1 -1
  130. package/dist/src/telemetry/blackbox-logger/blackbox-logger.test.js.map +1 -1
  131. package/dist/src/telemetry/uiTelemetry.d.ts +8 -0
  132. package/dist/src/telemetry/uiTelemetry.js +17 -0
  133. package/dist/src/telemetry/uiTelemetry.js.map +1 -1
  134. package/dist/src/tools/browser-interactive.d.ts +63 -0
  135. package/dist/src/tools/browser-interactive.js +394 -0
  136. package/dist/src/tools/browser-interactive.js.map +1 -0
  137. package/dist/src/tools/browser_use.d.ts +23 -2
  138. package/dist/src/tools/browser_use.js +424 -43
  139. package/dist/src/tools/browser_use.js.map +1 -1
  140. package/dist/src/tools/data-file-constants.d.ts +17 -0
  141. package/dist/src/tools/data-file-constants.js +30 -0
  142. package/dist/src/tools/data-file-constants.js.map +1 -0
  143. package/dist/src/tools/edit.js +44 -7
  144. package/dist/src/tools/edit.js.map +1 -1
  145. package/dist/src/tools/exitPlanMode.js +1 -1
  146. package/dist/src/tools/exitPlanMode.js.map +1 -1
  147. package/dist/src/tools/ls.js +40 -6
  148. package/dist/src/tools/ls.js.map +1 -1
  149. package/dist/src/tools/ls.test.js +4 -4
  150. package/dist/src/tools/ls.test.js.map +1 -1
  151. package/dist/src/tools/mcp-client-manager.d.ts +28 -2
  152. package/dist/src/tools/mcp-client-manager.js +62 -4
  153. package/dist/src/tools/mcp-client-manager.js.map +1 -1
  154. package/dist/src/tools/mcp-client.d.ts +5 -3
  155. package/dist/src/tools/mcp-client.js +39 -11
  156. package/dist/src/tools/mcp-client.js.map +1 -1
  157. package/dist/src/tools/mcp-tool.d.ts +3 -1
  158. package/dist/src/tools/mcp-tool.js +37 -9
  159. package/dist/src/tools/mcp-tool.js.map +1 -1
  160. package/dist/src/tools/memoryTool.d.ts +14 -4
  161. package/dist/src/tools/memoryTool.js +98 -39
  162. package/dist/src/tools/memoryTool.js.map +1 -1
  163. package/dist/src/tools/read-data-file.d.ts +31 -0
  164. package/dist/src/tools/read-data-file.js +469 -0
  165. package/dist/src/tools/read-data-file.js.map +1 -0
  166. package/dist/src/tools/read-file.js +64 -5
  167. package/dist/src/tools/read-file.js.map +1 -1
  168. package/dist/src/tools/read-file.test.js +40 -6
  169. package/dist/src/tools/read-file.test.js.map +1 -1
  170. package/dist/src/tools/shell.d.ts +3 -1
  171. package/dist/src/tools/shell.js +25 -4
  172. package/dist/src/tools/shell.js.map +1 -1
  173. package/dist/src/tools/skill.d.ts +34 -0
  174. package/dist/src/tools/skill.js +143 -0
  175. package/dist/src/tools/skill.js.map +1 -0
  176. package/dist/src/tools/sql_db.d.ts +101 -0
  177. package/dist/src/tools/sql_db.js +1033 -0
  178. package/dist/src/tools/sql_db.js.map +1 -0
  179. package/dist/src/tools/sql_db_configure.d.ts +18 -0
  180. package/dist/src/tools/sql_db_configure.js +96 -0
  181. package/dist/src/tools/sql_db_configure.js.map +1 -0
  182. package/dist/src/tools/taskCompletion.d.ts +29 -0
  183. package/dist/src/tools/taskCompletion.js +231 -0
  184. package/dist/src/tools/taskCompletion.js.map +1 -0
  185. package/dist/src/tools/todoWrite.js +0 -142
  186. package/dist/src/tools/todoWrite.js.map +1 -1
  187. package/dist/src/tools/tool-error.d.ts +3 -1
  188. package/dist/src/tools/tool-error.js +3 -0
  189. package/dist/src/tools/tool-error.js.map +1 -1
  190. package/dist/src/tools/tool-names.d.ts +8 -0
  191. package/dist/src/tools/tool-names.js +8 -0
  192. package/dist/src/tools/tool-names.js.map +1 -1
  193. package/dist/src/tools/tool-registry.d.ts +22 -0
  194. package/dist/src/tools/tool-registry.js +41 -1
  195. package/dist/src/tools/tool-registry.js.map +1 -1
  196. package/dist/src/tools/tools.d.ts +18 -2
  197. package/dist/src/tools/tools.js +3 -0
  198. package/dist/src/tools/tools.js.map +1 -1
  199. package/dist/src/tools/web-fetch.js +24 -4
  200. package/dist/src/tools/web-fetch.js.map +1 -1
  201. package/dist/src/tools/web-search.js +160 -2
  202. package/dist/src/tools/web-search.js.map +1 -1
  203. package/dist/src/tools/workspace-error-helper.d.ts +9 -0
  204. package/dist/src/tools/workspace-error-helper.js +43 -0
  205. package/dist/src/tools/workspace-error-helper.js.map +1 -0
  206. package/dist/src/tools/workspace-error-helper.test.js +85 -0
  207. package/dist/src/tools/workspace-error-helper.test.js.map +1 -0
  208. package/dist/src/tools/write-file.js +42 -7
  209. package/dist/src/tools/write-file.js.map +1 -1
  210. package/dist/src/utils/environmentContext.js +3 -1
  211. package/dist/src/utils/environmentContext.js.map +1 -1
  212. package/dist/src/utils/environmentContext.test.js +3 -2
  213. package/dist/src/utils/environmentContext.test.js.map +1 -1
  214. package/dist/src/utils/fetch.d.ts +3 -1
  215. package/dist/src/utils/fetch.js +35 -2
  216. package/dist/src/utils/fetch.js.map +1 -1
  217. package/dist/src/utils/fileUtils.js +30 -3
  218. package/dist/src/utils/fileUtils.js.map +1 -1
  219. package/dist/src/utils/filesearch/fileSearch.d.ts +2 -0
  220. package/dist/src/utils/filesearch/fileSearch.js +38 -7
  221. package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
  222. package/dist/src/utils/git-worktree-utils.d.ts +56 -0
  223. package/dist/src/utils/git-worktree-utils.js +176 -0
  224. package/dist/src/utils/git-worktree-utils.js.map +1 -0
  225. package/dist/src/utils/imageCompression.d.ts +34 -0
  226. package/dist/src/utils/imageCompression.js +170 -0
  227. package/dist/src/utils/imageCompression.js.map +1 -0
  228. package/dist/src/utils/messageTruncator.d.ts +51 -0
  229. package/dist/src/utils/messageTruncator.js +346 -0
  230. package/dist/src/utils/messageTruncator.js.map +1 -0
  231. package/dist/src/utils/pathReader.js +26 -6
  232. package/dist/src/utils/pathReader.js.map +1 -1
  233. package/dist/src/utils/skill.d.ts +65 -0
  234. package/dist/src/utils/skill.js +241 -0
  235. package/dist/src/utils/skill.js.map +1 -0
  236. package/dist/src/utils/textCleaning.d.ts +51 -0
  237. package/dist/src/utils/textCleaning.js +327 -0
  238. package/dist/src/utils/textCleaning.js.map +1 -0
  239. package/dist/tsconfig.tsbuildinfo +1 -1
  240. package/package.json +19 -6
  241. package/dist/src/tools/mcp-client-manager.test.js +0 -39
  242. package/dist/src/tools/mcp-client-manager.test.js.map +0 -1
  243. package/dist/src/tools/mcp-client.test.d.ts +0 -6
  244. package/dist/src/tools/mcp-client.test.js +0 -454
  245. package/dist/src/tools/mcp-client.test.js.map +0 -1
  246. package/dist/src/tools/mcp-tool.test.d.ts +0 -6
  247. package/dist/src/tools/mcp-tool.test.js +0 -576
  248. package/dist/src/tools/mcp-tool.test.js.map +0 -1
  249. package/dist/src/tools/memoryTool.test.d.ts +0 -6
  250. package/dist/src/tools/memoryTool.test.js +0 -420
  251. package/dist/src/tools/memoryTool.test.js.map +0 -1
  252. package/dist/src/tools/tool-registry.test.d.ts +0 -6
  253. package/dist/src/tools/tool-registry.test.js +0 -332
  254. package/dist/src/tools/tool-registry.test.js.map +0 -1
  255. /package/dist/src/tools/{mcp-client-manager.test.d.ts → workspace-error-helper.test.d.ts} +0 -0
@@ -0,0 +1,445 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { GenerateContentResponse } from '@google/genai';
7
+ import { ApprovalMode } from '../config/config.js';
8
+ import { createEncryptedToolParser } from '../encrypt/tool-parser.js';
9
+ import { getCoreSystemPrompt } from './prompts.js';
10
+ import { getEnvironmentContext } from '../utils/environmentContext.js';
11
+ import { removeToolCallMarkup, cleanStreamingText, formatThinkContent, detectModelType } from '../utils/textCleaning.js';
12
+ export class EncryptedContentGenerator {
13
+ sessionId;
14
+ config;
15
+ initialized = false;
16
+ constructor(sessionId, config) {
17
+ this.sessionId = sessionId;
18
+ this.config = config;
19
+ }
20
+ async ensureInitialized() {
21
+ if (!this.initialized) {
22
+ this.initialized = true;
23
+ }
24
+ }
25
+ /**
26
+ * Formats tools strictly according to MiniMax-M2.1 Jinja template requirements
27
+ */
28
+ extractAndFormatTools(request) {
29
+ const tools = [];
30
+ if (request.config?.tools) {
31
+ for (const toolGroup of request.config.tools) {
32
+ if ('functionDeclarations' in toolGroup && toolGroup.functionDeclarations) {
33
+ tools.push(...toolGroup.functionDeclarations);
34
+ }
35
+ }
36
+ }
37
+ if (tools.length === 0) {
38
+ return '';
39
+ }
40
+ // MiniMax System Prompt Addition (Derived from Jinja)
41
+ // It requires tools in JSONSchema format inside <tools> tags,
42
+ // followed by specific XML invocation instructions.
43
+ const toolsJson = JSON.stringify(tools, null, 2);
44
+ const systemPrompt = `
45
+ # Tools
46
+ You may call one or more tools to assist with the user query.
47
+ Here are the tools available in JSONSchema format:
48
+ <tools>
49
+ ${toolsJson}
50
+ </tools>
51
+
52
+ When making tool calls, use XML format to invoke tools and pass parameters:
53
+ <minimax:tool_call>
54
+ <invoke name="tool-name-1">
55
+ <parameter name="param-key-1">param-value-1</parameter>
56
+ <parameter name="param-key-2">param-value-2</parameter>
57
+ ...
58
+ </invoke>
59
+ </minimax:tool_call>
60
+ `;
61
+ return systemPrompt;
62
+ }
63
+ async convertToMessageHistory(contents, toolsSystemPrompt = '') {
64
+ const userMemory = this.config.getUserMemory();
65
+ const coreSystemPrompt = getCoreSystemPrompt(userMemory, {}, this.config.getModel(), this.config.getApprovalMode() === ApprovalMode.YOLO);
66
+ const fullSystemPrompt = toolsSystemPrompt
67
+ ? `${coreSystemPrompt}\n\n${toolsSystemPrompt}`
68
+ : coreSystemPrompt;
69
+ const envParts = await getEnvironmentContext(this.config);
70
+ const envText = envParts.map(part => typeof part === 'string' ? part : part.text || '').join('\n');
71
+ const systemPromptWithEnvironment = envText.trim()
72
+ ? `${fullSystemPrompt}\n\n${envText}`
73
+ : fullSystemPrompt;
74
+ const messages = [
75
+ { role: 'system', content: systemPromptWithEnvironment }
76
+ ];
77
+ if (envText.trim()) {
78
+ messages.push({ role: 'user', content: envText });
79
+ messages.push({ role: 'assistant', content: 'Got it. Thanks for the context!' });
80
+ }
81
+ const conversationMessages = contents.map(content => {
82
+ const textParts = content.parts?.filter((part) => typeof part === 'object' && part !== null && 'text' in part) || [];
83
+ const text = textParts.map(part => part.text).join('\n');
84
+ const role = content.role === 'model' ? 'assistant' : content.role;
85
+ return { role, content: text };
86
+ }).filter(msg => msg.role !== 'system');
87
+ messages.push(...conversationMessages);
88
+ return messages;
89
+ }
90
+ convertPartsToText(parts) {
91
+ return parts
92
+ .filter((part) => 'text' in part)
93
+ .map(part => part.text)
94
+ .join('\n');
95
+ }
96
+ parseToolCallsFromResponse(text, tools) {
97
+ const modelType = this.detectModelType(text);
98
+ const parser = createEncryptedToolParser();
99
+ const parseResult = parser.parseComplete(text, tools, modelType);
100
+ if (!parseResult.success) {
101
+ console.warn('Tool parsing failed, check syntax');
102
+ return [];
103
+ }
104
+ return parseResult.toolCalls.map((tc, index) => ({
105
+ name: tc.name,
106
+ args: tc.arguments,
107
+ id: tc.id || `call_${Date.now()}_${index}`
108
+ }));
109
+ }
110
+ detectModelType(text) {
111
+ return detectModelType(text);
112
+ }
113
+ removeToolCallMarkup(text) {
114
+ const modelType = this.detectModelType(text);
115
+ const result = removeToolCallMarkup(text, modelType, {
116
+ debug: false, // Enable debug logging if needed for troubleshooting
117
+ maxConsecutiveNewlines: 2,
118
+ trimEnds: true
119
+ });
120
+ return result.text;
121
+ }
122
+ extractContentArray(contents) {
123
+ return contents.filter((c) => typeof c === 'object' && c !== null && 'role' in c && 'parts' in c);
124
+ }
125
+ extractToolsFromRequest(request) {
126
+ const tools = [];
127
+ if (request.config?.tools) {
128
+ for (const toolGroup of request.config.tools) {
129
+ if ('functionDeclarations' in toolGroup && toolGroup.functionDeclarations) {
130
+ tools.push(...toolGroup.functionDeclarations);
131
+ }
132
+ }
133
+ }
134
+ return tools;
135
+ }
136
+ // --- Main Generate Methods ---
137
+ async generateContent(request, _userPromptId) {
138
+ await this.ensureInitialized();
139
+ const toolsSystemPrompt = this.extractAndFormatTools(request);
140
+ const tools = this.extractToolsFromRequest(request);
141
+ const contents = Array.isArray(request.contents) ? request.contents : [request.contents];
142
+ const contentsArray = this.extractContentArray(contents);
143
+ const lastContent = contentsArray[contentsArray.length - 1];
144
+ const userMessage = lastContent ? this.convertPartsToText(lastContent.parts || []) : '';
145
+ const messageHistory = await this.convertToMessageHistory(contentsArray, toolsSystemPrompt);
146
+ if (!globalThis.blackboxEncryptionService)
147
+ throw new Error("Encryption service not initialized");
148
+ const encryptedStream = await globalThis.blackboxEncryptionService.sendMessageStream(this.sessionId, userMessage, messageHistory);
149
+ let fullResponse = '';
150
+ const reader = encryptedStream.getReader();
151
+ const decoder = new TextDecoder();
152
+ try {
153
+ while (true) {
154
+ const { done, value } = await reader.read();
155
+ if (done)
156
+ break;
157
+ fullResponse += decoder.decode(value, { stream: true });
158
+ }
159
+ }
160
+ finally {
161
+ reader.releaseLock();
162
+ }
163
+ const toolCalls = this.parseToolCallsFromResponse(fullResponse, tools);
164
+ const cleanTextResponse = this.removeToolCallMarkup(fullResponse);
165
+ const responseParts = [];
166
+ if (cleanTextResponse.trim()) {
167
+ responseParts.push({ text: cleanTextResponse });
168
+ }
169
+ for (const toolCall of toolCalls) {
170
+ responseParts.push({ functionCall: toolCall });
171
+ }
172
+ const response = new GenerateContentResponse();
173
+ response.candidates = [{
174
+ content: { role: 'model', parts: responseParts },
175
+ finishReason: 'STOP',
176
+ index: 0,
177
+ safetyRatings: []
178
+ }];
179
+ return response;
180
+ }
181
+ async generateContentStream(request, _userPromptId) {
182
+ return this.generateContentStreamInternal(request);
183
+ }
184
+ async *generateContentStreamInternal(request) {
185
+ await this.ensureInitialized();
186
+ const toolsSystemPrompt = this.extractAndFormatTools(request);
187
+ const tools = this.extractToolsFromRequest(request);
188
+ const contents = Array.isArray(request.contents) ? request.contents : [request.contents];
189
+ const contentsArray = this.extractContentArray(contents);
190
+ const lastContent = contentsArray[contentsArray.length - 1];
191
+ const userMessage = lastContent ? this.convertPartsToText(lastContent.parts || []) : '';
192
+ const messageHistory = await this.convertToMessageHistory(contentsArray, toolsSystemPrompt);
193
+ if (!globalThis.blackboxEncryptionService)
194
+ throw new Error("Encryption service not initialized");
195
+ const encryptedStream = await globalThis.blackboxEncryptionService.sendMessageStream(this.sessionId, userMessage, messageHistory);
196
+ const reader = encryptedStream.getReader();
197
+ const decoder = new TextDecoder();
198
+ // Enhanced streaming state machine
199
+ let accumulatedText = '';
200
+ let streamBuffer = '';
201
+ let toolCallsProcessed = false;
202
+ // All possible tokens we need to detect
203
+ const TOKENS = {
204
+ THINK_START: '<think>',
205
+ THINK_END: '</think>',
206
+ MM_TOOL_START: '<minimax:tool_call>',
207
+ MM_TOOL_END: '</minimax:tool_call>',
208
+ DEEPSEEK_START: '<|tool▁calls▁begin|>',
209
+ DEEPSEEK_END: '<|tool▁calls▁end|>',
210
+ QWEN_START: '<tool_call>',
211
+ QWEN_END: '</tool_call>',
212
+ };
213
+ // Helper function to check if buffer might contain start of any token
214
+ const mightContainPartialToken = (buffer) => {
215
+ const allTokens = Object.values(TOKENS);
216
+ for (const token of allTokens) {
217
+ for (let i = 1; i < Math.min(token.length, 10); i++) {
218
+ if (buffer.endsWith(token.substring(0, i))) {
219
+ return true;
220
+ }
221
+ }
222
+ }
223
+ return false;
224
+ };
225
+ // Helper function to find the earliest complete token in buffer
226
+ const findEarliestToken = (buffer) => {
227
+ let earliest = null;
228
+ // Check all tokens
229
+ for (const [key, token] of Object.entries(TOKENS)) {
230
+ const index = buffer.indexOf(token);
231
+ if (index !== -1) {
232
+ if (!earliest || index < earliest.index) {
233
+ const type = key.endsWith('_START') ? 'start' : 'end';
234
+ earliest = { index, token, type };
235
+ }
236
+ }
237
+ }
238
+ return earliest;
239
+ };
240
+ try {
241
+ while (true) {
242
+ const { done, value } = await reader.read();
243
+ if (done)
244
+ break;
245
+ const chunk = decoder.decode(value, { stream: true });
246
+ accumulatedText += chunk;
247
+ streamBuffer += chunk;
248
+ // Process buffer until no more complete tokens can be found
249
+ let continueProcessing = true;
250
+ while (continueProcessing) {
251
+ continueProcessing = false;
252
+ const tokenMatch = findEarliestToken(streamBuffer);
253
+ if (tokenMatch) {
254
+ // Found a complete token
255
+ const beforeToken = streamBuffer.substring(0, tokenMatch.index);
256
+ // Yield text before the token (if any and not just whitespace/newlines)
257
+ if (beforeToken && beforeToken.trim() && beforeToken.trim().length > 0) {
258
+ const response = this.createTextResponse(beforeToken);
259
+ if (response) {
260
+ yield response;
261
+ }
262
+ }
263
+ // Handle the token based on its type
264
+ if (tokenMatch.token === TOKENS.THINK_START) {
265
+ // Start of think block - find the end
266
+ const afterStart = streamBuffer.substring(tokenMatch.index + tokenMatch.token.length);
267
+ const endIndex = afterStart.indexOf(TOKENS.THINK_END);
268
+ if (endIndex !== -1) {
269
+ // Complete think block found - format it differently from assistant messages
270
+ const thinkContent = afterStart.substring(0, endIndex);
271
+ // Yield the think content with special formatting (different from assistant messages)
272
+ if (thinkContent.trim().length > 0) {
273
+ yield this.createThinkResponse(thinkContent.trim());
274
+ }
275
+ streamBuffer = afterStart.substring(endIndex + TOKENS.THINK_END.length);
276
+ continueProcessing = true;
277
+ }
278
+ else {
279
+ // Incomplete think block - wait for more data
280
+ streamBuffer = streamBuffer.substring(tokenMatch.index);
281
+ break;
282
+ }
283
+ }
284
+ else if (tokenMatch.token === TOKENS.MM_TOOL_START ||
285
+ tokenMatch.token === TOKENS.DEEPSEEK_START ||
286
+ tokenMatch.token === TOKENS.QWEN_START) {
287
+ // Start of tool block - find the corresponding end
288
+ let endToken;
289
+ if (tokenMatch.token === TOKENS.MM_TOOL_START) {
290
+ endToken = TOKENS.MM_TOOL_END;
291
+ }
292
+ else if (tokenMatch.token === TOKENS.DEEPSEEK_START) {
293
+ endToken = TOKENS.DEEPSEEK_END;
294
+ }
295
+ else {
296
+ endToken = TOKENS.QWEN_END;
297
+ }
298
+ const afterStart = streamBuffer.substring(tokenMatch.index + tokenMatch.token.length);
299
+ const endIndex = afterStart.indexOf(endToken);
300
+ if (endIndex !== -1) {
301
+ if (!toolCallsProcessed) {
302
+ const toolCalls = this.parseToolCallsFromResponse(accumulatedText, tools);
303
+ if (toolCalls.length > 0) {
304
+ toolCallsProcessed = true;
305
+ for (const toolCall of toolCalls) {
306
+ yield this.createToolCallResponse(toolCall);
307
+ }
308
+ }
309
+ }
310
+ // Skip the tool block
311
+ streamBuffer = afterStart.substring(endIndex + endToken.length);
312
+ continueProcessing = true;
313
+ }
314
+ else {
315
+ streamBuffer = streamBuffer.substring(tokenMatch.index);
316
+ break;
317
+ }
318
+ }
319
+ else {
320
+ // End token found without matching start - just skip it
321
+ streamBuffer = streamBuffer.substring(tokenMatch.index + tokenMatch.token.length);
322
+ continueProcessing = true;
323
+ }
324
+ }
325
+ else {
326
+ // No complete tokens found
327
+ // Check if we might have a partial token at the end
328
+ if (mightContainPartialToken(streamBuffer)) {
329
+ // Keep the buffer as is - don't yield anything that might be part of a token
330
+ break;
331
+ }
332
+ else {
333
+ // Safe to yield most of the buffer, but keep a small safety margin
334
+ const maxTokenLength = Math.max(...Object.values(TOKENS).map(t => t.length));
335
+ const safetyMargin = maxTokenLength + 5;
336
+ if (streamBuffer.length > safetyMargin) {
337
+ const safeLength = streamBuffer.length - safetyMargin;
338
+ const textToYield = streamBuffer.substring(0, safeLength);
339
+ // Only filter out completely empty strings or just newlines
340
+ if (textToYield && textToYield.trim().length > 0) {
341
+ const response = this.createTextResponse(textToYield);
342
+ if (response) {
343
+ yield response;
344
+ }
345
+ }
346
+ streamBuffer = streamBuffer.substring(safeLength);
347
+ }
348
+ break;
349
+ }
350
+ }
351
+ }
352
+ }
353
+ // Final processing - yield any remaining text
354
+ if (streamBuffer.trim()) {
355
+ // Check one more time for any remaining tool calls
356
+ if (!toolCallsProcessed) {
357
+ const toolCalls = this.parseToolCallsFromResponse(accumulatedText, tools);
358
+ if (toolCalls.length > 0) {
359
+ for (const toolCall of toolCalls) {
360
+ yield this.createToolCallResponse(toolCall);
361
+ }
362
+ }
363
+ }
364
+ // Clean and yield remaining text
365
+ const cleanText = this.removeToolCallMarkup(streamBuffer);
366
+ if (cleanText && cleanText.trim().length > 0) {
367
+ const response = this.createTextResponse(cleanText);
368
+ if (response) {
369
+ yield response;
370
+ }
371
+ }
372
+ }
373
+ }
374
+ finally {
375
+ reader.releaseLock();
376
+ }
377
+ }
378
+ createTextResponse(text) {
379
+ // Use our consolidated text cleaning utility for streaming content
380
+ const result = cleanStreamingText(text, {
381
+ debug: false, // Enable for debugging if needed
382
+ maxConsecutiveNewlines: 2,
383
+ trimEnds: true
384
+ });
385
+ // CRITICAL: Don't create response for empty, whitespace-only, or newline-only content
386
+ if (!result.text || result.text.trim().length === 0) {
387
+ return null;
388
+ }
389
+ const resp = new GenerateContentResponse();
390
+ resp.candidates = [{
391
+ content: { role: 'model', parts: [{ text: result.text }] },
392
+ finishReason: 'STOP',
393
+ index: 0,
394
+ safetyRatings: []
395
+ }];
396
+ return resp;
397
+ }
398
+ createThinkResponse(thinkContent) {
399
+ const formattedContent = formatThinkContent(thinkContent, {
400
+ debug: false, // Enable for debugging if needed
401
+ maxConsecutiveNewlines: 2,
402
+ trimEnds: true
403
+ });
404
+ const resp = new GenerateContentResponse();
405
+ resp.candidates = [{
406
+ content: { role: 'model', parts: [{ text: formattedContent }] },
407
+ finishReason: 'STOP',
408
+ index: 0,
409
+ safetyRatings: []
410
+ }];
411
+ return resp;
412
+ }
413
+ createToolCallResponse(toolCall) {
414
+ const resp = new GenerateContentResponse();
415
+ resp.candidates = [{
416
+ content: { role: 'model', parts: [{ functionCall: toolCall }] },
417
+ finishReason: 'STOP',
418
+ index: 0,
419
+ safetyRatings: []
420
+ }];
421
+ return resp;
422
+ }
423
+ // Stubs for interface compliance
424
+ async countTokens(request) {
425
+ const contents = Array.isArray(request.contents) ? request.contents : [request.contents];
426
+ const contentsArray = this.extractContentArray(contents);
427
+ let totalTokens = 0;
428
+ for (const content of contentsArray) {
429
+ const text = this.convertPartsToText(content.parts || []);
430
+ totalTokens += Math.ceil(text.length / 4);
431
+ }
432
+ return { totalTokens };
433
+ }
434
+ async embedContent(request) {
435
+ const contents = Array.isArray(request.contents) ? request.contents : [request.contents];
436
+ return {
437
+ embeddings: contents.map(() => ({
438
+ values: []
439
+ }))
440
+ };
441
+ }
442
+ // Optional userTier property
443
+ userTier;
444
+ }
445
+ //# sourceMappingURL=encryptedContentGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encryptedContentGenerator.js","sourceRoot":"","sources":["../../../src/core/encryptedContentGenerator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { PartListUnion, FunctionDeclaration } from '@google/genai';
7
+ import type { ServerGeminiStreamEvent } from './turn.js';
8
+ import type { Config } from '../config/config.js';
9
+ /**
10
+ * Interface for the encrypted chat service
11
+ */
12
+ export interface EncryptedChatService {
13
+ sendMessage(message: string, messageHistory?: Array<{
14
+ role: 'system' | 'user' | 'assistant';
15
+ content: string;
16
+ }>): Promise<ReadableStream<Uint8Array>>;
17
+ initialize(systemPrompt?: string): Promise<void>;
18
+ isReady(): boolean;
19
+ }
20
+ /**
21
+ * EncryptedGeminiClient provides the same interface as GeminiClient
22
+ * but routes requests through the encrypted provider and emits the correct events
23
+ * for tool execution.
24
+ */
25
+ export declare class EncryptedGeminiClient {
26
+ private readonly encryptedService;
27
+ private readonly config?;
28
+ private tools;
29
+ constructor(encryptedService: EncryptedChatService, config?: Config | undefined);
30
+ /**
31
+ * Set the available tools for this client
32
+ */
33
+ setTools(tools: FunctionDeclaration[]): void;
34
+ /**
35
+ * Send a message and get streaming events that match the regular GeminiClient interface
36
+ * This is the key method that bridges the encrypted provider with the event system
37
+ */
38
+ sendMessageStream(request: PartListUnion, signal: AbortSignal, prompt_id: string): AsyncGenerator<ServerGeminiStreamEvent>;
39
+ /**
40
+ * Convert PartListUnion request to text string
41
+ */
42
+ private convertRequestToText;
43
+ /**
44
+ * Check if text contains tool call markup
45
+ */
46
+ private containsToolCalls;
47
+ /**
48
+ * Get available tools
49
+ */
50
+ getTools(): FunctionDeclaration[];
51
+ /**
52
+ * Check if client is ready
53
+ */
54
+ isReady(): boolean;
55
+ /**
56
+ * Get the core system prompt like Gemini does
57
+ */
58
+ private getCoreSystemPrompt;
59
+ }