publishport-opencli 1.0.20 → 1.0.21

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 (1041) hide show
  1. package/clis/12306/me.js +2 -2
  2. package/clis/12306/orders.js +3 -3
  3. package/clis/12306/passengers.js +3 -3
  4. package/clis/12306/price.js +1 -1
  5. package/clis/12306/stations.js +1 -1
  6. package/clis/12306/train.js +1 -1
  7. package/clis/12306/trains.js +1 -1
  8. package/clis/12306/utils.js +1 -1
  9. package/clis/1688/download.js +1 -1
  10. package/clis/1688/item.js +4 -4
  11. package/clis/1688/search.js +4 -4
  12. package/clis/1688/store.js +4 -4
  13. package/clis/1point3acres/forum.js +1 -1
  14. package/clis/1point3acres/forums.js +1 -1
  15. package/clis/1point3acres/notifications.js +1 -1
  16. package/clis/1point3acres/search.js +1 -1
  17. package/clis/1point3acres/thread.js +2 -2
  18. package/clis/1point3acres/user.js +1 -1
  19. package/clis/1point3acres/utils.js +2 -2
  20. package/clis/36kr/article.js +2 -2
  21. package/clis/36kr/hot.js +2 -2
  22. package/clis/36kr/news.js +1 -1
  23. package/clis/36kr/search.js +2 -2
  24. package/clis/51job/company.js +2 -2
  25. package/clis/51job/detail.js +2 -2
  26. package/clis/51job/hot.js +1 -1
  27. package/clis/51job/search.js +1 -1
  28. package/clis/51job/utils.js +7 -7
  29. package/clis/_atlassian/shared.js +9 -9
  30. package/clis/_shared/article/auth.js +4 -4
  31. package/clis/_shared/article/douban-md2draft.js +4 -4
  32. package/clis/_shared/article/format.js +1 -1
  33. package/clis/_shared/article/images.js +7 -7
  34. package/clis/_shared/article/login.js +1 -1
  35. package/clis/_shared/article/publish.js +11 -11
  36. package/clis/_shared/common.js +1 -1
  37. package/clis/_shared/content-guard.js +1 -1
  38. package/clis/_shared/desktop-commands.js +1 -1
  39. package/clis/_shared/file-inject.js +12 -12
  40. package/clis/_shared/self-hosted-sites.js +2 -2
  41. package/clis/_shared/site-auth.js +1 -1
  42. package/clis/_shared/token-auth.js +2 -2
  43. package/clis/_shared/video-publish.js +9 -9
  44. package/clis/amazon/offer.js +3 -3
  45. package/clis/amazon/product.js +5 -5
  46. package/clis/amazon/shared.js +6 -6
  47. package/clis/antigravity/_actions.js +13 -13
  48. package/clis/antigravity/audit-extras.js +10 -10
  49. package/clis/antigravity/delete.js +1 -1
  50. package/clis/antigravity/model.js +6 -6
  51. package/clis/antigravity/new.js +2 -2
  52. package/clis/antigravity/read.js +2 -2
  53. package/clis/antigravity/rename.js +1 -1
  54. package/clis/antigravity/send.js +3 -3
  55. package/clis/antigravity/serve.js +17 -17
  56. package/clis/antigravity/storage.js +6 -6
  57. package/clis/antigravity/watch.js +2 -2
  58. package/clis/apple-podcasts/episodes.js +1 -1
  59. package/clis/apple-podcasts/top.js +1 -1
  60. package/clis/apple-podcasts/utils.js +1 -1
  61. package/clis/archive/item.js +1 -1
  62. package/clis/archive/search.js +1 -1
  63. package/clis/archive/snapshots.js +1 -1
  64. package/clis/archive/wayback.js +1 -1
  65. package/clis/arxiv/author.js +1 -1
  66. package/clis/arxiv/utils.js +1 -1
  67. package/clis/autohome/brand.js +1 -1
  68. package/clis/autohome/score.js +1 -1
  69. package/clis/autohome/utils.js +1 -1
  70. package/clis/baijiahao/article.js +1 -1
  71. package/clis/baijiahao/lists.js +1 -1
  72. package/clis/baijiahao/login.js +1 -1
  73. package/clis/baijiahao/publish.js +9 -9
  74. package/clis/baijiahao/stats.js +1 -1
  75. package/clis/baijiahao/whoami.js +1 -1
  76. package/clis/band/bands.js +2 -2
  77. package/clis/band/mentions.js +2 -2
  78. package/clis/band/post.js +4 -4
  79. package/clis/band/posts.js +3 -3
  80. package/clis/barchart/flow.js +3 -3
  81. package/clis/barchart/greeks.js +2 -2
  82. package/clis/barchart/quote.js +3 -3
  83. package/clis/bbc/news.js +1 -1
  84. package/clis/bbc/topic.js +1 -1
  85. package/clis/bbc/utils.js +1 -1
  86. package/clis/bilibili/article.js +1 -1
  87. package/clis/bilibili/categories.js +1 -1
  88. package/clis/bilibili/coin.js +1 -1
  89. package/clis/bilibili/comment-del.js +1 -1
  90. package/clis/bilibili/comment-like.js +1 -1
  91. package/clis/bilibili/comment.js +1 -1
  92. package/clis/bilibili/comments.js +1 -1
  93. package/clis/bilibili/dm-list.js +1 -1
  94. package/clis/bilibili/dm-read.js +1 -1
  95. package/clis/bilibili/dm-send.js +1 -1
  96. package/clis/bilibili/download.js +2 -2
  97. package/clis/bilibili/drafts.js +1 -1
  98. package/clis/bilibili/dynamic-post.js +3 -3
  99. package/clis/bilibili/favorite-add.js +1 -1
  100. package/clis/bilibili/favorite.js +1 -1
  101. package/clis/bilibili/feed.js +2 -2
  102. package/clis/bilibili/follow.js +1 -1
  103. package/clis/bilibili/following.js +1 -1
  104. package/clis/bilibili/like.js +1 -1
  105. package/clis/bilibili/partitions.js +1 -1
  106. package/clis/bilibili/stats.js +1 -1
  107. package/clis/bilibili/subtitle.js +3 -3
  108. package/clis/bilibili/summary.js +1 -1
  109. package/clis/bilibili/topics.js +1 -1
  110. package/clis/bilibili/unfollow.js +1 -1
  111. package/clis/bilibili/upload.js +1 -1
  112. package/clis/bilibili/utils.js +10 -10
  113. package/clis/bilibili/video-drafts.js +1 -1
  114. package/clis/bilibili/video.js +1 -1
  115. package/clis/bloomberg/businessweek.js +4 -4
  116. package/clis/bloomberg/news.js +2 -2
  117. package/clis/bloomberg/utils.js +13 -13
  118. package/clis/bluesky/post.js +1 -1
  119. package/clis/bluesky/shared.js +11 -11
  120. package/clis/bluesky/whoami.js +1 -1
  121. package/clis/booking/search.js +2 -2
  122. package/clis/boss/accept.js +1 -1
  123. package/clis/boss/applied.js +1 -1
  124. package/clis/boss/auth.js +1 -1
  125. package/clis/boss/batchgreet.js +1 -1
  126. package/clis/boss/bossinfo.js +1 -1
  127. package/clis/boss/chatlist.js +1 -1
  128. package/clis/boss/chatmsg.js +1 -1
  129. package/clis/boss/cities.js +1 -1
  130. package/clis/boss/detail.js +1 -1
  131. package/clis/boss/exchange.js +1 -1
  132. package/clis/boss/greet.js +1 -1
  133. package/clis/boss/interviews.js +1 -1
  134. package/clis/boss/invite.js +1 -1
  135. package/clis/boss/joblist.js +1 -1
  136. package/clis/boss/mark.js +1 -1
  137. package/clis/boss/me.js +2 -2
  138. package/clis/boss/recommend.js +1 -1
  139. package/clis/boss/resumedelete.js +1 -1
  140. package/clis/boss/resumelist.js +1 -1
  141. package/clis/boss/resumeupload.js +11 -11
  142. package/clis/boss/search.js +1 -1
  143. package/clis/boss/send.js +1 -1
  144. package/clis/boss/sendresume.js +1 -1
  145. package/clis/boss/stats.js +1 -1
  146. package/clis/boss/unread.js +1 -1
  147. package/clis/boss/utils.js +13 -13
  148. package/clis/chaoxing/assignments.js +1 -1
  149. package/clis/chaoxing/exams.js +1 -1
  150. package/clis/chaoxing/utils.js +9 -9
  151. package/clis/chatgpt/ask.js +1 -1
  152. package/clis/chatgpt/auth.js +2 -2
  153. package/clis/chatgpt/detail.js +1 -1
  154. package/clis/chatgpt/image.js +1 -1
  155. package/clis/chatgpt/read.js +1 -1
  156. package/clis/chatgpt/send.js +1 -1
  157. package/clis/chatgpt/utils.js +59 -59
  158. package/clis/chatgpt-app/ask.js +1 -1
  159. package/clis/chatgpt-app/send.js +1 -1
  160. package/clis/chatwise/model.js +6 -6
  161. package/clis/chess/analyze.js +1 -1
  162. package/clis/chess/game.js +1 -1
  163. package/clis/chess/games.js +1 -1
  164. package/clis/chess/stats.js +1 -1
  165. package/clis/chess/utils.js +1 -1
  166. package/clis/claude/ask.js +2 -2
  167. package/clis/claude/detail.js +1 -1
  168. package/clis/claude/new.js +1 -1
  169. package/clis/claude/read.js +1 -1
  170. package/clis/claude/send.js +1 -1
  171. package/clis/claude/utils.js +23 -23
  172. package/clis/cnblogs/article.js +1 -1
  173. package/clis/cnblogs/login.js +1 -1
  174. package/clis/cnblogs/stats.js +7 -7
  175. package/clis/cnblogs/whoami.js +1 -1
  176. package/clis/codex/_actions.js +3 -3
  177. package/clis/codex/archive.js +1 -1
  178. package/clis/codex/ask.js +6 -6
  179. package/clis/codex/model.js +8 -8
  180. package/clis/codex/pin.js +1 -1
  181. package/clis/codex/rename.js +4 -4
  182. package/clis/codex/send.js +3 -3
  183. package/clis/codex/sidebar.js +1 -1
  184. package/clis/coingecko/categories.js +1 -1
  185. package/clis/coingecko/coin.js +1 -1
  186. package/clis/coingecko/derivatives.js +1 -1
  187. package/clis/coingecko/exchanges.js +1 -1
  188. package/clis/coingecko/global.js +1 -1
  189. package/clis/coingecko/trending.js +1 -1
  190. package/clis/confluence/search.js +1 -1
  191. package/clis/coupang/product.js +3 -3
  192. package/clis/coupang/utils.js +1 -1
  193. package/clis/crates/crate.js +1 -1
  194. package/clis/crates/search.js +1 -1
  195. package/clis/crates/utils.js +1 -1
  196. package/clis/csdn/article.js +13 -13
  197. package/clis/csdn/columns.js +1 -1
  198. package/clis/csdn/login.js +1 -1
  199. package/clis/csdn/stats.js +4 -4
  200. package/clis/csdn/whoami.js +1 -1
  201. package/clis/cto51/article.js +1 -1
  202. package/clis/cto51/whoami.js +1 -1
  203. package/clis/ctrip/flight.js +2 -2
  204. package/clis/ctrip/hotel-search.js +3 -3
  205. package/clis/ctrip/hotel-suggest.js +1 -1
  206. package/clis/ctrip/search.js +1 -1
  207. package/clis/ctrip/utils.js +6 -6
  208. package/clis/cursor/ask.js +5 -5
  209. package/clis/cursor/composer.js +2 -2
  210. package/clis/cursor/model.js +4 -4
  211. package/clis/cursor/send.js +2 -2
  212. package/clis/dblp/author.js +1 -1
  213. package/clis/dblp/paper.js +1 -1
  214. package/clis/dblp/search.js +1 -1
  215. package/clis/dblp/utils.js +1 -1
  216. package/clis/dblp/venue.js +1 -1
  217. package/clis/deepseek/ask.js +1 -1
  218. package/clis/deepseek/auth.js +2 -2
  219. package/clis/deepseek/detail.js +1 -1
  220. package/clis/deepseek/new.js +1 -1
  221. package/clis/deepseek/read.js +1 -1
  222. package/clis/deepseek/send.js +7 -7
  223. package/clis/deepseek/utils.js +25 -25
  224. package/clis/defillama/protocol.js +1 -1
  225. package/clis/defillama/protocols.js +1 -1
  226. package/clis/defillama/utils.js +1 -1
  227. package/clis/devto/auth.js +2 -2
  228. package/clis/devto/latest.js +1 -1
  229. package/clis/devto/publish.js +5 -5
  230. package/clis/devto/read.js +2 -2
  231. package/clis/devto/stats.js +3 -3
  232. package/clis/dianping/auth.js +2 -2
  233. package/clis/dianping/cityResolver.js +2 -2
  234. package/clis/dianping/search.js +1 -1
  235. package/clis/dianping/shop.js +1 -1
  236. package/clis/dianping/utils.js +1 -1
  237. package/clis/discord-app/delete.js +3 -3
  238. package/clis/discord-app/read.js +1 -1
  239. package/clis/discord-app/thread-read.js +1 -1
  240. package/clis/discord-web/auth.js +2 -2
  241. package/clis/discord-web/send.js +5 -5
  242. package/clis/dockerhub/image.js +1 -1
  243. package/clis/dockerhub/search.js +1 -1
  244. package/clis/dockerhub/utils.js +1 -1
  245. package/clis/dongchedi/koubei.js +1 -1
  246. package/clis/dongchedi/models.js +1 -1
  247. package/clis/dongchedi/score.js +1 -1
  248. package/clis/dongchedi/search.js +1 -1
  249. package/clis/dongchedi/series.js +1 -1
  250. package/clis/dongchedi/specs.js +1 -1
  251. package/clis/dongchedi/utils.js +1 -1
  252. package/clis/douban/article.js +3 -3
  253. package/clis/douban/auth.js +2 -2
  254. package/clis/douban/download.js +1 -1
  255. package/clis/douban/utils.js +23 -23
  256. package/clis/doubao/auth.js +3 -3
  257. package/clis/doubao/utils.js +39 -39
  258. package/clis/doubao-app/ask.js +1 -1
  259. package/clis/doubao-app/utils.js +4 -4
  260. package/clis/douyin/_shared/browser-fetch.js +7 -7
  261. package/clis/douyin/_shared/draft-cache.js +1 -1
  262. package/clis/douyin/_shared/imagex-upload.js +1 -1
  263. package/clis/douyin/_shared/sts2.js +1 -1
  264. package/clis/douyin/_shared/text-extra.js +1 -1
  265. package/clis/douyin/_shared/tos-upload.js +4 -4
  266. package/clis/douyin/_shared/transcode.js +1 -1
  267. package/clis/douyin/_shared/vod-upload.js +4 -4
  268. package/clis/douyin/draft.js +18 -18
  269. package/clis/douyin/drafts.js +1 -1
  270. package/clis/douyin/publish-image.js +12 -12
  271. package/clis/douyin/publish.js +9 -9
  272. package/clis/douyin/search.js +3 -3
  273. package/clis/douyin/videos.js +1 -1
  274. package/clis/eastmoney/_secid.js +1 -1
  275. package/clis/eastmoney/announcement.js +1 -1
  276. package/clis/eastmoney/article.js +1 -1
  277. package/clis/eastmoney/convertible.js +1 -1
  278. package/clis/eastmoney/etf.js +1 -1
  279. package/clis/eastmoney/holders.js +1 -1
  280. package/clis/eastmoney/index-board.js +1 -1
  281. package/clis/eastmoney/kline.js +1 -1
  282. package/clis/eastmoney/kuaixun.js +1 -1
  283. package/clis/eastmoney/longhu.js +1 -1
  284. package/clis/eastmoney/money-flow.js +1 -1
  285. package/clis/eastmoney/northbound.js +1 -1
  286. package/clis/eastmoney/quote.js +1 -1
  287. package/clis/eastmoney/rank.js +1 -1
  288. package/clis/eastmoney/sectors.js +1 -1
  289. package/clis/endoflife/product.js +1 -1
  290. package/clis/endoflife/utils.js +1 -1
  291. package/clis/facebook/comment.js +8 -8
  292. package/clis/facebook/feed.js +4 -4
  293. package/clis/facebook/like.js +5 -5
  294. package/clis/facebook/notifications.js +3 -3
  295. package/clis/facebook/post.js +11 -11
  296. package/clis/facebook/search.js +3 -3
  297. package/clis/flathub/app.js +1 -1
  298. package/clis/flathub/search.js +1 -1
  299. package/clis/flathub/utils.js +1 -1
  300. package/clis/flomo/memos.js +1 -1
  301. package/clis/gemini/deep-research-result.js +4 -4
  302. package/clis/gemini/deep-research.js +1 -1
  303. package/clis/gemini/detail.js +1 -1
  304. package/clis/gemini/history.js +1 -1
  305. package/clis/gemini/image.js +2 -2
  306. package/clis/gemini/status.js +1 -1
  307. package/clis/gemini/utils.js +43 -43
  308. package/clis/geogebra/hexagon.js +1 -1
  309. package/clis/geogebra/info.js +3 -3
  310. package/clis/geogebra/triangle.js +1 -1
  311. package/clis/geogebra/utils.js +11 -11
  312. package/clis/ghost/login.js +1 -1
  313. package/clis/ghost/shared.js +2 -2
  314. package/clis/gitee/auth.js +2 -2
  315. package/clis/github-trending/repos.js +1 -1
  316. package/clis/google/news.js +1 -1
  317. package/clis/google/search.js +2 -2
  318. package/clis/google/suggest.js +1 -1
  319. package/clis/google/trends.js +1 -1
  320. package/clis/google/utils.js +1 -1
  321. package/clis/goproxy/module.js +1 -1
  322. package/clis/goproxy/utils.js +1 -1
  323. package/clis/goproxy/versions.js +1 -1
  324. package/clis/gov-policy/recent.js +2 -2
  325. package/clis/gov-policy/search.js +2 -2
  326. package/clis/grok/ask.js +1 -1
  327. package/clis/grok/detail.js +1 -1
  328. package/clis/grok/image.js +8 -8
  329. package/clis/grok/pin.js +1 -1
  330. package/clis/grok/send.js +1 -1
  331. package/clis/grok/status.js +1 -1
  332. package/clis/grok/utils.js +21 -21
  333. package/clis/guazi/browse.js +1 -1
  334. package/clis/guazi/car.js +1 -1
  335. package/clis/guazi/utils.js +1 -1
  336. package/clis/hackernews/auth.js +2 -2
  337. package/clis/hackernews/comment.js +8 -8
  338. package/clis/hackernews/read.js +7 -7
  339. package/clis/hackernews/submit.js +7 -7
  340. package/clis/hashnode/auth.js +3 -3
  341. package/clis/hashnode/publish.js +14 -14
  342. package/clis/hf/auth.js +2 -2
  343. package/clis/hf/models.js +1 -1
  344. package/clis/hf/paper.js +1 -1
  345. package/clis/hf/spaces.js +1 -1
  346. package/clis/hf/top.js +1 -1
  347. package/clis/homebrew/cask.js +1 -1
  348. package/clis/homebrew/formula.js +1 -1
  349. package/clis/homebrew/popular.js +1 -1
  350. package/clis/homebrew/utils.js +1 -1
  351. package/clis/huodongxing/events.js +1 -1
  352. package/clis/hupu/detail.js +4 -4
  353. package/clis/hupu/hot.js +3 -3
  354. package/clis/hupu/reply.js +1 -1
  355. package/clis/hupu/search.js +1 -1
  356. package/clis/hupu/unlike.js +1 -1
  357. package/clis/hupu/utils.js +10 -10
  358. package/clis/imdb/person.js +2 -2
  359. package/clis/imdb/reviews.js +3 -3
  360. package/clis/imdb/search.js +2 -2
  361. package/clis/imdb/title.js +1 -1
  362. package/clis/imdb/top.js +1 -1
  363. package/clis/imdb/trending.js +1 -1
  364. package/clis/imdb/utils.js +13 -13
  365. package/clis/imooc/article.js +6 -6
  366. package/clis/imooc/login.js +1 -1
  367. package/clis/imooc/whoami.js +1 -1
  368. package/clis/indeed/job.js +2 -2
  369. package/clis/indeed/search.js +2 -2
  370. package/clis/indeed/utils.js +1 -1
  371. package/clis/infoq/article.js +2 -2
  372. package/clis/infoq/login.js +1 -1
  373. package/clis/infoq/whoami.js +1 -1
  374. package/clis/instagram/_shared/private-publish.js +4 -4
  375. package/clis/instagram/_shared/protocol-capture.js +9 -9
  376. package/clis/instagram/detail.js +3 -3
  377. package/clis/instagram/post.js +25 -25
  378. package/clis/instagram/reel.js +18 -18
  379. package/clis/instagram/story.js +4 -4
  380. package/clis/instagram/user.js +2 -2
  381. package/clis/jd/item.js +65 -65
  382. package/clis/jianshu/article.js +1 -1
  383. package/clis/jianshu/login.js +1 -1
  384. package/clis/jianshu/notebooks.js +1 -1
  385. package/clis/jianshu/whoami.js +1 -1
  386. package/clis/jianyu/search.js +6 -6
  387. package/clis/jianyu/shared/procurement-contract.js +1 -1
  388. package/clis/jike/api.js +6 -6
  389. package/clis/jike/auth.js +3 -3
  390. package/clis/jike/comment.js +1 -1
  391. package/clis/jike/create.js +6 -6
  392. package/clis/jike/feed.js +3 -3
  393. package/clis/jike/like.js +1 -1
  394. package/clis/jike/notifications.js +3 -3
  395. package/clis/jike/repost.js +13 -13
  396. package/clis/jike/search.js +3 -3
  397. package/clis/jimeng/auth.js +2 -2
  398. package/clis/jimeng/generate.js +10 -10
  399. package/clis/jira/shared.js +1 -1
  400. package/clis/juejin/article.js +4 -4
  401. package/clis/juejin/categories.js +1 -1
  402. package/clis/juejin/hot.js +1 -1
  403. package/clis/juejin/login.js +1 -1
  404. package/clis/juejin/recommend.js +1 -1
  405. package/clis/juejin/stats.js +3 -3
  406. package/clis/juejin/tags.js +1 -1
  407. package/clis/juejin/utils.js +1 -1
  408. package/clis/juejin/whoami.js +1 -1
  409. package/clis/ke/utils.js +4 -4
  410. package/clis/kimi/_utils.js +7 -7
  411. package/clis/kimi/audit-extras.js +14 -14
  412. package/clis/kimi/auth.js +3 -3
  413. package/clis/kimi/chat.js +15 -15
  414. package/clis/kimi/storage.js +5 -5
  415. package/clis/kimi/ui.js +13 -13
  416. package/clis/kimi/usage.js +3 -3
  417. package/clis/kuaishou/auth.js +1 -1
  418. package/clis/kuaishou/publish.js +6 -6
  419. package/clis/lesswrong/_helpers.js +5 -5
  420. package/clis/lesswrong/comments.js +5 -5
  421. package/clis/lichess/top.js +1 -1
  422. package/clis/lichess/user.js +1 -1
  423. package/clis/lichess/utils.js +1 -1
  424. package/clis/linkedin/comment.js +1 -1
  425. package/clis/linkedin/connect.js +11 -11
  426. package/clis/linkedin/create.js +5 -5
  427. package/clis/linkedin/follow.js +1 -1
  428. package/clis/linkedin/inbox.js +1 -1
  429. package/clis/linkedin/job-detail.js +3 -3
  430. package/clis/linkedin/like.js +1 -1
  431. package/clis/linkedin/notifications.js +1 -1
  432. package/clis/linkedin/people-search.js +1 -1
  433. package/clis/linkedin/post-comments.js +1 -1
  434. package/clis/linkedin/post-detail.js +1 -1
  435. package/clis/linkedin/profile-analytics.js +1 -1
  436. package/clis/linkedin/profile-api.js +13 -13
  437. package/clis/linkedin/profile-experience.js +1 -1
  438. package/clis/linkedin/profile-projects.js +1 -1
  439. package/clis/linkedin/profile-read.js +3 -3
  440. package/clis/linkedin/reply.js +1 -1
  441. package/clis/linkedin/repost.js +1 -1
  442. package/clis/linkedin/safe-send.js +8 -8
  443. package/clis/linkedin/salesnav-inbox.js +5 -5
  444. package/clis/linkedin/salesnav-message.js +3 -3
  445. package/clis/linkedin/salesnav-search.js +4 -4
  446. package/clis/linkedin/salesnav-thread.js +1 -1
  447. package/clis/linkedin/search-api.js +3 -3
  448. package/clis/linkedin/search.js +8 -8
  449. package/clis/linkedin/social-api.js +31 -31
  450. package/clis/linkedin/timeline.js +3 -3
  451. package/clis/linkedin-learning/search.js +2 -2
  452. package/clis/linkedin-learning/trending.js +2 -2
  453. package/clis/linux-do/feed.js +4 -4
  454. package/clis/linux-do/topic-content.js +8 -8
  455. package/clis/lobsters/domain.js +1 -1
  456. package/clis/lobsters/read.js +7 -7
  457. package/clis/maimai/auth.js +2 -2
  458. package/clis/maimai/search-talents.js +4 -4
  459. package/clis/manus/_utils.js +1 -1
  460. package/clis/mastodon/login.js +1 -1
  461. package/clis/mastodon/post.js +1 -1
  462. package/clis/mastodon/shared.js +12 -12
  463. package/clis/mastodon/whoami.js +1 -1
  464. package/clis/maven/artifact.js +1 -1
  465. package/clis/maven/search.js +1 -1
  466. package/clis/maven/utils.js +1 -1
  467. package/clis/mdn/search.js +1 -1
  468. package/clis/medium/article.js +5 -5
  469. package/clis/medium/login.js +1 -1
  470. package/clis/medium/stats.js +3 -3
  471. package/clis/medium/tag.js +1 -1
  472. package/clis/medium/whoami.js +1 -1
  473. package/clis/mubu/notes.js +1 -1
  474. package/clis/mubu/utils.js +15 -15
  475. package/clis/note/auth.js +2 -2
  476. package/clis/note/note-utils.js +2 -2
  477. package/clis/note/publish.js +8 -8
  478. package/clis/notebooklm/add-source.js +8 -8
  479. package/clis/notebooklm/create.js +1 -1
  480. package/clis/notebooklm/generate-slides.js +1 -1
  481. package/clis/notebooklm/notes-get.js +1 -1
  482. package/clis/notebooklm/rpc.js +8 -8
  483. package/clis/notebooklm/source-fulltext.js +1 -1
  484. package/clis/notebooklm/utils.js +10 -10
  485. package/clis/nowcoder/auth.js +2 -2
  486. package/clis/nowcoder/comment.js +1 -1
  487. package/clis/nowcoder/comments.js +1 -1
  488. package/clis/nowcoder/dm-list.js +1 -1
  489. package/clis/nowcoder/dm-read.js +1 -1
  490. package/clis/nowcoder/dm-send.js +1 -1
  491. package/clis/nowcoder/drafts.js +1 -1
  492. package/clis/nowcoder/inbox.js +1 -1
  493. package/clis/nowcoder/like.js +1 -1
  494. package/clis/nowcoder/my.js +1 -1
  495. package/clis/nowcoder/post.js +1 -1
  496. package/clis/nowcoder/utils.js +13 -13
  497. package/clis/npm/downloads.js +1 -1
  498. package/clis/npm/package.js +1 -1
  499. package/clis/npm/search.js +1 -1
  500. package/clis/npm/utils.js +1 -1
  501. package/clis/nuget/package.js +1 -1
  502. package/clis/nuget/search.js +1 -1
  503. package/clis/nuget/utils.js +1 -1
  504. package/clis/nvd/cve.js +1 -1
  505. package/clis/oeis/search.js +1 -1
  506. package/clis/oeis/sequence.js +1 -1
  507. package/clis/oeis/utils.js +1 -1
  508. package/clis/ones/common.js +6 -6
  509. package/clis/ones/enrich-tasks.js +1 -1
  510. package/clis/ones/my-tasks.js +1 -1
  511. package/clis/ones/resolve-labels.js +1 -1
  512. package/clis/ones/task-helpers.js +1 -1
  513. package/clis/ones/task.js +1 -1
  514. package/clis/ones/worklog.js +7 -7
  515. package/clis/openalex/search.js +1 -1
  516. package/clis/openalex/utils.js +1 -1
  517. package/clis/openalex/work.js +1 -1
  518. package/clis/openfda/drug-label.js +1 -1
  519. package/clis/openfda/food-recall.js +1 -1
  520. package/clis/openfda/utils.js +1 -1
  521. package/clis/openreview/author.js +1 -1
  522. package/clis/openreview/paper.js +1 -1
  523. package/clis/openreview/reviews.js +3 -3
  524. package/clis/openreview/search.js +1 -1
  525. package/clis/openreview/utils.js +1 -1
  526. package/clis/openreview/venue.js +1 -1
  527. package/clis/oschina/article.js +1 -1
  528. package/clis/oschina/catalogs.js +1 -1
  529. package/clis/oschina/login.js +1 -1
  530. package/clis/oschina/stats.js +6 -6
  531. package/clis/oschina/whoami.js +1 -1
  532. package/clis/osv/query.js +1 -1
  533. package/clis/osv/utils.js +1 -1
  534. package/clis/osv/vulnerability.js +1 -1
  535. package/clis/packagist/package.js +1 -1
  536. package/clis/packagist/search.js +1 -1
  537. package/clis/packagist/utils.js +1 -1
  538. package/clis/pinterest/api.js +1 -1
  539. package/clis/pinterest/auth.js +1 -1
  540. package/clis/pinterest/boards.js +1 -1
  541. package/clis/pinterest/client.js +6 -6
  542. package/clis/pinterest/publish.js +5 -5
  543. package/clis/pixiv/auth.js +2 -2
  544. package/clis/pixiv/download.js +1 -1
  545. package/clis/pixiv/illusts.js +1 -1
  546. package/clis/pixiv/search.js +1 -1
  547. package/clis/pixiv/utils.js +3 -3
  548. package/clis/powerchina/auth.js +2 -2
  549. package/clis/powerchina/search.js +1 -1
  550. package/clis/producthunt/browse.js +2 -2
  551. package/clis/producthunt/hot.js +2 -2
  552. package/clis/producthunt/posts.js +1 -1
  553. package/clis/producthunt/today.js +1 -1
  554. package/clis/producthunt/utils.js +1 -1
  555. package/clis/pypi/downloads.js +1 -1
  556. package/clis/pypi/package.js +1 -1
  557. package/clis/pypi/utils.js +1 -1
  558. package/clis/qiita/auth.js +1 -1
  559. package/clis/qiita/gql.js +6 -6
  560. package/clis/qiita/publish.js +4 -4
  561. package/clis/qiita/stats.js +4 -4
  562. package/clis/qoder/_utils.js +16 -16
  563. package/clis/qoder/composer.js +1 -1
  564. package/clis/qoder/quest.js +1 -1
  565. package/clis/qoder/ui.js +14 -14
  566. package/clis/quark/auth.js +2 -2
  567. package/clis/quark/utils.js +2 -2
  568. package/clis/quora/answer-comments.js +3 -3
  569. package/clis/quora/create-answer.js +4 -4
  570. package/clis/quora/create-question.js +3 -3
  571. package/clis/quora/shared.js +17 -17
  572. package/clis/quora/whoami.js +1 -1
  573. package/clis/qwen/ask.js +1 -1
  574. package/clis/qwen/auth.js +3 -3
  575. package/clis/qwen/detail.js +1 -1
  576. package/clis/qwen/image.js +5 -5
  577. package/clis/qwen/status.js +1 -1
  578. package/clis/qwen/utils.js +16 -16
  579. package/clis/reddit/home.js +3 -3
  580. package/clis/reddit/read.js +10 -10
  581. package/clis/reddit/reply.js +4 -4
  582. package/clis/reddit/submit.js +11 -11
  583. package/clis/reddit/subreddit-info.js +3 -3
  584. package/clis/reddit/subscribed.js +4 -4
  585. package/clis/reddit/whoami.js +2 -2
  586. package/clis/rednote/comments.js +1 -1
  587. package/clis/rednote/download.js +1 -1
  588. package/clis/rednote/feed.js +1 -1
  589. package/clis/rednote/note.js +1 -1
  590. package/clis/rednote/notifications.js +2 -2
  591. package/clis/rednote/search.js +2 -2
  592. package/clis/rest-countries/country.js +1 -1
  593. package/clis/rest-countries/region.js +1 -1
  594. package/clis/rest-countries/utils.js +1 -1
  595. package/clis/reuters/article-detail.js +1 -1
  596. package/clis/reuters/auth.js +3 -3
  597. package/clis/reuters/search.js +1 -1
  598. package/clis/reuters/utils.js +4 -4
  599. package/clis/rfc/rfc.js +1 -1
  600. package/clis/rfc/utils.js +1 -1
  601. package/clis/rubygems/gem.js +1 -1
  602. package/clis/rubygems/search.js +1 -1
  603. package/clis/rubygems/utils.js +1 -1
  604. package/clis/segmentfault/article.js +3 -3
  605. package/clis/segmentfault/channels.js +1 -1
  606. package/clis/segmentfault/login.js +1 -1
  607. package/clis/segmentfault/stats.js +4 -4
  608. package/clis/segmentfault/tags.js +1 -1
  609. package/clis/segmentfault/whoami.js +1 -1
  610. package/clis/semanticscholar/citations.js +1 -1
  611. package/clis/semanticscholar/paper.js +1 -1
  612. package/clis/semanticscholar/recommendations.js +1 -1
  613. package/clis/semanticscholar/search.js +1 -1
  614. package/clis/semanticscholar/utils.js +1 -1
  615. package/clis/sinafinance/news.js +1 -1
  616. package/clis/sinafinance/stock-rank.js +1 -1
  617. package/clis/sinafinance/stock.js +1 -1
  618. package/clis/slock/attachment-download.js +1 -1
  619. package/clis/slock/attachment-upload.js +7 -7
  620. package/clis/slock/attachment-url.js +1 -1
  621. package/clis/slock/auth-verify.js +1 -1
  622. package/clis/slock/bookmark-add.js +1 -1
  623. package/clis/slock/bookmark-remove.js +1 -1
  624. package/clis/slock/channel-action.js +1 -1
  625. package/clis/slock/channel-create.js +1 -1
  626. package/clis/slock/channel-files.js +1 -1
  627. package/clis/slock/channel-list.js +1 -1
  628. package/clis/slock/channel-mark.js +1 -1
  629. package/clis/slock/channel-members.js +1 -1
  630. package/clis/slock/channel-unarchive.js +1 -1
  631. package/clis/slock/dm-list.js +1 -1
  632. package/clis/slock/errors.js +1 -1
  633. package/clis/slock/in-page.js +28 -28
  634. package/clis/slock/inbox-done.js +5 -5
  635. package/clis/slock/inbox.js +1 -1
  636. package/clis/slock/message-read.js +22 -22
  637. package/clis/slock/message-search.js +10 -10
  638. package/clis/slock/message-send.js +25 -25
  639. package/clis/slock/reaction-add.js +1 -1
  640. package/clis/slock/reaction-remove.js +1 -1
  641. package/clis/slock/resolve.js +1 -1
  642. package/clis/slock/server-list.js +2 -2
  643. package/clis/slock/task-claim.js +4 -4
  644. package/clis/slock/task-convert.js +13 -13
  645. package/clis/slock/task-create.js +1 -1
  646. package/clis/slock/task-delete.js +5 -5
  647. package/clis/slock/task-get.js +5 -5
  648. package/clis/slock/task-list-server.js +4 -4
  649. package/clis/slock/task-list.js +5 -5
  650. package/clis/slock/task-status.js +3 -3
  651. package/clis/slock/task-unclaim.js +3 -3
  652. package/clis/slock/thread-follow.js +1 -1
  653. package/clis/slock/thread-state.js +1 -1
  654. package/clis/slock/unread-summary.js +5 -5
  655. package/clis/slock/whoami.js +1 -1
  656. package/clis/smzdm/search.js +3 -3
  657. package/clis/sohu/article.js +1 -1
  658. package/clis/sohu/attributes.js +1 -1
  659. package/clis/sohu/categories.js +1 -1
  660. package/clis/sohu/channels.js +1 -1
  661. package/clis/sohu/columns.js +1 -1
  662. package/clis/sohu/login.js +1 -1
  663. package/clis/sohu/stats.js +3 -3
  664. package/clis/sohu/topics.js +1 -1
  665. package/clis/sohu/whoami.js +1 -1
  666. package/clis/spotify/spotify.js +1 -1
  667. package/clis/stackoverflow/read.js +6 -6
  668. package/clis/stackoverflow/related.js +1 -1
  669. package/clis/stackoverflow/tag.js +1 -1
  670. package/clis/stackoverflow/user.js +1 -1
  671. package/clis/stackoverflow/utils.js +1 -1
  672. package/clis/steam/app.js +1 -1
  673. package/clis/steam/search.js +1 -1
  674. package/clis/steam/utils.js +1 -1
  675. package/clis/substack/auth.js +2 -2
  676. package/clis/substack/post-utils.js +2 -2
  677. package/clis/substack/publish.js +5 -5
  678. package/clis/suno/auth.js +2 -2
  679. package/clis/suno/download.js +5 -5
  680. package/clis/suno/generate.js +3 -3
  681. package/clis/suno/list.js +1 -1
  682. package/clis/suno/status.js +1 -1
  683. package/clis/suno/utils.js +29 -29
  684. package/clis/telegram/send.js +7 -7
  685. package/clis/telegram/shared.js +2 -2
  686. package/clis/telegram/whoami.js +1 -1
  687. package/clis/test-utils.js +1 -1
  688. package/clis/threads/post.js +23 -23
  689. package/clis/threads/shared.js +3 -3
  690. package/clis/threads/whoami.js +1 -1
  691. package/clis/tieba/hot.js +3 -3
  692. package/clis/tieba/posts.js +1 -1
  693. package/clis/tieba/read.js +2 -2
  694. package/clis/tieba/search.js +3 -3
  695. package/clis/tieba/utils.js +1 -1
  696. package/clis/tiktok/comment.js +2 -2
  697. package/clis/tiktok/creator-videos.js +3 -3
  698. package/clis/tiktok/explore.js +3 -3
  699. package/clis/tiktok/follow.js +8 -8
  700. package/clis/tiktok/following.js +4 -4
  701. package/clis/tiktok/friends.js +7 -7
  702. package/clis/tiktok/live.js +3 -3
  703. package/clis/tiktok/notifications.js +6 -6
  704. package/clis/tiktok/publish.js +17 -17
  705. package/clis/tiktok/unfollow.js +4 -4
  706. package/clis/tiktok/user.js +2 -2
  707. package/clis/tiktok/utils.js +1 -1
  708. package/clis/toutiao/article.js +1 -1
  709. package/clis/toutiao/articles.js +2 -2
  710. package/clis/toutiao/auth.js +2 -2
  711. package/clis/toutiao/hot.js +1 -1
  712. package/clis/toutiao/recommend.js +1 -1
  713. package/clis/toutiao/utils.js +2 -2
  714. package/clis/trae-solo/_actions.js +4 -4
  715. package/clis/trae-solo/_fs.js +5 -5
  716. package/clis/trae-solo/_state.js +2 -2
  717. package/clis/trae-solo/automation.js +4 -4
  718. package/clis/trae-solo/mode.js +4 -4
  719. package/clis/trae-solo/model.js +4 -4
  720. package/clis/trae-solo/renderer-storage.js +4 -4
  721. package/clis/trae-solo/settings.js +1 -1
  722. package/clis/trae-solo/skill-fs.js +1 -1
  723. package/clis/trae-solo/skill.js +12 -12
  724. package/clis/trae-solo/state-fs.js +2 -2
  725. package/clis/trae-solo/task-fs.js +5 -5
  726. package/clis/trae-solo/workspaces-fs.js +1 -1
  727. package/clis/tumblr/auth.js +2 -2
  728. package/clis/tumblr/publish.js +3 -3
  729. package/clis/tvmaze/search.js +1 -1
  730. package/clis/tvmaze/show.js +1 -1
  731. package/clis/tvmaze/utils.js +1 -1
  732. package/clis/twitter/accept.js +7 -7
  733. package/clis/twitter/article.js +7 -7
  734. package/clis/twitter/bookmark-folder.js +3 -3
  735. package/clis/twitter/bookmark-folders.js +3 -3
  736. package/clis/twitter/bookmarks.js +4 -4
  737. package/clis/twitter/delete.js +5 -5
  738. package/clis/twitter/device-follow.js +3 -3
  739. package/clis/twitter/dm-list.js +1 -1
  740. package/clis/twitter/dm-read.js +1 -1
  741. package/clis/twitter/dm-send.js +5 -5
  742. package/clis/twitter/dm-shared.js +3 -3
  743. package/clis/twitter/download.js +6 -6
  744. package/clis/twitter/followers.js +5 -5
  745. package/clis/twitter/following.js +2 -2
  746. package/clis/twitter/like.js +3 -3
  747. package/clis/twitter/likes.js +8 -8
  748. package/clis/twitter/list-add-core.js +9 -9
  749. package/clis/twitter/list-create.js +5 -5
  750. package/clis/twitter/list-remove-core.js +9 -9
  751. package/clis/twitter/list-tweets.js +7 -7
  752. package/clis/twitter/lists.js +6 -6
  753. package/clis/twitter/notifications.js +2 -2
  754. package/clis/twitter/post.js +24 -24
  755. package/clis/twitter/profile.js +7 -7
  756. package/clis/twitter/quote.js +7 -7
  757. package/clis/twitter/reply-dm.js +7 -7
  758. package/clis/twitter/reply.js +12 -12
  759. package/clis/twitter/retweet.js +3 -3
  760. package/clis/twitter/scheduled-delete.js +3 -3
  761. package/clis/twitter/scheduled-list.js +2 -2
  762. package/clis/twitter/scheduled-utils.js +3 -3
  763. package/clis/twitter/search.js +5 -5
  764. package/clis/twitter/shared.js +6 -6
  765. package/clis/twitter/thread.js +4 -4
  766. package/clis/twitter/timeline.js +3 -3
  767. package/clis/twitter/trending.js +2 -2
  768. package/clis/twitter/tweets.js +11 -11
  769. package/clis/twitter/unlike.js +3 -3
  770. package/clis/twitter/unretweet.js +3 -3
  771. package/clis/twitter/utils.js +6 -6
  772. package/clis/upwork/detail.js +2 -2
  773. package/clis/upwork/feed.js +2 -2
  774. package/clis/upwork/search.js +2 -2
  775. package/clis/upwork/utils.js +1 -1
  776. package/clis/v2ex/auth.js +2 -2
  777. package/clis/v2ex/daily.js +3 -3
  778. package/clis/v2ex/me.js +2 -2
  779. package/clis/v2ex/notifications.js +2 -2
  780. package/clis/vk/post.js +1 -1
  781. package/clis/vk/shared.js +2 -2
  782. package/clis/vk/whoami.js +1 -1
  783. package/clis/web/read.js +8 -8
  784. package/clis/wechat-channels/auth.js +2 -2
  785. package/clis/wechat-channels/publish.js +30 -30
  786. package/clis/weibo/article.js +1 -1
  787. package/clis/weibo/auth.js +3 -3
  788. package/clis/weibo/comments.js +1 -1
  789. package/clis/weibo/delete.js +2 -2
  790. package/clis/weibo/feed.js +3 -3
  791. package/clis/weibo/hot.js +1 -1
  792. package/clis/weibo/publish.js +10 -10
  793. package/clis/weibo/search.js +2 -2
  794. package/clis/weibo/user-posts.js +3 -3
  795. package/clis/weibo/user.js +2 -2
  796. package/clis/weibo/utils.js +3 -3
  797. package/clis/weixin/article.js +1 -1
  798. package/clis/weixin/create-draft.js +26 -26
  799. package/clis/weixin/download.js +2 -2
  800. package/clis/weixin/login.js +1 -1
  801. package/clis/weixin/search.js +2 -2
  802. package/clis/weixin/stats.js +3 -3
  803. package/clis/weixin/whoami.js +1 -1
  804. package/clis/weread/ai-outline.js +2 -2
  805. package/clis/weread/book-search.js +2 -2
  806. package/clis/weread/book.js +2 -2
  807. package/clis/weread/notebooks.js +1 -1
  808. package/clis/weread/search.js +1 -1
  809. package/clis/weread/shelf.js +1 -1
  810. package/clis/weread/utils.js +6 -6
  811. package/clis/weread-official/book.js +1 -1
  812. package/clis/weread-official/discover.js +1 -1
  813. package/clis/weread-official/list-apis.js +1 -1
  814. package/clis/weread-official/notes.js +1 -1
  815. package/clis/weread-official/readdata.js +1 -1
  816. package/clis/weread-official/review.js +1 -1
  817. package/clis/weread-official/search.js +1 -1
  818. package/clis/weread-official/shelf.js +1 -1
  819. package/clis/weread-official/utils.js +1 -1
  820. package/clis/wikidata/entity.js +1 -1
  821. package/clis/wikidata/search.js +1 -1
  822. package/clis/wikidata/utils.js +1 -1
  823. package/clis/wikipedia/page.js +1 -1
  824. package/clis/wikipedia/trending.js +1 -1
  825. package/clis/wikipedia/utils.js +1 -1
  826. package/clis/wordpress/login.js +1 -1
  827. package/clis/wordpress/publish.js +1 -1
  828. package/clis/wordpress/shared.js +3 -3
  829. package/clis/wordpress/whoami.js +1 -1
  830. package/clis/woshipm/article.js +1 -1
  831. package/clis/woshipm/login.js +1 -1
  832. package/clis/woshipm/stats.js +4 -4
  833. package/clis/woshipm/whoami.js +1 -1
  834. package/clis/wttr/current.js +1 -1
  835. package/clis/wttr/forecast.js +1 -1
  836. package/clis/wttr/utils.js +1 -1
  837. package/clis/xianyu/collect.js +1 -1
  838. package/clis/xianyu/inbox.js +1 -1
  839. package/clis/xianyu/item-stats.js +2 -2
  840. package/clis/xianyu/location.js +1 -1
  841. package/clis/xianyu/manage.js +1 -1
  842. package/clis/xianyu/messages.js +1 -1
  843. package/clis/xianyu/mtop.js +5 -5
  844. package/clis/xianyu/order.js +1 -1
  845. package/clis/xianyu/promote-stats.js +2 -2
  846. package/clis/xianyu/publish.js +17 -17
  847. package/clis/xianyu/rate.js +1 -1
  848. package/clis/xianyu/reply.js +1 -1
  849. package/clis/xianyu/search.js +8 -8
  850. package/clis/xianyu/seller-data.js +1 -1
  851. package/clis/xianyu/seller-list.js +1 -1
  852. package/clis/xianyu/user.js +1 -1
  853. package/clis/xiaoe/catalog.js +2 -2
  854. package/clis/xiaoe/content.js +2 -2
  855. package/clis/xiaoe/courses.js +2 -2
  856. package/clis/xiaohongshu/ask.js +6 -6
  857. package/clis/xiaohongshu/comments.js +6 -6
  858. package/clis/xiaohongshu/creator-note-detail.js +7 -7
  859. package/clis/xiaohongshu/creator-notes-summary.js +1 -1
  860. package/clis/xiaohongshu/creator-notes.js +13 -13
  861. package/clis/xiaohongshu/creator-profile.js +2 -2
  862. package/clis/xiaohongshu/creator-stats.js +2 -2
  863. package/clis/xiaohongshu/delete-note.js +7 -7
  864. package/clis/xiaohongshu/download.js +4 -4
  865. package/clis/xiaohongshu/feed.js +2 -2
  866. package/clis/xiaohongshu/follow.js +3 -3
  867. package/clis/xiaohongshu/human.js +3 -3
  868. package/clis/xiaohongshu/note-helpers.js +1 -1
  869. package/clis/xiaohongshu/note.js +2 -2
  870. package/clis/xiaohongshu/notifications.js +1 -1
  871. package/clis/xiaohongshu/publish-video.js +8 -8
  872. package/clis/xiaohongshu/publish.js +59 -59
  873. package/clis/xiaohongshu/search.js +8 -8
  874. package/clis/xiaohongshu/unfollow.js +4 -4
  875. package/clis/xiaohongshu/user-helpers.js +1 -1
  876. package/clis/xiaohongshu/user.js +2 -2
  877. package/clis/xiaoyuzhou/auth.js +3 -3
  878. package/clis/xiaoyuzhou/download.js +1 -1
  879. package/clis/xiaoyuzhou/utils.js +1 -1
  880. package/clis/xueqiu/article.js +4 -4
  881. package/clis/xueqiu/comments.js +4 -4
  882. package/clis/xueqiu/danjuan-utils.js +4 -4
  883. package/clis/xueqiu/earnings-date.js +1 -1
  884. package/clis/xueqiu/events.js +3 -3
  885. package/clis/xueqiu/hashtags.js +3 -3
  886. package/clis/xueqiu/stocks.js +3 -3
  887. package/clis/xueqiu/users.js +3 -3
  888. package/clis/xueqiu/utils.js +3 -3
  889. package/clis/yahoo-finance/quote.js +1 -1
  890. package/clis/yollomi/background.js +1 -1
  891. package/clis/yollomi/edit.js +1 -1
  892. package/clis/yollomi/face-swap.js +1 -1
  893. package/clis/yollomi/generate.js +1 -1
  894. package/clis/yollomi/object-remover.js +1 -1
  895. package/clis/yollomi/remove-bg.js +1 -1
  896. package/clis/yollomi/restore.js +1 -1
  897. package/clis/yollomi/try-on.js +1 -1
  898. package/clis/yollomi/upload.js +4 -4
  899. package/clis/yollomi/upscale.js +1 -1
  900. package/clis/yollomi/utils.js +4 -4
  901. package/clis/yollomi/video.js +1 -1
  902. package/clis/youtube/channel.js +4 -4
  903. package/clis/youtube/feed.js +2 -2
  904. package/clis/youtube/like.js +5 -5
  905. package/clis/youtube/playlist.js +7 -7
  906. package/clis/youtube/publish.js +11 -11
  907. package/clis/youtube/search.js +3 -3
  908. package/clis/youtube/subscribe.js +7 -7
  909. package/clis/youtube/subscriptions.js +1 -1
  910. package/clis/youtube/transcript-group.js +2 -2
  911. package/clis/youtube/transcript.js +13 -13
  912. package/clis/youtube/unlike.js +5 -5
  913. package/clis/youtube/unsubscribe.js +7 -7
  914. package/clis/youtube/utils.js +3 -3
  915. package/clis/youtube/video.js +4 -4
  916. package/clis/youtube/watch-later.js +2 -2
  917. package/clis/yuanbao/ask.js +18 -18
  918. package/clis/yuanbao/detail.js +1 -1
  919. package/clis/yuanbao/read.js +1 -1
  920. package/clis/yuanbao/shared.js +9 -9
  921. package/clis/yuanbao/status.js +1 -1
  922. package/clis/yuque/article.js +1 -1
  923. package/clis/yuque/whoami.js +1 -1
  924. package/clis/zhihu/answer-comments.js +2 -2
  925. package/clis/zhihu/answer-detail.js +3 -3
  926. package/clis/zhihu/answer.js +1 -1
  927. package/clis/zhihu/article-transform.js +1 -1
  928. package/clis/zhihu/article.js +1 -1
  929. package/clis/zhihu/auth.js +2 -2
  930. package/clis/zhihu/collection.js +3 -3
  931. package/clis/zhihu/collections.js +3 -3
  932. package/clis/zhihu/download.js +2 -2
  933. package/clis/zhihu/image-profile.js +6 -6
  934. package/clis/zhihu/paginate.js +3 -3
  935. package/clis/zhihu/pin.js +4 -4
  936. package/clis/zhihu/question.js +3 -3
  937. package/clis/zhihu/recommend.js +3 -3
  938. package/clis/zhihu/search.js +3 -3
  939. package/clis/zhihu/stats.js +3 -3
  940. package/clis/zhihu/user-arg.js +1 -1
  941. package/clis/zhihu/write-shared.js +7 -7
  942. package/clis/zlibrary/utils.js +6 -6
  943. package/clis/zsxq/auth.js +3 -3
  944. package/clis/zsxq/search.js +1 -1
  945. package/clis/zsxq/topic.js +1 -1
  946. package/clis/zsxq/utils.js +5 -5
  947. package/dist/src/adapter-source.js +1 -1
  948. package/dist/src/browser/analyze.js +1 -1
  949. package/dist/src/browser/article-extract.js +2 -2
  950. package/dist/src/browser/ax-snapshot.js +2 -2
  951. package/dist/src/browser/base-page.js +25 -25
  952. package/dist/src/browser/bridge.js +1 -1
  953. package/dist/src/browser/cdp.js +1 -1
  954. package/dist/src/browser/daemon-client.js +1 -1
  955. package/dist/src/browser/daemon-lifecycle.js +7 -7
  956. package/dist/src/browser/dom-helpers.js +35 -35
  957. package/dist/src/browser/dom-snapshot.js +19 -19
  958. package/dist/src/browser/errors.js +3 -3
  959. package/dist/src/browser/extract.js +5 -5
  960. package/dist/src/browser/find.js +13 -13
  961. package/dist/src/browser/fingerprint.js +2 -2
  962. package/dist/src/browser/html-tree.js +6 -6
  963. package/dist/src/browser/managed-chrome.js +1 -1
  964. package/dist/src/browser/network-cache.js +1 -1
  965. package/dist/src/browser/network-key.js +1 -1
  966. package/dist/src/browser/page.js +7 -7
  967. package/dist/src/browser/profile.js +2 -2
  968. package/dist/src/browser/proxy-test.js +8 -8
  969. package/dist/src/browser/shape-filter.js +1 -1
  970. package/dist/src/browser/shape.js +1 -1
  971. package/dist/src/browser/stealth.js +3 -3
  972. package/dist/src/browser/tabs.js +2 -2
  973. package/dist/src/browser/target-errors.js +1 -1
  974. package/dist/src/browser/target-resolver.js +23 -23
  975. package/dist/src/browser/trace.js +2 -2
  976. package/dist/src/browser/utils.js +1 -1
  977. package/dist/src/browser/verify-fixture.js +2 -2
  978. package/dist/src/browser-session-lock.js +1 -1
  979. package/dist/src/build-manifest.js +11 -11
  980. package/dist/src/capabilityRouting.js +1 -1
  981. package/dist/src/cli-argv-preprocess.js +1 -1
  982. package/dist/src/cli.js +32 -32
  983. package/dist/src/commanderAdapter.js +3 -3
  984. package/dist/src/commands/auth.js +3 -3
  985. package/dist/src/commands/daemon.js +1 -1
  986. package/dist/src/completion-fast.js +1 -1
  987. package/dist/src/completion.js +1 -1
  988. package/dist/src/constants.js +1 -1
  989. package/dist/src/convention-audit.js +2 -2
  990. package/dist/src/daemon-utils.js +1 -1
  991. package/dist/src/daemon.js +1 -1
  992. package/dist/src/discovery.js +2 -2
  993. package/dist/src/doctor.js +9 -9
  994. package/dist/src/download/article-download.js +15 -15
  995. package/dist/src/download/index.js +4 -4
  996. package/dist/src/download/media-download.js +1 -1
  997. package/dist/src/download/progress.js +3 -3
  998. package/dist/src/electron-apps.js +1 -1
  999. package/dist/src/errors.js +2 -2
  1000. package/dist/src/execution.js +2 -2
  1001. package/dist/src/external.js +1 -1
  1002. package/dist/src/help.js +8 -8
  1003. package/dist/src/hooks.js +1 -1
  1004. package/dist/src/interceptor.js +21 -21
  1005. package/dist/src/launcher.js +7 -7
  1006. package/dist/src/logger.js +8 -8
  1007. package/dist/src/main.js +7 -7
  1008. package/dist/src/observation/artifact.js +5 -5
  1009. package/dist/src/observation/retention.js +1 -1
  1010. package/dist/src/output.js +2 -2
  1011. package/dist/src/package-paths.js +1 -1
  1012. package/dist/src/pipeline/executor.js +1 -1
  1013. package/dist/src/pipeline/registry.js +1 -1
  1014. package/dist/src/pipeline/steps/browser.js +1 -1
  1015. package/dist/src/pipeline/steps/download.js +1 -1
  1016. package/dist/src/pipeline/steps/fetch.js +6 -6
  1017. package/dist/src/pipeline/steps/intercept.js +1 -1
  1018. package/dist/src/pipeline/steps/tap.js +17 -17
  1019. package/dist/src/pipeline/steps/transform.js +1 -1
  1020. package/dist/src/pipeline/template.js +1 -1
  1021. package/dist/src/plugin-manifest.js +1 -1
  1022. package/dist/src/plugin-scaffold.js +19 -19
  1023. package/dist/src/plugin.js +12 -12
  1024. package/dist/src/rate-limit.js +1 -1
  1025. package/dist/src/registry.js +1 -1
  1026. package/dist/src/runtime-detect.js +1 -1
  1027. package/dist/src/runtime.js +1 -1
  1028. package/dist/src/scripts/framework.js +1 -1
  1029. package/dist/src/scripts/interact.js +1 -1
  1030. package/dist/src/scripts/store.js +1 -1
  1031. package/dist/src/serialization.js +2 -2
  1032. package/dist/src/session-lease.js +1 -1
  1033. package/dist/src/snapshotFormatter.js +2 -2
  1034. package/dist/src/tui.js +12 -12
  1035. package/dist/src/user-runtime.js +1 -1
  1036. package/dist/src/utils.d.ts +12 -0
  1037. package/dist/src/utils.js +4 -4
  1038. package/dist/src/validate.js +2 -2
  1039. package/dist/src/verify.js +2 -2
  1040. package/dist/src/version.js +1 -1
  1041. package/package.json +1 -1
