@jackwener/opencli 1.7.0 → 1.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1630) hide show
  1. package/README.md +13 -13
  2. package/README.zh-CN.md +11 -10
  3. package/cli-manifest.json +17536 -0
  4. package/clis/antigravity/SKILL.md +38 -0
  5. package/{dist/clis → clis}/barchart/quote.js +2 -1
  6. package/{dist/clis → clis}/bilibili/following.js +1 -0
  7. package/clis/binance/asks.js +21 -0
  8. package/clis/binance/commands.test.js +70 -0
  9. package/clis/binance/depth.js +21 -0
  10. package/clis/binance/gainers.js +22 -0
  11. package/clis/binance/klines.js +21 -0
  12. package/clis/binance/losers.js +22 -0
  13. package/clis/binance/pairs.js +21 -0
  14. package/clis/binance/price.js +18 -0
  15. package/clis/binance/prices.js +19 -0
  16. package/clis/binance/ticker.js +21 -0
  17. package/clis/binance/top.js +21 -0
  18. package/clis/binance/trades.js +20 -0
  19. package/clis/linux-do/categories.js +49 -0
  20. package/{dist/clis → clis}/linux-do/feed.js +1 -1
  21. package/clis/linux-do/search.js +28 -0
  22. package/clis/linux-do/tags.js +27 -0
  23. package/{dist/clis → clis}/linux-do/topic-content.test.js +1 -1
  24. package/clis/linux-do/topic.js +52 -0
  25. package/clis/linux-do/user-posts.js +56 -0
  26. package/clis/linux-do/user-topics.js +36 -0
  27. package/clis/slock/_utils.js +12 -0
  28. package/clis/twitter/lists-parser.js +77 -0
  29. package/clis/twitter/lists.d.ts +5 -0
  30. package/clis/twitter/lists.js +62 -0
  31. package/clis/twitter/lists.test.js +50 -0
  32. package/{dist/clis → clis}/weibo/feed.js +18 -5
  33. package/clis/xueqiu/earnings-date.js +44 -0
  34. package/clis/xueqiu/feed.js +38 -0
  35. package/clis/xueqiu/groups.js +22 -0
  36. package/clis/xueqiu/hot-stock.js +31 -0
  37. package/clis/xueqiu/hot.js +36 -0
  38. package/clis/xueqiu/kline.js +43 -0
  39. package/clis/xueqiu/search.js +36 -0
  40. package/clis/xueqiu/stock.js +64 -0
  41. package/clis/xueqiu/utils.js +29 -0
  42. package/clis/xueqiu/watchlist.js +36 -0
  43. package/{dist/clis → clis}/yahoo-finance/quote.js +2 -1
  44. package/{dist/clis → clis}/zsxq/topic.js +5 -3
  45. package/{dist/clis → clis}/zsxq/topic.test.js +4 -3
  46. package/{dist/clis → clis}/zsxq/utils.js +1 -1
  47. package/dist/src/browser/base-page.js +1 -1
  48. package/dist/src/browser/cdp.js +6 -4
  49. package/dist/src/browser/stealth.d.ts +0 -5
  50. package/dist/src/browser/stealth.js +8 -2
  51. package/dist/src/build-manifest.d.ts +5 -5
  52. package/dist/src/build-manifest.js +14 -10
  53. package/dist/src/build-manifest.test.js +7 -7
  54. package/dist/src/capabilityRouting.d.ts +1 -1
  55. package/dist/src/capabilityRouting.js +4 -2
  56. package/dist/src/capabilityRouting.test.js +4 -1
  57. package/dist/src/cli.js +171 -61
  58. package/dist/src/commanderAdapter.d.ts +0 -1
  59. package/dist/src/commanderAdapter.js +27 -152
  60. package/dist/src/commanderAdapter.test.js +47 -15
  61. package/dist/src/commands/daemon.js +4 -4
  62. package/dist/src/commands/daemon.test.js +5 -14
  63. package/dist/src/completion-fast.d.ts +0 -3
  64. package/dist/src/completion-fast.js +2 -54
  65. package/dist/src/completion-shared.d.ts +13 -0
  66. package/dist/src/completion-shared.js +63 -0
  67. package/dist/src/completion.d.ts +2 -3
  68. package/dist/src/completion.js +3 -56
  69. package/dist/src/daemon.js +13 -8
  70. package/dist/src/diagnostic.d.ts +2 -3
  71. package/dist/src/diagnostic.js +4 -21
  72. package/dist/src/diagnostic.test.js +8 -9
  73. package/dist/src/discovery.d.ts +7 -4
  74. package/dist/src/discovery.js +19 -44
  75. package/dist/src/doctor.js +15 -15
  76. package/dist/src/download/index.js +2 -1
  77. package/dist/src/download/progress.js +10 -10
  78. package/dist/src/engine.test.js +33 -5
  79. package/dist/src/errors.d.ts +16 -2
  80. package/dist/src/errors.js +28 -16
  81. package/dist/src/errors.test.js +38 -1
  82. package/dist/src/execution.d.ts +4 -1
  83. package/dist/src/execution.js +10 -9
  84. package/dist/src/execution.test.js +18 -2
  85. package/dist/src/external.js +12 -13
  86. package/dist/src/generate-verified.js +10 -10
  87. package/dist/src/generate-verified.test.js +1 -1
  88. package/dist/src/logger.js +10 -10
  89. package/dist/src/main.js +24 -11
  90. package/dist/src/output.js +5 -5
  91. package/dist/src/package-exports.test.js +8 -8
  92. package/dist/src/pipeline/steps/tap.js +2 -1
  93. package/dist/src/pipeline/template.js +80 -26
  94. package/dist/src/plugin.js +36 -23
  95. package/dist/src/plugin.test.js +41 -0
  96. package/dist/src/record.js +23 -23
  97. package/dist/src/registry.d.ts +11 -6
  98. package/dist/src/registry.js +40 -12
  99. package/dist/src/registry.test.js +56 -0
  100. package/dist/src/runtime.js +2 -1
  101. package/dist/src/tui.js +14 -14
  102. package/dist/src/update-check.js +3 -3
  103. package/dist/src/validate.d.ts +12 -5
  104. package/dist/src/validate.js +88 -59
  105. package/dist/src/weixin-download.test.js +1 -0
  106. package/package.json +8 -11
  107. package/scripts/check-doc-coverage.sh +10 -0
  108. package/scripts/clean-dist.cjs +2 -2
  109. package/scripts/copy-yaml.cjs +3 -19
  110. package/scripts/fetch-adapters.js +137 -28
  111. package/scripts/postinstall.js +1 -0
  112. package/dist/clis/1688/assets.d.ts +0 -42
  113. package/dist/clis/1688/download.d.ts +0 -9
  114. package/dist/clis/1688/download.test.d.ts +0 -1
  115. package/dist/clis/1688/item.d.ts +0 -70
  116. package/dist/clis/1688/item.test.d.ts +0 -1
  117. package/dist/clis/1688/search.d.ts +0 -56
  118. package/dist/clis/1688/search.test.d.ts +0 -1
  119. package/dist/clis/1688/shared.d.ts +0 -122
  120. package/dist/clis/1688/shared.test.d.ts +0 -1
  121. package/dist/clis/1688/store.d.ts +0 -45
  122. package/dist/clis/1688/store.test.d.ts +0 -1
  123. package/dist/clis/36kr/article.d.ts +0 -1
  124. package/dist/clis/36kr/hot.d.ts +0 -3
  125. package/dist/clis/36kr/hot.test.d.ts +0 -1
  126. package/dist/clis/36kr/news.d.ts +0 -1
  127. package/dist/clis/36kr/news.test.d.ts +0 -1
  128. package/dist/clis/36kr/search.d.ts +0 -1
  129. package/dist/clis/_shared/common.d.ts +0 -11
  130. package/dist/clis/_shared/desktop-commands.d.ts +0 -22
  131. package/dist/clis/amazon/bestsellers.d.ts +0 -1
  132. package/dist/clis/amazon/bestsellers.test.d.ts +0 -1
  133. package/dist/clis/amazon/discussion.d.ts +0 -20
  134. package/dist/clis/amazon/discussion.test.d.ts +0 -1
  135. package/dist/clis/amazon/movers-shakers.d.ts +0 -1
  136. package/dist/clis/amazon/new-releases.d.ts +0 -1
  137. package/dist/clis/amazon/offer.d.ts +0 -23
  138. package/dist/clis/amazon/offer.test.d.ts +0 -1
  139. package/dist/clis/amazon/product.d.ts +0 -18
  140. package/dist/clis/amazon/product.test.d.ts +0 -1
  141. package/dist/clis/amazon/rankings.d.ts +0 -59
  142. package/dist/clis/amazon/rankings.test.d.ts +0 -1
  143. package/dist/clis/amazon/search.d.ts +0 -18
  144. package/dist/clis/amazon/search.test.d.ts +0 -1
  145. package/dist/clis/amazon/shared.d.ts +0 -75
  146. package/dist/clis/amazon/shared.test.d.ts +0 -1
  147. package/dist/clis/antigravity/dump.d.ts +0 -1
  148. package/dist/clis/antigravity/extract-code.d.ts +0 -1
  149. package/dist/clis/antigravity/model.d.ts +0 -1
  150. package/dist/clis/antigravity/new.d.ts +0 -1
  151. package/dist/clis/antigravity/read.d.ts +0 -1
  152. package/dist/clis/antigravity/send.d.ts +0 -1
  153. package/dist/clis/antigravity/serve.d.ts +0 -14
  154. package/dist/clis/antigravity/status.d.ts +0 -1
  155. package/dist/clis/antigravity/watch.d.ts +0 -1
  156. package/dist/clis/apple-podcasts/commands.test.d.ts +0 -2
  157. package/dist/clis/apple-podcasts/episodes.d.ts +0 -1
  158. package/dist/clis/apple-podcasts/search.d.ts +0 -1
  159. package/dist/clis/apple-podcasts/top.d.ts +0 -1
  160. package/dist/clis/apple-podcasts/utils.d.ts +0 -11
  161. package/dist/clis/apple-podcasts/utils.test.d.ts +0 -1
  162. package/dist/clis/arxiv/paper.d.ts +0 -1
  163. package/dist/clis/arxiv/search.d.ts +0 -1
  164. package/dist/clis/arxiv/utils.d.ts +0 -18
  165. package/dist/clis/band/bands.d.ts +0 -1
  166. package/dist/clis/band/mentions.d.ts +0 -1
  167. package/dist/clis/band/post.d.ts +0 -1
  168. package/dist/clis/band/posts.d.ts +0 -1
  169. package/dist/clis/barchart/flow.d.ts +0 -1
  170. package/dist/clis/barchart/greeks.d.ts +0 -1
  171. package/dist/clis/barchart/options.d.ts +0 -1
  172. package/dist/clis/barchart/quote.d.ts +0 -1
  173. package/dist/clis/bbc/news.d.ts +0 -1
  174. package/dist/clis/bilibili/comments.d.ts +0 -5
  175. package/dist/clis/bilibili/comments.test.d.ts +0 -1
  176. package/dist/clis/bilibili/download.d.ts +0 -10
  177. package/dist/clis/bilibili/dynamic.d.ts +0 -1
  178. package/dist/clis/bilibili/dynamic.test.d.ts +0 -1
  179. package/dist/clis/bilibili/favorite.d.ts +0 -1
  180. package/dist/clis/bilibili/feed.d.ts +0 -1
  181. package/dist/clis/bilibili/following.d.ts +0 -1
  182. package/dist/clis/bilibili/history.d.ts +0 -1
  183. package/dist/clis/bilibili/hot.d.ts +0 -1
  184. package/dist/clis/bilibili/me.d.ts +0 -1
  185. package/dist/clis/bilibili/ranking.d.ts +0 -1
  186. package/dist/clis/bilibili/search.d.ts +0 -1
  187. package/dist/clis/bilibili/subtitle.d.ts +0 -1
  188. package/dist/clis/bilibili/subtitle.test.d.ts +0 -1
  189. package/dist/clis/bilibili/user-videos.d.ts +0 -1
  190. package/dist/clis/bilibili/utils.d.ts +0 -19
  191. package/dist/clis/bilibili/utils.test.d.ts +0 -1
  192. package/dist/clis/bloomberg/businessweek.d.ts +0 -1
  193. package/dist/clis/bloomberg/economics.d.ts +0 -1
  194. package/dist/clis/bloomberg/feeds.d.ts +0 -1
  195. package/dist/clis/bloomberg/industries.d.ts +0 -1
  196. package/dist/clis/bloomberg/main.d.ts +0 -1
  197. package/dist/clis/bloomberg/markets.d.ts +0 -1
  198. package/dist/clis/bloomberg/news.d.ts +0 -1
  199. package/dist/clis/bloomberg/opinions.d.ts +0 -1
  200. package/dist/clis/bloomberg/politics.d.ts +0 -1
  201. package/dist/clis/bloomberg/tech.d.ts +0 -1
  202. package/dist/clis/bloomberg/utils.d.ts +0 -34
  203. package/dist/clis/bloomberg/utils.test.d.ts +0 -1
  204. package/dist/clis/bluesky/feeds.d.ts +0 -1
  205. package/dist/clis/bluesky/followers.d.ts +0 -1
  206. package/dist/clis/bluesky/following.d.ts +0 -1
  207. package/dist/clis/bluesky/profile.d.ts +0 -1
  208. package/dist/clis/bluesky/search.d.ts +0 -1
  209. package/dist/clis/bluesky/starter-packs.d.ts +0 -1
  210. package/dist/clis/bluesky/thread.d.ts +0 -1
  211. package/dist/clis/bluesky/trending.d.ts +0 -1
  212. package/dist/clis/bluesky/user.d.ts +0 -1
  213. package/dist/clis/boss/batchgreet.d.ts +0 -1
  214. package/dist/clis/boss/chatlist.d.ts +0 -1
  215. package/dist/clis/boss/chatmsg.d.ts +0 -1
  216. package/dist/clis/boss/detail.d.ts +0 -1
  217. package/dist/clis/boss/exchange.d.ts +0 -1
  218. package/dist/clis/boss/greet.d.ts +0 -1
  219. package/dist/clis/boss/invite.d.ts +0 -1
  220. package/dist/clis/boss/joblist.d.ts +0 -1
  221. package/dist/clis/boss/mark.d.ts +0 -1
  222. package/dist/clis/boss/recommend.d.ts +0 -1
  223. package/dist/clis/boss/resume.d.ts +0 -1
  224. package/dist/clis/boss/search.d.ts +0 -1
  225. package/dist/clis/boss/send.d.ts +0 -1
  226. package/dist/clis/boss/stats.d.ts +0 -1
  227. package/dist/clis/boss/utils.d.ts +0 -92
  228. package/dist/clis/chaoxing/assignments.d.ts +0 -1
  229. package/dist/clis/chaoxing/exams.d.ts +0 -1
  230. package/dist/clis/chaoxing/utils.d.ts +0 -58
  231. package/dist/clis/chaoxing/utils.test.d.ts +0 -1
  232. package/dist/clis/chatgpt/ask.d.ts +0 -1
  233. package/dist/clis/chatgpt/ax.d.ts +0 -7
  234. package/dist/clis/chatgpt/model.d.ts +0 -1
  235. package/dist/clis/chatgpt/new.d.ts +0 -1
  236. package/dist/clis/chatgpt/read.d.ts +0 -1
  237. package/dist/clis/chatgpt/send.d.ts +0 -1
  238. package/dist/clis/chatgpt/status.d.ts +0 -1
  239. package/dist/clis/chatwise/ask.d.ts +0 -1
  240. package/dist/clis/chatwise/export.d.ts +0 -1
  241. package/dist/clis/chatwise/history.d.ts +0 -1
  242. package/dist/clis/chatwise/model.d.ts +0 -1
  243. package/dist/clis/chatwise/new.d.ts +0 -1
  244. package/dist/clis/chatwise/read.d.ts +0 -1
  245. package/dist/clis/chatwise/screenshot.d.ts +0 -1
  246. package/dist/clis/chatwise/send.d.ts +0 -1
  247. package/dist/clis/chatwise/status.d.ts +0 -1
  248. package/dist/clis/cnki/search.d.ts +0 -1
  249. package/dist/clis/cnki/search.test.d.ts +0 -1
  250. package/dist/clis/codex/ask.d.ts +0 -1
  251. package/dist/clis/codex/dump.d.ts +0 -1
  252. package/dist/clis/codex/export.d.ts +0 -1
  253. package/dist/clis/codex/extract-diff.d.ts +0 -1
  254. package/dist/clis/codex/history.d.ts +0 -1
  255. package/dist/clis/codex/model.d.ts +0 -1
  256. package/dist/clis/codex/new.d.ts +0 -1
  257. package/dist/clis/codex/read.d.ts +0 -1
  258. package/dist/clis/codex/screenshot.d.ts +0 -1
  259. package/dist/clis/codex/send.d.ts +0 -1
  260. package/dist/clis/codex/status.d.ts +0 -1
  261. package/dist/clis/coupang/add-to-cart.d.ts +0 -1
  262. package/dist/clis/coupang/search.d.ts +0 -1
  263. package/dist/clis/coupang/utils.d.ts +0 -24
  264. package/dist/clis/coupang/utils.test.d.ts +0 -1
  265. package/dist/clis/ctrip/search.d.ts +0 -14
  266. package/dist/clis/ctrip/search.test.d.ts +0 -1
  267. package/dist/clis/cursor/ask.d.ts +0 -1
  268. package/dist/clis/cursor/composer.d.ts +0 -1
  269. package/dist/clis/cursor/dump.d.ts +0 -1
  270. package/dist/clis/cursor/export.d.ts +0 -1
  271. package/dist/clis/cursor/extract-code.d.ts +0 -1
  272. package/dist/clis/cursor/history.d.ts +0 -1
  273. package/dist/clis/cursor/model.d.ts +0 -1
  274. package/dist/clis/cursor/new.d.ts +0 -1
  275. package/dist/clis/cursor/read.d.ts +0 -1
  276. package/dist/clis/cursor/screenshot.d.ts +0 -1
  277. package/dist/clis/cursor/send.d.ts +0 -1
  278. package/dist/clis/cursor/status.d.ts +0 -1
  279. package/dist/clis/devto/tag.d.ts +0 -1
  280. package/dist/clis/devto/top.d.ts +0 -1
  281. package/dist/clis/devto/user.d.ts +0 -1
  282. package/dist/clis/dictionary/examples.d.ts +0 -1
  283. package/dist/clis/dictionary/search.d.ts +0 -1
  284. package/dist/clis/dictionary/synonyms.d.ts +0 -1
  285. package/dist/clis/discord-app/channels.d.ts +0 -1
  286. package/dist/clis/discord-app/members.d.ts +0 -1
  287. package/dist/clis/discord-app/read.d.ts +0 -1
  288. package/dist/clis/discord-app/search.d.ts +0 -1
  289. package/dist/clis/discord-app/send.d.ts +0 -1
  290. package/dist/clis/discord-app/servers.d.ts +0 -1
  291. package/dist/clis/discord-app/status.d.ts +0 -1
  292. package/dist/clis/douban/book-hot.d.ts +0 -1
  293. package/dist/clis/douban/download.d.ts +0 -1
  294. package/dist/clis/douban/download.test.d.ts +0 -1
  295. package/dist/clis/douban/marks.d.ts +0 -1
  296. package/dist/clis/douban/movie-hot.d.ts +0 -1
  297. package/dist/clis/douban/photos.d.ts +0 -1
  298. package/dist/clis/douban/reviews.d.ts +0 -1
  299. package/dist/clis/douban/search.d.ts +0 -1
  300. package/dist/clis/douban/subject.d.ts +0 -1
  301. package/dist/clis/douban/top250.d.ts +0 -1
  302. package/dist/clis/douban/utils.d.ts +0 -63
  303. package/dist/clis/douban/utils.test.d.ts +0 -1
  304. package/dist/clis/doubao/ask.d.ts +0 -1
  305. package/dist/clis/doubao/detail.d.ts +0 -1
  306. package/dist/clis/doubao/detail.test.d.ts +0 -1
  307. package/dist/clis/doubao/history.d.ts +0 -1
  308. package/dist/clis/doubao/history.test.d.ts +0 -1
  309. package/dist/clis/doubao/meeting-summary.d.ts +0 -1
  310. package/dist/clis/doubao/meeting-transcript.d.ts +0 -1
  311. package/dist/clis/doubao/new.d.ts +0 -1
  312. package/dist/clis/doubao/read.d.ts +0 -1
  313. package/dist/clis/doubao/send.d.ts +0 -1
  314. package/dist/clis/doubao/status.d.ts +0 -1
  315. package/dist/clis/doubao/utils.d.ts +0 -50
  316. package/dist/clis/doubao/utils.test.d.ts +0 -1
  317. package/dist/clis/doubao-app/ask.d.ts +0 -1
  318. package/dist/clis/doubao-app/dump.d.ts +0 -1
  319. package/dist/clis/doubao-app/new.d.ts +0 -1
  320. package/dist/clis/doubao-app/read.d.ts +0 -1
  321. package/dist/clis/doubao-app/screenshot.d.ts +0 -1
  322. package/dist/clis/doubao-app/send.d.ts +0 -1
  323. package/dist/clis/doubao-app/status.d.ts +0 -1
  324. package/dist/clis/doubao-app/utils.d.ts +0 -37
  325. package/dist/clis/douyin/_shared/browser-fetch.d.ts +0 -10
  326. package/dist/clis/douyin/_shared/browser-fetch.test.d.ts +0 -1
  327. package/dist/clis/douyin/_shared/creation-id.d.ts +0 -1
  328. package/dist/clis/douyin/_shared/creation-id.test.d.ts +0 -1
  329. package/dist/clis/douyin/_shared/imagex-upload.d.ts +0 -20
  330. package/dist/clis/douyin/_shared/imagex-upload.test.d.ts +0 -1
  331. package/dist/clis/douyin/_shared/public-api.d.ts +0 -33
  332. package/dist/clis/douyin/_shared/sts2.d.ts +0 -8
  333. package/dist/clis/douyin/_shared/sts2.test.d.ts +0 -1
  334. package/dist/clis/douyin/_shared/text-extra.d.ts +0 -18
  335. package/dist/clis/douyin/_shared/text-extra.test.d.ts +0 -1
  336. package/dist/clis/douyin/_shared/timing.d.ts +0 -2
  337. package/dist/clis/douyin/_shared/timing.test.d.ts +0 -1
  338. package/dist/clis/douyin/_shared/tos-upload-short-read.test.d.ts +0 -11
  339. package/dist/clis/douyin/_shared/tos-upload.d.ts +0 -53
  340. package/dist/clis/douyin/_shared/tos-upload.test.d.ts +0 -1
  341. package/dist/clis/douyin/_shared/transcode.d.ts +0 -27
  342. package/dist/clis/douyin/_shared/transcode.test.d.ts +0 -1
  343. package/dist/clis/douyin/_shared/types.d.ts +0 -26
  344. package/dist/clis/douyin/_shared/types.js +0 -1
  345. package/dist/clis/douyin/activities.d.ts +0 -1
  346. package/dist/clis/douyin/activities.test.d.ts +0 -1
  347. package/dist/clis/douyin/collections.d.ts +0 -1
  348. package/dist/clis/douyin/collections.test.d.ts +0 -1
  349. package/dist/clis/douyin/delete.d.ts +0 -1
  350. package/dist/clis/douyin/delete.test.d.ts +0 -1
  351. package/dist/clis/douyin/draft.d.ts +0 -11
  352. package/dist/clis/douyin/draft.test.d.ts +0 -1
  353. package/dist/clis/douyin/drafts.d.ts +0 -1
  354. package/dist/clis/douyin/drafts.test.d.ts +0 -1
  355. package/dist/clis/douyin/hashtag.d.ts +0 -1
  356. package/dist/clis/douyin/hashtag.test.d.ts +0 -1
  357. package/dist/clis/douyin/location.d.ts +0 -1
  358. package/dist/clis/douyin/location.test.d.ts +0 -1
  359. package/dist/clis/douyin/profile.d.ts +0 -1
  360. package/dist/clis/douyin/profile.test.d.ts +0 -1
  361. package/dist/clis/douyin/publish.d.ts +0 -14
  362. package/dist/clis/douyin/publish.test.d.ts +0 -1
  363. package/dist/clis/douyin/stats.d.ts +0 -1
  364. package/dist/clis/douyin/stats.test.d.ts +0 -1
  365. package/dist/clis/douyin/update.d.ts +0 -1
  366. package/dist/clis/douyin/update.test.d.ts +0 -1
  367. package/dist/clis/douyin/user-videos.d.ts +0 -5
  368. package/dist/clis/douyin/user-videos.test.d.ts +0 -1
  369. package/dist/clis/douyin/videos.d.ts +0 -1
  370. package/dist/clis/douyin/videos.test.d.ts +0 -1
  371. package/dist/clis/facebook/add-friend.d.ts +0 -1
  372. package/dist/clis/facebook/events.d.ts +0 -1
  373. package/dist/clis/facebook/feed.d.ts +0 -1
  374. package/dist/clis/facebook/friends.d.ts +0 -1
  375. package/dist/clis/facebook/groups.d.ts +0 -1
  376. package/dist/clis/facebook/join-group.d.ts +0 -1
  377. package/dist/clis/facebook/memories.d.ts +0 -1
  378. package/dist/clis/facebook/notifications.d.ts +0 -1
  379. package/dist/clis/facebook/profile.d.ts +0 -1
  380. package/dist/clis/facebook/search.d.ts +0 -1
  381. package/dist/clis/facebook/search.test.d.ts +0 -5
  382. package/dist/clis/gemini/ask.d.ts +0 -1
  383. package/dist/clis/gemini/ask.test.d.ts +0 -1
  384. package/dist/clis/gemini/deep-research-result.d.ts +0 -1
  385. package/dist/clis/gemini/deep-research-result.test.d.ts +0 -1
  386. package/dist/clis/gemini/deep-research.d.ts +0 -1
  387. package/dist/clis/gemini/deep-research.test.d.ts +0 -1
  388. package/dist/clis/gemini/image.d.ts +0 -1
  389. package/dist/clis/gemini/new.d.ts +0 -1
  390. package/dist/clis/gemini/reply-state.test.d.ts +0 -1
  391. package/dist/clis/gemini/utils.d.ts +0 -106
  392. package/dist/clis/gemini/utils.test.d.ts +0 -1
  393. package/dist/clis/gitee/index.d.ts +0 -3
  394. package/dist/clis/gitee/search.d.ts +0 -1
  395. package/dist/clis/gitee/trending.d.ts +0 -1
  396. package/dist/clis/gitee/user.d.ts +0 -1
  397. package/dist/clis/gitee/user.test.d.ts +0 -1
  398. package/dist/clis/google/news.d.ts +0 -5
  399. package/dist/clis/google/search.d.ts +0 -10
  400. package/dist/clis/google/suggest.d.ts +0 -5
  401. package/dist/clis/google/trends.d.ts +0 -5
  402. package/dist/clis/google/utils.d.ts +0 -9
  403. package/dist/clis/google/utils.test.d.ts +0 -1
  404. package/dist/clis/grok/ask.d.ts +0 -19
  405. package/dist/clis/grok/ask.test.d.ts +0 -1
  406. package/dist/clis/hackernews/ask.d.ts +0 -1
  407. package/dist/clis/hackernews/best.d.ts +0 -1
  408. package/dist/clis/hackernews/jobs.d.ts +0 -1
  409. package/dist/clis/hackernews/new.d.ts +0 -1
  410. package/dist/clis/hackernews/search.d.ts +0 -1
  411. package/dist/clis/hackernews/show.d.ts +0 -1
  412. package/dist/clis/hackernews/top.d.ts +0 -1
  413. package/dist/clis/hackernews/user.d.ts +0 -1
  414. package/dist/clis/hf/top.d.ts +0 -1
  415. package/dist/clis/hupu/detail.d.ts +0 -1
  416. package/dist/clis/hupu/hot.d.ts +0 -1
  417. package/dist/clis/hupu/like.d.ts +0 -1
  418. package/dist/clis/hupu/mentions.d.ts +0 -1
  419. package/dist/clis/hupu/reply.d.ts +0 -1
  420. package/dist/clis/hupu/search.d.ts +0 -1
  421. package/dist/clis/hupu/unlike.d.ts +0 -1
  422. package/dist/clis/hupu/utils.d.ts +0 -20
  423. package/dist/clis/imdb/person.d.ts +0 -1
  424. package/dist/clis/imdb/reviews.d.ts +0 -1
  425. package/dist/clis/imdb/search.d.ts +0 -1
  426. package/dist/clis/imdb/title.d.ts +0 -1
  427. package/dist/clis/imdb/top.d.ts +0 -1
  428. package/dist/clis/imdb/trending.d.ts +0 -1
  429. package/dist/clis/imdb/utils.d.ts +0 -46
  430. package/dist/clis/imdb/utils.test.d.ts +0 -1
  431. package/dist/clis/instagram/_shared/private-publish.d.ts +0 -138
  432. package/dist/clis/instagram/_shared/private-publish.test.d.ts +0 -1
  433. package/dist/clis/instagram/_shared/protocol-capture.d.ts +0 -26
  434. package/dist/clis/instagram/_shared/protocol-capture.test.d.ts +0 -1
  435. package/dist/clis/instagram/_shared/runtime-info.d.ts +0 -9
  436. package/dist/clis/instagram/comment.d.ts +0 -1
  437. package/dist/clis/instagram/download.d.ts +0 -16
  438. package/dist/clis/instagram/download.test.d.ts +0 -1
  439. package/dist/clis/instagram/explore.d.ts +0 -1
  440. package/dist/clis/instagram/follow.d.ts +0 -1
  441. package/dist/clis/instagram/followers.d.ts +0 -1
  442. package/dist/clis/instagram/following.d.ts +0 -1
  443. package/dist/clis/instagram/like.d.ts +0 -1
  444. package/dist/clis/instagram/note.d.ts +0 -1
  445. package/dist/clis/instagram/note.test.d.ts +0 -1
  446. package/dist/clis/instagram/post.d.ts +0 -4
  447. package/dist/clis/instagram/post.test.d.ts +0 -1
  448. package/dist/clis/instagram/profile.d.ts +0 -1
  449. package/dist/clis/instagram/reel.d.ts +0 -1
  450. package/dist/clis/instagram/reel.test.d.ts +0 -1
  451. package/dist/clis/instagram/save.d.ts +0 -1
  452. package/dist/clis/instagram/saved.d.ts +0 -1
  453. package/dist/clis/instagram/search.d.ts +0 -1
  454. package/dist/clis/instagram/story.d.ts +0 -1
  455. package/dist/clis/instagram/story.test.d.ts +0 -1
  456. package/dist/clis/instagram/unfollow.d.ts +0 -1
  457. package/dist/clis/instagram/unlike.d.ts +0 -1
  458. package/dist/clis/instagram/unsave.d.ts +0 -1
  459. package/dist/clis/instagram/user.d.ts +0 -1
  460. package/dist/clis/jd/add-cart.d.ts +0 -1
  461. package/dist/clis/jd/cart.d.ts +0 -1
  462. package/dist/clis/jd/commands.test.d.ts +0 -5
  463. package/dist/clis/jd/detail.d.ts +0 -1
  464. package/dist/clis/jd/item.d.ts +0 -5
  465. package/dist/clis/jd/item.test.d.ts +0 -1
  466. package/dist/clis/jd/reviews.d.ts +0 -1
  467. package/dist/clis/jd/search.d.ts +0 -1
  468. package/dist/clis/jianyu/detail.d.ts +0 -1
  469. package/dist/clis/jianyu/search.d.ts +0 -51
  470. package/dist/clis/jianyu/search.test.d.ts +0 -1
  471. package/dist/clis/jianyu/shared/china-bid-search.d.ts +0 -12
  472. package/dist/clis/jianyu/shared/procurement-contract.d.ts +0 -68
  473. package/dist/clis/jianyu/shared/procurement-contract.test.d.ts +0 -1
  474. package/dist/clis/jianyu/shared/procurement-detail.d.ts +0 -6
  475. package/dist/clis/jianyu/shared/procurement-detail.test.d.ts +0 -1
  476. package/dist/clis/jike/comment.d.ts +0 -1
  477. package/dist/clis/jike/create.d.ts +0 -1
  478. package/dist/clis/jike/feed.d.ts +0 -1
  479. package/dist/clis/jike/like.d.ts +0 -1
  480. package/dist/clis/jike/notifications.d.ts +0 -1
  481. package/dist/clis/jike/post.d.ts +0 -1
  482. package/dist/clis/jike/repost.d.ts +0 -1
  483. package/dist/clis/jike/search.d.ts +0 -1
  484. package/dist/clis/jike/topic.d.ts +0 -1
  485. package/dist/clis/jike/user.d.ts +0 -1
  486. package/dist/clis/jike/utils.d.ts +0 -19
  487. package/dist/clis/jimeng/generate.d.ts +0 -1
  488. package/dist/clis/jimeng/history.d.ts +0 -1
  489. package/dist/clis/jimeng/new.d.ts +0 -1
  490. package/dist/clis/jimeng/workspaces.d.ts +0 -1
  491. package/dist/clis/lesswrong/_helpers.d.ts +0 -15
  492. package/dist/clis/lesswrong/comments.d.ts +0 -1
  493. package/dist/clis/lesswrong/curated.d.ts +0 -1
  494. package/dist/clis/lesswrong/frontpage.d.ts +0 -1
  495. package/dist/clis/lesswrong/new.d.ts +0 -1
  496. package/dist/clis/lesswrong/read.d.ts +0 -1
  497. package/dist/clis/lesswrong/sequences.d.ts +0 -1
  498. package/dist/clis/lesswrong/shortform.d.ts +0 -1
  499. package/dist/clis/lesswrong/tag.d.ts +0 -1
  500. package/dist/clis/lesswrong/tags.d.ts +0 -1
  501. package/dist/clis/lesswrong/top-month.d.ts +0 -1
  502. package/dist/clis/lesswrong/top-week.d.ts +0 -1
  503. package/dist/clis/lesswrong/top-year.d.ts +0 -1
  504. package/dist/clis/lesswrong/top.d.ts +0 -1
  505. package/dist/clis/lesswrong/user-posts.d.ts +0 -1
  506. package/dist/clis/lesswrong/user.d.ts +0 -1
  507. package/dist/clis/linkedin/search.d.ts +0 -1
  508. package/dist/clis/linkedin/timeline.d.ts +0 -21
  509. package/dist/clis/linkedin/timeline.test.d.ts +0 -1
  510. package/dist/clis/linux-do/categories.d.ts +0 -1
  511. package/dist/clis/linux-do/categories.js +0 -65
  512. package/dist/clis/linux-do/category.d.ts +0 -1
  513. package/dist/clis/linux-do/feed.d.ts +0 -45
  514. package/dist/clis/linux-do/feed.test.d.ts +0 -1
  515. package/dist/clis/linux-do/hot.d.ts +0 -1
  516. package/dist/clis/linux-do/latest.d.ts +0 -1
  517. package/dist/clis/linux-do/search.d.ts +0 -1
  518. package/dist/clis/linux-do/search.js +0 -41
  519. package/dist/clis/linux-do/tags.d.ts +0 -1
  520. package/dist/clis/linux-do/tags.js +0 -39
  521. package/dist/clis/linux-do/topic-content.d.ts +0 -35
  522. package/dist/clis/linux-do/topic-content.test.d.ts +0 -1
  523. package/dist/clis/linux-do/topic.d.ts +0 -1
  524. package/dist/clis/linux-do/topic.js +0 -56
  525. package/dist/clis/linux-do/user-posts.d.ts +0 -1
  526. package/dist/clis/linux-do/user-posts.js +0 -61
  527. package/dist/clis/linux-do/user-topics.d.ts +0 -1
  528. package/dist/clis/linux-do/user-topics.js +0 -48
  529. package/dist/clis/lobsters/active.d.ts +0 -1
  530. package/dist/clis/lobsters/hot.d.ts +0 -1
  531. package/dist/clis/lobsters/newest.d.ts +0 -1
  532. package/dist/clis/lobsters/tag.d.ts +0 -1
  533. package/dist/clis/medium/feed.d.ts +0 -1
  534. package/dist/clis/medium/search.d.ts +0 -1
  535. package/dist/clis/medium/user.d.ts +0 -1
  536. package/dist/clis/medium/utils.d.ts +0 -5
  537. package/dist/clis/notebooklm/compat.test.d.ts +0 -3
  538. package/dist/clis/notebooklm/current.d.ts +0 -1
  539. package/dist/clis/notebooklm/get.d.ts +0 -1
  540. package/dist/clis/notebooklm/history.d.ts +0 -1
  541. package/dist/clis/notebooklm/history.test.d.ts +0 -1
  542. package/dist/clis/notebooklm/list.d.ts +0 -1
  543. package/dist/clis/notebooklm/note-list.d.ts +0 -1
  544. package/dist/clis/notebooklm/note-list.test.d.ts +0 -1
  545. package/dist/clis/notebooklm/notes-get.d.ts +0 -1
  546. package/dist/clis/notebooklm/notes-get.test.d.ts +0 -1
  547. package/dist/clis/notebooklm/open.d.ts +0 -1
  548. package/dist/clis/notebooklm/open.test.d.ts +0 -1
  549. package/dist/clis/notebooklm/rpc.d.ts +0 -36
  550. package/dist/clis/notebooklm/rpc.test.d.ts +0 -1
  551. package/dist/clis/notebooklm/shared.d.ts +0 -87
  552. package/dist/clis/notebooklm/source-fulltext.d.ts +0 -1
  553. package/dist/clis/notebooklm/source-fulltext.test.d.ts +0 -1
  554. package/dist/clis/notebooklm/source-get.d.ts +0 -1
  555. package/dist/clis/notebooklm/source-get.test.d.ts +0 -1
  556. package/dist/clis/notebooklm/source-guide.d.ts +0 -1
  557. package/dist/clis/notebooklm/source-guide.test.d.ts +0 -1
  558. package/dist/clis/notebooklm/source-list.d.ts +0 -1
  559. package/dist/clis/notebooklm/status.d.ts +0 -1
  560. package/dist/clis/notebooklm/summary.d.ts +0 -1
  561. package/dist/clis/notebooklm/summary.test.d.ts +0 -1
  562. package/dist/clis/notebooklm/utils.d.ts +0 -38
  563. package/dist/clis/notebooklm/utils.test.d.ts +0 -1
  564. package/dist/clis/notion/export.d.ts +0 -1
  565. package/dist/clis/notion/favorites.d.ts +0 -1
  566. package/dist/clis/notion/new.d.ts +0 -1
  567. package/dist/clis/notion/read.d.ts +0 -1
  568. package/dist/clis/notion/search.d.ts +0 -1
  569. package/dist/clis/notion/sidebar.d.ts +0 -1
  570. package/dist/clis/notion/status.d.ts +0 -1
  571. package/dist/clis/notion/write.d.ts +0 -1
  572. package/dist/clis/ones/common.d.ts +0 -32
  573. package/dist/clis/ones/enrich-tasks.d.ts +0 -5
  574. package/dist/clis/ones/login.d.ts +0 -1
  575. package/dist/clis/ones/logout.d.ts +0 -1
  576. package/dist/clis/ones/me.d.ts +0 -1
  577. package/dist/clis/ones/my-tasks.d.ts +0 -1
  578. package/dist/clis/ones/resolve-labels.d.ts +0 -10
  579. package/dist/clis/ones/task-helpers.d.ts +0 -29
  580. package/dist/clis/ones/task-helpers.test.d.ts +0 -1
  581. package/dist/clis/ones/task.d.ts +0 -1
  582. package/dist/clis/ones/tasks.d.ts +0 -1
  583. package/dist/clis/ones/token-info.d.ts +0 -1
  584. package/dist/clis/ones/worklog.d.ts +0 -11
  585. package/dist/clis/ones/worklog.test.d.ts +0 -1
  586. package/dist/clis/paperreview/commands.test.d.ts +0 -3
  587. package/dist/clis/paperreview/feedback.d.ts +0 -1
  588. package/dist/clis/paperreview/review.d.ts +0 -1
  589. package/dist/clis/paperreview/submit.d.ts +0 -1
  590. package/dist/clis/paperreview/utils.d.ts +0 -46
  591. package/dist/clis/paperreview/utils.test.d.ts +0 -1
  592. package/dist/clis/pixiv/detail.d.ts +0 -1
  593. package/dist/clis/pixiv/download.d.ts +0 -7
  594. package/dist/clis/pixiv/download.test.d.ts +0 -1
  595. package/dist/clis/pixiv/illusts.d.ts +0 -8
  596. package/dist/clis/pixiv/illusts.test.d.ts +0 -1
  597. package/dist/clis/pixiv/ranking.d.ts +0 -1
  598. package/dist/clis/pixiv/search.d.ts +0 -6
  599. package/dist/clis/pixiv/search.test.d.ts +0 -1
  600. package/dist/clis/pixiv/test-utils.d.ts +0 -12
  601. package/dist/clis/pixiv/user.d.ts +0 -1
  602. package/dist/clis/pixiv/utils.d.ts +0 -27
  603. package/dist/clis/producthunt/browse.d.ts +0 -1
  604. package/dist/clis/producthunt/hot.d.ts +0 -1
  605. package/dist/clis/producthunt/posts.d.ts +0 -1
  606. package/dist/clis/producthunt/today.d.ts +0 -1
  607. package/dist/clis/producthunt/utils.d.ts +0 -29
  608. package/dist/clis/producthunt/utils.test.d.ts +0 -1
  609. package/dist/clis/quark/ls.d.ts +0 -1
  610. package/dist/clis/quark/mkdir.d.ts +0 -1
  611. package/dist/clis/quark/mv.d.ts +0 -1
  612. package/dist/clis/quark/rename.d.ts +0 -1
  613. package/dist/clis/quark/rm.d.ts +0 -1
  614. package/dist/clis/quark/save.d.ts +0 -1
  615. package/dist/clis/quark/share-tree.d.ts +0 -1
  616. package/dist/clis/quark/utils.d.ts +0 -50
  617. package/dist/clis/quark/utils.test.d.ts +0 -1
  618. package/dist/clis/reddit/comment.d.ts +0 -1
  619. package/dist/clis/reddit/frontpage.d.ts +0 -1
  620. package/dist/clis/reddit/hot.d.ts +0 -1
  621. package/dist/clis/reddit/popular.d.ts +0 -1
  622. package/dist/clis/reddit/read.d.ts +0 -1
  623. package/dist/clis/reddit/read.test.d.ts +0 -1
  624. package/dist/clis/reddit/save.d.ts +0 -1
  625. package/dist/clis/reddit/saved.d.ts +0 -1
  626. package/dist/clis/reddit/search.d.ts +0 -1
  627. package/dist/clis/reddit/subreddit.d.ts +0 -1
  628. package/dist/clis/reddit/subscribe.d.ts +0 -1
  629. package/dist/clis/reddit/upvote.d.ts +0 -1
  630. package/dist/clis/reddit/upvoted.d.ts +0 -1
  631. package/dist/clis/reddit/user-comments.d.ts +0 -1
  632. package/dist/clis/reddit/user-posts.d.ts +0 -1
  633. package/dist/clis/reddit/user.d.ts +0 -1
  634. package/dist/clis/reuters/search.d.ts +0 -1
  635. package/dist/clis/sinablog/article.d.ts +0 -1
  636. package/dist/clis/sinablog/hot.d.ts +0 -1
  637. package/dist/clis/sinablog/search.d.ts +0 -1
  638. package/dist/clis/sinablog/user.d.ts +0 -1
  639. package/dist/clis/sinablog/utils.d.ts +0 -7
  640. package/dist/clis/sinafinance/news.d.ts +0 -7
  641. package/dist/clis/sinafinance/rolling-news.d.ts +0 -4
  642. package/dist/clis/sinafinance/stock-rank.d.ts +0 -4
  643. package/dist/clis/sinafinance/stock.d.ts +0 -8
  644. package/dist/clis/smzdm/search.d.ts +0 -1
  645. package/dist/clis/spotify/spotify.d.ts +0 -1
  646. package/dist/clis/spotify/utils.d.ts +0 -21
  647. package/dist/clis/spotify/utils.test.d.ts +0 -1
  648. package/dist/clis/stackoverflow/bounties.d.ts +0 -1
  649. package/dist/clis/stackoverflow/hot.d.ts +0 -1
  650. package/dist/clis/stackoverflow/search.d.ts +0 -1
  651. package/dist/clis/stackoverflow/unanswered.d.ts +0 -1
  652. package/dist/clis/steam/top-sellers.d.ts +0 -1
  653. package/dist/clis/substack/feed.d.ts +0 -1
  654. package/dist/clis/substack/publication.d.ts +0 -1
  655. package/dist/clis/substack/search.d.ts +0 -1
  656. package/dist/clis/substack/utils.d.ts +0 -8
  657. package/dist/clis/substack/utils.test.d.ts +0 -1
  658. package/dist/clis/taobao/add-cart.d.ts +0 -1
  659. package/dist/clis/taobao/cart.d.ts +0 -1
  660. package/dist/clis/taobao/commands.test.d.ts +0 -5
  661. package/dist/clis/taobao/detail.d.ts +0 -1
  662. package/dist/clis/taobao/reviews.d.ts +0 -1
  663. package/dist/clis/taobao/search.d.ts +0 -1
  664. package/dist/clis/tieba/commands.test.d.ts +0 -4
  665. package/dist/clis/tieba/hot.d.ts +0 -1
  666. package/dist/clis/tieba/posts.d.ts +0 -1
  667. package/dist/clis/tieba/read.d.ts +0 -1
  668. package/dist/clis/tieba/search.d.ts +0 -1
  669. package/dist/clis/tieba/utils.d.ts +0 -101
  670. package/dist/clis/tieba/utils.test.d.ts +0 -1
  671. package/dist/clis/tiktok/comment.d.ts +0 -1
  672. package/dist/clis/tiktok/explore.d.ts +0 -1
  673. package/dist/clis/tiktok/follow.d.ts +0 -1
  674. package/dist/clis/tiktok/following.d.ts +0 -1
  675. package/dist/clis/tiktok/friends.d.ts +0 -1
  676. package/dist/clis/tiktok/like.d.ts +0 -1
  677. package/dist/clis/tiktok/live.d.ts +0 -1
  678. package/dist/clis/tiktok/notifications.d.ts +0 -1
  679. package/dist/clis/tiktok/profile.d.ts +0 -1
  680. package/dist/clis/tiktok/save.d.ts +0 -1
  681. package/dist/clis/tiktok/search.d.ts +0 -1
  682. package/dist/clis/tiktok/unfollow.d.ts +0 -1
  683. package/dist/clis/tiktok/unlike.d.ts +0 -1
  684. package/dist/clis/tiktok/unsave.d.ts +0 -1
  685. package/dist/clis/tiktok/user.d.ts +0 -1
  686. package/dist/clis/twitter/accept.d.ts +0 -1
  687. package/dist/clis/twitter/article.d.ts +0 -1
  688. package/dist/clis/twitter/block.d.ts +0 -1
  689. package/dist/clis/twitter/bookmark.d.ts +0 -1
  690. package/dist/clis/twitter/bookmarks.d.ts +0 -1
  691. package/dist/clis/twitter/delete.d.ts +0 -7
  692. package/dist/clis/twitter/delete.test.d.ts +0 -1
  693. package/dist/clis/twitter/download.d.ts +0 -8
  694. package/dist/clis/twitter/follow.d.ts +0 -1
  695. package/dist/clis/twitter/followers.d.ts +0 -1
  696. package/dist/clis/twitter/following.d.ts +0 -1
  697. package/dist/clis/twitter/hide-reply.d.ts +0 -1
  698. package/dist/clis/twitter/like.d.ts +0 -1
  699. package/dist/clis/twitter/likes.d.ts +0 -24
  700. package/dist/clis/twitter/likes.test.d.ts +0 -1
  701. package/dist/clis/twitter/notifications.d.ts +0 -1
  702. package/dist/clis/twitter/post.d.ts +0 -1
  703. package/dist/clis/twitter/post.test.d.ts +0 -1
  704. package/dist/clis/twitter/profile.d.ts +0 -1
  705. package/dist/clis/twitter/reply-dm.d.ts +0 -1
  706. package/dist/clis/twitter/reply.d.ts +0 -13
  707. package/dist/clis/twitter/reply.test.d.ts +0 -1
  708. package/dist/clis/twitter/search.d.ts +0 -1
  709. package/dist/clis/twitter/search.test.d.ts +0 -1
  710. package/dist/clis/twitter/shared.d.ts +0 -6
  711. package/dist/clis/twitter/thread.d.ts +0 -1
  712. package/dist/clis/twitter/timeline.d.ts +0 -24
  713. package/dist/clis/twitter/timeline.test.d.ts +0 -1
  714. package/dist/clis/twitter/trending.d.ts +0 -1
  715. package/dist/clis/twitter/unblock.d.ts +0 -1
  716. package/dist/clis/twitter/unbookmark.d.ts +0 -1
  717. package/dist/clis/twitter/unfollow.d.ts +0 -1
  718. package/dist/clis/v2ex/daily.d.ts +0 -1
  719. package/dist/clis/v2ex/hot.d.ts +0 -1
  720. package/dist/clis/v2ex/latest.d.ts +0 -1
  721. package/dist/clis/v2ex/me.d.ts +0 -1
  722. package/dist/clis/v2ex/member.d.ts +0 -1
  723. package/dist/clis/v2ex/node.d.ts +0 -1
  724. package/dist/clis/v2ex/nodes.d.ts +0 -1
  725. package/dist/clis/v2ex/notifications.d.ts +0 -1
  726. package/dist/clis/v2ex/replies.d.ts +0 -1
  727. package/dist/clis/v2ex/topic.d.ts +0 -1
  728. package/dist/clis/v2ex/user.d.ts +0 -1
  729. package/dist/clis/web/read.d.ts +0 -16
  730. package/dist/clis/weibo/comments.d.ts +0 -1
  731. package/dist/clis/weibo/feed.d.ts +0 -1
  732. package/dist/clis/weibo/hot.d.ts +0 -1
  733. package/dist/clis/weibo/me.d.ts +0 -1
  734. package/dist/clis/weibo/post.d.ts +0 -1
  735. package/dist/clis/weibo/search.d.ts +0 -1
  736. package/dist/clis/weibo/user.d.ts +0 -1
  737. package/dist/clis/weibo/utils.d.ts +0 -6
  738. package/dist/clis/weixin/download.d.ts +0 -38
  739. package/dist/clis/weread/book.d.ts +0 -1
  740. package/dist/clis/weread/commands.test.d.ts +0 -3
  741. package/dist/clis/weread/highlights.d.ts +0 -1
  742. package/dist/clis/weread/notebooks.d.ts +0 -1
  743. package/dist/clis/weread/notes.d.ts +0 -1
  744. package/dist/clis/weread/private-api-regression.test.d.ts +0 -1
  745. package/dist/clis/weread/ranking.d.ts +0 -1
  746. package/dist/clis/weread/search-regression.test.d.ts +0 -1
  747. package/dist/clis/weread/search.d.ts +0 -1
  748. package/dist/clis/weread/shelf.d.ts +0 -1
  749. package/dist/clis/weread/utils.d.ts +0 -76
  750. package/dist/clis/weread/utils.test.d.ts +0 -1
  751. package/dist/clis/wikipedia/random.d.ts +0 -1
  752. package/dist/clis/wikipedia/search.d.ts +0 -1
  753. package/dist/clis/wikipedia/summary.d.ts +0 -1
  754. package/dist/clis/wikipedia/trending.d.ts +0 -1
  755. package/dist/clis/wikipedia/utils.d.ts +0 -36
  756. package/dist/clis/xianyu/chat.d.ts +0 -7
  757. package/dist/clis/xianyu/chat.test.d.ts +0 -1
  758. package/dist/clis/xianyu/item.d.ts +0 -7
  759. package/dist/clis/xianyu/item.test.d.ts +0 -1
  760. package/dist/clis/xianyu/search.d.ts +0 -10
  761. package/dist/clis/xianyu/search.test.d.ts +0 -1
  762. package/dist/clis/xianyu/utils.d.ts +0 -1
  763. package/dist/clis/xiaoe/catalog.d.ts +0 -1
  764. package/dist/clis/xiaoe/content.d.ts +0 -1
  765. package/dist/clis/xiaoe/courses.d.ts +0 -1
  766. package/dist/clis/xiaoe/detail.d.ts +0 -1
  767. package/dist/clis/xiaoe/play-url.d.ts +0 -1
  768. package/dist/clis/xiaohongshu/comments.d.ts +0 -8
  769. package/dist/clis/xiaohongshu/comments.test.d.ts +0 -1
  770. package/dist/clis/xiaohongshu/creator-note-detail.d.ts +0 -84
  771. package/dist/clis/xiaohongshu/creator-note-detail.test.d.ts +0 -1
  772. package/dist/clis/xiaohongshu/creator-notes-summary.d.ts +0 -28
  773. package/dist/clis/xiaohongshu/creator-notes-summary.test.d.ts +0 -1
  774. package/dist/clis/xiaohongshu/creator-notes.d.ts +0 -24
  775. package/dist/clis/xiaohongshu/creator-notes.test.d.ts +0 -1
  776. package/dist/clis/xiaohongshu/creator-profile.d.ts +0 -10
  777. package/dist/clis/xiaohongshu/creator-stats.d.ts +0 -10
  778. package/dist/clis/xiaohongshu/download.d.ts +0 -10
  779. package/dist/clis/xiaohongshu/download.test.d.ts +0 -1
  780. package/dist/clis/xiaohongshu/feed.d.ts +0 -1
  781. package/dist/clis/xiaohongshu/note-helpers.d.ts +0 -12
  782. package/dist/clis/xiaohongshu/note.d.ts +0 -11
  783. package/dist/clis/xiaohongshu/note.test.d.ts +0 -1
  784. package/dist/clis/xiaohongshu/notifications.d.ts +0 -1
  785. package/dist/clis/xiaohongshu/publish.d.ts +0 -18
  786. package/dist/clis/xiaohongshu/publish.test.d.ts +0 -1
  787. package/dist/clis/xiaohongshu/search.d.ts +0 -15
  788. package/dist/clis/xiaohongshu/search.test.d.ts +0 -1
  789. package/dist/clis/xiaohongshu/user-helpers.d.ts +0 -16
  790. package/dist/clis/xiaohongshu/user-helpers.test.d.ts +0 -1
  791. package/dist/clis/xiaohongshu/user.d.ts +0 -1
  792. package/dist/clis/xiaoyuzhou/episode.d.ts +0 -1
  793. package/dist/clis/xiaoyuzhou/podcast-episodes.d.ts +0 -1
  794. package/dist/clis/xiaoyuzhou/podcast.d.ts +0 -1
  795. package/dist/clis/xiaoyuzhou/utils.d.ts +0 -16
  796. package/dist/clis/xiaoyuzhou/utils.test.d.ts +0 -1
  797. package/dist/clis/xueqiu/comments.d.ts +0 -118
  798. package/dist/clis/xueqiu/comments.test.d.ts +0 -1
  799. package/dist/clis/xueqiu/danjuan-utils.d.ts +0 -55
  800. package/dist/clis/xueqiu/danjuan-utils.test.d.ts +0 -1
  801. package/dist/clis/xueqiu/earnings-date.d.ts +0 -1
  802. package/dist/clis/xueqiu/earnings-date.js +0 -61
  803. package/dist/clis/xueqiu/feed.d.ts +0 -1
  804. package/dist/clis/xueqiu/feed.js +0 -48
  805. package/dist/clis/xueqiu/fund-holdings.d.ts +0 -1
  806. package/dist/clis/xueqiu/fund-snapshot.d.ts +0 -1
  807. package/dist/clis/xueqiu/groups.d.ts +0 -1
  808. package/dist/clis/xueqiu/groups.js +0 -25
  809. package/dist/clis/xueqiu/hot-stock.d.ts +0 -1
  810. package/dist/clis/xueqiu/hot-stock.js +0 -44
  811. package/dist/clis/xueqiu/hot.d.ts +0 -1
  812. package/dist/clis/xueqiu/hot.js +0 -44
  813. package/dist/clis/xueqiu/kline.d.ts +0 -1
  814. package/dist/clis/xueqiu/kline.js +0 -64
  815. package/dist/clis/xueqiu/search.d.ts +0 -1
  816. package/dist/clis/xueqiu/search.js +0 -49
  817. package/dist/clis/xueqiu/stock.d.ts +0 -1
  818. package/dist/clis/xueqiu/stock.js +0 -72
  819. package/dist/clis/xueqiu/watchlist.d.ts +0 -1
  820. package/dist/clis/xueqiu/watchlist.js +0 -45
  821. package/dist/clis/yahoo-finance/quote.d.ts +0 -1
  822. package/dist/clis/yollomi/background.d.ts +0 -4
  823. package/dist/clis/yollomi/edit.d.ts +0 -5
  824. package/dist/clis/yollomi/face-swap.d.ts +0 -5
  825. package/dist/clis/yollomi/generate.d.ts +0 -9
  826. package/dist/clis/yollomi/models.d.ts +0 -1
  827. package/dist/clis/yollomi/object-remover.d.ts +0 -4
  828. package/dist/clis/yollomi/remove-bg.d.ts +0 -4
  829. package/dist/clis/yollomi/restore.d.ts +0 -4
  830. package/dist/clis/yollomi/try-on.d.ts +0 -4
  831. package/dist/clis/yollomi/upload.d.ts +0 -7
  832. package/dist/clis/yollomi/upscale.d.ts +0 -4
  833. package/dist/clis/yollomi/utils.d.ts +0 -45
  834. package/dist/clis/yollomi/video.d.ts +0 -5
  835. package/dist/clis/youtube/channel.d.ts +0 -1
  836. package/dist/clis/youtube/comments.d.ts +0 -1
  837. package/dist/clis/youtube/search.d.ts +0 -1
  838. package/dist/clis/youtube/transcript-group.d.ts +0 -44
  839. package/dist/clis/youtube/transcript-group.test.d.ts +0 -1
  840. package/dist/clis/youtube/transcript.d.ts +0 -1
  841. package/dist/clis/youtube/utils.d.ts +0 -17
  842. package/dist/clis/youtube/utils.test.d.ts +0 -1
  843. package/dist/clis/youtube/video.d.ts +0 -1
  844. package/dist/clis/yuanbao/ask.d.ts +0 -21
  845. package/dist/clis/yuanbao/ask.test.d.ts +0 -1
  846. package/dist/clis/yuanbao/new.d.ts +0 -1
  847. package/dist/clis/yuanbao/new.test.d.ts +0 -1
  848. package/dist/clis/yuanbao/shared.d.ts +0 -13
  849. package/dist/clis/zhihu/answer.d.ts +0 -1
  850. package/dist/clis/zhihu/answer.test.d.ts +0 -1
  851. package/dist/clis/zhihu/comment.d.ts +0 -1
  852. package/dist/clis/zhihu/comment.test.d.ts +0 -1
  853. package/dist/clis/zhihu/download.d.ts +0 -7
  854. package/dist/clis/zhihu/download.test.d.ts +0 -1
  855. package/dist/clis/zhihu/favorite.d.ts +0 -1
  856. package/dist/clis/zhihu/favorite.test.d.ts +0 -1
  857. package/dist/clis/zhihu/follow.d.ts +0 -1
  858. package/dist/clis/zhihu/follow.test.d.ts +0 -1
  859. package/dist/clis/zhihu/hot.d.ts +0 -1
  860. package/dist/clis/zhihu/like.d.ts +0 -1
  861. package/dist/clis/zhihu/like.test.d.ts +0 -1
  862. package/dist/clis/zhihu/question.d.ts +0 -1
  863. package/dist/clis/zhihu/question.test.d.ts +0 -1
  864. package/dist/clis/zhihu/search.d.ts +0 -1
  865. package/dist/clis/zhihu/target.d.ts +0 -24
  866. package/dist/clis/zhihu/target.test.d.ts +0 -1
  867. package/dist/clis/zhihu/write-shared.d.ts +0 -32
  868. package/dist/clis/zhihu/write-shared.test.d.ts +0 -1
  869. package/dist/clis/zsxq/dynamics.d.ts +0 -1
  870. package/dist/clis/zsxq/groups.d.ts +0 -1
  871. package/dist/clis/zsxq/search.d.ts +0 -1
  872. package/dist/clis/zsxq/search.test.d.ts +0 -1
  873. package/dist/clis/zsxq/topic.d.ts +0 -1
  874. package/dist/clis/zsxq/topic.test.d.ts +0 -1
  875. package/dist/clis/zsxq/topics.d.ts +0 -1
  876. package/dist/clis/zsxq/topics.test.d.ts +0 -1
  877. package/dist/clis/zsxq/utils.d.ts +0 -97
  878. package/dist/src/clis/binance/asks.d.ts +0 -1
  879. package/dist/src/clis/binance/asks.js +0 -20
  880. package/dist/src/clis/binance/commands.test.d.ts +0 -3
  881. package/dist/src/clis/binance/commands.test.js +0 -58
  882. package/dist/src/clis/binance/depth.d.ts +0 -1
  883. package/dist/src/clis/binance/depth.js +0 -20
  884. package/dist/src/clis/binance/gainers.d.ts +0 -1
  885. package/dist/src/clis/binance/gainers.js +0 -21
  886. package/dist/src/clis/binance/klines.d.ts +0 -1
  887. package/dist/src/clis/binance/klines.js +0 -20
  888. package/dist/src/clis/binance/losers.d.ts +0 -1
  889. package/dist/src/clis/binance/losers.js +0 -21
  890. package/dist/src/clis/binance/pairs.d.ts +0 -1
  891. package/dist/src/clis/binance/pairs.js +0 -20
  892. package/dist/src/clis/binance/price.d.ts +0 -1
  893. package/dist/src/clis/binance/price.js +0 -17
  894. package/dist/src/clis/binance/prices.d.ts +0 -1
  895. package/dist/src/clis/binance/prices.js +0 -18
  896. package/dist/src/clis/binance/ticker.d.ts +0 -1
  897. package/dist/src/clis/binance/ticker.js +0 -20
  898. package/dist/src/clis/binance/top.d.ts +0 -1
  899. package/dist/src/clis/binance/top.js +0 -20
  900. package/dist/src/clis/binance/trades.d.ts +0 -1
  901. package/dist/src/clis/binance/trades.js +0 -19
  902. package/scripts/clean-yaml.cjs +0 -19
  903. package/scripts/test-site.mjs +0 -70
  904. /package/{dist/clis → clis}/1688/assets.js +0 -0
  905. /package/{dist/clis → clis}/1688/assets.test.js +0 -0
  906. /package/{dist/clis → clis}/1688/download.js +0 -0
  907. /package/{dist/clis → clis}/1688/download.test.js +0 -0
  908. /package/{dist/clis → clis}/1688/item.js +0 -0
  909. /package/{dist/clis → clis}/1688/item.test.js +0 -0
  910. /package/{dist/clis → clis}/1688/search.js +0 -0
  911. /package/{dist/clis → clis}/1688/search.test.js +0 -0
  912. /package/{dist/clis → clis}/1688/shared.js +0 -0
  913. /package/{dist/clis → clis}/1688/shared.test.js +0 -0
  914. /package/{dist/clis → clis}/1688/store.js +0 -0
  915. /package/{dist/clis → clis}/1688/store.test.js +0 -0
  916. /package/{dist/clis → clis}/36kr/article.js +0 -0
  917. /package/{dist/clis → clis}/36kr/hot.js +0 -0
  918. /package/{dist/clis → clis}/36kr/hot.test.js +0 -0
  919. /package/{dist/clis → clis}/36kr/news.js +0 -0
  920. /package/{dist/clis → clis}/36kr/news.test.js +0 -0
  921. /package/{dist/clis → clis}/36kr/search.js +0 -0
  922. /package/{dist/clis → clis}/_shared/common.js +0 -0
  923. /package/{dist/clis → clis}/_shared/desktop-commands.js +0 -0
  924. /package/{dist/clis → clis}/amazon/bestsellers.js +0 -0
  925. /package/{dist/clis → clis}/amazon/bestsellers.test.js +0 -0
  926. /package/{dist/clis → clis}/amazon/discussion.js +0 -0
  927. /package/{dist/clis → clis}/amazon/discussion.test.js +0 -0
  928. /package/{dist/clis → clis}/amazon/movers-shakers.js +0 -0
  929. /package/{dist/clis → clis}/amazon/new-releases.js +0 -0
  930. /package/{dist/clis → clis}/amazon/offer.js +0 -0
  931. /package/{dist/clis → clis}/amazon/offer.test.js +0 -0
  932. /package/{dist/clis → clis}/amazon/product.js +0 -0
  933. /package/{dist/clis → clis}/amazon/product.test.js +0 -0
  934. /package/{dist/clis → clis}/amazon/rankings.js +0 -0
  935. /package/{dist/clis → clis}/amazon/rankings.test.js +0 -0
  936. /package/{dist/clis → clis}/amazon/search.js +0 -0
  937. /package/{dist/clis → clis}/amazon/search.test.js +0 -0
  938. /package/{dist/clis → clis}/amazon/shared.js +0 -0
  939. /package/{dist/clis → clis}/amazon/shared.test.js +0 -0
  940. /package/{dist/clis → clis}/antigravity/dump.js +0 -0
  941. /package/{dist/clis → clis}/antigravity/extract-code.js +0 -0
  942. /package/{dist/clis → clis}/antigravity/model.js +0 -0
  943. /package/{dist/clis → clis}/antigravity/new.js +0 -0
  944. /package/{dist/clis → clis}/antigravity/read.js +0 -0
  945. /package/{dist/clis → clis}/antigravity/send.js +0 -0
  946. /package/{dist/clis → clis}/antigravity/serve.js +0 -0
  947. /package/{dist/clis → clis}/antigravity/status.js +0 -0
  948. /package/{dist/clis → clis}/antigravity/watch.js +0 -0
  949. /package/{dist/clis → clis}/apple-podcasts/commands.test.js +0 -0
  950. /package/{dist/clis → clis}/apple-podcasts/episodes.js +0 -0
  951. /package/{dist/clis → clis}/apple-podcasts/search.js +0 -0
  952. /package/{dist/clis → clis}/apple-podcasts/top.js +0 -0
  953. /package/{dist/clis → clis}/apple-podcasts/utils.js +0 -0
  954. /package/{dist/clis → clis}/apple-podcasts/utils.test.js +0 -0
  955. /package/{dist/clis → clis}/arxiv/paper.js +0 -0
  956. /package/{dist/clis → clis}/arxiv/search.js +0 -0
  957. /package/{dist/clis → clis}/arxiv/utils.js +0 -0
  958. /package/{dist/clis → clis}/band/bands.js +0 -0
  959. /package/{dist/clis → clis}/band/mentions.js +0 -0
  960. /package/{dist/clis → clis}/band/post.js +0 -0
  961. /package/{dist/clis → clis}/band/posts.js +0 -0
  962. /package/{dist/clis → clis}/barchart/flow.js +0 -0
  963. /package/{dist/clis → clis}/barchart/greeks.js +0 -0
  964. /package/{dist/clis → clis}/barchart/options.js +0 -0
  965. /package/{dist/clis → clis}/bbc/news.js +0 -0
  966. /package/{dist/clis → clis}/bilibili/comments.js +0 -0
  967. /package/{dist/clis → clis}/bilibili/comments.test.js +0 -0
  968. /package/{dist/clis → clis}/bilibili/download.js +0 -0
  969. /package/{dist/clis → clis}/bilibili/dynamic.js +0 -0
  970. /package/{dist/clis → clis}/bilibili/dynamic.test.js +0 -0
  971. /package/{dist/clis → clis}/bilibili/favorite.js +0 -0
  972. /package/{dist/clis → clis}/bilibili/feed.js +0 -0
  973. /package/{dist/clis → clis}/bilibili/history.js +0 -0
  974. /package/{dist/clis → clis}/bilibili/hot.js +0 -0
  975. /package/{dist/clis → clis}/bilibili/me.js +0 -0
  976. /package/{dist/clis → clis}/bilibili/ranking.js +0 -0
  977. /package/{dist/clis → clis}/bilibili/search.js +0 -0
  978. /package/{dist/clis → clis}/bilibili/subtitle.js +0 -0
  979. /package/{dist/clis → clis}/bilibili/subtitle.test.js +0 -0
  980. /package/{dist/clis → clis}/bilibili/user-videos.js +0 -0
  981. /package/{dist/clis → clis}/bilibili/utils.js +0 -0
  982. /package/{dist/clis → clis}/bilibili/utils.test.js +0 -0
  983. /package/{dist/clis → clis}/bloomberg/businessweek.js +0 -0
  984. /package/{dist/clis → clis}/bloomberg/economics.js +0 -0
  985. /package/{dist/clis → clis}/bloomberg/feeds.js +0 -0
  986. /package/{dist/clis → clis}/bloomberg/industries.js +0 -0
  987. /package/{dist/clis → clis}/bloomberg/main.js +0 -0
  988. /package/{dist/clis → clis}/bloomberg/markets.js +0 -0
  989. /package/{dist/clis → clis}/bloomberg/news.js +0 -0
  990. /package/{dist/clis → clis}/bloomberg/opinions.js +0 -0
  991. /package/{dist/clis → clis}/bloomberg/politics.js +0 -0
  992. /package/{dist/clis → clis}/bloomberg/tech.js +0 -0
  993. /package/{dist/clis → clis}/bloomberg/utils.js +0 -0
  994. /package/{dist/clis → clis}/bloomberg/utils.test.js +0 -0
  995. /package/{dist/clis → clis}/bluesky/feeds.js +0 -0
  996. /package/{dist/clis → clis}/bluesky/followers.js +0 -0
  997. /package/{dist/clis → clis}/bluesky/following.js +0 -0
  998. /package/{dist/clis → clis}/bluesky/profile.js +0 -0
  999. /package/{dist/clis → clis}/bluesky/search.js +0 -0
  1000. /package/{dist/clis → clis}/bluesky/starter-packs.js +0 -0
  1001. /package/{dist/clis → clis}/bluesky/thread.js +0 -0
  1002. /package/{dist/clis → clis}/bluesky/trending.js +0 -0
  1003. /package/{dist/clis → clis}/bluesky/user.js +0 -0
  1004. /package/{dist/clis → clis}/boss/batchgreet.js +0 -0
  1005. /package/{dist/clis → clis}/boss/chatlist.js +0 -0
  1006. /package/{dist/clis → clis}/boss/chatmsg.js +0 -0
  1007. /package/{dist/clis → clis}/boss/detail.js +0 -0
  1008. /package/{dist/clis → clis}/boss/exchange.js +0 -0
  1009. /package/{dist/clis → clis}/boss/greet.js +0 -0
  1010. /package/{dist/clis → clis}/boss/invite.js +0 -0
  1011. /package/{dist/clis → clis}/boss/joblist.js +0 -0
  1012. /package/{dist/clis → clis}/boss/mark.js +0 -0
  1013. /package/{dist/clis → clis}/boss/recommend.js +0 -0
  1014. /package/{dist/clis → clis}/boss/resume.js +0 -0
  1015. /package/{dist/clis → clis}/boss/search.js +0 -0
  1016. /package/{dist/clis → clis}/boss/send.js +0 -0
  1017. /package/{dist/clis → clis}/boss/stats.js +0 -0
  1018. /package/{dist/clis → clis}/boss/utils.js +0 -0
  1019. /package/{dist/clis → clis}/chaoxing/assignments.js +0 -0
  1020. /package/{dist/clis → clis}/chaoxing/exams.js +0 -0
  1021. /package/{dist/clis → clis}/chaoxing/utils.js +0 -0
  1022. /package/{dist/clis → clis}/chaoxing/utils.test.js +0 -0
  1023. /package/{dist/clis → clis}/chatgpt/ask.js +0 -0
  1024. /package/{dist/clis → clis}/chatgpt/ax.js +0 -0
  1025. /package/{dist/clis → clis}/chatgpt/model.js +0 -0
  1026. /package/{dist/clis → clis}/chatgpt/new.js +0 -0
  1027. /package/{dist/clis → clis}/chatgpt/read.js +0 -0
  1028. /package/{dist/clis → clis}/chatgpt/send.js +0 -0
  1029. /package/{dist/clis → clis}/chatgpt/status.js +0 -0
  1030. /package/{dist/clis → clis}/chatwise/ask.js +0 -0
  1031. /package/{dist/clis → clis}/chatwise/export.js +0 -0
  1032. /package/{dist/clis → clis}/chatwise/history.js +0 -0
  1033. /package/{dist/clis → clis}/chatwise/model.js +0 -0
  1034. /package/{dist/clis → clis}/chatwise/new.js +0 -0
  1035. /package/{dist/clis → clis}/chatwise/read.js +0 -0
  1036. /package/{dist/clis → clis}/chatwise/screenshot.js +0 -0
  1037. /package/{dist/clis → clis}/chatwise/send.js +0 -0
  1038. /package/{dist/clis → clis}/chatwise/status.js +0 -0
  1039. /package/{dist/clis → clis}/cnki/search.js +0 -0
  1040. /package/{dist/clis → clis}/cnki/search.test.js +0 -0
  1041. /package/{dist/clis → clis}/codex/ask.js +0 -0
  1042. /package/{dist/clis → clis}/codex/dump.js +0 -0
  1043. /package/{dist/clis → clis}/codex/export.js +0 -0
  1044. /package/{dist/clis → clis}/codex/extract-diff.js +0 -0
  1045. /package/{dist/clis → clis}/codex/history.js +0 -0
  1046. /package/{dist/clis → clis}/codex/model.js +0 -0
  1047. /package/{dist/clis → clis}/codex/new.js +0 -0
  1048. /package/{dist/clis → clis}/codex/read.js +0 -0
  1049. /package/{dist/clis → clis}/codex/screenshot.js +0 -0
  1050. /package/{dist/clis → clis}/codex/send.js +0 -0
  1051. /package/{dist/clis → clis}/codex/status.js +0 -0
  1052. /package/{dist/clis → clis}/coupang/add-to-cart.js +0 -0
  1053. /package/{dist/clis → clis}/coupang/search.js +0 -0
  1054. /package/{dist/clis → clis}/coupang/utils.js +0 -0
  1055. /package/{dist/clis → clis}/coupang/utils.test.js +0 -0
  1056. /package/{dist/clis → clis}/ctrip/search.js +0 -0
  1057. /package/{dist/clis → clis}/ctrip/search.test.js +0 -0
  1058. /package/{dist/clis → clis}/cursor/ask.js +0 -0
  1059. /package/{dist/clis → clis}/cursor/composer.js +0 -0
  1060. /package/{dist/clis → clis}/cursor/dump.js +0 -0
  1061. /package/{dist/clis → clis}/cursor/export.js +0 -0
  1062. /package/{dist/clis → clis}/cursor/extract-code.js +0 -0
  1063. /package/{dist/clis → clis}/cursor/history.js +0 -0
  1064. /package/{dist/clis → clis}/cursor/model.js +0 -0
  1065. /package/{dist/clis → clis}/cursor/new.js +0 -0
  1066. /package/{dist/clis → clis}/cursor/read.js +0 -0
  1067. /package/{dist/clis → clis}/cursor/screenshot.js +0 -0
  1068. /package/{dist/clis → clis}/cursor/send.js +0 -0
  1069. /package/{dist/clis → clis}/cursor/status.js +0 -0
  1070. /package/{dist/clis → clis}/devto/tag.js +0 -0
  1071. /package/{dist/clis → clis}/devto/top.js +0 -0
  1072. /package/{dist/clis → clis}/devto/user.js +0 -0
  1073. /package/{dist/clis → clis}/dictionary/examples.js +0 -0
  1074. /package/{dist/clis → clis}/dictionary/search.js +0 -0
  1075. /package/{dist/clis → clis}/dictionary/synonyms.js +0 -0
  1076. /package/{dist/clis → clis}/discord-app/channels.js +0 -0
  1077. /package/{dist/clis → clis}/discord-app/members.js +0 -0
  1078. /package/{dist/clis → clis}/discord-app/read.js +0 -0
  1079. /package/{dist/clis → clis}/discord-app/search.js +0 -0
  1080. /package/{dist/clis → clis}/discord-app/send.js +0 -0
  1081. /package/{dist/clis → clis}/discord-app/servers.js +0 -0
  1082. /package/{dist/clis → clis}/discord-app/status.js +0 -0
  1083. /package/{dist/clis → clis}/douban/book-hot.js +0 -0
  1084. /package/{dist/clis → clis}/douban/download.js +0 -0
  1085. /package/{dist/clis → clis}/douban/download.test.js +0 -0
  1086. /package/{dist/clis → clis}/douban/marks.js +0 -0
  1087. /package/{dist/clis → clis}/douban/movie-hot.js +0 -0
  1088. /package/{dist/clis → clis}/douban/photos.js +0 -0
  1089. /package/{dist/clis → clis}/douban/reviews.js +0 -0
  1090. /package/{dist/clis → clis}/douban/search.js +0 -0
  1091. /package/{dist/clis → clis}/douban/subject.js +0 -0
  1092. /package/{dist/clis → clis}/douban/top250.js +0 -0
  1093. /package/{dist/clis → clis}/douban/utils.js +0 -0
  1094. /package/{dist/clis → clis}/douban/utils.test.js +0 -0
  1095. /package/{dist/clis → clis}/doubao/ask.js +0 -0
  1096. /package/{dist/clis → clis}/doubao/detail.js +0 -0
  1097. /package/{dist/clis → clis}/doubao/detail.test.js +0 -0
  1098. /package/{dist/clis → clis}/doubao/history.js +0 -0
  1099. /package/{dist/clis → clis}/doubao/history.test.js +0 -0
  1100. /package/{dist/clis → clis}/doubao/meeting-summary.js +0 -0
  1101. /package/{dist/clis → clis}/doubao/meeting-transcript.js +0 -0
  1102. /package/{dist/clis → clis}/doubao/new.js +0 -0
  1103. /package/{dist/clis → clis}/doubao/read.js +0 -0
  1104. /package/{dist/clis → clis}/doubao/send.js +0 -0
  1105. /package/{dist/clis → clis}/doubao/status.js +0 -0
  1106. /package/{dist/clis → clis}/doubao/utils.js +0 -0
  1107. /package/{dist/clis → clis}/doubao/utils.test.js +0 -0
  1108. /package/{dist/clis → clis}/doubao-app/ask.js +0 -0
  1109. /package/{dist/clis → clis}/doubao-app/dump.js +0 -0
  1110. /package/{dist/clis → clis}/doubao-app/new.js +0 -0
  1111. /package/{dist/clis → clis}/doubao-app/read.js +0 -0
  1112. /package/{dist/clis → clis}/doubao-app/screenshot.js +0 -0
  1113. /package/{dist/clis → clis}/doubao-app/send.js +0 -0
  1114. /package/{dist/clis → clis}/doubao-app/status.js +0 -0
  1115. /package/{dist/clis → clis}/doubao-app/utils.js +0 -0
  1116. /package/{dist/clis → clis}/douyin/_shared/browser-fetch.js +0 -0
  1117. /package/{dist/clis → clis}/douyin/_shared/browser-fetch.test.js +0 -0
  1118. /package/{dist/clis → clis}/douyin/_shared/creation-id.js +0 -0
  1119. /package/{dist/clis → clis}/douyin/_shared/creation-id.test.js +0 -0
  1120. /package/{dist/clis → clis}/douyin/_shared/imagex-upload.js +0 -0
  1121. /package/{dist/clis → clis}/douyin/_shared/imagex-upload.test.js +0 -0
  1122. /package/{dist/clis → clis}/douyin/_shared/public-api.js +0 -0
  1123. /package/{dist/clis → clis}/douyin/_shared/sts2.js +0 -0
  1124. /package/{dist/clis → clis}/douyin/_shared/sts2.test.js +0 -0
  1125. /package/{dist/clis → clis}/douyin/_shared/text-extra.js +0 -0
  1126. /package/{dist/clis → clis}/douyin/_shared/text-extra.test.js +0 -0
  1127. /package/{dist/clis → clis}/douyin/_shared/timing.js +0 -0
  1128. /package/{dist/clis → clis}/douyin/_shared/timing.test.js +0 -0
  1129. /package/{dist/clis → clis}/douyin/_shared/tos-upload-short-read.test.js +0 -0
  1130. /package/{dist/clis → clis}/douyin/_shared/tos-upload.js +0 -0
  1131. /package/{dist/clis → clis}/douyin/_shared/tos-upload.test.js +0 -0
  1132. /package/{dist/clis → clis}/douyin/_shared/transcode.js +0 -0
  1133. /package/{dist/clis → clis}/douyin/_shared/transcode.test.js +0 -0
  1134. /package/{dist/clis/1688/assets.test.d.ts → clis/douyin/_shared/types.js} +0 -0
  1135. /package/{dist/clis → clis}/douyin/activities.js +0 -0
  1136. /package/{dist/clis → clis}/douyin/activities.test.js +0 -0
  1137. /package/{dist/clis → clis}/douyin/collections.js +0 -0
  1138. /package/{dist/clis → clis}/douyin/collections.test.js +0 -0
  1139. /package/{dist/clis → clis}/douyin/delete.js +0 -0
  1140. /package/{dist/clis → clis}/douyin/delete.test.js +0 -0
  1141. /package/{dist/clis → clis}/douyin/draft.js +0 -0
  1142. /package/{dist/clis → clis}/douyin/draft.test.js +0 -0
  1143. /package/{dist/clis → clis}/douyin/drafts.js +0 -0
  1144. /package/{dist/clis → clis}/douyin/drafts.test.js +0 -0
  1145. /package/{dist/clis → clis}/douyin/hashtag.js +0 -0
  1146. /package/{dist/clis → clis}/douyin/hashtag.test.js +0 -0
  1147. /package/{dist/clis → clis}/douyin/location.js +0 -0
  1148. /package/{dist/clis → clis}/douyin/location.test.js +0 -0
  1149. /package/{dist/clis → clis}/douyin/profile.js +0 -0
  1150. /package/{dist/clis → clis}/douyin/profile.test.js +0 -0
  1151. /package/{dist/clis → clis}/douyin/publish.js +0 -0
  1152. /package/{dist/clis → clis}/douyin/publish.test.js +0 -0
  1153. /package/{dist/clis → clis}/douyin/stats.js +0 -0
  1154. /package/{dist/clis → clis}/douyin/stats.test.js +0 -0
  1155. /package/{dist/clis → clis}/douyin/update.js +0 -0
  1156. /package/{dist/clis → clis}/douyin/update.test.js +0 -0
  1157. /package/{dist/clis → clis}/douyin/user-videos.js +0 -0
  1158. /package/{dist/clis → clis}/douyin/user-videos.test.js +0 -0
  1159. /package/{dist/clis → clis}/douyin/videos.js +0 -0
  1160. /package/{dist/clis → clis}/douyin/videos.test.js +0 -0
  1161. /package/{dist/clis → clis}/facebook/add-friend.js +0 -0
  1162. /package/{dist/clis → clis}/facebook/events.js +0 -0
  1163. /package/{dist/clis → clis}/facebook/feed.js +0 -0
  1164. /package/{dist/clis → clis}/facebook/friends.js +0 -0
  1165. /package/{dist/clis → clis}/facebook/groups.js +0 -0
  1166. /package/{dist/clis → clis}/facebook/join-group.js +0 -0
  1167. /package/{dist/clis → clis}/facebook/memories.js +0 -0
  1168. /package/{dist/clis → clis}/facebook/notifications.js +0 -0
  1169. /package/{dist/clis → clis}/facebook/profile.js +0 -0
  1170. /package/{dist/clis → clis}/facebook/search.js +0 -0
  1171. /package/{dist/clis → clis}/facebook/search.test.js +0 -0
  1172. /package/{dist/clis → clis}/gemini/ask.js +0 -0
  1173. /package/{dist/clis → clis}/gemini/ask.test.js +0 -0
  1174. /package/{dist/clis → clis}/gemini/deep-research-result.js +0 -0
  1175. /package/{dist/clis → clis}/gemini/deep-research-result.test.js +0 -0
  1176. /package/{dist/clis → clis}/gemini/deep-research.js +0 -0
  1177. /package/{dist/clis → clis}/gemini/deep-research.test.js +0 -0
  1178. /package/{dist/clis → clis}/gemini/image.js +0 -0
  1179. /package/{dist/clis → clis}/gemini/new.js +0 -0
  1180. /package/{dist/clis → clis}/gemini/reply-state.test.js +0 -0
  1181. /package/{dist/clis → clis}/gemini/utils.js +0 -0
  1182. /package/{dist/clis → clis}/gemini/utils.test.js +0 -0
  1183. /package/{dist/clis → clis}/gitee/index.js +0 -0
  1184. /package/{dist/clis → clis}/gitee/search.js +0 -0
  1185. /package/{dist/clis → clis}/gitee/trending.js +0 -0
  1186. /package/{dist/clis → clis}/gitee/user.js +0 -0
  1187. /package/{dist/clis → clis}/gitee/user.test.js +0 -0
  1188. /package/{dist/clis → clis}/google/news.js +0 -0
  1189. /package/{dist/clis → clis}/google/search.js +0 -0
  1190. /package/{dist/clis → clis}/google/suggest.js +0 -0
  1191. /package/{dist/clis → clis}/google/trends.js +0 -0
  1192. /package/{dist/clis → clis}/google/utils.js +0 -0
  1193. /package/{dist/clis → clis}/google/utils.test.js +0 -0
  1194. /package/{dist/clis → clis}/grok/ask.js +0 -0
  1195. /package/{dist/clis → clis}/grok/ask.test.js +0 -0
  1196. /package/{dist/clis → clis}/hackernews/ask.js +0 -0
  1197. /package/{dist/clis → clis}/hackernews/best.js +0 -0
  1198. /package/{dist/clis → clis}/hackernews/jobs.js +0 -0
  1199. /package/{dist/clis → clis}/hackernews/new.js +0 -0
  1200. /package/{dist/clis → clis}/hackernews/search.js +0 -0
  1201. /package/{dist/clis → clis}/hackernews/show.js +0 -0
  1202. /package/{dist/clis → clis}/hackernews/top.js +0 -0
  1203. /package/{dist/clis → clis}/hackernews/user.js +0 -0
  1204. /package/{dist/clis → clis}/hf/top.js +0 -0
  1205. /package/{dist/clis → clis}/hupu/detail.js +0 -0
  1206. /package/{dist/clis → clis}/hupu/hot.js +0 -0
  1207. /package/{dist/clis → clis}/hupu/like.js +0 -0
  1208. /package/{dist/clis → clis}/hupu/mentions.js +0 -0
  1209. /package/{dist/clis → clis}/hupu/reply.js +0 -0
  1210. /package/{dist/clis → clis}/hupu/search.js +0 -0
  1211. /package/{dist/clis → clis}/hupu/unlike.js +0 -0
  1212. /package/{dist/clis → clis}/hupu/utils.js +0 -0
  1213. /package/{dist/clis → clis}/imdb/person.js +0 -0
  1214. /package/{dist/clis → clis}/imdb/reviews.js +0 -0
  1215. /package/{dist/clis → clis}/imdb/search.js +0 -0
  1216. /package/{dist/clis → clis}/imdb/title.js +0 -0
  1217. /package/{dist/clis → clis}/imdb/top.js +0 -0
  1218. /package/{dist/clis → clis}/imdb/trending.js +0 -0
  1219. /package/{dist/clis → clis}/imdb/utils.js +0 -0
  1220. /package/{dist/clis → clis}/imdb/utils.test.js +0 -0
  1221. /package/{dist/clis → clis}/instagram/_shared/private-publish.js +0 -0
  1222. /package/{dist/clis → clis}/instagram/_shared/private-publish.test.js +0 -0
  1223. /package/{dist/clis → clis}/instagram/_shared/protocol-capture.js +0 -0
  1224. /package/{dist/clis → clis}/instagram/_shared/protocol-capture.test.js +0 -0
  1225. /package/{dist/clis → clis}/instagram/_shared/runtime-info.js +0 -0
  1226. /package/{dist/clis → clis}/instagram/comment.js +0 -0
  1227. /package/{dist/clis → clis}/instagram/download.js +0 -0
  1228. /package/{dist/clis → clis}/instagram/download.test.js +0 -0
  1229. /package/{dist/clis → clis}/instagram/explore.js +0 -0
  1230. /package/{dist/clis → clis}/instagram/follow.js +0 -0
  1231. /package/{dist/clis → clis}/instagram/followers.js +0 -0
  1232. /package/{dist/clis → clis}/instagram/following.js +0 -0
  1233. /package/{dist/clis → clis}/instagram/like.js +0 -0
  1234. /package/{dist/clis → clis}/instagram/note.js +0 -0
  1235. /package/{dist/clis → clis}/instagram/note.test.js +0 -0
  1236. /package/{dist/clis → clis}/instagram/post.js +0 -0
  1237. /package/{dist/clis → clis}/instagram/post.test.js +0 -0
  1238. /package/{dist/clis → clis}/instagram/profile.js +0 -0
  1239. /package/{dist/clis → clis}/instagram/reel.js +0 -0
  1240. /package/{dist/clis → clis}/instagram/reel.test.js +0 -0
  1241. /package/{dist/clis → clis}/instagram/save.js +0 -0
  1242. /package/{dist/clis → clis}/instagram/saved.js +0 -0
  1243. /package/{dist/clis → clis}/instagram/search.js +0 -0
  1244. /package/{dist/clis → clis}/instagram/story.js +0 -0
  1245. /package/{dist/clis → clis}/instagram/story.test.js +0 -0
  1246. /package/{dist/clis → clis}/instagram/unfollow.js +0 -0
  1247. /package/{dist/clis → clis}/instagram/unlike.js +0 -0
  1248. /package/{dist/clis → clis}/instagram/unsave.js +0 -0
  1249. /package/{dist/clis → clis}/instagram/user.js +0 -0
  1250. /package/{dist/clis → clis}/jd/add-cart.js +0 -0
  1251. /package/{dist/clis → clis}/jd/cart.js +0 -0
  1252. /package/{dist/clis → clis}/jd/commands.test.js +0 -0
  1253. /package/{dist/clis → clis}/jd/detail.js +0 -0
  1254. /package/{dist/clis → clis}/jd/item.js +0 -0
  1255. /package/{dist/clis → clis}/jd/item.test.js +0 -0
  1256. /package/{dist/clis → clis}/jd/reviews.js +0 -0
  1257. /package/{dist/clis → clis}/jd/search.js +0 -0
  1258. /package/{dist/clis → clis}/jianyu/detail.js +0 -0
  1259. /package/{dist/clis → clis}/jianyu/search.js +0 -0
  1260. /package/{dist/clis → clis}/jianyu/search.test.js +0 -0
  1261. /package/{dist/clis → clis}/jianyu/shared/china-bid-search.js +0 -0
  1262. /package/{dist/clis → clis}/jianyu/shared/procurement-contract.js +0 -0
  1263. /package/{dist/clis → clis}/jianyu/shared/procurement-contract.test.js +0 -0
  1264. /package/{dist/clis → clis}/jianyu/shared/procurement-detail.js +0 -0
  1265. /package/{dist/clis → clis}/jianyu/shared/procurement-detail.test.js +0 -0
  1266. /package/{dist/clis → clis}/jike/comment.js +0 -0
  1267. /package/{dist/clis → clis}/jike/create.js +0 -0
  1268. /package/{dist/clis → clis}/jike/feed.js +0 -0
  1269. /package/{dist/clis → clis}/jike/like.js +0 -0
  1270. /package/{dist/clis → clis}/jike/notifications.js +0 -0
  1271. /package/{dist/clis → clis}/jike/post.js +0 -0
  1272. /package/{dist/clis → clis}/jike/repost.js +0 -0
  1273. /package/{dist/clis → clis}/jike/search.js +0 -0
  1274. /package/{dist/clis → clis}/jike/topic.js +0 -0
  1275. /package/{dist/clis → clis}/jike/user.js +0 -0
  1276. /package/{dist/clis → clis}/jike/utils.js +0 -0
  1277. /package/{dist/clis → clis}/jimeng/generate.js +0 -0
  1278. /package/{dist/clis → clis}/jimeng/history.js +0 -0
  1279. /package/{dist/clis → clis}/jimeng/new.js +0 -0
  1280. /package/{dist/clis → clis}/jimeng/workspaces.js +0 -0
  1281. /package/{dist/clis → clis}/lesswrong/_helpers.js +0 -0
  1282. /package/{dist/clis → clis}/lesswrong/comments.js +0 -0
  1283. /package/{dist/clis → clis}/lesswrong/curated.js +0 -0
  1284. /package/{dist/clis → clis}/lesswrong/frontpage.js +0 -0
  1285. /package/{dist/clis → clis}/lesswrong/new.js +0 -0
  1286. /package/{dist/clis → clis}/lesswrong/read.js +0 -0
  1287. /package/{dist/clis → clis}/lesswrong/sequences.js +0 -0
  1288. /package/{dist/clis → clis}/lesswrong/shortform.js +0 -0
  1289. /package/{dist/clis → clis}/lesswrong/tag.js +0 -0
  1290. /package/{dist/clis → clis}/lesswrong/tags.js +0 -0
  1291. /package/{dist/clis → clis}/lesswrong/top-month.js +0 -0
  1292. /package/{dist/clis → clis}/lesswrong/top-week.js +0 -0
  1293. /package/{dist/clis → clis}/lesswrong/top-year.js +0 -0
  1294. /package/{dist/clis → clis}/lesswrong/top.js +0 -0
  1295. /package/{dist/clis → clis}/lesswrong/user-posts.js +0 -0
  1296. /package/{dist/clis → clis}/lesswrong/user.js +0 -0
  1297. /package/{dist/clis → clis}/linkedin/search.js +0 -0
  1298. /package/{dist/clis → clis}/linkedin/timeline.js +0 -0
  1299. /package/{dist/clis → clis}/linkedin/timeline.test.js +0 -0
  1300. /package/{dist/clis → clis}/linux-do/category.js +0 -0
  1301. /package/{dist/clis → clis}/linux-do/feed.test.js +0 -0
  1302. /package/{dist/clis → clis}/linux-do/hot.js +0 -0
  1303. /package/{dist/clis → clis}/linux-do/latest.js +0 -0
  1304. /package/{dist/clis → clis}/linux-do/topic-content.js +0 -0
  1305. /package/{dist/clis → clis}/lobsters/active.js +0 -0
  1306. /package/{dist/clis → clis}/lobsters/hot.js +0 -0
  1307. /package/{dist/clis → clis}/lobsters/newest.js +0 -0
  1308. /package/{dist/clis → clis}/lobsters/tag.js +0 -0
  1309. /package/{dist/clis → clis}/medium/feed.js +0 -0
  1310. /package/{dist/clis → clis}/medium/search.js +0 -0
  1311. /package/{dist/clis → clis}/medium/user.js +0 -0
  1312. /package/{dist/clis → clis}/medium/utils.js +0 -0
  1313. /package/{dist/clis → clis}/notebooklm/compat.test.js +0 -0
  1314. /package/{dist/clis → clis}/notebooklm/current.js +0 -0
  1315. /package/{dist/clis → clis}/notebooklm/get.js +0 -0
  1316. /package/{dist/clis → clis}/notebooklm/history.js +0 -0
  1317. /package/{dist/clis → clis}/notebooklm/history.test.js +0 -0
  1318. /package/{dist/clis → clis}/notebooklm/list.js +0 -0
  1319. /package/{dist/clis → clis}/notebooklm/note-list.js +0 -0
  1320. /package/{dist/clis → clis}/notebooklm/note-list.test.js +0 -0
  1321. /package/{dist/clis → clis}/notebooklm/notes-get.js +0 -0
  1322. /package/{dist/clis → clis}/notebooklm/notes-get.test.js +0 -0
  1323. /package/{dist/clis → clis}/notebooklm/open.js +0 -0
  1324. /package/{dist/clis → clis}/notebooklm/open.test.js +0 -0
  1325. /package/{dist/clis → clis}/notebooklm/rpc.js +0 -0
  1326. /package/{dist/clis → clis}/notebooklm/rpc.test.js +0 -0
  1327. /package/{dist/clis → clis}/notebooklm/shared.js +0 -0
  1328. /package/{dist/clis → clis}/notebooklm/source-fulltext.js +0 -0
  1329. /package/{dist/clis → clis}/notebooklm/source-fulltext.test.js +0 -0
  1330. /package/{dist/clis → clis}/notebooklm/source-get.js +0 -0
  1331. /package/{dist/clis → clis}/notebooklm/source-get.test.js +0 -0
  1332. /package/{dist/clis → clis}/notebooklm/source-guide.js +0 -0
  1333. /package/{dist/clis → clis}/notebooklm/source-guide.test.js +0 -0
  1334. /package/{dist/clis → clis}/notebooklm/source-list.js +0 -0
  1335. /package/{dist/clis → clis}/notebooklm/status.js +0 -0
  1336. /package/{dist/clis → clis}/notebooklm/summary.js +0 -0
  1337. /package/{dist/clis → clis}/notebooklm/summary.test.js +0 -0
  1338. /package/{dist/clis → clis}/notebooklm/utils.js +0 -0
  1339. /package/{dist/clis → clis}/notebooklm/utils.test.js +0 -0
  1340. /package/{dist/clis → clis}/notion/export.js +0 -0
  1341. /package/{dist/clis → clis}/notion/favorites.js +0 -0
  1342. /package/{dist/clis → clis}/notion/new.js +0 -0
  1343. /package/{dist/clis → clis}/notion/read.js +0 -0
  1344. /package/{dist/clis → clis}/notion/search.js +0 -0
  1345. /package/{dist/clis → clis}/notion/sidebar.js +0 -0
  1346. /package/{dist/clis → clis}/notion/status.js +0 -0
  1347. /package/{dist/clis → clis}/notion/write.js +0 -0
  1348. /package/{dist/clis → clis}/ones/common.js +0 -0
  1349. /package/{dist/clis → clis}/ones/enrich-tasks.js +0 -0
  1350. /package/{dist/clis → clis}/ones/login.js +0 -0
  1351. /package/{dist/clis → clis}/ones/logout.js +0 -0
  1352. /package/{dist/clis → clis}/ones/me.js +0 -0
  1353. /package/{dist/clis → clis}/ones/my-tasks.js +0 -0
  1354. /package/{dist/clis → clis}/ones/resolve-labels.js +0 -0
  1355. /package/{dist/clis → clis}/ones/task-helpers.js +0 -0
  1356. /package/{dist/clis → clis}/ones/task-helpers.test.js +0 -0
  1357. /package/{dist/clis → clis}/ones/task.js +0 -0
  1358. /package/{dist/clis → clis}/ones/tasks.js +0 -0
  1359. /package/{dist/clis → clis}/ones/token-info.js +0 -0
  1360. /package/{dist/clis → clis}/ones/worklog.js +0 -0
  1361. /package/{dist/clis → clis}/ones/worklog.test.js +0 -0
  1362. /package/{dist/clis → clis}/paperreview/commands.test.js +0 -0
  1363. /package/{dist/clis → clis}/paperreview/feedback.js +0 -0
  1364. /package/{dist/clis → clis}/paperreview/review.js +0 -0
  1365. /package/{dist/clis → clis}/paperreview/submit.js +0 -0
  1366. /package/{dist/clis → clis}/paperreview/utils.js +0 -0
  1367. /package/{dist/clis → clis}/paperreview/utils.test.js +0 -0
  1368. /package/{dist/clis → clis}/pixiv/detail.js +0 -0
  1369. /package/{dist/clis → clis}/pixiv/download.js +0 -0
  1370. /package/{dist/clis → clis}/pixiv/download.test.js +0 -0
  1371. /package/{dist/clis → clis}/pixiv/illusts.js +0 -0
  1372. /package/{dist/clis → clis}/pixiv/illusts.test.js +0 -0
  1373. /package/{dist/clis → clis}/pixiv/ranking.js +0 -0
  1374. /package/{dist/clis → clis}/pixiv/search.js +0 -0
  1375. /package/{dist/clis → clis}/pixiv/search.test.js +0 -0
  1376. /package/{dist/clis → clis}/pixiv/test-utils.js +0 -0
  1377. /package/{dist/clis → clis}/pixiv/user.js +0 -0
  1378. /package/{dist/clis → clis}/pixiv/utils.js +0 -0
  1379. /package/{dist/clis → clis}/producthunt/browse.js +0 -0
  1380. /package/{dist/clis → clis}/producthunt/hot.js +0 -0
  1381. /package/{dist/clis → clis}/producthunt/posts.js +0 -0
  1382. /package/{dist/clis → clis}/producthunt/today.js +0 -0
  1383. /package/{dist/clis → clis}/producthunt/utils.js +0 -0
  1384. /package/{dist/clis → clis}/producthunt/utils.test.js +0 -0
  1385. /package/{dist/clis → clis}/quark/ls.js +0 -0
  1386. /package/{dist/clis → clis}/quark/mkdir.js +0 -0
  1387. /package/{dist/clis → clis}/quark/mv.js +0 -0
  1388. /package/{dist/clis → clis}/quark/rename.js +0 -0
  1389. /package/{dist/clis → clis}/quark/rm.js +0 -0
  1390. /package/{dist/clis → clis}/quark/save.js +0 -0
  1391. /package/{dist/clis → clis}/quark/share-tree.js +0 -0
  1392. /package/{dist/clis → clis}/quark/utils.js +0 -0
  1393. /package/{dist/clis → clis}/quark/utils.test.js +0 -0
  1394. /package/{dist/clis → clis}/reddit/comment.js +0 -0
  1395. /package/{dist/clis → clis}/reddit/frontpage.js +0 -0
  1396. /package/{dist/clis → clis}/reddit/hot.js +0 -0
  1397. /package/{dist/clis → clis}/reddit/popular.js +0 -0
  1398. /package/{dist/clis → clis}/reddit/read.js +0 -0
  1399. /package/{dist/clis → clis}/reddit/read.test.js +0 -0
  1400. /package/{dist/clis → clis}/reddit/save.js +0 -0
  1401. /package/{dist/clis → clis}/reddit/saved.js +0 -0
  1402. /package/{dist/clis → clis}/reddit/search.js +0 -0
  1403. /package/{dist/clis → clis}/reddit/subreddit.js +0 -0
  1404. /package/{dist/clis → clis}/reddit/subscribe.js +0 -0
  1405. /package/{dist/clis → clis}/reddit/upvote.js +0 -0
  1406. /package/{dist/clis → clis}/reddit/upvoted.js +0 -0
  1407. /package/{dist/clis → clis}/reddit/user-comments.js +0 -0
  1408. /package/{dist/clis → clis}/reddit/user-posts.js +0 -0
  1409. /package/{dist/clis → clis}/reddit/user.js +0 -0
  1410. /package/{dist/clis → clis}/reuters/search.js +0 -0
  1411. /package/{dist/clis → clis}/sinablog/article.js +0 -0
  1412. /package/{dist/clis → clis}/sinablog/hot.js +0 -0
  1413. /package/{dist/clis → clis}/sinablog/search.js +0 -0
  1414. /package/{dist/clis → clis}/sinablog/user.js +0 -0
  1415. /package/{dist/clis → clis}/sinablog/utils.js +0 -0
  1416. /package/{dist/clis → clis}/sinafinance/news.js +0 -0
  1417. /package/{dist/clis → clis}/sinafinance/rolling-news.js +0 -0
  1418. /package/{dist/clis → clis}/sinafinance/stock-rank.js +0 -0
  1419. /package/{dist/clis → clis}/sinafinance/stock.js +0 -0
  1420. /package/{dist/clis → clis}/smzdm/search.js +0 -0
  1421. /package/{dist/clis → clis}/spotify/spotify.js +0 -0
  1422. /package/{dist/clis → clis}/spotify/utils.js +0 -0
  1423. /package/{dist/clis → clis}/spotify/utils.test.js +0 -0
  1424. /package/{dist/clis → clis}/stackoverflow/bounties.js +0 -0
  1425. /package/{dist/clis → clis}/stackoverflow/hot.js +0 -0
  1426. /package/{dist/clis → clis}/stackoverflow/search.js +0 -0
  1427. /package/{dist/clis → clis}/stackoverflow/unanswered.js +0 -0
  1428. /package/{dist/clis → clis}/steam/top-sellers.js +0 -0
  1429. /package/{dist/clis → clis}/substack/feed.js +0 -0
  1430. /package/{dist/clis → clis}/substack/publication.js +0 -0
  1431. /package/{dist/clis → clis}/substack/search.js +0 -0
  1432. /package/{dist/clis → clis}/substack/utils.js +0 -0
  1433. /package/{dist/clis → clis}/substack/utils.test.js +0 -0
  1434. /package/{dist/clis → clis}/taobao/add-cart.js +0 -0
  1435. /package/{dist/clis → clis}/taobao/cart.js +0 -0
  1436. /package/{dist/clis → clis}/taobao/commands.test.js +0 -0
  1437. /package/{dist/clis → clis}/taobao/detail.js +0 -0
  1438. /package/{dist/clis → clis}/taobao/reviews.js +0 -0
  1439. /package/{dist/clis → clis}/taobao/search.js +0 -0
  1440. /package/{dist/clis → clis}/tieba/commands.test.js +0 -0
  1441. /package/{dist/clis → clis}/tieba/hot.js +0 -0
  1442. /package/{dist/clis → clis}/tieba/posts.js +0 -0
  1443. /package/{dist/clis → clis}/tieba/read.js +0 -0
  1444. /package/{dist/clis → clis}/tieba/search.js +0 -0
  1445. /package/{dist/clis → clis}/tieba/utils.js +0 -0
  1446. /package/{dist/clis → clis}/tieba/utils.test.js +0 -0
  1447. /package/{dist/clis → clis}/tiktok/comment.js +0 -0
  1448. /package/{dist/clis → clis}/tiktok/explore.js +0 -0
  1449. /package/{dist/clis → clis}/tiktok/follow.js +0 -0
  1450. /package/{dist/clis → clis}/tiktok/following.js +0 -0
  1451. /package/{dist/clis → clis}/tiktok/friends.js +0 -0
  1452. /package/{dist/clis → clis}/tiktok/like.js +0 -0
  1453. /package/{dist/clis → clis}/tiktok/live.js +0 -0
  1454. /package/{dist/clis → clis}/tiktok/notifications.js +0 -0
  1455. /package/{dist/clis → clis}/tiktok/profile.js +0 -0
  1456. /package/{dist/clis → clis}/tiktok/save.js +0 -0
  1457. /package/{dist/clis → clis}/tiktok/search.js +0 -0
  1458. /package/{dist/clis → clis}/tiktok/unfollow.js +0 -0
  1459. /package/{dist/clis → clis}/tiktok/unlike.js +0 -0
  1460. /package/{dist/clis → clis}/tiktok/unsave.js +0 -0
  1461. /package/{dist/clis → clis}/tiktok/user.js +0 -0
  1462. /package/{dist/clis → clis}/twitter/accept.js +0 -0
  1463. /package/{dist/clis → clis}/twitter/article.js +0 -0
  1464. /package/{dist/clis → clis}/twitter/block.js +0 -0
  1465. /package/{dist/clis → clis}/twitter/bookmark.js +0 -0
  1466. /package/{dist/clis → clis}/twitter/bookmarks.js +0 -0
  1467. /package/{dist/clis → clis}/twitter/delete.js +0 -0
  1468. /package/{dist/clis → clis}/twitter/delete.test.js +0 -0
  1469. /package/{dist/clis → clis}/twitter/download.js +0 -0
  1470. /package/{dist/clis → clis}/twitter/follow.js +0 -0
  1471. /package/{dist/clis → clis}/twitter/followers.js +0 -0
  1472. /package/{dist/clis → clis}/twitter/following.js +0 -0
  1473. /package/{dist/clis → clis}/twitter/hide-reply.js +0 -0
  1474. /package/{dist/clis → clis}/twitter/like.js +0 -0
  1475. /package/{dist/clis → clis}/twitter/likes.js +0 -0
  1476. /package/{dist/clis → clis}/twitter/likes.test.js +0 -0
  1477. /package/{dist/clis → clis}/twitter/notifications.js +0 -0
  1478. /package/{dist/clis → clis}/twitter/post.js +0 -0
  1479. /package/{dist/clis → clis}/twitter/post.test.js +0 -0
  1480. /package/{dist/clis → clis}/twitter/profile.js +0 -0
  1481. /package/{dist/clis → clis}/twitter/reply-dm.js +0 -0
  1482. /package/{dist/clis → clis}/twitter/reply.js +0 -0
  1483. /package/{dist/clis → clis}/twitter/reply.test.js +0 -0
  1484. /package/{dist/clis → clis}/twitter/search.js +0 -0
  1485. /package/{dist/clis → clis}/twitter/search.test.js +0 -0
  1486. /package/{dist/clis → clis}/twitter/shared.js +0 -0
  1487. /package/{dist/clis → clis}/twitter/thread.js +0 -0
  1488. /package/{dist/clis → clis}/twitter/timeline.js +0 -0
  1489. /package/{dist/clis → clis}/twitter/timeline.test.js +0 -0
  1490. /package/{dist/clis → clis}/twitter/trending.js +0 -0
  1491. /package/{dist/clis → clis}/twitter/unblock.js +0 -0
  1492. /package/{dist/clis → clis}/twitter/unbookmark.js +0 -0
  1493. /package/{dist/clis → clis}/twitter/unfollow.js +0 -0
  1494. /package/{dist/clis → clis}/v2ex/daily.js +0 -0
  1495. /package/{dist/clis → clis}/v2ex/hot.js +0 -0
  1496. /package/{dist/clis → clis}/v2ex/latest.js +0 -0
  1497. /package/{dist/clis → clis}/v2ex/me.js +0 -0
  1498. /package/{dist/clis → clis}/v2ex/member.js +0 -0
  1499. /package/{dist/clis → clis}/v2ex/node.js +0 -0
  1500. /package/{dist/clis → clis}/v2ex/nodes.js +0 -0
  1501. /package/{dist/clis → clis}/v2ex/notifications.js +0 -0
  1502. /package/{dist/clis → clis}/v2ex/replies.js +0 -0
  1503. /package/{dist/clis → clis}/v2ex/topic.js +0 -0
  1504. /package/{dist/clis → clis}/v2ex/user.js +0 -0
  1505. /package/{dist/clis → clis}/web/read.js +0 -0
  1506. /package/{dist/clis → clis}/weibo/comments.js +0 -0
  1507. /package/{dist/clis → clis}/weibo/hot.js +0 -0
  1508. /package/{dist/clis → clis}/weibo/me.js +0 -0
  1509. /package/{dist/clis → clis}/weibo/post.js +0 -0
  1510. /package/{dist/clis → clis}/weibo/search.js +0 -0
  1511. /package/{dist/clis → clis}/weibo/user.js +0 -0
  1512. /package/{dist/clis → clis}/weibo/utils.js +0 -0
  1513. /package/{dist/clis → clis}/weixin/download.js +0 -0
  1514. /package/{dist/clis → clis}/weread/book.js +0 -0
  1515. /package/{dist/clis → clis}/weread/commands.test.js +0 -0
  1516. /package/{dist/clis → clis}/weread/highlights.js +0 -0
  1517. /package/{dist/clis → clis}/weread/notebooks.js +0 -0
  1518. /package/{dist/clis → clis}/weread/notes.js +0 -0
  1519. /package/{dist/clis → clis}/weread/private-api-regression.test.js +0 -0
  1520. /package/{dist/clis → clis}/weread/ranking.js +0 -0
  1521. /package/{dist/clis → clis}/weread/search-regression.test.js +0 -0
  1522. /package/{dist/clis → clis}/weread/search.js +0 -0
  1523. /package/{dist/clis → clis}/weread/shelf.js +0 -0
  1524. /package/{dist/clis → clis}/weread/utils.js +0 -0
  1525. /package/{dist/clis → clis}/weread/utils.test.js +0 -0
  1526. /package/{dist/clis → clis}/wikipedia/random.js +0 -0
  1527. /package/{dist/clis → clis}/wikipedia/search.js +0 -0
  1528. /package/{dist/clis → clis}/wikipedia/summary.js +0 -0
  1529. /package/{dist/clis → clis}/wikipedia/trending.js +0 -0
  1530. /package/{dist/clis → clis}/wikipedia/utils.js +0 -0
  1531. /package/{dist/clis → clis}/xianyu/chat.js +0 -0
  1532. /package/{dist/clis → clis}/xianyu/chat.test.js +0 -0
  1533. /package/{dist/clis → clis}/xianyu/item.js +0 -0
  1534. /package/{dist/clis → clis}/xianyu/item.test.js +0 -0
  1535. /package/{dist/clis → clis}/xianyu/search.js +0 -0
  1536. /package/{dist/clis → clis}/xianyu/search.test.js +0 -0
  1537. /package/{dist/clis → clis}/xianyu/utils.js +0 -0
  1538. /package/{dist/clis → clis}/xiaoe/catalog.js +0 -0
  1539. /package/{dist/clis → clis}/xiaoe/content.js +0 -0
  1540. /package/{dist/clis → clis}/xiaoe/courses.js +0 -0
  1541. /package/{dist/clis → clis}/xiaoe/detail.js +0 -0
  1542. /package/{dist/clis → clis}/xiaoe/play-url.js +0 -0
  1543. /package/{dist/clis → clis}/xiaohongshu/comments.js +0 -0
  1544. /package/{dist/clis → clis}/xiaohongshu/comments.test.js +0 -0
  1545. /package/{dist/clis → clis}/xiaohongshu/creator-note-detail.js +0 -0
  1546. /package/{dist/clis → clis}/xiaohongshu/creator-note-detail.test.js +0 -0
  1547. /package/{dist/clis → clis}/xiaohongshu/creator-notes-summary.js +0 -0
  1548. /package/{dist/clis → clis}/xiaohongshu/creator-notes-summary.test.js +0 -0
  1549. /package/{dist/clis → clis}/xiaohongshu/creator-notes.js +0 -0
  1550. /package/{dist/clis → clis}/xiaohongshu/creator-notes.test.js +0 -0
  1551. /package/{dist/clis → clis}/xiaohongshu/creator-profile.js +0 -0
  1552. /package/{dist/clis → clis}/xiaohongshu/creator-stats.js +0 -0
  1553. /package/{dist/clis → clis}/xiaohongshu/download.js +0 -0
  1554. /package/{dist/clis → clis}/xiaohongshu/download.test.js +0 -0
  1555. /package/{dist/clis → clis}/xiaohongshu/feed.js +0 -0
  1556. /package/{dist/clis → clis}/xiaohongshu/note-helpers.js +0 -0
  1557. /package/{dist/clis → clis}/xiaohongshu/note.js +0 -0
  1558. /package/{dist/clis → clis}/xiaohongshu/note.test.js +0 -0
  1559. /package/{dist/clis → clis}/xiaohongshu/notifications.js +0 -0
  1560. /package/{dist/clis → clis}/xiaohongshu/publish.js +0 -0
  1561. /package/{dist/clis → clis}/xiaohongshu/publish.test.js +0 -0
  1562. /package/{dist/clis → clis}/xiaohongshu/search.js +0 -0
  1563. /package/{dist/clis → clis}/xiaohongshu/search.test.js +0 -0
  1564. /package/{dist/clis → clis}/xiaohongshu/user-helpers.js +0 -0
  1565. /package/{dist/clis → clis}/xiaohongshu/user-helpers.test.js +0 -0
  1566. /package/{dist/clis → clis}/xiaohongshu/user.js +0 -0
  1567. /package/{dist/clis → clis}/xiaoyuzhou/episode.js +0 -0
  1568. /package/{dist/clis → clis}/xiaoyuzhou/podcast-episodes.js +0 -0
  1569. /package/{dist/clis → clis}/xiaoyuzhou/podcast.js +0 -0
  1570. /package/{dist/clis → clis}/xiaoyuzhou/utils.js +0 -0
  1571. /package/{dist/clis → clis}/xiaoyuzhou/utils.test.js +0 -0
  1572. /package/{dist/clis → clis}/xueqiu/comments.js +0 -0
  1573. /package/{dist/clis → clis}/xueqiu/comments.test.js +0 -0
  1574. /package/{dist/clis → clis}/xueqiu/danjuan-utils.js +0 -0
  1575. /package/{dist/clis → clis}/xueqiu/danjuan-utils.test.js +0 -0
  1576. /package/{dist/clis → clis}/xueqiu/fund-holdings.js +0 -0
  1577. /package/{dist/clis → clis}/xueqiu/fund-snapshot.js +0 -0
  1578. /package/{dist/clis → clis}/yollomi/background.js +0 -0
  1579. /package/{dist/clis → clis}/yollomi/edit.js +0 -0
  1580. /package/{dist/clis → clis}/yollomi/face-swap.js +0 -0
  1581. /package/{dist/clis → clis}/yollomi/generate.js +0 -0
  1582. /package/{dist/clis → clis}/yollomi/models.js +0 -0
  1583. /package/{dist/clis → clis}/yollomi/object-remover.js +0 -0
  1584. /package/{dist/clis → clis}/yollomi/remove-bg.js +0 -0
  1585. /package/{dist/clis → clis}/yollomi/restore.js +0 -0
  1586. /package/{dist/clis → clis}/yollomi/try-on.js +0 -0
  1587. /package/{dist/clis → clis}/yollomi/upload.js +0 -0
  1588. /package/{dist/clis → clis}/yollomi/upscale.js +0 -0
  1589. /package/{dist/clis → clis}/yollomi/utils.js +0 -0
  1590. /package/{dist/clis → clis}/yollomi/video.js +0 -0
  1591. /package/{dist/clis → clis}/youtube/channel.js +0 -0
  1592. /package/{dist/clis → clis}/youtube/comments.js +0 -0
  1593. /package/{dist/clis → clis}/youtube/search.js +0 -0
  1594. /package/{dist/clis → clis}/youtube/transcript-group.js +0 -0
  1595. /package/{dist/clis → clis}/youtube/transcript-group.test.js +0 -0
  1596. /package/{dist/clis → clis}/youtube/transcript.js +0 -0
  1597. /package/{dist/clis → clis}/youtube/utils.js +0 -0
  1598. /package/{dist/clis → clis}/youtube/utils.test.js +0 -0
  1599. /package/{dist/clis → clis}/youtube/video.js +0 -0
  1600. /package/{dist/clis → clis}/yuanbao/ask.js +0 -0
  1601. /package/{dist/clis → clis}/yuanbao/ask.test.js +0 -0
  1602. /package/{dist/clis → clis}/yuanbao/new.js +0 -0
  1603. /package/{dist/clis → clis}/yuanbao/new.test.js +0 -0
  1604. /package/{dist/clis → clis}/yuanbao/shared.js +0 -0
  1605. /package/{dist/clis → clis}/zhihu/answer.js +0 -0
  1606. /package/{dist/clis → clis}/zhihu/answer.test.js +0 -0
  1607. /package/{dist/clis → clis}/zhihu/comment.js +0 -0
  1608. /package/{dist/clis → clis}/zhihu/comment.test.js +0 -0
  1609. /package/{dist/clis → clis}/zhihu/download.js +0 -0
  1610. /package/{dist/clis → clis}/zhihu/download.test.js +0 -0
  1611. /package/{dist/clis → clis}/zhihu/favorite.js +0 -0
  1612. /package/{dist/clis → clis}/zhihu/favorite.test.js +0 -0
  1613. /package/{dist/clis → clis}/zhihu/follow.js +0 -0
  1614. /package/{dist/clis → clis}/zhihu/follow.test.js +0 -0
  1615. /package/{dist/clis → clis}/zhihu/hot.js +0 -0
  1616. /package/{dist/clis → clis}/zhihu/like.js +0 -0
  1617. /package/{dist/clis → clis}/zhihu/like.test.js +0 -0
  1618. /package/{dist/clis → clis}/zhihu/question.js +0 -0
  1619. /package/{dist/clis → clis}/zhihu/question.test.js +0 -0
  1620. /package/{dist/clis → clis}/zhihu/search.js +0 -0
  1621. /package/{dist/clis → clis}/zhihu/target.js +0 -0
  1622. /package/{dist/clis → clis}/zhihu/target.test.js +0 -0
  1623. /package/{dist/clis → clis}/zhihu/write-shared.js +0 -0
  1624. /package/{dist/clis → clis}/zhihu/write-shared.test.js +0 -0
  1625. /package/{dist/clis → clis}/zsxq/dynamics.js +0 -0
  1626. /package/{dist/clis → clis}/zsxq/groups.js +0 -0
  1627. /package/{dist/clis → clis}/zsxq/search.js +0 -0
  1628. /package/{dist/clis → clis}/zsxq/search.test.js +0 -0
  1629. /package/{dist/clis → clis}/zsxq/topics.js +0 -0
  1630. /package/{dist/clis → clis}/zsxq/topics.test.js +0 -0
