@reticlehq/browser 2.0.1 → 2.2.0

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 (179) hide show
  1. package/NOTICE +5 -0
  2. package/dist/actions/actions-dom.d.ts.map +1 -1
  3. package/dist/actions/actions-dom.js +3 -20
  4. package/dist/actions/actions-dom.js.map +1 -1
  5. package/dist/actions/actions.d.ts +1 -1
  6. package/dist/actions/actions.d.ts.map +1 -1
  7. package/dist/actions/actions.js +37 -19
  8. package/dist/actions/actions.js.map +1 -1
  9. package/dist/commands/commands.d.ts +2 -0
  10. package/dist/commands/commands.d.ts.map +1 -1
  11. package/dist/commands/commands.js +30 -31
  12. package/dist/commands/commands.js.map +1 -1
  13. package/dist/dom/a11y.d.ts +17 -6
  14. package/dist/dom/a11y.d.ts.map +1 -1
  15. package/dist/dom/a11y.js +68 -32
  16. package/dist/dom/a11y.js.map +1 -1
  17. package/dist/dom/auto-anchor.d.ts +10 -10
  18. package/dist/dom/auto-anchor.js +10 -10
  19. package/dist/dom/blind-spots.d.ts +14 -0
  20. package/dist/dom/blind-spots.d.ts.map +1 -0
  21. package/dist/dom/blind-spots.js +30 -0
  22. package/dist/dom/blind-spots.js.map +1 -0
  23. package/dist/dom/chart.d.ts +93 -0
  24. package/dist/dom/chart.d.ts.map +1 -0
  25. package/dist/dom/chart.js +119 -0
  26. package/dist/dom/chart.js.map +1 -0
  27. package/dist/dom/dom-ignore.d.ts +2 -0
  28. package/dist/dom/dom-ignore.d.ts.map +1 -1
  29. package/dist/dom/dom-ignore.js +17 -2
  30. package/dist/dom/dom-ignore.js.map +1 -1
  31. package/dist/dom/occlusion.d.ts +9 -0
  32. package/dist/dom/occlusion.d.ts.map +1 -0
  33. package/dist/dom/occlusion.js +21 -0
  34. package/dist/dom/occlusion.js.map +1 -0
  35. package/dist/dom/query.d.ts +17 -4
  36. package/dist/dom/query.d.ts.map +1 -1
  37. package/dist/dom/query.js +185 -30
  38. package/dist/dom/query.js.map +1 -1
  39. package/dist/dom/refs.d.ts +26 -3
  40. package/dist/dom/refs.d.ts.map +1 -1
  41. package/dist/dom/refs.js +79 -4
  42. package/dist/dom/refs.js.map +1 -1
  43. package/dist/dom/snapshot.d.ts +7 -1
  44. package/dist/dom/snapshot.d.ts.map +1 -1
  45. package/dist/dom/snapshot.js +43 -16
  46. package/dist/dom/snapshot.js.map +1 -1
  47. package/dist/dom/source.d.ts +40 -0
  48. package/dist/dom/source.d.ts.map +1 -0
  49. package/dist/dom/source.js +59 -0
  50. package/dist/dom/source.js.map +1 -0
  51. package/dist/dom/theme.js +2 -2
  52. package/dist/dom/theme.js.map +1 -1
  53. package/dist/index.d.ts +6 -2
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +9 -1
  56. package/dist/index.js.map +1 -1
  57. package/dist/observers/animation.d.ts +1 -1
  58. package/dist/observers/animation.d.ts.map +1 -1
  59. package/dist/observers/animation.js +1 -1
  60. package/dist/observers/animation.js.map +1 -1
  61. package/dist/observers/blind-spots.d.ts +19 -0
  62. package/dist/observers/blind-spots.d.ts.map +1 -0
  63. package/dist/observers/blind-spots.js +89 -0
  64. package/dist/observers/blind-spots.js.map +1 -0
  65. package/dist/observers/console.d.ts.map +1 -1
  66. package/dist/observers/console.js +39 -6
  67. package/dist/observers/console.js.map +1 -1
  68. package/dist/observers/dom.d.ts +1 -1
  69. package/dist/observers/dom.d.ts.map +1 -1
  70. package/dist/observers/dom.js +69 -10
  71. package/dist/observers/dom.js.map +1 -1
  72. package/dist/observers/focus.d.ts +10 -0
  73. package/dist/observers/focus.d.ts.map +1 -0
  74. package/dist/observers/focus.js +49 -0
  75. package/dist/observers/focus.js.map +1 -0
  76. package/dist/observers/network-body.d.ts +19 -0
  77. package/dist/observers/network-body.d.ts.map +1 -0
  78. package/dist/observers/network-body.js +143 -0
  79. package/dist/observers/network-body.js.map +1 -0
  80. package/dist/observers/network-redact.d.ts +8 -0
  81. package/dist/observers/network-redact.d.ts.map +1 -0
  82. package/dist/observers/network-redact.js +66 -0
  83. package/dist/observers/network-redact.js.map +1 -0
  84. package/dist/observers/network.d.ts +19 -7
  85. package/dist/observers/network.d.ts.map +1 -1
  86. package/dist/observers/network.js +439 -53
  87. package/dist/observers/network.js.map +1 -1
  88. package/dist/observers/perf.d.ts +13 -0
  89. package/dist/observers/perf.d.ts.map +1 -0
  90. package/dist/observers/perf.js +62 -0
  91. package/dist/observers/perf.js.map +1 -0
  92. package/dist/observers/route.d.ts.map +1 -1
  93. package/dist/observers/route.js +19 -10
  94. package/dist/observers/route.js.map +1 -1
  95. package/dist/observers/scroll.d.ts +1 -1
  96. package/dist/observers/scroll.d.ts.map +1 -1
  97. package/dist/observers/scroll.js +36 -9
  98. package/dist/observers/scroll.js.map +1 -1
  99. package/dist/observers/state.d.ts +20 -0
  100. package/dist/observers/state.d.ts.map +1 -0
  101. package/dist/observers/state.js +87 -0
  102. package/dist/observers/state.js.map +1 -0
  103. package/dist/observers/storage.d.ts +23 -0
  104. package/dist/observers/storage.d.ts.map +1 -0
  105. package/dist/observers/storage.js +177 -0
  106. package/dist/observers/storage.js.map +1 -0
  107. package/dist/observers/types.d.ts +15 -0
  108. package/dist/observers/types.d.ts.map +1 -1
  109. package/dist/observers/types.js +29 -1
  110. package/dist/observers/types.js.map +1 -1
  111. package/dist/patching/capture-method.d.ts +27 -0
  112. package/dist/patching/capture-method.d.ts.map +1 -0
  113. package/dist/patching/capture-method.js +37 -0
  114. package/dist/patching/capture-method.js.map +1 -0
  115. package/dist/presenter/presenter-config.d.ts +3 -3
  116. package/dist/presenter/presenter-config.d.ts.map +1 -1
  117. package/dist/presenter/presenter-config.js +3 -3
  118. package/dist/presenter/presenter-config.js.map +1 -1
  119. package/dist/presenter/presenter-controls.d.ts +1 -1
  120. package/dist/presenter/presenter-controls.d.ts.map +1 -1
  121. package/dist/presenter/presenter-controls.js +3 -3
  122. package/dist/presenter/presenter-controls.js.map +1 -1
  123. package/dist/presenter/presenter-glow.d.ts +1 -1
  124. package/dist/presenter/presenter-glow.js +1 -1
  125. package/dist/presenter/presenter-styles.d.ts +1 -1
  126. package/dist/presenter/presenter-styles.d.ts.map +1 -1
  127. package/dist/presenter/presenter-styles.js +12 -3
  128. package/dist/presenter/presenter-styles.js.map +1 -1
  129. package/dist/presenter/presenter-test-helpers.d.ts +16 -0
  130. package/dist/presenter/presenter-test-helpers.d.ts.map +1 -0
  131. package/dist/presenter/presenter-test-helpers.js +42 -0
  132. package/dist/presenter/presenter-test-helpers.js.map +1 -0
  133. package/dist/presenter/presenter.d.ts +4 -6
  134. package/dist/presenter/presenter.d.ts.map +1 -1
  135. package/dist/presenter/presenter.js +5 -9
  136. package/dist/presenter/presenter.js.map +1 -1
  137. package/dist/recorder/recorder.d.ts +8 -8
  138. package/dist/recorder/recorder.d.ts.map +1 -1
  139. package/dist/recorder/recorder.js +22 -9
  140. package/dist/recorder/recorder.js.map +1 -1
  141. package/dist/registry/capabilities.d.ts +2 -2
  142. package/dist/registry/capabilities.d.ts.map +1 -1
  143. package/dist/registry/capabilities.js +1 -1
  144. package/dist/registry/capabilities.js.map +1 -1
  145. package/dist/registry/domains.d.ts +1 -1
  146. package/dist/registry/domains.js +1 -1
  147. package/dist/registry/emitter.d.ts +2 -2
  148. package/dist/registry/emitter.js +2 -2
  149. package/dist/registry/store-adapters.d.ts +128 -0
  150. package/dist/registry/store-adapters.d.ts.map +1 -0
  151. package/dist/registry/store-adapters.js +135 -0
  152. package/dist/registry/store-adapters.js.map +1 -0
  153. package/dist/registry/stores.d.ts +45 -3
  154. package/dist/registry/stores.d.ts.map +1 -1
  155. package/dist/registry/stores.js +121 -8
  156. package/dist/registry/stores.js.map +1 -1
  157. package/dist/reticle.d.ts +28 -4
  158. package/dist/reticle.d.ts.map +1 -1
  159. package/dist/reticle.js +83 -15
  160. package/dist/reticle.js.map +1 -1
  161. package/dist/review/annotator.d.ts.map +1 -1
  162. package/dist/review/annotator.js +4 -2
  163. package/dist/review/annotator.js.map +1 -1
  164. package/dist/review/mark-anchor.d.ts.map +1 -1
  165. package/dist/review/mark-anchor.js +1 -21
  166. package/dist/review/mark-anchor.js.map +1 -1
  167. package/dist/security/serialization.d.ts +29 -1
  168. package/dist/security/serialization.d.ts.map +1 -1
  169. package/dist/security/serialization.js +172 -20
  170. package/dist/security/serialization.js.map +1 -1
  171. package/dist/timers/clock.d.ts +13 -0
  172. package/dist/timers/clock.d.ts.map +1 -1
  173. package/dist/timers/clock.js +76 -6
  174. package/dist/timers/clock.js.map +1 -1
  175. package/dist/transport/transport.d.ts +1 -1
  176. package/dist/transport/transport.d.ts.map +1 -1
  177. package/dist/transport/transport.js +49 -8
  178. package/dist/transport/transport.js.map +1 -1
  179. package/package.json +7 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store-adapters.js","sourceRoot":"","sources":["../../src/registry/store-adapters.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,51 @@