@@ -1,16 +1,16 @@
1
- export function sleep(j){return new Promise((q)=>setTimeout(q,j))}export async function fetchChaoxing(j,q){const B=JSON.stringify(q);return j.evaluate(`
1
+ export function sleep(t){return new Promise((e)=>setTimeout(e,t))}export async function fetchChaoxing(t,e){const s=JSON.stringify(e);return t.evaluate(`
2
2
  async () => {
3
- const res = await fetch(${B}, { credentials: "include" });
3
+ const res = await fetch(${s}, { credentials: "include" });
4
4
  const text = await res.text();
5
5
  try { return JSON.parse(text); } catch {}
6
6
  return text;
7
7
  }
8
- `)}export function formatTimestamp(j){if(j==null||j===""||j===0)return"";if(typeof j==="string"&&!/^\d+$/.test(j.trim()))return j.trim();const q=Number(j);if(Number.isNaN(q)||q<=0)return String(j);const B=q>1000000000000?q:q*1000,A=new Date(B);if(Number.isNaN(A.getTime()))return String(j);const z=A.getFullYear(),G=String(A.getMonth()+1).padStart(2,"0"),F=String(A.getDate()).padStart(2,"0"),H=String(A.getHours()).padStart(2,"0"),I=String(A.getMinutes()).padStart(2,"0");return`${z}-${G}-${F} ${H}:${I}`}export function workStatusLabel(j){if(j==null||j==="")return"未知";const q=Number(j);if(q===0)return"未交";if(q===1)return"已交";if(q===2)return"已批阅";return String(j).trim()||"未知"}export async function getCourses(j){const q=await fetchChaoxing(j,"https://mooc1-api.chaoxing.com/mycourse/backclazzdata?view=json&rss=1");if(!q||typeof q!=="object")return[];const B=q.channelList??[],A=[];for(const z of B){const G=z?.content;if(!G)continue;const F=G.course?.data;if(!Array.isArray(F))continue;for(const H of F)A.push({courseId:String(H.id??""),classId:String(G.id??""),cpi:String(z.cpi??""),title:String(H.name??"")})}return A}export async function initSession(j){await j.goto("https://mooc2-ans.chaoxing.com/mooc2-ans/visit/interaction")}export async function enterCourse(j,q){const B=`https://mooc1.chaoxing.com/visit/stucoursemiddle?courseid=${q.courseId}&clazzid=${q.classId}&cpi=${q.cpi}&ismooc2=1&v=2`;await j.goto(B)}export async function getTabIframeUrl(j,q){const B=JSON.stringify(q),A=await j.evaluate(`
8
+ `)}export function formatTimestamp(t){if(t==null||t===""||t===0)return"";if(typeof t==="string"&&!/^\d+$/.test(t.trim()))return t.trim();const e=Number(t);if(Number.isNaN(e)||e<=0)return String(t);const s=e>1000000000000?e:e*1000,o=new Date(s);if(Number.isNaN(o.getTime()))return String(t);const n=o.getFullYear(),c=String(o.getMonth()+1).padStart(2,"0"),r=String(o.getDate()).padStart(2,"0"),i=String(o.getHours()).padStart(2,"0"),a=String(o.getMinutes()).padStart(2,"0");return`${n}-${c}-${r} ${i}:${a}`}export function workStatusLabel(t){if(t==null||t==="")return"未知";const e=Number(t);if(e===0)return"未交";if(e===1)return"已交";if(e===2)return"已批阅";return String(t).trim()||"未知"}export async function getCourses(t){const e=await fetchChaoxing(t,"https://mooc1-api.chaoxing.com/mycourse/backclazzdata?view=json&rss=1");if(!e||typeof e!=="object")return[];const s=e.channelList??[],o=[];for(const n of s){const c=n?.content;if(!c)continue;const r=c.course?.data;if(!Array.isArray(r))continue;for(const i of r)o.push({courseId:String(i.id??""),classId:String(c.id??""),cpi:String(n.cpi??""),title:String(i.name??"")})}return o}export async function initSession(t){await t.goto("https://mooc2-ans.chaoxing.com/mooc2-ans/visit/interaction")}export async function enterCourse(t,e){const s=`https://mooc1.chaoxing.com/visit/stucoursemiddle?courseid=${e.courseId}&clazzid=${e.classId}&cpi=${e.cpi}&ismooc2=1&v=2`;await t.goto(s)}export async function getTabIframeUrl(t,e){const s=JSON.stringify(e),o=await t.evaluate(`
9
9
  async () => {
10
10
  const tabs = document.querySelectorAll('a[data-url]');
11
11
  let target = null;
12
12
  for (const tab of tabs) {
13
- if ((tab.innerText || '').trim() === ${B}) { target = tab; break; }
13
+ if ((tab.innerText || '').trim() === ${s}) { target = tab; break; }
14
14
  }
15
15
  if (!target) return '';
16
16
  target.click();
@@ -18,7 +18,7 @@ export function sleep(j){return new Promise((q)=>setTimeout(q,j))}export async f
18
18
  const iframe = document.getElementById('frame_content-hd') || document.querySelector('iframe');
19
19
  return iframe?.src || '';
20
20
  }
21
- `);return typeof A==="string"?A:""}export async function parseAssignmentsFromDom(j,q){const B=await j.evaluate(`
21
+ `);return typeof o==="string"?o:""}export async function parseAssignmentsFromDom(t,e){const s=await t.evaluate(`
22
22
  (() => {
23
23
  const items = [];
24
24
  // Each assignment is a li or div block; try multiple selectors
@@ -37,8 +37,8 @@ export function sleep(j){return new Promise((q)=>setTimeout(q,j))}export async f
37
37
  }
38
38
  return items;
39
39
  })()
40
- `)??[],A=[];for(const z of B){if(typeof z!=="string"||z.length<3)continue;if(/^(全部|已完成|未完成|筛选|暂无|提交的作业将经过)/.test(z))continue;const G=z.split(`
41
- `).map((T)=>T.trim()).filter(Boolean);if(!G.length)continue;const F=G[0].replace(/\s+/g," ").trim();if(!F||/^(全部|已完成|未完成|筛选)$/.test(F))continue;const I=z.match(/(未交|待批阅|已完成|已批阅)/)?.[1]??"",Q=z.match(/(剩余[\d天小时分钟秒]+)/),U=z.match(/(\d{4}[-/.]\d{1,2}[-/.]\d{1,2}(?:\s+\d{1,2}:\d{2})?)/),K=Q?.[1]??U?.[1]??"",R=z.match(/(\d+(?:\.\d+)?)\s*分(?!钟)/)?.[1]??"";A.push({course:q,title:F,deadline:K,status:I,score:R})}return A}export async function parseExamsFromDom(j,q){const B=await j.evaluate(`
40
+ `)??[],o=[];for(const n of s){if(typeof n!=="string"||n.length<3)continue;if(/^(全部|已完成|未完成|筛选|暂无|提交的作业将经过)/.test(n))continue;const c=n.split(`
41
+ `).map((f)=>f.trim()).filter(Boolean);if(!c.length)continue;const r=c[0].replace(/\s+/g," ").trim();if(!r||/^(全部|已完成|未完成|筛选)$/.test(r))continue;const a=n.match(/(未交|待批阅|已完成|已批阅)/)?.[1]??"",l=n.match(/(剩余[\d天小时分钟秒]+)/),d=n.match(/(\d{4}[-/.]\d{1,2}[-/.]\d{1,2}(?:\s+\d{1,2}:\d{2})?)/),u=l?.[1]??d?.[1]??"",m=n.match(/(\d+(?:\.\d+)?)\s*分(?!钟)/)?.[1]??"";o.push({course:e,title:r,deadline:u,status:a,score:m})}return o}export async function parseExamsFromDom(t,e){const s=await t.evaluate(`
42
42
  (() => {
43
43
  const items = [];
44
44
  const blocks = document.querySelectorAll('.ulDiv li, .exam-list-item, .listContent > div, ul > li');
@@ -54,5 +54,5 @@ export function sleep(j){return new Promise((q)=>setTimeout(q,j))}export async f
54
54
  }
55
55
  return items;
56
56
  })()
