@agentrhq/webcmd 0.1.1 → 0.1.2

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 (415) hide show
  1. package/README.md +317 -24
  2. package/dist/src/adapter-shadow.d.ts +11 -0
  3. package/dist/src/adapter-shadow.js +72 -0
  4. package/dist/src/adapter-shadow.test.d.ts +1 -0
  5. package/dist/src/adapter-shadow.test.js +49 -0
  6. package/dist/src/adapter-source.d.ts +11 -0
  7. package/dist/src/adapter-source.js +24 -0
  8. package/dist/src/adapter-source.test.d.ts +1 -0
  9. package/dist/src/adapter-source.test.js +29 -0
  10. package/dist/src/brand.d.ts +9 -0
  11. package/dist/src/brand.js +9 -0
  12. package/dist/src/brand.test.d.ts +1 -0
  13. package/dist/src/brand.test.js +15 -0
  14. package/dist/src/browser/analyze.d.ts +118 -0
  15. package/dist/src/browser/analyze.js +405 -0
  16. package/dist/src/browser/analyze.test.d.ts +1 -0
  17. package/dist/src/browser/analyze.test.js +209 -0
  18. package/dist/src/browser/article-extract.d.ts +57 -0
  19. package/dist/src/browser/article-extract.e2e.test.d.ts +1 -0
  20. package/dist/src/browser/article-extract.e2e.test.js +105 -0
  21. package/dist/src/browser/article-extract.js +169 -0
  22. package/dist/src/browser/article-extract.test.d.ts +1 -0
  23. package/dist/src/browser/article-extract.test.js +94 -0
  24. package/dist/src/browser/ax-snapshot.d.ts +37 -0
  25. package/dist/src/browser/ax-snapshot.js +217 -0
  26. package/dist/src/browser/ax-snapshot.test.d.ts +1 -0
  27. package/dist/src/browser/ax-snapshot.test.js +91 -0
  28. package/dist/src/browser/base-page.d.ts +151 -0
  29. package/dist/src/browser/base-page.js +1060 -0
  30. package/dist/src/browser/base-page.test.d.ts +1 -0
  31. package/dist/src/browser/base-page.test.js +803 -0
  32. package/dist/src/browser/bridge-readiness.d.ts +14 -0
  33. package/dist/src/browser/bridge-readiness.js +24 -0
  34. package/dist/src/browser/bridge-readiness.test.d.ts +1 -0
  35. package/dist/src/browser/bridge-readiness.test.js +58 -0
  36. package/dist/src/browser/bridge.d.ts +26 -0
  37. package/dist/src/browser/bridge.js +58 -0
  38. package/dist/src/browser/cdp-click-fixture.test.d.ts +1 -0
  39. package/dist/src/browser/cdp-click-fixture.test.js +87 -0
  40. package/dist/src/browser/cdp.d.ts +46 -0
  41. package/dist/src/browser/cdp.js +536 -0
  42. package/dist/src/browser/cdp.test.d.ts +1 -0
  43. package/dist/src/browser/cdp.test.js +79 -0
  44. package/dist/src/browser/compound.d.ts +59 -0
  45. package/dist/src/browser/compound.js +112 -0
  46. package/dist/src/browser/compound.test.d.ts +1 -0
  47. package/dist/src/browser/compound.test.js +175 -0
  48. package/dist/src/browser/config.d.ts +2 -0
  49. package/dist/src/browser/config.js +14 -0
  50. package/dist/src/browser/daemon-client.d.ts +32 -0
  51. package/dist/src/browser/daemon-client.js +135 -0
  52. package/dist/src/browser/daemon-client.test.d.ts +1 -0
  53. package/dist/src/browser/daemon-client.test.js +326 -0
  54. package/dist/src/browser/daemon-lifecycle.d.ts +37 -0
  55. package/dist/src/browser/daemon-lifecycle.js +147 -0
  56. package/dist/src/browser/daemon-transport.d.ts +54 -0
  57. package/dist/src/browser/daemon-transport.js +68 -0
  58. package/dist/src/browser/daemon-version.d.ts +4 -0
  59. package/dist/src/browser/daemon-version.js +12 -0
  60. package/dist/src/browser/dom-helpers.d.ts +41 -0
  61. package/dist/src/browser/dom-helpers.js +239 -0
  62. package/dist/src/browser/dom-helpers.test.d.ts +1 -0
  63. package/dist/src/browser/dom-helpers.test.js +106 -0
  64. package/dist/src/browser/dom-snapshot.d.ts +93 -0
  65. package/dist/src/browser/dom-snapshot.js +894 -0
  66. package/dist/src/browser/dom-snapshot.test.d.ts +11 -0
  67. package/dist/src/browser/dom-snapshot.test.js +313 -0
  68. package/dist/src/browser/errors.d.ts +38 -0
  69. package/dist/src/browser/errors.js +79 -0
  70. package/dist/src/browser/errors.test.d.ts +1 -0
  71. package/dist/src/browser/errors.test.js +60 -0
  72. package/dist/src/browser/extract.d.ts +69 -0
  73. package/dist/src/browser/extract.js +132 -0
  74. package/dist/src/browser/extract.test.d.ts +1 -0
  75. package/dist/src/browser/extract.test.js +129 -0
  76. package/dist/src/browser/find.d.ts +84 -0
  77. package/dist/src/browser/find.js +398 -0
  78. package/dist/src/browser/find.test.d.ts +1 -0
  79. package/dist/src/browser/find.test.js +180 -0
  80. package/dist/src/browser/html-tree.d.ts +75 -0
  81. package/dist/src/browser/html-tree.js +112 -0
  82. package/dist/src/browser/html-tree.test.d.ts +1 -0
  83. package/dist/src/browser/html-tree.test.js +181 -0
  84. package/dist/src/browser/index.d.ts +14 -0
  85. package/dist/src/browser/index.js +12 -0
  86. package/dist/src/browser/network-cache.d.ts +49 -0
  87. package/dist/src/browser/network-cache.js +78 -0
  88. package/dist/src/browser/network-cache.test.d.ts +1 -0
  89. package/dist/src/browser/network-cache.test.js +75 -0
  90. package/dist/src/browser/network-interceptor.d.ts +11 -0
  91. package/dist/src/browser/network-interceptor.js +11 -0
  92. package/dist/src/browser/network-key.d.ts +22 -0
  93. package/dist/src/browser/network-key.js +66 -0
  94. package/dist/src/browser/network-key.test.d.ts +1 -0
  95. package/dist/src/browser/network-key.test.js +49 -0
  96. package/dist/src/browser/page.d.ts +83 -0
  97. package/dist/src/browser/page.js +453 -0
  98. package/dist/src/browser/page.test.d.ts +1 -0
  99. package/dist/src/browser/page.test.js +406 -0
  100. package/dist/src/browser/profile.d.ts +14 -0
  101. package/dist/src/browser/profile.js +86 -0
  102. package/dist/src/browser/protocol.d.ts +63 -0
  103. package/dist/src/browser/protocol.js +1 -0
  104. package/dist/src/browser/runtime/local-cloak/actions.d.ts +3 -0
  105. package/dist/src/browser/runtime/local-cloak/actions.js +240 -0
  106. package/dist/src/browser/runtime/local-cloak/downloads.d.ts +3 -0
  107. package/dist/src/browser/runtime/local-cloak/downloads.js +28 -0
  108. package/dist/src/browser/runtime/local-cloak/network.d.ts +28 -0
  109. package/dist/src/browser/runtime/local-cloak/network.js +120 -0
  110. package/dist/src/browser/runtime/local-cloak/network.test.d.ts +1 -0
  111. package/dist/src/browser/runtime/local-cloak/network.test.js +124 -0
  112. package/dist/src/browser/runtime/local-cloak/profiles.d.ts +6 -0
  113. package/dist/src/browser/runtime/local-cloak/profiles.js +17 -0
  114. package/dist/src/browser/runtime/local-cloak/profiles.test.d.ts +1 -0
  115. package/dist/src/browser/runtime/local-cloak/profiles.test.js +19 -0
  116. package/dist/src/browser/runtime/local-cloak/provider.d.ts +15 -0
  117. package/dist/src/browser/runtime/local-cloak/provider.js +27 -0
  118. package/dist/src/browser/runtime/local-cloak/provider.test.d.ts +1 -0
  119. package/dist/src/browser/runtime/local-cloak/provider.test.js +244 -0
  120. package/dist/src/browser/runtime/local-cloak/session-manager.d.ts +77 -0
  121. package/dist/src/browser/runtime/local-cloak/session-manager.js +280 -0
  122. package/dist/src/browser/runtime/local-cloak/session-manager.test.d.ts +1 -0
  123. package/dist/src/browser/runtime/local-cloak/session-manager.test.js +92 -0
  124. package/dist/src/browser/runtime/provider.d.ts +9 -0
  125. package/dist/src/browser/runtime/provider.js +1 -0
  126. package/dist/src/browser/runtime/provider.test.d.ts +2 -0
  127. package/dist/src/browser/runtime/provider.test.js +49 -0
  128. package/dist/src/browser/shape-filter.d.ts +52 -0
  129. package/dist/src/browser/shape-filter.js +101 -0
  130. package/dist/src/browser/shape-filter.test.d.ts +1 -0
  131. package/dist/src/browser/shape-filter.test.js +101 -0
  132. package/dist/src/browser/shape.d.ts +23 -0
  133. package/dist/src/browser/shape.js +95 -0
  134. package/dist/src/browser/shape.test.d.ts +1 -0
  135. package/dist/src/browser/shape.test.js +82 -0
  136. package/dist/src/browser/stealth.d.ts +11 -0
  137. package/dist/src/browser/stealth.js +359 -0
  138. package/dist/src/browser/stealth.test.d.ts +1 -0
  139. package/dist/src/browser/stealth.test.js +134 -0
  140. package/dist/src/browser/tabs.d.ts +13 -0
  141. package/dist/src/browser/tabs.js +70 -0
  142. package/dist/src/browser/target-errors.d.ts +39 -0
  143. package/dist/src/browser/target-errors.js +45 -0
  144. package/dist/src/browser/target-errors.test.d.ts +1 -0
  145. package/dist/src/browser/target-errors.test.js +94 -0
  146. package/dist/src/browser/target-resolver.d.ts +158 -0
  147. package/dist/src/browser/target-resolver.js +570 -0
  148. package/dist/src/browser/target-resolver.test.d.ts +1 -0
  149. package/dist/src/browser/target-resolver.test.js +118 -0
  150. package/dist/src/browser/utils.d.ts +20 -0
  151. package/dist/src/browser/utils.js +64 -0
  152. package/dist/src/browser/utils.test.d.ts +1 -0
  153. package/dist/src/browser/utils.test.js +29 -0
  154. package/dist/src/browser/verify-fixture.d.ts +65 -0
  155. package/dist/src/browser/verify-fixture.js +318 -0
  156. package/dist/src/browser/verify-fixture.test.d.ts +1 -0
  157. package/dist/src/browser/verify-fixture.test.js +219 -0
  158. package/dist/src/browser/visual-refs.d.ts +11 -0
  159. package/dist/src/browser/visual-refs.js +108 -0
  160. package/dist/src/browser.test.d.ts +1 -0
  161. package/dist/src/browser.test.js +297 -0
  162. package/dist/src/build-manifest.d.ts +103 -0
  163. package/dist/src/build-manifest.js +363 -0
  164. package/dist/src/build-manifest.test.d.ts +1 -0
  165. package/dist/src/build-manifest.test.js +341 -0
  166. package/dist/src/capabilityRouting.d.ts +19 -0
  167. package/dist/src/capabilityRouting.js +56 -0
  168. package/dist/src/capabilityRouting.test.d.ts +1 -0
  169. package/dist/src/capabilityRouting.test.js +63 -0
  170. package/dist/src/cli-argv-preprocess.d.ts +63 -0
  171. package/dist/src/cli-argv-preprocess.js +303 -0
  172. package/dist/src/cli-argv-preprocess.test.d.ts +1 -0
  173. package/dist/src/cli-argv-preprocess.test.js +304 -0
  174. package/dist/src/cli.d.ts +79 -0
  175. package/dist/src/cli.js +3350 -0
  176. package/dist/src/cli.test.d.ts +1 -0
  177. package/dist/src/cli.test.js +3041 -0
  178. package/dist/src/commanderAdapter.d.ts +21 -0
  179. package/dist/src/commanderAdapter.js +208 -0
  180. package/dist/src/commanderAdapter.test.d.ts +1 -0
  181. package/dist/src/commanderAdapter.test.js +352 -0
  182. package/dist/src/commands/auth.d.ts +40 -0
  183. package/dist/src/commands/auth.js +434 -0
  184. package/dist/src/commands/auth.test.d.ts +1 -0
  185. package/dist/src/commands/auth.test.js +252 -0
  186. package/dist/src/commands/daemon.d.ts +9 -0
  187. package/dist/src/commands/daemon.js +91 -0
  188. package/dist/src/commands/daemon.test.d.ts +1 -0
  189. package/dist/src/commands/daemon.test.js +293 -0
  190. package/dist/src/completion-fast.d.ts +22 -0
  191. package/dist/src/completion-fast.js +88 -0
  192. package/dist/src/completion-shared.d.ts +13 -0
  193. package/dist/src/completion-shared.js +61 -0
  194. package/dist/src/completion.d.ts +21 -0
  195. package/dist/src/completion.js +68 -0
  196. package/dist/src/completion.test.d.ts +1 -0
  197. package/dist/src/completion.test.js +24 -0
  198. package/dist/src/constants.d.ts +18 -0
  199. package/dist/src/constants.js +41 -0
  200. package/dist/src/convention-audit.d.ts +50 -0
  201. package/dist/src/convention-audit.js +553 -0
  202. package/dist/src/convention-audit.test.d.ts +1 -0
  203. package/dist/src/convention-audit.test.js +255 -0
  204. package/dist/src/daemon/server.d.ts +13 -0
  205. package/dist/src/daemon/server.js +185 -0
  206. package/dist/src/daemon/server.test.d.ts +1 -0
  207. package/dist/src/daemon/server.test.js +132 -0
  208. package/dist/src/daemon-utils.d.ts +18 -0
  209. package/dist/src/daemon-utils.js +37 -0
  210. package/dist/src/daemon.d.ts +1 -0
  211. package/dist/src/daemon.js +27 -0
  212. package/dist/src/daemon.test.d.ts +1 -0
  213. package/dist/src/daemon.test.js +60 -0
  214. package/dist/src/discovery.d.ts +46 -0
  215. package/dist/src/discovery.js +341 -0
  216. package/dist/src/doctor.d.ts +39 -0
  217. package/dist/src/doctor.js +168 -0
  218. package/dist/src/doctor.test.d.ts +1 -0
  219. package/dist/src/doctor.test.js +302 -0
  220. package/dist/src/download/article-download.d.ts +72 -0
  221. package/dist/src/download/article-download.js +305 -0
  222. package/dist/src/download/article-download.test.d.ts +1 -0
  223. package/dist/src/download/article-download.test.js +235 -0
  224. package/dist/src/download/index.d.ts +71 -0
  225. package/dist/src/download/index.js +363 -0
  226. package/dist/src/download/index.test.d.ts +1 -0
  227. package/dist/src/download/index.test.js +174 -0
  228. package/dist/src/download/media-download.d.ts +49 -0
  229. package/dist/src/download/media-download.js +127 -0
  230. package/dist/src/download/media-download.test.d.ts +1 -0
  231. package/dist/src/download/media-download.test.js +112 -0
  232. package/dist/src/download/progress.d.ts +36 -0
  233. package/dist/src/download/progress.js +120 -0
  234. package/dist/src/download/progress.test.d.ts +1 -0
  235. package/dist/src/download/progress.test.js +36 -0
  236. package/dist/src/electron-apps.d.ts +31 -0
  237. package/dist/src/electron-apps.js +91 -0
  238. package/dist/src/electron-apps.test.d.ts +1 -0
  239. package/dist/src/electron-apps.test.js +76 -0
  240. package/dist/src/engine.test.d.ts +1 -0
  241. package/dist/src/engine.test.js +312 -0
  242. package/dist/src/errors.d.ts +114 -0
  243. package/dist/src/errors.js +174 -0
  244. package/dist/src/errors.test.d.ts +1 -0
  245. package/dist/src/errors.test.js +109 -0
  246. package/dist/src/execution.d.ts +24 -0
  247. package/dist/src/execution.js +509 -0
  248. package/dist/src/execution.test.d.ts +1 -0
  249. package/dist/src/execution.test.js +645 -0
  250. package/dist/src/external.d.ts +49 -0
  251. package/dist/src/external.js +211 -0
  252. package/dist/src/external.test.d.ts +1 -0
  253. package/dist/src/external.test.js +110 -0
  254. package/dist/src/help.d.ts +88 -0
  255. package/dist/src/help.js +556 -0
  256. package/dist/src/help.test.d.ts +1 -0
  257. package/dist/src/help.test.js +58 -0
  258. package/dist/src/hooks.d.ts +46 -0
  259. package/dist/src/hooks.js +58 -0
  260. package/dist/src/hooks.test.d.ts +4 -0
  261. package/dist/src/hooks.test.js +92 -0
  262. package/dist/src/interceptor.d.ts +44 -0
  263. package/dist/src/interceptor.js +183 -0
  264. package/dist/src/interceptor.test.d.ts +4 -0
  265. package/dist/src/interceptor.test.js +81 -0
  266. package/dist/src/launcher.d.ts +41 -0
  267. package/dist/src/launcher.js +226 -0
  268. package/dist/src/launcher.test.d.ts +1 -0
  269. package/dist/src/launcher.test.js +153 -0
  270. package/dist/src/logger.d.ts +26 -0
  271. package/dist/src/logger.js +49 -0
  272. package/dist/src/main.d.ts +5 -0
  273. package/dist/src/main.js +177 -0
  274. package/dist/src/manifest-types.d.ts +43 -0
  275. package/dist/src/manifest-types.js +9 -0
  276. package/dist/src/node-network.d.ts +10 -0
  277. package/dist/src/node-network.js +174 -0
  278. package/dist/src/node-network.test.d.ts +1 -0
  279. package/dist/src/node-network.test.js +55 -0
  280. package/dist/src/observation/artifact.d.ts +16 -0
  281. package/dist/src/observation/artifact.js +260 -0
  282. package/dist/src/observation/artifact.test.d.ts +1 -0
  283. package/dist/src/observation/artifact.test.js +121 -0
  284. package/dist/src/observation/events.d.ts +89 -0
  285. package/dist/src/observation/events.js +1 -0
  286. package/dist/src/observation/index.d.ts +7 -0
  287. package/dist/src/observation/index.js +7 -0
  288. package/dist/src/observation/manager.d.ts +9 -0
  289. package/dist/src/observation/manager.js +27 -0
  290. package/dist/src/observation/manager.test.d.ts +1 -0
  291. package/dist/src/observation/manager.test.js +13 -0
  292. package/dist/src/observation/redaction.d.ts +11 -0
  293. package/dist/src/observation/redaction.js +81 -0
  294. package/dist/src/observation/redaction.test.d.ts +1 -0
  295. package/dist/src/observation/redaction.test.js +32 -0
  296. package/dist/src/observation/retention.d.ts +32 -0
  297. package/dist/src/observation/retention.js +160 -0
  298. package/dist/src/observation/retention.test.d.ts +1 -0
  299. package/dist/src/observation/retention.test.js +118 -0
  300. package/dist/src/observation/ring-buffer.d.ts +22 -0
  301. package/dist/src/observation/ring-buffer.js +45 -0
  302. package/dist/src/observation/ring-buffer.test.d.ts +1 -0
  303. package/dist/src/observation/ring-buffer.test.js +22 -0
  304. package/dist/src/observation/session.d.ts +25 -0
  305. package/dist/src/observation/session.js +50 -0
  306. package/dist/src/output.d.ts +14 -0
  307. package/dist/src/output.js +152 -0
  308. package/dist/src/output.test.d.ts +1 -0
  309. package/dist/src/output.test.js +53 -0
  310. package/dist/src/package-exports.test.d.ts +1 -0
  311. package/dist/src/package-exports.test.js +112 -0
  312. package/dist/src/package-paths.d.ts +8 -0
  313. package/dist/src/package-paths.js +41 -0
  314. package/dist/src/pipeline/executor.d.ts +11 -0
  315. package/dist/src/pipeline/executor.js +93 -0
  316. package/dist/src/pipeline/executor.test.d.ts +4 -0
  317. package/dist/src/pipeline/executor.test.js +182 -0
  318. package/dist/src/pipeline/index.d.ts +5 -0
  319. package/dist/src/pipeline/index.js +5 -0
  320. package/dist/src/pipeline/registry.d.ts +28 -0
  321. package/dist/src/pipeline/registry.js +55 -0
  322. package/dist/src/pipeline/steps/browser.d.ts +13 -0
  323. package/dist/src/pipeline/steps/browser.js +86 -0
  324. package/dist/src/pipeline/steps/download.d.ts +18 -0
  325. package/dist/src/pipeline/steps/download.js +252 -0
  326. package/dist/src/pipeline/steps/download.test.d.ts +1 -0
  327. package/dist/src/pipeline/steps/download.test.js +102 -0
  328. package/dist/src/pipeline/steps/fetch.d.ts +5 -0
  329. package/dist/src/pipeline/steps/fetch.js +122 -0
  330. package/dist/src/pipeline/steps/fetch.test.d.ts +1 -0
  331. package/dist/src/pipeline/steps/fetch.test.js +117 -0
  332. package/dist/src/pipeline/steps/intercept.d.ts +5 -0
  333. package/dist/src/pipeline/steps/intercept.js +50 -0
  334. package/dist/src/pipeline/steps/tap.d.ts +12 -0
  335. package/dist/src/pipeline/steps/tap.js +93 -0
  336. package/dist/src/pipeline/steps/transform.d.ts +9 -0
  337. package/dist/src/pipeline/steps/transform.js +70 -0
  338. package/dist/src/pipeline/template.d.ts +17 -0
  339. package/dist/src/pipeline/template.js +344 -0
  340. package/dist/src/pipeline/template.test.d.ts +4 -0
  341. package/dist/src/pipeline/template.test.js +197 -0
  342. package/dist/src/pipeline/transform.test.d.ts +4 -0
  343. package/dist/src/pipeline/transform.test.js +133 -0
  344. package/dist/src/plugin-manifest.d.ts +70 -0
  345. package/dist/src/plugin-manifest.js +160 -0
  346. package/dist/src/plugin-manifest.test.d.ts +4 -0
  347. package/dist/src/plugin-manifest.test.js +179 -0
  348. package/dist/src/plugin-scaffold.d.ts +28 -0
  349. package/dist/src/plugin-scaffold.js +143 -0
  350. package/dist/src/plugin-scaffold.test.d.ts +4 -0
  351. package/dist/src/plugin-scaffold.test.js +83 -0
  352. package/dist/src/plugin.d.ts +146 -0
  353. package/dist/src/plugin.js +1303 -0
  354. package/dist/src/plugin.test.d.ts +4 -0
  355. package/dist/src/plugin.test.js +1363 -0
  356. package/dist/src/registry-api.d.ts +13 -0
  357. package/dist/src/registry-api.js +10 -0
  358. package/dist/src/registry.d.ts +123 -0
  359. package/dist/src/registry.js +125 -0
  360. package/dist/src/registry.test.d.ts +4 -0
  361. package/dist/src/registry.test.js +209 -0
  362. package/dist/src/runtime-copy.test.d.ts +1 -0
  363. package/dist/src/runtime-copy.test.js +29 -0
  364. package/dist/src/runtime-detect.d.ts +31 -0
  365. package/dist/src/runtime-detect.js +47 -0
  366. package/dist/src/runtime-detect.test.d.ts +1 -0
  367. package/dist/src/runtime-detect.test.js +39 -0
  368. package/dist/src/runtime-identity.test.d.ts +1 -0
  369. package/dist/src/runtime-identity.test.js +18 -0
  370. package/dist/src/runtime.d.ts +47 -0
  371. package/dist/src/runtime.js +54 -0
  372. package/dist/src/scripts/framework.d.ts +7 -0
  373. package/dist/src/scripts/framework.js +25 -0
  374. package/dist/src/scripts/interact.d.ts +4 -0
  375. package/dist/src/scripts/interact.js +20 -0
  376. package/dist/src/scripts/store.d.ts +13 -0
  377. package/dist/src/scripts/store.js +48 -0
  378. package/dist/src/serialization.d.ts +42 -0
  379. package/dist/src/serialization.js +103 -0
  380. package/dist/src/serialization.test.d.ts +1 -0
  381. package/dist/src/serialization.test.js +78 -0
  382. package/dist/src/skills.d.ts +14 -0
  383. package/dist/src/skills.js +127 -0
  384. package/dist/src/skills.test.d.ts +1 -0
  385. package/dist/src/skills.test.js +71 -0
  386. package/dist/src/snapshotFormatter.d.ts +11 -0
  387. package/dist/src/snapshotFormatter.js +338 -0
  388. package/dist/src/snapshotFormatter.test.d.ts +7 -0
  389. package/dist/src/snapshotFormatter.test.js +521 -0
  390. package/dist/src/tui.d.ts +28 -0
  391. package/dist/src/tui.js +179 -0
  392. package/dist/src/tui.test.d.ts +1 -0
  393. package/dist/src/tui.test.js +19 -0
  394. package/dist/src/types.d.ts +236 -0
  395. package/dist/src/types.js +7 -0
  396. package/dist/src/update-check.d.ts +66 -0
  397. package/dist/src/update-check.js +206 -0
  398. package/dist/src/update-check.test.d.ts +1 -0
  399. package/dist/src/update-check.test.js +117 -0
  400. package/dist/src/utils.d.ts +57 -0
  401. package/dist/src/utils.js +152 -0
  402. package/dist/src/utils.test.d.ts +1 -0
  403. package/dist/src/utils.test.js +155 -0
  404. package/dist/src/validate.d.ts +21 -0
  405. package/dist/src/validate.js +130 -0
  406. package/dist/src/validate.test.d.ts +9 -0
  407. package/dist/src/validate.test.js +90 -0
  408. package/dist/src/verify.d.ts +26 -0
  409. package/dist/src/verify.js +67 -0
  410. package/dist/src/version.d.ts +4 -0
  411. package/dist/src/version.js +22 -0
  412. package/dist/src/weixin-download.test.d.ts +1 -0
  413. package/dist/src/weixin-download.test.js +45 -0
  414. package/package.json +4 -3
  415. package/scripts/check-package-bin.mjs +95 -0
