ugly-app 0.1.712 → 0.1.714

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 (100) hide show
  1. package/dist/cli/version.d.ts +1 -1
  2. package/dist/cli/version.js +1 -1
  3. package/dist/inspect/agent/console.d.ts +13 -0
  4. package/dist/inspect/agent/console.d.ts.map +1 -0
  5. package/dist/inspect/agent/console.js +110 -0
  6. package/dist/inspect/agent/console.js.map +1 -0
  7. package/dist/inspect/agent/dom.d.ts +4 -0
  8. package/dist/inspect/agent/dom.d.ts.map +1 -0
  9. package/dist/inspect/agent/dom.js +93 -0
  10. package/dist/inspect/agent/dom.js.map +1 -0
  11. package/dist/inspect/agent/element.d.ts +7 -0
  12. package/dist/inspect/agent/element.d.ts.map +1 -0
  13. package/dist/inspect/agent/element.js +141 -0
  14. package/dist/inspect/agent/element.js.map +1 -0
  15. package/dist/inspect/agent/eval.d.ts +17 -0
  16. package/dist/inspect/agent/eval.d.ts.map +1 -0
  17. package/dist/inspect/agent/eval.js +54 -0
  18. package/dist/inspect/agent/eval.js.map +1 -0
  19. package/dist/inspect/agent/install.d.ts +5 -0
  20. package/dist/inspect/agent/install.d.ts.map +1 -0
  21. package/dist/inspect/agent/install.js +99 -0
  22. package/dist/inspect/agent/install.js.map +1 -0
  23. package/dist/inspect/agent/network.d.ts +9 -0
  24. package/dist/inspect/agent/network.d.ts.map +1 -0
  25. package/dist/inspect/agent/network.js +154 -0
  26. package/dist/inspect/agent/network.js.map +1 -0
  27. package/dist/inspect/agent/nodeRegistry.d.ts +9 -0
  28. package/dist/inspect/agent/nodeRegistry.d.ts.map +1 -0
  29. package/dist/inspect/agent/nodeRegistry.js +30 -0
  30. package/dist/inspect/agent/nodeRegistry.js.map +1 -0
  31. package/dist/inspect/agent/picker.d.ts +14 -0
  32. package/dist/inspect/agent/picker.d.ts.map +1 -0
  33. package/dist/inspect/agent/picker.js +102 -0
  34. package/dist/inspect/agent/picker.js.map +1 -0
  35. package/dist/inspect/agent/profile.d.ts +3 -0
  36. package/dist/inspect/agent/profile.d.ts.map +1 -0
  37. package/dist/inspect/agent/profile.js +88 -0
  38. package/dist/inspect/agent/profile.js.map +1 -0
  39. package/dist/inspect/agent/serialize.d.ts +20 -0
  40. package/dist/inspect/agent/serialize.d.ts.map +1 -0
  41. package/dist/inspect/agent/serialize.js +241 -0
  42. package/dist/inspect/agent/serialize.js.map +1 -0
  43. package/dist/inspect/agent/storage.d.ts +3 -0
  44. package/dist/inspect/agent/storage.d.ts.map +1 -0
  45. package/dist/inspect/agent/storage.js +76 -0
  46. package/dist/inspect/agent/storage.js.map +1 -0
  47. package/dist/inspect/agent/types.d.ts +50 -0
  48. package/dist/inspect/agent/types.d.ts.map +1 -0
  49. package/dist/inspect/agent/types.js +6 -0
  50. package/dist/inspect/agent/types.js.map +1 -0
  51. package/dist/inspect/agent/vitals.d.ts +10 -0
  52. package/dist/inspect/agent/vitals.d.ts.map +1 -0
  53. package/dist/inspect/agent/vitals.js +83 -0
  54. package/dist/inspect/agent/vitals.js.map +1 -0
  55. package/dist/inspect/client.d.ts +33 -0
  56. package/dist/inspect/client.d.ts.map +1 -0
  57. package/dist/inspect/client.js +71 -0
  58. package/dist/inspect/client.js.map +1 -0
  59. package/dist/inspect/dispatch.d.ts +12 -0
  60. package/dist/inspect/dispatch.d.ts.map +1 -0
  61. package/dist/inspect/dispatch.js +61 -0
  62. package/dist/inspect/dispatch.js.map +1 -0
  63. package/dist/inspect/index.d.ts +6 -0
  64. package/dist/inspect/index.d.ts.map +1 -0
  65. package/dist/inspect/index.js +8 -0
  66. package/dist/inspect/index.js.map +1 -0
  67. package/dist/inspect/protocol.d.ts +265 -0
  68. package/dist/inspect/protocol.d.ts.map +1 -0
  69. package/dist/inspect/protocol.js +13 -0
  70. package/dist/inspect/protocol.js.map +1 -0
  71. package/dist/native/contract-meta.d.ts.map +1 -1
  72. package/dist/native/contract-meta.js +15 -0
  73. package/dist/native/contract-meta.js.map +1 -1
  74. package/dist/native/contract.d.ts +94 -1
  75. package/dist/native/contract.d.ts.map +1 -1
  76. package/dist/native/contract.js.map +1 -1
  77. package/package.json +4 -2
  78. package/src/cli/version.ts +1 -1
  79. package/src/inspect/agent/console.ts +117 -0
  80. package/src/inspect/agent/dom.test.ts +85 -0
  81. package/src/inspect/agent/dom.ts +100 -0
  82. package/src/inspect/agent/element.ts +151 -0
  83. package/src/inspect/agent/eval.ts +70 -0
  84. package/src/inspect/agent/install.ts +110 -0
  85. package/src/inspect/agent/network.ts +162 -0
  86. package/src/inspect/agent/nodeRegistry.ts +33 -0
  87. package/src/inspect/agent/picker.ts +119 -0
  88. package/src/inspect/agent/profile.ts +98 -0
  89. package/src/inspect/agent/serialize.test.ts +114 -0
  90. package/src/inspect/agent/serialize.ts +274 -0
  91. package/src/inspect/agent/storage.ts +75 -0
  92. package/src/inspect/agent/types.ts +57 -0
  93. package/src/inspect/agent/vitals.ts +98 -0
  94. package/src/inspect/client.test.ts +93 -0
  95. package/src/inspect/client.ts +113 -0
  96. package/src/inspect/dispatch.ts +70 -0
  97. package/src/inspect/index.ts +9 -0
  98. package/src/inspect/protocol.ts +316 -0
  99. package/src/native/contract-meta.ts +15 -0
  100. package/src/native/contract.ts +52 -1