1
+ import { type TruncationReport } from '../security/serialization.js';
1
2
  /** Store registry — lets the agent pull live framework/store state on demand. */
2
3
  export type StoreGetter = () => unknown;
3
- /** App calls this once per store: registerStore('workspace', () => useWorkspace.getState()). */
4
- export declare function registerStore(name: string, getter: StoreGetter): void;
4
+ /** A store's subscribe method (Zustand/Redux shape): register a listener, get back an unsubscribe. */
5
+ export type StoreSubscribe = (listener: () => void) => () => void;
6
+ /** Notified when a SUBSCRIBABLE store is registered, so a late registration is still observed. */
7
+ export type StoreRegisteredListener = (entry: [string, StoreGetter, StoreSubscribe]) => void;
8
+ /**
9
+ * Observe FUTURE subscribable-store registrations. The SDK installs its observers during connect, but
10
+ * apps call registerStore afterwards — so enumerating once at install time subscribes to nothing and
11
+ * STATE_CHANGE never fires. Observers use this to pick up stores registered after they installed.
12
+ */
13
+ export declare function onStoreRegistered(listener: StoreRegisteredListener): () => void;
14
+ /** A Zustand/Redux-shaped store: exposes both current state and a subscribe. */
15
+ export interface StoreLike {
16
+ getState: () => unknown;
17
+ subscribe: StoreSubscribe;
18
+ }
19
+ /**
20
+ * App calls this once per store. PREFER passing the store itself — `registerStore('app', useApp)` —
21
+ * which wires `getState` AND `subscribe`, so every mutation emits a STATE_CHANGE path diff automatically
22
+ * (the before→after the causal summary reports). Passing a bare getter still works for back-compat, but
23
+ * leaves the store on pull-only reads: no change events, and an empty `stateDiffs` in every act summary.
24
+ */
25
+ export declare function registerStore(name: string, source: StoreGetter | StoreLike, subscribe?: StoreSubscribe): void;
5
26
  export declare function unregisterStore(name: string): void;
6
27
  export declare function storeNames(): string[];
