@agentrhq/webcmd 0.1.1 → 0.2.0

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 (1290) hide show
  1. package/README.md +278 -20
  2. package/cli-manifest.json +16247 -34913
  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/followers.js +1 -1
  94. package/clis/twitter/list-remove-core.js +2 -2
  95. package/clis/twitter/list-tweets.test.js +3 -3
  96. package/clis/twitter/lists.js +6 -6
  97. package/clis/twitter/lists.test.js +2 -2
  98. package/clis/twitter/reply-dm.js +1 -1
  99. package/clis/twitter/shared.test.js +4 -5
  100. package/clis/twitter/trending.js +1 -1
  101. package/clis/twitter/utils.js +1 -1
  102. package/clis/web/read.js +1 -1
  103. package/clis/web/read.test.js +2 -2
  104. package/clis/yahoo-finance/quote.js +1 -1
  105. package/clis/youtube/history.js +4 -4
  106. package/clis/youtube/transcript-group.js +1 -1
  107. package/clis/youtube/transcript-group.test.js +5 -5
  108. package/clis/youtube/transcript.js +5 -5
  109. package/clis/youtube/video.js +4 -4
  110. package/clis/youtube/video.test.js +6 -6
  111. package/dist/src/adapter-shadow.d.ts +11 -0
  112. package/dist/src/adapter-shadow.js +72 -0
  113. package/dist/src/adapter-shadow.test.js +49 -0
  114. package/dist/src/adapter-source.d.ts +11 -0
  115. package/dist/src/adapter-source.js +24 -0
  116. package/dist/src/adapter-source.test.d.ts +1 -0
  117. package/dist/src/adapter-source.test.js +29 -0
  118. package/dist/src/brand.d.ts +9 -0
  119. package/dist/src/brand.js +9 -0
  120. package/dist/src/brand.test.d.ts +1 -0
  121. package/dist/src/brand.test.js +15 -0
  122. package/dist/src/browser/analyze.d.ts +118 -0
  123. package/dist/src/browser/analyze.js +405 -0
  124. package/dist/src/browser/analyze.test.d.ts +1 -0
  125. package/dist/src/browser/analyze.test.js +209 -0
  126. package/dist/src/browser/article-extract.d.ts +57 -0
  127. package/dist/src/browser/article-extract.e2e.test.d.ts +1 -0
  128. package/dist/src/browser/article-extract.e2e.test.js +105 -0
  129. package/dist/src/browser/article-extract.js +169 -0
  130. package/dist/src/browser/article-extract.test.d.ts +1 -0
  131. package/dist/src/browser/article-extract.test.js +94 -0
  132. package/dist/src/browser/ax-snapshot.d.ts +37 -0
  133. package/dist/src/browser/ax-snapshot.js +217 -0
  134. package/dist/src/browser/ax-snapshot.test.d.ts +1 -0
  135. package/dist/src/browser/ax-snapshot.test.js +91 -0
  136. package/dist/src/browser/base-page.d.ts +151 -0
  137. package/dist/src/browser/base-page.js +1060 -0
  138. package/dist/src/browser/base-page.test.d.ts +1 -0
  139. package/dist/src/browser/base-page.test.js +803 -0
  140. package/dist/src/browser/bridge-readiness.d.ts +14 -0
  141. package/dist/src/browser/bridge-readiness.js +24 -0
  142. package/dist/src/browser/bridge-readiness.test.d.ts +1 -0
  143. package/dist/src/browser/bridge-readiness.test.js +58 -0
  144. package/dist/src/browser/bridge.d.ts +26 -0
  145. package/dist/src/browser/bridge.js +58 -0
  146. package/dist/src/browser/cdp-click-fixture.test.d.ts +1 -0
  147. package/dist/src/browser/cdp-click-fixture.test.js +87 -0
  148. package/dist/src/browser/cdp.d.ts +46 -0
  149. package/dist/src/browser/cdp.js +536 -0
  150. package/dist/src/browser/cdp.test.d.ts +1 -0
  151. package/dist/src/browser/cdp.test.js +79 -0
  152. package/dist/src/browser/compound.d.ts +59 -0
  153. package/dist/src/browser/compound.js +112 -0
  154. package/dist/src/browser/compound.test.d.ts +1 -0
  155. package/dist/src/browser/compound.test.js +175 -0
  156. package/dist/src/browser/config.d.ts +2 -0
  157. package/dist/src/browser/config.js +14 -0
  158. package/dist/src/browser/daemon-client.d.ts +33 -0
  159. package/dist/src/browser/daemon-client.js +187 -0
  160. package/dist/src/browser/daemon-client.test.d.ts +1 -0
  161. package/dist/src/browser/daemon-client.test.js +411 -0
  162. package/dist/src/browser/daemon-lifecycle.d.ts +37 -0
  163. package/dist/src/browser/daemon-lifecycle.js +147 -0
  164. package/dist/src/browser/daemon-transport.d.ts +54 -0
  165. package/dist/src/browser/daemon-transport.js +68 -0
  166. package/dist/src/browser/daemon-version.d.ts +4 -0
  167. package/dist/src/browser/daemon-version.js +12 -0
  168. package/dist/src/browser/dom-helpers.d.ts +41 -0
  169. package/dist/src/browser/dom-helpers.js +239 -0
  170. package/dist/src/browser/dom-helpers.test.d.ts +1 -0
  171. package/dist/src/browser/dom-helpers.test.js +106 -0
  172. package/dist/src/browser/dom-snapshot.d.ts +93 -0
  173. package/dist/src/browser/dom-snapshot.js +894 -0
  174. package/dist/src/browser/dom-snapshot.test.d.ts +11 -0
  175. package/dist/src/browser/dom-snapshot.test.js +313 -0
  176. package/dist/src/browser/errors.d.ts +38 -0
  177. package/dist/src/browser/errors.js +90 -0
  178. package/dist/src/browser/errors.test.d.ts +1 -0
  179. package/dist/src/browser/errors.test.js +60 -0
  180. package/dist/src/browser/extract.d.ts +69 -0
  181. package/dist/src/browser/extract.js +132 -0
  182. package/dist/src/browser/extract.test.d.ts +1 -0
  183. package/dist/src/browser/extract.test.js +129 -0
  184. package/dist/src/browser/find.d.ts +84 -0
  185. package/dist/src/browser/find.js +398 -0
  186. package/dist/src/browser/find.test.d.ts +1 -0
  187. package/dist/src/browser/find.test.js +180 -0
  188. package/dist/src/browser/html-tree.d.ts +75 -0
  189. package/dist/src/browser/html-tree.js +112 -0
  190. package/dist/src/browser/html-tree.test.d.ts +1 -0
  191. package/dist/src/browser/html-tree.test.js +181 -0
  192. package/dist/src/browser/index.d.ts +14 -0
  193. package/dist/src/browser/index.js +12 -0
  194. package/dist/src/browser/network-cache.d.ts +49 -0
  195. package/dist/src/browser/network-cache.js +78 -0
  196. package/dist/src/browser/network-cache.test.d.ts +1 -0
  197. package/dist/src/browser/network-cache.test.js +75 -0
  198. package/dist/src/browser/network-interceptor.d.ts +11 -0
  199. package/dist/src/browser/network-interceptor.js +11 -0
  200. package/dist/src/browser/network-key.d.ts +22 -0
  201. package/dist/src/browser/network-key.js +66 -0
  202. package/dist/src/browser/network-key.test.d.ts +1 -0
  203. package/dist/src/browser/network-key.test.js +49 -0
  204. package/dist/src/browser/page.d.ts +83 -0
  205. package/dist/src/browser/page.js +453 -0
  206. package/dist/src/browser/page.test.d.ts +1 -0
  207. package/dist/src/browser/page.test.js +406 -0
  208. package/dist/src/browser/profile.d.ts +14 -0
  209. package/dist/src/browser/profile.js +86 -0
  210. package/dist/src/browser/protocol.d.ts +65 -0
  211. package/dist/src/browser/protocol.js +1 -0
  212. package/dist/src/browser/runtime/local-cloak/actions.d.ts +3 -0
  213. package/dist/src/browser/runtime/local-cloak/actions.js +240 -0
  214. package/dist/src/browser/runtime/local-cloak/downloads.d.ts +3 -0
  215. package/dist/src/browser/runtime/local-cloak/downloads.js +28 -0
  216. package/dist/src/browser/runtime/local-cloak/network.d.ts +28 -0
  217. package/dist/src/browser/runtime/local-cloak/network.js +120 -0
  218. package/dist/src/browser/runtime/local-cloak/network.test.d.ts +1 -0
  219. package/dist/src/browser/runtime/local-cloak/network.test.js +124 -0
  220. package/dist/src/browser/runtime/local-cloak/profiles.d.ts +6 -0
  221. package/dist/src/browser/runtime/local-cloak/profiles.js +17 -0
  222. package/dist/src/browser/runtime/local-cloak/profiles.test.d.ts +1 -0
  223. package/dist/src/browser/runtime/local-cloak/profiles.test.js +19 -0
  224. package/dist/src/browser/runtime/local-cloak/provider.d.ts +15 -0
  225. package/dist/src/browser/runtime/local-cloak/provider.js +27 -0
  226. package/dist/src/browser/runtime/local-cloak/provider.test.d.ts +1 -0
  227. package/dist/src/browser/runtime/local-cloak/provider.test.js +244 -0
  228. package/dist/src/browser/runtime/local-cloak/session-manager.d.ts +77 -0
  229. package/dist/src/browser/runtime/local-cloak/session-manager.js +280 -0
  230. package/dist/src/browser/runtime/local-cloak/session-manager.test.d.ts +1 -0
  231. package/dist/src/browser/runtime/local-cloak/session-manager.test.js +92 -0
  232. package/dist/src/browser/runtime/provider.d.ts +9 -0
  233. package/dist/src/browser/runtime/provider.js +1 -0
  234. package/dist/src/browser/runtime/provider.test.d.ts +2 -0
  235. package/dist/src/browser/runtime/provider.test.js +49 -0
  236. package/dist/src/browser/shape-filter.d.ts +52 -0
  237. package/dist/src/browser/shape-filter.js +101 -0
  238. package/dist/src/browser/shape-filter.test.d.ts +1 -0
  239. package/dist/src/browser/shape-filter.test.js +101 -0
  240. package/dist/src/browser/shape.d.ts +23 -0
  241. package/dist/src/browser/shape.js +95 -0
  242. package/dist/src/browser/shape.test.d.ts +1 -0
  243. package/dist/src/browser/shape.test.js +82 -0
  244. package/dist/src/browser/stealth.d.ts +11 -0
  245. package/dist/src/browser/stealth.js +359 -0
  246. package/dist/src/browser/stealth.test.d.ts +1 -0
  247. package/dist/src/browser/stealth.test.js +134 -0
  248. package/dist/src/browser/tabs.d.ts +13 -0
  249. package/dist/src/browser/tabs.js +70 -0
  250. package/dist/src/browser/target-errors.d.ts +39 -0
  251. package/dist/src/browser/target-errors.js +45 -0
  252. package/dist/src/browser/target-errors.test.d.ts +1 -0
  253. package/dist/src/browser/target-errors.test.js +94 -0
  254. package/dist/src/browser/target-resolver.d.ts +158 -0
  255. package/dist/src/browser/target-resolver.js +570 -0
  256. package/dist/src/browser/target-resolver.test.d.ts +1 -0
  257. package/dist/src/browser/target-resolver.test.js +118 -0
  258. package/dist/src/browser/utils.d.ts +20 -0
  259. package/dist/src/browser/utils.js +64 -0
  260. package/dist/src/browser/utils.test.d.ts +1 -0
  261. package/dist/src/browser/utils.test.js +29 -0
  262. package/dist/src/browser/verify-fixture.d.ts +65 -0
  263. package/dist/src/browser/verify-fixture.js +318 -0
  264. package/dist/src/browser/verify-fixture.test.d.ts +1 -0
  265. package/dist/src/browser/verify-fixture.test.js +219 -0
  266. package/dist/src/browser/visual-refs.d.ts +11 -0
  267. package/dist/src/browser/visual-refs.js +108 -0
  268. package/dist/src/browser.test.d.ts +1 -0
  269. package/dist/src/browser.test.js +297 -0
  270. package/dist/src/build-manifest.d.ts +103 -0
  271. package/dist/src/build-manifest.js +363 -0
  272. package/dist/src/build-manifest.test.d.ts +1 -0
  273. package/dist/src/build-manifest.test.js +341 -0
  274. package/dist/src/capabilityRouting.d.ts +19 -0
  275. package/dist/src/capabilityRouting.js +56 -0
  276. package/dist/src/capabilityRouting.test.d.ts +1 -0
  277. package/dist/src/capabilityRouting.test.js +63 -0
  278. package/dist/src/cli-argv-preprocess.d.ts +63 -0
  279. package/dist/src/cli-argv-preprocess.js +303 -0
  280. package/dist/src/cli-argv-preprocess.test.d.ts +1 -0
  281. package/dist/src/cli-argv-preprocess.test.js +304 -0
  282. package/dist/src/cli.d.ts +79 -0
  283. package/dist/src/cli.js +3350 -0
  284. package/dist/src/cli.test.d.ts +1 -0
  285. package/dist/src/cli.test.js +3041 -0
  286. package/dist/src/commanderAdapter.d.ts +21 -0
  287. package/dist/src/commanderAdapter.js +208 -0
  288. package/dist/src/commanderAdapter.test.d.ts +1 -0
  289. package/dist/src/commanderAdapter.test.js +352 -0
  290. package/dist/src/commands/auth.d.ts +40 -0
  291. package/dist/src/commands/auth.js +434 -0
  292. package/dist/src/commands/auth.test.d.ts +1 -0
  293. package/dist/src/commands/auth.test.js +252 -0
  294. package/dist/src/commands/daemon.d.ts +9 -0
  295. package/dist/src/commands/daemon.js +91 -0
  296. package/dist/src/commands/daemon.test.d.ts +1 -0
  297. package/dist/src/commands/daemon.test.js +293 -0
  298. package/dist/src/completion-fast.d.ts +22 -0
  299. package/dist/src/completion-fast.js +88 -0
  300. package/dist/src/completion-shared.d.ts +13 -0
  301. package/dist/src/completion-shared.js +61 -0
  302. package/dist/src/completion.d.ts +21 -0
  303. package/dist/src/completion.js +68 -0
  304. package/dist/src/completion.test.d.ts +1 -0
  305. package/dist/src/completion.test.js +24 -0
  306. package/dist/src/constants.d.ts +18 -0
  307. package/dist/src/constants.js +41 -0
  308. package/dist/src/convention-audit.d.ts +50 -0
  309. package/dist/src/convention-audit.js +553 -0
  310. package/dist/src/convention-audit.test.d.ts +1 -0
  311. package/dist/src/convention-audit.test.js +255 -0
  312. package/dist/src/daemon/server.d.ts +13 -0
  313. package/dist/src/daemon/server.js +190 -0
  314. package/dist/src/daemon/server.test.d.ts +1 -0
  315. package/dist/src/daemon/server.test.js +184 -0
  316. package/dist/src/daemon-utils.d.ts +19 -0
  317. package/dist/src/daemon-utils.js +46 -0
  318. package/dist/src/daemon.d.ts +1 -0
  319. package/dist/src/daemon.js +27 -0
  320. package/dist/src/daemon.test.d.ts +1 -0
  321. package/dist/src/daemon.test.js +69 -0
  322. package/dist/src/discovery.d.ts +46 -0
  323. package/dist/src/discovery.js +341 -0
  324. package/dist/src/doctor.d.ts +39 -0
  325. package/dist/src/doctor.js +174 -0
  326. package/dist/src/doctor.test.d.ts +1 -0
  327. package/dist/src/doctor.test.js +309 -0
  328. package/dist/src/download/article-download.d.ts +72 -0
  329. package/dist/src/download/article-download.js +305 -0
  330. package/dist/src/download/article-download.test.d.ts +1 -0
  331. package/dist/src/download/article-download.test.js +235 -0
  332. package/dist/src/download/index.d.ts +71 -0
  333. package/dist/src/download/index.js +363 -0
  334. package/dist/src/download/index.test.d.ts +1 -0
  335. package/dist/src/download/index.test.js +173 -0
  336. package/dist/src/download/media-download.d.ts +49 -0
  337. package/dist/src/download/media-download.js +127 -0
  338. package/dist/src/download/media-download.test.d.ts +1 -0
  339. package/dist/src/download/media-download.test.js +112 -0
  340. package/dist/src/download/progress.d.ts +36 -0
  341. package/dist/src/download/progress.js +120 -0
  342. package/dist/src/download/progress.test.d.ts +1 -0
  343. package/dist/src/download/progress.test.js +36 -0
  344. package/dist/src/electron-apps.d.ts +31 -0
  345. package/dist/src/electron-apps.js +83 -0
  346. package/dist/src/electron-apps.test.d.ts +1 -0
  347. package/dist/src/electron-apps.test.js +67 -0
  348. package/dist/src/engine.test.d.ts +1 -0
  349. package/dist/src/engine.test.js +312 -0
  350. package/dist/src/errors.d.ts +114 -0
  351. package/dist/src/errors.js +174 -0
  352. package/dist/src/errors.test.d.ts +1 -0
  353. package/dist/src/errors.test.js +109 -0
  354. package/dist/src/execution.d.ts +24 -0
  355. package/dist/src/execution.js +511 -0
  356. package/dist/src/execution.test.d.ts +1 -0
  357. package/dist/src/execution.test.js +657 -0
  358. package/dist/src/external-clis.yaml +0 -37
  359. package/dist/src/external.d.ts +49 -0
  360. package/dist/src/external.js +211 -0
  361. package/dist/src/external.test.d.ts +1 -0
  362. package/dist/src/external.test.js +95 -0
  363. package/dist/src/generate-release-notes-cli.test.d.ts +1 -0
  364. package/dist/src/generate-release-notes-cli.test.js +140 -0
  365. package/dist/src/help.d.ts +88 -0
  366. package/dist/src/help.js +556 -0
  367. package/dist/src/help.test.d.ts +1 -0
  368. package/dist/src/help.test.js +58 -0
  369. package/dist/src/hooks.d.ts +46 -0
  370. package/dist/src/hooks.js +58 -0
  371. package/dist/src/hooks.test.d.ts +4 -0
  372. package/dist/src/hooks.test.js +92 -0
  373. package/dist/src/interceptor.d.ts +44 -0
  374. package/dist/src/interceptor.js +183 -0
  375. package/dist/src/interceptor.test.d.ts +4 -0
  376. package/dist/src/interceptor.test.js +81 -0
  377. package/dist/src/launcher.d.ts +41 -0
  378. package/dist/src/launcher.js +226 -0
  379. package/dist/src/launcher.test.d.ts +1 -0
  380. package/dist/src/launcher.test.js +153 -0
  381. package/dist/src/logger.d.ts +26 -0
  382. package/dist/src/logger.js +49 -0
  383. package/dist/src/main.d.ts +5 -0
  384. package/dist/src/main.js +177 -0
  385. package/dist/src/manifest-types.d.ts +43 -0
  386. package/dist/src/manifest-types.js +9 -0
  387. package/dist/src/node-network.d.ts +10 -0
  388. package/dist/src/node-network.js +174 -0
  389. package/dist/src/node-network.test.d.ts +1 -0
  390. package/dist/src/node-network.test.js +55 -0
  391. package/dist/src/observation/artifact.d.ts +16 -0
  392. package/dist/src/observation/artifact.js +260 -0
  393. package/dist/src/observation/artifact.test.d.ts +1 -0
  394. package/dist/src/observation/artifact.test.js +121 -0
  395. package/dist/src/observation/events.d.ts +89 -0
  396. package/dist/src/observation/events.js +1 -0
  397. package/dist/src/observation/index.d.ts +7 -0
  398. package/dist/src/observation/index.js +7 -0
  399. package/dist/src/observation/manager.d.ts +9 -0
  400. package/dist/src/observation/manager.js +27 -0
  401. package/dist/src/observation/manager.test.d.ts +1 -0
  402. package/dist/src/observation/manager.test.js +13 -0
  403. package/dist/src/observation/redaction.d.ts +11 -0
  404. package/dist/src/observation/redaction.js +81 -0
  405. package/dist/src/observation/redaction.test.d.ts +1 -0
  406. package/dist/src/observation/redaction.test.js +32 -0
  407. package/dist/src/observation/retention.d.ts +32 -0
  408. package/dist/src/observation/retention.js +160 -0
  409. package/dist/src/observation/retention.test.d.ts +1 -0
  410. package/dist/src/observation/retention.test.js +118 -0
  411. package/dist/src/observation/ring-buffer.d.ts +22 -0
  412. package/dist/src/observation/ring-buffer.js +45 -0
  413. package/dist/src/observation/ring-buffer.test.d.ts +1 -0
  414. package/dist/src/observation/ring-buffer.test.js +22 -0
  415. package/dist/src/observation/session.d.ts +25 -0
  416. package/dist/src/observation/session.js +50 -0
  417. package/dist/src/output.d.ts +14 -0
  418. package/dist/src/output.js +152 -0
  419. package/dist/src/output.test.d.ts +1 -0
  420. package/dist/src/output.test.js +53 -0
  421. package/dist/src/package-exports.test.d.ts +1 -0
  422. package/dist/src/package-exports.test.js +112 -0
  423. package/dist/src/package-paths.d.ts +8 -0
  424. package/dist/src/package-paths.js +41 -0
  425. package/dist/src/pipeline/executor.d.ts +11 -0
  426. package/dist/src/pipeline/executor.js +93 -0
  427. package/dist/src/pipeline/executor.test.d.ts +4 -0
  428. package/dist/src/pipeline/executor.test.js +182 -0
  429. package/dist/src/pipeline/index.d.ts +5 -0
  430. package/dist/src/pipeline/index.js +5 -0
  431. package/dist/src/pipeline/registry.d.ts +28 -0
  432. package/dist/src/pipeline/registry.js +55 -0
  433. package/dist/src/pipeline/steps/browser.d.ts +13 -0
  434. package/dist/src/pipeline/steps/browser.js +86 -0
  435. package/dist/src/pipeline/steps/download.d.ts +18 -0
  436. package/dist/src/pipeline/steps/download.js +252 -0
  437. package/dist/src/pipeline/steps/download.test.d.ts +1 -0
  438. package/dist/src/pipeline/steps/download.test.js +102 -0
  439. package/dist/src/pipeline/steps/fetch.d.ts +5 -0
  440. package/dist/src/pipeline/steps/fetch.js +122 -0
  441. package/dist/src/pipeline/steps/fetch.test.d.ts +1 -0
  442. package/dist/src/pipeline/steps/fetch.test.js +117 -0
  443. package/dist/src/pipeline/steps/intercept.d.ts +5 -0
  444. package/dist/src/pipeline/steps/intercept.js +50 -0
  445. package/dist/src/pipeline/steps/tap.d.ts +12 -0
  446. package/dist/src/pipeline/steps/tap.js +93 -0
  447. package/dist/src/pipeline/steps/transform.d.ts +9 -0
  448. package/dist/src/pipeline/steps/transform.js +70 -0
  449. package/dist/src/pipeline/template.d.ts +17 -0
  450. package/dist/src/pipeline/template.js +344 -0
  451. package/dist/src/pipeline/template.test.d.ts +4 -0
  452. package/dist/src/pipeline/template.test.js +197 -0
  453. package/dist/src/pipeline/transform.test.d.ts +4 -0
  454. package/dist/src/pipeline/transform.test.js +133 -0
  455. package/dist/src/plugin-manifest.d.ts +70 -0
  456. package/dist/src/plugin-manifest.js +160 -0
  457. package/dist/src/plugin-manifest.test.d.ts +4 -0
  458. package/dist/src/plugin-manifest.test.js +179 -0
  459. package/dist/src/plugin-scaffold.d.ts +28 -0
  460. package/dist/src/plugin-scaffold.js +143 -0
  461. package/dist/src/plugin-scaffold.test.d.ts +4 -0
  462. package/dist/src/plugin-scaffold.test.js +83 -0
  463. package/dist/src/plugin.d.ts +146 -0
  464. package/dist/src/plugin.js +1303 -0
  465. package/dist/src/plugin.test.d.ts +4 -0
  466. package/dist/src/plugin.test.js +1363 -0
  467. package/dist/src/registry-api.d.ts +13 -0
  468. package/dist/src/registry-api.js +10 -0
  469. package/dist/src/registry.d.ts +123 -0
  470. package/dist/src/registry.js +125 -0
  471. package/dist/src/registry.test.d.ts +4 -0
  472. package/dist/src/registry.test.js +209 -0
  473. package/dist/src/release-notes.d.ts +38 -0
  474. package/dist/src/release-notes.js +99 -0
  475. package/dist/src/release-notes.test.d.ts +1 -0
  476. package/dist/src/release-notes.test.js +61 -0
  477. package/dist/src/runtime-copy.test.d.ts +1 -0
  478. package/dist/src/runtime-copy.test.js +29 -0
  479. package/dist/src/runtime-detect.d.ts +31 -0
  480. package/dist/src/runtime-detect.js +47 -0
  481. package/dist/src/runtime-detect.test.d.ts +1 -0
  482. package/dist/src/runtime-detect.test.js +39 -0
  483. package/dist/src/runtime-identity.test.d.ts +1 -0
  484. package/dist/src/runtime-identity.test.js +18 -0
  485. package/dist/src/runtime.d.ts +47 -0
  486. package/dist/src/runtime.js +54 -0
  487. package/dist/src/scripts/framework.d.ts +7 -0
  488. package/dist/src/scripts/framework.js +25 -0
  489. package/dist/src/scripts/interact.d.ts +4 -0
  490. package/dist/src/scripts/interact.js +20 -0
  491. package/dist/src/scripts/store.d.ts +13 -0
  492. package/dist/src/scripts/store.js +48 -0
  493. package/dist/src/serialization.d.ts +42 -0
  494. package/dist/src/serialization.js +103 -0
  495. package/dist/src/serialization.test.d.ts +1 -0
  496. package/dist/src/serialization.test.js +78 -0
  497. package/dist/src/skills.d.ts +14 -0
  498. package/dist/src/skills.js +127 -0
  499. package/dist/src/skills.test.d.ts +1 -0
  500. package/dist/src/skills.test.js +71 -0
  501. package/dist/src/snapshotFormatter.d.ts +11 -0
  502. package/dist/src/snapshotFormatter.js +336 -0
  503. package/dist/src/snapshotFormatter.test.d.ts +7 -0
  504. package/dist/src/snapshotFormatter.test.js +521 -0
  505. package/dist/src/tui.d.ts +28 -0
  506. package/dist/src/tui.js +179 -0
  507. package/dist/src/tui.test.d.ts +1 -0
  508. package/dist/src/tui.test.js +19 -0
  509. package/dist/src/types.d.ts +236 -0
  510. package/dist/src/types.js +7 -0
  511. package/dist/src/update-check.d.ts +66 -0
  512. package/dist/src/update-check.js +206 -0
  513. package/dist/src/update-check.test.d.ts +1 -0
  514. package/dist/src/update-check.test.js +117 -0
  515. package/dist/src/utils.d.ts +57 -0
  516. package/dist/src/utils.js +152 -0
  517. package/dist/src/utils.test.d.ts +1 -0
  518. package/dist/src/utils.test.js +155 -0
  519. package/dist/src/validate.d.ts +21 -0
  520. package/dist/src/validate.js +130 -0
  521. package/dist/src/validate.test.d.ts +9 -0
  522. package/dist/src/validate.test.js +90 -0
  523. package/dist/src/verify.d.ts +26 -0
  524. package/dist/src/verify.js +67 -0
  525. package/dist/src/version.d.ts +4 -0
  526. package/dist/src/version.js +22 -0
  527. package/package.json +7 -3
  528. package/scripts/check-package-bin.mjs +95 -0
  529. package/scripts/generate-release-notes.ts +234 -0
  530. package/scripts/postinstall.js +1 -1
  531. package/scripts/silent-column-drop-baseline.json +0 -498
  532. package/scripts/typed-error-lint-baseline.json +0 -464
  533. package/skills/webcmd-adapter-author/SKILL.md +216 -213
  534. package/skills/webcmd-adapter-author/references/adapter-template.md +206 -399
  535. package/skills/webcmd-adapter-author/references/api-discovery.md +111 -220
  536. package/skills/webcmd-adapter-author/references/coverage-matrix.md +34 -68
  537. package/skills/webcmd-adapter-author/references/field-conventions.md +84 -167
  538. package/skills/webcmd-adapter-author/references/field-decode-playbook.md +60 -146
  539. package/skills/webcmd-adapter-author/references/jsdom-fixture-pattern.md +111 -178
  540. package/skills/webcmd-adapter-author/references/output-design.md +47 -125
  541. package/skills/webcmd-adapter-author/references/site-memory.md +116 -166
  542. package/skills/webcmd-adapter-author/references/site-recon.md +74 -78
  543. package/skills/webcmd-adapter-author/references/strategy-selection.md +80 -124
  544. package/skills/webcmd-adapter-author/references/success-rate-pitfalls.md +80 -105
  545. package/skills/webcmd-adapter-author/references/typed-errors.md +87 -178
  546. package/skills/webcmd-autofix/SKILL.md +136 -143
  547. package/skills/webcmd-sitemap-author/SKILL.md +58 -67
  548. package/skills/webcmd-sitemap-author/references/sitemap-schema.md +354 -494
  549. package/skills/webcmd-usage/SKILL.md +106 -97
  550. package/clis/12306/auth.js +0 -59
  551. package/clis/12306/me.js +0 -73
  552. package/clis/12306/orders.js +0 -96
  553. package/clis/12306/passengers.js +0 -90
  554. package/clis/12306/price.js +0 -166
  555. package/clis/12306/stations.js +0 -66
  556. package/clis/12306/train.js +0 -91
  557. package/clis/12306/trains.js +0 -166
  558. package/clis/12306/utils.js +0 -272
  559. package/clis/12306/utils.test.js +0 -424
  560. package/clis/1688/assets.js +0 -205
  561. package/clis/1688/assets.test.js +0 -39
  562. package/clis/1688/auth.js +0 -46
  563. package/clis/1688/download.js +0 -77
  564. package/clis/1688/download.test.js +0 -31
  565. package/clis/1688/item.js +0 -188
  566. package/clis/1688/item.test.js +0 -67
  567. package/clis/1688/search.js +0 -310
  568. package/clis/1688/search.test.js +0 -75
  569. package/clis/1688/shared.js +0 -557
  570. package/clis/1688/shared.test.js +0 -57
  571. package/clis/1688/store.js +0 -227
  572. package/clis/1688/store.test.js +0 -62
  573. package/clis/1point3acres/auth.js +0 -52
  574. package/clis/1point3acres/digest.js +0 -35
  575. package/clis/1point3acres/forum.js +0 -51
  576. package/clis/1point3acres/forums.js +0 -44
  577. package/clis/1point3acres/hot.js +0 -35
  578. package/clis/1point3acres/latest.js +0 -35
  579. package/clis/1point3acres/notifications.js +0 -64
  580. package/clis/1point3acres/search.js +0 -71
  581. package/clis/1point3acres/thread.js +0 -117
  582. package/clis/1point3acres/user.js +0 -77
  583. package/clis/1point3acres/utils.js +0 -247
  584. package/clis/36kr/article.js +0 -66
  585. package/clis/36kr/article.test.js +0 -46
  586. package/clis/36kr/hot.js +0 -87
  587. package/clis/36kr/hot.test.js +0 -15
  588. package/clis/36kr/news.js +0 -52
  589. package/clis/36kr/news.test.js +0 -85
  590. package/clis/36kr/search.js +0 -79
  591. package/clis/51job/company.js +0 -126
  592. package/clis/51job/detail.js +0 -109
  593. package/clis/51job/hot.js +0 -56
  594. package/clis/51job/search.js +0 -80
  595. package/clis/51job/utils.js +0 -302
  596. package/clis/51job/utils.test.js +0 -69
  597. package/clis/aibase/news.js +0 -110
  598. package/clis/aibase/news.test.js +0 -59
  599. package/clis/autohome/__fixtures__/catalog.html +0 -11
  600. package/clis/autohome/__fixtures__/koubei.json +0 -116
  601. package/clis/autohome/autohome.test.js +0 -115
  602. package/clis/autohome/brand.js +0 -108
  603. package/clis/autohome/score.js +0 -103
  604. package/clis/autohome/utils.js +0 -157
  605. package/clis/baidu-scholar/search.js +0 -87
  606. package/clis/baidu-scholar/search.test.js +0 -23
  607. package/clis/bilibili/auth.js +0 -36
  608. package/clis/bilibili/comment.js +0 -107
  609. package/clis/bilibili/comment.test.js +0 -153
  610. package/clis/bilibili/comments.js +0 -136
  611. package/clis/bilibili/comments.test.js +0 -142
  612. package/clis/bilibili/download.js +0 -178
  613. package/clis/bilibili/download.test.js +0 -173
  614. package/clis/bilibili/dynamic.js +0 -34
  615. package/clis/bilibili/dynamic.test.js +0 -68
  616. package/clis/bilibili/favorite.js +0 -47
  617. package/clis/bilibili/feed.js +0 -220
  618. package/clis/bilibili/follow.js +0 -140
  619. package/clis/bilibili/follow.test.js +0 -203
  620. package/clis/bilibili/following.js +0 -44
  621. package/clis/bilibili/history.js +0 -45
  622. package/clis/bilibili/hot.js +0 -40
  623. package/clis/bilibili/hot.test.js +0 -17
  624. package/clis/bilibili/me.js +0 -13
  625. package/clis/bilibili/ranking.js +0 -25
  626. package/clis/bilibili/search.js +0 -24
  627. package/clis/bilibili/subtitle.js +0 -141
  628. package/clis/bilibili/subtitle.test.js +0 -240
  629. package/clis/bilibili/summary.js +0 -167
  630. package/clis/bilibili/summary.test.js +0 -210
  631. package/clis/bilibili/unfollow.js +0 -121
  632. package/clis/bilibili/user-videos.js +0 -39
  633. package/clis/bilibili/utils.js +0 -273
  634. package/clis/bilibili/utils.test.js +0 -97
  635. package/clis/bilibili/video.js +0 -155
  636. package/clis/bilibili/video.test.js +0 -308
  637. package/clis/boss/auth.js +0 -47
  638. package/clis/boss/batchgreet.js +0 -61
  639. package/clis/boss/chatlist.js +0 -116
  640. package/clis/boss/chatlist.test.js +0 -211
  641. package/clis/boss/chatmsg.js +0 -117
  642. package/clis/boss/chatmsg.test.js +0 -230
  643. package/clis/boss/detail.js +0 -63
  644. package/clis/boss/exchange.js +0 -46
  645. package/clis/boss/greet.js +0 -49
  646. package/clis/boss/invite.js +0 -64
  647. package/clis/boss/joblist.js +0 -31
  648. package/clis/boss/mark.js +0 -70
  649. package/clis/boss/recommend.js +0 -45
  650. package/clis/boss/resume.js +0 -150
  651. package/clis/boss/search.js +0 -197
  652. package/clis/boss/search.test.js +0 -78
  653. package/clis/boss/send.js +0 -44
  654. package/clis/boss/stats.js +0 -66
  655. package/clis/boss/utils.js +0 -468
  656. package/clis/boss/utils.test.js +0 -34
  657. package/clis/chaoxing/assignments.js +0 -76
  658. package/clis/chaoxing/auth.js +0 -54
  659. package/clis/chaoxing/exams.js +0 -75
  660. package/clis/chaoxing/utils.js +0 -223
  661. package/clis/chaoxing/utils.test.js +0 -45
  662. package/clis/cnki/search.js +0 -61
  663. package/clis/cnki/search.test.js +0 -18
  664. package/clis/ctrip/auth.js +0 -50
  665. package/clis/ctrip/ctrip.test.js +0 -719
  666. package/clis/ctrip/flight.js +0 -136
  667. package/clis/ctrip/hotel-search.js +0 -132
  668. package/clis/ctrip/hotel-suggest.js +0 -45
  669. package/clis/ctrip/search.js +0 -41
  670. package/clis/ctrip/utils.js +0 -473
  671. package/clis/deepseek/ask.js +0 -158
  672. package/clis/deepseek/ask.test.js +0 -399
  673. package/clis/deepseek/auth.js +0 -54
  674. package/clis/deepseek/detail.js +0 -46
  675. package/clis/deepseek/detail.test.js +0 -81
  676. package/clis/deepseek/history.js +0 -27
  677. package/clis/deepseek/new.js +0 -33
  678. package/clis/deepseek/read.js +0 -25
  679. package/clis/deepseek/send.js +0 -140
  680. package/clis/deepseek/send.test.js +0 -107
  681. package/clis/deepseek/status.js +0 -26
  682. package/clis/deepseek/utils.js +0 -487
  683. package/clis/deepseek/utils.test.js +0 -370
  684. package/clis/dianping/__fixtures__/search.html +0 -168
  685. package/clis/dianping/__fixtures__/shop.html +0 -6
  686. package/clis/dianping/auth.js +0 -49
  687. package/clis/dianping/cityResolver.js +0 -185
  688. package/clis/dianping/dianping.test.js +0 -578
  689. package/clis/dianping/search.js +0 -157
  690. package/clis/dianping/shop.js +0 -173
  691. package/clis/dianping/utils.js +0 -157
  692. package/clis/dongchedi/__fixtures__/search.json +0 -60
  693. package/clis/dongchedi/__fixtures__/series-detail.json +0 -911
  694. package/clis/dongchedi/__fixtures__/series-score.json +0 -1396
  695. package/clis/dongchedi/dongchedi.test.js +0 -191
  696. package/clis/dongchedi/koubei.js +0 -85
  697. package/clis/dongchedi/models.js +0 -91
  698. package/clis/dongchedi/score.js +0 -83
  699. package/clis/dongchedi/search.js +0 -83
  700. package/clis/dongchedi/series.js +0 -87
  701. package/clis/dongchedi/specs.js +0 -115
  702. package/clis/dongchedi/utils.js +0 -180
  703. package/clis/douban/auth.js +0 -50
  704. package/clis/douban/book-hot.js +0 -15
  705. package/clis/douban/download.js +0 -68
  706. package/clis/douban/download.test.js +0 -170
  707. package/clis/douban/marks.js +0 -116
  708. package/clis/douban/movie-hot.js +0 -15
  709. package/clis/douban/movie-hot.test.js +0 -14
  710. package/clis/douban/photos.js +0 -35
  711. package/clis/douban/reviews.js +0 -107
  712. package/clis/douban/search.js +0 -18
  713. package/clis/douban/search.test.js +0 -11
  714. package/clis/douban/subject.js +0 -46
  715. package/clis/douban/subject.test.js +0 -11
  716. package/clis/douban/top250.js +0 -68
  717. package/clis/douban/utils.js +0 -657
  718. package/clis/douban/utils.test.js +0 -488
  719. package/clis/doubao/ask.js +0 -40
  720. package/clis/doubao/auth.js +0 -66
  721. package/clis/doubao/detail.js +0 -35
  722. package/clis/doubao/detail.test.js +0 -42
  723. package/clis/doubao/history.js +0 -30
  724. package/clis/doubao/history.test.js +0 -37
  725. package/clis/doubao/meeting-summary.js +0 -41
  726. package/clis/doubao/meeting-transcript.js +0 -38
  727. package/clis/doubao/new.js +0 -22
  728. package/clis/doubao/read.js +0 -21
  729. package/clis/doubao/send.js +0 -24
  730. package/clis/doubao/status.js +0 -26
  731. package/clis/doubao/utils.js +0 -1156
  732. package/clis/doubao/utils.test.js +0 -396
  733. package/clis/doubao-app/ask.js +0 -54
  734. package/clis/doubao-app/dump.js +0 -25
  735. package/clis/doubao-app/new.js +0 -21
  736. package/clis/doubao-app/read.js +0 -19
  737. package/clis/doubao-app/screenshot.js +0 -19
  738. package/clis/doubao-app/send.js +0 -28
  739. package/clis/doubao-app/status.js +0 -17
  740. package/clis/doubao-app/utils.js +0 -110
  741. package/clis/douyin/_shared/browser-fetch.js +0 -66
  742. package/clis/douyin/_shared/browser-fetch.test.js +0 -64
  743. package/clis/douyin/_shared/creation-id.js +0 -5
  744. package/clis/douyin/_shared/creation-id.test.js +0 -22
  745. package/clis/douyin/_shared/evaluate-result.js +0 -16
  746. package/clis/douyin/_shared/imagex-upload.js +0 -53
  747. package/clis/douyin/_shared/imagex-upload.test.js +0 -87
  748. package/clis/douyin/_shared/public-api.js +0 -29
  749. package/clis/douyin/_shared/sts2.js +0 -21
  750. package/clis/douyin/_shared/sts2.test.js +0 -27
  751. package/clis/douyin/_shared/text-extra.js +0 -15
  752. package/clis/douyin/_shared/text-extra.test.js +0 -37
  753. package/clis/douyin/_shared/timing.js +0 -22
  754. package/clis/douyin/_shared/timing.test.js +0 -28
  755. package/clis/douyin/_shared/tos-upload-short-read.test.js +0 -83
  756. package/clis/douyin/_shared/tos-upload.js +0 -331
  757. package/clis/douyin/_shared/tos-upload.test.js +0 -229
  758. package/clis/douyin/_shared/transcode.js +0 -45
  759. package/clis/douyin/_shared/transcode.test.js +0 -91
  760. package/clis/douyin/_shared/vod-upload.js +0 -212
  761. package/clis/douyin/_shared/vod-upload.test.js +0 -38
  762. package/clis/douyin/activities.js +0 -23
  763. package/clis/douyin/activities.test.js +0 -55
  764. package/clis/douyin/auth.js +0 -39
  765. package/clis/douyin/collections.js +0 -23
  766. package/clis/douyin/collections.test.js +0 -45
  767. package/clis/douyin/delete.js +0 -152
  768. package/clis/douyin/delete.test.js +0 -100
  769. package/clis/douyin/draft.js +0 -355
  770. package/clis/douyin/draft.test.js +0 -335
  771. package/clis/douyin/drafts.js +0 -24
  772. package/clis/douyin/drafts.test.js +0 -11
  773. package/clis/douyin/hashtag.js +0 -114
  774. package/clis/douyin/hashtag.test.js +0 -171
  775. package/clis/douyin/location.js +0 -25
  776. package/clis/douyin/location.test.js +0 -23
  777. package/clis/douyin/profile.js +0 -29
  778. package/clis/douyin/profile.test.js +0 -46
  779. package/clis/douyin/publish-upload-id.test.js +0 -206
  780. package/clis/douyin/publish.js +0 -341
  781. package/clis/douyin/publish.test.js +0 -38
  782. package/clis/douyin/search.js +0 -308
  783. package/clis/douyin/search.test.js +0 -307
  784. package/clis/douyin/stats.js +0 -28
  785. package/clis/douyin/stats.test.js +0 -22
  786. package/clis/douyin/update.js +0 -32
  787. package/clis/douyin/update.test.js +0 -11
  788. package/clis/douyin/user-videos.js +0 -82
  789. package/clis/douyin/user-videos.test.js +0 -151
  790. package/clis/douyin/videos.js +0 -52
  791. package/clis/douyin/videos.test.js +0 -54
  792. package/clis/eastmoney/_secid.js +0 -78
  793. package/clis/eastmoney/announcement.js +0 -53
  794. package/clis/eastmoney/convertible.js +0 -74
  795. package/clis/eastmoney/etf.js +0 -66
  796. package/clis/eastmoney/holders.js +0 -79
  797. package/clis/eastmoney/hot-rank.js +0 -51
  798. package/clis/eastmoney/hot-rank.test.js +0 -59
  799. package/clis/eastmoney/index-board.js +0 -97
  800. package/clis/eastmoney/kline.js +0 -88
  801. package/clis/eastmoney/kuaixun.js +0 -55
  802. package/clis/eastmoney/longhu.js +0 -68
  803. package/clis/eastmoney/money-flow.js +0 -79
  804. package/clis/eastmoney/northbound.js +0 -58
  805. package/clis/eastmoney/quote.js +0 -108
  806. package/clis/eastmoney/rank.js +0 -95
  807. package/clis/eastmoney/sectors.js +0 -77
  808. package/clis/flomo/auth.js +0 -55
  809. package/clis/flomo/memos.js +0 -228
  810. package/clis/flomo/memos.test.js +0 -144
  811. package/clis/gitee/auth.js +0 -41
  812. package/clis/gitee/index.js +0 -3
  813. package/clis/gitee/search.js +0 -137
  814. package/clis/gitee/search.test.js +0 -65
  815. package/clis/gitee/trending.js +0 -568
  816. package/clis/gitee/user.js +0 -200
  817. package/clis/gitee/user.test.js +0 -63
  818. package/clis/gov-law/commands.test.js +0 -39
  819. package/clis/gov-law/recent.js +0 -22
  820. package/clis/gov-law/search.js +0 -41
  821. package/clis/gov-law/shared.js +0 -51
  822. package/clis/gov-policy/__fixtures__/recent.html +0 -16
  823. package/clis/gov-policy/__fixtures__/search.html +0 -41
  824. package/clis/gov-policy/gov-policy.test.js +0 -224
  825. package/clis/gov-policy/recent.js +0 -90
  826. package/clis/gov-policy/search.js +0 -91
  827. package/clis/gov-policy/utils.js +0 -54
  828. package/clis/guazi/__fixtures__/detail.html +0 -7
  829. package/clis/guazi/__fixtures__/list.html +0 -5
  830. package/clis/guazi/browse.js +0 -95
  831. package/clis/guazi/car.js +0 -110
  832. package/clis/guazi/guazi.test.js +0 -126
  833. package/clis/guazi/utils.js +0 -133
  834. package/clis/huodongxing/events.js +0 -322
  835. package/clis/huodongxing/events.test.js +0 -296
  836. package/clis/hupu/__fixtures__/hot-home.html +0 -64
  837. package/clis/hupu/auth.js +0 -47
  838. package/clis/hupu/detail.js +0 -72
  839. package/clis/hupu/hot.js +0 -163
  840. package/clis/hupu/hot.test.js +0 -224
  841. package/clis/hupu/like.js +0 -76
  842. package/clis/hupu/mentions.js +0 -160
  843. package/clis/hupu/reply.js +0 -72
  844. package/clis/hupu/search.js +0 -60
  845. package/clis/hupu/unlike.js +0 -76
  846. package/clis/hupu/utils.js +0 -319
  847. package/clis/jd/add-cart.js +0 -72
  848. package/clis/jd/auth.js +0 -46
  849. package/clis/jd/cart.js +0 -80
  850. package/clis/jd/commands.test.js +0 -41
  851. package/clis/jd/detail.js +0 -63
  852. package/clis/jd/item.js +0 -730
  853. package/clis/jd/item.test.js +0 -354
  854. package/clis/jd/item.test.ts +0 -517
  855. package/clis/jd/reviews.js +0 -55
  856. package/clis/jd/search.js +0 -66
  857. package/clis/jianyu/auth.js +0 -62
  858. package/clis/jianyu/detail.js +0 -21
  859. package/clis/jianyu/search.js +0 -634
  860. package/clis/jianyu/search.test.js +0 -153
  861. package/clis/jianyu/shared/china-bid-search.js +0 -165
  862. package/clis/jianyu/shared/procurement-contract.js +0 -324
  863. package/clis/jianyu/shared/procurement-contract.test.js +0 -72
  864. package/clis/jianyu/shared/procurement-detail.js +0 -107
  865. package/clis/jianyu/shared/procurement-detail.test.js +0 -84
  866. package/clis/jike/auth.js +0 -48
  867. package/clis/jike/comment.js +0 -107
  868. package/clis/jike/create.js +0 -106
  869. package/clis/jike/feed.js +0 -68
  870. package/clis/jike/like.js +0 -61
  871. package/clis/jike/notifications.js +0 -169
  872. package/clis/jike/post.js +0 -72
  873. package/clis/jike/read.test.js +0 -86
  874. package/clis/jike/repost.js +0 -103
  875. package/clis/jike/search.js +0 -68
  876. package/clis/jike/topic.js +0 -65
  877. package/clis/jike/user.js +0 -65
  878. package/clis/jike/utils.js +0 -25
  879. package/clis/jimeng/auth.js +0 -46
  880. package/clis/jimeng/generate.js +0 -84
  881. package/clis/jimeng/history.js +0 -48
  882. package/clis/jimeng/new.js +0 -44
  883. package/clis/jimeng/workspaces.js +0 -42
  884. package/clis/juejin/hot.js +0 -37
  885. package/clis/juejin/juejin.test.js +0 -241
  886. package/clis/juejin/recommend.js +0 -61
  887. package/clis/juejin/utils.js +0 -199
  888. package/clis/ke/auth.js +0 -46
  889. package/clis/ke/chengjiao.js +0 -78
  890. package/clis/ke/ershoufang.js +0 -101
  891. package/clis/ke/utils.js +0 -104
  892. package/clis/ke/xiaoqu.js +0 -78
  893. package/clis/ke/zufang.js +0 -95
  894. package/clis/kimi/_utils.js +0 -110
  895. package/clis/kimi/audit-extras.js +0 -268
  896. package/clis/kimi/auth.js +0 -57
  897. package/clis/kimi/chat.js +0 -470
  898. package/clis/kimi/kimi.test.js +0 -187
  899. package/clis/kimi/storage.js +0 -169
  900. package/clis/kimi/ui.js +0 -314
  901. package/clis/kimi/usage.js +0 -144
  902. package/clis/linux-do/auth.js +0 -55
  903. package/clis/linux-do/categories.js +0 -50
  904. package/clis/linux-do/feed.js +0 -395
  905. package/clis/linux-do/feed.test.js +0 -153
  906. package/clis/linux-do/search.js +0 -29
  907. package/clis/linux-do/tags.js +0 -28
  908. package/clis/linux-do/topic-content.js +0 -155
  909. package/clis/linux-do/topic-content.test.js +0 -59
  910. package/clis/linux-do/topic.js +0 -53
  911. package/clis/linux-do/user-posts.js +0 -57
  912. package/clis/linux-do/user-topics.js +0 -37
  913. package/clis/maimai/auth.js +0 -47
  914. package/clis/maimai/search-talents.js +0 -192
  915. package/clis/maimai/search-talents.test.js +0 -29
  916. package/clis/mubu/doc.js +0 -41
  917. package/clis/mubu/docs.js +0 -44
  918. package/clis/mubu/notes.js +0 -245
  919. package/clis/mubu/recent.js +0 -28
  920. package/clis/mubu/search.js +0 -63
  921. package/clis/mubu/utils.js +0 -304
  922. package/clis/nowcoder/auth.js +0 -65
  923. package/clis/nowcoder/companies.js +0 -24
  924. package/clis/nowcoder/creators.js +0 -28
  925. package/clis/nowcoder/detail.js +0 -62
  926. package/clis/nowcoder/experience.js +0 -37
  927. package/clis/nowcoder/hot.js +0 -25
  928. package/clis/nowcoder/jobs.js +0 -22
  929. package/clis/nowcoder/notifications.js +0 -30
  930. package/clis/nowcoder/papers.js +0 -41
  931. package/clis/nowcoder/practice.js +0 -38
  932. package/clis/nowcoder/recommend.js +0 -31
  933. package/clis/nowcoder/referral.js +0 -40
  934. package/clis/nowcoder/salary.js +0 -41
  935. package/clis/nowcoder/search.js +0 -50
  936. package/clis/nowcoder/suggest.js +0 -34
  937. package/clis/nowcoder/topics.js +0 -28
  938. package/clis/nowcoder/trending.js +0 -26
  939. package/clis/ones/common.js +0 -144
  940. package/clis/ones/enrich-tasks.js +0 -37
  941. package/clis/ones/login.js +0 -81
  942. package/clis/ones/logout.js +0 -18
  943. package/clis/ones/me.js +0 -31
  944. package/clis/ones/my-tasks.js +0 -121
  945. package/clis/ones/resolve-labels.js +0 -64
  946. package/clis/ones/task-helpers.js +0 -212
  947. package/clis/ones/task-helpers.test.js +0 -12
  948. package/clis/ones/task.js +0 -67
  949. package/clis/ones/tasks.js +0 -80
  950. package/clis/ones/token-info.js +0 -43
  951. package/clis/ones/worklog.js +0 -268
  952. package/clis/ones/worklog.test.js +0 -20
  953. package/clis/powerchina/auth.js +0 -52
  954. package/clis/powerchina/search.js +0 -251
  955. package/clis/powerchina/search.test.js +0 -93
  956. package/clis/quark/auth.js +0 -47
  957. package/clis/quark/ls.js +0 -64
  958. package/clis/quark/mkdir.js +0 -37
  959. package/clis/quark/mv.js +0 -54
  960. package/clis/quark/rename.js +0 -27
  961. package/clis/quark/rm.js +0 -25
  962. package/clis/quark/save.js +0 -81
  963. package/clis/quark/share-tree.js +0 -46
  964. package/clis/quark/utils.js +0 -146
  965. package/clis/quark/utils.test.js +0 -58
  966. package/clis/qwen/ask.js +0 -104
  967. package/clis/qwen/ask.test.js +0 -36
  968. package/clis/qwen/auth.js +0 -56
  969. package/clis/qwen/detail.js +0 -62
  970. package/clis/qwen/history.js +0 -61
  971. package/clis/qwen/image.js +0 -179
  972. package/clis/qwen/new.js +0 -23
  973. package/clis/qwen/read.js +0 -41
  974. package/clis/qwen/send.js +0 -55
  975. package/clis/qwen/status.js +0 -37
  976. package/clis/qwen/utils.js +0 -461
  977. package/clis/qwen/utils.test.js +0 -128
  978. package/clis/rednote/auth.js +0 -52
  979. package/clis/rednote/comments.js +0 -85
  980. package/clis/rednote/download.js +0 -59
  981. package/clis/rednote/feed.js +0 -27
  982. package/clis/rednote/navigation.test.js +0 -26
  983. package/clis/rednote/note.js +0 -68
  984. package/clis/rednote/notifications.js +0 -139
  985. package/clis/rednote/rednote.test.js +0 -240
  986. package/clis/rednote/search.js +0 -107
  987. package/clis/rednote/user.js +0 -55
  988. package/clis/sinablog/article.js +0 -15
  989. package/clis/sinablog/hot.js +0 -15
  990. package/clis/sinablog/search.js +0 -52
  991. package/clis/sinablog/user.js +0 -16
  992. package/clis/sinablog/utils.js +0 -186
  993. package/clis/sinafinance/news.js +0 -62
  994. package/clis/sinafinance/rolling-news.js +0 -41
  995. package/clis/sinafinance/stock-rank.js +0 -66
  996. package/clis/sinafinance/stock.js +0 -121
  997. package/clis/sinafinance/stock.test.js +0 -59
  998. package/clis/smzdm/search.js +0 -149
  999. package/clis/smzdm/search.test.js +0 -114
  1000. package/clis/taobao/add-cart.js +0 -150
  1001. package/clis/taobao/auth.js +0 -58
  1002. package/clis/taobao/cart.js +0 -96
  1003. package/clis/taobao/commands.test.js +0 -41
  1004. package/clis/taobao/detail.js +0 -71
  1005. package/clis/taobao/reviews.js +0 -77
  1006. package/clis/taobao/search.js +0 -97
  1007. package/clis/tdx/hot-rank.js +0 -48
  1008. package/clis/tdx/hot-rank.test.js +0 -59
  1009. package/clis/ths/hot-rank.js +0 -50
  1010. package/clis/ths/hot-rank.test.js +0 -64
  1011. package/clis/tieba/commands.test.js +0 -79
  1012. package/clis/tieba/hot.js +0 -48
  1013. package/clis/tieba/posts.js +0 -86
  1014. package/clis/tieba/read.js +0 -141
  1015. package/clis/tieba/search.js +0 -109
  1016. package/clis/tieba/utils.js +0 -240
  1017. package/clis/tieba/utils.test.js +0 -290
  1018. package/clis/toutiao/articles.js +0 -55
  1019. package/clis/toutiao/auth.js +0 -70
  1020. package/clis/toutiao/hot.js +0 -63
  1021. package/clis/toutiao/toutiao.test.js +0 -378
  1022. package/clis/toutiao/utils.js +0 -161
  1023. package/clis/trae-cn/activity.js +0 -22
  1024. package/clis/trae-cn/approve.js +0 -52
  1025. package/clis/trae-cn/ask.js +0 -99
  1026. package/clis/trae-cn/dump.js +0 -5
  1027. package/clis/trae-cn/export.js +0 -40
  1028. package/clis/trae-cn/model.js +0 -22
  1029. package/clis/trae-cn/new.js +0 -63
  1030. package/clis/trae-cn/read.js +0 -23
  1031. package/clis/trae-cn/screenshot.js +0 -5
  1032. package/clis/trae-cn/select-model.js +0 -25
  1033. package/clis/trae-cn/send.js +0 -23
  1034. package/clis/trae-cn/setup.js +0 -75
  1035. package/clis/trae-cn/status.js +0 -27
  1036. package/clis/trae-cn/targets.js +0 -96
  1037. package/clis/trae-cn/trae-cn.test.js +0 -412
  1038. package/clis/trae-cn/utils.js +0 -750
  1039. package/clis/trae-cn/watch.js +0 -119
  1040. package/clis/uisdc/news.js +0 -105
  1041. package/clis/uisdc/news.test.js +0 -66
  1042. package/clis/v2ex/auth.js +0 -44
  1043. package/clis/v2ex/daily.js +0 -99
  1044. package/clis/v2ex/hot.js +0 -26
  1045. package/clis/v2ex/latest.js +0 -26
  1046. package/clis/v2ex/me.js +0 -100
  1047. package/clis/v2ex/member.js +0 -28
  1048. package/clis/v2ex/node.js +0 -39
  1049. package/clis/v2ex/nodes.js +0 -26
  1050. package/clis/v2ex/notifications.js +0 -72
  1051. package/clis/v2ex/replies.js +0 -27
  1052. package/clis/v2ex/topic.js +0 -31
  1053. package/clis/v2ex/user.js +0 -34
  1054. package/clis/wanfang/search.js +0 -66
  1055. package/clis/wanfang/search.test.js +0 -23
  1056. package/clis/wechat-channels/auth.js +0 -62
  1057. package/clis/wechat-channels/publish.js +0 -732
  1058. package/clis/wechat-channels/publish.test.js +0 -144
  1059. package/clis/weibo/auth.js +0 -53
  1060. package/clis/weibo/comments.js +0 -53
  1061. package/clis/weibo/delete.js +0 -172
  1062. package/clis/weibo/delete.test.js +0 -94
  1063. package/clis/weibo/envelope.test.js +0 -85
  1064. package/clis/weibo/favorites.js +0 -170
  1065. package/clis/weibo/favorites.test.js +0 -114
  1066. package/clis/weibo/feed.js +0 -69
  1067. package/clis/weibo/hot.js +0 -39
  1068. package/clis/weibo/me.js +0 -75
  1069. package/clis/weibo/post.js +0 -75
  1070. package/clis/weibo/publish.js +0 -306
  1071. package/clis/weibo/publish.test.js +0 -192
  1072. package/clis/weibo/search.js +0 -80
  1073. package/clis/weibo/user-posts.js +0 -234
  1074. package/clis/weibo/user-posts.test.js +0 -92
  1075. package/clis/weibo/user.js +0 -63
  1076. package/clis/weibo/utils.js +0 -59
  1077. package/clis/weibo/utils.test.js +0 -36
  1078. package/clis/weixin/create-draft.js +0 -226
  1079. package/clis/weixin/download.js +0 -371
  1080. package/clis/weixin/download.test.js +0 -106
  1081. package/clis/weixin/drafts.js +0 -66
  1082. package/clis/weixin/drafts.test.js +0 -69
  1083. package/clis/weixin/search.js +0 -157
  1084. package/clis/weixin/search.test.js +0 -227
  1085. package/clis/weread/ai-outline.js +0 -171
  1086. package/clis/weread/ai-outline.test.js +0 -83
  1087. package/clis/weread/auth.js +0 -59
  1088. package/clis/weread/book-search.js +0 -438
  1089. package/clis/weread/book-search.test.js +0 -242
  1090. package/clis/weread/book.js +0 -233
  1091. package/clis/weread/commands.test.js +0 -398
  1092. package/clis/weread/highlights.js +0 -24
  1093. package/clis/weread/notebooks.js +0 -22
  1094. package/clis/weread/notes.js +0 -30
  1095. package/clis/weread/private-api-regression.test.js +0 -369
  1096. package/clis/weread/ranking.js +0 -29
  1097. package/clis/weread/search-regression.test.js +0 -494
  1098. package/clis/weread/search.js +0 -186
  1099. package/clis/weread/shelf.js +0 -66
  1100. package/clis/weread/utils.js +0 -321
  1101. package/clis/weread/utils.test.js +0 -128
  1102. package/clis/weread-official/book.js +0 -135
  1103. package/clis/weread-official/commands.test.js +0 -385
  1104. package/clis/weread-official/discover.js +0 -107
  1105. package/clis/weread-official/list-apis.js +0 -95
  1106. package/clis/weread-official/notes.js +0 -171
  1107. package/clis/weread-official/readdata.js +0 -158
  1108. package/clis/weread-official/review.js +0 -93
  1109. package/clis/weread-official/search.js +0 -106
  1110. package/clis/weread-official/shelf.js +0 -97
  1111. package/clis/weread-official/utils.js +0 -293
  1112. package/clis/weread-official/utils.test.js +0 -242
  1113. package/clis/xianyu/auth.js +0 -68
  1114. package/clis/xianyu/chat.js +0 -74
  1115. package/clis/xianyu/chat.test.js +0 -84
  1116. package/clis/xianyu/im.js +0 -322
  1117. package/clis/xianyu/im.test.js +0 -253
  1118. package/clis/xianyu/inbox.js +0 -96
  1119. package/clis/xianyu/item.js +0 -153
  1120. package/clis/xianyu/item.test.js +0 -56
  1121. package/clis/xianyu/messages.js +0 -91
  1122. package/clis/xianyu/publish.js +0 -485
  1123. package/clis/xianyu/publish.test.js +0 -220
  1124. package/clis/xianyu/reply.js +0 -82
  1125. package/clis/xianyu/search.js +0 -262
  1126. package/clis/xianyu/search.test.js +0 -104
  1127. package/clis/xianyu/utils.js +0 -8
  1128. package/clis/xiaoe/auth.js +0 -55
  1129. package/clis/xiaoe/catalog.js +0 -227
  1130. package/clis/xiaoe/content.js +0 -175
  1131. package/clis/xiaoe/courses.js +0 -127
  1132. package/clis/xiaoe/detail.js +0 -36
  1133. package/clis/xiaoe/play-url.js +0 -121
  1134. package/clis/xiaoe/xiaoe.test.js +0 -486
  1135. package/clis/xiaohongshu/ask.js +0 -426
  1136. package/clis/xiaohongshu/ask.test.js +0 -271
  1137. package/clis/xiaohongshu/auth.js +0 -53
  1138. package/clis/xiaohongshu/collection-helpers.js +0 -283
  1139. package/clis/xiaohongshu/collection-helpers.test.js +0 -125
  1140. package/clis/xiaohongshu/comments.js +0 -228
  1141. package/clis/xiaohongshu/comments.test.js +0 -320
  1142. package/clis/xiaohongshu/creator-note-detail.js +0 -482
  1143. package/clis/xiaohongshu/creator-note-detail.test.js +0 -451
  1144. package/clis/xiaohongshu/creator-notes-summary.js +0 -98
  1145. package/clis/xiaohongshu/creator-notes-summary.test.js +0 -94
  1146. package/clis/xiaohongshu/creator-notes.js +0 -479
  1147. package/clis/xiaohongshu/creator-notes.test.js +0 -281
  1148. package/clis/xiaohongshu/creator-profile.js +0 -55
  1149. package/clis/xiaohongshu/creator-stats.js +0 -76
  1150. package/clis/xiaohongshu/creator-stats.test.js +0 -24
  1151. package/clis/xiaohongshu/delete-note.js +0 -260
  1152. package/clis/xiaohongshu/delete-note.test.js +0 -172
  1153. package/clis/xiaohongshu/download.js +0 -249
  1154. package/clis/xiaohongshu/download.test.js +0 -339
  1155. package/clis/xiaohongshu/draft-clear.js +0 -91
  1156. package/clis/xiaohongshu/draft-delete.js +0 -103
  1157. package/clis/xiaohongshu/draft-open.js +0 -43
  1158. package/clis/xiaohongshu/draft-utils.js +0 -142
  1159. package/clis/xiaohongshu/drafts.js +0 -28
  1160. package/clis/xiaohongshu/drafts.test.js +0 -172
  1161. package/clis/xiaohongshu/feed.js +0 -163
  1162. package/clis/xiaohongshu/feed.test.js +0 -126
  1163. package/clis/xiaohongshu/follow.js +0 -226
  1164. package/clis/xiaohongshu/follow.test.js +0 -211
  1165. package/clis/xiaohongshu/liked.js +0 -29
  1166. package/clis/xiaohongshu/liked.test.js +0 -82
  1167. package/clis/xiaohongshu/navigation.test.js +0 -38
  1168. package/clis/xiaohongshu/note-helpers.js +0 -69
  1169. package/clis/xiaohongshu/note.js +0 -104
  1170. package/clis/xiaohongshu/note.test.js +0 -249
  1171. package/clis/xiaohongshu/notifications.js +0 -46
  1172. package/clis/xiaohongshu/publish.js +0 -1423
  1173. package/clis/xiaohongshu/publish.test.js +0 -1141
  1174. package/clis/xiaohongshu/saved.js +0 -29
  1175. package/clis/xiaohongshu/saved.test.js +0 -143
  1176. package/clis/xiaohongshu/search.js +0 -330
  1177. package/clis/xiaohongshu/search.test.js +0 -325
  1178. package/clis/xiaohongshu/unfollow.js +0 -285
  1179. package/clis/xiaohongshu/user-helpers.js +0 -78
  1180. package/clis/xiaohongshu/user-helpers.test.js +0 -160
  1181. package/clis/xiaohongshu/user.js +0 -140
  1182. package/clis/xiaohongshu/user.test.js +0 -141
  1183. package/clis/xiaoyuzhou/auth.js +0 -303
  1184. package/clis/xiaoyuzhou/auth.test.js +0 -124
  1185. package/clis/xiaoyuzhou/download.js +0 -54
  1186. package/clis/xiaoyuzhou/download.test.js +0 -135
  1187. package/clis/xiaoyuzhou/episode.js +0 -34
  1188. package/clis/xiaoyuzhou/podcast-episodes.js +0 -41
  1189. package/clis/xiaoyuzhou/podcast-episodes.test.js +0 -78
  1190. package/clis/xiaoyuzhou/podcast.js +0 -33
  1191. package/clis/xiaoyuzhou/transcript.js +0 -77
  1192. package/clis/xiaoyuzhou/transcript.test.js +0 -195
  1193. package/clis/xiaoyuzhou/utils.js +0 -15
  1194. package/clis/xiaoyuzhou/utils.test.js +0 -39
  1195. package/clis/xueqiu/auth.js +0 -63
  1196. package/clis/xueqiu/comments.js +0 -355
  1197. package/clis/xueqiu/comments.test.js +0 -696
  1198. package/clis/xueqiu/danjuan-utils.js +0 -126
  1199. package/clis/xueqiu/danjuan-utils.test.js +0 -41
  1200. package/clis/xueqiu/earnings-date.js +0 -45
  1201. package/clis/xueqiu/feed.js +0 -39
  1202. package/clis/xueqiu/fund-holdings.js +0 -29
  1203. package/clis/xueqiu/fund-snapshot.js +0 -26
  1204. package/clis/xueqiu/groups.js +0 -23
  1205. package/clis/xueqiu/hot-stock.js +0 -32
  1206. package/clis/xueqiu/hot.js +0 -37
  1207. package/clis/xueqiu/kline.js +0 -44
  1208. package/clis/xueqiu/search.js +0 -37
  1209. package/clis/xueqiu/stock.js +0 -65
  1210. package/clis/xueqiu/utils.js +0 -48
  1211. package/clis/xueqiu/utils.test.js +0 -26
  1212. package/clis/xueqiu/watchlist.js +0 -37
  1213. package/clis/youdao/note.js +0 -258
  1214. package/clis/youdao/note.test.js +0 -99
  1215. package/clis/yuanbao/ask.js +0 -362
  1216. package/clis/yuanbao/ask.test.js +0 -124
  1217. package/clis/yuanbao/auth.js +0 -59
  1218. package/clis/yuanbao/detail.js +0 -65
  1219. package/clis/yuanbao/history.js +0 -51
  1220. package/clis/yuanbao/new.js +0 -72
  1221. package/clis/yuanbao/new.test.js +0 -30
  1222. package/clis/yuanbao/read.js +0 -38
  1223. package/clis/yuanbao/send.js +0 -57
  1224. package/clis/yuanbao/shared.js +0 -341
  1225. package/clis/yuanbao/shared.test.js +0 -80
  1226. package/clis/yuanbao/status.js +0 -44
  1227. package/clis/zhihu/answer-comments.js +0 -280
  1228. package/clis/zhihu/answer-comments.test.js +0 -287
  1229. package/clis/zhihu/answer-detail.js +0 -216
  1230. package/clis/zhihu/answer-detail.test.js +0 -338
  1231. package/clis/zhihu/answer.js +0 -54
  1232. package/clis/zhihu/answer.test.js +0 -54
  1233. package/clis/zhihu/auth.js +0 -59
  1234. package/clis/zhihu/collection.js +0 -199
  1235. package/clis/zhihu/collection.test.js +0 -337
  1236. package/clis/zhihu/collections.js +0 -128
  1237. package/clis/zhihu/collections.test.js +0 -182
  1238. package/clis/zhihu/comment.js +0 -55
  1239. package/clis/zhihu/comment.test.js +0 -50
  1240. package/clis/zhihu/download.js +0 -80
  1241. package/clis/zhihu/download.test.js +0 -12
  1242. package/clis/zhihu/favorite.js +0 -87
  1243. package/clis/zhihu/favorite.test.js +0 -59
  1244. package/clis/zhihu/follow.js +0 -50
  1245. package/clis/zhihu/follow.test.js +0 -42
  1246. package/clis/zhihu/followers.js +0 -40
  1247. package/clis/zhihu/followers.test.js +0 -42
  1248. package/clis/zhihu/following.js +0 -40
  1249. package/clis/zhihu/following.test.js +0 -44
  1250. package/clis/zhihu/hot.js +0 -44
  1251. package/clis/zhihu/like.js +0 -47
  1252. package/clis/zhihu/like.test.js +0 -41
  1253. package/clis/zhihu/paginate.js +0 -128
  1254. package/clis/zhihu/pins.js +0 -41
  1255. package/clis/zhihu/pins.test.js +0 -44
  1256. package/clis/zhihu/question.js +0 -113
  1257. package/clis/zhihu/question.test.js +0 -251
  1258. package/clis/zhihu/recommend.js +0 -103
  1259. package/clis/zhihu/recommend.test.js +0 -143
  1260. package/clis/zhihu/search.js +0 -206
  1261. package/clis/zhihu/search.test.js +0 -198
  1262. package/clis/zhihu/target.js +0 -91
  1263. package/clis/zhihu/target.test.js +0 -77
  1264. package/clis/zhihu/text.js +0 -29
  1265. package/clis/zhihu/text.test.js +0 -24
  1266. package/clis/zhihu/user-answers.js +0 -41
  1267. package/clis/zhihu/user-answers.test.js +0 -69
  1268. package/clis/zhihu/user-arg.js +0 -34
  1269. package/clis/zhihu/user-articles.js +0 -40
  1270. package/clis/zhihu/user-articles.test.js +0 -44
  1271. package/clis/zhihu/user.js +0 -59
  1272. package/clis/zhihu/user.test.js +0 -73
  1273. package/clis/zhihu/write-shared.js +0 -228
  1274. package/clis/zhihu/write-shared.test.js +0 -176
  1275. package/clis/zsxq/auth.js +0 -68
  1276. package/clis/zsxq/dynamics.js +0 -48
  1277. package/clis/zsxq/groups.js +0 -33
  1278. package/clis/zsxq/search.js +0 -44
  1279. package/clis/zsxq/search.test.js +0 -24
  1280. package/clis/zsxq/topic.js +0 -50
  1281. package/clis/zsxq/topic.test.js +0 -30
  1282. package/clis/zsxq/topics.js +0 -26
  1283. package/clis/zsxq/topics.test.js +0 -24
  1284. package/clis/zsxq/utils.js +0 -233
  1285. package/clis/zsxq/utils.test.js +0 -31
  1286. package/skills/webcmd-adapter-author/references/site-memory/bilibili.md +0 -70
  1287. package/skills/webcmd-adapter-author/references/site-memory/eastmoney.md +0 -70
  1288. package/skills/webcmd-adapter-author/references/site-memory/tonghuashun.md +0 -51
  1289. package/skills/webcmd-adapter-author/references/site-memory/xueqiu.md +0 -58
  1290. /package/{clis/douyin/_shared/types.js → dist/src/adapter-shadow.test.d.ts} +0 -0
