@petukhovart/agent-view 0.1.0 → 0.5.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/.claude-plugin/marketplace.json +14 -0
- package/.claude-plugin/plugin.json +13 -2
- package/README.md +211 -61
- package/dist/adapters/browser.d.ts.map +1 -1
- package/dist/adapters/browser.js +11 -11
- package/dist/adapters/browser.js.map +1 -1
- package/dist/adapters/electron.d.ts.map +1 -1
- package/dist/adapters/electron.js +11 -11
- package/dist/adapters/electron.js.map +1 -1
- package/dist/adapters/tauri.d.ts.map +1 -1
- package/dist/adapters/tauri.js +11 -11
- package/dist/adapters/tauri.js.map +1 -1
- package/dist/adapters/types.d.ts +5 -2
- package/dist/adapters/types.d.ts.map +1 -1
- package/dist/cdp/_tests/console-stream.d.ts +35 -0
- package/dist/cdp/_tests/console-stream.d.ts.map +1 -0
- package/dist/cdp/_tests/console-stream.js +103 -0
- package/dist/cdp/_tests/console-stream.js.map +1 -0
- package/dist/cdp/ax-cache.d.ts +16 -0
- package/dist/cdp/ax-cache.d.ts.map +1 -0
- package/dist/cdp/ax-cache.js +31 -0
- package/dist/cdp/ax-cache.js.map +1 -0
- package/dist/cdp/console-stream.d.ts +35 -0
- package/dist/cdp/console-stream.d.ts.map +1 -0
- package/dist/cdp/console-stream.js +103 -0
- package/dist/cdp/console-stream.js.map +1 -0
- package/dist/cdp/transport.d.ts +5 -2
- package/dist/cdp/transport.d.ts.map +1 -1
- package/dist/cdp/transport.js +309 -26
- package/dist/cdp/transport.js.map +1 -1
- package/dist/cdp/types.d.ts +109 -8
- package/dist/cdp/types.d.ts.map +1 -1
- package/dist/cdp/types.js +35 -1
- package/dist/cdp/types.js.map +1 -1
- package/dist/cli/commands/console.d.ts +12 -0
- package/dist/cli/commands/console.d.ts.map +1 -0
- package/dist/cli/commands/console.js +32 -0
- package/dist/cli/commands/console.js.map +1 -0
- package/dist/cli/commands/dom.d.ts +5 -0
- package/dist/cli/commands/dom.d.ts.map +1 -1
- package/dist/cli/commands/dom.js +5 -0
- package/dist/cli/commands/dom.js.map +1 -1
- package/dist/cli/commands/drag.d.ts +13 -0
- package/dist/cli/commands/drag.d.ts.map +1 -0
- package/dist/cli/commands/drag.js +72 -0
- package/dist/cli/commands/drag.js.map +1 -0
- package/dist/cli/commands/eval.d.ts +9 -0
- package/dist/cli/commands/eval.d.ts.map +1 -0
- package/dist/cli/commands/eval.js +30 -0
- package/dist/cli/commands/eval.js.map +1 -0
- package/dist/cli/commands/scene.d.ts +1 -0
- package/dist/cli/commands/scene.d.ts.map +1 -1
- package/dist/cli/commands/scene.js +2 -0
- package/dist/cli/commands/scene.js.map +1 -1
- package/dist/cli/commands/screenshot.d.ts +2 -0
- package/dist/cli/commands/screenshot.d.ts.map +1 -1
- package/dist/cli/commands/screenshot.js +6 -0
- package/dist/cli/commands/screenshot.js.map +1 -1
- package/dist/cli/commands/snap.d.ts +1 -0
- package/dist/cli/commands/snap.d.ts.map +1 -1
- package/dist/cli/commands/snap.js +2 -0
- package/dist/cli/commands/snap.js.map +1 -1
- package/dist/cli/commands/targets.d.ts +7 -0
- package/dist/cli/commands/targets.d.ts.map +1 -0
- package/dist/cli/commands/targets.js +30 -0
- package/dist/cli/commands/targets.js.map +1 -0
- package/dist/cli/commands/watch.d.ts +12 -0
- package/dist/cli/commands/watch.d.ts.map +1 -0
- package/dist/cli/commands/watch.js +233 -0
- package/dist/cli/commands/watch.js.map +1 -0
- package/dist/cli/index.js +86 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/config/manager.d.ts.map +1 -1
- package/dist/config/manager.js +11 -1
- package/dist/config/manager.js.map +1 -1
- package/dist/config/types.d.ts +11 -3
- package/dist/config/types.d.ts.map +1 -1
- package/dist/inspectors/dom/index.d.ts +30 -0
- package/dist/inspectors/dom/index.d.ts.map +1 -0
- package/dist/inspectors/dom/index.js +283 -0
- package/dist/inspectors/dom/index.js.map +1 -0
- package/dist/inspectors/scene/adapters/pixi/adapter.d.ts +3 -0
- package/dist/inspectors/scene/adapters/pixi/adapter.d.ts.map +1 -0
- package/dist/inspectors/scene/adapters/pixi/adapter.js +51 -0
- package/dist/inspectors/scene/adapters/pixi/adapter.js.map +1 -0
- package/dist/inspectors/scene/adapters/pixi/index.d.ts +2 -0
- package/dist/inspectors/scene/adapters/pixi/index.d.ts.map +1 -0
- package/dist/inspectors/scene/adapters/pixi/index.js +2 -0
- package/dist/inspectors/scene/adapters/pixi/index.js.map +1 -0
- package/dist/inspectors/scene/adapters/pixi/injection.d.ts +39 -0
- package/dist/inspectors/scene/adapters/pixi/injection.d.ts.map +1 -0
- package/dist/inspectors/scene/adapters/pixi/injection.js +41 -0
- package/dist/inspectors/scene/adapters/pixi/injection.js.map +1 -0
- package/dist/inspectors/scene/formatter.d.ts +0 -1
- package/dist/inspectors/scene/formatter.d.ts.map +1 -1
- package/dist/inspectors/scene/formatter.js +100 -43
- package/dist/inspectors/scene/formatter.js.map +1 -1
- package/dist/inspectors/scene/index.d.ts +4 -4
- package/dist/inspectors/scene/index.d.ts.map +1 -1
- package/dist/inspectors/scene/index.js +8 -5
- package/dist/inspectors/scene/index.js.map +1 -1
- package/dist/inspectors/scene/pixi.js.map +1 -1
- package/dist/inspectors/scene/registry.d.ts +2 -2
- package/dist/inspectors/scene/registry.d.ts.map +1 -1
- package/dist/inspectors/scene/registry.js +8 -8
- package/dist/inspectors/scene/registry.js.map +1 -1
- package/dist/inspectors/scene/types.d.ts +6 -10
- package/dist/inspectors/scene/types.d.ts.map +1 -1
- package/dist/inspectors/watch/index.d.ts +18 -0
- package/dist/inspectors/watch/index.d.ts.map +1 -0
- package/dist/inspectors/watch/index.js +39 -0
- package/dist/inspectors/watch/index.js.map +1 -0
- package/dist/inspectors/watch/types.d.ts +70 -0
- package/dist/inspectors/watch/types.d.ts.map +1 -0
- package/dist/inspectors/watch/types.js +21 -0
- package/dist/inspectors/watch/types.js.map +1 -0
- package/dist/server/server.d.ts +31 -1
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +620 -67
- package/dist/server/server.js.map +1 -1
- package/dist/server/watch-session.d.ts +32 -0
- package/dist/server/watch-session.d.ts.map +1 -0
- package/dist/server/watch-session.js +165 -0
- package/dist/server/watch-session.js.map +1 -0
- package/dist/types.d.ts +4 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -1
- package/package.json +61 -59
- package/skills/verify/SKILL.md +146 -11
- package/skills/verify-recipe/SKILL.md +185 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { WebGLEngine } from '../../../../types.js';
|
|
2
|
+
import { PIXI_EXTRACT_SCRIPT } from './injection.js';
|
|
3
|
+
const TINT_WHITE = 0xffffff;
|
|
4
|
+
function isRawPixiNode(value) {
|
|
5
|
+
if (!value || typeof value !== 'object')
|
|
6
|
+
return false;
|
|
7
|
+
const n = value;
|
|
8
|
+
return typeof n.type === 'string' && typeof n.name === 'string' && Array.isArray(n.children);
|
|
9
|
+
}
|
|
10
|
+
function tintToHex(tint) {
|
|
11
|
+
return '#' + tint.toString(16).padStart(6, '0');
|
|
12
|
+
}
|
|
13
|
+
function radToDegRounded(rad) {
|
|
14
|
+
return Math.round((rad * 180) / Math.PI * 100) / 100;
|
|
15
|
+
}
|
|
16
|
+
function convert(raw) {
|
|
17
|
+
const extras = {};
|
|
18
|
+
const verboseExtras = {};
|
|
19
|
+
if (raw.tint !== null && raw.tint !== TINT_WHITE) {
|
|
20
|
+
extras.tint = tintToHex(raw.tint);
|
|
21
|
+
}
|
|
22
|
+
if (raw.alpha !== 1)
|
|
23
|
+
verboseExtras.alpha = String(raw.alpha);
|
|
24
|
+
if (raw.scaleX !== 1 || raw.scaleY !== 1)
|
|
25
|
+
verboseExtras.scale = `(${raw.scaleX},${raw.scaleY})`;
|
|
26
|
+
const rotDeg = radToDegRounded(raw.rotationRad);
|
|
27
|
+
if (rotDeg !== 0)
|
|
28
|
+
verboseExtras.rot = `${rotDeg}°`;
|
|
29
|
+
if (raw.width !== 0 || raw.height !== 0)
|
|
30
|
+
verboseExtras.size = `${raw.width}x${raw.height}`;
|
|
31
|
+
return {
|
|
32
|
+
type: raw.type,
|
|
33
|
+
name: raw.name,
|
|
34
|
+
x: raw.x,
|
|
35
|
+
y: raw.y,
|
|
36
|
+
visible: raw.visible,
|
|
37
|
+
extras: Object.keys(extras).length > 0 ? extras : undefined,
|
|
38
|
+
verboseExtras: Object.keys(verboseExtras).length > 0 ? verboseExtras : undefined,
|
|
39
|
+
children: raw.children.length > 0 ? raw.children.map(convert) : undefined,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export const pixiAdapter = {
|
|
43
|
+
engine: WebGLEngine.Pixi,
|
|
44
|
+
extractScript: PIXI_EXTRACT_SCRIPT,
|
|
45
|
+
normalize(raw) {
|
|
46
|
+
if (!isRawPixiNode(raw))
|
|
47
|
+
return null;
|
|
48
|
+
return convert(raw);
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../../../src/inspectors/scene/adapters/pixi/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/inspectors/scene/adapters/pixi/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/inspectors/scene/adapters/pixi/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export type RawPixiNode = {
|
|
2
|
+
type: string;
|
|
3
|
+
name: string;
|
|
4
|
+
x: number;
|
|
5
|
+
y: number;
|
|
6
|
+
visible: boolean;
|
|
7
|
+
tint: number | null;
|
|
8
|
+
alpha: number;
|
|
9
|
+
scaleX: number;
|
|
10
|
+
scaleY: number;
|
|
11
|
+
rotationRad: number;
|
|
12
|
+
width: number;
|
|
13
|
+
height: number;
|
|
14
|
+
children: RawPixiNode[];
|
|
15
|
+
};
|
|
16
|
+
type PixiDisplayObject = {
|
|
17
|
+
constructor?: {
|
|
18
|
+
name?: string;
|
|
19
|
+
};
|
|
20
|
+
label?: string;
|
|
21
|
+
name?: string;
|
|
22
|
+
x?: number;
|
|
23
|
+
y?: number;
|
|
24
|
+
visible?: boolean;
|
|
25
|
+
tint?: number;
|
|
26
|
+
alpha?: number;
|
|
27
|
+
scale?: {
|
|
28
|
+
x?: number;
|
|
29
|
+
y?: number;
|
|
30
|
+
};
|
|
31
|
+
rotation?: number;
|
|
32
|
+
width?: number;
|
|
33
|
+
height?: number;
|
|
34
|
+
children?: PixiDisplayObject[];
|
|
35
|
+
};
|
|
36
|
+
export declare function serializePixiStage(stage: PixiDisplayObject, depth: number): RawPixiNode | null;
|
|
37
|
+
export declare const PIXI_EXTRACT_SCRIPT: string;
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=injection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"injection.d.ts","sourceRoot":"","sources":["../../../../../src/inspectors/scene/adapters/pixi/injection.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,WAAW,EAAE,CAAA;CACxB,CAAA;AAED,KAAK,iBAAiB,GAAG;IACvB,WAAW,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAA;CAC/B,CAAA;AAID,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAuB9F;AAED,eAAO,MAAM,mBAAmB,QAU/B,CAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// Injected via Runtime.evaluate; serializePixiStage is embedded by .toString()
|
|
2
|
+
// so the same TS function runs in the page and is unit-testable on the host.
|
|
3
|
+
const HARD_DEPTH_LIMIT = 100;
|
|
4
|
+
export function serializePixiStage(stage, depth) {
|
|
5
|
+
if (depth > HARD_DEPTH_LIMIT)
|
|
6
|
+
return null;
|
|
7
|
+
const kids = stage.children ?? [];
|
|
8
|
+
const children = [];
|
|
9
|
+
for (const kid of kids) {
|
|
10
|
+
const child = serializePixiStage(kid, depth + 1);
|
|
11
|
+
if (child)
|
|
12
|
+
children.push(child);
|
|
13
|
+
}
|
|
14
|
+
return {
|
|
15
|
+
type: stage.constructor?.name ?? 'Unknown',
|
|
16
|
+
name: stage.label || stage.name || '',
|
|
17
|
+
x: Math.round(stage.x ?? 0),
|
|
18
|
+
y: Math.round(stage.y ?? 0),
|
|
19
|
+
visible: stage.visible !== false,
|
|
20
|
+
tint: typeof stage.tint === 'number' ? stage.tint : null,
|
|
21
|
+
alpha: stage.alpha ?? 1,
|
|
22
|
+
scaleX: stage.scale?.x ?? 1,
|
|
23
|
+
scaleY: stage.scale?.y ?? 1,
|
|
24
|
+
rotationRad: stage.rotation ?? 0,
|
|
25
|
+
width: Math.round(stage.width ?? 0),
|
|
26
|
+
height: Math.round(stage.height ?? 0),
|
|
27
|
+
children,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export const PIXI_EXTRACT_SCRIPT = `
|
|
31
|
+
(function () {
|
|
32
|
+
var devtools = window.__PIXI_DEVTOOLS__;
|
|
33
|
+
if (!devtools) return null;
|
|
34
|
+
var app = devtools.app || (devtools.stage && devtools.stage.parent);
|
|
35
|
+
var stage = (app && app.stage) || devtools.stage;
|
|
36
|
+
if (!stage) return null;
|
|
37
|
+
var serialize = ${serializePixiStage.toString()};
|
|
38
|
+
return serialize(stage, 0);
|
|
39
|
+
})()
|
|
40
|
+
`;
|
|
41
|
+
//# sourceMappingURL=injection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"injection.js","sourceRoot":"","sources":["../../../../../src/inspectors/scene/adapters/pixi/injection.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,6EAA6E;AAkC7E,MAAM,gBAAgB,GAAG,GAAG,CAAA;AAE5B,MAAM,UAAU,kBAAkB,CAAC,KAAwB,EAAE,KAAa;IACxE,IAAI,KAAK,GAAG,gBAAgB;QAAE,OAAO,IAAI,CAAA;IACzC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAA;IACjC,MAAM,QAAQ,GAAkB,EAAE,CAAA;IAClC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;QAChD,IAAI,KAAK;YAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACjC,CAAC;IACD,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,IAAI,IAAI,SAAS;QAC1C,IAAI,EAAE,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,EAAE;QACrC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,EAAE,KAAK,CAAC,OAAO,KAAK,KAAK;QAChC,IAAI,EAAE,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;QACxD,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC;QACvB,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC;QAC3B,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC;QAC3B,WAAW,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC;QAChC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;QACnC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;QACrC,QAAQ;KACT,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;oBAOf,kBAAkB,CAAC,QAAQ,EAAE;;;CAGhD,CAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { SceneNode, SceneOptions } from './types.js';
|
|
2
2
|
export declare function formatNode(node: SceneNode, depth: number, lines: string[], options: SceneOptions): void;
|
|
3
3
|
export declare function diffScenes(prev: SceneNode, curr: SceneNode): string;
|
|
4
|
-
export declare function hasMatch(node: SceneNode, filter: string): boolean;
|
|
5
4
|
//# sourceMappingURL=formatter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../../src/inspectors/scene/formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAIzD,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../../src/inspectors/scene/formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAIzD,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAevG;AA6ED,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,CAInE"}
|
|
@@ -4,38 +4,85 @@ export function formatNode(node, depth, lines, options) {
|
|
|
4
4
|
return;
|
|
5
5
|
if (options.depth !== undefined && depth > options.depth)
|
|
6
6
|
return;
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
let line = `${indent}${node.type}${nameStr} (${node.x},${node.y})${vis}`;
|
|
18
|
-
if (node.tint !== '0xffffff' && node.tint !== '#ffffff') {
|
|
19
|
-
line += ` tint=${node.tint}`;
|
|
7
|
+
const lowerFilter = options.filter?.toLowerCase();
|
|
8
|
+
if (lowerFilter && !subtreeMatches(node, lowerFilter))
|
|
9
|
+
return;
|
|
10
|
+
if (options.compact) {
|
|
11
|
+
formatNodeCompact(node, depth, lines, options);
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
lines.push(formatLine(node, depth, options));
|
|
15
|
+
for (const child of node.children ?? []) {
|
|
16
|
+
formatNode(child, depth + 1, lines, options);
|
|
20
17
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Compact mode: merge single-child chains onto one line separated by " > ".
|
|
22
|
+
* Multi-child nodes render normally (each child on its own line).
|
|
23
|
+
*/
|
|
24
|
+
function formatNodeCompact(node, depth, lines, options) {
|
|
25
|
+
const chain = collectSingleChildChain(node, options);
|
|
26
|
+
const tail = chain[chain.length - 1];
|
|
27
|
+
const tailChildren = tail.children ?? [];
|
|
28
|
+
const chainParts = chain.map(n => nodeLabel(n, options));
|
|
29
|
+
const indent = ' '.repeat(depth);
|
|
30
|
+
lines.push(`${indent}${chainParts.join(' > ')}`);
|
|
31
|
+
for (const child of tailChildren) {
|
|
32
|
+
formatNodeCompact(child, depth + 1, lines, options);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Walk down while the current node has exactly one child (and that child
|
|
37
|
+
* passes the depth limit). Returns every node in the single-child chain,
|
|
38
|
+
* including the node that breaks the pattern (0 or 2+ children).
|
|
39
|
+
*/
|
|
40
|
+
function collectSingleChildChain(node, options) {
|
|
41
|
+
const chain = [node];
|
|
42
|
+
let current = node;
|
|
43
|
+
while (true) {
|
|
44
|
+
const children = current.children ?? [];
|
|
45
|
+
if (children.length !== 1)
|
|
46
|
+
break;
|
|
47
|
+
const next = children[0];
|
|
48
|
+
if (options.depth !== undefined) {
|
|
49
|
+
// depth limit: stop chaining if we'd exceed it
|
|
50
|
+
const nextDepth = chain.length; // relative depth from start of chain
|
|
51
|
+
if (nextDepth > options.depth)
|
|
52
|
+
break;
|
|
33
53
|
}
|
|
34
|
-
|
|
54
|
+
chain.push(next);
|
|
55
|
+
current = next;
|
|
35
56
|
}
|
|
36
|
-
|
|
37
|
-
|
|
57
|
+
return chain;
|
|
58
|
+
}
|
|
59
|
+
/** Single-node label without indent — used inside compact chains. */
|
|
60
|
+
function nodeLabel(node, options) {
|
|
61
|
+
const vis = node.visible ? '' : ' [hidden]';
|
|
62
|
+
const nameStr = node.name ? ` "${node.name}"` : '';
|
|
63
|
+
let label = `${node.type}${nameStr} (${node.x},${node.y})${vis}`;
|
|
64
|
+
if (node.extras) {
|
|
65
|
+
for (const [key, value] of Object.entries(node.extras)) {
|
|
66
|
+
label += ` ${key}=${value}`;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if (options.verbose && node.verboseExtras) {
|
|
70
|
+
for (const [key, value] of Object.entries(node.verboseExtras)) {
|
|
71
|
+
label += ` ${key}=${value}`;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return label;
|
|
75
|
+
}
|
|
76
|
+
function formatLine(node, depth, options) {
|
|
77
|
+
const indent = ' '.repeat(depth);
|
|
78
|
+
return `${indent}${nodeLabel(node, options)}`;
|
|
79
|
+
}
|
|
80
|
+
function subtreeMatches(node, lowerFilter) {
|
|
81
|
+
if (node.name.toLowerCase().includes(lowerFilter) ||
|
|
82
|
+
node.type.toLowerCase().includes(lowerFilter)) {
|
|
83
|
+
return true;
|
|
38
84
|
}
|
|
85
|
+
return (node.children ?? []).some(child => subtreeMatches(child, lowerFilter));
|
|
39
86
|
}
|
|
40
87
|
export function diffScenes(prev, curr) {
|
|
41
88
|
const changes = [];
|
|
@@ -48,19 +95,36 @@ function diffNode(prev, curr, depth, changes) {
|
|
|
48
95
|
const indent = ' '.repeat(depth);
|
|
49
96
|
const nameStr = curr.name ? ` "${curr.name}"` : '';
|
|
50
97
|
const diffs = [];
|
|
51
|
-
if (prev.x !== curr.x || prev.y !== curr.y)
|
|
98
|
+
if (prev.x !== curr.x || prev.y !== curr.y) {
|
|
52
99
|
diffs.push(`pos: (${prev.x},${prev.y})→(${curr.x},${curr.y})`);
|
|
53
|
-
|
|
100
|
+
}
|
|
101
|
+
if (prev.visible !== curr.visible) {
|
|
54
102
|
diffs.push(`visible: ${prev.visible}→${curr.visible}`);
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
if (prev.alpha !== curr.alpha)
|
|
58
|
-
diffs.push(`alpha: ${prev.alpha}→${curr.alpha}`);
|
|
103
|
+
}
|
|
104
|
+
diffExtras(prev, curr, diffs);
|
|
59
105
|
if (diffs.length > 0) {
|
|
60
106
|
changes.push(`${indent}~ ${curr.type}${nameStr}: ${diffs.join(', ')}`);
|
|
61
107
|
}
|
|
62
|
-
|
|
63
|
-
|
|
108
|
+
diffChildren(prev, curr, depth, changes, indent);
|
|
109
|
+
}
|
|
110
|
+
function diffExtras(prev, curr, diffs) {
|
|
111
|
+
const prevAll = mergeExtras(prev);
|
|
112
|
+
const currAll = mergeExtras(curr);
|
|
113
|
+
const keys = new Set([...Object.keys(prevAll), ...Object.keys(currAll)]);
|
|
114
|
+
for (const key of keys) {
|
|
115
|
+
const before = prevAll[key];
|
|
116
|
+
const after = currAll[key];
|
|
117
|
+
if (before !== after) {
|
|
118
|
+
diffs.push(`${key}: ${before ?? '∅'}→${after ?? '∅'}`);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
function mergeExtras(node) {
|
|
123
|
+
return { ...(node.extras ?? {}), ...(node.verboseExtras ?? {}) };
|
|
124
|
+
}
|
|
125
|
+
function diffChildren(prev, curr, depth, changes, indent) {
|
|
126
|
+
const prevChildren = prev.children ?? [];
|
|
127
|
+
const currChildren = curr.children ?? [];
|
|
64
128
|
const prevByKey = new Map(prevChildren.map((c, i) => [childKey(c, i), c]));
|
|
65
129
|
const currByKey = new Map(currChildren.map((c, i) => [childKey(c, i), c]));
|
|
66
130
|
for (const [key, child] of currByKey) {
|
|
@@ -81,11 +145,4 @@ function diffNode(prev, curr, depth, changes) {
|
|
|
81
145
|
function childKey(node, index) {
|
|
82
146
|
return node.name ? `${node.type}:${node.name}` : `${node.type}:${index}`;
|
|
83
147
|
}
|
|
84
|
-
export function hasMatch(node, filter) {
|
|
85
|
-
const lower = filter.toLowerCase();
|
|
86
|
-
if (node.name.toLowerCase().includes(lower) || node.type.toLowerCase().includes(lower)) {
|
|
87
|
-
return true;
|
|
88
|
-
}
|
|
89
|
-
return (node.children || []).some(c => hasMatch(c, lower));
|
|
90
|
-
}
|
|
91
148
|
//# sourceMappingURL=formatter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../../src/inspectors/scene/formatter.ts"],"names":[],"mappings":"AAEA,MAAM,cAAc,GAAG,GAAG,CAAA;AAE1B,MAAM,UAAU,UAAU,CAAC,IAAe,EAAE,KAAa,EAAE,KAAe,EAAE,OAAqB;IAC/F,IAAI,KAAK,GAAG,cAAc;QAAE,OAAM;IAClC,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK;QAAE,OAAM;IAEhE,MAAM,
|
|
1
|
+
{"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../../src/inspectors/scene/formatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { RuntimeSession } from '../../cdp/types.js';
|
|
2
2
|
import type { WebGLEngine } from '../../types.js';
|
|
3
3
|
import type { SceneOptions, SceneNode } from './types.js';
|
|
4
|
-
export declare function getSceneGraph(conn:
|
|
5
|
-
export declare function getRawScene(conn:
|
|
4
|
+
export declare function getSceneGraph(conn: RuntimeSession, engine: WebGLEngine | undefined, options?: SceneOptions): Promise<string>;
|
|
5
|
+
export declare function getRawScene(conn: RuntimeSession, engine: WebGLEngine | undefined): Promise<SceneNode | null>;
|
|
6
6
|
export { diffScenes } from './formatter.js';
|
|
7
|
-
export type { SceneNode, SceneOptions } from './types.js';
|
|
7
|
+
export type { SceneNode, SceneOptions, SceneAdapter } from './types.js';
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/inspectors/scene/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/inspectors/scene/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAEzD,wBAAsB,aAAa,CACjC,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,MAAM,CAAC,CAcjB;AAED,wBAAsB,WAAW,CAC/B,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,WAAW,GAAG,SAAS,GAC9B,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAG3B;AAQD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getAdapter } from './registry.js';
|
|
2
2
|
import { formatNode } from './formatter.js';
|
|
3
3
|
export async function getSceneGraph(conn, engine, options = {}) {
|
|
4
4
|
if (!engine) {
|
|
5
5
|
return 'No WebGL engine configured. Add "webgl": { "engine": "pixi" } to agent-view.config.json';
|
|
6
6
|
}
|
|
7
|
-
const
|
|
8
|
-
const tree = await extractor.extract(conn);
|
|
7
|
+
const tree = await extract(conn, engine);
|
|
9
8
|
if (!tree) {
|
|
10
9
|
return `No ${engine} scene found`;
|
|
11
10
|
}
|
|
@@ -19,8 +18,12 @@ export async function getSceneGraph(conn, engine, options = {}) {
|
|
|
19
18
|
export async function getRawScene(conn, engine) {
|
|
20
19
|
if (!engine)
|
|
21
20
|
return null;
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
return extract(conn, engine);
|
|
22
|
+
}
|
|
23
|
+
async function extract(conn, engine) {
|
|
24
|
+
const adapter = getAdapter(engine);
|
|
25
|
+
const raw = await conn.evaluate(adapter.extractScript);
|
|
26
|
+
return adapter.normalize(raw);
|
|
24
27
|
}
|
|
25
28
|
export { diffScenes } from './formatter.js';
|
|
26
29
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/inspectors/scene/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/inspectors/scene/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAc,MAAM,gBAAgB,CAAA;AAKvD,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAoB,EACpB,MAA+B,EAC/B,UAAwB,EAAE;IAE1B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,yFAAyF,CAAA;IAClG,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACxC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,MAAM,MAAM,cAAc,CAAA;IACnC,CAAC;IACD,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;IACnC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACzC,OAAO,8BAA8B,OAAO,CAAC,MAAM,GAAG,CAAA;IACxD,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAoB,EACpB,MAA+B;IAE/B,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IACxB,OAAO,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;AAC9B,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,IAAoB,EAAE,MAAmB;IAC9D,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IAClC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;IACtD,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;AAC/B,CAAC;AAED,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pixi.js","sourceRoot":"","sources":["../../../src/inspectors/scene/pixi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAI5C,qEAAqE;AACrE,sDAAsD;AACtD,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkClB,CAAA;AAED,SAAS,WAAW,CAAC,GAAY;IAC/B,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IACjD,MAAM,CAAC,GAAG,GAA8B,CAAA;IACxC,OAAO,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAA;AACjE,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAmB;IAC3C,MAAM,EAAE,WAAW,CAAC,IAAI;IACxB,KAAK,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"pixi.js","sourceRoot":"","sources":["../../../src/inspectors/scene/pixi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAI5C,qEAAqE;AACrE,sDAAsD;AACtD,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkClB,CAAA;AAED,SAAS,WAAW,CAAC,GAAY;IAC/B,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IACjD,MAAM,CAAC,GAAG,GAA8B,CAAA;IACxC,OAAO,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAA;AACjE,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAmB;IAC3C,MAAM,EAAE,WAAW,CAAC,IAAI;IACxB,KAAK,CAAC,OAAO,CAAC,IAAoB;QAChC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;QAC9C,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAA;IAC5C,CAAC;CACF,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { WebGLEngine } from '../../types.js';
|
|
2
|
-
import type {
|
|
3
|
-
export declare function
|
|
2
|
+
import type { SceneAdapter } from './types.js';
|
|
3
|
+
export declare function getAdapter(engine: WebGLEngine): SceneAdapter;
|
|
4
4
|
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/inspectors/scene/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/inspectors/scene/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAO9C,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,YAAY,CAM5D"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { WebGLEngine } from '../../types.js';
|
|
2
|
-
import {
|
|
3
|
-
const
|
|
4
|
-
[WebGLEngine.Pixi]:
|
|
2
|
+
import { pixiAdapter } from './adapters/pixi/index.js';
|
|
3
|
+
const adapters = {
|
|
4
|
+
[WebGLEngine.Pixi]: pixiAdapter,
|
|
5
5
|
};
|
|
6
|
-
export function
|
|
7
|
-
const
|
|
8
|
-
if (!
|
|
9
|
-
throw new Error(`Scene
|
|
6
|
+
export function getAdapter(engine) {
|
|
7
|
+
const adapter = adapters[engine];
|
|
8
|
+
if (!adapter) {
|
|
9
|
+
throw new Error(`Scene adapter for "${engine}" is not implemented yet`);
|
|
10
10
|
}
|
|
11
|
-
return
|
|
11
|
+
return adapter;
|
|
12
12
|
}
|
|
13
13
|
//# sourceMappingURL=registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/inspectors/scene/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE5C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/inspectors/scene/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE5C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAEtD,MAAM,QAAQ,GAA+C;IAC3D,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,WAAW;CAChC,CAAA;AAED,MAAM,UAAU,UAAU,CAAC,MAAmB;IAC5C,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;IAChC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,sBAAsB,MAAM,0BAA0B,CAAC,CAAA;IACzE,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { CDPConnection } from '../../cdp/types.js';
|
|
2
1
|
import type { WebGLEngine } from '../../types.js';
|
|
3
2
|
export type SceneNode = {
|
|
4
3
|
type: string;
|
|
@@ -6,26 +5,23 @@ export type SceneNode = {
|
|
|
6
5
|
x: number;
|
|
7
6
|
y: number;
|
|
8
7
|
visible: boolean;
|
|
9
|
-
tint: string;
|
|
10
|
-
alpha?: number;
|
|
11
|
-
scaleX?: number;
|
|
12
|
-
scaleY?: number;
|
|
13
|
-
rotation?: number;
|
|
14
|
-
width?: number;
|
|
15
|
-
height?: number;
|
|
16
8
|
children?: SceneNode[];
|
|
9
|
+
extras?: Record<string, string>;
|
|
10
|
+
verboseExtras?: Record<string, string>;
|
|
17
11
|
};
|
|
18
12
|
export type SceneOptions = {
|
|
19
13
|
filter?: string;
|
|
20
14
|
depth?: number;
|
|
21
15
|
verbose?: boolean;
|
|
16
|
+
compact?: boolean;
|
|
22
17
|
};
|
|
23
18
|
export type SceneDiffResult = {
|
|
24
19
|
text: string;
|
|
25
20
|
snapshot: SceneNode;
|
|
26
21
|
};
|
|
27
|
-
export type
|
|
22
|
+
export type SceneAdapter = {
|
|
28
23
|
readonly engine: WebGLEngine;
|
|
29
|
-
|
|
24
|
+
readonly extractScript: string;
|
|
25
|
+
normalize(raw: unknown): SceneNode | null;
|
|
30
26
|
};
|
|
31
27
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/inspectors/scene/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/inspectors/scene/types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAEjD,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAA;IAEtB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAE/B,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACvC,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,SAAS,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAE9B,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAAA;CAC1C,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type JsonPatchOp } from './types.js';
|
|
2
|
+
export { StopReason, WATCH_SIZE_CAP_BYTES, WATCH_MAX_CONSECUTIVE_ERRORS, WATCH_MIN_INTERVAL_MS, WatchSizeCapError } from './types.js';
|
|
3
|
+
export type { WatchFrame, WatchInitFrame, WatchDiffFrame, WatchErrorFrame, WatchStopFrame, WatchOptions, JsonPatchOp } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Browser-side wrapper. Deep-clones via JSON to surface non-cloneable values as a stable error shape.
|
|
6
|
+
*/
|
|
7
|
+
export declare function buildCaptureWrapper(userExpression: string): string;
|
|
8
|
+
export type CapturedValue = {
|
|
9
|
+
kind: 'value';
|
|
10
|
+
value: unknown;
|
|
11
|
+
} | {
|
|
12
|
+
kind: 'error';
|
|
13
|
+
message: string;
|
|
14
|
+
};
|
|
15
|
+
export declare function readCapture(raw: unknown): CapturedValue;
|
|
16
|
+
export declare function checkSizeCap(value: unknown): number;
|
|
17
|
+
export declare function diff(prev: unknown, next: unknown): JsonPatchOp[];
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/inspectors/watch/index.ts"],"names":[],"mappings":"AACA,OAAO,EAA2C,KAAK,WAAW,EAAE,MAAM,YAAY,CAAA;AAEtF,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AACrI,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExI;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAElG,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAMvD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKnD;AAMD,wBAAgB,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,WAAW,EAAE,CAUhE"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import jsonpatch from 'fast-json-patch';
|
|
2
|
+
import { WATCH_SIZE_CAP_BYTES, WatchSizeCapError } from './types.js';
|
|
3
|
+
export { StopReason, WATCH_SIZE_CAP_BYTES, WATCH_MAX_CONSECUTIVE_ERRORS, WATCH_MIN_INTERVAL_MS, WatchSizeCapError } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Browser-side wrapper. Deep-clones via JSON to surface non-cloneable values as a stable error shape.
|
|
6
|
+
*/
|
|
7
|
+
export function buildCaptureWrapper(userExpression) {
|
|
8
|
+
return `(function(){try{return JSON.parse(JSON.stringify((${userExpression})))}catch(e){return {__watchError: e && e.message ? String(e.message) : String(e)}}})()`;
|
|
9
|
+
}
|
|
10
|
+
export function readCapture(raw) {
|
|
11
|
+
if (raw && typeof raw === 'object' && '__watchError' in raw) {
|
|
12
|
+
const msg = raw.__watchError;
|
|
13
|
+
return { kind: 'error', message: typeof msg === 'string' ? msg : String(msg) };
|
|
14
|
+
}
|
|
15
|
+
return { kind: 'value', value: raw };
|
|
16
|
+
}
|
|
17
|
+
export function checkSizeCap(value) {
|
|
18
|
+
const json = JSON.stringify(value) ?? 'undefined';
|
|
19
|
+
const bytes = Buffer.byteLength(json, 'utf8');
|
|
20
|
+
if (bytes > WATCH_SIZE_CAP_BYTES)
|
|
21
|
+
throw new WatchSizeCapError(bytes);
|
|
22
|
+
return bytes;
|
|
23
|
+
}
|
|
24
|
+
function isObjectOrArray(v) {
|
|
25
|
+
return v !== null && typeof v === 'object';
|
|
26
|
+
}
|
|
27
|
+
export function diff(prev, next) {
|
|
28
|
+
// fast-json-patch.compare only supports Object|Array roots. Handle primitives + type changes ourselves.
|
|
29
|
+
if (!isObjectOrArray(prev) || !isObjectOrArray(next)) {
|
|
30
|
+
if (prev === next)
|
|
31
|
+
return [];
|
|
32
|
+
return [{ op: 'replace', path: '', value: next }];
|
|
33
|
+
}
|
|
34
|
+
if (Array.isArray(prev) !== Array.isArray(next)) {
|
|
35
|
+
return [{ op: 'replace', path: '', value: next }];
|
|
36
|
+
}
|
|
37
|
+
return jsonpatch.compare(prev, next);
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/inspectors/watch/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAoB,MAAM,YAAY,CAAA;AAEtF,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAGrI;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,cAAsB;IACxD,OAAO,qDAAqD,cAAc,yFAAyF,CAAA;AACrK,CAAC;AAID,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,cAAc,IAAI,GAAG,EAAE,CAAC;QAC5D,MAAM,GAAG,GAAI,GAAiC,CAAC,YAAY,CAAA;QAC3D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAA;IAChF,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;AACtC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,WAAW,CAAA;IACjD,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAC7C,IAAI,KAAK,GAAG,oBAAoB;QAAE,MAAM,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAA;IACpE,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,eAAe,CAAC,CAAU;IACjC,OAAO,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAA;AAC5C,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,IAAa,EAAE,IAAa;IAC/C,wGAAwG;IACxG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;QACrD,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,EAAE,CAAA;QAC5B,OAAO,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACnD,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,OAAO,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACnD,CAAC;IACD,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAkB,CAAA;AACvD,CAAC"}
|