tauri-agent-tools 0.9.2 → 0.9.3

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 (110) hide show
  1. package/.agents/skills/tauri-agent-tools/SKILL.md +25 -11
  2. package/.agents/skills/tauri-bridge-setup/SKILL.md +4 -3
  3. package/.agents/skills/tauri-debug-quickstart/SKILL.md +3 -1
  4. package/AGENTS.md +7 -3
  5. package/README.md +31 -12
  6. package/dist/bridge/client.d.ts +1 -0
  7. package/dist/bridge/client.js +2 -0
  8. package/dist/bridge/client.js.map +1 -1
  9. package/dist/bridge/evaluate.d.ts +11 -0
  10. package/dist/bridge/evaluate.js +33 -0
  11. package/dist/bridge/evaluate.js.map +1 -0
  12. package/dist/bridge/logReader.d.ts +27 -0
  13. package/dist/bridge/logReader.js +26 -0
  14. package/dist/bridge/logReader.js.map +1 -0
  15. package/dist/bridge/observers.d.ts +11 -0
  16. package/dist/bridge/observers.js +195 -0
  17. package/dist/bridge/observers.js.map +1 -0
  18. package/dist/cli.js +28 -8
  19. package/dist/cli.js.map +1 -1
  20. package/dist/commands/bundle.js +122 -101
  21. package/dist/commands/bundle.js.map +1 -1
  22. package/dist/commands/capture.d.ts +3 -3
  23. package/dist/commands/capture.js +167 -141
  24. package/dist/commands/capture.js.map +1 -1
  25. package/dist/commands/check.js +44 -59
  26. package/dist/commands/check.js.map +1 -1
  27. package/dist/commands/consoleMonitor.js +18 -85
  28. package/dist/commands/consoleMonitor.js.map +1 -1
  29. package/dist/commands/diagnose.js +4 -32
  30. package/dist/commands/diagnose.js.map +1 -1
  31. package/dist/commands/diff.js +28 -38
  32. package/dist/commands/diff.js.map +1 -1
  33. package/dist/commands/dom.js +2 -2
  34. package/dist/commands/dom.js.map +1 -1
  35. package/dist/commands/eval.js +11 -1
  36. package/dist/commands/eval.js.map +1 -1
  37. package/dist/commands/forensics.js +1 -7
  38. package/dist/commands/forensics.js.map +1 -1
  39. package/dist/commands/info.d.ts +2 -2
  40. package/dist/commands/info.js +3 -1
  41. package/dist/commands/info.js.map +1 -1
  42. package/dist/commands/interact/click.js +14 -44
  43. package/dist/commands/interact/click.js.map +1 -1
  44. package/dist/commands/interact/scroll.js +6 -0
  45. package/dist/commands/interact/scroll.js.map +1 -1
  46. package/dist/commands/ipcMonitor.d.ts +3 -3
  47. package/dist/commands/ipcMonitor.js +26 -96
  48. package/dist/commands/ipcMonitor.js.map +1 -1
  49. package/dist/commands/listWindows.d.ts +2 -2
  50. package/dist/commands/listWindows.js.map +1 -1
  51. package/dist/commands/logs.d.ts +4 -27
  52. package/dist/commands/logs.js +12 -41
  53. package/dist/commands/logs.js.map +1 -1
  54. package/dist/commands/mutations.js +20 -101
  55. package/dist/commands/mutations.js.map +1 -1
  56. package/dist/commands/osLogs.js +2 -5
  57. package/dist/commands/osLogs.js.map +1 -1
  58. package/dist/commands/probe.js +18 -16
  59. package/dist/commands/probe.js.map +1 -1
  60. package/dist/commands/rustLogs.js +23 -43
  61. package/dist/commands/rustLogs.js.map +1 -1
  62. package/dist/commands/screenshot.d.ts +2 -2
  63. package/dist/commands/screenshot.js +7 -4
  64. package/dist/commands/screenshot.js.map +1 -1
  65. package/dist/commands/shared.d.ts +4 -1
  66. package/dist/commands/shared.js +34 -4
  67. package/dist/commands/shared.js.map +1 -1
  68. package/dist/commands/sidecarReplay.js +4 -0
  69. package/dist/commands/sidecarReplay.js.map +1 -1
  70. package/dist/commands/snapshot.d.ts +2 -2
  71. package/dist/commands/snapshot.js +4 -4
  72. package/dist/commands/snapshot.js.map +1 -1
  73. package/dist/commands/storeInspect.js +2 -2
  74. package/dist/commands/storeInspect.js.map +1 -1
  75. package/dist/commands/wait.d.ts +2 -2
  76. package/dist/commands/wait.js +42 -57
  77. package/dist/commands/wait.js.map +1 -1
  78. package/dist/errors.d.ts +10 -0
  79. package/dist/errors.js +26 -0
  80. package/dist/errors.js.map +1 -0
  81. package/dist/platform/detect.d.ts +2 -2
  82. package/dist/platform/detect.js +11 -2
  83. package/dist/platform/detect.js.map +1 -1
  84. package/dist/platform/x11.d.ts +1 -0
  85. package/dist/platform/x11.js +16 -5
  86. package/dist/platform/x11.js.map +1 -1
  87. package/dist/schemas/commands.d.ts +6 -0
  88. package/dist/schemas/commands.js +2 -0
  89. package/dist/schemas/commands.js.map +1 -1
  90. package/dist/types.d.ts +2 -0
  91. package/dist/util/exec.d.ts +6 -0
  92. package/dist/util/exec.js +13 -1
  93. package/dist/util/exec.js.map +1 -1
  94. package/dist/util/incidentFiles.d.ts +5 -0
  95. package/dist/util/incidentFiles.js +61 -0
  96. package/dist/util/incidentFiles.js.map +1 -0
  97. package/dist/util/monitor.d.ts +11 -0
  98. package/dist/util/monitor.js +42 -0
  99. package/dist/util/monitor.js.map +1 -0
  100. package/dist/util/poll.d.ts +2 -0
  101. package/dist/util/poll.js +28 -0
  102. package/dist/util/poll.js.map +1 -0
  103. package/dist/util/redactText.d.ts +5 -2
  104. package/dist/util/redactText.js +44 -11
  105. package/dist/util/redactText.js.map +1 -1
  106. package/dist/util/tauriConfig.js +15 -18
  107. package/dist/util/tauriConfig.js.map +1 -1
  108. package/examples/tauri-bridge/Cargo.lock +4742 -0
  109. package/package.json +7 -3
  110. package/rust-bridge/README.md +7 -1
