@vforsh/argus 0.1.18 → 0.1.19

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 (84) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/argus.js +2802 -564
  3. package/dist/cli/plugins/pluginHost.d.ts.map +1 -1
  4. package/dist/cli/plugins/pluginHost.js +1 -0
  5. package/dist/cli/plugins/pluginHost.js.map +1 -1
  6. package/dist/cli/register/extensionCommands.d.ts.map +1 -1
  7. package/dist/cli/register/extensionCommands.js +103 -3
  8. package/dist/cli/register/extensionCommands.js.map +1 -1
  9. package/dist/cli/register/index.d.ts.map +1 -1
  10. package/dist/cli/register/index.js +6 -0
  11. package/dist/cli/register/index.js.map +1 -1
  12. package/dist/cli/register/recordCommands.d.ts +3 -0
  13. package/dist/cli/register/recordCommands.d.ts.map +1 -0
  14. package/dist/cli/register/recordCommands.js +90 -0
  15. package/dist/cli/register/recordCommands.js.map +1 -0
  16. package/dist/cli/register/skillCommands.d.ts +3 -0
  17. package/dist/cli/register/skillCommands.d.ts.map +1 -0
  18. package/dist/cli/register/skillCommands.js +13 -0
  19. package/dist/cli/register/skillCommands.js.map +1 -0
  20. package/dist/commands/domDrag.d.ts +21 -0
  21. package/dist/commands/domDrag.d.ts.map +1 -0
  22. package/dist/commands/domDrag.js +179 -0
  23. package/dist/commands/domDrag.js.map +1 -0
  24. package/dist/commands/extension/attach.d.ts +2 -0
  25. package/dist/commands/extension/attach.d.ts.map +1 -1
  26. package/dist/commands/extension/attach.js +31 -6
  27. package/dist/commands/extension/attach.js.map +1 -1
  28. package/dist/commands/extension/doctor.d.ts +6 -0
  29. package/dist/commands/extension/doctor.d.ts.map +1 -0
  30. package/dist/commands/extension/doctor.js +185 -0
  31. package/dist/commands/extension/doctor.js.map +1 -0
  32. package/dist/commands/extension/select.d.ts +7 -0
  33. package/dist/commands/extension/select.d.ts.map +1 -0
  34. package/dist/commands/extension/select.js +73 -0
  35. package/dist/commands/extension/select.js.map +1 -0
  36. package/dist/commands/extension/show.d.ts +4 -0
  37. package/dist/commands/extension/show.d.ts.map +1 -1
  38. package/dist/commands/extension/show.js +12 -88
  39. package/dist/commands/extension/show.js.map +1 -1
  40. package/dist/commands/extension/tabAttach.d.ts +28 -0
  41. package/dist/commands/extension/tabAttach.d.ts.map +1 -0
  42. package/dist/commands/extension/tabAttach.js +106 -0
  43. package/dist/commands/extension/tabAttach.js.map +1 -0
  44. package/dist/commands/extension/tabWatcher.d.ts +22 -0
  45. package/dist/commands/extension/tabWatcher.d.ts.map +1 -0
  46. package/dist/commands/extension/tabWatcher.js +89 -0
  47. package/dist/commands/extension/tabWatcher.js.map +1 -0
  48. package/dist/commands/extension/targetSelection.d.ts +62 -0
  49. package/dist/commands/extension/targetSelection.d.ts.map +1 -0
  50. package/dist/commands/extension/targetSelection.js +210 -0
  51. package/dist/commands/extension/targetSelection.js.map +1 -0
  52. package/dist/commands/extension/targets.d.ts +7 -0
  53. package/dist/commands/extension/targets.d.ts.map +1 -0
  54. package/dist/commands/extension/targets.js +73 -0
  55. package/dist/commands/extension/targets.js.map +1 -0
  56. package/dist/commands/extension/use.d.ts +13 -0
  57. package/dist/commands/extension/use.d.ts.map +1 -0
  58. package/dist/commands/extension/use.js +66 -0
  59. package/dist/commands/extension/use.js.map +1 -0
  60. package/dist/commands/record.d.ts +35 -0
  61. package/dist/commands/record.d.ts.map +1 -0
  62. package/dist/commands/record.js +210 -0
  63. package/dist/commands/record.js.map +1 -0
  64. package/dist/commands/skill.d.ts +6 -0
  65. package/dist/commands/skill.d.ts.map +1 -0
  66. package/dist/commands/skill.js +42 -0
  67. package/dist/commands/skill.js.map +1 -0
  68. package/dist/commands/watcherNativeHost.js +48 -1
  69. package/dist/commands/watcherNativeHost.js.map +1 -1
  70. package/dist/skill/argus/SKILL.md +200 -0
  71. package/dist/skill/argus/reference/CAPTURE.md +77 -0
  72. package/dist/skill/argus/reference/DIALOG.md +31 -0
  73. package/dist/skill/argus/reference/EVAL.md +137 -0
  74. package/dist/skill/argus/reference/EXTENSION.md +38 -0
  75. package/dist/skill/argus/reference/EXTENSION_IFRAME_EVAL.md +58 -0
  76. package/dist/skill/argus/reference/IFRAMES.md +46 -0
  77. package/dist/skill/argus/reference/INJECT.md +145 -0
  78. package/dist/skill/argus/reference/INSPECT.md +175 -0
  79. package/dist/skill/argus/reference/NET.md +108 -0
  80. package/dist/skill/argus/reference/PLUGINS.md +172 -0
  81. package/dist/skill/argus/reference/RUNTIME_CODE.md +42 -0
  82. package/dist/skill/argus/reference/START.md +120 -0
  83. package/dist/skill/argus/start-watcher.ts +108 -0
  84. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"pluginHost.d.ts","sourceRoot":"","sources":["../../../src/cli/plugins/pluginHost.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkD,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AA2BjH,eAAO,MAAM,gBAAgB,QAAO,iBAOlC,CAAA"}
