tauri-agent-tools 0.9.1 → 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 (122) hide show
  1. package/.agents/skills/tauri-agent-tools/SKILL.md +32 -13
  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 +35 -14
  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/interact/select.d.ts +6 -1
  47. package/dist/commands/interact/select.js +87 -29
  48. package/dist/commands/interact/select.js.map +1 -1
  49. package/dist/commands/interact/shared.d.ts +96 -0
  50. package/dist/commands/interact/shared.js +266 -1
  51. package/dist/commands/interact/shared.js.map +1 -1
  52. package/dist/commands/interact/type.d.ts +10 -2
  53. package/dist/commands/interact/type.js +44 -29
  54. package/dist/commands/interact/type.js.map +1 -1
  55. package/dist/commands/ipcMonitor.d.ts +3 -3
  56. package/dist/commands/ipcMonitor.js +26 -96
  57. package/dist/commands/ipcMonitor.js.map +1 -1
  58. package/dist/commands/listWindows.d.ts +2 -2
  59. package/dist/commands/listWindows.js.map +1 -1
  60. package/dist/commands/logs.d.ts +4 -27
  61. package/dist/commands/logs.js +12 -41
  62. package/dist/commands/logs.js.map +1 -1
  63. package/dist/commands/mutations.js +20 -101
  64. package/dist/commands/mutations.js.map +1 -1
  65. package/dist/commands/osLogs.js +2 -5
  66. package/dist/commands/osLogs.js.map +1 -1
  67. package/dist/commands/probe.js +18 -16
  68. package/dist/commands/probe.js.map +1 -1
  69. package/dist/commands/rustLogs.js +23 -43
  70. package/dist/commands/rustLogs.js.map +1 -1
  71. package/dist/commands/screenshot.d.ts +2 -2
  72. package/dist/commands/screenshot.js +7 -4
  73. package/dist/commands/screenshot.js.map +1 -1
  74. package/dist/commands/shared.d.ts +4 -1
  75. package/dist/commands/shared.js +34 -4
  76. package/dist/commands/shared.js.map +1 -1
  77. package/dist/commands/sidecarReplay.js +4 -0
  78. package/dist/commands/sidecarReplay.js.map +1 -1
  79. package/dist/commands/snapshot.d.ts +2 -2
  80. package/dist/commands/snapshot.js +4 -4
  81. package/dist/commands/snapshot.js.map +1 -1
  82. package/dist/commands/storeInspect.js +2 -2
  83. package/dist/commands/storeInspect.js.map +1 -1
  84. package/dist/commands/wait.d.ts +2 -2
  85. package/dist/commands/wait.js +42 -57
  86. package/dist/commands/wait.js.map +1 -1
  87. package/dist/errors.d.ts +10 -0
  88. package/dist/errors.js +26 -0
  89. package/dist/errors.js.map +1 -0
  90. package/dist/platform/detect.d.ts +2 -2
  91. package/dist/platform/detect.js +11 -2
  92. package/dist/platform/detect.js.map +1 -1
  93. package/dist/platform/x11.d.ts +1 -0
  94. package/dist/platform/x11.js +16 -5
  95. package/dist/platform/x11.js.map +1 -1
  96. package/dist/schemas/commands.d.ts +6 -0
  97. package/dist/schemas/commands.js +2 -0
  98. package/dist/schemas/commands.js.map +1 -1
  99. package/dist/schemas/interact.d.ts +58 -0
  100. package/dist/schemas/interact.js +25 -0
  101. package/dist/schemas/interact.js.map +1 -1
  102. package/dist/types.d.ts +2 -0
  103. package/dist/util/exec.d.ts +6 -0
  104. package/dist/util/exec.js +13 -1
  105. package/dist/util/exec.js.map +1 -1
  106. package/dist/util/incidentFiles.d.ts +5 -0
  107. package/dist/util/incidentFiles.js +61 -0
  108. package/dist/util/incidentFiles.js.map +1 -0
  109. package/dist/util/monitor.d.ts +11 -0
  110. package/dist/util/monitor.js +42 -0
  111. package/dist/util/monitor.js.map +1 -0
  112. package/dist/util/poll.d.ts +2 -0
  113. package/dist/util/poll.js +28 -0
  114. package/dist/util/poll.js.map +1 -0
  115. package/dist/util/redactText.d.ts +5 -2
  116. package/dist/util/redactText.js +44 -11
  117. package/dist/util/redactText.js.map +1 -1
  118. package/dist/util/tauriConfig.js +15 -18
  119. package/dist/util/tauriConfig.js.map +1 -1
  120. package/examples/tauri-bridge/Cargo.lock +4742 -0
  121. package/package.json +10 -3
  122. package/rust-bridge/README.md +7 -1