@@ -1,11 +1,17 @@
1
1
  import { writeFile, mkdir } from 'node:fs/promises';
2
2
  import { join } from 'node:path';
3
3
  import { Command } from 'commander';
4
- import { addBridgeOptions, resolveBridge, resolveWindowId, parseIntArg } from './shared.js';
4
+ import { addBridgeOptions, resolveBridge, resolveWindowId, parseNonNegativeInt } from './shared.js';
5
5
  import { buildSerializerScript } from './dom.js';
6
6
  import { computeCropRect, cropImage } from '../util/image.js';
7
7
  import { DomNodeSchema } from '../schemas/dom.js';
8
8
  import { PageStateSchema, SnapshotStorageResultSchema } from '../schemas/commands.js';
9
+ import { consoleObserver, readObserver, closeObserver } from '../bridge/observers.js';
10
+ import { ConsoleEntrySchema } from '../schemas/commands.js';
11
+ import { z } from 'zod';
12
+ import { monitorFor, createSignalScope } from '../util/monitor.js';
13
+ import { readRustLogs } from '../bridge/logReader.js';
14
+ import { evaluateExpression } from '../bridge/evaluate.js';
9
15
  const PAGE_STATE_SCRIPT = `(() => {
10
16
  return JSON.stringify({
11
17
  url: window.location.href,
@@ -21,173 +27,193 @@ const STORAGE_SCRIPT = `(() => {
21
27
  var session = Object.keys(sessionStorage).map(function(k) { return { key: k, value: sessionStorage.getItem(k) }; });
22
28
  return JSON.stringify({ localStorage: local, sessionStorage: session });
23
29
  })()`;
24
- const INJECT_CONSOLE_ERROR_SCRIPT = `(() => {
25
- if (!window.__captureErrors) {
26
- window.__captureErrors = [];
27
- const orig = console.error.bind(console);
28
- console.error = function(...args) {
29
- window.__captureErrors.push({ ts: Date.now(), msg: args.map(String).join(' ') });
30
- orig(...args);
31
- };
32
- }
33
- return 'ok';
34
- })()`;
35
- const DRAIN_CONSOLE_ERRORS_SCRIPT = `(() => {
36
- var errs = window.__captureErrors || [];
37
- window.__captureErrors = [];
38
- return JSON.stringify(errs);
39
- })()`;
40
30
  export async function captureToDir(bridge, adapter, opts) {
41
31
  const outDir = opts.output;
42
32
  const format = 'png';
43
33
  const files = {};
44
34
  // 1. Create output directory
45
35
  await mkdir(outDir, { recursive: true });
46
- // 2. Inject console error capture
47
- try {
48
- await bridge.eval(INJECT_CONSOLE_ERROR_SCRIPT);
49
- }
50
- catch {
51
- // Non-fatal — continue without error capture
52
- }
53
- // 3. Get page state — save to page-state.json
54
- let capturedUrl;
55
- let capturedTitle;
56
- let capturedViewport;
57
- try {
58
- const raw = await bridge.eval(PAGE_STATE_SCRIPT);
59
- const parsed = PageStateSchema.parse(JSON.parse(String(raw)));
60
- capturedUrl = parsed.url;
61
- capturedTitle = parsed.title;
62
- capturedViewport = parsed.viewport;
63
- const path = join(outDir, 'page-state.json');
64
- await writeFile(path, JSON.stringify(parsed, null, 2));
65
- files['page-state.json'] = path;
66
- }
67
- catch (err) {
68
- files['page-state.json'] = `error: ${err instanceof Error ? err.message : String(err)}`;
69
- }
70
- // 4. Screenshot — save to screenshot.png
36
+ const scripts = consoleObserver();
37
+ const signals = createSignalScope();
38
+ const assertCollecting = () => {
39
+ if (signals.signal.aborted)
40
+ throw new Error(`Capture interrupted by ${String(signals.signal.reason)}`);
41
+ };
42
+ let observerError;
43
+ let closed = false;
44
+ const warnings = [];
45
+ const warn = (message) => { warnings.push(message); console.error(message); };
71
46
  try {
72
- const windowId = await resolveWindowId(adapter, bridge, opts);
73
- let buffer;
74
- if (opts.selector) {
75
- const elementRect = await bridge.getElementRect(opts.selector);
76
- if (!elementRect)
77
- throw new Error(`Element not found: ${opts.selector}`);
78
- const viewport = await bridge.getViewportSize();
79
- const windowGeom = await adapter.getWindowGeometry(windowId);
80
- buffer = await adapter.captureWindow(windowId, format);
81
- const cropRect = computeCropRect(elementRect, viewport, {
82
- width: windowGeom.width,
83
- height: windowGeom.height,
84
- });
85
- buffer = await cropImage(buffer, cropRect, format);
47
+ // 2. Subscribe without affecting other console consumers.
48
+ try {
49
+ const status = await bridge.eval(scripts.patch);
50
+ if (status !== 'patched')
51
+ throw new Error(`Observer setup failed: ${String(status)}`);
86
52
  }
87
- else {
88
- buffer = await adapter.captureWindow(windowId, format);
53
+ catch (error) {
54
+ observerError = error;
89
55
  }
90
- const path = join(outDir, 'screenshot.png');
91
- await writeFile(path, buffer);
92
- files['screenshot.png'] = path;
93
- }
94
- catch (err) {
95
- files['screenshot.png'] = `error: ${err instanceof Error ? err.message : String(err)}`;
96
- }
97
- // 5. DOM tree — save to dom.json
98
- try {
99
- const raw = await bridge.eval(buildSerializerScript('body', opts.domDepth, false));
100
- const parsed = DomNodeSchema.parse(JSON.parse(String(raw)));
101
- const path = join(outDir, 'dom.json');
102
- await writeFile(path, JSON.stringify(parsed, null, 2));
103
- files['dom.json'] = path;
104
- }
105
- catch (err) {
106
- files['dom.json'] = `error: ${err instanceof Error ? err.message : String(err)}`;
107
- }
108
- // 6. Storage — save to storage.json
109
- try {
110
- const raw = await bridge.eval(STORAGE_SCRIPT);
111
- const parsed = SnapshotStorageResultSchema.parse(JSON.parse(String(raw)));
112
- const path = join(outDir, 'storage.json');
113
- await writeFile(path, JSON.stringify(parsed, null, 2));
114
- files['storage.json'] = path;
115
- }
116
- catch (err) {
117
- files['storage.json'] = `error: ${err instanceof Error ? err.message : String(err)}`;
118
- }
119
- // 7. Wait for logs-duration, drain console errors — save to console-errors.json
120
- try {
121
- await new Promise((resolve) => setTimeout(resolve, opts.logsDuration));
122
- const raw = await bridge.eval(DRAIN_CONSOLE_ERRORS_SCRIPT);
123
- const errors = JSON.parse(String(raw));
124
- const path = join(outDir, 'console-errors.json');
125
- await writeFile(path, JSON.stringify(errors, null, 2));
126
- files['console-errors.json'] = path;
127
- }
128
- catch (err) {
129
- files['console-errors.json'] = `error: ${err instanceof Error ? err.message : String(err)}`;
130
- }
131
- // 8. Fetch rust logs — save to rust-logs.json
132
- try {
133
- const logs = await bridge.fetchLogs();
134
- const path = join(outDir, 'rust-logs.json');
135
- await writeFile(path, JSON.stringify(logs, null, 2));
136
- files['rust-logs.json'] = path;
137
- }
138
- catch (err) {
139
- files['rust-logs.json'] = `error: ${err instanceof Error ? err.message : String(err)}`;
140
- }
141
- // 9. Optional custom eval — save to eval.json
142
- if (opts.eval) {
56
+ // 3. Get page state — save to page-state.json
57
+ let capturedUrl;
58
+ let capturedTitle;
59
+ let capturedViewport;
143
60
  try {
144
- const raw = await bridge.eval(opts.eval);
145
- const parsed = typeof raw === 'string'
146
- ? (() => { try {
147
- return JSON.parse(raw);
148
- }
149
- catch {
150
- return raw;
151
- } })()
152
- : raw;
153
- const path = join(outDir, 'eval.json');
61
+ assertCollecting();
62
+ const raw = await bridge.eval(PAGE_STATE_SCRIPT);
63
+ const parsed = PageStateSchema.parse(JSON.parse(String(raw)));
64
+ capturedUrl = parsed.url;
65
+ capturedTitle = parsed.title;
66
+ capturedViewport = parsed.viewport;
67
+ const path = join(outDir, 'page-state.json');
154
68
  await writeFile(path, JSON.stringify(parsed, null, 2));
155
- files['eval.json'] = path;
69
+ files['page-state.json'] = path;
156
70
  }
157
71
  catch (err) {
158
- files['eval.json'] = `error: ${err instanceof Error ? err.message : String(err)}`;
72
+ files['page-state.json'] = `error: ${err instanceof Error ? err.message : String(err)}`;
159
73
  }
74
+ // 4. Screenshot — missing platform tools must not prevent other artifacts.
75
+ try {
76
+ assertCollecting();
77
+ const screenshotAdapter = typeof adapter === 'function' ? await adapter(opts.selector ? 'image' : 'capture') : adapter;
78
+ const windowId = await resolveWindowId(screenshotAdapter, bridge, opts);
79
+ let buffer;
80
+ if (opts.selector) {
81
+ const elementRect = await bridge.getElementRect(opts.selector);
82
+ if (!elementRect)
83
+ throw new Error(`Element not found: ${opts.selector}`);
84
+ const viewport = await bridge.getViewportSize();
85
+ const windowGeom = await screenshotAdapter.getWindowGeometry(windowId);
86
+ buffer = await screenshotAdapter.captureWindow(windowId, format);
87
+ const cropRect = computeCropRect(elementRect, viewport, {
88
+ width: windowGeom.width,
89
+ height: windowGeom.height,
90
+ });
91
+ buffer = await cropImage(buffer, cropRect, format);
92
+ }
93
+ else {
94
+ buffer = await screenshotAdapter.captureWindow(windowId, format);
95
+ }
96
+ const path = join(outDir, 'screenshot.png');
97
+ await writeFile(path, buffer);
98
+ files['screenshot.png'] = path;
99
+ }
100
+ catch (err) {
101
+ files['screenshot.png'] = `error: ${err instanceof Error ? err.message : String(err)}`;
102
+ }
103
+ // 5. DOM tree — save to dom.json
104
+ try {
105
+ assertCollecting();
106
+ const raw = await bridge.eval(buildSerializerScript('body', opts.domDepth, false));
107
+ const parsed = DomNodeSchema.parse(JSON.parse(String(raw)));
108
+ const path = join(outDir, 'dom.json');
109
+ await writeFile(path, JSON.stringify(parsed, null, 2));
110
+ files['dom.json'] = path;
111
+ }
112
+ catch (err) {
113
+ files['dom.json'] = `error: ${err instanceof Error ? err.message : String(err)}`;
114
+ }
115
+ // 6. Storage — save to storage.json
116
+ try {
117
+ assertCollecting();
118
+ const raw = await bridge.eval(STORAGE_SCRIPT);
119
+ const parsed = SnapshotStorageResultSchema.parse(JSON.parse(String(raw)));
120
+ const path = join(outDir, 'storage.json');
121
+ await writeFile(path, JSON.stringify(parsed, null, 2));
122
+ files['storage.json'] = path;
123
+ }
124
+ catch (err) {
125
+ files['storage.json'] = `error: ${err instanceof Error ? err.message : String(err)}`;
126
+ }
127
+ // 7. Wait for logs-duration, drain console errors — save to console-errors.json
128
+ try {
129
+ if (observerError)
130
+ throw observerError;
131
+ const errors = [];
132
+ await monitorFor({ interval: Math.min(500, opts.logsDuration), duration: opts.logsDuration, signal: signals.signal }, async () => {
133
+ const entries = z.array(ConsoleEntrySchema).parse(await readObserver(bridge, scripts, warn));
134
+ errors.push(...entries.filter(e => e.level === 'error').map(e => ({ ts: e.timestamp, msg: e.message })));
135
+ });
136
+ const path = join(outDir, 'console-errors.json');
137
+ await writeFile(path, JSON.stringify(errors, null, 2));
138
+ files['console-errors.json'] = path;
139
+ }
140
+ catch (err) {
141
+ files['console-errors.json'] = `error: ${err instanceof Error ? err.message : String(err)}`;
142
+ }
143
+ // 8. Fetch rust logs — save to rust-logs.json
144
+ try {
145
+ assertCollecting();
146
+ const logs = await readRustLogs(bridge, undefined, { warn });
147
+ const path = join(outDir, 'rust-logs.json');
148
+ await writeFile(path, JSON.stringify(logs, null, 2));
149
+ files['rust-logs.json'] = path;
150
+ }
151
+ catch (err) {
152
+ files['rust-logs.json'] = `error: ${err instanceof Error ? err.message : String(err)}`;
153
+ }
154
+ // 9. Optional custom eval — save to eval.json
155
+ if (opts.eval) {
156
+ try {
157
+ assertCollecting();
158
+ const { value: raw } = await evaluateExpression(bridge, opts.eval);
159
+ const parsed = typeof raw === 'string'
160
+ ? (() => { try {
161
+ return JSON.parse(raw);
162
+ }
163
+ catch {
164
+ return raw;
165
+ } })()
166
+ : raw;
167
+ const path = join(outDir, 'eval.json');
168
+ await writeFile(path, JSON.stringify(parsed, null, 2));
169
+ files['eval.json'] = path;
170
+ }
171
+ catch (err) {
172
+ files['eval.json'] = `error: ${err instanceof Error ? err.message : String(err)}`;
173
+ }
174
+ }
175
+ // 10. Write manifest.json
176
+ await closeObserver(bridge, scripts, warn);
177
+ closed = true;
178
+ signals.dispose();
179
+ if (signals.signal.aborted)
180
+ warn(`warning: capture interrupted by ${String(signals.signal.reason)}; collection is incomplete`);
181
+ const errorCount = Object.values(files).filter(v => v.startsWith('error: ')).length;
182
+ const manifest = {
183
+ timestamp: new Date().toISOString(),
184
+ url: capturedUrl,
185
+ title: capturedTitle,
186
+ viewport: capturedViewport,
187
+ errorCount,
188
+ partial: errorCount > 0 || warnings.length > 0,
189
+ warnings,
190
+ files,
191
+ };
192
+ const manifestPath = join(outDir, 'manifest.json');
193
+ await writeFile(manifestPath, JSON.stringify(manifest, null, 2));
194
+ return manifest;
195
+ }
196
+ finally {
197
+ if (!closed)
198
+ await closeObserver(bridge, scripts, warn);
199
+ signals.dispose();
160
200
  }
161
- // 10. Write manifest.json
162
- const errorCount = Object.values(files).filter(v => v.startsWith('error: ')).length;
163
- const manifest = {
164
- timestamp: new Date().toISOString(),
165
- url: capturedUrl,
166
- title: capturedTitle,
167
- viewport: capturedViewport,
168
- errorCount,
169
- files,
170
- };
171
- const manifestPath = join(outDir, 'manifest.json');
172
- await writeFile(manifestPath, JSON.stringify(manifest, null, 2));
173
- return manifest;
174
201
  }
175
202
  export function registerCapture(program, getAdapter) {
176
203
  const cmd = new Command('capture')
177
204
  .description('Capture enhanced snapshot with manifest directory (screenshot, DOM, state, logs, errors)')
178
205
  .requiredOption('-o, --output <dir>', 'Output directory path')
179
206
  .option('-s, --selector <css>', 'CSS selector to screenshot (full window if omitted)')
180
- .option('-t, --title <regex>', 'Window title to match regex; quote titles with spaces (default: auto-discover)')
207
+ .option('-t, --title <pattern>', 'Window title (X11: regex; macOS/Wayland: substring); quote titles with spaces (default: auto-discover)')
181
208
  .option('-w, --window-id <id>', 'Platform window id (from list-windows) — overrides --title')
182
- .option('--dom-depth <number>', 'DOM tree depth', parseIntArg, 3)
209
+ .option('--dom-depth <number>', 'DOM tree depth', parseNonNegativeInt, 3)
183
210
  .option('--eval <js>', 'Additional JS to eval and save')
184
- .option('--logs-duration <ms>', 'Duration to wait for console errors (ms)', parseIntArg, 3000)
211
+ .option('--logs-duration <ms>', 'Duration to wait for console errors (ms)', parseNonNegativeInt, 3000)
185
212
  .option('--json', 'Output structured manifest');
186
213
  addBridgeOptions(cmd);
187
214
  cmd.action(async (opts) => {
188
215
  const bridge = await resolveBridge(opts);
189
- const adapter = await getAdapter();
190
- const manifest = await captureToDir(bridge, adapter, opts);
216
+ const manifest = await captureToDir(bridge, getAdapter, opts);
191
217
  printCaptureManifest(opts.output, manifest, opts.json);
192
218
  });
193
219
  program.addCommand(cmd);
@@ -1 +1 @@
1
- {"version":3,"file":"capture.js","sourceRoot":"","sources":["../../src/commands/capture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capture.js","sourceRoot":"","sources":["../../src/commands/capture.ts"],"names":[],"mappings":"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"}
@@ -1,44 +1,19 @@
1
1
  import { Command } from 'commander';
2
- import { addBridgeOptions, resolveBridge, parseIntArg } from './shared.js';
3
- const ERROR_PATCH_SCRIPT = `(() => {
4
- if (window.__tauriDevToolsErrorPatched) return 'already_patched';
5
- window.__tauriDevToolsOriginalConsoleError = console.error;
6
- window.__tauriDevToolsErrorBuffer = [];
7
- console.error = function() {
8
- var args = Array.prototype.slice.call(arguments);
9
- var message = args.map(function(a) {
10
- return typeof a === 'object' ? JSON.stringify(a) : String(a);
11
- }).join(' ');
12
- window.__tauriDevToolsErrorBuffer.push(message);
13
- window.__tauriDevToolsOriginalConsoleError.apply(console, arguments);
14
- };
15
- window.__tauriDevToolsErrorPatched = true;
16
- return 'patched';
17
- })()`;
18
- const ERROR_DRAIN_SCRIPT = `(() => {
19
- var buf = window.__tauriDevToolsErrorBuffer || [];
20
- window.__tauriDevToolsErrorBuffer = [];
21
- return JSON.stringify(buf);
22
- })()`;
23
- const ERROR_CLEANUP_SCRIPT = `(() => {
24
- if (window.__tauriDevToolsOriginalConsoleError) {
25
- console.error = window.__tauriDevToolsOriginalConsoleError;
26
- delete window.__tauriDevToolsOriginalConsoleError;
27
- delete window.__tauriDevToolsErrorBuffer;
28
- delete window.__tauriDevToolsErrorPatched;
29
- }
30
- return 'cleaned';
31
- })()`;
2
+ import { addBridgeOptions, resolveBridge, parsePositiveInt } from './shared.js';
3
+ import { evaluateExpression } from '../bridge/evaluate.js';
4
+ import { consoleObserver, readObserver, closeObserver } from '../bridge/observers.js';
5
+ import { monitorFor, createSignalScope } from '../util/monitor.js';
6
+ import { ConsoleEntrySchema } from '../schemas/commands.js';
7
+ import { z } from 'zod';
8
+ import { CliError } from '../errors.js';
32
9
  export function buildSelectorCheck(selector) {
33
- const escaped = selector.replace(/\\/g, '\\\\').replace(/'/g, "\\'");
34
- return `!!document.querySelector('${escaped}')`;
10
+ return `!!document.querySelector(${JSON.stringify(selector)})`;
35
11
  }
36
12
  export function buildEvalCheck(expression) {
37
- return `!!(${expression})`;
13
+ return expression;
38
14
  }
39
15
  export function buildTextCheck(pattern) {
40
- const escaped = pattern.replace(/\\/g, '\\\\').replace(/'/g, "\\'");
41
- return `document.body.textContent.includes('${escaped}')`;
16
+ return `document.body.textContent.includes(${JSON.stringify(pattern)})`;
42
17
  }
43
18
  export function registerCheck(program) {
44
19
  const cmd = new Command('check')
@@ -47,20 +22,23 @@ export function registerCheck(program) {
47
22
  .option('--eval <js>', 'Assert that a JavaScript expression is truthy')
48
23
  .option('--text <pattern>', 'Assert that body text contains the pattern')
49
24
  .option('--no-errors', 'Assert that no console.error calls occurred during --duration')
50
- .option('--duration <ms>', 'Duration to wait for --no-errors check (ms)', parseIntArg, 3000)
25
+ .option('--duration <ms>', 'Duration to wait for --no-errors check (ms)', parsePositiveInt, 3000)
51
26
  .option('--json', 'Output results as JSON');
52
27
  addBridgeOptions(cmd);
53
28
  cmd.action(async (opts) => {
29
+ if (opts.selector === undefined && opts.eval === undefined && opts.text === undefined && opts.errors !== false) {
30
+ throw new CliError('INVALID_ARGUMENT', 'At least one assertion is required', 'Use --selector, --eval, --text, or --no-errors.');
31
+ }
54
32
  const bridge = await resolveBridge(opts);
55
33
  const checks = [];
56
34
  // Selector check
57
35
  if (opts.selector !== undefined) {
58
36
  try {
59
37
  const js = buildSelectorCheck(opts.selector);
60
- const result = await bridge.eval(js);
38
+ const result = await evaluateExpression(bridge, js);
61
39
  checks.push({
62
40
  type: 'selector',
63
- passed: result === true || result === 'true',
41
+ passed: result.truthy,
64
42
  selector: opts.selector,
65
43
  });
66
44
  }
@@ -77,10 +55,10 @@ export function registerCheck(program) {
77
55
  if (opts.eval !== undefined) {
78
56
  try {
79
57
  const js = buildEvalCheck(opts.eval);
80
- const result = await bridge.eval(js);
58
+ const result = await evaluateExpression(bridge, js);
81
59
  checks.push({
82
60
  type: 'eval',
83
- passed: result === true || result === 'true',
61
+ passed: result.truthy,
84
62
  expression: opts.eval,
85
63
  });
86
64
  }
@@ -97,10 +75,10 @@ export function registerCheck(program) {
97
75
  if (opts.text !== undefined) {
98
76
  try {
99
77
  const js = buildTextCheck(opts.text);
100
- const result = await bridge.eval(js);
78
+ const result = await evaluateExpression(bridge, js);
101
79
  checks.push({
102
80
  type: 'text',
103
- passed: result === true || result === 'true',
81
+ passed: result.truthy,
104
82
  pattern: opts.text,
105
83
  });
106
84
  }
@@ -115,27 +93,34 @@ export function registerCheck(program) {
115
93
  }
116
94
  // No-errors check (opts.errors === false when --no-errors is passed)
117
95
  if (opts.errors === false) {
96
+ const scripts = consoleObserver();
97
+ const signals = createSignalScope();
98
+ const errors = [];
99
+ const warnings = [];
100
+ const warn = (message) => { warnings.push(message); console.error(message); };
118
101
  try {
119
- await bridge.eval(ERROR_PATCH_SCRIPT);
120
- await new Promise((resolve) => setTimeout(resolve, opts.duration));
121
- const raw = await bridge.eval(ERROR_DRAIN_SCRIPT);
122
- await bridge.eval(ERROR_CLEANUP_SCRIPT).catch(() => {
123
- // Best-effort cleanup
124
- });
125
- const errors = JSON.parse(String(raw));
126
- checks.push({
127
- type: 'no-errors',
128
- passed: errors.length === 0,
129
- errors,
102
+ const status = await bridge.eval(scripts.patch);
103
+ if (status !== 'patched')
104
+ throw new Error(`Observer setup failed: ${String(status)}`);
105
+ const outcome = await monitorFor({ interval: Math.min(500, opts.duration), duration: opts.duration, signal: signals.signal }, async () => {
106
+ const entries = z.array(ConsoleEntrySchema).parse(await readObserver(bridge, scripts, warn));
107
+ errors.push(...entries.filter(e => e.level === 'error').map(e => e.message));
130
108
  });
109
+ checks.push({ type: 'no-errors', passed: errors.length === 0 && outcome === 'completed', errors });
131
110
  }
132
111
  catch (err) {
133
- checks.push({
134
- type: 'no-errors',
135
- passed: false,
136
- errors: [],
137
- error: err instanceof Error ? err.message : String(err),
138
- });
112
+ checks.push({ type: 'no-errors', passed: false, errors, error: err instanceof Error ? err.message : String(err) });
113
+ }
114
+ finally {
115
+ await closeObserver(bridge, scripts, warn);
116
+ signals.dispose();
117
+ if (signals.signal.aborted)
118
+ warn(`Observation interrupted by ${String(signals.signal.reason)}; --no-errors did not complete.`);
119
+ if (warnings.length) {
120
+ const check = checks[checks.length - 1];
121
+ check.passed = false;
122
+ check.error = [check.error, ...warnings].filter(Boolean).join('; ');
123
+ }
139
124
  }
140
125
  }
141
126
  const passed = checks.every((c) => c.passed);
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"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"}