@@ -23,7 +23,7 @@ const GEMINI_RESPONSE_NOISE_PATTERNS = [
23
23
  /Google Privacy Policy/gi,
24
24
  /Opens in a new window/gi,
25
25
  ];
26
- const GEMINI_TRANSCRIPT_CHROME_MARKERS = ['gemini', '我的内容', '对话', 'google terms', 'google privacy policy'];
26
+ const GEMINI_TRANSCRIPT_CHROME_MARKERS = ['gemini', 'My content', 'conversation', 'google terms', 'google privacy policy'];
27
27
  const GEMINI_COMPOSER_SELECTORS = [
28
28
  '.ql-editor[contenteditable="true"]',
29
29
  '.ql-editor[role="textbox"]',
@@ -265,7 +265,7 @@ function extractGeminiTranscriptLineCandidate(transcriptLine, promptText) {
265
265
  // Some transcript snapshots flatten "prompt + answer" into a single line.
266
266
  // Recover the answer only when the line starts with the current prompt.
267
267
  if (candidate.startsWith(prompt)) {
268
- const tail = candidate.slice(prompt.length).replace(/^[\s::,,-]+/, '').trim();
268
+ const tail = candidate.slice(prompt.length).replace(/^[\s::,,-]+/, '').trim();
269
269
  return tail ? sanitizeGeminiResponseText(tail, '') : '';
270
270
  }
271
271
  return sanitized;
@@ -281,8 +281,8 @@ function getStateScript() {
281
281
  const href = node.getAttribute('href') || '';
282
282
  return text === 'sign in'
283
283
  || aria === 'sign in'
284
- || text === '登录'
285
- || aria === '登录'
284
+ || text === 'Log in'
285
+ || aria === 'Log in'
286
286
  || href.includes('accounts.google.com/ServiceLogin');
287
287
  });
288
288
 
@@ -309,8 +309,8 @@ function readGeminiSnapshotScript() {
309
309
  const aria = (node.getAttribute('aria-label') || '').trim().toLowerCase();
310
310
  return text === 'stop response'
311
311
  || aria === 'stop response'
312
- || text === '停止回答'
313
- || aria === '停止回答';
312
+ || text === 'Stop response'
313
+ || aria === 'Stop response';
314
314
  });
