@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,177 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { EncryptedTurn } from './encryptedTurn.js';
7
+ import { getCoreSystemPrompt } from './prompts.js';
8
+ import { ApprovalMode } from '../config/config.js';
9
+ import { getEnvironmentContext } from '../utils/environmentContext.js';
10
+ /**
11
+ * EncryptedGeminiClient provides the same interface as GeminiClient
12
+ * but routes requests through the encrypted provider and emits the correct events
13
+ * for tool execution.
14
+ */
15
+ export class EncryptedGeminiClient {
16
+ encryptedService;
17
+ config;
18
+ tools = [];
19
+ constructor(encryptedService, config) {
20
+ this.encryptedService = encryptedService;
21
+ this.config = config;
22
+ }
23
+ /**
24
+ * Set the available tools for this client
25
+ */
26
+ setTools(tools) {
27
+ this.tools = tools;
28
+ }
29
+ /**
30
+ * Send a message and get streaming events that match the regular GeminiClient interface
31
+ * This is the key method that bridges the encrypted provider with the event system
32
+ */
33
+ async *sendMessageStream(request, signal, prompt_id) {
34
+ try {
35
+ // Convert request to text
36
+ const messageText = this.convertRequestToText(request);
37
+ // Create tools system prompt if we have tools
38
+ const toolsSystemPrompt = EncryptedTurn.createToolsSystemPrompt(this.tools, 'deepseek');
39
+ const messageWithTools = toolsSystemPrompt ? `${toolsSystemPrompt}\n\n${messageText}` : messageText;
40
+ // Initialize the encrypted service if needed
41
+ if (!this.encryptedService.isReady()) {
42
+ // Use the same core system prompt as Gemini, combined with tools
43
+ const coreSystemPrompt = await this.getCoreSystemPrompt();
44
+ const fullSystemPrompt = toolsSystemPrompt
45
+ ? `${coreSystemPrompt}\n\n${toolsSystemPrompt}`
46
+ : coreSystemPrompt;
47
+ await this.encryptedService.initialize(fullSystemPrompt);
48
+ }
49
+ // Send message through encrypted service
50
+ const encryptedStream = await this.encryptedService.sendMessage(messageWithTools);
51
+ // Read the entire response
52
+ const reader = encryptedStream.getReader();
53
+ const decoder = new TextDecoder();
54
+ let fullResponse = '';
55
+ try {
56
+ while (true) {
57
+ if (signal.aborted) {
58
+ yield { type: 'user_cancelled' };
59
+ return;
60
+ }
61
+ const { done, value } = await reader.read();
62
+ if (done)
63
+ break;
64
+ const chunk = decoder.decode(value, { stream: true });
65
+ fullResponse += chunk;
66
+ // Yield content events for streaming text (without tool calls)
67
+ if (!this.containsToolCalls(chunk)) {
68
+ yield {
69
+ type: 'content',
70
+ value: chunk
71
+ };
72
+ }
73
+ }
74
+ }
75
+ finally {
76
+ reader.releaseLock();
77
+ }
78
+ // Process the complete response through EncryptedTurn to emit tool events
79
+ const encryptedTurn = new EncryptedTurn(this, prompt_id);
80
+ // Only process for tool calls if we have tools and the response contains tool calls
81
+ if (this.tools.length > 0 && this.containsToolCalls(fullResponse)) {
82
+ // Process the response and emit tool call events
83
+ for await (const event of encryptedTurn.processEncryptedResponse(fullResponse, true)) {
84
+ // Skip content events since we already yielded them during streaming
85
+ if (event.type !== 'content') {
86
+ yield event;
87
+ }
88
+ }
89
+ }
90
+ else {
91
+ // No tool calls, just emit finished event
92
+ yield {
93
+ type: 'finished',
94
+ value: 'STOP'
95
+ };
96
+ }
97
+ }
98
+ catch (error) {
99
+ console.error('❌ EncryptedGeminiClient.sendMessageStream failed:', error);
100
+ yield {
101
+ type: 'error',
102
+ value: {
103
+ error: {
104
+ message: error instanceof Error ? error.message : 'Unknown error in encrypted provider',
105
+ status: 500
106
+ }
107
+ }
108
+ };
109
+ }
110
+ }
111
+ /**
112
+ * Convert PartListUnion request to text string
113
+ */
114
+ convertRequestToText(request) {
115
+ if (typeof request === 'string') {
116
+ return request;
117
+ }
118
+ if (Array.isArray(request)) {
119
+ return request
120
+ .map(part => {
121
+ if (typeof part === 'string') {
122
+ return part;
123
+ }
124
+ else if (part && typeof part === 'object' && 'text' in part) {
125
+ return part.text;
126
+ }
127
+ else if (part && typeof part === 'object' && 'functionResponse' in part) {
128
+ // Handle function response parts
129
+ const funcResp = part.functionResponse;
130
+ return `Function ${funcResp?.name} returned: ${JSON.stringify(funcResp?.response)}`;
131
+ }
132
+ return '';
133
+ })
134
+ .join('\n');
135
+ }
136
+ return String(request);
137
+ }
138
+ /**
139
+ * Check if text contains tool call markup
140
+ */
141
+ containsToolCalls(text) {
142
+ return text.includes('<tool_call>') ||
143
+ text.includes('<|tool▁calls▁begin|>') ||
144
+ text.includes('<|tool▁call▁begin|>');
145
+ }
146
+ /**
147
+ * Get available tools
148
+ */
149
+ getTools() {
150
+ return this.tools;
151
+ }
152
+ /**
153
+ * Check if client is ready
154
+ */
155
+ isReady() {
156
+ return this.encryptedService.isReady();
157
+ }
158
+ /**
159
+ * Get the core system prompt like Gemini does
160
+ */
161
+ async getCoreSystemPrompt() {
162
+ if (!this.config) {
163
+ return 'You are a helpful AI assistant.';
164
+ }
165
+ const userMemory = this.config.getUserMemory();
166
+ const coreSystemPrompt = getCoreSystemPrompt(userMemory, {}, this.config.getModel(), this.config.getApprovalMode() === ApprovalMode.YOLO);
167
+ // CRITICAL FIX: Include environment context like regular Gemini does
168
+ const envParts = await getEnvironmentContext(this.config);
169
+ const environmentContext = envParts.map(part => typeof part === 'string' ? part : part.text || '').join('\n');
170
+ // Combine core system prompt with environment context (like regular Gemini)
171
+ const systemPromptWithEnvironment = environmentContext.trim()
172
+ ? `${coreSystemPrompt}\n\n${environmentContext}`
173
+ : coreSystemPrompt;
174
+ return systemPromptWithEnvironment;
175
+ }
176
+ }
177
+ //# sourceMappingURL=encryptedGeminiClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encryptedGeminiClient.js","sourceRoot":"","sources":["../../../src/core/encryptedGeminiClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { PartListUnion, FunctionDeclaration, Content } 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
+ sendMessageWithToolResults(message: string, toolResults: Array<{
18
+ toolName: string;
19
+ result: unknown;
20
+ callId?: string;
21
+ }>, messageHistory?: Array<{
22
+ role: 'system' | 'user' | 'assistant';
23
+ content: string;
24
+ }>): Promise<ReadableStream<Uint8Array>>;
25
+ initialize(systemPrompt?: string): Promise<void>;
26
+ isReady(): boolean;
27
+ }
28
+ /**
29
+ * EncryptedGeminiClientBridge provides a bridge between the encrypted provider
30
+ * and the existing GeminiClient interface, enabling tool execution through
31
+ * the event-based system that the UI layer expects.
32
+ */
33
+ export declare class EncryptedGeminiClientBridge {
34
+ private readonly encryptedService;
35
+ private readonly config?;
36
+ private tools;
37
+ private history;
38
+ private pendingToolResults;
39
+ private messageTruncator;
40
+ constructor(encryptedService: EncryptedChatService, config?: Config | undefined);
41
+ /**
42
+ * Set the available tools for this client
43
+ */
44
+ setTools(tools: FunctionDeclaration[]): void;
45
+ /**
46
+ * Add content to history
47
+ */
48
+ addHistory(content: Content): void;
49
+ /**
50
+ * Get current history
51
+ */
52
+ getHistory(): Content[];
53
+ /**
54
+ * Send a message and get streaming events that match the regular GeminiClient interface
55
+ * This is the key method that bridges the encrypted provider with the event system
56
+ */
57
+ sendMessageStream(request: PartListUnion, signal: AbortSignal, prompt_id: string): AsyncGenerator<ServerGeminiStreamEvent>;
58
+ /**
59
+ * Convert PartListUnion request to text string
60
+ */
61
+ private convertRequestToText;
62
+ /**
63
+ * Convert Content[] history to message format expected by EncryptedChatService
64
+ * Now uses TOKEN-BASED truncation like the normal Blackbox provider
65
+ */
66
+ private convertHistoryToMessageFormat;
67
+ /**
68
+ * Check if text contains tool call markup
69
+ */
70
+ private containsToolCalls;
71
+ /**
72
+ * Get available tools
73
+ */
74
+ getTools(): FunctionDeclaration[];
75
+ /**
76
+ * Add tool execution result for processing
77
+ */
78
+ addToolResult(callId: string, toolName: string, result: unknown): void;
79
+ /**
80
+ * Send tool results back to encrypted service and continue conversation
81
+ */
82
+ sendToolResultsAndContinue(signal: AbortSignal, prompt_id: string): AsyncGenerator<ServerGeminiStreamEvent>;
83
+ /**
84
+ * Format tool results into a readable message
85
+ */
86
+ private formatToolResultsMessage;
87
+ /**
88
+ * Check if there are pending tool results
89
+ */
90
+ hasPendingToolResults(): boolean;
91
+ /**
92
+ * Clear pending tool results
93
+ */
94
+ clearPendingToolResults(): void;
95
+ /**
96
+ * Reset all chat history and state
97
+ */
98
+ resetHistory(): void;
99
+ /**
100
+ * Check if client is ready
101
+ */
102
+ isReady(): boolean;
103
+ /**
104
+ * Format think content with special styling to distinguish from assistant messages
105
+ */
106
+ private formatThinkContent;
107
+ }