1
+ {"version":3,"file":"pluginHost.d.ts","sourceRoot":"","sources":["../../../src/cli/plugins/pluginHost.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkD,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AA4BjH,eAAO,MAAM,gBAAgB,QAAO,iBAOlC,CAAA"}
@@ -14,6 +14,7 @@ const argus = {
14
14
  eval: (id, request, options) => postWatcherJson(id, '/eval', request, options?.timeoutMs ?? request.timeoutMs ?? DEFAULT_TIMEOUT_MS),
15
15
  dom: {
16
16
  click: (id, request, options) => postWatcherJson(id, '/dom/click', request, options?.timeoutMs),
17
+ drag: (id, request, options) => postWatcherJson(id, '/dom/drag', request, options?.timeoutMs),
17
18
  info: (id, request, options) => postWatcherJson(id, '/dom/info', request, options?.timeoutMs),
18
19
  keydown: (id, request, options) => postWatcherJson(id, '/dom/keydown', request, options?.timeoutMs),
19
20
  },
@@ -1 +1 @@
1
- {"version":3,"file":"pluginHost.js","sourceRoot":"","sources":["../../../src/cli/plugins/pluginHost.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AAExF,MAAM,kBAAkB,GAAG,MAAM,CAAA;AAEjC,MAAM,eAAe,GAAG,CAAI,EAAsB,EAAE,IAAY,EAAE,IAAa,EAAE,SAAS,GAAG,kBAAkB,EAAE,EAAE,CAClH,kBAAkB,CAAI;IACrB,EAAE;IACF,IAAI;IACJ,MAAM,EAAE,MAAM;IACd,IAAI;IACJ,SAAS;CACT,CAAC,CAAA;AAEH,MAAM,KAAK,GAAwB;IAClC,IAAI,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,IAAI,OAAO,CAAC,SAAS,IAAI,kBAAkB,CAAC;IACpI,GAAG,EAAE;QACJ,KAAK,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC;QAC/F,IAAI,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC;QAC7F,OAAO,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC;KACnG;IACD,UAAU,EAAE,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC;CAC1G,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAsB,EAAE,CAAC,CAAC;IACzD,YAAY;IACZ,kBAAkB;IAClB,iBAAiB;IACjB,aAAa;IACb,oBAAoB,EAAE,oBAAiD;IACvE,KAAK;CACL,CAAC,CAAA"}
1
+ {"version":3,"file":"pluginHost.js","sourceRoot":"","sources":["../../../src/cli/plugins/pluginHost.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AAExF,MAAM,kBAAkB,GAAG,MAAM,CAAA;AAEjC,MAAM,eAAe,GAAG,CAAI,EAAsB,EAAE,IAAY,EAAE,IAAa,EAAE,SAAS,GAAG,kBAAkB,EAAE,EAAE,CAClH,kBAAkB,CAAI;IACrB,EAAE;IACF,IAAI;IACJ,MAAM,EAAE,MAAM;IACd,IAAI;IACJ,SAAS;CACT,CAAC,CAAA;AAEH,MAAM,KAAK,GAAwB;IAClC,IAAI,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,IAAI,OAAO,CAAC,SAAS,IAAI,kBAAkB,CAAC;IACpI,GAAG,EAAE;QACJ,KAAK,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC;QAC/F,IAAI,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC;QAC7F,IAAI,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC;QAC7F,OAAO,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC;KACnG;IACD,UAAU,EAAE,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC;CAC1G,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAsB,EAAE,CAAC,CAAC;IACzD,YAAY;IACZ,kBAAkB;IAClB,iBAAiB;IACjB,aAAa;IACb,oBAAoB,EAAE,oBAAiD;IACvE,KAAK;CACL,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"extensionCommands.d.ts","sourceRoot":"","sources":["../../../src/cli/register/extensionCommands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AA0BjE,eAAO,MAAM,iBAAiB,EAAE,SAAS,sBAAsB,EAkG9D,CAAA"}
1
+ {"version":3,"file":"extensionCommands.d.ts","sourceRoot":"","sources":["../../../src/cli/register/extensionCommands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AA2DjE,eAAO,MAAM,iBAAiB,EAAE,SAAS,sBAAsB,EAwK9D,CAAA"}
@@ -5,6 +5,10 @@ import { runExtensionInfo } from '../../commands/extension/info.js';
5
5
  import { runExtensionTabs } from '../../commands/extension/tabs.js';
6
6
  import { runExtensionAttach, runExtensionDetach } from '../../commands/extension/attach.js';
7
7
  import { runExtensionShow } from '../../commands/extension/show.js';
8
+ import { runExtensionUse } from '../../commands/extension/use.js';
9
+ import { runExtensionDoctor } from '../../commands/extension/doctor.js';
10
+ import { runExtensionTargets } from '../../commands/extension/targets.js';
11
+ import { runExtensionSelect } from '../../commands/extension/select.js';
8
12
  const jsonOption = { flags: '--json', description: 'Output JSON for automation' };
9
13
  const tabTargetOptions = [
10
14
  { flags: '--tab <tabId>', description: 'Browser tab id' },
@@ -16,9 +20,35 @@ const attachTargetOptions = [
16
20
  { flags: '--tab <tabId>', description: 'Browser tab id' },
17
21
  { flags: '--url <substring>', description: 'Resolve tab by URL substring' },
18
22
  { flags: '--title <substring>', description: 'Resolve tab by title substring' },
23
+ { flags: '--as <watcherId>', description: 'Start the tab watcher with a stable id' },
24
+ { flags: '--no-wait', description: 'Return after the extension acknowledges the attach request' },
19
25
  { flags: '--show', description: 'After attaching, lock the tab shown+focused' },
20
26
  jsonOption,
21
27
  ];
28
+ const useTargetOptions = [
29
+ { flags: '--tab <tabId>', description: 'Browser tab id' },
30
+ { flags: '--url <substring>', description: 'Resolve tab by URL substring' },
31
+ { flags: '--title <substring>', description: 'Resolve tab by title substring' },
32
+ { flags: '--as <watcherId>', description: 'Start the tab watcher with a stable id when attaching' },
33
+ { flags: '--iframe <mode>', description: 'Select an iframe after attaching (currently: auto)' },
34
+ { flags: '--iframe-url <substring>', description: 'Select iframe by URL substring after attaching' },
35
+ { flags: '--iframe-title <substring>', description: 'Select iframe by title substring after attaching' },
36
+ { flags: '--show', description: 'Lock the resolved watcher shown+focused' },
37
+ jsonOption,
38
+ ];
39
+ const iframeTargetOptions = [
40
+ { flags: '--page', description: 'Select the top page target' },
41
+ { flags: '--iframe <mode>', description: 'Select an iframe target (currently: auto)' },
42
+ { flags: '--iframe-url <substring>', description: 'Select iframe by URL substring' },
43
+ { flags: '--iframe-title <substring>', description: 'Select iframe by title substring' },
44
+ ];
45
+ const showTargetOptions = [
46
+ { flags: '--tab <tabId>', description: 'Browser tab id' },
47
+ { flags: '--url <substring>', description: 'Resolve tab by URL substring' },
48
+ { flags: '--title <substring>', description: 'Resolve tab by title substring' },
49
+ { flags: '--as <watcherId>', description: 'Start the tab watcher with a stable id when attaching' },
50
+ jsonOption,
51
+ ];
22
52
  export const extensionCommands = [
23
53
  {
24
54
  name: 'extension',
@@ -52,6 +82,15 @@ export const extensionCommands = [
52
82
  await runExtensionStatus(options);
53
83
  },
54
84
  },
85
+ {
86
+ name: 'doctor',
87
+ description: 'Diagnose native host and live extension-control state',
88
+ options: [{ flags: '--watcher <watcherId>', description: 'Include diagnostics for one extension-backed watcher' }, jsonOption],
89
+ examples: ['argus ext doctor', 'argus ext doctor --watcher vk-game', 'argus ext doctor --json'],
90
+ action: async (options) => {
91
+ await runExtensionDoctor(options);
92
+ },
93
+ },
55
94
  {
56
95
  name: 'info',
57
96
  description: 'Show native messaging host paths and configuration',
@@ -81,13 +120,74 @@ export const extensionCommands = [
81
120
  },
82
121
  {
83
122
  name: 'attach',
84
- description: 'Ask the extension control watcher to attach a browser tab',
123
+ description: 'Attach a browser tab through the extension control watcher',
85
124
  options: attachTargetOptions,
86
- examples: ['argus ext attach --tab 123', 'argus ext attach --url localhost --show', 'argus ext attach --title Docs --json'],
125
+ examples: [
126
+ 'argus ext attach --tab 123',
127
+ 'argus ext attach --url localhost --as app',
128
+ 'argus ext attach --url localhost --show',
129
+ 'argus ext attach --title Docs --no-wait --json',
130
+ ],
87
131
  action: async (options) => {
88
132
  await runExtensionAttach(options);
89
133
  },
90
134
  },
135
+ {
136
+ name: 'use',
137
+ description: 'Resolve or attach an extension tab and print its watcher id',
138
+ options: useTargetOptions,
139
+ examples: [
140
+ 'argus ext use --url localhost --as app',
141
+ 'argus ext use --url vk.com/app --as vk-game --iframe-url stark.games',
142
+ 'argus ext use --url vk.com/app --as vk-game --iframe auto',
143
+ 'argus ext use --title Docs --show',
144
+ 'argus ext use --tab 123 --json',
145
+ ],
146
+ action: async (options) => {
147
+ await runExtensionUse(options);
148
+ },
149
+ },
150
+ {
151
+ name: 'targets',
152
+ description: 'List page and iframe targets for an extension tab watcher',
153
+ arguments: [{ flags: '[id]', description: 'Attached extension watcher id' }],
154
+ options: [
155
+ { flags: '--tab <tabId>', description: 'Browser tab id' },
156
+ { flags: '--url <substring>', description: 'Resolve tab by URL substring' },
157
+ { flags: '--title <substring>', description: 'Resolve tab by title substring' },
158
+ { flags: '--as <watcherId>', description: 'Stable id to use if the tab must be attached first' },
159
+ { flags: '--type <type>', description: 'Filter targets by type, e.g. page or iframe' },
160
+ { flags: '--tree', description: 'Print targets as a parent/child tree' },
161
+ jsonOption,
162
+ ],
163
+ examples: [
164
+ 'argus ext targets vk-game --tree',
165
+ 'argus ext targets --url vk.com/app --as vk-game',
166
+ 'argus ext targets --tab 123 --type iframe --json',
167
+ ],
168
+ action: async (id, options) => {
169
+ await runExtensionTargets(id, options);
170
+ },
171
+ },
172
+ {
173
+ name: 'select',
174
+ description: 'Select the page or an iframe target inside an extension tab watcher',
175
+ arguments: [{ flags: '[id]', description: 'Attached extension watcher id' }],
176
+ options: [
177
+ ...iframeTargetOptions,
178
+ { flags: '--no-wait', description: 'Return after the extension acknowledges the target switch' },
179
+ jsonOption,
180
+ ],
181
+ examples: [
182
+ 'argus ext select vk-game --iframe-url stark.games',
183
+ 'argus ext select vk-game --iframe-title "Ёлочка 2025"',
184
+ 'argus ext select vk-game --iframe auto',
185
+ 'argus ext select vk-game --page',
186
+ ],
187
+ action: async (id, options) => {
188
+ await runExtensionSelect(id, options);
189
+ },
190
+ },
91
191
  {
92
192
  name: 'detach',
93
193
  description: 'Ask the extension control watcher to detach a browser tab',
@@ -101,7 +201,7 @@ export const extensionCommands = [
101
201
  name: 'show',
102
202
  description: 'Attach or resolve an extension tab and lock it shown+focused',
103
203
  arguments: [{ flags: '[id]', description: 'Attached extension watcher id' }],
104
- options: tabTargetOptions,
204
+ options: showTargetOptions,
105
205
  configure: (command) => {
106
206
  command.addHelpText('after', '\nExamples:\n $ argus ext show extension\n $ argus ext show --tab 123\n $ argus ext show --url localhost\n $ argus ext show --title "Cocos Creator" --json\n\nWith --tab/--url/--title, attaches the tab first if needed, then applies the\nsame sticky shown+focused lock as `argus page show <watcherId>`.\n');
107
207
  },
@@ -1 +1 @@
1
- {"version":3,"file":"extensionCommands.js","sourceRoot":"","sources":["../../../src/cli/register/extensionCommands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extensionCommands.js","sourceRoot":"","sources":["../../../src/cli/register/extensionCommands.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/register/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA4BxC,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;AA8BzD,eAAO,MAAM,qBAAqB,EAAE,SAAS,gBAAgB,EAAmE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/register/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA+BxC,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;AAiCzD,eAAO,MAAM,qBAAqB,EAAE,SAAS,gBAAgB,EAAmE,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import { defineCommands } from '../defineCommand.js';
2
2
  import { domClickCommandDefinition } from '../../commands/domClick.js';
3
+ import { domDragCommandDefinition } from '../../commands/domDrag.js';
3
4
  import { quickAccessCommands } from './quickAccessCommands.js';
4
5
  import { chromeCommands } from './chromeCommands.js';
5
6
  import { watcherCommands } from './watcherCommands.js';
@@ -19,10 +20,12 @@ import { scrollToCommand } from './scrollToCommand.js';
19
20
  import { storageCommands } from './storageCommands.js';
20
21
  import { throttleCommands } from './throttleCommands.js';
21
22
  import { snapshotCommands } from './snapshotCommands.js';
23
+ import { recordCommands } from './recordCommands.js';
22
24
  import { traceCommands } from './traceCommands.js';
23
25
  import { configCommands } from './configCommands.js';
24
26
  import { pluginCommands } from './pluginCommands.js';
25
27
  import { extensionCommands } from './extensionCommands.js';
28
+ import { skillCommands } from './skillCommands.js';
26
29
  /** All built-in CLI commands, in registration (help display) order. */
27
30
  const coreCommandDefinitions = [
28
31
  ...quickAccessCommands,
@@ -38,6 +41,7 @@ const coreCommandDefinitions = [
38
41
  ...codeCommands,
39
42
  ...domCommands,
40
43
  domClickCommandDefinition,
44
+ domDragCommandDefinition,
41
45
  keydownCommand,
42
46
  fillCommand,
43
47
  hoverCommand,
@@ -45,9 +49,11 @@ const coreCommandDefinitions = [
45
49
  ...storageCommands,
46
50
  ...throttleCommands,
47
51
  ...snapshotCommands,
52
+ ...recordCommands,
48
53
  ...traceCommands,
49
54
  ...configCommands,
50
55
  ...pluginCommands,
56
+ ...skillCommands,
51
57
  ...extensionCommands,
52
58
  ];
53
59
  export const coreProgramRegistrars = [(program) => defineCommands(program, coreCommandDefinitions)];
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/register/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAA;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAI1D,uEAAuE;AACvE,MAAM,sBAAsB,GAAsC;IACjE,GAAG,mBAAmB;IACtB,GAAG,cAAc;IACjB,GAAG,eAAe;IAClB,GAAG,YAAY;IACf,GAAG,cAAc;IACjB,GAAG,YAAY;IACf,GAAG,WAAW;IACd,GAAG,YAAY;IACf,GAAG,YAAY;IACf,GAAG,cAAc;IACjB,GAAG,YAAY;IACf,GAAG,WAAW;IACd,yBAAyB;IACzB,cAAc;IACd,WAAW;IACX,YAAY;IACZ,eAAe;IACf,GAAG,eAAe;IAClB,GAAG,gBAAgB;IACnB,GAAG,gBAAgB;IACnB,GAAG,aAAa;IAChB,GAAG,cAAc;IACjB,GAAG,cAAc;IACjB,GAAG,iBAAiB;CACpB,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAgC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/register/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAA;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAIlD,uEAAuE;AACvE,MAAM,sBAAsB,GAAsC;IACjE,GAAG,mBAAmB;IACtB,GAAG,cAAc;IACjB,GAAG,eAAe;IAClB,GAAG,YAAY;IACf,GAAG,cAAc;IACjB,GAAG,YAAY;IACf,GAAG,WAAW;IACd,GAAG,YAAY;IACf,GAAG,YAAY;IACf,GAAG,cAAc;IACjB,GAAG,YAAY;IACf,GAAG,WAAW;IACd,yBAAyB;IACzB,wBAAwB;IACxB,cAAc;IACd,WAAW;IACX,YAAY;IACZ,eAAe;IACf,GAAG,eAAe;IAClB,GAAG,gBAAgB;IACnB,GAAG,gBAAgB;IACnB,GAAG,cAAc;IACjB,GAAG,aAAa;IAChB,GAAG,cAAc;IACjB,GAAG,cAAc;IACjB,GAAG,aAAa;IAChB,GAAG,iBAAiB;CACpB,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAgC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { ArgusCommandDefinition } from '../defineCommand.js';
2
+ export declare const recordCommands: readonly ArgusCommandDefinition[];
3
+ //# sourceMappingURL=recordCommands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recordCommands.d.ts","sourceRoot":"","sources":["../../../src/cli/register/recordCommands.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAKjE,eAAO,MAAM,cAAc,EAAE,SAAS,sBAAsB,EA+D3D,CAAA"}
@@ -0,0 +1,90 @@
1
+ import { resolveTestId } from '../../commands/resolveTestId.js';
2
+ import { runRecord, runRecordStart, runRecordStop } from '../../commands/record.js';
3
+ export const recordCommands = [
4
+ {
5
+ name: 'record',
6
+ description: 'Capture a silent video recording to disk on the watcher',
7
+ arguments: [{ flags: '[id]', description: 'Watcher id to query' }],
8
+ options: [
9
+ { flags: '--duration <duration>', description: 'Capture for duration (e.g. 3s, 500ms)' },
10
+ { flags: '--out <file>', description: 'Output .mp4 or .webm path (absolute or relative to artifacts directory)' },
11
+ { flags: '--selector <selector>', description: 'Optional CSS selector for element-only recording' },
12
+ { flags: '--clip <x,y,width,height>', description: 'Viewport-relative rectangle crop in CSS pixels' },
13
+ { flags: '--testid <id>', description: 'Shorthand for --selector "[data-testid=\'<id>\']"' },
14
+ { flags: '--fps <n>', description: 'Output frames per second (1-60, default 30)' },
15
+ { flags: '--format <format>', description: 'Output format: mp4 or webm (default mp4, inferred from --out extension)' },
16
+ { flags: '--json', description: 'Output JSON for automation' },
17
+ ],
18
+ examples: [
19
+ 'argus record app --duration 5s --out demo.mp4',
20
+ 'argus record app --duration 3s --selector "canvas" --out canvas.mp4',
21
+ 'argus record app --duration 3s --clip 100,80,640,360 --out crop.mp4',
22
+ 'argus record app --duration 3s --format webm --out canvas.webm',
23
+ ],
24
+ action: async (id, options, command) => {
25
+ const resolved = resolveActionOptions(options, command);
26
+ if (!resolveTestId(resolved))
27
+ return;
28
+ await runRecord(id, resolved);
29
+ },
30
+ subcommands: [
31
+ {
32
+ name: 'start',
33
+ description: 'Start a silent video recording',
34
+ arguments: [{ flags: '[id]', description: 'Watcher id to query' }],
35
+ options: [
36
+ { flags: '--out <file>', description: 'Output .mp4 or .webm path (absolute or relative to artifacts directory)' },
37
+ { flags: '--selector <selector>', description: 'Optional CSS selector for element-only recording' },
38
+ { flags: '--clip <x,y,width,height>', description: 'Viewport-relative rectangle crop in CSS pixels' },
39
+ { flags: '--testid <id>', description: 'Shorthand for --selector "[data-testid=\'<id>\']"' },
40
+ { flags: '--fps <n>', description: 'Output frames per second (1-60, default 30)' },
41
+ { flags: '--format <format>', description: 'Output format: mp4 or webm (default mp4, inferred from --out extension)' },
42
+ { flags: '--json', description: 'Output JSON for automation' },
43
+ ],
44
+ examples: ['argus record start app --selector "canvas" --out canvas.mp4'],
45
+ action: async (id, options, command) => {
46
+ const resolved = resolveActionOptions(options, command);
47
+ if (!resolveTestId(resolved))
48
+ return;
49
+ await runRecordStart(id, resolved);
50
+ },
51
+ },
52
+ {
53
+ name: 'stop',
54
+ description: 'Stop the active video recording',
55
+ arguments: [{ flags: '[id]', description: 'Watcher id to query' }],
56
+ options: [
57
+ { flags: '--record-id <id>', description: 'Record id returned from start' },
58
+ { flags: '--out <file>', description: 'Move the saved recording to this .mp4 or .webm path before returning' },
59
+ { flags: '--json', description: 'Output JSON for automation' },
60
+ ],
61
+ examples: ['argus record stop app', 'argus record stop app --out demo.mp4 --json'],
62
+ action: async (id, options, command) => {
63
+ await runRecordStop(id, resolveActionOptions(options, command));
64
+ },
65
+ },
66
+ ],
67
+ },
68
+ ];
69
+ /**
70
+ * `record` is both a command and a subcommand parent, so Commander may pass
71
+ * either (options, command) or just the command. Merge parent + own opts.
72
+ */
73
+ function resolveActionOptions(options, command) {
74
+ const maybeCommand = options;
75
+ if (typeof maybeCommand?.opts === 'function') {
76
+ return {
77
+ ...(typeof maybeCommand.parent?.opts === 'function' ? maybeCommand.parent.opts() : {}),
78
+ ...maybeCommand.opts(),
79
+ };
80
+ }
81
+ if (typeof command?.opts === 'function') {
82
+ return {
83
+ ...(typeof command.parent?.opts === 'function' ? command.parent.opts() : {}),
84
+ ...command.opts(),
85
+ ...options,
86
+ };
87
+ }
88
+ return options;
89
+ }
90
+ //# sourceMappingURL=recordCommands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recordCommands.js","sourceRoot":"","sources":["../../../src/cli/register/recordCommands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ArgusCommandDefinition } from '../defineCommand.js';
2
+ export declare const skillCommands: readonly ArgusCommandDefinition[];
3
+ //# sourceMappingURL=skillCommands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillCommands.d.ts","sourceRoot":"","sources":["../../../src/cli/register/skillCommands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAGjE,eAAO,MAAM,aAAa,EAAE,SAAS,sBAAsB,EAU1D,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { runSkill } from '../../commands/skill.js';
2
+ export const skillCommands = [
3
+ {
4
+ name: 'skill',
5
+ description: 'Print the absolute path to the packaged Argus skill file',
6
+ options: [{ flags: '--json', description: 'Output JSON for automation' }],
7
+ examples: ['argus skill', 'argus skill --json'],
8
+ action: (options) => {
9
+ runSkill(options);
10
+ },
11
+ },
12
+ ];
13
+ //# sourceMappingURL=skillCommands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillCommands.js","sourceRoot":"","sources":["../../../src/cli/register/skillCommands.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAElD,MAAM,CAAC,MAAM,aAAa,GAAsC;IAC/D;QACC,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,0DAA0D;QACvE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE,CAAC;QACzE,QAAQ,EAAE,CAAC,aAAa,EAAE,oBAAoB,CAAC;QAC/C,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE;YACnB,QAAQ,CAAC,OAAO,CAAC,CAAA;QAClB,CAAC;KACD;CACD,CAAA"}
@@ -0,0 +1,21 @@
1
+ import type { ArgusCommandDefinition } from '../cli/defineCommand.js';
2
+ /** Options for the drag command. */
3
+ export type DomDragOptions = {
4
+ selector?: string;
5
+ ref?: string;
6
+ pos?: string;
7
+ to?: string;
8
+ by?: string;
9
+ button?: string;
10
+ duration?: string;
11
+ steps?: string;
12
+ all?: boolean;
13
+ text?: string;
14
+ wait?: string;
15
+ json?: boolean;
16
+ };
17
+ /** CLI definition for the top-level `argus drag` command. */
18
+ export declare const domDragCommandDefinition: ArgusCommandDefinition;
19
+ /** Execute the drag command for a watcher id. */
20
+ export declare const runDomDrag: import("../cli/defineWatcherCommand.js").WatcherCommandRunner<[], DomDragOptions>;
21
+ //# sourceMappingURL=domDrag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domDrag.d.ts","sourceRoot":"","sources":["../../src/commands/domDrag.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAOrE,oCAAoC;AACpC,MAAM,MAAM,cAAc,GAAG;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAED,6DAA6D;AAC7D,eAAO,MAAM,wBAAwB,EAAE,sBA6BtC,CAAA;AAED,iDAAiD;AACjD,eAAO,MAAM,UAAU,mFAmBrB,CAAA"}
@@ -0,0 +1,179 @@
1
+ import { domDragRequestSchema } from '@vforsh/argus-core';
2
+ import { defineWatcherCommand } from '../cli/defineWatcherCommand.js';
3
+ import { parseDurationMs } from '../time.js';
4
+ import { describeElementTarget, parseWaitDuration, parseXY, requireElementTarget, writeNoElementFound } from './dom/shared.js';
5
+ import { resolveTestId } from './resolveTestId.js';
6
+ /** CLI definition for the top-level `argus drag` command. */
7
+ export const domDragCommandDefinition = {
8
+ name: 'drag',
9
+ description: 'Drag from coordinates or an element using real browser mouse input',
10
+ arguments: [{ flags: '[id]', description: 'Watcher id to query' }],
11
+ options: [
12
+ { flags: '--selector <css>', description: 'CSS selector to drag from' },
13
+ { flags: '--testid <id>', description: 'Shorthand for --selector "[data-testid=\'<id>\']"' },
14
+ { flags: '--ref <elementRef>', description: 'Stable element ref from snapshot/locate output' },
15
+ { flags: '--pos <x,y>', description: 'Viewport start coordinates or offset from element top-left' },
16
+ { flags: '--to <x,y>', description: 'Absolute viewport destination' },
17
+ { flags: '--by <dx,dy>', description: 'Destination delta from the resolved start point' },
18
+ { flags: '--button <type>', description: 'Mouse button: left, middle, right (default: left)' },
19
+ { flags: '--duration <duration>', description: 'Total drag duration (default: 250ms)' },
20
+ { flags: '--steps <n>', description: 'Number of mousemove steps (default: 12)' },
21
+ { flags: '--all', description: 'Allow multiple matches (default: error if >1 match)' },
22
+ { flags: '--text <string>', description: 'Filter by textContent (trimmed). Supports /regex/flags syntax' },
23
+ { flags: '--wait <duration>', description: 'Wait for selector to appear (e.g. 5s, 500ms)' },
24
+ { flags: '--json', description: 'Output JSON for automation' },
25
+ ],
26
+ examples: [
27
+ 'argus drag app --pos 200,300 --to 500,300',
28
+ 'argus drag app --selector "#piece" --by 120,0',
29
+ 'argus drag app --selector "canvas" --pos 320,240 --by 80,-30',
30
+ 'argus drag app --ref e7 --by 0,-180 --duration 600ms --steps 30',
31
+ ],
32
+ action: async (id, options) => {
33
+ if (!resolveTestId(options))
34
+ return;
35
+ await runDomDrag(id, options);
36
+ },
37
+ };
38
+ /** Execute the drag command for a watcher id. */
39
+ export const runDomDrag = defineWatcherCommand({
40
+ schema: domDragRequestSchema,
41
+ build: (_args, options, output) => buildDragPlan(options, output),
42
+ formatHuman: (response, { output, options }) => {
43
+ const target = hasElementTarget(options) ? { selector: options.selector, ref: options.ref } : null;
44
+ const start = options.pos ? parseXY(options.pos) : null;
45
+ if (!target) {
46
+ output.writeHuman(`Dragged from (${start?.x}, ${start?.y}) ${formatDestination(options)}`);
47
+ return;
48
+ }
49
+ if (response.matches === 0) {
50
+ writeNoElementFound(target.selector ?? target.ref, output);
51
+ return;
52
+ }
53
+ const label = response.dragged === 1 ? 'element' : 'elements';
54
+ const offset = start ? ` from offset (${start.x}, ${start.y})` : '';
55
+ output.writeHuman(`Dragged ${response.dragged} ${label} for ${describeElementTarget(target)}${offset} ${formatDestination(options)}`);
56
+ },
57
+ });
58
+ const hasElementTarget = (options) => Boolean(options.selector?.trim() || options.ref?.trim());
59
+ /** Validate options and assemble the `/dom/drag` request plan. */
60
+ const buildDragPlan = (options, output) => {
61
+ const hasTarget = hasElementTarget(options);
62
+ const target = hasTarget ? requireElementTarget({ selector: options.selector, ref: options.ref }, output) : null;
63
+ if (hasTarget && !target)
64
+ return null;
65
+ const start = options.pos != null ? parseXY(options.pos) : undefined;
66
+ if (options.pos != null && !start) {
67
+ output.writeWarn('--pos must be in the format "x,y" (e.g. --pos 100,200)');
68
+ process.exitCode = 2;
69
+ return null;
70
+ }
71
+ if (!target && !start) {
72
+ output.writeWarn('--selector, --testid, --ref, or --pos is required');
73
+ process.exitCode = 2;
74
+ return null;
75
+ }
76
+ const destination = parseDestination(options, output);
77
+ if (!destination)
78
+ return null;
79
+ const waitMs = parseWaitDuration(options.wait, output);
80
+ if (waitMs == null)
81
+ return null;
82
+ const durationMs = parseOptionalDuration(options.duration, output);
83
+ if (durationMs == null)
84
+ return null;
85
+ const steps = parseOptionalSteps(options.steps, output);
86
+ if (steps == null)
87
+ return null;
88
+ const body = {};
89
+ if (target) {
90
+ if (target.selector)
91
+ body.selector = target.selector;
92
+ if (target.ref)
93
+ body.ref = target.ref;
94
+ body.all = options.all ?? false;
95
+ if (options.text != null)
96
+ body.text = options.text;
97
+ }
98
+ if (start) {
99
+ body.x = start.x;
100
+ body.y = start.y;
101
+ }
102
+ if ('to' in destination)
103
+ body.to = destination.to;
104
+ if ('delta' in destination)
105
+ body.delta = destination.delta;
106
+ if (options.button)
107
+ body.button = options.button;
108
+ if (waitMs > 0)
109
+ body.wait = waitMs;
110
+ if (durationMs !== undefined)
111
+ body.duration = durationMs;
112
+ if (steps !== undefined)
113
+ body.steps = steps;
114
+ return {
115
+ path: '/dom/drag',
116
+ method: 'POST',
117
+ body,
118
+ timeoutMs: Math.max(30_000, waitMs + (durationMs ?? 250) + 5_000),
119
+ };
120
+ };
121
+ const parseDestination = (options, output) => {
122
+ const hasTo = options.to != null;
123
+ const hasBy = options.by != null;
124
+ if (hasTo === hasBy) {
125
+ output.writeWarn('Provide exactly one of --to or --by');
126
+ process.exitCode = 2;
127
+ return null;
128
+ }
129
+ if (hasTo) {
130
+ const to = parseXY(options.to);
131
+ if (!to) {
132
+ output.writeWarn('--to must be in the format "x,y" (e.g. --to 500,300)');
133
+ process.exitCode = 2;
134
+ return null;
135
+ }
136
+ return { to };
137
+ }
138
+ const delta = parseXY(options.by);
139
+ if (!delta) {
140
+ output.writeWarn('--by must be in the format "dx,dy" (e.g. --by 120,0)');
141
+ process.exitCode = 2;
142
+ return null;
143
+ }
144
+ return { delta };
145
+ };
146
+ const parseOptionalDuration = (value, output) => {
147
+ if (value == null)
148
+ return undefined;
149
+ const parsed = parseDurationMs(value);
150
+ if (parsed == null || parsed < 0) {
151
+ output.writeWarn('Invalid --duration value: expected a duration like 250ms, 1s, 2m.');
152
+ process.exitCode = 2;
153
+ return null;
154
+ }
155
+ return parsed;
156
+ };
157
+ const parseOptionalSteps = (value, output) => {
158
+ if (value == null)
159
+ return undefined;
160
+ const parsed = Number(value);
161
+ if (!Number.isInteger(parsed) || parsed < 1) {
162
+ output.writeWarn('--steps must be a positive integer');
163
+ process.exitCode = 2;
164
+ return null;
165
+ }
166
+ return parsed;
167
+ };
168
+ const formatDestination = (options) => {
169
+ const to = options.to ? parseXY(options.to) : null;
170
+ if (to) {
171
+ return `to (${to.x}, ${to.y})`;
172
+ }
173
+ const delta = options.by ? parseXY(options.by) : null;
174
+ if (delta) {
175
+ return `by (${delta.x}, ${delta.y})`;
176
+ }
177
+ return '';
178
+ };
179
+ //# sourceMappingURL=domDrag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domDrag.js","sourceRoot":"","sources":["../../src/commands/domDrag.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,8 @@ type ExtensionTabActionOptions = {
6
6
  tab?: string | number;
7
7
  url?: string;
8
8
  title?: string;
9
+ as?: string;
10
+ wait?: boolean;
9
11
  json?: boolean;
10
12
  };
11
13
  export declare const runExtensionAttach: (options: ExtensionAttachOptions) => Promise<void>;