package/dist/errors.js ADDED
@@ -0,0 +1,26 @@
1
+ export class CliError extends Error {
2
+ code;
3
+ hint;
4
+ constructor(code, message, hint) {
5
+ super(message);
6
+ this.code = code;
7
+ this.hint = hint;
8
+ this.name = 'CliError';
9
+ }
10
+ }
11
+ export function errorDetail(error) {
12
+ if (error instanceof CliError)
13
+ return { code: error.code, message: error.message, hint: error.hint };
14
+ const message = error instanceof Error ? error.message : String(error);
15
+ if (/authenticat|Unauthorized/i.test(message)) {
16
+ return { code: 'AUTH_FAILED', message, hint: 'Check the target --port and --token, or rediscover it with probe.' };
17
+ }
18
+ if (/timeout|timed out/i.test(message)) {
19
+ return { code: 'TIMEOUT', message, hint: 'Check app responsiveness with probe and verify the requested timeout.' };
20
+ }
21
+ if (/No bridge|fetch failed|ECONNREFUSED/i.test(message)) {
22
+ return { code: 'BRIDGE_UNAVAILABLE', message, hint: 'Run probe and select the running dev app with --pid.' };
23
+ }
24
+ return { code: 'COMMAND_FAILED', message, hint: 'Run this command with --help to check its arguments and prerequisites.' };
25
+ }
26
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,QAAS,SAAQ,KAAK;IAEf;IAEA;IAHlB,YACkB,IAAY,EAC5B,OAAe,EACC,IAAY;QAE5B,KAAK,CAAC,OAAO,CAAC,CAAC;QAJC,SAAI,GAAJ,IAAI,CAAQ;QAEZ,SAAI,GAAJ,IAAI,CAAQ;QAG5B,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AAED,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,KAAK,YAAY,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;IACrG,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,IAAI,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9C,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,mEAAmE,EAAE,CAAC;IACrH,CAAC;IACD,IAAI,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,uEAAuE,EAAE,CAAC;IACrH,CAAC;IACD,IAAI,sCAAsC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACzD,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,sDAAsD,EAAE,CAAC;IAC/G,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,wEAAwE,EAAE,CAAC;AAC7H,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { DisplayServer } from '../types.js';
1
+ import type { DisplayServer, AdapterOperation } from '../types.js';
2
2
  export declare function detectDisplayServer(): DisplayServer;
3
3
  export interface ToolCheck {
4
4
  name: string;
@@ -9,4 +9,4 @@ export declare function checkX11Tools(): Promise<ToolCheck[]>;
9
9
  export declare function checkSwayTools(): Promise<ToolCheck[]>;
10
10
  export declare function checkHyprlandTools(): Promise<ToolCheck[]>;
11
11
  export declare function checkMacOSTools(): Promise<ToolCheck[]>;
12
- export declare function ensureTools(displayServer: DisplayServer): Promise<void>;
12
+ export declare function ensureTools(displayServer: DisplayServer, operation?: AdapterOperation): Promise<void>;
@@ -95,8 +95,17 @@ export async function checkMacOSTools() {
95
95
  ]);
96
96
  return [screencapture, osascript, sips, magick];
97
97
  }
