@vforsh/argus 0.1.16 → 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 (375) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/argus.js +14994 -10474
  3. package/dist/cli/defineCommand.d.ts +3 -0
  4. package/dist/cli/defineCommand.d.ts.map +1 -1
  5. package/dist/cli/defineCommand.js +11 -0
  6. package/dist/cli/defineCommand.js.map +1 -1
  7. package/dist/cli/plugins/pluginHost.d.ts.map +1 -1
  8. package/dist/cli/plugins/pluginHost.js +1 -0
  9. package/dist/cli/plugins/pluginHost.js.map +1 -1
  10. package/dist/cli/plugins/registerPlugins.d.ts +3 -1
  11. package/dist/cli/plugins/registerPlugins.d.ts.map +1 -1
  12. package/dist/cli/plugins/registerPlugins.js +31 -12
  13. package/dist/cli/plugins/registerPlugins.js.map +1 -1
  14. package/dist/cli/register/authCommands.d.ts +3 -0
  15. package/dist/cli/register/authCommands.d.ts.map +1 -0
  16. package/dist/cli/register/authCommands.js +230 -0
  17. package/dist/cli/register/authCommands.js.map +1 -0
  18. package/dist/cli/register/chromeCommands.d.ts +3 -0
  19. package/dist/cli/register/chromeCommands.d.ts.map +1 -0
  20. package/dist/cli/register/chromeCommands.js +153 -0
  21. package/dist/cli/register/chromeCommands.js.map +1 -0
  22. package/dist/cli/register/codeCommands.d.ts +3 -0
  23. package/dist/cli/register/codeCommands.d.ts.map +1 -0
  24. package/dist/cli/register/codeCommands.js +116 -0
  25. package/dist/cli/register/codeCommands.js.map +1 -0
  26. package/dist/cli/register/configCommands.d.ts +3 -0
  27. package/dist/cli/register/configCommands.d.ts.map +1 -0
  28. package/dist/cli/register/configCommands.js +23 -0
  29. package/dist/cli/register/configCommands.js.map +1 -0
  30. package/dist/cli/register/dialogCommands.d.ts +3 -0
  31. package/dist/cli/register/dialogCommands.d.ts.map +1 -0
  32. package/dist/cli/register/dialogCommands.js +52 -0
  33. package/dist/cli/register/dialogCommands.js.map +1 -0
  34. package/dist/cli/register/domCommandBuilder.d.ts +7 -5
  35. package/dist/cli/register/domCommandBuilder.d.ts.map +1 -1
  36. package/dist/cli/register/domCommandBuilder.js +28 -23
  37. package/dist/cli/register/domCommandBuilder.js.map +1 -1
  38. package/dist/cli/register/domCommands.d.ts +3 -0
  39. package/dist/cli/register/domCommands.d.ts.map +1 -0
  40. package/dist/cli/register/domCommands.js +318 -0
  41. package/dist/cli/register/domCommands.js.map +1 -0
  42. package/dist/cli/register/evalCommands.d.ts +3 -0
  43. package/dist/cli/register/evalCommands.d.ts.map +1 -0
  44. package/dist/cli/register/evalCommands.js +173 -0
  45. package/dist/cli/register/evalCommands.js.map +1 -0
  46. package/dist/cli/register/extensionCommands.d.ts +3 -0
  47. package/dist/cli/register/extensionCommands.d.ts.map +1 -0
  48. package/dist/cli/register/extensionCommands.js +215 -0
  49. package/dist/cli/register/extensionCommands.js.map +1 -0
  50. package/dist/cli/register/fillCommand.d.ts +3 -0
  51. package/dist/cli/register/fillCommand.d.ts.map +1 -0
  52. package/dist/cli/register/fillCommand.js +44 -0
  53. package/dist/cli/register/fillCommand.js.map +1 -0
  54. package/dist/cli/register/hoverCommand.d.ts +3 -0
  55. package/dist/cli/register/hoverCommand.d.ts.map +1 -0
  56. package/dist/cli/register/hoverCommand.js +27 -0
  57. package/dist/cli/register/hoverCommand.js.map +1 -0
  58. package/dist/cli/register/index.d.ts.map +1 -1
  59. package/dist/cli/register/index.js +57 -52
  60. package/dist/cli/register/index.js.map +1 -1
  61. package/dist/cli/register/keydownCommand.d.ts +3 -0
  62. package/dist/cli/register/keydownCommand.d.ts.map +1 -0
  63. package/dist/cli/register/keydownCommand.js +21 -0
  64. package/dist/cli/register/keydownCommand.js.map +1 -0
  65. package/dist/cli/register/locateCommands.d.ts +3 -0
  66. package/dist/cli/register/locateCommands.d.ts.map +1 -0
  67. package/dist/cli/register/locateCommands.js +60 -0
  68. package/dist/cli/register/locateCommands.js.map +1 -0
  69. package/dist/cli/register/logsCommands.d.ts +3 -0
  70. package/dist/cli/register/logsCommands.d.ts.map +1 -0
  71. package/dist/cli/register/logsCommands.js +67 -0
  72. package/dist/cli/register/logsCommands.js.map +1 -0
  73. package/dist/cli/register/netCommands.d.ts +3 -0
  74. package/dist/cli/register/netCommands.d.ts.map +1 -0
  75. package/dist/cli/register/netCommands.js +442 -0
  76. package/dist/cli/register/netCommands.js.map +1 -0
  77. package/dist/cli/register/pageCommands.d.ts +3 -0
  78. package/dist/cli/register/pageCommands.d.ts.map +1 -0
  79. package/dist/cli/register/pageCommands.js +188 -0
  80. package/dist/cli/register/pageCommands.js.map +1 -0
  81. package/dist/cli/register/pluginCommands.d.ts +3 -0
  82. package/dist/cli/register/pluginCommands.d.ts.map +1 -0
  83. package/dist/cli/register/pluginCommands.js +51 -0
  84. package/dist/cli/register/pluginCommands.js.map +1 -0
  85. package/dist/cli/register/quickAccessCommands.d.ts +3 -0
  86. package/dist/cli/register/quickAccessCommands.d.ts.map +1 -0
  87. package/dist/cli/register/quickAccessCommands.js +138 -0
  88. package/dist/cli/register/quickAccessCommands.js.map +1 -0
  89. package/dist/cli/register/recordCommands.d.ts +3 -0
  90. package/dist/cli/register/recordCommands.d.ts.map +1 -0
  91. package/dist/cli/register/recordCommands.js +90 -0
  92. package/dist/cli/register/recordCommands.js.map +1 -0
  93. package/dist/cli/register/scrollToCommand.d.ts +3 -0
  94. package/dist/cli/register/scrollToCommand.d.ts.map +1 -0
  95. package/dist/cli/register/scrollToCommand.js +30 -0
  96. package/dist/cli/register/scrollToCommand.js.map +1 -0
  97. package/dist/cli/register/skillCommands.d.ts +3 -0
  98. package/dist/cli/register/skillCommands.d.ts.map +1 -0
  99. package/dist/cli/register/skillCommands.js +13 -0
  100. package/dist/cli/register/skillCommands.js.map +1 -0
  101. package/dist/cli/register/snapshotCommands.d.ts +3 -0
  102. package/dist/cli/register/snapshotCommands.d.ts.map +1 -0
  103. package/dist/cli/register/snapshotCommands.js +57 -0
  104. package/dist/cli/register/snapshotCommands.js.map +1 -0
  105. package/dist/cli/register/storageCommands.d.ts +3 -0
  106. package/dist/cli/register/storageCommands.d.ts.map +1 -0
  107. package/dist/cli/register/storageCommands.js +78 -0
  108. package/dist/cli/register/storageCommands.js.map +1 -0
  109. package/dist/cli/register/throttleCommands.d.ts +3 -0
  110. package/dist/cli/register/throttleCommands.d.ts.map +1 -0
  111. package/dist/cli/register/throttleCommands.js +48 -0
  112. package/dist/cli/register/throttleCommands.js.map +1 -0
  113. package/dist/cli/register/traceCommands.d.ts +3 -0
  114. package/dist/cli/register/traceCommands.d.ts.map +1 -0
  115. package/dist/cli/register/traceCommands.js +72 -0
  116. package/dist/cli/register/traceCommands.js.map +1 -0
  117. package/dist/cli/register/watcherCommands.d.ts +3 -0
  118. package/dist/cli/register/watcherCommands.d.ts.map +1 -0
  119. package/dist/cli/register/watcherCommands.js +180 -0
  120. package/dist/cli/register/watcherCommands.js.map +1 -0
  121. package/dist/commands/auth.d.ts.map +1 -1
  122. package/dist/commands/auth.js.map +1 -1
  123. package/dist/commands/code.d.ts +2 -2
  124. package/dist/commands/code.d.ts.map +1 -1
  125. package/dist/commands/code.js +42 -45
  126. package/dist/commands/code.js.map +1 -1
  127. package/dist/commands/codeEdit.d.ts.map +1 -1
  128. package/dist/commands/codeEdit.js.map +1 -1
  129. package/dist/commands/domDrag.d.ts +21 -0
  130. package/dist/commands/domDrag.d.ts.map +1 -0
  131. package/dist/commands/domDrag.js +179 -0
  132. package/dist/commands/domDrag.js.map +1 -0
  133. package/dist/commands/eval.d.ts +9 -1
  134. package/dist/commands/eval.d.ts.map +1 -1
  135. package/dist/commands/eval.js +20 -10
  136. package/dist/commands/eval.js.map +1 -1
  137. package/dist/commands/evalArgs.d.ts +31 -0
  138. package/dist/commands/evalArgs.d.ts.map +1 -0
  139. package/dist/commands/evalArgs.js +103 -0
  140. package/dist/commands/evalArgs.js.map +1 -0
  141. package/dist/commands/evalBundle.d.ts +4 -5
  142. package/dist/commands/evalBundle.d.ts.map +1 -1
  143. package/dist/commands/evalBundle.js +88 -69
  144. package/dist/commands/evalBundle.js.map +1 -1
  145. package/dist/commands/evalModuleSyntax.d.ts +6 -0
  146. package/dist/commands/evalModuleSyntax.d.ts.map +1 -0
  147. package/dist/commands/evalModuleSyntax.js +33 -0
  148. package/dist/commands/evalModuleSyntax.js.map +1 -0
  149. package/dist/commands/evalPolling.d.ts +1 -1
  150. package/dist/commands/evalPolling.d.ts.map +1 -1
  151. package/dist/commands/evalPolling.js +1 -1
  152. package/dist/commands/evalPolling.js.map +1 -1
  153. package/dist/commands/evalResultOutput.d.ts +25 -0
  154. package/dist/commands/evalResultOutput.d.ts.map +1 -0
  155. package/dist/commands/evalResultOutput.js +85 -0
  156. package/dist/commands/evalResultOutput.js.map +1 -0
  157. package/dist/commands/evalShared.d.ts +42 -17
  158. package/dist/commands/evalShared.d.ts.map +1 -1
  159. package/dist/commands/evalShared.js +96 -53
  160. package/dist/commands/evalShared.js.map +1 -1
  161. package/dist/commands/evalUntil.d.ts +7 -1
  162. package/dist/commands/evalUntil.d.ts.map +1 -1
  163. package/dist/commands/evalUntil.js +16 -27
  164. package/dist/commands/evalUntil.js.map +1 -1
  165. package/dist/commands/extension/attach.d.ts +5 -1
  166. package/dist/commands/extension/attach.d.ts.map +1 -1
  167. package/dist/commands/extension/attach.js +44 -84
  168. package/dist/commands/extension/attach.js.map +1 -1
  169. package/dist/commands/extension/doctor.d.ts +6 -0
  170. package/dist/commands/extension/doctor.d.ts.map +1 -0
  171. package/dist/commands/extension/doctor.js +185 -0
  172. package/dist/commands/extension/doctor.js.map +1 -0
  173. package/dist/commands/extension/select.d.ts +7 -0
  174. package/dist/commands/extension/select.d.ts.map +1 -0
  175. package/dist/commands/extension/select.js +73 -0
  176. package/dist/commands/extension/select.js.map +1 -0
  177. package/dist/commands/extension/show.d.ts +16 -0
  178. package/dist/commands/extension/show.d.ts.map +1 -0
  179. package/dist/commands/extension/show.js +132 -0
  180. package/dist/commands/extension/show.js.map +1 -0
  181. package/dist/commands/extension/tabAttach.d.ts +28 -0
  182. package/dist/commands/extension/tabAttach.d.ts.map +1 -0
  183. package/dist/commands/extension/tabAttach.js +106 -0
  184. package/dist/commands/extension/tabAttach.js.map +1 -0
  185. package/dist/commands/extension/tabSelection.d.ts +45 -0
  186. package/dist/commands/extension/tabSelection.d.ts.map +1 -0
  187. package/dist/commands/extension/tabSelection.js +76 -0
  188. package/dist/commands/extension/tabSelection.js.map +1 -0
  189. package/dist/commands/extension/tabWatcher.d.ts +22 -0
  190. package/dist/commands/extension/tabWatcher.d.ts.map +1 -0
  191. package/dist/commands/extension/tabWatcher.js +89 -0
  192. package/dist/commands/extension/tabWatcher.js.map +1 -0
  193. package/dist/commands/extension/targetSelection.d.ts +62 -0
  194. package/dist/commands/extension/targetSelection.d.ts.map +1 -0
  195. package/dist/commands/extension/targetSelection.js +210 -0
  196. package/dist/commands/extension/targetSelection.js.map +1 -0
  197. package/dist/commands/extension/targets.d.ts +7 -0
  198. package/dist/commands/extension/targets.d.ts.map +1 -0
  199. package/dist/commands/extension/targets.js +73 -0
  200. package/dist/commands/extension/targets.js.map +1 -0
  201. package/dist/commands/extension/use.d.ts +13 -0
  202. package/dist/commands/extension/use.d.ts.map +1 -0
  203. package/dist/commands/extension/use.js +66 -0
  204. package/dist/commands/extension/use.js.map +1 -0
  205. package/dist/commands/locate.d.ts.map +1 -1
  206. package/dist/commands/locate.js.map +1 -1
  207. package/dist/commands/netMock.d.ts +34 -0
  208. package/dist/commands/netMock.d.ts.map +1 -0
  209. package/dist/commands/netMock.js +323 -0
  210. package/dist/commands/netMock.js.map +1 -0
  211. package/dist/commands/netSse.d.ts +1 -1
  212. package/dist/commands/netSse.d.ts.map +1 -1
  213. package/dist/commands/netSse.js +19 -23
  214. package/dist/commands/netSse.js.map +1 -1
  215. package/dist/commands/netWebSocket.d.ts +2 -2
  216. package/dist/commands/netWebSocket.d.ts.map +1 -1
  217. package/dist/commands/netWebSocket.js +42 -55
  218. package/dist/commands/netWebSocket.js.map +1 -1
  219. package/dist/commands/pluginConfig.d.ts +1 -0
  220. package/dist/commands/pluginConfig.d.ts.map +1 -1
  221. package/dist/commands/pluginConfig.js +12 -2
  222. package/dist/commands/pluginConfig.js.map +1 -1
  223. package/dist/commands/record.d.ts +35 -0
  224. package/dist/commands/record.d.ts.map +1 -0
  225. package/dist/commands/record.js +210 -0
  226. package/dist/commands/record.js.map +1 -0
  227. package/dist/commands/skill.d.ts +6 -0
  228. package/dist/commands/skill.d.ts.map +1 -0
  229. package/dist/commands/skill.js +42 -0
  230. package/dist/commands/skill.js.map +1 -0
  231. package/dist/commands/start.d.ts +2 -2
  232. package/dist/commands/start.d.ts.map +1 -1
  233. package/dist/commands/startShared.d.ts +1 -1
  234. package/dist/commands/startShared.d.ts.map +1 -1
  235. package/dist/commands/watcherNativeHost.js +48 -1
  236. package/dist/commands/watcherNativeHost.js.map +1 -1
  237. package/dist/commands/watcherSession.d.ts +3 -3
  238. package/dist/commands/watcherSession.d.ts.map +1 -1
  239. package/dist/commands/watcherSession.js.map +1 -1
  240. package/dist/commands/watcherStart.d.ts +2 -2
  241. package/dist/commands/watcherStart.d.ts.map +1 -1
  242. package/dist/config/argusHome.d.ts +3 -0
  243. package/dist/config/argusHome.d.ts.map +1 -0
  244. package/dist/config/argusHome.js +11 -0
  245. package/dist/config/argusHome.js.map +1 -0
  246. package/dist/config/loadConfig.d.ts +13 -0
  247. package/dist/config/loadConfig.d.ts.map +1 -0
  248. package/dist/config/loadConfig.js +59 -0
  249. package/dist/config/loadConfig.js.map +1 -0
  250. package/dist/config/mergeConfig.d.ts +34 -0
  251. package/dist/config/mergeConfig.d.ts.map +1 -0
  252. package/dist/config/mergeConfig.js +57 -0
  253. package/dist/config/mergeConfig.js.map +1 -0
  254. package/dist/config/types.d.ts +51 -0
  255. package/dist/config/types.d.ts.map +1 -0
  256. package/dist/config/types.js +2 -0
  257. package/dist/config/types.js.map +1 -0
  258. package/dist/config/validateConfig.d.ts +14 -0
  259. package/dist/config/validateConfig.d.ts.map +1 -0
  260. package/dist/config/{argusConfig.js → validateConfig.js} +136 -244
  261. package/dist/config/validateConfig.js.map +1 -0
  262. package/dist/eval/evalClient.d.ts +2 -0
  263. package/dist/eval/evalClient.d.ts.map +1 -1
  264. package/dist/eval/evalClient.js +26 -2
  265. package/dist/eval/evalClient.js.map +1 -1
  266. package/dist/skill/argus/SKILL.md +200 -0
  267. package/dist/skill/argus/reference/CAPTURE.md +77 -0
  268. package/dist/skill/argus/reference/DIALOG.md +31 -0
  269. package/dist/skill/argus/reference/EVAL.md +137 -0
  270. package/dist/skill/argus/reference/EXTENSION.md +38 -0
  271. package/dist/skill/argus/reference/EXTENSION_IFRAME_EVAL.md +58 -0
  272. package/dist/skill/argus/reference/IFRAMES.md +46 -0
  273. package/dist/skill/argus/reference/INJECT.md +145 -0
  274. package/dist/skill/argus/reference/INSPECT.md +175 -0
  275. package/dist/skill/argus/reference/NET.md +108 -0
  276. package/dist/skill/argus/reference/PLUGINS.md +172 -0
  277. package/dist/skill/argus/reference/RUNTIME_CODE.md +42 -0
  278. package/dist/skill/argus/reference/START.md +120 -0
  279. package/dist/skill/argus/start-watcher.ts +108 -0
  280. package/package.json +4 -2
  281. package/dist/cli/register/registerAuth.d.ts +0 -3
  282. package/dist/cli/register/registerAuth.d.ts.map +0 -1
  283. package/dist/cli/register/registerAuth.js +0 -133
  284. package/dist/cli/register/registerAuth.js.map +0 -1
  285. package/dist/cli/register/registerChrome.d.ts +0 -3
  286. package/dist/cli/register/registerChrome.d.ts.map +0 -1
  287. package/dist/cli/register/registerChrome.js +0 -118
  288. package/dist/cli/register/registerChrome.js.map +0 -1
  289. package/dist/cli/register/registerCode.d.ts +0 -3
  290. package/dist/cli/register/registerCode.d.ts.map +0 -1
  291. package/dist/cli/register/registerCode.js +0 -74
  292. package/dist/cli/register/registerCode.js.map +0 -1
  293. package/dist/cli/register/registerConfig.d.ts +0 -3
  294. package/dist/cli/register/registerConfig.d.ts.map +0 -1
  295. package/dist/cli/register/registerConfig.js +0 -14
  296. package/dist/cli/register/registerConfig.js.map +0 -1
  297. package/dist/cli/register/registerDialog.d.ts +0 -3
  298. package/dist/cli/register/registerDialog.d.ts.map +0 -1
  299. package/dist/cli/register/registerDialog.js +0 -45
  300. package/dist/cli/register/registerDialog.js.map +0 -1
  301. package/dist/cli/register/registerDom.d.ts +0 -3
  302. package/dist/cli/register/registerDom.d.ts.map +0 -1
  303. package/dist/cli/register/registerDom.js +0 -284
  304. package/dist/cli/register/registerDom.js.map +0 -1
  305. package/dist/cli/register/registerEval.d.ts +0 -3
  306. package/dist/cli/register/registerEval.d.ts.map +0 -1
  307. package/dist/cli/register/registerEval.js +0 -149
  308. package/dist/cli/register/registerEval.js.map +0 -1
  309. package/dist/cli/register/registerExtension.d.ts +0 -3
  310. package/dist/cli/register/registerExtension.d.ts.map +0 -1
  311. package/dist/cli/register/registerExtension.js +0 -72
  312. package/dist/cli/register/registerExtension.js.map +0 -1
  313. package/dist/cli/register/registerFill.d.ts +0 -3
  314. package/dist/cli/register/registerFill.d.ts.map +0 -1
  315. package/dist/cli/register/registerFill.js +0 -31
  316. package/dist/cli/register/registerFill.js.map +0 -1
  317. package/dist/cli/register/registerHover.d.ts +0 -3
  318. package/dist/cli/register/registerHover.d.ts.map +0 -1
  319. package/dist/cli/register/registerHover.js +0 -21
  320. package/dist/cli/register/registerHover.js.map +0 -1
  321. package/dist/cli/register/registerKeydown.d.ts +0 -3
  322. package/dist/cli/register/registerKeydown.d.ts.map +0 -1
  323. package/dist/cli/register/registerKeydown.js +0 -20
  324. package/dist/cli/register/registerKeydown.js.map +0 -1
  325. package/dist/cli/register/registerLocate.d.ts +0 -3
  326. package/dist/cli/register/registerLocate.d.ts.map +0 -1
  327. package/dist/cli/register/registerLocate.js +0 -48
  328. package/dist/cli/register/registerLocate.js.map +0 -1
  329. package/dist/cli/register/registerLogs.d.ts +0 -3
  330. package/dist/cli/register/registerLogs.d.ts.map +0 -1
  331. package/dist/cli/register/registerLogs.js +0 -64
  332. package/dist/cli/register/registerLogs.js.map +0 -1
  333. package/dist/cli/register/registerNet.d.ts +0 -3
  334. package/dist/cli/register/registerNet.d.ts.map +0 -1
  335. package/dist/cli/register/registerNet.js +0 -287
  336. package/dist/cli/register/registerNet.js.map +0 -1
  337. package/dist/cli/register/registerPage.d.ts +0 -3
  338. package/dist/cli/register/registerPage.d.ts.map +0 -1
  339. package/dist/cli/register/registerPage.js +0 -123
  340. package/dist/cli/register/registerPage.js.map +0 -1
  341. package/dist/cli/register/registerPlugin.d.ts +0 -3
  342. package/dist/cli/register/registerPlugin.d.ts.map +0 -1
  343. package/dist/cli/register/registerPlugin.js +0 -34
  344. package/dist/cli/register/registerPlugin.js.map +0 -1
  345. package/dist/cli/register/registerQuickAccess.d.ts +0 -3
  346. package/dist/cli/register/registerQuickAccess.d.ts.map +0 -1
  347. package/dist/cli/register/registerQuickAccess.js +0 -112
  348. package/dist/cli/register/registerQuickAccess.js.map +0 -1
  349. package/dist/cli/register/registerScrollTo.d.ts +0 -3
  350. package/dist/cli/register/registerScrollTo.d.ts.map +0 -1
  351. package/dist/cli/register/registerScrollTo.js +0 -22
  352. package/dist/cli/register/registerScrollTo.js.map +0 -1
  353. package/dist/cli/register/registerSnapshot.d.ts +0 -3
  354. package/dist/cli/register/registerSnapshot.d.ts.map +0 -1
  355. package/dist/cli/register/registerSnapshot.js +0 -38
  356. package/dist/cli/register/registerSnapshot.js.map +0 -1
  357. package/dist/cli/register/registerStorage.d.ts +0 -3
  358. package/dist/cli/register/registerStorage.d.ts.map +0 -1
  359. package/dist/cli/register/registerStorage.js +0 -61
  360. package/dist/cli/register/registerStorage.js.map +0 -1
  361. package/dist/cli/register/registerThrottle.d.ts +0 -3
  362. package/dist/cli/register/registerThrottle.d.ts.map +0 -1
  363. package/dist/cli/register/registerThrottle.js +0 -33
  364. package/dist/cli/register/registerThrottle.js.map +0 -1
  365. package/dist/cli/register/registerTrace.d.ts +0 -3
  366. package/dist/cli/register/registerTrace.d.ts.map +0 -1
  367. package/dist/cli/register/registerTrace.js +0 -57
  368. package/dist/cli/register/registerTrace.js.map +0 -1
  369. package/dist/cli/register/registerWatcher.d.ts +0 -3
  370. package/dist/cli/register/registerWatcher.d.ts.map +0 -1
  371. package/dist/cli/register/registerWatcher.js +0 -135
  372. package/dist/cli/register/registerWatcher.js.map +0 -1
  373. package/dist/config/argusConfig.d.ts +0 -76
  374. package/dist/config/argusConfig.d.ts.map +0 -1
  375. package/dist/config/argusConfig.js.map +0 -1
