@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
@@ -134,7 +134,7 @@ export function buildListChannelsScript() {
134
134
 
135
135
  function cleanChannelLabel(label) {
136
136
  var cleaned = String(label || '').trim();
137
- var commaIdx = cleaned.search(/[,,]/);
137
+ var commaIdx = cleaned.search(/[,,]/);
138
138
  if (commaIdx !== -1) cleaned = cleaned.slice(commaIdx + 1).trimStart();
139
139
  return cleaned;
140
140
  }
@@ -151,12 +151,12 @@ export function buildListChannelsScript() {
151
151
 
152
152
  function channelName(label, el) {
153
153
  var cleaned = cleanChannelLabel(label);
154
- var m = cleaned.match(/^(.+?)\\s*[(](.+?)[)]\\s*$/);
154
+ var m = cleaned.match(/^(.+?)\\s*[((](.+?)[))]\\s*$/);
155
155
  if (m) return m[1].trim();
156
156
  var ariaName = el.getAttribute('aria-label') || '';
157
- if (ariaName && ariaName !== label) return cleanChannelLabel(ariaName).replace(/\\s*[(].*?[)]\\s*$/, '').trim();
157
+ if (ariaName && ariaName !== label) return cleanChannelLabel(ariaName).replace(/\\s*[((].*?[))]\\s*$/, '').trim();
158
158
  var text = (el.textContent || '').replace(/\\s+/g, ' ').trim();
159
- return text.replace(/\\s*[(].*?[)]\\s*$/, '').trim();
159
+ return text.replace(/\\s*[((].*?[))]\\s*$/, '').trim();
160
160
  }
161
161
 
162
162
  var links = Array.from(document.querySelectorAll('a[href*="/channels/"]'));
@@ -171,7 +171,7 @@ export function buildListChannelsScript() {
171
171
 
172
172
  var label = el.getAttribute('aria-label') || el.getAttribute('title') || '';
173
173
  var cleaned = cleanChannelLabel(label);
174
- if (/[(]\\s*category\\s*[)]/i.test(cleaned)) return;
174
+ if (/[((]\\s*category\\s*[))]/i.test(cleaned)) return;
175
175
 
176
176
  var name = channelName(cleaned, el);
177
177
  if (!name) return;
@@ -355,7 +355,7 @@ export function buildRouteStateScript() {
355
355
  route: parseRoute(window.location.href),
356
356
  has_messages: !!document.querySelector('[id^="chat-messages-"], [class*="messageListItem"]'),
357
357
  has_threads: !!document.querySelector('a[href*="/channels/"][href*="/"]'),
358
- has_header: !!document.querySelector('[class*="title"], [aria-label*="Channel"], [aria-label*="频道"]')
358
+ has_header: !!document.querySelector('[class*="title"], [aria-label*="Channel"], [aria-label*="Channel"]')
359
359
  };
360
360
  })()
361
361
  `;
@@ -1,13 +1,13 @@
1
1
  <!doctype html>
2
2
  <html lang="zh">
3
- <head><meta charset="utf-8"><title>通知 | Facebook</title></head>
3
+ <head><meta charset="utf-8"><title>notifications | Facebook</title></head>
4
4
  <body>
5
5
  <div role="main">
6
- <div class="x1rdy4ex" role="listitem"><div><div><div><div><div><div><span dir="auto"><div><div><h2><span><span>新通知</span></span></h2></div><div><div><div>&nbsp;</div><div><div></div></div></div></div></div></span></div></div></div></div></div></div></div>
7
- <div class="x1n2onr6" role="listitem"><div data-visualcompletion="ignore-dynamic" role="none"><a href="https://www.facebook.com/photo/?fbid=104250644186433&amp;set=a.104250310853133&amp;notif_id=1777926497886652&amp;notif_t=onthisday&amp;ref=notif" role="link" tabindex="0"><div><div><div><div data-visualcompletion="ignore"><div><div aria-hidden="true"></div><div role="none" data-visualcompletion="ignore"></div></div></div></div></div><div><div><div><div><div><span dir="auto"><span><div>未读</div>回顾你在 2019年6月的那段过往.</span></span></div><div><span dir="auto"><span><span><span><abbr aria-label="2天前"><span>2天</span></abbr></span></span></span></span></div></div></div><div><div></div></div></div><div><div><div><div aria-label="标记为已读,回顾你在 2019年6月的那段过往." role="button" tabindex="0"><span data-visualcompletion="ignore"></span></div></div></div></div></div></div><div role="none" data-visualcompletion="ignore"></div></a></div><div><div><div><div aria-controls="_r_1o_" aria-expanded="false" aria-haspopup="dialog" aria-label="管理Jake Win通知设置" role="button" tabindex="0"><div role="none" data-visualcompletion="ignore"></div></div></div></div></div></div>
8
- <div class="x1n2onr6" role="listitem"><div data-visualcompletion="ignore-dynamic" role="none"><a href="https://www.facebook.com/jake.win.39/posts/pfbid0JYwqY2r7MnMtowrMXbB2xuho8CMjPbS9fJgQYppcrk6JgNcNhDVUMQQX3SMeUwnDl?story_gqlid=UzpfSTEwMDAzODA0NDkzMjEzNToxMDQyNDkzNjQxODY1NjE6MTA0MjQ5MzY0MTg2NTYx&amp;notif_id=1777926497887116&amp;notif_t=onthisday&amp;ref=notif" role="link" tabindex="0"><div><div><div><div data-visualcompletion="ignore"><div><div aria-hidden="true"></div><div role="none" data-visualcompletion="ignore"></div></div></div></div></div><div><div><div><div><div><span dir="auto"><span><div>未读</div>看看你在 2019年6月发布的帖子,瞬间回到过去的美好时光.</span></span></div><div><span dir="auto"><span><span><span><abbr aria-label="2天前"><span>2天</span></abbr></span></span></span></span></div></div></div><div><div></div></div></div><div><div><div><div aria-label="标记为已读,看看你在 2019年6月发布的帖子,瞬间回到过去的美好时光." role="button" tabindex="0"><span data-visualcompletion="ignore"></span></div></div></div></div></div></div><div role="none" data-visualcompletion="ignore"></div></a></div><div><div><div><div aria-controls="_r_1s_" aria-expanded="false" aria-haspopup="dialog" aria-label="管理Jake Win通知设置" role="button" tabindex="0"><div role="none" data-visualcompletion="ignore"></div></div></div></div></div></div>
9
- <div class="x1n2onr6" role="listitem"><div data-visualcompletion="ignore-dynamic" role="none"><a href="https://www.facebook.com/afad/?approval_id=1202094468666719&amp;notif_id=1773680546395691&amp;notif_t=approve_from_another_device&amp;ref=notif" role="link" tabindex="0"><div><div><div><div data-visualcompletion="ignore"><div><div aria-hidden="true"></div><div role="none" data-visualcompletion="ignore"></div></div></div></div></div><div><div><div><div><div><span dir="auto"><span><div>未读</div>有人尝试登录,但我们已阻止。</span></span></div><div><span dir="auto"><span><span><span><abbr aria-label="7周前"><span>7周</span></abbr></span></span></span></span></div></div></div><div><div></div></div></div><div><div><div><div aria-label="标记为已读,有人尝试登录,但我们已阻止。" role="button" tabindex="0"><span data-visualcompletion="ignore"></span></div></div></div></div></div></div><div role="none" data-visualcompletion="ignore"></div></a></div><div><div><div><div aria-controls="_r_20_" aria-expanded="false" aria-haspopup="dialog" aria-label="管理Jake Win通知设置" role="button" tabindex="0"><div role="none" data-visualcompletion="ignore"></div></div></div></div></div></div>
10
- <div class="x1n2onr6" role="listitem"><div data-visualcompletion="ignore-dynamic" role="none"><a href="https://www.facebook.com/groups/discover/?source=recommendation_notif&amp;hoisted_group_id=720850587716560&amp;notif_id=1777892286665396&amp;notif_t=group_recommendation&amp;ref=notif" role="link" tabindex="0"><div><div><div><div data-visualcompletion="ignore"><div><div aria-hidden="true"></div><div role="none" data-visualcompletion="ignore"></div></div></div></div></div><div><div><div><div><div><span dir="auto"><span><div>未读</div>你可能会喜欢 <b>ETYCAL VIBEZ fan's page</b> 。</span></span></div><div><span dir="auto"><span><span><span><abbr aria-label="2天前"><span>2天</span></abbr></span></span></span></span></div></div></div><div><div></div></div></div><div><div><div><div aria-label="标记为已读,你可能会喜欢 ETYCAL VIBEZ fan's page " role="button" tabindex="0"><span data-visualcompletion="ignore"></span></div></div></div></div></div></div><div role="none" data-visualcompletion="ignore"></div></a></div><div><div><div><div aria-controls="_r_24_" aria-expanded="false" aria-haspopup="dialog" aria-label="管理Jake Win通知设置" role="button" tabindex="0"><div role="none" data-visualcompletion="ignore"></div></div></div></div></div></div>
6
+ <div class="x1rdy4ex" role="listitem"><div><div><div><div><div><div><span dir="auto"><div><div><h2><span><span>New notifications</span></span></h2></div><div><div><div>&nbsp;</div><div><div></div></div></div></div></div></span></div></div></div></div></div></div></div>
7
+ <div class="x1n2onr6" role="listitem"><div data-visualcompletion="ignore-dynamic" role="none"><a href="https://www.facebook.com/photo/?fbid=104250644186433&amp;set=a.104250310853133&amp;notif_id=1777926497886652&amp;notif_t=onthisday&amp;ref=notif" role="link" tabindex="0"><div><div><div><div data-visualcompletion="ignore"><div><div aria-hidden="true"></div><div role="none" data-visualcompletion="ignore"></div></div></div></div></div><div><div><div><div><div><span dir="auto"><span><div>Unread</div>Review your 2019year6memory from that month.</span></span></div><div><span dir="auto"><span><span><span><abbr aria-label="2days ago"><span>2days</span></abbr></span></span></span></span></div></div></div><div><div></div></div></div><div><div><div><div aria-label="Mark as read,Review your 2019year6memory from that month." role="button" tabindex="0"><span data-visualcompletion="ignore"></span></div></div></div></div></div></div><div role="none" data-visualcompletion="ignore"></div></a></div><div><div><div><div aria-controls="_r_1o_" aria-expanded="false" aria-haspopup="dialog" aria-label="ManageJake Winnotification settings" role="button" tabindex="0"><div role="none" data-visualcompletion="ignore"></div></div></div></div></div></div>
8
+ <div class="x1n2onr6" role="listitem"><div data-visualcompletion="ignore-dynamic" role="none"><a href="https://www.facebook.com/jake.win.39/posts/pfbid0JYwqY2r7MnMtowrMXbB2xuho8CMjPbS9fJgQYppcrk6JgNcNhDVUMQQX3SMeUwnDl?story_gqlid=UzpfSTEwMDAzODA0NDkzMjEzNToxMDQyNDkzNjQxODY1NjE6MTA0MjQ5MzY0MTg2NTYx&amp;notif_id=1777926497887116&amp;notif_t=onthisday&amp;ref=notif" role="link" tabindex="0"><div><div><div><div data-visualcompletion="ignore"><div><div aria-hidden="true"></div><div role="none" data-visualcompletion="ignore"></div></div></div></div></div><div><div><div><div><div><span dir="auto"><span><div>Unread</div>Look back at your 2019year6post from June,memory from the past.</span></span></div><div><span dir="auto"><span><span><span><abbr aria-label="2days ago"><span>2days</span></abbr></span></span></span></span></div></div></div><div><div></div></div></div><div><div><div><div aria-label="Mark as read,Look back at your 2019year6post from June,memory from the past." role="button" tabindex="0"><span data-visualcompletion="ignore"></span></div></div></div></div></div></div><div role="none" data-visualcompletion="ignore"></div></a></div><div><div><div><div aria-controls="_r_1s_" aria-expanded="false" aria-haspopup="dialog" aria-label="ManageJake Winnotification settings" role="button" tabindex="0"><div role="none" data-visualcompletion="ignore"></div></div></div></div></div></div>
9
+ <div class="x1n2onr6" role="listitem"><div data-visualcompletion="ignore-dynamic" role="none"><a href="https://www.facebook.com/afad/?approval_id=1202094468666719&amp;notif_id=1773680546395691&amp;notif_t=approve_from_another_device&amp;ref=notif" role="link" tabindex="0"><div><div><div><div data-visualcompletion="ignore"><div><div aria-hidden="true"></div><div role="none" data-visualcompletion="ignore"></div></div></div></div></div><div><div><div><div><div><span dir="auto"><span><div>Unread</div>Someone tried to log in,but we blocked it.</span></span></div><div><span dir="auto"><span><span><span><abbr aria-label="7weeks ago"><span>7weeks</span></abbr></span></span></span></span></div></div></div><div><div></div></div></div><div><div><div><div aria-label="Mark as read,Someone tried to log in,but we blocked it." role="button" tabindex="0"><span data-visualcompletion="ignore"></span></div></div></div></div></div></div><div role="none" data-visualcompletion="ignore"></div></a></div><div><div><div><div aria-controls="_r_20_" aria-expanded="false" aria-haspopup="dialog" aria-label="ManageJake Winnotification settings" role="button" tabindex="0"><div role="none" data-visualcompletion="ignore"></div></div></div></div></div></div>
10
+ <div class="x1n2onr6" role="listitem"><div data-visualcompletion="ignore-dynamic" role="none"><a href="https://www.facebook.com/groups/discover/?source=recommendation_notif&amp;hoisted_group_id=720850587716560&amp;notif_id=1777892286665396&amp;notif_t=group_recommendation&amp;ref=notif" role="link" tabindex="0"><div><div><div><div data-visualcompletion="ignore"><div><div aria-hidden="true"></div><div role="none" data-visualcompletion="ignore"></div></div></div></div></div><div><div><div><div><div><span dir="auto"><span><div>Unread</div>You might like <b>ETYCAL VIBEZ fan's page</b> .</span></span></div><div><span dir="auto"><span><span><span><abbr aria-label="2days ago"><span>2days</span></abbr></span></span></span></span></div></div></div><div><div></div></div></div><div><div><div><div aria-label="Mark as read,You might like ETYCAL VIBEZ fan's page ." role="button" tabindex="0"><span data-visualcompletion="ignore"></span></div></div></div></div></div></div><div role="none" data-visualcompletion="ignore"></div></a></div><div><div><div><div aria-controls="_r_24_" aria-expanded="false" aria-haspopup="dialog" aria-label="ManageJake Winnotification settings" role="button" tabindex="0"><div role="none" data-visualcompletion="ignore"></div></div></div></div></div></div>
11
11
  </div>
12
12
  </body>
13
13
  </html>
@@ -22,14 +22,14 @@ cli({
22
22
  const buttons = Array.from(document.querySelectorAll('[role="button"]'));
23
23
  const addBtn = buttons.find(b => {
24
24
  const text = b.textContent.trim();
25
- return text === '加好友' || text === 'Add Friend' || text === 'Add friend';
25
+ return text === 'Add friend' || text === 'Add Friend' || text === 'Add friend';
26
26
  });
27
27
 
28
28
  if (!addBtn) {
29
29
  // Check if already friends
30
30
  const isFriend = buttons.some(b => {
31
31
  const t = b.textContent.trim();
32
- return t === '好友' || t === 'Friends' || t.includes('已发送') || t.includes('Pending');
32
+ return t === 'Friends' || t === 'Friends' || t.includes('Pending') || t.includes('Pending');
33
33
  });
34
34
  if (isFriend) return [{ status: 'Already friends or request pending', username }];
35
35
  return [{ status: 'Add Friend button not found', username }];
@@ -39,36 +39,36 @@ function buildFeedExtractScript(limit) {
39
39
  const path = window.location && window.location.pathname ? window.location.pathname : '';
40
40
  const body = textOf(document.body);
41
41
  return /^\\/(login|checkpoint)(\\/|$|\\.php)/.test(path)
42
- || /^(Log in to Facebook|Facebook登录|登录 Facebook)/i.test(body)
42
+ || /^(Log in to Facebook|FacebookLog in|Log in Facebook)/i.test(body)
43
43
  || /You must log in to continue/i.test(body);
44
44
  }
45
45
 
46
46
  function isExplicitEmptyFeed() {
47
47
  const body = textOf(document.body);
48
- return /No posts available|Nothing to show|暂无动态|没有更多动态|还没有帖子/i.test(body);
48
+ return /No posts available|Nothing to show|No posts available|No more posts|No posts yet/i.test(body);
49
49
  }
50
50
 
51
51
  function isSuggestionOrChrome(text) {
52
- return /^(People you may know|People You May Know|可能认识的人?|你可能认识的人?)/i.test(text)
53
- || /^(Suggested for you|Suggested Groups|推荐小组|推荐内容)/i.test(text);
52
+ return /^(People you may know|People You May Know|People you may know?|People you may know?)/i.test(text)
53
+ || /^(Suggested for you|Suggested Groups|Suggested groups|Suggested content)/i.test(text);
54
54
  }
55
55
 
56
56
  function isSponsored(text) {
57
- return /(^|\\s)(Sponsored|赞助|广告)(\\s|$)/i.test(text);
57
+ return /(^|\\s)(Sponsored|Sponsored|Advertisement)(\\s|$)/i.test(text);
58
58
  }
59
59
 
60
60
  function isActionText(text) {
61
- return /^(Like|Comment|Share|Send|Follow|赞|评论|分享|发送|关注)$/i.test(text);
61
+ return /^(Like|Comment|Share|Send|Follow|Like|Comment|Share|Send|Follow)$/i.test(text);
62
62
  }
63
63
 
64
64
  function isMetricText(text) {
65
- return /^(All:|所有心情:)/i.test(text)
65
+ return /^(All:|All reactions:)/i.test(text)
66
66
  || /\\b(likes?|reactions?|comments?|shares?)\\b/i.test(text)
67
- || /(条评论|次分享)$/.test(text);
67
+ || /(comments|shares)$/.test(text);
68
68
  }
69
69
 
70
70
  function isTimestampText(text) {
71
- return /^(\\d+\\s*(s|m|h|d|w|mo|yr|min|sec|second|minute|hour|day|week|month|year)s?|Just now|Yesterday|刚刚|昨天|\\d+小时|\\d+天)(\\s*[·•.])?$/i.test(text);
71
+ return /^(\\d+\\s*(s|m|h|d|w|mo|yr|min|sec|second|minute|hour|day|week|month|year)s?|Just now|Yesterday|just now|yesterday|\\d+hours|\\d+days)(\\s*[\u00b7•.])?$/i.test(text);
72
72
  }
73
73
 
74
74
  function postUrlFrom(root) {
@@ -86,9 +86,9 @@ function buildFeedExtractScript(limit) {
86
86
  const kinds = new Set();
87
87
  for (const el of root.querySelectorAll('[aria-label]')) {
88
88
  const label = labelOf(el);
89
- if (/^(Like|赞)$/i.test(label)) kinds.add('like');
90
- if (/^(Comment|评论)$/i.test(label)) kinds.add('comment');
91
- if (/^(Share|分享)$/i.test(label)) kinds.add('share');
89
+ if (/^(Like|Like)$/i.test(label)) kinds.add('like');
90
+ if (/^(Comment|Comment)$/i.test(label)) kinds.add('comment');
91
+ if (/^(Share|Share)$/i.test(label)) kinds.add('share');
92
92
  }
93
93
  return kinds;
94
94
  }
@@ -129,7 +129,7 @@ function buildFeedExtractScript(limit) {
129
129
  if (text.length <= 10) return false;
130
130
  if (isSuggestionOrChrome(text) || isSponsored(text)) return false;
131
131
  if (isActionText(text) || isMetricText(text) || isTimestampText(text)) return false;
132
- if (/^(See more|查看更多|更多)$/i.test(text)) return false;
132
+ if (/^(See more|See more|More)$/i.test(text)) return false;
133
133
  return true;
134
134
  });
135
135
  }
@@ -147,12 +147,12 @@ function buildFeedExtractScript(limit) {
147
147
  if (!author && !content) return null;
148
148
  if (!content && !postUrl && kinds.size < 2) return null;
149
149
 
150
- const likesMatch = fullText.match(/所有心情:\\s*(\\d[\\d,.\\s万亿KMk]*)/)
150
+ const likesMatch = fullText.match(/All reactions:\\s*(\\d[\\d,.\\slocalized textKMk]*)/)
151
151
  || fullText.match(/All:\\s*(\\d[\\d,.KMk]*)/)
152
152
  || fullText.match(/(\\d[\\d,.KMk]*)\\s*(?:likes?|reactions?)/i);
153
- const commentsMatch = fullText.match(/([\\d,.]+\\s*[万亿]?)\\s*条评论/)
153
+ const commentsMatch = fullText.match(/([\\d,.]+\\s*[localized text]?)\\s*comments/)
154
154
  || fullText.match(/(\\d[\\d,.KMk]*)\\s*comments?/i);
155
- const sharesMatch = fullText.match(/([\\d,.]+\\s*[万亿]?)\\s*次分享/)
155
+ const sharesMatch = fullText.match(/([\\d,.]+\\s*[localized text]?)\\s*shares/)
156
156
  || fullText.match(/(\\d[\\d,.KMk]*)\\s*shares?/i);
157
157
 
158
158
  return {
@@ -173,7 +173,7 @@ function buildFeedExtractScript(limit) {
173
173
  function fallbackContainers() {
174
174
  const main = document.querySelector('[role="main"]');
175
175
  if (!main) return [];
176
- const buttons = Array.from(main.querySelectorAll('[aria-label="Like"], [aria-label=""], [aria-label="Comment"], [aria-label="评论"], [aria-label="Share"], [aria-label="分享"]'));
176
+ const buttons = Array.from(main.querySelectorAll('[aria-label="Like"], [aria-label="Like"], [aria-label="Comment"], [aria-label="Comment"], [aria-label="Share"], [aria-label="Share"]'));
177
177
  const seen = new WeakSet();
178
178
  const containers = [];
179
179
  for (const button of buttons) {
@@ -224,7 +224,7 @@ function buildFeedExtractScript(limit) {
224
224
  diagnostics: {
225
225
  articleCount: document.querySelectorAll('[role="article"]').length,
226
226
  primaryCount: primary.length,
227
- fallbackActionCount: document.querySelectorAll('[role="main"] [aria-label="Like"], [role="main"] [aria-label=""], [role="main"] [aria-label="Comment"], [role="main"] [aria-label="评论"]').length,
227
+ fallbackActionCount: document.querySelectorAll('[role="main"] [aria-label="Like"], [role="main"] [aria-label="Like"], [role="main"] [aria-label="Comment"], [role="main"] [aria-label="Comment"]').length,
228
228
  mainTextLength: textOf(document.querySelector('[role="main"]')).length,
229
229
  },
230
230
  };
@@ -19,12 +19,12 @@ cli({
19
19
  .map((el, i) => {
20
20
  const text = el.textContent.trim().replace(/\\s+/g, ' ');
21
21
  // Extract mutual info if present (before name extraction to avoid pollution)
22
- const mutualMatch = text.match(/([\\d,]+)\\s*位.*(?:关注|共同|mutual)/);
22
+ const mutualMatch = text.match(/([\\d,]+)\\s*people.*(?:Follow|mutual|mutual)/);
23
23
  // Extract name: remove mutual info, action buttons, etc.
24
24
  let name = text
25
- .replace(/[\\d,]+\\s*位.*(?:关注了|共同好友|mutual friends?)/, '')
26
- .replace(/加好友.*/, '').replace(/Add [Ff]riend.*/, '')
27
- .replace(/移除$/, '').replace(/Remove$/, '')
25
+ .replace(/[\\d,]+\\s*people.*(?:followed|mutual friends|mutual friends?)/, '')
26
+ .replace(/Add friend.*/, '').replace(/Add [Ff]riend.*/, '')
27
+ .replace(/Remove$/, '').replace(/Remove$/, '')
28
28
  .trim();
29
29
  return {
30
30
  index: i + 1,
@@ -32,11 +32,11 @@ cli({
32
32
  if (seen.has(href)) continue;
33
33
  seen.add(href);
34
34
  const raw = a.textContent.trim().replace(/\\s+/g, ' ');
35
- // Split name from "上次发帖" info
36
- const parts = raw.split(/上次发帖|Last post/);
35
+ // Split name from "Last post" info
36
+ const parts = raw.split(/Last post|Last post/);
37
37
  groups.push({
38
38
  name: (parts[0] || '').trim().substring(0, 60),
39
- last_post: parts[1] ? parts[1].replace(/^[::]/, '').trim() : '-',
39
+ last_post: parts[1] ? parts[1].replace(/^[::]/, '').trim() : '-',
40
40
  url: href,
41
41
  });
42
42
  }
@@ -24,13 +24,13 @@ cli({
24
24
  const buttons = Array.from(document.querySelectorAll('[role="button"]'));
25
25
  const joinBtn = buttons.find(b => {
26
26
  const text = b.textContent.trim();
27
- return text === '加入小组' || text === 'Join group' || text === 'Join Group';
27
+ return text === 'Join group' || text === 'Join group' || text === 'Join Group';
28
28
  });
29
29
 
30
30
  if (!joinBtn) {
31
31
  const isMember = buttons.some(b => {
32
32
  const t = b.textContent.trim();
33
- return t === '已加入' || t === 'Joined' || t === '成员' || t === 'Member';
33
+ return t === 'Joined' || t === 'Joined' || t === 'Member' || t === 'Member';
34
34
  });
35
35
  if (isMember) return [{ status: 'Already a member', group: groupName }];
36
36
  return [{ status: 'Join button not found', group: groupName }];
@@ -28,7 +28,7 @@ cli({
28
28
 
29
29
  const result = await page.evaluate(String.raw`(() => {
30
30
  const clean = (s) => String(s || '').replace(/[\u00a0\u202f]/g, ' ').replace(/\s+/g, ' ').trim();
31
- const timeRe = /^(?:\d{1,2}:\d{2}\s?(?:AM|PM|am|pm|上午|下午)?|Mon|Tue|Wed|Thu|Fri|Sat|Sun|Today|Yesterday|\d+[mhdw]|\d+\s*(?:min|h|d|w))$/;
31
+ const timeRe = /^(?:\d{1,2}:\d{2}\s?(?:AM|PM|am|pm|AM|PM)?|Mon|Tue|Wed|Thu|Fri|Sat|Sun|Today|Yesterday|\d+[mhdw]|\d+\s*(?:min|h|d|w))$/;
32
32
  const text = document.body?.innerText || '';
33
33
  if (/log in|sign in/i.test(text) && !/Marketplace/i.test(text)) {
34
34
  return { authRequired: true, rows: [] };
@@ -41,8 +41,8 @@ cli({
41
41
  for (let i = 0; i < lines.length - 2; i += 1) {
42
42
  const buyer = lines[i];
43
43
  const meta = lines[i + 1];
44
- if (skipBuyer.test(buyer) || !/^·\s+/.test(meta)) continue;
45
- const listing = meta.replace(/^·\s*/, '');
44
+ if (skipBuyer.test(buyer) || !/^\u00b7\s+/.test(meta)) continue;
45
+ const listing = meta.replace(/^\u00b7\s*/, '');
46
46
  if (!listing || /^Within\b/i.test(listing)) continue;
47
47
  const snippet = lines[i + 2] || '';
48
48
  const time = timeRe.test(lines[i + 3] || '') ? lines[i + 3] : '';
@@ -44,7 +44,7 @@ cli({
44
44
  seen.add(title);
45
45
  const windowLines = lines.slice(i, i + 12);
46
46
  const status = windowLines.find((line) => /^(Active|Sold|Pending|Draft)$/i.test(line)) || '';
47
- const listed = windowLines.find((line) => /Listed on\b/i.test(line))?.replace(/^·\s*/, '') || '';
47
+ const listed = windowLines.find((line) => /Listed on\b/i.test(line))?.replace(/^\u00b7\s*/, '') || '';
48
48
  const clickLine = windowLines.find((line) => /clicks? on listing/i.test(line)) || '';
49
49
  const clickMatch = clickLine.match(/([\d,.]+)\s+clicks? on listing/i);
50
50
  const actions = windowLines.filter((line) => /^(Mark as sold|Mark as available|Relist this item|Share|Boost listing)$/i.test(line));
@@ -8,7 +8,7 @@
8
8
  // 2. silent-bad-shape — the old time field used a dash sentinel for
9
9
  // unknown values; typed unknown should be `null` so an agent caller
10
10
  // does not have to learn in-band sentinel strings.
11
- // 3. silent-column-drop — the IIFE saw the `<div>未读</div>` /
11
+ // 3. silent-column-drop — the IIFE saw the `<div>Unread</div>` /
12
12
  // `<div>Unread</div>` badge child and the anchor's `<a href>` URL
13
13
  // but kept neither, so callers got a bare text blob with no way
14
14
  // to follow up on a notification.
@@ -22,8 +22,7 @@
22
22
  // silent clamp; `ArgumentError` on bad input.
23
23
  // - Pure extractor `extractNotificationRowsFromDoc` is a Node-side
24
24
  // export — JSDOM-against-frozen-fixture tests call it directly while
25
- // the live IIFE embeds it via `${fn.toString()}` (mirrors hupu
26
- // #1387 / xiaoe #1388 / dianping #1313 pattern). Helpers
25
+ // the live IIFE embeds it via `${fn.toString()}`. Helpers
27
26
  // `stripMarkAsReadPrefix`, `stripAnchorChrome`, `parseNotifQuery`
28
27
  // are also pure exports for the same reason.
29
28
  // - Seven columns instead of three:
@@ -50,24 +49,24 @@ export const NOTIFICATIONS_LIMIT_MAX = 100;
50
49
 
51
50
  // Locale-specific "Mark as read" button prefixes Facebook attaches to
52
51
  // the per-row mark-as-read action. We use this to recover the bare
53
- // notification body text without the leading "未读" / "Unread" badge or
52
+ // notification body text without the leading "Unread" / "Unread" badge or
54
53
  // the trailing time-ago suffix that the anchor's textContent contains.
55
54
  //
56
55
  // Each entry must be a complete, deterministic prefix — no regex — so a
57
56
  // rare false-positive substring match elsewhere on the page does not
58
57
  // silently truncate body text.
59
58
  export const MARK_AS_READ_PREFIXES = [
60
- '标记为已读,',
59
+ 'Mark as read,',
61
60
  'Mark as read, ',
62
61
  'Mark as Read, ',
63
62
  'Marquer comme lu, ',
64
63
  'Marcar como leído, ',
65
- '既読にする, ',
64
+ 'Readにする, ',
66
65
  ];
67
66
 
68
67
  // Localised "unread" badge labels that appear inside a `<div>` inside
69
68
  // the notification listitem. Used to set the typed `unread` boolean.
70
- export const UNREAD_BADGE_LABELS = ['未读', 'Unread', 'No leído', '未読'];
69
+ export const UNREAD_BADGE_LABELS = ['Unread', 'Unread', 'No leído', 'Unread'];
71
70
 
72
71
  export function normalizeNotificationsLimit(raw) {
73
72
  if (raw === undefined || raw === null || raw === '') {
@@ -102,14 +101,14 @@ export function stripMarkAsReadPrefix(label, prefixes) {
102
101
  return null;
103
102
  }
104
103
 
105
- // Pure: strip the leading "未读" / "Unread" badge prefix and the trailing
106
- // time-ago suffix (e.g. "2天" / "5 hrs") from the rendered text of a
104
+ // Pure: strip the leading "Unread" / "Unread" badge prefix and the trailing
105
+ // time-ago suffix (e.g. "2days" / "5 hrs") from the rendered text of a
107
106
  // notification anchor. Used as a fallback when the mark-as-read
108
107
  // aria-label is not present (already-read rows).
109
108
  //
110
109
  // `badges` is the localized unread-badge labels list; `timeStr` is the
111
110
  // trailing time string previously extracted from `<abbr>` (or `null`).
112
- // Trailing `.` / `。` that Facebook inserts between body and time are
111
+ // Trailing `.` / `.` that Facebook inserts between body and time are
113
112
  // also stripped — but only at the very end, never mid-text.
114
113
  export function stripAnchorChrome(rawText, timeStr, badges) {
115
114
  if (!rawText) return '';
@@ -127,7 +126,7 @@ export function stripAnchorChrome(rawText, timeStr, badges) {
127
126
  text = text.slice(0, text.length - t.length).trim();
128
127
  }
129
128
  }
130
- text = text.replace(/[.。]+$/, '').trim();
129
+ text = text.replace(/[..]+$/, '').trim();
131
130
  return text;
132
131
  }
133
132
 
@@ -156,7 +155,7 @@ export function isFacebookAuthRedirectPath(pathname) {
156
155
 
157
156
  // Pure extractor: walks `[role="listitem"]` containers in `doc` and
158
157
  // returns at most `limit` notification rows. Header listitems (those
159
- // without an `<a href>` child — e.g. the "新通知" / "Earlier" section
158
+ // without an `<a href>` child — e.g. the "New notifications" / "Earlier" section
160
159
  // heading FB inserts at the top of the feed) are skipped.
161
160
  //
162
161
  // `helpers` carries the four pure helpers as positional refs so the
@@ -177,7 +176,7 @@ export function extractNotificationRowsFromDoc(doc, limit, helpers) {
177
176
  const abbr = item.querySelector('abbr');
178
177
  const time = abbr ? ((abbr.textContent || '').trim() || null) : null;
179
178
 
180
- // Unread badge: prefer the explicit `<div>未读</div>` /
179
+ // Unread badge: prefer the explicit `<div>Unread</div>` /
181
180
  // `<div>Unread</div>` child; fall back to anchor text prefix.
182
181
  let unread = false;
183
182
  const allDivs = item.querySelectorAll('div');
@@ -208,7 +207,7 @@ export function extractNotificationRowsFromDoc(doc, limit, helpers) {
208
207
  const label = labelHosts[k].getAttribute('aria-label');
209
208
  const stripped = helpers.stripMark(label, helpers.markPrefixes);
210
209
  if (stripped !== null) {
211
- const cleaned = stripped.replace(/[.。]+$/, '').trim();
210
+ const cleaned = stripped.replace(/[..]+$/, '').trim();
212
211
  text = cleaned || null;
213
212
  break;
214
213
  }
@@ -311,7 +310,7 @@ export const notificationsCommand = cli({
311
310
  site: 'facebook',
312
311
  name: 'notifications',
313
312
  access: 'read',
314
- description: 'Get recent Facebook notifications ( unread / time / url / notif_id / notif_type )',
313
+ description: 'Get recent Facebook notifications (includes unread / time / url / notif_id / notif_type columns)',
315
314
  domain: 'www.facebook.com',
316
315
  strategy: Strategy.COOKIE,
317
316
  browser: true,
@@ -5,17 +5,16 @@
5
5
  // snapshot of `www.facebook.com/notifications` captured live from a
6
6
  // logged-in session. Class names are stripped; SVG / `<i>` icon nodes
7
7
  // are removed. The structure preserves what the extractor needs:
8
- // - 5 `[role="listitem"]` rows: 1 header ("新通知" — no anchor) +
8
+ // - 5 `[role="listitem"]` rows: 1 header ("New notifications" — no anchor) +
9
9
  // 4 real notifications across 3 distinct `notif_t` types
10
10
  // (`onthisday`, `approve_from_another_device`,
11
11
  // `group_recommendation`).
12
12
  // - Each data row has `<a href>` with `notif_id` + `notif_t` query
13
- // params, `<div>未读</div>` unread badge, `<abbr aria-label="N天前">
14
- // <span>N天</span></abbr>` for time, and a `<div role="button"
15
- // aria-label="标记为已读,<body>">` for the bare body text.
13
+ // params, `<div>Unread</div>` unread badge, `<abbr aria-label="Ndays ago">
14
+ // <span>Ndays</span></abbr>` for time, and a `<div role="button"
15
+ // aria-label="Mark as read,<body>">` for the bare body text.
16
16
  //
17
- // Per dianping #1313 / hupu #1387 / xiaoe #1388 pattern: the live IIFE
18
- // embeds the same `extractNotificationRowsFromDoc` function via
17
+ // The live IIFE embeds the same `extractNotificationRowsFromDoc` function via
19
18
  // `${fn.toString()}` so the extractor seen by these JSDOM tests is the
20
19
  // exact same code that runs in the browser.
21
20
 
@@ -135,8 +134,8 @@ describe('normalizeNotificationsLimit', () => {
135
134
 
136
135
  describe('stripMarkAsReadPrefix', () => {
137
136
  it('strips known locale prefixes', () => {
138
- expect(stripMarkAsReadPrefix('标记为已读,回顾你在 2019年6月的那段过往.', MARK_AS_READ_PREFIXES))
139
- .toBe('回顾你在 2019年6月的那段过往.');
137
+ expect(stripMarkAsReadPrefix('Mark as read,Review your 2019year6memory from that month.', MARK_AS_READ_PREFIXES))
138
+ .toBe('Review your 2019year6memory from that month.');
140
139
  expect(stripMarkAsReadPrefix('Mark as read, John liked your photo', MARK_AS_READ_PREFIXES))
141
140
  .toBe('John liked your photo');
142
141
  expect(stripMarkAsReadPrefix('Mark as Read, John liked your photo', MARK_AS_READ_PREFIXES))
@@ -144,7 +143,7 @@ describe('stripMarkAsReadPrefix', () => {
144
143
  });
145
144
 
146
145
  it('returns null when prefix is missing — never silent default', () => {
147
- expect(stripMarkAsReadPrefix('管理Jake Win通知设置', MARK_AS_READ_PREFIXES)).toBeNull();
146
+ expect(stripMarkAsReadPrefix('ManageJake Winnotification settings', MARK_AS_READ_PREFIXES)).toBeNull();
148
147
  expect(stripMarkAsReadPrefix('arbitrary aria-label without prefix', MARK_AS_READ_PREFIXES))
149
148
  .toBeNull();
150
149
  });
@@ -158,18 +157,18 @@ describe('stripMarkAsReadPrefix', () => {
158
157
  });
159
158
 
160
159
  describe('stripAnchorChrome', () => {
161
- it('strips leading 未读 / Unread badge', () => {
162
- expect(stripAnchorChrome('未读John liked your photo', null, UNREAD_BADGE_LABELS))
160
+ it('strips leading Unread / Unread badge', () => {
161
+ expect(stripAnchorChrome('UnreadJohn liked your photo', null, UNREAD_BADGE_LABELS))
163
162
  .toBe('John liked your photo');
164
163
  expect(stripAnchorChrome('UnreadJohn liked your photo', null, UNREAD_BADGE_LABELS))
165
164
  .toBe('John liked your photo');
166
165
  });
167
166
 
168
167
  it('strips trailing time-ago suffix when timeStr is provided', () => {
169
- expect(stripAnchorChrome('未读回顾你在 2019年6月的那段过往.2', '2', UNREAD_BADGE_LABELS))
170
- .toBe('回顾你在 2019年6月的那段过往');
171
- expect(stripAnchorChrome('未读有人尝试登录,但我们已阻止。7', '7', UNREAD_BADGE_LABELS))
172
- .toBe('有人尝试登录,但我们已阻止');
168
+ expect(stripAnchorChrome('UnreadReview your June 2019 memory.2 days', '2 days', UNREAD_BADGE_LABELS))
169
+ .toBe('Review your June 2019 memory');
170
+ expect(stripAnchorChrome('UnreadSomeone tried to log in, but we blocked it.7 weeks', '7 weeks', UNREAD_BADGE_LABELS))
171
+ .toBe('Someone tried to log in, but we blocked it');
173
172
  });
174
173
 
175
174
  it('keeps text intact when there is no badge / no time', () => {
@@ -237,8 +236,8 @@ describe('extractNotificationRowsFromDoc — JSDOM against frozen fixture', () =
237
236
  expect(rows[0]).toEqual({
238
237
  index: 1,
239
238
  unread: true,
240
- text: '回顾你在 2019年6月的那段过往',
241
- time: '2天',
239
+ text: 'Review your 2019year6memory from that month',
240
+ time: '2days',
242
241
  url: 'https://www.facebook.com/photo/?fbid=104250644186433&set=a.104250310853133&notif_id=1777926497886652&notif_t=onthisday&ref=notif',
243
242
  notif_id: '1777926497886652',
244
243
  notif_type: 'onthisday',
@@ -246,16 +245,16 @@ describe('extractNotificationRowsFromDoc — JSDOM against frozen fixture', () =
246
245
  expect(rows[2]).toMatchObject({
247
246
  index: 3,
248
247
  unread: true,
249
- text: '有人尝试登录,但我们已阻止',
250
- time: '7周',
248
+ text: 'Someone tried to log in,but we blocked it',
249
+ time: '7weeks',
251
250
  notif_type: 'approve_from_another_device',
252
251
  notif_id: '1773680546395691',
253
252
  });
254
253
  expect(rows[3]).toMatchObject({
255
254
  index: 4,
256
255
  unread: true,
257
- text: '你可能会喜欢 ETYCAL VIBEZ fan\'s page',
258
- time: '2天',
256
+ text: 'You might like ETYCAL VIBEZ fan\'s page',
257
+ time: '2days',
259
258
  notif_type: 'group_recommendation',
260
259
  });
261
260
  });
@@ -275,7 +274,7 @@ describe('extractNotificationRowsFromDoc — JSDOM against frozen fixture', () =
275
274
  expect(rows.length).toBe(4); // header skipped
276
275
  // None of the returned rows match the header text.
277
276
  for (const row of rows) {
278
- expect(row.text).not.toBe('新通知');
277
+ expect(row.text).not.toBe('New notifications');
279
278
  }
280
279
  });
281
280
 
@@ -286,8 +285,8 @@ describe('extractNotificationRowsFromDoc — JSDOM against frozen fixture', () =
286
285
  // have happily returned anything <= 150. The point of this test
287
286
  // is to assert nothing is silently sliced — full body text round-
288
287
  // trips through the extractor.
289
- expect(rows[0].text).toBe('回顾你在 2019年6月的那段过往');
290
- expect(rows[1].text).toBe('看看你在 2019年6月发布的帖子,瞬间回到过去的美好时光');
288
+ expect(rows[0].text).toBe('Review your 2019year6memory from that month');
289
+ expect(rows[1].text).toBe('Look back at your 2019year6post from June,memory from the past');
291
290
  // No row has a value that ends with our legacy truncation point.
292
291
  for (const row of rows) {
293
292
  expect(row.text).not.toMatch(/\u2026$/); // U+2026 ellipsis as a defensive check
@@ -299,7 +298,7 @@ describe('extractNotificationRowsFromDoc — JSDOM against frozen fixture', () =
299
298
  const html = `<!doctype html><html><body><div role="main">
300
299
  <div role="listitem">
301
300
  <a href="https://www.facebook.com/page?notif_id=999&notif_t=test_event">
302
- <span><div>未读</div>Body text without time</span>
301
+ <span><div>Unread</div>Body text without time</span>
303
302
  </a>
304
303
  </div>
305
304
  </body></html>`;
@@ -347,7 +346,7 @@ describe('extractNotificationRowsFromDoc — JSDOM against frozen fixture', () =
347
346
  const html = `<!doctype html><html><body><div role="main">
348
347
  <div role="listitem">
349
348
  <a href="https://www.facebook.com/x?notif_id=1&notif_t=blank">
350
- <span><div>未读</div></span>
349
+ <span><div>Unread</div></span>
351
350
  <abbr aria-label="3 hr"><span>3 hr</span></abbr>
352
351
  </a>
353
352
  </div>
@@ -382,8 +381,8 @@ describe('buildNotificationsScript — IIFE invariants', () => {
382
381
 
383
382
  it('inlines locale prefix and badge tables so the IIFE has them at runtime', () => {
384
383
  const script = buildNotificationsScript(15);
385
- expect(script).toContain('"标记为已读,"');
386
- expect(script).toContain('"未读"');
384
+ expect(script).toContain('"Mark as read,"');
385
+ expect(script).toContain('"Unread"');
387
386
  expect(script).toContain('"Unread"');
388
387
  });
389
388
 
@@ -430,7 +429,7 @@ describe('facebook/notifications — func typed boundaries', () => {
430
429
  index: 1,
431
430
  unread: true,
432
431
  text: 'hello',
433
- time: '2天',
432
+ time: '2days',
434
433
  url: 'https://www.facebook.com/notifications/?notif_id=1&notif_t=test',
435
434
  notif_id: '1',
436
435
  notif_type: 'test',