camofox-browser 2.1.1 → 2.4.3

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.
Files changed (102) hide show
  1. package/CHANGELOG.md +150 -0
  2. package/README.md +310 -34
  3. package/dist/src/cli/commands/content.d.ts.map +1 -1
  4. package/dist/src/cli/commands/content.js +37 -0
  5. package/dist/src/cli/commands/content.js.map +1 -1
  6. package/dist/src/cli/commands/core.d.ts.map +1 -1
  7. package/dist/src/cli/commands/core.js +21 -4
  8. package/dist/src/cli/commands/core.js.map +1 -1
  9. package/dist/src/cli/commands/interaction.d.ts.map +1 -1
  10. package/dist/src/cli/commands/interaction.js +5 -14
  11. package/dist/src/cli/commands/interaction.js.map +1 -1
  12. package/dist/src/cli/commands/navigation.d.ts.map +1 -1
  13. package/dist/src/cli/commands/navigation.js +12 -6
  14. package/dist/src/cli/commands/navigation.js.map +1 -1
  15. package/dist/src/cli/commands/server.d.ts.map +1 -1
  16. package/dist/src/cli/commands/server.js +9 -3
  17. package/dist/src/cli/commands/server.js.map +1 -1
  18. package/dist/src/cli/commands/session.d.ts.map +1 -1
  19. package/dist/src/cli/commands/session.js +23 -5
  20. package/dist/src/cli/commands/session.js.map +1 -1
  21. package/dist/src/cli/server/manager.d.ts +1 -0
  22. package/dist/src/cli/server/manager.d.ts.map +1 -1
  23. package/dist/src/cli/server/manager.js +7 -12
  24. package/dist/src/cli/server/manager.js.map +1 -1
  25. package/dist/src/middleware/lifecycle-activity.d.ts +9 -0
  26. package/dist/src/middleware/lifecycle-activity.d.ts.map +1 -0
  27. package/dist/src/middleware/lifecycle-activity.js +21 -0
  28. package/dist/src/middleware/lifecycle-activity.js.map +1 -0
  29. package/dist/src/openapi/spec.d.ts +4 -0
  30. package/dist/src/openapi/spec.d.ts.map +1 -0
  31. package/dist/src/openapi/spec.js +730 -0
  32. package/dist/src/openapi/spec.js.map +1 -0
  33. package/dist/src/routes/core.d.ts.map +1 -1
  34. package/dist/src/routes/core.js +545 -58
  35. package/dist/src/routes/core.js.map +1 -1
  36. package/dist/src/routes/docs.d.ts +3 -0
  37. package/dist/src/routes/docs.d.ts.map +1 -0
  38. package/dist/src/routes/docs.js +23 -0
  39. package/dist/src/routes/docs.js.map +1 -0
  40. package/dist/src/routes/openclaw.d.ts.map +1 -1
  41. package/dist/src/routes/openclaw.js +317 -90
  42. package/dist/src/routes/openclaw.js.map +1 -1
  43. package/dist/src/server.js +55 -4
  44. package/dist/src/server.js.map +1 -1
  45. package/dist/src/services/context-pool.d.ts +21 -4
  46. package/dist/src/services/context-pool.d.ts.map +1 -1
  47. package/dist/src/services/context-pool.js +290 -71
  48. package/dist/src/services/context-pool.js.map +1 -1
  49. package/dist/src/services/download.d.ts +2 -0
  50. package/dist/src/services/download.d.ts.map +1 -1
  51. package/dist/src/services/download.js +110 -80
  52. package/dist/src/services/download.js.map +1 -1
  53. package/dist/src/services/lifecycle-controller.d.ts +40 -0
  54. package/dist/src/services/lifecycle-controller.d.ts.map +1 -0
  55. package/dist/src/services/lifecycle-controller.js +106 -0
  56. package/dist/src/services/lifecycle-controller.js.map +1 -0
  57. package/dist/src/services/resource-extractor.d.ts +1 -0
  58. package/dist/src/services/resource-extractor.d.ts.map +1 -1
  59. package/dist/src/services/resource-extractor.js +7 -0
  60. package/dist/src/services/resource-extractor.js.map +1 -1
  61. package/dist/src/services/session.d.ts +109 -4
  62. package/dist/src/services/session.d.ts.map +1 -1
  63. package/dist/src/services/session.js +622 -64
  64. package/dist/src/services/session.js.map +1 -1
  65. package/dist/src/services/structured-extractor.d.ts +39 -0
  66. package/dist/src/services/structured-extractor.d.ts.map +1 -0
  67. package/dist/src/services/structured-extractor.js +487 -0
  68. package/dist/src/services/structured-extractor.js.map +1 -0
  69. package/dist/src/services/tab.d.ts +30 -3
  70. package/dist/src/services/tab.d.ts.map +1 -1
  71. package/dist/src/services/tab.js +872 -124
  72. package/dist/src/services/tab.js.map +1 -1
  73. package/dist/src/services/tracing.d.ts +7 -0
  74. package/dist/src/services/tracing.d.ts.map +1 -1
  75. package/dist/src/services/tracing.js +200 -19
  76. package/dist/src/services/tracing.js.map +1 -1
  77. package/dist/src/services/vnc.d.ts.map +1 -1
  78. package/dist/src/services/vnc.js +5 -3
  79. package/dist/src/services/vnc.js.map +1 -1
  80. package/dist/src/services/youtube.js +1 -1
  81. package/dist/src/services/youtube.js.map +1 -1
  82. package/dist/src/types.d.ts +71 -1
  83. package/dist/src/types.d.ts.map +1 -1
  84. package/dist/src/utils/config.d.ts +79 -3
  85. package/dist/src/utils/config.d.ts.map +1 -1
  86. package/dist/src/utils/config.js +145 -3
  87. package/dist/src/utils/config.js.map +1 -1
  88. package/dist/src/utils/presets.d.ts.map +1 -1
  89. package/dist/src/utils/presets.js +3 -1
  90. package/dist/src/utils/presets.js.map +1 -1
  91. package/dist/src/utils/proxy-profiles.d.ts +18 -0
  92. package/dist/src/utils/proxy-profiles.d.ts.map +1 -0
  93. package/dist/src/utils/proxy-profiles.js +197 -0
  94. package/dist/src/utils/proxy-profiles.js.map +1 -0
  95. package/dist/src/utils/sidecar-version.d.ts +12 -0
  96. package/dist/src/utils/sidecar-version.d.ts.map +1 -0
  97. package/dist/src/utils/sidecar-version.js +63 -0
  98. package/dist/src/utils/sidecar-version.js.map +1 -0
  99. package/dist/tsconfig.tsbuildinfo +1 -1
  100. package/openclaw.plugin.json +39 -0
  101. package/package.json +16 -4
  102. package/plugin.ts +949 -0
