@huyuan-ai/cli 1.0.0 → 1.0.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 (1454) hide show
  1. package/package.json +14 -6
  2. package/vendor/opencli/dist/analysis.d.ts +38 -0
  3. package/vendor/opencli/dist/analysis.js +166 -0
  4. package/vendor/opencli/dist/browser/base-page.d.ts +50 -0
  5. package/vendor/opencli/dist/browser/base-page.js +193 -0
  6. package/vendor/opencli/dist/browser/bridge.d.ts +21 -0
  7. package/vendor/opencli/dist/browser/bridge.js +109 -0
  8. package/vendor/opencli/dist/browser/cdp.d.ts +40 -0
  9. package/vendor/opencli/dist/browser/cdp.js +310 -0
  10. package/vendor/opencli/dist/browser/cdp.test.d.ts +1 -0
  11. package/vendor/opencli/dist/browser/cdp.test.js +52 -0
  12. package/vendor/opencli/dist/browser/daemon-client.d.ts +74 -0
  13. package/vendor/opencli/dist/browser/daemon-client.js +113 -0
  14. package/vendor/opencli/dist/browser/daemon-client.test.d.ts +1 -0
  15. package/vendor/opencli/dist/browser/daemon-client.test.js +77 -0
  16. package/vendor/opencli/dist/browser/discover.d.ts +15 -0
  17. package/vendor/opencli/dist/browser/discover.js +19 -0
  18. package/vendor/opencli/dist/browser/dom-helpers.d.ts +41 -0
  19. package/vendor/opencli/dist/browser/dom-helpers.js +227 -0
  20. package/vendor/opencli/dist/browser/dom-helpers.test.d.ts +1 -0
  21. package/vendor/opencli/dist/browser/dom-helpers.test.js +105 -0
  22. package/vendor/opencli/dist/browser/dom-snapshot.d.ts +86 -0
  23. package/vendor/opencli/dist/browser/dom-snapshot.js +804 -0
  24. package/vendor/opencli/dist/browser/dom-snapshot.test.d.ts +11 -0
  25. package/vendor/opencli/dist/browser/dom-snapshot.test.js +248 -0
  26. package/vendor/opencli/dist/browser/errors.d.ts +13 -0
  27. package/vendor/opencli/dist/browser/errors.js +40 -0
  28. package/vendor/opencli/dist/browser/index.d.ts +13 -0
  29. package/vendor/opencli/dist/browser/index.js +12 -0
  30. package/vendor/opencli/dist/browser/page.d.ts +62 -0
  31. package/vendor/opencli/dist/browser/page.js +304 -0
  32. package/vendor/opencli/dist/browser/page.test.d.ts +1 -0
  33. package/vendor/opencli/dist/browser/page.test.js +44 -0
  34. package/vendor/opencli/dist/browser/stealth.d.ts +16 -0
  35. package/vendor/opencli/dist/browser/stealth.js +353 -0
  36. package/vendor/opencli/dist/browser/stealth.test.d.ts +1 -0
  37. package/vendor/opencli/dist/browser/stealth.test.js +134 -0
  38. package/vendor/opencli/dist/browser/tabs.d.ts +13 -0
  39. package/vendor/opencli/dist/browser/tabs.js +70 -0
  40. package/vendor/opencli/dist/browser/utils.d.ts +10 -0
  41. package/vendor/opencli/dist/browser/utils.js +27 -0
  42. package/vendor/opencli/dist/browser.test.d.ts +1 -0
  43. package/vendor/opencli/dist/browser.test.js +159 -0
  44. package/vendor/opencli/dist/build-manifest.d.ts +47 -0
  45. package/vendor/opencli/dist/build-manifest.js +225 -0
  46. package/vendor/opencli/dist/build-manifest.test.d.ts +1 -0
  47. package/vendor/opencli/dist/build-manifest.test.js +176 -0
  48. package/vendor/opencli/dist/capabilityRouting.d.ts +4 -0
  49. package/vendor/opencli/dist/capabilityRouting.js +31 -0
  50. package/vendor/opencli/dist/capabilityRouting.test.d.ts +1 -0
  51. package/vendor/opencli/dist/capabilityRouting.test.js +42 -0
  52. package/vendor/opencli/dist/cascade.d.ts +46 -0
  53. package/vendor/opencli/dist/cascade.js +149 -0
  54. package/vendor/opencli/dist/cli-manifest.json +16706 -0
  55. package/vendor/opencli/dist/cli.d.ts +9 -0
  56. package/vendor/opencli/dist/cli.js +953 -0
  57. package/vendor/opencli/dist/cli.test.d.ts +1 -0
  58. package/vendor/opencli/dist/cli.test.js +88 -0
  59. package/vendor/opencli/dist/clis/1688/item.d.ts +70 -0
  60. package/vendor/opencli/dist/clis/1688/item.js +187 -0
  61. package/vendor/opencli/dist/clis/1688/item.test.d.ts +1 -0
  62. package/vendor/opencli/dist/clis/1688/item.test.js +67 -0
  63. package/vendor/opencli/dist/clis/1688/search.d.ts +56 -0
  64. package/vendor/opencli/dist/clis/1688/search.js +309 -0
  65. package/vendor/opencli/dist/clis/1688/search.test.d.ts +1 -0
  66. package/vendor/opencli/dist/clis/1688/search.test.js +75 -0
  67. package/vendor/opencli/dist/clis/1688/shared.d.ts +112 -0
  68. package/vendor/opencli/dist/clis/1688/shared.js +514 -0
  69. package/vendor/opencli/dist/clis/1688/shared.test.d.ts +1 -0
  70. package/vendor/opencli/dist/clis/1688/shared.test.js +57 -0
  71. package/vendor/opencli/dist/clis/1688/store.d.ts +45 -0
  72. package/vendor/opencli/dist/clis/1688/store.js +226 -0
  73. package/vendor/opencli/dist/clis/1688/store.test.d.ts +1 -0
  74. package/vendor/opencli/dist/clis/1688/store.test.js +62 -0
  75. package/vendor/opencli/dist/clis/36kr/article.d.ts +1 -0
  76. package/vendor/opencli/dist/clis/36kr/article.js +62 -0
  77. package/vendor/opencli/dist/clis/36kr/hot.d.ts +3 -0
  78. package/vendor/opencli/dist/clis/36kr/hot.js +80 -0
  79. package/vendor/opencli/dist/clis/36kr/hot.test.d.ts +1 -0
  80. package/vendor/opencli/dist/clis/36kr/hot.test.js +15 -0
  81. package/vendor/opencli/dist/clis/36kr/news.d.ts +1 -0
  82. package/vendor/opencli/dist/clis/36kr/news.js +51 -0
  83. package/vendor/opencli/dist/clis/36kr/news.test.d.ts +1 -0
  84. package/vendor/opencli/dist/clis/36kr/news.test.js +85 -0
  85. package/vendor/opencli/dist/clis/36kr/search.d.ts +1 -0
  86. package/vendor/opencli/dist/clis/36kr/search.js +72 -0
  87. package/vendor/opencli/dist/clis/_shared/common.d.ts +8 -0
  88. package/vendor/opencli/dist/clis/_shared/common.js +10 -0
  89. package/vendor/opencli/dist/clis/_shared/desktop-commands.d.ts +22 -0
  90. package/vendor/opencli/dist/clis/_shared/desktop-commands.js +108 -0
  91. package/vendor/opencli/dist/clis/amazon/bestsellers.d.ts +1 -0
  92. package/vendor/opencli/dist/clis/amazon/bestsellers.js +7 -0
  93. package/vendor/opencli/dist/clis/amazon/bestsellers.test.d.ts +1 -0
  94. package/vendor/opencli/dist/clis/amazon/bestsellers.test.js +29 -0
  95. package/vendor/opencli/dist/clis/amazon/discussion.d.ts +20 -0
  96. package/vendor/opencli/dist/clis/amazon/discussion.js +91 -0
  97. package/vendor/opencli/dist/clis/amazon/discussion.test.d.ts +1 -0
  98. package/vendor/opencli/dist/clis/amazon/discussion.test.js +36 -0
  99. package/vendor/opencli/dist/clis/amazon/movers-shakers.d.ts +1 -0
  100. package/vendor/opencli/dist/clis/amazon/movers-shakers.js +7 -0
  101. package/vendor/opencli/dist/clis/amazon/new-releases.d.ts +1 -0
  102. package/vendor/opencli/dist/clis/amazon/new-releases.js +7 -0
  103. package/vendor/opencli/dist/clis/amazon/offer.d.ts +23 -0
  104. package/vendor/opencli/dist/clis/amazon/offer.js +140 -0
  105. package/vendor/opencli/dist/clis/amazon/offer.test.d.ts +1 -0
  106. package/vendor/opencli/dist/clis/amazon/offer.test.js +29 -0
  107. package/vendor/opencli/dist/clis/amazon/product.d.ts +18 -0
  108. package/vendor/opencli/dist/clis/amazon/product.js +92 -0
  109. package/vendor/opencli/dist/clis/amazon/product.test.d.ts +1 -0
  110. package/vendor/opencli/dist/clis/amazon/product.test.js +24 -0
  111. package/vendor/opencli/dist/clis/amazon/rankings.d.ts +59 -0
  112. package/vendor/opencli/dist/clis/amazon/rankings.js +226 -0
  113. package/vendor/opencli/dist/clis/amazon/rankings.test.d.ts +1 -0
  114. package/vendor/opencli/dist/clis/amazon/rankings.test.js +41 -0
  115. package/vendor/opencli/dist/clis/amazon/search.d.ts +18 -0
  116. package/vendor/opencli/dist/clis/amazon/search.js +87 -0
  117. package/vendor/opencli/dist/clis/amazon/search.test.d.ts +1 -0
  118. package/vendor/opencli/dist/clis/amazon/search.test.js +22 -0
  119. package/vendor/opencli/dist/clis/amazon/shared.d.ts +75 -0
  120. package/vendor/opencli/dist/clis/amazon/shared.js +365 -0
  121. package/vendor/opencli/dist/clis/amazon/shared.test.d.ts +1 -0
  122. package/vendor/opencli/dist/clis/amazon/shared.test.js +44 -0
  123. package/vendor/opencli/dist/clis/antigravity/dump.d.ts +1 -0
  124. package/vendor/opencli/dist/clis/antigravity/dump.js +28 -0
  125. package/vendor/opencli/dist/clis/antigravity/extract-code.d.ts +1 -0
  126. package/vendor/opencli/dist/clis/antigravity/extract-code.js +32 -0
  127. package/vendor/opencli/dist/clis/antigravity/model.d.ts +1 -0
  128. package/vendor/opencli/dist/clis/antigravity/model.js +44 -0
  129. package/vendor/opencli/dist/clis/antigravity/new.d.ts +1 -0
  130. package/vendor/opencli/dist/clis/antigravity/new.js +25 -0
  131. package/vendor/opencli/dist/clis/antigravity/read.d.ts +1 -0
  132. package/vendor/opencli/dist/clis/antigravity/read.js +34 -0
  133. package/vendor/opencli/dist/clis/antigravity/send.d.ts +1 -0
  134. package/vendor/opencli/dist/clis/antigravity/send.js +35 -0
  135. package/vendor/opencli/dist/clis/antigravity/serve.d.ts +14 -0
  136. package/vendor/opencli/dist/clis/antigravity/serve.js +512 -0
  137. package/vendor/opencli/dist/clis/antigravity/status.d.ts +1 -0
  138. package/vendor/opencli/dist/clis/antigravity/status.js +18 -0
  139. package/vendor/opencli/dist/clis/antigravity/watch.d.ts +1 -0
  140. package/vendor/opencli/dist/clis/antigravity/watch.js +41 -0
  141. package/vendor/opencli/dist/clis/apple-podcasts/commands.test.d.ts +2 -0
  142. package/vendor/opencli/dist/clis/apple-podcasts/commands.test.js +99 -0
  143. package/vendor/opencli/dist/clis/apple-podcasts/episodes.d.ts +1 -0
  144. package/vendor/opencli/dist/clis/apple-podcasts/episodes.js +28 -0
  145. package/vendor/opencli/dist/clis/apple-podcasts/search.d.ts +1 -0
  146. package/vendor/opencli/dist/clis/apple-podcasts/search.js +30 -0
  147. package/vendor/opencli/dist/clis/apple-podcasts/top.d.ts +1 -0
  148. package/vendor/opencli/dist/clis/apple-podcasts/top.js +44 -0
  149. package/vendor/opencli/dist/clis/apple-podcasts/utils.d.ts +11 -0
  150. package/vendor/opencli/dist/clis/apple-podcasts/utils.js +30 -0
  151. package/vendor/opencli/dist/clis/apple-podcasts/utils.test.d.ts +1 -0
  152. package/vendor/opencli/dist/clis/apple-podcasts/utils.test.js +57 -0
  153. package/vendor/opencli/dist/clis/arxiv/paper.d.ts +1 -0
  154. package/vendor/opencli/dist/clis/arxiv/paper.js +21 -0
  155. package/vendor/opencli/dist/clis/arxiv/search.d.ts +1 -0
  156. package/vendor/opencli/dist/clis/arxiv/search.js +24 -0
  157. package/vendor/opencli/dist/clis/arxiv/utils.d.ts +18 -0
  158. package/vendor/opencli/dist/clis/arxiv/utils.js +49 -0
  159. package/vendor/opencli/dist/clis/band/bands.d.ts +1 -0
  160. package/vendor/opencli/dist/clis/band/bands.js +72 -0
  161. package/vendor/opencli/dist/clis/band/mentions.d.ts +1 -0
  162. package/vendor/opencli/dist/clis/band/mentions.js +127 -0
  163. package/vendor/opencli/dist/clis/band/post.d.ts +1 -0
  164. package/vendor/opencli/dist/clis/band/post.js +175 -0
  165. package/vendor/opencli/dist/clis/band/posts.d.ts +1 -0
  166. package/vendor/opencli/dist/clis/band/posts.js +94 -0
  167. package/vendor/opencli/dist/clis/barchart/flow.d.ts +1 -0
  168. package/vendor/opencli/dist/clis/barchart/flow.js +115 -0
  169. package/vendor/opencli/dist/clis/barchart/greeks.d.ts +1 -0
  170. package/vendor/opencli/dist/clis/barchart/greeks.js +119 -0
  171. package/vendor/opencli/dist/clis/barchart/options.d.ts +1 -0
  172. package/vendor/opencli/dist/clis/barchart/options.js +106 -0
  173. package/vendor/opencli/dist/clis/barchart/quote.d.ts +1 -0
  174. package/vendor/opencli/dist/clis/barchart/quote.js +133 -0
  175. package/vendor/opencli/dist/clis/bbc/news.d.ts +1 -0
  176. package/vendor/opencli/dist/clis/bbc/news.js +41 -0
  177. package/vendor/opencli/dist/clis/bilibili/comments.d.ts +5 -0
  178. package/vendor/opencli/dist/clis/bilibili/comments.js +40 -0
  179. package/vendor/opencli/dist/clis/bilibili/comments.test.d.ts +1 -0
  180. package/vendor/opencli/dist/clis/bilibili/comments.test.js +83 -0
  181. package/vendor/opencli/dist/clis/bilibili/download.d.ts +10 -0
  182. package/vendor/opencli/dist/clis/bilibili/download.js +81 -0
  183. package/vendor/opencli/dist/clis/bilibili/dynamic.d.ts +1 -0
  184. package/vendor/opencli/dist/clis/bilibili/dynamic.js +33 -0
  185. package/vendor/opencli/dist/clis/bilibili/dynamic.test.d.ts +1 -0
  186. package/vendor/opencli/dist/clis/bilibili/dynamic.test.js +68 -0
  187. package/vendor/opencli/dist/clis/bilibili/favorite.d.ts +1 -0
  188. package/vendor/opencli/dist/clis/bilibili/favorite.js +41 -0
  189. package/vendor/opencli/dist/clis/bilibili/feed.d.ts +1 -0
  190. package/vendor/opencli/dist/clis/bilibili/feed.js +64 -0
  191. package/vendor/opencli/dist/clis/bilibili/following.d.ts +1 -0
  192. package/vendor/opencli/dist/clis/bilibili/following.js +42 -0
  193. package/vendor/opencli/dist/clis/bilibili/history.d.ts +1 -0
  194. package/vendor/opencli/dist/clis/bilibili/history.js +44 -0
  195. package/vendor/opencli/dist/clis/bilibili/hot.yaml +38 -0
  196. package/vendor/opencli/dist/clis/bilibili/me.d.ts +1 -0
  197. package/vendor/opencli/dist/clis/bilibili/me.js +13 -0
  198. package/vendor/opencli/dist/clis/bilibili/ranking.d.ts +1 -0
  199. package/vendor/opencli/dist/clis/bilibili/ranking.js +24 -0
  200. package/vendor/opencli/dist/clis/bilibili/search.d.ts +1 -0
  201. package/vendor/opencli/dist/clis/bilibili/search.js +24 -0
  202. package/vendor/opencli/dist/clis/bilibili/subtitle.d.ts +1 -0
  203. package/vendor/opencli/dist/clis/bilibili/subtitle.js +92 -0
  204. package/vendor/opencli/dist/clis/bilibili/subtitle.test.d.ts +1 -0
  205. package/vendor/opencli/dist/clis/bilibili/subtitle.test.js +49 -0
  206. package/vendor/opencli/dist/clis/bilibili/user-videos.d.ts +1 -0
  207. package/vendor/opencli/dist/clis/bilibili/user-videos.js +38 -0
  208. package/vendor/opencli/dist/clis/bilibili/utils.d.ts +19 -0
  209. package/vendor/opencli/dist/clis/bilibili/utils.js +126 -0
  210. package/vendor/opencli/dist/clis/bilibili/utils.test.d.ts +1 -0
  211. package/vendor/opencli/dist/clis/bilibili/utils.test.js +17 -0
  212. package/vendor/opencli/dist/clis/bloomberg/businessweek.d.ts +1 -0
  213. package/vendor/opencli/dist/clis/bloomberg/businessweek.js +17 -0
  214. package/vendor/opencli/dist/clis/bloomberg/economics.d.ts +1 -0
  215. package/vendor/opencli/dist/clis/bloomberg/economics.js +17 -0
  216. package/vendor/opencli/dist/clis/bloomberg/feeds.d.ts +1 -0
  217. package/vendor/opencli/dist/clis/bloomberg/feeds.js +15 -0
  218. package/vendor/opencli/dist/clis/bloomberg/industries.d.ts +1 -0
  219. package/vendor/opencli/dist/clis/bloomberg/industries.js +17 -0
  220. package/vendor/opencli/dist/clis/bloomberg/main.d.ts +1 -0
  221. package/vendor/opencli/dist/clis/bloomberg/main.js +17 -0
  222. package/vendor/opencli/dist/clis/bloomberg/markets.d.ts +1 -0
  223. package/vendor/opencli/dist/clis/bloomberg/markets.js +17 -0
  224. package/vendor/opencli/dist/clis/bloomberg/news.d.ts +1 -0
  225. package/vendor/opencli/dist/clis/bloomberg/news.js +105 -0
  226. package/vendor/opencli/dist/clis/bloomberg/opinions.d.ts +1 -0
  227. package/vendor/opencli/dist/clis/bloomberg/opinions.js +17 -0
  228. package/vendor/opencli/dist/clis/bloomberg/politics.d.ts +1 -0
  229. package/vendor/opencli/dist/clis/bloomberg/politics.js +17 -0
  230. package/vendor/opencli/dist/clis/bloomberg/tech.d.ts +1 -0
  231. package/vendor/opencli/dist/clis/bloomberg/tech.js +17 -0
  232. package/vendor/opencli/dist/clis/bloomberg/utils.d.ts +34 -0
  233. package/vendor/opencli/dist/clis/bloomberg/utils.js +364 -0
  234. package/vendor/opencli/dist/clis/bloomberg/utils.test.d.ts +1 -0
  235. package/vendor/opencli/dist/clis/bloomberg/utils.test.js +129 -0
  236. package/vendor/opencli/dist/clis/bluesky/feeds.yaml +29 -0
  237. package/vendor/opencli/dist/clis/bluesky/followers.yaml +33 -0
  238. package/vendor/opencli/dist/clis/bluesky/following.yaml +33 -0
  239. package/vendor/opencli/dist/clis/bluesky/profile.yaml +27 -0
  240. package/vendor/opencli/dist/clis/bluesky/search.yaml +34 -0
  241. package/vendor/opencli/dist/clis/bluesky/starter-packs.yaml +34 -0
  242. package/vendor/opencli/dist/clis/bluesky/thread.yaml +32 -0
  243. package/vendor/opencli/dist/clis/bluesky/trending.yaml +27 -0
  244. package/vendor/opencli/dist/clis/bluesky/user.yaml +34 -0
  245. package/vendor/opencli/dist/clis/boss/batchgreet.d.ts +1 -0
  246. package/vendor/opencli/dist/clis/boss/batchgreet.js +60 -0
  247. package/vendor/opencli/dist/clis/boss/chatlist.d.ts +1 -0
  248. package/vendor/opencli/dist/clis/boss/chatlist.js +33 -0
  249. package/vendor/opencli/dist/clis/boss/chatmsg.d.ts +1 -0
  250. package/vendor/opencli/dist/clis/boss/chatmsg.js +42 -0
  251. package/vendor/opencli/dist/clis/boss/detail.d.ts +1 -0
  252. package/vendor/opencli/dist/clis/boss/detail.js +62 -0
  253. package/vendor/opencli/dist/clis/boss/exchange.d.ts +1 -0
  254. package/vendor/opencli/dist/clis/boss/exchange.js +45 -0
  255. package/vendor/opencli/dist/clis/boss/greet.d.ts +1 -0
  256. package/vendor/opencli/dist/clis/boss/greet.js +48 -0
  257. package/vendor/opencli/dist/clis/boss/invite.d.ts +1 -0
  258. package/vendor/opencli/dist/clis/boss/invite.js +63 -0
  259. package/vendor/opencli/dist/clis/boss/joblist.d.ts +1 -0
  260. package/vendor/opencli/dist/clis/boss/joblist.js +30 -0
  261. package/vendor/opencli/dist/clis/boss/mark.d.ts +1 -0
  262. package/vendor/opencli/dist/clis/boss/mark.js +69 -0
  263. package/vendor/opencli/dist/clis/boss/recommend.d.ts +1 -0
  264. package/vendor/opencli/dist/clis/boss/recommend.js +44 -0
  265. package/vendor/opencli/dist/clis/boss/resume.d.ts +1 -0
  266. package/vendor/opencli/dist/clis/boss/resume.js +149 -0
  267. package/vendor/opencli/dist/clis/boss/search.d.ts +1 -0
  268. package/vendor/opencli/dist/clis/boss/search.js +155 -0
  269. package/vendor/opencli/dist/clis/boss/send.d.ts +1 -0
  270. package/vendor/opencli/dist/clis/boss/send.js +43 -0
  271. package/vendor/opencli/dist/clis/boss/stats.d.ts +1 -0
  272. package/vendor/opencli/dist/clis/boss/stats.js +65 -0
  273. package/vendor/opencli/dist/clis/boss/utils.d.ts +92 -0
  274. package/vendor/opencli/dist/clis/boss/utils.js +223 -0
  275. package/vendor/opencli/dist/clis/chaoxing/assignments.d.ts +1 -0
  276. package/vendor/opencli/dist/clis/chaoxing/assignments.js +75 -0
  277. package/vendor/opencli/dist/clis/chaoxing/exams.d.ts +1 -0
  278. package/vendor/opencli/dist/clis/chaoxing/exams.js +74 -0
  279. package/vendor/opencli/dist/clis/chaoxing/utils.d.ts +58 -0
  280. package/vendor/opencli/dist/clis/chaoxing/utils.js +223 -0
  281. package/vendor/opencli/dist/clis/chaoxing/utils.test.d.ts +1 -0
  282. package/vendor/opencli/dist/clis/chaoxing/utils.test.js +45 -0
  283. package/vendor/opencli/dist/clis/chatgpt/ask.d.ts +1 -0
  284. package/vendor/opencli/dist/clis/chatgpt/ask.js +88 -0
  285. package/vendor/opencli/dist/clis/chatgpt/ax.d.ts +7 -0
  286. package/vendor/opencli/dist/clis/chatgpt/ax.js +249 -0
  287. package/vendor/opencli/dist/clis/chatgpt/model.d.ts +1 -0
  288. package/vendor/opencli/dist/clis/chatgpt/model.js +24 -0
  289. package/vendor/opencli/dist/clis/chatgpt/new.d.ts +1 -0
  290. package/vendor/opencli/dist/clis/chatgpt/new.js +27 -0
  291. package/vendor/opencli/dist/clis/chatgpt/read.d.ts +1 -0
  292. package/vendor/opencli/dist/clis/chatgpt/read.js +31 -0
  293. package/vendor/opencli/dist/clis/chatgpt/send.d.ts +1 -0
  294. package/vendor/opencli/dist/clis/chatgpt/send.js +52 -0
  295. package/vendor/opencli/dist/clis/chatgpt/status.d.ts +1 -0
  296. package/vendor/opencli/dist/clis/chatgpt/status.js +25 -0
  297. package/vendor/opencli/dist/clis/chatwise/ask.d.ts +1 -0
  298. package/vendor/opencli/dist/clis/chatwise/ask.js +80 -0
  299. package/vendor/opencli/dist/clis/chatwise/export.d.ts +1 -0
  300. package/vendor/opencli/dist/clis/chatwise/export.js +46 -0
  301. package/vendor/opencli/dist/clis/chatwise/history.d.ts +1 -0
  302. package/vendor/opencli/dist/clis/chatwise/history.js +60 -0
  303. package/vendor/opencli/dist/clis/chatwise/model.d.ts +1 -0
  304. package/vendor/opencli/dist/clis/chatwise/model.js +84 -0
  305. package/vendor/opencli/dist/clis/chatwise/new.d.ts +1 -0
  306. package/vendor/opencli/dist/clis/chatwise/new.js +2 -0
  307. package/vendor/opencli/dist/clis/chatwise/read.d.ts +1 -0
  308. package/vendor/opencli/dist/clis/chatwise/read.js +39 -0
  309. package/vendor/opencli/dist/clis/chatwise/screenshot.d.ts +1 -0
  310. package/vendor/opencli/dist/clis/chatwise/screenshot.js +2 -0
  311. package/vendor/opencli/dist/clis/chatwise/send.d.ts +1 -0
  312. package/vendor/opencli/dist/clis/chatwise/send.js +49 -0
  313. package/vendor/opencli/dist/clis/chatwise/status.d.ts +1 -0
  314. package/vendor/opencli/dist/clis/chatwise/status.js +2 -0
  315. package/vendor/opencli/dist/clis/codex/ask.d.ts +1 -0
  316. package/vendor/opencli/dist/clis/codex/ask.js +71 -0
  317. package/vendor/opencli/dist/clis/codex/dump.d.ts +1 -0
  318. package/vendor/opencli/dist/clis/codex/dump.js +2 -0
  319. package/vendor/opencli/dist/clis/codex/export.d.ts +1 -0
  320. package/vendor/opencli/dist/clis/codex/export.js +37 -0
  321. package/vendor/opencli/dist/clis/codex/extract-diff.d.ts +1 -0
  322. package/vendor/opencli/dist/clis/codex/extract-diff.js +44 -0
  323. package/vendor/opencli/dist/clis/codex/history.d.ts +1 -0
  324. package/vendor/opencli/dist/clis/codex/history.js +43 -0
  325. package/vendor/opencli/dist/clis/codex/model.d.ts +1 -0
  326. package/vendor/opencli/dist/clis/codex/model.js +55 -0
  327. package/vendor/opencli/dist/clis/codex/new.d.ts +1 -0
  328. package/vendor/opencli/dist/clis/codex/new.js +2 -0
  329. package/vendor/opencli/dist/clis/codex/read.d.ts +1 -0
  330. package/vendor/opencli/dist/clis/codex/read.js +34 -0
  331. package/vendor/opencli/dist/clis/codex/screenshot.d.ts +1 -0
  332. package/vendor/opencli/dist/clis/codex/screenshot.js +2 -0
  333. package/vendor/opencli/dist/clis/codex/send.d.ts +1 -0
  334. package/vendor/opencli/dist/clis/codex/send.js +43 -0
  335. package/vendor/opencli/dist/clis/codex/status.d.ts +1 -0
  336. package/vendor/opencli/dist/clis/codex/status.js +2 -0
  337. package/vendor/opencli/dist/clis/coupang/add-to-cart.d.ts +1 -0
  338. package/vendor/opencli/dist/clis/coupang/add-to-cart.js +140 -0
  339. package/vendor/opencli/dist/clis/coupang/search.d.ts +1 -0
  340. package/vendor/opencli/dist/clis/coupang/search.js +451 -0
  341. package/vendor/opencli/dist/clis/coupang/utils.d.ts +24 -0
  342. package/vendor/opencli/dist/clis/coupang/utils.js +262 -0
  343. package/vendor/opencli/dist/clis/coupang/utils.test.d.ts +1 -0
  344. package/vendor/opencli/dist/clis/coupang/utils.test.js +62 -0
  345. package/vendor/opencli/dist/clis/ctrip/search.d.ts +14 -0
  346. package/vendor/opencli/dist/clis/ctrip/search.js +86 -0
  347. package/vendor/opencli/dist/clis/ctrip/search.test.d.ts +1 -0
  348. package/vendor/opencli/dist/clis/ctrip/search.test.js +64 -0
  349. package/vendor/opencli/dist/clis/cursor/ask.d.ts +1 -0
  350. package/vendor/opencli/dist/clis/cursor/ask.js +70 -0
  351. package/vendor/opencli/dist/clis/cursor/composer.d.ts +1 -0
  352. package/vendor/opencli/dist/clis/cursor/composer.js +42 -0
  353. package/vendor/opencli/dist/clis/cursor/dump.d.ts +1 -0
  354. package/vendor/opencli/dist/clis/cursor/dump.js +2 -0
  355. package/vendor/opencli/dist/clis/cursor/export.d.ts +1 -0
  356. package/vendor/opencli/dist/clis/cursor/export.js +51 -0
  357. package/vendor/opencli/dist/clis/cursor/extract-code.d.ts +1 -0
  358. package/vendor/opencli/dist/clis/cursor/extract-code.js +35 -0
  359. package/vendor/opencli/dist/clis/cursor/history.d.ts +1 -0
  360. package/vendor/opencli/dist/clis/cursor/history.js +43 -0
  361. package/vendor/opencli/dist/clis/cursor/model.d.ts +1 -0
  362. package/vendor/opencli/dist/clis/cursor/model.js +53 -0
  363. package/vendor/opencli/dist/clis/cursor/new.d.ts +1 -0
  364. package/vendor/opencli/dist/clis/cursor/new.js +2 -0
  365. package/vendor/opencli/dist/clis/cursor/read.d.ts +1 -0
  366. package/vendor/opencli/dist/clis/cursor/read.js +44 -0
  367. package/vendor/opencli/dist/clis/cursor/screenshot.d.ts +1 -0
  368. package/vendor/opencli/dist/clis/cursor/screenshot.js +2 -0
  369. package/vendor/opencli/dist/clis/cursor/send.d.ts +1 -0
  370. package/vendor/opencli/dist/clis/cursor/send.js +40 -0
  371. package/vendor/opencli/dist/clis/cursor/status.d.ts +1 -0
  372. package/vendor/opencli/dist/clis/cursor/status.js +2 -0
  373. package/vendor/opencli/dist/clis/devto/tag.yaml +34 -0
  374. package/vendor/opencli/dist/clis/devto/top.yaml +29 -0
  375. package/vendor/opencli/dist/clis/devto/user.yaml +33 -0
  376. package/vendor/opencli/dist/clis/dictionary/examples.yaml +25 -0
  377. package/vendor/opencli/dist/clis/dictionary/search.yaml +27 -0
  378. package/vendor/opencli/dist/clis/dictionary/synonyms.yaml +25 -0
  379. package/vendor/opencli/dist/clis/discord-app/channels.d.ts +1 -0
  380. package/vendor/opencli/dist/clis/discord-app/channels.js +57 -0
  381. package/vendor/opencli/dist/clis/discord-app/members.d.ts +1 -0
  382. package/vendor/opencli/dist/clis/discord-app/members.js +38 -0
  383. package/vendor/opencli/dist/clis/discord-app/read.d.ts +1 -0
  384. package/vendor/opencli/dist/clis/discord-app/read.js +45 -0
  385. package/vendor/opencli/dist/clis/discord-app/search.d.ts +1 -0
  386. package/vendor/opencli/dist/clis/discord-app/search.js +56 -0
  387. package/vendor/opencli/dist/clis/discord-app/send.d.ts +1 -0
  388. package/vendor/opencli/dist/clis/discord-app/send.js +27 -0
  389. package/vendor/opencli/dist/clis/discord-app/servers.d.ts +1 -0
  390. package/vendor/opencli/dist/clis/discord-app/servers.js +36 -0
  391. package/vendor/opencli/dist/clis/discord-app/status.d.ts +1 -0
  392. package/vendor/opencli/dist/clis/discord-app/status.js +16 -0
  393. package/vendor/opencli/dist/clis/douban/book-hot.d.ts +1 -0
  394. package/vendor/opencli/dist/clis/douban/book-hot.js +14 -0
  395. package/vendor/opencli/dist/clis/douban/download.d.ts +1 -0
  396. package/vendor/opencli/dist/clis/douban/download.js +67 -0
  397. package/vendor/opencli/dist/clis/douban/download.test.d.ts +1 -0
  398. package/vendor/opencli/dist/clis/douban/download.test.js +170 -0
  399. package/vendor/opencli/dist/clis/douban/marks.d.ts +1 -0
  400. package/vendor/opencli/dist/clis/douban/marks.js +115 -0
  401. package/vendor/opencli/dist/clis/douban/movie-hot.d.ts +1 -0
  402. package/vendor/opencli/dist/clis/douban/movie-hot.js +14 -0
  403. package/vendor/opencli/dist/clis/douban/photos.d.ts +1 -0
  404. package/vendor/opencli/dist/clis/douban/photos.js +34 -0
  405. package/vendor/opencli/dist/clis/douban/reviews.d.ts +1 -0
  406. package/vendor/opencli/dist/clis/douban/reviews.js +106 -0
  407. package/vendor/opencli/dist/clis/douban/search.d.ts +1 -0
  408. package/vendor/opencli/dist/clis/douban/search.js +16 -0
  409. package/vendor/opencli/dist/clis/douban/subject.yaml +107 -0
  410. package/vendor/opencli/dist/clis/douban/top250.yaml +70 -0
  411. package/vendor/opencli/dist/clis/douban/utils.d.ts +63 -0
  412. package/vendor/opencli/dist/clis/douban/utils.js +389 -0
  413. package/vendor/opencli/dist/clis/douban/utils.test.d.ts +1 -0
  414. package/vendor/opencli/dist/clis/douban/utils.test.js +64 -0
  415. package/vendor/opencli/dist/clis/doubao/ask.d.ts +1 -0
  416. package/vendor/opencli/dist/clis/doubao/ask.js +35 -0
  417. package/vendor/opencli/dist/clis/doubao/detail.d.ts +1 -0
  418. package/vendor/opencli/dist/clis/doubao/detail.js +33 -0
  419. package/vendor/opencli/dist/clis/doubao/detail.test.d.ts +1 -0
  420. package/vendor/opencli/dist/clis/doubao/detail.test.js +42 -0
  421. package/vendor/opencli/dist/clis/doubao/history.d.ts +1 -0
  422. package/vendor/opencli/dist/clis/doubao/history.js +28 -0
  423. package/vendor/opencli/dist/clis/doubao/history.test.d.ts +1 -0
  424. package/vendor/opencli/dist/clis/doubao/history.test.js +37 -0
  425. package/vendor/opencli/dist/clis/doubao/meeting-summary.d.ts +1 -0
  426. package/vendor/opencli/dist/clis/doubao/meeting-summary.js +39 -0
  427. package/vendor/opencli/dist/clis/doubao/meeting-transcript.d.ts +1 -0
  428. package/vendor/opencli/dist/clis/doubao/meeting-transcript.js +36 -0
  429. package/vendor/opencli/dist/clis/doubao/new.d.ts +1 -0
  430. package/vendor/opencli/dist/clis/doubao/new.js +20 -0
  431. package/vendor/opencli/dist/clis/doubao/read.d.ts +1 -0
  432. package/vendor/opencli/dist/clis/doubao/read.js +19 -0
  433. package/vendor/opencli/dist/clis/doubao/send.d.ts +1 -0
  434. package/vendor/opencli/dist/clis/doubao/send.js +22 -0
  435. package/vendor/opencli/dist/clis/doubao/status.d.ts +1 -0
  436. package/vendor/opencli/dist/clis/doubao/status.js +24 -0
  437. package/vendor/opencli/dist/clis/doubao/utils.d.ts +50 -0
  438. package/vendor/opencli/dist/clis/doubao/utils.js +901 -0
  439. package/vendor/opencli/dist/clis/doubao/utils.test.d.ts +1 -0
  440. package/vendor/opencli/dist/clis/doubao/utils.test.js +24 -0
  441. package/vendor/opencli/dist/clis/doubao-app/ask.d.ts +1 -0
  442. package/vendor/opencli/dist/clis/doubao-app/ask.js +53 -0
  443. package/vendor/opencli/dist/clis/doubao-app/dump.d.ts +1 -0
  444. package/vendor/opencli/dist/clis/doubao-app/dump.js +24 -0
  445. package/vendor/opencli/dist/clis/doubao-app/new.d.ts +1 -0
  446. package/vendor/opencli/dist/clis/doubao-app/new.js +20 -0
  447. package/vendor/opencli/dist/clis/doubao-app/read.d.ts +1 -0
  448. package/vendor/opencli/dist/clis/doubao-app/read.js +18 -0
  449. package/vendor/opencli/dist/clis/doubao-app/screenshot.d.ts +1 -0
  450. package/vendor/opencli/dist/clis/doubao-app/screenshot.js +18 -0
  451. package/vendor/opencli/dist/clis/doubao-app/send.d.ts +1 -0
  452. package/vendor/opencli/dist/clis/doubao-app/send.js +27 -0
  453. package/vendor/opencli/dist/clis/doubao-app/status.d.ts +1 -0
  454. package/vendor/opencli/dist/clis/doubao-app/status.js +16 -0
  455. package/vendor/opencli/dist/clis/doubao-app/utils.d.ts +37 -0
  456. package/vendor/opencli/dist/clis/doubao-app/utils.js +110 -0
  457. package/vendor/opencli/dist/clis/douyin/_shared/browser-fetch.d.ts +10 -0
  458. package/vendor/opencli/dist/clis/douyin/_shared/browser-fetch.js +30 -0
  459. package/vendor/opencli/dist/clis/douyin/_shared/browser-fetch.test.d.ts +1 -0
  460. package/vendor/opencli/dist/clis/douyin/_shared/browser-fetch.test.js +30 -0
  461. package/vendor/opencli/dist/clis/douyin/_shared/creation-id.d.ts +1 -0
  462. package/vendor/opencli/dist/clis/douyin/_shared/creation-id.js +5 -0
  463. package/vendor/opencli/dist/clis/douyin/_shared/creation-id.test.d.ts +1 -0
  464. package/vendor/opencli/dist/clis/douyin/_shared/creation-id.test.js +22 -0
  465. package/vendor/opencli/dist/clis/douyin/_shared/imagex-upload.d.ts +20 -0
  466. package/vendor/opencli/dist/clis/douyin/_shared/imagex-upload.js +53 -0
  467. package/vendor/opencli/dist/clis/douyin/_shared/imagex-upload.test.d.ts +1 -0
  468. package/vendor/opencli/dist/clis/douyin/_shared/imagex-upload.test.js +87 -0
  469. package/vendor/opencli/dist/clis/douyin/_shared/public-api.d.ts +33 -0
  470. package/vendor/opencli/dist/clis/douyin/_shared/public-api.js +29 -0
  471. package/vendor/opencli/dist/clis/douyin/_shared/sts2.d.ts +8 -0
  472. package/vendor/opencli/dist/clis/douyin/_shared/sts2.js +21 -0
  473. package/vendor/opencli/dist/clis/douyin/_shared/sts2.test.d.ts +1 -0
  474. package/vendor/opencli/dist/clis/douyin/_shared/sts2.test.js +27 -0
  475. package/vendor/opencli/dist/clis/douyin/_shared/text-extra.d.ts +18 -0
  476. package/vendor/opencli/dist/clis/douyin/_shared/text-extra.js +15 -0
  477. package/vendor/opencli/dist/clis/douyin/_shared/text-extra.test.d.ts +1 -0
  478. package/vendor/opencli/dist/clis/douyin/_shared/text-extra.test.js +37 -0
  479. package/vendor/opencli/dist/clis/douyin/_shared/timing.d.ts +2 -0
  480. package/vendor/opencli/dist/clis/douyin/_shared/timing.js +22 -0
  481. package/vendor/opencli/dist/clis/douyin/_shared/timing.test.d.ts +1 -0
  482. package/vendor/opencli/dist/clis/douyin/_shared/timing.test.js +28 -0
  483. package/vendor/opencli/dist/clis/douyin/_shared/tos-upload-short-read.test.d.ts +11 -0
  484. package/vendor/opencli/dist/clis/douyin/_shared/tos-upload-short-read.test.js +83 -0
  485. package/vendor/opencli/dist/clis/douyin/_shared/tos-upload.d.ts +53 -0
  486. package/vendor/opencli/dist/clis/douyin/_shared/tos-upload.js +295 -0
  487. package/vendor/opencli/dist/clis/douyin/_shared/tos-upload.test.d.ts +1 -0
  488. package/vendor/opencli/dist/clis/douyin/_shared/tos-upload.test.js +229 -0
  489. package/vendor/opencli/dist/clis/douyin/_shared/transcode.d.ts +27 -0
  490. package/vendor/opencli/dist/clis/douyin/_shared/transcode.js +45 -0
  491. package/vendor/opencli/dist/clis/douyin/_shared/transcode.test.d.ts +1 -0
  492. package/vendor/opencli/dist/clis/douyin/_shared/transcode.test.js +91 -0
  493. package/vendor/opencli/dist/clis/douyin/_shared/types.d.ts +26 -0
  494. package/vendor/opencli/dist/clis/douyin/_shared/types.js +1 -0
  495. package/vendor/opencli/dist/clis/douyin/activities.d.ts +1 -0
  496. package/vendor/opencli/dist/clis/douyin/activities.js +22 -0
  497. package/vendor/opencli/dist/clis/douyin/activities.test.d.ts +1 -0
  498. package/vendor/opencli/dist/clis/douyin/activities.test.js +55 -0
  499. package/vendor/opencli/dist/clis/douyin/collections.d.ts +1 -0
  500. package/vendor/opencli/dist/clis/douyin/collections.js +22 -0
  501. package/vendor/opencli/dist/clis/douyin/collections.test.d.ts +1 -0
  502. package/vendor/opencli/dist/clis/douyin/collections.test.js +45 -0
  503. package/vendor/opencli/dist/clis/douyin/delete.d.ts +1 -0
  504. package/vendor/opencli/dist/clis/douyin/delete.js +18 -0
  505. package/vendor/opencli/dist/clis/douyin/delete.test.d.ts +1 -0
  506. package/vendor/opencli/dist/clis/douyin/delete.test.js +11 -0
  507. package/vendor/opencli/dist/clis/douyin/draft.d.ts +11 -0
  508. package/vendor/opencli/dist/clis/douyin/draft.js +354 -0
  509. package/vendor/opencli/dist/clis/douyin/draft.test.d.ts +1 -0
  510. package/vendor/opencli/dist/clis/douyin/draft.test.js +364 -0
  511. package/vendor/opencli/dist/clis/douyin/drafts.d.ts +1 -0
  512. package/vendor/opencli/dist/clis/douyin/drafts.js +23 -0
  513. package/vendor/opencli/dist/clis/douyin/drafts.test.d.ts +1 -0
  514. package/vendor/opencli/dist/clis/douyin/drafts.test.js +11 -0
  515. package/vendor/opencli/dist/clis/douyin/hashtag.d.ts +1 -0
  516. package/vendor/opencli/dist/clis/douyin/hashtag.js +52 -0
  517. package/vendor/opencli/dist/clis/douyin/hashtag.test.d.ts +1 -0
  518. package/vendor/opencli/dist/clis/douyin/hashtag.test.js +58 -0
  519. package/vendor/opencli/dist/clis/douyin/location.d.ts +1 -0
  520. package/vendor/opencli/dist/clis/douyin/location.js +24 -0
  521. package/vendor/opencli/dist/clis/douyin/location.test.d.ts +1 -0
  522. package/vendor/opencli/dist/clis/douyin/location.test.js +23 -0
  523. package/vendor/opencli/dist/clis/douyin/profile.d.ts +1 -0
  524. package/vendor/opencli/dist/clis/douyin/profile.js +28 -0
  525. package/vendor/opencli/dist/clis/douyin/profile.test.d.ts +1 -0
  526. package/vendor/opencli/dist/clis/douyin/profile.test.js +46 -0
  527. package/vendor/opencli/dist/clis/douyin/publish.d.ts +14 -0
  528. package/vendor/opencli/dist/clis/douyin/publish.js +288 -0
  529. package/vendor/opencli/dist/clis/douyin/publish.test.d.ts +1 -0
  530. package/vendor/opencli/dist/clis/douyin/publish.test.js +38 -0
  531. package/vendor/opencli/dist/clis/douyin/stats.d.ts +1 -0
  532. package/vendor/opencli/dist/clis/douyin/stats.js +27 -0
  533. package/vendor/opencli/dist/clis/douyin/stats.test.d.ts +1 -0
  534. package/vendor/opencli/dist/clis/douyin/stats.test.js +22 -0
  535. package/vendor/opencli/dist/clis/douyin/update.d.ts +1 -0
  536. package/vendor/opencli/dist/clis/douyin/update.js +31 -0
  537. package/vendor/opencli/dist/clis/douyin/update.test.d.ts +1 -0
  538. package/vendor/opencli/dist/clis/douyin/update.test.js +11 -0
  539. package/vendor/opencli/dist/clis/douyin/user-videos.d.ts +5 -0
  540. package/vendor/opencli/dist/clis/douyin/user-videos.js +74 -0
  541. package/vendor/opencli/dist/clis/douyin/user-videos.test.d.ts +1 -0
  542. package/vendor/opencli/dist/clis/douyin/user-videos.test.js +108 -0
  543. package/vendor/opencli/dist/clis/douyin/videos.d.ts +1 -0
  544. package/vendor/opencli/dist/clis/douyin/videos.js +51 -0
  545. package/vendor/opencli/dist/clis/douyin/videos.test.d.ts +1 -0
  546. package/vendor/opencli/dist/clis/douyin/videos.test.js +54 -0
  547. package/vendor/opencli/dist/clis/facebook/add-friend.yaml +43 -0
  548. package/vendor/opencli/dist/clis/facebook/events.yaml +44 -0
  549. package/vendor/opencli/dist/clis/facebook/feed.yaml +63 -0
  550. package/vendor/opencli/dist/clis/facebook/friends.yaml +42 -0
  551. package/vendor/opencli/dist/clis/facebook/groups.yaml +50 -0
  552. package/vendor/opencli/dist/clis/facebook/join-group.yaml +44 -0
  553. package/vendor/opencli/dist/clis/facebook/memories.yaml +39 -0
  554. package/vendor/opencli/dist/clis/facebook/notifications.yaml +40 -0
  555. package/vendor/opencli/dist/clis/facebook/profile.yaml +37 -0
  556. package/vendor/opencli/dist/clis/facebook/search.test.d.ts +5 -0
  557. package/vendor/opencli/dist/clis/facebook/search.test.js +58 -0
  558. package/vendor/opencli/dist/clis/facebook/search.yaml +47 -0
  559. package/vendor/opencli/dist/clis/gemini/ask.d.ts +1 -0
  560. package/vendor/opencli/dist/clis/gemini/ask.js +46 -0
  561. package/vendor/opencli/dist/clis/gemini/ask.test.d.ts +1 -0
  562. package/vendor/opencli/dist/clis/gemini/ask.test.js +100 -0
  563. package/vendor/opencli/dist/clis/gemini/image.d.ts +1 -0
  564. package/vendor/opencli/dist/clis/gemini/image.js +105 -0
  565. package/vendor/opencli/dist/clis/gemini/new.d.ts +1 -0
  566. package/vendor/opencli/dist/clis/gemini/new.js +20 -0
  567. package/vendor/opencli/dist/clis/gemini/reply-state.test.d.ts +1 -0
  568. package/vendor/opencli/dist/clis/gemini/reply-state.test.js +641 -0
  569. package/vendor/opencli/dist/clis/gemini/utils.d.ts +77 -0
  570. package/vendor/opencli/dist/clis/gemini/utils.js +930 -0
  571. package/vendor/opencli/dist/clis/gemini/utils.test.d.ts +1 -0
  572. package/vendor/opencli/dist/clis/gemini/utils.test.js +178 -0
  573. package/vendor/opencli/dist/clis/google/news.d.ts +5 -0
  574. package/vendor/opencli/dist/clis/google/news.js +58 -0
  575. package/vendor/opencli/dist/clis/google/search.d.ts +10 -0
  576. package/vendor/opencli/dist/clis/google/search.js +127 -0
  577. package/vendor/opencli/dist/clis/google/suggest.d.ts +5 -0
  578. package/vendor/opencli/dist/clis/google/suggest.js +34 -0
  579. package/vendor/opencli/dist/clis/google/trends.d.ts +5 -0
  580. package/vendor/opencli/dist/clis/google/trends.js +38 -0
  581. package/vendor/opencli/dist/clis/google/utils.d.ts +9 -0
  582. package/vendor/opencli/dist/clis/google/utils.js +23 -0
  583. package/vendor/opencli/dist/clis/google/utils.test.d.ts +1 -0
  584. package/vendor/opencli/dist/clis/google/utils.test.js +75 -0
  585. package/vendor/opencli/dist/clis/grok/ask.d.ts +19 -0
  586. package/vendor/opencli/dist/clis/grok/ask.js +292 -0
  587. package/vendor/opencli/dist/clis/grok/ask.test.d.ts +1 -0
  588. package/vendor/opencli/dist/clis/grok/ask.test.js +54 -0
  589. package/vendor/opencli/dist/clis/hackernews/ask.yaml +38 -0
  590. package/vendor/opencli/dist/clis/hackernews/best.yaml +38 -0
  591. package/vendor/opencli/dist/clis/hackernews/jobs.yaml +36 -0
  592. package/vendor/opencli/dist/clis/hackernews/new.yaml +38 -0
  593. package/vendor/opencli/dist/clis/hackernews/search.yaml +44 -0
  594. package/vendor/opencli/dist/clis/hackernews/show.yaml +38 -0
  595. package/vendor/opencli/dist/clis/hackernews/top.yaml +38 -0
  596. package/vendor/opencli/dist/clis/hackernews/user.yaml +25 -0
  597. package/vendor/opencli/dist/clis/hf/top.d.ts +1 -0
  598. package/vendor/opencli/dist/clis/hf/top.js +119 -0
  599. package/vendor/opencli/dist/clis/hupu/detail.d.ts +1 -0
  600. package/vendor/opencli/dist/clis/hupu/detail.js +72 -0
  601. package/vendor/opencli/dist/clis/hupu/hot.yaml +43 -0
  602. package/vendor/opencli/dist/clis/hupu/like.d.ts +1 -0
  603. package/vendor/opencli/dist/clis/hupu/like.js +75 -0
  604. package/vendor/opencli/dist/clis/hupu/reply.d.ts +1 -0
  605. package/vendor/opencli/dist/clis/hupu/reply.js +71 -0
  606. package/vendor/opencli/dist/clis/hupu/search.d.ts +1 -0
  607. package/vendor/opencli/dist/clis/hupu/search.js +59 -0
  608. package/vendor/opencli/dist/clis/hupu/unlike.d.ts +1 -0
  609. package/vendor/opencli/dist/clis/hupu/unlike.js +75 -0
  610. package/vendor/opencli/dist/clis/hupu/utils.d.ts +20 -0
  611. package/vendor/opencli/dist/clis/hupu/utils.js +319 -0
  612. package/vendor/opencli/dist/clis/imdb/person.d.ts +1 -0
  613. package/vendor/opencli/dist/clis/imdb/person.js +203 -0
  614. package/vendor/opencli/dist/clis/imdb/reviews.d.ts +1 -0
  615. package/vendor/opencli/dist/clis/imdb/reviews.js +88 -0
  616. package/vendor/opencli/dist/clis/imdb/search.d.ts +1 -0
  617. package/vendor/opencli/dist/clis/imdb/search.js +161 -0
  618. package/vendor/opencli/dist/clis/imdb/title.d.ts +1 -0
  619. package/vendor/opencli/dist/clis/imdb/title.js +93 -0
  620. package/vendor/opencli/dist/clis/imdb/top.d.ts +1 -0
  621. package/vendor/opencli/dist/clis/imdb/top.js +53 -0
  622. package/vendor/opencli/dist/clis/imdb/trending.d.ts +1 -0
  623. package/vendor/opencli/dist/clis/imdb/trending.js +52 -0
  624. package/vendor/opencli/dist/clis/imdb/utils.d.ts +46 -0
  625. package/vendor/opencli/dist/clis/imdb/utils.js +285 -0
  626. package/vendor/opencli/dist/clis/imdb/utils.test.d.ts +1 -0
  627. package/vendor/opencli/dist/clis/imdb/utils.test.js +88 -0
  628. package/vendor/opencli/dist/clis/instagram/_shared/private-publish.d.ts +138 -0
  629. package/vendor/opencli/dist/clis/instagram/_shared/private-publish.js +1030 -0
  630. package/vendor/opencli/dist/clis/instagram/_shared/private-publish.test.d.ts +1 -0
  631. package/vendor/opencli/dist/clis/instagram/_shared/private-publish.test.js +705 -0
  632. package/vendor/opencli/dist/clis/instagram/_shared/protocol-capture.d.ts +26 -0
  633. package/vendor/opencli/dist/clis/instagram/_shared/protocol-capture.js +282 -0
  634. package/vendor/opencli/dist/clis/instagram/_shared/protocol-capture.test.d.ts +1 -0
  635. package/vendor/opencli/dist/clis/instagram/_shared/protocol-capture.test.js +114 -0
  636. package/vendor/opencli/dist/clis/instagram/_shared/runtime-info.d.ts +9 -0
  637. package/vendor/opencli/dist/clis/instagram/_shared/runtime-info.js +81 -0
  638. package/vendor/opencli/dist/clis/instagram/comment.yaml +52 -0
  639. package/vendor/opencli/dist/clis/instagram/download.d.ts +16 -0
  640. package/vendor/opencli/dist/clis/instagram/download.js +225 -0
  641. package/vendor/opencli/dist/clis/instagram/download.test.d.ts +1 -0
  642. package/vendor/opencli/dist/clis/instagram/download.test.js +118 -0
  643. package/vendor/opencli/dist/clis/instagram/explore.yaml +43 -0
  644. package/vendor/opencli/dist/clis/instagram/follow.yaml +41 -0
  645. package/vendor/opencli/dist/clis/instagram/followers.yaml +51 -0
  646. package/vendor/opencli/dist/clis/instagram/following.yaml +51 -0
  647. package/vendor/opencli/dist/clis/instagram/like.yaml +46 -0
  648. package/vendor/opencli/dist/clis/instagram/note.d.ts +1 -0
  649. package/vendor/opencli/dist/clis/instagram/note.js +222 -0
  650. package/vendor/opencli/dist/clis/instagram/note.test.d.ts +1 -0
  651. package/vendor/opencli/dist/clis/instagram/note.test.js +81 -0
  652. package/vendor/opencli/dist/clis/instagram/post.d.ts +4 -0
  653. package/vendor/opencli/dist/clis/instagram/post.js +1496 -0
  654. package/vendor/opencli/dist/clis/instagram/post.test.d.ts +1 -0
  655. package/vendor/opencli/dist/clis/instagram/post.test.js +1647 -0
  656. package/vendor/opencli/dist/clis/instagram/profile.yaml +42 -0
  657. package/vendor/opencli/dist/clis/instagram/reel.d.ts +1 -0
  658. package/vendor/opencli/dist/clis/instagram/reel.js +826 -0
  659. package/vendor/opencli/dist/clis/instagram/reel.test.d.ts +1 -0
  660. package/vendor/opencli/dist/clis/instagram/reel.test.js +167 -0
  661. package/vendor/opencli/dist/clis/instagram/save.yaml +46 -0
  662. package/vendor/opencli/dist/clis/instagram/saved.yaml +40 -0
  663. package/vendor/opencli/dist/clis/instagram/search.yaml +44 -0
  664. package/vendor/opencli/dist/clis/instagram/story.d.ts +1 -0
  665. package/vendor/opencli/dist/clis/instagram/story.js +115 -0
  666. package/vendor/opencli/dist/clis/instagram/story.test.d.ts +1 -0
  667. package/vendor/opencli/dist/clis/instagram/story.test.js +167 -0
  668. package/vendor/opencli/dist/clis/instagram/unfollow.yaml +38 -0
  669. package/vendor/opencli/dist/clis/instagram/unlike.yaml +46 -0
  670. package/vendor/opencli/dist/clis/instagram/unsave.yaml +46 -0
  671. package/vendor/opencli/dist/clis/instagram/user.yaml +54 -0
  672. package/vendor/opencli/dist/clis/jd/item.d.ts +5 -0
  673. package/vendor/opencli/dist/clis/jd/item.js +97 -0
  674. package/vendor/opencli/dist/clis/jd/item.test.d.ts +1 -0
  675. package/vendor/opencli/dist/clis/jd/item.test.js +43 -0
  676. package/vendor/opencli/dist/clis/jike/comment.d.ts +1 -0
  677. package/vendor/opencli/dist/clis/jike/comment.js +106 -0
  678. package/vendor/opencli/dist/clis/jike/create.d.ts +1 -0
  679. package/vendor/opencli/dist/clis/jike/create.js +105 -0
  680. package/vendor/opencli/dist/clis/jike/feed.d.ts +1 -0
  681. package/vendor/opencli/dist/clis/jike/feed.js +66 -0
  682. package/vendor/opencli/dist/clis/jike/like.d.ts +1 -0
  683. package/vendor/opencli/dist/clis/jike/like.js +60 -0
  684. package/vendor/opencli/dist/clis/jike/notifications.d.ts +1 -0
  685. package/vendor/opencli/dist/clis/jike/notifications.js +168 -0
  686. package/vendor/opencli/dist/clis/jike/post.yaml +59 -0
  687. package/vendor/opencli/dist/clis/jike/repost.d.ts +1 -0
  688. package/vendor/opencli/dist/clis/jike/repost.js +102 -0
  689. package/vendor/opencli/dist/clis/jike/search.d.ts +1 -0
  690. package/vendor/opencli/dist/clis/jike/search.js +66 -0
  691. package/vendor/opencli/dist/clis/jike/topic.yaml +53 -0
  692. package/vendor/opencli/dist/clis/jike/user.yaml +52 -0
  693. package/vendor/opencli/dist/clis/jike/utils.d.ts +19 -0
  694. package/vendor/opencli/dist/clis/jike/utils.js +25 -0
  695. package/vendor/opencli/dist/clis/jimeng/generate.yaml +85 -0
  696. package/vendor/opencli/dist/clis/jimeng/history.yaml +46 -0
  697. package/vendor/opencli/dist/clis/linkedin/search.d.ts +1 -0
  698. package/vendor/opencli/dist/clis/linkedin/search.js +367 -0
  699. package/vendor/opencli/dist/clis/linkedin/timeline.d.ts +21 -0
  700. package/vendor/opencli/dist/clis/linkedin/timeline.js +503 -0
  701. package/vendor/opencli/dist/clis/linkedin/timeline.test.d.ts +1 -0
  702. package/vendor/opencli/dist/clis/linkedin/timeline.test.js +81 -0
  703. package/vendor/opencli/dist/clis/linux-do/categories.yaml +70 -0
  704. package/vendor/opencli/dist/clis/linux-do/category.d.ts +1 -0
  705. package/vendor/opencli/dist/clis/linux-do/category.js +36 -0
  706. package/vendor/opencli/dist/clis/linux-do/feed.d.ts +45 -0
  707. package/vendor/opencli/dist/clis/linux-do/feed.js +397 -0
  708. package/vendor/opencli/dist/clis/linux-do/feed.test.d.ts +1 -0
  709. package/vendor/opencli/dist/clis/linux-do/feed.test.js +118 -0
  710. package/vendor/opencli/dist/clis/linux-do/hot.d.ts +1 -0
  711. package/vendor/opencli/dist/clis/linux-do/hot.js +25 -0
  712. package/vendor/opencli/dist/clis/linux-do/latest.d.ts +1 -0
  713. package/vendor/opencli/dist/clis/linux-do/latest.js +18 -0
  714. package/vendor/opencli/dist/clis/linux-do/search.yaml +48 -0
  715. package/vendor/opencli/dist/clis/linux-do/tags.yaml +41 -0
  716. package/vendor/opencli/dist/clis/linux-do/topic.yaml +77 -0
  717. package/vendor/opencli/dist/clis/linux-do/user-posts.yaml +67 -0
  718. package/vendor/opencli/dist/clis/linux-do/user-topics.yaml +54 -0
  719. package/vendor/opencli/dist/clis/lobsters/active.yaml +29 -0
  720. package/vendor/opencli/dist/clis/lobsters/hot.yaml +29 -0
  721. package/vendor/opencli/dist/clis/lobsters/newest.yaml +29 -0
  722. package/vendor/opencli/dist/clis/lobsters/tag.yaml +34 -0
  723. package/vendor/opencli/dist/clis/medium/feed.d.ts +1 -0
  724. package/vendor/opencli/dist/clis/medium/feed.js +15 -0
  725. package/vendor/opencli/dist/clis/medium/search.d.ts +1 -0
  726. package/vendor/opencli/dist/clis/medium/search.js +15 -0
  727. package/vendor/opencli/dist/clis/medium/user.d.ts +1 -0
  728. package/vendor/opencli/dist/clis/medium/user.js +15 -0
  729. package/vendor/opencli/dist/clis/medium/utils.d.ts +5 -0
  730. package/vendor/opencli/dist/clis/medium/utils.js +79 -0
  731. package/vendor/opencli/dist/clis/notebooklm/compat.test.d.ts +3 -0
  732. package/vendor/opencli/dist/clis/notebooklm/compat.test.js +16 -0
  733. package/vendor/opencli/dist/clis/notebooklm/current.d.ts +1 -0
  734. package/vendor/opencli/dist/clis/notebooklm/current.js +27 -0
  735. package/vendor/opencli/dist/clis/notebooklm/get.d.ts +1 -0
  736. package/vendor/opencli/dist/clis/notebooklm/get.js +36 -0
  737. package/vendor/opencli/dist/clis/notebooklm/history.d.ts +1 -0
  738. package/vendor/opencli/dist/clis/notebooklm/history.js +24 -0
  739. package/vendor/opencli/dist/clis/notebooklm/history.test.d.ts +1 -0
  740. package/vendor/opencli/dist/clis/notebooklm/history.test.js +58 -0
  741. package/vendor/opencli/dist/clis/notebooklm/list.d.ts +1 -0
  742. package/vendor/opencli/dist/clis/notebooklm/list.js +35 -0
  743. package/vendor/opencli/dist/clis/notebooklm/note-list.d.ts +1 -0
  744. package/vendor/opencli/dist/clis/notebooklm/note-list.js +27 -0
  745. package/vendor/opencli/dist/clis/notebooklm/note-list.test.d.ts +1 -0
  746. package/vendor/opencli/dist/clis/notebooklm/note-list.test.js +56 -0
  747. package/vendor/opencli/dist/clis/notebooklm/notes-get.d.ts +1 -0
  748. package/vendor/opencli/dist/clis/notebooklm/notes-get.js +46 -0
  749. package/vendor/opencli/dist/clis/notebooklm/notes-get.test.d.ts +1 -0
  750. package/vendor/opencli/dist/clis/notebooklm/notes-get.test.js +72 -0
  751. package/vendor/opencli/dist/clis/notebooklm/open.d.ts +1 -0
  752. package/vendor/opencli/dist/clis/notebooklm/open.js +41 -0
  753. package/vendor/opencli/dist/clis/notebooklm/open.test.d.ts +1 -0
  754. package/vendor/opencli/dist/clis/notebooklm/open.test.js +63 -0
  755. package/vendor/opencli/dist/clis/notebooklm/rpc.d.ts +36 -0
  756. package/vendor/opencli/dist/clis/notebooklm/rpc.js +189 -0
  757. package/vendor/opencli/dist/clis/notebooklm/rpc.test.d.ts +1 -0
  758. package/vendor/opencli/dist/clis/notebooklm/rpc.test.js +105 -0
  759. package/vendor/opencli/dist/clis/notebooklm/shared.d.ts +87 -0
  760. package/vendor/opencli/dist/clis/notebooklm/shared.js +3 -0
  761. package/vendor/opencli/dist/clis/notebooklm/source-fulltext.d.ts +1 -0
  762. package/vendor/opencli/dist/clis/notebooklm/source-fulltext.js +43 -0
  763. package/vendor/opencli/dist/clis/notebooklm/source-fulltext.test.d.ts +1 -0
  764. package/vendor/opencli/dist/clis/notebooklm/source-fulltext.test.js +106 -0
  765. package/vendor/opencli/dist/clis/notebooklm/source-get.d.ts +1 -0
  766. package/vendor/opencli/dist/clis/notebooklm/source-get.js +39 -0
  767. package/vendor/opencli/dist/clis/notebooklm/source-get.test.d.ts +1 -0
  768. package/vendor/opencli/dist/clis/notebooklm/source-get.test.js +84 -0
  769. package/vendor/opencli/dist/clis/notebooklm/source-guide.d.ts +1 -0
  770. package/vendor/opencli/dist/clis/notebooklm/source-guide.js +43 -0
  771. package/vendor/opencli/dist/clis/notebooklm/source-guide.test.d.ts +1 -0
  772. package/vendor/opencli/dist/clis/notebooklm/source-guide.test.js +104 -0
  773. package/vendor/opencli/dist/clis/notebooklm/source-list.d.ts +1 -0
  774. package/vendor/opencli/dist/clis/notebooklm/source-list.js +29 -0
  775. package/vendor/opencli/dist/clis/notebooklm/status.d.ts +1 -0
  776. package/vendor/opencli/dist/clis/notebooklm/status.js +30 -0
  777. package/vendor/opencli/dist/clis/notebooklm/summary.d.ts +1 -0
  778. package/vendor/opencli/dist/clis/notebooklm/summary.js +29 -0
  779. package/vendor/opencli/dist/clis/notebooklm/summary.test.d.ts +1 -0
  780. package/vendor/opencli/dist/clis/notebooklm/summary.test.js +78 -0
  781. package/vendor/opencli/dist/clis/notebooklm/utils.d.ts +38 -0
  782. package/vendor/opencli/dist/clis/notebooklm/utils.js +738 -0
  783. package/vendor/opencli/dist/clis/notebooklm/utils.test.d.ts +1 -0
  784. package/vendor/opencli/dist/clis/notebooklm/utils.test.js +390 -0
  785. package/vendor/opencli/dist/clis/notion/export.d.ts +1 -0
  786. package/vendor/opencli/dist/clis/notion/export.js +31 -0
  787. package/vendor/opencli/dist/clis/notion/favorites.d.ts +1 -0
  788. package/vendor/opencli/dist/clis/notion/favorites.js +84 -0
  789. package/vendor/opencli/dist/clis/notion/new.d.ts +1 -0
  790. package/vendor/opencli/dist/clis/notion/new.js +34 -0
  791. package/vendor/opencli/dist/clis/notion/read.d.ts +1 -0
  792. package/vendor/opencli/dist/clis/notion/read.js +30 -0
  793. package/vendor/opencli/dist/clis/notion/search.d.ts +1 -0
  794. package/vendor/opencli/dist/clis/notion/search.js +46 -0
  795. package/vendor/opencli/dist/clis/notion/sidebar.d.ts +1 -0
  796. package/vendor/opencli/dist/clis/notion/sidebar.js +41 -0
  797. package/vendor/opencli/dist/clis/notion/status.d.ts +1 -0
  798. package/vendor/opencli/dist/clis/notion/status.js +16 -0
  799. package/vendor/opencli/dist/clis/notion/write.d.ts +1 -0
  800. package/vendor/opencli/dist/clis/notion/write.js +40 -0
  801. package/vendor/opencli/dist/clis/ones/common.d.ts +32 -0
  802. package/vendor/opencli/dist/clis/ones/common.js +144 -0
  803. package/vendor/opencli/dist/clis/ones/enrich-tasks.d.ts +5 -0
  804. package/vendor/opencli/dist/clis/ones/enrich-tasks.js +37 -0
  805. package/vendor/opencli/dist/clis/ones/login.d.ts +1 -0
  806. package/vendor/opencli/dist/clis/ones/login.js +80 -0
  807. package/vendor/opencli/dist/clis/ones/logout.d.ts +1 -0
  808. package/vendor/opencli/dist/clis/ones/logout.js +17 -0
  809. package/vendor/opencli/dist/clis/ones/me.d.ts +1 -0
  810. package/vendor/opencli/dist/clis/ones/me.js +30 -0
  811. package/vendor/opencli/dist/clis/ones/my-tasks.d.ts +1 -0
  812. package/vendor/opencli/dist/clis/ones/my-tasks.js +120 -0
  813. package/vendor/opencli/dist/clis/ones/resolve-labels.d.ts +10 -0
  814. package/vendor/opencli/dist/clis/ones/resolve-labels.js +64 -0
  815. package/vendor/opencli/dist/clis/ones/task-helpers.d.ts +29 -0
  816. package/vendor/opencli/dist/clis/ones/task-helpers.js +212 -0
  817. package/vendor/opencli/dist/clis/ones/task-helpers.test.d.ts +1 -0
  818. package/vendor/opencli/dist/clis/ones/task-helpers.test.js +12 -0
  819. package/vendor/opencli/dist/clis/ones/task.d.ts +1 -0
  820. package/vendor/opencli/dist/clis/ones/task.js +66 -0
  821. package/vendor/opencli/dist/clis/ones/tasks.d.ts +1 -0
  822. package/vendor/opencli/dist/clis/ones/tasks.js +79 -0
  823. package/vendor/opencli/dist/clis/ones/token-info.d.ts +1 -0
  824. package/vendor/opencli/dist/clis/ones/token-info.js +42 -0
  825. package/vendor/opencli/dist/clis/ones/worklog.d.ts +11 -0
  826. package/vendor/opencli/dist/clis/ones/worklog.js +267 -0
  827. package/vendor/opencli/dist/clis/ones/worklog.test.d.ts +1 -0
  828. package/vendor/opencli/dist/clis/ones/worklog.test.js +20 -0
  829. package/vendor/opencli/dist/clis/paperreview/commands.test.d.ts +3 -0
  830. package/vendor/opencli/dist/clis/paperreview/commands.test.js +243 -0
  831. package/vendor/opencli/dist/clis/paperreview/feedback.d.ts +1 -0
  832. package/vendor/opencli/dist/clis/paperreview/feedback.js +52 -0
  833. package/vendor/opencli/dist/clis/paperreview/review.d.ts +1 -0
  834. package/vendor/opencli/dist/clis/paperreview/review.js +37 -0
  835. package/vendor/opencli/dist/clis/paperreview/submit.d.ts +1 -0
  836. package/vendor/opencli/dist/clis/paperreview/submit.js +85 -0
  837. package/vendor/opencli/dist/clis/paperreview/utils.d.ts +46 -0
  838. package/vendor/opencli/dist/clis/paperreview/utils.js +197 -0
  839. package/vendor/opencli/dist/clis/paperreview/utils.test.d.ts +1 -0
  840. package/vendor/opencli/dist/clis/paperreview/utils.test.js +49 -0
  841. package/vendor/opencli/dist/clis/pixiv/detail.yaml +49 -0
  842. package/vendor/opencli/dist/clis/pixiv/download.d.ts +7 -0
  843. package/vendor/opencli/dist/clis/pixiv/download.js +78 -0
  844. package/vendor/opencli/dist/clis/pixiv/download.test.d.ts +1 -0
  845. package/vendor/opencli/dist/clis/pixiv/download.test.js +87 -0
  846. package/vendor/opencli/dist/clis/pixiv/illusts.d.ts +8 -0
  847. package/vendor/opencli/dist/clis/pixiv/illusts.js +65 -0
  848. package/vendor/opencli/dist/clis/pixiv/illusts.test.d.ts +1 -0
  849. package/vendor/opencli/dist/clis/pixiv/illusts.test.js +99 -0
  850. package/vendor/opencli/dist/clis/pixiv/ranking.yaml +53 -0
  851. package/vendor/opencli/dist/clis/pixiv/search.d.ts +6 -0
  852. package/vendor/opencli/dist/clis/pixiv/search.js +43 -0
  853. package/vendor/opencli/dist/clis/pixiv/search.test.d.ts +1 -0
  854. package/vendor/opencli/dist/clis/pixiv/search.test.js +83 -0
  855. package/vendor/opencli/dist/clis/pixiv/test-utils.d.ts +12 -0
  856. package/vendor/opencli/dist/clis/pixiv/test-utils.js +23 -0
  857. package/vendor/opencli/dist/clis/pixiv/user.yaml +46 -0
  858. package/vendor/opencli/dist/clis/pixiv/utils.d.ts +27 -0
  859. package/vendor/opencli/dist/clis/pixiv/utils.js +49 -0
  860. package/vendor/opencli/dist/clis/producthunt/browse.d.ts +1 -0
  861. package/vendor/opencli/dist/clis/producthunt/browse.js +99 -0
  862. package/vendor/opencli/dist/clis/producthunt/hot.d.ts +1 -0
  863. package/vendor/opencli/dist/clis/producthunt/hot.js +110 -0
  864. package/vendor/opencli/dist/clis/producthunt/posts.d.ts +1 -0
  865. package/vendor/opencli/dist/clis/producthunt/posts.js +28 -0
  866. package/vendor/opencli/dist/clis/producthunt/today.d.ts +1 -0
  867. package/vendor/opencli/dist/clis/producthunt/today.js +35 -0
  868. package/vendor/opencli/dist/clis/producthunt/utils.d.ts +29 -0
  869. package/vendor/opencli/dist/clis/producthunt/utils.js +99 -0
  870. package/vendor/opencli/dist/clis/producthunt/utils.test.d.ts +1 -0
  871. package/vendor/opencli/dist/clis/producthunt/utils.test.js +64 -0
  872. package/vendor/opencli/dist/clis/reddit/comment.d.ts +1 -0
  873. package/vendor/opencli/dist/clis/reddit/comment.js +57 -0
  874. package/vendor/opencli/dist/clis/reddit/frontpage.yaml +30 -0
  875. package/vendor/opencli/dist/clis/reddit/hot.yaml +47 -0
  876. package/vendor/opencli/dist/clis/reddit/popular.yaml +40 -0
  877. package/vendor/opencli/dist/clis/reddit/read.d.ts +1 -0
  878. package/vendor/opencli/dist/clis/reddit/read.js +184 -0
  879. package/vendor/opencli/dist/clis/reddit/read.test.d.ts +1 -0
  880. package/vendor/opencli/dist/clis/reddit/read.test.js +28 -0
  881. package/vendor/opencli/dist/clis/reddit/save.d.ts +1 -0
  882. package/vendor/opencli/dist/clis/reddit/save.js +51 -0
  883. package/vendor/opencli/dist/clis/reddit/saved.d.ts +1 -0
  884. package/vendor/opencli/dist/clis/reddit/saved.js +49 -0
  885. package/vendor/opencli/dist/clis/reddit/search.yaml +61 -0
  886. package/vendor/opencli/dist/clis/reddit/subreddit.yaml +50 -0
  887. package/vendor/opencli/dist/clis/reddit/subscribe.d.ts +1 -0
  888. package/vendor/opencli/dist/clis/reddit/subscribe.js +50 -0
  889. package/vendor/opencli/dist/clis/reddit/upvote.d.ts +1 -0
  890. package/vendor/opencli/dist/clis/reddit/upvote.js +64 -0
  891. package/vendor/opencli/dist/clis/reddit/upvoted.d.ts +1 -0
  892. package/vendor/opencli/dist/clis/reddit/upvoted.js +49 -0
  893. package/vendor/opencli/dist/clis/reddit/user-comments.yaml +46 -0
  894. package/vendor/opencli/dist/clis/reddit/user-posts.yaml +44 -0
  895. package/vendor/opencli/dist/clis/reddit/user.yaml +40 -0
  896. package/vendor/opencli/dist/clis/reuters/search.d.ts +1 -0
  897. package/vendor/opencli/dist/clis/reuters/search.js +51 -0
  898. package/vendor/opencli/dist/clis/sinablog/article.d.ts +1 -0
  899. package/vendor/opencli/dist/clis/sinablog/article.js +14 -0
  900. package/vendor/opencli/dist/clis/sinablog/hot.d.ts +1 -0
  901. package/vendor/opencli/dist/clis/sinablog/hot.js +14 -0
  902. package/vendor/opencli/dist/clis/sinablog/search.d.ts +1 -0
  903. package/vendor/opencli/dist/clis/sinablog/search.js +51 -0
  904. package/vendor/opencli/dist/clis/sinablog/user.d.ts +1 -0
  905. package/vendor/opencli/dist/clis/sinablog/user.js +15 -0
  906. package/vendor/opencli/dist/clis/sinablog/utils.d.ts +7 -0
  907. package/vendor/opencli/dist/clis/sinablog/utils.js +186 -0
  908. package/vendor/opencli/dist/clis/sinafinance/news.d.ts +7 -0
  909. package/vendor/opencli/dist/clis/sinafinance/news.js +61 -0
  910. package/vendor/opencli/dist/clis/sinafinance/rolling-news.d.ts +4 -0
  911. package/vendor/opencli/dist/clis/sinafinance/rolling-news.js +40 -0
  912. package/vendor/opencli/dist/clis/sinafinance/stock-rank.d.ts +4 -0
  913. package/vendor/opencli/dist/clis/sinafinance/stock-rank.js +65 -0
  914. package/vendor/opencli/dist/clis/sinafinance/stock.d.ts +8 -0
  915. package/vendor/opencli/dist/clis/sinafinance/stock.js +117 -0
  916. package/vendor/opencli/dist/clis/smzdm/search.d.ts +1 -0
  917. package/vendor/opencli/dist/clis/smzdm/search.js +54 -0
  918. package/vendor/opencli/dist/clis/spotify/spotify.d.ts +1 -0
  919. package/vendor/opencli/dist/clis/spotify/spotify.js +316 -0
  920. package/vendor/opencli/dist/clis/spotify/utils.d.ts +21 -0
  921. package/vendor/opencli/dist/clis/spotify/utils.js +66 -0
  922. package/vendor/opencli/dist/clis/spotify/utils.test.d.ts +1 -0
  923. package/vendor/opencli/dist/clis/spotify/utils.test.js +67 -0
  924. package/vendor/opencli/dist/clis/stackoverflow/bounties.yaml +29 -0
  925. package/vendor/opencli/dist/clis/stackoverflow/hot.yaml +28 -0
  926. package/vendor/opencli/dist/clis/stackoverflow/search.yaml +33 -0
  927. package/vendor/opencli/dist/clis/stackoverflow/unanswered.yaml +28 -0
  928. package/vendor/opencli/dist/clis/steam/top-sellers.yaml +29 -0
  929. package/vendor/opencli/dist/clis/substack/feed.d.ts +1 -0
  930. package/vendor/opencli/dist/clis/substack/feed.js +15 -0
  931. package/vendor/opencli/dist/clis/substack/publication.d.ts +1 -0
  932. package/vendor/opencli/dist/clis/substack/publication.js +15 -0
  933. package/vendor/opencli/dist/clis/substack/search.d.ts +1 -0
  934. package/vendor/opencli/dist/clis/substack/search.js +78 -0
  935. package/vendor/opencli/dist/clis/substack/utils.d.ts +8 -0
  936. package/vendor/opencli/dist/clis/substack/utils.js +136 -0
  937. package/vendor/opencli/dist/clis/substack/utils.test.d.ts +1 -0
  938. package/vendor/opencli/dist/clis/substack/utils.test.js +44 -0
  939. package/vendor/opencli/dist/clis/tieba/commands.test.d.ts +4 -0
  940. package/vendor/opencli/dist/clis/tieba/commands.test.js +79 -0
  941. package/vendor/opencli/dist/clis/tieba/hot.d.ts +1 -0
  942. package/vendor/opencli/dist/clis/tieba/hot.js +48 -0
  943. package/vendor/opencli/dist/clis/tieba/posts.d.ts +1 -0
  944. package/vendor/opencli/dist/clis/tieba/posts.js +85 -0
  945. package/vendor/opencli/dist/clis/tieba/read.d.ts +1 -0
  946. package/vendor/opencli/dist/clis/tieba/read.js +140 -0
  947. package/vendor/opencli/dist/clis/tieba/search.d.ts +1 -0
  948. package/vendor/opencli/dist/clis/tieba/search.js +108 -0
  949. package/vendor/opencli/dist/clis/tieba/utils.d.ts +101 -0
  950. package/vendor/opencli/dist/clis/tieba/utils.js +240 -0
  951. package/vendor/opencli/dist/clis/tieba/utils.test.d.ts +1 -0
  952. package/vendor/opencli/dist/clis/tieba/utils.test.js +290 -0
  953. package/vendor/opencli/dist/clis/tiktok/comment.yaml +66 -0
  954. package/vendor/opencli/dist/clis/tiktok/explore.yaml +39 -0
  955. package/vendor/opencli/dist/clis/tiktok/follow.yaml +39 -0
  956. package/vendor/opencli/dist/clis/tiktok/following.yaml +46 -0
  957. package/vendor/opencli/dist/clis/tiktok/friends.yaml +47 -0
  958. package/vendor/opencli/dist/clis/tiktok/like.yaml +38 -0
  959. package/vendor/opencli/dist/clis/tiktok/live.yaml +51 -0
  960. package/vendor/opencli/dist/clis/tiktok/notifications.yaml +52 -0
  961. package/vendor/opencli/dist/clis/tiktok/profile.yaml +45 -0
  962. package/vendor/opencli/dist/clis/tiktok/save.yaml +34 -0
  963. package/vendor/opencli/dist/clis/tiktok/search.yaml +47 -0
  964. package/vendor/opencli/dist/clis/tiktok/unfollow.yaml +44 -0
  965. package/vendor/opencli/dist/clis/tiktok/unlike.yaml +38 -0
  966. package/vendor/opencli/dist/clis/tiktok/unsave.yaml +36 -0
  967. package/vendor/opencli/dist/clis/tiktok/user.yaml +44 -0
  968. package/vendor/opencli/dist/clis/twitter/accept.d.ts +1 -0
  969. package/vendor/opencli/dist/clis/twitter/accept.js +203 -0
  970. package/vendor/opencli/dist/clis/twitter/article.d.ts +1 -0
  971. package/vendor/opencli/dist/clis/twitter/article.js +163 -0
  972. package/vendor/opencli/dist/clis/twitter/block.d.ts +1 -0
  973. package/vendor/opencli/dist/clis/twitter/block.js +89 -0
  974. package/vendor/opencli/dist/clis/twitter/bookmark.d.ts +1 -0
  975. package/vendor/opencli/dist/clis/twitter/bookmark.js +64 -0
  976. package/vendor/opencli/dist/clis/twitter/bookmarks.d.ts +1 -0
  977. package/vendor/opencli/dist/clis/twitter/bookmarks.js +172 -0
  978. package/vendor/opencli/dist/clis/twitter/delete.d.ts +1 -0
  979. package/vendor/opencli/dist/clis/twitter/delete.js +73 -0
  980. package/vendor/opencli/dist/clis/twitter/download.d.ts +8 -0
  981. package/vendor/opencli/dist/clis/twitter/download.js +110 -0
  982. package/vendor/opencli/dist/clis/twitter/follow.d.ts +1 -0
  983. package/vendor/opencli/dist/clis/twitter/follow.js +66 -0
  984. package/vendor/opencli/dist/clis/twitter/followers.d.ts +1 -0
  985. package/vendor/opencli/dist/clis/twitter/followers.js +102 -0
  986. package/vendor/opencli/dist/clis/twitter/following.d.ts +1 -0
  987. package/vendor/opencli/dist/clis/twitter/following.js +95 -0
  988. package/vendor/opencli/dist/clis/twitter/hide-reply.d.ts +1 -0
  989. package/vendor/opencli/dist/clis/twitter/hide-reply.js +67 -0
  990. package/vendor/opencli/dist/clis/twitter/like.d.ts +1 -0
  991. package/vendor/opencli/dist/clis/twitter/like.js +69 -0
  992. package/vendor/opencli/dist/clis/twitter/likes.d.ts +24 -0
  993. package/vendor/opencli/dist/clis/twitter/likes.js +217 -0
  994. package/vendor/opencli/dist/clis/twitter/likes.test.d.ts +1 -0
  995. package/vendor/opencli/dist/clis/twitter/likes.test.js +85 -0
  996. package/vendor/opencli/dist/clis/twitter/notifications.d.ts +1 -0
  997. package/vendor/opencli/dist/clis/twitter/notifications.js +127 -0
  998. package/vendor/opencli/dist/clis/twitter/post.d.ts +1 -0
  999. package/vendor/opencli/dist/clis/twitter/post.js +98 -0
  1000. package/vendor/opencli/dist/clis/twitter/post.test.d.ts +1 -0
  1001. package/vendor/opencli/dist/clis/twitter/post.test.js +116 -0
  1002. package/vendor/opencli/dist/clis/twitter/profile.d.ts +1 -0
  1003. package/vendor/opencli/dist/clis/twitter/profile.js +103 -0
  1004. package/vendor/opencli/dist/clis/twitter/reply-dm.d.ts +1 -0
  1005. package/vendor/opencli/dist/clis/twitter/reply-dm.js +182 -0
  1006. package/vendor/opencli/dist/clis/twitter/reply.d.ts +13 -0
  1007. package/vendor/opencli/dist/clis/twitter/reply.js +280 -0
  1008. package/vendor/opencli/dist/clis/twitter/reply.test.d.ts +1 -0
  1009. package/vendor/opencli/dist/clis/twitter/reply.test.js +151 -0
  1010. package/vendor/opencli/dist/clis/twitter/search.d.ts +1 -0
  1011. package/vendor/opencli/dist/clis/twitter/search.js +169 -0
  1012. package/vendor/opencli/dist/clis/twitter/search.test.d.ts +1 -0
  1013. package/vendor/opencli/dist/clis/twitter/search.test.js +236 -0
  1014. package/vendor/opencli/dist/clis/twitter/shared.d.ts +6 -0
  1015. package/vendor/opencli/dist/clis/twitter/shared.js +35 -0
  1016. package/vendor/opencli/dist/clis/twitter/thread.d.ts +1 -0
  1017. package/vendor/opencli/dist/clis/twitter/thread.js +151 -0
  1018. package/vendor/opencli/dist/clis/twitter/timeline.d.ts +24 -0
  1019. package/vendor/opencli/dist/clis/twitter/timeline.js +204 -0
  1020. package/vendor/opencli/dist/clis/twitter/timeline.test.d.ts +1 -0
  1021. package/vendor/opencli/dist/clis/twitter/timeline.test.js +102 -0
  1022. package/vendor/opencli/dist/clis/twitter/trending.d.ts +1 -0
  1023. package/vendor/opencli/dist/clis/twitter/trending.js +60 -0
  1024. package/vendor/opencli/dist/clis/twitter/unblock.d.ts +1 -0
  1025. package/vendor/opencli/dist/clis/twitter/unblock.js +72 -0
  1026. package/vendor/opencli/dist/clis/twitter/unbookmark.d.ts +1 -0
  1027. package/vendor/opencli/dist/clis/twitter/unbookmark.js +63 -0
  1028. package/vendor/opencli/dist/clis/twitter/unfollow.d.ts +1 -0
  1029. package/vendor/opencli/dist/clis/twitter/unfollow.js +72 -0
  1030. package/vendor/opencli/dist/clis/v2ex/daily.d.ts +1 -0
  1031. package/vendor/opencli/dist/clis/v2ex/daily.js +98 -0
  1032. package/vendor/opencli/dist/clis/v2ex/hot.yaml +28 -0
  1033. package/vendor/opencli/dist/clis/v2ex/latest.yaml +28 -0
  1034. package/vendor/opencli/dist/clis/v2ex/me.d.ts +1 -0
  1035. package/vendor/opencli/dist/clis/v2ex/me.js +99 -0
  1036. package/vendor/opencli/dist/clis/v2ex/member.yaml +29 -0
  1037. package/vendor/opencli/dist/clis/v2ex/node.yaml +34 -0
  1038. package/vendor/opencli/dist/clis/v2ex/nodes.yaml +31 -0
  1039. package/vendor/opencli/dist/clis/v2ex/notifications.d.ts +1 -0
  1040. package/vendor/opencli/dist/clis/v2ex/notifications.js +71 -0
  1041. package/vendor/opencli/dist/clis/v2ex/replies.yaml +32 -0
  1042. package/vendor/opencli/dist/clis/v2ex/topic.yaml +33 -0
  1043. package/vendor/opencli/dist/clis/v2ex/user.yaml +34 -0
  1044. package/vendor/opencli/dist/clis/web/read.d.ts +16 -0
  1045. package/vendor/opencli/dist/clis/web/read.js +202 -0
  1046. package/vendor/opencli/dist/clis/weibo/comments.d.ts +1 -0
  1047. package/vendor/opencli/dist/clis/weibo/comments.js +53 -0
  1048. package/vendor/opencli/dist/clis/weibo/feed.d.ts +1 -0
  1049. package/vendor/opencli/dist/clis/weibo/feed.js +56 -0
  1050. package/vendor/opencli/dist/clis/weibo/hot.d.ts +1 -0
  1051. package/vendor/opencli/dist/clis/weibo/hot.js +39 -0
  1052. package/vendor/opencli/dist/clis/weibo/me.d.ts +1 -0
  1053. package/vendor/opencli/dist/clis/weibo/me.js +76 -0
  1054. package/vendor/opencli/dist/clis/weibo/post.d.ts +1 -0
  1055. package/vendor/opencli/dist/clis/weibo/post.js +75 -0
  1056. package/vendor/opencli/dist/clis/weibo/search.d.ts +1 -0
  1057. package/vendor/opencli/dist/clis/weibo/search.js +73 -0
  1058. package/vendor/opencli/dist/clis/weibo/user.d.ts +1 -0
  1059. package/vendor/opencli/dist/clis/weibo/user.js +63 -0
  1060. package/vendor/opencli/dist/clis/weibo/utils.d.ts +6 -0
  1061. package/vendor/opencli/dist/clis/weibo/utils.js +30 -0
  1062. package/vendor/opencli/dist/clis/weixin/download.d.ts +38 -0
  1063. package/vendor/opencli/dist/clis/weixin/download.js +321 -0
  1064. package/vendor/opencli/dist/clis/weread/book.d.ts +1 -0
  1065. package/vendor/opencli/dist/clis/weread/book.js +219 -0
  1066. package/vendor/opencli/dist/clis/weread/commands.test.d.ts +3 -0
  1067. package/vendor/opencli/dist/clis/weread/commands.test.js +374 -0
  1068. package/vendor/opencli/dist/clis/weread/highlights.d.ts +1 -0
  1069. package/vendor/opencli/dist/clis/weread/highlights.js +23 -0
  1070. package/vendor/opencli/dist/clis/weread/notebooks.d.ts +1 -0
  1071. package/vendor/opencli/dist/clis/weread/notebooks.js +21 -0
  1072. package/vendor/opencli/dist/clis/weread/notes.d.ts +1 -0
  1073. package/vendor/opencli/dist/clis/weread/notes.js +29 -0
  1074. package/vendor/opencli/dist/clis/weread/private-api-regression.test.d.ts +1 -0
  1075. package/vendor/opencli/dist/clis/weread/private-api-regression.test.js +369 -0
  1076. package/vendor/opencli/dist/clis/weread/ranking.d.ts +1 -0
  1077. package/vendor/opencli/dist/clis/weread/ranking.js +28 -0
  1078. package/vendor/opencli/dist/clis/weread/search-regression.test.d.ts +1 -0
  1079. package/vendor/opencli/dist/clis/weread/search-regression.test.js +407 -0
  1080. package/vendor/opencli/dist/clis/weread/search.d.ts +1 -0
  1081. package/vendor/opencli/dist/clis/weread/search.js +162 -0
  1082. package/vendor/opencli/dist/clis/weread/shelf.d.ts +1 -0
  1083. package/vendor/opencli/dist/clis/weread/shelf.js +65 -0
  1084. package/vendor/opencli/dist/clis/weread/utils.d.ts +76 -0
  1085. package/vendor/opencli/dist/clis/weread/utils.js +321 -0
  1086. package/vendor/opencli/dist/clis/weread/utils.test.d.ts +1 -0
  1087. package/vendor/opencli/dist/clis/weread/utils.test.js +128 -0
  1088. package/vendor/opencli/dist/clis/wikipedia/random.d.ts +1 -0
  1089. package/vendor/opencli/dist/clis/wikipedia/random.js +19 -0
  1090. package/vendor/opencli/dist/clis/wikipedia/search.d.ts +1 -0
  1091. package/vendor/opencli/dist/clis/wikipedia/search.js +30 -0
  1092. package/vendor/opencli/dist/clis/wikipedia/summary.d.ts +1 -0
  1093. package/vendor/opencli/dist/clis/wikipedia/summary.js +23 -0
  1094. package/vendor/opencli/dist/clis/wikipedia/trending.d.ts +1 -0
  1095. package/vendor/opencli/dist/clis/wikipedia/trending.js +35 -0
  1096. package/vendor/opencli/dist/clis/wikipedia/utils.d.ts +36 -0
  1097. package/vendor/opencli/dist/clis/wikipedia/utils.js +31 -0
  1098. package/vendor/opencli/dist/clis/xianyu/chat.d.ts +7 -0
  1099. package/vendor/opencli/dist/clis/xianyu/chat.js +146 -0
  1100. package/vendor/opencli/dist/clis/xianyu/chat.test.d.ts +1 -0
  1101. package/vendor/opencli/dist/clis/xianyu/chat.test.js +15 -0
  1102. package/vendor/opencli/dist/clis/xianyu/item.d.ts +7 -0
  1103. package/vendor/opencli/dist/clis/xianyu/item.js +152 -0
  1104. package/vendor/opencli/dist/clis/xianyu/item.test.d.ts +1 -0
  1105. package/vendor/opencli/dist/clis/xianyu/item.test.js +56 -0
  1106. package/vendor/opencli/dist/clis/xianyu/search.d.ts +10 -0
  1107. package/vendor/opencli/dist/clis/xianyu/search.js +134 -0
  1108. package/vendor/opencli/dist/clis/xianyu/search.test.d.ts +1 -0
  1109. package/vendor/opencli/dist/clis/xianyu/search.test.js +17 -0
  1110. package/vendor/opencli/dist/clis/xianyu/utils.d.ts +1 -0
  1111. package/vendor/opencli/dist/clis/xianyu/utils.js +8 -0
  1112. package/vendor/opencli/dist/clis/xiaoe/catalog.yaml +129 -0
  1113. package/vendor/opencli/dist/clis/xiaoe/content.yaml +43 -0
  1114. package/vendor/opencli/dist/clis/xiaoe/courses.yaml +73 -0
  1115. package/vendor/opencli/dist/clis/xiaoe/detail.yaml +39 -0
  1116. package/vendor/opencli/dist/clis/xiaoe/play-url.yaml +124 -0
  1117. package/vendor/opencli/dist/clis/xiaohongshu/comments.d.ts +8 -0
  1118. package/vendor/opencli/dist/clis/xiaohongshu/comments.js +133 -0
  1119. package/vendor/opencli/dist/clis/xiaohongshu/comments.test.d.ts +1 -0
  1120. package/vendor/opencli/dist/clis/xiaohongshu/comments.test.js +139 -0
  1121. package/vendor/opencli/dist/clis/xiaohongshu/creator-note-detail.d.ts +84 -0
  1122. package/vendor/opencli/dist/clis/xiaohongshu/creator-note-detail.js +341 -0
  1123. package/vendor/opencli/dist/clis/xiaohongshu/creator-note-detail.test.d.ts +1 -0
  1124. package/vendor/opencli/dist/clis/xiaohongshu/creator-note-detail.test.js +259 -0
  1125. package/vendor/opencli/dist/clis/xiaohongshu/creator-notes-summary.d.ts +28 -0
  1126. package/vendor/opencli/dist/clis/xiaohongshu/creator-notes-summary.js +92 -0
  1127. package/vendor/opencli/dist/clis/xiaohongshu/creator-notes-summary.test.d.ts +1 -0
  1128. package/vendor/opencli/dist/clis/xiaohongshu/creator-notes-summary.test.js +49 -0
  1129. package/vendor/opencli/dist/clis/xiaohongshu/creator-notes.d.ts +24 -0
  1130. package/vendor/opencli/dist/clis/xiaohongshu/creator-notes.js +227 -0
  1131. package/vendor/opencli/dist/clis/xiaohongshu/creator-notes.test.d.ts +1 -0
  1132. package/vendor/opencli/dist/clis/xiaohongshu/creator-notes.test.js +192 -0
  1133. package/vendor/opencli/dist/clis/xiaohongshu/creator-profile.d.ts +10 -0
  1134. package/vendor/opencli/dist/clis/xiaohongshu/creator-profile.js +53 -0
  1135. package/vendor/opencli/dist/clis/xiaohongshu/creator-stats.d.ts +10 -0
  1136. package/vendor/opencli/dist/clis/xiaohongshu/creator-stats.js +73 -0
  1137. package/vendor/opencli/dist/clis/xiaohongshu/download.d.ts +10 -0
  1138. package/vendor/opencli/dist/clis/xiaohongshu/download.js +167 -0
  1139. package/vendor/opencli/dist/clis/xiaohongshu/download.test.d.ts +1 -0
  1140. package/vendor/opencli/dist/clis/xiaohongshu/download.test.js +73 -0
  1141. package/vendor/opencli/dist/clis/xiaohongshu/feed.yaml +31 -0
  1142. package/vendor/opencli/dist/clis/xiaohongshu/note-helpers.d.ts +12 -0
  1143. package/vendor/opencli/dist/clis/xiaohongshu/note-helpers.js +23 -0
  1144. package/vendor/opencli/dist/clis/xiaohongshu/note.d.ts +7 -0
  1145. package/vendor/opencli/dist/clis/xiaohongshu/note.js +87 -0
  1146. package/vendor/opencli/dist/clis/xiaohongshu/note.test.d.ts +1 -0
  1147. package/vendor/opencli/dist/clis/xiaohongshu/note.test.js +183 -0
  1148. package/vendor/opencli/dist/clis/xiaohongshu/notifications.yaml +37 -0
  1149. package/vendor/opencli/dist/clis/xiaohongshu/publish.d.ts +18 -0
  1150. package/vendor/opencli/dist/clis/xiaohongshu/publish.js +531 -0
  1151. package/vendor/opencli/dist/clis/xiaohongshu/publish.test.d.ts +1 -0
  1152. package/vendor/opencli/dist/clis/xiaohongshu/publish.test.js +195 -0
  1153. package/vendor/opencli/dist/clis/xiaohongshu/search.d.ts +15 -0
  1154. package/vendor/opencli/dist/clis/xiaohongshu/search.js +131 -0
  1155. package/vendor/opencli/dist/clis/xiaohongshu/search.test.d.ts +1 -0
  1156. package/vendor/opencli/dist/clis/xiaohongshu/search.test.js +160 -0
  1157. package/vendor/opencli/dist/clis/xiaohongshu/user-helpers.d.ts +16 -0
  1158. package/vendor/opencli/dist/clis/xiaohongshu/user-helpers.js +69 -0
  1159. package/vendor/opencli/dist/clis/xiaohongshu/user-helpers.test.d.ts +1 -0
  1160. package/vendor/opencli/dist/clis/xiaohongshu/user-helpers.test.js +99 -0
  1161. package/vendor/opencli/dist/clis/xiaohongshu/user.d.ts +1 -0
  1162. package/vendor/opencli/dist/clis/xiaohongshu/user.js +56 -0
  1163. package/vendor/opencli/dist/clis/xiaoyuzhou/episode.d.ts +1 -0
  1164. package/vendor/opencli/dist/clis/xiaoyuzhou/episode.js +28 -0
  1165. package/vendor/opencli/dist/clis/xiaoyuzhou/podcast-episodes.d.ts +1 -0
  1166. package/vendor/opencli/dist/clis/xiaoyuzhou/podcast-episodes.js +36 -0
  1167. package/vendor/opencli/dist/clis/xiaoyuzhou/podcast.d.ts +1 -0
  1168. package/vendor/opencli/dist/clis/xiaoyuzhou/podcast.js +27 -0
  1169. package/vendor/opencli/dist/clis/xiaoyuzhou/utils.d.ts +16 -0
  1170. package/vendor/opencli/dist/clis/xiaoyuzhou/utils.js +55 -0
  1171. package/vendor/opencli/dist/clis/xiaoyuzhou/utils.test.d.ts +1 -0
  1172. package/vendor/opencli/dist/clis/xiaoyuzhou/utils.test.js +99 -0
  1173. package/vendor/opencli/dist/clis/xueqiu/comments.d.ts +118 -0
  1174. package/vendor/opencli/dist/clis/xueqiu/comments.js +354 -0
  1175. package/vendor/opencli/dist/clis/xueqiu/comments.test.d.ts +1 -0
  1176. package/vendor/opencli/dist/clis/xueqiu/comments.test.js +696 -0
  1177. package/vendor/opencli/dist/clis/xueqiu/danjuan-utils.d.ts +55 -0
  1178. package/vendor/opencli/dist/clis/xueqiu/danjuan-utils.js +126 -0
  1179. package/vendor/opencli/dist/clis/xueqiu/danjuan-utils.test.d.ts +1 -0
  1180. package/vendor/opencli/dist/clis/xueqiu/danjuan-utils.test.js +41 -0
  1181. package/vendor/opencli/dist/clis/xueqiu/earnings-date.yaml +69 -0
  1182. package/vendor/opencli/dist/clis/xueqiu/feed.yaml +53 -0
  1183. package/vendor/opencli/dist/clis/xueqiu/fund-holdings.d.ts +1 -0
  1184. package/vendor/opencli/dist/clis/xueqiu/fund-holdings.js +28 -0
  1185. package/vendor/opencli/dist/clis/xueqiu/fund-snapshot.d.ts +1 -0
  1186. package/vendor/opencli/dist/clis/xueqiu/fund-snapshot.js +25 -0
  1187. package/vendor/opencli/dist/clis/xueqiu/hot-stock.yaml +49 -0
  1188. package/vendor/opencli/dist/clis/xueqiu/hot.yaml +46 -0
  1189. package/vendor/opencli/dist/clis/xueqiu/search.yaml +55 -0
  1190. package/vendor/opencli/dist/clis/xueqiu/stock.yaml +69 -0
  1191. package/vendor/opencli/dist/clis/xueqiu/watchlist.yaml +46 -0
  1192. package/vendor/opencli/dist/clis/yahoo-finance/quote.d.ts +1 -0
  1193. package/vendor/opencli/dist/clis/yahoo-finance/quote.js +72 -0
  1194. package/vendor/opencli/dist/clis/yollomi/background.d.ts +4 -0
  1195. package/vendor/opencli/dist/clis/yollomi/background.js +45 -0
  1196. package/vendor/opencli/dist/clis/yollomi/edit.d.ts +5 -0
  1197. package/vendor/opencli/dist/clis/yollomi/edit.js +56 -0
  1198. package/vendor/opencli/dist/clis/yollomi/face-swap.d.ts +5 -0
  1199. package/vendor/opencli/dist/clis/yollomi/face-swap.js +43 -0
  1200. package/vendor/opencli/dist/clis/yollomi/generate.d.ts +9 -0
  1201. package/vendor/opencli/dist/clis/yollomi/generate.js +100 -0
  1202. package/vendor/opencli/dist/clis/yollomi/models.d.ts +1 -0
  1203. package/vendor/opencli/dist/clis/yollomi/models.js +33 -0
  1204. package/vendor/opencli/dist/clis/yollomi/object-remover.d.ts +4 -0
  1205. package/vendor/opencli/dist/clis/yollomi/object-remover.js +42 -0
  1206. package/vendor/opencli/dist/clis/yollomi/remove-bg.d.ts +4 -0
  1207. package/vendor/opencli/dist/clis/yollomi/remove-bg.js +38 -0
  1208. package/vendor/opencli/dist/clis/yollomi/restore.d.ts +4 -0
  1209. package/vendor/opencli/dist/clis/yollomi/restore.js +38 -0
  1210. package/vendor/opencli/dist/clis/yollomi/try-on.d.ts +4 -0
  1211. package/vendor/opencli/dist/clis/yollomi/try-on.js +46 -0
  1212. package/vendor/opencli/dist/clis/yollomi/upload.d.ts +7 -0
  1213. package/vendor/opencli/dist/clis/yollomi/upload.js +71 -0
  1214. package/vendor/opencli/dist/clis/yollomi/upscale.d.ts +4 -0
  1215. package/vendor/opencli/dist/clis/yollomi/upscale.js +53 -0
  1216. package/vendor/opencli/dist/clis/yollomi/utils.d.ts +45 -0
  1217. package/vendor/opencli/dist/clis/yollomi/utils.js +180 -0
  1218. package/vendor/opencli/dist/clis/yollomi/video.d.ts +5 -0
  1219. package/vendor/opencli/dist/clis/yollomi/video.js +56 -0
  1220. package/vendor/opencli/dist/clis/youtube/channel.d.ts +1 -0
  1221. package/vendor/opencli/dist/clis/youtube/channel.js +150 -0
  1222. package/vendor/opencli/dist/clis/youtube/comments.d.ts +1 -0
  1223. package/vendor/opencli/dist/clis/youtube/comments.js +95 -0
  1224. package/vendor/opencli/dist/clis/youtube/search.d.ts +1 -0
  1225. package/vendor/opencli/dist/clis/youtube/search.js +99 -0
  1226. package/vendor/opencli/dist/clis/youtube/transcript-group.d.ts +44 -0
  1227. package/vendor/opencli/dist/clis/youtube/transcript-group.js +226 -0
  1228. package/vendor/opencli/dist/clis/youtube/transcript-group.test.d.ts +1 -0
  1229. package/vendor/opencli/dist/clis/youtube/transcript-group.test.js +99 -0
  1230. package/vendor/opencli/dist/clis/youtube/transcript.d.ts +1 -0
  1231. package/vendor/opencli/dist/clis/youtube/transcript.js +263 -0
  1232. package/vendor/opencli/dist/clis/youtube/utils.d.ts +17 -0
  1233. package/vendor/opencli/dist/clis/youtube/utils.js +92 -0
  1234. package/vendor/opencli/dist/clis/youtube/utils.test.d.ts +1 -0
  1235. package/vendor/opencli/dist/clis/youtube/utils.test.js +37 -0
  1236. package/vendor/opencli/dist/clis/youtube/video.d.ts +1 -0
  1237. package/vendor/opencli/dist/clis/youtube/video.js +116 -0
  1238. package/vendor/opencli/dist/clis/yuanbao/ask.d.ts +21 -0
  1239. package/vendor/opencli/dist/clis/yuanbao/ask.js +427 -0
  1240. package/vendor/opencli/dist/clis/yuanbao/ask.test.d.ts +1 -0
  1241. package/vendor/opencli/dist/clis/yuanbao/ask.test.js +124 -0
  1242. package/vendor/opencli/dist/clis/yuanbao/new.d.ts +1 -0
  1243. package/vendor/opencli/dist/clis/yuanbao/new.js +70 -0
  1244. package/vendor/opencli/dist/clis/yuanbao/new.test.d.ts +1 -0
  1245. package/vendor/opencli/dist/clis/yuanbao/new.test.js +30 -0
  1246. package/vendor/opencli/dist/clis/yuanbao/shared.d.ts +13 -0
  1247. package/vendor/opencli/dist/clis/yuanbao/shared.js +49 -0
  1248. package/vendor/opencli/dist/clis/zhihu/download.d.ts +7 -0
  1249. package/vendor/opencli/dist/clis/zhihu/download.js +79 -0
  1250. package/vendor/opencli/dist/clis/zhihu/download.test.d.ts +1 -0
  1251. package/vendor/opencli/dist/clis/zhihu/download.test.js +12 -0
  1252. package/vendor/opencli/dist/clis/zhihu/hot.yaml +46 -0
  1253. package/vendor/opencli/dist/clis/zhihu/question.d.ts +1 -0
  1254. package/vendor/opencli/dist/clis/zhihu/question.js +53 -0
  1255. package/vendor/opencli/dist/clis/zhihu/question.test.d.ts +1 -0
  1256. package/vendor/opencli/dist/clis/zhihu/question.test.js +72 -0
  1257. package/vendor/opencli/dist/clis/zhihu/search.yaml +59 -0
  1258. package/vendor/opencli/dist/clis/zsxq/dynamics.d.ts +1 -0
  1259. package/vendor/opencli/dist/clis/zsxq/dynamics.js +47 -0
  1260. package/vendor/opencli/dist/clis/zsxq/groups.d.ts +1 -0
  1261. package/vendor/opencli/dist/clis/zsxq/groups.js +32 -0
  1262. package/vendor/opencli/dist/clis/zsxq/search.d.ts +1 -0
  1263. package/vendor/opencli/dist/clis/zsxq/search.js +43 -0
  1264. package/vendor/opencli/dist/clis/zsxq/search.test.d.ts +1 -0
  1265. package/vendor/opencli/dist/clis/zsxq/search.test.js +24 -0
  1266. package/vendor/opencli/dist/clis/zsxq/topic.d.ts +1 -0
  1267. package/vendor/opencli/dist/clis/zsxq/topic.js +47 -0
  1268. package/vendor/opencli/dist/clis/zsxq/topic.test.d.ts +1 -0
  1269. package/vendor/opencli/dist/clis/zsxq/topic.test.js +29 -0
  1270. package/vendor/opencli/dist/clis/zsxq/topics.d.ts +1 -0
  1271. package/vendor/opencli/dist/clis/zsxq/topics.js +25 -0
  1272. package/vendor/opencli/dist/clis/zsxq/topics.test.d.ts +1 -0
  1273. package/vendor/opencli/dist/clis/zsxq/topics.test.js +24 -0
  1274. package/vendor/opencli/dist/clis/zsxq/utils.d.ts +97 -0
  1275. package/vendor/opencli/dist/clis/zsxq/utils.js +230 -0
  1276. package/vendor/opencli/dist/commanderAdapter.d.ts +22 -0
  1277. package/vendor/opencli/dist/commanderAdapter.js +301 -0
  1278. package/vendor/opencli/dist/commanderAdapter.test.d.ts +1 -0
  1279. package/vendor/opencli/dist/commanderAdapter.test.js +244 -0
  1280. package/vendor/opencli/dist/commands/daemon.d.ts +9 -0
  1281. package/vendor/opencli/dist/commands/daemon.js +85 -0
  1282. package/vendor/opencli/dist/commands/daemon.test.d.ts +1 -0
  1283. package/vendor/opencli/dist/commands/daemon.test.js +160 -0
  1284. package/vendor/opencli/dist/completion.d.ts +21 -0
  1285. package/vendor/opencli/dist/completion.js +120 -0
  1286. package/vendor/opencli/dist/completion.test.d.ts +1 -0
  1287. package/vendor/opencli/dist/completion.test.js +23 -0
  1288. package/vendor/opencli/dist/constants.d.ts +17 -0
  1289. package/vendor/opencli/dist/constants.js +34 -0
  1290. package/vendor/opencli/dist/daemon.d.ts +21 -0
  1291. package/vendor/opencli/dist/daemon.js +303 -0
  1292. package/vendor/opencli/dist/daemon.test.d.ts +1 -0
  1293. package/vendor/opencli/dist/daemon.test.js +65 -0
  1294. package/vendor/opencli/dist/discovery.d.ts +31 -0
  1295. package/vendor/opencli/dist/discovery.js +330 -0
  1296. package/vendor/opencli/dist/doctor.d.ts +38 -0
  1297. package/vendor/opencli/dist/doctor.js +126 -0
  1298. package/vendor/opencli/dist/doctor.test.d.ts +1 -0
  1299. package/vendor/opencli/dist/doctor.test.js +91 -0
  1300. package/vendor/opencli/dist/download/article-download.d.ts +59 -0
  1301. package/vendor/opencli/dist/download/article-download.js +178 -0
  1302. package/vendor/opencli/dist/download/index.d.ts +71 -0
  1303. package/vendor/opencli/dist/download/index.js +345 -0
  1304. package/vendor/opencli/dist/download/index.test.d.ts +1 -0
  1305. package/vendor/opencli/dist/download/index.test.js +118 -0
  1306. package/vendor/opencli/dist/download/media-download.d.ts +49 -0
  1307. package/vendor/opencli/dist/download/media-download.js +114 -0
  1308. package/vendor/opencli/dist/download/progress.d.ts +36 -0
  1309. package/vendor/opencli/dist/download/progress.js +111 -0
  1310. package/vendor/opencli/dist/electron-apps.d.ts +31 -0
  1311. package/vendor/opencli/dist/electron-apps.js +71 -0
  1312. package/vendor/opencli/dist/electron-apps.test.d.ts +1 -0
  1313. package/vendor/opencli/dist/electron-apps.test.js +43 -0
  1314. package/vendor/opencli/dist/engine.test.d.ts +1 -0
  1315. package/vendor/opencli/dist/engine.test.js +297 -0
  1316. package/vendor/opencli/dist/errors.d.ts +76 -0
  1317. package/vendor/opencli/dist/errors.js +119 -0
  1318. package/vendor/opencli/dist/errors.test.d.ts +1 -0
  1319. package/vendor/opencli/dist/errors.test.js +59 -0
  1320. package/vendor/opencli/dist/execution.d.ts +14 -0
  1321. package/vendor/opencli/dist/execution.js +209 -0
  1322. package/vendor/opencli/dist/execution.test.d.ts +1 -0
  1323. package/vendor/opencli/dist/execution.test.js +40 -0
  1324. package/vendor/opencli/dist/explore.d.ts +101 -0
  1325. package/vendor/opencli/dist/explore.js +379 -0
  1326. package/vendor/opencli/dist/extension-manifest-regression.test.d.ts +1 -0
  1327. package/vendor/opencli/dist/extension-manifest-regression.test.js +13 -0
  1328. package/vendor/opencli/dist/external-clis.yaml +56 -0
  1329. package/vendor/opencli/dist/external.d.ts +40 -0
  1330. package/vendor/opencli/dist/external.js +209 -0
  1331. package/vendor/opencli/dist/external.test.d.ts +1 -0
  1332. package/vendor/opencli/dist/external.test.js +68 -0
  1333. package/vendor/opencli/dist/generate.d.ts +41 -0
  1334. package/vendor/opencli/dist/generate.js +121 -0
  1335. package/vendor/opencli/dist/hooks.d.ts +46 -0
  1336. package/vendor/opencli/dist/hooks.js +58 -0
  1337. package/vendor/opencli/dist/hooks.test.d.ts +4 -0
  1338. package/vendor/opencli/dist/hooks.test.js +92 -0
  1339. package/vendor/opencli/dist/idle-manager.d.ts +19 -0
  1340. package/vendor/opencli/dist/idle-manager.js +54 -0
  1341. package/vendor/opencli/dist/interceptor.d.ts +42 -0
  1342. package/vendor/opencli/dist/interceptor.js +186 -0
  1343. package/vendor/opencli/dist/interceptor.test.d.ts +4 -0
  1344. package/vendor/opencli/dist/interceptor.test.js +81 -0
  1345. package/vendor/opencli/dist/launcher.d.ts +40 -0
  1346. package/vendor/opencli/dist/launcher.js +208 -0
  1347. package/vendor/opencli/dist/launcher.test.d.ts +1 -0
  1348. package/vendor/opencli/dist/launcher.test.js +138 -0
  1349. package/vendor/opencli/dist/logger.d.ts +22 -0
  1350. package/vendor/opencli/dist/logger.js +47 -0
  1351. package/vendor/opencli/dist/main.d.ts +5 -0
  1352. package/vendor/opencli/dist/main.js +60 -0
  1353. package/vendor/opencli/dist/node-network.d.ts +10 -0
  1354. package/vendor/opencli/dist/node-network.js +174 -0
  1355. package/vendor/opencli/dist/node-network.test.d.ts +1 -0
  1356. package/vendor/opencli/dist/node-network.test.js +55 -0
  1357. package/vendor/opencli/dist/output.d.ts +14 -0
  1358. package/vendor/opencli/dist/output.js +147 -0
  1359. package/vendor/opencli/dist/output.test.d.ts +1 -0
  1360. package/vendor/opencli/dist/output.test.js +62 -0
  1361. package/vendor/opencli/dist/pipeline/executor.d.ts +11 -0
  1362. package/vendor/opencli/dist/pipeline/executor.js +93 -0
  1363. package/vendor/opencli/dist/pipeline/executor.test.d.ts +4 -0
  1364. package/vendor/opencli/dist/pipeline/executor.test.js +173 -0
  1365. package/vendor/opencli/dist/pipeline/index.d.ts +5 -0
  1366. package/vendor/opencli/dist/pipeline/index.js +5 -0
  1367. package/vendor/opencli/dist/pipeline/registry.d.ts +19 -0
  1368. package/vendor/opencli/dist/pipeline/registry.js +43 -0
  1369. package/vendor/opencli/dist/pipeline/steps/browser.d.ts +12 -0
  1370. package/vendor/opencli/dist/pipeline/steps/browser.js +76 -0
  1371. package/vendor/opencli/dist/pipeline/steps/download.d.ts +34 -0
  1372. package/vendor/opencli/dist/pipeline/steps/download.js +263 -0
  1373. package/vendor/opencli/dist/pipeline/steps/download.test.d.ts +1 -0
  1374. package/vendor/opencli/dist/pipeline/steps/download.test.js +100 -0
  1375. package/vendor/opencli/dist/pipeline/steps/fetch.d.ts +5 -0
  1376. package/vendor/opencli/dist/pipeline/steps/fetch.js +142 -0
  1377. package/vendor/opencli/dist/pipeline/steps/fetch.test.d.ts +1 -0
  1378. package/vendor/opencli/dist/pipeline/steps/fetch.test.js +123 -0
  1379. package/vendor/opencli/dist/pipeline/steps/intercept.d.ts +5 -0
  1380. package/vendor/opencli/dist/pipeline/steps/intercept.js +50 -0
  1381. package/vendor/opencli/dist/pipeline/steps/tap.d.ts +12 -0
  1382. package/vendor/opencli/dist/pipeline/steps/tap.js +92 -0
  1383. package/vendor/opencli/dist/pipeline/steps/transform.d.ts +9 -0
  1384. package/vendor/opencli/dist/pipeline/steps/transform.js +70 -0
  1385. package/vendor/opencli/dist/pipeline/template.d.ts +16 -0
  1386. package/vendor/opencli/dist/pipeline/template.js +276 -0
  1387. package/vendor/opencli/dist/pipeline/template.test.d.ts +4 -0
  1388. package/vendor/opencli/dist/pipeline/template.test.js +172 -0
  1389. package/vendor/opencli/dist/pipeline/transform.test.d.ts +4 -0
  1390. package/vendor/opencli/dist/pipeline/transform.test.js +119 -0
  1391. package/vendor/opencli/dist/plugin-manifest.d.ts +70 -0
  1392. package/vendor/opencli/dist/plugin-manifest.js +160 -0
  1393. package/vendor/opencli/dist/plugin-manifest.test.d.ts +4 -0
  1394. package/vendor/opencli/dist/plugin-manifest.test.js +179 -0
  1395. package/vendor/opencli/dist/plugin-scaffold.d.ts +28 -0
  1396. package/vendor/opencli/dist/plugin-scaffold.js +142 -0
  1397. package/vendor/opencli/dist/plugin-scaffold.test.d.ts +4 -0
  1398. package/vendor/opencli/dist/plugin-scaffold.test.js +83 -0
  1399. package/vendor/opencli/dist/plugin.d.ts +145 -0
  1400. package/vendor/opencli/dist/plugin.js +1221 -0
  1401. package/vendor/opencli/dist/plugin.test.d.ts +4 -0
  1402. package/vendor/opencli/dist/plugin.test.js +1312 -0
  1403. package/vendor/opencli/dist/record.d.ts +97 -0
  1404. package/vendor/opencli/dist/record.js +694 -0
  1405. package/vendor/opencli/dist/record.test.d.ts +1 -0
  1406. package/vendor/opencli/dist/record.test.js +293 -0
  1407. package/vendor/opencli/dist/registry-api.d.ts +13 -0
  1408. package/vendor/opencli/dist/registry-api.js +10 -0
  1409. package/vendor/opencli/dist/registry.d.ts +81 -0
  1410. package/vendor/opencli/dist/registry.js +78 -0
  1411. package/vendor/opencli/dist/registry.test.d.ts +4 -0
  1412. package/vendor/opencli/dist/registry.test.js +113 -0
  1413. package/vendor/opencli/dist/runtime-detect.d.ts +21 -0
  1414. package/vendor/opencli/dist/runtime-detect.js +32 -0
  1415. package/vendor/opencli/dist/runtime-detect.test.d.ts +1 -0
  1416. package/vendor/opencli/dist/runtime-detect.test.js +27 -0
  1417. package/vendor/opencli/dist/runtime.d.ts +36 -0
  1418. package/vendor/opencli/dist/runtime.js +61 -0
  1419. package/vendor/opencli/dist/scripts/framework.d.ts +4 -0
  1420. package/vendor/opencli/dist/scripts/framework.js +21 -0
  1421. package/vendor/opencli/dist/scripts/interact.d.ts +4 -0
  1422. package/vendor/opencli/dist/scripts/interact.js +20 -0
  1423. package/vendor/opencli/dist/scripts/store.d.ts +9 -0
  1424. package/vendor/opencli/dist/scripts/store.js +44 -0
  1425. package/vendor/opencli/dist/serialization.d.ts +38 -0
  1426. package/vendor/opencli/dist/serialization.js +78 -0
  1427. package/vendor/opencli/dist/serialization.test.d.ts +1 -0
  1428. package/vendor/opencli/dist/serialization.test.js +39 -0
  1429. package/vendor/opencli/dist/snapshotFormatter.d.ts +11 -0
  1430. package/vendor/opencli/dist/snapshotFormatter.js +338 -0
  1431. package/vendor/opencli/dist/snapshotFormatter.test.d.ts +7 -0
  1432. package/vendor/opencli/dist/snapshotFormatter.test.js +521 -0
  1433. package/vendor/opencli/dist/synthesize.d.ts +103 -0
  1434. package/vendor/opencli/dist/synthesize.js +216 -0
  1435. package/vendor/opencli/dist/tui.d.ts +29 -0
  1436. package/vendor/opencli/dist/tui.js +192 -0
  1437. package/vendor/opencli/dist/tui.test.d.ts +1 -0
  1438. package/vendor/opencli/dist/tui.test.js +19 -0
  1439. package/vendor/opencli/dist/types.d.ts +98 -0
  1440. package/vendor/opencli/dist/types.js +7 -0
  1441. package/vendor/opencli/dist/update-check.d.ts +22 -0
  1442. package/vendor/opencli/dist/update-check.js +112 -0
  1443. package/vendor/opencli/dist/utils.d.ts +11 -0
  1444. package/vendor/opencli/dist/utils.js +33 -0
  1445. package/vendor/opencli/dist/validate.d.ts +14 -0
  1446. package/vendor/opencli/dist/validate.js +96 -0
  1447. package/vendor/opencli/dist/verify.d.ts +26 -0
  1448. package/vendor/opencli/dist/verify.js +67 -0
  1449. package/vendor/opencli/dist/version.d.ts +4 -0
  1450. package/vendor/opencli/dist/version.js +16 -0
  1451. package/vendor/opencli/dist/weixin-download.test.d.ts +1 -0
  1452. package/vendor/opencli/dist/weixin-download.test.js +44 -0
  1453. package/vendor/opencli/dist/yaml-schema.d.ts +29 -0
  1454. package/vendor/opencli/dist/yaml-schema.js +22 -0
