@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.
Files changed (131) hide show
  1. package/.claude-plugin/marketplace.json +14 -0
  2. package/.claude-plugin/plugin.json +13 -2
  3. package/README.md +211 -61
  4. package/dist/adapters/browser.d.ts.map +1 -1
  5. package/dist/adapters/browser.js +11 -11
  6. package/dist/adapters/browser.js.map +1 -1
  7. package/dist/adapters/electron.d.ts.map +1 -1
  8. package/dist/adapters/electron.js +11 -11
  9. package/dist/adapters/electron.js.map +1 -1
  10. package/dist/adapters/tauri.d.ts.map +1 -1
  11. package/dist/adapters/tauri.js +11 -11
  12. package/dist/adapters/tauri.js.map +1 -1
  13. package/dist/adapters/types.d.ts +5 -2
  14. package/dist/adapters/types.d.ts.map +1 -1
  15. package/dist/cdp/_tests/console-stream.d.ts +35 -0
  16. package/dist/cdp/_tests/console-stream.d.ts.map +1 -0
  17. package/dist/cdp/_tests/console-stream.js +103 -0
  18. package/dist/cdp/_tests/console-stream.js.map +1 -0
  19. package/dist/cdp/ax-cache.d.ts +16 -0
  20. package/dist/cdp/ax-cache.d.ts.map +1 -0
  21. package/dist/cdp/ax-cache.js +31 -0
  22. package/dist/cdp/ax-cache.js.map +1 -0
  23. package/dist/cdp/console-stream.d.ts +35 -0
  24. package/dist/cdp/console-stream.d.ts.map +1 -0
  25. package/dist/cdp/console-stream.js +103 -0
  26. package/dist/cdp/console-stream.js.map +1 -0
  27. package/dist/cdp/transport.d.ts +5 -2
  28. package/dist/cdp/transport.d.ts.map +1 -1
  29. package/dist/cdp/transport.js +309 -26
  30. package/dist/cdp/transport.js.map +1 -1
  31. package/dist/cdp/types.d.ts +109 -8
  32. package/dist/cdp/types.d.ts.map +1 -1
  33. package/dist/cdp/types.js +35 -1
  34. package/dist/cdp/types.js.map +1 -1
  35. package/dist/cli/commands/console.d.ts +12 -0
  36. package/dist/cli/commands/console.d.ts.map +1 -0
  37. package/dist/cli/commands/console.js +32 -0
  38. package/dist/cli/commands/console.js.map +1 -0
  39. package/dist/cli/commands/dom.d.ts +5 -0
  40. package/dist/cli/commands/dom.d.ts.map +1 -1
  41. package/dist/cli/commands/dom.js +5 -0
  42. package/dist/cli/commands/dom.js.map +1 -1
  43. package/dist/cli/commands/drag.d.ts +13 -0
  44. package/dist/cli/commands/drag.d.ts.map +1 -0
  45. package/dist/cli/commands/drag.js +72 -0
  46. package/dist/cli/commands/drag.js.map +1 -0
  47. package/dist/cli/commands/eval.d.ts +9 -0
  48. package/dist/cli/commands/eval.d.ts.map +1 -0
  49. package/dist/cli/commands/eval.js +30 -0
  50. package/dist/cli/commands/eval.js.map +1 -0
  51. package/dist/cli/commands/scene.d.ts +1 -0
  52. package/dist/cli/commands/scene.d.ts.map +1 -1
  53. package/dist/cli/commands/scene.js +2 -0
  54. package/dist/cli/commands/scene.js.map +1 -1
  55. package/dist/cli/commands/screenshot.d.ts +2 -0
  56. package/dist/cli/commands/screenshot.d.ts.map +1 -1
  57. package/dist/cli/commands/screenshot.js +6 -0
  58. package/dist/cli/commands/screenshot.js.map +1 -1
  59. package/dist/cli/commands/snap.d.ts +1 -0
  60. package/dist/cli/commands/snap.d.ts.map +1 -1
  61. package/dist/cli/commands/snap.js +2 -0
  62. package/dist/cli/commands/snap.js.map +1 -1
  63. package/dist/cli/commands/targets.d.ts +7 -0
  64. package/dist/cli/commands/targets.d.ts.map +1 -0
  65. package/dist/cli/commands/targets.js +30 -0
  66. package/dist/cli/commands/targets.js.map +1 -0
  67. package/dist/cli/commands/watch.d.ts +12 -0
  68. package/dist/cli/commands/watch.d.ts.map +1 -0
  69. package/dist/cli/commands/watch.js +233 -0
  70. package/dist/cli/commands/watch.js.map +1 -0
  71. package/dist/cli/index.js +86 -1
  72. package/dist/cli/index.js.map +1 -1
  73. package/dist/config/manager.d.ts.map +1 -1
  74. package/dist/config/manager.js +11 -1
  75. package/dist/config/manager.js.map +1 -1
  76. package/dist/config/types.d.ts +11 -3
  77. package/dist/config/types.d.ts.map +1 -1
  78. package/dist/inspectors/dom/index.d.ts +30 -0
  79. package/dist/inspectors/dom/index.d.ts.map +1 -0
  80. package/dist/inspectors/dom/index.js +283 -0
  81. package/dist/inspectors/dom/index.js.map +1 -0
  82. package/dist/inspectors/scene/adapters/pixi/adapter.d.ts +3 -0
  83. package/dist/inspectors/scene/adapters/pixi/adapter.d.ts.map +1 -0
  84. package/dist/inspectors/scene/adapters/pixi/adapter.js +51 -0
  85. package/dist/inspectors/scene/adapters/pixi/adapter.js.map +1 -0
  86. package/dist/inspectors/scene/adapters/pixi/index.d.ts +2 -0
  87. package/dist/inspectors/scene/adapters/pixi/index.d.ts.map +1 -0
  88. package/dist/inspectors/scene/adapters/pixi/index.js +2 -0
  89. package/dist/inspectors/scene/adapters/pixi/index.js.map +1 -0
  90. package/dist/inspectors/scene/adapters/pixi/injection.d.ts +39 -0
  91. package/dist/inspectors/scene/adapters/pixi/injection.d.ts.map +1 -0
  92. package/dist/inspectors/scene/adapters/pixi/injection.js +41 -0
  93. package/dist/inspectors/scene/adapters/pixi/injection.js.map +1 -0
  94. package/dist/inspectors/scene/formatter.d.ts +0 -1
  95. package/dist/inspectors/scene/formatter.d.ts.map +1 -1
  96. package/dist/inspectors/scene/formatter.js +100 -43
  97. package/dist/inspectors/scene/formatter.js.map +1 -1
  98. package/dist/inspectors/scene/index.d.ts +4 -4
  99. package/dist/inspectors/scene/index.d.ts.map +1 -1
  100. package/dist/inspectors/scene/index.js +8 -5
  101. package/dist/inspectors/scene/index.js.map +1 -1
  102. package/dist/inspectors/scene/pixi.js.map +1 -1
  103. package/dist/inspectors/scene/registry.d.ts +2 -2
  104. package/dist/inspectors/scene/registry.d.ts.map +1 -1
  105. package/dist/inspectors/scene/registry.js +8 -8
  106. package/dist/inspectors/scene/registry.js.map +1 -1
  107. package/dist/inspectors/scene/types.d.ts +6 -10
  108. package/dist/inspectors/scene/types.d.ts.map +1 -1
  109. package/dist/inspectors/watch/index.d.ts +18 -0
  110. package/dist/inspectors/watch/index.d.ts.map +1 -0
  111. package/dist/inspectors/watch/index.js +39 -0
  112. package/dist/inspectors/watch/index.js.map +1 -0
  113. package/dist/inspectors/watch/types.d.ts +70 -0
  114. package/dist/inspectors/watch/types.d.ts.map +1 -0
  115. package/dist/inspectors/watch/types.js +21 -0
  116. package/dist/inspectors/watch/types.js.map +1 -0
  117. package/dist/server/server.d.ts +31 -1
  118. package/dist/server/server.d.ts.map +1 -1
  119. package/dist/server/server.js +620 -67
  120. package/dist/server/server.js.map +1 -1
  121. package/dist/server/watch-session.d.ts +32 -0
  122. package/dist/server/watch-session.d.ts.map +1 -0
  123. package/dist/server/watch-session.js +165 -0
  124. package/dist/server/watch-session.js.map +1 -0
  125. package/dist/types.d.ts +4 -1
  126. package/dist/types.d.ts.map +1 -1
  127. package/dist/types.js +1 -0
  128. package/dist/types.js.map +1 -1
  129. package/package.json +61 -59
  130. package/skills/verify/SKILL.md +146 -11
  131. package/skills/verify-recipe/SKILL.md +185 -0
