@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.
- package/README.md +11 -183
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/src/blackbox/blackboxOAuth2.js +17 -1
- package/dist/src/blackbox/blackboxOAuth2.js.map +1 -1
- package/dist/src/code_assist/oauth2.js +15 -3
- package/dist/src/code_assist/oauth2.js.map +1 -1
- package/dist/src/config/blackboxModels.d.ts +3 -2
- package/dist/src/config/blackboxModels.js +262 -33
- package/dist/src/config/blackboxModels.js.map +1 -1
- package/dist/src/config/config.d.ts +65 -0
- package/dist/src/config/config.js +282 -17
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/models.d.ts +1 -1
- package/dist/src/config/models.js +1 -1
- package/dist/src/config/models.js.map +1 -1
- package/dist/src/config/multiAgentModels.d.ts +63 -0
- package/dist/src/config/multiAgentModels.js +194 -0
- package/dist/src/config/multiAgentModels.js.map +1 -0
- package/dist/src/core/client.js +8 -2
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/contentGenerator.d.ts +1 -0
- package/dist/src/core/contentGenerator.js +57 -7
- package/dist/src/core/contentGenerator.js.map +1 -1
- package/dist/src/core/encryptedClientFactory.d.ts +17 -0
- package/dist/src/core/encryptedClientFactory.js +92 -0
- package/dist/src/core/encryptedClientFactory.js.map +1 -0
- package/dist/src/core/encryptedContentGenerator.d.ts +47 -0
- package/dist/src/core/encryptedContentGenerator.js +445 -0
- package/dist/src/core/encryptedContentGenerator.js.map +1 -0
- package/dist/src/core/encryptedGeminiClient.d.ts +59 -0
- package/dist/src/core/encryptedGeminiClient.js +177 -0
- package/dist/src/core/encryptedGeminiClient.js.map +1 -0
- package/dist/src/core/encryptedGeminiClientBridge.d.ts +107 -0
- package/dist/src/core/encryptedGeminiClientBridge.js +808 -0
- package/dist/src/core/encryptedGeminiClientBridge.js.map +1 -0
- package/dist/src/core/encryptedGeminiClientWrapper.d.ts +129 -0
- package/dist/src/core/encryptedGeminiClientWrapper.js +305 -0
- package/dist/src/core/encryptedGeminiClientWrapper.js.map +1 -0
- package/dist/src/core/encryptedTurn.d.ts +40 -0
- package/dist/src/core/encryptedTurn.js +114 -0
- package/dist/src/core/encryptedTurn.js.map +1 -0
- package/dist/src/core/logger.d.ts +21 -0
- package/dist/src/core/logger.js +110 -0
- package/dist/src/core/logger.js.map +1 -1
- package/dist/src/core/openaiContentGenerator/constants.d.ts +2 -0
- package/dist/src/core/openaiContentGenerator/constants.js +2 -0
- package/dist/src/core/openaiContentGenerator/constants.js.map +1 -1
- package/dist/src/core/openaiContentGenerator/converter.d.ts +16 -1
- package/dist/src/core/openaiContentGenerator/converter.js +135 -4
- package/dist/src/core/openaiContentGenerator/converter.js.map +1 -1
- package/dist/src/core/openaiContentGenerator/pipeline.js +6 -2
- package/dist/src/core/openaiContentGenerator/pipeline.js.map +1 -1
- package/dist/src/core/openaiContentGenerator/provider/default.js +10 -1
- package/dist/src/core/openaiContentGenerator/provider/default.js.map +1 -1
- package/dist/src/core/prompts.d.ts +17 -0
- package/dist/src/core/prompts.js +347 -19
- package/dist/src/core/prompts.js.map +1 -1
- package/dist/src/core/tokenLimits.d.ts +1 -0
- package/dist/src/core/tokenLimits.js +37 -2
- package/dist/src/core/tokenLimits.js.map +1 -1
- package/dist/src/core/tokenLimits.test.js +36 -1
- package/dist/src/core/tokenLimits.test.js.map +1 -1
- package/dist/src/encrypt/attestation.d.ts +5 -0
- package/dist/src/encrypt/attestation.js +100 -0
- package/dist/src/encrypt/attestation.js.map +1 -0
- package/dist/src/encrypt/client.d.ts +14 -0
- package/dist/src/encrypt/client.js +132 -0
- package/dist/src/encrypt/client.js.map +1 -0
- package/dist/src/encrypt/config.d.ts +22 -0
- package/dist/src/encrypt/config.js +43 -0
- package/dist/src/encrypt/config.js.map +1 -0
- package/dist/src/encrypt/crypto-utils.d.ts +57 -0
- package/dist/src/encrypt/crypto-utils.js +257 -0
- package/dist/src/encrypt/crypto-utils.js.map +1 -0
- package/dist/src/encrypt/history-manager.d.ts +43 -0
- package/dist/src/encrypt/history-manager.js +164 -0
- package/dist/src/encrypt/history-manager.js.map +1 -0
- package/dist/src/encrypt/minimax-template.d.ts +73 -0
- package/dist/src/encrypt/minimax-template.js +276 -0
- package/dist/src/encrypt/minimax-template.js.map +1 -0
- package/dist/src/encrypt/sessions.d.ts +17 -0
- package/dist/src/encrypt/sessions.js +221 -0
- package/dist/src/encrypt/sessions.js.map +1 -0
- package/dist/src/encrypt/streaming-client.d.ts +29 -0
- package/dist/src/encrypt/streaming-client.js +232 -0
- package/dist/src/encrypt/streaming-client.js.map +1 -0
- package/dist/src/encrypt/tool-formatter.d.ts +36 -0
- package/dist/src/encrypt/tool-formatter.js +353 -0
- package/dist/src/encrypt/tool-formatter.js.map +1 -0
- package/dist/src/encrypt/tool-parser.d.ts +93 -0
- package/dist/src/encrypt/tool-parser.js +567 -0
- package/dist/src/encrypt/tool-parser.js.map +1 -0
- package/dist/src/encrypt/types.d.ts +81 -0
- package/dist/src/encrypt/types.js +2 -0
- package/dist/src/encrypt/types.js.map +1 -0
- package/dist/src/generated/git-commit.d.ts +3 -3
- package/dist/src/generated/git-commit.js +3 -3
- package/dist/src/ide/ide-client.js +9 -19
- package/dist/src/ide/ide-client.js.map +1 -1
- package/dist/src/index.d.ts +15 -0
- package/dist/src/index.js +15 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/oauth-provider.js +2 -6
- package/dist/src/mcp/oauth-provider.js.map +1 -1
- package/dist/src/mcp/oauth-token-storage.d.ts +7 -0
- package/dist/src/mcp/oauth-token-storage.js +24 -0
- package/dist/src/mcp/oauth-token-storage.js.map +1 -1
- package/dist/src/services/EncryptedChatService.d.ts +80 -0
- package/dist/src/services/EncryptedChatService.js +202 -0
- package/dist/src/services/EncryptedChatService.js.map +1 -0
- package/dist/src/services/StatsHistoryService.d.ts +131 -0
- package/dist/src/services/StatsHistoryService.js +427 -0
- package/dist/src/services/StatsHistoryService.js.map +1 -0
- package/dist/src/services/checkpointApiService.d.ts +101 -0
- package/dist/src/services/checkpointApiService.js +215 -0
- package/dist/src/services/checkpointApiService.js.map +1 -0
- package/dist/src/services/environmentSanitization.d.ts +24 -0
- package/dist/src/services/environmentSanitization.js +152 -0
- package/dist/src/services/environmentSanitization.js.map +1 -0
- package/dist/src/telemetry/blackbox-logger/blackbox-logger.d.ts +2 -6
- package/dist/src/telemetry/blackbox-logger/blackbox-logger.js +29 -135
- package/dist/src/telemetry/blackbox-logger/blackbox-logger.js.map +1 -1
- package/dist/src/telemetry/blackbox-logger/blackbox-logger.test.js +1 -1
- package/dist/src/telemetry/blackbox-logger/blackbox-logger.test.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.d.ts +8 -0
- package/dist/src/telemetry/uiTelemetry.js +17 -0
- package/dist/src/telemetry/uiTelemetry.js.map +1 -1
- package/dist/src/tools/browser-interactive.d.ts +63 -0
- package/dist/src/tools/browser-interactive.js +394 -0
- package/dist/src/tools/browser-interactive.js.map +1 -0
- package/dist/src/tools/browser_use.d.ts +22 -1
- package/dist/src/tools/browser_use.js +403 -23
- package/dist/src/tools/browser_use.js.map +1 -1
- package/dist/src/tools/data-file-constants.d.ts +17 -0
- package/dist/src/tools/data-file-constants.js +30 -0
- package/dist/src/tools/data-file-constants.js.map +1 -0
- package/dist/src/tools/edit.js +44 -7
- package/dist/src/tools/edit.js.map +1 -1
- package/dist/src/tools/ls.js +40 -6
- package/dist/src/tools/ls.js.map +1 -1
- package/dist/src/tools/ls.test.js +4 -4
- package/dist/src/tools/ls.test.js.map +1 -1
- package/dist/src/tools/mcp-client-manager.d.ts +28 -2
- package/dist/src/tools/mcp-client-manager.js +62 -4
- package/dist/src/tools/mcp-client-manager.js.map +1 -1
- package/dist/src/tools/mcp-client.d.ts +5 -3
- package/dist/src/tools/mcp-client.js +39 -11
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-tool.d.ts +3 -1
- package/dist/src/tools/mcp-tool.js +37 -9
- package/dist/src/tools/mcp-tool.js.map +1 -1
- package/dist/src/tools/memoryTool.d.ts +14 -4
- package/dist/src/tools/memoryTool.js +98 -39
- package/dist/src/tools/memoryTool.js.map +1 -1
- package/dist/src/tools/read-data-file.d.ts +31 -0
- package/dist/src/tools/read-data-file.js +469 -0
- package/dist/src/tools/read-data-file.js.map +1 -0
- package/dist/src/tools/read-file.js +64 -5
- package/dist/src/tools/read-file.js.map +1 -1
- package/dist/src/tools/read-file.test.js +40 -6
- package/dist/src/tools/read-file.test.js.map +1 -1
- package/dist/src/tools/shell.d.ts +3 -1
- package/dist/src/tools/shell.js +25 -4
- package/dist/src/tools/shell.js.map +1 -1
- package/dist/src/tools/skill.d.ts +34 -0
- package/dist/src/tools/skill.js +143 -0
- package/dist/src/tools/skill.js.map +1 -0
- package/dist/src/tools/sql_db.d.ts +101 -0
- package/dist/src/tools/sql_db.js +1033 -0
- package/dist/src/tools/sql_db.js.map +1 -0
- package/dist/src/tools/sql_db_configure.d.ts +18 -0
- package/dist/src/tools/sql_db_configure.js +96 -0
- package/dist/src/tools/sql_db_configure.js.map +1 -0
- package/dist/src/tools/taskCompletion.d.ts +29 -0
- package/dist/src/tools/taskCompletion.js +231 -0
- package/dist/src/tools/taskCompletion.js.map +1 -0
- package/dist/src/tools/tool-error.d.ts +3 -1
- package/dist/src/tools/tool-error.js +3 -0
- package/dist/src/tools/tool-error.js.map +1 -1
- package/dist/src/tools/tool-names.d.ts +8 -0
- package/dist/src/tools/tool-names.js +8 -0
- package/dist/src/tools/tool-names.js.map +1 -1
- package/dist/src/tools/tool-registry.d.ts +22 -0
- package/dist/src/tools/tool-registry.js +41 -1
- package/dist/src/tools/tool-registry.js.map +1 -1
- package/dist/src/tools/tools.d.ts +18 -2
- package/dist/src/tools/tools.js +3 -0
- package/dist/src/tools/tools.js.map +1 -1
- package/dist/src/tools/web-fetch.js +24 -4
- package/dist/src/tools/web-fetch.js.map +1 -1
- package/dist/src/tools/web-search.js +160 -2
- package/dist/src/tools/web-search.js.map +1 -1
- package/dist/src/tools/workspace-error-helper.d.ts +9 -0
- package/dist/src/tools/workspace-error-helper.js +43 -0
- package/dist/src/tools/workspace-error-helper.js.map +1 -0
- package/dist/src/tools/workspace-error-helper.test.js +85 -0
- package/dist/src/tools/workspace-error-helper.test.js.map +1 -0
- package/dist/src/tools/write-file.js +42 -7
- package/dist/src/tools/write-file.js.map +1 -1
- package/dist/src/utils/environmentContext.js +3 -1
- package/dist/src/utils/environmentContext.js.map +1 -1
- package/dist/src/utils/environmentContext.test.js +3 -2
- package/dist/src/utils/environmentContext.test.js.map +1 -1
- package/dist/src/utils/fetch.d.ts +3 -1
- package/dist/src/utils/fetch.js +35 -2
- package/dist/src/utils/fetch.js.map +1 -1
- package/dist/src/utils/fileUtils.js +30 -3
- package/dist/src/utils/fileUtils.js.map +1 -1
- package/dist/src/utils/filesearch/fileSearch.d.ts +2 -0
- package/dist/src/utils/filesearch/fileSearch.js +38 -7
- package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
- package/dist/src/utils/git-worktree-utils.d.ts +56 -0
- package/dist/src/utils/git-worktree-utils.js +176 -0
- package/dist/src/utils/git-worktree-utils.js.map +1 -0
- package/dist/src/utils/imageCompression.d.ts +34 -0
- package/dist/src/utils/imageCompression.js +170 -0
- package/dist/src/utils/imageCompression.js.map +1 -0
- package/dist/src/utils/messageTruncator.d.ts +51 -0
- package/dist/src/utils/messageTruncator.js +346 -0
- package/dist/src/utils/messageTruncator.js.map +1 -0
- package/dist/src/utils/pathReader.js +26 -6
- package/dist/src/utils/pathReader.js.map +1 -1
- package/dist/src/utils/skill.d.ts +65 -0
- package/dist/src/utils/skill.js +241 -0
- package/dist/src/utils/skill.js.map +1 -0
- package/dist/src/utils/textCleaning.d.ts +51 -0
- package/dist/src/utils/textCleaning.js +327 -0
- package/dist/src/utils/textCleaning.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +16 -2
- package/dist/src/tools/mcp-client-manager.test.js +0 -39
- package/dist/src/tools/mcp-client-manager.test.js.map +0 -1
- package/dist/src/tools/mcp-client.test.d.ts +0 -6
- package/dist/src/tools/mcp-client.test.js +0 -454
- package/dist/src/tools/mcp-client.test.js.map +0 -1
- package/dist/src/tools/mcp-tool.test.d.ts +0 -6
- package/dist/src/tools/mcp-tool.test.js +0 -576
- package/dist/src/tools/mcp-tool.test.js.map +0 -1
- package/dist/src/tools/memoryTool.test.d.ts +0 -6
- package/dist/src/tools/memoryTool.test.js +0 -420
- package/dist/src/tools/memoryTool.test.js.map +0 -1
- package/dist/src/tools/tool-registry.test.d.ts +0 -6
- package/dist/src/tools/tool-registry.test.js +0 -332
- package/dist/src/tools/tool-registry.test.js.map +0 -1
- /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(
|
|
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 {};
|