@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.
- package/NOTICE +5 -0
- package/dist/actions/actions-dom.d.ts.map +1 -1
- package/dist/actions/actions-dom.js +3 -20
- package/dist/actions/actions-dom.js.map +1 -1
- package/dist/actions/actions.d.ts +1 -1
- package/dist/actions/actions.d.ts.map +1 -1
- package/dist/actions/actions.js +37 -19
- package/dist/actions/actions.js.map +1 -1
- package/dist/commands/commands.d.ts +2 -0
- package/dist/commands/commands.d.ts.map +1 -1
- package/dist/commands/commands.js +30 -31
- package/dist/commands/commands.js.map +1 -1
- package/dist/dom/a11y.d.ts +17 -6
- package/dist/dom/a11y.d.ts.map +1 -1
- package/dist/dom/a11y.js +68 -32
- package/dist/dom/a11y.js.map +1 -1
- package/dist/dom/auto-anchor.d.ts +10 -10
- package/dist/dom/auto-anchor.js +10 -10
- package/dist/dom/blind-spots.d.ts +14 -0
- package/dist/dom/blind-spots.d.ts.map +1 -0
- package/dist/dom/blind-spots.js +30 -0
- package/dist/dom/blind-spots.js.map +1 -0
- package/dist/dom/chart.d.ts +93 -0
- package/dist/dom/chart.d.ts.map +1 -0
- package/dist/dom/chart.js +119 -0
- package/dist/dom/chart.js.map +1 -0
- package/dist/dom/dom-ignore.d.ts +2 -0
- package/dist/dom/dom-ignore.d.ts.map +1 -1
- package/dist/dom/dom-ignore.js +17 -2
- package/dist/dom/dom-ignore.js.map +1 -1
- package/dist/dom/occlusion.d.ts +9 -0
- package/dist/dom/occlusion.d.ts.map +1 -0
- package/dist/dom/occlusion.js +21 -0
- package/dist/dom/occlusion.js.map +1 -0
- package/dist/dom/query.d.ts +17 -4
- package/dist/dom/query.d.ts.map +1 -1
- package/dist/dom/query.js +185 -30
- package/dist/dom/query.js.map +1 -1
- package/dist/dom/refs.d.ts +26 -3
- package/dist/dom/refs.d.ts.map +1 -1
- package/dist/dom/refs.js +79 -4
- package/dist/dom/refs.js.map +1 -1
- package/dist/dom/snapshot.d.ts +7 -1
- package/dist/dom/snapshot.d.ts.map +1 -1
- package/dist/dom/snapshot.js +43 -16
- package/dist/dom/snapshot.js.map +1 -1
- package/dist/dom/source.d.ts +40 -0
- package/dist/dom/source.d.ts.map +1 -0
- package/dist/dom/source.js +59 -0
- package/dist/dom/source.js.map +1 -0
- package/dist/dom/theme.js +2 -2
- package/dist/dom/theme.js.map +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/observers/animation.d.ts +1 -1
- package/dist/observers/animation.d.ts.map +1 -1
- package/dist/observers/animation.js +1 -1
- package/dist/observers/animation.js.map +1 -1
- package/dist/observers/blind-spots.d.ts +19 -0
- package/dist/observers/blind-spots.d.ts.map +1 -0
- package/dist/observers/blind-spots.js +89 -0
- package/dist/observers/blind-spots.js.map +1 -0
- package/dist/observers/console.d.ts.map +1 -1
- package/dist/observers/console.js +39 -6
- package/dist/observers/console.js.map +1 -1
- package/dist/observers/dom.d.ts +1 -1
- package/dist/observers/dom.d.ts.map +1 -1
- package/dist/observers/dom.js +69 -10
- package/dist/observers/dom.js.map +1 -1
- package/dist/observers/focus.d.ts +10 -0
- package/dist/observers/focus.d.ts.map +1 -0
- package/dist/observers/focus.js +49 -0
- package/dist/observers/focus.js.map +1 -0
- package/dist/observers/network-body.d.ts +19 -0
- package/dist/observers/network-body.d.ts.map +1 -0
- package/dist/observers/network-body.js +143 -0
- package/dist/observers/network-body.js.map +1 -0
- package/dist/observers/network-redact.d.ts +8 -0
- package/dist/observers/network-redact.d.ts.map +1 -0
- package/dist/observers/network-redact.js +66 -0
- package/dist/observers/network-redact.js.map +1 -0
- package/dist/observers/network.d.ts +19 -7
- package/dist/observers/network.d.ts.map +1 -1
- package/dist/observers/network.js +439 -53
- package/dist/observers/network.js.map +1 -1
- package/dist/observers/perf.d.ts +13 -0
- package/dist/observers/perf.d.ts.map +1 -0
- package/dist/observers/perf.js +62 -0
- package/dist/observers/perf.js.map +1 -0
- package/dist/observers/route.d.ts.map +1 -1
- package/dist/observers/route.js +19 -10
- package/dist/observers/route.js.map +1 -1
- package/dist/observers/scroll.d.ts +1 -1
- package/dist/observers/scroll.d.ts.map +1 -1
- package/dist/observers/scroll.js +36 -9
- package/dist/observers/scroll.js.map +1 -1
- package/dist/observers/state.d.ts +20 -0
- package/dist/observers/state.d.ts.map +1 -0
- package/dist/observers/state.js +87 -0
- package/dist/observers/state.js.map +1 -0
- package/dist/observers/storage.d.ts +23 -0
- package/dist/observers/storage.d.ts.map +1 -0
- package/dist/observers/storage.js +177 -0
- package/dist/observers/storage.js.map +1 -0
- package/dist/observers/types.d.ts +15 -0
- package/dist/observers/types.d.ts.map +1 -1
- package/dist/observers/types.js +29 -1
- package/dist/observers/types.js.map +1 -1
- package/dist/patching/capture-method.d.ts +27 -0
- package/dist/patching/capture-method.d.ts.map +1 -0
- package/dist/patching/capture-method.js +37 -0
- package/dist/patching/capture-method.js.map +1 -0
- package/dist/presenter/presenter-config.d.ts +3 -3
- package/dist/presenter/presenter-config.d.ts.map +1 -1
- package/dist/presenter/presenter-config.js +3 -3
- package/dist/presenter/presenter-config.js.map +1 -1
- package/dist/presenter/presenter-controls.d.ts +1 -1
- package/dist/presenter/presenter-controls.d.ts.map +1 -1
- package/dist/presenter/presenter-controls.js +3 -3
- package/dist/presenter/presenter-controls.js.map +1 -1
- package/dist/presenter/presenter-glow.d.ts +1 -1
- package/dist/presenter/presenter-glow.js +1 -1
- package/dist/presenter/presenter-styles.d.ts +1 -1
- package/dist/presenter/presenter-styles.d.ts.map +1 -1
- package/dist/presenter/presenter-styles.js +12 -3
- package/dist/presenter/presenter-styles.js.map +1 -1
- package/dist/presenter/presenter-test-helpers.d.ts +16 -0
- package/dist/presenter/presenter-test-helpers.d.ts.map +1 -0
- package/dist/presenter/presenter-test-helpers.js +42 -0
- package/dist/presenter/presenter-test-helpers.js.map +1 -0
- package/dist/presenter/presenter.d.ts +4 -6
- package/dist/presenter/presenter.d.ts.map +1 -1
- package/dist/presenter/presenter.js +5 -9
- package/dist/presenter/presenter.js.map +1 -1
- package/dist/recorder/recorder.d.ts +8 -8
- package/dist/recorder/recorder.d.ts.map +1 -1
- package/dist/recorder/recorder.js +22 -9
- package/dist/recorder/recorder.js.map +1 -1
- package/dist/registry/capabilities.d.ts +2 -2
- package/dist/registry/capabilities.d.ts.map +1 -1
- package/dist/registry/capabilities.js +1 -1
- package/dist/registry/capabilities.js.map +1 -1
- package/dist/registry/domains.d.ts +1 -1
- package/dist/registry/domains.js +1 -1
- package/dist/registry/emitter.d.ts +2 -2
- package/dist/registry/emitter.js +2 -2
- package/dist/registry/store-adapters.d.ts +128 -0
- package/dist/registry/store-adapters.d.ts.map +1 -0
- package/dist/registry/store-adapters.js +135 -0
- package/dist/registry/store-adapters.js.map +1 -0
- package/dist/registry/stores.d.ts +45 -3
- package/dist/registry/stores.d.ts.map +1 -1
- package/dist/registry/stores.js +121 -8
- package/dist/registry/stores.js.map +1 -1
- package/dist/reticle.d.ts +28 -4
- package/dist/reticle.d.ts.map +1 -1
- package/dist/reticle.js +83 -15
- package/dist/reticle.js.map +1 -1
- package/dist/review/annotator.d.ts.map +1 -1
- package/dist/review/annotator.js +4 -2
- package/dist/review/annotator.js.map +1 -1
- package/dist/review/mark-anchor.d.ts.map +1 -1
- package/dist/review/mark-anchor.js +1 -21
- package/dist/review/mark-anchor.js.map +1 -1
- package/dist/security/serialization.d.ts +29 -1
- package/dist/security/serialization.d.ts.map +1 -1
- package/dist/security/serialization.js +172 -20
- package/dist/security/serialization.js.map +1 -1
- package/dist/timers/clock.d.ts +13 -0
- package/dist/timers/clock.d.ts.map +1 -1
- package/dist/timers/clock.js +76 -6
- package/dist/timers/clock.js.map +1 -1
- package/dist/transport/transport.d.ts +1 -1
- package/dist/transport/transport.d.ts.map +1 -1
- package/dist/transport/transport.js +49 -8
- package/dist/transport/transport.js.map +1 -1
- 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
|
-
/**
|
|
4
|
-
export
|
|
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
|
-
/**
|
|
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":"
|
|
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"}
|
package/dist/registry/stores.js
CHANGED
|
@@ -1,25 +1,98 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
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
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
-
/**
|
|
16
|
-
export function
|
|
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] =
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
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). */
|
package/dist/reticle.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reticle.d.ts","sourceRoot":"","sources":["../src/reticle.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
//
|
|
291
|
-
|
|
292
|
-
|
|
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 {
|
package/dist/reticle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reticle.js","sourceRoot":"","sources":["../src/reticle.ts"],"names":[],"mappings":"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"}
|
|
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;
|
|
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"}
|
package/dist/review/annotator.js
CHANGED
|
@@ -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
|
-
*
|
|
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
|
-
|
|
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();
|