@@ -3,6 +3,11 @@ type DomOptions = {
3
3
  window?: string;
4
4
  filter?: string;
5
5
  depth?: number;
6
+ text?: boolean;
7
+ compact?: boolean;
8
+ count?: boolean;
9
+ maxLines?: number;
10
+ diff?: boolean;
6
11
  };
7
12
  export declare function runDom(config: AgentViewConfig, options: DomOptions): Promise<void>;
8
13
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/dom.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAE5D,KAAK,UAAU,GAAG;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,wBAAsB,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBxF"}
1
+ {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/dom.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAE5D,KAAK,UAAU,GAAG;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf,CAAA;AAED,wBAAsB,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBxF"}
@@ -8,6 +8,11 @@ export async function runDom(config, options) {
8
8
  window: options.window,
9
9
  filter: options.filter,
10
10
  depth: options.depth,
11
+ text: options.text,
12
+ compact: options.compact,
13
+ count: options.count,
14
+ maxLines: options.maxLines,
15
+ diff: options.diff,
11
16
  },
12
17
  });
13
18
  if (!response.ok) {
@@ -1 +1 @@
1
- {"version":3,"file":"dom.js","sourceRoot":"","sources":["../../../src/cli/commands/dom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAS1C,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,MAAuB,EAAE,OAAmB;IACvE,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC;QACjC,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,IAAI,EAAE;YACJ,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB;KACF,CAAC,CAAA;IAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,UAAU,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;QACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AAC5B,CAAC"}
1
+ {"version":3,"file":"dom.js","sourceRoot":"","sources":["../../../src/cli/commands/dom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAc1C,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,MAAuB,EAAE,OAAmB;IACvE,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC;QACjC,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,IAAI,EAAE;YACJ,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB;KACF,CAAC,CAAA;IAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,UAAU,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;QACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AAC5B,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { AgentViewConfig } from '../../config/types.js';
2
+ export type DragOptions = {
3
+ from?: string;
4
+ to?: string;
5
+ fromPos?: string;
6
+ toPos?: string;
7
+ steps?: string;
8
+ button?: string;
9
+ holdMs?: string;
10
+ window?: string;
11
+ };
12
+ export declare function runDrag(config: AgentViewConfig, options: DragOptions): Promise<void>;
13
+ //# sourceMappingURL=drag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drag.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/drag.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAE5D,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,wBAAsB,OAAO,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA6C1F"}
@@ -0,0 +1,72 @@
1
+ import { sendCommand } from '../client.js';
2
+ export async function runDrag(config, options) {
3
+ const args = {};
4
+ const fromOk = applyEndpoint(args, 'from', options.from, options.fromPos);
5
+ if (!fromOk)
6
+ process.exit(1);
7
+ const toOk = applyEndpoint(args, 'to', options.to, options.toPos);
8
+ if (!toOk)
9
+ process.exit(1);
10
+ if (options.steps !== undefined) {
11
+ const n = parseInt(options.steps, 10);
12
+ if (isNaN(n) || n < 0) {
13
+ console.error(`Invalid --steps: "${options.steps}"`);
14
+ process.exit(1);
15
+ }
16
+ args.steps = n;
17
+ }
18
+ if (options.button !== undefined) {
19
+ args.button = options.button;
20
+ }
21
+ if (options.holdMs !== undefined) {
22
+ const n = parseInt(options.holdMs, 10);
23
+ if (isNaN(n) || n < 0) {
24
+ console.error(`Invalid --hold-ms: "${options.holdMs}"`);
25
+ process.exit(1);
26
+ }
27
+ args.holdMs = n;
28
+ }
29
+ if (options.window)
30
+ args.window = options.window;
31
+ const response = await sendCommand({
32
+ command: 'drag',
33
+ port: config.port,
34
+ runtime: config.runtime,
35
+ args,
36
+ });
37
+ if (response.ok) {
38
+ console.log(response.data);
39
+ }
40
+ else {
41
+ console.error(response.error);
42
+ process.exit(1);
43
+ }
44
+ }
45
+ function applyEndpoint(args, side, ref, pos) {
46
+ if (ref !== undefined && pos !== undefined) {
47
+ console.error(`--${side} and --${side}-pos are mutually exclusive`);
48
+ return false;
49
+ }
50
+ if (ref !== undefined) {
51
+ const n = parseInt(ref, 10);
52
+ if (isNaN(n)) {
53
+ console.error(`Invalid --${side} ref: "${ref}"`);
54
+ return false;
55
+ }
56
+ args[`${side}Ref`] = n;
57
+ return true;
58
+ }
59
+ if (pos !== undefined) {
60
+ const [x, y] = pos.split(',').map(Number);
61
+ if (isNaN(x) || isNaN(y)) {
62
+ console.error(`Invalid --${side}-pos: "${pos}". Expected format: x,y`);
63
+ return false;
64
+ }
65
+ args[`${side}X`] = x;
66
+ args[`${side}Y`] = y;
67
+ return true;
68
+ }
69
+ console.error(`drag requires --${side} <ref> or --${side}-pos <x,y>`);
70
+ return false;
71
+ }
72
+ //# sourceMappingURL=drag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drag.js","sourceRoot":"","sources":["../../../src/cli/commands/drag.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { AgentViewConfig } from '../../config/types.js';
2
+ export type EvalOptions = {
3
+ target?: string;
4
+ window?: string;
5
+ await?: boolean;
6
+ json?: boolean;
7
+ };
8
+ export declare function runEval(config: AgentViewConfig, expression: string, options: EvalOptions): Promise<void>;
9
+ //# sourceMappingURL=eval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/eval.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAE5D,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,IAAI,CAAC,EAAE,OAAO,CAAA;CACf,CAAA;AAED,wBAAsB,OAAO,CAC3B,MAAM,EAAE,eAAe,EACvB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CA8Bf"}
@@ -0,0 +1,30 @@
1
+ import { sendCommand } from '../client.js';
2
+ export async function runEval(config, expression, options) {
3
+ if (!expression) {
4
+ console.error('eval requires an expression');
5
+ process.exit(1);
6
+ }
7
+ const response = await sendCommand({
8
+ command: 'eval',
9
+ port: config.port,
10
+ runtime: config.runtime,
11
+ args: {
12
+ expression,
13
+ target: options.target,
14
+ window: options.window,
15
+ await: options.await,
16
+ json: options.json,
17
+ cwd: process.cwd(),
18
+ },
19
+ });
20
+ if (!response.ok) {
21
+ console.error(`Error: ${response.error}`);
22
+ process.exit(1);
23
+ }
24
+ const data = response.data;
25
+ if (process.stdout.isTTY) {
26
+ console.log(`# ${data.target.type}:${data.target.id.slice(0, 8)}`);
27
+ }
28
+ console.log(data.result);
29
+ }
30
+ //# sourceMappingURL=eval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eval.js","sourceRoot":"","sources":["../../../src/cli/commands/eval.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAU1C,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,MAAuB,EACvB,UAAkB,EAClB,OAAoB;IAEpB,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAA;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC;QACjC,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,IAAI,EAAE;YACJ,UAAU;YACV,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;SACnB;KACF,CAAC,CAAA;IAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,UAAU,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;QACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAgE,CAAA;IACtF,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;IACpE,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAC1B,CAAC"}
@@ -5,6 +5,7 @@ type SceneOptions = {
5
5
  depth?: number;
6
6
  verbose?: boolean;
7
7
  diff?: boolean;
8
+ compact?: boolean;
8
9
  };
9
10
  export declare function runScene(config: AgentViewConfig, options: SceneOptions): Promise<void>;
10
11
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"scene.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/scene.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAE5D,KAAK,YAAY,GAAG;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf,CAAA;AAED,wBAAsB,QAAQ,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB5F"}
1
+ {"version":3,"file":"scene.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/scene.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAE5D,KAAK,YAAY,GAAG;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,wBAAsB,QAAQ,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB5F"}
@@ -11,6 +11,8 @@ export async function runScene(config, options) {
11
11
  args.verbose = true;
12
12
  if (options.diff)
13
13
  args.diff = true;
14
+ if (options.compact)
15
+ args.compact = true;
14
16
  const response = await sendCommand({
15
17
  command: 'scene',
16
18
  port: config.port,
@@ -1 +1 @@
1
- {"version":3,"file":"scene.js","sourceRoot":"","sources":["../../../src/cli/commands/scene.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAW1C,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,MAAuB,EAAE,OAAqB;IAC3E,MAAM,IAAI,GAA4B,EAAE,CAAA;IACxC,IAAI,OAAO,CAAC,MAAM;QAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAChD,IAAI,OAAO,CAAC,MAAM;QAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAChD,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;QAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;IAC3D,IAAI,OAAO,CAAC,OAAO;QAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;IACxC,IAAI,OAAO,CAAC,IAAI;QAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAElC,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC;QACjC,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM;QAC5B,IAAI;KACL,CAAC,CAAA;IAEF,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC5B,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"scene.js","sourceRoot":"","sources":["../../../src/cli/commands/scene.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAY1C,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,MAAuB,EAAE,OAAqB;IAC3E,MAAM,IAAI,GAA4B,EAAE,CAAA;IACxC,IAAI,OAAO,CAAC,MAAM;QAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAChD,IAAI,OAAO,CAAC,MAAM;QAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAChD,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;QAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;IAC3D,IAAI,OAAO,CAAC,OAAO;QAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;IACxC,IAAI,OAAO,CAAC,IAAI;QAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClC,IAAI,OAAO,CAAC,OAAO;QAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;IAExC,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC;QACjC,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM;QAC5B,IAAI;KACL,CAAC,CAAA;IAEF,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC5B,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
@@ -1,6 +1,8 @@
1
1
  import type { AgentViewConfig } from '../../config/types.js';
2
2
  type ScreenshotOptions = {
3
3
  window?: string;
4
+ scale?: number;
5
+ crop?: string;
4
6
  };
5
7
  export declare function runScreenshot(config: AgentViewConfig, options: ScreenshotOptions): Promise<void>;
6
8
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"screenshot.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/screenshot.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAE5D,KAAK,iBAAiB,GAAG;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBtG"}
1
+ {"version":3,"file":"screenshot.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/screenshot.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAE5D,KAAK,iBAAiB,GAAG;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBtG"}
@@ -3,6 +3,10 @@ export async function runScreenshot(config, options) {
3
3
  const args = {};
4
4
  if (options.window)
5
5
  args.window = options.window;
6
+ if (options.scale !== undefined)
7
+ args.scale = options.scale;
8
+ if (options.crop !== undefined)
9
+ args.crop = options.crop;
6
10
  const response = await sendCommand({
7
11
  command: 'screenshot',
8
12
  port: config.port,
@@ -10,6 +14,8 @@ export async function runScreenshot(config, options) {
10
14
  args,
11
15
  });
12
16
  if (response.ok) {
17
+ if (response.warning)
18
+ process.stderr.write(`Warning: ${response.warning}\n`);
13
19
  console.log(response.data);
14
20
  }
15
21
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"screenshot.js","sourceRoot":"","sources":["../../../src/cli/commands/screenshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAO1C,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAuB,EAAE,OAA0B;IACrF,MAAM,IAAI,GAA4B,EAAE,CAAA;IACxC,IAAI,OAAO,CAAC,MAAM;QAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAEhD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC;QACjC,OAAO,EAAE,YAAY;QACrB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,IAAI;KACL,CAAC,CAAA;IAEF,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC5B,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"screenshot.js","sourceRoot":"","sources":["../../../src/cli/commands/screenshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAS1C,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAuB,EAAE,OAA0B;IACrF,MAAM,IAAI,GAA4B,EAAE,CAAA;IACxC,IAAI,OAAO,CAAC,MAAM;QAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAChD,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;QAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;IAC3D,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;QAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;IAExD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC;QACjC,OAAO,EAAE,YAAY;QACrB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,IAAI;KACL,CAAC,CAAA;IAEF,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;QAChB,IAAI,QAAQ,CAAC,OAAO;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAA;QAC5E,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC5B,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
@@ -3,6 +3,7 @@ type SnapOptions = {
3
3
  window?: string;
4
4
  filter?: string;
5
5
  depth?: number;
6
+ scale?: number;
6
7
  };
7
8
  export declare function runSnap(config: AgentViewConfig, options: SnapOptions): Promise<void>;
8
9
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"snap.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/snap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAE5D,KAAK,WAAW,GAAG;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,wBAAsB,OAAO,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB1F"}
1
+ {"version":3,"file":"snap.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/snap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAE5D,KAAK,WAAW,GAAG;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,wBAAsB,OAAO,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB1F"}
@@ -7,6 +7,8 @@ export async function runSnap(config, options) {
7
7
  args.filter = options.filter;
8
8
  if (options.depth !== undefined)
9
9
  args.depth = options.depth;
10
+ if (options.scale !== undefined)
11
+ args.scale = options.scale;
10
12
  const response = await sendCommand({
11
13
  command: 'snap',
12
14
  port: config.port,
@@ -1 +1 @@
1
- {"version":3,"file":"snap.js","sourceRoot":"","sources":["../../../src/cli/commands/snap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAS1C,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAAuB,EAAE,OAAoB;IACzE,MAAM,IAAI,GAA4B,EAAE,CAAA;IACxC,IAAI,OAAO,CAAC,MAAM;QAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAChD,IAAI,OAAO,CAAC,MAAM;QAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAChD,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;QAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;IAE3D,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC;QACjC,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM;QAC5B,IAAI;KACL,CAAC,CAAA;IAEF,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC5B,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"snap.js","sourceRoot":"","sources":["../../../src/cli/commands/snap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAU1C,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAAuB,EAAE,OAAoB;IACzE,MAAM,IAAI,GAA4B,EAAE,CAAA;IACxC,IAAI,OAAO,CAAC,MAAM;QAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAChD,IAAI,OAAO,CAAC,MAAM;QAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAChD,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;QAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;IAC3D,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;QAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;IAE3D,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC;QACjC,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM;QAC5B,IAAI;KACL,CAAC,CAAA;IAEF,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC5B,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { AgentViewConfig } from '../../config/types.js';
2
+ export type TargetsOptions = {
3
+ type?: string;
4
+ json?: boolean;
5
+ };
6
+ export declare function runTargets(config: AgentViewConfig, options: TargetsOptions): Promise<void>;
7
+ //# sourceMappingURL=targets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"targets.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/targets.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAE5D,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,OAAO,CAAA;CACf,CAAA;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BhG"}
@@ -0,0 +1,30 @@
1
+ import { sendCommand } from '../client.js';
2
+ export async function runTargets(config, options) {
3
+ const types = options.type
4
+ ? options.type.split(',').map(s => s.trim()).filter(Boolean)
5
+ : undefined;
6
+ const response = await sendCommand({
7
+ command: 'targets',
8
+ port: config.port,
9
+ runtime: config.runtime,
10
+ args: { types },
11
+ });
12
+ if (!response.ok) {
13
+ console.error(`Error: ${response.error}`);
14
+ process.exit(1);
15
+ }
16
+ if (options.json) {
17
+ console.log(JSON.stringify(response.data, null, 2));
18
+ return;
19
+ }
20
+ const data = response.data;
21
+ if (!data.targets.length) {
22
+ console.log('(no targets)');
23
+ return;
24
+ }
25
+ for (const t of data.targets) {
26
+ const title = t.title || '(untitled)';
27
+ console.log(`${t.type.padEnd(15)} ${t.id.slice(0, 8)} ${title} ${t.url}`);
28
+ }
29
+ }
30
+ //# sourceMappingURL=targets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"targets.js","sourceRoot":"","sources":["../../../src/cli/commands/targets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAQ1C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAuB,EAAE,OAAuB;IAC/E,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI;QACxB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAC5D,CAAC,CAAC,SAAS,CAAA;IAEb,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC;QACjC,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,IAAI,EAAE,EAAE,KAAK,EAAE;KAChB,CAAC,CAAA;IAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,UAAU,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;QACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QACnD,OAAM;IACR,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAoF,CAAA;IAC1G,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;QAC3B,OAAM;IACR,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,YAAY,CAAA;QACrC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAA;IAC7E,CAAC;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { AgentViewConfig } from '../../config/types.js';
2
+ export type WatchOptions = {
3
+ interval?: string;
4
+ duration?: string;
5
+ maxChanges?: string;
6
+ until?: string;
7
+ json?: boolean;
8
+ target?: string;
9
+ window?: string;
10
+ };
11
+ export declare function runWatch(config: AgentViewConfig, expression: string, options: WatchOptions): Promise<void>;
12
+ //# sourceMappingURL=watch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/watch.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAO5D,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,eAAe,EACvB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,IAAI,CAAC,CAyCf"}
@@ -0,0 +1,233 @@
1
+ import { connect } from 'node:net';
2
+ import { spawn } from 'node:child_process';
3
+ import { join, dirname } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { existsSync, readFileSync } from 'node:fs';
6
+ import { homedir } from 'node:os';
7
+ import { WATCH_MIN_INTERVAL_MS } from '../../inspectors/watch/types.js';
8
+ const SERVER_PORT = 47922;
9
+ const DELIMITER = '\n';
10
+ const TOKEN_PATH = join(homedir(), '.agent-view', 'token');
11
+ export async function runWatch(config, expression, options) {
12
+ if (!expression) {
13
+ console.error('watch requires an expression');
14
+ process.exit(1);
15
+ }
16
+ const intervalMs = parsePosInt(options.interval, 250, '--interval');
17
+ const durationS = parsePosInt(options.duration, 30, '--duration');
18
+ const maxChanges = parsePosInt(options.maxChanges, 10, '--max-changes');
19
+ if (maxChanges <= 0) {
20
+ console.error('--max-changes must be > 0');
21
+ process.exit(2);
22
+ }
23
+ let effectiveInterval = intervalMs;
24
+ if (effectiveInterval < WATCH_MIN_INTERVAL_MS) {
25
+ process.stderr.write(`warning: --interval ${effectiveInterval} clamped to ${WATCH_MIN_INTERVAL_MS}ms\n`);
26
+ effectiveInterval = WATCH_MIN_INTERVAL_MS;
27
+ }
28
+ const args = {
29
+ expression,
30
+ intervalMs: effectiveInterval,
31
+ durationS,
32
+ maxChanges,
33
+ until: options.until,
34
+ target: options.target,
35
+ window: options.window,
36
+ cwd: process.cwd(),
37
+ };
38
+ const request = {
39
+ command: 'watch',
40
+ port: config.port,
41
+ runtime: config.runtime,
42
+ args,
43
+ token: readToken(),
44
+ };
45
+ await runStream(request, options);
46
+ }
47
+ async function runStream(request, options) {
48
+ try {
49
+ await openAndStream(request, options);
50
+ }
51
+ catch (err) {
52
+ if (err instanceof ConnRefused) {
53
+ await startServer();
54
+ const newRequest = { ...request, token: readToken() };
55
+ await openAndStream(newRequest, options);
56
+ return;
57
+ }
58
+ throw err;
59
+ }
60
+ }
61
+ class ConnRefused extends Error {
62
+ }
63
+ function openAndStream(request, options) {
64
+ return new Promise((resolve, reject) => {
65
+ const socket = connect(SERVER_PORT, '127.0.0.1');
66
+ let buffer = '';
67
+ let exitCode = 0;
68
+ let stopReceived = false;
69
+ let sigintReceived = false;
70
+ const onSigint = () => {
71
+ sigintReceived = true;
72
+ socket.end();
73
+ // Don't exit immediately — wait for stop frame to flush stdout.
74
+ // Fallback after 1s.
75
+ setTimeout(() => process.exit(130), 1000).unref();
76
+ };
77
+ process.on('SIGINT', onSigint);
78
+ socket.on('connect', () => {
79
+ socket.write(JSON.stringify(request) + DELIMITER);
80
+ });
81
+ socket.on('data', (chunk) => {
82
+ buffer += chunk.toString();
83
+ let idx = buffer.indexOf(DELIMITER);
84
+ while (idx !== -1) {
85
+ const line = buffer.slice(0, idx);
86
+ buffer = buffer.slice(idx + 1);
87
+ idx = buffer.indexOf(DELIMITER);
88
+ if (!line)
89
+ continue;
90
+ let parsed;
91
+ try {
92
+ parsed = JSON.parse(line);
93
+ }
94
+ catch {
95
+ process.stderr.write(`warning: malformed frame from server: ${line}\n`);
96
+ continue;
97
+ }
98
+ // Server-side validation error comes as ServerResponse with `ok` field.
99
+ if (parsed && typeof parsed === 'object' && 'ok' in parsed) {
100
+ const r = parsed;
101
+ if (r.ok === false) {
102
+ process.stderr.write(`Error: ${r.error ?? 'unknown'}\n`);
103
+ exitCode = 1;
104
+ socket.destroy();
105
+ return;
106
+ }
107
+ }
108
+ const frame = parsed;
109
+ printFrame(frame, options);
110
+ if (frame.type === 'stop') {
111
+ stopReceived = true;
112
+ if (!frame.ok)
113
+ exitCode = 1;
114
+ }
115
+ }
116
+ });
117
+ socket.on('close', () => {
118
+ process.off('SIGINT', onSigint);
119
+ if (!stopReceived && exitCode === 0) {
120
+ // Server closed without a stop frame → unusual
121
+ process.stderr.write('warning: server closed connection without stop frame\n');
122
+ exitCode = 1;
123
+ }
124
+ if (sigintReceived && exitCode === 0)
125
+ exitCode = 130;
126
+ resolve();
127
+ process.exit(exitCode);
128
+ });
129
+ socket.on('error', (err) => {
130
+ if (err.code === 'ECONNREFUSED' || err.code === 'ENOENT') {
131
+ reject(new ConnRefused(err.message));
132
+ return;
133
+ }
134
+ reject(err);
135
+ });
136
+ });
137
+ }
138
+ function printFrame(frame, options) {
139
+ if (options.json) {
140
+ process.stdout.write(JSON.stringify(frame) + '\n');
141
+ return;
142
+ }
143
+ const ts = `[${frame.ts}]`;
144
+ switch (frame.type) {
145
+ case 'init': {
146
+ process.stdout.write(`${ts} init ${stringify(frame.value)}\n`);
147
+ return;
148
+ }
149
+ case 'diff': {
150
+ for (const op of frame.ops)
151
+ process.stdout.write(`${ts} ${formatOp(op)}\n`);
152
+ return;
153
+ }
154
+ case 'error': {
155
+ process.stdout.write(`${ts} error ${frame.message}\n`);
156
+ return;
157
+ }
158
+ case 'stop': {
159
+ const cnt = frame.count !== undefined ? ` count=${frame.count}` : '';
160
+ process.stdout.write(`${ts} stop reason=${frame.reason}${cnt}\n`);
161
+ return;
162
+ }
163
+ }
164
+ }
165
+ function formatOp(op) {
166
+ const path = op.path === '' ? '/' : op.path;
167
+ switch (op.op) {
168
+ case 'replace': return `replace ${path} → ${stringify(op.value)}`;
169
+ case 'add': return `add ${path} ${stringify(op.value)}`;
170
+ case 'remove': return `remove ${path}`;
171
+ case 'move': return `move ${op.from} → ${path}`;
172
+ case 'copy': return `copy ${op.from} → ${path}`;
173
+ case 'test': return `test ${path} ${stringify(op.value)}`;
174
+ }
175
+ }
176
+ function stringify(value) {
177
+ try {
178
+ return JSON.stringify(value);
179
+ }
180
+ catch {
181
+ return String(value);
182
+ }
183
+ }
184
+ function parsePosInt(raw, fallback, name) {
185
+ if (raw === undefined)
186
+ return fallback;
187
+ const n = Number(raw);
188
+ if (!Number.isFinite(n) || n <= 0) {
189
+ console.error(`Invalid ${name}: "${raw}"`);
190
+ process.exit(2);
191
+ }
192
+ return Math.floor(n);
193
+ }
194
+ function readToken() {
195
+ try {
196
+ return readFileSync(TOKEN_PATH, 'utf-8').trim();
197
+ }
198
+ catch {
199
+ return '';
200
+ }
201
+ }
202
+ async function startServer() {
203
+ const __dirname = dirname(fileURLToPath(import.meta.url));
204
+ const serverEntryJs = join(__dirname, '..', '..', 'server', 'index.js');
205
+ const serverEntryTs = join(__dirname, '..', '..', 'server', 'index.ts');
206
+ const isDev = existsSync(serverEntryTs) && !existsSync(serverEntryJs);
207
+ const npx = process.platform === 'win32' ? 'npx.cmd' : 'npx';
208
+ const cmd = isDev ? npx : 'node';
209
+ const args = isDev ? ['tsx', serverEntryTs] : [serverEntryJs];
210
+ const projectRoot = join(__dirname, '..', '..', '..');
211
+ const child = spawn(cmd, args, {
212
+ detached: true,
213
+ stdio: ['ignore', 'pipe', 'ignore'],
214
+ shell: false,
215
+ cwd: projectRoot,
216
+ windowsHide: true,
217
+ });
218
+ child.unref();
219
+ return new Promise((resolve, reject) => {
220
+ const timeout = setTimeout(() => reject(new Error('Server startup timeout (10s)')), 10_000);
221
+ child.stdout?.on('data', (chunk) => {
222
+ if (chunk.toString().includes('READY')) {
223
+ clearTimeout(timeout);
224
+ resolve();
225
+ }
226
+ });
227
+ child.on('error', (err) => {
228
+ clearTimeout(timeout);
229
+ reject(err);
230
+ });
231
+ });
232
+ }
233
+ //# sourceMappingURL=watch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../../src/cli/commands/watch.ts"],"names":[],"mappings":"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"}