@agentrhq/webcmd 0.1.2 → 0.2.1

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 (956) hide show
  1. package/README.md +196 -219
  2. package/cli-manifest.json +16205 -34869
  3. package/clis/_atlassian/shared.js +1 -1
  4. package/clis/booking/search.js +4 -4
  5. package/clis/chatgpt/ask.js +2 -2
  6. package/clis/chatgpt/utils.js +41 -42
  7. package/clis/chatgpt/utils.test.js +23 -23
  8. package/clis/chatgpt-app/ax.js +5 -5
  9. package/clis/chatgpt-app/ax.test.js +8 -8
  10. package/clis/chatgpt-app/new.js +2 -2
  11. package/clis/codex/sidebar.js +1 -1
  12. package/clis/codex/sidebar.test.js +12 -12
  13. package/clis/coingecko/top.js +3 -3
  14. package/clis/dblp/dblp.test.js +1 -1
  15. package/clis/discord-app/search.js +1 -1
  16. package/clis/discord-app/utils.js +6 -6
  17. package/clis/facebook/__fixtures__/notifications-page.html +6 -6
  18. package/clis/facebook/add-friend.js +2 -2
  19. package/clis/facebook/feed.js +18 -18
  20. package/clis/facebook/friends.js +4 -4
  21. package/clis/facebook/groups.js +3 -3
  22. package/clis/facebook/join-group.js +2 -2
  23. package/clis/facebook/marketplace-inbox.js +3 -3
  24. package/clis/facebook/marketplace-listings.js +1 -1
  25. package/clis/facebook/notifications.js +14 -15
  26. package/clis/facebook/notifications.test.js +28 -29
  27. package/clis/gemini/ask.test.js +12 -12
  28. package/clis/gemini/deep-research-result.js +2 -2
  29. package/clis/gemini/deep-research-result.test.js +2 -2
  30. package/clis/gemini/deep-research.js +2 -2
  31. package/clis/gemini/deep-research.test.js +1 -1
  32. package/clis/gemini/models.js +11 -11
  33. package/clis/gemini/models.test.js +1 -1
  34. package/clis/gemini/reply-state.test.js +89 -89
  35. package/clis/gemini/utils.js +41 -41
  36. package/clis/gemini/utils.test.js +30 -30
  37. package/clis/geogebra/utils.js +1 -1
  38. package/clis/google-scholar/search.js +3 -3
  39. package/clis/grok/delete.js +1 -1
  40. package/clis/grok/export-all.js +2 -2
  41. package/clis/grok/export.js +2 -2
  42. package/clis/grok/pin.js +3 -3
  43. package/clis/grok/utils.js +12 -12
  44. package/clis/grok/utils.test.js +2 -2
  45. package/clis/indeed/indeed.test.js +3 -3
  46. package/clis/indeed/utils.js +1 -1
  47. package/clis/instagram/post.js +19 -19
  48. package/clis/instagram/post.test.js +2 -2
  49. package/clis/instagram/reel.js +6 -6
  50. package/clis/linkedin/connect.js +3 -3
  51. package/clis/linkedin/people-search.js +4 -4
  52. package/clis/linkedin/profile-experience.js +6 -6
  53. package/clis/linkedin/profile-experience.test.js +10 -10
  54. package/clis/linkedin/profile-read.js +1 -1
  55. package/clis/linkedin/safe-send.js +1 -1
  56. package/clis/linkedin/search.js +1 -1
  57. package/clis/linkedin/shared.js +2 -2
  58. package/clis/linkedin/timeline.js +5 -5
  59. package/clis/manus/manus.test.js +2 -2
  60. package/clis/medium/feed.js +3 -3
  61. package/clis/medium/search.js +3 -3
  62. package/clis/medium/user.js +3 -3
  63. package/clis/notebooklm/auth.js +2 -2
  64. package/clis/notebooklm/note-list.test.js +4 -4
  65. package/clis/notebooklm/notes-get.test.js +8 -8
  66. package/clis/notebooklm/source-fulltext.test.js +11 -11
  67. package/clis/notebooklm/utils.js +28 -28
  68. package/clis/notebooklm/utils.test.js +10 -10
  69. package/clis/pixiv/search.test.js +3 -3
  70. package/clis/qoder/quest.js +2 -2
  71. package/clis/reddit/home.js +2 -2
  72. package/clis/reddit/hot.js +1 -1
  73. package/clis/reddit/read.js +2 -2
  74. package/clis/reddit/read.test.js +1 -1
  75. package/clis/reddit/reply.js +2 -2
  76. package/clis/reddit/whoami.js +2 -2
  77. package/clis/reuters/article-detail.js +1 -1
  78. package/clis/reuters/search.js +1 -1
  79. package/clis/slock/attachment-upload.test.js +1 -1
  80. package/clis/slock/task-convert.js +1 -1
  81. package/clis/substack/feed.js +3 -3
  82. package/clis/substack/publication.js +3 -3
  83. package/clis/substack/search.js +4 -4
  84. package/clis/tiktok/comment.js +2 -2
  85. package/clis/tiktok/follow.js +4 -4
  86. package/clis/tiktok/like.js +1 -1
  87. package/clis/tiktok/save.js +1 -1
  88. package/clis/tiktok/unfollow.js +4 -4
  89. package/clis/tiktok/unlike.js +1 -1
  90. package/clis/tiktok/unsave.js +2 -2
  91. package/clis/tiktok/write-refactor.test.js +5 -5
  92. package/clis/twitter/accept.js +3 -3
  93. package/clis/twitter/delete.js +14 -6
  94. package/clis/twitter/delete.test.js +74 -1
  95. package/clis/twitter/followers.js +1 -1
  96. package/clis/twitter/list-remove-core.js +2 -2
  97. package/clis/twitter/list-tweets.test.js +3 -3
  98. package/clis/twitter/lists.js +6 -6
  99. package/clis/twitter/lists.test.js +2 -2
  100. package/clis/twitter/reply-dm.js +1 -1
  101. package/clis/twitter/shared.test.js +4 -5
  102. package/clis/twitter/timeline.js +3 -1
  103. package/clis/twitter/timeline.test.js +4 -0
  104. package/clis/twitter/trending.js +1 -1
  105. package/clis/twitter/utils.js +1 -1
  106. package/clis/web/read.js +1 -1
  107. package/clis/web/read.test.js +2 -2
  108. package/clis/yahoo-finance/quote.js +1 -1
  109. package/clis/youtube/history.js +4 -4
  110. package/clis/youtube/transcript-group.js +1 -1
  111. package/clis/youtube/transcript-group.test.js +5 -5
  112. package/clis/youtube/transcript.js +5 -5
  113. package/clis/youtube/video.js +4 -4
  114. package/clis/youtube/video.test.js +6 -6
  115. package/dist/src/browser/analyze.test.js +13 -13
  116. package/dist/src/browser/bridge-readiness.d.ts +1 -1
  117. package/dist/src/browser/bridge-readiness.test.js +1 -1
  118. package/dist/src/browser/bridge.d.ts +1 -0
  119. package/dist/src/browser/bridge.js +6 -4
  120. package/dist/src/browser/cdp.d.ts +1 -0
  121. package/dist/src/browser/daemon-client.d.ts +2 -0
  122. package/dist/src/browser/daemon-client.js +108 -51
  123. package/dist/src/browser/daemon-client.test.js +135 -47
  124. package/dist/src/browser/daemon-transport.js +3 -19
  125. package/dist/src/browser/errors.js +11 -0
  126. package/dist/src/browser/page.d.ts +2 -1
  127. package/dist/src/browser/page.js +5 -1
  128. package/dist/src/browser/profile.d.ts +9 -0
  129. package/dist/src/browser/profile.js +18 -7
  130. package/dist/src/browser/profile.test.js +44 -0
  131. package/dist/src/browser/protocol.d.ts +3 -0
  132. package/dist/src/browser/runtime/local-cloak/actions.js +24 -10
  133. package/dist/src/browser/runtime/local-cloak/session-manager.d.ts +1 -0
  134. package/dist/src/browser/runtime/local-cloak/session-manager.js +3 -0
  135. package/dist/src/browser/runtime/local-cloak/session-manager.test.js +87 -0
  136. package/dist/src/browser.test.js +2 -2
  137. package/dist/src/cli-argv-preprocess.d.ts +2 -2
  138. package/dist/src/cli-argv-preprocess.js +2 -2
  139. package/dist/src/cli-argv-preprocess.test.js +35 -35
  140. package/dist/src/cli.js +24 -19
  141. package/dist/src/cli.test.js +59 -59
  142. package/dist/src/commanderAdapter.test.js +19 -19
  143. package/dist/src/commands/daemon.test.js +13 -13
  144. package/dist/src/constants.d.ts +2 -3
  145. package/dist/src/constants.js +3 -10
  146. package/dist/src/convention-audit.js +1 -1
  147. package/dist/src/daemon/server.js +28 -23
  148. package/dist/src/daemon/server.test.js +52 -0
  149. package/dist/src/daemon-utils.d.ts +1 -0
  150. package/dist/src/daemon-utils.js +9 -0
  151. package/dist/src/daemon.js +1 -5
  152. package/dist/src/daemon.test.js +10 -1
  153. package/dist/src/doctor.js +19 -1
  154. package/dist/src/doctor.test.js +38 -4
  155. package/dist/src/download/article-download.d.ts +3 -3
  156. package/dist/src/download/article-download.js +7 -7
  157. package/dist/src/download/article-download.test.js +6 -6
  158. package/dist/src/download/index.js +1 -1
  159. package/dist/src/download/index.test.js +1 -2
  160. package/dist/src/download/media-download.d.ts +1 -1
  161. package/dist/src/download/media-download.js +1 -1
  162. package/dist/src/electron-apps.js +0 -8
  163. package/dist/src/electron-apps.test.js +2 -11
  164. package/dist/src/errors.test.js +9 -9
  165. package/dist/src/execution.js +7 -3
  166. package/dist/src/execution.test.js +12 -0
  167. package/dist/src/external-clis.yaml +0 -37
  168. package/dist/src/external.d.ts +1 -1
  169. package/dist/src/external.js +19 -1
  170. package/dist/src/external.test.js +39 -18
  171. package/dist/src/generate-release-notes-cli.test.js +140 -0
  172. package/dist/src/help.d.ts +3 -3
  173. package/dist/src/help.test.js +8 -8
  174. package/dist/src/main.js +1 -6
  175. package/dist/src/manifest-types.d.ts +1 -1
  176. package/dist/src/node-network.test.js +5 -5
  177. package/dist/src/output.js +1 -1
  178. package/dist/src/pipeline/steps/download.test.js +3 -3
  179. package/dist/src/registry.test.js +2 -2
  180. package/dist/src/release-notes.d.ts +38 -0
  181. package/dist/src/release-notes.js +99 -0
  182. package/dist/src/release-notes.test.d.ts +1 -0
  183. package/dist/src/release-notes.test.js +61 -0
  184. package/dist/src/runtime-identity.test.js +0 -8
  185. package/dist/src/runtime.d.ts +2 -0
  186. package/dist/src/runtime.js +1 -0
  187. package/dist/src/serialization.test.js +7 -7
  188. package/dist/src/snapshotFormatter.js +3 -5
  189. package/dist/src/snapshotFormatter.test.d.ts +1 -1
  190. package/dist/src/snapshotFormatter.test.js +50 -50
  191. package/dist/src/tui.js +1 -1
  192. package/package.json +5 -2
  193. package/scripts/generate-release-notes.ts +234 -0
  194. package/scripts/postinstall.js +1 -1
  195. package/scripts/silent-column-drop-baseline.json +0 -498
  196. package/scripts/typed-error-lint-baseline.json +0 -464
  197. package/skills/webcmd-adapter-author/SKILL.md +216 -213
  198. package/skills/webcmd-adapter-author/references/adapter-template.md +206 -399
  199. package/skills/webcmd-adapter-author/references/api-discovery.md +111 -220
  200. package/skills/webcmd-adapter-author/references/coverage-matrix.md +34 -68
  201. package/skills/webcmd-adapter-author/references/field-conventions.md +84 -167
  202. package/skills/webcmd-adapter-author/references/field-decode-playbook.md +60 -146
  203. package/skills/webcmd-adapter-author/references/jsdom-fixture-pattern.md +111 -178
  204. package/skills/webcmd-adapter-author/references/output-design.md +47 -125
  205. package/skills/webcmd-adapter-author/references/site-memory.md +116 -166
  206. package/skills/webcmd-adapter-author/references/site-recon.md +74 -78
  207. package/skills/webcmd-adapter-author/references/strategy-selection.md +80 -124
  208. package/skills/webcmd-adapter-author/references/success-rate-pitfalls.md +80 -105
  209. package/skills/webcmd-adapter-author/references/typed-errors.md +87 -178
  210. package/skills/webcmd-autofix/SKILL.md +136 -143
  211. package/skills/webcmd-sitemap-author/SKILL.md +58 -67
  212. package/skills/webcmd-sitemap-author/references/sitemap-schema.md +354 -494
  213. package/skills/webcmd-usage/SKILL.md +106 -97
  214. package/clis/12306/auth.js +0 -59
  215. package/clis/12306/me.js +0 -73
  216. package/clis/12306/orders.js +0 -96
  217. package/clis/12306/passengers.js +0 -90
  218. package/clis/12306/price.js +0 -166
  219. package/clis/12306/stations.js +0 -66
  220. package/clis/12306/train.js +0 -91
  221. package/clis/12306/trains.js +0 -166
  222. package/clis/12306/utils.js +0 -272
  223. package/clis/12306/utils.test.js +0 -424
  224. package/clis/1688/assets.js +0 -205
  225. package/clis/1688/assets.test.js +0 -39
  226. package/clis/1688/auth.js +0 -46
  227. package/clis/1688/download.js +0 -77
  228. package/clis/1688/download.test.js +0 -31
  229. package/clis/1688/item.js +0 -188
  230. package/clis/1688/item.test.js +0 -67
  231. package/clis/1688/search.js +0 -310
  232. package/clis/1688/search.test.js +0 -75
  233. package/clis/1688/shared.js +0 -557
  234. package/clis/1688/shared.test.js +0 -57
  235. package/clis/1688/store.js +0 -227
  236. package/clis/1688/store.test.js +0 -62
  237. package/clis/1point3acres/auth.js +0 -52
  238. package/clis/1point3acres/digest.js +0 -35
  239. package/clis/1point3acres/forum.js +0 -51
  240. package/clis/1point3acres/forums.js +0 -44
  241. package/clis/1point3acres/hot.js +0 -35
  242. package/clis/1point3acres/latest.js +0 -35
  243. package/clis/1point3acres/notifications.js +0 -64
  244. package/clis/1point3acres/search.js +0 -71
  245. package/clis/1point3acres/thread.js +0 -117
  246. package/clis/1point3acres/user.js +0 -77
  247. package/clis/1point3acres/utils.js +0 -247
  248. package/clis/36kr/article.js +0 -66
  249. package/clis/36kr/article.test.js +0 -46
  250. package/clis/36kr/hot.js +0 -87
  251. package/clis/36kr/hot.test.js +0 -15
  252. package/clis/36kr/news.js +0 -52
  253. package/clis/36kr/news.test.js +0 -85
  254. package/clis/36kr/search.js +0 -79
  255. package/clis/51job/company.js +0 -126
  256. package/clis/51job/detail.js +0 -109
  257. package/clis/51job/hot.js +0 -56
  258. package/clis/51job/search.js +0 -80
  259. package/clis/51job/utils.js +0 -302
  260. package/clis/51job/utils.test.js +0 -69
  261. package/clis/aibase/news.js +0 -110
  262. package/clis/aibase/news.test.js +0 -59
  263. package/clis/autohome/__fixtures__/catalog.html +0 -11
  264. package/clis/autohome/__fixtures__/koubei.json +0 -116
  265. package/clis/autohome/autohome.test.js +0 -115
  266. package/clis/autohome/brand.js +0 -108
  267. package/clis/autohome/score.js +0 -103
  268. package/clis/autohome/utils.js +0 -157
  269. package/clis/baidu-scholar/search.js +0 -87
  270. package/clis/baidu-scholar/search.test.js +0 -23
  271. package/clis/bilibili/auth.js +0 -36
  272. package/clis/bilibili/comment.js +0 -107
  273. package/clis/bilibili/comment.test.js +0 -153
  274. package/clis/bilibili/comments.js +0 -136
  275. package/clis/bilibili/comments.test.js +0 -142
  276. package/clis/bilibili/download.js +0 -178
  277. package/clis/bilibili/download.test.js +0 -173
  278. package/clis/bilibili/dynamic.js +0 -34
  279. package/clis/bilibili/dynamic.test.js +0 -68
  280. package/clis/bilibili/favorite.js +0 -47
  281. package/clis/bilibili/feed.js +0 -220
  282. package/clis/bilibili/follow.js +0 -140
  283. package/clis/bilibili/follow.test.js +0 -203
  284. package/clis/bilibili/following.js +0 -44
  285. package/clis/bilibili/history.js +0 -45
  286. package/clis/bilibili/hot.js +0 -40
  287. package/clis/bilibili/hot.test.js +0 -17
  288. package/clis/bilibili/me.js +0 -13
  289. package/clis/bilibili/ranking.js +0 -25
  290. package/clis/bilibili/search.js +0 -24
  291. package/clis/bilibili/subtitle.js +0 -141
  292. package/clis/bilibili/subtitle.test.js +0 -240
  293. package/clis/bilibili/summary.js +0 -167
  294. package/clis/bilibili/summary.test.js +0 -210
  295. package/clis/bilibili/unfollow.js +0 -121
  296. package/clis/bilibili/user-videos.js +0 -39
  297. package/clis/bilibili/utils.js +0 -273
  298. package/clis/bilibili/utils.test.js +0 -97
  299. package/clis/bilibili/video.js +0 -155
  300. package/clis/bilibili/video.test.js +0 -308
  301. package/clis/boss/auth.js +0 -47
  302. package/clis/boss/batchgreet.js +0 -61
  303. package/clis/boss/chatlist.js +0 -116
  304. package/clis/boss/chatlist.test.js +0 -211
  305. package/clis/boss/chatmsg.js +0 -117
  306. package/clis/boss/chatmsg.test.js +0 -230
  307. package/clis/boss/detail.js +0 -63
  308. package/clis/boss/exchange.js +0 -46
  309. package/clis/boss/greet.js +0 -49
  310. package/clis/boss/invite.js +0 -64
  311. package/clis/boss/joblist.js +0 -31
  312. package/clis/boss/mark.js +0 -70
  313. package/clis/boss/recommend.js +0 -45
  314. package/clis/boss/resume.js +0 -150
  315. package/clis/boss/search.js +0 -197
  316. package/clis/boss/search.test.js +0 -78
  317. package/clis/boss/send.js +0 -44
  318. package/clis/boss/stats.js +0 -66
  319. package/clis/boss/utils.js +0 -468
  320. package/clis/boss/utils.test.js +0 -34
  321. package/clis/chaoxing/assignments.js +0 -76
  322. package/clis/chaoxing/auth.js +0 -54
  323. package/clis/chaoxing/exams.js +0 -75
  324. package/clis/chaoxing/utils.js +0 -223
  325. package/clis/chaoxing/utils.test.js +0 -45
  326. package/clis/cnki/search.js +0 -61
  327. package/clis/cnki/search.test.js +0 -18
  328. package/clis/ctrip/auth.js +0 -50
  329. package/clis/ctrip/ctrip.test.js +0 -719
  330. package/clis/ctrip/flight.js +0 -136
  331. package/clis/ctrip/hotel-search.js +0 -132
  332. package/clis/ctrip/hotel-suggest.js +0 -45
  333. package/clis/ctrip/search.js +0 -41
  334. package/clis/ctrip/utils.js +0 -473
  335. package/clis/deepseek/ask.js +0 -158
  336. package/clis/deepseek/ask.test.js +0 -399
  337. package/clis/deepseek/auth.js +0 -54
  338. package/clis/deepseek/detail.js +0 -46
  339. package/clis/deepseek/detail.test.js +0 -81
  340. package/clis/deepseek/history.js +0 -27
  341. package/clis/deepseek/new.js +0 -33
  342. package/clis/deepseek/read.js +0 -25
  343. package/clis/deepseek/send.js +0 -140
  344. package/clis/deepseek/send.test.js +0 -107
  345. package/clis/deepseek/status.js +0 -26
  346. package/clis/deepseek/utils.js +0 -487
  347. package/clis/deepseek/utils.test.js +0 -370
  348. package/clis/dianping/__fixtures__/search.html +0 -168
  349. package/clis/dianping/__fixtures__/shop.html +0 -6
  350. package/clis/dianping/auth.js +0 -49
  351. package/clis/dianping/cityResolver.js +0 -185
  352. package/clis/dianping/dianping.test.js +0 -578
  353. package/clis/dianping/search.js +0 -157
  354. package/clis/dianping/shop.js +0 -173
  355. package/clis/dianping/utils.js +0 -157
  356. package/clis/dongchedi/__fixtures__/search.json +0 -60
  357. package/clis/dongchedi/__fixtures__/series-detail.json +0 -911
  358. package/clis/dongchedi/__fixtures__/series-score.json +0 -1396
  359. package/clis/dongchedi/dongchedi.test.js +0 -191
  360. package/clis/dongchedi/koubei.js +0 -85
  361. package/clis/dongchedi/models.js +0 -91
  362. package/clis/dongchedi/score.js +0 -83
  363. package/clis/dongchedi/search.js +0 -83
  364. package/clis/dongchedi/series.js +0 -87
  365. package/clis/dongchedi/specs.js +0 -115
  366. package/clis/dongchedi/utils.js +0 -180
  367. package/clis/douban/auth.js +0 -50
  368. package/clis/douban/book-hot.js +0 -15
  369. package/clis/douban/download.js +0 -68
  370. package/clis/douban/download.test.js +0 -170
  371. package/clis/douban/marks.js +0 -116
  372. package/clis/douban/movie-hot.js +0 -15
  373. package/clis/douban/movie-hot.test.js +0 -14
  374. package/clis/douban/photos.js +0 -35
  375. package/clis/douban/reviews.js +0 -107
  376. package/clis/douban/search.js +0 -18
  377. package/clis/douban/search.test.js +0 -11
  378. package/clis/douban/subject.js +0 -46
  379. package/clis/douban/subject.test.js +0 -11
  380. package/clis/douban/top250.js +0 -68
  381. package/clis/douban/utils.js +0 -657
  382. package/clis/douban/utils.test.js +0 -488
  383. package/clis/doubao/ask.js +0 -40
  384. package/clis/doubao/auth.js +0 -66
  385. package/clis/doubao/detail.js +0 -35
  386. package/clis/doubao/detail.test.js +0 -42
  387. package/clis/doubao/history.js +0 -30
  388. package/clis/doubao/history.test.js +0 -37
  389. package/clis/doubao/meeting-summary.js +0 -41
  390. package/clis/doubao/meeting-transcript.js +0 -38
  391. package/clis/doubao/new.js +0 -22
  392. package/clis/doubao/read.js +0 -21
  393. package/clis/doubao/send.js +0 -24
  394. package/clis/doubao/status.js +0 -26
  395. package/clis/doubao/utils.js +0 -1156
  396. package/clis/doubao/utils.test.js +0 -396
  397. package/clis/doubao-app/ask.js +0 -54
  398. package/clis/doubao-app/dump.js +0 -25
  399. package/clis/doubao-app/new.js +0 -21
  400. package/clis/doubao-app/read.js +0 -19
  401. package/clis/doubao-app/screenshot.js +0 -19
  402. package/clis/doubao-app/send.js +0 -28
  403. package/clis/doubao-app/status.js +0 -17
  404. package/clis/doubao-app/utils.js +0 -110
  405. package/clis/douyin/_shared/browser-fetch.js +0 -66
  406. package/clis/douyin/_shared/browser-fetch.test.js +0 -64
  407. package/clis/douyin/_shared/creation-id.js +0 -5
  408. package/clis/douyin/_shared/creation-id.test.js +0 -22
  409. package/clis/douyin/_shared/evaluate-result.js +0 -16
  410. package/clis/douyin/_shared/imagex-upload.js +0 -53
  411. package/clis/douyin/_shared/imagex-upload.test.js +0 -87
  412. package/clis/douyin/_shared/public-api.js +0 -29
  413. package/clis/douyin/_shared/sts2.js +0 -21
  414. package/clis/douyin/_shared/sts2.test.js +0 -27
  415. package/clis/douyin/_shared/text-extra.js +0 -15
  416. package/clis/douyin/_shared/text-extra.test.js +0 -37
  417. package/clis/douyin/_shared/timing.js +0 -22
  418. package/clis/douyin/_shared/timing.test.js +0 -28
  419. package/clis/douyin/_shared/tos-upload-short-read.test.js +0 -83
  420. package/clis/douyin/_shared/tos-upload.js +0 -331
  421. package/clis/douyin/_shared/tos-upload.test.js +0 -229
  422. package/clis/douyin/_shared/transcode.js +0 -45
  423. package/clis/douyin/_shared/transcode.test.js +0 -91
  424. package/clis/douyin/_shared/vod-upload.js +0 -212
  425. package/clis/douyin/_shared/vod-upload.test.js +0 -38
  426. package/clis/douyin/activities.js +0 -23
  427. package/clis/douyin/activities.test.js +0 -55
  428. package/clis/douyin/auth.js +0 -39
  429. package/clis/douyin/collections.js +0 -23
  430. package/clis/douyin/collections.test.js +0 -45
  431. package/clis/douyin/delete.js +0 -152
  432. package/clis/douyin/delete.test.js +0 -100
  433. package/clis/douyin/draft.js +0 -355
  434. package/clis/douyin/draft.test.js +0 -335
  435. package/clis/douyin/drafts.js +0 -24
  436. package/clis/douyin/drafts.test.js +0 -11
  437. package/clis/douyin/hashtag.js +0 -114
  438. package/clis/douyin/hashtag.test.js +0 -171
  439. package/clis/douyin/location.js +0 -25
  440. package/clis/douyin/location.test.js +0 -23
  441. package/clis/douyin/profile.js +0 -29
  442. package/clis/douyin/profile.test.js +0 -46
  443. package/clis/douyin/publish-upload-id.test.js +0 -206
  444. package/clis/douyin/publish.js +0 -341
  445. package/clis/douyin/publish.test.js +0 -38
  446. package/clis/douyin/search.js +0 -308
  447. package/clis/douyin/search.test.js +0 -307
  448. package/clis/douyin/stats.js +0 -28
  449. package/clis/douyin/stats.test.js +0 -22
  450. package/clis/douyin/update.js +0 -32
  451. package/clis/douyin/update.test.js +0 -11
  452. package/clis/douyin/user-videos.js +0 -82
  453. package/clis/douyin/user-videos.test.js +0 -151
  454. package/clis/douyin/videos.js +0 -52
  455. package/clis/douyin/videos.test.js +0 -54
  456. package/clis/eastmoney/_secid.js +0 -78
  457. package/clis/eastmoney/announcement.js +0 -53
  458. package/clis/eastmoney/convertible.js +0 -74
  459. package/clis/eastmoney/etf.js +0 -66
  460. package/clis/eastmoney/holders.js +0 -79
  461. package/clis/eastmoney/hot-rank.js +0 -51
  462. package/clis/eastmoney/hot-rank.test.js +0 -59
  463. package/clis/eastmoney/index-board.js +0 -97
  464. package/clis/eastmoney/kline.js +0 -88
  465. package/clis/eastmoney/kuaixun.js +0 -55
  466. package/clis/eastmoney/longhu.js +0 -68
  467. package/clis/eastmoney/money-flow.js +0 -79
  468. package/clis/eastmoney/northbound.js +0 -58
  469. package/clis/eastmoney/quote.js +0 -108
  470. package/clis/eastmoney/rank.js +0 -95
  471. package/clis/eastmoney/sectors.js +0 -77
  472. package/clis/flomo/auth.js +0 -55
  473. package/clis/flomo/memos.js +0 -228
  474. package/clis/flomo/memos.test.js +0 -144
  475. package/clis/gitee/auth.js +0 -41
  476. package/clis/gitee/index.js +0 -3
  477. package/clis/gitee/search.js +0 -137
  478. package/clis/gitee/search.test.js +0 -65
  479. package/clis/gitee/trending.js +0 -568
  480. package/clis/gitee/user.js +0 -200
  481. package/clis/gitee/user.test.js +0 -63
  482. package/clis/gov-law/commands.test.js +0 -39
  483. package/clis/gov-law/recent.js +0 -22
  484. package/clis/gov-law/search.js +0 -41
  485. package/clis/gov-law/shared.js +0 -51
  486. package/clis/gov-policy/__fixtures__/recent.html +0 -16
  487. package/clis/gov-policy/__fixtures__/search.html +0 -41
  488. package/clis/gov-policy/gov-policy.test.js +0 -224
  489. package/clis/gov-policy/recent.js +0 -90
  490. package/clis/gov-policy/search.js +0 -91
  491. package/clis/gov-policy/utils.js +0 -54
  492. package/clis/guazi/__fixtures__/detail.html +0 -7
  493. package/clis/guazi/__fixtures__/list.html +0 -5
  494. package/clis/guazi/browse.js +0 -95
  495. package/clis/guazi/car.js +0 -110
  496. package/clis/guazi/guazi.test.js +0 -126
  497. package/clis/guazi/utils.js +0 -133
  498. package/clis/huodongxing/events.js +0 -322
  499. package/clis/huodongxing/events.test.js +0 -296
  500. package/clis/hupu/__fixtures__/hot-home.html +0 -64
  501. package/clis/hupu/auth.js +0 -47
  502. package/clis/hupu/detail.js +0 -72
  503. package/clis/hupu/hot.js +0 -163
  504. package/clis/hupu/hot.test.js +0 -224
  505. package/clis/hupu/like.js +0 -76
  506. package/clis/hupu/mentions.js +0 -160
  507. package/clis/hupu/reply.js +0 -72
  508. package/clis/hupu/search.js +0 -60
  509. package/clis/hupu/unlike.js +0 -76
  510. package/clis/hupu/utils.js +0 -319
  511. package/clis/jd/add-cart.js +0 -72
  512. package/clis/jd/auth.js +0 -46
  513. package/clis/jd/cart.js +0 -80
  514. package/clis/jd/commands.test.js +0 -41
  515. package/clis/jd/detail.js +0 -63
  516. package/clis/jd/item.js +0 -730
  517. package/clis/jd/item.test.js +0 -354
  518. package/clis/jd/item.test.ts +0 -517
  519. package/clis/jd/reviews.js +0 -55
  520. package/clis/jd/search.js +0 -66
  521. package/clis/jianyu/auth.js +0 -62
  522. package/clis/jianyu/detail.js +0 -21
  523. package/clis/jianyu/search.js +0 -634
  524. package/clis/jianyu/search.test.js +0 -153
  525. package/clis/jianyu/shared/china-bid-search.js +0 -165
  526. package/clis/jianyu/shared/procurement-contract.js +0 -324
  527. package/clis/jianyu/shared/procurement-contract.test.js +0 -72
  528. package/clis/jianyu/shared/procurement-detail.js +0 -107
  529. package/clis/jianyu/shared/procurement-detail.test.js +0 -84
  530. package/clis/jike/auth.js +0 -48
  531. package/clis/jike/comment.js +0 -107
  532. package/clis/jike/create.js +0 -106
  533. package/clis/jike/feed.js +0 -68
  534. package/clis/jike/like.js +0 -61
  535. package/clis/jike/notifications.js +0 -169
  536. package/clis/jike/post.js +0 -72
  537. package/clis/jike/read.test.js +0 -86
  538. package/clis/jike/repost.js +0 -103
  539. package/clis/jike/search.js +0 -68
  540. package/clis/jike/topic.js +0 -65
  541. package/clis/jike/user.js +0 -65
  542. package/clis/jike/utils.js +0 -25
  543. package/clis/jimeng/auth.js +0 -46
  544. package/clis/jimeng/generate.js +0 -84
  545. package/clis/jimeng/history.js +0 -48
  546. package/clis/jimeng/new.js +0 -44
  547. package/clis/jimeng/workspaces.js +0 -42
  548. package/clis/juejin/hot.js +0 -37
  549. package/clis/juejin/juejin.test.js +0 -241
  550. package/clis/juejin/recommend.js +0 -61
  551. package/clis/juejin/utils.js +0 -199
  552. package/clis/ke/auth.js +0 -46
  553. package/clis/ke/chengjiao.js +0 -78
  554. package/clis/ke/ershoufang.js +0 -101
  555. package/clis/ke/utils.js +0 -104
  556. package/clis/ke/xiaoqu.js +0 -78
  557. package/clis/ke/zufang.js +0 -95
  558. package/clis/kimi/_utils.js +0 -110
  559. package/clis/kimi/audit-extras.js +0 -268
  560. package/clis/kimi/auth.js +0 -57
  561. package/clis/kimi/chat.js +0 -470
  562. package/clis/kimi/kimi.test.js +0 -187
  563. package/clis/kimi/storage.js +0 -169
  564. package/clis/kimi/ui.js +0 -314
  565. package/clis/kimi/usage.js +0 -144
  566. package/clis/linux-do/auth.js +0 -55
  567. package/clis/linux-do/categories.js +0 -50
  568. package/clis/linux-do/feed.js +0 -395
  569. package/clis/linux-do/feed.test.js +0 -153
  570. package/clis/linux-do/search.js +0 -29
  571. package/clis/linux-do/tags.js +0 -28
  572. package/clis/linux-do/topic-content.js +0 -155
  573. package/clis/linux-do/topic-content.test.js +0 -59
  574. package/clis/linux-do/topic.js +0 -53
  575. package/clis/linux-do/user-posts.js +0 -57
  576. package/clis/linux-do/user-topics.js +0 -37
  577. package/clis/maimai/auth.js +0 -47
  578. package/clis/maimai/search-talents.js +0 -192
  579. package/clis/maimai/search-talents.test.js +0 -29
  580. package/clis/mubu/doc.js +0 -41
  581. package/clis/mubu/docs.js +0 -44
  582. package/clis/mubu/notes.js +0 -245
  583. package/clis/mubu/recent.js +0 -28
  584. package/clis/mubu/search.js +0 -63
  585. package/clis/mubu/utils.js +0 -304
  586. package/clis/nowcoder/auth.js +0 -65
  587. package/clis/nowcoder/companies.js +0 -24
  588. package/clis/nowcoder/creators.js +0 -28
  589. package/clis/nowcoder/detail.js +0 -62
  590. package/clis/nowcoder/experience.js +0 -37
  591. package/clis/nowcoder/hot.js +0 -25
  592. package/clis/nowcoder/jobs.js +0 -22
  593. package/clis/nowcoder/notifications.js +0 -30
  594. package/clis/nowcoder/papers.js +0 -41
  595. package/clis/nowcoder/practice.js +0 -38
  596. package/clis/nowcoder/recommend.js +0 -31
  597. package/clis/nowcoder/referral.js +0 -40
  598. package/clis/nowcoder/salary.js +0 -41
  599. package/clis/nowcoder/search.js +0 -50
  600. package/clis/nowcoder/suggest.js +0 -34
  601. package/clis/nowcoder/topics.js +0 -28
  602. package/clis/nowcoder/trending.js +0 -26
  603. package/clis/ones/common.js +0 -144
  604. package/clis/ones/enrich-tasks.js +0 -37
  605. package/clis/ones/login.js +0 -81
  606. package/clis/ones/logout.js +0 -18
  607. package/clis/ones/me.js +0 -31
  608. package/clis/ones/my-tasks.js +0 -121
  609. package/clis/ones/resolve-labels.js +0 -64
  610. package/clis/ones/task-helpers.js +0 -212
  611. package/clis/ones/task-helpers.test.js +0 -12
  612. package/clis/ones/task.js +0 -67
  613. package/clis/ones/tasks.js +0 -80
  614. package/clis/ones/token-info.js +0 -43
  615. package/clis/ones/worklog.js +0 -268
  616. package/clis/ones/worklog.test.js +0 -20
  617. package/clis/powerchina/auth.js +0 -52
  618. package/clis/powerchina/search.js +0 -251
  619. package/clis/powerchina/search.test.js +0 -93
  620. package/clis/quark/auth.js +0 -47
  621. package/clis/quark/ls.js +0 -64
  622. package/clis/quark/mkdir.js +0 -37
  623. package/clis/quark/mv.js +0 -54
  624. package/clis/quark/rename.js +0 -27
  625. package/clis/quark/rm.js +0 -25
  626. package/clis/quark/save.js +0 -81
  627. package/clis/quark/share-tree.js +0 -46
  628. package/clis/quark/utils.js +0 -146
  629. package/clis/quark/utils.test.js +0 -58
  630. package/clis/qwen/ask.js +0 -104
  631. package/clis/qwen/ask.test.js +0 -36
  632. package/clis/qwen/auth.js +0 -56
  633. package/clis/qwen/detail.js +0 -62
  634. package/clis/qwen/history.js +0 -61
  635. package/clis/qwen/image.js +0 -179
  636. package/clis/qwen/new.js +0 -23
  637. package/clis/qwen/read.js +0 -41
  638. package/clis/qwen/send.js +0 -55
  639. package/clis/qwen/status.js +0 -37
  640. package/clis/qwen/utils.js +0 -461
  641. package/clis/qwen/utils.test.js +0 -128
  642. package/clis/rednote/auth.js +0 -52
  643. package/clis/rednote/comments.js +0 -85
  644. package/clis/rednote/download.js +0 -59
  645. package/clis/rednote/feed.js +0 -27
  646. package/clis/rednote/navigation.test.js +0 -26
  647. package/clis/rednote/note.js +0 -68
  648. package/clis/rednote/notifications.js +0 -139
  649. package/clis/rednote/rednote.test.js +0 -240
  650. package/clis/rednote/search.js +0 -107
  651. package/clis/rednote/user.js +0 -55
  652. package/clis/sinablog/article.js +0 -15
  653. package/clis/sinablog/hot.js +0 -15
  654. package/clis/sinablog/search.js +0 -52
  655. package/clis/sinablog/user.js +0 -16
  656. package/clis/sinablog/utils.js +0 -186
  657. package/clis/sinafinance/news.js +0 -62
  658. package/clis/sinafinance/rolling-news.js +0 -41
  659. package/clis/sinafinance/stock-rank.js +0 -66
  660. package/clis/sinafinance/stock.js +0 -121
  661. package/clis/sinafinance/stock.test.js +0 -59
  662. package/clis/smzdm/search.js +0 -149
  663. package/clis/smzdm/search.test.js +0 -114
  664. package/clis/taobao/add-cart.js +0 -150
  665. package/clis/taobao/auth.js +0 -58
  666. package/clis/taobao/cart.js +0 -96
  667. package/clis/taobao/commands.test.js +0 -41
  668. package/clis/taobao/detail.js +0 -71
  669. package/clis/taobao/reviews.js +0 -77
  670. package/clis/taobao/search.js +0 -97
  671. package/clis/tdx/hot-rank.js +0 -48
  672. package/clis/tdx/hot-rank.test.js +0 -59
  673. package/clis/ths/hot-rank.js +0 -50
  674. package/clis/ths/hot-rank.test.js +0 -64
  675. package/clis/tieba/commands.test.js +0 -79
  676. package/clis/tieba/hot.js +0 -48
  677. package/clis/tieba/posts.js +0 -86
  678. package/clis/tieba/read.js +0 -141
  679. package/clis/tieba/search.js +0 -109
  680. package/clis/tieba/utils.js +0 -240
  681. package/clis/tieba/utils.test.js +0 -290
  682. package/clis/toutiao/articles.js +0 -55
  683. package/clis/toutiao/auth.js +0 -70
  684. package/clis/toutiao/hot.js +0 -63
  685. package/clis/toutiao/toutiao.test.js +0 -378
  686. package/clis/toutiao/utils.js +0 -161
  687. package/clis/trae-cn/activity.js +0 -22
  688. package/clis/trae-cn/approve.js +0 -52
  689. package/clis/trae-cn/ask.js +0 -99
  690. package/clis/trae-cn/dump.js +0 -5
  691. package/clis/trae-cn/export.js +0 -40
  692. package/clis/trae-cn/model.js +0 -22
  693. package/clis/trae-cn/new.js +0 -63
  694. package/clis/trae-cn/read.js +0 -23
  695. package/clis/trae-cn/screenshot.js +0 -5
  696. package/clis/trae-cn/select-model.js +0 -25
  697. package/clis/trae-cn/send.js +0 -23
  698. package/clis/trae-cn/setup.js +0 -75
  699. package/clis/trae-cn/status.js +0 -27
  700. package/clis/trae-cn/targets.js +0 -96
  701. package/clis/trae-cn/trae-cn.test.js +0 -412
  702. package/clis/trae-cn/utils.js +0 -750
  703. package/clis/trae-cn/watch.js +0 -119
  704. package/clis/uisdc/news.js +0 -105
  705. package/clis/uisdc/news.test.js +0 -66
  706. package/clis/v2ex/auth.js +0 -44
  707. package/clis/v2ex/daily.js +0 -99
  708. package/clis/v2ex/hot.js +0 -26
  709. package/clis/v2ex/latest.js +0 -26
  710. package/clis/v2ex/me.js +0 -100
  711. package/clis/v2ex/member.js +0 -28
  712. package/clis/v2ex/node.js +0 -39
  713. package/clis/v2ex/nodes.js +0 -26
  714. package/clis/v2ex/notifications.js +0 -72
  715. package/clis/v2ex/replies.js +0 -27
  716. package/clis/v2ex/topic.js +0 -31
  717. package/clis/v2ex/user.js +0 -34
  718. package/clis/wanfang/search.js +0 -66
  719. package/clis/wanfang/search.test.js +0 -23
  720. package/clis/wechat-channels/auth.js +0 -62
  721. package/clis/wechat-channels/publish.js +0 -732
  722. package/clis/wechat-channels/publish.test.js +0 -144
  723. package/clis/weibo/auth.js +0 -53
  724. package/clis/weibo/comments.js +0 -53
  725. package/clis/weibo/delete.js +0 -172
  726. package/clis/weibo/delete.test.js +0 -94
  727. package/clis/weibo/envelope.test.js +0 -85
  728. package/clis/weibo/favorites.js +0 -170
  729. package/clis/weibo/favorites.test.js +0 -114
  730. package/clis/weibo/feed.js +0 -69
  731. package/clis/weibo/hot.js +0 -39
  732. package/clis/weibo/me.js +0 -75
  733. package/clis/weibo/post.js +0 -75
  734. package/clis/weibo/publish.js +0 -306
  735. package/clis/weibo/publish.test.js +0 -192
  736. package/clis/weibo/search.js +0 -80
  737. package/clis/weibo/user-posts.js +0 -234
  738. package/clis/weibo/user-posts.test.js +0 -92
  739. package/clis/weibo/user.js +0 -63
  740. package/clis/weibo/utils.js +0 -59
  741. package/clis/weibo/utils.test.js +0 -36
  742. package/clis/weixin/create-draft.js +0 -226
  743. package/clis/weixin/download.js +0 -371
  744. package/clis/weixin/download.test.js +0 -106
  745. package/clis/weixin/drafts.js +0 -66
  746. package/clis/weixin/drafts.test.js +0 -69
  747. package/clis/weixin/search.js +0 -157
  748. package/clis/weixin/search.test.js +0 -227
  749. package/clis/weread/ai-outline.js +0 -171
  750. package/clis/weread/ai-outline.test.js +0 -83
  751. package/clis/weread/auth.js +0 -59
  752. package/clis/weread/book-search.js +0 -438
  753. package/clis/weread/book-search.test.js +0 -242
  754. package/clis/weread/book.js +0 -233
  755. package/clis/weread/commands.test.js +0 -398
  756. package/clis/weread/highlights.js +0 -24
  757. package/clis/weread/notebooks.js +0 -22
  758. package/clis/weread/notes.js +0 -30
  759. package/clis/weread/private-api-regression.test.js +0 -369
  760. package/clis/weread/ranking.js +0 -29
  761. package/clis/weread/search-regression.test.js +0 -494
  762. package/clis/weread/search.js +0 -186
  763. package/clis/weread/shelf.js +0 -66
  764. package/clis/weread/utils.js +0 -321
  765. package/clis/weread/utils.test.js +0 -128
  766. package/clis/weread-official/book.js +0 -135
  767. package/clis/weread-official/commands.test.js +0 -385
  768. package/clis/weread-official/discover.js +0 -107
  769. package/clis/weread-official/list-apis.js +0 -95
  770. package/clis/weread-official/notes.js +0 -171
  771. package/clis/weread-official/readdata.js +0 -158
  772. package/clis/weread-official/review.js +0 -93
  773. package/clis/weread-official/search.js +0 -106
  774. package/clis/weread-official/shelf.js +0 -97
  775. package/clis/weread-official/utils.js +0 -293
  776. package/clis/weread-official/utils.test.js +0 -242
  777. package/clis/xianyu/auth.js +0 -68
  778. package/clis/xianyu/chat.js +0 -74
  779. package/clis/xianyu/chat.test.js +0 -84
  780. package/clis/xianyu/im.js +0 -322
  781. package/clis/xianyu/im.test.js +0 -253
  782. package/clis/xianyu/inbox.js +0 -96
  783. package/clis/xianyu/item.js +0 -153
  784. package/clis/xianyu/item.test.js +0 -56
  785. package/clis/xianyu/messages.js +0 -91
  786. package/clis/xianyu/publish.js +0 -485
  787. package/clis/xianyu/publish.test.js +0 -220
  788. package/clis/xianyu/reply.js +0 -82
  789. package/clis/xianyu/search.js +0 -262
  790. package/clis/xianyu/search.test.js +0 -104
  791. package/clis/xianyu/utils.js +0 -8
  792. package/clis/xiaoe/auth.js +0 -55
  793. package/clis/xiaoe/catalog.js +0 -227
  794. package/clis/xiaoe/content.js +0 -175
  795. package/clis/xiaoe/courses.js +0 -127
  796. package/clis/xiaoe/detail.js +0 -36
  797. package/clis/xiaoe/play-url.js +0 -121
  798. package/clis/xiaoe/xiaoe.test.js +0 -486
  799. package/clis/xiaohongshu/ask.js +0 -426
  800. package/clis/xiaohongshu/ask.test.js +0 -271
  801. package/clis/xiaohongshu/auth.js +0 -53
  802. package/clis/xiaohongshu/collection-helpers.js +0 -283
  803. package/clis/xiaohongshu/collection-helpers.test.js +0 -125
  804. package/clis/xiaohongshu/comments.js +0 -228
  805. package/clis/xiaohongshu/comments.test.js +0 -320
  806. package/clis/xiaohongshu/creator-note-detail.js +0 -482
  807. package/clis/xiaohongshu/creator-note-detail.test.js +0 -451
  808. package/clis/xiaohongshu/creator-notes-summary.js +0 -98
  809. package/clis/xiaohongshu/creator-notes-summary.test.js +0 -94
  810. package/clis/xiaohongshu/creator-notes.js +0 -479
  811. package/clis/xiaohongshu/creator-notes.test.js +0 -281
  812. package/clis/xiaohongshu/creator-profile.js +0 -55
  813. package/clis/xiaohongshu/creator-stats.js +0 -76
  814. package/clis/xiaohongshu/creator-stats.test.js +0 -24
  815. package/clis/xiaohongshu/delete-note.js +0 -260
  816. package/clis/xiaohongshu/delete-note.test.js +0 -172
  817. package/clis/xiaohongshu/download.js +0 -249
  818. package/clis/xiaohongshu/download.test.js +0 -339
  819. package/clis/xiaohongshu/draft-clear.js +0 -91
  820. package/clis/xiaohongshu/draft-delete.js +0 -103
  821. package/clis/xiaohongshu/draft-open.js +0 -43
  822. package/clis/xiaohongshu/draft-utils.js +0 -142
  823. package/clis/xiaohongshu/drafts.js +0 -28
  824. package/clis/xiaohongshu/drafts.test.js +0 -172
  825. package/clis/xiaohongshu/feed.js +0 -163
  826. package/clis/xiaohongshu/feed.test.js +0 -126
  827. package/clis/xiaohongshu/follow.js +0 -226
  828. package/clis/xiaohongshu/follow.test.js +0 -211
  829. package/clis/xiaohongshu/liked.js +0 -29
  830. package/clis/xiaohongshu/liked.test.js +0 -82
  831. package/clis/xiaohongshu/navigation.test.js +0 -38
  832. package/clis/xiaohongshu/note-helpers.js +0 -69
  833. package/clis/xiaohongshu/note.js +0 -104
  834. package/clis/xiaohongshu/note.test.js +0 -249
  835. package/clis/xiaohongshu/notifications.js +0 -46
  836. package/clis/xiaohongshu/publish.js +0 -1423
  837. package/clis/xiaohongshu/publish.test.js +0 -1141
  838. package/clis/xiaohongshu/saved.js +0 -29
  839. package/clis/xiaohongshu/saved.test.js +0 -143
  840. package/clis/xiaohongshu/search.js +0 -330
  841. package/clis/xiaohongshu/search.test.js +0 -325
  842. package/clis/xiaohongshu/unfollow.js +0 -285
  843. package/clis/xiaohongshu/user-helpers.js +0 -78
  844. package/clis/xiaohongshu/user-helpers.test.js +0 -160
  845. package/clis/xiaohongshu/user.js +0 -140
  846. package/clis/xiaohongshu/user.test.js +0 -141
  847. package/clis/xiaoyuzhou/auth.js +0 -303
  848. package/clis/xiaoyuzhou/auth.test.js +0 -124
  849. package/clis/xiaoyuzhou/download.js +0 -54
  850. package/clis/xiaoyuzhou/download.test.js +0 -135
  851. package/clis/xiaoyuzhou/episode.js +0 -34
  852. package/clis/xiaoyuzhou/podcast-episodes.js +0 -41
  853. package/clis/xiaoyuzhou/podcast-episodes.test.js +0 -78
  854. package/clis/xiaoyuzhou/podcast.js +0 -33
  855. package/clis/xiaoyuzhou/transcript.js +0 -77
  856. package/clis/xiaoyuzhou/transcript.test.js +0 -195
  857. package/clis/xiaoyuzhou/utils.js +0 -15
  858. package/clis/xiaoyuzhou/utils.test.js +0 -39
  859. package/clis/xueqiu/auth.js +0 -63
  860. package/clis/xueqiu/comments.js +0 -355
  861. package/clis/xueqiu/comments.test.js +0 -696
  862. package/clis/xueqiu/danjuan-utils.js +0 -126
  863. package/clis/xueqiu/danjuan-utils.test.js +0 -41
  864. package/clis/xueqiu/earnings-date.js +0 -45
  865. package/clis/xueqiu/feed.js +0 -39
  866. package/clis/xueqiu/fund-holdings.js +0 -29
  867. package/clis/xueqiu/fund-snapshot.js +0 -26
  868. package/clis/xueqiu/groups.js +0 -23
  869. package/clis/xueqiu/hot-stock.js +0 -32
  870. package/clis/xueqiu/hot.js +0 -37
  871. package/clis/xueqiu/kline.js +0 -44
  872. package/clis/xueqiu/search.js +0 -37
  873. package/clis/xueqiu/stock.js +0 -65
  874. package/clis/xueqiu/utils.js +0 -48
  875. package/clis/xueqiu/utils.test.js +0 -26
  876. package/clis/xueqiu/watchlist.js +0 -37
  877. package/clis/youdao/note.js +0 -258
  878. package/clis/youdao/note.test.js +0 -99
  879. package/clis/yuanbao/ask.js +0 -362
  880. package/clis/yuanbao/ask.test.js +0 -124
  881. package/clis/yuanbao/auth.js +0 -59
  882. package/clis/yuanbao/detail.js +0 -65
  883. package/clis/yuanbao/history.js +0 -51
  884. package/clis/yuanbao/new.js +0 -72
  885. package/clis/yuanbao/new.test.js +0 -30
  886. package/clis/yuanbao/read.js +0 -38
  887. package/clis/yuanbao/send.js +0 -57
  888. package/clis/yuanbao/shared.js +0 -341
  889. package/clis/yuanbao/shared.test.js +0 -80
  890. package/clis/yuanbao/status.js +0 -44
  891. package/clis/zhihu/answer-comments.js +0 -280
  892. package/clis/zhihu/answer-comments.test.js +0 -287
  893. package/clis/zhihu/answer-detail.js +0 -216
  894. package/clis/zhihu/answer-detail.test.js +0 -338
  895. package/clis/zhihu/answer.js +0 -54
  896. package/clis/zhihu/answer.test.js +0 -54
  897. package/clis/zhihu/auth.js +0 -59
  898. package/clis/zhihu/collection.js +0 -199
  899. package/clis/zhihu/collection.test.js +0 -337
  900. package/clis/zhihu/collections.js +0 -128
  901. package/clis/zhihu/collections.test.js +0 -182
  902. package/clis/zhihu/comment.js +0 -55
  903. package/clis/zhihu/comment.test.js +0 -50
  904. package/clis/zhihu/download.js +0 -80
  905. package/clis/zhihu/download.test.js +0 -12
  906. package/clis/zhihu/favorite.js +0 -87
  907. package/clis/zhihu/favorite.test.js +0 -59
  908. package/clis/zhihu/follow.js +0 -50
  909. package/clis/zhihu/follow.test.js +0 -42
  910. package/clis/zhihu/followers.js +0 -40
  911. package/clis/zhihu/followers.test.js +0 -42
  912. package/clis/zhihu/following.js +0 -40
  913. package/clis/zhihu/following.test.js +0 -44
  914. package/clis/zhihu/hot.js +0 -44
  915. package/clis/zhihu/like.js +0 -47
  916. package/clis/zhihu/like.test.js +0 -41
  917. package/clis/zhihu/paginate.js +0 -128
  918. package/clis/zhihu/pins.js +0 -41
  919. package/clis/zhihu/pins.test.js +0 -44
  920. package/clis/zhihu/question.js +0 -113
  921. package/clis/zhihu/question.test.js +0 -251
  922. package/clis/zhihu/recommend.js +0 -103
  923. package/clis/zhihu/recommend.test.js +0 -143
  924. package/clis/zhihu/search.js +0 -206
  925. package/clis/zhihu/search.test.js +0 -198
  926. package/clis/zhihu/target.js +0 -91
  927. package/clis/zhihu/target.test.js +0 -77
  928. package/clis/zhihu/text.js +0 -29
  929. package/clis/zhihu/text.test.js +0 -24
  930. package/clis/zhihu/user-answers.js +0 -41
  931. package/clis/zhihu/user-answers.test.js +0 -69
  932. package/clis/zhihu/user-arg.js +0 -34
  933. package/clis/zhihu/user-articles.js +0 -40
  934. package/clis/zhihu/user-articles.test.js +0 -44
  935. package/clis/zhihu/user.js +0 -59
  936. package/clis/zhihu/user.test.js +0 -73
  937. package/clis/zhihu/write-shared.js +0 -228
  938. package/clis/zhihu/write-shared.test.js +0 -176
  939. package/clis/zsxq/auth.js +0 -68
  940. package/clis/zsxq/dynamics.js +0 -48
  941. package/clis/zsxq/groups.js +0 -33
  942. package/clis/zsxq/search.js +0 -44
  943. package/clis/zsxq/search.test.js +0 -24
  944. package/clis/zsxq/topic.js +0 -50
  945. package/clis/zsxq/topic.test.js +0 -30
  946. package/clis/zsxq/topics.js +0 -26
  947. package/clis/zsxq/topics.test.js +0 -24
  948. package/clis/zsxq/utils.js +0 -233
  949. package/clis/zsxq/utils.test.js +0 -31
  950. package/dist/src/weixin-download.test.js +0 -45
  951. package/skills/webcmd-adapter-author/references/site-memory/bilibili.md +0 -70
  952. package/skills/webcmd-adapter-author/references/site-memory/eastmoney.md +0 -70
  953. package/skills/webcmd-adapter-author/references/site-memory/tonghuashun.md +0 -51
  954. package/skills/webcmd-adapter-author/references/site-memory/xueqiu.md +0 -58
  955. /package/{clis/douyin/_shared/types.js → dist/src/browser/profile.test.d.ts} +0 -0
  956. /package/dist/src/{weixin-download.test.d.ts → generate-release-notes-cli.test.d.ts} +0 -0