7
- /** Read one store (by name) or all of them. Each getter is isolated: a throw becomes an error string. */
28
+ /** Registered stores that exposed a subscribe method, as [name, getter, subscribe] tuples. */
29
+ export declare function subscribableStores(): Array<[string, StoreGetter, StoreSubscribe]>;
30
+ /**
31
+ * Read one store (by name) or all of them WITHOUT transport sanitization. For scoped reads that
32
+ * select a sub-tree first, so a deep/large path (e.g. row 250 of a 500-row array) isn't truncated
33
+ * before selection. Each getter is isolated: a throw becomes an error object.
34
+ */
35
+ export declare function readStoresRaw(only?: string): Record<string, unknown>;
36
+ /** Read one store (by name) or all of them, each capped for transport. */
8
37
  export declare function readStores(only?: string): Record<string, unknown>;
38
+ /**
39
+ * As `readStores`, plus which stores came back INCOMPLETE.
40
+ *
41
+ * The whole-store read is the one path where the transport caps could silently hand back a fraction
42
+ * of a large store — ~142 of 1,000 entities, with the remainder simply absent. A caller comparing
43
+ * that against expected data reads it as "the app lost the rest", which is a false failure; a caller
44
+ * asserting something is absent reads it as proof, which is a false green. Neither is recoverable
45
+ * from the payload, so the fact of truncation travels beside it.
46
+ */
47
+ export declare function readStoresWithTruncation(only?: string): {
48
+ stores: Record<string, unknown>;
49
+ truncation?: Record<string, TruncationReport>;
50
+ };
9
51
  //# sourceMappingURL=stores.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stores.d.ts","sourceRoot":"","sources":["../../src/registry/stores.ts"],"names":[],"mappings":"AAEA,iFAAiF;AACjF,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC;AAMxC,gGAAgG;AAChG,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAErE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAElD;AAED,wBAAgB,UAAU,IAAI,MAAM,EAAE,CAErC;AAED,yGAAyG;AACzG,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAWjE"}
