@zenalexa/unicli 0.209.0 → 0.211.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 (399) hide show
  1. package/AGENTS.md +75 -20
  2. package/README.md +832 -285
  3. package/dist/adapters/cursor/cursor.d.ts +2 -1
  4. package/dist/adapters/cursor/cursor.d.ts.map +1 -1
  5. package/dist/adapters/cursor/cursor.js +87 -1
  6. package/dist/adapters/cursor/cursor.js.map +1 -1
  7. package/dist/adapters/discord-app/discord-app.d.ts +1 -1
  8. package/dist/adapters/discord-app/discord-app.js +94 -1
  9. package/dist/adapters/discord-app/discord-app.js.map +1 -1
  10. package/dist/browser/bridge.d.ts +45 -0
  11. package/dist/browser/bridge.d.ts.map +1 -1
  12. package/dist/browser/bridge.js +94 -1
  13. package/dist/browser/bridge.js.map +1 -1
  14. package/dist/browser/cdp-client.d.ts +24 -1
  15. package/dist/browser/cdp-client.d.ts.map +1 -1
  16. package/dist/browser/cdp-client.js +56 -2
  17. package/dist/browser/cdp-client.js.map +1 -1
  18. package/dist/browser/launcher.d.ts +5 -0
  19. package/dist/browser/launcher.d.ts.map +1 -1
  20. package/dist/browser/launcher.js +7 -0
  21. package/dist/browser/launcher.js.map +1 -1
  22. package/dist/cli.d.ts.map +1 -1
  23. package/dist/cli.js +72 -2
  24. package/dist/cli.js.map +1 -1
  25. package/dist/commands/agents.d.ts +14 -3
  26. package/dist/commands/agents.d.ts.map +1 -1
  27. package/dist/commands/agents.js +369 -140
  28. package/dist/commands/agents.js.map +1 -1
  29. package/dist/commands/browser.d.ts.map +1 -1
  30. package/dist/commands/browser.js +79 -1
  31. package/dist/commands/browser.js.map +1 -1
  32. package/dist/commands/ext.d.ts +11 -0
  33. package/dist/commands/ext.d.ts.map +1 -0
  34. package/dist/commands/ext.js +122 -0
  35. package/dist/commands/ext.js.map +1 -0
  36. package/dist/commands/mcp.d.ts +3 -4
  37. package/dist/commands/mcp.d.ts.map +1 -1
  38. package/dist/commands/mcp.js +47 -62
  39. package/dist/commands/mcp.js.map +1 -1
  40. package/dist/commands/schema.d.ts +12 -0
  41. package/dist/commands/schema.d.ts.map +1 -0
  42. package/dist/commands/schema.js +72 -0
  43. package/dist/commands/schema.js.map +1 -0
  44. package/dist/commands/search.d.ts +12 -0
  45. package/dist/commands/search.d.ts.map +1 -0
  46. package/dist/commands/search.js +47 -0
  47. package/dist/commands/search.js.map +1 -0
  48. package/dist/commands/skills.d.ts +2 -3
  49. package/dist/commands/skills.d.ts.map +1 -1
  50. package/dist/commands/skills.js +2 -3
  51. package/dist/commands/skills.js.map +1 -1
  52. package/dist/commands/status.d.ts +12 -0
  53. package/dist/commands/status.d.ts.map +1 -0
  54. package/dist/commands/status.js +137 -0
  55. package/dist/commands/status.js.map +1 -0
  56. package/dist/discovery/aliases.d.ts +31 -0
  57. package/dist/discovery/aliases.d.ts.map +1 -0
  58. package/dist/discovery/aliases.js +477 -0
  59. package/dist/discovery/aliases.js.map +1 -0
  60. package/dist/discovery/loader.d.ts.map +1 -1
  61. package/dist/discovery/loader.js +25 -0
  62. package/dist/discovery/loader.js.map +1 -1
  63. package/dist/discovery/search.d.ts +73 -0
  64. package/dist/discovery/search.d.ts.map +1 -0
  65. package/dist/discovery/search.js +355 -0
  66. package/dist/discovery/search.js.map +1 -0
  67. package/dist/engine/yaml-runner.d.ts +10 -0
  68. package/dist/engine/yaml-runner.d.ts.map +1 -1
  69. package/dist/engine/yaml-runner.js +51 -3
  70. package/dist/engine/yaml-runner.js.map +1 -1
  71. package/dist/hub/index.d.ts +37 -0
  72. package/dist/hub/index.d.ts.map +1 -0
  73. package/dist/hub/index.js +98 -0
  74. package/dist/hub/index.js.map +1 -0
  75. package/dist/hub/passthrough.d.ts +21 -0
  76. package/dist/hub/passthrough.d.ts.map +1 -0
  77. package/dist/hub/passthrough.js +71 -0
  78. package/dist/hub/passthrough.js.map +1 -0
  79. package/dist/manifest-compact.txt +15 -0
  80. package/dist/manifest-search.json +1 -0
  81. package/dist/manifest.json +2163 -268
  82. package/dist/mcp/oauth.d.ts +33 -0
  83. package/dist/mcp/oauth.d.ts.map +1 -0
  84. package/dist/mcp/oauth.js +220 -0
  85. package/dist/mcp/oauth.js.map +1 -0
  86. package/dist/mcp/schema.d.ts +65 -0
  87. package/dist/mcp/schema.d.ts.map +1 -0
  88. package/dist/mcp/schema.js +136 -0
  89. package/dist/mcp/schema.js.map +1 -0
  90. package/dist/mcp/server.d.ts +23 -10
  91. package/dist/mcp/server.d.ts.map +1 -1
  92. package/dist/mcp/server.js +350 -182
  93. package/dist/mcp/server.js.map +1 -1
  94. package/dist/mcp/sse-transport.d.ts +34 -0
  95. package/dist/mcp/sse-transport.d.ts.map +1 -0
  96. package/dist/mcp/sse-transport.js +182 -0
  97. package/dist/mcp/sse-transport.js.map +1 -0
  98. package/dist/mcp/streamable-http.d.ts +64 -0
  99. package/dist/mcp/streamable-http.d.ts.map +1 -0
  100. package/dist/mcp/streamable-http.js +312 -0
  101. package/dist/mcp/streamable-http.js.map +1 -0
  102. package/dist/permissions/sensitive-paths.js +2 -2
  103. package/dist/permissions/sensitive-paths.js.map +1 -1
  104. package/dist/types.d.ts +15 -0
  105. package/dist/types.d.ts.map +1 -1
  106. package/dist/types.js.map +1 -1
  107. package/package.json +8 -7
  108. package/src/adapters/1688/_site.json +9 -0
  109. package/src/adapters/36kr/latest.yaml +36 -0
  110. package/src/adapters/arxiv/trending.yaml +37 -0
  111. package/src/adapters/baidu/hot.yaml +37 -0
  112. package/src/adapters/baidu/search.yaml +41 -0
  113. package/src/adapters/barchart/_site.json +10 -0
  114. package/src/adapters/bbc/technology.yaml +26 -0
  115. package/src/adapters/bbc/top.yaml +26 -0
  116. package/src/adapters/bbc/world.yaml +26 -0
  117. package/src/adapters/bilibili/coin.yaml +33 -0
  118. package/src/adapters/bilibili/later.yaml +31 -0
  119. package/src/adapters/bilibili/live.yaml +41 -0
  120. package/src/adapters/bilibili/trending.yaml +29 -0
  121. package/src/adapters/binance/hot.yaml +39 -0
  122. package/src/adapters/binance/kline.yaml +35 -0
  123. package/src/adapters/binance/ticker.yaml +33 -0
  124. package/src/adapters/bluesky/likes.yaml +35 -0
  125. package/src/adapters/bluesky/notifications.yaml +30 -0
  126. package/src/adapters/bluesky/post.yaml +25 -0
  127. package/src/adapters/chrome/bookmarks.yaml +26 -0
  128. package/src/adapters/chrome/tabs.yaml +25 -0
  129. package/src/adapters/cnki/search.yaml +40 -0
  130. package/src/adapters/cnn/technology.yaml +26 -0
  131. package/src/adapters/cocoapods/info.yaml +33 -0
  132. package/src/adapters/coinbase/prices.yaml +27 -0
  133. package/src/adapters/coinbase/rates.yaml +24 -0
  134. package/src/adapters/coupang/hot.yaml +29 -0
  135. package/src/adapters/crates-io/info.yaml +29 -0
  136. package/src/adapters/crates-io/versions.yaml +33 -0
  137. package/src/adapters/ctrip/hot.yaml +28 -0
  138. package/src/adapters/cursor/cursor.ts +91 -1
  139. package/src/adapters/dangdang/hot.yaml +38 -0
  140. package/src/adapters/dangdang/search.yaml +43 -0
  141. package/src/adapters/deepseek/chat.yaml +33 -0
  142. package/src/adapters/deepseek/models.yaml +18 -0
  143. package/src/adapters/devto/latest.yaml +29 -0
  144. package/src/adapters/devto/search.yaml +34 -0
  145. package/src/adapters/dianping/hot.yaml +43 -0
  146. package/src/adapters/dianping/search.yaml +48 -0
  147. package/src/adapters/discord-app/discord-app.ts +99 -1
  148. package/src/adapters/docker/networks.yaml +20 -0
  149. package/src/adapters/docker/volumes.yaml +19 -0
  150. package/src/adapters/docker-hub/info.yaml +26 -0
  151. package/src/adapters/docker-hub/tags.yaml +34 -0
  152. package/src/adapters/douban/group-hot.yaml +29 -0
  153. package/src/adapters/douban/new-movies.yaml +32 -0
  154. package/src/adapters/douban/tv-hot.yaml +32 -0
  155. package/src/adapters/doubao/ask.yaml +64 -0
  156. package/src/adapters/doubao/new.yaml +18 -0
  157. package/src/adapters/doubao/status.yaml +21 -0
  158. package/src/adapters/douyu/hot.yaml +34 -0
  159. package/src/adapters/douyu/search.yaml +42 -0
  160. package/src/adapters/eastmoney/fund.yaml +36 -0
  161. package/src/adapters/eastmoney/market.yaml +26 -0
  162. package/src/adapters/ele/hot.yaml +40 -0
  163. package/src/adapters/ele/search.yaml +47 -0
  164. package/src/adapters/exchangerate/list.yaml +25 -0
  165. package/src/adapters/facebook/marketplace.yaml +43 -0
  166. package/src/adapters/facebook/post.yaml +29 -0
  167. package/src/adapters/futu/hot.yaml +49 -0
  168. package/src/adapters/futu/quote.yaml +46 -0
  169. package/src/adapters/gitee/repos.yaml +34 -0
  170. package/src/adapters/github-trending/developers.yaml +33 -0
  171. package/src/adapters/github-trending/weekly.yaml +34 -0
  172. package/src/adapters/gitlab/projects.yaml +34 -0
  173. package/src/adapters/godot/scene-export.yaml +1 -1
  174. package/src/adapters/hackernews/comments.yaml +36 -0
  175. package/src/adapters/hackernews/item.yaml +28 -0
  176. package/src/adapters/hf/datasets.yaml +34 -0
  177. package/src/adapters/hf/spaces.yaml +34 -0
  178. package/src/adapters/homebrew/search.yaml +27 -0
  179. package/src/adapters/huggingface-papers/search.yaml +33 -0
  180. package/src/adapters/imdb/box-office.yaml +28 -0
  181. package/src/adapters/infoq/latest.yaml +26 -0
  182. package/src/adapters/instagram/activity.yaml +45 -0
  183. package/src/adapters/instagram/highlights.yaml +48 -0
  184. package/src/adapters/instagram/reels-trending.yaml +51 -0
  185. package/src/adapters/instagram/reels.yaml +34 -0
  186. package/src/adapters/instagram/stories.yaml +29 -0
  187. package/src/adapters/instagram/suggested.yaml +40 -0
  188. package/src/adapters/instagram/tags.yaml +52 -0
  189. package/src/adapters/itch-io/search.yaml +35 -0
  190. package/src/adapters/itch-io/top.yaml +31 -0
  191. package/src/adapters/ithome/hot.yaml +27 -0
  192. package/src/adapters/ithome/latest.yaml +26 -0
  193. package/src/adapters/jd/_site.json +9 -0
  194. package/src/adapters/jianyu/search.yaml +42 -0
  195. package/src/adapters/ke/ershoufang.yaml +75 -0
  196. package/src/adapters/ke/xiaoqu.yaml +73 -0
  197. package/src/adapters/kuaishou/hot.yaml +39 -0
  198. package/src/adapters/kuaishou/search.yaml +44 -0
  199. package/src/adapters/linkedin/_site.json +10 -0
  200. package/src/adapters/linkedin/jobs.yaml +47 -0
  201. package/src/adapters/lobsters/search.yaml +35 -0
  202. package/src/adapters/macos/active-app.yaml +16 -0
  203. package/src/adapters/macos/apps-list.yaml +14 -0
  204. package/src/adapters/macos/apps.yaml +31 -0
  205. package/src/adapters/macos/battery.yaml +26 -0
  206. package/src/adapters/macos/bluetooth.yaml +14 -0
  207. package/src/adapters/macos/brightness.yaml +22 -0
  208. package/src/adapters/macos/caffeinate.yaml +25 -0
  209. package/src/adapters/macos/calendar-create.yaml +81 -0
  210. package/src/adapters/macos/calendar-list.yaml +53 -0
  211. package/src/adapters/macos/calendar-today.yaml +30 -0
  212. package/src/adapters/macos/clipboard.yaml +23 -0
  213. package/src/adapters/macos/contacts-search.yaml +59 -0
  214. package/src/adapters/macos/dark-mode.yaml +19 -0
  215. package/src/adapters/macos/disk-info.yaml +31 -0
  216. package/src/adapters/macos/disk-usage.yaml +14 -0
  217. package/src/adapters/macos/do-not-disturb.yaml +21 -0
  218. package/src/adapters/macos/empty-trash.yaml +16 -0
  219. package/src/adapters/macos/finder-copy.yaml +40 -0
  220. package/src/adapters/macos/finder-move.yaml +40 -0
  221. package/src/adapters/macos/finder-new-folder.yaml +36 -0
  222. package/src/adapters/macos/finder-recent.yaml +24 -0
  223. package/src/adapters/macos/finder-selection.yaml +22 -0
  224. package/src/adapters/macos/finder-tags.yaml +40 -0
  225. package/src/adapters/macos/lock-screen.yaml +16 -0
  226. package/src/adapters/macos/mail-send.yaml +54 -0
  227. package/src/adapters/macos/mail-status.yaml +38 -0
  228. package/src/adapters/macos/messages-send.yaml +42 -0
  229. package/src/adapters/macos/music-control.yaml +43 -0
  230. package/src/adapters/macos/music-now.yaml +34 -0
  231. package/src/adapters/macos/notes-list.yaml +30 -0
  232. package/src/adapters/macos/notes-search.yaml +45 -0
  233. package/src/adapters/macos/notification.yaml +27 -0
  234. package/src/adapters/macos/notify.yaml +46 -0
  235. package/src/adapters/macos/open-app.yaml +21 -0
  236. package/src/adapters/macos/open.yaml +24 -0
  237. package/src/adapters/macos/photos-search.yaml +44 -0
  238. package/src/adapters/macos/processes.yaml +14 -0
  239. package/src/adapters/macos/reminder-create.yaml +75 -0
  240. package/src/adapters/macos/reminders-complete.yaml +33 -0
  241. package/src/adapters/macos/reminders-list.yaml +28 -0
  242. package/src/adapters/macos/safari-history.yaml +23 -0
  243. package/src/adapters/macos/safari-tabs.yaml +26 -0
  244. package/src/adapters/macos/safari-url.yaml +22 -0
  245. package/src/adapters/macos/say.yaml +36 -0
  246. package/src/adapters/macos/screen-lock.yaml +16 -0
  247. package/src/adapters/macos/screen-recording.yaml +32 -0
  248. package/src/adapters/macos/screenshot.yaml +34 -0
  249. package/src/adapters/macos/shortcuts-list.yaml +14 -0
  250. package/src/adapters/macos/shortcuts-run.yaml +28 -0
  251. package/src/adapters/macos/sleep.yaml +14 -0
  252. package/src/adapters/macos/spotlight.yaml +43 -0
  253. package/src/adapters/macos/system-info.yaml +32 -0
  254. package/src/adapters/macos/trash.yaml +32 -0
  255. package/src/adapters/macos/uptime.yaml +14 -0
  256. package/src/adapters/macos/volume.yaml +19 -0
  257. package/src/adapters/macos/wallpaper.yaml +33 -0
  258. package/src/adapters/macos/wifi-info.yaml +14 -0
  259. package/src/adapters/macos/wifi.yaml +63 -0
  260. package/src/adapters/maimai/search.yaml +62 -0
  261. package/src/adapters/maoyan/hot.yaml +33 -0
  262. package/src/adapters/maoyan/search.yaml +40 -0
  263. package/src/adapters/mastodon/timeline.yaml +33 -0
  264. package/src/adapters/mastodon/user.yaml +32 -0
  265. package/src/adapters/medium/article.yaml +22 -0
  266. package/src/adapters/medium/trending.yaml +30 -0
  267. package/src/adapters/meituan/hot.yaml +26 -0
  268. package/src/adapters/mubu/list.yaml +36 -0
  269. package/src/adapters/mubu/search.yaml +54 -0
  270. package/src/adapters/netease-music/playlist.yaml +34 -0
  271. package/src/adapters/netease-music/top.yaml +33 -0
  272. package/src/adapters/notion/databases.yaml +41 -0
  273. package/src/adapters/notion/pages.yaml +44 -0
  274. package/src/adapters/notion/search.yaml +41 -0
  275. package/src/adapters/npm/downloads.yaml +28 -0
  276. package/src/adapters/npm/info.yaml +25 -0
  277. package/src/adapters/npm/search.yaml +35 -0
  278. package/src/adapters/npm/versions.yaml +33 -0
  279. package/src/adapters/npm-trends/trending.yaml +17 -0
  280. package/src/adapters/nytimes/search.yaml +35 -0
  281. package/src/adapters/obsidian/daily.yaml +23 -0
  282. package/src/adapters/obsidian/open.yaml +26 -0
  283. package/src/adapters/obsidian/search.yaml +28 -0
  284. package/src/adapters/ollama/generate.yaml +33 -0
  285. package/src/adapters/ollama/models.yaml +29 -0
  286. package/src/adapters/ollama/ps.yaml +20 -0
  287. package/src/adapters/openrouter/search.yaml +31 -0
  288. package/src/adapters/perplexity/ask.yaml +33 -0
  289. package/src/adapters/pexels/curated.yaml +31 -0
  290. package/src/adapters/pinduoduo/search.yaml +36 -0
  291. package/src/adapters/producthunt/search.yaml +41 -0
  292. package/src/adapters/pypi/search.yaml +37 -0
  293. package/src/adapters/pypi/versions.yaml +31 -0
  294. package/src/adapters/quark/ls.yaml +39 -0
  295. package/src/adapters/quark/search.yaml +39 -0
  296. package/src/adapters/qweather/forecast.yaml +37 -0
  297. package/src/adapters/reddit/new.yaml +34 -0
  298. package/src/adapters/reddit/rising.yaml +33 -0
  299. package/src/adapters/reddit/top.yaml +40 -0
  300. package/src/adapters/reddit/trending.yaml +25 -0
  301. package/src/adapters/replicate/run.yaml +39 -0
  302. package/src/adapters/reuters/_site.json +9 -0
  303. package/src/adapters/reuters/latest.yaml +26 -0
  304. package/src/adapters/sinablog/_site.json +9 -0
  305. package/src/adapters/sinafinance/market.yaml +21 -0
  306. package/src/adapters/slack/messages.yaml +41 -0
  307. package/src/adapters/slack/post.yaml +32 -0
  308. package/src/adapters/slack/search.yaml +28 -0
  309. package/src/adapters/slack/send.yaml +35 -0
  310. package/src/adapters/slack/status.yaml +19 -0
  311. package/src/adapters/slack/users.yaml +37 -0
  312. package/src/adapters/slock/servers.yaml +32 -0
  313. package/src/adapters/smzdm/_site.json +9 -0
  314. package/src/adapters/spotify/now-playing.yaml +28 -0
  315. package/src/adapters/spotify/playlists.yaml +37 -0
  316. package/src/adapters/spotify/top-tracks.yaml +42 -0
  317. package/src/adapters/stackoverflow/question.yaml +34 -0
  318. package/src/adapters/stackoverflow/tags.yaml +30 -0
  319. package/src/adapters/steam/app-details.yaml +32 -0
  320. package/src/adapters/steam/new-releases.yaml +28 -0
  321. package/src/adapters/steam/search.yaml +36 -0
  322. package/src/adapters/steam/specials.yaml +29 -0
  323. package/src/adapters/steam/wishlist.yaml +36 -0
  324. package/src/adapters/substack/trending.yaml +28 -0
  325. package/src/adapters/taobao/hot.yaml +31 -0
  326. package/src/adapters/taobao/search.yaml +44 -0
  327. package/src/adapters/techcrunch/search.yaml +33 -0
  328. package/src/adapters/theverge/search.yaml +33 -0
  329. package/src/adapters/threads/hot.yaml +44 -0
  330. package/src/adapters/threads/search.yaml +47 -0
  331. package/src/adapters/tiktok/trending.yaml +28 -0
  332. package/src/adapters/toutiao/hot.yaml +31 -0
  333. package/src/adapters/toutiao/search.yaml +47 -0
  334. package/src/adapters/twitch/games.yaml +31 -0
  335. package/src/adapters/twitch/search.yaml +39 -0
  336. package/src/adapters/twitch/streams.yaml +38 -0
  337. package/src/adapters/twitter/lists.yaml +49 -0
  338. package/src/adapters/twitter/media.yaml +48 -0
  339. package/src/adapters/twitter/mentions.yaml +38 -0
  340. package/src/adapters/twitter/mute.yaml +42 -0
  341. package/src/adapters/twitter/pin.yaml +43 -0
  342. package/src/adapters/twitter/quotes.yaml +43 -0
  343. package/src/adapters/twitter/retweets.yaml +44 -0
  344. package/src/adapters/twitter/spaces.yaml +43 -0
  345. package/src/adapters/twitter/unmute.yaml +42 -0
  346. package/src/adapters/unsplash/random.yaml +27 -0
  347. package/src/adapters/v2ex/search.yaml +36 -0
  348. package/src/adapters/vscode/extensions.yaml +23 -0
  349. package/src/adapters/vscode/install-ext.yaml +26 -0
  350. package/src/adapters/vscode/open.yaml +25 -0
  351. package/src/adapters/wechat-channels/hot.yaml +39 -0
  352. package/src/adapters/wechat-channels/search.yaml +57 -0
  353. package/src/adapters/weibo/trending.yaml +28 -0
  354. package/src/adapters/weixin/_site.json +9 -0
  355. package/src/adapters/weixin/hot.yaml +22 -0
  356. package/src/adapters/wikipedia/today.yaml +25 -0
  357. package/src/adapters/xiaohongshu/follow.yaml +35 -0
  358. package/src/adapters/xiaohongshu/hashtag.yaml +44 -0
  359. package/src/adapters/xiaohongshu/hot.yaml +34 -0
  360. package/src/adapters/xiaohongshu/like.yaml +27 -0
  361. package/src/adapters/xiaohongshu/profile.yaml +39 -0
  362. package/src/adapters/xiaohongshu/save.yaml +27 -0
  363. package/src/adapters/xiaohongshu/suggest.yaml +34 -0
  364. package/src/adapters/xiaohongshu/trending.yaml +35 -0
  365. package/src/adapters/xiaohongshu/unfollow.yaml +40 -0
  366. package/src/adapters/xueqiu/market.yaml +25 -0
  367. package/src/adapters/yahoo-finance/quote.yaml +35 -0
  368. package/src/adapters/yahoo-finance/search.yaml +42 -0
  369. package/src/adapters/yahoo-finance/trending.yaml +30 -0
  370. package/src/adapters/youtube/playlist.yaml +43 -0
  371. package/src/adapters/youtube/shorts.yaml +42 -0
  372. package/src/adapters/youtube/trending.yaml +41 -0
  373. package/src/adapters/zhihu/answer.yaml +29 -0
  374. package/src/adapters/zhihu/answers.yaml +38 -0
  375. package/src/adapters/zhihu/article.yaml +27 -0
  376. package/src/adapters/zhihu/articles.yaml +38 -0
  377. package/src/adapters/zhihu/collections.yaml +37 -0
  378. package/src/adapters/zhihu/columns.yaml +38 -0
  379. package/src/adapters/zhihu/comment.yaml +42 -0
  380. package/src/adapters/zhihu/followers.yaml +37 -0
  381. package/src/adapters/zhihu/following.yaml +37 -0
  382. package/src/adapters/zhihu/pins.yaml +37 -0
  383. package/src/adapters/zhihu/topic.yaml +35 -0
  384. package/src/adapters/zhihu/topics.yaml +37 -0
  385. package/src/adapters/zhihu/trending.yaml +36 -0
  386. package/src/adapters/zhihu/user.yaml +30 -0
  387. package/src/adapters/zoom/join.yaml +24 -0
  388. package/src/adapters/zoom/start.yaml +17 -0
  389. package/src/hub/external-clis.yaml +343 -0
  390. package/src/hub/index.ts +128 -0
  391. package/src/hub/passthrough.ts +85 -0
  392. package/src/adapters/1688/manifest.yaml +0 -7
  393. package/src/adapters/barchart/manifest.yaml +0 -8
  394. package/src/adapters/jd/manifest.yaml +0 -7
  395. package/src/adapters/linkedin/manifest.yaml +0 -8
  396. package/src/adapters/reuters/manifest.yaml +0 -7
  397. package/src/adapters/sinablog/manifest.yaml +0 -7
  398. package/src/adapters/smzdm/manifest.yaml +0 -7
  399. package/src/adapters/weixin/manifest.yaml +0 -7
