browserclaw-agent 0.7.0 → 0.7.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/dist/agent-loop.d.ts +2 -0
- package/dist/agent-loop.d.ts.map +1 -1
- package/dist/agent-loop.js +127 -24
- package/dist/agent-loop.js.map +1 -1
- package/dist/llm.d.ts +5 -0
- package/dist/llm.d.ts.map +1 -1
- package/dist/llm.js +45 -22
- package/dist/llm.js.map +1 -1
- package/dist/prompt-log.d.ts +8 -0
- package/dist/prompt-log.d.ts.map +1 -1
- package/dist/prompt-log.js.map +1 -1
- package/dist/proxy.d.ts +9 -0
- package/dist/proxy.d.ts.map +1 -0
- package/dist/proxy.js +85 -0
- package/dist/proxy.js.map +1 -0
- package/dist/routes.d.ts.map +1 -1
- package/dist/routes.js +15 -8
- package/dist/routes.js.map +1 -1
- package/dist/server.js +2 -0
- package/dist/server.js.map +1 -1
- package/dist/session-manager.d.ts +1 -7
- package/dist/session-manager.d.ts.map +1 -1
- package/dist/session-manager.js +180 -46
- package/dist/session-manager.js.map +1 -1
- package/dist/skills/press-and-hold.d.ts.map +1 -1
- package/dist/skills/press-and-hold.js +20 -14
- package/dist/skills/press-and-hold.js.map +1 -1
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +7 -3
package/dist/proxy.js
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { anonymizeProxy, closeAnonymizedProxy } from 'proxy-chain';
|
|
2
|
+
import { logger } from './logger.js';
|
|
3
|
+
const COUNTRY = 'us';
|
|
4
|
+
const STICKY_LIFETIME = '30m';
|
|
5
|
+
const RESIDENTIAL_DOMAINS = (process.env.RESIDENTIAL_DOMAINS ?? '')
|
|
6
|
+
.split(',')
|
|
7
|
+
.map((d) => d.trim().toLowerCase())
|
|
8
|
+
.filter((d) => d.length > 0);
|
|
9
|
+
function readConfig() {
|
|
10
|
+
const host = process.env.IPROYAL_HOST;
|
|
11
|
+
const port = process.env.IPROYAL_PORT;
|
|
12
|
+
const user = process.env.IPROYAL_USERNAME;
|
|
13
|
+
const pass = process.env.IPROYAL_PASSWORD;
|
|
14
|
+
if (host === undefined ||
|
|
15
|
+
port === undefined ||
|
|
16
|
+
user === undefined ||
|
|
17
|
+
pass === undefined ||
|
|
18
|
+
host.length === 0 ||
|
|
19
|
+
port.length === 0 ||
|
|
20
|
+
user.length === 0 ||
|
|
21
|
+
pass.length === 0) {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
return { host, port, user, pass };
|
|
25
|
+
}
|
|
26
|
+
export function shouldUseResidentialProxy(prompt, url) {
|
|
27
|
+
if (readConfig() === null)
|
|
28
|
+
return false;
|
|
29
|
+
if (RESIDENTIAL_DOMAINS.length === 0)
|
|
30
|
+
return false;
|
|
31
|
+
const haystack = `${prompt.toLowerCase()} ${(url ?? '').toLowerCase()}`;
|
|
32
|
+
return RESIDENTIAL_DOMAINS.some((d) => haystack.includes(d));
|
|
33
|
+
}
|
|
34
|
+
export function shouldProxyUrl(url) {
|
|
35
|
+
if (readConfig() === null)
|
|
36
|
+
return false;
|
|
37
|
+
if (RESIDENTIAL_DOMAINS.length === 0)
|
|
38
|
+
return false;
|
|
39
|
+
let host;
|
|
40
|
+
try {
|
|
41
|
+
host = new URL(url).hostname.toLowerCase();
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
return RESIDENTIAL_DOMAINS.some((d) => host === d || host.endsWith(`.${d}`));
|
|
47
|
+
}
|
|
48
|
+
export function logProxyConfigStatus() {
|
|
49
|
+
const configured = readConfig() !== null;
|
|
50
|
+
const domains = RESIDENTIAL_DOMAINS;
|
|
51
|
+
if (configured && domains.length > 0) {
|
|
52
|
+
logger.info({ domains, country: COUNTRY }, 'Residential proxy configured');
|
|
53
|
+
}
|
|
54
|
+
else if (configured && domains.length === 0) {
|
|
55
|
+
logger.warn('IPROYAL_* are set but RESIDENTIAL_DOMAINS is empty — proxy will never fire');
|
|
56
|
+
}
|
|
57
|
+
else if (!configured && domains.length > 0) {
|
|
58
|
+
logger.warn({ domains }, 'RESIDENTIAL_DOMAINS is set but IPROYAL_* env vars are missing — proxy will never fire');
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
logger.info('Residential proxy disabled (IPROYAL_* unset)');
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
export async function startSessionProxy(sessionToken) {
|
|
65
|
+
const config = readConfig();
|
|
66
|
+
if (config === null) {
|
|
67
|
+
throw new Error('Residential proxy requested but IPROYAL_* env vars are not set');
|
|
68
|
+
}
|
|
69
|
+
const stickyPass = `${config.pass}_country-${COUNTRY}_session-${sessionToken}_lifetime-${STICKY_LIFETIME}`;
|
|
70
|
+
const upstreamUrl = `http://${encodeURIComponent(config.user)}:${encodeURIComponent(stickyPass)}@${config.host}:${config.port}`;
|
|
71
|
+
const localUrl = await anonymizeProxy(upstreamUrl);
|
|
72
|
+
logger.info({ sessionToken, localUrl, country: COUNTRY, upstreamHost: config.host }, 'Started residential proxy');
|
|
73
|
+
return {
|
|
74
|
+
url: localUrl,
|
|
75
|
+
close: async () => {
|
|
76
|
+
try {
|
|
77
|
+
await closeAnonymizedProxy(localUrl, true);
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
logger.error({ sessionToken, err }, 'Failed to close residential proxy');
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=proxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"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"}
|
package/dist/routes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAmYjE,wBAAsB,aAAa,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,EAAE,QAAQ,SAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCpH"}
|
package/dist/routes.js
CHANGED
|
@@ -2,7 +2,7 @@ import { logger } from './logger.js';
|
|
|
2
2
|
import { createSession, getSession, getSessionResult, closeSession, addSSEClient, sessionCount, enqueueUserMessage, } from './session-manager.js';
|
|
3
3
|
import { loadTrajectory } from './trajectory-store.js';
|
|
4
4
|
import { INTERJECTION_MAX_CHARS } from './config.js';
|
|
5
|
-
import { BYOK_PROVIDERS,
|
|
5
|
+
import { BYOK_PROVIDERS, extractProviderError } from './llm.js';
|
|
6
6
|
import { HttpError } from './types.js';
|
|
7
7
|
import { stampSSEPayload } from './sse-stamp.js';
|
|
8
8
|
import { IDEMPOTENCY_TTL_MS, buildRequestFingerprint, completeIdempotency, expirePendingIdempotency, failIdempotency, getIdempotencyCacheKey, lookupIdempotency, normalizeIdempotencyKey, reserveIdempotency, } from './idempotency.js';
|
|
@@ -57,6 +57,13 @@ idempotencyCleanup.unref();
|
|
|
57
57
|
function sendError(res, status, message) {
|
|
58
58
|
json(res, status, { error_code: 'BROWSER_ERROR', message });
|
|
59
59
|
}
|
|
60
|
+
function mapProviderStatus(status) {
|
|
61
|
+
if (status === null)
|
|
62
|
+
return 422;
|
|
63
|
+
if (status >= 400 && status < 600)
|
|
64
|
+
return status;
|
|
65
|
+
return 422;
|
|
66
|
+
}
|
|
60
67
|
const routes = [
|
|
61
68
|
{
|
|
62
69
|
method: 'GET',
|
|
@@ -108,9 +115,9 @@ const routes = [
|
|
|
108
115
|
json(res, err.statusCode, { error_code: 'BROWSER_ERROR', message: err.message }, replayHeaders);
|
|
109
116
|
return;
|
|
110
117
|
}
|
|
111
|
-
const
|
|
112
|
-
if (
|
|
113
|
-
json(res,
|
|
118
|
+
const providerError = extractProviderError(err);
|
|
119
|
+
if (providerError !== null) {
|
|
120
|
+
json(res, mapProviderStatus(providerError.status), { error_code: 'BROWSER_ERROR', message: providerError.message }, replayHeaders);
|
|
114
121
|
return;
|
|
115
122
|
}
|
|
116
123
|
json(res, 500, { error_code: 'BROWSER_ERROR', message: 'Internal server error' }, replayHeaders);
|
|
@@ -254,7 +261,7 @@ const routes = [
|
|
|
254
261
|
sendError(res, 400, `text must be under ${String(INTERJECTION_MAX_CHARS)} characters`);
|
|
255
262
|
return;
|
|
256
263
|
}
|
|
257
|
-
enqueueUserMessage(params.id, text);
|
|
264
|
+
await enqueueUserMessage(params.id, text);
|
|
258
265
|
json(res, 200, { success: true });
|
|
259
266
|
},
|
|
260
267
|
},
|
|
@@ -292,9 +299,9 @@ export async function handleRequest(req, res, clientIp = '127.0.0.1') {
|
|
|
292
299
|
sendError(res, err.statusCode, internal);
|
|
293
300
|
return;
|
|
294
301
|
}
|
|
295
|
-
const
|
|
296
|
-
if (
|
|
297
|
-
sendError(res,
|
|
302
|
+
const providerError = extractProviderError(err);
|
|
303
|
+
if (providerError !== null) {
|
|
304
|
+
sendError(res, mapProviderStatus(providerError.status), providerError.message);
|
|
298
305
|
return;
|
|
299
306
|
}
|
|
300
307
|
sendError(res, 500, 'Internal server error');
|
package/dist/routes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EACL,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,GAEnB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,cAAc,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,QAAQ;AAE3C,KAAK,UAAU,SAAS,CAAI,GAAoB;IAC9C,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;QAC9B,SAAS,IAAK,KAAgB,CAAC,MAAM,CAAC;QACtC,IAAI,SAAS,GAAG,cAAc,EAAE,CAAC;YAC/B,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAC;QACrD,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;IAC/B,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAM,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,8BAA8B,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC;AAED,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAEhD,SAAS,WAAW,CAAC,GAAW;IAC9B,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,4BAA4B,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,SAAS,IAAI,CAAC,GAAmB,EAAE,MAAc,EAAE,IAAa,EAAE,OAAgC;IAChG,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IAC1E,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,CAAC;AAOD,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAmD,CAAC;AAEpF,MAAM,kBAAkB,GAAG,WAAW,CAAC,GAAG,EAAE;IAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,wBAAwB,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IAChD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,gBAAgB,EAAE,CAAC;QAC5C,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,GAAG,kBAAkB,EAAE,CAAC;YAC7E,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;AACH,CAAC,EAAE,kBAAkB,CAAC,CAAC;AACvB,kBAAkB,CAAC,KAAK,EAAE,CAAC;AAE3B,SAAS,SAAS,CAAC,GAAmB,EAAE,MAAc,EAAE,OAAe;IACrE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,CAAC;AAC9D,CAAC;AAkBD,MAAM,MAAM,GAAY;IACtB;QACE,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,YAAY;QACrB,UAAU,EAAE,EAAE;QACd,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;YACnB,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE;gBACb,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,qBAAqB;gBAC9B,QAAQ,EAAE,YAAY,EAAE;aACzB,CAAC,CAAC;YACH,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;KACF;IAED;QACE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,uBAAuB;QAChC,UAAU,EAAE,EAAE;QACd,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE;YACxC,MAAM,IAAI,GAAG,MAAM,SAAS,CAAuB,GAAG,CAAC,CAAC;YAExD,MAAM,cAAc,GAAG,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAC/E,MAAM,kBAAkB,GACtB,cAAc,KAAK,SAAS;gBAC1B,CAAC,CAAC;oBACE,QAAQ,EAAE,sBAAsB,CAAC,QAAQ,EAAE,cAAc,CAAC;oBAC1D,WAAW,EAAE,uBAAuB,CAAC,IAAI,CAAC;iBAC3C;gBACH,CAAC,CAAC,SAAS,CAAC;YAEhB,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;gBACrC,MAAM,MAAM,GAAG,iBAAiB,CAC9B,gBAAgB,EAChB,kBAAkB,CAAC,QAAQ,EAC3B,kBAAkB,CAAC,WAAW,EAC9B,IAAI,CAAC,GAAG,EAAE,CACX,CAAC;gBACF,IAAI,MAAM,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;oBAC3C,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE;wBACb,UAAU,EAAE,wBAAwB;wBACpC,OAAO,EACL,+GAA+G;qBAClH,CAAC,CAAC;oBACH,OAAO;gBACT,CAAC;gBACD,IAAI,MAAM,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;oBACtC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,sBAAsB,EAAE,MAAM,EAAE,CAAC,CAAC;oBAC5F,OAAO;gBACT,CAAC;gBACD,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;oBACpC,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;wBACpC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,sBAAsB,EAAE,MAAM,EAAE,CAAC,CAAC;oBAC5E,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,MAAM,aAAa,GAAG,EAAE,sBAAsB,EAAE,MAAM,EAAE,CAAC;wBACzD,IAAI,GAAG,YAAY,SAAS,EAAE,CAAC;4BAC7B,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC;4BAChG,OAAO;wBACT,CAAC;wBACD,MAAM,eAAe,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;wBACpD,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;4BAC7B,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,aAAa,CAAC,CAAC;4BACzF,OAAO;wBACT,CAAC;wBACD,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,uBAAuB,EAAE,EAAE,aAAa,CAAC,CAAC;oBACnG,CAAC;oBACD,OAAO;gBACT,CAAC;YACH,CAAC;YAED,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvE,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,mDAAmD,CAAC,CAAC;gBACzE,OAAO;YACT,CAAC;YAED,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACtE,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,4BAA4B,CAAC,CAAC;gBAClD,OAAO;YACT,CAAC;YAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1F,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;YACjD,MAAM,QAAQ,GAAG,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;YAEjG,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,KAAK,SAAS,CAAC;YAC9D,MAAM,cAAc,GAAG,aAAa,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC;YACtE,MAAM,kBAAkB,GAAG,aAAa,IAAI,IAAI,CAAC,mBAAmB,KAAK,IAAI,CAAC;YAE9E,yDAAyD;YACzD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBAClC,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,oCAAoC,CAAC,CAAC;gBAC1D,OAAO;YACT,CAAC;YACD,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;YACrD,IAAI,CAAC,CAAC,QAAQ,IAAI,cAAc,CAAC,EAAE,CAAC;gBAClC,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,qCAAqC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACnG,OAAO;YACT,CAAC;YACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBACrD,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,mBAAmB,CAAC,CAAC;gBACzC,OAAO;YACT,CAAC;YACD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBACzD,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,qBAAqB,CAAC,CAAC;gBAC3C,OAAO;YACT,CAAC;YACD,MAAM,SAAS,GAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YAExF,MAAM,WAAW,GACf,kBAAkB,KAAK,SAAS;gBAC9B,CAAC,CAAC,kBAAkB,CAChB,gBAAgB,EAChB,kBAAkB,CAAC,QAAQ,EAC3B,kBAAkB,CAAC,WAAW,EAC9B,IAAI,CAAC,GAAG,EAAE,CACX;gBACH,CAAC,CAAC,SAAS,CAAC;YAEhB,IAAI,QAA+B,CAAC;YACpC,IAAI,CAAC;gBACH,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,aAAa,CACrC,IAAI,CAAC,MAAM,EACX,GAAG,EACH,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,SAAS,EACT,kBAAkB,CACnB,CAAC;gBACF,QAAQ,GAAG;oBACT,UAAU,EAAE,OAAO,CAAC,EAAE;oBACtB,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,UAAU,EAAE,OAAO,CAAC,UAAU;iBAC/B,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,kBAAkB,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;oBAClE,eAAe,CACb,gBAAgB,EAChB,kBAAkB,CAAC,QAAQ,EAC3B,WAAW,EACX,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CACpD,CAAC;gBACJ,CAAC;gBACD,MAAM,GAAG,CAAC;YACZ,CAAC;YAED,IAAI,kBAAkB,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAClE,mBAAmB,CACjB,gBAAgB,EAChB,kBAAkB,CAAC,QAAQ,EAC3B,WAAW,EACX,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,EAC/B,IAAI,CAAC,GAAG,EAAE,CACX,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC3B,CAAC;KACF;IAED;QACE,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,wCAAwC;QACjD,UAAU,EAAE,CAAC,IAAI,CAAC;QAClB,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;YAC3B,MAAM,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC;YAC5B,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,sCAAsC;YAE7D,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;gBACjB,cAAc,EAAE,mBAAmB;gBACnC,eAAe,EAAE,UAAU;gBAC3B,UAAU,EAAE,YAAY;gBACxB,mBAAmB,EAAE,IAAI;aAC1B,CAAC,CAAC;YAEH,GAAG,CAAC,KAAK,CACP,2BAA2B,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CACzG,CAAC;YACF,YAAY,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YAE7B,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;gBACjC,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YAC/B,CAAC,EAAE,MAAM,CAAC,CAAC;YAEX,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACnB,aAAa,CAAC,SAAS,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;YACH,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;KACF;IAED;QACE,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,gCAAgC;QACzC,UAAU,EAAE,CAAC,IAAI,CAAC;QAClB,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;YAC3B,MAAM,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;YACtC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAErE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE;gBACb,GAAG,OAAO;gBACV,MAAM,EACJ,MAAM,KAAK,IAAI;oBACb,CAAC,CAAC;wBACE,OAAO,EAAE,MAAM,CAAC,OAAO;wBACvB,MAAM,EAAE,MAAM,CAAC,MAAM;wBACrB,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;wBACpC,WAAW,EAAE,MAAM,CAAC,WAAW;wBAC/B,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,SAAS,EAAE,MAAM,CAAC,SAAS;qBAC5B;oBACH,CAAC,CAAC,IAAI;gBACV,KAAK;gBACL,aAAa;aACd,CAAC,CAAC;YACH,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;KACF;IAED;QACE,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,4CAA4C;QACrD,UAAU,EAAE,CAAC,IAAI,CAAC;QAClB,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;YACjC,MAAM,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC;YAC/C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAAC;gBAC5C,OAAO;YACT,CAAC;YACD,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QACzB,CAAC;KACF;IAED;QACE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,yCAAyC;QAClD,UAAU,EAAE,CAAC,IAAI,CAAC;QAClB,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;YACtC,MAAM,IAAI,GAAG,MAAM,SAAS,CAAmB,GAAG,CAAC,CAAC;YACpD,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnE,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,iDAAiD,CAAC,CAAC;gBACvE,OAAO;YACT,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,MAAM,GAAG,sBAAsB,EAAE,CAAC;gBACzC,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,sBAAsB,MAAM,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC;gBACvF,OAAO;YACT,CAAC;YACD,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YACpC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,CAAC;KACF;IAED;QACE,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,gCAAgC;QACzC,UAAU,EAAE,CAAC,IAAI,CAAC;QAClB,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;YACjC,MAAM,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC;YAC5B,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC;YAC9B,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,CAAC;KACF;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAoB,EAAE,GAAmB,EAAE,QAAQ,GAAG,WAAW;IACnG,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC;IACnC,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;IAE3C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;YAAE,SAAS;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK;YAAE,SAAS;QAErB,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,QAAQ,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC;YAC9E,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,uBAAuB,CAAC,CAAC;YACzE,IAAI,GAAG,YAAY,SAAS,EAAE,CAAC;gBAC7B,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gBACzC,OAAO;YACT,CAAC;YACD,MAAM,eAAe,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;YACpD,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;gBAC7B,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;gBACrC,OAAO;YACT,CAAC;YACD,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,uBAAuB,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO;IACT,CAAC;IAED,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;AACnC,CAAC"}
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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"}
|
package/dist/server.js
CHANGED
|
@@ -6,6 +6,7 @@ import { validateConfig } from './config.js';
|
|
|
6
6
|
import { initSkillStore } from './skill-store.js';
|
|
7
7
|
import { initLessonStore } from './lesson-store.js';
|
|
8
8
|
import { initTrajectoryStore } from './trajectory-store.js';
|
|
9
|
+
import { logProxyConfigStatus } from './proxy.js';
|
|
9
10
|
import { logger } from './logger.js';
|
|
10
11
|
const { port, rateLimitMax, rateLimitWindowMs, internalToken } = validateConfig();
|
|
11
12
|
const BEARER_PREFIX = 'Bearer ';
|
|
@@ -87,6 +88,7 @@ const server = createServer((req, res) => {
|
|
|
87
88
|
startCleanupLoop();
|
|
88
89
|
initLessonStore();
|
|
89
90
|
initTrajectoryStore();
|
|
91
|
+
logProxyConfigStatus();
|
|
90
92
|
initSkillStore()
|
|
91
93
|
.then(() => {
|
|
92
94
|
server.listen(port, () => {
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,19 +21,13 @@ export declare function waitForUserResponse(sessionId: string): Promise<string>;
|
|
|
21
21
|
* ask_user, additionally resolves the waiting promise so existing callers keep
|
|
22
22
|
* working unchanged.
|
|
23
23
|
*/
|
|
24
|
-
export declare function enqueueUserMessage(sessionId: string, text: string): void
|
|
24
|
+
export declare function enqueueUserMessage(sessionId: string, text: string): Promise<void>;
|
|
25
25
|
/**
|
|
26
26
|
* Drain and return all pending user messages. Called by the agent loop at the
|
|
27
27
|
* top of each step.
|
|
28
28
|
*/
|
|
29
29
|
export declare function drainUserMessages(sessionId: string): UserMessage[];
|
|
30
30
|
export declare function getInterjectionNonce(sessionId: string): string;
|
|
31
|
-
/**
|
|
32
|
-
* Legacy export — preserved so existing route handlers that imported it keep
|
|
33
|
-
* compiling while we migrate them. Prefer `enqueueUserMessage`.
|
|
34
|
-
* @deprecated use enqueueUserMessage
|
|
35
|
-
*/
|
|
36
|
-
export declare function resolveUserResponse(sessionId: string, text: string): void;
|
|
37
31
|
export declare function closeSession(sessionId: string): Promise<void>;
|
|
38
32
|
export declare function closeAllSessions(): Promise<void>;
|
|
39
33
|
export declare function sessionCount(): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../src/session-manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGhD,OAAO,KAAK,EACV,OAAO,EAEP,eAAe,EACf,WAAW,EAEX,gBAAgB,EAChB,SAAS,EACT,WAAW,EACZ,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../src/session-manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGhD,OAAO,KAAK,EACV,OAAO,EAEP,eAAe,EACf,WAAW,EAEX,gBAAgB,EAChB,SAAS,EACT,WAAW,EACZ,MAAM,YAAY,CAAC;AAkLpB,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAQ7E;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAezE;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAiBvC;AAED,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,QAAQ,EAAE,OAAO,GAAG,SAAS,EAC7B,EAAE,EAAE,MAAM,EACV,cAAc,EAAE,OAAO,GAAG,SAAS,EACnC,SAAS,EAAE,SAAS,EACpB,kBAAkB,CAAC,EAAE,OAAO,GAC3B,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAuH/B;AAgaD,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CASrD;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG;IACnD,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/B,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IAC1B,aAAa,EAAE,gBAAgB,EAAE,CAAC;CACnC,CAGA;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA2BtE;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgEvF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,EAAE,CAelE;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBnE;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAItD;AAED,wBAAgB,YAAY,IAAI,MAAM,CAErC"}
|
package/dist/session-manager.js
CHANGED
|
@@ -13,6 +13,7 @@ import { saveLesson, extractDomainLessons, getLesson } from './lesson-store.js';
|
|
|
13
13
|
import { saveTrajectory, TRAJECTORY_STATUS } from './trajectory-store.js';
|
|
14
14
|
import { stampSSEPayload } from './sse-stamp.js';
|
|
15
15
|
import { logger } from './logger.js';
|
|
16
|
+
import { shouldProxyUrl, shouldUseResidentialProxy, startSessionProxy } from './proxy.js';
|
|
16
17
|
const MAX_SESSIONS = requireEnvInt('MAX_SESSIONS');
|
|
17
18
|
const SESSION_IDLE_TIMEOUT_MS = requireEnvInt('SESSION_IDLE_TIMEOUT_MS');
|
|
18
19
|
const BASE_CDP_PORT = 9222;
|
|
@@ -23,15 +24,93 @@ const NON_ACTION_TYPES = new Set(['done', 'wait', 'fail', 'ask_user']);
|
|
|
23
24
|
const sessions = new Map();
|
|
24
25
|
let cleanupInterval = null;
|
|
25
26
|
const CDP_PORT_SEARCH_LIMIT = 100;
|
|
27
|
+
async function launchBrowserWithCdpRetry(launchOpts) {
|
|
28
|
+
try {
|
|
29
|
+
return await BrowserClaw.launch(launchOpts);
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
const message = err instanceof Error ? err.message : '';
|
|
33
|
+
if (!message.includes('Failed to start Chrome CDP'))
|
|
34
|
+
throw err;
|
|
35
|
+
logger.warn({ cdpPort: launchOpts?.cdpPort }, 'BrowserClaw.launch hit CDP-ready race — retrying after 2s');
|
|
36
|
+
await new Promise((r) => setTimeout(r, 2000));
|
|
37
|
+
return await BrowserClaw.launch(launchOpts);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
async function swapToProxiedBrowser(managed, holder) {
|
|
41
|
+
if (managed.proxy !== null)
|
|
42
|
+
return;
|
|
43
|
+
const sessionToken = crypto.randomUUID().replace(/-/g, '').slice(0, 8);
|
|
44
|
+
const proxy = await startSessionProxy(sessionToken);
|
|
45
|
+
let newCdpPort;
|
|
46
|
+
try {
|
|
47
|
+
newCdpPort = await nextAvailableCdpPort();
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
await proxy.close();
|
|
51
|
+
throw err;
|
|
52
|
+
}
|
|
53
|
+
const launchOpts = {
|
|
54
|
+
headless: managed.headless,
|
|
55
|
+
noSandbox: process.platform === 'linux',
|
|
56
|
+
cdpPort: newCdpPort,
|
|
57
|
+
stealth: true,
|
|
58
|
+
isolated: true,
|
|
59
|
+
ssrfPolicy: { dangerouslyAllowPrivateNetwork: process.env.SSRF_ALLOW_PRIVATE === 'true' },
|
|
60
|
+
chromeArgs: [...(managed.headless === true ? [] : ['--start-maximized']), `--proxy-server=${proxy.url}`],
|
|
61
|
+
};
|
|
62
|
+
let newBrowser;
|
|
63
|
+
try {
|
|
64
|
+
newBrowser = await launchBrowserWithCdpRetry(launchOpts);
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
await proxy.close();
|
|
68
|
+
throw err;
|
|
69
|
+
}
|
|
70
|
+
let newPage;
|
|
71
|
+
try {
|
|
72
|
+
newPage = await newBrowser.currentPage();
|
|
73
|
+
}
|
|
74
|
+
catch (err) {
|
|
75
|
+
await newBrowser.stop().catch((stopErr) => {
|
|
76
|
+
logger.warn({ sessionId: managed.id, err: stopErr }, 'Failed to stop orphaned proxied browser');
|
|
77
|
+
});
|
|
78
|
+
await proxy.close();
|
|
79
|
+
throw err;
|
|
80
|
+
}
|
|
81
|
+
if (managed.abortController.signal.aborted || !sessions.has(managed.id)) {
|
|
82
|
+
logger.info({ sessionId: managed.id }, 'Session closed mid-swap — disposing new browser and proxy');
|
|
83
|
+
await newBrowser.stop().catch((stopErr) => {
|
|
84
|
+
logger.warn({ sessionId: managed.id, err: stopErr }, 'Failed to stop orphaned proxied browser');
|
|
85
|
+
});
|
|
86
|
+
await proxy.close();
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const oldBrowser = managed.browser;
|
|
90
|
+
managed.browser = newBrowser;
|
|
91
|
+
managed.page = newPage;
|
|
92
|
+
managed.cdpPort = newCdpPort;
|
|
93
|
+
managed.proxy = proxy;
|
|
94
|
+
managed.proxySwapCount += 1;
|
|
95
|
+
holder.page = newPage;
|
|
96
|
+
holder.browser = newBrowser;
|
|
97
|
+
logger.info({ sessionId: managed.id, newCdpPort }, 'Swapped to proxied browser');
|
|
98
|
+
oldBrowser.stop().catch((err) => {
|
|
99
|
+
logger.warn({ sessionId: managed.id, err }, 'Failed to stop old browser after proxy swap');
|
|
100
|
+
});
|
|
101
|
+
}
|
|
26
102
|
async function nextAvailableCdpPort() {
|
|
27
103
|
for (let port = BASE_CDP_PORT; port < BASE_CDP_PORT + CDP_PORT_SEARCH_LIMIT; port++) {
|
|
28
104
|
if (await isPortFree(port)) {
|
|
29
105
|
// Purge any stale session entries claiming this port — their Chrome died silently.
|
|
106
|
+
const stale = [];
|
|
30
107
|
for (const [id, s] of sessions) {
|
|
31
|
-
if (s.cdpPort === port)
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
108
|
+
if (s.cdpPort === port)
|
|
109
|
+
stale.push(id);
|
|
110
|
+
}
|
|
111
|
+
for (const id of stale) {
|
|
112
|
+
logger.warn({ sessionId: id, port }, 'Evicting stale session — CDP port is actually free');
|
|
113
|
+
await closeSession(id);
|
|
35
114
|
}
|
|
36
115
|
return port;
|
|
37
116
|
}
|
|
@@ -108,6 +187,11 @@ export async function createSession(prompt, url, headless, ip, skipModeration, l
|
|
|
108
187
|
}
|
|
109
188
|
}
|
|
110
189
|
const cdpPort = await nextAvailableCdpPort();
|
|
190
|
+
let proxy = null;
|
|
191
|
+
if (shouldUseResidentialProxy(prompt, url)) {
|
|
192
|
+
const sessionToken = crypto.randomUUID().replace(/-/g, '').slice(0, 8);
|
|
193
|
+
proxy = await startSessionProxy(sessionToken);
|
|
194
|
+
}
|
|
111
195
|
const launchOpts = {
|
|
112
196
|
headless,
|
|
113
197
|
noSandbox: process.platform === 'linux',
|
|
@@ -116,28 +200,20 @@ export async function createSession(prompt, url, headless, ip, skipModeration, l
|
|
|
116
200
|
ssrfPolicy: {
|
|
117
201
|
dangerouslyAllowPrivateNetwork: process.env.SSRF_ALLOW_PRIVATE === 'true',
|
|
118
202
|
},
|
|
119
|
-
chromeArgs: [
|
|
203
|
+
chromeArgs: [
|
|
204
|
+
...(headless === true ? [] : ['--start-maximized']),
|
|
205
|
+
...(proxy !== null ? [`--proxy-server=${proxy.url}`] : []),
|
|
206
|
+
],
|
|
120
207
|
};
|
|
121
208
|
let browser;
|
|
122
209
|
try {
|
|
123
|
-
browser = await
|
|
210
|
+
browser = await launchBrowserWithCdpRetry(launchOpts);
|
|
124
211
|
}
|
|
125
212
|
catch (err) {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
throw err;
|
|
131
|
-
}
|
|
132
|
-
logger.warn({ cdpPort }, 'BrowserClaw.launch hit CDP-ready race — retrying after 2s');
|
|
133
|
-
await new Promise((r) => setTimeout(r, 2000));
|
|
134
|
-
try {
|
|
135
|
-
browser = await BrowserClaw.launch(launchOpts);
|
|
136
|
-
}
|
|
137
|
-
catch (retryErr) {
|
|
138
|
-
logger.error({ cdpPort, retryErr }, 'BrowserClaw.launch failed after retry');
|
|
139
|
-
throw retryErr;
|
|
140
|
-
}
|
|
213
|
+
logger.error({ cdpPort, err }, 'BrowserClaw.launch failed');
|
|
214
|
+
if (proxy !== null)
|
|
215
|
+
await proxy.close();
|
|
216
|
+
throw err;
|
|
141
217
|
}
|
|
142
218
|
let page;
|
|
143
219
|
try {
|
|
@@ -150,6 +226,8 @@ export async function createSession(prompt, url, headless, ip, skipModeration, l
|
|
|
150
226
|
await browser.stop().catch((stopErr) => {
|
|
151
227
|
logger.error({ url, err: stopErr }, 'Failed to stop orphaned Chrome');
|
|
152
228
|
});
|
|
229
|
+
if (proxy !== null)
|
|
230
|
+
await proxy.close();
|
|
153
231
|
throw err;
|
|
154
232
|
}
|
|
155
233
|
const now = new Date();
|
|
@@ -178,9 +256,13 @@ export async function createSession(prompt, url, headless, ip, skipModeration, l
|
|
|
178
256
|
interjectionNonce: crypto.randomUUID().replace(/-/g, ''),
|
|
179
257
|
interjectionsReceived: 0,
|
|
180
258
|
lastInterjectionAt: null,
|
|
259
|
+
proxy,
|
|
260
|
+
skipModeration: skipModeration === true,
|
|
261
|
+
headless,
|
|
262
|
+
proxySwapCount: proxy === null ? 0 : 1,
|
|
181
263
|
};
|
|
182
264
|
sessions.set(id, managed);
|
|
183
|
-
logger.info({ sessionId: id, cdpPort }, 'Created session');
|
|
265
|
+
logger.info({ sessionId: id, cdpPort, proxied: proxy !== null }, 'Created session');
|
|
184
266
|
void logPrompt({
|
|
185
267
|
timestamp: now.toISOString(),
|
|
186
268
|
session_id: id,
|
|
@@ -240,7 +322,22 @@ async function startAgentLoop(sessionId) {
|
|
|
240
322
|
const runAllLlmWork = async () => {
|
|
241
323
|
resetLLMCallCount();
|
|
242
324
|
const waitForUser = USER_INTERJECTION_ENABLED ? () => waitForUserResponse(sessionId) : undefined;
|
|
243
|
-
const pageHolder = {
|
|
325
|
+
const pageHolder = {
|
|
326
|
+
page: managed.page,
|
|
327
|
+
browser: managed.browser,
|
|
328
|
+
ensureProxyForUrl: async (url) => {
|
|
329
|
+
if (!shouldProxyUrl(url))
|
|
330
|
+
return;
|
|
331
|
+
if (managed.proxy !== null)
|
|
332
|
+
return;
|
|
333
|
+
try {
|
|
334
|
+
await swapToProxiedBrowser(managed, pageHolder);
|
|
335
|
+
}
|
|
336
|
+
catch (err) {
|
|
337
|
+
logger.warn({ sessionId, url, err }, 'Proxy swap failed — continuing direct');
|
|
338
|
+
}
|
|
339
|
+
},
|
|
340
|
+
};
|
|
244
341
|
const userChatHooks = USER_INTERJECTION_ENABLED
|
|
245
342
|
? { drainMessages: () => drainUserMessages(sessionId), nonce: managed.interjectionNonce }
|
|
246
343
|
: undefined;
|
|
@@ -346,6 +443,11 @@ async function startAgentLoop(sessionId) {
|
|
|
346
443
|
domain: managed.domain ?? undefined,
|
|
347
444
|
skills_loaded: skillsLoadedCount,
|
|
348
445
|
skill_outcome: skillOutcome,
|
|
446
|
+
walls_hit: result.walls_hit,
|
|
447
|
+
sites_visited: result.sites_visited,
|
|
448
|
+
records_extracted: result.records_extracted,
|
|
449
|
+
proxy_swap_count: managed.proxySwapCount,
|
|
450
|
+
crashed: false,
|
|
349
451
|
});
|
|
350
452
|
};
|
|
351
453
|
if (managed.llmConfig) {
|
|
@@ -362,6 +464,18 @@ async function startAgentLoop(sessionId) {
|
|
|
362
464
|
const stack = err instanceof Error && err.stack !== undefined ? sanitizeErrorText(err.stack) : undefined;
|
|
363
465
|
logger.error({ sessionId, crashed: true, message, stack }, 'Agent loop crashed');
|
|
364
466
|
emitter('failed', { step: 0, error: message });
|
|
467
|
+
void logPrompt({
|
|
468
|
+
timestamp: new Date().toISOString(),
|
|
469
|
+
session_id: sessionId,
|
|
470
|
+
ip: managed.ip,
|
|
471
|
+
prompt: managed.prompt,
|
|
472
|
+
status: 'failed',
|
|
473
|
+
duration_ms: Date.now() - managed.createdAt.getTime(),
|
|
474
|
+
error: message,
|
|
475
|
+
domain: managed.domain ?? undefined,
|
|
476
|
+
proxy_swap_count: managed.proxySwapCount,
|
|
477
|
+
crashed: true,
|
|
478
|
+
});
|
|
365
479
|
}
|
|
366
480
|
setTimeout(() => {
|
|
367
481
|
closeSession(sessionId).catch((err) => {
|
|
@@ -590,14 +704,33 @@ export function waitForUserResponse(sessionId) {
|
|
|
590
704
|
* ask_user, additionally resolves the waiting promise so existing callers keep
|
|
591
705
|
* working unchanged.
|
|
592
706
|
*/
|
|
593
|
-
export function enqueueUserMessage(sessionId, text) {
|
|
707
|
+
export async function enqueueUserMessage(sessionId, text) {
|
|
594
708
|
const managed = getManagedSession(sessionId);
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
709
|
+
const preview = text.length > 200 ? `${text.slice(0, 200)}…` : text;
|
|
710
|
+
if (!USER_INTERJECTION_ENABLED && managed.pendingUserResponse === null) {
|
|
711
|
+
logger.warn({ sessionId, chars: text.length, preview }, 'User message rejected — interjections disabled and agent not awaiting reply');
|
|
712
|
+
throw new HttpError(409, 'Session is not waiting for user input');
|
|
713
|
+
}
|
|
714
|
+
if (USER_INTERJECTION_ENABLED && managed.pendingUserResponse === null) {
|
|
715
|
+
if (managed.interjectionsReceived >= MAX_INTERJECTIONS_PER_RUN) {
|
|
716
|
+
logger.warn({ sessionId, cap: MAX_INTERJECTIONS_PER_RUN, preview }, 'User message rejected — interjection cap reached');
|
|
717
|
+
throw new HttpError(429, `Too many messages (cap: ${String(MAX_INTERJECTIONS_PER_RUN)} per run)`);
|
|
718
|
+
}
|
|
719
|
+
if (managed.lastInterjectionAt !== null) {
|
|
720
|
+
const elapsed = Date.now() - managed.lastInterjectionAt.getTime();
|
|
721
|
+
if (elapsed < INTERJECTION_MIN_INTERVAL_MS) {
|
|
722
|
+
const waitSec = Math.ceil((INTERJECTION_MIN_INTERVAL_MS - elapsed) / 1000);
|
|
723
|
+
logger.warn({ sessionId, waitSec, preview }, 'User message rejected — rate limit');
|
|
724
|
+
throw new HttpError(429, `Rate limit — wait ${String(waitSec)}s before sending again`);
|
|
725
|
+
}
|
|
726
|
+
}
|
|
727
|
+
}
|
|
728
|
+
if (!managed.skipModeration && managed.llmConfig !== undefined) {
|
|
729
|
+
const aiCheck = await runWithLlmConfig(managed.llmConfig, () => moderatePrompt(text));
|
|
730
|
+
if (!aiCheck.allowed) {
|
|
731
|
+
logger.warn({ sessionId, preview, reason: aiCheck.reason }, 'User message blocked by content policy');
|
|
732
|
+
throw new HttpError(422, aiCheck.reason ?? 'Message blocked by content policy.');
|
|
598
733
|
}
|
|
599
|
-
managed.pendingUserResponse.resolve(text);
|
|
600
|
-
return;
|
|
601
734
|
}
|
|
602
735
|
// Direct reply to an ask_user: unblock the agent loop via the existing
|
|
603
736
|
// `user_response` history path. Skip the interjection queue — otherwise the
|
|
@@ -605,23 +738,22 @@ export function enqueueUserMessage(sessionId, text) {
|
|
|
605
738
|
// again as a "USER INTERJECTION" injected into the next step's prompt).
|
|
606
739
|
if (managed.pendingUserResponse !== null) {
|
|
607
740
|
managed.lastActivityAt = new Date();
|
|
741
|
+
logger.info({ sessionId, chars: text.length, preview }, 'User message → ask_user reply');
|
|
608
742
|
managed.pendingUserResponse.resolve(text);
|
|
609
743
|
return;
|
|
610
744
|
}
|
|
611
|
-
if (managed.interjectionsReceived >= MAX_INTERJECTIONS_PER_RUN) {
|
|
612
|
-
throw new HttpError(429, `Too many messages (cap: ${String(MAX_INTERJECTIONS_PER_RUN)} per run)`);
|
|
613
|
-
}
|
|
614
|
-
if (managed.lastInterjectionAt !== null) {
|
|
615
|
-
const elapsed = Date.now() - managed.lastInterjectionAt.getTime();
|
|
616
|
-
if (elapsed < INTERJECTION_MIN_INTERVAL_MS) {
|
|
617
|
-
throw new HttpError(429, `Rate limit — wait ${String(Math.ceil((INTERJECTION_MIN_INTERVAL_MS - elapsed) / 1000))}s before sending again`);
|
|
618
|
-
}
|
|
619
|
-
}
|
|
620
745
|
const now = new Date();
|
|
621
746
|
managed.userMessageQueue.push({ text, receivedAt: now });
|
|
622
747
|
managed.interjectionsReceived += 1;
|
|
623
748
|
managed.lastInterjectionAt = now;
|
|
624
749
|
managed.lastActivityAt = now;
|
|
750
|
+
logger.info({
|
|
751
|
+
sessionId,
|
|
752
|
+
chars: text.length,
|
|
753
|
+
preview,
|
|
754
|
+
queueDepth: managed.userMessageQueue.length,
|
|
755
|
+
received: managed.interjectionsReceived,
|
|
756
|
+
}, 'User message queued for next step');
|
|
625
757
|
}
|
|
626
758
|
/**
|
|
627
759
|
* Drain and return all pending user messages. Called by the agent loop at the
|
|
@@ -631,19 +763,18 @@ export function drainUserMessages(sessionId) {
|
|
|
631
763
|
const managed = getManagedSession(sessionId);
|
|
632
764
|
const drained = managed.userMessageQueue;
|
|
633
765
|
managed.userMessageQueue = [];
|
|
766
|
+
if (drained.length > 0) {
|
|
767
|
+
logger.info({
|
|
768
|
+
sessionId,
|
|
769
|
+
count: drained.length,
|
|
770
|
+
previews: drained.map((m) => (m.text.length > 80 ? `${m.text.slice(0, 80)}…` : m.text)),
|
|
771
|
+
}, 'Draining user messages into next agent step');
|
|
772
|
+
}
|
|
634
773
|
return drained;
|
|
635
774
|
}
|
|
636
775
|
export function getInterjectionNonce(sessionId) {
|
|
637
776
|
return getManagedSession(sessionId).interjectionNonce;
|
|
638
777
|
}
|
|
639
|
-
/**
|
|
640
|
-
* Legacy export — preserved so existing route handlers that imported it keep
|
|
641
|
-
* compiling while we migrate them. Prefer `enqueueUserMessage`.
|
|
642
|
-
* @deprecated use enqueueUserMessage
|
|
643
|
-
*/
|
|
644
|
-
export function resolveUserResponse(sessionId, text) {
|
|
645
|
-
enqueueUserMessage(sessionId, text);
|
|
646
|
-
}
|
|
647
778
|
export async function closeSession(sessionId) {
|
|
648
779
|
const session = sessions.get(sessionId);
|
|
649
780
|
if (!session)
|
|
@@ -662,6 +793,9 @@ export async function closeSession(sessionId) {
|
|
|
662
793
|
catch (err) {
|
|
663
794
|
logger.error({ sessionId, err }, 'Failed to stop browser');
|
|
664
795
|
}
|
|
796
|
+
if (session.proxy !== null) {
|
|
797
|
+
await session.proxy.close();
|
|
798
|
+
}
|
|
665
799
|
logger.info({ sessionId }, 'Closed session');
|
|
666
800
|
}
|
|
667
801
|
export async function closeAllSessions() {
|