1
+ {"version":3,"file":"stores.d.ts","sourceRoot":"","sources":["../../src/registry/stores.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,KAAK,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEzF,iFAAiF;AACjF,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC;AACxC,sGAAsG;AACtG,MAAM,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;AAGlE,kGAAkG;AAClG,MAAM,MAAM,uBAAuB,GAAG,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,CAAC,KAAK,IAAI,CAAC;AAa7F;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,uBAAuB,GAAG,MAAM,IAAI,CAG/E;AAED,gFAAgF;AAChF,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,OAAO,CAAC;IACxB,SAAS,EAAE,cAAc,CAAC;CAC3B;AAYD;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,SAAS,CAAC,EAAE,cAAc,GACzB,IAAI,CAqBN;AAYD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAGlD;AAED,wBAAgB,UAAU,IAAI,MAAM,EAAE,CAErC;AAED,8FAA8F;AAC9F,wBAAgB,kBAAkB,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC,CAOjF;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAWpE;AAED,0EAA0E;AAC1E,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEjE;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG;IACvD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC/C,CASA"}
@@ -1,25 +1,98 @@
1
- import { sanitizeForTransport } from '../security/serialization.js';
2
- // Persist on a global so registrations survive HMR re-evaluation (see adapters.ts / feedback #7).
1
+ import { RETICLE_RENDERS_STORE } from '@reticlehq/core';
2
+ import { sanitizeWithReport } from '../security/serialization.js';
3
3
  const globalStore = globalThis;
4
4
  const stores = (globalStore.__reticleStores ??= new Map());
5
- /** App calls this once per store: registerStore('workspace', () => useWorkspace.getState()). */
6
- export function registerStore(name, getter) {
7
- stores.set(name, getter);
5
+ // Parallel map: stores that also provided a subscribe method, for automatic STATE_CHANGE diffs.
6
+ const subscribers = (globalStore.__reticleStoreSubs ??= new Map());
7
+ const registrationListeners = (globalStore.__reticleStoreListeners ??=
8
+ new Set());
9
+ /**
10
+ * Observe FUTURE subscribable-store registrations. The SDK installs its observers during connect, but
11
+ * apps call registerStore afterwards — so enumerating once at install time subscribes to nothing and
12
+ * STATE_CHANGE never fires. Observers use this to pick up stores registered after they installed.
13
+ */
14
+ export function onStoreRegistered(listener) {
15
+ registrationListeners.add(listener);
16
+ return () => registrationListeners.delete(listener);
17
+ }
18
+ function isStoreLike(source) {
19
+ // Zustand's `create` returns a CALLABLE hook that also carries getState/subscribe, so a store can be
20
+ // typeof 'function' as well as 'object'. What distinguishes it from a plain getter is those two members
21
+ // — never the typeof. (Checking only for 'object' left every Zustand app on pull-only reads.)
22
+ if (source === null)
23
+ return false;
24
+ if (typeof source !== 'object' && typeof source !== 'function')
25
+ return false;
26
+ const candidate = source;
27
+ return typeof candidate.getState === 'function' && typeof candidate.subscribe === 'function';
28
+ }
29
+ /**
30
+ * App calls this once per store. PREFER passing the store itself — `registerStore('app', useApp)` —
31
+ * which wires `getState` AND `subscribe`, so every mutation emits a STATE_CHANGE path diff automatically
32
+ * (the before→after the causal summary reports). Passing a bare getter still works for back-compat, but
33
+ * leaves the store on pull-only reads: no change events, and an empty `stateDiffs` in every act summary.
34
+ */
35
+ export function registerStore(name, source, subscribe) {
36
+ if (isStoreLike(source)) {
37
+ const getter = () => source.getState();
38
+ const sub = (listener) => source.subscribe(listener);
39
+ stores.set(name, getter);
40
+ subscribers.set(name, sub);
41
+ notifyRegistered(name, getter, sub);
42
+ return;
43
+ }
44
+ stores.set(name, source);
45
+ if (subscribe !== undefined) {
46
+ subscribers.set(name, subscribe);
47
+ notifyRegistered(name, source, subscribe);
48
+ return;
49
+ }
50
+ // Readable but SILENT: reticle_state can read this store on demand, yet nothing will ever emit a
51
+ // STATE_CHANGE for it, so causal summaries show no state diff and a {kind:"state"} predicate can
52
+ // never observe it changing. That reads exactly like "the app did not change anything" — a false
53
+ // negative with no error attached. Say so once, at registration, where the developer can fix it by
54
+ // passing the store itself (or a subscribe function) instead of a bare getter.
55
+ warnSilentStoreOnce(name);
56
+ }
57
+ function notifyRegistered(name, getter, subscribe) {
58
+ for (const listener of registrationListeners) {
59
+ try {
60
+ listener([name, getter, subscribe]);
61
+ }
62
+ catch {
63
+ // a broken observer must never break the app's registerStore call
64
+ }
65
+ }
8
66
  }
9
67
  export function unregisterStore(name) {
10
68
  stores.delete(name);
69
+ subscribers.delete(name);
11
70
  }
12
71
  export function storeNames() {
13
72
  return [...stores.keys()];
14
73
  }
15
- /** Read one store (by name) or all of them. Each getter is isolated: a throw becomes an error string. */
16
- export function readStores(only) {
74
+ /** Registered stores that exposed a subscribe method, as [name, getter, subscribe] tuples. */
75
+ export function subscribableStores() {
76
+ const out = [];
77
+ for (const [name, subscribe] of subscribers) {
78
+ const getter = stores.get(name);
79
+ if (getter !== undefined)
80
+ out.push([name, getter, subscribe]);
81
+ }
82
+ return out;
83
+ }
84
+ /**
85
+ * Read one store (by name) or all of them WITHOUT transport sanitization. For scoped reads that
86
+ * select a sub-tree first, so a deep/large path (e.g. row 250 of a 500-row array) isn't truncated
87
+ * before selection. Each getter is isolated: a throw becomes an error object.
88
+ */
89
+ export function readStoresRaw(only) {
17
90
  const out = {};
18
91
  for (const [name, getter] of stores) {
19
92
  if (only !== undefined && name !== only)
20
93
  continue;
21
94
  try {
22
- out[name] = sanitizeForTransport(getter());
95
+ out[name] = getter();
23
96
  }
24
97
  catch (error) {
25
98
  out[name] = { __error: error instanceof Error ? error.message : String(error) };
@@ -27,4 +100,44 @@ export function readStores(only) {
27
100
  }
28
101
  return out;
29
102
  }
103
+ /** Read one store (by name) or all of them, each capped for transport. */
104
+ export function readStores(only) {
105
+ return readStoresWithTruncation(only).stores;
106
+ }
107
+ /**
108
+ * As `readStores`, plus which stores came back INCOMPLETE.
109
+ *
110
+ * The whole-store read is the one path where the transport caps could silently hand back a fraction
111
+ * of a large store — ~142 of 1,000 entities, with the remainder simply absent. A caller comparing
112
+ * that against expected data reads it as "the app lost the rest", which is a false failure; a caller
113
+ * asserting something is absent reads it as proof, which is a false green. Neither is recoverable
114
+ * from the payload, so the fact of truncation travels beside it.
115
+ */
116
+ export function readStoresWithTruncation(only) {
117
+ const stores = {};
118
+ const truncation = {};
119
+ for (const [name, value] of Object.entries(readStoresRaw(only))) {
120
+ const result = sanitizeWithReport(value);
121
+ stores[name] = result.value;
122
+ if (result.truncation !== undefined)
123
+ truncation[name] = result.truncation;
124
+ }
125
+ return Object.keys(truncation).length > 0 ? { stores, truncation } : { stores };
126
+ }
127
+ /** Stores already warned about — a warning that repeats on every HMR cycle or remount becomes noise. */
128
+ const warnedSilent = new Set();
129
+ /**
130
+ * Reticle's OWN read-only stores. `@reticlehq/react` registers a render-stats getter that the app
131
+ * developer never wrote and cannot change, so warning about it would be Reticle telling the user to fix
132
+ * Reticle — the same self-contradiction as a tool description naming a tool the profile does not expose.
133
+ */
134
+ const RETICLE_OWNED_STORES = new Set([RETICLE_RENDERS_STORE]);
135
+ function warnSilentStoreOnce(name) {
136
+ if (RETICLE_OWNED_STORES.has(name) || warnedSilent.has(name))
137
+ return;
138
+ warnedSilent.add(name);
139
+ console.warn(`[reticle] store "${name}" was registered without a subscribe function. It can be READ, but its ` +
140
+ `changes are invisible: no STATE_CHANGE events, no state diffs in causal summaries, and a state ` +
141
+ `predicate will never see it update. Pass the store object (or a subscribe callback) to fix.`);
142
+ }
30
143
  //# sourceMappingURL=stores.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stores.js","sourceRoot":"","sources":["../../src/registry/stores.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAKpE,kGAAkG;AAClG,MAAM,WAAW,GAAG,UAAuE,CAAC;AAC5F,MAAM,MAAM,GAA6B,CAAC,WAAW,CAAC,eAAe,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;AAErF,gGAAgG;AAChG,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,MAAmB;IAC7D,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5B,CAAC;AAED,yGAAyG;AACzG,MAAM,UAAU,UAAU,CAAC,IAAa;IACtC,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACpC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI;YAAE,SAAS;QAClD,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAClF,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"stores.js","sourceRoot":"","sources":["../../src/registry/stores.ts"],"names":[],"mappings":"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"}
package/dist/reticle.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { RETICLE_URL_PARAM } from '@reticlehq/core';
1
+ import { EventType, RETICLE_URL_PARAM, type ReticleEvent } from '@reticlehq/core';
2
2
  import { type CapabilitiesInput } from './registry/capabilities.js';
3
3
  export interface ReticleConnectOptions {
4
4
  /** WS endpoint of the local bridge. Defaults to ws://localhost:<port><path>. */
@@ -23,6 +23,11 @@ export interface ReticleConnectOptions {
23
23
  allowInProduction?: boolean;
24
24
  /** Show a small in-page status chip (connection + event count). */
25
25
  overlay?: boolean;
26
+ /**
27
+ * Capture request/response bodies on net.request events (dev-only; text-like content only,
28
+ * sensitive keys redacted, per-body capped). Off by default — bodies cost tokens and can carry PII.
29
+ */
30
+ captureNetworkBodies?: boolean;
26
31
  /** Presenter mode: glow border, animated cursor, click/hover effects, narration HUD. */
27
32
  present?: boolean;
28
33
  /** Per-action pacing (ms) in presenter mode so a human can follow. Default 450. */
@@ -54,7 +59,7 @@ export interface ReticleConnectOptions {
54
59
  }
55
60
  /**
56
61
  * Runtime backstop for the dev-only SDK: block connecting when the build reports production, unless
57
- * explicitly overridden. Pure so it's testable; connect() reads NODE_ENV safely (process may be absent
62
+ * explicitly overridden. Pure so it's testable; connect reads NODE_ENV safely (process may be absent
58
63
  * in a raw browser). This is defense-in-depth — the primary guard is the consumer gating the import
59
64
  * behind `import.meta.env.DEV` so the SDK is dead-code-eliminated from prod bundles entirely.
60
65
  */
@@ -72,7 +77,7 @@ export declare function resolveSessionLabel(option: string | undefined, gen: ()
72
77
  export { RETICLE_URL_PARAM };
73
78
  /**
74
79
  * Extract Reticle identity overrides from a `location.search` string. Pure (takes the string, not the
75
- * window) so it's testable without a DOM. Explicit connect() options still win over these.
80
+ * window) so it's testable without a DOM. Explicit connect options still win over these.
76
81
  */
77
82
  export declare function reticleParamsFromSearch(search: string): {
78
83
  session?: string;
@@ -91,6 +96,19 @@ export declare function resolveConnectIdentity(options: {
91
96
  session: string | undefined;
92
97
  projectId: string | undefined;
93
98
  };
99
+ /**
100
+ * Assemble an event envelope. Pure: `seq` (monotonic per session) and `t` (elapsed clock) are
101
+ * injected, never read here — so it is unit-testable and honors the clock-injection rule. The
102
+ * causing action's id is attributed server-side by the settle window, so it is not stamped here.
103
+ */
104
+ export declare function buildEvent(args: {
105
+ seq: number;
106
+ t: number;
107
+ type: EventType;
108
+ sessionId: string;
109
+ data: Record<string, unknown>;
110
+ ref?: string | undefined;
111
+ }): ReticleEvent;
94
112
  /**
95
113
  * The browser-side orchestrator. Wires observers -> events -> bridge, and bridge
96
114
  * commands -> handlers. Embedded in the host app (dev only).
@@ -100,10 +118,16 @@ export declare class Reticle {
100
118
  connect(options?: ReticleConnectOptions): void;
101
119
  /** Whether the in-page SDK is connected to the bridge (read by createReticleEmitter, P5a). */
102
120
  get connected(): boolean;
103
- /** Surface an arbitrary app-domain observation the DOM can't express (plan/03 §7). */
121
+ /** Surface an arbitrary app-domain observation the DOM can't express. */
104
122
  signal(name: string, data?: Record<string, unknown>): void;
105
123
  /** Report a framework/store state change the agent can observe and assert on. */
106
124
  state(name: string, value: unknown): void;
125
+ /**
126
+ * Report an aggregated count of React commits (the @reticlehq/react render meter calls this on a
127
+ * throttle). Emits a single RENDER_COMMIT event per window so commit storms are observable without a
128
+ * per-render flood. Dev-only, like the whole SDK.
129
+ */
130
+ renderCommit(commits: number): void;
107
131
  /** Advertise the app's testable surface so the agent learns it without reading source. */
108
132
  describe(input: CapabilitiesInput): void;
109
133
  /** Live-control: end the session programmatically from the host app (drives the panel to ended). */
@@ -1 +1 @@
1
- {"version":3,"file":"reticle.d.ts","sourceRoot":"","sources":["../src/reticle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reticle.d.ts","sourceRoot":"","sources":["../src/reticle.ts"],"names":[],"mappings":"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"}
package/dist/reticle.js CHANGED
@@ -1,10 +1,15 @@
1
1
  import { EventType, RETICLE_DEFAULT_PORT, RETICLE_PROTOCOL_VERSION, RETICLE_URL_PARAM, bridgeWsUrl, ReticleCommand, MessageKind, SESSION_AUTO, SessionState, TRANSPORT_LIMITS, isLoopbackHostname, } from '@reticlehq/core';
2
- import { createCommandRegistry } from './commands/commands.js';
2
+ import { createCommandRegistry, RELOAD_CACHE_BUST_PARAM, } from './commands/commands.js';
3
3
  import { Transport } from './transport/transport.js';
4
4
  import { adapterNames } from './registry/adapters.js';
5
5
  import { registerCapabilities, hasCapabilities, } from './registry/capabilities.js';
6
6
  import { installDom } from './observers/dom.js';
7
+ import { installStorage } from './observers/storage.js';
8
+ import { installStoreState } from './observers/state.js';
9
+ import { installFocus } from './observers/focus.js';
10
+ import { installBlindSpots } from './observers/blind-spots.js';
7
11
  import { installNetwork } from './observers/network.js';
12
+ import { installPerf } from './observers/perf.js';
8
13
  import { installRoute } from './observers/route.js';
9
14
  import { installConsole } from './observers/console.js';
10
15
  import { installAnimation } from './observers/animation.js';
@@ -19,7 +24,7 @@ import { installRecorder } from './recorder/recorder.js';
19
24
  import { Annotator } from './review/annotator.js';
20
25
  /**
21
26
  * Runtime backstop for the dev-only SDK: block connecting when the build reports production, unless
22
- * explicitly overridden. Pure so it's testable; connect() reads NODE_ENV safely (process may be absent
27
+ * explicitly overridden. Pure so it's testable; connect reads NODE_ENV safely (process may be absent
23
28
  * in a raw browser). This is defense-in-depth — the primary guard is the consumer gating the import
24
29
  * behind `import.meta.env.DEV` so the SDK is dead-code-eliminated from prod bundles entirely.
25
30
  */
@@ -73,9 +78,22 @@ export function resolveSessionLabel(option, gen) {
73
78
  }
74
79
  // Re-exported from the protocol (the wire contract) so callers/tests can import it from the SDK too.
75
80
  export { RETICLE_URL_PARAM };
81
+ /** Remove the `_reticle_reload` cache-buster a hard REFRESH left behind, via a native replaceState. */
82
+ function stripReloadCacheBustParam() {
83
+ try {
84
+ const current = new URL(window.location.href);
85
+ if (!current.searchParams.has(RELOAD_CACHE_BUST_PARAM))
86
+ return;
87
+ current.searchParams.delete(RELOAD_CACHE_BUST_PARAM);
88
+ window.history.replaceState(window.history.state, '', current.toString());
89
+ }
90
+ catch {
91
+ /* best-effort URL hygiene — never block connect() on it */
92
+ }
93
+ }
76
94
  /**
77
95
  * Extract Reticle identity overrides from a `location.search` string. Pure (takes the string, not the
78
- * window) so it's testable without a DOM. Explicit connect() options still win over these.
96
+ * window) so it's testable without a DOM. Explicit connect options still win over these.
79
97
  */
80
98
  export function reticleParamsFromSearch(search) {
81
99
  const params = new URLSearchParams(search);
@@ -103,6 +121,21 @@ export function resolveConnectIdentity(options, search) {
103
121
  projectId: projectId !== undefined && projectId.length > 0 ? projectId : undefined,
104
122
  };
105
123
  }
124
+ /**
125
+ * Assemble an event envelope. Pure: `seq` (monotonic per session) and `t` (elapsed clock) are
126
+ * injected, never read here — so it is unit-testable and honors the clock-injection rule. The
127
+ * causing action's id is attributed server-side by the settle window, so it is not stamped here.
128
+ */
129
+ export function buildEvent(args) {
130
+ return {
131
+ t: args.t,
132
+ seq: args.seq,
133
+ type: args.type,
134
+ sessionId: args.sessionId,
135
+ ref: args.ref,
136
+ data: args.data,
137
+ };
138
+ }
106
139
  /**
107
140
  * The browser-side orchestrator. Wires observers -> events -> bridge, and bridge
108
141
  * commands -> handlers. Embedded in the host app (dev only).
@@ -137,6 +170,10 @@ export class Reticle {
137
170
  'import.meta.env.DEV, or pass allowInProduction:true to override.');
138
171
  return;
139
172
  }
173
+ // A `hard` REFRESH left a cache-busting `_reticle_reload=<nonce>` in the address bar. Strip it now
174
+ // (before the route observer installs, so it emits no spurious ROUTE_CHANGE) — otherwise every hard
175
+ // reload permanently pollutes the URL the app and the agent see.
176
+ stripReloadCacheBustParam();
140
177
  const url = options.url ?? bridgeWsUrl(RETICLE_DEFAULT_PORT);
141
178
  const policy = connectionPolicy(window.location.hostname, url, options.allowNonLocalhost === true, options.token);
142
179
  if (!policy.allowed) {
@@ -163,8 +200,14 @@ export class Reticle {
163
200
  onConnected: () => this.#presenter?.sessionStart(),
164
201
  // Liveness fallback: if the bridge stays unreachable (the agent killed the server process),
165
202
  // no server-pushed end can arrive — so end the run we're presenting ourselves. A returning
166
- // agent revives it via the normal sessionStart() path on its next command.
203
+ // agent revives it via the normal sessionStart path on its next command.
167
204
  onConnectionLost: () => {
205
+ // Restore real timers. A frozen clock is driven by the agent through the bridge; once the
206
+ // bridge is gone nothing can ever advance it, so leaving it installed pins Date.now and
207
+ // queues every setTimeout into a scheduler that will never run. Concretely that kills every
208
+ // lodash debounce/throttle in the app (now - lastCall stays 0), so search boxes, autosave
209
+ // and resize handlers stop firing until a reload — with nothing on screen explaining why.
210
+ resetClock();
168
211
  if (this.#presenter?.sessionActive === true) {
169
212
  this.#presenter.setState(SessionState.ENDED, BRIDGE_LOST_SUMMARY);
170
213
  }
@@ -180,12 +223,17 @@ export class Reticle {
180
223
  });
181
224
  const emit = this.#emit;
182
225
  this.#teardowns = [
183
- installNetwork(emit),
226
+ installNetwork(emit, { captureBodies: options.captureNetworkBodies === true }),
227
+ installPerf(emit),
184
228
  installRoute(emit),
185
229
  installConsole(emit),
186
230
  installAnimation(emit),
187
231
  installScroll(emit),
188
232
  installDom(emit),
233
+ installStorage(emit), // storage WRITES → STORAGE_CHANGE diffs (pull remains the fallback)
234
+ installStoreState(emit), // subscribed-store mutations → STATE_CHANGE path diffs
235
+ installFocus(emit), // element focus movement → FOCUS_CHANGE (focus-to-body = a regression)
236
+ installBlindSpots(emit), // cross-origin iframes the SDK can't see → BLIND_SPOT (coverage: partial)
189
237
  installHealth(emit), // page visibility/focus health + heartbeat
190
238
  ];
191
239
  if (options.overlay === true) {
@@ -240,7 +288,7 @@ export class Reticle {
240
288
  get connected() {
241
289
  return this.#connected;
242
290
  }
243
- /** Surface an arbitrary app-domain observation the DOM can't express (plan/03 §7). */
291
+ /** Surface an arbitrary app-domain observation the DOM can't express. */
244
292
  signal(name, data = {}) {
245
293
  this.#emit(EventType.SIGNAL, { name, data });
246
294
  }
@@ -248,6 +296,15 @@ export class Reticle {
248
296
  state(name, value) {
249
297
  this.#emit(EventType.STATE_CHANGE, { name, value });
250
298
  }
299
+ /**
300
+ * Report an aggregated count of React commits (the @reticlehq/react render meter calls this on a
301
+ * throttle). Emits a single RENDER_COMMIT event per window so commit storms are observable without a
302
+ * per-render flood. Dev-only, like the whole SDK.
303
+ */
304
+ renderCommit(commits) {
305
+ if (commits > 0)
306
+ this.#emit(EventType.RENDER_COMMIT, { commits });
307
+ }
251
308
  /** Advertise the app's testable surface so the agent learns it without reading source. */
252
309
  describe(input) {
253
310
  registerCapabilities(input);
@@ -277,19 +334,30 @@ export class Reticle {
277
334
  this.#connected = false;
278
335
  }
279
336
  #emit = (type, data, ref) => {
280
- const event = {
337
+ const event = buildEvent({
338
+ seq: this.#eventCount,
281
339
  t: Math.round(performance.now() - this.#start),
282
340
  type,
283
341
  sessionId: this.#session,
284
- ref,
285
342
  data,
286
- };
287
- this.#transport?.sendEvent(event);
288
- this.#eventCount += 1;
289
- this.#overlay?.update({ connected: true, events: this.#eventCount });
290
- // On a route change, re-scope the HUD's replay-flow chips to the page we're now on.
291
- if (type === EventType.ROUTE_CHANGE)
292
- this.#presenter?.refilterFlows();
343
+ ref,
344
+ });
345
+ // Guarded because #emit runs INLINE IN THE APP'S CALL STACK: every monkey-patch calls it from
346
+ // inside the function it replaced. An exception here does not surface as an SDK error — it
347
+ // propagates out of history.pushState (crashing a router's navigate), out of localStorage.setItem
348
+ // after the write already succeeded, or out of console.log before the message reaches the console.
349
+ // A dev-only observability SDK must never be able to break the app it is observing.
350
+ try {
351
+ this.#transport?.sendEvent(event);
352
+ this.#eventCount += 1;
353
+ this.#overlay?.update({ connected: true, events: this.#eventCount });
354
+ // On a route change, re-scope the HUD's replay-flow chips to the page we're now on.
355
+ if (type === EventType.ROUTE_CHANGE)
356
+ this.#presenter?.refilterFlows();
357
+ }
358
+ catch {
359
+ /* observation is best-effort; the host app's control flow is not */
360
+ }
293
361
  };
294
362
  #hello() {
295
363
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"reticle.js","sourceRoot":"","sources":["../src/reticle.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,oBAAoB,EACpB,wBAAwB,EACxB,iBAAiB,EACjB,WAAW,EACX,cAAc,EACd,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,GAInB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,qBAAqB,EAAuB,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAE,SAAS,EAAuB,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EACL,oBAAoB,EACpB,eAAe,GAEhB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAsB,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EACL,SAAS,EACT,QAAQ,EACR,UAAU,GAGX,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC9F,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAuB,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAwDlD;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAA2B,EAC3B,iBAA0B;IAE1B,OAAO,OAAO,KAAK,YAAY,IAAI,CAAC,iBAAiB,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,YAAoB,EACpB,SAAiB,EACjB,iBAA0B,EAC1B,KAAyB;IAEzB,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,4BAA4B,EAAE,CAAC;IAClE,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QAC5D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,6CAA6C,EAAE,CAAC;IACnF,CAAC;IACD,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,gBAAgB,CAAC,gBAAgB,EAAE,CAAC;QAC7D,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,iCAAiC,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,aAAa;SAChG,CAAC;IACJ,CAAC;IACD,MAAM,YAAY,GAAG,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1D,IAAI,YAAY,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QAC/C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,4CAA4C,EAAE,CAAC;IAClF,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,kBAAkB,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC;IACjE,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACtC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EACJ,sFAAsF;SACzF,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,+CAA+C,EAAE,CAAC;IACrF,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,yGAAyG;AACzG,MAAM,mBAAmB,GACvB,8EAA8E,CAAC;AAEjF;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAA0B,EAAE,GAAiB;IAC/E,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AAC1E,CAAC;AAED,qGAAqG;AACrG,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAc;IACpD,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,GAAG,GAA6C,EAAE,CAAC;IACzD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACxD,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IAClE,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;IAC1E,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,OAAiD,EACjD,MAAc;IAEd,MAAM,GAAG,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,eAAe,GACnB,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,KAAK,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAClG,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,CAAC;IACrD,OAAO;QACL,OAAO,EAAE,eAAe,IAAI,GAAG,CAAC,OAAO;QACvC,SAAS,EAAE,SAAS,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;KACnF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,OAAO;IAClB,UAAU,CAAwB;IAClC,SAAS,GAAgC,IAAI,GAAG,EAAE,CAAC;IACnD,UAAU,GAAe,EAAE,CAAC;IAC5B,UAAU,GAAG,KAAK,CAAC;IACnB,QAAQ,GAAG,SAAS,CAAC;IACrB,MAAM,GAAG,CAAC,CAAC;IACX,QAAQ,CAA4B;IACpC,UAAU,CAAwB;IAClC,SAAS,CAA6B;IACtC,UAAU,CAAwB;IAClC,WAAW,GAAG,CAAC,CAAC;IAChB,MAAM,CAAqB;IAC3B,UAAU,CAAqB;IAC/B,kGAAkG;IAClG,UAAU,CAAwB;IAElC,OAAO,CAAC,UAAiC,EAAE;QACzC,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO;QAC5B,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW;YAAE,OAAO;QAE7E,mGAAmG;QACnG,4FAA4F;QAC5F,MAAM,IAAI,GAAI,UAAyE,CAAC,OAAO,CAAC;QAChG,MAAM,OAAO,GAAG,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC;QACpC,IAAI,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,iBAAiB,KAAK,IAAI,CAAC,EAAE,CAAC;YACvE,UAAU,CAAC,OAAO,CAAC,IAAI,CACrB,iFAAiF;gBAC/E,kEAAkE,CACrE,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,WAAW,CAAC,oBAAoB,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,gBAAgB,CAC7B,MAAM,CAAC,QAAQ,CAAC,QAAQ,EACxB,GAAG,EACH,OAAO,CAAC,iBAAiB,KAAK,IAAI,EAClC,OAAO,CAAC,KAAK,CACd,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,MAAM,IAAI,oBAAoB,EAAE,CAAC,CAAC;YAC9E,OAAO;QACT,CAAC;QAED,+FAA+F;QAC/F,oFAAoF;QACpF,MAAM,QAAQ,GAAG,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACzE,IAAI,CAAC,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,CACzD,OAAO,UAAU,CAAC,MAAM,EAAE,UAAU,KAAK,UAAU;YACjD,CAAC,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE;YACtC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAClC,CAAC;QACF,IAAI,CAAC,MAAM;YACT,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QACtF,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,qBAAqB,EAAE,CAAC;QAEzC,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAC;YAC9B,GAAG;YACH,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE;YAC1B,aAAa,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;YACxD,0FAA0F;YAC1F,8EAA8E;YAC9E,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE;YAClD,4FAA4F;YAC5F,2FAA2F;YAC3F,2EAA2E;YAC3E,gBAAgB,EAAE,GAAG,EAAE;gBACrB,IAAI,IAAI,CAAC,UAAU,EAAE,aAAa,KAAK,IAAI,EAAE,CAAC;oBAC5C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;gBACpE,CAAC;YACH,CAAC;YACD,4FAA4F;YAC5F,mFAAmF;YACnF,aAAa,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;gBAC1C,UAAU,CAAC,OAAO,CAAC,IAAI,CACrB,2CAA2C,KAAK,UAAU,MAAM,CAAC,QAAQ,CAAC,aAAa;oBACrF,gGAAgG;oBAChG,4FAA4F;oBAC5F,+CAA+C,CAClD,CAAC;YACJ,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG;YAChB,cAAc,CAAC,IAAI,CAAC;YACpB,YAAY,CAAC,IAAI,CAAC;YAClB,cAAc,CAAC,IAAI,CAAC;YACpB,gBAAgB,CAAC,IAAI,CAAC;YACtB,aAAa,CAAC,IAAI,CAAC;YACnB,UAAU,CAAC,IAAI,CAAC;YAChB,aAAa,CAAC,IAAI,CAAC,EAAE,2CAA2C;SACjE,CAAC;QAEF,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC,QAAQ,GAAG,cAAc,EAAE,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YAC9B,MAAM,gBAAgB,GAAqB,EAAE,CAAC;YAC9C,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;gBAAE,gBAAgB,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YACvE,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;gBAC3C,gBAAgB,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;YAC/D,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;gBAAE,gBAAgB,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAC3E,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;gBAAE,gBAAgB,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAC3E,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS;gBAAE,gBAAgB,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;YAC1F,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS;gBAAE,gBAAgB,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YACpF,gBAAgB,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC3C,wFAAwF;YACxF,4FAA4F;YAC5F,gBAAgB,CAAC,SAAS,GAAG,CAAC,MAAM,EAAE,EAAE,CACtC,IAAI,CAAC,KAAK,CACR,SAAS,CAAC,aAAa,EACvB,MAAM,CAAC,IAAI,KAAK,SAAS;gBACvB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;gBAC1C,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAC1B,CAAC;YACJ,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAC,gBAAgB,CAAC,CAAC;YAClD,2FAA2F;YAC3F,6FAA6F;YAC7F,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAC1B,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC9B,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAClE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC;QAED,iGAAiG;QACjG,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YAClD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;YAClC,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAC;gBAC9B,IAAI;gBACJ,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;gBACrB,2FAA2F;gBAC3F,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,KAAK,KAAK,IAAI,EAAE,CAAC;aAChF,CAAC,CAAC;YACH,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;IAED,8FAA8F;IAC9F,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,sFAAsF;IACtF,MAAM,CAAC,IAAY,EAAE,OAAgC,EAAE;QACrD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,iFAAiF;IACjF,KAAK,CAAC,IAAY,EAAE,KAAc;QAChC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,0FAA0F;IAC1F,QAAQ,CAAC,KAAwB;QAC/B,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,oGAAoG;IACpG,UAAU;QACR,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,UAAU;QACR,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO;QAC7B,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU;YAAE,QAAQ,EAAE,CAAC;QACnD,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC1B,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC,sDAAsD;QACrF,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,UAAU,EAAE,CAAC,CAAC,4BAA4B;QAC1C,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAEQ,KAAK,GAAG,CAAC,IAAe,EAAE,IAA6B,EAAE,GAAY,EAAQ,EAAE;QACtF,MAAM,KAAK,GAAiB;YAC1B,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;YAC9C,IAAI;YACJ,SAAS,EAAE,IAAI,CAAC,QAAQ;YACxB,GAAG;YACH,IAAI;SACL,CAAC;QACF,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACrE,oFAAoF;QACpF,IAAI,IAAI,KAAK,SAAS,CAAC,YAAY;YAAE,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC;IACxE,CAAC,CAAC;IAEF,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,WAAW,CAAC,KAAK;YACvB,eAAe,EAAE,wBAAwB;YACzC,SAAS,EAAE,IAAI,CAAC,QAAQ;YACxB,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;YACxE,GAAG,EAAE,QAAQ,CAAC,IAAI;YAClB,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,QAAQ,EAAE,YAAY,EAAE;YACxB,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YAC5D,eAAe,EAAE,eAAe,EAAE;SACnC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAAuB;QAC1C,qFAAqF;QACrF,IAAI,OAAO,CAAC,IAAI,KAAK,cAAc,CAAC,OAAO,EAAE,CAAC;YAC5C,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC,iDAAiD;YAClF,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;YACxF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,EAAE,CAAC;QACxE,CAAC;QAED,2FAA2F;QAC3F,IAAI,OAAO,CAAC,IAAI,KAAK,cAAc,CAAC,cAAc,EAAE,CAAC;YACnD,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC5C,IAAI,OAAO,SAAS,KAAK,QAAQ;gBAAE,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;YAC5E,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC;QACrF,CAAC;QAED,mGAAmG;QACnG,gGAAgG;QAChG,oEAAoE;QACpE,IAAI,OAAO,CAAC,IAAI,KAAK,cAAc,CAAC,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,cAAc,CAAC,KAAK,EAAE,CAAC;YACvF,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;YACrC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,EAAE,CAAC;QAC1E,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC;QACnE,CAAC;QAED,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC,gDAAgD;QACjF,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACzC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACzC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACtF,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;YAC5B,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,CAAC;QAClC,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,KAAK,CAAC,cAAc,CAAC,OAAuB;QAC1C,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAC1B,IAAI,CAAC,KAAK,SAAS;YAAE,OAAO;QAC5B,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,uCAAuC;QAChF,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,OAAO,CAAC,IAAI,KAAK,cAAc,CAAC,GAAG,EAAE,CAAC;YACxC,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;YAC7F,MAAM,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7D,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,KAAK,cAAc,CAAC,YAAY,EAAE,CAAC;YACxD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAChF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,CAAC,GAAG,IAA2C,CAAC;gBACtD,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACvB,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAC5B,2EAA2E;gBAC3E,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;gBAC/E,MAAM,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YACxD,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"reticle.js","sourceRoot":"","sources":["../src/reticle.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"annotator.d.ts","sourceRoot":"","sources":["../../src/review/annotator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAO5C;;;;;;;;GAQG;AAEH,8EAA8E;AAC9E,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC/D,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAChD;AAkDD,qBAAa,SAAS;;gBAkBR,IAAI,EAAE,aAAa;IAM/B,2DAA2D;IAC3D,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,oEAAoE;IACpE,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,KAAK,IAAI,IAAI;IAuCb,OAAO,IAAI,IAAI;IA0Bf,4EAA4E;IAC5E,MAAM,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,IAAI;CA4J3B;AAgBD,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,CAI/D"}
1
+ {"version":3,"file":"annotator.d.ts","sourceRoot":"","sources":["../../src/review/annotator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAO5C;;;;;;;;GAQG;AAEH,8EAA8E;AAC9E,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC/D,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAChD;AAkDD,qBAAa,SAAS;;gBAkBR,IAAI,EAAE,aAAa;IAM/B,2DAA2D;IAC3D,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,oEAAoE;IACpE,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,KAAK,IAAI,IAAI;IAuCb,OAAO,IAAI,IAAI;IA0Bf,4EAA4E;IAC5E,MAAM,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,IAAI;CA8J3B;AAgBD,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,CAI/D"}
@@ -4,7 +4,7 @@ import { nativeSetTimeout, nativeClearTimeout } from '../timers/native-timers.js
4
4
  /** The cursor must rest this long before the outline boxes the element under it — calm, not jumpy. */
5
5
  const HIGHLIGHT_REST_MS = 130;
6
6
  /** Single base attribute on every UI node (varied by VALUE) so `closest('[data-reticle-mark]')`
7
- * catches the FAB, popover, and pins in one check, and the SDK's observers ignore them all. */
7
+ * catches the FAB, popover, and pins in one check, and the SDK's observers ignore them all. */
8
8
  const MARK_ATTR = 'data-reticle-mark';
9
9
  const ACTIVE_ATTR = 'data-reticle-mark-active';
10
10
  const Z = 2147483640;
@@ -290,7 +290,9 @@ export class Annotator {
290
290
  // The pin fades after a moment so it confirms the mark landed without cluttering the page.
291
291
  const ref = pin;
292
292
  this.#now(); // touch the injected clock (kept for parity with the SDK's timing seams)
293
- window.setTimeout(() => ref.remove(), 2600);
293
+ // Native (pre-bound) timer so a frozen app clock / fake-timer library can't stall the SDK's own
294
+ // UI — every other SDK timer uses the native primitives for exactly this reason.
295
+ nativeSetTimeout(() => ref.remove(), 2600);
294
296
  }
295
297
  #closePopover() {
296
298
  this.#pop?.remove();