@@ -0,0 +1,179 @@
1
+ /**
2
+ * tui.ts — Zero-dependency interactive TUI components
3
+ *
4
+ * Uses raw stdin mode + ANSI escape codes for interactive prompts.
5
+ */
6
+ import { EXIT_CODES } from './errors.js';
7
+ /**
8
+ * Interactive multi-select checkbox prompt.
9
+ *
10
+ * Controls:
11
+ * ↑/↓ or j/k — navigate
12
+ * Space — toggle selection
13
+ * a — toggle all
14
+ * Enter — confirm
15
+ * q/Esc — cancel (returns empty)
16
+ */
17
+ export async function checkboxPrompt(items, opts = {}) {
18
+ if (items.length === 0)
19
+ return [];
20
+ const { stdin, stdout } = process;
21
+ if (!stdin.isTTY) {
22
+ // Non-interactive: return all checked items
23
+ return items.filter(i => i.checked).map(i => i.value);
24
+ }
25
+ let cursor = 0;
26
+ const state = items.map(i => ({ ...i }));
27
+ function render() {
28
+ // Move cursor to start and clear
29
+ let out = '';
30
+ if (opts.title) {
31
+ out += `\n${opts.title}\n\n`;
32
+ }
33
+ for (let i = 0; i < state.length; i++) {
34
+ const item = state[i];
35
+ const pointer = i === cursor ? '❯' : ' ';
36
+ const checkbox = item.checked ? '◉' : '○';
37
+ const status = item.status ?? '';
38
+ out += ` ${pointer} ${checkbox} ${item.label}${status ? ` ${status}` : ''}\n`;
39
+ }
40
+ out += `\n ↑↓ navigate · Space toggle · a all · Enter confirm · q cancel\n`;
41
+ return out;
42
+ }
43
+ return new Promise((resolve) => {
44
+ const wasRaw = stdin.isRaw;
45
+ stdin.setRawMode(true);
46
+ stdin.resume();
47
+ stdout.write('\x1b[?25l'); // Hide cursor
48
+ let firstDraw = true;
49
+ function draw() {
50
+ // Clear previous render (skip on first draw)
51
+ if (!firstDraw) {
52
+ const lines = render().split('\n').length;
53
+ stdout.write(`\x1b[${lines}A\x1b[J`);
54
+ }
55
+ firstDraw = false;
56
+ stdout.write(render());
57
+ }
58
+ function cleanup() {
59
+ stdin.setRawMode(wasRaw ?? false);
60
+ stdin.pause();
61
+ stdin.removeListener('data', onData);
62
+ // Clear the TUI and restore cursor
63
+ const lines = render().split('\n').length;
64
+ stdout.write(`\x1b[${lines}A\x1b[J`);
65
+ stdout.write('\x1b[?25h'); // Show cursor
66
+ }
67
+ function onData(data) {
68
+ const key = data.toString();
69
+ // Arrow up / k
70
+ if (key === '\x1b[A' || key === 'k') {
71
+ cursor = (cursor - 1 + state.length) % state.length;
72
+ draw();
73
+ return;
74
+ }
75
+ // Arrow down / j
76
+ if (key === '\x1b[B' || key === 'j') {
77
+ cursor = (cursor + 1) % state.length;
78
+ draw();
79
+ return;
80
+ }
81
+ // Space — toggle
82
+ if (key === ' ') {
83
+ state[cursor].checked = !state[cursor].checked;
84
+ draw();
85
+ return;
86
+ }
87
+ // Tab — toggle and move down
88
+ if (key === '\t') {
89
+ state[cursor].checked = !state[cursor].checked;
90
+ cursor = (cursor + 1) % state.length;
91
+ draw();
92
+ return;
93
+ }
94
+ // 'a' — toggle all
95
+ if (key === 'a') {
96
+ const allChecked = state.every(i => i.checked);
97
+ for (const item of state)
98
+ item.checked = !allChecked;
99
+ draw();
100
+ return;
101
+ }
102
+ // Enter — confirm
103
+ if (key === '\r' || key === '\n') {
104
+ cleanup();
105
+ const selected = state.filter(i => i.checked).map(i => i.value);
106
+ // Show summary
107
+ stdout.write(` ✓ ${selected.length} file(s) selected\n\n`);
108
+ resolve(selected);
109
+ return;
110
+ }
111
+ // q / Esc — cancel
112
+ if (key === 'q' || key === '\x1b') {
113
+ cleanup();
114
+ stdout.write(` ✗ Cancelled\n\n`);
115
+ resolve([]);
116
+ return;
117
+ }
118
+ // Ctrl+C — exit process
119
+ if (key === '\x03') {
120
+ cleanup();
121
+ process.exit(EXIT_CODES.INTERRUPTED);
122
+ }
123
+ }
124
+ stdin.on('data', onData);
125
+ draw();
126
+ });
127
+ }
128
+ /**
129
+ * Simple yes/no confirmation prompt.
130
+ *
131
+ * In non-TTY environments, returns `defaultYes` (defaults to true) without blocking.
132
+ * In TTY, waits for a single keypress: y/Enter → true, n/Esc/q → false.
133
+ */
134
+ export async function confirmPrompt(message, defaultYes = true) {
135
+ const { stdin, stdout } = process;
136
+ if (!stdin.isTTY)
137
+ return defaultYes;
138
+ const hint = defaultYes ? '[Y/n]' : '[y/N]';
139
+ stdout.write(` ${message} ${hint} `);
140
+ return new Promise((resolve) => {
141
+ const wasRaw = stdin.isRaw;
142
+ stdin.setRawMode(true);
143
+ stdin.resume();
144
+ function cleanup() {
145
+ stdin.setRawMode(wasRaw ?? false);
146
+ stdin.pause();
147
+ stdin.removeListener('data', onData);
148
+ stdout.write('\n');
149
+ }
150
+ function onData(data) {
151
+ const key = data.toString();
152
+ // Ctrl+C
153
+ if (key === '\x03') {
154
+ cleanup();
155
+ process.exit(EXIT_CODES.INTERRUPTED);
156
+ }
157
+ // Enter — use default
158
+ if (key === '\r' || key === '\n') {
159
+ cleanup();
160
+ resolve(defaultYes);
161
+ return;
162
+ }
163
+ // y/Y — yes
164
+ if (key === 'y' || key === 'Y') {
165
+ cleanup();
166
+ resolve(true);
167
+ return;
168
+ }
169
+ // n/N/q/Esc — no
170
+ if (key === 'n' || key === 'N' || key === 'q' || key === '\x1b') {
171
+ cleanup();
172
+ resolve(false);
173
+ return;
174
+ }
175
+ // Ignore other keys
176
+ }
177
+ stdin.on('data', onData);
178
+ });
179
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,19 @@
1
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
2
+ import { confirmPrompt } from './tui.js';
3
+ describe('confirmPrompt', () => {
4
+ beforeEach(() => {
5
+ vi.restoreAllMocks();
6
+ });
7
+ it('returns defaultYes when stdin is not TTY', async () => {
8
+ const result = await confirmPrompt('Restart?', true);
9
+ expect(result).toBe(true);
10
+ });
11
+ it('returns false when defaultYes is false and non-TTY', async () => {
12
+ const result = await confirmPrompt('Restart?', false);
13
+ expect(result).toBe(false);
14
+ });
15
+ it('defaults to true when defaultYes is omitted and non-TTY', async () => {
16
+ const result = await confirmPrompt('Restart?');
17
+ expect(result).toBe(true);
18
+ });
19
+ });
@@ -0,0 +1,236 @@
1
+ /**
2
+ * Page interface: type-safe abstraction over browser page.
3
+ *
4
+ * All pipeline steps and CLI adapters should use this interface
5
+ * instead of `any` for browser interactions.
6
+ */
7
+ export interface BrowserCookie {
8
+ name: string;
9
+ value: string;
10
+ domain: string;
11
+ path?: string;
12
+ secure?: boolean;
13
+ httpOnly?: boolean;
14
+ expirationDate?: number;
15
+ }
16
+ export interface SnapshotOptions {
17
+ interactive?: boolean;
18
+ compact?: boolean;
19
+ maxDepth?: number;
20
+ raw?: boolean;
21
+ viewportExpand?: number;
22
+ maxTextLength?: number;
23
+ /** Observation backend. `dom` is the stable default; `ax` is an opt-in prototype. */
24
+ source?: 'dom' | 'ax';
25
+ }
26
+ export interface WaitOptions {
27
+ text?: string;
28
+ selector?: string;
29
+ time?: number;
30
+ timeout?: number;
31
+ }
32
+ export interface BrowserDownloadWaitResult {
33
+ downloaded: boolean;
34
+ id?: number;
35
+ filename?: string;
36
+ url?: string;
37
+ finalUrl?: string;
38
+ mime?: string;
39
+ totalBytes?: number;
40
+ state?: string;
41
+ danger?: string;
42
+ error?: string;
43
+ elapsedMs: number;
44
+ }
45
+ export interface ScreenshotOptions {
46
+ format?: 'png' | 'jpeg';
47
+ quality?: number;
48
+ fullPage?: boolean;
49
+ /** Overlay current browser-state refs on visible interactive elements. */
50
+ annotate?: boolean;
51
+ /** Override viewport width in CSS pixels for the screenshot only (cleared after). */
52
+ width?: number;
53
+ /** Override viewport height in CSS pixels for the screenshot only (ignored when fullPage). */
54
+ height?: number;
55
+ path?: string;
56
+ }
57
+ export interface FetchJsonOptions {
58
+ method?: string;
59
+ headers?: Record<string, string>;
60
+ body?: unknown;
61
+ timeoutMs?: number;
62
+ }
63
+ export type BrowserEvaluateFunction<Args extends unknown[] = unknown[], Result = unknown> = (...args: Args) => Result | Promise<Result>;
64
+ export interface IPage {
65
+ goto(url: string, options?: {
66
+ waitUntil?: 'load' | 'none';
67
+ settleMs?: number;
68
+ }): Promise<void>;
69
+ evaluate<T = any>(js: string): Promise<T>;
70
+ evaluate<Args extends unknown[], T>(fn: BrowserEvaluateFunction<Args, T>, ...args: Args): Promise<Awaited<T>>;
71
+ /** Safely evaluate JS with pre-serialized arguments — prevents injection. */
72
+ evaluateWithArgs?(js: string, args: Record<string, unknown>): Promise<any>;
73
+ /**
74
+ * Fetch JSON from inside the browser context, carrying the page's cookies.
75
+ * This is intentionally narrow: browser-context JSON fetch, not a generic
76
+ * HTTP client.
77
+ */
78
+ fetchJson(url: string, opts?: FetchJsonOptions): Promise<unknown>;
79
+ getCookies(opts?: {
80
+ domain?: string;
81
+ url?: string;
82
+ }): Promise<BrowserCookie[]>;
83
+ snapshot(opts?: SnapshotOptions): Promise<any>;
84
+ click(ref: string, opts?: {
85
+ nth?: number;
86
+ firstOnMulti?: boolean;
87
+ }): Promise<{
88
+ matches_n: number;
89
+ match_level: 'exact' | 'stable' | 'reidentified';
90
+ }>;
91
+ dblClick?(ref: string, opts?: {
92
+ nth?: number;
93
+ firstOnMulti?: boolean;
94
+ }): Promise<{
95
+ matches_n: number;
96
+ match_level: 'exact' | 'stable' | 'reidentified';
97
+ }>;
98
+ hover?(ref: string, opts?: {
99
+ nth?: number;
100
+ firstOnMulti?: boolean;
101
+ }): Promise<{
102
+ matches_n: number;
103
+ match_level: 'exact' | 'stable' | 'reidentified';
104
+ }>;
105
+ focus?(ref: string, opts?: {
106
+ nth?: number;
107
+ firstOnMulti?: boolean;
108
+ }): Promise<{
109
+ focused: boolean;
110
+ matches_n: number;
111
+ match_level: 'exact' | 'stable' | 'reidentified';
112
+ }>;
113
+ setChecked?(ref: string, checked: boolean, opts?: {
114
+ nth?: number;
115
+ firstOnMulti?: boolean;
116
+ }): Promise<{
117
+ checked: boolean;
118
+ changed: boolean;
119
+ matches_n: number;
120
+ match_level: 'exact' | 'stable' | 'reidentified';
121
+ kind?: string;
122
+ }>;
123
+ uploadFiles?(ref: string, files: string[], opts?: {
124
+ nth?: number;
125
+ firstOnMulti?: boolean;
126
+ }): Promise<{
127
+ uploaded: boolean;
128
+ files: number;
129
+ file_names: string[];
130
+ target: string;
131
+ matches_n: number;
132
+ match_level: 'exact' | 'stable' | 'reidentified';
133
+ multiple?: boolean;
134
+ accept?: string;
135
+ }>;
136
+ drag?(source: string, target: string, opts?: {
137
+ from?: {
138
+ nth?: number;
139
+ firstOnMulti?: boolean;
140
+ };
141
+ to?: {
142
+ nth?: number;
143
+ firstOnMulti?: boolean;
144
+ };
145
+ }): Promise<{
146
+ dragged: boolean;
147
+ source: string;
148
+ target: string;
149
+ source_matches_n: number;
150
+ target_matches_n: number;
151
+ source_match_level: 'exact' | 'stable' | 'reidentified';
152
+ target_match_level: 'exact' | 'stable' | 'reidentified';
153
+ }>;
154
+ typeText(ref: string, text: string, opts?: {
155
+ nth?: number;
156
+ firstOnMulti?: boolean;
157
+ }): Promise<{
158
+ matches_n: number;
159
+ match_level: 'exact' | 'stable' | 'reidentified';
160
+ }>;
161
+ fillText(ref: string, text: string, opts?: {
162
+ nth?: number;
163
+ firstOnMulti?: boolean;
164
+ }): Promise<{
165
+ filled: boolean;
166
+ verified: boolean;
167
+ expected: string;
168
+ actual: string;
169
+ length: number;
170
+ matches_n: number;
171
+ match_level: 'exact' | 'stable' | 'reidentified';
172
+ mode?: 'input' | 'textarea' | 'contenteditable';
173
+ }>;
174
+ pressKey(key: string): Promise<void>;
175
+ scrollTo(ref: string, opts?: {
176
+ nth?: number;
177
+ firstOnMulti?: boolean;
178
+ }): Promise<any>;
179
+ getFormState(): Promise<any>;
180
+ wait(options: number | WaitOptions): Promise<void>;
181
+ waitForDownload?(pattern?: string, timeoutMs?: number): Promise<BrowserDownloadWaitResult>;
182
+ tabs(): Promise<any>;
183
+ closeTab?(target?: number | string): Promise<void>;
184
+ newTab?(url?: string): Promise<string | undefined>;
185
+ selectTab(target: number | string): Promise<void>;
186
+ networkRequests(includeStatic?: boolean): Promise<any>;
187
+ consoleMessages(level?: string): Promise<any>;
188
+ scroll(direction?: string, amount?: number): Promise<void>;
189
+ autoScroll(options?: {
190
+ times?: number;
191
+ delayMs?: number;
192
+ }): Promise<void>;
193
+ installInterceptor(pattern: string): Promise<void>;
194
+ getInterceptedRequests(): Promise<any[]>;
195
+ waitForCapture(timeout?: number): Promise<void>;
196
+ screenshot(options?: ScreenshotOptions): Promise<string>;
197
+ annotatedScreenshot?(options?: ScreenshotOptions): Promise<string>;
198
+ startNetworkCapture?(pattern?: string): Promise<boolean>;
199
+ readNetworkCapture?(): Promise<unknown[]>;
200
+ /**
201
+ * Set local file paths on a file input element via CDP DOM.setFileInputFiles.
202
+ * Chrome reads the files directly — no base64 encoding or payload size limits.
203
+ */
204
+ setFileInput?(files: string[], selector?: string): Promise<void>;
205
+ /**
206
+ * Insert text via native CDP Input.insertText into the currently focused element.
207
+ * Useful for rich editors that ignore synthetic DOM value/text mutations.
208
+ */
209
+ insertText?(text: string): Promise<void>;
210
+ closeWindow?(): Promise<void>;
211
+ /** Returns the current page URL, or null if unavailable. */
212
+ getCurrentUrl?(): Promise<string | null>;
213
+ /** Returns the active page identity (targetId), or undefined if not yet resolved. */
214
+ getActivePage?(): string | undefined;
215
+ /** Bind the page object to a specific page identity (targetId). */
216
+ setActivePage?(page?: string): void;
217
+ /** Send a raw CDP command via chrome.debugger passthrough. */
218
+ cdp?(method: string, params?: Record<string, unknown>): Promise<unknown>;
219
+ /** Accept or dismiss the currently open JavaScript alert/confirm/prompt dialog. */
220
+ handleJavaScriptDialog?(accept: boolean, promptText?: string): Promise<void>;
221
+ /** List cross-origin iframe targets in snapshot order. */
222
+ frames?(): Promise<Array<{
223
+ index: number;
224
+ frameId: string;
225
+ url: string;
226
+ name: string;
227
+ }>>;
228
+ /** Evaluate JavaScript inside a cross-origin iframe identified by its frame index. */
229
+ evaluateInFrame?(js: string, frameIndex: number): Promise<unknown>;
230
+ /** Click at native coordinates via CDP Input.dispatchMouseEvent. */
231
+ nativeClick?(x: number, y: number): Promise<void>;
232
+ /** Type text via CDP Input.insertText. */
233
+ nativeType?(text: string): Promise<void>;
234
+ /** Press a key via CDP Input.dispatchKeyEvent. */
235
+ nativeKeyPress?(key: string, modifiers?: string[]): Promise<void>;
236
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Page interface: type-safe abstraction over browser page.
3
+ *
4
+ * All pipeline steps and CLI adapters should use this interface
5
+ * instead of `any` for browser interactions.
6
+ */
7
+ export {};
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Non-blocking update checker.
3
+ *
4
+ * Pattern: register exit-hook + kick-off-background-fetch
5
+ * - On startup: kick off background fetch (non-blocking)
6
+ * - On process exit: read cache, print notice if newer version exists
7
+ * - Check interval: 24 hours
8
+ * - Notice appears AFTER command output, not before (same as npm/gh/yarn)
9
+ * - Never delays or blocks the CLI command
10
+ *
11
+ * Cache is shared between the CLI process (writes latestVersion / latestExtensionVersion
12
+ * via background fetch) and the daemon process (writes currentExtensionVersion /
13
+ * extensionLastSeenAt via `recordExtensionVersion` on each hello). Writes use a
14
+ * read-merge-write pattern so neither side clobbers the other.
15
+ */
16
+ declare const EXTENSION_STALE_MS: number;
17
+ interface UpdateCache {
18
+ lastCheck?: number;
19
+ latestVersion?: string;
20
+ latestExtensionVersion?: string;
21
+ currentExtensionVersion?: string;
22
+ extensionLastSeenAt?: number;
23
+ }
24
+ interface GitHubReleaseAsset {
25
+ name: string;
26
+ }
27
+ interface GitHubRelease {
28
+ tag_name: string;
29
+ assets?: GitHubReleaseAsset[];
30
+ }
31
+ interface NoticeInputs {
32
+ cliVersion: string;
33
+ cache: UpdateCache | null;
34
+ now: number;
35
+ }
36
+ interface NoticeLines {
37
+ cli?: string;
38
+ extension?: string;
39
+ }
40
+ /** Pure function: derive notice text from cache state. Exported for tests. */
41
+ declare function buildUpdateNotices({ cliVersion, cache, now }: NoticeInputs): NoticeLines;
42
+ /**
43
+ * Register a process exit hook that prints an update notice if a newer
44
+ * version was found on the last background check.
45
+ * Notice appears after command output — same pattern as npm/gh/yarn.
46
+ * Skipped during --get-completions to avoid polluting shell completion output.
47
+ */
48
+ export declare function registerUpdateNoticeOnExit(): void;
49
+ declare function extractLatestExtensionVersionFromReleases(releases: GitHubRelease[]): string | undefined;
50
+ /**
51
+ * Kick off a background fetch to npm registry. Writes to cache for next run.
52
+ * Fully non-blocking — never awaited.
53
+ */
54
+ export declare function checkForUpdateBackground(): void;
55
+ /**
56
+ * Stash the current extension version into the shared cache. Called by the
57
+ * daemon on each hello handshake. Lets the next CLI process compare against
58
+ * the latest known release and print an exit notice without any extra I/O.
59
+ */
60
+ export declare function recordExtensionVersion(version: string): void;
61
+ /**
62
+ * Get the cached latest extension version (if available).
63
+ * Used by `webcmd doctor` to report extension updates.
64
+ */
65
+ export declare function getCachedLatestExtensionVersion(): string | undefined;
66
+ export { extractLatestExtensionVersionFromReleases as _extractLatestExtensionVersionFromReleases, buildUpdateNotices as _buildUpdateNotices, EXTENSION_STALE_MS as _EXTENSION_STALE_MS, };