@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
@@ -0,0 +1,394 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { chromium } from 'playwright';
7
+ import { ToolNames } from './tool-names.js';
8
+ import { ToolErrorType } from './tool-error.js';
9
+ import { BaseDeclarativeTool, BaseToolInvocation, Kind } from './tools.js';
10
+ /**
11
+ * Interactive browser session manager
12
+ * Opens a VISIBLE browser window that the user can see
13
+ */
14
+ export class InteractiveBrowserSession {
15
+ browser;
16
+ context;
17
+ page;
18
+ static instance;
19
+ constructor() { }
20
+ static getInstance() {
21
+ if (!InteractiveBrowserSession.instance) {
22
+ InteractiveBrowserSession.instance = new InteractiveBrowserSession();
23
+ }
24
+ return InteractiveBrowserSession.instance;
25
+ }
26
+ async launch() {
27
+ if (this.browser) {
28
+ await this.close();
29
+ }
30
+ try {
31
+ console.log('[InteractiveBrowser] Launching visible browser...');
32
+ this.browser = await chromium.launch({
33
+ headless: false, // VISIBLE browser
34
+ args: [
35
+ '--start-maximized',
36
+ '--disable-blink-features=AutomationControlled',
37
+ ],
38
+ });
39
+ this.context = await this.browser.newContext({
40
+ viewport: { width: 1920, height: 1080 },
41
+ userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
42
+ });
43
+ this.page = await this.context.newPage();
44
+ console.log('[InteractiveBrowser] Browser launched successfully');
45
+ return {
46
+ success: true,
47
+ message: 'Interactive browser launched successfully. You can see the browser window.',
48
+ };
49
+ }
50
+ catch (error) {
51
+ const errorMsg = error instanceof Error ? error.message : String(error);
52
+ console.error('[InteractiveBrowser] Launch failed:', errorMsg);
53
+ return {
54
+ success: false,
55
+ message: `Failed to launch browser: ${errorMsg}`,
56
+ };
57
+ }
58
+ }
59
+ async navigate(url) {
60
+ if (!this.page) {
61
+ const launchResult = await this.launch();
62
+ if (!launchResult.success) {
63
+ return launchResult;
64
+ }
65
+ }
66
+ try {
67
+ console.log(`[InteractiveBrowser] Navigating to: ${url}`);
68
+ await this.page.goto(url, {
69
+ timeout: 30000,
70
+ waitUntil: 'domcontentloaded',
71
+ });
72
+ await this.page.waitForLoadState('networkidle', { timeout: 10000 }).catch(() => {
73
+ console.log('[InteractiveBrowser] Network idle timeout (expected)');
74
+ });
75
+ const title = await this.page.title();
76
+ const currentUrl = this.page.url();
77
+ console.log(`[InteractiveBrowser] Navigation complete: ${title}`);
78
+ return {
79
+ success: true,
80
+ message: `Navigated to: ${title} (${currentUrl})`,
81
+ };
82
+ }
83
+ catch (error) {
84
+ const errorMsg = error instanceof Error ? error.message : String(error);
85
+ console.error('[InteractiveBrowser] Navigation failed:', errorMsg);
86
+ return {
87
+ success: false,
88
+ message: `Navigation failed: ${errorMsg}`,
89
+ };
90
+ }
91
+ }
92
+ async extractText(selector) {
93
+ if (!this.page) {
94
+ return {
95
+ success: false,
96
+ message: 'Browser not launched. Call launch() first.',
97
+ };
98
+ }
99
+ try {
100
+ let text;
101
+ if (selector) {
102
+ console.log(`[InteractiveBrowser] Extracting text from selector: ${selector}`);
103
+ const element = await this.page.$(selector);
104
+ if (!element) {
105
+ return {
106
+ success: false,
107
+ message: `Element not found: ${selector}`,
108
+ };
109
+ }
110
+ text = await element.textContent() || '';
111
+ }
112
+ else {
113
+ console.log('[InteractiveBrowser] Extracting all page text');
114
+ text = await this.page.evaluate(() => document.body.innerText);
115
+ }
116
+ console.log(`[InteractiveBrowser] Extracted ${text.length} characters`);
117
+ return {
118
+ success: true,
119
+ message: `Extracted ${text.length} characters`,
120
+ text,
121
+ };
122
+ }
123
+ catch (error) {
124
+ const errorMsg = error instanceof Error ? error.message : String(error);
125
+ console.error('[InteractiveBrowser] Text extraction failed:', errorMsg);
126
+ return {
127
+ success: false,
128
+ message: `Text extraction failed: ${errorMsg}`,
129
+ };
130
+ }
131
+ }
132
+ async click(selector) {
133
+ if (!this.page) {
134
+ return {
135
+ success: false,
136
+ message: 'Browser not launched. Call launch() first.',
137
+ };
138
+ }
139
+ try {
140
+ console.log(`[InteractiveBrowser] Clicking element: ${selector}`);
141
+ await this.page.click(selector, { timeout: 5000 });
142
+ // Wait for potential navigation
143
+ await this.page.waitForLoadState('domcontentloaded', { timeout: 5000 }).catch(() => { });
144
+ console.log('[InteractiveBrowser] Click successful');
145
+ return {
146
+ success: true,
147
+ message: `Clicked element: ${selector}`,
148
+ };
149
+ }
150
+ catch (error) {
151
+ const errorMsg = error instanceof Error ? error.message : String(error);
152
+ console.error('[InteractiveBrowser] Click failed:', errorMsg);
153
+ return {
154
+ success: false,
155
+ message: `Click failed: ${errorMsg}`,
156
+ };
157
+ }
158
+ }
159
+ async type(selector, text) {
160
+ if (!this.page) {
161
+ return {
162
+ success: false,
163
+ message: 'Browser not launched. Call launch() first.',
164
+ };
165
+ }
166
+ try {
167
+ console.log(`[InteractiveBrowser] Typing into element: ${selector}`);
168
+ await this.page.fill(selector, text, { timeout: 5000 });
169
+ console.log('[InteractiveBrowser] Type successful');
170
+ return {
171
+ success: true,
172
+ message: `Typed text into: ${selector}`,
173
+ };
174
+ }
175
+ catch (error) {
176
+ const errorMsg = error instanceof Error ? error.message : String(error);
177
+ console.error('[InteractiveBrowser] Type failed:', errorMsg);
178
+ return {
179
+ success: false,
180
+ message: `Type failed: ${errorMsg}`,
181
+ };
182
+ }
183
+ }
184
+ async waitFor(milliseconds) {
185
+ try {
186
+ console.log(`[InteractiveBrowser] Waiting for ${milliseconds}ms`);
187
+ await new Promise(resolve => setTimeout(resolve, milliseconds));
188
+ return {
189
+ success: true,
190
+ message: `Waited for ${milliseconds}ms`,
191
+ };
192
+ }
193
+ catch (error) {
194
+ const errorMsg = error instanceof Error ? error.message : String(error);
195
+ return {
196
+ success: false,
197
+ message: `Wait failed: ${errorMsg}`,
198
+ };
199
+ }
200
+ }
201
+ async close() {
202
+ if (!this.browser) {
203
+ return {
204
+ success: true,
205
+ message: 'Browser already closed',
206
+ };
207
+ }
208
+ try {
209
+ console.log('[InteractiveBrowser] Closing browser...');
210
+ await this.page?.close();
211
+ await this.context?.close();
212
+ await this.browser.close();
213
+ this.page = undefined;
214
+ this.context = undefined;
215
+ this.browser = undefined;
216
+ console.log('[InteractiveBrowser] Browser closed successfully');
217
+ return {
218
+ success: true,
219
+ message: 'Interactive browser closed successfully',
220
+ };
221
+ }
222
+ catch (error) {
223
+ const errorMsg = error instanceof Error ? error.message : String(error);
224
+ console.error('[InteractiveBrowser] Close failed:', errorMsg);
225
+ return {
226
+ success: false,
227
+ message: `Failed to close browser: ${errorMsg}`,
228
+ };
229
+ }
230
+ }
231
+ }
232
+ class InteractiveBrowserToolInvocation extends BaseToolInvocation {
233
+ constructor(params) {
234
+ super(params);
235
+ }
236
+ getDescription() {
237
+ switch (this.params.action) {
238
+ case 'launch':
239
+ return 'Launching interactive browser';
240
+ case 'navigate':
241
+ return `Navigating to ${this.params.url}`;
242
+ case 'extract_text':
243
+ return this.params.selector
244
+ ? `Extracting text from ${this.params.selector}`
245
+ : 'Extracting page text';
246
+ case 'click':
247
+ return `Clicking ${this.params.selector}`;
248
+ case 'type':
249
+ return `Typing into ${this.params.selector}`;
250
+ case 'wait':
251
+ return `Waiting ${this.params.milliseconds}ms`;
252
+ case 'close':
253
+ return 'Closing interactive browser';
254
+ default:
255
+ return 'Interactive browser action';
256
+ }
257
+ }
258
+ async execute() {
259
+ const session = InteractiveBrowserSession.getInstance();
260
+ let result;
261
+ switch (this.params.action) {
262
+ case 'launch':
263
+ result = await session.launch();
264
+ break;
265
+ case 'navigate':
266
+ if (!this.params.url) {
267
+ return {
268
+ llmContent: 'URL is required for navigate action',
269
+ returnDisplay: 'URL is required for navigate action',
270
+ error: {
271
+ message: 'URL is required for navigate action',
272
+ type: ToolErrorType.INVALID_TOOL_PARAMS,
273
+ },
274
+ };
275
+ }
276
+ result = await session.navigate(this.params.url);
277
+ break;
278
+ case 'extract_text':
279
+ result = await session.extractText(this.params.selector);
280
+ break;
281
+ case 'click':
282
+ if (!this.params.selector) {
283
+ return {
284
+ llmContent: 'Selector is required for click action',
285
+ returnDisplay: 'Selector is required for click action',
286
+ error: {
287
+ message: 'Selector is required for click action',
288
+ type: ToolErrorType.INVALID_TOOL_PARAMS,
289
+ },
290
+ };
291
+ }
292
+ result = await session.click(this.params.selector);
293
+ break;
294
+ case 'type':
295
+ if (!this.params.selector || !this.params.text) {
296
+ return {
297
+ llmContent: 'Selector and text are required for type action',
298
+ returnDisplay: 'Selector and text are required for type action',
299
+ error: {
300
+ message: 'Selector and text are required for type action',
301
+ type: ToolErrorType.INVALID_TOOL_PARAMS,
302
+ },
303
+ };
304
+ }
305
+ result = await session.type(this.params.selector, this.params.text);
306
+ break;
307
+ case 'wait':
308
+ if (!this.params.milliseconds) {
309
+ return {
310
+ llmContent: 'Milliseconds is required for wait action',
311
+ returnDisplay: 'Milliseconds is required for wait action',
312
+ error: {
313
+ message: 'Milliseconds is required for wait action',
314
+ type: ToolErrorType.INVALID_TOOL_PARAMS,
315
+ },
316
+ };
317
+ }
318
+ result = await session.waitFor(this.params.milliseconds);
319
+ break;
320
+ case 'close':
321
+ result = await session.close();
322
+ break;
323
+ default:
324
+ return {
325
+ llmContent: `Unknown action: ${this.params.action}`,
326
+ returnDisplay: `Unknown action: ${this.params.action}`,
327
+ error: {
328
+ message: `Unknown action: ${this.params.action}`,
329
+ type: ToolErrorType.INVALID_TOOL_PARAMS,
330
+ },
331
+ };
332
+ }
333
+ if (!result.success) {
334
+ return {
335
+ llmContent: result.message,
336
+ returnDisplay: result.message,
337
+ error: {
338
+ message: result.message,
339
+ type: ToolErrorType.EXECUTION_FAILED,
340
+ },
341
+ };
342
+ }
343
+ // For extract_text, include the extracted text in the response
344
+ if (this.params.action === 'extract_text' && result.text) {
345
+ return {
346
+ llmContent: `${result.message}\n\nExtracted Text:\n${result.text}`,
347
+ returnDisplay: result.message,
348
+ };
349
+ }
350
+ return {
351
+ llmContent: result.message,
352
+ returnDisplay: result.message,
353
+ };
354
+ }
355
+ }
356
+ export class InteractiveBrowserTool extends BaseDeclarativeTool {
357
+ config;
358
+ static Name = ToolNames.BROWSER_INTERACTIVE;
359
+ // @ts-expect-error - Required by base class pattern
360
+ constructor(config) {
361
+ super(InteractiveBrowserTool.Name, 'InteractiveBrowser', 'Opens and controls a VISIBLE browser window that the user can see. Use this for tasks like visiting websites, extracting content, and performing web automation that the user should observe. Perfect for tasks like "visit Hacker News and summarize top articles" or "create a Notion doc with web content".', Kind.Execute, {
362
+ type: 'object',
363
+ properties: {
364
+ action: {
365
+ type: 'string',
366
+ enum: ['launch', 'navigate', 'extract_text', 'click', 'type', 'wait', 'close'],
367
+ description: 'The action to perform: launch (open browser), navigate (go to URL), extract_text (get page text), click (click element), type (type into element), wait (pause), close (close browser)',
368
+ },
369
+ url: {
370
+ type: 'string',
371
+ description: 'URL to navigate to (required for navigate action)',
372
+ },
373
+ selector: {
374
+ type: 'string',
375
+ description: 'CSS selector for element (required for click, type, and optional for extract_text)',
376
+ },
377
+ text: {
378
+ type: 'string',
379
+ description: 'Text to type (required for type action)',
380
+ },
381
+ milliseconds: {
382
+ type: 'number',
383
+ description: 'Time to wait in milliseconds (required for wait action)',
384
+ },
385
+ },
386
+ required: ['action'],
387
+ }, false);
388
+ this.config = config;
389
+ }
390
+ createInvocation(params) {
391
+ return new InteractiveBrowserToolInvocation(params);
392
+ }
393
+ }
394
+ //# sourceMappingURL=browser-interactive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-interactive.js","sourceRoot":"","sources":["../../../src/tools/browser-interactive.ts"],"names":[],"mappings":"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"}
@@ -17,18 +17,35 @@ export interface BrowserActionResult {
17
17
  execution_logs?: string;
18
18
  currentUrl?: string;
19
19
  currentMousePosition?: string;
20
+ videoPath?: string;
21
+ }
22
+ interface UploadResult {
23
+ execution_success: boolean;
24
+ videoPath?: string;
25
+ error?: string;
20
26
  }
