@minded-ai/mindedjs 2.0.18-beta.11 → 2.0.18-beta.2
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.d.ts.map +1 -1
- package/dist/browserTask/executeBrowserTask.js +1 -14
- package/dist/browserTask/executeBrowserTask.js.map +1 -1
- package/dist/browserTask/localBrowserTask.d.ts +1 -14
- package/dist/browserTask/localBrowserTask.d.ts.map +1 -1
- package/dist/browserTask/localBrowserTask.js +23 -14
- package/dist/browserTask/localBrowserTask.js.map +1 -1
- package/package.json +1 -1
- package/src/browserTask/executeBrowserTask.ts +2 -19
- package/src/browserTask/localBrowserTask.ts +24 -29
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executeBrowserTask.d.ts","sourceRoot":"","sources":["../../src/browserTask/executeBrowserTask.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,4BAA4B,EAC5B,yBAAyB,EAIzB,6BAA6B,EAC9B,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAIpE,eAAO,MAAM,oBAAoB,2CAI9B;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,eAAe,CAAC;CAClC,KAAG,OAAO,CAAC,4BAA4B,CAiCvC,CAAC;AAEF,eAAO,MAAM,qBAAqB,qCAI/B;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,KAAG,OAAO,CAAC,6BAA6B,CA2BxC,CAAC;AAEF,eAAO,MAAM,iBAAiB,YAAmB,wBAAwB,KAAG,OAAO,CAAC,yBAAyB,
|
|
1
|
+
{"version":3,"file":"executeBrowserTask.d.ts","sourceRoot":"","sources":["../../src/browserTask/executeBrowserTask.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,4BAA4B,EAC5B,yBAAyB,EAIzB,6BAA6B,EAC9B,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAIpE,eAAO,MAAM,oBAAoB,2CAI9B;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,eAAe,CAAC;CAClC,KAAG,OAAO,CAAC,4BAA4B,CAiCvC,CAAC;AAEF,eAAO,MAAM,qBAAqB,qCAI/B;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,KAAG,OAAO,CAAC,6BAA6B,CA2BxC,CAAC;AAEF,eAAO,MAAM,iBAAiB,YAAmB,wBAAwB,KAAG,OAAO,CAAC,yBAAyB,CA0H5G,CAAC"}
|
|
@@ -16,7 +16,7 @@ const localOperatorSetup_1 = require("../cli/localOperatorSetup");
|
|
|
16
16
|
const createBrowserSession = async ({ sessionId, proxy, browserTaskMode, }) => {
|
|
17
17
|
logger_1.logger.debug({ msg: 'Creating browser session via socket', proxy });
|
|
18
18
|
if (browserTaskMode === types_1.BrowserTaskMode.LOCAL) {
|
|
19
|
-
const { cdpUrl } = await (0, localBrowserTask_1.getOrStartLocalCDP)(
|
|
19
|
+
const { cdpUrl } = await (0, localBrowserTask_1.getOrStartLocalCDP)();
|
|
20
20
|
return {
|
|
21
21
|
sessionId,
|
|
22
22
|
cdpUrl,
|
|
@@ -102,23 +102,10 @@ const invokeBrowserTask = async (options) => {
|
|
|
102
102
|
stderrBuffer += text;
|
|
103
103
|
process.stderr.write(text);
|
|
104
104
|
});
|
|
105
|
-
const interval = setInterval(() => {
|
|
106
|
-
// Check if chromium process stopped running
|
|
107
|
-
if (!(0, localBrowserTask_1.isLocalBrowserRunning)()) {
|
|
108
|
-
logger_1.logger.error({ message: 'Local browser process stopped running, killing browser task' });
|
|
109
|
-
child.kill();
|
|
110
|
-
clearInterval(interval);
|
|
111
|
-
}
|
|
112
|
-
}, 1000);
|
|
113
|
-
// Automatically clear interval after 20 minutes to avoid memory leaks
|
|
114
|
-
setTimeout(() => {
|
|
115
|
-
clearInterval(interval);
|
|
116
|
-
}, 1200000); // 20 minutes
|
|
117
105
|
const exitCode = await new Promise((resolve, reject) => {
|
|
118
106
|
child.on('error', (err) => reject(err));
|
|
119
107
|
child.on('close', (code) => resolve(code !== null && code !== void 0 ? code : 1));
|
|
120
108
|
});
|
|
121
|
-
clearInterval(interval);
|
|
122
109
|
if (exitCode !== 0) {
|
|
123
110
|
logger_1.logger.error({ message: 'Operator failed', exitCode, stderr: stderrBuffer });
|
|
124
111
|
throw new Error(`Local browser task failed with exit code ${exitCode}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executeBrowserTask.js","sourceRoot":"","sources":["../../src/browserTask/executeBrowserTask.ts"],"names":[],"mappings":";;;;;;AAAA,2DAA2C;AAC3C,4CAAyC;AACzC,mEAAgE;AAChE,gDAAwB;AACxB,6EAQ2C;AAC3C,
|
|
1
|
+
{"version":3,"file":"executeBrowserTask.js","sourceRoot":"","sources":["../../src/browserTask/executeBrowserTask.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +1,9 @@
|
|
|
1
|
-
export type StartChromiumOptions = {
|
|
2
|
-
/** Headless by default. Set to false to see a window. */
|
|
3
|
-
headless?: boolean;
|
|
4
|
-
/** Extra CLI flags to pass to Chromium. */
|
|
5
|
-
extraArgs?: string[];
|
|
6
|
-
/** Provide your own user-data-dir. If omitted, a temp dir is created and later removable via `kill()`. */
|
|
7
|
-
userDataDir?: string;
|
|
8
|
-
/** Extra env vars. */
|
|
9
|
-
env?: NodeJS.ProcessEnv;
|
|
10
|
-
/** How long to wait for the DevTools port to come up (ms). Default: 10000 */
|
|
11
|
-
timeoutMs?: number;
|
|
12
|
-
};
|
|
13
1
|
/**
|
|
14
2
|
* Launch Chromium with --remote-debugging-port=0 and return the CDP ws URL.
|
|
15
3
|
* Works with Chrome/Chromium/Chrome for Testing.
|
|
16
4
|
*/
|
|
17
|
-
export declare function getOrStartLocalCDP(
|
|
5
|
+
export declare function getOrStartLocalCDP(): Promise<{
|
|
18
6
|
cdpUrl: string;
|
|
19
7
|
}>;
|
|
20
|
-
export declare function isLocalBrowserRunning(): boolean;
|
|
21
8
|
export declare function kill(): Promise<void>;
|
|
22
9
|
//# sourceMappingURL=localBrowserTask.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localBrowserTask.d.ts","sourceRoot":"","sources":["../../src/browserTask/localBrowserTask.ts"],"names":[],"mappings":"AAeA
|
|
1
|
+
{"version":3,"file":"localBrowserTask.d.ts","sourceRoot":"","sources":["../../src/browserTask/localBrowserTask.ts"],"names":[],"mappings":"AAeA;;;GAGG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAgItE;AAwBD,wBAAsB,IAAI,kBAMzB"}
|
|
@@ -24,7 +24,6 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.getOrStartLocalCDP = getOrStartLocalCDP;
|
|
27
|
-
exports.isLocalBrowserRunning = isLocalBrowserRunning;
|
|
28
27
|
exports.kill = kill;
|
|
29
28
|
// getOrStartLocalCDP.ts
|
|
30
29
|
const child_process_1 = require("child_process");
|
|
@@ -39,18 +38,21 @@ const port = 9222;
|
|
|
39
38
|
* Launch Chromium with --remote-debugging-port=0 and return the CDP ws URL.
|
|
40
39
|
* Works with Chrome/Chromium/Chrome for Testing.
|
|
41
40
|
*/
|
|
42
|
-
async function getOrStartLocalCDP(
|
|
43
|
-
var _a;
|
|
41
|
+
async function getOrStartLocalCDP() {
|
|
44
42
|
if (localBrowserTask) {
|
|
45
43
|
return {
|
|
46
44
|
cdpUrl: localBrowserTask.cdpUrl,
|
|
47
45
|
};
|
|
48
46
|
}
|
|
49
|
-
const { env } = opts;
|
|
50
47
|
const executablePath = playwright_1.chromium.executablePath();
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
48
|
+
let userDataDir = "";
|
|
49
|
+
if (process.env.USER_DATA_DIR) {
|
|
50
|
+
userDataDir = process.env.USER_DATA_DIR;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
userDataDir = path.join(__dirname, "userData");
|
|
54
|
+
await fs.mkdir(userDataDir, { recursive: true });
|
|
55
|
+
}
|
|
54
56
|
const args = [
|
|
55
57
|
"--new-window",
|
|
56
58
|
`--user-data-dir=${userDataDir}`,
|
|
@@ -121,15 +123,26 @@ async function getOrStartLocalCDP(opts) {
|
|
|
121
123
|
"about:blank",
|
|
122
124
|
];
|
|
123
125
|
const proc = (0, child_process_1.spawn)(executablePath, args, {
|
|
124
|
-
stdio: ["ignore", "
|
|
125
|
-
env: { ...process.env
|
|
126
|
+
stdio: ["ignore", "pipe", "pipe"], // pipe both stdout and stderr
|
|
127
|
+
env: { ...process.env },
|
|
126
128
|
});
|
|
129
|
+
// Pipe stdout to the parent process stdout
|
|
130
|
+
if (proc.stdout) {
|
|
131
|
+
proc.stdout.on("data", (data) => {
|
|
132
|
+
// logger.debug(`[Chromium stdout]: ${data}`);
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
// Pipe stderr to the parent process stdout
|
|
136
|
+
if (proc.stderr) {
|
|
137
|
+
proc.stderr.on("data", (data) => {
|
|
138
|
+
logger_1.logger.debug(`[Chromium stderr]: ${data}`);
|
|
139
|
+
});
|
|
140
|
+
}
|
|
127
141
|
proc.on("error", (error) => {
|
|
128
142
|
logger_1.logger.error({ message: 'Chromium error', error });
|
|
129
143
|
});
|
|
130
144
|
proc.on("exit", (code, signal) => {
|
|
131
145
|
logger_1.logger.error({ message: 'Chromium exited', code, signal });
|
|
132
|
-
localBrowserTask = null;
|
|
133
146
|
});
|
|
134
147
|
await waitForCdpEndpoint(port, 30);
|
|
135
148
|
const cdpUrl = `http://127.0.0.1:${port}`;
|
|
@@ -161,15 +174,11 @@ async function waitForCdpEndpoint(port, maxAttempts) {
|
|
|
161
174
|
}
|
|
162
175
|
throw new Error(`CDP endpoint not available on port ${port} after ${maxAttempts} attempts`);
|
|
163
176
|
}
|
|
164
|
-
function isLocalBrowserRunning() {
|
|
165
|
-
return localBrowserTask !== null;
|
|
166
|
-
}
|
|
167
177
|
async function kill() {
|
|
168
178
|
if (localBrowserTask) {
|
|
169
179
|
localBrowserTask.proc.kill("SIGTERM");
|
|
170
180
|
await (0, wait_1.wait)(300);
|
|
171
181
|
localBrowserTask.proc.kill("SIGKILL");
|
|
172
|
-
localBrowserTask = null; // Reset the variable after killing the process
|
|
173
182
|
}
|
|
174
183
|
}
|
|
175
184
|
//# sourceMappingURL=localBrowserTask.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localBrowserTask.js","sourceRoot":"","sources":["../../src/browserTask/localBrowserTask.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"localBrowserTask.js","sourceRoot":"","sources":["../../src/browserTask/localBrowserTask.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
DestroyBrowserSessionRequest,
|
|
12
12
|
DestroyBrowserSessionResponse,
|
|
13
13
|
} from '../platform/mindedConnectionTypes';
|
|
14
|
-
import { kill, getOrStartLocalCDP
|
|
14
|
+
import { kill, getOrStartLocalCDP } from './localBrowserTask';
|
|
15
15
|
import { BrowserTaskMode, InvokeBrowserTaskOptions } from './types';
|
|
16
16
|
import { isLocalOperatorSetup, validateLocalOperatorSetup } from '../cli/localOperatorSetup';
|
|
17
17
|
|
|
@@ -28,7 +28,7 @@ export const createBrowserSession = async ({
|
|
|
28
28
|
logger.debug({ msg: 'Creating browser session via socket', proxy });
|
|
29
29
|
|
|
30
30
|
if (browserTaskMode === BrowserTaskMode.LOCAL) {
|
|
31
|
-
const { cdpUrl } = await getOrStartLocalCDP(
|
|
31
|
+
const { cdpUrl } = await getOrStartLocalCDP();
|
|
32
32
|
return {
|
|
33
33
|
sessionId,
|
|
34
34
|
cdpUrl,
|
|
@@ -146,27 +146,11 @@ export const invokeBrowserTask = async (options: InvokeBrowserTaskOptions): Prom
|
|
|
146
146
|
process.stderr.write(text);
|
|
147
147
|
});
|
|
148
148
|
|
|
149
|
-
const interval = setInterval(() => {
|
|
150
|
-
// Check if chromium process stopped running
|
|
151
|
-
if (!isLocalBrowserRunning()) {
|
|
152
|
-
logger.error({ message: 'Local browser process stopped running, killing browser task' });
|
|
153
|
-
child.kill();
|
|
154
|
-
clearInterval(interval);
|
|
155
|
-
}
|
|
156
|
-
}, 1000);
|
|
157
|
-
|
|
158
|
-
// Automatically clear interval after 20 minutes to avoid memory leaks
|
|
159
|
-
setTimeout(() => {
|
|
160
|
-
clearInterval(interval);
|
|
161
|
-
}, 1200000); // 20 minutes
|
|
162
|
-
|
|
163
149
|
const exitCode: number = await new Promise((resolve, reject) => {
|
|
164
150
|
child.on('error', (err) => reject(err));
|
|
165
151
|
child.on('close', (code) => resolve(code ?? 1));
|
|
166
152
|
});
|
|
167
153
|
|
|
168
|
-
clearInterval(interval);
|
|
169
|
-
|
|
170
154
|
if (exitCode !== 0) {
|
|
171
155
|
logger.error({ message: 'Operator failed', exitCode, stderr: stderrBuffer });
|
|
172
156
|
throw new Error(`Local browser task failed with exit code ${exitCode}`);
|
|
@@ -174,7 +158,6 @@ export const invokeBrowserTask = async (options: InvokeBrowserTaskOptions): Prom
|
|
|
174
158
|
|
|
175
159
|
logger.info({ message: 'Operator finished' });
|
|
176
160
|
|
|
177
|
-
|
|
178
161
|
let result = stdoutBuffer.split('___RESULT___')[1]?.trim() || stdoutBuffer;
|
|
179
162
|
if (outputSchema?.length) {
|
|
180
163
|
try {
|
|
@@ -13,26 +13,11 @@ let localBrowserTask: {
|
|
|
13
13
|
|
|
14
14
|
const port = 9222;
|
|
15
15
|
|
|
16
|
-
export type StartChromiumOptions = {
|
|
17
|
-
/** Headless by default. Set to false to see a window. */
|
|
18
|
-
headless?: boolean;
|
|
19
|
-
/** Extra CLI flags to pass to Chromium. */
|
|
20
|
-
extraArgs?: string[];
|
|
21
|
-
/** Provide your own user-data-dir. If omitted, a temp dir is created and later removable via `kill()`. */
|
|
22
|
-
userDataDir?: string;
|
|
23
|
-
/** Extra env vars. */
|
|
24
|
-
env?: NodeJS.ProcessEnv;
|
|
25
|
-
/** How long to wait for the DevTools port to come up (ms). Default: 10000 */
|
|
26
|
-
timeoutMs?: number;
|
|
27
|
-
};
|
|
28
|
-
|
|
29
16
|
/**
|
|
30
17
|
* Launch Chromium with --remote-debugging-port=0 and return the CDP ws URL.
|
|
31
18
|
* Works with Chrome/Chromium/Chrome for Testing.
|
|
32
19
|
*/
|
|
33
|
-
export async function getOrStartLocalCDP(
|
|
34
|
-
opts: StartChromiumOptions
|
|
35
|
-
): Promise<{ cdpUrl: string }> {
|
|
20
|
+
export async function getOrStartLocalCDP(): Promise<{ cdpUrl: string }> {
|
|
36
21
|
|
|
37
22
|
if (localBrowserTask) {
|
|
38
23
|
return {
|
|
@@ -40,14 +25,16 @@ export async function getOrStartLocalCDP(
|
|
|
40
25
|
};
|
|
41
26
|
}
|
|
42
27
|
|
|
43
|
-
const { env } = opts;
|
|
44
28
|
|
|
45
29
|
const executablePath = chromium.executablePath();
|
|
30
|
+
let userDataDir = "";
|
|
46
31
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
32
|
+
if (process.env.USER_DATA_DIR) {
|
|
33
|
+
userDataDir = process.env.USER_DATA_DIR;
|
|
34
|
+
} else {
|
|
35
|
+
userDataDir = path.join(__dirname, "userData");
|
|
36
|
+
await fs.mkdir(userDataDir, { recursive: true });
|
|
37
|
+
}
|
|
51
38
|
|
|
52
39
|
const args = [
|
|
53
40
|
"--new-window",
|
|
@@ -120,17 +107,30 @@ export async function getOrStartLocalCDP(
|
|
|
120
107
|
];
|
|
121
108
|
|
|
122
109
|
const proc = spawn(executablePath, args, {
|
|
123
|
-
stdio: ["ignore", "
|
|
124
|
-
env: { ...process.env
|
|
110
|
+
stdio: ["ignore", "pipe", "pipe"], // pipe both stdout and stderr
|
|
111
|
+
env: { ...process.env },
|
|
125
112
|
});
|
|
126
113
|
|
|
114
|
+
// Pipe stdout to the parent process stdout
|
|
115
|
+
if (proc.stdout) {
|
|
116
|
+
proc.stdout.on("data", (data) => {
|
|
117
|
+
// logger.debug(`[Chromium stdout]: ${data}`);
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// Pipe stderr to the parent process stdout
|
|
122
|
+
if (proc.stderr) {
|
|
123
|
+
proc.stderr.on("data", (data) => {
|
|
124
|
+
logger.debug(`[Chromium stderr]: ${data}`);
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
|
|
127
128
|
proc.on("error", (error) => {
|
|
128
129
|
logger.error({ message: 'Chromium error', error });
|
|
129
130
|
});
|
|
130
131
|
|
|
131
132
|
proc.on("exit", (code, signal) => {
|
|
132
133
|
logger.error({ message: 'Chromium exited', code, signal });
|
|
133
|
-
localBrowserTask = null;
|
|
134
134
|
});
|
|
135
135
|
|
|
136
136
|
await waitForCdpEndpoint(port, 30);
|
|
@@ -169,15 +169,10 @@ async function waitForCdpEndpoint(port: number, maxAttempts: number): Promise<vo
|
|
|
169
169
|
throw new Error(`CDP endpoint not available on port ${port} after ${maxAttempts} attempts`);
|
|
170
170
|
}
|
|
171
171
|
|
|
172
|
-
export function isLocalBrowserRunning(): boolean {
|
|
173
|
-
return localBrowserTask !== null;
|
|
174
|
-
}
|
|
175
|
-
|
|
176
172
|
export async function kill() {
|
|
177
173
|
if (localBrowserTask) {
|
|
178
174
|
localBrowserTask.proc.kill("SIGTERM");
|
|
179
175
|
await wait(300);
|
|
180
176
|
localBrowserTask.proc.kill("SIGKILL");
|
|
181
|
-
localBrowserTask = null; // Reset the variable after killing the process
|
|
182
177
|
}
|
|
183
178
|
}
|