@zzzen/pyright-internal 1.2.0-dev.20260913 → 1.2.0-dev.20260920

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 (74) hide show
  1. package/dist/analyzer/checker.js +2 -3
  2. package/dist/analyzer/checker.js.map +1 -1
  3. package/dist/analyzer/program.js +1 -0
  4. package/dist/analyzer/program.js.map +1 -1
  5. package/dist/analyzer/typeCacheUtils.d.ts +1 -0
  6. package/dist/analyzer/typeCacheUtils.js +28 -1
  7. package/dist/analyzer/typeCacheUtils.js.map +1 -1
  8. package/dist/analyzer/typeEvaluator.d.ts +1 -1
  9. package/dist/analyzer/typeEvaluator.js +7 -10
  10. package/dist/analyzer/typeEvaluator.js.map +1 -1
  11. package/dist/analyzer/typeEvaluatorTypes.d.ts +1 -0
  12. package/dist/analyzer/typedDicts.js +3 -7
  13. package/dist/analyzer/typedDicts.js.map +1 -1
  14. package/dist/analyzer/types.js +7 -0
  15. package/dist/analyzer/types.js.map +1 -1
  16. package/dist/common/configOptions.d.ts +1 -0
  17. package/dist/common/configOptions.js +16 -0
  18. package/dist/common/configOptions.js.map +1 -1
  19. package/dist/common/envVarUtils.js +3 -3
  20. package/dist/common/envVarUtils.js.map +1 -1
  21. package/dist/tests/envVarUtils.test.js +16 -0
  22. package/dist/tests/envVarUtils.test.js.map +1 -1
  23. package/dist/tests/evaluationTrace.integration.test.d.ts +1 -0
  24. package/dist/tests/evaluationTrace.integration.test.js +266 -0
  25. package/dist/tests/evaluationTrace.integration.test.js.map +1 -0
  26. package/dist/tests/evaluationTrace.test.d.ts +1 -0
  27. package/dist/tests/evaluationTrace.test.js +422 -0
  28. package/dist/tests/evaluationTrace.test.js.map +1 -0
  29. package/dist/tests/evaluationTrace.viewer.test.d.ts +1 -0
  30. package/dist/tests/evaluationTrace.viewer.test.js +529 -0
  31. package/dist/tests/evaluationTrace.viewer.test.js.map +1 -0
  32. package/dist/tests/mypyPrimerAnalysis.test.js +1193 -47
  33. package/dist/tests/mypyPrimerAnalysis.test.js.map +1 -1
  34. package/dist/tests/mypyPrimerMcp.test.d.ts +1 -0
  35. package/dist/tests/mypyPrimerMcp.test.js +186 -0
  36. package/dist/tests/mypyPrimerMcp.test.js.map +1 -0
  37. package/dist/tests/typeCacheUtils.test.js +15 -0
  38. package/dist/tests/typeCacheUtils.test.js.map +1 -1
  39. package/dist/tests/typeEvaluator7.test.js +4 -0
  40. package/dist/tests/typeEvaluator7.test.js.map +1 -1
  41. package/dist/trace/capture.d.ts +31 -0
  42. package/dist/trace/capture.js +272 -0
  43. package/dist/trace/capture.js.map +1 -0
  44. package/dist/trace/cli.d.ts +1 -0
  45. package/dist/trace/cli.js +196 -0
  46. package/dist/trace/cli.js.map +1 -0
  47. package/dist/trace/nativeAdapter.d.ts +16 -0
  48. package/dist/trace/nativeAdapter.js +422 -0
  49. package/dist/trace/nativeAdapter.js.map +1 -0
  50. package/dist/trace/nativeBridge.d.ts +46 -0
  51. package/dist/trace/nativeBridge.js +416 -0
  52. package/dist/trace/nativeBridge.js.map +1 -0
  53. package/dist/trace/reader.d.ts +83 -0
  54. package/dist/trace/reader.js +296 -0
  55. package/dist/trace/reader.js.map +1 -0
  56. package/dist/trace/recorder.d.ts +59 -0
  57. package/dist/trace/recorder.js +303 -0
  58. package/dist/trace/recorder.js.map +1 -0
  59. package/dist/trace/runtimeLoader.d.ts +23 -0
  60. package/dist/trace/runtimeLoader.js +172 -0
  61. package/dist/trace/runtimeLoader.js.map +1 -0
  62. package/dist/trace/viewerAssets.d.ts +2 -0
  63. package/dist/trace/viewerAssets.js +76 -0
  64. package/dist/trace/viewerAssets.js.map +1 -0
  65. package/dist/trace/viewerClient.d.ts +1 -0
  66. package/dist/trace/viewerClient.js +485 -0
  67. package/dist/trace/viewerClient.js.map +1 -0
  68. package/dist/trace/viewerModel.d.ts +308 -0
  69. package/dist/trace/viewerModel.js +524 -0
  70. package/dist/trace/viewerModel.js.map +1 -0
  71. package/dist/trace/viewerServer.d.ts +7 -0
  72. package/dist/trace/viewerServer.js +185 -0
  73. package/dist/trace/viewerServer.js.map +1 -0
  74. package/package.json +4 -2