package/dist/src/cli.js CHANGED
@@ -36,7 +36,7 @@ import { daemonRestart, daemonStatus, daemonStop } from './commands/daemon.js';
36
36
  import { log } from './logger.js';
37
37
  import { bindTab, BrowserCommandError, sendCommand } from './browser/daemon-client.js';
38
38
  import { fetchDaemonStatus } from './browser/daemon-transport.js';
39
- import { aliasForContextId, loadProfileConfig, renameProfile, resolveProfileContextId, setDefaultProfile } from './browser/profile.js';
39
+ import { aliasForContextId, loadProfileConfig, profileRouteParams, renameProfile, resolveProfileSelection, setDefaultProfile } from './browser/profile.js';
40
40
  import { formatDaemonVersion, isDaemonStale } from './browser/daemon-version.js';
41
41
  import { DEFAULT_BROWSER_CONNECT_TIMEOUT } from './browser/config.js';
42
42
  import { CLI_COMMAND } from './brand.js';
@@ -428,7 +428,7 @@ async function resolveStoredBrowserTarget(page, scope) {
428
428
  return resolveBrowserTargetInSession(page, defaultPage, { scope, source: 'saved' });
429
429
  }
430
430
  /** Create a browser page for browser commands. Uses a named browser session for continuity. */
