@minded-ai/mindedjs 2.0.11-beta.0.3 → 2.0.11-beta.0.5
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/dist/browserTask/executeBrowserTask.js +2 -2
- package/dist/browserTask/executeBrowserTask.js.map +1 -1
- package/dist/cli/index.js +3 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/localOperatorSetup.d.ts +0 -1
- package/dist/cli/localOperatorSetup.d.ts.map +1 -1
- package/dist/cli/localOperatorSetup.js +51 -43
- package/dist/cli/localOperatorSetup.js.map +1 -1
- package/package.json +1 -1
- package/src/browserTask/executeBrowserTask.ts +3 -3
- package/src/cli/index.ts +5 -5
- package/src/cli/localOperatorSetup.ts +59 -46
|
@@ -67,8 +67,8 @@ const invokeBrowserTask = async (sessionId, cdpUrl, task, keepAlive, hooks, onPr
|
|
|
67
67
|
(0, localOperatorSetup_1.validateLocalOperatorSetup)();
|
|
68
68
|
const pythonScriptPath = path_1.default.resolve(__dirname, 'executeBrowserTask.py');
|
|
69
69
|
const outputSchemaArg = JSON.stringify(outputSchema || []);
|
|
70
|
-
// Use
|
|
71
|
-
const uvCommand =
|
|
70
|
+
// Use system uv command
|
|
71
|
+
const uvCommand = 'uv';
|
|
72
72
|
const args = ['run', pythonScriptPath, sessionId, cdpUrl, task, outputSchemaArg];
|
|
73
73
|
logger_1.logger.info({ message: 'Spawning Python process', command: uvCommand, args });
|
|
74
74
|
const child = (0, node_child_process_1.spawn)(uvCommand, args, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executeBrowserTask.js","sourceRoot":"","sources":["../../src/browserTask/executeBrowserTask.ts"],"names":[],"mappings":";;;;;;AAAA,2DAA2C;AAC3C,4CAAyC;AACzC,mEAAgE;AAChE,gDAAwB;AAExB,6EAQ2C;AAC3C,yDAA8D;AAC9D,
|
|
1
|
+
{"version":3,"file":"executeBrowserTask.js","sourceRoot":"","sources":["../../src/browserTask/executeBrowserTask.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -40,7 +40,7 @@ async function setToken(token, useLocalOperator = false) {
|
|
|
40
40
|
if (!fs.existsSync(envPath)) {
|
|
41
41
|
// Create .env file with the token
|
|
42
42
|
fs.writeFileSync(envPath, tokenLine + '\n');
|
|
43
|
-
|
|
43
|
+
console.info(`Created ${envPath} and added token`);
|
|
44
44
|
}
|
|
45
45
|
else {
|
|
46
46
|
// Read existing .env file
|
|
@@ -50,7 +50,7 @@ async function setToken(token, useLocalOperator = false) {
|
|
|
50
50
|
// Replace existing token
|
|
51
51
|
const updatedContent = envContent.replace(/MINDED_CONNECTION_TOKEN=.*/, tokenLine);
|
|
52
52
|
fs.writeFileSync(envPath, updatedContent);
|
|
53
|
-
|
|
53
|
+
console.info(`Updated MINDED_CONNECTION_TOKEN in ${envPath}`);
|
|
54
54
|
}
|
|
55
55
|
else {
|
|
56
56
|
// Append token to existing file
|
|
@@ -61,7 +61,7 @@ async function setToken(token, useLocalOperator = false) {
|
|
|
61
61
|
}
|
|
62
62
|
// Handle local operator setup if requested
|
|
63
63
|
if (useLocalOperator) {
|
|
64
|
-
|
|
64
|
+
console.info('Setting up local browser operator...');
|
|
65
65
|
await (0, localOperatorSetup_1.setupLocalOperator)();
|
|
66
66
|
}
|
|
67
67
|
}
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,uCAAyB;AACzB,2CAA6B;AAC7B,4CAAyC;AACzC,iDAAyC;AACzC,6DAAgF;AAEhF,MAAM,QAAQ,GAAG,MAAM,CAAC;AAExB,SAAS,cAAc;IACrB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC5C,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,KAAa,EAAE,mBAA4B,KAAK;IACtE,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG,2BAA2B,KAAK,EAAE,CAAC;IAErD,4BAA4B;IAC5B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,kCAAkC;QAClC,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI,CAAC,CAAC;QAC5C,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,5 +3,4 @@ export declare function setupLocalOperator(skipPrompt?: boolean): Promise<void>;
|
|
|
3
3
|
export declare function validateLocalOperatorSetup(): void;
|
|
4
4
|
export declare function getVenvPath(): string;
|
|
5
5
|
export declare function getVenvBinPath(): string;
|
|
6
|
-
export declare function getVenvUvPath(): string;
|
|
7
6
|
//# sourceMappingURL=localOperatorSetup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localOperatorSetup.d.ts","sourceRoot":"","sources":["../../src/cli/localOperatorSetup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"localOperatorSetup.d.ts","sourceRoot":"","sources":["../../src/cli/localOperatorSetup.ts"],"names":[],"mappings":"AAwCA,wBAAgB,oBAAoB,IAAI,OAAO,CAM9C;AA+FD,wBAAsB,kBAAkB,CAAC,UAAU,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAiInF;AAED,wBAAgB,0BAA0B,IAAI,IAAI,CAMjD;AAED,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC"}
|
|
@@ -28,11 +28,9 @@ exports.setupLocalOperator = setupLocalOperator;
|
|
|
28
28
|
exports.validateLocalOperatorSetup = validateLocalOperatorSetup;
|
|
29
29
|
exports.getVenvPath = getVenvPath;
|
|
30
30
|
exports.getVenvBinPath = getVenvBinPath;
|
|
31
|
-
exports.getVenvUvPath = getVenvUvPath;
|
|
32
31
|
const fs = __importStar(require("fs"));
|
|
33
32
|
const path = __importStar(require("path"));
|
|
34
33
|
const child_process_1 = require("child_process");
|
|
35
|
-
const logger_1 = require("../utils/logger");
|
|
36
34
|
const readline = __importStar(require("readline"));
|
|
37
35
|
const VENV_DIR = '.venv';
|
|
38
36
|
const SETUP_MARKER_FILE = '.minded-local-operator-setup';
|
|
@@ -78,30 +76,41 @@ function checkCommand(command) {
|
|
|
78
76
|
function promptUser(question) {
|
|
79
77
|
// Check if we're in an interactive terminal
|
|
80
78
|
if (!process.stdin.isTTY) {
|
|
81
|
-
|
|
79
|
+
console.warn('Non-interactive terminal detected, skipping prompt and proceeding with installation');
|
|
82
80
|
return Promise.resolve(true);
|
|
83
81
|
}
|
|
84
|
-
const rl = readline.createInterface({
|
|
85
|
-
input: process.stdin,
|
|
86
|
-
output: process.stdout,
|
|
87
|
-
});
|
|
88
82
|
return new Promise((resolve) => {
|
|
83
|
+
const rl = readline.createInterface({
|
|
84
|
+
input: process.stdin,
|
|
85
|
+
output: process.stdout,
|
|
86
|
+
});
|
|
89
87
|
// Set a timeout in case the prompt hangs
|
|
90
88
|
const timeout = setTimeout(() => {
|
|
91
|
-
|
|
89
|
+
console.warn('Prompt timeout (30s), proceeding with installation');
|
|
92
90
|
rl.close();
|
|
93
91
|
resolve(true);
|
|
94
92
|
}, 30000); // 30 second timeout
|
|
93
|
+
console.log('Displaying prompt to user');
|
|
95
94
|
rl.question(question, (answer) => {
|
|
96
95
|
clearTimeout(timeout);
|
|
96
|
+
console.log(`User answered: "${answer}"`);
|
|
97
97
|
rl.close();
|
|
98
|
-
|
|
98
|
+
const confirmed = answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes';
|
|
99
|
+
console.log(`Prompt result: ${confirmed}`);
|
|
100
|
+
resolve(confirmed);
|
|
101
|
+
});
|
|
102
|
+
// Handle potential readline errors
|
|
103
|
+
rl.on('error', (error) => {
|
|
104
|
+
console.error('Readline error, proceeding with installation:', error.message);
|
|
105
|
+
clearTimeout(timeout);
|
|
106
|
+
rl.close();
|
|
107
|
+
resolve(true);
|
|
99
108
|
});
|
|
100
109
|
});
|
|
101
110
|
}
|
|
102
111
|
async function runCommand(command, description) {
|
|
103
112
|
return new Promise((resolve, reject) => {
|
|
104
|
-
|
|
113
|
+
console.log(`Installing ${description}...`);
|
|
105
114
|
const isComplexCommand = command.includes('|') || command.includes('&&');
|
|
106
115
|
if (isComplexCommand) {
|
|
107
116
|
// For complex commands with pipes or &&, use shell
|
|
@@ -110,12 +119,12 @@ async function runCommand(command, description) {
|
|
|
110
119
|
shell: true,
|
|
111
120
|
});
|
|
112
121
|
child.on('error', (error) => {
|
|
113
|
-
|
|
122
|
+
console.error(`Failed to install ${description}:`, error.message);
|
|
114
123
|
reject(error);
|
|
115
124
|
});
|
|
116
125
|
child.on('close', (code) => {
|
|
117
126
|
if (code === 0) {
|
|
118
|
-
|
|
127
|
+
console.log(`✓ ${description} installed successfully`);
|
|
119
128
|
resolve();
|
|
120
129
|
}
|
|
121
130
|
else {
|
|
@@ -127,21 +136,21 @@ async function runCommand(command, description) {
|
|
|
127
136
|
// For simple commands, use execSync
|
|
128
137
|
try {
|
|
129
138
|
(0, child_process_1.execSync)(command, { stdio: 'inherit' });
|
|
130
|
-
|
|
139
|
+
console.log(`✓ ${description} installed successfully`);
|
|
131
140
|
resolve();
|
|
132
141
|
}
|
|
133
142
|
catch (error) {
|
|
134
|
-
|
|
143
|
+
console.error(`Failed to install ${description}:`, error);
|
|
135
144
|
reject(error);
|
|
136
145
|
}
|
|
137
146
|
}
|
|
138
147
|
});
|
|
139
148
|
}
|
|
140
149
|
async function setupLocalOperator(skipPrompt = false) {
|
|
141
|
-
|
|
150
|
+
console.log('\n🤖 Minded Local Operator Setup\n');
|
|
142
151
|
// Check if already setup
|
|
143
152
|
if (isLocalOperatorSetup()) {
|
|
144
|
-
|
|
153
|
+
console.log('✓ Local operator is already set up');
|
|
145
154
|
return;
|
|
146
155
|
}
|
|
147
156
|
// Display what will be installed
|
|
@@ -152,59 +161,61 @@ async function setupLocalOperator(skipPrompt = false) {
|
|
|
152
161
|
console.log('');
|
|
153
162
|
// Ask for confirmation unless skipped
|
|
154
163
|
if (!skipPrompt) {
|
|
164
|
+
console.log('Waiting for user confirmation...');
|
|
155
165
|
const confirmed = await promptUser('Do you want to proceed with the installation? (y/n): ');
|
|
156
166
|
if (!confirmed) {
|
|
157
|
-
|
|
167
|
+
console.log('Installation cancelled by user');
|
|
158
168
|
process.exit(0);
|
|
159
169
|
}
|
|
170
|
+
console.log('User confirmed, proceeding with installation');
|
|
160
171
|
}
|
|
161
172
|
else {
|
|
162
|
-
|
|
173
|
+
console.log('Skipping confirmation prompt, proceeding with installation...');
|
|
163
174
|
}
|
|
164
175
|
console.log('\n📦 Starting installation...\n');
|
|
165
176
|
try {
|
|
166
177
|
// Check and install uv if needed
|
|
167
178
|
if (!checkCommand('uv --version')) {
|
|
168
|
-
|
|
179
|
+
console.log('Installing uv package manager...');
|
|
169
180
|
await runCommand('curl -LsSf https://astral.sh/uv/install.sh | sh', 'uv');
|
|
170
181
|
// Add uv to PATH for current session
|
|
171
182
|
const uvPath = path.join(process.env.HOME || '', '.cargo', 'bin');
|
|
172
183
|
process.env.PATH = `${uvPath}:${process.env.PATH}`;
|
|
173
184
|
}
|
|
174
185
|
else {
|
|
175
|
-
|
|
186
|
+
console.log('✓ uv is already installed');
|
|
176
187
|
}
|
|
177
188
|
// Check Python 3.12
|
|
178
189
|
if (!checkCommand('python3.12 --version')) {
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
190
|
+
console.error('Python 3.12 is required but not found');
|
|
191
|
+
console.log('Please install Python 3.12 manually:');
|
|
192
|
+
console.log(' macOS: brew install python@3.12');
|
|
193
|
+
console.log(' Ubuntu/Debian: sudo apt install python3.12');
|
|
194
|
+
console.log(' Or visit: https://www.python.org/downloads/');
|
|
184
195
|
process.exit(1);
|
|
185
196
|
}
|
|
186
197
|
else {
|
|
187
|
-
|
|
198
|
+
console.log('✓ Python 3.12 is available');
|
|
188
199
|
}
|
|
189
200
|
// Create virtual environment
|
|
190
|
-
|
|
201
|
+
console.log('Creating Python virtual environment...');
|
|
191
202
|
(0, child_process_1.execSync)(`uv venv --python 3.12 ${VENV_DIR}`, { stdio: 'inherit' });
|
|
192
|
-
|
|
203
|
+
console.log('✓ Virtual environment created');
|
|
193
204
|
// Activate venv and install packages
|
|
194
205
|
const venvBin = path.join(process.cwd(), VENV_DIR, 'bin');
|
|
195
206
|
const venvPython = path.join(venvBin, 'python');
|
|
196
207
|
const venvPip = path.join(venvBin, 'pip');
|
|
197
208
|
// Install browser-use in the venv
|
|
198
|
-
|
|
199
|
-
(0, child_process_1.execSync)(
|
|
209
|
+
console.log('Installing browser-use package...');
|
|
210
|
+
(0, child_process_1.execSync)(`uv pip install browser-use`, {
|
|
200
211
|
stdio: 'inherit',
|
|
201
212
|
env: { ...process.env, VIRTUAL_ENV: path.join(process.cwd(), VENV_DIR) },
|
|
202
213
|
});
|
|
203
|
-
|
|
214
|
+
console.log('✓ browser-use installed');
|
|
204
215
|
// Install Playwright Chromium
|
|
205
|
-
|
|
206
|
-
(0, child_process_1.execSync)(
|
|
207
|
-
|
|
216
|
+
console.log('Installing Playwright Chromium browser...');
|
|
217
|
+
(0, child_process_1.execSync)(`uvx playwright install chromium --with-deps`, { stdio: 'inherit' });
|
|
218
|
+
console.log('✓ Playwright Chromium installed');
|
|
208
219
|
// Create setup marker file
|
|
209
220
|
const setupMarkerPath = path.join(process.cwd(), SETUP_MARKER_FILE);
|
|
210
221
|
const setupInfo = {
|
|
@@ -228,17 +239,17 @@ async function setupLocalOperator(skipPrompt = false) {
|
|
|
228
239
|
if (linesToAdd.length > 0) {
|
|
229
240
|
const newContent = gitignoreContent.trimEnd() + '\n\n# Minded Local Operator\n' + linesToAdd.join('\n') + '\n';
|
|
230
241
|
fs.writeFileSync(gitignorePath, newContent);
|
|
231
|
-
|
|
242
|
+
console.log('✓ Updated .gitignore');
|
|
232
243
|
}
|
|
233
244
|
}
|
|
234
245
|
console.log('\n' + '='.repeat(50));
|
|
235
246
|
console.log('✅ Local operator setup completed successfully!');
|
|
236
247
|
console.log('='.repeat(50) + '\n');
|
|
237
|
-
|
|
238
|
-
|
|
248
|
+
console.log('You can now use browser automation features locally.');
|
|
249
|
+
console.log('The virtual environment will be activated automatically when needed.');
|
|
239
250
|
}
|
|
240
251
|
catch (error) {
|
|
241
|
-
|
|
252
|
+
console.error('Setup failed:', error);
|
|
242
253
|
// Clean up partial installation
|
|
243
254
|
try {
|
|
244
255
|
if (fs.existsSync(path.join(process.cwd(), VENV_DIR))) {
|
|
@@ -253,8 +264,8 @@ async function setupLocalOperator(skipPrompt = false) {
|
|
|
253
264
|
}
|
|
254
265
|
function validateLocalOperatorSetup() {
|
|
255
266
|
if (!isLocalOperatorSetup()) {
|
|
256
|
-
|
|
257
|
-
|
|
267
|
+
console.error('Local operator is not set up');
|
|
268
|
+
console.log('Please run: npx minded setup-local-operator');
|
|
258
269
|
throw new Error('Local operator not configured');
|
|
259
270
|
}
|
|
260
271
|
}
|
|
@@ -264,7 +275,4 @@ function getVenvPath() {
|
|
|
264
275
|
function getVenvBinPath() {
|
|
265
276
|
return path.join(getVenvPath(), 'bin');
|
|
266
277
|
}
|
|
267
|
-
function getVenvUvPath() {
|
|
268
|
-
return path.join(getVenvBinPath(), 'uv');
|
|
269
|
-
}
|
|
270
278
|
//# sourceMappingURL=localOperatorSetup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localOperatorSetup.js","sourceRoot":"","sources":["../../src/cli/localOperatorSetup.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"localOperatorSetup.js","sourceRoot":"","sources":["../../src/cli/localOperatorSetup.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
DestroyBrowserSessionResponse,
|
|
14
14
|
} from '../platform/mindedConnectionTypes';
|
|
15
15
|
import { kill, getOrStartLocalCDP } from './localBrowserTask';
|
|
16
|
-
import { isLocalOperatorSetup,
|
|
16
|
+
import { isLocalOperatorSetup, validateLocalOperatorSetup } from '../cli/localOperatorSetup';
|
|
17
17
|
|
|
18
18
|
// Socket-based browser task functions
|
|
19
19
|
export const createBrowserSession = async ({
|
|
@@ -122,8 +122,8 @@ export const invokeBrowserTask = async (
|
|
|
122
122
|
const pythonScriptPath = path.resolve(__dirname, 'executeBrowserTask.py');
|
|
123
123
|
const outputSchemaArg = JSON.stringify(outputSchema || []);
|
|
124
124
|
|
|
125
|
-
// Use
|
|
126
|
-
const uvCommand =
|
|
125
|
+
// Use system uv command
|
|
126
|
+
const uvCommand = 'uv';
|
|
127
127
|
const args = ['run', pythonScriptPath, sessionId, cdpUrl, task, outputSchemaArg];
|
|
128
128
|
|
|
129
129
|
logger.info({ message: 'Spawning Python process', command: uvCommand, args });
|
package/src/cli/index.ts
CHANGED
|
@@ -20,7 +20,7 @@ async function setToken(token: string, useLocalOperator: boolean = false): Promi
|
|
|
20
20
|
if (!fs.existsSync(envPath)) {
|
|
21
21
|
// Create .env file with the token
|
|
22
22
|
fs.writeFileSync(envPath, tokenLine + '\n');
|
|
23
|
-
|
|
23
|
+
console.info(`Created ${envPath} and added token`);
|
|
24
24
|
} else {
|
|
25
25
|
// Read existing .env file
|
|
26
26
|
const envContent = fs.readFileSync(envPath, 'utf8');
|
|
@@ -30,7 +30,7 @@ async function setToken(token: string, useLocalOperator: boolean = false): Promi
|
|
|
30
30
|
// Replace existing token
|
|
31
31
|
const updatedContent = envContent.replace(/MINDED_CONNECTION_TOKEN=.*/, tokenLine);
|
|
32
32
|
fs.writeFileSync(envPath, updatedContent);
|
|
33
|
-
|
|
33
|
+
console.info(`Updated MINDED_CONNECTION_TOKEN in ${envPath}`);
|
|
34
34
|
} else {
|
|
35
35
|
// Append token to existing file
|
|
36
36
|
const newContent = envContent.endsWith('\n') ? envContent + tokenLine + '\n' : envContent + '\n' + tokenLine + '\n';
|
|
@@ -41,7 +41,7 @@ async function setToken(token: string, useLocalOperator: boolean = false): Promi
|
|
|
41
41
|
|
|
42
42
|
// Handle local operator setup if requested
|
|
43
43
|
if (useLocalOperator) {
|
|
44
|
-
|
|
44
|
+
console.info('Setting up local browser operator...');
|
|
45
45
|
await setupLocalOperator();
|
|
46
46
|
}
|
|
47
47
|
}
|
|
@@ -178,9 +178,9 @@ async function main() {
|
|
|
178
178
|
} else if (command === 'check-local-operator') {
|
|
179
179
|
// Command to check if local operator is set up
|
|
180
180
|
if (isLocalOperatorSetup()) {
|
|
181
|
-
|
|
181
|
+
console.info('✓ Local operator is set up and ready');
|
|
182
182
|
} else {
|
|
183
|
-
|
|
183
|
+
console.info('✗ Local operator is not set up. Run: npx minded setup-local-operator');
|
|
184
184
|
process.exit(1);
|
|
185
185
|
}
|
|
186
186
|
} else {
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as fs from 'fs';
|
|
2
2
|
import * as path from 'path';
|
|
3
3
|
import { execSync, spawn } from 'child_process';
|
|
4
|
-
import { logger } from '../utils/logger';
|
|
5
4
|
import * as readline from 'readline';
|
|
6
5
|
|
|
7
6
|
const VENV_DIR = '.venv';
|
|
@@ -59,34 +58,50 @@ function checkCommand(command: string): boolean {
|
|
|
59
58
|
function promptUser(question: string): Promise<boolean> {
|
|
60
59
|
// Check if we're in an interactive terminal
|
|
61
60
|
if (!process.stdin.isTTY) {
|
|
62
|
-
|
|
63
|
-
return Promise.resolve(
|
|
61
|
+
console.warn('Non-interactive terminal detected, skipping prompt and cancelling installation');
|
|
62
|
+
return Promise.resolve(false);
|
|
64
63
|
}
|
|
65
64
|
|
|
66
|
-
const rl = readline.createInterface({
|
|
67
|
-
input: process.stdin,
|
|
68
|
-
output: process.stdout,
|
|
69
|
-
});
|
|
70
|
-
|
|
71
65
|
return new Promise((resolve) => {
|
|
66
|
+
const rl = readline.createInterface({
|
|
67
|
+
input: process.stdin,
|
|
68
|
+
output: process.stdout,
|
|
69
|
+
});
|
|
70
|
+
|
|
72
71
|
// Set a timeout in case the prompt hangs
|
|
73
72
|
const timeout = setTimeout(() => {
|
|
74
|
-
|
|
73
|
+
console.warn('Prompt timeout (30s), cancelling installation');
|
|
75
74
|
rl.close();
|
|
76
|
-
resolve(
|
|
75
|
+
resolve(false);
|
|
77
76
|
}, 30000); // 30 second timeout
|
|
78
77
|
|
|
78
|
+
console.log('Displaying prompt to user');
|
|
79
|
+
|
|
79
80
|
rl.question(question, (answer) => {
|
|
81
|
+
clearTimeout(timeout);
|
|
82
|
+
console.log(`User answered: "${answer}"`);
|
|
83
|
+
|
|
84
|
+
rl.close();
|
|
85
|
+
|
|
86
|
+
const confirmed = answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes';
|
|
87
|
+
console.log(`Prompt result: ${confirmed}`);
|
|
88
|
+
|
|
89
|
+
resolve(confirmed);
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
// Handle potential readline errors
|
|
93
|
+
rl.on('error', (error) => {
|
|
94
|
+
console.error('Readline error, cancelling installation:', error.message);
|
|
80
95
|
clearTimeout(timeout);
|
|
81
96
|
rl.close();
|
|
82
|
-
resolve(
|
|
97
|
+
resolve(false);
|
|
83
98
|
});
|
|
84
99
|
});
|
|
85
100
|
}
|
|
86
101
|
|
|
87
102
|
async function runCommand(command: string, description: string): Promise<void> {
|
|
88
103
|
return new Promise((resolve, reject) => {
|
|
89
|
-
|
|
104
|
+
console.log(`Installing ${description}...`);
|
|
90
105
|
|
|
91
106
|
const isComplexCommand = command.includes('|') || command.includes('&&');
|
|
92
107
|
|
|
@@ -98,13 +113,13 @@ async function runCommand(command: string, description: string): Promise<void> {
|
|
|
98
113
|
});
|
|
99
114
|
|
|
100
115
|
child.on('error', (error) => {
|
|
101
|
-
|
|
116
|
+
console.error(`Failed to install ${description}:`, error.message);
|
|
102
117
|
reject(error);
|
|
103
118
|
});
|
|
104
119
|
|
|
105
120
|
child.on('close', (code) => {
|
|
106
121
|
if (code === 0) {
|
|
107
|
-
|
|
122
|
+
console.log(`✓ ${description} installed successfully`);
|
|
108
123
|
resolve();
|
|
109
124
|
} else {
|
|
110
125
|
reject(new Error(`Command exited with code ${code}`));
|
|
@@ -114,10 +129,10 @@ async function runCommand(command: string, description: string): Promise<void> {
|
|
|
114
129
|
// For simple commands, use execSync
|
|
115
130
|
try {
|
|
116
131
|
execSync(command, { stdio: 'inherit' });
|
|
117
|
-
|
|
132
|
+
console.log(`✓ ${description} installed successfully`);
|
|
118
133
|
resolve();
|
|
119
134
|
} catch (error) {
|
|
120
|
-
|
|
135
|
+
console.error(`Failed to install ${description}:`, error);
|
|
121
136
|
reject(error);
|
|
122
137
|
}
|
|
123
138
|
}
|
|
@@ -125,11 +140,11 @@ async function runCommand(command: string, description: string): Promise<void> {
|
|
|
125
140
|
}
|
|
126
141
|
|
|
127
142
|
export async function setupLocalOperator(skipPrompt: boolean = false): Promise<void> {
|
|
128
|
-
|
|
143
|
+
console.log('\n🤖 Minded Local Operator Setup\n');
|
|
129
144
|
|
|
130
145
|
// Check if already setup
|
|
131
146
|
if (isLocalOperatorSetup()) {
|
|
132
|
-
|
|
147
|
+
console.log('✓ Local operator is already set up');
|
|
133
148
|
return;
|
|
134
149
|
}
|
|
135
150
|
|
|
@@ -142,13 +157,15 @@ export async function setupLocalOperator(skipPrompt: boolean = false): Promise<v
|
|
|
142
157
|
|
|
143
158
|
// Ask for confirmation unless skipped
|
|
144
159
|
if (!skipPrompt) {
|
|
160
|
+
console.log('Waiting for user confirmation...');
|
|
145
161
|
const confirmed = await promptUser('Do you want to proceed with the installation? (y/n): ');
|
|
146
162
|
if (!confirmed) {
|
|
147
|
-
|
|
163
|
+
console.log('Installation cancelled by user');
|
|
148
164
|
process.exit(0);
|
|
149
165
|
}
|
|
166
|
+
console.log('User confirmed, proceeding with installation');
|
|
150
167
|
} else {
|
|
151
|
-
|
|
168
|
+
console.log('Skipping confirmation prompt, proceeding with installation...');
|
|
152
169
|
}
|
|
153
170
|
|
|
154
171
|
console.log('\n📦 Starting installation...\n');
|
|
@@ -156,32 +173,32 @@ export async function setupLocalOperator(skipPrompt: boolean = false): Promise<v
|
|
|
156
173
|
try {
|
|
157
174
|
// Check and install uv if needed
|
|
158
175
|
if (!checkCommand('uv --version')) {
|
|
159
|
-
|
|
176
|
+
console.log('Installing uv package manager...');
|
|
160
177
|
await runCommand('curl -LsSf https://astral.sh/uv/install.sh | sh', 'uv');
|
|
161
178
|
|
|
162
179
|
// Add uv to PATH for current session
|
|
163
180
|
const uvPath = path.join(process.env.HOME || '', '.cargo', 'bin');
|
|
164
181
|
process.env.PATH = `${uvPath}:${process.env.PATH}`;
|
|
165
182
|
} else {
|
|
166
|
-
|
|
183
|
+
console.log('✓ uv is already installed');
|
|
167
184
|
}
|
|
168
185
|
|
|
169
186
|
// Check Python 3.12
|
|
170
187
|
if (!checkCommand('python3.12 --version')) {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
188
|
+
console.error('Python 3.12 is required but not found');
|
|
189
|
+
console.log('Please install Python 3.12 manually:');
|
|
190
|
+
console.log(' macOS: brew install python@3.12');
|
|
191
|
+
console.log(' Ubuntu/Debian: sudo apt install python3.12');
|
|
192
|
+
console.log(' Or visit: https://www.python.org/downloads/');
|
|
176
193
|
process.exit(1);
|
|
177
194
|
} else {
|
|
178
|
-
|
|
195
|
+
console.log('✓ Python 3.12 is available');
|
|
179
196
|
}
|
|
180
197
|
|
|
181
198
|
// Create virtual environment
|
|
182
|
-
|
|
199
|
+
console.log('Creating Python virtual environment...');
|
|
183
200
|
execSync(`uv venv --python 3.12 ${VENV_DIR}`, { stdio: 'inherit' });
|
|
184
|
-
|
|
201
|
+
console.log('✓ Virtual environment created');
|
|
185
202
|
|
|
186
203
|
// Activate venv and install packages
|
|
187
204
|
const venvBin = path.join(process.cwd(), VENV_DIR, 'bin');
|
|
@@ -189,17 +206,17 @@ export async function setupLocalOperator(skipPrompt: boolean = false): Promise<v
|
|
|
189
206
|
const venvPip = path.join(venvBin, 'pip');
|
|
190
207
|
|
|
191
208
|
// Install browser-use in the venv
|
|
192
|
-
|
|
193
|
-
execSync(
|
|
209
|
+
console.log('Installing browser-use package...');
|
|
210
|
+
execSync(`uv pip install browser-use`, {
|
|
194
211
|
stdio: 'inherit',
|
|
195
212
|
env: { ...process.env, VIRTUAL_ENV: path.join(process.cwd(), VENV_DIR) },
|
|
196
213
|
});
|
|
197
|
-
|
|
214
|
+
console.log('✓ browser-use installed');
|
|
198
215
|
|
|
199
216
|
// Install Playwright Chromium
|
|
200
|
-
|
|
201
|
-
execSync(
|
|
202
|
-
|
|
217
|
+
console.log('Installing Playwright Chromium browser...');
|
|
218
|
+
execSync(`uvx playwright install chromium --with-deps`, { stdio: 'inherit' });
|
|
219
|
+
console.log('✓ Playwright Chromium installed');
|
|
203
220
|
|
|
204
221
|
// Create setup marker file
|
|
205
222
|
const setupMarkerPath = path.join(process.cwd(), SETUP_MARKER_FILE);
|
|
@@ -227,7 +244,7 @@ export async function setupLocalOperator(skipPrompt: boolean = false): Promise<v
|
|
|
227
244
|
if (linesToAdd.length > 0) {
|
|
228
245
|
const newContent = gitignoreContent.trimEnd() + '\n\n# Minded Local Operator\n' + linesToAdd.join('\n') + '\n';
|
|
229
246
|
fs.writeFileSync(gitignorePath, newContent);
|
|
230
|
-
|
|
247
|
+
console.log('✓ Updated .gitignore');
|
|
231
248
|
}
|
|
232
249
|
}
|
|
233
250
|
|
|
@@ -235,10 +252,10 @@ export async function setupLocalOperator(skipPrompt: boolean = false): Promise<v
|
|
|
235
252
|
console.log('✅ Local operator setup completed successfully!');
|
|
236
253
|
console.log('='.repeat(50) + '\n');
|
|
237
254
|
|
|
238
|
-
|
|
239
|
-
|
|
255
|
+
console.log('You can now use browser automation features locally.');
|
|
256
|
+
console.log('The virtual environment will be activated automatically when needed.');
|
|
240
257
|
} catch (error) {
|
|
241
|
-
|
|
258
|
+
console.error('Setup failed:', error);
|
|
242
259
|
|
|
243
260
|
// Clean up partial installation
|
|
244
261
|
try {
|
|
@@ -255,8 +272,8 @@ export async function setupLocalOperator(skipPrompt: boolean = false): Promise<v
|
|
|
255
272
|
|
|
256
273
|
export function validateLocalOperatorSetup(): void {
|
|
257
274
|
if (!isLocalOperatorSetup()) {
|
|
258
|
-
|
|
259
|
-
|
|
275
|
+
console.error('Local operator is not set up');
|
|
276
|
+
console.log('Please run: npx minded setup-local-operator');
|
|
260
277
|
throw new Error('Local operator not configured');
|
|
261
278
|
}
|
|
262
279
|
}
|
|
@@ -268,7 +285,3 @@ export function getVenvPath(): string {
|
|
|
268
285
|
export function getVenvBinPath(): string {
|
|
269
286
|
return path.join(getVenvPath(), 'bin');
|
|
270
287
|
}
|
|
271
|
-
|
|
272
|
-
export function getVenvUvPath(): string {
|
|
273
|
-
return path.join(getVenvBinPath(), 'uv');
|
|
274
|
-
}
|