camofox-browser 2.1.0 → 2.4.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/CHANGELOG.md +126 -0
- package/README.md +304 -33
- package/dist/src/cli/commands/content.d.ts.map +1 -1
- package/dist/src/cli/commands/content.js +37 -0
- package/dist/src/cli/commands/content.js.map +1 -1
- package/dist/src/cli/commands/core.d.ts.map +1 -1
- package/dist/src/cli/commands/core.js +21 -4
- package/dist/src/cli/commands/core.js.map +1 -1
- package/dist/src/cli/commands/interaction.d.ts.map +1 -1
- package/dist/src/cli/commands/interaction.js +5 -14
- package/dist/src/cli/commands/interaction.js.map +1 -1
- package/dist/src/cli/commands/navigation.d.ts.map +1 -1
- package/dist/src/cli/commands/navigation.js +12 -6
- package/dist/src/cli/commands/navigation.js.map +1 -1
- package/dist/src/cli/commands/server.d.ts.map +1 -1
- package/dist/src/cli/commands/server.js +9 -3
- package/dist/src/cli/commands/server.js.map +1 -1
- package/dist/src/cli/commands/session.d.ts.map +1 -1
- package/dist/src/cli/commands/session.js +23 -5
- package/dist/src/cli/commands/session.js.map +1 -1
- package/dist/src/cli/server/manager.d.ts +1 -0
- package/dist/src/cli/server/manager.d.ts.map +1 -1
- package/dist/src/cli/server/manager.js +7 -12
- package/dist/src/cli/server/manager.js.map +1 -1
- package/dist/src/middleware/lifecycle-activity.d.ts +9 -0
- package/dist/src/middleware/lifecycle-activity.d.ts.map +1 -0
- package/dist/src/middleware/lifecycle-activity.js +21 -0
- package/dist/src/middleware/lifecycle-activity.js.map +1 -0
- package/dist/src/openapi/spec.d.ts +4 -0
- package/dist/src/openapi/spec.d.ts.map +1 -0
- package/dist/src/openapi/spec.js +730 -0
- package/dist/src/openapi/spec.js.map +1 -0
- package/dist/src/routes/core.d.ts.map +1 -1
- package/dist/src/routes/core.js +428 -53
- package/dist/src/routes/core.js.map +1 -1
- package/dist/src/routes/docs.d.ts +3 -0
- package/dist/src/routes/docs.d.ts.map +1 -0
- package/dist/src/routes/docs.js +23 -0
- package/dist/src/routes/docs.js.map +1 -0
- package/dist/src/routes/openclaw.d.ts.map +1 -1
- package/dist/src/routes/openclaw.js +244 -90
- package/dist/src/routes/openclaw.js.map +1 -1
- package/dist/src/server.js +55 -4
- package/dist/src/server.js.map +1 -1
- package/dist/src/services/context-pool.d.ts +19 -3
- package/dist/src/services/context-pool.d.ts.map +1 -1
- package/dist/src/services/context-pool.js +248 -65
- package/dist/src/services/context-pool.js.map +1 -1
- package/dist/src/services/download.d.ts +2 -0
- package/dist/src/services/download.d.ts.map +1 -1
- package/dist/src/services/download.js +110 -80
- package/dist/src/services/download.js.map +1 -1
- package/dist/src/services/lifecycle-controller.d.ts +40 -0
- package/dist/src/services/lifecycle-controller.d.ts.map +1 -0
- package/dist/src/services/lifecycle-controller.js +106 -0
- package/dist/src/services/lifecycle-controller.js.map +1 -0
- package/dist/src/services/resource-extractor.d.ts +1 -0
- package/dist/src/services/resource-extractor.d.ts.map +1 -1
- package/dist/src/services/resource-extractor.js +7 -0
- package/dist/src/services/resource-extractor.js.map +1 -1
- package/dist/src/services/session.d.ts +84 -2
- package/dist/src/services/session.d.ts.map +1 -1
- package/dist/src/services/session.js +349 -47
- package/dist/src/services/session.js.map +1 -1
- package/dist/src/services/structured-extractor.d.ts +39 -0
- package/dist/src/services/structured-extractor.d.ts.map +1 -0
- package/dist/src/services/structured-extractor.js +487 -0
- package/dist/src/services/structured-extractor.js.map +1 -0
- package/dist/src/services/tab.d.ts +30 -3
- package/dist/src/services/tab.d.ts.map +1 -1
- package/dist/src/services/tab.js +877 -124
- package/dist/src/services/tab.js.map +1 -1
- package/dist/src/services/tracing.d.ts +7 -0
- package/dist/src/services/tracing.d.ts.map +1 -1
- package/dist/src/services/tracing.js +162 -19
- package/dist/src/services/tracing.js.map +1 -1
- package/dist/src/services/vnc.d.ts.map +1 -1
- package/dist/src/services/vnc.js +5 -3
- package/dist/src/services/vnc.js.map +1 -1
- package/dist/src/services/youtube.js +1 -1
- package/dist/src/services/youtube.js.map +1 -1
- package/dist/src/types.d.ts +71 -1
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/config.d.ts +79 -3
- package/dist/src/utils/config.d.ts.map +1 -1
- package/dist/src/utils/config.js +145 -3
- package/dist/src/utils/config.js.map +1 -1
- package/dist/src/utils/presets.d.ts.map +1 -1
- package/dist/src/utils/presets.js +3 -1
- package/dist/src/utils/presets.js.map +1 -1
- package/dist/src/utils/proxy-profiles.d.ts +18 -0
- package/dist/src/utils/proxy-profiles.d.ts.map +1 -0
- package/dist/src/utils/proxy-profiles.js +197 -0
- package/dist/src/utils/proxy-profiles.js.map +1 -0
- package/dist/src/utils/sidecar-version.d.ts +12 -0
- package/dist/src/utils/sidecar-version.d.ts.map +1 -0
- package/dist/src/utils/sidecar-version.js +63 -0
- package/dist/src/utils/sidecar-version.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/openclaw.plugin.json +39 -0
- package/package.json +16 -4
- package/plugin.ts +949 -0
|
@@ -1,16 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.MAX_TABS_PER_SESSION = exports.MAX_SESSIONS = exports.SESSION_TIMEOUT_MS = void 0;
|
|
4
7
|
exports.__getUserConcurrencyStateForTests = __getUserConcurrencyStateForTests;
|
|
8
|
+
exports.__getSessionsMapForTests = __getSessionsMapForTests;
|
|
5
9
|
exports.withUserLimit = withUserLimit;
|
|
10
|
+
exports.cleanupSessionsForUserId = cleanupSessionsForUserId;
|
|
6
11
|
exports.normalizeUserId = normalizeUserId;
|
|
7
12
|
exports.getSessionMapKey = getSessionMapKey;
|
|
13
|
+
exports.getEstablishedSessionProfile = getEstablishedSessionProfile;
|
|
14
|
+
exports.getCanonicalProfile = getCanonicalProfile;
|
|
15
|
+
exports.hasCanonicalProfile = hasCanonicalProfile;
|
|
16
|
+
exports.acquireFirstCreateMutex = acquireFirstCreateMutex;
|
|
17
|
+
exports.commitCanonicalProfile = commitCanonicalProfile;
|
|
18
|
+
exports.rollbackCanonicalMutex = rollbackCanonicalMutex;
|
|
19
|
+
exports.createCanonicalProfile = createCanonicalProfile;
|
|
20
|
+
exports.clearCanonicalProfile = clearCanonicalProfile;
|
|
21
|
+
exports.establishSessionProfile = establishSessionProfile;
|
|
22
|
+
exports.clearSessionProfile = clearSessionProfile;
|
|
8
23
|
exports.getSessionsForUser = getSessionsForUser;
|
|
9
24
|
exports.getAllSessions = getAllSessions;
|
|
10
25
|
exports.countTotalTabsForSessions = countTotalTabsForSessions;
|
|
26
|
+
exports.getLifecycleSessionSnapshot = getLifecycleSessionSnapshot;
|
|
27
|
+
exports.getSessionsSnapshot = getSessionsSnapshot;
|
|
11
28
|
exports.getTabGroup = getTabGroup;
|
|
12
29
|
exports.unindexSessionTabs = unindexSessionTabs;
|
|
13
30
|
exports.findTabById = findTabById;
|
|
31
|
+
exports.createStagedSession = createStagedSession;
|
|
32
|
+
exports.commitStagedFirstUse = commitStagedFirstUse;
|
|
33
|
+
exports.rollbackStagedFirstUse = rollbackStagedFirstUse;
|
|
14
34
|
exports.getSession = getSession;
|
|
15
35
|
exports.indexTab = indexTab;
|
|
16
36
|
exports.unindexTab = unindexTab;
|
|
@@ -19,9 +39,12 @@ exports.closeSessionsForUser = closeSessionsForUser;
|
|
|
19
39
|
exports.closeAllSessions = closeAllSessions;
|
|
20
40
|
exports.startCleanupInterval = startCleanupInterval;
|
|
21
41
|
exports.stopCleanupInterval = stopCleanupInterval;
|
|
42
|
+
exports.runLifecycleIdleCleanup = runLifecycleIdleCleanup;
|
|
43
|
+
const node_crypto_1 = __importDefault(require("node:crypto"));
|
|
22
44
|
const logging_1 = require("../middleware/logging");
|
|
23
45
|
const tab_1 = require("./tab");
|
|
24
46
|
const config_1 = require("../utils/config");
|
|
47
|
+
const presets_1 = require("../utils/presets");
|
|
25
48
|
const context_pool_1 = require("./context-pool");
|
|
26
49
|
const download_1 = require("./download");
|
|
27
50
|
const health_1 = require("./health");
|
|
@@ -37,6 +60,14 @@ const launchingSessions = new Map();
|
|
|
37
60
|
// tabId -> sessions map key
|
|
38
61
|
// Persistent profiles are keyed only by userId, while tab endpoints only get tabId.
|
|
39
62
|
const tabSessionIndex = new Map();
|
|
63
|
+
// Canonical per-user profile: stores resolved overrides from the first core POST /tabs.
|
|
64
|
+
// Survives passive context eviction; cleared only on explicit session close/cleanup.
|
|
65
|
+
const canonicalProfiles = new Map();
|
|
66
|
+
// Session profiles keyed by userId::sessionKey to track separate proxy/geo profiles per session
|
|
67
|
+
const sessionProfiles = new Map();
|
|
68
|
+
// Per-user mutex covering the entire first-create lifecycle (establishment -> tab commit).
|
|
69
|
+
// Prevents sibling requests from observing provisional canonical state.
|
|
70
|
+
const firstCreateMutexes = new Map();
|
|
40
71
|
const userConcurrency = new Map();
|
|
41
72
|
function __getUserConcurrencyStateForTests(userId) {
|
|
42
73
|
const key = String(userId).toLowerCase().trim();
|
|
@@ -45,6 +76,9 @@ function __getUserConcurrencyStateForTests(userId) {
|
|
|
45
76
|
return null;
|
|
46
77
|
return { active: state.active, queueLength: state.queue.length };
|
|
47
78
|
}
|
|
79
|
+
function __getSessionsMapForTests() {
|
|
80
|
+
return sessions;
|
|
81
|
+
}
|
|
48
82
|
async function withUserLimit(userId, maxConcurrent, operation, operationTimeoutMs) {
|
|
49
83
|
const key = String(userId).toLowerCase().trim();
|
|
50
84
|
let state = userConcurrency.get(key);
|
|
@@ -96,52 +130,192 @@ async function withUserLimit(userId, maxConcurrent, operation, operationTimeoutM
|
|
|
96
130
|
}
|
|
97
131
|
}
|
|
98
132
|
}
|
|
99
|
-
function cleanupSessionsForUserId(userId, reason) {
|
|
100
|
-
const
|
|
133
|
+
function cleanupSessionsForUserId(userId, reason, clearCanonical = true) {
|
|
134
|
+
const key = normalizeUserId(userId);
|
|
101
135
|
// If a session is currently being created, drop our reference so callers don't keep a stale placeholder.
|
|
102
|
-
launchingSessions.delete(
|
|
103
|
-
void (0, vnc_1.stopVnc)(
|
|
136
|
+
launchingSessions.delete(key);
|
|
137
|
+
void (0, vnc_1.stopVnc)(key).catch(() => { });
|
|
104
138
|
try {
|
|
105
|
-
(0, download_1.cleanupUserDownloads)(
|
|
139
|
+
(0, download_1.cleanupUserDownloads)(key);
|
|
106
140
|
}
|
|
107
141
|
catch {
|
|
108
142
|
// ignore cleanup errors
|
|
109
143
|
}
|
|
110
|
-
(0, tracing_1.cleanupTracing)(
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
144
|
+
(0, tracing_1.cleanupTracing)(key);
|
|
145
|
+
const session = sessions.get(key);
|
|
146
|
+
if (session) {
|
|
147
|
+
unindexSessionTabs(session);
|
|
148
|
+
sessions.delete(key);
|
|
149
|
+
(0, logging_1.log)('info', 'session cleaned up', { userId: key, reason });
|
|
150
|
+
}
|
|
151
|
+
if (clearCanonical) {
|
|
152
|
+
canonicalProfiles.delete(key);
|
|
153
|
+
const mutex = firstCreateMutexes.get(key);
|
|
154
|
+
if (mutex) {
|
|
155
|
+
mutex.resolve(false);
|
|
156
|
+
firstCreateMutexes.delete(key);
|
|
157
|
+
}
|
|
158
|
+
// Also clear all session profiles for this user
|
|
159
|
+
const profileKeysToDelete = [];
|
|
160
|
+
for (const [profileKey, profile] of sessionProfiles.entries()) {
|
|
161
|
+
if (profile.userId === key) {
|
|
162
|
+
profileKeysToDelete.push(profileKey);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
for (const profileKey of profileKeysToDelete) {
|
|
166
|
+
sessionProfiles.delete(profileKey);
|
|
116
167
|
}
|
|
117
168
|
}
|
|
118
|
-
userConcurrency.delete(
|
|
169
|
+
userConcurrency.delete(key);
|
|
119
170
|
}
|
|
120
171
|
context_pool_1.contextPool.onEvict((userId) => {
|
|
121
|
-
cleanupSessionsForUserId(userId, 'context_evicted');
|
|
172
|
+
cleanupSessionsForUserId(userId, 'context_evicted', false);
|
|
122
173
|
// Note: the pool will close the context; session cleanup only removes dead Page references.
|
|
123
174
|
});
|
|
124
|
-
exports.SESSION_TIMEOUT_MS =
|
|
125
|
-
exports.MAX_SESSIONS =
|
|
126
|
-
exports.MAX_TABS_PER_SESSION =
|
|
175
|
+
exports.SESSION_TIMEOUT_MS = CONFIG.sessionTimeoutMs;
|
|
176
|
+
exports.MAX_SESSIONS = CONFIG.maxSessions;
|
|
177
|
+
exports.MAX_TABS_PER_SESSION = CONFIG.maxTabsPerSession;
|
|
127
178
|
function normalizeUserId(userId) {
|
|
128
179
|
return String(userId);
|
|
129
180
|
}
|
|
130
|
-
function
|
|
131
|
-
|
|
132
|
-
|
|
181
|
+
function sessionOverlayKey(userId, sessionKey) {
|
|
182
|
+
return `${normalizeUserId(userId)}::${sessionKey}`;
|
|
183
|
+
}
|
|
184
|
+
// Backward compatible version - takes contextOverrides instead of session profile
|
|
185
|
+
function getSessionMapKey(userId, contextOverridesOrSessionKey, profileSignature) {
|
|
186
|
+
// New signature: (userId, sessionKey, profileSignature)
|
|
187
|
+
if (typeof contextOverridesOrSessionKey === 'string') {
|
|
188
|
+
const sessionKey = contextOverridesOrSessionKey;
|
|
189
|
+
if (profileSignature) {
|
|
190
|
+
return `${normalizeUserId(userId)}::${sessionKey}::${profileSignature}`;
|
|
191
|
+
}
|
|
192
|
+
return `${normalizeUserId(userId)}::${sessionKey}`;
|
|
193
|
+
}
|
|
194
|
+
// Old signature: (userId, contextOverrides) - backward compatibility
|
|
195
|
+
// This maintains the user-scoped behavior for existing routes
|
|
196
|
+
void contextOverridesOrSessionKey;
|
|
133
197
|
return normalizeUserId(userId);
|
|
134
198
|
}
|
|
199
|
+
function getEstablishedSessionProfile(userId, sessionKey) {
|
|
200
|
+
return sessionProfiles.get(sessionOverlayKey(userId, sessionKey));
|
|
201
|
+
}
|
|
202
|
+
function getCanonicalProfile(userId) {
|
|
203
|
+
return canonicalProfiles.get(normalizeUserId(userId));
|
|
204
|
+
}
|
|
205
|
+
function hasCanonicalProfile(userId) {
|
|
206
|
+
return canonicalProfiles.has(normalizeUserId(userId));
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Try to acquire the first-create mutex for a user.
|
|
210
|
+
* Returns { acquired: true } if we are the first creator (mutex acquired).
|
|
211
|
+
* Returns { acquired: false, wait: Promise<boolean> } if another request is first-creating.
|
|
212
|
+
* The promise resolves to true (committed) or false (rolled back).
|
|
213
|
+
* If canonical already exists (committed), returns { acquired: false, wait: resolved-true }.
|
|
214
|
+
*/
|
|
215
|
+
function acquireFirstCreateMutex(userId) {
|
|
216
|
+
const key = normalizeUserId(userId);
|
|
217
|
+
if (canonicalProfiles.has(key)) {
|
|
218
|
+
return { acquired: false, wait: Promise.resolve(true) };
|
|
219
|
+
}
|
|
220
|
+
const existing = firstCreateMutexes.get(key);
|
|
221
|
+
if (existing) {
|
|
222
|
+
return { acquired: false, wait: existing.promise };
|
|
223
|
+
}
|
|
224
|
+
let resolve;
|
|
225
|
+
const promise = new Promise((r) => {
|
|
226
|
+
resolve = r;
|
|
227
|
+
});
|
|
228
|
+
firstCreateMutexes.set(key, { promise, resolve });
|
|
229
|
+
return { acquired: true };
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Commit: store the canonical profile and release the mutex (signaling success to waiters).
|
|
233
|
+
*/
|
|
234
|
+
function commitCanonicalProfile(userId, resolved) {
|
|
235
|
+
const key = normalizeUserId(userId);
|
|
236
|
+
const profile = {
|
|
237
|
+
resolvedOverrides: resolved,
|
|
238
|
+
hash: (0, presets_1.contextHash)(resolved),
|
|
239
|
+
establishedAt: Date.now(),
|
|
240
|
+
};
|
|
241
|
+
canonicalProfiles.set(key, profile);
|
|
242
|
+
const mutex = firstCreateMutexes.get(key);
|
|
243
|
+
if (mutex) {
|
|
244
|
+
mutex.resolve(true);
|
|
245
|
+
firstCreateMutexes.delete(key);
|
|
246
|
+
}
|
|
247
|
+
(0, logging_1.log)('info', 'canonical profile committed', { userId: key, hash: profile.hash });
|
|
248
|
+
return profile;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Rollback: release the mutex (signaling failure to waiters). No canonical is stored.
|
|
252
|
+
*/
|
|
253
|
+
function rollbackCanonicalMutex(userId) {
|
|
254
|
+
const key = normalizeUserId(userId);
|
|
255
|
+
const mutex = firstCreateMutexes.get(key);
|
|
256
|
+
if (mutex) {
|
|
257
|
+
mutex.resolve(false);
|
|
258
|
+
firstCreateMutexes.delete(key);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Create a CanonicalProfile object without storing it (for hash comparison during first-create).
|
|
263
|
+
*/
|
|
264
|
+
function createCanonicalProfile(resolved) {
|
|
265
|
+
return {
|
|
266
|
+
resolvedOverrides: resolved,
|
|
267
|
+
hash: (0, presets_1.contextHash)(resolved),
|
|
268
|
+
establishedAt: Date.now(),
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
function clearCanonicalProfile(userId) {
|
|
272
|
+
const key = normalizeUserId(userId);
|
|
273
|
+
canonicalProfiles.delete(key);
|
|
274
|
+
const mutex = firstCreateMutexes.get(key);
|
|
275
|
+
if (mutex) {
|
|
276
|
+
mutex.resolve(false);
|
|
277
|
+
firstCreateMutexes.delete(key);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Store or validate a session profile for a specific userId + sessionKey combination.
|
|
282
|
+
* Returns the established profile if successful.
|
|
283
|
+
* Throws if a conflicting profile is already established for the same userId + sessionKey.
|
|
284
|
+
*/
|
|
285
|
+
function establishSessionProfile(userId, sessionKey, profile) {
|
|
286
|
+
const key = sessionOverlayKey(userId, sessionKey);
|
|
287
|
+
const existing = sessionProfiles.get(key);
|
|
288
|
+
if (existing) {
|
|
289
|
+
if (existing.signature !== profile.signature) {
|
|
290
|
+
throw new Error('Session profile conflict');
|
|
291
|
+
}
|
|
292
|
+
return existing;
|
|
293
|
+
}
|
|
294
|
+
const established = {
|
|
295
|
+
userId: normalizeUserId(userId),
|
|
296
|
+
sessionKey,
|
|
297
|
+
signature: profile.signature,
|
|
298
|
+
resolvedProfile: profile,
|
|
299
|
+
establishedAt: Date.now(),
|
|
300
|
+
};
|
|
301
|
+
sessionProfiles.set(key, established);
|
|
302
|
+
(0, logging_1.log)('info', 'session profile established', {
|
|
303
|
+
userId: established.userId,
|
|
304
|
+
sessionKey,
|
|
305
|
+
signature: profile.signature,
|
|
306
|
+
});
|
|
307
|
+
return established;
|
|
308
|
+
}
|
|
309
|
+
function clearSessionProfile(userId, sessionKey) {
|
|
310
|
+
const key = sessionOverlayKey(userId, sessionKey);
|
|
311
|
+
sessionProfiles.delete(key);
|
|
312
|
+
}
|
|
135
313
|
function getSessionsForUser(userId) {
|
|
136
314
|
if (userId === undefined || userId === null)
|
|
137
315
|
return [];
|
|
138
|
-
const
|
|
139
|
-
const
|
|
140
|
-
|
|
141
|
-
if (key === prefix || key.startsWith(prefix + ':'))
|
|
142
|
-
out.push([key, session]);
|
|
143
|
-
}
|
|
144
|
-
return out;
|
|
316
|
+
const key = normalizeUserId(userId);
|
|
317
|
+
const session = sessions.get(key);
|
|
318
|
+
return session ? [[key, session]] : [];
|
|
145
319
|
}
|
|
146
320
|
function getAllSessions() {
|
|
147
321
|
return sessions;
|
|
@@ -155,6 +329,16 @@ function countTotalTabsForSessions(sessionsForUser) {
|
|
|
155
329
|
}
|
|
156
330
|
return totalTabs;
|
|
157
331
|
}
|
|
332
|
+
function getLifecycleSessionSnapshot() {
|
|
333
|
+
return {
|
|
334
|
+
liveSessions: sessions.size,
|
|
335
|
+
liveTabs: countTotalTabsForSessions(),
|
|
336
|
+
stagedCreates: launchingSessions.size,
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
function getSessionsSnapshot() {
|
|
340
|
+
return new Map(sessions);
|
|
341
|
+
}
|
|
158
342
|
function getTabGroup(session, sessionKey) {
|
|
159
343
|
let group = session.tabGroups.get(sessionKey);
|
|
160
344
|
if (!group) {
|
|
@@ -187,10 +371,10 @@ function unindexSessionTabs(session) {
|
|
|
187
371
|
function findTabById(tabId, userId) {
|
|
188
372
|
if (userId === undefined || userId === null)
|
|
189
373
|
return null;
|
|
190
|
-
const
|
|
374
|
+
const key = normalizeUserId(userId);
|
|
191
375
|
const indexedKey = tabSessionIndex.get(tabId);
|
|
192
376
|
if (indexedKey) {
|
|
193
|
-
if (
|
|
377
|
+
if (indexedKey !== key) {
|
|
194
378
|
return null;
|
|
195
379
|
}
|
|
196
380
|
const session = sessions.get(indexedKey);
|
|
@@ -201,27 +385,26 @@ function findTabById(tabId, userId) {
|
|
|
201
385
|
}
|
|
202
386
|
tabSessionIndex.delete(tabId);
|
|
203
387
|
}
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
}
|
|
388
|
+
const session = sessions.get(key);
|
|
389
|
+
if (!session)
|
|
390
|
+
return null;
|
|
391
|
+
const found = findTab(session, tabId);
|
|
392
|
+
if (found) {
|
|
393
|
+
tabSessionIndex.set(tabId, key);
|
|
394
|
+
return { sessionKey: key, session, ...found };
|
|
212
395
|
}
|
|
213
396
|
return null;
|
|
214
397
|
}
|
|
215
|
-
|
|
216
|
-
const key = getSessionMapKey(userId, contextOverrides);
|
|
217
|
-
let session = sessions.get(key);
|
|
398
|
+
function buildBrowserContextOptions(contextOverrides) {
|
|
218
399
|
const resolved = contextOverrides || {};
|
|
219
400
|
const contextOptions = {
|
|
220
401
|
viewport: resolved.viewport || { width: 1280, height: 720 },
|
|
221
402
|
permissions: ['geolocation'],
|
|
222
403
|
};
|
|
223
404
|
const hasOverrides = !!(contextOverrides &&
|
|
224
|
-
(contextOverrides.locale !== undefined ||
|
|
405
|
+
(contextOverrides.locale !== undefined ||
|
|
406
|
+
contextOverrides.timezoneId !== undefined ||
|
|
407
|
+
contextOverrides.geolocation !== undefined));
|
|
225
408
|
// With proxy+geoip, camoufox auto-configures locale/timezone/geo from proxy IP.
|
|
226
409
|
// If caller explicitly supplies overrides, apply them even when proxy is active.
|
|
227
410
|
if (!CONFIG.proxy.host || hasOverrides) {
|
|
@@ -229,6 +412,60 @@ async function getSession(userId, contextOverrides) {
|
|
|
229
412
|
contextOptions.timezoneId = resolved.timezoneId || 'America/Los_Angeles';
|
|
230
413
|
contextOptions.geolocation = resolved.geolocation || { latitude: 37.7749, longitude: -122.4194 };
|
|
231
414
|
}
|
|
415
|
+
return contextOptions;
|
|
416
|
+
}
|
|
417
|
+
async function createStagedSession(userId, contextOverrides) {
|
|
418
|
+
const key = normalizeUserId(userId);
|
|
419
|
+
if (context_pool_1.contextPool.size() >= exports.MAX_SESSIONS) {
|
|
420
|
+
throw new Error('Maximum concurrent sessions reached');
|
|
421
|
+
}
|
|
422
|
+
const generation = node_crypto_1.default.randomUUID();
|
|
423
|
+
const contextOptions = buildBrowserContextOptions(contextOverrides);
|
|
424
|
+
// For backward compatibility, use userId as profileKey when no session profile is provided
|
|
425
|
+
const entry = await context_pool_1.contextPool.ensureContext(key, key, contextOptions, null, true, generation);
|
|
426
|
+
const session = {
|
|
427
|
+
context: entry.context,
|
|
428
|
+
tabGroups: new Map(),
|
|
429
|
+
lastAccess: Date.now(),
|
|
430
|
+
};
|
|
431
|
+
return { session, contextEntry: entry, generation };
|
|
432
|
+
}
|
|
433
|
+
function commitStagedFirstUse(userId, session, contextOverrides, tabInfo, generation) {
|
|
434
|
+
const key = normalizeUserId(userId);
|
|
435
|
+
const entry = context_pool_1.contextPool.getEntry(key);
|
|
436
|
+
if (!entry || entry.stagedGeneration !== generation)
|
|
437
|
+
return false;
|
|
438
|
+
if (!firstCreateMutexes.has(key) || canonicalProfiles.has(key)) {
|
|
439
|
+
return false;
|
|
440
|
+
}
|
|
441
|
+
session.lastAccess = Date.now();
|
|
442
|
+
const group = getTabGroup(session, tabInfo.sessionKey);
|
|
443
|
+
group.set(tabInfo.tabId, tabInfo.tabState);
|
|
444
|
+
sessions.set(key, session);
|
|
445
|
+
entry.staged = false;
|
|
446
|
+
entry.stagedGeneration = undefined;
|
|
447
|
+
indexTab(tabInfo.tabId, tabInfo.sessionMapKey);
|
|
448
|
+
commitCanonicalProfile(userId, contextOverrides);
|
|
449
|
+
return true;
|
|
450
|
+
}
|
|
451
|
+
async function rollbackStagedFirstUse(userId, generation) {
|
|
452
|
+
const key = normalizeUserId(userId);
|
|
453
|
+
const entry = context_pool_1.contextPool.getEntry(key);
|
|
454
|
+
if (!(entry?.staged === true && entry.stagedGeneration === generation))
|
|
455
|
+
return;
|
|
456
|
+
try {
|
|
457
|
+
(0, download_1.cleanupUserDownloads)(key);
|
|
458
|
+
}
|
|
459
|
+
catch {
|
|
460
|
+
// ignore cleanup errors
|
|
461
|
+
}
|
|
462
|
+
await context_pool_1.contextPool.closeStagedContext(key, generation);
|
|
463
|
+
rollbackCanonicalMutex(userId);
|
|
464
|
+
}
|
|
465
|
+
async function getSession(userId, contextOverrides) {
|
|
466
|
+
const key = normalizeUserId(userId);
|
|
467
|
+
let session = sessions.get(key);
|
|
468
|
+
const contextOptions = buildBrowserContextOptions(contextOverrides);
|
|
232
469
|
if (!session) {
|
|
233
470
|
const existingLaunch = launchingSessions.get(key);
|
|
234
471
|
if (existingLaunch) {
|
|
@@ -236,11 +473,11 @@ async function getSession(userId, contextOverrides) {
|
|
|
236
473
|
session.lastAccess = Date.now();
|
|
237
474
|
return session;
|
|
238
475
|
}
|
|
239
|
-
if (
|
|
476
|
+
if (context_pool_1.contextPool.size() >= exports.MAX_SESSIONS) {
|
|
240
477
|
throw new Error('Maximum concurrent sessions reached');
|
|
241
478
|
}
|
|
242
479
|
const launchPromise = (async () => {
|
|
243
|
-
const entry = await context_pool_1.contextPool.ensureContext(
|
|
480
|
+
const entry = await context_pool_1.contextPool.ensureContext(key, key, contextOptions);
|
|
244
481
|
const created = { context: entry.context, tabGroups: new Map(), lastAccess: Date.now() };
|
|
245
482
|
sessions.set(key, created);
|
|
246
483
|
(0, logging_1.log)('info', 'session created', { userId: key });
|
|
@@ -256,7 +493,7 @@ async function getSession(userId, contextOverrides) {
|
|
|
256
493
|
}
|
|
257
494
|
else {
|
|
258
495
|
// Re-resolve context on each access; ContextPool de-dupes launches and detects unexpected closes.
|
|
259
|
-
const entry = await context_pool_1.contextPool.ensureContext(
|
|
496
|
+
const entry = await context_pool_1.contextPool.ensureContext(key, key, contextOptions);
|
|
260
497
|
session.context = entry.context;
|
|
261
498
|
session.lastAccess = Date.now();
|
|
262
499
|
}
|
|
@@ -274,13 +511,19 @@ function unindexTab(tabId) {
|
|
|
274
511
|
function clearAllState() {
|
|
275
512
|
sessions.clear();
|
|
276
513
|
tabSessionIndex.clear();
|
|
514
|
+
canonicalProfiles.clear();
|
|
515
|
+
sessionProfiles.clear();
|
|
516
|
+
for (const [, mutex] of firstCreateMutexes)
|
|
517
|
+
mutex.resolve(false);
|
|
518
|
+
firstCreateMutexes.clear();
|
|
277
519
|
(0, tab_1.clearAllTabLocks)();
|
|
278
520
|
userConcurrency.clear();
|
|
279
521
|
}
|
|
280
522
|
async function closeSessionsForUser(userId) {
|
|
281
|
-
const
|
|
282
|
-
await context_pool_1.contextPool.
|
|
283
|
-
|
|
523
|
+
const key = normalizeUserId(userId);
|
|
524
|
+
await context_pool_1.contextPool.closeStagedContextByUserId(key).catch(() => { });
|
|
525
|
+
await context_pool_1.contextPool.closeContextByUserId(key).catch(() => { });
|
|
526
|
+
cleanupSessionsForUserId(key, 'explicit_close');
|
|
284
527
|
}
|
|
285
528
|
async function closeAllSessions() {
|
|
286
529
|
await context_pool_1.contextPool.closeAll().catch(() => { });
|
|
@@ -297,6 +540,11 @@ async function closeAllSessions() {
|
|
|
297
540
|
}
|
|
298
541
|
}
|
|
299
542
|
launchingSessions.clear();
|
|
543
|
+
canonicalProfiles.clear();
|
|
544
|
+
sessionProfiles.clear();
|
|
545
|
+
for (const [, mutex] of firstCreateMutexes)
|
|
546
|
+
mutex.resolve(false);
|
|
547
|
+
firstCreateMutexes.clear();
|
|
300
548
|
}
|
|
301
549
|
let cleanupInterval = null;
|
|
302
550
|
function startCleanupInterval() {
|
|
@@ -307,7 +555,7 @@ function startCleanupInterval() {
|
|
|
307
555
|
for (const [sessionKey, session] of sessions) {
|
|
308
556
|
if (now - session.lastAccess > exports.SESSION_TIMEOUT_MS) {
|
|
309
557
|
// Persistent profile is preserved on disk; closing the context frees resources.
|
|
310
|
-
context_pool_1.contextPool.
|
|
558
|
+
context_pool_1.contextPool.closeContextByUserId(sessionKey).catch(() => { });
|
|
311
559
|
unindexSessionTabs(session);
|
|
312
560
|
sessions.delete(sessionKey);
|
|
313
561
|
(0, tracing_1.cleanupTracing)(sessionKey);
|
|
@@ -323,4 +571,58 @@ function stopCleanupInterval() {
|
|
|
323
571
|
cleanupInterval = null;
|
|
324
572
|
}
|
|
325
573
|
}
|
|
574
|
+
/**
|
|
575
|
+
* Stage 1 idle cleanup: close runtime state (contexts, session data) for users with no tabs.
|
|
576
|
+
* Does NOT clear stored session profiles - they survive idle cleanup.
|
|
577
|
+
* Does NOT exit the daemon - that is Stage 2 (Task 4).
|
|
578
|
+
* @param sessionSnapshot Snapshot of sessions map taken before cleanup started
|
|
579
|
+
* @param contextSnapshot Snapshot of context pool entries taken before cleanup started
|
|
580
|
+
* @param cleanupStartedMs Timestamp when cleanup was triggered (used to avoid closing newly-created contexts)
|
|
581
|
+
*/
|
|
582
|
+
async function runLifecycleIdleCleanup(sessionSnapshot, contextSnapshot, cleanupStartedMs) {
|
|
583
|
+
const closedUsers = [];
|
|
584
|
+
// Use the provided snapshots to avoid race with new context creation
|
|
585
|
+
const usersToCleanup = new Set();
|
|
586
|
+
for (const [userId, session] of sessionSnapshot.entries()) {
|
|
587
|
+
const tabCount = countTotalTabsForSessions([[userId, session]]);
|
|
588
|
+
// Only cleanup sessions with zero tabs
|
|
589
|
+
if (tabCount === 0) {
|
|
590
|
+
usersToCleanup.add(userId);
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
// Close only the specific contexts from the snapshot that were created before cleanup started
|
|
594
|
+
const contextsToClose = [];
|
|
595
|
+
for (const [profileKey, entry] of contextSnapshot.entries()) {
|
|
596
|
+
// Skip staged, launching, or newly-created contexts
|
|
597
|
+
if (usersToCleanup.has(entry.userId) && !entry.staged && !entry.launching && entry.createdAt < cleanupStartedMs) {
|
|
598
|
+
contextsToClose.push({ profileKey, createdAt: entry.createdAt, lastAccess: entry.lastAccess });
|
|
599
|
+
}
|
|
600
|
+
}
|
|
601
|
+
// Close the specific contexts from the snapshot
|
|
602
|
+
const actuallyClosedUsers = new Set();
|
|
603
|
+
for (const { profileKey, createdAt, lastAccess } of contextsToClose) {
|
|
604
|
+
try {
|
|
605
|
+
await context_pool_1.contextPool.closeContextIfMatches(profileKey, createdAt, lastAccess);
|
|
606
|
+
// Verify the context was actually closed (not skipped due to reuse)
|
|
607
|
+
const stillExists = context_pool_1.contextPool.getEntry(profileKey);
|
|
608
|
+
if (!stillExists) {
|
|
609
|
+
// Context was actually closed, mark user for session cleanup
|
|
610
|
+
const entry = contextSnapshot.get(profileKey);
|
|
611
|
+
if (entry) {
|
|
612
|
+
actuallyClosedUsers.add(entry.userId);
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
catch (err) {
|
|
617
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
618
|
+
(0, logging_1.log)('error', 'idle cleanup failed to close context', { profileKey, error: message });
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
// Clean up session data ONLY for users whose contexts were actually closed
|
|
622
|
+
for (const userId of actuallyClosedUsers) {
|
|
623
|
+
cleanupSessionsForUserId(userId, 'idle_cleanup', false);
|
|
624
|
+
closedUsers.push(userId);
|
|
625
|
+
}
|
|
626
|
+
return { closedUsers };
|
|
627
|
+
}
|
|
326
628
|
//# sourceMappingURL=session.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/services/session.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/services/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { Locator, Page } from 'playwright-core';
|
|
2
|
+
import type { StructuredExtractListSchema, StructuredExtractObjectSchema, StructuredExtractResult, StructuredExtractRootSchema, StructuredExtractScalarSchema } from '../types';
|
|
3
|
+
type CompiledStructuredExtractScalarSchema = StructuredExtractScalarSchema & {
|
|
4
|
+
path: string;
|
|
5
|
+
};
|
|
6
|
+
type CompiledStructuredExtractObjectSchema = Omit<StructuredExtractObjectSchema, 'fields'> & {
|
|
7
|
+
fields: Record<string, CompiledStructuredExtractSchema>;
|
|
8
|
+
path: string;
|
|
9
|
+
};
|
|
10
|
+
type CompiledStructuredExtractListSchema = Omit<StructuredExtractListSchema, 'item'> & {
|
|
11
|
+
item: CompiledStructuredExtractSchema;
|
|
12
|
+
path: string;
|
|
13
|
+
};
|
|
14
|
+
export type CompiledStructuredExtractSchema = CompiledStructuredExtractScalarSchema | CompiledStructuredExtractObjectSchema | CompiledStructuredExtractListSchema;
|
|
15
|
+
export type CompiledStructuredExtractRootSchema = CompiledStructuredExtractObjectSchema | CompiledStructuredExtractListSchema;
|
|
16
|
+
export declare class StructuredExtractSchemaError extends Error {
|
|
17
|
+
readonly statusCode = 400;
|
|
18
|
+
constructor(message: string);
|
|
19
|
+
}
|
|
20
|
+
export interface StructuredScopeAdapter {
|
|
21
|
+
queryAll(selector: string): Promise<StructuredScopeAdapter[]>;
|
|
22
|
+
text(): Promise<string | null>;
|
|
23
|
+
html(): Promise<string | null>;
|
|
24
|
+
attr(name: string): Promise<string | null>;
|
|
25
|
+
getBaseUrl(): string;
|
|
26
|
+
}
|
|
27
|
+
export declare class StructuredExtractRuntimeError extends Error {
|
|
28
|
+
readonly statusCode = 422;
|
|
29
|
+
readonly fieldPath: string;
|
|
30
|
+
readonly reason: string;
|
|
31
|
+
constructor(fieldPath: string, reason: string);
|
|
32
|
+
}
|
|
33
|
+
export declare function validateStructuredExtractSchema(schema: StructuredExtractRootSchema): CompiledStructuredExtractRootSchema;
|
|
34
|
+
export declare function buildFieldPath(path: string, key: string | number): string;
|
|
35
|
+
export declare function createLocatorScope(locator: Locator, baseUrl: string): StructuredScopeAdapter;
|
|
36
|
+
export declare function extractStructuredFromScope(scope: StructuredScopeAdapter, schema: StructuredExtractRootSchema, path?: string): Promise<unknown>;
|
|
37
|
+
export declare function extractStructuredData(page: Page, schema: StructuredExtractRootSchema): Promise<StructuredExtractResult>;
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=structured-extractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structured-extractor.d.ts","sourceRoot":"","sources":["../../../src/services/structured-extractor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EACX,2BAA2B,EAC3B,6BAA6B,EAC7B,uBAAuB,EACvB,2BAA2B,EAC3B,6BAA6B,EAG7B,MAAM,UAAU,CAAC;AAOlB,KAAK,qCAAqC,GAAG,6BAA6B,GAAG;IAC5E,IAAI,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,KAAK,qCAAqC,GAAG,IAAI,CAAC,6BAA6B,EAAE,QAAQ,CAAC,GAAG;IAC5F,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,+BAA+B,CAAC,CAAC;IACxD,IAAI,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,KAAK,mCAAmC,GAAG,IAAI,CAAC,2BAA2B,EAAE,MAAM,CAAC,GAAG;IACtF,IAAI,EAAE,+BAA+B,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,+BAA+B,GACxC,qCAAqC,GACrC,qCAAqC,GACrC,mCAAmC,CAAC;AAEvC,MAAM,MAAM,mCAAmC,GAC5C,qCAAqC,GACrC,mCAAmC,CAAC;AA4FvC,qBAAa,4BAA6B,SAAQ,KAAK;IACtD,SAAgB,UAAU,OAAO;gBAErB,OAAO,EAAE,MAAM;CAI3B;AAED,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC;IAC9D,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC/B,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC3C,UAAU,IAAI,MAAM,CAAC;CACrB;AAED,qBAAa,6BAA8B,SAAQ,KAAK;IACvD,SAAgB,UAAU,OAAO;IACjC,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,SAAgB,MAAM,EAAE,MAAM,CAAC;gBAEnB,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAM7C;AA0OD,wBAAgB,+BAA+B,CAC9C,MAAM,EAAE,2BAA2B,GACjC,mCAAmC,CAMrC;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAKzE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,sBAAsB,CAwB5F;AAsKD,wBAAsB,0BAA0B,CAC/C,KAAK,EAAE,sBAAsB,EAC7B,MAAM,EAAE,2BAA2B,EACnC,IAAI,SAAS,GACX,OAAO,CAAC,OAAO,CAAC,CAElB;AAED,wBAAsB,qBAAqB,CAC1C,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,2BAA2B,GACjC,OAAO,CAAC,uBAAuB,CAAC,CAelC"}
|