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/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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"}
@@ -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;AAwXjE,wBAAsB,aAAa,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,EAAE,QAAQ,SAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCpH"}
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, extractProviderMessage } from './llm.js';
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 providerMessage = extractProviderMessage(err);
112
- if (providerMessage !== null) {
113
- json(res, 422, { error_code: 'BROWSER_ERROR', message: providerMessage }, replayHeaders);
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 providerMessage = extractProviderMessage(err);
296
- if (providerMessage !== null) {
297
- sendError(res, 422, providerMessage);
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');
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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"}
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, () => {
@@ -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":"AAAA,OAAO,EAAE,YAAY,EAAwB,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,GAAG,cAAc,EAAE,CAAC;AAElF,MAAM,aAAa,GAAG,SAAS,CAAC;AAEhC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;AAE3C,SAAS,WAAW,CAAC,GAAoB;IACvC,2EAA2E;IAC3E,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACjD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACnF,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAChD,IAAI,IAAI,KAAK,EAAE;YAAE,OAAO,IAAI,CAAC;IAC/B,CAAC;IACD,OAAO,GAAG,CAAC,MAAM,CAAC,aAAa,IAAI,WAAW,CAAC;AACjD,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAU;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,iBAAiB,CAAC,CAAC;IAC/E,IAAI,IAAI,CAAC,MAAM,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACf,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACrB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAEnC,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,EAAE;IACzC,IAAI,MAAM,CAAC,IAAI,GAAG,mBAAmB,EAAE,CAAC;QACtC,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,OAAO;IACT,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,iBAAiB,CAAC,CAAC;QAC/D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;;YACtC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC,EAAE,QAAQ,CAAC,CAAC;AAEb,SAAS,WAAW,CAAC,QAAgB,EAAE,QAAgB;IACrD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1C,IAAI,WAAW,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC5D,OAAO,eAAe,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IACvC,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACpD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QACtE,MAAM,aAAa,GAAG,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACjD,GAAG,CAAC,SAAS,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;QAEjD,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;YAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACrF,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE,CAAC;gBACvC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,mCAAmC,EAAE,CAAC,CAAC,CAAC;gBACtG,OAAO;YACT,CAAC;QACH,CAAC;QAED,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAE5B,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE,CAAC;YAC9E,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC3B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBAC3D,GAAG,CAAC,GAAG,CACL,IAAI,CAAC,SAAS,CAAC;oBACb,UAAU,EAAE,cAAc;oBAC1B,OAAO,EAAE,WAAW,MAAM,CAAC,YAAY,CAAC,sCAAsC;iBAC/E,CAAC,CACH,CAAC;gBACF,OAAO;YACT,CAAC;QACH,CAAC;QAED,MAAM,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IACpC,CAAC,CAAC,EAAE,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,gBAAgB,EAAE,CAAC;AAEnB,eAAe,EAAE,CAAC;AAClB,mBAAmB,EAAE,CAAC;AACtB,oBAAoB,EAAE,CAAC;AACvB,cAAc,EAAE;KACb,IAAI,CAAC,GAAG,EAAE;IACT,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;QACvB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,+BAA+B,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;KACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IACtB,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,yDAAyD,CAAC,CAAC;IAChF,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;QACvB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,+BAA+B,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,KAAK,UAAU,QAAQ;IACrB,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAChC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;QAChC,MAAM,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,EAAE,MAAM,CAAC,CAAC;IACX,SAAS,CAAC,KAAK,EAAE,CAAC;IAElB,aAAa,CAAC,iBAAiB,CAAC,CAAC;IACjC,eAAe,EAAE,CAAC;IAClB,MAAM,gBAAgB,EAAE,CAAC;IACzB,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;IACzB,KAAK,QAAQ,EAAE,CAAC;AAClB,CAAC,CAAC,CAAC;AACH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;IACxB,KAAK,QAAQ,EAAE,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -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;AAwFpB,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,CAoH/B;AA+XD,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,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAuCxE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,EAAE,CAKlE;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAEzE;AAED,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBnE;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAItD;AAED,wBAAgB,YAAY,IAAI,MAAM,CAErC"}
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"}
@@ -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
- logger.warn({ sessionId: id, port }, 'Evicting stale session — CDP port is actually free');
33
- sessions.delete(id);
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: [...(headless === true ? [] : ['--start-maximized'])],
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 BrowserClaw.launch(launchOpts);
210
+ browser = await launchBrowserWithCdpRetry(launchOpts);
124
211
  }
125
212
  catch (err) {
126
- const message = err instanceof Error ? err.message : '';
127
- const isCdpReadyRace = message.includes('Failed to start Chrome CDP');
128
- if (!isCdpReadyRace) {
129
- logger.error({ cdpPort, err }, 'BrowserClaw.launch failed');
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 = { page: managed.page };
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
- if (!USER_INTERJECTION_ENABLED) {
596
- if (managed.pendingUserResponse === null) {
597
- throw new HttpError(409, 'Session is not waiting for user input');
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() {