21
27
  /**
22
28
  * Singleton browser session manager
23
29
  */
24
30
  export declare class ServerBrowserSession {
25
31
  private browser?;
32
+ private context?;
26
33
  private page?;
27
34
  private currentMousePosition?;
28
35
  private static instance?;
36
+ private recordingEnabled;
37
+ private recordingDirAbs?;
38
+ private recordingName?;
39
+ private lastVideoPath?;
29
40
  private constructor();
30
41
  static getInstance(): ServerBrowserSession;
31
- launchBrowser(): Promise<BrowserActionResult>;
42
+ launchBrowser(opts?: {
43
+ record?: boolean;
44
+ videoDir?: string;
45
+ videoName?: string;
46
+ }): Promise<BrowserActionResult>;
47
+ generateAccessToken(): Promise<string>;
48
+ uploadToStorage(videoPath: string, videoName: string): Promise<UploadResult>;
32
49
  closeBrowser(): Promise<BrowserActionResult>;
33
50
  private waitTillHTMLStable;
34
51
  private doAction;
@@ -40,6 +57,9 @@ export declare class ServerBrowserSession {
40
57
  scrollUp(): Promise<BrowserActionResult>;
41
58
  }
42
59
  export interface BrowserLaunchParams {
60
+ record?: boolean;
61
+ videoDir?: string;
62
+ videoName?: string;
43
63
  }
44
64
  export declare class BrowserLaunchTool extends BaseDeclarativeTool<BrowserLaunchParams, ToolResult> {
45
65
  private config;
@@ -104,3 +124,4 @@ export declare class BrowserCloseTool extends BaseDeclarativeTool<BrowserClosePa
104
124
  constructor(config: Config);
105
125
  protected createInvocation(params: BrowserCloseParams): ToolInvocation<BrowserCloseParams, ToolResult>;
106
126
  }
127
+ export {};