@@ -0,0 +1,81 @@
1
+ # Desktop adapter — create a macOS Calendar event via JXA (injection-safe)
2
+ site: macos
3
+ name: calendar-create
4
+ description: Create a new calendar event with title, date, time, and duration
5
+ type: desktop
6
+ binary: osascript
7
+ detect: "test $(uname) = Darwin"
8
+
9
+ args:
10
+ title:
11
+ type: str
12
+ required: true
13
+ positional: true
14
+ description: Event title
15
+ date:
16
+ type: str
17
+ default: "today"
18
+ description: "Event date (YYYY-MM-DD or 'today')"
19
+ time:
20
+ type: str
21
+ default: "09:00"
22
+ description: "Event start time (HH:MM)"
23
+ duration:
24
+ type: int
25
+ default: 60
26
+ description: Event duration in minutes
27
+ calendar:
28
+ type: str
29
+ default: ""
30
+ description: Calendar name (uses default calendar if empty)
31
+
32
+ pipeline:
33
+ - exec:
34
+ command: osascript
35
+ args:
36
+ - "-l"
37
+ - "JavaScript"
38
+ - "-e"
39
+ - |
40
+ ObjC.import('Foundation');
41
+ var env = $.NSProcessInfo.processInfo.environment;
42
+ var title = ObjC.unwrap(env.objectForKey('UNICLI_TITLE')) || 'New Event';
43
+ var dateStr = ObjC.unwrap(env.objectForKey('UNICLI_DATE')) || 'today';
44
+ var timeStr = ObjC.unwrap(env.objectForKey('UNICLI_TIME')) || '09:00';
45
+ var duration = parseInt(ObjC.unwrap(env.objectForKey('UNICLI_DURATION'))) || 60;
46
+ var calName = ObjC.unwrap(env.objectForKey('UNICLI_CALENDAR')) || '';
47
+
48
+ var cal = Application('Calendar');
49
+ var targetCal;
50
+ if (calName) {
51
+ var calendars = cal.calendars.whose({name: calName})();
52
+ targetCal = calendars.length > 0 ? calendars[0] : cal.defaultCalendar();
53
+ } else {
54
+ targetCal = cal.calendars()[0];
55
+ }
56
+
57
+ var now = new Date();
58
+ var dateParts;
59
+ if (dateStr === 'today') {
60
+ dateParts = [now.getFullYear(), now.getMonth(), now.getDate()];
61
+ } else {
62
+ var dp = dateStr.split('-');
63
+ dateParts = [parseInt(dp[0]), parseInt(dp[1]) - 1, parseInt(dp[2])];
64
+ }
65
+ var tp = timeStr.split(':');
66
+ var start = new Date(dateParts[0], dateParts[1], dateParts[2], parseInt(tp[0]), parseInt(tp[1]));
67
+ var end = new Date(start.getTime() + duration * 60000);
68
+
69
+ var evt = cal.Event({summary: title, startDate: start, endDate: end});
70
+ targetCal.events.push(evt);
71
+ JSON.stringify([{created: true, title: title, start: start.toISOString(), end: end.toISOString(), calendar: targetCal.name()}]);
72
+ env:
73
+ UNICLI_TITLE: "${{ args.title }}"
74
+ UNICLI_DATE: "${{ args.date }}"
75
+ UNICLI_TIME: "${{ args.time }}"
76
+ UNICLI_DURATION: "${{ args.duration }}"
77
+ UNICLI_CALENDAR: "${{ args.calendar }}"
78
+ parse: json
79
+ timeout: 15000
80
+
81
+ columns: [created, title, start, end, calendar]
@@ -0,0 +1,53 @@
1
+ # Desktop adapter — list macOS Calendar events via JXA
2
+ site: macos
3
+ name: calendar-list
4
+ description: List calendar events for the next N days
5
+ type: desktop
6
+ binary: osascript
7
+ detect: "test $(uname) = Darwin"
8
+
9
+ args:
10
+ days:
11
+ type: int
12
+ default: 1
13
+ description: Number of days ahead to fetch events
14
+
15
+ pipeline:
16
+ - exec:
17
+ command: osascript
18
+ args:
19
+ - "-l"
20
+ - "JavaScript"
21
+ - "-e"
22
+ - |
23
+ var cal = Application('Calendar');
24
+ var days = parseInt($.NSProcessInfo.processInfo.environment.objectForKey('UNICLI_DAYS').js) || 1;
25
+ var now = new Date();
26
+ var end = new Date(now.getTime() + days * 86400000);
27
+ var calendars = cal.calendars();
28
+ var result = [];
29
+ for (var c = 0; c < calendars.length; c++) {
30
+ var events = calendars[c].events();
31
+ for (var e = 0; e < events.length; e++) {
32
+ var ev = events[e];
33
+ var start = ev.startDate();
34
+ if (start >= now && start <= end) {
35
+ result.push({
36
+ calendar: calendars[c].name(),
37
+ title: ev.summary(),
38
+ start: start.toISOString(),
39
+ end: ev.endDate().toISOString(),
40
+ location: ev.location() || '',
41
+ notes: (ev.description() || '').substring(0, 200)
42
+ });
43
+ }
44
+ }
45
+ }
46
+ result.sort(function(a, b) { return a.start < b.start ? -1 : 1; });
47
+ JSON.stringify(result);
48
+ env:
49
+ UNICLI_DAYS: "${{ args.days }}"
50
+ parse: json
51
+ timeout: 30000
52
+
53
+ columns: [calendar, title, start, end, location]
@@ -0,0 +1,30 @@
1
+ site: macos
2
+ name: calendar-today
3
+ description: List today's calendar events from macOS Calendar.app
4
+ type: desktop
5
+ binary: osascript
6
+ detect: which osascript
7
+
8
+ pipeline:
9
+ - exec:
10
+ command: osascript
11
+ args:
12
+ - "-l"
13
+ - "JavaScript"
14
+ - "-e"
15
+ - |
16
+ const app = Application('Calendar');
17
+ const now = new Date();
18
+ const start = new Date(now.getFullYear(), now.getMonth(), now.getDate());
19
+ const end = new Date(start.getTime() + 86400000);
20
+ const out = [];
21
+ for (const cal of app.calendars()) {
22
+ const evts = cal.events.whose({startDate: {_greaterThan: start}, startDate: {_lessThan: end}})();
23
+ for (const e of evts) {
24
+ out.push({ calendar: cal.name(), summary: e.summary(), start: e.startDate().toISOString(), end: e.endDate().toISOString(), location: e.location() || '' });
25
+ }
26
+ }
27
+ JSON.stringify(out);
28
+ parse: json
29
+
30
+ columns: [calendar, summary, start, end, location]
@@ -0,0 +1,23 @@
1
+ # Desktop adapter — get macOS clipboard contents via JXA
2
+ site: macos
3
+ name: clipboard
4
+ description: Get current clipboard text contents
5
+ type: desktop
6
+ binary: osascript
7
+ detect: "test $(uname) = Darwin"
8
+
9
+ pipeline:
10
+ - exec:
11
+ command: osascript
12
+ args:
13
+ - "-l"
14
+ - "JavaScript"
15
+ - "-e"
16
+ - |
17
+ var app = Application.currentApplication();
18
+ app.includeStandardAdditions = true;
19
+ var clip = app.theClipboard();
20
+ JSON.stringify([{content: typeof clip === 'string' ? clip : String(clip)}]);
21
+ parse: json
22
+
23
+ columns: [content]
@@ -0,0 +1,59 @@
1
+ # Desktop adapter — search macOS Contacts via JXA (injection-safe)
2
+ site: macos
3
+ name: contacts-search
4
+ description: Search contacts by name, email, or phone
5
+ type: desktop
6
+ binary: osascript
7
+ detect: "test $(uname) = Darwin"
8
+
9
+ args:
10
+ query:
11
+ type: str
12
+ required: true
13
+ positional: true
14
+ description: Search query (name, email, or phone)
15
+
16
+ pipeline:
17
+ - exec:
18
+ command: osascript
19
+ args:
20
+ - "-l"
21
+ - "JavaScript"
22
+ - "-e"
23
+ - |
24
+ ObjC.import('Foundation');
25
+ var env = $.NSProcessInfo.processInfo.environment;
26
+ var query = (ObjC.unwrap(env.objectForKey('UNICLI_QUERY')) || '').toLowerCase();
27
+ var contacts = Application('Contacts');
28
+ var people = contacts.people();
29
+ var result = [];
30
+ var max = Math.min(people.length, 500);
31
+ for (var i = 0; i < max; i++) {
32
+ var p = people[i];
33
+ var first = p.firstName() || '';
34
+ var last = p.lastName() || '';
35
+ var fullName = (first + ' ' + last).trim();
36
+ var emails = [];
37
+ try { emails = p.emails.value(); } catch(e) {}
38
+ var phones = [];
39
+ try { phones = p.phones.value(); } catch(e) {}
40
+ var match = fullName.toLowerCase().indexOf(query) !== -1
41
+ || emails.some(function(e) { return e.toLowerCase().indexOf(query) !== -1; })
42
+ || phones.some(function(ph) { return ph.indexOf(query) !== -1; });
43
+ if (match) {
44
+ result.push({
45
+ name: fullName,
46
+ email: emails[0] || '',
47
+ phone: phones[0] || '',
48
+ company: p.organization() || ''
49
+ });
50
+ }
51
+ if (result.length >= 20) break;
52
+ }
53
+ JSON.stringify(result);
54
+ env:
55
+ UNICLI_QUERY: "${{ args.query }}"
56
+ parse: json
57
+ timeout: 30000
58
+
59
+ columns: [name, email, phone, company]
@@ -0,0 +1,19 @@
1
+ # Desktop adapter — get macOS dark mode status via JXA
2
+ site: macos
3
+ name: dark-mode
4
+ description: Get current dark mode status
5
+ type: desktop
6
+ binary: osascript
7
+ detect: "test $(uname) = Darwin"
8
+
9
+ pipeline:
10
+ - exec:
11
+ command: osascript
12
+ args:
13
+ - "-l"
14
+ - "JavaScript"
15
+ - "-e"
16
+ - "JSON.stringify({darkMode: Application('System Events').appearancePreferences.darkMode()})"
17
+ parse: json
18
+
19
+ columns: [darkMode]
@@ -0,0 +1,31 @@
1
+ # Desktop adapter — get macOS disk information via JXA
2
+ site: macos
3
+ name: disk-info
4
+ description: Get disk names, capacity, and free space for all mounted volumes
5
+ type: desktop
6
+ binary: osascript
7
+ detect: "test $(uname) = Darwin"
8
+
9
+ pipeline:
10
+ - exec:
11
+ command: osascript
12
+ args:
13
+ - "-l"
14
+ - "JavaScript"
15
+ - "-e"
16
+ - |
17
+ var app = Application('Finder');
18
+ var disks = app.disks();
19
+ var result = [];
20
+ for (var i = 0; i < disks.length; i++) {
21
+ var d = disks[i];
22
+ result.push({
23
+ name: d.name(),
24
+ capacity: Math.round(d.capacity() / 1073741824 * 100) / 100,
25
+ freeSpace: Math.round(d.freeSpace() / 1073741824 * 100) / 100
26
+ });
27
+ }
28
+ JSON.stringify(result);
29
+ parse: json
30
+
31
+ columns: [name, capacity, freeSpace]
@@ -0,0 +1,14 @@
1
+ site: macos
2
+ name: disk-usage
3
+ description: Get disk usage summary
4
+ type: desktop
5
+ binary: df
6
+ detect: which df
7
+
8
+ pipeline:
9
+ - exec:
10
+ command: df
11
+ args: ["-h"]
12
+ parse: text
13
+
14
+ columns: [result]
@@ -0,0 +1,21 @@
1
+ site: macos
2
+ name: do-not-disturb
3
+ description: Toggle macOS Focus/Do Not Disturb mode
4
+ type: desktop
5
+ binary: osascript
6
+ detect: which osascript
7
+
8
+ pipeline:
9
+ - exec:
10
+ command: osascript
11
+ args:
12
+ - "-l"
13
+ - "JavaScript"
14
+ - "-e"
15
+ - |
16
+ const app = Application.currentApplication();
17
+ app.includeStandardAdditions = true;
18
+ app.doShellScript('defaults -currentHost read com.apple.notificationcenterui doNotDisturb 2>/dev/null || echo 0');
19
+ parse: text
20
+
21
+ columns: [result]
@@ -0,0 +1,16 @@
1
+ site: macos
2
+ name: empty-trash
3
+ description: Empty the macOS Trash
4
+ type: desktop
5
+ binary: osascript
6
+ detect: which osascript
7
+
8
+ pipeline:
9
+ - exec:
10
+ command: osascript
11
+ args:
12
+ - "-e"
13
+ - 'tell application "Finder" to empty the trash'
14
+ parse: text
15
+
16
+ columns: [result]
@@ -0,0 +1,40 @@
1
+ site: macos
2
+ name: finder-copy
3
+ description: Copy a file or folder to a destination path
4
+ type: desktop
5
+ binary: osascript
6
+ detect: "test $(uname) = Darwin"
7
+
8
+ args:
9
+ source:
10
+ type: str
11
+ required: true
12
+ positional: true
13
+ description: Source file or folder path
14
+ destination:
15
+ type: str
16
+ required: true
17
+ positional: true
18
+ description: Destination path
19
+
20
+ pipeline:
21
+ - exec:
22
+ command: osascript
23
+ args:
24
+ - "-l"
25
+ - "JavaScript"
26
+ - "-e"
27
+ - |
28
+ const fm = $.NSFileManager.defaultManager;
29
+ const src = ${{ args.source | json }};
30
+ const dst = ${{ args.destination | json }};
31
+ const err = Ref();
32
+ const ok = fm.copyItemAtPathToPathError(src, dst, err);
33
+ if (!ok) {
34
+ const msg = err[0] ? ObjC.unwrap(err[0].localizedDescription) : 'unknown error';
35
+ throw new Error(msg);
36
+ }
37
+ JSON.stringify([{ copied: src, to: dst, status: 'ok' }]);
38
+ parse: json
39
+
40
+ columns: [copied, to, status]
@@ -0,0 +1,40 @@
1
+ site: macos
2
+ name: finder-move
3
+ description: Move or rename a file or folder
4
+ type: desktop
5
+ binary: osascript
6
+ detect: "test $(uname) = Darwin"
7
+
8
+ args:
9
+ source:
10
+ type: str
11
+ required: true
12
+ positional: true
13
+ description: Source file or folder path
14
+ destination:
15
+ type: str
16
+ required: true
17
+ positional: true
18
+ description: Destination path
19
+
20
+ pipeline:
21
+ - exec:
22
+ command: osascript
23
+ args:
24
+ - "-l"
25
+ - "JavaScript"
26
+ - "-e"
27
+ - |
28
+ const fm = $.NSFileManager.defaultManager;
29
+ const src = ${{ args.source | json }};
30
+ const dst = ${{ args.destination | json }};
31
+ const err = Ref();
32
+ const ok = fm.moveItemAtPathToPathError(src, dst, err);
33
+ if (!ok) {
34
+ const msg = err[0] ? ObjC.unwrap(err[0].localizedDescription) : 'unknown error';
35
+ throw new Error(msg);
36
+ }
37
+ JSON.stringify([{ moved: src, to: dst, status: 'ok' }]);
38
+ parse: json
39
+
40
+ columns: [moved, to, status]
@@ -0,0 +1,36 @@
1
+ site: macos
2
+ name: finder-new-folder
3
+ description: Create a new directory (with intermediate directories)
4
+ type: desktop
5
+ binary: osascript
6
+ detect: "test $(uname) = Darwin"
7
+
8
+ args:
9
+ path:
10
+ type: str
11
+ required: true
12
+ positional: true
13
+ description: Directory path to create
14
+
15
+ pipeline:
16
+ - exec:
17
+ command: osascript
18
+ args:
19
+ - "-l"
20
+ - "JavaScript"
21
+ - "-e"
22
+ - |
23
+ const fm = $.NSFileManager.defaultManager;
24
+ const path = ${{ args.path | json }};
25
+ const err = Ref();
26
+ const ok = fm.createDirectoryAtPathWithIntermediateDirectoriesAttributesError(
27
+ path, true, $(), err
28
+ );
29
+ if (!ok) {
30
+ const msg = err[0] ? ObjC.unwrap(err[0].localizedDescription) : 'unknown error';
31
+ throw new Error(msg);
32
+ }
33
+ JSON.stringify([{ created: path, status: 'ok' }]);
34
+ parse: json
35
+
36
+ columns: [created, status]
@@ -0,0 +1,24 @@
1
+ # Desktop adapter — recently opened files via Spotlight (mdfind)
2
+ site: macos
3
+ name: finder-recent
4
+ description: List files opened in the last 7 days
5
+ type: desktop
6
+ binary: mdfind
7
+ detect: "test $(uname) = Darwin"
8
+
9
+ pipeline:
10
+ - exec:
11
+ command: mdfind
12
+ args:
13
+ - "kMDItemLastUsedDate >= $time.today(-7)"
14
+ - "-onlyin"
15
+ - "$HOME"
16
+ parse: lines
17
+ timeout: 30000
18
+
19
+ - limit: 20
20
+
21
+ - map:
22
+ path: "${{ item.line }}"
23
+
24
+ columns: [path]
@@ -0,0 +1,22 @@
1
+ site: macos
2
+ name: finder-selection
3
+ description: Get currently selected files in Finder
4
+ type: desktop
5
+ binary: osascript
6
+ detect: which osascript
7
+
8
+ pipeline:
9
+ - exec:
10
+ command: osascript
11
+ args:
12
+ - "-l"
13
+ - "JavaScript"
14
+ - "-e"
15
+ - |
16
+ const finder = Application('Finder');
17
+ const sel = finder.selection();
18
+ const out = sel.map(item => ({ name: item.name(), path: item.url().replace('file://', '') }));
19
+ JSON.stringify(out);
20
+ parse: json
21
+
22
+ columns: [name, path]
@@ -0,0 +1,40 @@
1
+ # Desktop adapter — list Finder tags on a file via JXA (injection-safe)
2
+ site: macos
3
+ name: finder-tags
4
+ description: List Finder tags on a file or directory
5
+ type: desktop
6
+ binary: osascript
7
+ detect: "test $(uname) = Darwin"
8
+
9
+ args:
10
+ path:
11
+ type: str
12
+ required: true
13
+ positional: true
14
+ description: File or directory path to inspect
15
+
16
+ pipeline:
17
+ - exec:
18
+ command: osascript
19
+ args:
20
+ - "-l"
21
+ - "JavaScript"
22
+ - "-e"
23
+ - |
24
+ ObjC.import('Foundation');
25
+ var env = $.NSProcessInfo.processInfo.environment;
26
+ var path = ObjC.unwrap(env.objectForKey('UNICLI_PATH')) || '';
27
+ var url = $.NSURL.fileURLWithPath(path);
28
+ var res = url.resourceValuesForKeysError(['NSURLTagNamesKey'], null);
29
+ var tags = ObjC.unwrap(res.NSURLTagNamesKey) || [];
30
+ var tagList = [];
31
+ for (var i = 0; i < tags.length; i++) {
32
+ tagList.push(ObjC.unwrap(tags[i]));
33
+ }
34
+ JSON.stringify([{path: path, tags: tagList}]);
35
+ env:
36
+ UNICLI_PATH: "${{ args.path }}"
37
+ parse: json
38
+ timeout: 10000
39
+
40
+ columns: [path, tags]
@@ -0,0 +1,16 @@
1
+ # Desktop adapter — lock macOS screen via pmset
2
+ site: macos
3
+ name: lock-screen
4
+ description: Lock the screen (put display to sleep)
5
+ type: desktop
6
+ binary: pmset
7
+ detect: "test $(uname) = Darwin"
8
+
9
+ pipeline:
10
+ - exec:
11
+ command: pmset
12
+ args: ["displaysleepnow"]
13
+ parse: text
14
+ timeout: 5000
15
+
16
+ columns: []
@@ -0,0 +1,54 @@
1
+ # Desktop adapter — send email via macOS Mail.app JXA (injection-safe)
2
+ site: macos
3
+ name: mail-send
4
+ description: Send an email using Mail.app
5
+ type: desktop
6
+ binary: osascript
7
+ detect: "test $(uname) = Darwin"
8
+
9
+ args:
10
+ to:
11
+ type: str
12
+ required: true
13
+ description: Recipient email address
14
+ subject:
15
+ type: str
16
+ required: true
17
+ description: Email subject line
18
+ body:
19
+ type: str
20
+ required: true
21
+ description: Email body text
22
+
23
+ pipeline:
24
+ - exec:
25
+ command: osascript
26
+ args:
27
+ - "-l"
28
+ - "JavaScript"
29
+ - "-e"
30
+ - |
31
+ ObjC.import('Foundation');
32
+ var env = $.NSProcessInfo.processInfo.environment;
33
+ var to = ObjC.unwrap(env.objectForKey('UNICLI_TO')) || '';
34
+ var subject = ObjC.unwrap(env.objectForKey('UNICLI_SUBJECT')) || '';
35
+ var body = ObjC.unwrap(env.objectForKey('UNICLI_BODY')) || '';
36
+
37
+ var mail = Application('Mail');
38
+ var msg = mail.OutgoingMessage({
39
+ subject: subject,
40
+ content: body,
41
+ visible: true
42
+ });
43
+ mail.outgoingMessages.push(msg);
44
+ msg.toRecipients.push(mail.Recipient({address: to}));
45
+ mail.send(msg);
46
+ JSON.stringify([{sent: true, to: to, subject: subject}]);
47
+ env:
48
+ UNICLI_TO: "${{ args.to }}"
49
+ UNICLI_SUBJECT: "${{ args.subject }}"
50
+ UNICLI_BODY: "${{ args.body }}"
51
+ parse: json
52
+ timeout: 15000
53
+
54
+ columns: [sent, to, subject]
@@ -0,0 +1,38 @@
1
+ # Desktop adapter — get macOS Mail.app account status via JXA
2
+ site: macos
3
+ name: mail-status
4
+ description: Get Mail.app accounts and unread message counts
5
+ type: desktop
6
+ binary: osascript
7
+ detect: "test $(uname) = Darwin"
8
+
9
+ pipeline:
10
+ - exec:
11
+ command: osascript
12
+ args:
13
+ - "-l"
14
+ - "JavaScript"
15
+ - "-e"
16
+ - |
17
+ var mail = Application('Mail');
18
+ var accounts = mail.accounts();
19
+ var result = [];
20
+ for (var i = 0; i < accounts.length; i++) {
21
+ var acct = accounts[i];
22
+ var unread = 0;
23
+ var mailboxes = acct.mailboxes();
24
+ for (var j = 0; j < mailboxes.length; j++) {
25
+ unread += mailboxes[j].unreadCount();
26
+ }
27
+ result.push({
28
+ name: acct.name(),
29
+ email: acct.emailAddresses()[0] || '',
30
+ type: acct.accountType(),
31
+ unread: unread
32
+ });
33
+ }
34
+ JSON.stringify(result);
35
+ parse: json
36
+ timeout: 15000
37
+
38
+ columns: [name, email, type, unread]