@@ -188,14 +188,34 @@ const FORBIDDEN_EXPR_PATTERNS = /\b(constructor|__proto__|prototype|globalThis|p
188
188
  /**
189
189
  * Deep-copy plain data to sever prototype chains, preventing sandbox escape
190
190
  * via `args.constructor.constructor('return process')()` etc.
191
+ *
192
+ * Uses a WeakMap cache keyed by object reference: when the same object
193
+ * (e.g. `args` or `data`) is passed repeatedly across loop iterations,
194
+ * the expensive JSON round-trip is performed only once. The WeakMap
195
+ * lets entries be GC'd when the source object is no longer referenced.
196
+ */
197
+ /**
198
+ * Cache serialized JSON strings (not parsed objects) by source reference.
199
+ * Caching the parsed object would be unsafe: the VM sandbox could mutate it,
200
+ * and the polluted version would leak to subsequent calls. By caching the
201
+ * string and returning a fresh JSON.parse() each time, every evaluation gets
202
+ * its own clean deep-copy while still avoiding redundant JSON.stringify()
203
+ * for the same unchanged source object across loop iterations.
191
204
  */
205
+ const _sanitizeCache = new WeakMap();
192
206
  function sanitizeContext(obj) {
193
207
  if (obj === null || obj === undefined)
194
208
  return obj;
195
209
  if (typeof obj !== 'object' && typeof obj !== 'function')
196
210
  return obj;
211
+ const objRef = obj;
212
+ const cached = _sanitizeCache.get(objRef);
213
+ if (cached !== undefined)
214
+ return JSON.parse(cached);
197
215
  try {
198
- return JSON.parse(JSON.stringify(obj));
216
+ const jsonStr = JSON.stringify(obj);
217
+ _sanitizeCache.set(objRef, jsonStr);
218
+ return JSON.parse(jsonStr);
199
219
  }
200
220
  catch {
201
221
  return {};
@@ -218,6 +238,51 @@ function getOrCompileScript(expr) {
218
238
  _vmCache.set(expr, script);
219
239
  return script;
220
240
  }
241
+ /**
242
+ * Reusable VM sandbox context.
243
+ *
244
+ * vm.createContext() is expensive (~0.3ms per call) because it creates a new
245
+ * V8 context with its own global object. In pipeline loops (map/filter over
246
+ * hundreds of items), this adds up to significant overhead.
247
+ *
248
+ * Instead, we create the context once and mutate the sandbox properties
249
+ * before each evaluation. This is safe because:
250
+ * 1. Sandbox properties are sanitized (deep-copied) before assignment
251
+ * 2. Scripts run with a 50ms timeout
252
+ * 3. codeGeneration is disabled (no eval/Function inside the sandbox)
253
+ */
254
+ let _reusableSandbox = null;
255
+ let _reusableContext = null;
256
+ function getReusableContext() {
257
+ if (_reusableSandbox && _reusableContext) {
258
+ return { sandbox: _reusableSandbox, context: _reusableContext };
259
+ }
260
+ _reusableSandbox = {
261
+ args: {},
262
+ item: {},
263
+ data: null,
264
+ index: 0,
265
+ encodeURIComponent,
266
+ decodeURIComponent,
267
+ JSON,
268
+ Math,
269
+ Number,
270
+ String,
271
+ Boolean,
272
+ Array,
273
+ Date,
274
+ };
275
+ _reusableContext = vm.createContext(_reusableSandbox, {
276
+ codeGeneration: { strings: false, wasm: false },
277
+ });
278
+ return { sandbox: _reusableSandbox, context: _reusableContext };
279
+ }
280
+ /** Properties that are part of the sandbox's initial shape and safe to keep. */
281
+ const SANDBOX_WHITELIST = new Set([
282
+ 'args', 'item', 'data', 'index',
283
+ 'encodeURIComponent', 'decodeURIComponent',
284
+ 'JSON', 'Math', 'Number', 'String', 'Boolean', 'Array', 'Date',
285
+ ]);
221
286
  function evalJsExpr(expr, ctx) {
222
287
  // Guard against absurdly long expressions that could indicate injection.
223
288
  if (expr.length > 2000)
@@ -225,33 +290,22 @@ function evalJsExpr(expr, ctx) {
225
290
  // Block obvious sandbox escape attempts.
226
291
  if (FORBIDDEN_EXPR_PATTERNS.test(expr))
227
292
  return undefined;
228
- const args = sanitizeContext(ctx.args ?? {});
229
- const item = sanitizeContext(ctx.item ?? {});
230
- const data = sanitizeContext(ctx.data);
231
- const index = ctx.index ?? 0;
232
293
  try {
233
294
  const script = getOrCompileScript(expr);
234
- const sandbox = vm.createContext({
235
- args,
236
- item,
237
- data,
238
- index,
239
- encodeURIComponent,
240
- decodeURIComponent,
241
- JSON,
242
- Math,
243
- Number,
244
- String,
245
- Boolean,
246
- Array,
247
- Date,
248
- }, {
249
- codeGeneration: {
250
- strings: false,
251
- wasm: false,
252
- },
253
- });
254
- return script.runInContext(sandbox, { timeout: 50 });
295
+ const { sandbox, context } = getReusableContext();
296
+ // Clean non-whitelisted properties that a previous script may have added.
297
+ // Without this, `${{ x = 42 }}` would leak `x` into subsequent evaluations.
298
+ for (const key of Object.keys(sandbox)) {
299
+ if (!SANDBOX_WHITELIST.has(key)) {
300
+ delete sandbox[key];
301
+ }
302
+ }
303
+ // Update mutable sandbox properties — sanitizeContext severs prototype chains.
304
+ sandbox.args = sanitizeContext(ctx.args ?? {});
305
+ sandbox.item = sanitizeContext(ctx.item ?? {});
306
+ sandbox.data = sanitizeContext(ctx.data);
307
+ sandbox.index = ctx.index ?? 0;
308
+ return script.runInContext(context, { timeout: 50 });
255
309
  }
256
310
  catch {
257
311
  return undefined;
@@ -12,8 +12,9 @@ import * as path from 'node:path';
12
12
  import { execSync, execFileSync } from 'node:child_process';
13
13
  import { fileURLToPath } from 'node:url';
14
14
  import { PLUGINS_DIR } from './discovery.js';
15
- import { getErrorMessage } from './errors.js';
15
+ import { getErrorMessage, PluginError } from './errors.js';
16
16
  import { log } from './logger.js';
17
+ import { isRecord } from './utils.js';
17
18
  import { readPluginManifest, isMonorepo, getEnabledPlugins, checkCompatibility, } from './plugin-manifest.js';
18
19
  const isWindows = process.platform === 'win32';
19
20
  const LOCAL_PLUGIN_SOURCE_PREFIX = 'local:';
@@ -52,9 +53,7 @@ function toStoredPluginSource(source) {
52
53
  function toLocalPluginSource(pluginDir) {
53
54
  return toStoredPluginSource({ kind: 'local', path: pluginDir });
54
55
  }
55
- function isRecord(value) {
56
- return typeof value === 'object' && value !== null;
57
- }
56
+ // isRecord is imported from './utils.js'
58
57
  function normalizeLegacyMonorepo(value) {
59
58
  if (!isRecord(value))
60
59
  return undefined;
@@ -166,7 +165,7 @@ function createSiblingTempPath(dest, kind) {
166
165
  */
167
166
  function promoteDir(stagingDir, dest, fsOps = fs) {
168
167
  if (fsOps.existsSync(dest)) {
169
- throw new Error(`Destination already exists: ${dest}`);
168
+ throw new PluginError(`Destination already exists: ${dest}`);
170
169
  }
171
170
  fsOps.mkdirSync(path.dirname(dest), { recursive: true });
172
171
  const tempDest = createSiblingTempPath(dest, 'tmp');
@@ -195,7 +194,7 @@ function cloneRepoToTemp(cloneUrl) {
195
194
  });
196
195
  }
197
196
  catch (err) {
198
- throw new Error(`Failed to clone plugin: ${getErrorMessage(err)}`);
197
+ throw new PluginError(`Failed to clone plugin: ${getErrorMessage(err)}`, 'Check the repository URL and your network connection.');
199
198
  }
200
199
  return tmpCloneDir;
201
200
  }
@@ -227,6 +226,13 @@ function pathExistsSync(p) {
227
226
  return false;
228
227
  }
229
228
  }
229
+ function resolveRepoContainedPath(repoRoot, subPath) {
230
+ const resolved = path.resolve(repoRoot, subPath);
231
+ if (!resolved.startsWith(repoRoot + path.sep) && resolved !== repoRoot) {
232
+ throw new PluginError(`Plugin path "${subPath}" escapes repo root.`);
233
+ }
234
+ return resolved;
235
+ }
230
236
  function removePathSync(p) {
231
237
  try {
232
238
  const stat = fs.lstatSync(p);
@@ -499,7 +505,7 @@ function installDependencies(dir) {
499
505
  });
500
506
  }
501
507
  catch (err) {
502
- throw new Error(`npm install failed in ${dir}: ${getErrorMessage(err)}`);
508
+ throw new PluginError(`npm install failed in ${dir}: ${getErrorMessage(err)}`, 'Check your network connection and npm configuration.');
503
509
  }
504
510
  }
505
511
  function finalizePluginRuntime(pluginDir) {
@@ -528,7 +534,7 @@ function postInstallMonorepoLifecycle(repoDir, pluginDirs) {
528
534
  function ensureStandalonePluginReady(pluginDir) {
529
535
  const validation = validatePluginStructure(pluginDir);
530
536
  if (!validation.valid) {
531
- throw new Error(`Invalid plugin structure:\n- ${validation.errors.join('\n- ')}`);
537
+ throw new PluginError(`Invalid plugin structure:\n- ${validation.errors.join('\n- ')}`);
532
538
  }
533
539
  postInstallLifecycle(pluginDir);
534
540
  }
@@ -553,7 +559,7 @@ function publishMonorepoPlugins(repoDir, pluginsDir, plugins, publishRepo, write
553
559
  const commitHash = getCommitHash(repoDir);
554
560
  for (const plugin of plugins) {
555
561
  const linkPath = path.join(pluginsDir, plugin.name);
556
- const subDir = path.join(repoDir, plugin.subPath);
562
+ const subDir = resolveRepoContainedPath(repoDir, plugin.subPath);
557
563
  tx.track(beginReplaceSymlink(subDir, linkPath));
558
564
  }
559
565
  writeLock?.(commitHash);
@@ -606,7 +612,7 @@ function installSinglePlugin(cloneDir, cloneUrl, name, manifest) {
606
612
  const pluginName = manifest?.name ?? name;
607
613
  const targetDir = path.join(PLUGINS_DIR, pluginName);
608
614
  if (fs.existsSync(targetDir)) {
609
- throw new Error(`Plugin "${pluginName}" is already installed at ${targetDir}`);
615
+ throw new PluginError(`Plugin "${pluginName}" is already installed at ${targetDir}`, 'Use "opencli plugin uninstall" first, or pick a different name.');
610
616
  }
611
617
  ensureStandalonePluginReady(cloneDir);
612
618
  publishStandalonePlugin(cloneDir, targetDir, (commitHash) => {
@@ -628,24 +634,24 @@ function installSinglePlugin(cloneDir, cloneUrl, name, manifest) {
628
634
  */
629
635
  function installLocalPlugin(localPath, name) {
630
636
  if (!fs.existsSync(localPath)) {
631
- throw new Error(`Local plugin path does not exist: ${localPath}`);
637
+ throw new PluginError(`Local plugin path does not exist: ${localPath}`);
632
638
  }
633
639
  const stat = fs.statSync(localPath);
634
640
  if (!stat.isDirectory()) {
635
- throw new Error(`Local plugin path is not a directory: ${localPath}`);
641
+ throw new PluginError(`Local plugin path is not a directory: ${localPath}`);
636
642
  }
637
643
  const manifest = readPluginManifest(localPath);
638
644
  if (manifest?.opencli && !checkCompatibility(manifest.opencli)) {
639
- throw new Error(`Plugin requires opencli ${manifest.opencli}, but current version is incompatible.`);
645
+ throw new PluginError(`Plugin requires opencli ${manifest.opencli}, but current version is incompatible.`, 'Upgrade opencli to a compatible version.');
640
646
  }
641
647
  const pluginName = manifest?.name ?? name;
642
648
  const targetDir = path.join(PLUGINS_DIR, pluginName);
643
649
  if (fs.existsSync(targetDir)) {
644
- throw new Error(`Plugin "${pluginName}" is already installed at ${targetDir}`);
650
+ throw new PluginError(`Plugin "${pluginName}" is already installed at ${targetDir}`, 'Use "opencli plugin uninstall" first, or pick a different name.');
645
651
  }
646
652
  const validation = validatePluginStructure(localPath);
647
653
  if (!validation.valid) {
648
- throw new Error(`Invalid plugin structure:\n- ${validation.errors.join('\n- ')}`);
654
+ throw new PluginError(`Invalid plugin structure:\n- ${validation.errors.join('\n- ')}`);
649
655
  }
650
656
  fs.mkdirSync(PLUGINS_DIR, { recursive: true });
651
657
  const resolvedPath = path.resolve(localPath);
@@ -685,7 +691,7 @@ function installMonorepo(cloneDir, cloneUrl, repoName, manifest, subPlugin) {
685
691
  const repoRoot = repoAlreadyInstalled ? repoDir : cloneDir;
686
692
  const effectiveManifest = repoAlreadyInstalled ? readPluginManifest(repoDir) : manifest;
687
693
  if (!effectiveManifest || !isMonorepo(effectiveManifest)) {
688
- throw new Error(`Monorepo manifest missing or invalid at ${repoRoot}`);
694
+ throw new PluginError(`Monorepo manifest missing or invalid at ${repoRoot}`);
689
695
  }
690
696
  let pluginsToInstall = getEnabledPlugins(effectiveManifest);
691
697
  // If a specific sub-plugin was requested, filter to just that one
@@ -695,9 +701,9 @@ function installMonorepo(cloneDir, cloneUrl, repoName, manifest, subPlugin) {
695
701
  // Check if it exists but is disabled
696
702
  const disabled = effectiveManifest.plugins?.[subPlugin];
697
703
  if (disabled) {
698
- throw new Error(`Sub-plugin "${subPlugin}" is disabled in the manifest.`);
704
+ throw new PluginError(`Sub-plugin "${subPlugin}" is disabled in the manifest.`);
699
705
  }
700
- throw new Error(`Sub-plugin "${subPlugin}" not found in monorepo. Available: ${Object.keys(effectiveManifest.plugins ?? {}).join(', ')}`);
706
+ throw new PluginError(`Sub-plugin "${subPlugin}" not found in monorepo. Available: ${Object.keys(effectiveManifest.plugins ?? {}).join(', ')}`);
701
707
  }
702
708
  }
703
709
  const installedNames = [];
@@ -710,7 +716,14 @@ function installMonorepo(cloneDir, cloneUrl, repoName, manifest, subPlugin) {
710
716
  log.warn(`Skipping "${name}": requires opencli ${entry.opencli}`);
711
717
  continue;
712
718
  }
713
- const subDir = path.join(repoRoot, entry.path);
719
+ let subDir;
720
+ try {
721
+ subDir = resolveRepoContainedPath(repoRoot, entry.path);
722
+ }
723
+ catch {
724
+ log.warn(`Skipping "${name}": path "${entry.path}" escapes repo root.`);
725
+ continue;
726
+ }
714
727
  if (!fs.existsSync(subDir)) {
715
728
  log.warn(`Skipping "${name}": path "${entry.path}" not found in repo.`);
716
729
  continue;
@@ -732,10 +745,10 @@ function installMonorepo(cloneDir, cloneUrl, repoName, manifest, subPlugin) {
732
745
  }
733
746
  const publishPlugins = eligiblePlugins.map(({ name, entry }) => ({ name, subPath: entry.path }));
734
747
  if (repoAlreadyInstalled) {
735
- postInstallMonorepoLifecycle(repoDir, eligiblePlugins.map((p) => path.join(repoDir, p.entry.path)));
748
+ postInstallMonorepoLifecycle(repoDir, eligiblePlugins.map((p) => resolveRepoContainedPath(repoDir, p.entry.path)));
736
749
  }
737
750
  else {
738
- postInstallMonorepoLifecycle(cloneDir, eligiblePlugins.map((p) => path.join(cloneDir, p.entry.path)));
751
+ postInstallMonorepoLifecycle(cloneDir, eligiblePlugins.map((p) => resolveRepoContainedPath(cloneDir, p.entry.path)));
739
752
  }
740
753
  publishMonorepoPlugins(repoDir, PLUGINS_DIR, publishPlugins, repoAlreadyInstalled ? undefined : { stagingDir: cloneDir, parentDir: monoreposDir }, (commitHash) => {
741
754
  for (const { name, entry } of eligiblePlugins) {
@@ -768,7 +781,7 @@ function collectUpdatedMonorepoPlugins(monoName, lock, manifest, cloneUrl, tmpCl
768
781
  if (manifestEntry.opencli && !checkCompatibility(manifestEntry.opencli)) {
769
782
  throw new Error(`Sub-plugin "${pluginName}" requires opencli ${manifestEntry.opencli}`);
770
783
  }
771
- const subDir = path.join(tmpCloneDir, manifestEntry.path);
784
+ const subDir = resolveRepoContainedPath(tmpCloneDir, manifestEntry.path);
772
785
  const validation = validatePluginStructure(subDir);
773
786
  if (!validation.valid) {
774
787
  throw new Error(`Updated sub-plugin "${pluginName}" is invalid:\n- ${validation.errors.join('\n- ')}`);
@@ -883,7 +896,7 @@ export function updatePlugin(name) {
883
896
  }
884
897
  const updatedPlugins = collectUpdatedMonorepoPlugins(monoName, lock, manifest, cloneUrl, tmpCloneDir);
885
898
  if (updatedPlugins.length > 0) {
886
- postInstallMonorepoLifecycle(tmpCloneDir, updatedPlugins.map((plugin) => path.join(tmpCloneDir, plugin.manifestEntry.path)));
899
+ postInstallMonorepoLifecycle(tmpCloneDir, updatedPlugins.map((plugin) => resolveRepoContainedPath(tmpCloneDir, plugin.manifestEntry.path)));
887
900
  }
888
901
  publishMonorepoPlugins(monoDir, PLUGINS_DIR, updatedPlugins.map((plugin) => ({ name: plugin.name, subPath: plugin.manifestEntry.path })), { stagingDir: tmpCloneDir, parentDir: path.dirname(monoDir) }, (commitHash) => {
889
902
  updateMonorepoLockEntries(lock, updatedPlugins, cloneUrl, monoName, commitHash);
@@ -1279,6 +1279,47 @@ describe('updatePlugin transactional staging', () => {
1279
1279
  subPath: 'packages/moved-alpha',
1280
1280
  });
1281
1281
  });
1282
+ it('rejects monorepo updates whose manifest path escapes the repo root', () => {
1283
+ const oldSubDir = path.join(monorepoRepoDir, 'packages', 'old-alpha');
1284
+ fs.mkdirSync(oldSubDir, { recursive: true });
1285
+ fs.writeFileSync(path.join(oldSubDir, 'old.js'), 'cli({ site: "old", name: "old" })');
1286
+ fs.mkdirSync(PLUGINS_DIR, { recursive: true });
1287
+ fs.symlinkSync(oldSubDir, monorepoLink, 'dir');
1288
+ const lock = _readLockFile();
1289
+ lock[monorepoPluginName] = {
1290
+ source: {
1291
+ kind: 'monorepo',
1292
+ url: 'https://github.com/user/opencli-plugins-__test-transactional-mono-update__.git',
1293
+ repoName: monorepoName,
1294
+ subPath: 'packages/old-alpha',
1295
+ },
1296
+ commitHash: 'oldmonooldmonooldmonooldmonooldmonoold',
1297
+ installedAt: '2025-01-01T00:00:00.000Z',
1298
+ };
1299
+ _writeLockFile(lock);
1300
+ mockExecFileSync.mockImplementation((cmd, args) => {
1301
+ if (cmd === 'git' && Array.isArray(args) && args[0] === 'clone') {
1302
+ const cloneDir = String(args[4]);
1303
+ fs.mkdirSync(cloneDir, { recursive: true });
1304
+ fs.writeFileSync(path.join(cloneDir, 'opencli-plugin.json'), JSON.stringify({
1305
+ plugins: {
1306
+ [monorepoPluginName]: { path: '../outside-alpha' },
1307
+ },
1308
+ }));
1309
+ return '';
1310
+ }
1311
+ if (cmd === 'git' && Array.isArray(args) && args[0] === 'rev-parse' && args[1] === 'HEAD') {
1312
+ return '1234567890abcdef1234567890abcdef12345678\n';
1313
+ }
1314
+ return '';
1315
+ });
1316
+ expect(() => updatePlugin(monorepoPluginName)).toThrow('escapes repo root');
1317
+ expect(fs.realpathSync(monorepoLink)).toBe(fs.realpathSync(oldSubDir));
1318
+ expect(_readLockFile()[monorepoPluginName]?.source).toMatchObject({
1319
+ kind: 'monorepo',
1320
+ subPath: 'packages/old-alpha',
1321
+ });
1322
+ });
1282
1323
  it('rolls back the monorepo repo swap when relinking fails', () => {
1283
1324
  const oldSubDir = path.join(monorepoRepoDir, 'packages', 'old-alpha');
1284
1325
  fs.mkdirSync(oldSubDir, { recursive: true });
@@ -14,7 +14,7 @@
14
14
  import * as fs from 'node:fs';
15
15
  import * as path from 'node:path';
16
16
  import * as readline from 'node:readline';
17
- import chalk from 'chalk';
17
+ import { styleText } from 'node:util';
18
18
  import { sendCommand } from './browser/daemon-client.js';
19
19
  import { SEARCH_PARAMS, PAGINATION_PARAMS, FIELD_ROLES } from './constants.js';
20
20
  import { urlToPattern, findArrayPath, inferCapabilityName, inferStrategy, detectAuthFromContent, classifyQueryParams, isNoiseUrl, } from './analysis.js';
@@ -466,10 +466,10 @@ export async function recordSession(opts) {
466
466
  }
467
467
  })();
468
468
  const workspace = `record:${site}`;
469
- console.log(chalk.bold.cyan('\n opencli record'));
470
- console.log(chalk.dim(` Site: ${site} URL: ${opts.url}`));
471
- console.log(chalk.dim(` Timeout: ${timeoutMs / 1000}s Poll: ${pollMs}ms`));
472
- console.log(chalk.dim(' Navigating…'));
469
+ console.log(styleText(['bold', 'cyan'], '\n opencli record'));
470
+ console.log(styleText('dim', ` Site: ${site} URL: ${opts.url}`));
471
+ console.log(styleText('dim', ` Timeout: ${timeoutMs / 1000}s Poll: ${pollMs}ms`));
472
+ console.log(styleText('dim', ' Navigating…'));
473
473
  const factory = new opts.BrowserFactory();
474
474
  const page = await factory.connect({ timeout: 30, workspace });
475
475
  try {
@@ -481,8 +481,8 @@ export async function recordSession(opts) {
481
481
  if (tab.page)
482
482
  await injectIntoPage(workspace, tab.page, injectedPages);
483
483
  }
484
- console.log(chalk.bold('\n Recording. Use the page in the browser automation window.'));
485
- console.log(chalk.dim(` Will auto-stop after ${timeoutMs / 1000}s, or press Enter to stop now.\n`));
484
+ console.log(styleText('bold', '\n Recording. Use the page in the browser automation window.'));
485
+ console.log(styleText('dim', ` Will auto-stop after ${timeoutMs / 1000}s, or press Enter to stop now.\n`));
486
486
  // Race: Enter key vs timeout
487
487
  let stopped = false;
488
488
  const stop = () => { stopped = true; };
@@ -509,7 +509,7 @@ export async function recordSession(opts) {
509
509
  if (Array.isArray(batch) && batch.length > 0) {
510
510
  for (const r of batch)
511
511
  allRequests.push(r);
512
- console.log(chalk.dim(` [page:${page.slice(0, 8)}] +${batch.length} captured — total: ${allRequests.length}`));
512
+ console.log(styleText('dim', ` [page:${page.slice(0, 8)}] +${batch.length} captured — total: ${allRequests.length}`));
513
513
  }
514
514
  }
515
515
  }
@@ -531,7 +531,7 @@ export async function recordSession(opts) {
531
531
  }
532
532
  catch { }
533
533
  }
534
- console.log(chalk.dim(`\n Stopped. Analyzing ${allRequests.length} captured requests…`));
534
+ console.log(styleText('dim', `\n Stopped. Analyzing ${allRequests.length} captured requests…`));
535
535
  const result = analyzeAndWrite(site, opts.url, allRequests, opts.outDir);
536
536
  await factory.close().catch(() => { });
537
537
  return result;
@@ -558,7 +558,7 @@ async function injectIntoPage(workspace, page, injectedPages) {
558
558
  await execOnPage(workspace, page, generateFullCaptureInterceptorJs());
559
559
  if (!injectedPages.has(page)) {
560
560
  injectedPages.add(page);
561
- console.log(chalk.green(` ✓ Interceptor injected into page:${page.slice(0, 8)}`));
561
+ console.log(styleText('green', ` ✓ Interceptor injected into page:${page.slice(0, 8)}`));
562
562
  }
563
563
  }
564
564
  catch {
@@ -588,7 +588,7 @@ function analyzeAndWrite(site, pageUrl, requests, outDir) {
588
588
  const targetDir = outDir ?? path.join('.opencli', 'record', site);
589
589
  fs.mkdirSync(targetDir, { recursive: true });
590
590
  if (requests.length === 0) {
591
- console.log(chalk.yellow(' No API requests captured.'));
591
+ console.log(styleText('yellow', ' No API requests captured.'));
592
592
  return { site, url: pageUrl, requests: [], outDir: targetDir, candidateCount: 0, candidates: [] };
593
593
  }
594
594
  // Score and rank deduplicated requests for console output and candidate generation.
@@ -599,18 +599,18 @@ function analyzeAndWrite(site, pageUrl, requests, outDir) {
599
599
  // Generate candidate YAMLs (top 5)
600
600
  const candidates = [];
601
601
  const usedNames = new Set();
602
- console.log(chalk.bold('\n Captured endpoints:\n'));
602
+ console.log(styleText('bold', '\n Captured endpoints:\n'));
603
603
  for (const entry of analysis.candidates.sort((a, b) => (b.arrayResult?.items.length ?? 0) - (a.arrayResult?.items.length ?? 0)).slice(0, 8)) {
604
604
  const itemCount = entry.arrayResult?.items.length ?? 0;
605
605
  const strategy = entry.kind === 'write'
606
606
  ? 'cookie'
607
607
  : inferStrategy(detectAuthFromContent(entry.req.url, entry.req.responseBody));
608
- const marker = entry.kind === 'write' ? chalk.magenta('✎') : itemCount > 5 ? chalk.green('★') : chalk.dim('·');
609
- console.log(` ${marker} ${chalk.white(urlToPattern(entry.req.url))}` +
610
- chalk.dim(` [${strategy}]`) +
608
+ const marker = entry.kind === 'write' ? styleText('magenta', '✎') : itemCount > 5 ? styleText('green', '★') : styleText('dim', '·');
609
+ console.log(` ${marker} ${styleText('white', urlToPattern(entry.req.url))}` +
610
+ styleText('dim', ` [${strategy}]`) +
611
611
  (entry.kind === 'write'
612
- ? chalk.magenta(' ← write')
613
- : itemCount ? chalk.cyan(` ← ${itemCount} items`) : ''));
612
+ ? styleText('magenta', ' ← write')
613
+ : itemCount ? styleText('cyan', ` ← ${itemCount} items`) : ''));
614
614
  }
615
615
  console.log();
616
616
  const topCandidates = generateRecordedCandidates(site, pageUrl, analysisRequests);
@@ -623,12 +623,12 @@ function analyzeAndWrite(site, pageUrl, requests, outDir) {
623
623
  const filePath = path.join(candidatesDir, `${entry.name}.json`);
624
624
  fs.writeFileSync(filePath, JSON.stringify(entry.yaml, null, 2));
625
625
  candidates.push({ name: entry.name, path: filePath, strategy: entry.strategy });
626
- console.log(chalk.green(` ✓ Generated: ${chalk.bold(entry.name)}.json [${entry.strategy}]`));
627
- console.log(chalk.dim(` → ${filePath}`));
626
+ console.log(styleText('green', ` ✓ Generated: ${styleText('bold', entry.name)}.json [${entry.strategy}]`));
627
+ console.log(styleText('dim', ` → ${filePath}`));
628
628
  }
629
629
  if (candidates.length === 0) {
630
- console.log(chalk.yellow(' No candidates found.'));
631
- console.log(chalk.dim(' Tip: make sure you triggered JSON API calls (open lists, search, scroll).'));
630
+ console.log(styleText('yellow', ' No candidates found.'));
631
+ console.log(styleText('dim', ' Tip: make sure you triggered JSON API calls (open lists, search, scroll).'));
632
632
  }
633
633
  return {
634
634
  site,
@@ -641,7 +641,7 @@ function analyzeAndWrite(site, pageUrl, requests, outDir) {
641
641
  }
642
642
  export function renderRecordSummary(result) {
643
643
  const lines = [
644
- `\n opencli record: ${result.candidateCount > 0 ? chalk.green('OK') : chalk.yellow('no candidates')}`,
644
+ `\n opencli record: ${result.candidateCount > 0 ? styleText('green', 'OK') : styleText('yellow', 'no candidates')}`,
645
645
  ` Site: ${result.site}`,
646
646
  ` Captured: ${result.requests.length} requests`,
647
647
  ` Candidates: ${result.candidateCount}`,
@@ -651,7 +651,7 @@ export function renderRecordSummary(result) {
651
651
  }
652
652
  if (result.candidateCount > 0) {
653
653
  lines.push('');
654
- lines.push(chalk.dim(` Copy a candidate to clis/${result.site}/ and run: npm run build`));
654
+ lines.push(styleText('dim', ` Copy a candidate to clis/${result.site}/ and run: npm run build`));
655
655
  }
656
656
  return lines.join('\n');
657
657
  }
@@ -47,14 +47,19 @@ export interface CliCommand {
47
47
  /** Preferred replacement command, if any. */
48
48
  replacedBy?: string;
49
49
  /**
50
- * Control pre-navigation for cookie/header context before command execution.
50
+ * Control pre-navigation and browser-session requirement.
51
51
  *
52
- * Browser adapters using COOKIE/HEADER strategy need the page to be on the
53
- * target domain so that `fetch(url, { credentials: 'include' })` carries cookies.
52
+ * After normalizeCommand() expands strategy, this field carries the
53
+ * resolved runtime intent:
54
54
  *
55
- * - `undefined` / `true`: navigate to `https://${domain}` (default)
56
- * - `false`: skip adapter handles its own navigation (e.g. boss common.ts)
57
- * - `string`: navigate to this specific URL instead of the domain root
55
+ * - `undefined`: no pre-navigation, browser session decided by pipeline steps
56
+ * - `false`: explicitly skip pre-navigation (adapter handles its own navigation)
57
+ * - `true`: needs authenticated browser context but no specific pre-nav URL
58
+ * (e.g. INTERCEPT/UI adapters, or COOKIE without domain)
59
+ * - `string`: pre-navigate to this URL before running the adapter
60
+ * (e.g. `'https://x.com'` for COOKIE strategy with domain)
61
+ *
62
+ * Adapter authors can set this explicitly to override the strategy-based default.
58
63
  */
59
64
  navigateBefore?: boolean | string;
60
65
  /** Override the default CLI output format when the user does not pass -f/--format. */
@@ -11,17 +11,14 @@ export var Strategy;
11
11
  })(Strategy || (Strategy = {}));
12
12
  const _registry = globalThis.__opencli_registry__ ??= new Map();
13
13
  export function cli(opts) {
14
- const strategy = opts.strategy ?? (opts.browser === false ? Strategy.PUBLIC : Strategy.COOKIE);
15
- const browser = opts.browser ?? (strategy !== Strategy.PUBLIC);
16
- const aliases = normalizeAliases(opts.aliases, opts.name);
17
14
  const cmd = {
18
15
  site: opts.site,
19
16
  name: opts.name,
20
- aliases,
17
+ aliases: opts.aliases,
21
18
  description: opts.description ?? '',
22
19
  domain: opts.domain,
23
- strategy,
24
- browser,
20
+ strategy: opts.strategy,
21
+ browser: opts.browser,
25
22
  args: opts.args ?? [],
26
23
  columns: opts.columns,
27
24
  func: opts.func,
@@ -35,7 +32,7 @@ export function cli(opts) {
35
32
  defaultFormat: opts.defaultFormat,
36
33
  };
37
34
  registerCommand(cmd);
38
- return cmd;
35
+ return _registry.get(fullName(cmd));
39
36
  }
40
37
  export function getRegistry() {
41
38
  return _registry;
@@ -46,8 +43,39 @@ export function fullName(cmd) {
46
43
  export function strategyLabel(cmd) {
47
44
  return cmd.strategy ?? Strategy.PUBLIC;
48
45
  }
46
+ /**
47
+ * Normalize a command's runtime fields. This is the single place where
48
+ * `strategy` is decoded into the concrete fields that the execution path
49
+ * reads (`browser`, `navigateBefore`). After normalization, execution code
50
+ * (resolvePreNav, shouldUseBrowserSession) never reads `cmd.strategy`.
51
+ *
52
+ * `strategy` itself is preserved as metadata for `opencli list`, cascade
53
+ * probe, adapter generation, and human documentation.
54
+ *
55
+ * Override priority (highest wins):
56
+ * 1. Explicit field on the command (`browser: false`, `navigateBefore: false`)
57
+ * 2. Derived from strategy + domain (the defaults below)
58
+ */
59
+ function normalizeCommand(cmd) {
60
+ const strategy = cmd.strategy ?? (cmd.browser === false ? Strategy.PUBLIC : Strategy.COOKIE);
61
+ const browser = cmd.browser ?? (strategy !== Strategy.PUBLIC);
62
+ let navigateBefore = cmd.navigateBefore;
63
+ if (navigateBefore === undefined) {
64
+ if ((strategy === Strategy.COOKIE || strategy === Strategy.HEADER) && cmd.domain) {
65
+ navigateBefore = `https://${cmd.domain}`;
66
+ }
67
+ else if (strategy !== Strategy.PUBLIC) {
68
+ // Non-PUBLIC without domain: needs authenticated browser context
69
+ // but no specific pre-navigation URL. `true` signals this to
70
+ // shouldUseBrowserSession without triggering resolvePreNav.
71
+ navigateBefore = true;
72
+ }
73
+ }
74
+ return { ...cmd, strategy, browser, navigateBefore };
75
+ }
49
76
  export function registerCommand(cmd) {
50
- const canonicalKey = fullName(cmd);
77
+ const normalized = normalizeCommand(cmd);
78
+ const canonicalKey = fullName(normalized);
51
79
  const existing = _registry.get(canonicalKey);
52
80
  if (existing) {
53
81
  for (const [key, value] of _registry.entries()) {
@@ -55,11 +83,11 @@ export function registerCommand(cmd) {
55
83
  _registry.delete(key);
56
84
  }
57
85
  }
58
- const aliases = normalizeAliases(cmd.aliases, cmd.name);
59
- cmd.aliases = aliases.length > 0 ? aliases : undefined;
60
- _registry.set(canonicalKey, cmd);
86
+ const aliases = normalizeAliases(normalized.aliases, normalized.name);
87
+ normalized.aliases = aliases.length > 0 ? aliases : undefined;
88
+ _registry.set(canonicalKey, normalized);
61
89
  for (const alias of aliases) {
62
- _registry.set(`${cmd.site}/${alias}`, cmd);
90
+ _registry.set(`${normalized.site}/${alias}`, normalized);
63
91
  }
64
92
  }
65
93
  function normalizeAliases(aliases, commandName) {