98
- export async function ensureTools(displayServer) {
98
+ export async function ensureTools(displayServer, operation = 'image') {
99
99
  let checks;
100
+ if (operation === 'inspect') {
101
+ const name = displayServer === 'darwin' ? 'osascript'
102
+ : displayServer === 'x11' ? 'xdotool'
103
+ : displayServer === 'wayland-hyprland' ? 'hyprctl' : 'swaymsg';
104
+ if (!(await commandExists(name))) {
105
+ throw new Error(`Missing required tool: ${name}. Install the window-inspection tool for your display server.`);
106
+ }
107
+ return;
108
+ }
100
109
  if (displayServer === 'darwin') {
101
110
  checks = await checkMacOSTools();
102
111
  }
@@ -113,7 +122,7 @@ export async function ensureTools(displayServer) {
113
122
  else {
114
123
  checks = await checkX11Tools();
115
124
  }
116
- const missing = checks.filter((t) => !t.available);
125
+ const missing = checks.filter(t => !t.available && (operation === 'image' || displayServer === 'x11' || t.name !== 'magick (ImageMagick)'));
117
126
  if (missing.length > 0) {
118
127
  const hints = missing.map((t) => ` ${t.name}: ${t.installHint}`).join('\n');
119
128
  throw new Error(`Missing required tools:\n${hints}`);
@@ -1 +1 @@
1
- {"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/platform/detect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/platform/detect.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import type { PlatformAdapter, WindowInfo } from '../types.js';
2
2
  import type { ImageFormat } from '../schemas/commands.js';
3
3
  export declare class X11Adapter implements PlatformAdapter {
4
+ private searchWindows;
4
5
  findWindow(title: string): Promise<string>;
5
6
  captureWindow(windowId: string, format: ImageFormat): Promise<Buffer>;
6
7
  getWindowGeometry(windowId: string): Promise<WindowInfo>;
@@ -1,4 +1,4 @@
1
- import { exec, validateWindowId } from '../util/exec.js';
1
+ import { exec, ExecError, validateWindowId } from '../util/exec.js';
2
2
  import { magickCommand } from '../util/magick.js';
3
3
  function parseShellVar(output, key, fallback) {
4
4
  const match = output.match(new RegExp(`${key}=(\\d+)`));
@@ -10,9 +10,21 @@ function parseShellVar(output, key, fallback) {
10
10
  return parseInt(match[1], 10);
11
11
  }
12
12
  export class X11Adapter {
13
+ async searchWindows(title) {
14
+ try {
15
+ const { stdout } = await exec('xdotool', ['search', '--name', title]);
16
+ return stdout.toString().trim().split('\n').filter(Boolean);
17
+ }
18
+ catch (error) {
19
+ // xdotool returns 1 with no stderr when a search has no matches.
20
+ // Display, syntax, and missing-command errors must remain actionable.
21
+ if (error instanceof ExecError && error.code === 1 && error.stderr.trim() === '')
22
+ return [];
23
+ throw error;
24
+ }
25
+ }
13
26
  async findWindow(title) {
14
- const { stdout } = await exec('xdotool', ['search', '--name', title]);
15
- const ids = stdout.toString().trim().split('\n').filter(Boolean);
27
+ const ids = await this.searchWindows(title);
16
28
  if (ids.length === 0) {
17
29
  throw new Error(`No window found matching: ${title}`);
18
30
  }
@@ -43,8 +55,7 @@ export class X11Adapter {
43
55
  return stdout.toString().trim();
44
56
  }
45
57
  async listWindows() {
46
- const { stdout } = await exec('xdotool', ['search', '--name', '']);
47
- const ids = stdout.toString().trim().split('\n').filter(Boolean);
58
+ const ids = await this.searchWindows('');
48
59
  const windows = [];
49
60
  for (const id of ids) {
50
61
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"x11.js","sourceRoot":"","sources":["../../src/platform/x11.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"x11.js","sourceRoot":"","sources":["../../src/platform/x11.ts"],"names":[],"mappings":"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"}
@@ -250,6 +250,8 @@ export declare const CaptureManifestSchema: z.ZodObject<{
250
250
  height: number;
251
251
  }>>;
252
252
  errorCount: z.ZodOptional<z.ZodNumber>;
253
+ partial: z.ZodOptional<z.ZodBoolean>;
254
+ warnings: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
253
255
  files: z.ZodRecord<z.ZodString, z.ZodString>;
254
256
  }, "strip", z.ZodTypeAny, {
255
257
  timestamp: string;
@@ -261,6 +263,8 @@ export declare const CaptureManifestSchema: z.ZodObject<{
261
263
  height: number;
262
264
  } | undefined;
263
265
  errorCount?: number | undefined;
266
+ partial?: boolean | undefined;
267
+ warnings?: string[] | undefined;
264
268
  }, {
265
269
  timestamp: string;
266
270
  files: Record<string, string>;
@@ -271,6 +275,8 @@ export declare const CaptureManifestSchema: z.ZodObject<{
271
275
  height: number;
272
276
  } | undefined;
273
277
  errorCount?: number | undefined;
278
+ partial?: boolean | undefined;
279
+ warnings?: string[] | undefined;
274
280
  }>;
275
281
  export type CaptureManifest = z.infer<typeof CaptureManifestSchema>;
276
282
  export declare const PackageJsonSchema: z.ZodObject<{
@@ -65,6 +65,8 @@ export const CaptureManifestSchema = z.object({
65
65
  title: z.string().optional(),
66
66
  viewport: z.object({ width: z.number(), height: z.number() }).optional(),
67
67
  errorCount: z.number().optional(),
68
+ partial: z.boolean().optional(),
69
+ warnings: z.array(z.string()).optional(),
68
70
  files: z.record(z.string(), z.string()),
69
71
  });
70
72
  // === CLI: package.json ===
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/schemas/commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/schemas/commands.ts"],"names":[],"mappings":"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"}
@@ -37,25 +37,56 @@ export declare const ClickResultSchema: z.ZodObject<{
37
37
  tagName?: string | undefined;
38
38
  }>;
39
39
  export type ClickResult = z.infer<typeof ClickResultSchema>;
40
+ /**
41
+ * Outcome of the post-write re-read performed by `type` and `select`:
42
+ * - `matched`: the element still reports the value the setter applied.
43
+ * - `transformed`: the app replaced it with a different value (mask, formatter) — a soft success.
44
+ * - `reverted`: the element reads its pre-write value again — the app rejected the write (failure).
45
+ */
46
+ export declare const WriteVerificationSchema: z.ZodEnum<["matched", "transformed", "reverted"]>;
47
+ export type WriteVerification = z.infer<typeof WriteVerificationSchema>;
40
48
  export declare const TypeResultSchema: z.ZodObject<{
41
49
  success: z.ZodBoolean;
42
50
  selector: z.ZodOptional<z.ZodString>;
43
51
  tagName: z.ZodOptional<z.ZodString>;
44
52
  error: z.ZodOptional<z.ZodString>;
45
53
  } & {
54
+ /** The value as requested on the command line. */
55
+ requestedValue: z.ZodOptional<z.ZodString>;
56
+ /** `el.value` before the write. */
57
+ previousValue: z.ZodOptional<z.ZodString>;
58
+ /** True when the re-read equals the value the setter applied. */
59
+ verified: z.ZodOptional<z.ZodBoolean>;
60
+ verification: z.ZodOptional<z.ZodEnum<["matched", "transformed", "reverted"]>>;
61
+ /** Available `<option>` values when a `<select>` had no match. */
62
+ options: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
63
+ /** Actionable guidance accompanying a failure. */
64
+ hint: z.ZodOptional<z.ZodString>;
46
65
  value: z.ZodOptional<z.ZodString>;
47
66
  }, "strip", z.ZodTypeAny, {
48
67
  success: boolean;
49
68
  value?: string | undefined;
69
+ options?: string[] | undefined;
50
70
  error?: string | undefined;
51
71
  selector?: string | undefined;
72
+ hint?: string | undefined;
52
73
  tagName?: string | undefined;
74
+ requestedValue?: string | undefined;
75
+ previousValue?: string | undefined;
76
+ verified?: boolean | undefined;
77
+ verification?: "matched" | "transformed" | "reverted" | undefined;
53
78
  }, {
54
79
  success: boolean;
55
80
  value?: string | undefined;
81
+ options?: string[] | undefined;
56
82
  error?: string | undefined;
57
83
  selector?: string | undefined;
84
+ hint?: string | undefined;
58
85
  tagName?: string | undefined;
86
+ requestedValue?: string | undefined;
87
+ previousValue?: string | undefined;
88
+ verified?: boolean | undefined;
89
+ verification?: "matched" | "transformed" | "reverted" | undefined;
59
90
  }>;
60
91
  export type TypeResult = z.infer<typeof TypeResultSchema>;
61
92
  export declare const ScrollResultSchema: z.ZodObject<{
@@ -81,22 +112,49 @@ export declare const SelectResultSchema: z.ZodObject<{
81
112
  tagName: z.ZodOptional<z.ZodString>;
82
113
  error: z.ZodOptional<z.ZodString>;
83
114
  } & {
115
+ /** The value as requested on the command line. */
116
+ requestedValue: z.ZodOptional<z.ZodString>;
117
+ /** `el.value` before the write. */
118
+ previousValue: z.ZodOptional<z.ZodString>;
119
+ /** True when the re-read equals the value the setter applied. */
120
+ verified: z.ZodOptional<z.ZodBoolean>;
121
+ verification: z.ZodOptional<z.ZodEnum<["matched", "transformed", "reverted"]>>;
122
+ /** Available `<option>` values when a `<select>` had no match. */
123
+ options: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
124
+ /** Actionable guidance accompanying a failure. */
125
+ hint: z.ZodOptional<z.ZodString>;
84
126
  value: z.ZodOptional<z.ZodString>;
85
127
  checked: z.ZodOptional<z.ZodBoolean>;
128
+ /** `checked` before a `--toggle`. */
129
+ previousChecked: z.ZodOptional<z.ZodBoolean>;
86
130
  }, "strip", z.ZodTypeAny, {
87
131
  success: boolean;
88
132
  value?: string | undefined;
133
+ options?: string[] | undefined;
89
134
  error?: string | undefined;
90
135
  selector?: string | undefined;
136
+ hint?: string | undefined;
91
137
  tagName?: string | undefined;
138
+ requestedValue?: string | undefined;
139
+ previousValue?: string | undefined;
140
+ verified?: boolean | undefined;
141
+ verification?: "matched" | "transformed" | "reverted" | undefined;
92
142
  checked?: boolean | undefined;
143
+ previousChecked?: boolean | undefined;
93
144
  }, {
94
145
  success: boolean;
95
146
  value?: string | undefined;
147
+ options?: string[] | undefined;
96
148
  error?: string | undefined;
97
149
  selector?: string | undefined;
150
+ hint?: string | undefined;
98
151
  tagName?: string | undefined;
152
+ requestedValue?: string | undefined;
153
+ previousValue?: string | undefined;
154
+ verified?: boolean | undefined;
155
+ verification?: "matched" | "transformed" | "reverted" | undefined;
99
156
  checked?: boolean | undefined;
157
+ previousChecked?: boolean | undefined;
100
158
  }>;
101
159
  export type SelectResult = z.infer<typeof SelectResultSchema>;
102
160
  export declare const InvokeResultSchema: z.ZodObject<{
@@ -9,8 +9,30 @@ export const InteractionResultSchema = z.object({
9
9
  export const ClickResultSchema = InteractionResultSchema.extend({
10
10
  text: z.string().optional(),
11
11
  });
12
+ /**
13
+ * Outcome of the post-write re-read performed by `type` and `select`:
14
+ * - `matched`: the element still reports the value the setter applied.
15
+ * - `transformed`: the app replaced it with a different value (mask, formatter) — a soft success.
16
+ * - `reverted`: the element reads its pre-write value again — the app rejected the write (failure).
17
+ */
18
+ export const WriteVerificationSchema = z.enum(['matched', 'transformed', 'reverted']);
19
+ /** Optional-only fields shared by the value-writing commands. */
20
+ const WriteResultFields = {
21
+ /** The value as requested on the command line. */
22
+ requestedValue: z.string().optional(),
23
+ /** `el.value` before the write. */
24
+ previousValue: z.string().optional(),
25
+ /** True when the re-read equals the value the setter applied. */
26
+ verified: z.boolean().optional(),
27
+ verification: WriteVerificationSchema.optional(),
28
+ /** Available `<option>` values when a `<select>` had no match. */
29
+ options: z.array(z.string()).optional(),
30
+ /** Actionable guidance accompanying a failure. */
31
+ hint: z.string().optional(),
32
+ };
12
33
  export const TypeResultSchema = InteractionResultSchema.extend({
13
34
  value: z.string().optional(),
35
+ ...WriteResultFields,
14
36
  });
15
37
  export const ScrollResultSchema = z.object({
16
38
  success: z.boolean(),
@@ -21,6 +43,9 @@ export const ScrollResultSchema = z.object({
21
43
  export const SelectResultSchema = InteractionResultSchema.extend({
22
44
  value: z.string().optional(),
23
45
  checked: z.boolean().optional(),
46
+ /** `checked` before a `--toggle`. */
47
+ previousChecked: z.boolean().optional(),
48
+ ...WriteResultFields,
24
49
  });
25
50
  export const InvokeResultSchema = z.object({
26
51
  success: z.boolean(),
@@ -1 +1 @@
1
- {"version":3,"file":"interact.js","sourceRoot":"","sources":["../../src/schemas/interact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,8BAA8B;AAE9B,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,MAAM,CAAC;IAC9D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC5B,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,MAAM,CAAC;IAC7D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,kBAAkB,GAAG,uBAAuB,CAAC,MAAM,CAAC;IAC/D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC,CAAC"}
1
+ {"version":3,"file":"interact.js","sourceRoot":"","sources":["../../src/schemas/interact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,8BAA8B;AAE9B,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,MAAM,CAAC;IAC9D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC5B,CAAC,CAAC;AAGH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC;AAGtF,iEAAiE;AACjE,MAAM,iBAAiB,GAAG;IACxB,kDAAkD;IAClD,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,mCAAmC;IACnC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,iEAAiE;IACjE,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,YAAY,EAAE,uBAAuB,CAAC,QAAQ,EAAE;IAChD,kEAAkE;IAClE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACvC,kDAAkD;IAClD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC5B,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,MAAM,CAAC;IAC7D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,GAAG,iBAAiB;CACrB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,kBAAkB,GAAG,uBAAuB,CAAC,MAAM,CAAC;IAC/D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/B,qCAAqC;IACrC,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACvC,GAAG,iBAAiB;CACrB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC,CAAC"}
package/dist/types.d.ts CHANGED
@@ -21,3 +21,5 @@ export interface WindowListEntry extends WindowInfo {
21
21
  tauri: boolean;
22
22
  bridge?: BridgeConfig;
23
23
  }
24
+ export type AdapterOperation = 'inspect' | 'capture' | 'image';
25
+ export type AdapterFactory = (operation?: AdapterOperation) => PlatformAdapter | Promise<PlatformAdapter>;
@@ -3,6 +3,12 @@ export interface ExecResult {
3
3
  stdout: Buffer;
4
4
  stderr: string;
5
5
  }
6
+ export declare class ExecError extends Error {
7
+ readonly code: number | string | null | undefined;
8
+ readonly stdout: Buffer;
9
+ readonly stderr: string;
10
+ constructor(message: string, code: number | string | null | undefined, stdout: Buffer, stderr: string);
11
+ }
6
12
  export declare function exec(cmd: string, args: string[], options?: {
7
13
  stdin?: Buffer;
8
14
  timeout?: number;
package/dist/util/exec.js CHANGED
@@ -4,6 +4,18 @@ const MAX_BUFFER = 100 * 1024 * 1024; // 100MB
4
4
  export function validateWindowId(id) {
5
5
  WindowIdSchema.parse(id);
6
6
  }
7
+ export class ExecError extends Error {
8
+ code;
9
+ stdout;
10
+ stderr;
11
+ constructor(message, code, stdout, stderr) {
12
+ super(message);
13
+ this.code = code;
14
+ this.stdout = stdout;
15
+ this.stderr = stderr;
16
+ this.name = 'ExecError';
17
+ }
18
+ }
7
19
  export function exec(cmd, args, options) {
8
20
  return new Promise((resolve, reject) => {
9
21
  const child = cpExecFile(cmd, args, {
@@ -13,7 +25,7 @@ export function exec(cmd, args, options) {
13
25
  }, (error, stdout, stderr) => {
14
26
  if (error) {
15
27
  const stderrStr = Buffer.isBuffer(stderr) ? stderr.toString() : String(stderr ?? '');
16
- reject(new Error(`${cmd} failed: ${stderrStr || error.message}`));
28
+ reject(new ExecError(`${cmd} failed: ${stderrStr || error.message}`, error.code, Buffer.isBuffer(stdout) ? stdout : Buffer.from(stdout ?? ''), stderrStr));
17
29
  return;
18
30
  }
19
31
  resolve({
@@ -1 +1 @@
1
- {"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/util/exec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,UAAU,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,QAAQ;AAE9C,MAAM,UAAU,gBAAgB,CAAC,EAAU;IACzC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC3B,CAAC;AAOD,MAAM,UAAU,IAAI,CAClB,GAAW,EACX,IAAc,EACd,OAA8C;IAE9C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,UAAU,CACtB,GAAG,EACH,IAAI,EACJ;YACE,SAAS,EAAE,UAAU;YACrB,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,OAAO,EAAE,OAAO;SAC1B,EACD,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACxB,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;gBACrF,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,YAAY,SAAS,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAClE,OAAO;YACT,CAAC;YACD,OAAO,CAAC;gBACN,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAA2B,CAAC;gBACnF,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;aAC3E,CAAC,CAAC;QACL,CAAC,CACF,CAAC;QAEF,IAAI,OAAO,EAAE,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAClC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/util/exec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,UAAU,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,QAAQ;AAE9C,MAAM,UAAU,gBAAgB,CAAC,EAAU;IACzC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC3B,CAAC;AAOD,MAAM,OAAO,SAAU,SAAQ,KAAK;IAGhB;IACA;IACA;IAJlB,YACE,OAAe,EACC,IAAwC,EACxC,MAAc,EACd,MAAc;QAE9B,KAAK,CAAC,OAAO,CAAC,CAAC;QAJC,SAAI,GAAJ,IAAI,CAAoC;QACxC,WAAM,GAAN,MAAM,CAAQ;QACd,WAAM,GAAN,MAAM,CAAQ;QAG9B,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,UAAU,IAAI,CAClB,GAAW,EACX,IAAc,EACd,OAA8C;IAE9C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,UAAU,CACtB,GAAG,EACH,IAAI,EACJ;YACE,SAAS,EAAE,UAAU;YACrB,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,OAAO,EAAE,OAAO;SAC1B,EACD,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACxB,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;gBACrF,MAAM,CAAC,IAAI,SAAS,CAAC,GAAG,GAAG,YAAY,SAAS,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,IAAI,EAC7E,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;gBAC5E,OAAO;YACT,CAAC;YACD,OAAO,CAAC;gBACN,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAA2B,CAAC;gBACnF,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;aAC3E,CAAC,CAAC;QACL,CAAC,CACF,CAAC;QAEF,IAAI,OAAO,EAAE,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAClC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function artifactFiles(root: string, prefix?: string): Promise<string[]>;
2
+ /** Preflight every generated destination before replacing any files. */
3
+ export declare function publishArtifacts(source: string, destination: string): Promise<void>;
4
+ /** Rename a newly copied file instead of following links or truncating hardlinks. */
5
+ export declare function publishFile(source: string, destination: string): Promise<void>;
@@ -0,0 +1,61 @@
1
+ import { copyFile, lstat, mkdir, mkdtemp, readdir, rename, rm } from 'node:fs/promises';
2
+ import { dirname, join, resolve } from 'node:path';
3
+ export async function artifactFiles(root, prefix = '') {
4
+ const files = [];
5
+ for (const entry of await readdir(join(root, prefix), { withFileTypes: true })) {
6
+ const path = join(prefix, entry.name);
7
+ if (entry.isSymbolicLink())
8
+ throw new Error(`Refusing artifact symlink: ${path}`);
9
+ if (entry.isDirectory())
10
+ files.push(...await artifactFiles(root, path));
11
+ else if (entry.isFile())
12
+ files.push(path);
13
+ else
14
+ throw new Error(`Not a regular artifact: ${path}`);
15
+ }
16
+ return files.sort();
17
+ }
18
+ async function checkDestination(path, directory) {
19
+ const st = await lstat(path).catch((error) => {
20
+ if (error.code === 'ENOENT')
21
+ return null;
22
+ throw error;
23
+ });
24
+ if (st && (st.isSymbolicLink() || (directory ? !st.isDirectory() : !st.isFile()))) {
25
+ throw new Error(`Refusing incompatible or symlink output path: ${path}`);
26
+ }
27
+ }
28
+ /** Preflight every generated destination before replacing any files. */
29
+ export async function publishArtifacts(source, destination) {
30
+ const root = resolve(destination);
31
+ const files = await artifactFiles(source);
32
+ const dirs = new Set([root]);
33
+ for (const file of files) {
34
+ let dir = dirname(join(root, file));
35
+ while (dir !== root) {
36
+ dirs.add(dir);
37
+ dir = dirname(dir);
38
+ }
39
+ await checkDestination(join(root, file), false);
40
+ }
41
+ for (const dir of dirs)
42
+ await checkDestination(dir, true);
43
+ for (const dir of [...dirs].sort((a, b) => a.length - b.length))
44
+ await mkdir(dir, { recursive: true });
45
+ for (const file of files)
46
+ await publishFile(join(source, file), join(root, file));
47
+ }
48
+ /** Rename a newly copied file instead of following links or truncating hardlinks. */
49
+ export async function publishFile(source, destination) {
50
+ await checkDestination(destination, false);
51
+ const temporary = await mkdtemp(join(dirname(destination), '.tauri-publish-'));
52
+ try {
53
+ const staged = join(temporary, 'artifact');
54
+ await copyFile(source, staged);
55
+ await rename(staged, destination);
56
+ }
57
+ finally {
58
+ await rm(temporary, { recursive: true, force: true });
59
+ }
60
+ }
61
+ //# sourceMappingURL=incidentFiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"incidentFiles.js","sourceRoot":"","sources":["../../src/util/incidentFiles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /** Own signal handlers for the entire collector, including setup and cleanup. */
2
+ export declare function createSignalScope(): {
3
+ signal: AbortSignal;
4
+ dispose: () => void;
5
+ };
6
+ /** Signal-aware polling with a final sample, including durations below interval. */
7
+ export declare function monitorFor(opts: {
8
+ interval: number;
9
+ duration?: number;
10
+ signal?: AbortSignal;
11
+ }, sample: () => Promise<void>): Promise<'completed' | 'interrupted'>;
@@ -0,0 +1,42 @@
1
+ /** Own signal handlers for the entire collector, including setup and cleanup. */
2
+ export function createSignalScope() {
3
+ const controller = new AbortController();
4
+ const interrupt = () => controller.abort('SIGINT');
5
+ const terminate = () => controller.abort('SIGTERM');
6
+ process.on('SIGINT', interrupt);
7
+ process.on('SIGTERM', terminate);
8
+ return {
9
+ signal: controller.signal,
10
+ dispose: () => {
11
+ process.off('SIGINT', interrupt);
12
+ process.off('SIGTERM', terminate);
13
+ },
14
+ };
15
+ }
16
+ /** Signal-aware polling with a final sample, including durations below interval. */
17
+ export async function monitorFor(opts, sample) {
18
+ const deadline = opts.duration === undefined ? Infinity : Date.now() + opts.duration;
19
+ const ownedScope = opts.signal ? undefined : createSignalScope();
20
+ const signal = opts.signal ?? ownedScope.signal;
21
+ try {
22
+ do {
23
+ if (!signal.aborted) {
24
+ await new Promise(resolve => {
25
+ const finish = () => {
26
+ clearTimeout(timer);
27
+ signal.removeEventListener('abort', finish);
28
+ resolve();
29
+ };
30
+ const timer = setTimeout(finish, Math.max(0, Math.min(opts.interval, deadline - Date.now())));
31
+ signal.addEventListener('abort', finish, { once: true });
32
+ });
33
+ }
34
+ await sample();
35
+ } while (!signal.aborted && Date.now() < deadline);
36
+ return signal.aborted ? 'interrupted' : 'completed';
37
+ }
38
+ finally {
39
+ ownedScope?.dispose();
40
+ }
41
+ }
42
+ //# sourceMappingURL=monitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monitor.js","sourceRoot":"","sources":["../../src/util/monitor.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,MAAM,UAAU,iBAAiB;IAC/B,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,GAAS,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,GAAS,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC1D,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACjC,OAAO;QACL,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,OAAO,EAAE,GAAG,EAAE;YACZ,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACpC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,oFAAoF;AACpF,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,IAAmE,EACnE,MAA2B;IAE3B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;IACrF,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;IACjE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,UAAW,CAAC,MAAM,CAAC;IACjD,IAAI,CAAC;QACH,GAAG,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;oBAChC,MAAM,MAAM,GAAG,GAAS,EAAE;wBACxB,YAAY,CAAC,KAAK,CAAC,CAAC;wBACpB,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;wBAC5C,OAAO,EAAE,CAAC;oBACZ,CAAC,CAAC;oBACF,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;oBAC9F,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;YACL,CAAC;YACD,MAAM,MAAM,EAAE,CAAC;QACjB,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE;QACnD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC;IACtD,CAAC;YAAS,CAAC;QACT,UAAU,EAAE,OAAO,EAAE,CAAC;IACxB,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ /** Each request and sleep consumes the same overall time budget. */
2
+ export declare function pollUntil<T>(attempt: (remainingMs: number) => Promise<T | null>, timeoutMs: number, intervalMs: number, message: string): Promise<T>;
@@ -0,0 +1,28 @@
1
+ import { CliError } from '../errors.js';
2
+ /** Each request and sleep consumes the same overall time budget. */
3
+ export async function pollUntil(attempt, timeoutMs, intervalMs, message) {
4
+ const deadline = Date.now() + timeoutMs;
5
+ while (Date.now() < deadline) {
6
+ const remaining = Math.max(1, deadline - Date.now());
7
+ let timer;
8
+ try {
9
+ const result = await Promise.race([
10
+ attempt(remaining),
11
+ new Promise((_, reject) => {
12
+ timer = setTimeout(() => reject(new CliError('TIMEOUT', message, 'Check the target and its readiness.')), remaining);
13
+ }),
14
+ ]);
15
+ if (result !== null)
16
+ return result;
17
+ }
18
+ finally {
19
+ if (timer)
20
+ clearTimeout(timer);
21
+ }
22
+ const sleep = Math.min(intervalMs, deadline - Date.now());
23
+ if (sleep > 0)
24
+ await new Promise(resolve => setTimeout(resolve, sleep));
25
+ }
26
+ throw new CliError('TIMEOUT', message, 'Check the target and its readiness.');
27
+ }
28
+ //# sourceMappingURL=poll.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"poll.js","sourceRoot":"","sources":["../../src/util/poll.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,oEAAoE;AACpE,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,OAAmD,EACnD,SAAiB,EACjB,UAAkB,EAClB,OAAe;IAEf,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACrD,IAAI,KAAgD,CAAC;QACrD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;gBAChC,OAAO,CAAC,SAAS,CAAC;gBAClB,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;oBAC/B,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,qCAAqC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;gBACvH,CAAC,CAAC;aACH,CAAC,CAAC;YACH,IAAI,MAAM,KAAK,IAAI;gBAAE,OAAO,MAAM,CAAC;QACrC,CAAC;gBAAS,CAAC;YACT,IAAI,KAAK;gBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1D,IAAI,KAAK,GAAG,CAAC;YAAE,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAC1E,CAAC;IACD,MAAM,IAAI,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,qCAAqC,CAAC,CAAC;AAChF,CAAC"}