@@ -0,0 +1,1496 @@
1
+ import * as fs from 'node:fs';
2
+ import * as path from 'node:path';
3
+ import { cli, Strategy } from '../../registry.js';
4
+ import { ArgumentError, AuthRequiredError, CommandExecutionError } from '../../errors.js';
5
+ import { installInstagramProtocolCapture, readInstagramProtocolCapture, } from './_shared/protocol-capture.js';
6
+ import { publishMediaViaPrivateApi, publishImagesViaPrivateApi, resolveInstagramPrivatePublishConfig, } from './_shared/private-publish.js';
7
+ import { resolveInstagramRuntimeInfo } from './_shared/runtime-info.js';
8
+ const INSTAGRAM_HOME_URL = 'https://www.instagram.com/';
9
+ const SUPPORTED_IMAGE_EXTENSIONS = new Set(['.jpg', '.jpeg', '.png', '.webp']);
10
+ const SUPPORTED_VIDEO_EXTENSIONS = new Set(['.mp4']);
11
+ const MAX_MEDIA_ITEMS = 10;
12
+ const INSTAGRAM_PROTOCOL_TRACE_OUTPUT_PATH = '/tmp/instagram_post_protocol_trace.json';
13
+ async function gotoInstagramHome(page, forceReload = false) {
14
+ if (forceReload) {
15
+ await page.goto(`${INSTAGRAM_HOME_URL}?__opencli_reset=${Date.now()}`);
16
+ await page.wait({ time: 1 });
17
+ }
18
+ await page.goto(INSTAGRAM_HOME_URL);
19
+ }
20
+ export function buildEnsureComposerOpenJs() {
21
+ return `
22
+ (() => {
23
+ const path = window.location?.pathname || '';
24
+ const onLoginRoute = /\\/accounts\\/login\\/?/.test(path);
25
+ const hasLoginField = !!document.querySelector('input[name="username"], input[name="password"]');
26
+ const hasLoginButton = Array.from(document.querySelectorAll('button, div[role="button"]')).some((el) => {
27
+ const text = (el.textContent || '').replace(/\\s+/g, ' ').trim().toLowerCase();
28
+ return text === 'log in' || text === 'login' || text === '登录';
29
+ });
30
+
31
+ if (onLoginRoute || (hasLoginField && hasLoginButton)) {
32
+ return { ok: false, reason: 'auth' };
33
+ }
34
+
35
+ const alreadyOpen = document.querySelector('input[type="file"]');
36
+ if (alreadyOpen) return { ok: true };
37
+
38
+ const labels = ['Create', 'New post', 'Post', '创建', '新帖子'];
39
+ const nodes = Array.from(document.querySelectorAll('a, button, div[role="button"], svg[aria-label], [aria-label]'));
40
+ for (const node of nodes) {
41
+ const text = ((node.textContent || '') + ' ' + (node.getAttribute?.('aria-label') || '')).trim();
42
+ if (labels.some((label) => text.toLowerCase().includes(label.toLowerCase()))) {
43
+ const clickable = node.closest('a, button, div[role="button"]') || node;
44
+ if (clickable instanceof HTMLElement) {
45
+ clickable.click();
46
+ return { ok: true };
47
+ }
48
+ }
49
+ }
50
+
51
+ return { ok: true };
52
+ })()
53
+ `;
54
+ }
55
+ export function buildPublishStatusProbeJs() {
56
+ return `
57
+ (() => {
58
+ const isVisible = (el) => {
59
+ if (!(el instanceof HTMLElement)) return false;
60
+ const style = window.getComputedStyle(el);
61
+ const rect = el.getBoundingClientRect();
62
+ return style.display !== 'none'
63
+ && style.visibility !== 'hidden'
64
+ && rect.width > 0
65
+ && rect.height > 0;
66
+ };
67
+ const dialogs = Array.from(document.querySelectorAll('[role="dialog"]')).filter((el) => isVisible(el));
68
+ const dialogText = dialogs
69
+ .map((el) => (el.textContent || '').replace(/\\s+/g, ' ').trim())
70
+ .join(' ');
71
+ const url = window.location.href;
72
+ const visibleText = dialogText.toLowerCase();
73
+ const sharingVisible = /sharing/.test(visibleText);
74
+ const shared = /post shared|your post has been shared|已分享|已发布/.test(visibleText)
75
+ || /\\/p\\//.test(url);
76
+ const failed = !shared && !sharingVisible && (
77
+ /couldn['’]t be shared|could not be shared|failed to share|share failed|无法分享|分享失败/.test(visibleText)
78
+ || (/something went wrong/.test(visibleText) && /try again/.test(visibleText))
79
+ );
80
+ const composerOpen = dialogs.some((dialog) =>
81
+ !!dialog.querySelector('textarea, [contenteditable="true"], input[type="file"]')
82
+ || /write a caption|add location|advanced settings|select from computer|crop|filters|adjustments|sharing/.test((dialog.textContent || '').toLowerCase())
83
+ );
84
+ const settled = !shared && !composerOpen && !/sharing/.test(visibleText);
85
+ return { ok: shared, failed, settled, url: /\\/p\\//.test(url) ? url : '' };
86
+ })()
87
+ `;
88
+ }
89
+ function requirePage(page) {
90
+ if (!page)
91
+ throw new CommandExecutionError('Browser session required for instagram post');
92
+ return page;
93
+ }
94
+ function validateMixedMediaItems(inputs) {
95
+ if (!inputs.length) {
96
+ throw new ArgumentError('Argument "media" is required.', 'Provide --media /path/to/file.jpg or --media /path/a.jpg,/path/b.mp4');
97
+ }
98
+ if (inputs.length > MAX_MEDIA_ITEMS) {
99
+ throw new ArgumentError(`Too many media items: ${inputs.length}`, `Instagram carousel posts support at most ${MAX_MEDIA_ITEMS} items`);
100
+ }
101
+ const items = inputs.map((input) => {
102
+ const resolved = path.resolve(String(input || '').trim());
103
+ if (!resolved) {
104
+ throw new ArgumentError('Media path cannot be empty');
105
+ }
106
+ if (!fs.existsSync(resolved)) {
107
+ throw new ArgumentError(`Media file not found: ${resolved}`);
108
+ }
109
+ const ext = path.extname(resolved).toLowerCase();
110
+ if (SUPPORTED_IMAGE_EXTENSIONS.has(ext)) {
111
+ return { type: 'image', filePath: resolved };
112
+ }
113
+ if (SUPPORTED_VIDEO_EXTENSIONS.has(ext)) {
114
+ return { type: 'video', filePath: resolved };
115
+ }
116
+ throw new ArgumentError(`Unsupported media format: ${ext}`, 'Supported formats: images (.jpg, .jpeg, .png, .webp) and videos (.mp4)');
117
+ });
118
+ return items;
119
+ }
120
+ function normalizePostMediaItems(kwargs) {
121
+ const media = String(kwargs.media ?? '').trim();
122
+ return validateMixedMediaItems(media.split(',').map((part) => part.trim()).filter(Boolean));
123
+ }
124
+ function validateInstagramPostArgs(kwargs) {
125
+ const media = kwargs.media;
126
+ if (media === undefined) {
127
+ throw new ArgumentError('Argument "media" is required.', 'Provide --media /path/to/file.jpg or --media /path/a.jpg,/path/b.mp4');
128
+ }
129
+ }
130
+ function isSafePrivateRouteFallbackError(error) {
131
+ if (!(error instanceof CommandExecutionError))
132
+ return false;
133
+ return error.message.startsWith('Instagram private publish')
134
+ || error.message.startsWith('Instagram private route');
135
+ }
136
+ function buildInstagramSuccessResult(mediaItems, url) {
137
+ return [{
138
+ status: '✅ Posted',
139
+ detail: describePostDetail(mediaItems),
140
+ url,
141
+ }];
142
+ }
143
+ function buildFallbackHint(privateError, uiError) {
144
+ const privateMessage = privateError instanceof Error ? privateError.message : String(privateError);
145
+ const uiMessage = uiError instanceof Error ? uiError.message : String(uiError);
146
+ return `Private route failed first: ${privateMessage}. UI fallback then failed: ${uiMessage}`;
147
+ }
148
+ async function executePrivateInstagramPost(input) {
149
+ const privateConfig = await resolveInstagramPrivatePublishConfig(input.page);
150
+ const privateResult = input.mediaItems.every((item) => item.type === 'image')
151
+ ? await publishImagesViaPrivateApi({
152
+ page: input.page,
153
+ imagePaths: input.mediaItems.map((item) => item.filePath),
154
+ caption: input.content,
155
+ apiContext: privateConfig.apiContext,
156
+ jazoest: privateConfig.jazoest,
157
+ })
158
+ : await publishMediaViaPrivateApi({
159
+ page: input.page,
160
+ mediaItems: input.mediaItems,
161
+ caption: input.content,
162
+ apiContext: privateConfig.apiContext,
163
+ jazoest: privateConfig.jazoest,
164
+ });
165
+ const url = privateResult.code
166
+ ? new URL(`/p/${privateResult.code}/`, INSTAGRAM_HOME_URL).toString()
167
+ : await resolveLatestPostUrl(input.page, input.existingPostPaths);
168
+ return buildInstagramSuccessResult(input.mediaItems, url);
169
+ }
170
+ async function executeUiInstagramPost(input) {
171
+ let lastError;
172
+ let lastSpecificCommandError = null;
173
+ for (let attempt = 0; attempt < input.commandAttemptBudget; attempt++) {
174
+ let shareClicked = false;
175
+ try {
176
+ await gotoInstagramHome(input.page, input.forceFreshStart || attempt > 0);
177
+ await input.installProtocolCapture();
178
+ await input.page.wait({ time: 2 });
179
+ await dismissResidualDialogs(input.page);
180
+ await ensureComposerOpen(input.page);
181
+ const uploadSelectors = await resolveUploadSelectors(input.page, input.mediaItems);
182
+ if (input.preUploadDelaySeconds > 0) {
183
+ await input.page.wait({ time: input.preUploadDelaySeconds });
184
+ }
185
+ let uploaded = false;
186
+ let uploadFailure = null;
187
+ for (const selector of uploadSelectors) {
188
+ let activeSelector = selector;
189
+ for (let uploadAttempt = 0; uploadAttempt < input.uploadAttemptBudget; uploadAttempt++) {
190
+ await uploadMedia(input.page, input.mediaItems, activeSelector);
191
+ const uploadState = await waitForPreviewMaybe(input.page, input.previewProbeWindowSeconds);
192
+ if (uploadState.state === 'preview') {
193
+ uploaded = true;
194
+ break;
195
+ }
196
+ if (uploadState.state === 'failed') {
197
+ uploadFailure = makeUploadFailure(uploadState.detail);
198
+ for (let inlineRetry = 0; inlineRetry < input.inlineUploadRetryBudget; inlineRetry++) {
199
+ const clickedRetry = await clickVisibleUploadRetry(input.page);
200
+ if (!clickedRetry)
201
+ break;
202
+ await input.page.wait({ time: 3 });
203
+ const retriedState = await waitForPreviewMaybe(input.page, Math.max(3, Math.floor(input.previewProbeWindowSeconds / 2)));
204
+ if (retriedState.state === 'preview') {
205
+ uploaded = true;
206
+ break;
207
+ }
208
+ if (retriedState.state !== 'failed')
209
+ break;
210
+ }
211
+ if (uploaded)
212
+ break;
213
+ await dismissUploadErrorDialog(input.page);
214
+ await dismissResidualDialogs(input.page);
215
+ if (uploadAttempt < input.uploadAttemptBudget - 1) {
216
+ try {
217
+ await input.drainProtocolCapture();
218
+ await gotoInstagramHome(input.page, true);
219
+ await input.installProtocolCapture();
220
+ await input.page.wait({ time: 2 });
221
+ await dismissResidualDialogs(input.page);
222
+ await ensureComposerOpen(input.page);
223
+ activeSelector = await resolveFreshUploadSelector(input.page, activeSelector, input.mediaItems);
224
+ if (input.preUploadDelaySeconds > 0) {
225
+ await input.page.wait({ time: input.preUploadDelaySeconds });
226
+ }
227
+ }
228
+ catch {
229
+ throw uploadFailure;
230
+ }
231
+ await input.page.wait({ time: 1.5 });
232
+ continue;
233
+ }
234
+ break;
235
+ }
236
+ break;
237
+ }
238
+ if (uploaded)
239
+ break;
240
+ }
241
+ if (!uploaded) {
242
+ if (uploadFailure)
243
+ throw uploadFailure;
244
+ await waitForPreview(input.page, input.finalPreviewWaitSeconds);
245
+ }
246
+ try {
247
+ await advanceToCaptionEditor(input.page);
248
+ }
249
+ catch (error) {
250
+ await rethrowUploadFailureIfPresent(input.page, error);
251
+ }
252
+ if (input.content) {
253
+ await fillCaption(input.page, input.content);
254
+ await ensureCaptionFilled(input.page, input.content);
255
+ }
256
+ if (input.preShareDelaySeconds > 0) {
257
+ await input.page.wait({ time: input.preShareDelaySeconds });
258
+ }
259
+ await clickAction(input.page, ['Share', '分享'], 'caption');
260
+ shareClicked = true;
261
+ let url = '';
262
+ try {
263
+ url = await waitForPublishSuccess(input.page);
264
+ }
265
+ catch (error) {
266
+ if (error instanceof CommandExecutionError
267
+ && error.message === 'Instagram post share failed'
268
+ && await clickVisibleShareRetry(input.page)) {
269
+ await input.page.wait({ time: Math.max(2, input.preShareDelaySeconds) });
270
+ url = await waitForPublishSuccess(input.page);
271
+ }
272
+ else {
273
+ throw error;
274
+ }
275
+ }
276
+ await input.drainProtocolCapture();
277
+ if (!url) {
278
+ url = await resolveLatestPostUrl(input.page, input.existingPostPaths);
279
+ }
280
+ return buildInstagramSuccessResult(input.mediaItems, url);
281
+ }
282
+ catch (error) {
283
+ lastError = error;
284
+ if (error instanceof CommandExecutionError && error.message !== 'Failed to open Instagram post composer') {
285
+ lastSpecificCommandError = error;
286
+ }
287
+ if (error instanceof AuthRequiredError)
288
+ throw error;
289
+ if (shareClicked) {
290
+ throw error;
291
+ }
292
+ if (!(error instanceof CommandExecutionError) || attempt === input.commandAttemptBudget - 1) {
293
+ if (error instanceof CommandExecutionError && error.message === 'Failed to open Instagram post composer' && lastSpecificCommandError) {
294
+ throw lastSpecificCommandError;
295
+ }
296
+ throw error;
297
+ }
298
+ let resetWindow = false;
299
+ if (input.mediaItems.length >= 10 && input.page.closeWindow) {
300
+ try {
301
+ await input.drainProtocolCapture();
302
+ await input.page.closeWindow();
303
+ resetWindow = true;
304
+ }
305
+ catch {
306
+ // Best-effort: a fresh automation window is safer than reusing a polluted one.
307
+ }
308
+ }
309
+ if (!resetWindow) {
310
+ await dismissResidualDialogs(input.page);
311
+ await input.page.wait({ time: 1 });
312
+ }
313
+ }
314
+ }
315
+ throw lastError instanceof Error ? lastError : new CommandExecutionError('Instagram post failed');
316
+ }
317
+ async function ensureComposerOpen(page) {
318
+ const result = await page.evaluate(buildEnsureComposerOpenJs());
319
+ if (!result?.ok) {
320
+ if (result?.reason === 'auth')
321
+ throw new AuthRequiredError('www.instagram.com', 'Instagram login required before posting');
322
+ throw new CommandExecutionError('Failed to open Instagram post composer');
323
+ }
324
+ }
325
+ async function dismissResidualDialogs(page) {
326
+ for (let attempt = 0; attempt < 4; attempt++) {
327
+ const result = await page.evaluate(`
328
+ (() => {
329
+ const isVisible = (el) => {
330
+ if (!(el instanceof HTMLElement)) return false;
331
+ const style = window.getComputedStyle(el);
332
+ const rect = el.getBoundingClientRect();
333
+ return style.display !== 'none'
334
+ && style.visibility !== 'hidden'
335
+ && rect.width > 0
336
+ && rect.height > 0;
337
+ };
338
+
339
+ const dialogs = Array.from(document.querySelectorAll('[role="dialog"]'))
340
+ .filter((el) => el instanceof HTMLElement && isVisible(el));
341
+ for (const dialog of dialogs) {
342
+ const text = (dialog.textContent || '').replace(/\\s+/g, ' ').trim().toLowerCase();
343
+ if (!text) continue;
344
+ if (
345
+ text.includes('post shared')
346
+ || text.includes('your post has been shared')
347
+ || text.includes('something went wrong')
348
+ || text.includes('sharing')
349
+ || text.includes('create new post')
350
+ || text.includes('crop')
351
+ || text.includes('edit')
352
+ ) {
353
+ const close = dialog.querySelector('[aria-label="Close"], button[aria-label="Close"], div[role="button"][aria-label="Close"]');
354
+ if (close instanceof HTMLElement && isVisible(close)) {
355
+ close.click();
356
+ return { ok: true };
357
+ }
358
+ const closeByText = Array.from(dialog.querySelectorAll('button, div[role="button"]')).find((el) => {
359
+ const buttonText = (el.textContent || '').replace(/\\s+/g, ' ').trim().toLowerCase();
360
+ return isVisible(el) && (buttonText === 'close' || buttonText === 'cancel' || buttonText === '取消');
361
+ });
362
+ if (closeByText instanceof HTMLElement) {
363
+ closeByText.click();
364
+ return { ok: true };
365
+ }
366
+ }
367
+ }
368
+
369
+ return { ok: false };
370
+ })()
371
+ `);
372
+ if (!result?.ok)
373
+ return;
374
+ await page.wait({ time: 0.5 });
375
+ }
376
+ }
377
+ async function findUploadSelectors(page, mediaItems) {
378
+ const includesVideo = mediaItems.some((item) => item.type === 'video');
379
+ const result = await page.evaluate(`
380
+ ((includesVideo) => {
381
+ const isVisible = (el) => {
382
+ if (!(el instanceof HTMLElement)) return false;
383
+ const style = window.getComputedStyle(el);
384
+ const rect = el.getBoundingClientRect();
385
+ return style.display !== 'none'
386
+ && style.visibility !== 'hidden'
387
+ && rect.width > 0
388
+ && rect.height > 0;
389
+ };
390
+ const hasButtonText = (root, labels) => {
391
+ if (!root || !(root instanceof Element)) return false;
392
+ return Array.from(root.querySelectorAll('button, div[role="button"], span'))
393
+ .some((el) => {
394
+ const text = (el.textContent || '').replace(/\\s+/g, ' ').trim().toLowerCase();
395
+ return labels.some((label) => text === label.toLowerCase());
396
+ });
397
+ };
398
+
399
+ const inputs = Array.from(document.querySelectorAll('input[type="file"]'));
400
+ const candidates = inputs.filter((el) => {
401
+ if (!(el instanceof HTMLInputElement)) return false;
402
+ if (el.disabled) return false;
403
+ const accept = (el.getAttribute('accept') || '').toLowerCase();
404
+ if (!accept) return true;
405
+ if (includesVideo) return true;
406
+ return accept.includes('image') || accept.includes('.jpg') || accept.includes('.jpeg') || accept.includes('.png') || accept.includes('.webp');
407
+ });
408
+
409
+ const dialogInputs = candidates.filter((el) => {
410
+ const dialog = el.closest('[role="dialog"]');
411
+ return hasButtonText(dialog, ['Select from computer', '从电脑中选择']);
412
+ });
413
+
414
+ const visibleDialogInputs = dialogInputs.filter((el) => {
415
+ const dialog = el.closest('[role="dialog"]');
416
+ return dialog instanceof HTMLElement && isVisible(dialog);
417
+ });
418
+
419
+ const pickerInputs = candidates.filter((el) => {
420
+ return hasButtonText(el.parentElement, ['Select from computer', '从电脑中选择']);
421
+ });
422
+
423
+ const primary = visibleDialogInputs.length
424
+ ? [visibleDialogInputs[visibleDialogInputs.length - 1]]
425
+ : dialogInputs.length
426
+ ? [dialogInputs[dialogInputs.length - 1]]
427
+ : [];
428
+ const ordered = [...primary, ...pickerInputs, ...candidates]
429
+ .filter((el, index, arr) => arr.indexOf(el) === index);
430
+ if (!ordered.length) return { ok: false };
431
+
432
+ document.querySelectorAll('[data-opencli-ig-upload-index]').forEach((el) => el.removeAttribute('data-opencli-ig-upload-index'));
433
+ const selectors = ordered.map((input, index) => {
434
+ input.setAttribute('data-opencli-ig-upload-index', String(index));
435
+ return '[data-opencli-ig-upload-index="' + index + '"]';
436
+ });
437
+ return { ok: true, selectors };
438
+ })(${JSON.stringify(includesVideo)})
439
+ `);
440
+ if (!result?.ok || !result.selectors?.length) {
441
+ throw new CommandExecutionError('Instagram upload input not found', 'Open the new-post composer in a logged-in browser session and retry');
442
+ }
443
+ return result.selectors;
444
+ }
445
+ async function resolveUploadSelectors(page, mediaItems) {
446
+ try {
447
+ return await findUploadSelectors(page, mediaItems);
448
+ }
449
+ catch (error) {
450
+ if (!(error instanceof CommandExecutionError) || !error.message.includes('upload input not found')) {
451
+ throw error;
452
+ }
453
+ await ensureComposerOpen(page);
454
+ await page.wait({ time: 1.5 });
455
+ try {
456
+ return await findUploadSelectors(page, mediaItems);
457
+ }
458
+ catch (retryError) {
459
+ if (!(retryError instanceof CommandExecutionError) || !retryError.message.includes('upload input not found')) {
460
+ throw retryError;
461
+ }
462
+ await gotoInstagramHome(page, true);
463
+ await page.wait({ time: 2 });
464
+ await dismissResidualDialogs(page);
465
+ await ensureComposerOpen(page);
466
+ await page.wait({ time: 2 });
467
+ return findUploadSelectors(page, mediaItems);
468
+ }
469
+ }
470
+ }
471
+ function extractSelectorIndex(selector) {
472
+ const match = selector.match(/data-opencli-ig-upload-index="(\d+)"/);
473
+ if (!match)
474
+ return null;
475
+ const index = Number.parseInt(match[1] || '', 10);
476
+ return Number.isNaN(index) ? null : index;
477
+ }
478
+ async function resolveFreshUploadSelector(page, previousSelector, mediaItems) {
479
+ const selectors = await resolveUploadSelectors(page, mediaItems);
480
+ const index = extractSelectorIndex(previousSelector);
481
+ if (index !== null && selectors[index])
482
+ return selectors[index];
483
+ return selectors[0] || previousSelector;
484
+ }
485
+ async function injectImageViaBrowser(page, imagePaths, selector) {
486
+ const images = imagePaths.map((imagePath) => {
487
+ const ext = path.extname(imagePath).toLowerCase();
488
+ const mimeType = ext === '.png'
489
+ ? 'image/png'
490
+ : ext === '.webp'
491
+ ? 'image/webp'
492
+ : 'image/jpeg';
493
+ return {
494
+ name: path.basename(imagePath),
495
+ type: mimeType,
496
+ base64: fs.readFileSync(imagePath).toString('base64'),
497
+ };
498
+ });
499
+ const chunkKey = `__opencliInstagramUpload_${Date.now()}_${Math.random().toString(36).slice(2)}`;
500
+ const chunkSize = 256 * 1024;
501
+ await page.evaluate(`
502
+ (() => {
503
+ window[${JSON.stringify(chunkKey)}] = [];
504
+ return { ok: true };
505
+ })()
506
+ `);
507
+ const payload = JSON.stringify(images);
508
+ for (let offset = 0; offset < payload.length; offset += chunkSize) {
509
+ const chunk = payload.slice(offset, offset + chunkSize);
510
+ await page.evaluate(`
511
+ (() => {
512
+ const key = ${JSON.stringify(chunkKey)};
513
+ const chunk = ${JSON.stringify(chunk)};
514
+ const parts = Array.isArray(window[key]) ? window[key] : [];
515
+ parts.push(chunk);
516
+ window[key] = parts;
517
+ return { ok: true, count: parts.length };
518
+ })()
519
+ `);
520
+ }
521
+ const result = await page.evaluate(`
522
+ (() => {
523
+ const selector = ${JSON.stringify(selector)};
524
+ const key = ${JSON.stringify(chunkKey)};
525
+ const payload = JSON.parse(Array.isArray(window[key]) ? window[key].join('') : '[]');
526
+
527
+ const cleanup = () => { try { delete window[key]; } catch {} };
528
+ const input = document.querySelector(selector);
529
+ if (!(input instanceof HTMLInputElement)) {
530
+ cleanup();
531
+ return { ok: false, error: 'File input not found for fallback injection' };
532
+ }
533
+
534
+ try {
535
+ const dt = new DataTransfer();
536
+ for (const img of payload) {
537
+ const binary = atob(img.base64);
538
+ const bytes = new Uint8Array(binary.length);
539
+ for (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i);
540
+ const blob = new Blob([bytes], { type: img.type });
541
+ const file = new File([blob], img.name, { type: img.type });
542
+ dt.items.add(file);
543
+ }
544
+ Object.defineProperty(input, 'files', { value: dt.files, configurable: true });
545
+ input.dispatchEvent(new Event('change', { bubbles: true }));
546
+ input.dispatchEvent(new Event('input', { bubbles: true }));
547
+ cleanup();
548
+ return { ok: true, count: dt.files.length };
549
+ } catch (error) {
550
+ cleanup();
551
+ return { ok: false, error: String(error) };
552
+ }
553
+ })()
554
+ `);
555
+ if (!result?.ok) {
556
+ throw new CommandExecutionError(result?.error || 'Instagram fallback file injection failed');
557
+ }
558
+ }
559
+ async function dispatchUploadEvents(page, selector) {
560
+ await page.evaluate(`
561
+ (() => {
562
+ const input = document.querySelector(${JSON.stringify(selector)});
563
+ if (!(input instanceof HTMLInputElement)) return { ok: false };
564
+ input.dispatchEvent(new Event('input', { bubbles: true }));
565
+ input.dispatchEvent(new Event('change', { bubbles: true }));
566
+ return { ok: true };
567
+ })()
568
+ `);
569
+ }
570
+ export function buildInspectUploadStageJs() {
571
+ return `
572
+ (() => {
573
+ const isVisible = (el) => {
574
+ if (!(el instanceof HTMLElement)) return false;
575
+ const style = window.getComputedStyle(el);
576
+ const rect = el.getBoundingClientRect();
577
+ return style.display !== 'none'
578
+ && style.visibility !== 'hidden'
579
+ && rect.width > 0
580
+ && rect.height > 0;
581
+ };
582
+ const dialogs = Array.from(document.querySelectorAll('[role="dialog"]')).filter((el) => isVisible(el));
583
+ const visibleTexts = dialogs.map((el) => (el.textContent || '').replace(/\\s+/g, ' ').trim());
584
+ const dialogText = visibleTexts.join(' ');
585
+ const combined = dialogText.toLowerCase();
586
+ const hasVisibleButtonInDialogs = (labels) => {
587
+ return dialogs.some((dialog) =>
588
+ Array.from(dialog.querySelectorAll('button, div[role="button"]')).some((el) => {
589
+ const text = (el.textContent || '').replace(/\\s+/g, ' ').trim();
590
+ const aria = (el.getAttribute?.('aria-label') || '').replace(/\\s+/g, ' ').trim();
591
+ return isVisible(el) && (labels.includes(text) || labels.includes(aria));
592
+ })
593
+ );
594
+ };
595
+ const hasCaption = dialogs.some((dialog) => !!dialog.querySelector('textarea, [contenteditable="true"]'));
596
+ const hasPicker = hasVisibleButtonInDialogs(['Select from computer', '从电脑中选择']);
597
+ const hasNext = hasVisibleButtonInDialogs(['Next', '下一步']);
598
+ const hasPreviewUi = hasCaption
599
+ || (!hasPicker && hasNext)
600
+ || /crop|select crop|select zoom|open media gallery|filters|adjustments|裁剪|缩放|滤镜|调整/.test(combined);
601
+ const failed = /something went wrong|please try again|couldn['’]t upload|could not upload|upload failed|try again|出错|失败/.test(combined);
602
+ if (hasPreviewUi) return { state: 'preview', detail: dialogText || '' };
603
+ if (failed) return { state: 'failed', detail: dialogText || 'Something went wrong' };
604
+ return { state: 'pending', detail: dialogText || '' };
605
+ })()
606
+ `;
607
+ }
608
+ async function inspectUploadStage(page) {
609
+ const result = await page.evaluate(buildInspectUploadStageJs());
610
+ if (result?.state)
611
+ return result;
612
+ if (result?.ok === true)
613
+ return { state: 'preview', detail: result.detail };
614
+ return { state: 'pending', detail: result?.detail };
615
+ }
616
+ function makeUploadFailure(detail) {
617
+ return new CommandExecutionError('Instagram image upload failed', detail ? `Instagram rejected the upload: ${detail}` : 'Instagram rejected the upload before the preview stage');
618
+ }
619
+ async function uploadMedia(page, mediaItems, selector) {
620
+ const mediaPaths = mediaItems.map((item) => item.filePath);
621
+ if (!page.setFileInput) {
622
+ throw new CommandExecutionError('Instagram posting requires Browser Bridge file upload support', 'Use Browser Bridge or another browser mode that supports setFileInput');
623
+ }
624
+ let activeSelector = selector;
625
+ for (let attempt = 0; attempt < 2; attempt++) {
626
+ try {
627
+ await page.setFileInput(mediaPaths, activeSelector);
628
+ await dispatchUploadEvents(page, activeSelector);
629
+ return;
630
+ }
631
+ catch (error) {
632
+ const message = error instanceof Error ? error.message : String(error);
633
+ const staleSelector = message.includes('No element found matching selector')
634
+ || message.includes('Could not find node with given id')
635
+ || message.includes('No node with given id found');
636
+ if (staleSelector && attempt === 0) {
637
+ activeSelector = await resolveFreshUploadSelector(page, activeSelector, mediaItems);
638
+ continue;
639
+ }
640
+ if (!message.includes('Unknown action') && !message.includes('set-file-input') && !message.includes('not supported')) {
641
+ throw error;
642
+ }
643
+ if (mediaItems.some((item) => item.type === 'video')) {
644
+ throw new CommandExecutionError('Instagram mixed-media posting requires Browser Bridge file upload support', 'Use Browser Bridge or another browser mode that supports setFileInput for image/video uploads');
645
+ }
646
+ await injectImageViaBrowser(page, mediaPaths, activeSelector);
647
+ return;
648
+ }
649
+ }
650
+ }
651
+ function describePostDetail(mediaItems) {
652
+ if (mediaItems.every((item) => item.type === 'image')) {
653
+ return mediaItems.length === 1
654
+ ? 'Single image post shared successfully'
655
+ : `${mediaItems.length}-image carousel post shared successfully`;
656
+ }
657
+ return mediaItems.length === 1
658
+ ? 'Single mixed-media post shared successfully'
659
+ : `${mediaItems.length}-item mixed-media carousel post shared successfully`;
660
+ }
661
+ function getCommandAttemptBudget(mediaItems) {
662
+ if (mediaItems.length >= 10)
663
+ return 6;
664
+ if (mediaItems.length >= 5)
665
+ return 4;
666
+ return 3;
667
+ }
668
+ function getPreUploadDelaySeconds(mediaItems) {
669
+ if (mediaItems.length >= 10)
670
+ return 3;
671
+ if (mediaItems.length >= 5)
672
+ return 1.5;
673
+ return 0;
674
+ }
675
+ function getUploadAttemptBudget(mediaItems) {
676
+ if (mediaItems.length >= 10)
677
+ return 3;
678
+ if (mediaItems.length >= 5)
679
+ return 3;
680
+ return 2;
681
+ }
682
+ function getPreviewProbeWindowSeconds(mediaItems) {
683
+ if (mediaItems.length >= 10)
684
+ return 6;
685
+ if (mediaItems.length >= 5)
686
+ return 6;
687
+ return 4;
688
+ }
689
+ function getFinalPreviewWaitSeconds(mediaItems) {
690
+ if (mediaItems.length >= 10)
691
+ return 12;
692
+ if (mediaItems.length >= 5)
693
+ return 16;
694
+ return 12;
695
+ }
696
+ function getPreShareDelaySeconds(mediaItems) {
697
+ if (mediaItems.length >= 10)
698
+ return 4;
699
+ if (mediaItems.length >= 5)
700
+ return 3;
701
+ return 0;
702
+ }
703
+ function getInlineUploadRetryBudget(mediaItems) {
704
+ if (mediaItems.length >= 10)
705
+ return 3;
706
+ if (mediaItems.length >= 5)
707
+ return 2;
708
+ return 1;
709
+ }
710
+ async function dismissUploadErrorDialog(page) {
711
+ const result = await page.evaluate(`
712
+ (() => {
713
+ const isVisible = (el) => {
714
+ if (!(el instanceof HTMLElement)) return false;
715
+ const style = window.getComputedStyle(el);
716
+ const rect = el.getBoundingClientRect();
717
+ return style.display !== 'none'
718
+ && style.visibility !== 'hidden'
719
+ && rect.width > 0
720
+ && rect.height > 0;
721
+ };
722
+ const dialogs = Array.from(document.querySelectorAll('[role="dialog"]')).filter((el) => isVisible(el));
723
+ for (const dialog of dialogs) {
724
+ const text = (dialog.textContent || '').replace(/\\s+/g, ' ').trim().toLowerCase();
725
+ if (!text.includes('something went wrong') && !text.includes('try again') && !text.includes('失败') && !text.includes('出错')) continue;
726
+ const close = dialog.querySelector('[aria-label="Close"], button[aria-label="Close"], div[role="button"][aria-label="Close"]');
727
+ if (close instanceof HTMLElement && isVisible(close)) {
728
+ close.click();
729
+ return { ok: true };
730
+ }
731
+ }
732
+ return { ok: false };
733
+ })()
734
+ `);
735
+ return !!result?.ok;
736
+ }
737
+ async function clickVisibleUploadRetry(page) {
738
+ const result = await page.evaluate(`
739
+ (() => {
740
+ const isVisible = (el) => {
741
+ if (!(el instanceof HTMLElement)) return false;
742
+ const style = window.getComputedStyle(el);
743
+ const rect = el.getBoundingClientRect();
744
+ return style.display !== 'none'
745
+ && style.visibility !== 'hidden'
746
+ && rect.width > 0
747
+ && rect.height > 0;
748
+ };
749
+ const dialogs = Array.from(document.querySelectorAll('[role="dialog"]')).filter((el) => isVisible(el));
750
+ for (const dialog of dialogs) {
751
+ const text = (dialog.textContent || '').replace(/\\s+/g, ' ').trim().toLowerCase();
752
+ if (!text.includes('something went wrong') && !text.includes('try again') && !text.includes('失败') && !text.includes('出错')) continue;
753
+ const retry = Array.from(dialog.querySelectorAll('button, div[role="button"]')).find((el) => {
754
+ const label = ((el.textContent || '') + ' ' + (el.getAttribute?.('aria-label') || ''))
755
+ .replace(/\\s+/g, ' ')
756
+ .trim()
757
+ .toLowerCase();
758
+ return isVisible(el) && (
759
+ label === 'try again'
760
+ || label === 'retry'
761
+ || label === '再试一次'
762
+ || label === '重试'
763
+ );
764
+ });
765
+ if (retry instanceof HTMLElement) {
766
+ retry.click();
767
+ return { ok: true };
768
+ }
769
+ }
770
+ return { ok: false };
771
+ })()
772
+ `);
773
+ return !!result?.ok;
774
+ }
775
+ async function waitForPreview(page, maxWaitSeconds = 12) {
776
+ const attempts = Math.max(1, Math.ceil(maxWaitSeconds));
777
+ for (let attempt = 0; attempt < attempts; attempt++) {
778
+ const state = await inspectUploadStage(page);
779
+ if (state.state === 'preview')
780
+ return;
781
+ if (state.state === 'failed') {
782
+ await page.screenshot({ path: '/tmp/instagram_post_preview_debug.png' });
783
+ throw makeUploadFailure('Inspect /tmp/instagram_post_preview_debug.png. ' + (state.detail || ''));
784
+ }
785
+ if (attempt < attempts - 1)
786
+ await page.wait({ time: 1 });
787
+ }
788
+ await page.screenshot({ path: '/tmp/instagram_post_preview_debug.png' });
789
+ throw new CommandExecutionError('Instagram image preview did not appear after upload', 'The selected file input may not match the active composer; inspect /tmp/instagram_post_preview_debug.png');
790
+ }
791
+ async function waitForPreviewMaybe(page, maxWaitSeconds = 4) {
792
+ const attempts = Math.max(1, Math.ceil(maxWaitSeconds * 2));
793
+ for (let attempt = 0; attempt < attempts; attempt++) {
794
+ const state = await inspectUploadStage(page);
795
+ if (state.state !== 'pending')
796
+ return state;
797
+ if (attempt < attempts - 1)
798
+ await page.wait({ time: 0.5 });
799
+ }
800
+ return { state: 'pending' };
801
+ }
802
+ export function buildClickActionJs(labels, scope = 'any') {
803
+ return `
804
+ ((labels, scope) => {
805
+ const isVisible = (el) => {
806
+ if (!(el instanceof HTMLElement)) return false;
807
+ const style = window.getComputedStyle(el);
808
+ const rect = el.getBoundingClientRect();
809
+ return style.display !== 'none'
810
+ && style.visibility !== 'hidden'
811
+ && rect.width > 0
812
+ && rect.height > 0;
813
+ };
814
+
815
+ const matchesScope = (dialog) => {
816
+ if (!(dialog instanceof HTMLElement) || !isVisible(dialog)) return false;
817
+ const text = (dialog.textContent || '').replace(/\\s+/g, ' ').trim().toLowerCase();
818
+ if (scope === 'caption') {
819
+ return !!dialog.querySelector('textarea, [contenteditable="true"]')
820
+ || text.includes('write a caption')
821
+ || text.includes('add location')
822
+ || text.includes('add collaborators')
823
+ || text.includes('accessibility')
824
+ || text.includes('advanced settings');
825
+ }
826
+ if (scope === 'media') {
827
+ return !!dialog.querySelector('input[type="file"]')
828
+ || text.includes('select from computer')
829
+ || text.includes('crop')
830
+ || text.includes('filters')
831
+ || text.includes('adjustments')
832
+ || text.includes('open media gallery')
833
+ || text.includes('select crop')
834
+ || text.includes('select zoom');
835
+ }
836
+ return true;
837
+ };
838
+
839
+ const containers = scope !== 'any'
840
+ ? Array.from(document.querySelectorAll('[role="dialog"]')).filter(matchesScope)
841
+ : [document.body];
842
+
843
+ for (const container of containers) {
844
+ const nodes = Array.from(container.querySelectorAll('button, div[role="button"]'));
845
+ for (const node of nodes) {
846
+ const text = (node.textContent || '').replace(/\\s+/g, ' ').trim();
847
+ const aria = (node.getAttribute?.('aria-label') || '').replace(/\\s+/g, ' ').trim();
848
+ if (!text && !aria) continue;
849
+ if (!labels.includes(text) && !labels.includes(aria)) continue;
850
+ if (node instanceof HTMLElement && isVisible(node) && node.getAttribute('aria-disabled') !== 'true') {
851
+ node.click();
852
+ return { ok: true, label: text || aria };
853
+ }
854
+ }
855
+ }
856
+ return { ok: false };
857
+ })(${JSON.stringify(labels)}, ${JSON.stringify(scope)})
858
+ `;
859
+ }
860
+ async function clickAction(page, labels, scope = 'any') {
861
+ const result = await page.evaluate(buildClickActionJs(labels, scope));
862
+ if (!result?.ok) {
863
+ throw new CommandExecutionError(`Instagram action button not found: ${labels.join(' / ')}`);
864
+ }
865
+ return result.label || labels[0];
866
+ }
867
+ async function clickVisibleShareRetry(page) {
868
+ const result = await page.evaluate(`
869
+ (() => {
870
+ const isVisible = (el) => {
871
+ if (!(el instanceof HTMLElement)) return false;
872
+ const style = window.getComputedStyle(el);
873
+ const rect = el.getBoundingClientRect();
874
+ return style.display !== 'none'
875
+ && style.visibility !== 'hidden'
876
+ && rect.width > 0
877
+ && rect.height > 0;
878
+ };
879
+
880
+ const dialogs = Array.from(document.querySelectorAll('[role="dialog"]')).filter((el) => isVisible(el));
881
+ for (const dialog of dialogs) {
882
+ const text = (dialog.textContent || '').replace(/\\s+/g, ' ').trim().toLowerCase();
883
+ if (!text.includes('post couldn') && !text.includes('could not be shared') && !text.includes('share failed')) continue;
884
+
885
+ const retry = Array.from(dialog.querySelectorAll('button, div[role="button"]')).find((el) => {
886
+ const label = ((el.textContent || '') + ' ' + (el.getAttribute?.('aria-label') || ''))
887
+ .replace(/\\s+/g, ' ')
888
+ .trim()
889
+ .toLowerCase();
890
+ return isVisible(el) && (
891
+ label === 'try again'
892
+ || label === 'retry'
893
+ || label === '再试一次'
894
+ || label === '重试'
895
+ );
896
+ });
897
+
898
+ if (retry instanceof HTMLElement) {
899
+ retry.click();
900
+ return { ok: true };
901
+ }
902
+ }
903
+
904
+ return { ok: false };
905
+ })()
906
+ `);
907
+ return !!result?.ok;
908
+ }
909
+ async function hasCaptionEditor(page) {
910
+ const result = await page.evaluate(`
911
+ (() => {
912
+ const editable = document.querySelector('textarea, [contenteditable="true"]');
913
+ return { ok: !!editable };
914
+ })()
915
+ `);
916
+ return !!result?.ok;
917
+ }
918
+ async function isCaptionStage(page) {
919
+ const result = await page.evaluate(`
920
+ (() => {
921
+ const editable = document.querySelector('textarea, [contenteditable="true"]');
922
+ const dialogText = Array.from(document.querySelectorAll('[role="dialog"]'))
923
+ .map((el) => (el.textContent || '').replace(/\\s+/g, ' ').trim().toLowerCase())
924
+ .join(' ');
925
+ return {
926
+ ok: !!editable
927
+ || dialogText.includes('write a caption')
928
+ || dialogText.includes('add location')
929
+ || dialogText.includes('add collaborators')
930
+ || dialogText.includes('advanced settings'),
931
+ };
932
+ })()
933
+ `);
934
+ return !!result?.ok;
935
+ }
936
+ async function advanceToCaptionEditor(page) {
937
+ for (let attempt = 0; attempt < 3; attempt++) {
938
+ if (await isCaptionStage(page)) {
939
+ return;
940
+ }
941
+ try {
942
+ await clickAction(page, ['Next', '下一步'], 'media');
943
+ }
944
+ catch (error) {
945
+ if (error instanceof CommandExecutionError) {
946
+ await page.wait({ time: 1.5 });
947
+ if (await isCaptionStage(page)) {
948
+ return;
949
+ }
950
+ const uploadState = await inspectUploadStage(page);
951
+ if (uploadState.state === 'failed') {
952
+ throw makeUploadFailure(uploadState.detail);
953
+ }
954
+ if (attempt < 2) {
955
+ continue;
956
+ }
957
+ }
958
+ throw error;
959
+ }
960
+ await page.wait({ time: 1.5 });
961
+ if (await hasCaptionEditor(page)) {
962
+ return;
963
+ }
964
+ const uploadState = await inspectUploadStage(page);
965
+ if (uploadState.state === 'failed') {
966
+ throw makeUploadFailure(uploadState.detail);
967
+ }
968
+ }
969
+ await page.screenshot({ path: '/tmp/instagram_post_caption_debug.png' });
970
+ throw new CommandExecutionError('Instagram caption editor did not appear', 'Instagram may have changed the publish flow; inspect /tmp/instagram_post_caption_debug.png');
971
+ }
972
+ async function waitForCaptionEditor(page) {
973
+ if (!(await hasCaptionEditor(page))) {
974
+ await page.screenshot({ path: '/tmp/instagram_post_caption_debug.png' });
975
+ throw new CommandExecutionError('Instagram caption editor did not appear', 'Instagram may have changed the publish flow; inspect /tmp/instagram_post_caption_debug.png');
976
+ }
977
+ }
978
+ async function rethrowUploadFailureIfPresent(page, originalError) {
979
+ const uploadState = await inspectUploadStage(page);
980
+ if (uploadState.state === 'failed') {
981
+ throw makeUploadFailure(uploadState.detail);
982
+ }
983
+ throw originalError;
984
+ }
985
+ async function focusCaptionEditorForNativeInsert(page) {
986
+ const result = await page.evaluate(`
987
+ (() => {
988
+ const textarea = document.querySelector('[aria-label="Write a caption..."], textarea');
989
+ if (textarea instanceof HTMLTextAreaElement) {
990
+ textarea.focus();
991
+ textarea.select();
992
+ return { ok: true, kind: 'textarea' };
993
+ }
994
+
995
+ const editor = document.querySelector('[aria-label="Write a caption..."][contenteditable="true"]')
996
+ || document.querySelector('[contenteditable="true"]');
997
+ if (!(editor instanceof HTMLElement)) return { ok: false };
998
+
999
+ const lexical = editor.__lexicalEditor;
1000
+ try {
1001
+ if (lexical && typeof lexical.getEditorState === 'function' && typeof lexical.parseEditorState === 'function') {
1002
+ const emptyState = {
1003
+ root: {
1004
+ children: [{
1005
+ children: [],
1006
+ direction: null,
1007
+ format: '',
1008
+ indent: 0,
1009
+ textFormat: 0,
1010
+ textStyle: '',
1011
+ type: 'paragraph',
1012
+ version: 1,
1013
+ }],
1014
+ direction: null,
1015
+ format: '',
1016
+ indent: 0,
1017
+ type: 'root',
1018
+ version: 1,
1019
+ },
1020
+ };
1021
+ const nextState = lexical.parseEditorState(JSON.stringify(emptyState));
1022
+ try {
1023
+ lexical.setEditorState(nextState, { tag: 'history-merge', discrete: true });
1024
+ } catch {
1025
+ lexical.setEditorState(nextState);
1026
+ }
1027
+ } else {
1028
+ editor.textContent = '';
1029
+ }
1030
+ } catch {
1031
+ editor.textContent = '';
1032
+ }
1033
+
1034
+ editor.focus();
1035
+ const selection = window.getSelection();
1036
+ if (selection) {
1037
+ selection.removeAllRanges();
1038
+ const range = document.createRange();
1039
+ range.selectNodeContents(editor);
1040
+ range.collapse(false);
1041
+ selection.addRange(range);
1042
+ }
1043
+
1044
+ return { ok: true, kind: 'contenteditable' };
1045
+ })()
1046
+ `);
1047
+ return !!result?.ok;
1048
+ }
1049
+ async function fillCaption(page, content) {
1050
+ if (page.insertText && await focusCaptionEditorForNativeInsert(page)) {
1051
+ try {
1052
+ await page.insertText(content);
1053
+ await page.wait({ time: 0.3 });
1054
+ await page.evaluate(`
1055
+ (() => {
1056
+ const textarea = document.querySelector('[aria-label="Write a caption..."], textarea');
1057
+ if (textarea instanceof HTMLTextAreaElement) {
1058
+ textarea.dispatchEvent(new InputEvent('input', { bubbles: true, composed: true, inputType: 'insertText' }));
1059
+ textarea.dispatchEvent(new Event('change', { bubbles: true, composed: true }));
1060
+ textarea.blur();
1061
+ return { ok: true };
1062
+ }
1063
+
1064
+ const editor = document.querySelector('[aria-label="Write a caption..."][contenteditable="true"]')
1065
+ || document.querySelector('[contenteditable="true"]');
1066
+ if (!(editor instanceof HTMLElement)) return { ok: false };
1067
+ try {
1068
+ editor.dispatchEvent(new InputEvent('input', { bubbles: true, composed: true, inputType: 'insertText' }));
1069
+ } catch {
1070
+ editor.dispatchEvent(new Event('input', { bubbles: true, composed: true }));
1071
+ }
1072
+ editor.dispatchEvent(new Event('change', { bubbles: true, composed: true }));
1073
+ editor.blur();
1074
+ return { ok: true };
1075
+ })()
1076
+ `);
1077
+ return;
1078
+ }
1079
+ catch {
1080
+ // Fall back to browser-side editor manipulation below.
1081
+ }
1082
+ }
1083
+ const result = await page.evaluate(`
1084
+ ((content) => {
1085
+ const createParagraph = (text) => ({
1086
+ children: text
1087
+ ? [{ detail: 0, format: 0, mode: 'normal', style: '', text, type: 'text', version: 1 }]
1088
+ : [],
1089
+ direction: null,
1090
+ format: '',
1091
+ indent: 0,
1092
+ textFormat: 0,
1093
+ textStyle: '',
1094
+ type: 'paragraph',
1095
+ version: 1,
1096
+ });
1097
+
1098
+ const textarea = document.querySelector('[aria-label="Write a caption..."], textarea');
1099
+ if (textarea instanceof HTMLTextAreaElement) {
1100
+ textarea.focus();
1101
+ const dt = new DataTransfer();
1102
+ dt.setData('text/plain', content);
1103
+ textarea.dispatchEvent(new ClipboardEvent('paste', {
1104
+ clipboardData: dt,
1105
+ bubbles: true,
1106
+ cancelable: true,
1107
+ }));
1108
+ const setter = Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype, 'value')?.set;
1109
+ setter?.call(textarea, content);
1110
+ textarea.dispatchEvent(new Event('input', { bubbles: true, composed: true }));
1111
+ textarea.dispatchEvent(new Event('change', { bubbles: true, composed: true }));
1112
+ return { ok: true, mode: 'textarea' };
1113
+ }
1114
+
1115
+ const editor = document.querySelector('[aria-label="Write a caption..."][contenteditable="true"]')
1116
+ || document.querySelector('[contenteditable="true"]');
1117
+ if (editor instanceof HTMLElement) {
1118
+ editor.focus();
1119
+ const lexical = editor.__lexicalEditor;
1120
+ if (lexical && typeof lexical.getEditorState === 'function' && typeof lexical.parseEditorState === 'function') {
1121
+ const currentState = lexical.getEditorState && lexical.getEditorState();
1122
+ const base = currentState && typeof currentState.toJSON === 'function' ? currentState.toJSON() : {};
1123
+ const lines = String(content).split(/\\r?\\n/);
1124
+ const paragraphs = lines.map((line) => createParagraph(line));
1125
+ base.root = {
1126
+ children: paragraphs.length ? paragraphs : [createParagraph('')],
1127
+ direction: null,
1128
+ format: '',
1129
+ indent: 0,
1130
+ type: 'root',
1131
+ version: 1,
1132
+ };
1133
+
1134
+ const nextState = lexical.parseEditorState(JSON.stringify(base));
1135
+ try {
1136
+ lexical.setEditorState(nextState, { tag: 'history-merge', discrete: true });
1137
+ } catch {
1138
+ lexical.setEditorState(nextState);
1139
+ }
1140
+
1141
+ editor.dispatchEvent(new Event('input', { bubbles: true, composed: true }));
1142
+ editor.dispatchEvent(new Event('change', { bubbles: true, composed: true }));
1143
+ const nextCurrentState = lexical.getEditorState && lexical.getEditorState();
1144
+ const pendingState = lexical._pendingEditorState;
1145
+ return {
1146
+ ok: true,
1147
+ mode: 'lexical',
1148
+ value: editor.textContent || '',
1149
+ current: nextCurrentState && typeof nextCurrentState.toJSON === 'function' ? nextCurrentState.toJSON() : null,
1150
+ pending: pendingState && typeof pendingState.toJSON === 'function' ? pendingState.toJSON() : null,
1151
+ };
1152
+ }
1153
+
1154
+ const selection = window.getSelection();
1155
+ if (selection) {
1156
+ selection.removeAllRanges();
1157
+ const range = document.createRange();
1158
+ range.selectNodeContents(editor);
1159
+ selection.addRange(range);
1160
+ }
1161
+ const dt = new DataTransfer();
1162
+ dt.setData('text/plain', content);
1163
+ editor.dispatchEvent(new ClipboardEvent('paste', {
1164
+ clipboardData: dt,
1165
+ bubbles: true,
1166
+ cancelable: true,
1167
+ }));
1168
+ return { ok: true, mode: 'contenteditable', value: editor.textContent || '' };
1169
+ }
1170
+
1171
+ return { ok: false };
1172
+ })(${JSON.stringify(content)})
1173
+ `);
1174
+ if (!result?.ok) {
1175
+ throw new CommandExecutionError('Failed to fill Instagram caption');
1176
+ }
1177
+ }
1178
+ async function captionMatches(page, content) {
1179
+ const result = await page.evaluate(`
1180
+ ((content) => {
1181
+ const normalized = content.trim();
1182
+ const readLexicalText = (node) => {
1183
+ if (!node || typeof node !== 'object') return '';
1184
+ if (node.type === 'text' && typeof node.text === 'string') return node.text;
1185
+ if (!Array.isArray(node.children)) return '';
1186
+ if (node.type === 'root') {
1187
+ return node.children.map((child) => readLexicalText(child)).join('\\n');
1188
+ }
1189
+ if (node.type === 'paragraph') {
1190
+ return node.children.map((child) => readLexicalText(child)).join('');
1191
+ }
1192
+ return node.children.map((child) => readLexicalText(child)).join('');
1193
+ };
1194
+
1195
+ const textarea = document.querySelector('[aria-label="Write a caption..."], textarea');
1196
+ if (textarea instanceof HTMLTextAreaElement) {
1197
+ return { ok: textarea.value.trim() === normalized };
1198
+ }
1199
+
1200
+ const editor = document.querySelector('[aria-label="Write a caption..."][contenteditable="true"]')
1201
+ || document.querySelector('[contenteditable="true"]');
1202
+ if (editor instanceof HTMLElement) {
1203
+ const lexical = editor.__lexicalEditor;
1204
+ if (lexical && typeof lexical.getEditorState === 'function') {
1205
+ const currentState = lexical.getEditorState();
1206
+ const pendingState = lexical._pendingEditorState;
1207
+ const current = currentState && typeof currentState.toJSON === 'function' ? currentState.toJSON() : null;
1208
+ const pending = pendingState && typeof pendingState.toJSON === 'function' ? pendingState.toJSON() : null;
1209
+ const currentText = readLexicalText(current && current.root).trim();
1210
+ const pendingText = readLexicalText(pending && pending.root).trim();
1211
+ if (currentText === normalized || pendingText === normalized) {
1212
+ return { ok: true, currentText, pendingText };
1213
+ }
1214
+ }
1215
+
1216
+ const text = (editor.textContent || '').replace(/\\u00a0/g, ' ').trim();
1217
+ if (text === normalized) return { ok: true };
1218
+
1219
+ const counters = Array.from(document.querySelectorAll('div, span'))
1220
+ .map((el) => (el.textContent || '').replace(/\\s+/g, ' ').trim())
1221
+ .filter(Boolean);
1222
+ const counter = counters.find((value) => /\\d+\\s*\\/\\s*2,?200/.test(value));
1223
+ if (counter) {
1224
+ const match = counter.match(/(\\d+)\\s*\\/\\s*2,?200/);
1225
+ if (match && Number(match[1]) >= normalized.length) return { ok: true };
1226
+ }
1227
+
1228
+ return { ok: false, text, counter: counter || '' };
1229
+ }
1230
+
1231
+ return { ok: false };
1232
+ })(${JSON.stringify(content)})
1233
+ `);
1234
+ return !!result?.ok;
1235
+ }
1236
+ async function ensureCaptionFilled(page, content) {
1237
+ for (let attempt = 0; attempt < 6; attempt++) {
1238
+ if (await captionMatches(page, content)) {
1239
+ return;
1240
+ }
1241
+ if (attempt < 5) {
1242
+ await page.wait({ time: 0.5 });
1243
+ }
1244
+ }
1245
+ await page.screenshot({ path: '/tmp/instagram_post_caption_fill_debug.png' });
1246
+ throw new CommandExecutionError('Instagram caption did not stick before sharing', 'Inspect /tmp/instagram_post_caption_fill_debug.png for the caption editor state');
1247
+ }
1248
+ async function waitForPublishSuccess(page) {
1249
+ let settledStreak = 0;
1250
+ for (let attempt = 0; attempt < 90; attempt++) {
1251
+ const result = await page.evaluate(buildPublishStatusProbeJs());
1252
+ if (result?.failed) {
1253
+ await page.screenshot({ path: '/tmp/instagram_post_share_debug.png' });
1254
+ throw new CommandExecutionError('Instagram post share failed', 'Inspect /tmp/instagram_post_share_debug.png for the share failure state');
1255
+ }
1256
+ if (result?.ok) {
1257
+ return result.url || '';
1258
+ }
1259
+ if (result?.settled) {
1260
+ settledStreak += 1;
1261
+ if (settledStreak >= 3)
1262
+ return '';
1263
+ }
1264
+ else {
1265
+ settledStreak = 0;
1266
+ }
1267
+ if (attempt < 89) {
1268
+ await page.wait({ time: 1 });
1269
+ }
1270
+ }
1271
+ await page.screenshot({ path: '/tmp/instagram_post_share_debug.png' });
1272
+ throw new CommandExecutionError('Instagram post share confirmation did not appear', 'Inspect /tmp/instagram_post_share_debug.png for the final publish state');
1273
+ }
1274
+ async function resolveCurrentUserId(page) {
1275
+ const cookies = await page.getCookies({ domain: 'instagram.com' });
1276
+ return cookies.find((cookie) => cookie.name === 'ds_user_id')?.value || '';
1277
+ }
1278
+ async function resolveProfileUrl(page, currentUserId = '') {
1279
+ if (currentUserId) {
1280
+ const runtimeInfo = await resolveInstagramRuntimeInfo(page);
1281
+ const apiResult = await page.evaluate(`
1282
+ (async () => {
1283
+ const userId = ${JSON.stringify(currentUserId)};
1284
+ const appId = ${JSON.stringify(runtimeInfo.appId || '')};
1285
+ try {
1286
+ const res = await fetch(
1287
+ 'https://www.instagram.com/api/v1/users/' + encodeURIComponent(userId) + '/info/',
1288
+ {
1289
+ credentials: 'include',
1290
+ headers: appId ? { 'X-IG-App-ID': appId } : {},
1291
+ },
1292
+ );
1293
+ if (!res.ok) return { ok: false };
1294
+ const data = await res.json();
1295
+ const username = data?.user?.username || '';
1296
+ return { ok: !!username, username };
1297
+ } catch {
1298
+ return { ok: false };
1299
+ }
1300
+ })()
1301
+ `);
1302
+ if (apiResult?.ok && apiResult.username) {
1303
+ return new URL(`/${apiResult.username}/`, INSTAGRAM_HOME_URL).toString();
1304
+ }
1305
+ }
1306
+ const result = await page.evaluate(`
1307
+ (() => {
1308
+ const isVisible = (el) => {
1309
+ if (!(el instanceof HTMLElement)) return false;
1310
+ const style = window.getComputedStyle(el);
1311
+ const rect = el.getBoundingClientRect();
1312
+ return style.display !== 'none'
1313
+ && style.visibility !== 'hidden'
1314
+ && rect.width > 0
1315
+ && rect.height > 0;
1316
+ };
1317
+
1318
+ const anchors = Array.from(document.querySelectorAll('a[href]'))
1319
+ .filter((el) => el instanceof HTMLAnchorElement && isVisible(el))
1320
+ .map((el) => ({
1321
+ href: el.getAttribute('href') || '',
1322
+ text: (el.textContent || '').replace(/\\s+/g, ' ').trim().toLowerCase(),
1323
+ aria: (el.getAttribute('aria-label') || '').replace(/\\s+/g, ' ').trim().toLowerCase(),
1324
+ }))
1325
+ .filter((el) => /^\\/[^/?#]+\\/$/.test(el.href));
1326
+
1327
+ const explicitProfile = anchors.find((el) => el.text === 'profile' || el.aria === 'profile')?.href || '';
1328
+ const path = explicitProfile;
1329
+ return { ok: !!path, path };
1330
+ })()
1331
+ `);
1332
+ if (!result?.ok || !result.path)
1333
+ return '';
1334
+ return new URL(result.path, INSTAGRAM_HOME_URL).toString();
1335
+ }
1336
+ async function collectVisibleProfilePostPaths(page) {
1337
+ const result = await page.evaluate(`
1338
+ (() => {
1339
+ const isVisible = (el) => {
1340
+ if (!(el instanceof HTMLElement)) return false;
1341
+ const style = window.getComputedStyle(el);
1342
+ const rect = el.getBoundingClientRect();
1343
+ return style.display !== 'none'
1344
+ && style.visibility !== 'hidden'
1345
+ && rect.width > 0
1346
+ && rect.height > 0;
1347
+ };
1348
+
1349
+ const hrefs = Array.from(document.querySelectorAll('a[href*="/p/"]'))
1350
+ .filter((el) => el instanceof HTMLAnchorElement && isVisible(el))
1351
+ .map((el) => el.getAttribute('href') || '')
1352
+ .filter((href) => /^\\/(?:[^/?#]+\\/)?p\\/[^/?#]+\\/?$/.test(href))
1353
+ .filter((href, index, arr) => arr.indexOf(href) === index);
1354
+
1355
+ return { ok: hrefs.length > 0, hrefs };
1356
+ })()
1357
+ `);
1358
+ return Array.isArray(result?.hrefs) ? result.hrefs.filter(Boolean) : [];
1359
+ }
1360
+ async function captureExistingProfilePostPaths(page) {
1361
+ const currentUserId = await resolveCurrentUserId(page);
1362
+ if (!currentUserId)
1363
+ return new Set();
1364
+ const profileUrl = await resolveProfileUrl(page, currentUserId);
1365
+ if (!profileUrl)
1366
+ return new Set();
1367
+ try {
1368
+ await page.goto(profileUrl);
1369
+ await page.wait({ time: 3 });
1370
+ return new Set(await collectVisibleProfilePostPaths(page));
1371
+ }
1372
+ catch {
1373
+ return new Set();
1374
+ }
1375
+ }
1376
+ async function resolveLatestPostUrl(page, existingPostPaths) {
1377
+ const currentUrl = await page.getCurrentUrl?.();
1378
+ if (currentUrl && /\/p\//.test(currentUrl))
1379
+ return currentUrl;
1380
+ const currentUserId = await resolveCurrentUserId(page);
1381
+ const profileUrl = await resolveProfileUrl(page, currentUserId);
1382
+ if (!profileUrl)
1383
+ return '';
1384
+ await page.goto(profileUrl);
1385
+ await page.wait({ time: 4 });
1386
+ for (let attempt = 0; attempt < 8; attempt++) {
1387
+ const hrefs = await collectVisibleProfilePostPaths(page);
1388
+ const href = hrefs.find((candidate) => !existingPostPaths.has(candidate)) || '';
1389
+ if (href) {
1390
+ return new URL(href, INSTAGRAM_HOME_URL).toString();
1391
+ }
1392
+ if (attempt < 7)
1393
+ await page.wait({ time: 1 });
1394
+ }
1395
+ return '';
1396
+ }
1397
+ cli({
1398
+ site: 'instagram',
1399
+ name: 'post',
1400
+ description: 'Post an Instagram feed image or mixed-media carousel',
1401
+ domain: 'www.instagram.com',
1402
+ strategy: Strategy.UI,
1403
+ browser: true,
1404
+ timeoutSeconds: 300,
1405
+ args: [
1406
+ { name: 'media', required: false, valueRequired: true, help: `Comma-separated media paths (images/videos, up to ${MAX_MEDIA_ITEMS})` },
1407
+ { name: 'content', positional: true, required: false, help: 'Caption text' },
1408
+ ],
1409
+ columns: ['status', 'detail', 'url'],
1410
+ validateArgs: validateInstagramPostArgs,
1411
+ func: async (page, kwargs) => {
1412
+ const browserPage = requirePage(page);
1413
+ const mediaItems = normalizePostMediaItems(kwargs);
1414
+ const content = String(kwargs.content ?? '').trim();
1415
+ const existingPostPaths = await captureExistingProfilePostPaths(browserPage);
1416
+ const commandAttemptBudget = getCommandAttemptBudget(mediaItems);
1417
+ const preUploadDelaySeconds = getPreUploadDelaySeconds(mediaItems);
1418
+ const uploadAttemptBudget = getUploadAttemptBudget(mediaItems);
1419
+ const previewProbeWindowSeconds = getPreviewProbeWindowSeconds(mediaItems);
1420
+ const finalPreviewWaitSeconds = getFinalPreviewWaitSeconds(mediaItems);
1421
+ const preShareDelaySeconds = getPreShareDelaySeconds(mediaItems);
1422
+ const inlineUploadRetryBudget = getInlineUploadRetryBudget(mediaItems);
1423
+ const protocolCaptureEnabled = process.env.OPENCLI_INSTAGRAM_CAPTURE === '1';
1424
+ const protocolCaptureData = [];
1425
+ const protocolCaptureErrors = [];
1426
+ const installProtocolCapture = async () => {
1427
+ if (!protocolCaptureEnabled)
1428
+ return;
1429
+ await installInstagramProtocolCapture(browserPage);
1430
+ };
1431
+ const drainProtocolCapture = async () => {
1432
+ if (!protocolCaptureEnabled)
1433
+ return;
1434
+ const payload = await readInstagramProtocolCapture(browserPage);
1435
+ if (payload.data.length)
1436
+ protocolCaptureData.push(...payload.data);
1437
+ if (payload.errors.length)
1438
+ protocolCaptureErrors.push(...payload.errors);
1439
+ };
1440
+ try {
1441
+ try {
1442
+ return await executePrivateInstagramPost({
1443
+ page: browserPage,
1444
+ mediaItems,
1445
+ content,
1446
+ existingPostPaths,
1447
+ });
1448
+ }
1449
+ catch (error) {
1450
+ if (error instanceof AuthRequiredError || !isSafePrivateRouteFallbackError(error)) {
1451
+ throw error;
1452
+ }
1453
+ try {
1454
+ return await executeUiInstagramPost({
1455
+ page: browserPage,
1456
+ mediaItems,
1457
+ content,
1458
+ existingPostPaths,
1459
+ commandAttemptBudget,
1460
+ preUploadDelaySeconds,
1461
+ uploadAttemptBudget,
1462
+ previewProbeWindowSeconds,
1463
+ finalPreviewWaitSeconds,
1464
+ preShareDelaySeconds,
1465
+ inlineUploadRetryBudget,
1466
+ installProtocolCapture,
1467
+ drainProtocolCapture,
1468
+ forceFreshStart: true,
1469
+ });
1470
+ }
1471
+ catch (uiError) {
1472
+ if (uiError instanceof AuthRequiredError)
1473
+ throw uiError;
1474
+ if (uiError instanceof CommandExecutionError) {
1475
+ throw new CommandExecutionError(uiError.message, buildFallbackHint(error, uiError));
1476
+ }
1477
+ throw uiError;
1478
+ }
1479
+ }
1480
+ }
1481
+ finally {
1482
+ if (protocolCaptureEnabled) {
1483
+ try {
1484
+ await drainProtocolCapture();
1485
+ }
1486
+ catch {
1487
+ // Best-effort: capture export should not hide the main command result.
1488
+ }
1489
+ fs.writeFileSync(INSTAGRAM_PROTOCOL_TRACE_OUTPUT_PATH, JSON.stringify({
1490
+ data: protocolCaptureData,
1491
+ errors: protocolCaptureErrors,
1492
+ }, null, 2));
1493
+ }
1494
+ }
1495
+ },
1496
+ });