@@ -0,0 +1,323 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { NET_MOCK_FAIL_REASONS } from '@vforsh/argus-core';
4
+ import { defineWatcherCommand } from '../cli/defineWatcherCommand.js';
5
+ import { formatError } from '../cli/parse.js';
6
+ import { parseDurationMs } from '../time.js';
7
+ import { resolvePath } from '../utils/paths.js';
8
+ import { readStdin } from './evalShared.js';
9
+ const TIMEOUT_WRITE_MS = 10_000;
10
+ const TIMEOUT_READ_MS = 5_000;
11
+ /** Execute `argus net mock add <id> --url <pattern> ...`. */
12
+ export const runNetMockAdd = defineWatcherCommand({
13
+ build: async (_args, options, output) => {
14
+ const body = await buildAddRequest(options, output);
15
+ if (!body) {
16
+ return null;
17
+ }
18
+ return { path: '/net/mock/add', method: 'POST', body, timeoutMs: TIMEOUT_WRITE_MS };
19
+ },
20
+ formatHuman: (response, { output }) => {
21
+ const summary = describeRule(response.rule);
22
+ if (!response.attached) {
23
+ output.writeHuman(`Mock rule queued (watcher detached): ${summary}`);
24
+ return;
25
+ }
26
+ if (!response.enabled) {
27
+ output.writeHuman(`Mock rule added but interception is not active: ${summary}`);
28
+ if (response.error) {
29
+ output.writeWarn(`Error: ${response.error.message}`);
30
+ }
31
+ return;
32
+ }
33
+ output.writeHuman(`Mock rule added: ${summary}`);
34
+ },
35
+ });
36
+ /** Validate add flags and assemble the request payload. Returns null after writing a warning. */
37
+ const buildAddRequest = async (options, output) => {
38
+ const invalid = (message) => {
39
+ output.writeWarn(message);
40
+ process.exitCode = 2;
41
+ return null;
42
+ };
43
+ const urlPattern = options.url?.trim();
44
+ if (!urlPattern) {
45
+ return invalid('--url <pattern> is required (wildcard pattern; substring match when it contains no *)');
46
+ }
47
+ const responseHeaders = parseHeaderFlags(options.header ?? [], '--header', output);
48
+ if (responseHeaders == null) {
49
+ return null;
50
+ }
51
+ const requestHeaders = parseHeaderFlags(options.setHeader ?? [], '--set-header', output);
52
+ if (requestHeaders == null) {
53
+ return null;
54
+ }
55
+ const wantsFulfill = options.status != null || options.body != null || options.bodyFile != null || responseHeaders.length > 0;
56
+ const primaryCount = [options.block === true, options.fail != null, wantsFulfill].filter(Boolean).length;
57
+ if (primaryCount > 1) {
58
+ return invalid('Provide only one primary action: --block, --fail <reason>, or --status/--body/--body-file/--header');
59
+ }
60
+ if (primaryCount > 0 && (requestHeaders.length > 0 || options.rewriteHost != null)) {
61
+ return invalid('--set-header and --rewrite-host only apply to pass-through rules; they cannot combine with --block, --fail, or a stubbed response');
62
+ }
63
+ let delayMs;
64
+ if (options.delay != null) {
65
+ const parsed = parseDurationMs(options.delay);
66
+ if (parsed == null || parsed < 0) {
67
+ return invalid(`Invalid --delay value: ${options.delay} (use e.g. 500ms, 2s, 1m)`);
68
+ }
69
+ delayMs = parsed;
70
+ }
71
+ let times;
72
+ if (options.times != null) {
73
+ const parsed = Number(options.times);
74
+ if (!Number.isInteger(parsed) || parsed < 1) {
75
+ return invalid('--times must be an integer >= 1');
76
+ }
77
+ times = parsed;
78
+ }
79
+ const action = await buildAction(options, responseHeaders, requestHeaders, delayMs, output);
80
+ if (!action) {
81
+ return null;
82
+ }
83
+ const match = { url: urlPattern };
84
+ if (options.method) {
85
+ match.method = options.method;
86
+ }
87
+ if (options.resourceType) {
88
+ match.resourceType = options.resourceType;
89
+ }
90
+ return { match, action, delayMs, times };
91
+ };
92
+ const buildAction = async (options, responseHeaders, requestHeaders, delayMs, output) => {
93
+ const invalid = (message) => {
94
+ output.writeWarn(message);
95
+ process.exitCode = 2;
96
+ return null;
97
+ };
98
+ if (options.block === true) {
99
+ return { kind: 'block' };
100
+ }
101
+ if (options.fail != null) {
102
+ const reason = NET_MOCK_FAIL_REASONS.find((candidate) => candidate.toLowerCase() === options.fail.toLowerCase());
103
+ if (!reason) {
104
+ return invalid(`Invalid --fail reason: ${options.fail}. Valid reasons: ${NET_MOCK_FAIL_REASONS.join(', ')}`);
105
+ }
106
+ return { kind: 'fail', reason: reason };
107
+ }
108
+ const wantsFulfill = options.status != null || options.body != null || options.bodyFile != null || responseHeaders.length > 0;
109
+ if (wantsFulfill) {
110
+ let status = 200;
111
+ if (options.status != null) {
112
+ status = Number(options.status);
113
+ if (!Number.isInteger(status) || status < 100 || status > 599) {
114
+ return invalid('--status must be an integer between 100 and 599');
115
+ }
116
+ }
117
+ const body = await resolveBody(options, output);
118
+ if (body === INVALID_BODY) {
119
+ return null;
120
+ }
121
+ const headers = [...responseHeaders];
122
+ if (body && !headers.some((header) => header.name.toLowerCase() === 'content-type')) {
123
+ headers.push({ name: 'content-type', value: body.contentType });
124
+ }
125
+ const action = { kind: 'fulfill', status };
126
+ if (headers.length > 0) {
127
+ action.headers = headers;
128
+ }
129
+ if (body) {
130
+ action.bodyBase64 = body.base64;
131
+ }
132
+ return action;
133
+ }
134
+ if (requestHeaders.length > 0 || options.rewriteHost != null || delayMs != null) {
135
+ const action = { kind: 'continue' };
136
+ if (requestHeaders.length > 0) {
137
+ action.setHeaders = requestHeaders;
138
+ }
139
+ if (options.rewriteHost != null) {
140
+ action.rewriteHost = options.rewriteHost;
141
+ }
142
+ return action;
143
+ }
144
+ return invalid('Provide an action: --block, --fail <reason>, --status/--body (stub response), or --delay/--set-header/--rewrite-host (pass through)');
145
+ };
146
+ const INVALID_BODY = Symbol('invalid-body');
147
+ /** Resolve the fulfill body from --body (inline or `-` for stdin) or --body-file. */
148
+ const resolveBody = async (options, output) => {
149
+ const invalid = (message) => {
150
+ output.writeWarn(message);
151
+ process.exitCode = 2;
152
+ return INVALID_BODY;
153
+ };
154
+ if (options.body != null && options.bodyFile != null) {
155
+ return invalid('Provide only one of: --body, --body-file');
156
+ }
157
+ if (options.bodyFile != null) {
158
+ try {
159
+ const buffer = await readFile(resolvePath(options.bodyFile));
160
+ return { base64: buffer.toString('base64'), contentType: inferContentType(options.bodyFile, buffer) };
161
+ }
162
+ catch (error) {
163
+ return invalid(`Failed to read --body-file: ${formatError(error)}`);
164
+ }
165
+ }
166
+ if (options.body != null) {
167
+ let text = options.body;
168
+ if (text === '-') {
169
+ try {
170
+ text = await readStdin();
171
+ }
172
+ catch (error) {
173
+ return invalid(`Failed to read stdin: ${formatError(error)}`);
174
+ }
175
+ }
176
+ const buffer = Buffer.from(text, 'utf8');
177
+ return { base64: buffer.toString('base64'), contentType: inferContentType(null, buffer) };
178
+ }
179
+ return null;
180
+ };
181
+ const CONTENT_TYPES_BY_EXTENSION = {
182
+ '.json': 'application/json',
183
+ '.html': 'text/html',
184
+ '.htm': 'text/html',
185
+ '.txt': 'text/plain',
186
+ '.js': 'text/javascript',
187
+ '.mjs': 'text/javascript',
188
+ '.css': 'text/css',
189
+ '.xml': 'application/xml',
190
+ '.svg': 'image/svg+xml',
191
+ '.png': 'image/png',
192
+ '.jpg': 'image/jpeg',
193
+ '.jpeg': 'image/jpeg',
194
+ '.gif': 'image/gif',
195
+ '.webp': 'image/webp',
196
+ };
197
+ /** Infer content-type from the file extension, falling back to JSON sniffing on the payload. */
198
+ const inferContentType = (filePath, body) => {
199
+ if (filePath) {
200
+ const byExtension = CONTENT_TYPES_BY_EXTENSION[path.extname(filePath).toLowerCase()];
201
+ if (byExtension) {
202
+ return byExtension;
203
+ }
204
+ }
205
+ try {
206
+ JSON.parse(body.toString('utf8'));
207
+ return 'application/json';
208
+ }
209
+ catch {
210
+ return 'text/plain';
211
+ }
212
+ };
213
+ /** Parse repeatable "Name: value" header flags. Returns null after writing a warning. */
214
+ const parseHeaderFlags = (values, flag, output) => {
215
+ const headers = [];
216
+ for (const raw of values) {
217
+ const separator = raw.indexOf(':');
218
+ const name = separator >= 0 ? raw.slice(0, separator).trim() : '';
219
+ const value = separator >= 0 ? raw.slice(separator + 1).trim() : '';
220
+ if (!name) {
221
+ output.writeWarn(`Invalid ${flag} value: "${raw}" (expected "Name: value")`);
222
+ process.exitCode = 2;
223
+ return null;
224
+ }
225
+ headers.push({ name, value });
226
+ }
227
+ return headers;
228
+ };
229
+ /** Execute `argus net mock ls <id>`. */
230
+ export const runNetMockList = defineWatcherCommand({
231
+ build: () => ({ path: '/net/mock', method: 'GET', timeoutMs: TIMEOUT_READ_MS }),
232
+ formatHuman: (response, { output }) => {
233
+ const lines = [];
234
+ lines.push(`attached: ${response.attached}`);
235
+ lines.push(`enabled: ${response.enabled}`);
236
+ if (response.rules.length === 0) {
237
+ lines.push('rules: none');
238
+ }
239
+ else {
240
+ lines.push(`rules (${response.rules.length}):`);
241
+ for (const rule of response.rules) {
242
+ lines.push(` ${describeRule(rule)}`);
243
+ }
244
+ }
245
+ if (response.lastError) {
246
+ lines.push(`error: ${response.lastError.message}`);
247
+ }
248
+ output.writeHuman(lines.join('\n'));
249
+ },
250
+ });
251
+ /** Execute `argus net mock rm <rule> <id>`. */
252
+ export const runNetMockRemove = defineWatcherCommand({
253
+ build: ([ruleRaw], _options, output) => {
254
+ const id = Number(ruleRaw);
255
+ if (!Number.isInteger(id) || id < 1) {
256
+ output.writeWarn('Rule id must be an integer >= 1 (see `argus net mock ls`)');
257
+ process.exitCode = 2;
258
+ return null;
259
+ }
260
+ return { path: '/net/mock/remove', method: 'POST', body: { id }, timeoutMs: TIMEOUT_WRITE_MS };
261
+ },
262
+ formatHuman: (response, { output, args }) => {
263
+ if (!response.removed) {
264
+ output.writeWarn(`No mock rule with id ${args[0]}`);
265
+ process.exitCode = 1;
266
+ return;
267
+ }
268
+ output.writeHuman(`Removed mock rule #${args[0]}${response.enabled ? '' : ' (interception disabled)'}`);
269
+ },
270
+ });
271
+ /** Execute `argus net mock clear <id>`. */
272
+ export const runNetMockClear = defineWatcherCommand({
273
+ build: () => ({ path: '/net/mock/clear', method: 'POST', body: {}, timeoutMs: TIMEOUT_WRITE_MS }),
274
+ formatHuman: (response, { output }) => {
275
+ output.writeHuman(response.removed > 0 ? `Removed ${response.removed} mock rule${response.removed === 1 ? '' : 's'}` : 'No mock rules to remove');
276
+ },
277
+ });
278
+ // ---------------------------------------------------------------------------
279
+ // shared rendering
280
+ // ---------------------------------------------------------------------------
281
+ /** One-line human summary of a rule: id, match, action, delay/times/hits. */
282
+ const describeRule = (rule) => {
283
+ const match = [rule.match.url, rule.match.method?.toUpperCase(), rule.match.resourceType].filter(Boolean).join(' ');
284
+ const extras = [];
285
+ if (rule.delayMs) {
286
+ extras.push(`delay ${formatDuration(rule.delayMs)}`);
287
+ }
288
+ if (rule.times != null) {
289
+ extras.push(`times ${Math.min(rule.hits, rule.times)}/${rule.times}`);
290
+ }
291
+ extras.push(`hits ${rule.hits}`);
292
+ return `#${rule.id} ${match} → ${describeAction(rule.action)} [${extras.join(', ')}]`;
293
+ };
294
+ const describeAction = (action) => {
295
+ if (action.kind === 'block') {
296
+ return 'block';
297
+ }
298
+ if (action.kind === 'fail') {
299
+ return `fail ${action.reason}`;
300
+ }
301
+ if (action.kind === 'fulfill') {
302
+ const bodyBytes = action.bodyBase64 ? Buffer.from(action.bodyBase64, 'base64').length : 0;
303
+ return `respond ${action.status}${bodyBytes > 0 ? ` (${bodyBytes}b body)` : ''}`;
304
+ }
305
+ const parts = [];
306
+ if (action.setHeaders && action.setHeaders.length > 0) {
307
+ parts.push(`set ${action.setHeaders.map((header) => header.name).join(', ')}`);
308
+ }
309
+ if (action.rewriteHost) {
310
+ parts.push(`host → ${action.rewriteHost}`);
311
+ }
312
+ return parts.length > 0 ? `continue (${parts.join('; ')})` : 'continue';
313
+ };
314
+ const formatDuration = (ms) => {
315
+ if (ms % 60_000 === 0 && ms >= 60_000) {
316
+ return `${ms / 60_000}m`;
317
+ }
318
+ if (ms % 1_000 === 0 && ms >= 1_000) {
319
+ return `${ms / 1_000}s`;
320
+ }
321
+ return `${ms}ms`;
322
+ };
323
+ //# sourceMappingURL=netMock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"netMock.js","sourceRoot":"","sources":["../../src/commands/netMock.ts"],"names":[],"mappings":"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"}
@@ -2,5 +2,5 @@ import type { NetCliListOptions } from './netShared.js';
2
2
  export type NetSseOptions = NetCliListOptions & {
3
3
  json?: boolean;
4
4
  };
