cuelo 0.10.13 → 0.10.14

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 (75) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +7 -7
  3. package/.next/build-manifest.json +2 -2
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/required-server-files.js +1 -1
  6. package/.next/required-server-files.json +1 -1
  7. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  8. package/.next/server/app/_global-error.html +1 -1
  9. package/.next/server/app/_global-error.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  15. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  16. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  17. package/.next/server/app/_not-found.html +1 -1
  18. package/.next/server/app/_not-found.rsc +2 -2
  19. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  20. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  21. package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  22. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  23. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  24. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  25. package/.next/server/app/api/updates/route.js +1 -1
  26. package/.next/server/app/index.html +1 -1
  27. package/.next/server/app/index.rsc +4 -4
  28. package/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  29. package/.next/server/app/index.segments/_full.segment.rsc +4 -4
  30. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  31. package/.next/server/app/index.segments/_index.segment.rsc +2 -2
  32. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  33. package/.next/server/app/office/page_client-reference-manifest.js +1 -1
  34. package/.next/server/app/office-preview/page_client-reference-manifest.js +1 -1
  35. package/.next/server/app/office-preview.html +1 -1
  36. package/.next/server/app/office-preview.rsc +2 -2
  37. package/.next/server/app/office-preview.segments/_full.segment.rsc +2 -2
  38. package/.next/server/app/office-preview.segments/_head.segment.rsc +1 -1
  39. package/.next/server/app/office-preview.segments/_index.segment.rsc +2 -2
  40. package/.next/server/app/office-preview.segments/_tree.segment.rsc +1 -1
  41. package/.next/server/app/office-preview.segments/office-preview/__PAGE__.segment.rsc +1 -1
  42. package/.next/server/app/office-preview.segments/office-preview.segment.rsc +1 -1
  43. package/.next/server/app/office.html +1 -1
  44. package/.next/server/app/office.rsc +4 -4
  45. package/.next/server/app/office.segments/_full.segment.rsc +4 -4
  46. package/.next/server/app/office.segments/_head.segment.rsc +1 -1
  47. package/.next/server/app/office.segments/_index.segment.rsc +2 -2
  48. package/.next/server/app/office.segments/_tree.segment.rsc +1 -1
  49. package/.next/server/app/office.segments/office/__PAGE__.segment.rsc +3 -3
  50. package/.next/server/app/office.segments/office.segment.rsc +1 -1
  51. package/.next/server/app/page_client-reference-manifest.js +1 -1
  52. package/.next/server/app/recover/page_client-reference-manifest.js +1 -1
  53. package/.next/server/app/recover.html +1 -1
  54. package/.next/server/app/recover.rsc +2 -2
  55. package/.next/server/app/recover.segments/_full.segment.rsc +2 -2
  56. package/.next/server/app/recover.segments/_head.segment.rsc +1 -1
  57. package/.next/server/app/recover.segments/_index.segment.rsc +2 -2
  58. package/.next/server/app/recover.segments/_tree.segment.rsc +1 -1
  59. package/.next/server/app/recover.segments/recover/__PAGE__.segment.rsc +1 -1
  60. package/.next/server/app/recover.segments/recover.segment.rsc +1 -1
  61. package/.next/server/app-paths-manifest.json +7 -7
  62. package/.next/server/chunks/5489.js +2 -2
  63. package/.next/server/middleware-build-manifest.js +1 -1
  64. package/.next/server/pages/404.html +1 -1
  65. package/.next/server/pages/500.html +1 -1
  66. package/.next/server/server-reference-manifest.json +1 -1
  67. package/.next/static/chunks/{9575-f75f250a07112d4d.js → 9575-25a582fa4fa508a9.js} +2 -2
  68. package/.next/static/chunks/app/{layout-4c592bc979a40fac.js → layout-bbd6ea2d6385b3a7.js} +1 -1
  69. package/.next/trace +108 -108
  70. package/.next/trace-build +1 -1
  71. package/Tools/CUELO_Setup/files/native-runtime-patch.js +1 -1
  72. package/Tools/OMP_Global_Config/patches/apply-core-patch.mjs +347 -0
  73. package/package.json +1 -1
  74. /package/.next/static/{B90WNxaFZ8Tg4XO_DiNPQ → cG1jGEwRHRT_Sz9zPk_S5}/_buildManifest.js +0 -0
  75. /package/.next/static/{B90WNxaFZ8Tg4XO_DiNPQ → cG1jGEwRHRT_Sz9zPk_S5}/_ssgManifest.js +0 -0
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-webpack","duration":118293863,"timestamp":714059,"id":14,"parentId":1,"tags":{},"startTime":1791939358075,"traceId":"4479964e48aa09a4"},{"name":"run-typescript","duration":22163686,"timestamp":119405466,"id":11124,"parentId":1,"tags":{},"startTime":1791939476767,"traceId":"4479964e48aa09a4"},{"name":"static-check","duration":4360797,"timestamp":141660966,"id":11127,"parentId":1,"tags":{},"startTime":1791939499022,"traceId":"4479964e48aa09a4"},{"name":"static-generation","duration":12993696,"timestamp":146124342,"id":11303,"parentId":1,"tags":{},"startTime":1791939503486,"traceId":"4479964e48aa09a4"},{"name":"collect-build-traces","duration":22368011,"timestamp":146093136,"id":11300,"parentId":1,"tags":{},"startTime":1791939503454,"traceId":"4479964e48aa09a4"},{"name":"telemetry-flush","duration":89,"timestamp":168466111,"id":11312,"parentId":1,"tags":{},"startTime":1791939525827,"traceId":"4479964e48aa09a4"},{"name":"next-build","duration":167872935,"timestamp":593287,"id":1,"tags":{"buildMode":"default","version":"16.2.12","bundler":"webpack","has-custom-webpack-config":"true","use-build-worker":"false"},"startTime":1791939357955,"traceId":"4479964e48aa09a4"}]
1
+ [{"name":"run-webpack","duration":92164501,"timestamp":525405,"id":14,"parentId":1,"tags":{},"startTime":1791974915829,"traceId":"361adc4111d588f6"},{"name":"run-typescript","duration":16396047,"timestamp":93076344,"id":11124,"parentId":1,"tags":{},"startTime":1791975008380,"traceId":"361adc4111d588f6"},{"name":"static-check","duration":3392469,"timestamp":109557186,"id":11127,"parentId":1,"tags":{},"startTime":1791975024860,"traceId":"361adc4111d588f6"},{"name":"static-generation","duration":9880906,"timestamp":113055589,"id":11303,"parentId":1,"tags":{},"startTime":1791975028359,"traceId":"361adc4111d588f6"},{"name":"collect-build-traces","duration":16855535,"timestamp":113017080,"id":11300,"parentId":1,"tags":{},"startTime":1791975028320,"traceId":"361adc4111d588f6"},{"name":"telemetry-flush","duration":60,"timestamp":129876228,"id":11312,"parentId":1,"tags":{},"startTime":1791975045179,"traceId":"361adc4111d588f6"},{"name":"next-build","duration":129441926,"timestamp":434382,"id":1,"tags":{"buildMode":"default","version":"16.2.12","bundler":"webpack","has-custom-webpack-config":"true","use-build-worker":"false"},"startTime":1791974915738,"traceId":"361adc4111d588f6"}]
@@ -9,7 +9,7 @@ const MEMORY_RE = /(const phase1Model = await resolveMemoryModel\(\{[^}]*?fallba
9
9
  const MEMORY_DONE = /const phase1Model = await resolveMemoryModel\(\{[^}]*?fallbackRole: "smol"/;
10
10
  const EXPECTED = {
11
11
  name: 'cuelo',
12
- version: '0.10.13',
12
+ version: '0.10.14',
13
13
  distribution: 'cuelo',
14
14
  coreVersion: '18.10.4',
15
15
  };
@@ -1344,6 +1344,353 @@ Project-wide validation is the main agent's job, run once after all subagents la
1344
1344
  });`,
1345
1345
  }],
1346
1346
  },
1347
+ // 2026-10-14 공개 이슈 #25: browser.run 이 끝날 때 run 동안 page.on 으로 붙은 listener 를 모두 떼면서 Puppeteer 가
1348
+ // request 마다 자기 handler 안에서 단 완료 구독(requestfinished·requestfailed·response)까지 뗐다. 앞 run 에서 시작해
1349
+ // 그 뒤에 끝난 요청이 in-flight 로 남아 다음 run 의 waitForNetworkIdle 이 타임아웃된다. upstream b32ac7d·05fda95·
1350
+ // 2a7ad69(18.10.4 이후 main, 아직 정식판 없음)의 createRunPageScope 를 그대로 옮긴다. 아래 세 항목이 한 묶음이다.
1351
+ // upstream 정식판이 같은 함수를 실으면 marker 가 순정에서 applied 로 읽히므로, 그 판으로 올릴 때 RETIRE 한다.
1352
+ // 회귀 시험: core-browser-run-scope-test.ts(src·dist 양쪽, 실제 puppeteer-core Page·HTTPRequest).
1353
+ {
1354
+ file: "src/tools/browser/tab-worker.ts",
1355
+ marker: "\tFrame,\n\tHTTPRequest,\n\tHTTPResponse,",
1356
+ anchor: "\tFrame,\n\tHTTPResponse,",
1357
+ patched: "\tFrame,\n\tHTTPRequest,\n\tHTTPResponse,",
1358
+ },
1359
+ {
1360
+ file: "src/tools/browser/tab-worker.ts",
1361
+ marker: '\tconst emitDescriptor = Object.getOwnPropertyDescriptor(page, "emit");',
1362
+ anchor: `/**
1363
+ * Expose the tab page while retaining every event handler created by this run.
1364
+ * The facade removes only run-owned listeners, preserving worker-level routing,
1365
+ * request logging, dialogs, and console capture. Raw interception is restored
1366
+ * to the tab's persistent route/allowlist state after a run that changed it.
1367
+ */
1368
+ function createRunPageScope(page: Page, restoreInterception: () => Promise<void>): RunPageScope {
1369
+ const handlers = new Map<unknown, unknown[]>();
1370
+ const on = page.on;
1371
+ const off = page.off;
1372
+ const once = page.once;
1373
+ const setRequestInterception = page.setRequestInterception;
1374
+ const onDescriptor = Object.getOwnPropertyDescriptor(page, "on");
1375
+ const offDescriptor = Object.getOwnPropertyDescriptor(page, "off");
1376
+ const onceDescriptor = Object.getOwnPropertyDescriptor(page, "once");
1377
+ const removeAllDescriptor = Object.getOwnPropertyDescriptor(page, "removeAllListeners");
1378
+ const interceptionDescriptor = Object.getOwnPropertyDescriptor(page, "setRequestInterception");
1379
+ let interceptionChanged = false;
1380
+
1381
+ const remember = (type: unknown, handler: unknown): void => {
1382
+ const owned = handlers.get(type);
1383
+ if (owned) owned.push(handler);
1384
+ else handlers.set(type, [handler]);
1385
+ };
1386
+ const forget = (type: unknown, handler?: unknown): void => {
1387
+ const owned = handlers.get(type);
1388
+ if (!owned) return;
1389
+ if (handler === undefined) {
1390
+ for (const registered of owned) Reflect.apply(off, page, [type, registered]);
1391
+ handlers.delete(type);
1392
+ return;
1393
+ }
1394
+ const index = owned.lastIndexOf(handler);
1395
+ if (index < 0) return;
1396
+ Reflect.apply(off, page, [type, handler]);
1397
+ owned.splice(index, 1);
1398
+ if (owned.length === 0) handlers.delete(type);
1399
+ };
1400
+
1401
+ Object.defineProperties(page, {
1402
+ on: {
1403
+ configurable: true,
1404
+ value: (type: unknown, handler: unknown): Page => {
1405
+ Reflect.apply(on, page, [type, handler]);
1406
+ remember(type, handler);
1407
+ return page;
1408
+ },
1409
+ },
1410
+ once: {
1411
+ configurable: true,
1412
+ value: (type: unknown, handler: unknown): Page => {
1413
+ if (typeof handler !== "function") {
1414
+ Reflect.apply(once, page, [type, handler]);
1415
+ return page;
1416
+ }
1417
+ const wrapper = (event: unknown): void => {
1418
+ forget(type, wrapper);
1419
+ Reflect.apply(handler, page, [event]);
1420
+ };
1421
+ remember(type, wrapper);
1422
+ Reflect.apply(on, page, [type, wrapper]);
1423
+ return page;
1424
+ },
1425
+ },
1426
+ off: {
1427
+ configurable: true,
1428
+ value: (type: unknown, handler?: unknown): Page => {
1429
+ forget(type, handler);
1430
+ return page;
1431
+ },
1432
+ },
1433
+ removeAllListeners: {
1434
+ configurable: true,
1435
+ value: (type?: unknown): Page => {
1436
+ if (type !== undefined) forget(type);
1437
+ else {
1438
+ // Map iteration tolerates deletion of the current key by forget().
1439
+ for (const ownedType of handlers.keys()) forget(ownedType);
1440
+ }
1441
+ return page;
1442
+ },
1443
+ },
1444
+ setRequestInterception: {
1445
+ configurable: true,
1446
+ value: (value: boolean): Promise<void> => {
1447
+ interceptionChanged = true;
1448
+ return Reflect.apply(setRequestInterception, page, [value]);
1449
+ },
1450
+ },
1451
+ });
1452
+
1453
+ return {
1454
+ page,
1455
+ detach() {
1456
+ if (onDescriptor) Object.defineProperty(page, "on", onDescriptor);
1457
+ else Reflect.deleteProperty(page, "on");
1458
+ if (offDescriptor) Object.defineProperty(page, "off", offDescriptor);
1459
+ else Reflect.deleteProperty(page, "off");
1460
+ if (onceDescriptor) Object.defineProperty(page, "once", onceDescriptor);
1461
+ else Reflect.deleteProperty(page, "once");
1462
+ if (removeAllDescriptor) Object.defineProperty(page, "removeAllListeners", removeAllDescriptor);
1463
+ else Reflect.deleteProperty(page, "removeAllListeners");
1464
+ if (interceptionDescriptor) Object.defineProperty(page, "setRequestInterception", interceptionDescriptor);
1465
+ else Reflect.deleteProperty(page, "setRequestInterception");
1466
+ for (const [type, owned] of handlers) {
1467
+ for (const handler of owned) Reflect.apply(off, page, [type, handler]);
1468
+ }
1469
+ handlers.clear();
1470
+ },
1471
+ async restoreInterception() {
1472
+ if (!interceptionChanged) return;
1473
+ try {
1474
+ await withTimeout(
1475
+ restoreInterception(),
1476
+ REQUEST_INTERCEPTION_CLEANUP_TIMEOUT_MS,
1477
+ "Timed out restoring browser request interception",
1478
+ );
1479
+ } catch (error) {
1480
+ throw new RequestInterceptionCleanupError(
1481
+ "Failed to restore browser request interception after browser.run",
1482
+ {
1483
+ error: error instanceof Error ? error.message : String(error),
1484
+ },
1485
+ );
1486
+ }
1487
+ },
1488
+ };
1489
+ }`,
1490
+ patched: `/**
1491
+ * Expose the tab page while retaining every event handler created by this run.
1492
+ * The facade removes only run-owned listeners, preserving worker-level routing,
1493
+ * request logging, dialogs, and console capture. Raw interception is restored
1494
+ * to the tab's persistent route/allowlist state after a run that changed it.
1495
+ *
1496
+ * A listener added to the page while the run is attached is run-owned, whichever
1497
+ * reference reached the page, except one added while the page is delivering an
1498
+ * event to a handler the run did not add. Puppeteer's in-flight request tracking
1499
+ * subscribes to request completion from inside its own \`request\` handler; removing
1500
+ * those subscriptions with the run left \`waitForNetworkIdle\` waiting on a request
1501
+ * an earlier run started.
1502
+ */
1503
+ function createRunPageScope(page: Page, restoreInterception: () => Promise<void>): RunPageScope {
1504
+ const handlers = new Map<unknown, Function[]>();
1505
+ /**
1506
+ * The listener the page holds for each run-owned handler. It runs the handler with
1507
+ * \`delivering\` cleared, so what the handler registers stays run-owned. One per handler,
1508
+ * so duplicate registrations and removals keep puppeteer's own ordering.
1509
+ */
1510
+ const listeners = new Map<Function, (...args: unknown[]) => unknown>();
1511
+ const on = page.on;
1512
+ const off = page.off;
1513
+ const once = page.once;
1514
+ const emit = page.emit;
1515
+ const setRequestInterception = page.setRequestInterception;
1516
+ const onDescriptor = Object.getOwnPropertyDescriptor(page, "on");
1517
+ const offDescriptor = Object.getOwnPropertyDescriptor(page, "off");
1518
+ const onceDescriptor = Object.getOwnPropertyDescriptor(page, "once");
1519
+ const emitDescriptor = Object.getOwnPropertyDescriptor(page, "emit");
1520
+ const removeAllDescriptor = Object.getOwnPropertyDescriptor(page, "removeAllListeners");
1521
+ const interceptionDescriptor = Object.getOwnPropertyDescriptor(page, "setRequestInterception");
1522
+ let interceptionChanged = false;
1523
+ /** Set while the page delivers an event; a listener the run added clears it while it runs. */
1524
+ let delivering = false;
1525
+ const withDelivering = <T>(value: boolean, fn: () => T): T => {
1526
+ const outer = delivering;
1527
+ delivering = value;
1528
+ try {
1529
+ return fn();
1530
+ } finally {
1531
+ delivering = outer;
1532
+ }
1533
+ };
1534
+ const listenerFor = (handler: Function): ((...args: unknown[]) => unknown) => {
1535
+ let listener = listeners.get(handler);
1536
+ if (!listener) {
1537
+ listener = (...args: unknown[]): unknown =>
1538
+ withDelivering(false, () => Reflect.apply(handler, undefined, args));
1539
+ listeners.set(handler, listener);
1540
+ }
1541
+ return listener;
1542
+ };
1543
+ const remember = (type: unknown, handler: Function): void => {
1544
+ const owned = handlers.get(type);
1545
+ if (owned) owned.push(handler);
1546
+ else handlers.set(type, [handler]);
1547
+ Reflect.apply(on, page, [type, listenerFor(handler)]);
1548
+ };
1549
+ /** Remove run-owned registrations; reports whether any matched. */
1550
+ const forget = (type: unknown, handler?: unknown): boolean => {
1551
+ const owned = handlers.get(type);
1552
+ if (!owned) return false;
1553
+ if (handler === undefined) {
1554
+ for (const registered of owned) Reflect.apply(off, page, [type, listenerFor(registered)]);
1555
+ handlers.delete(type);
1556
+ return true;
1557
+ }
1558
+ const index = owned.findLastIndex(registered => registered === handler);
1559
+ if (index < 0) return false;
1560
+ Reflect.apply(off, page, [type, listenerFor(owned[index])]);
1561
+ owned.splice(index, 1);
1562
+ if (owned.length === 0) handlers.delete(type);
1563
+ return true;
1564
+ };
1565
+
1566
+ Object.defineProperties(page, {
1567
+ on: {
1568
+ configurable: true,
1569
+ value: (type: unknown, handler: unknown): Page => {
1570
+ if (delivering || typeof handler !== "function") Reflect.apply(on, page, [type, handler]);
1571
+ else remember(type, handler);
1572
+ return page;
1573
+ },
1574
+ },
1575
+ once: {
1576
+ configurable: true,
1577
+ value: (type: unknown, handler: unknown): Page => {
1578
+ if (delivering || typeof handler !== "function") {
1579
+ Reflect.apply(once, page, [type, handler]);
1580
+ return page;
1581
+ }
1582
+ const wrapper = (event: unknown): void => {
1583
+ forget(type, wrapper);
1584
+ Reflect.apply(handler, page, [event]);
1585
+ };
1586
+ remember(type, wrapper);
1587
+ return page;
1588
+ },
1589
+ },
1590
+ off: {
1591
+ configurable: true,
1592
+ value: (type: unknown, handler?: unknown): Page => {
1593
+ // Puppeteer's own subscriptions unsubscribe through here too.
1594
+ if (!forget(type, handler) && handler !== undefined) Reflect.apply(off, page, [type, handler]);
1595
+ return page;
1596
+ },
1597
+ },
1598
+ emit: {
1599
+ configurable: true,
1600
+ value: (type: unknown, event?: unknown): boolean => {
1601
+ // Puppeteer defers every \`request\` listener to an interception action that runs after
1602
+ // \`emit\` returns, so each action queued during \`emit\` keeps the delivery it came from.
1603
+ const request = type === "request" && typeof event === "object" ? (event as HTTPRequest | null) : null;
1604
+ const enqueue = request?.enqueueInterceptAction;
1605
+ if (!request || typeof enqueue !== "function") {
1606
+ return withDelivering(true, () => Reflect.apply(emit, page, [type, event]));
1607
+ }
1608
+ const enqueueDescriptor = Object.getOwnPropertyDescriptor(request, "enqueueInterceptAction");
1609
+ Object.defineProperty(request, "enqueueInterceptAction", {
1610
+ configurable: true,
1611
+ value: (action: () => unknown): void => {
1612
+ const queued = delivering;
1613
+ Reflect.apply(enqueue, request, [() => withDelivering(queued, action)]);
1614
+ },
1615
+ });
1616
+ try {
1617
+ return withDelivering(true, () => Reflect.apply(emit, page, [type, event]));
1618
+ } finally {
1619
+ // The tab's request log keeps requests well after the run; do not let them hold this scope.
1620
+ if (enqueueDescriptor) Object.defineProperty(request, "enqueueInterceptAction", enqueueDescriptor);
1621
+ else Reflect.deleteProperty(request, "enqueueInterceptAction");
1622
+ }
1623
+ },
1624
+ },
1625
+ removeAllListeners: {
1626
+ configurable: true,
1627
+ value: (type?: unknown): Page => {
1628
+ if (type !== undefined) forget(type);
1629
+ else {
1630
+ // Map iteration tolerates deletion of the current key by forget().
1631
+ for (const ownedType of handlers.keys()) forget(ownedType);
1632
+ }
1633
+ return page;
1634
+ },
1635
+ },
1636
+ setRequestInterception: {
1637
+ configurable: true,
1638
+ value: (value: boolean): Promise<void> => {
1639
+ interceptionChanged = true;
1640
+ return Reflect.apply(setRequestInterception, page, [value]);
1641
+ },
1642
+ },
1643
+ });
1644
+
1645
+ return {
1646
+ page,
1647
+ detach() {
1648
+ if (onDescriptor) Object.defineProperty(page, "on", onDescriptor);
1649
+ else Reflect.deleteProperty(page, "on");
1650
+ if (offDescriptor) Object.defineProperty(page, "off", offDescriptor);
1651
+ else Reflect.deleteProperty(page, "off");
1652
+ if (onceDescriptor) Object.defineProperty(page, "once", onceDescriptor);
1653
+ else Reflect.deleteProperty(page, "once");
1654
+ if (emitDescriptor) Object.defineProperty(page, "emit", emitDescriptor);
1655
+ else Reflect.deleteProperty(page, "emit");
1656
+ if (removeAllDescriptor) Object.defineProperty(page, "removeAllListeners", removeAllDescriptor);
1657
+ else Reflect.deleteProperty(page, "removeAllListeners");
1658
+ if (interceptionDescriptor) Object.defineProperty(page, "setRequestInterception", interceptionDescriptor);
1659
+ else Reflect.deleteProperty(page, "setRequestInterception");
1660
+ for (const [type, owned] of handlers) {
1661
+ for (const handler of owned) Reflect.apply(off, page, [type, listenerFor(handler)]);
1662
+ }
1663
+ handlers.clear();
1664
+ },
1665
+ async restoreInterception() {
1666
+ if (!interceptionChanged) return;
1667
+ try {
1668
+ await withTimeout(
1669
+ restoreInterception(),
1670
+ REQUEST_INTERCEPTION_CLEANUP_TIMEOUT_MS,
1671
+ "Timed out restoring browser request interception",
1672
+ );
1673
+ } catch (error) {
1674
+ throw new RequestInterceptionCleanupError(
1675
+ "Failed to restore browser request interception after browser.run",
1676
+ {
1677
+ error: error instanceof Error ? error.message : String(error),
1678
+ },
1679
+ );
1680
+ }
1681
+ },
1682
+ };
1683
+ }`,
1684
+ },
1685
+ {
1686
+ // 위 함수의 CLI 번들(dist/cli.js, Linux `omp`) 판. 축약본은 18.10.4 번들 그대로이고, 적용본은 위 patched 에서
1687
+ // 타입만 벗긴 것이다. 모듈 밖 이름 셋(withTimeout·REQUEST_INTERCEPTION_CLEANUP_TIMEOUT_MS·
1688
+ // RequestInterceptionCleanupError)만 이 번들의 축약 이름(ga·D$l·ies)으로 바꿨다.
1689
+ file: "dist/cli.js",
1690
+ marker: 'const emitDescriptor=Object.getOwnPropertyDescriptor(page,"emit")',
1691
+ anchor: `function B$l(e,t){let n=new Map,{on:s,off:o,once:r,setRequestInterception:i}=e,a=Object.getOwnPropertyDescriptor(e,"on"),l=Object.getOwnPropertyDescriptor(e,"off"),u=Object.getOwnPropertyDescriptor(e,"once"),p=Object.getOwnPropertyDescriptor(e,"removeAllListeners"),c=Object.getOwnPropertyDescriptor(e,"setRequestInterception"),d=!1,f=(g,h)=>{let y=n.get(g);if(y)y.push(h);else n.set(g,[h])},m=(g,h)=>{let y=n.get(g);if(!y)return;if(h===void 0){for(let b of y)Reflect.apply(o,e,[g,b]);n.delete(g);return}let T=y.lastIndexOf(h);if(T<0)return;if(Reflect.apply(o,e,[g,h]),y.splice(T,1),y.length===0)n.delete(g)};return Object.defineProperties(e,{on:{configurable:!0,value:(g,h)=>(Reflect.apply(s,e,[g,h]),f(g,h),e)},once:{configurable:!0,value:(g,h)=>{if(typeof h!=="function")return Reflect.apply(r,e,[g,h]),e;let y=(T)=>{m(g,y),Reflect.apply(h,e,[T])};return f(g,y),Reflect.apply(s,e,[g,y]),e}},off:{configurable:!0,value:(g,h)=>(m(g,h),e)},removeAllListeners:{configurable:!0,value:(g)=>{if(g!==void 0)m(g);else for(let h of n.keys())m(h);return e}},setRequestInterception:{configurable:!0,value:(g)=>(d=!0,Reflect.apply(i,e,[g]))}}),{page:e,detach(){if(a)Object.defineProperty(e,"on",a);else Reflect.deleteProperty(e,"on");if(l)Object.defineProperty(e,"off",l);else Reflect.deleteProperty(e,"off");if(u)Object.defineProperty(e,"once",u);else Reflect.deleteProperty(e,"once");if(p)Object.defineProperty(e,"removeAllListeners",p);else Reflect.deleteProperty(e,"removeAllListeners");if(c)Object.defineProperty(e,"setRequestInterception",c);else Reflect.deleteProperty(e,"setRequestInterception");for(let[g,h]of n)for(let y of h)Reflect.apply(o,e,[g,y]);n.clear()},async restoreInterception(){if(!d)return;try{await ga(t(),D$l,"Timed out restoring browser request interception")}catch(g){throw new ies("Failed to restore browser request interception after browser.run",{error:g instanceof Error?g.message:String(g)})}}}}`,
1692
+ patched: `function B$l(page,restoreInterception){const handlers=new Map;const listeners=new Map;const on=page.on;const off=page.off;const once=page.once;const emit=page.emit;const setRequestInterception=page.setRequestInterception;const onDescriptor=Object.getOwnPropertyDescriptor(page,"on");const offDescriptor=Object.getOwnPropertyDescriptor(page,"off");const onceDescriptor=Object.getOwnPropertyDescriptor(page,"once");const emitDescriptor=Object.getOwnPropertyDescriptor(page,"emit");const removeAllDescriptor=Object.getOwnPropertyDescriptor(page,"removeAllListeners");const interceptionDescriptor=Object.getOwnPropertyDescriptor(page,"setRequestInterception");let interceptionChanged=false;let delivering=false;const withDelivering=(value,fn)=>{const outer=delivering;delivering=value;try{return fn()}finally{delivering=outer}};const listenerFor=(handler)=>{let listener=listeners.get(handler);if(!listener){listener=(...args)=>withDelivering(false,()=>Reflect.apply(handler,undefined,args));listeners.set(handler,listener)}return listener};const remember=(type,handler)=>{const owned=handlers.get(type);if(owned)owned.push(handler);else handlers.set(type,[handler]);Reflect.apply(on,page,[type,listenerFor(handler)])};const forget=(type,handler)=>{const owned=handlers.get(type);if(!owned)return false;if(handler===undefined){for(const registered of owned)Reflect.apply(off,page,[type,listenerFor(registered)]);handlers.delete(type);return true}const index=owned.findLastIndex((registered)=>registered===handler);if(index<0)return false;Reflect.apply(off,page,[type,listenerFor(owned[index])]);owned.splice(index,1);if(owned.length===0)handlers.delete(type);return true};Object.defineProperties(page,{on:{configurable:true,value:(type,handler)=>{if(delivering||typeof handler!=="function")Reflect.apply(on,page,[type,handler]);else remember(type,handler);return page}},once:{configurable:true,value:(type,handler)=>{if(delivering||typeof handler!=="function"){Reflect.apply(once,page,[type,handler]);return page}const wrapper=(event)=>{forget(type,wrapper);Reflect.apply(handler,page,[event])};remember(type,wrapper);return page}},off:{configurable:true,value:(type,handler)=>{if(!forget(type,handler)&&handler!==undefined)Reflect.apply(off,page,[type,handler]);return page}},emit:{configurable:true,value:(type,event)=>{const request=type==="request"&&typeof event==="object"?event:null;const enqueue=request?.enqueueInterceptAction;if(!request||typeof enqueue!=="function"){return withDelivering(true,()=>Reflect.apply(emit,page,[type,event]))}const enqueueDescriptor=Object.getOwnPropertyDescriptor(request,"enqueueInterceptAction");Object.defineProperty(request,"enqueueInterceptAction",{configurable:true,value:(action)=>{const queued=delivering;Reflect.apply(enqueue,request,[()=>withDelivering(queued,action)])}});try{return withDelivering(true,()=>Reflect.apply(emit,page,[type,event]))}finally{if(enqueueDescriptor)Object.defineProperty(request,"enqueueInterceptAction",enqueueDescriptor);else Reflect.deleteProperty(request,"enqueueInterceptAction")}}},removeAllListeners:{configurable:true,value:(type)=>{if(type!==undefined)forget(type);else{for(const ownedType of handlers.keys())forget(ownedType)}return page}},setRequestInterception:{configurable:true,value:(value)=>{interceptionChanged=true;return Reflect.apply(setRequestInterception,page,[value])}}});return{page,detach(){if(onDescriptor)Object.defineProperty(page,"on",onDescriptor);else Reflect.deleteProperty(page,"on");if(offDescriptor)Object.defineProperty(page,"off",offDescriptor);else Reflect.deleteProperty(page,"off");if(onceDescriptor)Object.defineProperty(page,"once",onceDescriptor);else Reflect.deleteProperty(page,"once");if(emitDescriptor)Object.defineProperty(page,"emit",emitDescriptor);else Reflect.deleteProperty(page,"emit");if(removeAllDescriptor)Object.defineProperty(page,"removeAllListeners",removeAllDescriptor);else Reflect.deleteProperty(page,"removeAllListeners");if(interceptionDescriptor)Object.defineProperty(page,"setRequestInterception",interceptionDescriptor);else Reflect.deleteProperty(page,"setRequestInterception");for(const[type,owned]of handlers){for(const handler of owned)Reflect.apply(off,page,[type,listenerFor(handler)])}handlers.clear()},async restoreInterception(){if(!interceptionChanged)return;try{await ga(restoreInterception(),D$l,"Timed out restoring browser request interception")}catch(error){throw new ies("Failed to restore browser request interception after browser.run",{error:error instanceof Error?error.message:String(error)})}}}}`,
1693
+ },
1347
1694
  {
1348
1695
  // 도구 프롬프트가 "target 없으면 visible 탭을 채택한다"고 명시한다.
1349
1696
  // 위 패치로 사실이 아니게 되므로 같이 고친다.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cuelo",
3
- "version": "0.10.13",
3
+ "version": "0.10.14",
4
4
  "description": "CUELO — open-source AI coding agent workspace and harness for omp (oh-my-pi)",
5
5
  "homepage": "https://github.com/gim47656-ship-it/CUELO#readme",
6
6
  "repository": {