57
- `)??[];if(B.length===1&&typeof B[0]==="string"&&B[0].includes("暂无考试"))return[];const A=[];for(const z of B){if(typeof z!=="string"||z.length<3)continue;if(/^(全部|已完成|未完成|筛选|暂无)/.test(z))continue;const G=z.split(`
58
- `).map((T)=>T.trim()).filter(Boolean);if(!G.length)continue;const F=G[0].replace(/\s+/g," ").trim();if(!F||/^(全部|已完成|未完成|筛选)$/.test(F))continue;const H=z.match(/\d{4}[-/.]\d{1,2}[-/.]\d{1,2}\s+\d{1,2}:\d{2}/g)??[],I=H[0]??"",Q=H[1]??"";let K=z.match(/(未开始|进行中|已结束|已完成|未交|待批阅)/)?.[1]??"";if(!K&&z.includes("剩余"))K="进行中";const R=z.match(/(\d+(?:\.\d+)?)\s*分(?!钟)/)?.[1]??"";A.push({course:q,title:F,start:I,end:Q,status:K,score:R})}return A}
57
+ `)??[];if(s.length===1&&typeof s[0]==="string"&&s[0].includes("暂无考试"))return[];const o=[];for(const n of s){if(typeof n!=="string"||n.length<3)continue;if(/^(全部|已完成|未完成|筛选|暂无)/.test(n))continue;const c=n.split(`
58
+ `).map((f)=>f.trim()).filter(Boolean);if(!c.length)continue;const r=c[0].replace(/\s+/g," ").trim();if(!r||/^(全部|已完成|未完成|筛选)$/.test(r))continue;const i=n.match(/\d{4}[-/.]\d{1,2}[-/.]\d{1,2}\s+\d{1,2}:\d{2}/g)??[],a=i[0]??"",l=i[1]??"";let u=n.match(/(未开始|进行中|已结束|已完成|未交|待批阅)/)?.[1]??"";if(!u&&n.includes("剩余"))u="进行中";const m=n.match(/(\d+(?:\.\d+)?)\s*分(?!钟)/)?.[1]??"";o.push({course:e,title:r,start:a,end:l,status:u,score:m})}return o}
@@ -1 +1 @@
1
- import{cli as j,Strategy as z}from"@jackwener/opencli/registry";import{ArgumentError as f,CommandExecutionError as L}from"@jackwener/opencli/errors";import{CHATGPT_DOMAIN as B,CHATGPT_URL as I,currentChatGPTUrl as M,ensureChatGPTComposer as R,ensureOnChatGPT as A,getChatGPTResponsePairCounts as S,getVisibleMessages as b,normalizeBooleanFlag as Y,openChatGPTConversation as F,requireNonEmptyPrompt as U,requirePositiveInt as E,parseChatGPTConversationId as G,sendChatGPTMessage as v,selectChatGPTTool as d,isGenerating as h,startNewChat as P,navigateToProject as T,waitForChatGPTResponse as C}from"./utils.js";async function m(K,J=30){const Q=Date.now();while(Date.now()-Q<J*1000){const X=await M(K);try{return{conversationId:G(X),conversationUrl:X}}catch{await K.wait(1)}}throw new L("ChatGPT did not create a conversation URL after sending the message.")}export const askCommand=j({site:"chatgpt",name:"ask",access:"write",description:"Send a prompt to ChatGPT web and wait for the response",domain:B,strategy:z.COOKIE,browser:!0,siteSession:"persistent",navigateBefore:!1,args:[{name:"prompt",fromFile:!0,positional:!0,required:!0,help:"Prompt to send"},{name:"timeout",type:"int",default:120,help:"Max seconds to wait for response"},{name:"new",type:"boolean",default:!1,help:"Start a new chat before sending"},{name:"conversation",valueRequired:!0,help:"Continue an existing ChatGPT conversation ID or /c/<id> URL"},{name:"project",valueRequired:!0,help:"Start a new chat inside a ChatGPT project ID or /g/g-p-<id> URL"},{name:"wait",type:"boolean",default:!0,help:"Wait for the assistant response after sending"},{name:"deep-research",type:"boolean",default:!1,help:"Enable ChatGPT 深度研究 (Deep Research)"},{name:"web-search",type:"boolean",default:!1,help:"Enable ChatGPT 网页搜索 (Web Search)"}],columns:["conversationId","conversationUrl","tool","response"],func:async(K,J)=>{const Q=U(J.prompt,"chatgpt ask"),X=E(Number(J.timeout??120),"chatgpt ask --timeout",'Example: ppcli chatgpt ask "hello" --timeout 120'),Z=Y(J["deep-research"],!1),V=Y(J["web-search"],!1),x=Y(J.wait,!0);if(Z&&V)throw new f("chatgpt ask cannot enable both --deep-research and --web-search","Choose one ChatGPT composer tool for this message.");if(Y(J.new)&&J.conversation)throw new f("chatgpt ask cannot use --new and --conversation together","Choose either a new chat or an existing conversation.");if(J.project&&J.conversation)throw new f("chatgpt ask cannot use --project and --conversation together","Choose either a project new chat or an existing conversation.");const q=Z?"deep-research":V?"web-search":null;if(J.conversation)await F(K,J.conversation);else if(J.project)await T(K,J.project);else if(Y(J.new))await P(K);else await A(K);await R(K,"ChatGPT ask requires a logged-in ChatGPT session with a visible composer.");const H=q?await d(K,q):null,y=Date.now();while(await h(K)){if(Date.now()-y>X*1000)throw new L("ChatGPT conversation is still generating; wait for it to finish before sending another message.");await K.wait(3)}const O=await b(K),D=O.length,N=S(O,Q);if(!await v(K,Q))throw new L("Failed to send message to ChatGPT",`Open ${I} and verify the composer is ready.`);const{conversationId:_,conversationUrl:$}=await m(K);if(!x)return[{conversationId:_,conversationUrl:$,tool:H?.Tool??"",response:""}];const W=await C(K,D,Q,X,{baselinePairCounts:N,conversationUrl:$});return[{conversationId:_,conversationUrl:$,tool:H?.Tool??"",response:W}]}});
1
+ import{cli as v,Strategy as P}from"@jackwener/opencli/registry";import{ArgumentError as i,CommandExecutionError as c}from"@jackwener/opencli/errors";import{CHATGPT_DOMAIN as b,CHATGPT_URL as G,currentChatGPTUrl as g,ensureChatGPTComposer as y,ensureOnChatGPT as I,getChatGPTResponsePairCounts as R,getVisibleMessages as D,normalizeBooleanFlag as n,openChatGPTConversation as U,requireNonEmptyPrompt as j,requirePositiveInt as E,parseChatGPTConversationId as S,sendChatGPTMessage as x,selectChatGPTTool as q,isGenerating as F,startNewChat as M,navigateToProject as O,waitForChatGPTResponse as A}from"./utils.js";async function L(t,e=30){const o=Date.now();while(Date.now()-o<e*1000){const a=await g(t);try{return{conversationId:S(a),conversationUrl:a}}catch{await t.wait(1)}}throw new c("ChatGPT did not create a conversation URL after sending the message.")}export const askCommand=v({site:"chatgpt",name:"ask",access:"write",description:"Send a prompt to ChatGPT web and wait for the response",domain:b,strategy:P.COOKIE,browser:!0,siteSession:"persistent",navigateBefore:!1,args:[{name:"prompt",fromFile:!0,positional:!0,required:!0,help:"Prompt to send"},{name:"timeout",type:"int",default:120,help:"Max seconds to wait for response"},{name:"new",type:"boolean",default:!1,help:"Start a new chat before sending"},{name:"conversation",valueRequired:!0,help:"Continue an existing ChatGPT conversation ID or /c/<id> URL"},{name:"project",valueRequired:!0,help:"Start a new chat inside a ChatGPT project ID or /g/g-p-<id> URL"},{name:"wait",type:"boolean",default:!0,help:"Wait for the assistant response after sending"},{name:"deep-research",type:"boolean",default:!1,help:"Enable ChatGPT 深度研究 (Deep Research)"},{name:"web-search",type:"boolean",default:!1,help:"Enable ChatGPT 网页搜索 (Web Search)"}],columns:["conversationId","conversationUrl","tool","response"],func:async(t,e)=>{const o=j(e.prompt,"chatgpt ask"),a=E(Number(e.timeout??120),"chatgpt ask --timeout",'Example: ppcli chatgpt ask "hello" --timeout 120'),s=n(e["deep-research"],!1),h=n(e["web-search"],!1),d=n(e.wait,!0);if(s&&h)throw new i("chatgpt ask cannot enable both --deep-research and --web-search","Choose one ChatGPT composer tool for this message.");if(n(e.new)&&e.conversation)throw new i("chatgpt ask cannot use --new and --conversation together","Choose either a new chat or an existing conversation.");if(e.project&&e.conversation)throw new i("chatgpt ask cannot use --project and --conversation together","Choose either a project new chat or an existing conversation.");const l=s?"deep-research":h?"web-search":null;if(e.conversation)await U(t,e.conversation);else if(e.project)await O(t,e.project);else if(n(e.new))await M(t);else await I(t);await y(t,"ChatGPT ask requires a logged-in ChatGPT session with a visible composer.");const p=l?await q(t,l):null,w=Date.now();while(await F(t)){if(Date.now()-w>a*1000)throw new c("ChatGPT conversation is still generating; wait for it to finish before sending another message.");await t.wait(3)}const u=await D(t),f=u.length,C=R(u,o);if(!await x(t,o))throw new c("Failed to send message to ChatGPT",`Open ${G} and verify the composer is ready.`);const{conversationId:m,conversationUrl:r}=await L(t);if(!d)return[{conversationId:m,conversationUrl:r,tool:p?.Tool??"",response:""}];const T=await A(t,f,o,a,{baselinePairCounts:C,conversationUrl:r});return[{conversationId:m,conversationUrl:r,tool:p?.Tool??"",response:T}]}});
@@ -1,4 +1,4 @@
1
- import{AuthRequiredError as G,CommandExecutionError as D}from"@jackwener/opencli/errors";import{registerSiteAuthCommands as K}from"../_shared/site-auth.js";async function H(B){return(await B.getCookies({url:"https://chatgpt.com"})).some((F)=>F.name.startsWith("__Secure-next-auth.session-token")&&F.value)}async function J(B){await B.goto("https://chatgpt.com/");await B.wait(2);const z=await B.evaluate(`(async () => {
1
+ import{AuthRequiredError as a,CommandExecutionError as i}from"@jackwener/opencli/errors";import{registerSiteAuthCommands as o}from"../_shared/site-auth.js";async function n(e){return(await e.getCookies({url:"https://chatgpt.com"})).some((s)=>s.name.startsWith("__Secure-next-auth.session-token")&&s.value)}async function r(e){await e.goto("https://chatgpt.com/");await e.wait(2);const t=await e.evaluate(`(async () => {
2
2
  try {
3
3
  const res = await fetch('/api/auth/session', { credentials: 'include' });
4
4
  if (res.status === 401 || res.status === 403) {
@@ -14,4 +14,4 @@ import{AuthRequiredError as G,CommandExecutionError as D}from"@jackwener/opencli
14
14
  } catch (e) {
15
15
  return { kind: 'exception', detail: String(e && e.message || e) };
16
16
  }
17
- })()`);if(z?.kind==="auth")throw new G("chatgpt.com",z.detail);if(z?.kind==="http")throw new D(`HTTP ${z.httpStatus} from /api/auth/session`);if(z?.kind==="exception")throw new D(`ChatGPT whoami failed: ${z.detail}`);if(!z?.ok)throw new D(`Unexpected ChatGPT probe: ${JSON.stringify(z)}`);return{user_id:z.user_id,name:z.name}}K({site:"chatgpt",domain:"chatgpt.com",loginUrl:"https://auth.openai.com/log-in",columns:["user_id","name"],quickCheck:H,verify:J,poll:async(B)=>{if(!await H(B))throw new G("chatgpt.com","Waiting for ChatGPT session cookie");return J(B)}});
17
+ })()`);if(t?.kind==="auth")throw new a("chatgpt.com",t.detail);if(t?.kind==="http")throw new i(`HTTP ${t.httpStatus} from /api/auth/session`);if(t?.kind==="exception")throw new i(`ChatGPT whoami failed: ${t.detail}`);if(!t?.ok)throw new i(`Unexpected ChatGPT probe: ${JSON.stringify(t)}`);return{user_id:t.user_id,name:t.name}}o({site:"chatgpt",domain:"chatgpt.com",loginUrl:"https://auth.openai.com/log-in",columns:["user_id","name"],quickCheck:n,verify:r,poll:async(e)=>{if(!await n(e))throw new a("chatgpt.com","Waiting for ChatGPT session cookie");return r(e)}});
@@ -1 +1 @@
1
- import{cli as V,Strategy as W}from"@jackwener/opencli/registry";import{EmptyResultError as q}from"@jackwener/opencli/errors";import{CHATGPT_DOMAIN as z,CHATGPT_URL as B,CONVERSATION_MESSAGE_SELECTOR as H,ensureChatGPTLogin as b,getChatGPTDetailRows as j,normalizeBooleanFlag as Q,parseChatGPTConversationId as D,requireNonNegativeInt as F,requirePositiveInt as v,waitForChatGPTDetailRows as L}from"./utils.js";export const detailCommand=V({site:"chatgpt",name:"detail",access:"read",description:"Open a ChatGPT web conversation by ID and read its messages",domain:z,strategy:W.COOKIE,browser:!0,siteSession:"persistent",navigateBefore:!1,args:[{name:"id",positional:!0,required:!0,help:"Conversation ID or full /c/<id> URL"},{name:"markdown",type:"boolean",default:!1,help:"Emit assistant replies as markdown"},{name:"wait",type:"boolean",default:!1,help:"Wait until the conversation stops generating and stabilizes"},{name:"timeout",type:"int",default:120,help:"Max seconds to wait when --wait is true"},{name:"stable",type:"int",default:6,help:"Seconds the final messages must remain unchanged when --wait is true"}],columns:["Index","Role","Text","Generating","StableSeconds"],func:async(f,x)=>{const J=D(x.id),K=Q(x.markdown,!1),X=Q(x.wait,!1),Y=v(Number(x.timeout??120),"chatgpt detail --timeout","Example: ppcli chatgpt detail <id> --wait true --timeout 600"),Z=F(Number(x.stable??6),"chatgpt detail --stable","Example: ppcli chatgpt detail <id> --wait true --stable 6");await f.goto(`${B}/c/${J}`,{settleMs:2000});try{await f.wait({selector:H,timeout:10})}catch{}await b(f,"ChatGPT detail requires a logged-in ChatGPT session.");const{messages:$,rows:U}=X?await L(f,{wantMarkdown:K,timeoutSeconds:Y,stableSeconds:Z}):await j(f,{wantMarkdown:K});if(!$.length)throw new q("chatgpt detail",`No visible ChatGPT messages were found for conversation ${J}.`);return U}});
1
+ import{cli as m,Strategy as c}from"@jackwener/opencli/registry";import{EmptyResultError as u}from"@jackwener/opencli/errors";import{CHATGPT_DOMAIN as p,CHATGPT_URL as h,CONVERSATION_MESSAGE_SELECTOR as w,ensureChatGPTLogin as f,getChatGPTDetailRows as g,normalizeBooleanFlag as s,parseChatGPTConversationId as C,requireNonNegativeInt as b,requirePositiveInt as T,waitForChatGPTDetailRows as G}from"./utils.js";export const detailCommand=m({site:"chatgpt",name:"detail",access:"read",description:"Open a ChatGPT web conversation by ID and read its messages",domain:p,strategy:c.COOKIE,browser:!0,siteSession:"persistent",navigateBefore:!1,args:[{name:"id",positional:!0,required:!0,help:"Conversation ID or full /c/<id> URL"},{name:"markdown",type:"boolean",default:!1,help:"Emit assistant replies as markdown"},{name:"wait",type:"boolean",default:!1,help:"Wait until the conversation stops generating and stabilizes"},{name:"timeout",type:"int",default:120,help:"Max seconds to wait when --wait is true"},{name:"stable",type:"int",default:6,help:"Seconds the final messages must remain unchanged when --wait is true"}],columns:["Index","Role","Text","Generating","StableSeconds"],func:async(t,e)=>{const a=C(e.id),i=s(e.markdown,!1),o=s(e.wait,!1),n=T(Number(e.timeout??120),"chatgpt detail --timeout","Example: ppcli chatgpt detail <id> --wait true --timeout 600"),r=b(Number(e.stable??6),"chatgpt detail --stable","Example: ppcli chatgpt detail <id> --wait true --stable 6");await t.goto(`${h}/c/${a}`,{settleMs:2000});try{await t.wait({selector:w,timeout:10})}catch{}await f(t,"ChatGPT detail requires a logged-in ChatGPT session.");const{messages:l,rows:d}=o?await G(t,{wantMarkdown:i,timeoutSeconds:n,stableSeconds:r}):await g(t,{wantMarkdown:i});if(!l.length)throw new u("chatgpt detail",`No visible ChatGPT messages were found for conversation ${a}.`);return d}});
@@ -1 +1 @@
1
- import*as H from"node:os";import*as $ from"node:path";import*as I from"node:fs";import{cli as f,Strategy as E}from"@jackwener/opencli/registry";import{saveBase64ToFile as T}from"@jackwener/opencli/utils";import{ArgumentError as y,CommandExecutionError as _,EmptyResultError as v}from"@jackwener/opencli/errors";import{clearChatGPTDraft as C,getChatGPTVisibleImageUrls as x,navigateToProject as k,normalizeBooleanFlag as c,prepareChatGPTImagePaths as w,sendChatGPTMessage as P,unwrapEvaluateResult as h,waitForChatGPTImages as d,getChatGPTImageAssets as u,uploadChatGPTImages as n}from"./utils.js";const N="chatgpt.com";function m(q){if(q.includes("png"))return".png";if(q.includes("webp"))return".webp";if(q.includes("gif"))return".gif";return".jpg"}function l(q){const J=H.homedir();return q.startsWith(J)?`~${q.slice(J.length)}`:q}export function resolveOutputDir(q){const J=String(q||"").trim();if(!J)return $.join(H.homedir(),"Pictures","chatgpt");if(J==="~")return H.homedir();if(J.startsWith("~/"))return $.join(H.homedir(),J.slice(2));return $.resolve(J)}export function nextAvailablePath(q,J,z,W=I.existsSync){let Y=$.join(q,`${J}${z}`);for(let X=1;W(Y);X+=1)Y=$.join(q,`${J}_${X}${z}`);return Y}export function parseImagePaths(q){if(Array.isArray(q))return q.flatMap((J)=>parseImagePaths(J));return String(q??"").split(",").map((J)=>J.trim()).filter(Boolean)}function g(q,J){if(J>0)return`Edit the attached image${J===1?"":"s"}: ${q}`;return`Generate an image of: ${q}`}async function F(q){const J=h(await q.evaluate("window.location.href").catch(()=>""));return typeof J==="string"&&J?J:"https://chatgpt.com"}export const imageCommand=f({site:"chatgpt",name:"image",access:"write",description:"Generate images with ChatGPT web and save them locally",domain:N,strategy:E.COOKIE,browser:!0,siteSession:"persistent",navigateBefore:!1,defaultFormat:"plain",args:[{name:"prompt",fromFile:!0,positional:!0,required:!0,help:"Image prompt to send to ChatGPT"},{name:"image",help:"Local image path to attach before prompting; comma-separated paths are supported"},{name:"project",valueRequired:!0,help:"Start image generation inside a ChatGPT project ID or /g/g-p-<id> URL"},{name:"op",help:"Output directory (default: ~/Pictures/chatgpt)"},{name:"sd",type:"boolean",default:!1,help:"Skip download shorthand; only show ChatGPT link"},{name:"timeout",type:"int",required:!1,default:240,help:"Max seconds for the overall command (default: 240)"}],columns:["status","file","link"],func:async(q,J)=>{const z=J.prompt,W=parseImagePaths(J.image),Y=resolveOutputDir(J.op),X=J.sd,R=X===""||X===!0||c(X),O=J.timeout;if(!Number.isInteger(O)||O<1)throw new y("--timeout must be a positive integer (seconds)");const S=W.length?await w(W):{ok:!0,paths:[]};if(!S.ok)throw new y(S.reason);if(J.project)await k(q,J.project);else await q.goto(`https://${N}/new`,{settleMs:2000});await C(q);if(W.length){let K;try{K=await n(q,S.paths)}catch(Q){throw new _(`Failed to upload image to ChatGPT: ${Q instanceof Error?Q.message:String(Q)}`)}if(!K?.ok)throw new _(K?.reason||"Failed to upload image to ChatGPT")}const A=await x(q);if(!await P(q,g(z,W.length)))throw new _("Failed to send image prompt to ChatGPT",`Open ${await F(q)} and verify the composer is ready.`);let Z="";for(let K=0;K<10;K++){const Q=await F(q);if(Q.includes("/c/")){Z=Q;break}await q.sleep(2)}if(!Z)Z=await F(q);const L=await d(q,A,O,Z),V=Z;if(!L.length)throw new v("chatgpt image",`No generated images were detected before timeout. Open ${V} and verify whether ChatGPT finished generating the image.`);if(R)return[{status:"\uD83C\uDFA8 generated",file:"\uD83D\uDCC1 -",link:`\uD83D\uDD17 ${V}`}];const B=await u(q,L);if(!B.length)throw new _("Failed to export generated ChatGPT image assets",`Open ${V} and verify the generated images are visible, then retry.`);const U=Date.now(),M=[];for(let K=0;K<B.length;K+=1){const Q=B[K],D=Q.dataUrl.replace(/^data:[^;]+;base64,/,""),b=B.length>1?`_${K+1}`:"",G=m(Q.mimeType),j=nextAvailablePath(Y,`chatgpt_${U}${b}`,G);await T(D,j);M.push({status:"✅ saved",file:`\uD83D\uDCC1 ${l(j)}`,link:`\uD83D\uDD17 ${V}`})}return M}});
1
+ import*as h from"node:os";import*as l from"node:path";import*as F from"node:fs";import{cli as E,Strategy as D}from"@jackwener/opencli/registry";import{saveBase64ToFile as O}from"@jackwener/opencli/utils";import{ArgumentError as T,CommandExecutionError as u,EmptyResultError as S}from"@jackwener/opencli/errors";import{clearChatGPTDraft as k,getChatGPTVisibleImageUrls as A,navigateToProject as M,normalizeBooleanFlag as R,prepareChatGPTImagePaths as U,sendChatGPTMessage as B,unwrapEvaluateResult as _,waitForChatGPTImages as q,getChatGPTImageAssets as L,uploadChatGPTImages as N}from"./utils.js";const C="chatgpt.com";function W(t){if(t.includes("png"))return".png";if(t.includes("webp"))return".webp";if(t.includes("gif"))return".gif";return".jpg"}function z(t){const e=h.homedir();return t.startsWith(e)?`~${t.slice(e.length)}`:t}export function resolveOutputDir(t){const e=String(t||"").trim();if(!e)return l.join(h.homedir(),"Pictures","chatgpt");if(e==="~")return h.homedir();if(e.startsWith("~/"))return l.join(h.homedir(),e.slice(2));return l.resolve(e)}export function nextAvailablePath(t,e,c,o=F.existsSync){let n=l.join(t,`${e}${c}`);for(let i=1;o(n);i+=1)n=l.join(t,`${e}_${i}${c}`);return n}export function parseImagePaths(t){if(Array.isArray(t))return t.flatMap((e)=>parseImagePaths(e));return String(t??"").split(",").map((e)=>e.trim()).filter(Boolean)}function H(t,e){if(e>0)return`Edit the attached image${e===1?"":"s"}: ${t}`;return`Generate an image of: ${t}`}async function g(t){const e=_(await t.evaluate("window.location.href").catch(()=>""));return typeof e==="string"&&e?e:"https://chatgpt.com"}export const imageCommand=E({site:"chatgpt",name:"image",access:"write",description:"Generate images with ChatGPT web and save them locally",domain:C,strategy:D.COOKIE,browser:!0,siteSession:"persistent",navigateBefore:!1,defaultFormat:"plain",args:[{name:"prompt",fromFile:!0,positional:!0,required:!0,help:"Image prompt to send to ChatGPT"},{name:"image",help:"Local image path to attach before prompting; comma-separated paths are supported"},{name:"project",valueRequired:!0,help:"Start image generation inside a ChatGPT project ID or /g/g-p-<id> URL"},{name:"op",help:"Output directory (default: ~/Pictures/chatgpt)"},{name:"sd",type:"boolean",default:!1,help:"Skip download shorthand; only show ChatGPT link"},{name:"timeout",type:"int",required:!1,default:240,help:"Max seconds for the overall command (default: 240)"}],columns:["status","file","link"],func:async(t,e)=>{const c=e.prompt,o=parseImagePaths(e.image),n=resolveOutputDir(e.op),i=e.sd,G=i===""||i===!0||R(i),d=e.timeout;if(!Number.isInteger(d)||d<1)throw new T("--timeout must be a positive integer (seconds)");const f=o.length?await U(o):{ok:!0,paths:[]};if(!f.ok)throw new T(f.reason);if(e.project)await M(t,e.project);else await t.goto(`https://${C}/new`,{settleMs:2000});await k(t);if(o.length){let a;try{a=await N(t,f.paths)}catch(r){throw new u(`Failed to upload image to ChatGPT: ${r instanceof Error?r.message:String(r)}`)}if(!a?.ok)throw new u(a?.reason||"Failed to upload image to ChatGPT")}const b=await A(t);if(!await B(t,H(c,o.length)))throw new u("Failed to send image prompt to ChatGPT",`Open ${await g(t)} and verify the composer is ready.`);let s="";for(let a=0;a<10;a++){const r=await g(t);if(r.includes("/c/")){s=r;break}await t.sleep(2)}if(!s)s=await g(t);const w=await q(t,b,d,s),m=s;if(!w.length)throw new S("chatgpt image",`No generated images were detected before timeout. Open ${m} and verify whether ChatGPT finished generating the image.`);if(G)return[{status:"\uD83C\uDFA8 generated",file:"\uD83D\uDCC1 -",link:`\uD83D\uDD17 ${m}`}];const p=await L(t,w);if(!p.length)throw new u("Failed to export generated ChatGPT image assets",`Open ${m} and verify the generated images are visible, then retry.`);const v=Date.now(),P=[];for(let a=0;a<p.length;a+=1){const r=p[a],x=r.dataUrl.replace(/^data:[^;]+;base64,/,""),I=p.length>1?`_${a+1}`:"",j=W(r.mimeType),y=nextAvailablePath(n,`chatgpt_${v}${I}`,j);await O(x,y);P.push({status:"✅ saved",file:`\uD83D\uDCC1 ${z(y)}`,link:`\uD83D\uDD17 ${m}`})}return P}});
@@ -1 +1 @@
1
- import{cli as Q,Strategy as U}from"@jackwener/opencli/registry";import{EmptyResultError as W}from"@jackwener/opencli/errors";import{CHATGPT_DOMAIN as X,ensureChatGPTLogin as Y,ensureOnChatGPT as Z,getVisibleMessages as $,messageHtmlToMarkdown as b,normalizeBooleanFlag as v}from"./utils.js";export const readCommand=Q({site:"chatgpt",name:"read",access:"read",description:"Read messages in the current ChatGPT web conversation",domain:X,strategy:U.COOKIE,browser:!0,siteSession:"persistent",navigateBefore:!1,args:[{name:"markdown",type:"boolean",default:!1,help:"Emit assistant replies as markdown"}],columns:["Index","Role","Text"],func:async(q,J)=>{const K=v(J.markdown,!1);await Z(q);await Y(q,"ChatGPT read requires a logged-in ChatGPT session.");const x=await $(q);if(!x.length)throw new W("chatgpt read","No visible ChatGPT messages were found in the current conversation.");return x.map((f)=>({Index:f.Index,Role:f.Role,Text:K&&f.Role==="Assistant"&&f.Html?b(f.Html)||f.Text:f.Text}))}});
1
+ import{cli as o,Strategy as s}from"@jackwener/opencli/registry";import{EmptyResultError as i}from"@jackwener/opencli/errors";import{CHATGPT_DOMAIN as l,ensureChatGPTLogin as d,ensureOnChatGPT as m,getVisibleMessages as c,messageHtmlToMarkdown as w,normalizeBooleanFlag as h}from"./utils.js";export const readCommand=o({site:"chatgpt",name:"read",access:"read",description:"Read messages in the current ChatGPT web conversation",domain:l,strategy:s.COOKIE,browser:!0,siteSession:"persistent",navigateBefore:!1,args:[{name:"markdown",type:"boolean",default:!1,help:"Emit assistant replies as markdown"}],columns:["Index","Role","Text"],func:async(t,n)=>{const r=h(n.markdown,!1);await m(t);await d(t,"ChatGPT read requires a logged-in ChatGPT session.");const a=await c(t);if(!a.length)throw new i("chatgpt read","No visible ChatGPT messages were found in the current conversation.");return a.map((e)=>({Index:e.Index,Role:e.Role,Text:r&&e.Role==="Assistant"&&e.Html?w(e.Html)||e.Text:e.Text}))}});
@@ -1 +1 @@
1
- import{cli as W,Strategy as X}from"@jackwener/opencli/registry";import{ArgumentError as Q,CommandExecutionError as Y}from"@jackwener/opencli/errors";import{CHATGPT_DOMAIN as Z,CHATGPT_URL as $,ensureChatGPTComposer as f,ensureOnChatGPT as q,normalizeBooleanFlag as V,openChatGPTConversation as x,requireNonEmptyPrompt as D,sendChatGPTMessage as I,startNewChat as L,navigateToProject as R}from"./utils.js";export const sendCommand=W({site:"chatgpt",name:"send",access:"write",description:"Send a prompt to ChatGPT web without waiting for the response",domain:Z,strategy:X.COOKIE,browser:!0,siteSession:"persistent",navigateBefore:!1,args:[{name:"prompt",fromFile:!0,positional:!0,required:!0,help:"Prompt to send"},{name:"new",type:"boolean",default:!1,help:"Start a new chat before sending"},{name:"conversation",valueRequired:!0,help:"Continue an existing ChatGPT conversation ID or /c/<id> URL"},{name:"project",valueRequired:!0,help:"Start a new chat inside a ChatGPT project ID or /g/g-p-<id> URL"}],columns:["Status","InjectedText"],func:async(J,b)=>{const K=D(b.prompt,"chatgpt send");if(V(b.new)&&b.conversation)throw new Q("chatgpt send cannot use --new and --conversation together","Choose either a new chat or an existing conversation.");if(b.project&&b.conversation)throw new Q("chatgpt send cannot use --project and --conversation together","Choose either a project new chat or an existing conversation.");if(b.conversation)await x(J,b.conversation);else if(b.project)await R(J,b.project);else if(V(b.new))await L(J);else await q(J);await f(J,"ChatGPT send requires a logged-in ChatGPT session with a visible composer.");if(!await I(J,K))throw new Y("Failed to send message to ChatGPT",`Open ${$} and verify the composer is ready.`);return[{Status:"Success",InjectedText:K}]}});
1
+ import{cli as r,Strategy as i}from"@jackwener/opencli/registry";import{ArgumentError as o,CommandExecutionError as s}from"@jackwener/opencli/errors";import{CHATGPT_DOMAIN as c,CHATGPT_URL as h,ensureChatGPTComposer as p,ensureOnChatGPT as m,normalizeBooleanFlag as a,openChatGPTConversation as d,requireNonEmptyPrompt as u,sendChatGPTMessage as l,startNewChat as C,navigateToProject as f}from"./utils.js";export const sendCommand=r({site:"chatgpt",name:"send",access:"write",description:"Send a prompt to ChatGPT web without waiting for the response",domain:c,strategy:i.COOKIE,browser:!0,siteSession:"persistent",navigateBefore:!1,args:[{name:"prompt",fromFile:!0,positional:!0,required:!0,help:"Prompt to send"},{name:"new",type:"boolean",default:!1,help:"Start a new chat before sending"},{name:"conversation",valueRequired:!0,help:"Continue an existing ChatGPT conversation ID or /c/<id> URL"},{name:"project",valueRequired:!0,help:"Start a new chat inside a ChatGPT project ID or /g/g-p-<id> URL"}],columns:["Status","InjectedText"],func:async(t,e)=>{const n=u(e.prompt,"chatgpt send");if(a(e.new)&&e.conversation)throw new o("chatgpt send cannot use --new and --conversation together","Choose either a new chat or an existing conversation.");if(e.project&&e.conversation)throw new o("chatgpt send cannot use --project and --conversation together","Choose either a project new chat or an existing conversation.");if(e.conversation)await d(t,e.conversation);else if(e.project)await f(t,e.project);else if(a(e.new))await C(t);else await m(t);await p(t,"ChatGPT send requires a logged-in ChatGPT session with a visible composer.");if(!await l(t,n))throw new s("Failed to send message to ChatGPT",`Open ${h} and verify the composer is ready.`);return[{Status:"Success",InjectedText:n}]}});