5
- export declare const runNetSse: (id: string | undefined, options: NetSseOptions) => Promise<void>;
5
+ export declare const runNetSse: import("../cli/defineWatcherCommand.js").WatcherCommandRunner<[], NetSseOptions>;
6
6
  //# sourceMappingURL=netSse.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"netSse.d.ts","sourceRoot":"","sources":["../../src/commands/netSse.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAMvD,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAAG;IAC/C,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAED,eAAO,MAAM,SAAS,GAAU,IAAI,MAAM,GAAG,SAAS,EAAE,SAAS,aAAa,KAAG,OAAO,CAAC,IAAI,CAuB5F,CAAA"}
1
+ {"version":3,"file":"netSse.d.ts","sourceRoot":"","sources":["../../src/commands/netSse.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAKvD,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAAG;IAC/C,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAED,eAAO,MAAM,SAAS,kFAiBpB,CAAA"}
@@ -1,26 +1,22 @@
1
1
  import { appendNetCommandParams } from './netShared.js';
2
- import { requestWatcherCommandAction } from '../cli/defineWatcherCommand.js';
2
+ import { defineWatcherCommand } from '../cli/defineWatcherCommand.js';
3
3
  import { formatSseSummary } from '../output/net.js';
4
- import { createOutput } from '../output/io.js';
5
- export const runNetSse = async (id, options) => {
6
- const output = createOutput(options);
7
- const params = new URLSearchParams();
8
- const query = appendNetCommandParams(params, options);
9
- if (query.error) {
10
- output.writeWarn(query.error);
11
- process.exitCode = 2;
12
- return;
13
- }
14
- const result = await requestWatcherCommandAction({ id, path: '/net/sse', query: params, timeoutMs: 5_000 }, output);
15
- if (!result) {
16
- return;
17
- }
18
- if (options.json) {
19
- output.writeJson(result.data.streams);
20
- return;
21
- }
22
- for (const stream of result.data.streams) {
23
- output.writeHuman(formatSseSummary(stream));
24
- }
25
- };
4
+ export const runNetSse = defineWatcherCommand({
5
+ build: (_args, options, output) => {
6
+ const params = new URLSearchParams();
7
+ const query = appendNetCommandParams(params, options);
8
+ if (query.error) {
9
+ output.writeWarn(query.error);
10
+ process.exitCode = 2;
11
+ return null;
12
+ }
13
+ return { path: '/net/sse', query: params, timeoutMs: 5_000 };
14
+ },
15
+ formatJson: (response) => response.streams,
16
+ formatHuman: (response, { output }) => {
17
+ for (const stream of response.streams) {
18
+ output.writeHuman(formatSseSummary(stream));
19
+ }
20
+ },
21
+ });
26
22
  //# sourceMappingURL=netSse.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"netSse.js","sourceRoot":"","sources":["../../src/commands/netSse.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAA;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAM9C,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAE,EAAsB,EAAE,OAAsB,EAAiB,EAAE;IAChG,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;IACpC,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAA;IACpC,MAAM,KAAK,GAAG,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC7B,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;QACpB,OAAM;IACP,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,2BAA2B,CAAiB,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,MAAM,CAAC,CAAA;IACnI,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,OAAM;IACP,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACrC,OAAM;IACP,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAC1C,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAA;IAC5C,CAAC;AACF,CAAC,CAAA"}
1
+ {"version":3,"file":"netSse.js","sourceRoot":"","sources":["../../src/commands/netSse.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAA;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAMnD,MAAM,CAAC,MAAM,SAAS,GAAG,oBAAoB,CAAgC;IAC5E,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QACjC,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAA;QACpC,MAAM,KAAK,GAAG,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACrD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YAC7B,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;YACpB,OAAO,IAAI,CAAA;QACZ,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;IAC7D,CAAC;IACD,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO;IAC1C,WAAW,EAAE,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QACrC,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACvC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAA;QAC5C,CAAC;IACF,CAAC;CACD,CAAC,CAAA"}
@@ -5,6 +5,6 @@ export type NetWebSocketOptions = NetCliListOptions & {
5
5
  export type NetWebSocketShowOptions = {
6
6
  json?: boolean;
7
7
  };
8
- export declare const runNetWebSocket: (id: string | undefined, options: NetWebSocketOptions) => Promise<void>;
9
- export declare const runNetWebSocketShow: (id: string | undefined, connection: string, options: NetWebSocketShowOptions) => Promise<void>;
8
+ export declare const runNetWebSocket: import("../cli/defineWatcherCommand.js").WatcherCommandRunner<[], NetWebSocketOptions>;
9
+ export declare const runNetWebSocketShow: import("../cli/defineWatcherCommand.js").WatcherCommandRunner<[connection: string], NetWebSocketShowOptions>;
10
10
  //# sourceMappingURL=netWebSocket.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"netWebSocket.d.ts","sourceRoot":"","sources":["../../src/commands/netWebSocket.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAMvD,MAAM,MAAM,mBAAmB,GAAG,iBAAiB,GAAG;IACrD,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACrC,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAED,eAAO,MAAM,eAAe,GAAU,IAAI,MAAM,GAAG,SAAS,EAAE,SAAS,mBAAmB,KAAG,OAAO,CAAC,IAAI,CAuBxG,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAU,IAAI,MAAM,GAAG,SAAS,EAAE,YAAY,MAAM,EAAE,SAAS,uBAAuB,KAAG,OAAO,CAAC,IAAI,CAoBpI,CAAA"}
1
+ {"version":3,"file":"netWebSocket.d.ts","sourceRoot":"","sources":["../../src/commands/netWebSocket.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAKvD,MAAM,MAAM,mBAAmB,GAAG,iBAAiB,GAAG;IACrD,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACrC,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAED,eAAO,MAAM,eAAe,wFAiB1B,CAAA;AAEF,eAAO,MAAM,mBAAmB,8GAoB9B,CAAA"}
@@ -1,58 +1,45 @@
1
1
  import { appendNetCommandParams } from './netShared.js';
2
- import { requestWatcherCommandAction } from '../cli/defineWatcherCommand.js';
2
+ import { defineWatcherCommand } from '../cli/defineWatcherCommand.js';
3
3
  import { formatWebSocketDetail, formatWebSocketSummary } from '../output/net.js';
4
- import { createOutput } from '../output/io.js';
5
- export const runNetWebSocket = async (id, options) => {
6
- const output = createOutput(options);
7
- const params = new URLSearchParams();
8
- const query = appendNetCommandParams(params, options);
9
- if (query.error) {
10
- output.writeWarn(query.error);
11
- process.exitCode = 2;
12
- return;
13
- }
14
- const result = await requestWatcherCommandAction({ id, path: '/net/ws', query: params, timeoutMs: 5_000 }, output);
15
- if (!result) {
16
- return;
17
- }
18
- if (options.json) {
19
- output.writeJson(result.data.connections);
20
- return;
21
- }
22
- for (const connection of result.data.connections) {
23
- output.writeHuman(formatWebSocketSummary(connection));
24
- }
25
- };
26
- export const runNetWebSocketShow = async (id, connection, options) => {
27
- const output = createOutput(options);
28
- const query = buildConnectionQuery(connection, output);
29
- if (!query) {
30
- return;
31
- }
32
- const result = await requestWatcherCommandAction({ id, path: '/net/ws/connection', query, timeoutMs: 5_000 }, output);
33
- if (!result) {
34
- return;
35
- }
36
- if (options.json) {
37
- output.writeJson(result.data.connection);
38
- return;
39
- }
40
- for (const line of formatWebSocketDetail(result.data.connection)) {
41
- output.writeHuman(line);
42
- }
43
- };
44
- const buildConnectionQuery = (connection, output) => {
45
- const query = new URLSearchParams();
46
- if (/^\d+$/.test(connection)) {
47
- query.set('id', connection);
48
- return query;
49
- }
50
- if (!connection.trim()) {
51
- output.writeWarn('Missing WebSocket connection id.');
52
- process.exitCode = 2;
53
- return null;
54
- }
55
- query.set('requestId', connection);
56
- return query;
57
- };
4
+ export const runNetWebSocket = defineWatcherCommand({
5
+ build: (_args, options, output) => {
6
+ const params = new URLSearchParams();
7
+ const query = appendNetCommandParams(params, options);
8
+ if (query.error) {
9
+ output.writeWarn(query.error);
10
+ process.exitCode = 2;
11
+ return null;
12
+ }
13
+ return { path: '/net/ws', query: params, timeoutMs: 5_000 };
14
+ },
15
+ formatJson: (response) => response.connections,
16
+ formatHuman: (response, { output }) => {
17
+ for (const connection of response.connections) {
18
+ output.writeHuman(formatWebSocketSummary(connection));
19
+ }
20
+ },
21
+ });
22
+ export const runNetWebSocketShow = defineWatcherCommand({
23
+ build: ([connection], _options, output) => {
24
+ const query = new URLSearchParams();
25
+ if (/^\d+$/.test(connection)) {
26
+ query.set('id', connection);
27
+ }
28
+ else if (connection.trim()) {
29
+ query.set('requestId', connection);
30
+ }
31
+ else {
32
+ output.writeWarn('Missing WebSocket connection id.');
33
+ process.exitCode = 2;
34
+ return null;
35
+ }
36
+ return { path: '/net/ws/connection', query, timeoutMs: 5_000 };
37
+ },
38
+ formatJson: (response) => response.connection,
39
+ formatHuman: (response, { output }) => {
40
+ for (const line of formatWebSocketDetail(response.connection)) {
41
+ output.writeHuman(line);
42
+ }
43
+ },
44
+ });
58
45
  //# sourceMappingURL=netWebSocket.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"netWebSocket.js","sourceRoot":"","sources":["../../src/commands/netWebSocket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"netWebSocket.js","sourceRoot":"","sources":["../../src/commands/netWebSocket.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAA;AACrE,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAUhF,MAAM,CAAC,MAAM,eAAe,GAAG,oBAAoB,CAA6C;IAC/F,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QACjC,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAA;QACpC,MAAM,KAAK,GAAG,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACrD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YAC7B,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;YACpB,OAAO,IAAI,CAAA;QACZ,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;IAC5D,CAAC;IACD,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW;IAC9C,WAAW,EAAE,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QACrC,KAAK,MAAM,UAAU,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;YAC/C,MAAM,CAAC,UAAU,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAA;QACtD,CAAC;IACF,CAAC;CACD,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,oBAAoB,CAA+E;IACrI,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE;QACzC,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAA;QACnC,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;QAC5B,CAAC;aAAM,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;YAC9B,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;QACnC,CAAC;aAAM,CAAC;YACP,MAAM,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAA;YACpD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;YACpB,OAAO,IAAI,CAAA;QACZ,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;IAC/D,CAAC;IACD,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU;IAC7C,WAAW,EAAE,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QACrC,KAAK,MAAM,IAAI,IAAI,qBAAqB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/D,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACxB,CAAC;IACF,CAAC;CACD,CAAC,CAAA"}
@@ -1,5 +1,6 @@
1
1
  export type PluginConfigMutationOptions = {
2
2
  path?: string;
3
+ global?: boolean;
3
4
  json?: boolean;
4
5
  };
5
6
  export declare const runPluginAdd: (targetSpec: string, options: PluginConfigMutationOptions) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"pluginConfig.d.ts","sourceRoot":"","sources":["../../src/commands/pluginConfig.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,2BAA2B,GAAG;IACzC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAqID,eAAO,MAAM,YAAY,GAAU,YAAY,MAAM,EAAE,SAAS,2BAA2B,KAAG,OAAO,CAAC,IAAI,CAsCzG,CAAA;AAED,eAAO,MAAM,eAAe,GAAU,YAAY,MAAM,EAAE,SAAS,2BAA2B,KAAG,OAAO,CAAC,IAAI,CA4B5G,CAAA"}
1
+ {"version":3,"file":"pluginConfig.d.ts","sourceRoot":"","sources":["../../src/commands/pluginConfig.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,2BAA2B,GAAG;IACzC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAgJD,eAAO,MAAM,YAAY,GAAU,YAAY,MAAM,EAAE,SAAS,2BAA2B,KAAG,OAAO,CAAC,IAAI,CAsCzG,CAAA;AAED,eAAO,MAAM,eAAe,GAAU,YAAY,MAAM,EAAE,SAAS,2BAA2B,KAAG,OAAO,CAAC,IAAI,CA4B5G,CAAA"}
@@ -2,7 +2,8 @@ import fs from 'node:fs/promises';
2
2
  import { existsSync } from 'node:fs';
3
3
  import path from 'node:path';
4
4
  import { createOutput } from '../output/io.js';
5
- import { resolveArgusConfigPath } from '../config/argusConfig.js';
5
+ import { resolveArgusConfigPath } from '../config/loadConfig.js';
6
+ import { getGlobalArgusConfigPath } from '../config/argusHome.js';
6
7
  import { BUILTIN_PLUGIN_ALIASES, resolvePluginAlias } from '../cli/plugins/pluginAliases.js';
7
8
  const DEFAULT_CONFIG_PATH = '.argus/config.json';
8
9
  const isRecord = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
@@ -18,6 +19,10 @@ const resolveTargetConfigPath = (cwd, cliPath) => {
18
19
  return null;
19
20
  return { path: path.resolve(cwd, DEFAULT_CONFIG_PATH), exists: false };
20
21
  };
22
+ const resolveGlobalTargetConfigPath = () => {
23
+ const configPath = getGlobalArgusConfigPath();
24
+ return { path: configPath, exists: existsSync(configPath) };
25
+ };
21
26
  const readConfigObject = async (configPath, exists) => {
22
27
  if (!exists)
23
28
  return {};
@@ -88,7 +93,12 @@ const writeConfigObject = async (configPath, config) => {
88
93
  }
89
94
  };
90
95
  const loadMutablePluginConfig = async (options) => {
91
- const target = resolveTargetConfigPath(process.cwd(), options.path);
96
+ if (options.path && options.global) {
97
+ console.error('Use either --path or --global, not both.');
98
+ process.exitCode = 2;
99
+ return null;
100
+ }
101
+ const target = options.global ? resolveGlobalTargetConfigPath() : resolveTargetConfigPath(process.cwd(), options.path);
92
102
  if (!target)
93
103
  return null;
94
104
  const config = await readConfigObject(target.path, target.exists);