315
315
  const turns = ${getTurnsScript().trim()};
316
316
  const transcriptLines = ${getTranscriptLinesScript().trim()};
@@ -593,8 +593,8 @@ function submitComposerScript() {
593
593
  });
594
594
  }
595
595
 
596
- const excludedPattern = /main menu|主菜单|microphone|麦克风|upload|上传|mode|模式|tools|工具|settings|临时对话|new chat|新对话/i;
597
- const submitPattern = /send|发送|傳送|submit|提交/i;
596
+ const excludedPattern = /main menu|localized text|microphone|localized text|upload|localized text|mode|mode|tools|tools|settings|Temporary chat|new chat|New chat/i;
597
+ const submitPattern = /send|Send|Send|submit|Submit/i;
598
598
  let bestButton = null;
599
599
  let bestScore = -1;
600
600
 
@@ -665,10 +665,10 @@ function clickNewChatScript() {
665
665
  return isVisible(node) && (
666
666
  text === 'new chat'
667
667
  || aria === 'new chat'
668
- || text === '发起新对话'
669
- || aria === '发起新对话'
670
- || text === '新对话'
671
- || aria === '新对话'
668
+ || text === 'Start new chat'
669
+ || aria === 'Start new chat'
670
+ || text === 'New chat'
671
+ || aria === 'New chat'
672
672
  );
673
673
  });