@@ -0,0 +1,154 @@
1
+ // Network capture: wraps fetch + XMLHttpRequest into a ring buffer of structured
2
+ // `NetworkEntry`s (headers, timing, best-effort bodies) and streams each to
3
+ // `onEntry`. Bodies are captured only for text/json under a size cap.
4
+ const MAX_BODY = 64 * 1024; // 64 KB cap for captured bodies
5
+ export function installNetworkCapture(deps) {
6
+ if (typeof window === 'undefined')
7
+ return () => { };
8
+ let seq = 0;
9
+ const id = () => `r${++seq}`;
10
+ const origFetch = window.fetch?.bind(window);
11
+ if (origFetch) {
12
+ window.fetch = async (input, init) => {
13
+ const start = deps.now();
14
+ const method = (init?.method || (input instanceof Request ? input.method : 'GET')).toUpperCase();
15
+ const url = input instanceof Request ? input.url : String(input);
16
+ const entry = {
17
+ id: id(),
18
+ ts: start,
19
+ method,
20
+ url,
21
+ resourceType: 'fetch',
22
+ requestHeaders: headersToObject(init?.headers ?? (input instanceof Request ? input.headers : undefined)),
23
+ requestBody: bodyToString(init?.body),
24
+ timing: { startMs: start, durationMs: 0 },
25
+ };
26
+ try {
27
+ const res = await origFetch(input, init);
28
+ entry.status = res.status;
29
+ entry.responseHeaders = headersToObject(res.headers);
30
+ entry.timing.durationMs = deps.now() - start;
31
+ entry.fromCache = res.fromCache;
32
+ await captureResponseBody(res, entry);
33
+ push(entry);
34
+ return res;
35
+ }
36
+ catch (err) {
37
+ entry.failed = true;
38
+ entry.timing.durationMs = deps.now() - start;
39
+ entry.responseBody = { kind: 'text', data: String(err?.message ?? err) };
40
+ push(entry);
41
+ throw err;
42
+ }
43
+ };
44
+ }
45
+ const XHR = window.XMLHttpRequest;
46
+ const origOpen = XHR?.prototype.open;
47
+ const origSend = XHR?.prototype.send;
48
+ if (XHR && origOpen && origSend) {
49
+ XHR.prototype.open = function open(method, url, ...rest) {
50
+ this.__inspect = { method: method.toUpperCase(), url, start: 0 };
51
+ return origOpen.apply(this, [method, url, ...rest]);
52
+ };
53
+ XHR.prototype.send = function send(body) {
54
+ const meta = this.__inspect;
55
+ if (meta) {
56
+ meta.start = deps.now();
57
+ this.addEventListener('loadend', () => {
58
+ const entry = {
59
+ id: id(),
60
+ ts: meta.start,
61
+ method: meta.method,
62
+ url: meta.url,
63
+ status: this.status,
64
+ resourceType: 'xhr',
65
+ requestHeaders: {},
66
+ responseHeaders: parseRawHeaders(this.getAllResponseHeaders()),
67
+ requestBody: bodyToString(body),
68
+ responseBody: captureXhrBody(this),
69
+ timing: { startMs: meta.start, durationMs: deps.now() - meta.start },
70
+ failed: this.status === 0,
71
+ };
72
+ push(entry);
73
+ });
74
+ }
75
+ return origSend.apply(this, [body]);
76
+ };
77
+ }
78
+ function push(entry) {
79
+ deps.buffer.push(entry);
80
+ deps.onEntry?.(entry);
81
+ }
82
+ return () => {
83
+ if (origFetch)
84
+ window.fetch = origFetch;
85
+ if (XHR && origOpen)
86
+ XHR.prototype.open = origOpen;
87
+ if (XHR && origSend)
88
+ XHR.prototype.send = origSend;
89
+ };
90
+ }
91
+ function headersToObject(h) {
92
+ const out = {};
93
+ if (!h)
94
+ return out;
95
+ if (typeof Headers !== 'undefined' && h instanceof Headers) {
96
+ h.forEach((v, k) => (out[k] = v));
97
+ }
98
+ else if (Array.isArray(h)) {
99
+ for (const [k, v] of h)
100
+ out[k] = v;
101
+ }
102
+ else {
103
+ Object.assign(out, h);
104
+ }
105
+ return out;
106
+ }
107
+ function parseRawHeaders(raw) {
108
+ const out = {};
109
+ for (const line of raw.split('\r\n')) {
110
+ const i = line.indexOf(':');
111
+ if (i > 0)
112
+ out[line.slice(0, i).trim().toLowerCase()] = line.slice(i + 1).trim();
113
+ }
114
+ return out;
115
+ }
116
+ function bodyToString(body) {
117
+ if (body == null)
118
+ return undefined;
119
+ if (typeof body === 'string')
120
+ return body.slice(0, MAX_BODY);
121
+ if (typeof URLSearchParams !== 'undefined' && body instanceof URLSearchParams)
122
+ return body.toString().slice(0, MAX_BODY);
123
+ return '(binary)';
124
+ }
125
+ async function captureResponseBody(res, entry) {
126
+ const type = res.headers.get('content-type') || '';
127
+ if (!/json|text|javascript|xml|html|csv/i.test(type)) {
128
+ entry.responseBody = { kind: 'omitted' };
129
+ return;
130
+ }
131
+ try {
132
+ const text = await res.clone().text();
133
+ entry.sizeBytes = text.length;
134
+ const kind = /json/i.test(type) ? 'json' : 'text';
135
+ entry.responseBody = { kind, data: text.slice(0, MAX_BODY) };
136
+ }
137
+ catch {
138
+ entry.responseBody = { kind: 'omitted' };
139
+ }
140
+ }
141
+ function captureXhrBody(xhr) {
142
+ try {
143
+ if (xhr.responseType === '' || xhr.responseType === 'text') {
144
+ const text = xhr.responseText || '';
145
+ const type = xhr.getResponseHeader('content-type') || '';
146
+ return { kind: /json/i.test(type) ? 'json' : 'text', data: text.slice(0, MAX_BODY) };
147
+ }
148
+ }
149
+ catch {
150
+ // responseText unavailable for this responseType
151
+ }
152
+ return { kind: 'omitted' };
153
+ }
154
+ //# sourceMappingURL=network.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["../../../src/inspect/agent/network.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export declare class NodeRegistry {
2
+ private seq;
3
+ private byId;
4
+ private idOf;
5
+ idFor(node: Node): string;
6
+ get(id: string): Node | undefined;
7
+ clear(): void;
8
+ }
9
+ //# sourceMappingURL=nodeRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodeRegistry.d.ts","sourceRoot":"","sources":["../../../src/inspect/agent/nodeRegistry.ts"],"names":[],"mappings":"AAIA,qBAAa,YAAY;IACvB,OAAO,CAAC,GAAG,CAAK;IAChB,OAAO,CAAC,IAAI,CAA2B;IAEvC,OAAO,CAAC,IAAI,CAA+B;IAE3C,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAazB,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAIjC,KAAK,IAAI,IAAI;CAKd"}
@@ -0,0 +1,30 @@
1
+ // Stable, reusable nodeId ↔ Node mapping for one document. A DOM capture mints
2
+ // ids; later `element`/`highlight` calls resolve them back. Ids are stable for a
3
+ // given node across captures (so the UI can keep selection across refreshes).
4
+ export class NodeRegistry {
5
+ seq = 0;
6
+ byId = new Map();
7
+ // Reverse lookup so the same node reuses its id across captures.
8
+ idOf = new WeakMap();
9
+ idFor(node) {
10
+ const existing = this.idOf.get(node);
11
+ if (existing) {
12
+ // Re-bind in case it was cleared from byId by a reset.
13
+ this.byId.set(existing, node);
14
+ return existing;
15
+ }
16
+ const id = `n${++this.seq}`;
17
+ this.idOf.set(node, id);
18
+ this.byId.set(id, node);
19
+ return id;
20
+ }
21
+ get(id) {
22
+ return this.byId.get(id);
23
+ }
24
+ clear() {
25
+ this.byId.clear();
26
+ // idOf is a WeakMap — entries drop with their nodes; minting continues
27
+ // from `seq` so ids never collide with a prior session.
28
+ }
29
+ }
30
+ //# sourceMappingURL=nodeRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodeRegistry.js","sourceRoot":"","sources":["../../../src/inspect/agent/nodeRegistry.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,iFAAiF;AACjF,8EAA8E;AAE9E,MAAM,OAAO,YAAY;IACf,GAAG,GAAG,CAAC,CAAC;IACR,IAAI,GAAG,IAAI,GAAG,EAAgB,CAAC;IACvC,iEAAiE;IACzD,IAAI,GAAG,IAAI,OAAO,EAAgB,CAAC;IAE3C,KAAK,CAAC,IAAU;QACd,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,QAAQ,EAAE,CAAC;YACb,uDAAuD;YACvD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC9B,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,MAAM,EAAE,GAAG,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAClB,uEAAuE;QACvE,wDAAwD;IAC1D,CAAC;CACF"}
@@ -0,0 +1,14 @@
1
+ import type { PickedElement } from '../protocol.js';
2
+ import type { NodeRegistry } from './nodeRegistry.js';
3
+ export interface PickerDeps {
4
+ reg: NodeRegistry;
5
+ onPicked: (p: PickedElement) => void;
6
+ setPickedNode: (n: Element | null) => void;
7
+ }
8
+ export interface PickerHandle {
9
+ setEnabled(enabled: boolean): void;
10
+ highlight(nodeId: string | null): void;
11
+ destroy(): void;
12
+ }
13
+ export declare function installPicker(deps: PickerDeps): PickerHandle;
14
+ //# sourceMappingURL=picker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"picker.d.ts","sourceRoot":"","sources":["../../../src/inspect/agent/picker.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAe,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,YAAY,CAAC;IAClB,QAAQ,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IACrC,aAAa,EAAE,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,KAAK,IAAI,CAAC;CAC5C;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACvC,OAAO,IAAI,IAAI,CAAC;CACjB;AAID,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,YAAY,CA4F5D"}
@@ -0,0 +1,102 @@
1
+ // Element picker + highlight overlay. Draws a fixed-position box over a node and,
2
+ // when picking is enabled, follows the pointer and emits the clicked element.
3
+ import { describeElement } from '../../client/inspect/selectors.js';
4
+ const OVERLAY_ID = '__ugly_inspect_overlay__';
5
+ export function installPicker(deps) {
6
+ if (typeof document === 'undefined') {
7
+ return { setEnabled: () => { }, highlight: () => { }, destroy: () => { } };
8
+ }
9
+ let enabled = false;
10
+ let overlay = null;
11
+ function ensureOverlay() {
12
+ if (overlay)
13
+ return overlay;
14
+ const el = document.createElement('div');
15
+ el.id = OVERLAY_ID;
16
+ Object.assign(el.style, {
17
+ position: 'fixed',
18
+ pointerEvents: 'none',
19
+ zIndex: '2147483647',
20
+ background: 'rgba(64,128,255,0.28)',
21
+ border: '1px solid rgba(64,128,255,0.9)',
22
+ boxSizing: 'border-box',
23
+ top: '0',
24
+ left: '0',
25
+ display: 'none',
26
+ });
27
+ document.documentElement.appendChild(el);
28
+ overlay = el;
29
+ return el;
30
+ }
31
+ function drawRect(rect) {
32
+ const el = ensureOverlay();
33
+ if (!rect) {
34
+ el.style.display = 'none';
35
+ return;
36
+ }
37
+ Object.assign(el.style, {
38
+ display: 'block',
39
+ transform: `translate(${rect.x}px, ${rect.y}px)`,
40
+ width: `${rect.w}px`,
41
+ height: `${rect.h}px`,
42
+ });
43
+ }
44
+ const onMove = (e) => {
45
+ const el = elementUnder(e.clientX, e.clientY);
46
+ if (el)
47
+ drawRect(rectOf(el));
48
+ };
49
+ const onClick = (e) => {
50
+ const el = elementUnder(e.clientX, e.clientY);
51
+ if (!el)
52
+ return;
53
+ e.preventDefault();
54
+ e.stopPropagation();
55
+ deps.setPickedNode(el);
56
+ deps.onPicked({ nodeId: deps.reg.idFor(el), selector: describeElement(el), rect: rectOf(el) });
57
+ setEnabled(false);
58
+ };
59
+ function elementUnder(x, y) {
60
+ if (overlay)
61
+ overlay.style.display = 'none';
62
+ const el = document.elementFromPoint(x, y);
63
+ return el && el.id !== OVERLAY_ID ? el : null;
64
+ }
65
+ function setEnabled(on) {
66
+ if (on === enabled)
67
+ return;
68
+ enabled = on;
69
+ if (on) {
70
+ window.addEventListener('pointermove', onMove, true);
71
+ window.addEventListener('pointerdown', onClick, true);
72
+ }
73
+ else {
74
+ window.removeEventListener('pointermove', onMove, true);
75
+ window.removeEventListener('pointerdown', onClick, true);
76
+ drawRect(null);
77
+ }
78
+ }
79
+ function highlight(nodeId) {
80
+ if (!nodeId) {
81
+ drawRect(null);
82
+ return;
83
+ }
84
+ const n = deps.reg.get(nodeId);
85
+ if (n?.nodeType === 1)
86
+ drawRect(rectOf(n));
87
+ }
88
+ return {
89
+ setEnabled,
90
+ highlight,
91
+ destroy: () => {
92
+ setEnabled(false);
93
+ overlay?.remove();
94
+ overlay = null;
95
+ },
96
+ };
97
+ }
98
+ function rectOf(el) {
99
+ const r = el.getBoundingClientRect();
100
+ return { x: r.x, y: r.y, w: r.width, h: r.height };
101
+ }
102
+ //# sourceMappingURL=picker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"picker.js","sourceRoot":"","sources":["../../../src/inspect/agent/picker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { CpuProfile } from '../protocol.js';
2
+ export declare function selfProfile(durationMs: number, now: () => number): Promise<CpuProfile>;
3
+ //# sourceMappingURL=profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../../src/inspect/agent/profile.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAgB,UAAU,EAAa,MAAM,gBAAgB,CAAC;AAK1E,wBAAsB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAsB5F"}
@@ -0,0 +1,88 @@
1
+ // In-page CPU profiler fallback (mobile / no-CDP). Samples the current JS stack
2
+ // on a timer by throwing+catching to read Error().stack, then folds the samples
3
+ // into a call tree. The desktop host prefers CDP Profiler (precise:true); this
4
+ // is the best-effort precise:false path.
5
+ import { parseStack } from './console.js';
6
+ const SAMPLE_INTERVAL_MS = 4;
7
+ export async function selfProfile(durationMs, now) {
8
+ const start = now();
9
+ const stacks = [];
10
+ await new Promise((resolve) => {
11
+ const tick = () => {
12
+ stacks.push(captureFrames());
13
+ if (now() - start >= durationMs)
14
+ resolve();
15
+ else
16
+ schedule(tick);
17
+ };
18
+ schedule(tick);
19
+ });
20
+ const end = now();
21
+ return {
22
+ startTime: start,
23
+ endTime: end,
24
+ durationMs: end - start,
25
+ sampleCount: stacks.length,
26
+ precise: false,
27
+ root: foldSamples(stacks),
28
+ };
29
+ }
30
+ function schedule(fn) {
31
+ if (typeof setTimeout !== 'undefined')
32
+ setTimeout(fn, SAMPLE_INTERVAL_MS);
33
+ else
34
+ fn();
35
+ }
36
+ function captureFrames() {
37
+ // Frames are leaf→root; reverse to root→leaf and drop our own profiler frames.
38
+ const frames = parseStack(new Error().stack, 1);
39
+ return frames
40
+ .filter((f) => !/profile\.(js|ts)/.test(f.url))
41
+ .map((f) => ({ url: f.url, line: f.line, col: f.col, functionName: f.functionName }))
42
+ .reverse();
43
+ }
44
+ function foldSamples(stacks) {
45
+ let nextId = 0;
46
+ const root = makeNode(nextId++, '(root)');
47
+ for (const stack of stacks) {
48
+ let node = root;
49
+ node.hitCount++;
50
+ for (const frame of stack) {
51
+ const f = frame;
52
+ const key = `${f.functionName ?? '(anonymous)'}@${f.url}:${f.line}`;
53
+ let child = node.childMap.get(key);
54
+ if (!child) {
55
+ child = makeNode(nextId++, f.functionName ?? '(anonymous)', { url: f.url, line: f.line, col: f.col });
56
+ node.childMap.set(key, child);
57
+ node.children.push(child);
58
+ }
59
+ child.hitCount++;
60
+ node = child;
61
+ }
62
+ }
63
+ finalize(root, stacks.length);
64
+ return strip(root);
65
+ }
66
+ function makeNode(id, functionName, source) {
67
+ return { id, functionName, source, selfTimeMs: 0, totalTimeMs: 0, hitCount: 0, children: [], childMap: new Map() };
68
+ }
69
+ function finalize(node, totalSamples) {
70
+ let childTotal = 0;
71
+ for (const c of node.children)
72
+ childTotal += finalize(c, totalSamples);
73
+ node.totalTimeMs = node.hitCount * SAMPLE_INTERVAL_MS;
74
+ node.selfTimeMs = Math.max(0, node.totalTimeMs - childTotal);
75
+ return node.totalTimeMs;
76
+ }
77
+ function strip(node) {
78
+ return {
79
+ id: node.id,
80
+ functionName: node.functionName,
81
+ source: node.source,
82
+ selfTimeMs: node.selfTimeMs,
83
+ totalTimeMs: node.totalTimeMs,
84
+ hitCount: node.hitCount,
85
+ children: node.children.map((c) => strip(c)),
86
+ };
87
+ }
88
+ //# sourceMappingURL=profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../../src/inspect/agent/profile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { RemoteType, RemoteValue } from '../protocol.js';
2
+ /** Holds composite values behind opaque ids so the UI can expand them later. */
3
+ export declare class ObjectRegistry {
4
+ private seq;
5
+ private byId;
6
+ put(value: unknown): string;
7
+ get(id: string): unknown;
8
+ clear(): void;
9
+ }
10
+ export interface SerializeDeps {
11
+ registry: ObjectRegistry;
12
+ /** Mints a stable nodeId for a DOM node, when running in a real document. */
13
+ nodeIdFor?: (node: unknown) => string;
14
+ }
15
+ /** Serialize a value one level deep (composites carry a shallow preview). */
16
+ export declare function serialize(value: unknown, deps: SerializeDeps): RemoteValue;
17
+ /** Full one-level expansion of a previously-registered composite. */
18
+ export declare function expand(value: unknown, deps: SerializeDeps): RemoteValue[];
19
+ export type { RemoteType };
20
+ //# sourceMappingURL=serialize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../../src/inspect/agent/serialize.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAe,UAAU,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAM3E,gFAAgF;AAChF,qBAAa,cAAc;IACzB,OAAO,CAAC,GAAG,CAAK;IAChB,OAAO,CAAC,IAAI,CAA8B;IAE1C,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAM3B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxB,KAAK,IAAI,IAAI;CAGd;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,cAAc,CAAC;IACzB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM,CAAC;CACvC;AAoBD,6EAA6E;AAC7E,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,GAAG,WAAW,CAiG1E;AAED,qEAAqE;AACrE,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,GAAG,WAAW,EAAE,CAiBzE;AAkGD,YAAY,EAAE,UAAU,EAAE,CAAC"}