431
- async function getBrowserPage(session, targetPage, contextId, opts = {}) {
431
+ async function getBrowserPage(session, targetPage, profileSelection, opts = {}) {
432
432
  const { BrowserBridge } = await import('./browser/index.js');
433
433
  const bridge = new BrowserBridge();
434
434
  // Internal GC timeout for browser sessions. Not the per-command runtime timeout.
@@ -438,11 +438,11 @@ async function getBrowserPage(session, targetPage, contextId, opts = {}) {
438
438
  timeout: DEFAULT_BROWSER_CONNECT_TIMEOUT,
439
439
  session,
440
440
  surface: 'browser',
441
- ...(contextId && { contextId }),
441
+ ...profileRouteParams(profileSelection),
442
442
  ...(idleTimeout && idleTimeout > 0 && { idleTimeout }),
443
443
  windowMode: opts.windowMode ?? getBrowserWindowMode(undefined, 'foreground'),
444
444
  });
445
- const targetScope = getBrowserScope(session, contextId);
445
+ const targetScope = getBrowserScope(session, profileSelection?.contextId);
446
446
  const resolvedTargetPage = targetPage
447
447
  ? await resolveBrowserTargetInSession(page, targetPage, { scope: targetScope, source: 'explicit' })
448
448
  : await resolveStoredBrowserTarget(page, targetScope);
@@ -497,9 +497,9 @@ function getBrowserSession(command) {
497
497
  return raw.trim();
498
498
  throw new Error('<session> is a required positional argument: webcmd browser <session> <command>');
499
499
  }
500
- function getBrowserContextId(command) {
500
+ function getBrowserProfileSelection(command) {
501
501
  const raw = getCommandOption(command, 'profile');
502
- return resolveProfileContextId(typeof raw === 'string' && raw.trim() ? raw.trim() : undefined);
502
+ return resolveProfileSelection(typeof raw === 'string' && raw.trim() ? raw.trim() : undefined);
503
503
  }
504
504
  function getPageSession(page) {
505
505
  const session = page.session;
@@ -508,8 +508,11 @@ function getPageSession(page) {
508
508
  throw new Error('Browser page is missing a session');
509
509
  }
510
510
  function getPageScope(page) {
511
- const contextId = page.contextId;
512
- return getBrowserScope(getPageSession(page), typeof contextId === 'string' && contextId.trim() ? contextId.trim() : undefined);
511
+ const { contextId, preferredContextId } = page;
512
+ const selected = typeof contextId === 'string' && contextId.trim()
513
+ ? contextId.trim()
514
+ : (typeof preferredContextId === 'string' && preferredContextId.trim() ? preferredContextId.trim() : undefined);
515
+ return getBrowserScope(getPageSession(page), selected);
513
516
  }
514
517
  function snapshotMetricText(snapshot) {
515
518
  return typeof snapshot === 'string' ? snapshot : JSON.stringify(snapshot, null, 2);
@@ -882,9 +885,9 @@ Examples:
882
885
  const command = args.at(-1) instanceof Command ? args.at(-1) : undefined;
883
886
  const targetPage = getBrowserTargetId(command);
884
887
  const session = getBrowserSession(command);
885
- const contextId = getBrowserContextId(command);
888
+ const profileSelection = getBrowserProfileSelection(command);
886
889
  const windowMode = getBrowserWindowMode(command, 'foreground');
887
- page = await getBrowserPage(session, targetPage, contextId, { windowMode });
890
+ page = await getBrowserPage(session, targetPage, profileSelection, { windowMode });
888
891
  await fn(page, ...args);
889
892
  }
890
893
  catch (err) {
@@ -933,12 +936,14 @@ Examples:
933
936
  ? optsOrCommand
934
937
  : {};
935
938
  const session = getBrowserSession(command);
936
- const contextId = getBrowserContextId(command);
939
+ const profileSelection = getBrowserProfileSelection(command);
940
+ const contextId = profileSelection?.contextId;
941
+ const routing = profileRouteParams(profileSelection);
937
942
  try {
938
943
  const { BrowserBridge } = await import('./browser/index.js');
939
944
  const bridge = new BrowserBridge();
940
- await bridge.connect({ timeout: DEFAULT_BROWSER_CONNECT_TIMEOUT, session, surface: 'browser', ...(contextId && { contextId }) });
941
- await fn({ session, contextId }, opts);
945
+ await bridge.connect({ timeout: DEFAULT_BROWSER_CONNECT_TIMEOUT, session, surface: 'browser', ...routing });
946
+ await fn({ session, contextId, routing }, opts);
942
947
  }
943
948
  catch (err) {
944
949
  if (err instanceof BrowserCommandError) {
@@ -956,7 +961,7 @@ Examples:
956
961
  .description('Bind an existing Cloak runtime tab to the browser session named by <session>')
957
962
  .option('--page <id>', 'Cloak tab page id from `webcmd browser <session> tab list`')
958
963
  .option('--index <n>', 'Cloak tab index from `webcmd browser <session> tab list`')
959
- .action(browserSessionCommandAction(async ({ session, contextId }, opts) => {
964
+ .action(browserSessionCommandAction(async ({ session, contextId, routing }, opts) => {
960
965
  const page = typeof opts.page === 'string' && opts.page.trim() ? opts.page.trim() : undefined;
961
966
  const rawIndex = typeof opts.index === 'string' && opts.index.trim() ? opts.index.trim() : undefined;
962
967
  if ((page && rawIndex) || (!page && !rawIndex)) {
@@ -966,14 +971,14 @@ Examples:
966
971
  throw new BrowserCommandError('--index must be a non-negative integer.', 'invalid_request');
967
972
  }
968
973
  const index = rawIndex === undefined ? undefined : Number.parseInt(rawIndex, 10);
969
- const data = await bindTab(session, { ...(contextId && { contextId }), ...(page && { page }), ...(index !== undefined && { index }) });
974
+ const data = await bindTab(session, { ...routing, ...(page && { page }), ...(index !== undefined && { index }) });
970
975
  saveBrowserTargetState(undefined, getBrowserScope(session, contextId));
971
976
  console.log(JSON.stringify({ session, ...((data && typeof data === 'object') ? data : { data }) }, null, 2));
972
977
  }));
973
978
  browser.command('unbind')
974
979
  .description('Compatibility command; release the Cloak browser session named by <session>')
975
- .action(browserSessionCommandAction(async ({ session, contextId }) => {
976
- await sendCommand('close-window', { session, surface: 'browser', ...(contextId && { contextId }) });
980
+ .action(browserSessionCommandAction(async ({ session, contextId, routing }) => {
981
+ await sendCommand('close-window', { session, surface: 'browser', ...routing });
977
982
  saveBrowserTargetState(undefined, getBrowserScope(session, contextId));
978
983
  console.log(JSON.stringify({ unbound: true, session }, null, 2));
979
984
  }));
@@ -2980,7 +2985,7 @@ cli({
2980
2985
  adapterCmd
2981
2986
  .command('eject')
2982
2987
  .description('Copy an official adapter to ~/.webcmd/clis/ for local editing')
2983
- .argument('<site>', 'Site name (e.g. twitter, bilibili)')
2988
+ .argument('<site>', 'Site name (e.g. twitter, youtube)')
2984
2989
  .action(async (site) => {
2985
2990
  const os = await import('node:os');
2986
2991
  const userClisDir = path.join(os.homedir(), '.webcmd', 'clis');
@@ -3009,7 +3014,7 @@ cli({
3009
3014
  adapterCmd
3010
3015
  .command('reset')
3011
3016
  .description('Remove local override and restore official adapter version')
3012
- .argument('[site]', 'Site name (e.g. twitter, bilibili)')
3017
+ .argument('[site]', 'Site name (e.g. twitter, youtube)')
3013
3018
  .option('--all', 'Reset all local overrides')
3014
3019
  .action(async (site, opts) => {
3015
3020
  const os = await import('node:os');
@@ -100,10 +100,10 @@ describe('createProgram root help descriptions', () => {
100
100
  registry.clear();
101
101
  try {
102
102
  cli({
103
- site: 'bilibili',
103
+ site: 'reddit',
104
104
  name: 'hot',
105
105
  access: 'read',
106
- description: 'Bilibili hot videos',
106
+ description: 'Reddit hot posts',
107
107
  strategy: Strategy.PUBLIC,
108
108
  browser: false,
109
109
  });
@@ -118,9 +118,9 @@ describe('createProgram root help descriptions', () => {
118
118
  const program = createProgram('', '');
119
119
  const help = program.helpInformation();
120
120
  expect(help).toContain('Site adapters (2):');
121
- expect(help).toContain('bilibili, youtube');
121
+ expect(help).toContain('reddit, youtube');
122
122
  expect(help).toContain("webcmd <site> --help -f yaml");
123
- expect(help).not.toMatch(/\n bilibili\s+hot/);
123
+ expect(help).not.toMatch(/\n reddit\s+hot/);
124
124
  expect(help).not.toMatch(/\n youtube\s+search/);
125
125
  }
126
126
  finally {
@@ -135,11 +135,11 @@ describe('createProgram root help descriptions', () => {
135
135
  registry.clear();
136
136
  try {
137
137
  cli({
138
- site: 'bilibili',
139
- name: 'hot',
138
+ site: 'youtube',
139
+ name: 'search',
140
140
  access: 'read',
141
- description: 'Bilibili hot videos',
142
- domain: 'www.bilibili.com',
141
+ description: 'Search YouTube',
142
+ domain: 'www.youtube.com',
143
143
  strategy: Strategy.PUBLIC,
144
144
  browser: false,
145
145
  });
@@ -158,7 +158,7 @@ describe('createProgram root help descriptions', () => {
158
158
  expect(help).toContain('App adapters (1):');
159
159
  expect(help).toMatch(/App adapters \(1\):\n {2}chatwise/);
160
160
  expect(help).toContain('Site adapters (1):');
161
- expect(help).toMatch(/Site adapters \(1\):\n {2}bilibili/);
161
+ expect(help).toMatch(/Site adapters \(1\):\n {2}youtube/);
162
162
  // App adapters appear before Site adapters (External CLIs are absent here)
163
163
  expect(help.indexOf('App adapters')).toBeLessThan(help.indexOf('Site adapters'));
164
164
  }
@@ -172,7 +172,7 @@ describe('createProgram root help descriptions', () => {
172
172
  expect(classifyAdapter('localhost')).toBe('app');
173
173
  expect(classifyAdapter('127.0.0.1')).toBe('app');
174
174
  expect(classifyAdapter('::1')).toBe('app');
175
- expect(classifyAdapter('www.bilibili.com')).toBe('site');
175
+ expect(classifyAdapter('www.youtube.com')).toBe('site');
176
176
  });
177
177
  it('splits list table output into App and Site sections without changing per-site rows', async () => {
178
178
  const registry = getRegistry();
@@ -200,11 +200,11 @@ describe('createProgram root help descriptions', () => {
200
200
  browser: true,
201
201
  });
202
202
  cli({
203
- site: 'bilibili',
204
- name: 'hot',
203
+ site: 'youtube',
204
+ name: 'search',
205
205
  access: 'read',
206
- description: 'Bilibili hot videos',
207
- domain: 'www.bilibili.com',
206
+ description: 'Search YouTube',
207
+ domain: 'www.youtube.com',
208
208
  strategy: Strategy.PUBLIC,
209
209
  browser: false,
210
210
  });
@@ -216,7 +216,7 @@ describe('createProgram root help descriptions', () => {
216
216
  expect(output.indexOf('App adapters')).toBeLessThan(output.indexOf('Site adapters'));
217
217
  expect(output).toMatch(/App adapters[\s\S]*antigravity[\s\S]*history \[ui\] — Read Antigravity history/);
218
218
  expect(output).toMatch(/App adapters[\s\S]*chatwise[\s\S]*ask \[ui\] — Ask Chatwise desktop app/);
219
- expect(output).toMatch(/Site adapters[\s\S]*bilibili[\s\S]*hot \[public\] — Bilibili hot videos/);
219
+ expect(output).toMatch(/Site adapters[\s\S]*youtube[\s\S]*search \[public\] — Search YouTube/);
220
220
  expect(output).toContain('3 built-in commands across 2 apps + 1 sites,');
221
221
  }
222
222
  finally {
@@ -235,11 +235,11 @@ describe('createProgram root help descriptions', () => {
235
235
  registry.clear();
236
236
  try {
237
237
  cli({
238
- site: 'bilibili',
239
- name: 'hot',
238
+ site: 'youtube',
239
+ name: 'search',
240
240
  access: 'read',
241
- description: 'Bilibili hot videos',
242
- domain: 'www.bilibili.com',
241
+ description: 'Search YouTube',
242
+ domain: 'www.youtube.com',
243
243
  strategy: Strategy.PUBLIC,
244
244
  browser: false,
245
245
  columns: ['title', 'url'],
@@ -257,9 +257,9 @@ describe('createProgram root help descriptions', () => {
257
257
  const rows = JSON.parse(jsonOutput);
258
258
  expect(rows).toMatchObject([
259
259
  {
260
- site: 'bilibili',
261
- name: 'hot',
262
- domain: 'www.bilibili.com',
260
+ site: 'youtube',
261
+ name: 'search',
262
+ domain: 'www.youtube.com',
263
263
  columns: ['title', 'url'],
264
264
  },
265
265
  ]);
@@ -281,11 +281,11 @@ describe('createProgram root help descriptions', () => {
281
281
  registry.clear();
282
282
  try {
283
283
  cli({
284
- site: 'bilibili',
285
- name: 'hot',
284
+ site: 'youtube',
285
+ name: 'search',
286
286
  access: 'read',
287
- description: 'Bilibili hot videos',
288
- domain: 'www.bilibili.com',
287
+ description: 'Search YouTube',
288
+ domain: 'www.youtube.com',
289
289
  strategy: Strategy.PUBLIC,
290
290
  browser: false,
291
291
  });
@@ -304,13 +304,13 @@ describe('createProgram root help descriptions', () => {
304
304
  expect(data.app_adapters.count).toBe(1);
305
305
  expect(data.app_adapters.apps).toEqual(['chatwise']);
306
306
  expect(data.site_adapters.count).toBe(1);
307
- expect(data.site_adapters.sites).toEqual(['bilibili']);
307
+ expect(data.site_adapters.sites).toEqual(['youtube']);
308
308
  expect(data.external_clis.count).toBeGreaterThanOrEqual(0);
309
309
  expect(Array.isArray(data.external_clis.clis)).toBe(true);
310
310
  expect(Array.isArray(data.external_clis.display)).toBe(true);
311
311
  // Adapters must NOT leak into the core commands list
312
312
  const commandNames = data.commands.map((cmd) => cmd.name);
313
- expect(commandNames).not.toContain('bilibili');
313
+ expect(commandNames).not.toContain('youtube');
314
314
  expect(commandNames).not.toContain('chatwise');
315
315
  }
316
316
  finally {
@@ -327,10 +327,10 @@ describe('createProgram root help descriptions', () => {
327
327
  registry.clear();
328
328
  try {
329
329
  cli({
330
- site: 'bilibili',
331
- name: 'hot',
330
+ site: 'youtube',
331
+ name: 'search',
332
332
  access: 'read',
333
- description: 'Bilibili hot videos',
333
+ description: 'Search YouTube',
334
334
  strategy: Strategy.PUBLIC,
335
335
  browser: false,
336
336
  });
@@ -338,9 +338,9 @@ describe('createProgram root help descriptions', () => {
338
338
  process.argv = ['node', 'webcmd', '--help', '-f', 'yaml'];
339
339
  const data = yaml.load(program.helpInformation());
340
340
  expect(data.site_adapters.count).toBe(1);
341
- expect(data.site_adapters.sites).toEqual(['bilibili']);
341
+ expect(data.site_adapters.sites).toEqual(['youtube']);
342
342
  expect(data.commands.map((cmd) => cmd.name)).toContain('list');
343
- expect(data.commands.map((cmd) => cmd.name)).not.toContain('bilibili');
343
+ expect(data.commands.map((cmd) => cmd.name)).not.toContain('youtube');
344
344
  }
345
345
  finally {
346
346
  process.argv = argv;
@@ -356,28 +356,28 @@ describe('createProgram root help descriptions', () => {
356
356
  registry.clear();
357
357
  try {
358
358
  cli({
359
- site: 'bilibili',
360
- name: 'hot',
359
+ site: 'youtube',
360
+ name: 'search',
361
361
  access: 'read',
362
- description: 'Bilibili hot videos',
362
+ description: 'Search YouTube',
363
363
  strategy: Strategy.PUBLIC,
364
364
  browser: false,
365
365
  args: [{ name: 'limit', type: 'int', default: 20, help: 'Number of videos' }],
366
366
  columns: ['title', 'url'],
367
367
  });
368
368
  const program = createProgram('', '');
369
- const site = program.commands.find(cmd => cmd.name() === 'bilibili');
369
+ const site = program.commands.find(cmd => cmd.name() === 'youtube');
370
370
  expect(site).toBeTruthy();
371
- process.argv = ['node', 'webcmd', 'bilibili', '--help', '-f', 'yaml'];
371
+ process.argv = ['node', 'webcmd', 'youtube', '--help', '-f', 'yaml'];
372
372
  const data = yaml.load(site.helpInformation());
373
- expect(data.site).toBe('bilibili');
373
+ expect(data.site).toBe('youtube');
374
374
  expect(data.commands).toMatchObject([
375
375
  {
376
- name: 'hot',
376
+ name: 'search',
377
377
  access: 'read',
378
- description: 'Bilibili hot videos',
378
+ description: 'Search YouTube',
379
379
  browser: false,
380
- example: 'webcmd bilibili hot -f yaml',
380
+ example: 'webcmd youtube search -f yaml',
381
381
  command_options: [{ name: 'limit', type: 'int', default: 20 }],
382
382
  columns: ['title', 'url'],
383
383
  },
@@ -397,31 +397,31 @@ describe('createProgram root help descriptions', () => {
397
397
  registry.clear();
398
398
  try {
399
399
  cli({
400
- site: 'bilibili',
401
- name: 'hot',
400
+ site: 'youtube',
401
+ name: 'search',
402
402
  access: 'read',
403
- description: 'Bilibili hot videos',
403
+ description: 'Search YouTube',
404
404
  strategy: Strategy.PUBLIC,
405
405
  browser: false,
406
406
  args: [{ name: 'limit', type: 'int', default: 20, help: 'Number of videos' }],
407
407
  });
408
408
  cli({
409
- site: 'bilibili',
409
+ site: 'youtube',
410
410
  name: 'video',
411
411
  access: 'read',
412
412
  description: 'Read one video',
413
- domain: 'www.bilibili.com',
413
+ domain: 'www.youtube.com',
414
414
  strategy: Strategy.PUBLIC,
415
415
  browser: true,
416
416
  args: [{ name: 'bvid', positional: true, required: true, help: 'Video id' }],
417
417
  });
418
418
  const program = createProgram('', '');
419
- const site = program.commands.find(cmd => cmd.name() === 'bilibili');
419
+ const site = program.commands.find(cmd => cmd.name() === 'youtube');
420
420
  expect(site).toBeTruthy();
421
421
  const help = site.helpInformation();
422
- expect(help).toContain('hot [options] [read] Bilibili hot videos');
423
- expect(help).toContain('video <bvid> [read] Read one video');
424
- expect(help).toContain('hot [options]');
422
+ expect(help).toContain('search [options] [read] Search YouTube');
423
+ expect(help).toContain('video <bvid> [read] Read one video');
424
+ expect(help).toContain('search [options]');
425
425
  expect(help).not.toContain('video <bvid> [options]');
426
426
  expect(help).not.toContain('\nOptions:');
427
427
  expect(help).toContain('Common options:');
@@ -442,12 +442,12 @@ describe('createProgram root help descriptions', () => {
442
442
  registry.clear();
443
443
  try {
444
444
  cli({
445
- site: 'bilibili',
445
+ site: 'youtube',
446
446
  name: 'video',
447
447
  access: 'read',
448
448
  description: 'Read one video',
449
449
  strategy: Strategy.PUBLIC,
450
- domain: 'www.bilibili.com',
450
+ domain: 'www.youtube.com',
451
451
  browser: true,
452
452
  args: [
453
453
  { name: 'bvid', positional: true, required: true, help: 'Video id' },
@@ -456,14 +456,14 @@ describe('createProgram root help descriptions', () => {
456
456
  columns: ['title', 'url'],
457
457
  });
458
458
  const program = createProgram('', '');
459
- const site = program.commands.find(cmd => cmd.name() === 'bilibili');
459
+ const site = program.commands.find(cmd => cmd.name() === 'youtube');
460
460
  const command = site.commands.find(cmd => cmd.name() === 'video');
461
461
  expect(command).toBeTruthy();
462
- process.argv = ['node', 'webcmd', 'bilibili', 'video', '--help', '-f', 'yaml'];
462
+ process.argv = ['node', 'webcmd', 'youtube', 'video', '--help', '-f', 'yaml'];
463
463
  const data = yaml.load(command.helpInformation());
464
- expect(data.usage).toBe('webcmd bilibili video <bvid> [options]');
464
+ expect(data.usage).toBe('webcmd youtube video <bvid> [options]');
465
465
  expect(data.browser).toBe(true);
466
- expect(data.domain).toBe('www.bilibili.com');
466
+ expect(data.domain).toBe('www.youtube.com');
467
467
  expect(data.positionals).toMatchObject([{ name: 'bvid', positional: true, required: true }]);
468
468
  expect(data.command_options).toMatchObject([{ name: 'with-comments', default: false }]);
469
469
  expect(data.common_options.map((option) => option.name)).toEqual(['format', 'trace', 'verbose', 'help']);
@@ -1004,7 +1004,7 @@ describe('profile list', () => {
1004
1004
  runtimeVersion: '1.0.3',
1005
1005
  pending: 0,
1006
1006
  memoryMB: 20,
1007
- port: 19825,
1007
+ port: 9777,
1008
1008
  }),
1009
1009
  });
1010
1010
  const program = createProgram('', '');
@@ -1027,7 +1027,7 @@ describe('profile list', () => {
1027
1027
  profiles: [],
1028
1028
  pending: 0,
1029
1029
  memoryMB: 20,
1030
- port: 19825,
1030
+ port: 9777,
1031
1031
  }),
1032
1032
  });
1033
1033
  const program = createProgram('', '');
@@ -251,12 +251,12 @@ describe('commanderAdapter default formats', () => {
251
251
  });
252
252
  describe('commanderAdapter error envelope output', () => {
253
253
  const cmd = {
254
- site: 'xiaohongshu',
255
- name: 'note', access: 'read',
256
- description: 'Read one note',
254
+ site: 'github',
255
+ name: 'issue', access: 'read',
256
+ description: 'Read one issue',
257
257
  browser: false,
258
258
  args: [
259
- { name: 'note-id', positional: true, required: true, help: 'Note ID' },
259
+ { name: 'issue-id', positional: true, required: true, help: 'Issue ID' },
260
260
  ],
261
261
  func: vi.fn(),
262
262
  };
@@ -268,26 +268,26 @@ describe('commanderAdapter error envelope output', () => {
268
268
  });
269
269
  it('outputs YAML error envelope with adapter hint to stderr', async () => {
270
270
  const program = new Command();
271
- const siteCmd = program.command('xiaohongshu');
271
+ const siteCmd = program.command('github');
272
272
  registerCommandToProgram(siteCmd, cmd);
273
273
  const stderrSpy = vi.spyOn(process.stderr, 'write').mockImplementation(() => true);
274
- mockExecuteCommand.mockRejectedValueOnce(new EmptyResultError('xiaohongshu/note', 'Pass the full search_result URL with xsec_token instead of a bare note ID.'));
275
- await program.parseAsync(['node', 'webcmd', 'xiaohongshu', 'note', '69ca3927000000001a020fd5']);
274
+ mockExecuteCommand.mockRejectedValueOnce(new EmptyResultError('github/issue', 'Pass the full issue URL instead of a bare issue number.'));
275
+ await program.parseAsync(['node', 'webcmd', 'github', 'issue', '12345']);
276
276
  const output = stderrSpy.mock.calls.map(c => String(c[0])).join('');
277
277
  expect(output).toContain('ok: false');
278
278
  expect(output).toContain('code: EMPTY_RESULT');
279
- expect(output).toContain('xsec_token');
279
+ expect(output).toContain('full issue URL');
280
280
  expect(output).toContain('--trace=retain-on-failure');
281
- expect(output).toContain('webcmd xiaohongshu note --trace retain-on-failure');
281
+ expect(output).toContain('webcmd github issue --trace retain-on-failure');
282
282
  stderrSpy.mockRestore();
283
283
  });
284
284
  it('outputs YAML error envelope for selector errors', async () => {
285
285
  const program = new Command();
286
- const siteCmd = program.command('xiaohongshu');
286
+ const siteCmd = program.command('github');
287
287
  registerCommandToProgram(siteCmd, cmd);
288
288
  const stderrSpy = vi.spyOn(process.stderr, 'write').mockImplementation(() => true);
289
289
  mockExecuteCommand.mockRejectedValueOnce(selectorError('.note-title', 'The note title selector no longer matches the current page.'));
290
- await program.parseAsync(['node', 'webcmd', 'xiaohongshu', 'note', '69ca3927000000001a020fd5']);
290
+ await program.parseAsync(['node', 'webcmd', 'github', 'issue', '12345']);
291
291
  const output = stderrSpy.mock.calls.map(c => String(c[0])).join('');
292
292
  expect(output).toContain('ok: false');
293
293
  expect(output).toContain('code: SELECTOR');
@@ -297,16 +297,16 @@ describe('commanderAdapter error envelope output', () => {
297
297
  });
298
298
  it('does not add an AutoFix rerun hint when trace is already enabled', async () => {
299
299
  const program = new Command();
300
- const siteCmd = program.command('xiaohongshu');
300
+ const siteCmd = program.command('github');
301
301
  registerCommandToProgram(siteCmd, cmd);
302
302
  const stderrSpy = vi.spyOn(process.stderr, 'write').mockImplementation(() => true);
303
303
  mockExecuteCommand.mockRejectedValueOnce(selectorError('.note-title'));
304
304
  await program.parseAsync([
305
305
  'node',
306
306
  'webcmd',
307
- 'xiaohongshu',
308
- 'note',
309
- '69ca3927000000001a020fd5',
307
+ 'github',
308
+ 'issue',
309
+ '12345',
310
310
  '--trace',
311
311
  'retain-on-failure',
312
312
  ]);
@@ -317,7 +317,7 @@ describe('commanderAdapter error envelope output', () => {
317
317
  });
318
318
  it('includes trace metadata from the error envelope when execution attached it', async () => {
319
319
  const program = new Command();
320
- const siteCmd = program.command('xiaohongshu');
320
+ const siteCmd = program.command('github');
321
321
  registerCommandToProgram(siteCmd, cmd);
322
322
  const stderrSpy = vi.spyOn(process.stderr, 'write').mockImplementation(() => true);
323
323
  const err = selectorError('.note-title');
@@ -336,9 +336,9 @@ describe('commanderAdapter error envelope output', () => {
336
336
  await program.parseAsync([
337
337
  'node',
338
338
  'webcmd',
339
- 'xiaohongshu',
340
- 'note',
341
- '69ca3927000000001a020fd5',
339
+ 'github',
340
+ 'issue',
341
+ '12345',
342
342
  '--trace',
343
343
  'retain-on-failure',
344
344
  ]);
@@ -39,7 +39,7 @@ describe('daemonStatus', () => {
39
39
  runtimeVersion: '1.6.8',
40
40
  pending: 0,
41
41
  memoryMB: 64,
42
- port: 19825,
42
+ port: 9777,
43
43
  });
44
44
  await daemonStatus();
45
45
  expect(stdoutSpy).toHaveBeenCalledWith(expect.stringContaining('running'));
@@ -49,7 +49,7 @@ describe('daemonStatus', () => {
49
49
  expect(stdoutSpy).toHaveBeenCalledWith(expect.stringContaining('connected'));
50
50
  expect(stdoutSpy).toHaveBeenCalledWith(expect.stringContaining('v1.6.8'));
51
51
  expect(stdoutSpy).toHaveBeenCalledWith(expect.stringContaining('64 MB'));
52
- expect(stdoutSpy).toHaveBeenCalledWith(expect.stringContaining('19825'));
52
+ expect(stdoutSpy).toHaveBeenCalledWith(expect.stringContaining('9777'));
53
53
  });
54
54
  it('shows disconnected when runtime is not connected', async () => {
55
55
  fetchDaemonStatusMock.mockResolvedValue({
@@ -61,7 +61,7 @@ describe('daemonStatus', () => {
61
61
  runtimeName: 'fake',
62
62
  pending: 0,
63
63
  memoryMB: 32,
64
- port: 19825,
64
+ port: 9777,
65
65
  });
66
66
  await daemonStatus();
67
67
  expect(stdoutSpy).toHaveBeenCalledWith(expect.stringContaining('disconnected'));
@@ -77,7 +77,7 @@ describe('daemonStatus', () => {
77
77
  runtimeVersion: undefined,
78
78
  pending: 0,
79
79
  memoryMB: 32,
80
- port: 19825,
80
+ port: 9777,
81
81
  });
82
82
  await daemonStatus();
83
83
  expect(stdoutSpy).toHaveBeenCalledWith(expect.stringContaining('fake connected'));
@@ -105,7 +105,7 @@ describe('daemonStatus runtime label states (#1575)', () => {
105
105
  daemonVersion: PKG_VERSION,
106
106
  pending: 0,
107
107
  memoryMB: 32,
108
- port: 19825,
108
+ port: 9777,
109
109
  runtimeName: 'fake',
110
110
  ...extra,
111
111
  });
@@ -173,7 +173,7 @@ describe('daemonStop', () => {
173
173
  runtimeName: 'fake',
174
174
  pending: 0,
175
175
  memoryMB: 50,
176
- port: 19825,
176
+ port: 9777,
177
177
  });
178
178
  requestDaemonShutdownMock.mockResolvedValue(true);
179
179
  await daemonStop();
@@ -190,7 +190,7 @@ describe('daemonStop', () => {
190
190
  runtimeName: 'fake',
191
191
  pending: 0,
192
192
  memoryMB: 50,
193
- port: 19825,
193
+ port: 9777,
194
194
  });
195
195
  requestDaemonShutdownMock.mockResolvedValue(false);
196
196
  await daemonStop();
@@ -221,7 +221,7 @@ describe('daemonRestart', () => {
221
221
  profiles: [{ contextId: 'work', runtimeConnected: true, pending: 0 }],
222
222
  pending: 0,
223
223
  memoryMB: 50,
224
- port: 19825,
224
+ port: 9777,
225
225
  });
226
226
  restartDaemonMock.mockResolvedValue({
227
227
  previousStatus: { daemonVersion: '1.7.6' },
@@ -237,13 +237,13 @@ describe('daemonRestart', () => {
237
237
  profiles: [{ contextId: 'work', runtimeConnected: true, pending: 0 }],
238
238
  pending: 0,
239
239
  memoryMB: 51,
240
- port: 19825,
240
+ port: 9777,
241
241
  },
242
242
  });
243
243
  await daemonRestart();
244
244
  expect(restartDaemonMock).toHaveBeenCalledTimes(1);
245
245
  expect(stderrSpy).toHaveBeenCalledWith(expect.stringContaining('will disconnect 1 browser profile'));
246
- expect(stderrSpy).toHaveBeenCalledWith(expect.stringContaining(`Daemon restarted on port 19825 (v${PKG_VERSION})`));
246
+ expect(stderrSpy).toHaveBeenCalledWith(expect.stringContaining(`Daemon restarted on port 9777 (v${PKG_VERSION})`));
247
247
  expect(stderrSpy).toHaveBeenCalledWith(expect.stringContaining('Runtime connected; 1 profile connected'));
248
248
  });
249
249
  it('starts a new daemon when none was running', async () => {
@@ -261,11 +261,11 @@ describe('daemonRestart', () => {
261
261
  runtimeName: 'fake',
262
262
  pending: 0,
263
263
  memoryMB: 51,
264
- port: 19825,
264
+ port: 9777,
265
265
  },
266
266
  });
267
267
  await daemonRestart();
268
- expect(stderrSpy).toHaveBeenCalledWith(expect.stringContaining(`Daemon started on port 19825 (v${PKG_VERSION})`));
268
+ expect(stderrSpy).toHaveBeenCalledWith(expect.stringContaining(`Daemon started on port 9777 (v${PKG_VERSION})`));
269
269
  expect(stderrSpy).toHaveBeenCalledWith(expect.stringContaining('Cloak runtime has not connected yet'));
270
270
  });
271
271
  it('reports failure when the daemon cannot stop', async () => {
@@ -278,7 +278,7 @@ describe('daemonRestart', () => {
278
278
  runtimeName: 'fake',
279
279
  pending: 0,
280
280
  memoryMB: 50,
281
- port: 19825,
281
+ port: 9777,
282
282
  });
283
283
  restartDaemonMock.mockResolvedValue({
284
284
  previousStatus: { daemonVersion: '1.7.6' },
@@ -2,9 +2,8 @@
2
2
  * Shared constants used across explore, synthesize, and pipeline modules.
3
3
  */
4
4
  import { DAEMON_HEADER_NAME } from './brand.js';
5
- /** Default daemon port for HTTP/WebSocket communication with browser extension */
6
- export declare const DEFAULT_DAEMON_PORT = 19825;
7
- export declare function unsupportedDaemonPortEnvMessage(value?: string): string;
5
+ /** Default daemon port for HTTP communication with the browser runtime. */
6
+ export declare const DEFAULT_DAEMON_PORT = 9777;
8
7
  export { DAEMON_HEADER_NAME };
9
8
  /** URL query params that are volatile/ephemeral and should be stripped from patterns */
10
9
  export declare const VOLATILE_PARAMS: Set<string>;