674
674
 
@@ -684,7 +684,7 @@ function clickNewChatScript() {
684
684
  function openGeminiToolsMenuScript() {
685
685
  return `
686
686
  (() => {
687
- const labels = ['tools', 'tool', 'mode', '研究', 'deep research', 'deep-research', '工具'];
687
+ const labels = ['tools', 'tool', 'mode', 'research', 'deep research', 'deep-research', 'tools'];
688
688
  const normalize = (value) => (value || '').replace(/\\s+/g, ' ').trim().toLowerCase();
689
689
  const matchesLabel = (value) => {
690
690
  const text = normalize(value);
@@ -973,7 +973,7 @@ function getGeminiConversationListScript() {
973
973
  `;
974
974
  }
975
975
 
976
- // Gemini collapses the sidebar's "最近" / "Recents" section by default, so the
976
+ // Gemini collapses the sidebar's "Recent" / "Recents" section by default, so the
977
977
  // /app/<id> conversation anchors are not present in the DOM (or are hidden)
978
978
  // until that section is expanded. The script below opens the sidebar if it is
979
979
  // collapsed and expands the Recents toggle, returning true if it likely
@@ -999,16 +999,16 @@ function expandGeminiRecentScript() {
999
999
  // 1. Open the sidebar if it is collapsed (button only renders when closed).
1000
1000
  const openSidebar = buttons.find((b) => {
1001
1001
  const label = normalize(b.getAttribute('aria-label') || '');
1002
- return /打开边栏|open sidebar|open navigation|展开边栏/i.test(label);
1002
+ return /Open sidebar|open sidebar|open navigation|Expand sidebar/i.test(label);
1003
1003
  });
1004
1004
  if (openSidebar) { openSidebar.click(); changed = true; }
1005
1005
 
1006
- // 2. Expand the "最近" / "Recents" toggle if it is currently collapsed.
1006
+ // 2. Expand the "Recent" / "Recents" toggle if it is currently collapsed.
1007
1007
  const recentToggle = buttons.find((b) => {
1008
1008
  const label = normalize(b.getAttribute('aria-label') || '');
1009
1009
  const expanded = (b.getAttribute('aria-expanded') || '').toLowerCase();
1010
- return /最近|recent/i.test(label) && (
1011
- /展开|收起|expand|collapse|toggle|show|hide/i.test(label)
1010
+ return /Recent|recent/i.test(label) && (
1011
+ /Expand|Collapse|expand|collapse|toggle|show|hide/i.test(label)
1012
1012
  || expanded === 'false'
1013
1013
  || expanded === 'true'
1014
1014
  );
@@ -1016,7 +1016,7 @@ function expandGeminiRecentScript() {
1016
1016
  if (recentToggle) {
1017
1017
  const label = normalize(recentToggle.getAttribute('aria-label') || '');
1018
1018
  const expanded = (recentToggle.getAttribute('aria-expanded') || '').toLowerCase();
1019
- const explicitExpandLabel = /展开|显示|expand|show/i.test(label) && !/收起|collapse|hide/i.test(label);
1019
+ const explicitExpandLabel = /Expand|Show|expand|show/i.test(label) && !/Collapse|collapse|hide/i.test(label);
1020
1020
  if (expanded === 'false' || (expanded !== 'true' && explicitExpandLabel)) {
1021
1021
  recentToggle.click();
1022
1022
  changed = true;
@@ -1138,7 +1138,7 @@ export async function startNewGeminiChat(page) {
1138
1138
  export async function getGeminiConversationList(page) {
1139
1139
  await ensureGeminiPage(page);
1140
1140
  let rows = [];
1141
- // Gemini collapses the sidebar "最近"/Recents section by default, hiding
1141
+ // Gemini collapses the sidebar "Recent"/Recents section by default, hiding
1142
1142
  // the conversation anchors. Retry extraction after expanding it.
1143
1143
  for (let attempt = 0; attempt < 3; attempt += 1) {
1144
1144
  const raw = requireGeminiArrayResult(await page.evaluate(getGeminiConversationListScript()), 'Gemini conversation list');
@@ -1440,11 +1440,11 @@ function exportGeminiDeepResearchReportScript(maxWaitMs) {
1440
1440
  (async () => {
1441
1441
  const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
1442
1442
  const labels = {
1443
- actionMenu: ['open menu for conversation actions', 'conversation actions', '会话操作'],
1444
- share: ['share & export', 'share and export', 'share/export', '分享与导出', '分享和导出', '分享并导出', '共享和导出'],
1445
- shareConversation: ['share conversation', '分享会话', '分享对话'],
1446
- export: ['export', '导出'],
1447
- exportDocs: ['export to docs', 'export to google docs', 'export to doc', '导出到 docs', '导出到文档', '导出到 google docs'],
1443
+ actionMenu: ['open menu for conversation actions', 'conversation actions', 'localized text'],
1444
+ share: ['share & export', 'share and export', 'share/export', 'Share and export', 'Share and export', 'Share and export', 'Share and export'],
1445
+ shareConversation: ['share conversation', 'Share conversation', 'Share conversation'],
1446
+ export: ['export', 'Export'],
1447
+ exportDocs: ['export to docs', 'export to google docs', 'export to doc', 'Export to docs', 'Export to Docs', 'Export to google docs'],
1448
1448
  };
1449
1449
 
1450
1450
  const recorderKey = '__webcmdGeminiExportUrls';
@@ -1547,15 +1547,15 @@ function exportGeminiDeepResearchReportScript(maxWaitMs) {
1547
1547
  };
1548
1548
  const isKindMatch = (kind, combined, targetLabels) => {
1549
1549
  if (includesAny(combined, targetLabels)) return true;
1550
- if (kind === 'share') return hasTokens(combined, ['share', 'export']) || hasTokens(combined, ['分享', '导出']);
1551
- if (kind === 'export') return hasTokens(combined, ['export']) || hasTokens(combined, ['导出']);
1550
+ if (kind === 'share') return hasTokens(combined, ['share', 'export']) || hasTokens(combined, ['Share', 'Export']);
1551
+ if (kind === 'export') return hasTokens(combined, ['export']) || hasTokens(combined, ['Export']);
1552
1552
  if (kind === 'export-docs') {
1553
1553
  return hasTokens(combined, ['export', 'docs'])
1554
- || hasTokens(combined, ['导出', '文档'])
1555
- || hasTokens(combined, ['导出', 'docs']);
1554
+ || hasTokens(combined, ['Export', 'Docs'])
1555
+ || hasTokens(combined, ['Export', 'docs']);
1556
1556
  }
1557
1557
  if (kind === 'action-menu') {
1558
- return hasTokens(combined, ['conversation', 'action']) || hasTokens(combined, ['会话', '操作']);
1558
+ return hasTokens(combined, ['conversation', 'action']) || hasTokens(combined, ['localized text', 'localized text']);
1559
1559
  }
1560
1560
  return false;
1561
1561
  };
@@ -1868,11 +1868,11 @@ function openModelPickerForThinkingScript() {
1868
1868
  const VERSION_LABEL_RE = /\\d+\\.\\d+/;
1869
1869
 
1870
1870
  const MODE_SELECTOR_PATTERNS = [
1871
- /模式选择器/i,
1871
+ /Mode selector/i,
1872
1872
  /mode[\\s-]*selector/i,
1873
1873
  /model[\\s-]*selector/i,
1874
1874
  /model[\\s-]*picker/i,
1875
- /选择模型/i,
1875
+ /Select model/i,
1876
1876
  /select[\\s-]+model/i,
1877
1877
  /choose[\\s-]+model/i,
1878
1878
  /switch[\\s-]+model/i,
@@ -1921,7 +1921,7 @@ function openModelPickerForThinkingScript() {
1921
1921
 
1922
1922
  // Method 4: Fallback — look for any element with model-related attributes.
1923
1923
  const attrEls = Array.from(
1924
- document.querySelectorAll('[data-model-selector], [aria-label*="model" i], [aria-label*="模式" i]')
1924
+ document.querySelectorAll('[data-model-selector], [aria-label*="model" i], [aria-label*="mode" i]')
1925
1925
  ).filter(isVisible);
1926
1926
  if (attrEls.length > 0) return attrEls[0];
1927
1927
 
@@ -1942,7 +1942,7 @@ function openModelPickerForThinkingScript() {
1942
1942
  }
1943
1943
 
1944
1944
  /**
1945
- * Browser evaluate script that clicks the "思考等级" / "Thinking level"
1945
+ * Browser evaluate script that clicks the "Thinking level" / "Thinking level"
1946
1946
  * toggle inside an already-open model-picker menu to expand thinking options.
1947
1947
  * Returns true if the toggle was found and clicked.
1948
1948
  */
@@ -1995,7 +1995,7 @@ function clickThinkingToggleInMenuScript() {
1995
1995
 
1996
1996
  const thinkingToggle = menuItems.find((item) => {
1997
1997
  const text = (item.textContent || '').replace(/\\s+/g, ' ').trim();
1998
- return /思考等级|thinking level|thinking mode/i.test(text);
1998
+ return /Thinking level|thinking level|thinking mode/i.test(text);
1999
1999
  });
2000
2000
 
2001
2001
  if (thinkingToggle) {
@@ -2020,8 +2020,8 @@ function selectThinkingInMenuScript(thinkingValue) {
2020
2020
  const normalizedValue = String(thinkingValue || '').trim().toLowerCase();
2021
2021
  if (!normalizedValue) return '(() => "")';
2022
2022
  const labelMap = JSON.stringify({
2023
- standard: ['standard', '标准', '標準'],
2024
- extended: ['extended', '扩展', '擴展', '拡張'],
2023
+ standard: ['standard', 'standard', 'standard'],
2024
+ extended: ['extended', 'extended', 'extended', 'extended'],
2025
2025
  });
2026
2026
  return `
2027
2027
  (() => {
@@ -2125,7 +2125,7 @@ function selectThinkingInMenuScript(thinkingValue) {
2125
2125
  * Multi-step approach matching modelsCommand.func:
2126
2126
  * 1. Open the model-picker menu.
2127
2127
  * 2. Wait for React to render the menu.
2128
- * 3. Click the "思考等级"/"Thinking level" toggle to expand thinking options.
2128
+ * 3. Click the "Thinking level"/"Thinking level" toggle to expand thinking options.
2129
2129
  * 4. Wait for the expanded items to render.
2130
2130
  * 5. Select the requested thinking level.
2131
2131
  * 6. Close the menu.
@@ -2198,11 +2198,11 @@ function getCurrentGeminiModelScript() {
2198
2198
  const VERSION_LABEL_RE = /\\d+\\.\\d+/;
2199
2199
 
2200
2200
  const MODE_SELECTOR_PATTERNS = [
2201
- /模式选择器/i,
2201
+ /Mode selector/i,
2202
2202
  /mode[\\s-]*selector/i,
2203
2203
  /model[\\s-]*selector/i,
2204
2204
  /model[\\s-]*picker/i,
2205
- /选择模型/i,
2205
+ /Select model/i,
2206
2206
  /select[\\s-]+model/i,
2207
2207
  /choose[\\s-]+model/i,
2208
2208
  /switch[\\s-]+model/i,
@@ -2251,7 +2251,7 @@ function getCurrentGeminiModelScript() {
2251
2251
 
2252
2252
  // Method 4: Fallback — look for any element with model-related attributes.
2253
2253
  const attrEls = Array.from(
2254
- document.querySelectorAll('[data-model-selector], [aria-label*="model" i], [aria-label*="模式" i]')
2254
+ document.querySelectorAll('[data-model-selector], [aria-label*="model" i], [aria-label*="mode" i]')
2255
2255
  ).filter(isVisible);
2256
2256
  if (attrEls.length > 0) return attrEls[0];
2257
2257
 
@@ -57,10 +57,10 @@ describe('collectGeminiTranscriptAdditions', () => {
57
57
  expect(collectGeminiTranscriptAdditions(before, current, prompt)).toBe('Soft spring rain arrives');
58
58
  });
59
59
  it('keeps a reply line that quotes the prompt inside the answer body', () => {
60
- const prompt = '请只回复:OK';
60
+ const prompt = 'Please reply only:OK';
61
61
  const before = ['baseline'];
62
- const current = ['baseline', '关于“请只回复:OK”,这里是解释。'];
63
- expect(collectGeminiTranscriptAdditions(before, current, prompt)).toBe('关于“请只回复:OK”,这里是解释。');
62
+ const current = ['baseline', 'About"Please reply only:OK",here is an explanation.'];
63
+ expect(collectGeminiTranscriptAdditions(before, current, prompt)).toBe('About"Please reply only:OK",here is an explanation.');
64
64
  });
65
65
  });
66
66
  describe('gemini send strategy', () => {
@@ -78,8 +78,8 @@ describe('gemini send strategy', () => {
78
78
  .mockResolvedValueOnce({ ok: true })
79
79
  .mockResolvedValueOnce({ hasText: true })
80
80
  .mockResolvedValueOnce('button');
81
- const result = await sendGeminiMessage(page, '你好');
82
- expect(nativeType).toHaveBeenCalledWith('你好');
81
+ const result = await sendGeminiMessage(page, 'hello');
82
+ expect(nativeType).toHaveBeenCalledWith('hello');
83
83
  expect(nativeKeyPress).not.toHaveBeenCalled();
84
84
  expect(result).toBe('button');
85
85
  });
@@ -94,8 +94,8 @@ describe('gemini send strategy', () => {
94
94
  .mockResolvedValueOnce({ hasText: false })
95
95
  .mockResolvedValueOnce({ hasText: true })
96
96
  .mockResolvedValueOnce('enter');
97
- const result = await sendGeminiMessage(page, '你好');
98
- expect(nativeType).toHaveBeenCalledWith('你好');
97
+ const result = await sendGeminiMessage(page, 'hello');
98
+ expect(nativeType).toHaveBeenCalledWith('hello');
99
99
  expect(nativeKeyPress).toHaveBeenCalledWith('Enter');
100
100
  expect(evaluate).toHaveBeenCalledTimes(5);
101
101
  expect(result).toBe('enter');
@@ -110,8 +110,8 @@ describe('gemini send strategy', () => {
110
110
  .mockResolvedValueOnce({ ok: true })
111
111
  .mockResolvedValueOnce({ hasText: true })
112
112
  .mockResolvedValueOnce('button');
113
- const result = await sendGeminiMessage(page, '你好');
114
- expect(nativeType).toHaveBeenCalledWith('你好');
113
+ const result = await sendGeminiMessage(page, 'hello');
114
+ expect(nativeType).toHaveBeenCalledWith('hello');
115
115
  expect(result).toBe('button');
116
116
  });
117
117
  it('retries composer preparation until a slow-loading composer appears', async () => {
@@ -125,7 +125,7 @@ describe('gemini send strategy', () => {
125
125
  .mockResolvedValueOnce({ ok: true })
126
126
  .mockResolvedValueOnce({ hasText: true })
127
127
  .mockResolvedValueOnce('button');
128
- const result = await sendGeminiMessage(page, '你好');
128
+ const result = await sendGeminiMessage(page, 'hello');
129
129
  expect(result).toBe('button');
130
130
  expect(wait.mock.calls.filter(([value]) => value === 1)).toHaveLength(3);
131
131
  });
@@ -141,42 +141,42 @@ describe('gemini send strategy', () => {
141
141
  .mockResolvedValueOnce({ ok: true })
142
142
  .mockResolvedValueOnce({ hasText: true })
143
143
  .mockResolvedValueOnce('button');
144
- const result = await sendGeminiMessage(page, '你好');
144
+ const result = await sendGeminiMessage(page, 'hello');
145
145
  expect(result).toBe('button');
146
146
  expect(wait.mock.calls.filter(([value]) => value === 1)).toHaveLength(4);
147
147
  });
148
148
  it('avoids innerHTML in the fallback insertion path for trusted types pages', () => {
149
- expect(__test__.insertComposerTextFallbackScript('你好')).not.toContain('innerHTML');
150
- expect(__test__.insertComposerTextFallbackScript('你好')).toContain('replaceChildren');
149
+ expect(__test__.insertComposerTextFallbackScript('hello')).not.toContain('innerHTML');
150
+ expect(__test__.insertComposerTextFallbackScript('hello')).toContain('replaceChildren');
151
151
  });
152
152
  it('keeps a button submit path in the generated submit script', () => {
153
153
  expect(__test__.submitComposerScript()).toContain('.click()');
154
154
  });
155
155
  it('matches the Traditional Chinese send label in the generated submit script', () => {
156
- expect(__test__.submitComposerScript()).toContain('傳送');
156
+ expect(__test__.submitComposerScript()).toContain('Send');
157
157
  });
158
158
  it('supports localized new chat labels in the generated new-chat script', () => {
159
- expect(__test__.clickNewChatScript()).toContain('发起新对话');
159
+ expect(__test__.clickNewChatScript()).toContain('Start new chat');
160
160
  });
161
161
  });
162
162
  describe('gemini turn normalization', () => {
163
163
  it('collapses only adjacent duplicate turns so identical replies across rounds remain visible', () => {
164
164
  const turns = [
165
- { Role: 'User', Text: '你说\n\n请只回复:OK' },
166
- { Role: 'User', Text: '请只回复:OK' },
165
+ { Role: 'User', Text: 'You said\n\nPlease reply only:OK' },
166
+ { Role: 'User', Text: 'Please reply only:OK' },
167
167
  { Role: 'Assistant', Text: 'OK' },
168
168
  { Role: 'Assistant', Text: 'OK' },
169
- { Role: 'User', Text: '你说\n\n请只回复:OK' },
170
- { Role: 'User', Text: '请只回复:OK' },
169
+ { Role: 'User', Text: 'You said\n\nPlease reply only:OK' },
170
+ { Role: 'User', Text: 'Please reply only:OK' },
171
171
  { Role: 'Assistant', Text: 'OK' },
172
172
  { Role: 'Assistant', Text: 'OK' },
173
173
  ];
174
174
  expect(__test__.collapseAdjacentGeminiTurns(turns)).toEqual([
175
- { Role: 'User', Text: '你说\n\n请只回复:OK' },
176
- { Role: 'User', Text: '请只回复:OK' },
175
+ { Role: 'User', Text: 'You said\n\nPlease reply only:OK' },
176
+ { Role: 'User', Text: 'Please reply only:OK' },
177
177
  { Role: 'Assistant', Text: 'OK' },
178
- { Role: 'User', Text: '你说\n\n请只回复:OK' },
179
- { Role: 'User', Text: '请只回复:OK' },
178
+ { Role: 'User', Text: 'You said\n\nPlease reply only:OK' },
179
+ { Role: 'User', Text: 'Please reply only:OK' },
180
180
  { Role: 'Assistant', Text: 'OK' },
181
181
  ]);
182
182
  });
@@ -204,7 +204,7 @@ describe('gemini evaluate result boundaries', () => {
204
204
  changed: false,
205
205
  clicks: 0,
206
206
  });
207
- expect(runExpandRecentScript('<button aria-label="收起最近">最近</button>')).toEqual({
207
+ expect(runExpandRecentScript('<button aria-label="Collapse recent">Recent</button>')).toEqual({
208
208
  changed: false,
209
209
  clicks: 0,
210
210
  });
@@ -426,9 +426,9 @@ describe('openModelPickerForThinkingScript — picker detection', () => {
426
426
  expect(result).toEqual({ ok: true });
427
427
  });
428
428
 
429
- it('Method 1: detects picker by aria-label "模式选择器"', () => {
429
+ it('Method 1: detects picker by aria-label "Mode selector"', () => {
430
430
  const { window } = createPickerDom(`
431
- <button aria-label="模式选择器">选择</button>
431
+ <button aria-label="Mode selector">localized text</button>
432
432
  `);
433
433
  const result = evalScript(window, __test__.openModelPickerForThinkingScript);
434
434
  expect(result).toEqual({ ok: true });
@@ -442,9 +442,9 @@ describe('openModelPickerForThinkingScript — picker detection', () => {
442
442
  expect(result).toEqual({ ok: true });
443
443
  });
444
444
 
445
- it('Method 1: detects picker by aria-label "选择模型"', () => {
445
+ it('Method 1: detects picker by aria-label "Select model"', () => {
446
446
  const { window } = createPickerDom(`
447
- <button aria-label="选择模型">选择</button>
447
+ <button aria-label="Select model">localized text</button>
448
448
  `);
449
449
  const result = evalScript(window, __test__.openModelPickerForThinkingScript);
450
450
  expect(result).toEqual({ ok: true });
@@ -550,9 +550,9 @@ describe('selectGeminiModelScript — picker detection parity', () => {
550
550
  });
551
551
 
552
552
  describe('getCurrentGeminiModelScript — picker detection parity', () => {
553
- it('Method 1: detects picker by aria-label "模式选择器"', () => {
553
+ it('Method 1: detects picker by aria-label "Mode selector"', () => {
554
554
  const { window } = createPickerDom(`
555
- <button aria-label="模式选择器">2.5 Flash</button>
555
+ <button aria-label="Mode selector">2.5 Flash</button>
556
556
  `);
557
557
  const result = window.eval(__test__.getCurrentGeminiModelScript());
558
558
  expect(result).toBe('2.5-flash');
@@ -140,7 +140,7 @@ export async function ggbEval(page, cmd) {
140
140
  const afterCount = collectNames().length;
141
141
  const dialogText = [...document.querySelectorAll('[role="dialog"], .gwt-DialogBox')]
142
142
  .map(node => node.textContent?.trim() || '')
143
- .find(text => /error|unknown command|错误|未知的指令/i.test(text)) || '';
143
+ .find(text => /error|unknown command|error|unknown command/i.test(text)) || '';
144
144
  return {
145
145
  ok: label !== '' || afterCount > beforeCount,
146
146
  label,
@@ -6,13 +6,13 @@ cli({
6
6
  site: 'google-scholar',
7
7
  name: 'search',
8
8
  access: 'read',
9
- description: 'Google Scholar 学术搜索',
9
+ description: 'Google Scholar scholar search',
10
10
  domain: 'scholar.google.com',
11
11
  strategy: Strategy.PUBLIC,
12
12
  browser: true,
13
13
  args: [
14
- { name: 'query', positional: true, required: true, help: '搜索关键词' },
15
- { name: 'limit', type: 'int', default: 10, help: '返回结果数量 (max 20)' },
14
+ { name: 'query', positional: true, required: true, help: 'Search keyword' },
15
+ { name: 'limit', type: 'int', default: 10, help: 'Number of results to return (max 20)' },
16
16
  ],
17
17
  columns: ['rank', 'title', 'authors', 'source', 'year', 'cited', 'url'],
18
18
  func: async (page, kwargs) => {
@@ -38,7 +38,7 @@ cli({
38
38
  return [{ status: 'dry-run (pass --yes to actually delete)', id }];
39
39
  }
40
40
 
41
- const result = await clickConversationMenuItem(page, id, ['删除', 'delete']);
41
+ const result = await clickConversationMenuItem(page, id, ['localized text', 'delete']);
42
42
  if (!result || !result.ok) {
43
43
  const detail = result?.detail ? ` ${result.detail}` : '';
44
44
  throw new CommandExecutionError(`${result?.reason || 'Failed to click delete menu item.'}${detail}`, SESSION_HINT);
@@ -66,7 +66,7 @@ async function collectHistory(page, { offset, limit, maxScrolls }) {
66
66
  };
67
67
  const hasHistoryEntry = Boolean(document.querySelector('a[href^="/c/"]'));
68
68
  const hasHistoryLauncher = Array.from(document.querySelectorAll('button, [role="button"]'))
69
- .some((node) => isVisible(node) && /^(查看全部|show all|view all)$/i.test((node.textContent || '').trim()));
69
+ .some((node) => isVisible(node) && /^(localized text|show all|view all)$/i.test((node.textContent || '').trim()));
70
70
  const signInCta = Array.from(document.querySelectorAll('button, a'))
71
71
  .some((node) => isVisible(node) && /^(sign in|log in)$/i.test((node.textContent || '').trim()));
72
72
  if (signInCta && !hasHistoryEntry && !hasHistoryLauncher) {
@@ -76,7 +76,7 @@ async function collectHistory(page, { offset, limit, maxScrolls }) {
76
76
  const clickAllHistory = () => {
77
77
  const buttons = Array.from(document.querySelectorAll('button, [role="button"]'))
78
78
  .filter((node) => node instanceof HTMLElement && isVisible(node));
79
- const target = buttons.find((node) => /^(查看全部|show all|view all)$/i.test((node.textContent || '').trim()));
79
+ const target = buttons.find((node) => /^(localized text|show all|view all)$/i.test((node.textContent || '').trim()));
80
80
  if (!target) return false;
81
81
  target.click();
82
82
  return true;
@@ -62,7 +62,7 @@ export const grokExportCommand = cli({
62
62
  };
63
63
  const hasHistoryEntry = Boolean(document.querySelector('a[href^="/c/"]'));
64
64
  const hasHistoryLauncher = Array.from(document.querySelectorAll('button, [role="button"]'))
65
- .some((node) => isVisible(node) && /^(查看全部|show all|view all)$/i.test((node.textContent || '').trim()));
65
+ .some((node) => isVisible(node) && /^(localized text|show all|view all)$/i.test((node.textContent || '').trim()));
66
66
  const signInCta = Array.from(document.querySelectorAll('button, a'))
67
67
  .some((node) => isVisible(node) && /^(sign in|log in)$/i.test((node.textContent || '').trim()));
68
68
  if (signInCta && !hasHistoryEntry && !hasHistoryLauncher) {
@@ -72,7 +72,7 @@ export const grokExportCommand = cli({
72
72
  const clickAllHistory = () => {
73
73
  const buttons = Array.from(document.querySelectorAll('button, [role="button"]'))
74
74
  .filter((node) => node instanceof HTMLElement && isVisible(node));
75
- const target = buttons.find((node) => /^(查看全部|show all|view all)$/i.test((node.textContent || '').trim()));
75
+ const target = buttons.find((node) => /^(localized text|show all|view all)$/i.test((node.textContent || '').trim()));
76
76
  if (!target) return false;
77
77
  target.click();
78
78
  return true;
package/clis/grok/pin.js CHANGED
@@ -61,8 +61,8 @@ function defineToggle(name, accessLabels) {
61
61
  });
62
62
  }
63
63
 
64
- // Grok's context menu shows EITHER "置顶" OR "取消置顶" depending on the
64
+ // Grok's context menu shows EITHER "localized text" OR "localized text" depending on the
65
65
  // current pin state, never both. We register two commands that bind to
66
66
  // the matching label so callers can use whichever they want.
67
- defineToggle('pin', ['置顶', 'pin']);
68
- defineToggle('unpin', ['取消置顶', 'unpin']);
67
+ defineToggle('pin', ['localized text', 'pin']);
68
+ defineToggle('unpin', ['localized text', 'unpin']);
@@ -108,12 +108,12 @@ export async function getCurrentSessionId(page) {
108
108
 
109
109
  // Model picker trigger has stable id="model-select-trigger". Use that as the
110
110
  // primary selector — aria-label localizes (e.g. "Model select" in English,
111
- // "模型选择" in Chinese, etc.) and is unreliable across browser locales.
111
+ // "Model selection" in Chinese, etc.) and is unreliable across browser locales.
112
112
  const MODEL_TRIGGER_SELECTORS = [
113
113
  '#model-select-trigger',
114
114
  'button[aria-label="Model select"]',
115
- 'button[aria-label="模型选择"]',
116
- 'button[aria-label="モデル選択"]',
115
+ 'button[aria-label="Model selection"]',
116
+ 'button[aria-label="モデルlocalized text"]',
117
117
  ];
118
118
 
119
119
  export async function getModelLabel(page) {
@@ -245,10 +245,10 @@ export async function startNewChat(page) {
245
245
  // matches one of the localized labels. Returns whether the click happened.
246
246
  //
247
247
  // Menu items observed on grok.com (2026-05-31):
248
- // "打开新标签页" / "Open in new tab"
249
- // "重命名" / "Rename"
250
- // "置顶" or "取消置顶" / "Pin" or "Unpin"
251
- // "删除" / "Delete"
248
+ // "Open in new tab"
249
+ // "Rename"
250
+ // "Pin" or "Unpin"
251
+ // "Delete"
252
252
  //
253
253
  // Grok's delete action takes effect IMMEDIATELY — no confirmation dialog —
254
254
  // so callers must enforce their own --yes / dry-run gating.
@@ -319,10 +319,10 @@ export function getPinStateFromMenuLabels(labels) {
319
319
  const normalized = (Array.isArray(labels) ? labels : [])
320
320
  .map((label) => String(label || '').trim().toLowerCase())
321
321
  .filter(Boolean);
322
- if (normalized.some((label) => label === '取消置顶' || label === 'unpin')) {
322
+ if (normalized.some((label) => label === 'unpin')) {
323
323
  return 'pinned';
324
324
  }
325
- if (normalized.some((label) => label === '置顶' || label === 'pin')) {
325
+ if (normalized.some((label) => label === 'pin')) {
326
326
  return 'unpinned';
327
327
  }
328
328
  return '';
@@ -535,12 +535,12 @@ export async function sendMessage(page, prompt) {
535
535
  // Prefer data-testid (locale-independent); fall back to aria-label per
536
536
  // language. As of 2026-05-31 Grok renders button[data-testid="chat-submit"]
537
537
  // once the composer has content. The aria-label varies: "Submit" (en),
538
- // "提交" (zh-CN), and presumably other locales.
538
+ // "Submit" (zh-CN), and presumably other locales.
539
539
  const submitSelectors = [
540
540
  'button[data-testid="chat-submit"]',
541
541
  'button[aria-label="Submit"]',
542
- 'button[aria-label="提交"]',
543
- 'button[aria-label="送信"]',
542
+ 'button[aria-label="Submit"]',
543
+ 'button[aria-label="Send"]',
544
544
  ];
545
545
  let submit = null;
546
546
  for (let attempt = 0; attempt < 12; attempt += 1) {
@@ -105,12 +105,12 @@ describe('grok normalizeBooleanFlag', () => {
105
105
  describe('grok getPinStateFromMenuLabels', () => {
106
106
  it('detects pinned state from unpin labels without substring collisions', () => {
107
107
  expect(__test__.getPinStateFromMenuLabels(['Open in new tab', 'Unpin', 'Delete'])).toBe('pinned');
108
- expect(__test__.getPinStateFromMenuLabels(['打开新标签页', '取消置顶', '删除'])).toBe('pinned');
108
+ expect(__test__.getPinStateFromMenuLabels(['Rename', 'Unpin', 'Delete'])).toBe('pinned');
109
109
  });
110
110
 
111
111
  it('detects unpinned state from pin labels', () => {
112
112
  expect(__test__.getPinStateFromMenuLabels(['Open in new tab', 'Pin', 'Delete'])).toBe('unpinned');
113
- expect(__test__.getPinStateFromMenuLabels(['打开新标签页', '置顶', '删除'])).toBe('unpinned');
113
+ expect(__test__.getPinStateFromMenuLabels(['Rename', 'Pin', 'Delete'])).toBe('unpinned');
114
114
  });
115
115
 
116
116
  it('returns empty string when neither state label is visible', () => {
@@ -155,7 +155,7 @@ describe('indeed adapter — URL builders', () => {
155
155
  describe('indeed adapter — DOM normalizers', () => {
156
156
  it('dedupeTags drops the salary duplicate and trims', () => {
157
157
  const tags = ['$50 - $100 an hour', 'Contract', 'Hourly pay', 'Flexible schedule', 'Contract'];
158
- expect(dedupeTags(tags, '$50 - $100 an hour')).toBe('Contract · Hourly pay · Flexible schedule');
158
+ expect(dedupeTags(tags, '$50 - $100 an hour')).toBe('Contract \u00b7 Hourly pay \u00b7 Flexible schedule');
159
159
  });
160
160
 
161
161
  it('dedupeTags handles empty / no-salary input', () => {
@@ -184,7 +184,7 @@ describe('indeed adapter — DOM normalizers', () => {
184
184
  company: 'Somos, Inc.',
185
185
  location: 'Remote',
186
186
  salary: '$150,000 - $179,000 a year',
187
- tags: 'Full-time · 401(k)',
187
+ tags: 'Full-time \u00b7 401(k)',
188
188
  url: `${INDEED_ORIGIN}/viewjob?jk=a0021a1886f32d09`,
189
189
  });
190
190
  });
@@ -270,7 +270,7 @@ describe('indeed adapter — search runtime', () => {
270
270
  company: 'Acme',
271
271
  location: 'Remote',
272
272
  salary: '$180,000 a year',
273
- tags: 'Full-time · 401(k)',
273
+ tags: 'Full-time \u00b7 401(k)',
274
274
  url: `${INDEED_ORIGIN}/viewjob?jk=dccc07ac5a6a3683`,
275
275
  }]);
276
276
  });
@@ -118,7 +118,7 @@ export function dedupeTags(tags, salary) {
118
118
  if (out.includes(trimmed)) continue;
119
119
  out.push(trimmed);
120
120
  }
121
- return out.join(' · ');
121
+ return out.join(' \u00b7 ');
122
122
  }
123
123
 
124
124
  /**