@@ -0,0 +1,485 @@
1
+ "use strict";
2
+ /// <reference lib="dom" />
3
+ /*
4
+ * viewerClient.ts
5
+ * Copyright (c) Microsoft Corporation.
6
+ * Licensed under the MIT license.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.viewerMain = viewerMain;
10
+ // This self-contained function is served as compiled JavaScript. It has no runtime
11
+ // imports or artifact interpolation; all captured strings go through textContent.
12
+ function viewerMain() {
13
+ let cursor = 0;
14
+ let end = 0;
15
+ let selectedId = '';
16
+ let timelineOffset = 0;
17
+ let selectedPair = -1;
18
+ let cursorRevision = 0;
19
+ let entityRevision = 0;
20
+ let timelineRevision = 0;
21
+ let comparisonRevision = 0;
22
+ const byId = (id) => {
23
+ const element = document.getElementById(id);
24
+ if (!element) {
25
+ throw new Error(`Missing viewer control: ${id}`);
26
+ }
27
+ return element;
28
+ };
29
+ const input = (id) => {
30
+ const element = byId(id);
31
+ if (!(element instanceof HTMLInputElement || element instanceof HTMLSelectElement)) {
32
+ throw new Error(`Invalid input control: ${id}`);
33
+ }
34
+ return element;
35
+ };
36
+ const text = (value) => (typeof value === 'string' ? value : JSON.stringify(value, null, 2));
37
+ const short = (id) => id.slice(id.lastIndexOf(':') + 1);
38
+ const sourceLabel = (value) => {
39
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
40
+ return 'source not recorded';
41
+ }
42
+ const source = value;
43
+ const name = typeof source.path === 'string' ? source.path.split(/[\\/]/).pop() : 'source';
44
+ return typeof source.start === 'number' && typeof source.length === 'number'
45
+ ? `${name} | UTF-16 offsets [${source.start}, ${source.start + source.length})`
46
+ : `${name} | offsets unobserved`;
47
+ };
48
+ const el = (tag, content, className) => {
49
+ const element = document.createElement(tag);
50
+ if (content !== undefined) {
51
+ element.textContent = text(content);
52
+ }
53
+ if (className) {
54
+ element.className = className;
55
+ }
56
+ return element;
57
+ };
58
+ const showError = (error) => {
59
+ const target = byId('error');
60
+ target.hidden = false;
61
+ target.textContent = error instanceof Error ? error.message : String(error);
62
+ };
63
+ const run = (action) => {
64
+ byId('error').hidden = true;
65
+ action().catch(showError);
66
+ };
67
+ const button = (label, action, className) => {
68
+ const element = el('button', label, className);
69
+ element.type = 'button';
70
+ element.addEventListener('click', () => run(action));
71
+ return element;
72
+ };
73
+ async function api(route, params = {}) {
74
+ const url = new URL(`api/${route}`, window.location.href);
75
+ for (const [key, value] of Object.entries(params)) {
76
+ if (value !== '') {
77
+ url.searchParams.set(key, String(value));
78
+ }
79
+ }
80
+ const response = await fetch(url, { headers: { 'X-Pyright-Trace-Viewer': '1' }, credentials: 'omit' });
81
+ if (!response.ok) {
82
+ throw new Error(`Viewer ${response.status}: ${(await response.json()).error}`);
83
+ }
84
+ return response.json();
85
+ }
86
+ const link = (id, at = cursor, label) => {
87
+ const result = button(label ?? short(id), () => selectEvent(at, id), 'ref-link');
88
+ result.title = id;
89
+ result.dataset.entity = id;
90
+ result.dataset.seq = String(at);
91
+ return result;
92
+ };
93
+ function pages(target, value, load) {
94
+ target.replaceChildren();
95
+ const previous = button('Previous', () => load(Math.max(0, value.offset - value.limit)));
96
+ previous.disabled = value.offset === 0;
97
+ const next = button('Next', () => load(value.offset + value.limit));
98
+ next.disabled = value.offset + value.limit >= value.total;
99
+ target.append(previous, el('span', `${value.total ? value.offset + 1 : 0}-${Math.min(value.offset + value.limit, value.total)} of ${value.total}`), next);
100
+ }
101
+ function fieldsTable(fields, at) {
102
+ const table = el('table', undefined, 'fields');
103
+ for (const field of fields) {
104
+ const row = el('tr');
105
+ const cell = el('td');
106
+ if (field.ref) {
107
+ cell.append(link(field.ref, at, field.ref));
108
+ }
109
+ else {
110
+ cell.append(el('pre', field.value));
111
+ }
112
+ row.append(el('th', field.key), cell);
113
+ table.append(row);
114
+ }
115
+ return table;
116
+ }
117
+ async function loadTimeline(offset = 0) {
118
+ const revision = ++timelineRevision;
119
+ const value = await api('timeline', {
120
+ offset,
121
+ kind: input('kind').value,
122
+ query: input('query').value,
123
+ role: input('role').value,
124
+ span: input('scope').value,
125
+ });
126
+ if (revision !== timelineRevision) {
127
+ return;
128
+ }
129
+ timelineOffset = offset;
130
+ const target = byId('timeline');
131
+ target.replaceChildren();
132
+ for (const row of value.items) {
133
+ const item = button(`${' '.repeat(Math.min(row.depth, 8))}${row.depth ? `depth ${row.depth} / ` : ''}#${row.seq} ${row.kind} - ${text(row.label)}`, () => selectEvent(row.seq), `row${row.seq === cursor ? ' selected' : ''}`);
134
+ item.dataset.seq = String(row.seq);
135
+ item.append(el('small', `${text(row.role)} | ${short(row.span)} | ${sourceLabel(row.source)}`));
136
+ item.title = text(row.source);
137
+ target.append(item);
138
+ }
139
+ if (!value.total) {
140
+ target.append(el('p', 'No recorded events match these filters.'));
141
+ }
142
+ pages(byId('timeline-pages'), value, loadTimeline);
143
+ }
144
+ async function selectEvent(seq, identity) {
145
+ const revision = ++cursorRevision;
146
+ ++entityRevision;
147
+ cursor = seq;
148
+ input('cursor').value = String(cursor);
149
+ byId('cursor-label').textContent = `of ${end}; graph and fields at sequence ${cursor}`;
150
+ for (const row of byId('timeline').querySelectorAll('[data-seq]')) {
151
+ row.classList.toggle('selected', row.dataset.seq === String(cursor));
152
+ }
153
+ byId('graph').replaceChildren(el('p', 'Loading at selected sequence...'));
154
+ byId('entity-details').replaceChildren();
155
+ byId('history').replaceChildren();
156
+ byId('edge-list').replaceChildren();
157
+ byId('graph-note').textContent = '';
158
+ byId('field-pages').replaceChildren();
159
+ byId('history-pages').replaceChildren();
160
+ const event = seq === 0 ? undefined : await api('event', { seq });
161
+ if (revision !== cursorRevision) {
162
+ return;
163
+ }
164
+ const target = byId('event-details');
165
+ target.replaceChildren();
166
+ if (event) {
167
+ target.append(el('p', `#${event.seq} ${event.kind} ${text(event.label)}`), el('pre', event.source));
168
+ if (event.site) {
169
+ const detail = el('details');
170
+ detail.append(el('summary', 'Recorded native hook / offsets'), el('pre', event.site));
171
+ target.append(detail);
172
+ }
173
+ target.append(el('p', 'Recorded event navigation links, not memory or dependency edges.', 'muted'));
174
+ for (const ref of event.referenceLinks) {
175
+ const control = link(ref.id, seq, `${ref.path}: ${short(ref.id)}`);
176
+ control.dataset.referencePath = ref.path;
177
+ target.append(control);
178
+ }
179
+ if (event.referenceClipping.length) {
180
+ target.append(el('p', `Event references clipped: ${event.referenceClipping.join(', ')}. Other references may be unexpanded. See viewer limits.`, 'warning'));
181
+ }
182
+ if (event.span) {
183
+ target.append(link(event.span, seq, `Occurrence ${short(event.span)}`));
184
+ target.append(button('Filter timeline to this occurrence (inclusive)', async () => {
185
+ input('scope').value = event.span;
186
+ input('query').value = '';
187
+ input('kind').value = '';
188
+ await loadTimeline();
189
+ }));
190
+ }
191
+ const details = el('details');
192
+ details.append(el('summary', 'Event payload (bounded display)'), el('pre', event.data));
193
+ target.append(details);
194
+ }
195
+ else {
196
+ target.append(el('p', 'Before first recorded event; no observed state.'));
197
+ }
198
+ selectedId = identity ?? event?.references[0] ?? event?.span ?? selectedId;
199
+ if (selectedId) {
200
+ await showEntity(selectedId);
201
+ }
202
+ else {
203
+ byId('graph').replaceChildren(el('p', 'This event has no recorded entity reference. Select an occurrence or enter an identity.'));
204
+ }
205
+ }
206
+ async function showEntity(id, historyOffset = 0, fieldOffset = 0) {
207
+ const revision = ++entityRevision;
208
+ const at = cursor;
209
+ selectedId = id;
210
+ input('entity-id').value = id;
211
+ const [entity, graph] = await Promise.all([
212
+ api('entity', { id, at, historyOffset, fieldOffset }),
213
+ api('graph', { id, at, relation: input('relation').value, hops: input('hops').value }),
214
+ ]);
215
+ if (revision !== entityRevision || at !== cursor) {
216
+ return;
217
+ }
218
+ const target = byId('entity-details');
219
+ target.replaceChildren(el('p', `${entity.id} | ${entity.category}`), el('p', entity.state
220
+ ? `Observed v${entity.state.version} at #${entity.state.observedSeq} (version introduced #${entity.state.seq}); snapshot complete: ${entity.state.complete}. Writer: ${entity.state.writer}`
221
+ : 'State unknown at this sequence.'), el('p', entity.meaning, 'muted'), fieldsTable(entity.fields.items, at));
222
+ if (entity.state?.complete === false) {
223
+ target.append(el('p', 'Partial/opaque snapshot: omitted fields or children do not imply absence.', 'warning'));
224
+ }
225
+ pages(byId('field-pages'), entity.fields, (offset) => showEntity(id, historyOffset, offset));
226
+ const history = byId('history');
227
+ history.replaceChildren();
228
+ for (const observation of entity.history.items) {
229
+ const item = button(`#${observation.seq} observed v${observation.version} | ${text(observation.cause)}${observation.afterCursor ? ' [after cursor; click to move forward]' : ''}`, () => selectEvent(observation.seq, id), `row${observation.afterCursor ? ' history-future' : ''}`);
230
+ item.dataset.seq = String(observation.seq);
231
+ history.append(item);
232
+ }
233
+ if (!entity.history.total) {
234
+ history.append(el('p', 'No object-state observations recorded for this identity.'));
235
+ }
236
+ pages(byId('history-pages'), entity.history, (offset) => showEntity(id, offset, fieldOffset));
237
+ drawGraph(graph);
238
+ }
239
+ function drawGraph(graph) {
240
+ byId('graph-note').textContent = `${graph.meaning} ${graph.nodes.length} nodes / ${graph.edges.length} edges; ${graph.hops}-hop local expansion${graph.capped ? ' CAPPED (more recorded edges/nodes omitted)' : ''}. Unobserved/opaque fields and events beyond capture coverage remain unknown.`;
241
+ const svgEl = (tag, attrs) => {
242
+ const node = document.createElementNS('http://www.w3.org/2000/svg', tag);
243
+ for (const [name, value] of Object.entries(attrs)) {
244
+ node.setAttribute(name, String(value));
245
+ }
246
+ return node;
247
+ };
248
+ const width = 820;
249
+ const height = Math.max(300, Math.ceil((graph.nodes.length - 1) / 2) * 68 + 40);
250
+ const svg = svgEl('svg', {
251
+ viewBox: `0 0 ${width} ${height}`,
252
+ role: 'group',
253
+ 'aria-label': 'Recorded object/state relationship graph',
254
+ });
255
+ const positions = new Map();
256
+ graph.nodes.forEach((node, index) => {
257
+ positions.set(node.id, index === 0
258
+ ? { x: width / 2, y: height / 2 }
259
+ : { x: index % 2 ? 115 : width - 115, y: Math.floor((index - 1) / 2) * 68 + 46 });
260
+ });
261
+ const defs = svgEl('defs', {});
262
+ const marker = svgEl('marker', {
263
+ id: 'arrow',
264
+ viewBox: '0 0 10 10',
265
+ refX: 9,
266
+ refY: 5,
267
+ markerWidth: 6,
268
+ markerHeight: 6,
269
+ orient: 'auto-start-reverse',
270
+ });
271
+ marker.append(svgEl('path', { d: 'M 0 0 L 10 5 L 0 10 z', fill: '#acbccb' }));
272
+ defs.append(marker);
273
+ svg.append(defs);
274
+ const edgeList = byId('edge-list');
275
+ edgeList.replaceChildren();
276
+ graph.edges.forEach((edge, index) => {
277
+ const from = positions.get(edge.from);
278
+ const to = positions.get(edge.to);
279
+ const self = edge.from === edge.to;
280
+ const delta = from.x < to.x ? 95 : -95;
281
+ const offset = ((index % 5) - 2) * 9;
282
+ const path = svgEl('path', {
283
+ d: self
284
+ ? `M ${from.x + 20} ${from.y - 22} c 100 -80 120 50 74 30`
285
+ : `M ${from.x + delta} ${from.y} Q ${(from.x + to.x) / 2} ${(from.y + to.y) / 2 + offset} ${to.x - delta} ${to.y}`,
286
+ class: `edge ${edge.relation}`,
287
+ fill: 'none',
288
+ 'marker-end': 'url(#arrow)',
289
+ });
290
+ const title = svgEl('title', {});
291
+ title.textContent = `${edge.relation}: ${edge.from} -> ${edge.to} ${text(edge.field)} at #${edge.seq}`;
292
+ path.append(title);
293
+ svg.append(path);
294
+ const row = el('div');
295
+ row.append(link(edge.from, graph.at), el('span', ` -- ${edge.relation} ${text(edge.field)} --> `), link(edge.to, graph.at), button(`#${edge.seq}`, () => selectEvent(edge.seq, edge.to)));
296
+ edgeList.append(row);
297
+ });
298
+ graph.nodes.forEach((node) => {
299
+ const position = positions.get(node.id);
300
+ const group = svgEl('g', {
301
+ class: `node${node.id === graph.root ? ' root' : ''}${node.version === null ? ' unknown' : ''}`,
302
+ transform: `translate(${position.x - 95} ${position.y - 23})`,
303
+ tabindex: 0,
304
+ role: 'button',
305
+ 'aria-label': `${node.id}, ${node.category}, observed version ${node.version ?? 'unknown'}`,
306
+ 'data-entity': node.id,
307
+ });
308
+ group.append(svgEl('rect', { width: 190, height: 46, rx: 6 }));
309
+ const title = svgEl('title', {});
310
+ title.textContent = `${node.id}\n${node.label}\nSnapshot complete: ${node.complete ?? 'unknown'}`;
311
+ const first = svgEl('text', { x: 8, y: 18 });
312
+ first.textContent = `${short(node.id)} | ${node.category.slice(0, 18)}`;
313
+ const second = svgEl('text', { x: 8, y: 34 });
314
+ second.textContent =
315
+ node.version === null
316
+ ? 'state unobserved'
317
+ : `observed v${node.version} at #${node.observedSeq}${node.complete === false ? ' (partial)' : ''}`;
318
+ group.append(title, first, second);
319
+ group.addEventListener('click', () => run(() => showEntity(node.id)));
320
+ group.addEventListener('keydown', (event) => {
321
+ if (event.key === 'Enter' || event.key === ' ') {
322
+ event.preventDefault();
323
+ run(() => showEntity(node.id));
324
+ }
325
+ });
326
+ svg.append(group);
327
+ });
328
+ byId('graph').replaceChildren(svg);
329
+ }
330
+ async function loadPairs(offset = 0) {
331
+ const pairs = await api('pairs', { offset });
332
+ const target = byId('pairs');
333
+ target.replaceChildren();
334
+ if (!pairs.total) {
335
+ target.append(el('p', 'No baseline/candidate trials in this artifact. Timeline and observed graph remain available for ordinary analysis.'));
336
+ }
337
+ for (const pair of pairs.items) {
338
+ const item = button(`Pair ${pair.index + 1}: ${short(pair.baseline)} baseline / ${short(pair.replay)} candidate | ${sourceLabel(pair.source)}`, () => loadComparison(pair.index), 'row');
339
+ item.dataset.pair = String(pair.index);
340
+ target.append(item);
341
+ }
342
+ pages(byId('pair-pages'), pairs, loadPairs);
343
+ }
344
+ async function loadComparison(index, offset = 0) {
345
+ const revision = ++comparisonRevision;
346
+ const value = await api('comparison', { index, offset });
347
+ if (revision !== comparisonRevision) {
348
+ return;
349
+ }
350
+ selectedPair = index;
351
+ for (const row of byId('pairs').querySelectorAll('[data-pair]')) {
352
+ row.classList.toggle('selected', row.dataset.pair === String(index));
353
+ }
354
+ const target = byId('comparison');
355
+ target.replaceChildren(el('h3', `Pair ${selectedPair + 1}`));
356
+ const sides = el('div', undefined, 'sides');
357
+ value.sides.forEach((side, sideIndex) => {
358
+ const section = el('div', undefined, 'side');
359
+ section.append(el('h3', sideIndex === 0 ? 'Baseline' : 'Candidate (actual replay)'), link(side.span, side.entry.seq, side.span), el('p', side.entry.source), el('p', side.meaning, 'muted'));
360
+ for (const boundary of side.boundaries) {
361
+ if (boundary.seq !== null) {
362
+ const seq = boundary.seq;
363
+ const item = button(`${boundary.phase} #${seq} | checkpoint ${short(String(boundary.span))}; owner trial ${short(side.span)}`, () => selectEvent(seq), 'boundary');
364
+ item.dataset.boundary = `${sideIndex}-${boundary.phase}`;
365
+ item.dataset.seq = String(seq);
366
+ section.append(item);
367
+ }
368
+ else {
369
+ section.append(el('p', `${boundary.phase}: UNKNOWN (missing, aborted, ambiguous or truncated)`, 'warning'));
370
+ }
371
+ }
372
+ section.append(el('h3', 'First actual TypeResult'));
373
+ if (side.firstResult) {
374
+ const result = side.firstResult;
375
+ section.append(el('p', `First-result own-field snapshot complete: ${text(result.snapshotComplete)}`));
376
+ section.append(result.id
377
+ ? link(result.id, result.seq, `${result.id} at #${result.seq}`)
378
+ : el('p', `Return at #${result.seq}; identity unobserved`), fieldsTable(result.fields, result.seq));
379
+ section.append(el('p', 'Native isIncomplete, when recorded, is distinct from snapshot completeness. Equal Types do not merge TypeResult identities.', 'muted'));
380
+ }
381
+ else {
382
+ section.append(el('p', 'First result unknown; not reconstructed from a later cache read.', 'warning'));
383
+ }
384
+ section.append(el('h3', 'Trial outcome / private diagnostics'));
385
+ if (side.outcome) {
386
+ const outcome = side.outcome;
387
+ section.append(el('p', `failed: ${text(outcome.failed)} (observed trial outcome)`));
388
+ if (outcome.id) {
389
+ section.append(link(outcome.id, outcome.seq, 'Outcome fields'));
390
+ }
391
+ if (outcome.diagnostics) {
392
+ section.append(link(outcome.diagnostics, outcome.seq, 'Private diagnostics collection'));
393
+ section.append(el('p', `Diagnostic collection snapshot complete: ${text(outcome.diagnosticsSnapshotComplete)}; individual diagnostics and children may be partial.`, 'muted'));
394
+ }
395
+ for (const diagnostic of side.diagnostics) {
396
+ const detail = el('details');
397
+ detail.append(el('summary', diagnostic.id ?? 'Diagnostic (unobserved identity)'), fieldsTable(diagnostic.fields, diagnostic.seq));
398
+ if (diagnostic.id) {
399
+ detail.append(link(diagnostic.id, diagnostic.seq, 'Inspect diagnostic'));
400
+ }
401
+ section.append(detail);
402
+ }
403
+ if (side.diagnosticsCapped) {
404
+ section.append(el('p', 'Diagnostic preview capped at 20; inspect collection fields/history for more.', 'warning'));
405
+ }
406
+ }
407
+ else {
408
+ section.append(el('p', 'Trial return/outcome unknown.', 'warning'));
409
+ }
410
+ const counts = el('details');
411
+ counts.append(el('summary', `Inclusive native counts${side.countsCapped ? ' (100-key display cap)' : ''}`), fieldsTable(side.counts.map((item) => ({ key: item.name, value: item.count })), side.entry.seq));
412
+ section.append(counts);
413
+ sides.append(section);
414
+ });
415
+ target.append(sides, el('h3', 'Six owned boundary observations'), el('p', value.meaning, 'muted'));
416
+ const wrapper = el('div', undefined, 'changes');
417
+ const table = el('table', undefined, 'fields');
418
+ const heading = el('tr');
419
+ for (const name of ['Entity', ...value.order, 'Observed changes']) {
420
+ heading.append(el('th', name));
421
+ }
422
+ table.append(heading);
423
+ for (const change of value.changes.items) {
424
+ const row = el('tr');
425
+ row.append(el('td', short(change.entity)));
426
+ change.versions.forEach((version, boundaryIndex) => {
427
+ const cell = el('td');
428
+ const seq = change.observationSequences[boundaryIndex];
429
+ if (version !== null && seq !== null) {
430
+ const control = link(change.entity, seq, `v${version} observed #${seq}${change.complete[boundaryIndex] ? '' : ' (partial)'}`);
431
+ control.title = `${change.entity}; boundary observation #${seq}; version introduced #${change.stateSequences[boundaryIndex]}`;
432
+ cell.append(control);
433
+ }
434
+ else {
435
+ cell.textContent = 'unknown';
436
+ }
437
+ row.append(cell);
438
+ });
439
+ row.append(el('td', `baseline: ${change.baselineChange}; unwind: ${change.unwindChange}; between trials: ${change.betweenTrials}; replay: ${change.replayChange}; observed own-field change survived unwind: ${change.observedMutationSurvived}`));
440
+ table.append(row);
441
+ }
442
+ wrapper.append(table);
443
+ target.append(wrapper);
444
+ pages(byId('comparison-pages'), value.changes, (next) => loadComparison(index, next));
445
+ }
446
+ const submit = (id, action) => byId(id).addEventListener('submit', (event) => {
447
+ event.preventDefault();
448
+ run(action);
449
+ });
450
+ submit('filters', () => loadTimeline());
451
+ submit('cursor-form', () => selectEvent(Number(input('cursor').value), selectedId || undefined));
452
+ submit('entity-form', () => showEntity(input('entity-id').value));
453
+ for (const id of ['relation', 'hops']) {
454
+ input(id).addEventListener('change', () => {
455
+ if (selectedId) {
456
+ run(() => showEntity(selectedId));
457
+ }
458
+ });
459
+ }
460
+ run(async () => {
461
+ const summary = await api('summary');
462
+ end = summary.end;
463
+ input('cursor').setAttribute('max', String(end));
464
+ byId('artifact').textContent = summary.label;
465
+ const status = summary.status && typeof summary.status === 'object' && !Array.isArray(summary.status)
466
+ ? summary.status
467
+ : {};
468
+ byId('status').textContent = `Capture ${text(status.status ?? 'unknown')}; tracing exhausted: ${text(status.exhausted ?? 'unknown')}; dropped records: ${text(status.dropped ?? 'unknown')}; graph gaps: ${text(status.gaps ?? 'unknown')}`;
469
+ byId('coverage-body').append(el('p', summary.warning), el('h3', 'Capture footer'), el('pre', summary.status), el('h3', 'Recorded adapter coverage'), el('pre', summary.coverage), el('h3', 'Provenance (bounded display)'), el('pre', summary.provenance), el('h3', 'Viewer display limits'), el('pre', summary.limits));
470
+ const kinds = input('kind');
471
+ kinds.replaceChildren();
472
+ kinds.append(el('option', 'All events'));
473
+ kinds.firstElementChild.value = '';
474
+ for (const kind of summary.kinds) {
475
+ const option = el('option', kind === 'enter' ? 'enter (occurrences)' : kind);
476
+ option.value = kind;
477
+ kinds.append(option);
478
+ }
479
+ kinds.value = 'enter';
480
+ await Promise.all([loadTimeline(timelineOffset), loadPairs()]);
481
+ const firstOccurrence = byId('timeline').querySelector('[data-seq]');
482
+ await selectEvent(Number(firstOccurrence?.dataset.seq ?? 1));
483
+ });
484
+ }
485
+ //# sourceMappingURL=viewerClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewerClient.js","sourceRoot":"","sources":["../../../../../src/trace/viewerClient.ts"],"names":[],"mappings":"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"}