@@ -11,11 +11,16 @@ const node_fs_1 = __importDefault(require("node:fs"));
11
11
  const node_child_process_1 = require("node:child_process");
12
12
  const camoufox_js_1 = require("camoufox-js");
13
13
  const fingerprints_js_1 = require("camoufox-js/dist/fingerprints.js");
14
+ // camoufox-js does not export version info from its public API.
15
+ // This deep import is the only way to detect the installed engine version.
16
+ // If it breaks on upgrade, getInstalledCamoufoxVersion() catches and returns 'unknown'.
17
+ const pkgman_js_1 = require("camoufox-js/dist/pkgman.js");
14
18
  const playwright_core_1 = require("playwright-core");
15
19
  const config_1 = require("../utils/config");
20
+ const sidecar_version_1 = require("../utils/sidecar-version");
16
21
  const logging_1 = require("../middleware/logging");
17
22
  const CONFIG = (0, config_1.loadConfig)();
18
- const MAX_CONTEXTS = Math.max(1, Number.parseInt(process.env.CAMOFOX_MAX_SESSIONS || '', 10) || 50);
23
+ const MAX_CONTEXTS = CONFIG.maxSessions;
19
24
  function getHostOS() {
20
25
  const platform = node_os_1.default.platform();
21
26
  if (platform === 'darwin')
@@ -24,19 +29,67 @@ function getHostOS() {
24
29
  return 'windows';
25
30
  return 'linux';
26
31
  }
27
- function buildProxyConfig() {
28
- const { host, port, username, password } = CONFIG.proxy;
29
- if (!host || !port)
30
- return null;
32
+ function buildProxyConfig(proxy) {
33
+ if (!proxy) {
34
+ // Fallback to configured server proxy
35
+ const { host, port, username, password } = CONFIG.proxy;
36
+ if (!host || !port)
37
+ return null;
38
+ return {
39
+ server: `http://${host}:${port}`,
40
+ username: username || undefined,
41
+ password: password || undefined,
42
+ };
43
+ }
31
44
  return {
32
- server: `http://${host}:${port}`,
33
- username: username || undefined,
34
- password: password || undefined,
45
+ server: proxy.server,
46
+ username: proxy.username,
47
+ password: proxy.password,
35
48
  };
36
49
  }
37
- function profileDirForUserId(userId) {
50
+ function getInstalledCamoufoxVersion() {
51
+ try {
52
+ return (0, pkgman_js_1.installedVerStr)();
53
+ }
54
+ catch {
55
+ return 'unknown';
56
+ }
57
+ }
58
+ function decodeDefaultProfileUserId(profileKey) {
59
+ if (!profileKey.startsWith('u:') || profileKey.indexOf(':', 2) !== -1)
60
+ return null;
61
+ try {
62
+ const encoded = profileKey.slice(2);
63
+ const bytes = Buffer.from(encoded, 'base64url');
64
+ if (bytes.length % 2 !== 0)
65
+ return null;
66
+ const decoded = bytes.toString('utf16le');
67
+ if (/^(?:u|s|p|o):/.test(decoded))
68
+ return null;
69
+ for (let i = 0; i < decoded.length; i += 1) {
70
+ const code = decoded.charCodeAt(i);
71
+ if (code >= 0xd800 && code <= 0xdbff) {
72
+ if (i + 1 >= decoded.length)
73
+ return null;
74
+ const next = decoded.charCodeAt(i + 1);
75
+ if (next < 0xdc00 || next > 0xdfff)
76
+ return null;
77
+ i += 1;
78
+ }
79
+ else if (code >= 0xdc00 && code <= 0xdfff) {
80
+ return null;
81
+ }
82
+ }
83
+ return `u:${Buffer.from(decoded, 'utf16le').toString('base64url')}` === profileKey ? decoded : null;
84
+ }
85
+ catch {
86
+ return null;
87
+ }
88
+ }
89
+ function profileDirForProfileKey(profileKey) {
38
90
  // Avoid path traversal from untrusted route params.
39
- const safe = encodeURIComponent(String(userId));
91
+ const defaultUserId = decodeDefaultProfileUserId(String(profileKey));
92
+ const safe = encodeURIComponent(defaultUserId ?? String(profileKey));
40
93
  return node_path_1.default.join(CONFIG.profilesDir, safe);
41
94
  }
42
95
  function pickSeedOptions(opts) {
@@ -131,30 +184,57 @@ class ContextPool {
131
184
  }
132
185
  }
133
186
  }
134
- getEntry(userId) {
135
- return this.pool.get(userId);
187
+ getEntry(profileKey) {
188
+ return this.pool.get(profileKey);
136
189
  }
137
190
  getDisplayForUser(userId) {
138
- const entry = this.pool.get(String(userId));
139
- if (!entry)
140
- return null;
141
- if (entry.virtualDisplay) {
142
- try {
143
- const display = entry.virtualDisplay.get();
144
- return typeof display === 'string' ? display : null;
145
- }
146
- catch {
147
- return null;
191
+ // Find any entry for this userId (there may be multiple with different profile keys)
192
+ for (const entry of this.pool.values()) {
193
+ if (entry.userId !== String(userId))
194
+ continue;
195
+ if (entry.virtualDisplay) {
196
+ try {
197
+ const display = entry.virtualDisplay.get();
198
+ return typeof display === 'string' ? display : null;
199
+ }
200
+ catch {
201
+ return null;
202
+ }
148
203
  }
204
+ const processDisplay = process.env.DISPLAY;
205
+ return typeof processDisplay === 'string' && processDisplay ? processDisplay : null;
149
206
  }
150
- const processDisplay = process.env.DISPLAY;
151
- return typeof processDisplay === 'string' && processDisplay ? processDisplay : null;
207
+ return null;
152
208
  }
153
209
  size() {
154
210
  return this.pool.size;
155
211
  }
156
212
  listActiveUserIds() {
157
- return Array.from(this.pool.keys());
213
+ const userIds = new Set();
214
+ for (const entry of this.pool.values()) {
215
+ if (!entry.staged) {
216
+ userIds.add(entry.userId);
217
+ }
218
+ }
219
+ return Array.from(userIds);
220
+ }
221
+ getLifecycleSnapshot() {
222
+ let launchingContexts = 0;
223
+ let stagedContexts = 0;
224
+ for (const entry of this.pool.values()) {
225
+ if (entry.launching)
226
+ launchingContexts++;
227
+ if (entry.staged)
228
+ stagedContexts++;
229
+ }
230
+ return {
231
+ liveContexts: this.pool.size,
232
+ launchingContexts,
233
+ stagedContexts,
234
+ };
235
+ }
236
+ getPoolEntries() {
237
+ return new Map(this.pool);
158
238
  }
159
239
  cleanupVirtualDisplay(entry) {
160
240
  if (!entry.virtualDisplay)
@@ -169,12 +249,44 @@ class ContextPool {
169
249
  entry.virtualDisplay = undefined;
170
250
  }
171
251
  }
172
- async launchPersistentContext(userId, contextOptions) {
252
+ async launchPersistentContext(userId, profileKey, contextOptions, resolvedProxy) {
173
253
  const hostOS = getHostOS();
174
- const proxy = buildProxyConfig();
254
+ const proxy = buildProxyConfig(resolvedProxy);
175
255
  const headless = this.headlessOverrides.get(userId) ?? CONFIG.headless;
176
- const profileDir = profileDirForUserId(userId);
256
+ const profileDir = profileDirForProfileKey(profileKey);
177
257
  node_fs_1.default.mkdirSync(profileDir, { recursive: true });
258
+ const compatPath = node_path_1.default.join(profileDir, 'compatibility.json');
259
+ try {
260
+ const currentVersion = getInstalledCamoufoxVersion();
261
+ if (currentVersion === 'unknown') {
262
+ throw new Error(`Cannot verify profile compatibility for user "${userId}": installed Camoufox version could not be determined. ` +
263
+ `Resolve the camoufox-js installation or delete the profile directory to reset: ${profileDir}`);
264
+ }
265
+ const compat = (0, sidecar_version_1.readVersionedSidecar)(compatPath, {
266
+ currentVersion: 1,
267
+ migrations: {},
268
+ label: 'profile compatibility',
269
+ });
270
+ if (compat) {
271
+ if (compat.camoufoxVersion === 'unknown') {
272
+ throw new Error(`Profile for user "${userId}" has unknown version provenance and cannot be verified. Delete the profile directory to reset: ${profileDir}`);
273
+ }
274
+ if (compat.camoufoxVersion !== currentVersion) {
275
+ throw new Error(`Profile for user "${userId}" was created with Camoufox ${compat.camoufoxVersion}, but the current version is ${currentVersion}. Delete the profile directory to reset: ${profileDir}`);
276
+ }
277
+ }
278
+ else {
279
+ (0, sidecar_version_1.writeVersionedSidecar)(compatPath, 1, {
280
+ camoufoxVersion: currentVersion,
281
+ createdAt: new Date().toISOString(),
282
+ });
283
+ }
284
+ }
285
+ catch (err) {
286
+ throw err instanceof Error
287
+ ? err
288
+ : new Error(`Profile compatibility check failed for user "${userId}": ${String(err)}. Delete the profile directory to reset: ${profileDir}`);
289
+ }
178
290
  let effectiveHeadless = headless === true;
179
291
  let virtualDisplay = undefined;
180
292
  if (headless === 'virtual' || (headless === false && hostOS === 'linux' && !hasUsableLinuxDisplay())) {
@@ -219,26 +331,46 @@ class ContextPool {
219
331
  try {
220
332
  const fpPath = node_path_1.default.join(profileDir, 'fingerprint.json');
221
333
  let fingerprint;
222
- if (node_fs_1.default.existsSync(fpPath)) {
223
- try {
224
- const parsed = JSON.parse(node_fs_1.default.readFileSync(fpPath, 'utf-8'));
225
- if (parsed && typeof parsed === 'object') {
226
- fingerprint = parsed;
227
- (0, logging_1.log)('info', 'loaded persisted fingerprint', { userId, fpPath });
228
- }
229
- else {
230
- (0, logging_1.log)('warn', 'persisted fingerprint is invalid, regenerating', { userId, fpPath });
231
- }
334
+ const configuredOs = CONFIG.fingerprintDefaults.os;
335
+ const fingerprintOperatingSystems = Array.isArray(configuredOs)
336
+ ? configuredOs
337
+ : configuredOs
338
+ ? [configuredOs]
339
+ : [hostOS];
340
+ const configuredScreen = CONFIG.fingerprintDefaults.screen;
341
+ const fingerprintScreen = configuredScreen
342
+ ? {
343
+ minWidth: configuredScreen.width,
344
+ maxWidth: configuredScreen.width,
345
+ minHeight: configuredScreen.height,
346
+ maxHeight: configuredScreen.height,
232
347
  }
233
- catch {
234
- (0, logging_1.log)('warn', 'failed to read persisted fingerprint, regenerating', { userId, fpPath });
348
+ : undefined;
349
+ try {
350
+ const persistedFingerprint = (0, sidecar_version_1.readVersionedSidecar)(fpPath, {
351
+ currentVersion: 1,
352
+ migrations: {
353
+ 0: (raw) => raw,
354
+ },
355
+ label: 'fingerprint sidecar',
356
+ });
357
+ fingerprint = persistedFingerprint ?? undefined;
358
+ if (fingerprint) {
359
+ (0, logging_1.log)('info', 'loaded persisted fingerprint', { userId, fpPath });
235
360
  }
236
361
  }
362
+ catch (err) {
363
+ throw err instanceof Error
364
+ ? err
365
+ : new Error(`Fingerprint sidecar failed for user "${userId}": ${String(err)}. Delete ${fpPath} to reset.`);
366
+ }
237
367
  if (!fingerprint) {
238
- fingerprint = (0, fingerprints_js_1.generateFingerprint)(undefined, { operatingSystems: [hostOS] });
368
+ fingerprint = (0, fingerprints_js_1.generateFingerprint)(undefined, {
369
+ operatingSystems: fingerprintOperatingSystems,
370
+ ...(fingerprintScreen ? { screen: fingerprintScreen } : {}),
371
+ });
239
372
  try {
240
- node_fs_1.default.mkdirSync(node_path_1.default.dirname(fpPath), { recursive: true });
241
- node_fs_1.default.writeFileSync(fpPath, JSON.stringify(fingerprint, null, 2), 'utf-8');
373
+ (0, sidecar_version_1.writeVersionedSidecar)(fpPath, 1, fingerprint);
242
374
  (0, logging_1.log)('info', 'generated new fingerprint and persisted it', { userId, fpPath });
243
375
  }
244
376
  catch {
@@ -248,8 +380,11 @@ class ContextPool {
248
380
  const opts = await (0, camoufox_js_1.launchOptions)({
249
381
  headless: effectiveHeadless,
250
382
  ...(virtualDisplay ? { virtual_display: virtualDisplay.get() } : {}),
251
- os: hostOS,
252
- humanize: true,
383
+ os: configuredOs ?? hostOS,
384
+ humanize: CONFIG.fingerprintDefaults.humanize ?? true,
385
+ ...(CONFIG.fingerprintDefaults.allowWebgl !== undefined
386
+ ? { allow_webgl: CONFIG.fingerprintDefaults.allowWebgl }
387
+ : {}),
253
388
  enable_cache: true,
254
389
  proxy: proxy ?? undefined,
255
390
  geoip: !!proxy,
@@ -277,23 +412,31 @@ class ContextPool {
277
412
  throw err;
278
413
  }
279
414
  }
280
- async restartContext(userId, headless) {
415
+ async restartContext(userId, headless, profileKey, options, resolvedProxy) {
281
416
  const normalized = String(userId);
417
+ const targetProfileKey = profileKey ?? normalized;
282
418
  if (headless !== undefined) {
283
419
  this.headlessOverrides.set(normalized, headless);
284
420
  }
285
- const existing = this.pool.get(normalized);
286
- if (existing) {
287
- await this.closeContext(normalized);
421
+ // Close all contexts for this userId (there may be multiple with different profiles)
422
+ const entriesToClose = [];
423
+ for (const [profileKey, entry] of this.pool.entries()) {
424
+ if (entry.userId === normalized) {
425
+ entriesToClose.push(profileKey);
426
+ }
427
+ }
428
+ for (const profileKey of entriesToClose) {
429
+ await this.closeContext(profileKey);
288
430
  }
289
- return this.ensureContext(normalized);
431
+ // Return a new entry with the caller's runtime profile key.
432
+ return this.ensureContext(targetProfileKey, normalized, options, resolvedProxy);
290
433
  }
291
434
  async evictIfNeeded() {
292
435
  if (this.pool.size <= MAX_CONTEXTS)
293
436
  return;
294
437
  let lru = null;
295
438
  for (const entry of this.pool.values()) {
296
- if (entry.launching)
439
+ if (entry.launching || entry.staged)
297
440
  continue;
298
441
  if (!lru || entry.lastAccess < lru.lastAccess)
299
442
  lru = entry;
@@ -301,14 +444,18 @@ class ContextPool {
301
444
  if (!lru)
302
445
  return;
303
446
  (0, logging_1.log)('info', 'evicting persistent context (LRU)', { userId: lru.userId, profileDir: lru.profileDir });
304
- this.notifyEviction(lru.userId);
305
- await this.closeContext(lru.userId);
447
+ this.notifyEviction(lru.profileKey);
448
+ await this.closeContext(lru.profileKey);
306
449
  }
307
- async ensureContext(userId, options) {
450
+ async ensureContext(profileKey, userId, options, resolvedProxy, staged = false, stagedGeneration) {
308
451
  const normalized = String(userId);
309
- let entry = this.pool.get(normalized);
452
+ let entry = this.pool.get(profileKey);
310
453
  const seed = pickSeedOptions(options);
311
454
  if (entry) {
455
+ if (staged) {
456
+ entry.staged = true;
457
+ entry.stagedGeneration = stagedGeneration;
458
+ }
312
459
  entry.lastAccess = Date.now();
313
460
  if (entry.launching) {
314
461
  entry.context = await entry.launching;
@@ -322,7 +469,7 @@ class ContextPool {
322
469
  void entry.context.pages();
323
470
  }
324
471
  catch {
325
- this.pool.delete(normalized);
472
+ this.pool.delete(profileKey);
326
473
  entry = undefined;
327
474
  }
328
475
  }
@@ -330,21 +477,27 @@ class ContextPool {
330
477
  if (seedDiffers(entry.seedOptions, seed)) {
331
478
  (0, logging_1.log)('warn', 'persistent context already exists; ignoring new context overrides', {
332
479
  userId: normalized,
480
+ profileKey,
333
481
  profileDir: entry.profileDir,
334
482
  });
335
483
  }
336
484
  entry.lastAccess = Date.now();
337
485
  return entry;
338
486
  }
339
- const profileDir = profileDirForUserId(normalized);
487
+ const profileDir = profileDirForProfileKey(profileKey);
340
488
  const newEntry = {
341
489
  context: null,
342
490
  userId: normalized,
491
+ profileKey,
343
492
  profileDir,
344
493
  lastAccess: Date.now(),
494
+ createdAt: Date.now(),
495
+ staged,
496
+ stagedGeneration,
497
+ proxyConfig: resolvedProxy || null,
345
498
  seedOptions: seed,
346
499
  };
347
- newEntry.launching = this.launchPersistentContext(normalized, options)
500
+ newEntry.launching = this.launchPersistentContext(normalized, profileKey, options, resolvedProxy)
348
501
  .then(({ context, virtualDisplay }) => {
349
502
  newEntry.context = context;
350
503
  newEntry.virtualDisplay = virtualDisplay;
@@ -352,27 +505,27 @@ class ContextPool {
352
505
  newEntry.lastAccess = Date.now();
353
506
  context.on('close', () => {
354
507
  this.cleanupVirtualDisplay(newEntry);
355
- (0, logging_1.log)('info', 'persistent context closed', { userId: normalized, profileDir });
356
- this.pool.delete(normalized);
508
+ (0, logging_1.log)('info', 'persistent context closed', { userId: normalized, profileKey, profileDir });
509
+ this.pool.delete(profileKey);
357
510
  });
358
511
  return context;
359
512
  })
360
513
  .catch((err) => {
361
514
  this.cleanupVirtualDisplay(newEntry);
362
- this.pool.delete(normalized);
515
+ this.pool.delete(profileKey);
363
516
  const message = err instanceof Error ? err.message : String(err);
364
- (0, logging_1.log)('error', 'persistent context launch failed', { userId: normalized, profileDir, error: message });
517
+ (0, logging_1.log)('error', 'persistent context launch failed', { userId: normalized, profileKey, profileDir, error: message });
365
518
  throw err;
366
519
  });
367
- this.pool.set(normalized, newEntry);
520
+ this.pool.set(profileKey, newEntry);
368
521
  await newEntry.launching;
369
522
  await this.evictIfNeeded();
370
523
  return newEntry;
371
524
  }
372
- async closeContext(userId) {
373
- const normalized = String(userId);
525
+ async closeContext(profileKey) {
526
+ const normalized = String(profileKey);
374
527
  const entry = this.pool.get(normalized);
375
- if (!entry)
528
+ if (!entry || entry.staged)
376
529
  return;
377
530
  try {
378
531
  if (entry.launching) {
@@ -383,14 +536,80 @@ class ContextPool {
383
536
  }
384
537
  finally {
385
538
  this.cleanupVirtualDisplay(entry);
386
- this.pool.delete(normalized);
387
- (0, logging_1.log)('info', 'persistent context removed from pool', { userId: normalized, profileDir: entry.profileDir });
539
+ // Only delete if this entry is still in the pool (avoid deleting a newer entry with same key)
540
+ const currentEntry = this.pool.get(normalized);
541
+ if (currentEntry === entry) {
542
+ this.pool.delete(normalized);
543
+ (0, logging_1.log)('info', 'persistent context removed from pool', { userId: entry.userId, profileKey: normalized, profileDir: entry.profileDir });
544
+ }
545
+ else {
546
+ (0, logging_1.log)('info', 'persistent context closed but newer entry exists', { userId: entry.userId, profileKey: normalized, profileDir: entry.profileDir });
547
+ }
548
+ }
549
+ }
550
+ async closeContextIfMatches(profileKey, expectedCreatedAt, expectedLastAccess) {
551
+ const normalized = String(profileKey);
552
+ const entry = this.pool.get(normalized);
553
+ if (!entry)
554
+ return;
555
+ if (entry.createdAt !== expectedCreatedAt)
556
+ return;
557
+ // If lastAccess was provided and has changed, the context was reused - don't close
558
+ if (expectedLastAccess !== undefined && entry.lastAccess !== expectedLastAccess)
559
+ return;
560
+ await this.closeContext(normalized);
561
+ }
562
+ setHeadlessOverride(userId, headless) {
563
+ this.headlessOverrides.set(String(userId), headless);
564
+ }
565
+ async closeStagedContext(profileKey, generation) {
566
+ const normalized = String(profileKey);
567
+ const entry = this.pool.get(normalized);
568
+ if (!entry?.staged)
569
+ return;
570
+ if (generation && entry.stagedGeneration !== generation)
571
+ return;
572
+ entry.staged = false;
573
+ entry.stagedGeneration = undefined;
574
+ await this.closeContext(normalized);
575
+ }
576
+ async closeContextByUserId(userId) {
577
+ const normalized = String(userId);
578
+ // Close all contexts for this userId
579
+ const entriesToClose = [];
580
+ for (const [profileKey, entry] of this.pool.entries()) {
581
+ if (entry.userId === normalized && !entry.staged) {
582
+ entriesToClose.push(profileKey);
583
+ }
584
+ }
585
+ for (const profileKey of entriesToClose) {
586
+ await this.closeContext(profileKey);
587
+ }
588
+ }
589
+ async closeStagedContextByUserId(userId, generation) {
590
+ const normalized = String(userId);
591
+ // Close all staged contexts for this userId
592
+ const entriesToClose = [];
593
+ for (const [profileKey, entry] of this.pool.entries()) {
594
+ if (entry.userId === normalized && entry.staged) {
595
+ if (!generation || entry.stagedGeneration === generation) {
596
+ entriesToClose.push(profileKey);
597
+ }
598
+ }
599
+ }
600
+ for (const profileKey of entriesToClose) {
601
+ await this.closeStagedContext(profileKey, generation);
388
602
  }
389
603
  }
390
604
  async closeAll() {
391
- const userIds = Array.from(this.pool.keys());
392
- for (const userId of userIds) {
393
- await this.closeContext(userId);
605
+ const profileKeys = Array.from(this.pool.keys());
606
+ for (const profileKey of profileKeys) {
607
+ const entry = this.pool.get(profileKey);
608
+ if (entry?.staged) {
609
+ entry.staged = false;
610
+ entry.stagedGeneration = undefined;
611
+ }
612
+ await this.closeContext(profileKey);
394
613
  }
395
614
  }
396
615
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context-pool.js","sourceRoot":"","sources":["../../../src/services/context-pool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context-pool.js","sourceRoot":"","sources":["../../../src/services/context-pool.ts"],"names":[],"mappings":";;;;;;AAyqBA,8CAEC;AA3qBD,sDAAyB;AACzB,0DAA6B;AAC7B,sDAAyB;AACzB,2DAA8D;AAE9D,6CAA4C;AAC5C,sEAAuE;AACvE,gEAAgE;AAChE,2EAA2E;AAC3E,wFAAwF;AACxF,0DAA6D;AAE7D,qDAA2F;AAE3F,4CAA6C;AAC7C,8DAAuF;AACvF,mDAA4C;AAG5C,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;AAE5B,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;AAmBxC,SAAS,SAAS;IACjB,MAAM,QAAQ,GAAG,iBAAE,CAAC,QAAQ,EAAE,CAAC;IAC/B,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC;IAC1C,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,SAAS,CAAC;IAC3C,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAkC;IAC3D,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,sCAAsC;QACtC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC;QACxD,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QAChC,OAAO;YACN,MAAM,EAAE,UAAU,IAAI,IAAI,IAAI,EAAE;YAChC,QAAQ,EAAE,QAAQ,IAAI,SAAS;YAC/B,QAAQ,EAAE,QAAQ,IAAI,SAAS;SAC/B,CAAC;IACH,CAAC;IACD,OAAO;QACN,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;KACxB,CAAC;AACH,CAAC;AAED,SAAS,2BAA2B;IACnC,IAAI,CAAC;QACJ,OAAO,IAAA,2BAAe,GAAE,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,SAAS,CAAC;IAClB,CAAC;AACF,CAAC;AAED,SAAS,0BAA0B,CAAC,UAAkB;IACrD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACnF,IAAI,CAAC;QACJ,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAChD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACxC,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACnC,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;gBACtC,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM;oBAAE,OAAO,IAAI,CAAC;gBACzC,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvC,IAAI,IAAI,GAAG,MAAM,IAAI,IAAI,GAAG,MAAM;oBAAE,OAAO,IAAI,CAAC;gBAChD,CAAC,IAAI,CAAC,CAAC;YACR,CAAC;iBAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;gBAC7C,OAAO,IAAI,CAAC;YACb,CAAC;QACF,CAAC;QACD,OAAO,KAAK,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IACrG,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC;AAED,SAAS,uBAAuB,CAAC,UAAkB;IAClD,oDAAoD;IACpD,MAAM,aAAa,GAAG,0BAA0B,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IACrE,MAAM,IAAI,GAAG,kBAAkB,CAAC,aAAa,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IACrE,OAAO,mBAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,eAAe,CAAC,IAA4B;IACpD,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAC3D,IAAI,MAAM,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC9H,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,WAAW,CAAC,CAA4B,EAAE,CAA4B;IAC9E,qHAAqH;IACrH,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;IACrC,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;IACrC,OAAO,EAAE,KAAK,EAAE,CAAC;AAClB,CAAC;AAED,SAAS,qBAAqB;IAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;IACpC,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAE3B,MAAM,KAAK,GAAG,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,MAAM,QAAQ,GAAG,UAAU,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;IAC3C,OAAO,iBAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,aAAqB,cAAc;IAC3D,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,OAAO,iBAAE,CAAC,UAAU,CAAC,UAAU,UAAU,OAAO,CAAC,EAAE,CAAC;QACnD,UAAU,EAAE,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,UAAU,EAAE,CAAC;IACjC,MAAM,WAAW,GAAG,IAAA,0BAAK,EAAC,MAAM,EAAE;QACjC,OAAO;QACP,SAAS;QACT,GAAG;QACH,UAAU;QACV,KAAK;QACL,WAAW;QACX,KAAK;KACL,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAEtB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,eAAe,GAAG,GAAG,EAAE;YAC5B,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,OAAO,EAAE,CAAC;QACX,CAAC,CAAC;QACF,MAAM,cAAc,GAAG,CAAC,GAAU,EAAE,EAAE;YACrC,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,MAAM,CAAC,GAAG,CAAC,CAAC;QACb,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC/B,cAAc,CAAC,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACjD,CAAC,EAAE,IAAI,CAAC,CAAC;QAET,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC9B,IAAI,iBAAE,CAAC,UAAU,CAAC,UAAU,UAAU,OAAO,CAAC,EAAE,CAAC;gBAChD,eAAe,EAAE,CAAC;YACnB,CAAC;QACF,CAAC,EAAE,GAAG,CAAC,CAAC;QAER,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACjC,cAAc,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YACzC,cAAc,CAAC,IAAI,KAAK,CAAC,2BAA2B,IAAI,IAAI,MAAM,YAAY,MAAM,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC;QACrG,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;AAC1C,CAAC;AAED,MAAa,WAAW;IACf,IAAI,GAA2B,IAAI,GAAG,EAAE,CAAC;IACzC,iBAAiB,GAAG,IAAI,GAAG,EAA+B,CAAC;IAC3D,gBAAgB,GAAoC,EAAE,CAAC;IAE/D,OAAO,CAAC,QAAkC;QACzC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAEO,cAAc,CAAC,MAAc;QACpC,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxC,IAAI,CAAC;gBACJ,EAAE,CAAC,MAAM,CAAC,CAAC;YACZ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACjE,IAAA,aAAG,EAAC,OAAO,EAAE,sCAAsC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YAClF,CAAC;QACF,CAAC;IACF,CAAC;IAED,QAAQ,CAAC,UAAkB;QAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IAED,iBAAiB,CAAC,MAAc;QAC/B,qFAAqF;QACrF,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACxC,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC;gBAAE,SAAS;YAE9C,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;gBAC1B,IAAI,CAAC;oBACJ,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC;oBAC3C,OAAO,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;gBACrD,CAAC;gBAAC,MAAM,CAAC;oBACR,OAAO,IAAI,CAAC;gBACb,CAAC;YACF,CAAC;YAED,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;YAC3C,OAAO,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;QACrF,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI;QACH,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,iBAAiB;QAChB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACxC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC3B,CAAC;QACF,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAED,oBAAoB;QACnB,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAC1B,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACxC,IAAI,KAAK,CAAC,SAAS;gBAAE,iBAAiB,EAAE,CAAC;YACzC,IAAI,KAAK,CAAC,MAAM;gBAAE,cAAc,EAAE,CAAC;QACpC,CAAC;QACD,OAAO;YACN,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;YAC5B,iBAAiB;YACjB,cAAc;SACd,CAAC;IACH,CAAC;IAED,cAAc;QACb,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAEO,qBAAqB,CAAC,KAAgB;QAC7C,IAAI,CAAC,KAAK,CAAC,cAAc;YAAE,OAAO;QAClC,IAAI,CAAC;YACJ,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACR,wBAAwB;QACzB,CAAC;gBAAS,CAAC;YACV,KAAK,CAAC,cAAc,GAAG,SAAS,CAAC;QAClC,CAAC;IACF,CAAC;IAEO,KAAK,CAAC,uBAAuB,CACpC,MAAc,EACd,UAAkB,EAClB,cAAsC,EACtC,aAA0C;QAE1C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC;QAEvE,MAAM,UAAU,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC;QACvD,iBAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,MAAM,UAAU,GAAG,mBAAI,CAAC,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;QAE/D,IAAI,CAAC;YACJ,MAAM,cAAc,GAAG,2BAA2B,EAAE,CAAC;YACrD,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;gBAClC,MAAM,IAAI,KAAK,CACd,iDAAiD,MAAM,yDAAyD;oBAChH,kFAAkF,UAAU,EAAE,CAC9F,CAAC;YACH,CAAC;YAED,MAAM,MAAM,GAAG,IAAA,sCAAoB,EAAiD,UAAU,EAAE;gBAC/F,cAAc,EAAE,CAAC;gBACjB,UAAU,EAAE,EAAE;gBACd,KAAK,EAAE,uBAAuB;aAC9B,CAAC,CAAC;YAEH,IAAI,MAAM,EAAE,CAAC;gBACZ,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;oBAC1C,MAAM,IAAI,KAAK,CACd,qBAAqB,MAAM,mGAAmG,UAAU,EAAE,CAC1I,CAAC;gBACH,CAAC;gBACD,IAAI,MAAM,CAAC,eAAe,KAAK,cAAc,EAAE,CAAC;oBAC/C,MAAM,IAAI,KAAK,CACd,qBAAqB,MAAM,+BAA+B,MAAM,CAAC,eAAe,gCAAgC,cAAc,4CAA4C,UAAU,EAAE,CACtL,CAAC;gBACH,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,IAAA,uCAAqB,EAAC,UAAU,EAAE,CAAC,EAAE;oBACpC,eAAe,EAAE,cAAc;oBAC/B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACnC,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,MAAM,GAAG,YAAY,KAAK;gBACzB,CAAC,CAAC,GAAG;gBACL,CAAC,CAAC,IAAI,KAAK,CACV,gDAAgD,MAAM,MAAM,MAAM,CAAC,GAAG,CAAC,4CAA4C,UAAU,EAAE,CAC/H,CAAC;QACJ,CAAC;QAED,IAAI,iBAAiB,GAAY,QAAQ,KAAK,IAAI,CAAC;QACnD,IAAI,cAAc,GAAQ,SAAS,CAAC;QAEpC,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,QAAQ,KAAK,KAAK,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,qBAAqB,EAAE,CAAC,EAAE,CAAC;YACtG,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YACnD,cAAc,GAAG;gBAChB,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO;gBACvB,IAAI,EAAE,GAAG,EAAE;oBACV,IAAI,CAAC;wBACJ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC9B,CAAC;oBAAC,MAAM,CAAC;wBACR,wBAAwB;oBACzB,CAAC;oBACD,UAAU,CAAC,GAAG,EAAE;wBACf,IAAI,CAAC;4BACJ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;wBAC9B,CAAC;wBAAC,MAAM,CAAC;4BACR,wBAAwB;wBACzB,CAAC;oBACF,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;gBAClB,CAAC;aACD,CAAC;YACF,iBAAiB,GAAG,KAAK,CAAC;YAC1B,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;gBACxB,IAAA,aAAG,EAAC,MAAM,EAAE,6EAA6E,EAAE;oBAC1F,MAAM;oBACN,MAAM;oBACN,UAAU;iBACV,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;QAED,IAAA,aAAG,EAAC,MAAM,EAAE,8BAA8B,EAAE;YAC3C,MAAM;YACN,MAAM;YACN,UAAU;YACV,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,QAAQ;YACR,iBAAiB;YACjB,cAAc,EAAE,CAAC,CAAC,cAAc;SAChC,CAAC,CAAC;QAEH,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,mBAAI,CAAC,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;YACzD,IAAI,WAAoC,CAAC;YAEzC,MAAM,YAAY,GAAG,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACnD,MAAM,2BAA2B,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;gBAC9D,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,YAAY;oBACb,CAAC,CAAC,CAAC,YAAY,CAAC;oBAChB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAEb,MAAM,gBAAgB,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC;YAC3D,MAAM,iBAAiB,GAAG,gBAAgB;gBACzC,CAAC,CAAC;oBACA,QAAQ,EAAE,gBAAgB,CAAC,KAAK;oBAChC,QAAQ,EAAE,gBAAgB,CAAC,KAAK;oBAChC,SAAS,EAAE,gBAAgB,CAAC,MAAM;oBAClC,SAAS,EAAE,gBAAgB,CAAC,MAAM;iBAClC;gBACF,CAAC,CAAC,SAAS,CAAC;YAEb,IAAI,CAAC;gBACJ,MAAM,oBAAoB,GAAG,IAAA,sCAAoB,EAAc,MAAM,EAAE;oBACtE,cAAc,EAAE,CAAC;oBACjB,UAAU,EAAE;wBACX,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAkB;qBAC9B;oBACD,KAAK,EAAE,qBAAqB;iBAC5B,CAAC,CAAC;gBACH,WAAW,GAAG,oBAAoB,IAAI,SAAS,CAAC;gBAChD,IAAI,WAAW,EAAE,CAAC;oBACjB,IAAA,aAAG,EAAC,MAAM,EAAE,8BAA8B,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;gBACjE,CAAC;YACF,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,MAAM,GAAG,YAAY,KAAK;oBACzB,CAAC,CAAC,GAAG;oBACL,CAAC,CAAC,IAAI,KAAK,CAAC,wCAAwC,MAAM,MAAM,MAAM,CAAC,GAAG,CAAC,YAAY,MAAM,YAAY,CAAC,CAAC;YAC7G,CAAC;YAED,IAAI,CAAC,WAAW,EAAE,CAAC;gBAClB,WAAW,GAAG,IAAA,qCAAmB,EAAC,SAAS,EAAE;oBAC5C,gBAAgB,EAAE,2BAA2B;oBAC7C,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC3D,CAAC,CAAC;gBACH,IAAI,CAAC;oBACJ,IAAA,uCAAqB,EAAC,MAAM,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;oBAC9C,IAAA,aAAG,EAAC,MAAM,EAAE,4CAA4C,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC/E,CAAC;gBAAC,MAAM,CAAC;oBACR,IAAA,aAAG,EAAC,MAAM,EAAE,oDAAoD,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;gBACvF,CAAC;YACF,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,IAAA,2BAAa,EAAC;gBAChC,QAAQ,EAAE,iBAAiB;gBAC3B,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,cAAc,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpE,EAAE,EAAE,YAAY,IAAI,MAAM;gBAC1B,QAAQ,EAAE,MAAM,CAAC,mBAAmB,CAAC,QAAQ,IAAI,IAAI;gBACrD,GAAG,CAAC,MAAM,CAAC,mBAAmB,CAAC,UAAU,KAAK,SAAS;oBACtD,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE;oBACxD,CAAC,CAAC,EAAE,CAAC;gBACN,YAAY,EAAE,IAAI;gBAClB,KAAK,EAAE,KAAK,IAAI,SAAS;gBACzB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,WAAW;aACX,CAAC,CAAC;YAEH,MAAM,iBAAiB,GAA6B;gBACnD,GAAI,IAA4C;gBAChD,GAAI,cAAmD;gBACvD,eAAe,EAAE,IAAI;gBACrB,aAAa,EAAE,MAAM,CAAC,YAAY;aAClC,CAAC;YAEF,MAAM,OAAO,GAAG,MAAM,yBAAO,CAAC,uBAAuB,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;YACrF,IAAA,aAAG,EAAC,MAAM,EAAE,6BAA6B,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;YACrG,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;QACpC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,IAAI,cAAc,EAAE,CAAC;gBACpB,IAAI,CAAC;oBACJ,cAAc,CAAC,IAAI,EAAE,CAAC;gBACvB,CAAC;gBAAC,MAAM,CAAC;oBACR,wBAAwB;gBACzB,CAAC;YACF,CAAC;YACD,MAAM,GAAG,CAAC;QACX,CAAC;IACF,CAAC;IAED,KAAK,CAAC,cAAc,CACnB,MAAc,EACd,QAA8B,EAC9B,UAAmB,EACnB,OAA+B,EAC/B,aAA0C;QAE1C,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,gBAAgB,GAAG,UAAU,IAAI,UAAU,CAAC;QAClD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAClD,CAAC;QAED,qFAAqF;QACrF,MAAM,cAAc,GAAa,EAAE,CAAC;QACpC,KAAK,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YACvD,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBACjC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACjC,CAAC;QACF,CAAC;QACD,KAAK,MAAM,UAAU,IAAI,cAAc,EAAE,CAAC;YACzC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QACrC,CAAC;QAED,4DAA4D;QAC5D,OAAO,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;IACjF,CAAC;IAEO,KAAK,CAAC,aAAa;QAC1B,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,YAAY;YAAE,OAAO;QAE3C,IAAI,GAAG,GAAqB,IAAI,CAAC;QACjC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACxC,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM;gBAAE,SAAS;YAC9C,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU;gBAAE,GAAG,GAAG,KAAK,CAAC;QAC5D,CAAC;QACD,IAAI,CAAC,GAAG;YAAE,OAAO;QAEjB,IAAA,aAAG,EAAC,MAAM,EAAE,mCAAmC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;QACrG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACpC,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,aAAa,CAClB,UAAkB,EAClB,MAAc,EACd,OAA+B,EAC/B,aAA0C,EAC1C,MAAM,GAAG,KAAK,EACd,gBAAyB;QAEzB,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QAEtC,IAAI,KAAK,EAAE,CAAC;YACX,IAAI,MAAM,EAAE,CAAC;gBACZ,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;gBACpB,KAAK,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;YAC3C,CAAC;YACD,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC9B,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBACrB,KAAK,CAAC,OAAO,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC;gBACtC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;gBAC5B,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC9B,OAAO,KAAK,CAAC;YACd,CAAC;YAED,qDAAqD;YACrD,IAAI,CAAC;gBACJ,qDAAqD;gBACrD,KAAK,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC5B,CAAC;YAAC,MAAM,CAAC;gBACR,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAC7B,KAAK,GAAG,SAAS,CAAC;YACnB,CAAC;QACF,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACX,IAAI,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC;gBAC1C,IAAA,aAAG,EAAC,MAAM,EAAE,mEAAmE,EAAE;oBAChF,MAAM,EAAE,UAAU;oBAClB,UAAU;oBACV,UAAU,EAAE,KAAK,CAAC,UAAU;iBAC5B,CAAC,CAAC;YACJ,CAAC;YACD,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC;QACd,CAAC;QAED,MAAM,UAAU,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAc;YAC3B,OAAO,EAAE,IAAiC;YAC1C,MAAM,EAAE,UAAU;YAClB,UAAU;YACV,UAAU;YACV,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;YACtB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,MAAM;YACN,gBAAgB;YAChB,WAAW,EAAE,aAAa,IAAI,IAAI;YAClC,WAAW,EAAE,IAAI;SACjB,CAAC;QAEF,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,CAAC;aAC/F,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE;YACrC,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;YAC3B,QAAQ,CAAC,cAAc,GAAG,cAAc,CAAC;YACzC,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;YAC/B,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACjC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACxB,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;gBACrC,IAAA,aAAG,EAAC,MAAM,EAAE,2BAA2B,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;gBACzF,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC;YACH,OAAO,OAAO,CAAC;QAChB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACd,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC7B,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,IAAA,aAAG,EAAC,OAAO,EAAE,kCAAkC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YACjH,MAAM,GAAG,CAAC;QACX,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACpC,MAAM,QAAQ,CAAC,SAAS,CAAC;QACzB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3B,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,UAAkB;QACpC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM;YAAE,OAAO;QAEnC,IAAI,CAAC;YACJ,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBACrB,MAAM,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBACtC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;YAC7B,CAAC;YACD,MAAM,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC9C,CAAC;gBAAS,CAAC;YACV,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAClC,8FAA8F;YAC9F,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC/C,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;gBAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAC7B,IAAA,aAAG,EAAC,MAAM,EAAE,sCAAsC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;YACrI,CAAC;iBAAM,CAAC;gBACP,IAAA,aAAG,EAAC,MAAM,EAAE,kDAAkD,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;YACjJ,CAAC;QACF,CAAC;IACF,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,UAAkB,EAAE,iBAAyB,EAAE,kBAA2B;QACrG,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,IAAI,KAAK,CAAC,SAAS,KAAK,iBAAiB;YAAE,OAAO;QAClD,mFAAmF;QACnF,IAAI,kBAAkB,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,KAAK,kBAAkB;YAAE,OAAO;QACxF,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;IAED,mBAAmB,CAAC,MAAc,EAAE,QAA6B;QAChE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,UAAkB,EAAE,UAAmB;QAC/D,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,EAAE,MAAM;YAAE,OAAO;QAC3B,IAAI,UAAU,IAAI,KAAK,CAAC,gBAAgB,KAAK,UAAU;YAAE,OAAO;QAChE,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;QACrB,KAAK,CAAC,gBAAgB,GAAG,SAAS,CAAC;QACnC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,MAAc;QACxC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAClC,qCAAqC;QACrC,MAAM,cAAc,GAAa,EAAE,CAAC;QACpC,KAAK,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YACvD,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAClD,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACjC,CAAC;QACF,CAAC;QACD,KAAK,MAAM,UAAU,IAAI,cAAc,EAAE,CAAC;YACzC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QACrC,CAAC;IACF,CAAC;IAED,KAAK,CAAC,0BAA0B,CAAC,MAAc,EAAE,UAAmB;QACnE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAClC,4CAA4C;QAC5C,MAAM,cAAc,GAAa,EAAE,CAAC;QACpC,KAAK,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YACvD,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjD,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,gBAAgB,KAAK,UAAU,EAAE,CAAC;oBAC1D,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACjC,CAAC;YACF,CAAC;QACF,CAAC;QACD,KAAK,MAAM,UAAU,IAAI,cAAc,EAAE,CAAC;YACzC,MAAM,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACvD,CAAC;IACF,CAAC;IAED,KAAK,CAAC,QAAQ;QACb,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACjD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACxC,IAAI,KAAK,EAAE,MAAM,EAAE,CAAC;gBACnB,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;gBACrB,KAAK,CAAC,gBAAgB,GAAG,SAAS,CAAC;YACpC,CAAC;YACD,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QACrC,CAAC;IACF,CAAC;CACD;AA3eD,kCA2eC;AAEY,QAAA,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAE7C,SAAgB,iBAAiB,CAAC,MAAc;IAC/C,OAAO,mBAAW,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC9C,CAAC"}
@@ -1,5 +1,7 @@
1
1
  import type { Page } from 'playwright-core';
2
2
  import type { DownloadInfo, DownloadListFilters } from '../types';
3
+ export declare function markDownloadsStaged(tabId: string): void;
4
+ export declare function commitStagedDownloads(tabId: string): void;
3
5
  export declare function buildContentUrl(id: string, userId: string): string;
4
6
  export declare function registerDownloadListener(tabId: string, userId: string, page: Page): void;
5
7
  export declare function upsertDownload(info: DownloadInfo): void;
@@ -1 +1 @@
1
- {"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../../src/services/download.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAY,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAmBlE,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAElE;AA2PD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAiFxF;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAyBvD;AAuCD,wBAAgB,aAAa,CAAC,OAAO,EAAE,mBAAmB,GAAG;IAC5D,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CAC/E,CAuBA;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAK3E;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWzE;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAclE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY,EAAE,CAGlF;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAmB7D;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAiB3D;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,GAAE,MAAe,GAAG,MAAM,CAAC,OAAO,CAO/F;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAK1C"}
1
+ {"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../../src/services/download.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAY,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAuBlE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAEvD;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAEzD;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAElE;AA8QD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAiFxF;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAyBvD;AAwCD,wBAAgB,aAAa,CAAC,OAAO,EAAE,mBAAmB,GAAG;IAC5D,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CAC/E,CAuBA;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAM3E;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWzE;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAclE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY,EAAE,CAKlF;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAmB7D;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAkB3D;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,GAAE,MAAe,GAAG,MAAM,CAAC,OAAO,CAO/F;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAK1C"}