@zenalexa/unicli 0.210.0 → 0.212.1

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 (1127) hide show
  1. package/AGENTS.md +71 -134
  2. package/README.md +222 -209
  3. package/dist/cli.d.ts +8 -0
  4. package/dist/cli.d.ts.map +1 -1
  5. package/dist/cli.js +114 -9
  6. package/dist/cli.js.map +1 -1
  7. package/dist/commands/acp.d.ts +14 -0
  8. package/dist/commands/acp.d.ts.map +1 -0
  9. package/dist/commands/acp.js +41 -0
  10. package/dist/commands/acp.js.map +1 -0
  11. package/dist/commands/agents.d.ts +14 -3
  12. package/dist/commands/agents.d.ts.map +1 -1
  13. package/dist/commands/agents.js +369 -140
  14. package/dist/commands/agents.js.map +1 -1
  15. package/dist/commands/health.d.ts.map +1 -1
  16. package/dist/commands/health.js +14 -0
  17. package/dist/commands/health.js.map +1 -1
  18. package/dist/commands/lint.d.ts +32 -0
  19. package/dist/commands/lint.d.ts.map +1 -0
  20. package/dist/commands/lint.js +377 -0
  21. package/dist/commands/lint.js.map +1 -0
  22. package/dist/commands/mcp.d.ts +3 -4
  23. package/dist/commands/mcp.d.ts.map +1 -1
  24. package/dist/commands/mcp.js +47 -62
  25. package/dist/commands/mcp.js.map +1 -1
  26. package/dist/commands/migrate-schema.d.ts +56 -0
  27. package/dist/commands/migrate-schema.d.ts.map +1 -0
  28. package/dist/commands/migrate-schema.js +522 -0
  29. package/dist/commands/migrate-schema.js.map +1 -0
  30. package/dist/commands/migrate.d.ts +54 -0
  31. package/dist/commands/migrate.d.ts.map +1 -0
  32. package/dist/commands/migrate.js +270 -0
  33. package/dist/commands/migrate.js.map +1 -0
  34. package/dist/commands/schema.d.ts +12 -0
  35. package/dist/commands/schema.d.ts.map +1 -0
  36. package/dist/commands/schema.js +72 -0
  37. package/dist/commands/schema.js.map +1 -0
  38. package/dist/commands/search.d.ts +12 -0
  39. package/dist/commands/search.d.ts.map +1 -0
  40. package/dist/commands/search.js +47 -0
  41. package/dist/commands/search.js.map +1 -0
  42. package/dist/commands/skills.d.ts.map +1 -1
  43. package/dist/commands/skills.js +76 -0
  44. package/dist/commands/skills.js.map +1 -1
  45. package/dist/constants.d.ts +2 -0
  46. package/dist/constants.d.ts.map +1 -1
  47. package/dist/constants.js +2 -0
  48. package/dist/constants.js.map +1 -1
  49. package/dist/core/envelope.d.ts +87 -0
  50. package/dist/core/envelope.d.ts.map +1 -0
  51. package/dist/core/envelope.js +94 -0
  52. package/dist/core/envelope.js.map +1 -0
  53. package/dist/core/index.d.ts +12 -0
  54. package/dist/core/index.d.ts.map +1 -0
  55. package/dist/core/index.js +12 -0
  56. package/dist/core/index.js.map +1 -0
  57. package/dist/core/registry.d.ts +63 -0
  58. package/dist/core/registry.d.ts.map +1 -0
  59. package/dist/core/registry.js +62 -0
  60. package/dist/core/registry.js.map +1 -0
  61. package/dist/core/schema-v2.d.ts +111 -0
  62. package/dist/core/schema-v2.d.ts.map +1 -0
  63. package/dist/core/schema-v2.js +118 -0
  64. package/dist/core/schema-v2.js.map +1 -0
  65. package/dist/core/types.d.ts +24 -0
  66. package/dist/core/types.d.ts.map +1 -0
  67. package/dist/core/types.js +15 -0
  68. package/dist/core/types.js.map +1 -0
  69. package/dist/discovery/aliases.d.ts +36 -0
  70. package/dist/discovery/aliases.d.ts.map +1 -0
  71. package/dist/discovery/aliases.js +520 -0
  72. package/dist/discovery/aliases.js.map +1 -0
  73. package/dist/discovery/loader.d.ts.map +1 -1
  74. package/dist/discovery/loader.js +107 -5
  75. package/dist/discovery/loader.js.map +1 -1
  76. package/dist/discovery/search.d.ts +73 -0
  77. package/dist/discovery/search.d.ts.map +1 -0
  78. package/dist/discovery/search.js +392 -0
  79. package/dist/discovery/search.js.map +1 -0
  80. package/dist/engine/repair/logger.d.ts.map +1 -1
  81. package/dist/engine/repair/logger.js +11 -1
  82. package/dist/engine/repair/logger.js.map +1 -1
  83. package/dist/engine/steps/browser.d.ts +11 -0
  84. package/dist/engine/steps/browser.d.ts.map +1 -0
  85. package/dist/engine/steps/browser.js +11 -0
  86. package/dist/engine/steps/browser.js.map +1 -0
  87. package/dist/engine/steps/control.d.ts +10 -0
  88. package/dist/engine/steps/control.d.ts.map +1 -0
  89. package/dist/engine/steps/control.js +10 -0
  90. package/dist/engine/steps/control.js.map +1 -0
  91. package/dist/engine/steps/cua.d.ts +53 -0
  92. package/dist/engine/steps/cua.d.ts.map +1 -0
  93. package/dist/engine/steps/cua.js +71 -0
  94. package/dist/engine/steps/cua.js.map +1 -0
  95. package/dist/engine/steps/desktop-ax.d.ts +38 -0
  96. package/dist/engine/steps/desktop-ax.d.ts.map +1 -0
  97. package/dist/engine/steps/desktop-ax.js +49 -0
  98. package/dist/engine/steps/desktop-ax.js.map +1 -0
  99. package/dist/engine/steps/desktop.d.ts +10 -0
  100. package/dist/engine/steps/desktop.d.ts.map +1 -0
  101. package/dist/engine/steps/desktop.js +10 -0
  102. package/dist/engine/steps/desktop.js.map +1 -0
  103. package/dist/engine/steps/download.d.ts +10 -0
  104. package/dist/engine/steps/download.d.ts.map +1 -0
  105. package/dist/engine/steps/download.js +10 -0
  106. package/dist/engine/steps/download.js.map +1 -0
  107. package/dist/engine/steps/fetch.d.ts +10 -0
  108. package/dist/engine/steps/fetch.d.ts.map +1 -0
  109. package/dist/engine/steps/fetch.js +10 -0
  110. package/dist/engine/steps/fetch.js.map +1 -0
  111. package/dist/engine/steps/index.d.ts +19 -0
  112. package/dist/engine/steps/index.d.ts.map +1 -0
  113. package/dist/engine/steps/index.js +19 -0
  114. package/dist/engine/steps/index.js.map +1 -0
  115. package/dist/engine/steps/transform.d.ts +10 -0
  116. package/dist/engine/steps/transform.d.ts.map +1 -0
  117. package/dist/engine/steps/transform.js +10 -0
  118. package/dist/engine/steps/transform.js.map +1 -0
  119. package/dist/engine/steps/websocket.d.ts +10 -0
  120. package/dist/engine/steps/websocket.d.ts.map +1 -0
  121. package/dist/engine/steps/websocket.js +10 -0
  122. package/dist/engine/steps/websocket.js.map +1 -0
  123. package/dist/engine/yaml-runner.d.ts +159 -1
  124. package/dist/engine/yaml-runner.d.ts.map +1 -1
  125. package/dist/engine/yaml-runner.js +180 -32
  126. package/dist/engine/yaml-runner.js.map +1 -1
  127. package/dist/manifest-compact.txt +15 -0
  128. package/dist/manifest-search.json +1 -0
  129. package/dist/manifest.json +530 -244
  130. package/dist/mcp/elicitation.d.ts +56 -0
  131. package/dist/mcp/elicitation.d.ts.map +1 -0
  132. package/dist/mcp/elicitation.js +62 -0
  133. package/dist/mcp/elicitation.js.map +1 -0
  134. package/dist/mcp/oauth.d.ts +33 -0
  135. package/dist/mcp/oauth.d.ts.map +1 -0
  136. package/dist/mcp/oauth.js +291 -0
  137. package/dist/mcp/oauth.js.map +1 -0
  138. package/dist/mcp/schema.d.ts +65 -0
  139. package/dist/mcp/schema.d.ts.map +1 -0
  140. package/dist/mcp/schema.js +136 -0
  141. package/dist/mcp/schema.js.map +1 -0
  142. package/dist/mcp/server.d.ts +28 -10
  143. package/dist/mcp/server.d.ts.map +1 -1
  144. package/dist/mcp/server.js +408 -234
  145. package/dist/mcp/server.js.map +1 -1
  146. package/dist/mcp/sse-transport.d.ts +34 -0
  147. package/dist/mcp/sse-transport.d.ts.map +1 -0
  148. package/dist/mcp/sse-transport.js +182 -0
  149. package/dist/mcp/sse-transport.js.map +1 -0
  150. package/dist/mcp/streamable-http.d.ts +89 -0
  151. package/dist/mcp/streamable-http.d.ts.map +1 -0
  152. package/dist/mcp/streamable-http.js +566 -0
  153. package/dist/mcp/streamable-http.js.map +1 -0
  154. package/dist/output/formatter.d.ts +14 -4
  155. package/dist/output/formatter.d.ts.map +1 -1
  156. package/dist/output/formatter.js +49 -25
  157. package/dist/output/formatter.js.map +1 -1
  158. package/dist/permissions/sensitive-paths.js +2 -2
  159. package/dist/permissions/sensitive-paths.js.map +1 -1
  160. package/dist/protocol/acp.d.ts +126 -0
  161. package/dist/protocol/acp.d.ts.map +1 -0
  162. package/dist/protocol/acp.js +588 -0
  163. package/dist/protocol/acp.js.map +1 -0
  164. package/dist/protocol/skill.d.ts +106 -0
  165. package/dist/protocol/skill.d.ts.map +1 -0
  166. package/dist/protocol/skill.js +276 -0
  167. package/dist/protocol/skill.js.map +1 -0
  168. package/dist/registry.d.ts +2 -0
  169. package/dist/registry.d.ts.map +1 -1
  170. package/dist/registry.js +2 -0
  171. package/dist/registry.js.map +1 -1
  172. package/dist/transport/adapters/cdp-browser.d.ts +44 -0
  173. package/dist/transport/adapters/cdp-browser.d.ts.map +1 -0
  174. package/dist/transport/adapters/cdp-browser.js +240 -0
  175. package/dist/transport/adapters/cdp-browser.js.map +1 -0
  176. package/dist/transport/adapters/cua.d.ts +240 -0
  177. package/dist/transport/adapters/cua.d.ts.map +1 -0
  178. package/dist/transport/adapters/cua.js +663 -0
  179. package/dist/transport/adapters/cua.js.map +1 -0
  180. package/dist/transport/adapters/desktop-atspi.d.ts +27 -0
  181. package/dist/transport/adapters/desktop-atspi.d.ts.map +1 -0
  182. package/dist/transport/adapters/desktop-atspi.js +65 -0
  183. package/dist/transport/adapters/desktop-atspi.js.map +1 -0
  184. package/dist/transport/adapters/desktop-ax.d.ts +59 -0
  185. package/dist/transport/adapters/desktop-ax.d.ts.map +1 -0
  186. package/dist/transport/adapters/desktop-ax.js +311 -0
  187. package/dist/transport/adapters/desktop-ax.js.map +1 -0
  188. package/dist/transport/adapters/desktop-uia.d.ts +27 -0
  189. package/dist/transport/adapters/desktop-uia.d.ts.map +1 -0
  190. package/dist/transport/adapters/desktop-uia.js +66 -0
  191. package/dist/transport/adapters/desktop-uia.js.map +1 -0
  192. package/dist/transport/adapters/http.d.ts +40 -0
  193. package/dist/transport/adapters/http.d.ts.map +1 -0
  194. package/dist/transport/adapters/http.js +353 -0
  195. package/dist/transport/adapters/http.js.map +1 -0
  196. package/dist/transport/adapters/subprocess.d.ts +27 -0
  197. package/dist/transport/adapters/subprocess.d.ts.map +1 -0
  198. package/dist/transport/adapters/subprocess.js +254 -0
  199. package/dist/transport/adapters/subprocess.js.map +1 -0
  200. package/dist/transport/bus.d.ts +28 -0
  201. package/dist/transport/bus.d.ts.map +1 -0
  202. package/dist/transport/bus.js +112 -0
  203. package/dist/transport/bus.js.map +1 -0
  204. package/dist/transport/capability.d.ts +38 -0
  205. package/dist/transport/capability.d.ts.map +1 -0
  206. package/dist/transport/capability.js +254 -0
  207. package/dist/transport/capability.js.map +1 -0
  208. package/dist/transport/types.d.ts +148 -0
  209. package/dist/transport/types.d.ts.map +1 -0
  210. package/dist/transport/types.js +19 -0
  211. package/dist/transport/types.js.map +1 -0
  212. package/dist/types.d.ts +18 -2
  213. package/dist/types.d.ts.map +1 -1
  214. package/dist/types.js.map +1 -1
  215. package/package.json +32 -10
  216. package/src/adapters/1688/_site.json +9 -0
  217. package/src/adapters/1688/item.yaml +7 -0
  218. package/src/adapters/1688/search.yaml +7 -0
  219. package/src/adapters/1688/store.yaml +7 -0
  220. package/src/adapters/36kr/article.yaml +7 -0
  221. package/src/adapters/36kr/hot.yaml +7 -0
  222. package/src/adapters/36kr/latest.yaml +7 -0
  223. package/src/adapters/36kr/news.yaml +7 -0
  224. package/src/adapters/36kr/search.yaml +7 -0
  225. package/src/adapters/adguardhome/add-rule.yaml +7 -0
  226. package/src/adapters/adguardhome/rules.yaml +7 -0
  227. package/src/adapters/adguardhome/stats.yaml +7 -0
  228. package/src/adapters/adguardhome/status.yaml +7 -0
  229. package/src/adapters/adguardhome/toggle.yaml +7 -0
  230. package/src/adapters/amazon/bestsellers.yaml +7 -0
  231. package/src/adapters/amazon/discussion.yaml +7 -0
  232. package/src/adapters/amazon/movers-shakers.yaml +7 -0
  233. package/src/adapters/amazon/new-releases.yaml +7 -0
  234. package/src/adapters/amazon/offer.yaml +7 -0
  235. package/src/adapters/amazon/product.yaml +7 -0
  236. package/src/adapters/amazon/rankings.yaml +7 -0
  237. package/src/adapters/amazon/search.yaml +7 -0
  238. package/src/adapters/apple-music/rate-album.yaml +71 -0
  239. package/src/adapters/apple-notes/list.yaml +52 -0
  240. package/src/adapters/apple-notes/read.yaml +44 -0
  241. package/src/adapters/apple-notes/search.yaml +43 -0
  242. package/src/adapters/apple-podcasts/episodes.yaml +7 -0
  243. package/src/adapters/apple-podcasts/search.yaml +7 -0
  244. package/src/adapters/apple-podcasts/top.yaml +7 -0
  245. package/src/adapters/arxiv/paper.yaml +7 -0
  246. package/src/adapters/arxiv/search.yaml +7 -0
  247. package/src/adapters/arxiv/trending.yaml +7 -0
  248. package/src/adapters/audacity/convert.yaml +7 -0
  249. package/src/adapters/audacity/effects.yaml +7 -0
  250. package/src/adapters/audacity/info.yaml +7 -0
  251. package/src/adapters/audacity/mix.yaml +7 -0
  252. package/src/adapters/audacity/normalize.yaml +7 -0
  253. package/src/adapters/audacity/spectrogram.yaml +7 -0
  254. package/src/adapters/audacity/split-channels.yaml +7 -0
  255. package/src/adapters/audacity/trim.yaml +7 -0
  256. package/src/adapters/autoagent/eval-run.yaml +7 -0
  257. package/src/adapters/aws/s3-ls.yaml +7 -0
  258. package/src/adapters/az/account.yaml +7 -0
  259. package/src/adapters/baidu/hot.yaml +7 -0
  260. package/src/adapters/baidu/search.yaml +7 -0
  261. package/src/adapters/band/bands.yaml +7 -0
  262. package/src/adapters/band/mentions.yaml +7 -0
  263. package/src/adapters/band/post.yaml +7 -0
  264. package/src/adapters/band/posts.yaml +7 -0
  265. package/src/adapters/barchart/_site.json +10 -0
  266. package/src/adapters/barchart/flow.yaml +7 -0
  267. package/src/adapters/barchart/greeks.yaml +7 -0
  268. package/src/adapters/barchart/options.yaml +7 -0
  269. package/src/adapters/barchart/quote.yaml +7 -0
  270. package/src/adapters/bbc/news.yaml +7 -0
  271. package/src/adapters/bbc/technology.yaml +7 -0
  272. package/src/adapters/bbc/top.yaml +7 -0
  273. package/src/adapters/bbc/world.yaml +7 -0
  274. package/src/adapters/bilibili/coin.yaml +7 -0
  275. package/src/adapters/bilibili/dynamic.yaml +7 -0
  276. package/src/adapters/bilibili/favorites.yaml +7 -0
  277. package/src/adapters/bilibili/feed.yaml +7 -0
  278. package/src/adapters/bilibili/following.yaml +7 -0
  279. package/src/adapters/bilibili/history.yaml +7 -0
  280. package/src/adapters/bilibili/hot.yaml +7 -0
  281. package/src/adapters/bilibili/later.yaml +7 -0
  282. package/src/adapters/bilibili/live.yaml +7 -0
  283. package/src/adapters/bilibili/me.yaml +7 -0
  284. package/src/adapters/bilibili/ranking.yaml +7 -0
  285. package/src/adapters/bilibili/trending.yaml +7 -0
  286. package/src/adapters/binance/hot.yaml +7 -0
  287. package/src/adapters/binance/kline.yaml +7 -0
  288. package/src/adapters/binance/ticker.yaml +7 -0
  289. package/src/adapters/blender/animation.yaml +7 -0
  290. package/src/adapters/blender/camera.yaml +7 -0
  291. package/src/adapters/blender/convert.yaml +7 -0
  292. package/src/adapters/blender/export.yaml +7 -0
  293. package/src/adapters/blender/import.yaml +7 -0
  294. package/src/adapters/blender/info.yaml +7 -0
  295. package/src/adapters/blender/lighting.yaml +7 -0
  296. package/src/adapters/blender/materials.yaml +7 -0
  297. package/src/adapters/blender/objects.yaml +7 -0
  298. package/src/adapters/blender/render.yaml +7 -0
  299. package/src/adapters/blender/scene.yaml +7 -0
  300. package/src/adapters/blender/screenshot.yaml +7 -0
  301. package/src/adapters/blender/script.yaml +7 -0
  302. package/src/adapters/bloomberg/businessweek.yaml +7 -0
  303. package/src/adapters/bloomberg/economics.yaml +7 -0
  304. package/src/adapters/bloomberg/feeds.yaml +7 -0
  305. package/src/adapters/bloomberg/industries.yaml +7 -0
  306. package/src/adapters/bloomberg/main.yaml +7 -0
  307. package/src/adapters/bloomberg/markets.yaml +7 -0
  308. package/src/adapters/bloomberg/news.yaml +7 -0
  309. package/src/adapters/bloomberg/opinions.yaml +7 -0
  310. package/src/adapters/bloomberg/politics.yaml +7 -0
  311. package/src/adapters/bloomberg/tech.yaml +7 -0
  312. package/src/adapters/bluesky/feeds.yaml +7 -0
  313. package/src/adapters/bluesky/followers.yaml +7 -0
  314. package/src/adapters/bluesky/following.yaml +7 -0
  315. package/src/adapters/bluesky/likes.yaml +7 -0
  316. package/src/adapters/bluesky/notifications.yaml +7 -0
  317. package/src/adapters/bluesky/post.yaml +7 -0
  318. package/src/adapters/bluesky/profile.yaml +7 -0
  319. package/src/adapters/bluesky/search.yaml +7 -0
  320. package/src/adapters/bluesky/starter-packs.yaml +7 -0
  321. package/src/adapters/bluesky/thread.yaml +7 -0
  322. package/src/adapters/bluesky/trending.yaml +7 -0
  323. package/src/adapters/bluesky/user.yaml +7 -0
  324. package/src/adapters/boss/batchgreet.yaml +7 -0
  325. package/src/adapters/boss/chatlist.yaml +7 -0
  326. package/src/adapters/boss/chatmsg.yaml +7 -0
  327. package/src/adapters/boss/detail.yaml +7 -0
  328. package/src/adapters/boss/exchange.yaml +7 -0
  329. package/src/adapters/boss/greet.yaml +7 -0
  330. package/src/adapters/boss/invite.yaml +7 -0
  331. package/src/adapters/boss/joblist.yaml +7 -0
  332. package/src/adapters/boss/mark.yaml +7 -0
  333. package/src/adapters/boss/recommend.yaml +7 -0
  334. package/src/adapters/boss/resume.yaml +7 -0
  335. package/src/adapters/boss/search.yaml +7 -0
  336. package/src/adapters/boss/send.yaml +7 -0
  337. package/src/adapters/boss/stats.yaml +7 -0
  338. package/src/adapters/chaoxing/assignments.yaml +7 -0
  339. package/src/adapters/chaoxing/exams.yaml +7 -0
  340. package/src/adapters/chrome/bookmarks.yaml +7 -0
  341. package/src/adapters/chrome/tabs.yaml +7 -0
  342. package/src/adapters/claude-code/version.yaml +7 -0
  343. package/src/adapters/cloudcompare/compare.yaml +7 -0
  344. package/src/adapters/cloudcompare/convert.yaml +7 -0
  345. package/src/adapters/cloudcompare/info.yaml +7 -0
  346. package/src/adapters/cloudcompare/subsample.yaml +7 -0
  347. package/src/adapters/cnki/search.yaml +7 -0
  348. package/src/adapters/cnn/technology.yaml +7 -0
  349. package/src/adapters/cnn/top.yaml +7 -0
  350. package/src/adapters/cocoapods/info.yaml +7 -0
  351. package/src/adapters/cocoapods/search.yaml +7 -0
  352. package/src/adapters/codex-cli/version.yaml +7 -0
  353. package/src/adapters/coinbase/prices.yaml +7 -0
  354. package/src/adapters/coinbase/rates.yaml +7 -0
  355. package/src/adapters/comfyui/generate.yaml +7 -0
  356. package/src/adapters/comfyui/history.yaml +7 -0
  357. package/src/adapters/comfyui/nodes.yaml +7 -0
  358. package/src/adapters/comfyui/status.yaml +7 -0
  359. package/src/adapters/coupang/add-to-cart.yaml +7 -0
  360. package/src/adapters/coupang/hot.yaml +7 -0
  361. package/src/adapters/coupang/search.yaml +7 -0
  362. package/src/adapters/crates-io/info.yaml +7 -0
  363. package/src/adapters/crates-io/search.yaml +7 -0
  364. package/src/adapters/crates-io/versions.yaml +7 -0
  365. package/src/adapters/ctrip/hot.yaml +7 -0
  366. package/src/adapters/ctrip/search.yaml +7 -0
  367. package/src/adapters/cua/bench-list.yaml +7 -0
  368. package/src/adapters/cua/bench-run.yaml +7 -0
  369. package/src/adapters/dangdang/hot.yaml +7 -0
  370. package/src/adapters/dangdang/search.yaml +7 -0
  371. package/src/adapters/deepseek/chat.yaml +7 -0
  372. package/src/adapters/deepseek/models.yaml +7 -0
  373. package/src/adapters/devto/latest.yaml +7 -0
  374. package/src/adapters/devto/search.yaml +7 -0
  375. package/src/adapters/devto/tag.yaml +7 -0
  376. package/src/adapters/devto/top.yaml +7 -0
  377. package/src/adapters/devto/user.yaml +7 -0
  378. package/src/adapters/dianping/hot.yaml +7 -0
  379. package/src/adapters/dianping/search.yaml +7 -0
  380. package/src/adapters/dictionary/examples.yaml +7 -0
  381. package/src/adapters/dictionary/search.yaml +7 -0
  382. package/src/adapters/dictionary/synonyms.yaml +7 -0
  383. package/src/adapters/dingtalk/version.yaml +7 -0
  384. package/src/adapters/docker/build.yaml +7 -0
  385. package/src/adapters/docker/images.yaml +7 -0
  386. package/src/adapters/docker/logs.yaml +7 -0
  387. package/src/adapters/docker/networks.yaml +7 -0
  388. package/src/adapters/docker/ps.yaml +7 -0
  389. package/src/adapters/docker/run.yaml +7 -0
  390. package/src/adapters/docker/volumes.yaml +7 -0
  391. package/src/adapters/docker-hub/info.yaml +7 -0
  392. package/src/adapters/docker-hub/search.yaml +7 -0
  393. package/src/adapters/docker-hub/tags.yaml +7 -0
  394. package/src/adapters/doctl/droplets.yaml +7 -0
  395. package/src/adapters/douban/book-hot.yaml +7 -0
  396. package/src/adapters/douban/download.yaml +7 -0
  397. package/src/adapters/douban/group-hot.yaml +7 -0
  398. package/src/adapters/douban/marks.yaml +7 -0
  399. package/src/adapters/douban/movie-hot.yaml +7 -0
  400. package/src/adapters/douban/new-movies.yaml +7 -0
  401. package/src/adapters/douban/photos.yaml +7 -0
  402. package/src/adapters/douban/reviews.yaml +7 -0
  403. package/src/adapters/douban/search.yaml +7 -0
  404. package/src/adapters/douban/subject.yaml +7 -0
  405. package/src/adapters/douban/top250.yaml +7 -0
  406. package/src/adapters/douban/tv-hot.yaml +7 -0
  407. package/src/adapters/doubao/ask.yaml +7 -0
  408. package/src/adapters/doubao/new.yaml +7 -0
  409. package/src/adapters/doubao/status.yaml +7 -0
  410. package/src/adapters/doubao-web/ask.yaml +7 -0
  411. package/src/adapters/doubao-web/detail.yaml +7 -0
  412. package/src/adapters/doubao-web/history.yaml +7 -0
  413. package/src/adapters/doubao-web/meeting-summary.yaml +7 -0
  414. package/src/adapters/doubao-web/meeting-transcript.yaml +7 -0
  415. package/src/adapters/doubao-web/new.yaml +7 -0
  416. package/src/adapters/doubao-web/read.yaml +7 -0
  417. package/src/adapters/doubao-web/send.yaml +7 -0
  418. package/src/adapters/doubao-web/status.yaml +7 -0
  419. package/src/adapters/douyu/hot.yaml +7 -0
  420. package/src/adapters/douyu/search.yaml +7 -0
  421. package/src/adapters/drawio/export.yaml +7 -0
  422. package/src/adapters/eastmoney/fund.yaml +7 -0
  423. package/src/adapters/eastmoney/hot.yaml +7 -0
  424. package/src/adapters/eastmoney/market.yaml +7 -0
  425. package/src/adapters/eastmoney/search.yaml +7 -0
  426. package/src/adapters/ele/hot.yaml +8 -0
  427. package/src/adapters/ele/search.yaml +8 -0
  428. package/src/adapters/exchangerate/convert.yaml +7 -0
  429. package/src/adapters/exchangerate/list.yaml +7 -0
  430. package/src/adapters/facebook/add-friend.yaml +7 -0
  431. package/src/adapters/facebook/events.yaml +7 -0
  432. package/src/adapters/facebook/feed.yaml +7 -0
  433. package/src/adapters/facebook/friends.yaml +7 -0
  434. package/src/adapters/facebook/groups.yaml +7 -0
  435. package/src/adapters/facebook/join-group.yaml +7 -0
  436. package/src/adapters/facebook/marketplace.yaml +7 -0
  437. package/src/adapters/facebook/memories.yaml +7 -0
  438. package/src/adapters/facebook/notifications.yaml +7 -0
  439. package/src/adapters/facebook/post.yaml +7 -0
  440. package/src/adapters/facebook/profile.yaml +7 -0
  441. package/src/adapters/facebook/search.yaml +7 -0
  442. package/src/adapters/feishu/calendar.yaml +7 -0
  443. package/src/adapters/feishu/docs.yaml +7 -0
  444. package/src/adapters/feishu/send.yaml +7 -0
  445. package/src/adapters/feishu/tasks.yaml +7 -0
  446. package/src/adapters/ffmpeg/compress.yaml +7 -0
  447. package/src/adapters/ffmpeg/concat.yaml +7 -0
  448. package/src/adapters/ffmpeg/convert.yaml +7 -0
  449. package/src/adapters/ffmpeg/extract-audio.yaml +7 -0
  450. package/src/adapters/ffmpeg/gif.yaml +7 -0
  451. package/src/adapters/ffmpeg/normalize.yaml +7 -0
  452. package/src/adapters/ffmpeg/probe.yaml +7 -0
  453. package/src/adapters/ffmpeg/resize.yaml +7 -0
  454. package/src/adapters/ffmpeg/subtitles.yaml +7 -0
  455. package/src/adapters/ffmpeg/thumbnail.yaml +7 -0
  456. package/src/adapters/ffmpeg/trim.yaml +7 -0
  457. package/src/adapters/figma/export-selected.yaml +67 -0
  458. package/src/adapters/flyctl/apps.yaml +7 -0
  459. package/src/adapters/freecad/assembly.yaml +7 -0
  460. package/src/adapters/freecad/bom.yaml +7 -0
  461. package/src/adapters/freecad/boolean.yaml +7 -0
  462. package/src/adapters/freecad/check.yaml +7 -0
  463. package/src/adapters/freecad/convert.yaml +7 -0
  464. package/src/adapters/freecad/export-stl.yaml +7 -0
  465. package/src/adapters/freecad/import.yaml +7 -0
  466. package/src/adapters/freecad/info.yaml +7 -0
  467. package/src/adapters/freecad/macro.yaml +7 -0
  468. package/src/adapters/freecad/measure.yaml +7 -0
  469. package/src/adapters/freecad/mesh.yaml +7 -0
  470. package/src/adapters/freecad/properties.yaml +7 -0
  471. package/src/adapters/freecad/render.yaml +7 -0
  472. package/src/adapters/freecad/section.yaml +7 -0
  473. package/src/adapters/freecad/sketch.yaml +7 -0
  474. package/src/adapters/futu/hot.yaml +7 -0
  475. package/src/adapters/futu/quote.yaml +7 -0
  476. package/src/adapters/gcloud/projects.yaml +7 -0
  477. package/src/adapters/gemini/ask.yaml +7 -0
  478. package/src/adapters/gemini/deep-research-result.yaml +7 -0
  479. package/src/adapters/gemini/deep-research.yaml +7 -0
  480. package/src/adapters/gemini/image.yaml +7 -0
  481. package/src/adapters/gemini/new.yaml +7 -0
  482. package/src/adapters/gh/issue.yaml +7 -0
  483. package/src/adapters/gh/pr.yaml +7 -0
  484. package/src/adapters/gh/release.yaml +7 -0
  485. package/src/adapters/gh/repo.yaml +7 -0
  486. package/src/adapters/gh/run.yaml +7 -0
  487. package/src/adapters/gimp/adjust.yaml +7 -0
  488. package/src/adapters/gimp/batch.yaml +7 -0
  489. package/src/adapters/gimp/convert.yaml +7 -0
  490. package/src/adapters/gimp/crop.yaml +7 -0
  491. package/src/adapters/gimp/filter.yaml +7 -0
  492. package/src/adapters/gimp/flip.yaml +7 -0
  493. package/src/adapters/gimp/info.yaml +7 -0
  494. package/src/adapters/gimp/layers.yaml +7 -0
  495. package/src/adapters/gimp/merge-layers.yaml +7 -0
  496. package/src/adapters/gimp/resize.yaml +7 -0
  497. package/src/adapters/gimp/rotate.yaml +7 -0
  498. package/src/adapters/gimp/text.yaml +7 -0
  499. package/src/adapters/gitee/repos.yaml +7 -0
  500. package/src/adapters/gitee/search.yaml +7 -0
  501. package/src/adapters/gitee/trending.yaml +7 -0
  502. package/src/adapters/github-trending/daily.yaml +7 -0
  503. package/src/adapters/github-trending/developers.yaml +7 -0
  504. package/src/adapters/github-trending/weekly.yaml +7 -0
  505. package/src/adapters/gitlab/projects.yaml +7 -0
  506. package/src/adapters/gitlab/search.yaml +7 -0
  507. package/src/adapters/gitlab/trending.yaml +7 -0
  508. package/src/adapters/godot/project-run.yaml +7 -0
  509. package/src/adapters/godot/scene-export.yaml +7 -0
  510. package/src/adapters/google/news.yaml +7 -0
  511. package/src/adapters/google/search.yaml +7 -0
  512. package/src/adapters/google/suggest.yaml +7 -0
  513. package/src/adapters/google/trends.yaml +7 -0
  514. package/src/adapters/grok/ask.yaml +7 -0
  515. package/src/adapters/hackernews/ask.yaml +7 -0
  516. package/src/adapters/hackernews/best.yaml +7 -0
  517. package/src/adapters/hackernews/comments.yaml +7 -0
  518. package/src/adapters/hackernews/item.yaml +7 -0
  519. package/src/adapters/hackernews/jobs.yaml +7 -0
  520. package/src/adapters/hackernews/new.yaml +7 -0
  521. package/src/adapters/hackernews/search.yaml +7 -0
  522. package/src/adapters/hackernews/show.yaml +7 -0
  523. package/src/adapters/hackernews/top.yaml +7 -0
  524. package/src/adapters/hackernews/user.yaml +7 -0
  525. package/src/adapters/hermes/sessions-search.yaml +7 -0
  526. package/src/adapters/hermes/skills-list.yaml +7 -0
  527. package/src/adapters/hermes/skills-read.yaml +7 -0
  528. package/src/adapters/hf/datasets.yaml +7 -0
  529. package/src/adapters/hf/models.yaml +7 -0
  530. package/src/adapters/hf/spaces.yaml +7 -0
  531. package/src/adapters/hf/top.yaml +7 -0
  532. package/src/adapters/homebrew/info.yaml +7 -0
  533. package/src/adapters/homebrew/search.yaml +7 -0
  534. package/src/adapters/huggingface-papers/daily.yaml +7 -0
  535. package/src/adapters/huggingface-papers/search.yaml +7 -0
  536. package/src/adapters/hupu/detail.yaml +7 -0
  537. package/src/adapters/hupu/hot.yaml +7 -0
  538. package/src/adapters/hupu/like.yaml +7 -0
  539. package/src/adapters/hupu/mentions.yaml +7 -0
  540. package/src/adapters/hupu/reply.yaml +7 -0
  541. package/src/adapters/hupu/search.yaml +7 -0
  542. package/src/adapters/hupu/unlike.yaml +7 -0
  543. package/src/adapters/imagemagick/compare.yaml +7 -0
  544. package/src/adapters/imagemagick/composite.yaml +7 -0
  545. package/src/adapters/imagemagick/convert.yaml +7 -0
  546. package/src/adapters/imagemagick/identify.yaml +7 -0
  547. package/src/adapters/imagemagick/montage.yaml +7 -0
  548. package/src/adapters/imagemagick/resize.yaml +7 -0
  549. package/src/adapters/imdb/box-office.yaml +7 -0
  550. package/src/adapters/imdb/person.yaml +7 -0
  551. package/src/adapters/imdb/reviews.yaml +7 -0
  552. package/src/adapters/imdb/search.yaml +7 -0
  553. package/src/adapters/imdb/title.yaml +7 -0
  554. package/src/adapters/imdb/top.yaml +7 -0
  555. package/src/adapters/imdb/trending.yaml +7 -0
  556. package/src/adapters/imessage/contact.yaml +73 -0
  557. package/src/adapters/imessage/recent.yaml +66 -0
  558. package/src/adapters/imessage/search.yaml +75 -0
  559. package/src/adapters/infoq/articles.yaml +7 -0
  560. package/src/adapters/infoq/latest.yaml +7 -0
  561. package/src/adapters/inkscape/convert.yaml +7 -0
  562. package/src/adapters/inkscape/export.yaml +7 -0
  563. package/src/adapters/inkscape/optimize.yaml +7 -0
  564. package/src/adapters/instagram/activity.yaml +7 -0
  565. package/src/adapters/instagram/comment.yaml +7 -0
  566. package/src/adapters/instagram/explore.yaml +7 -0
  567. package/src/adapters/instagram/follow.yaml +7 -0
  568. package/src/adapters/instagram/followers.yaml +7 -0
  569. package/src/adapters/instagram/following.yaml +7 -0
  570. package/src/adapters/instagram/highlights.yaml +7 -0
  571. package/src/adapters/instagram/like.yaml +7 -0
  572. package/src/adapters/instagram/profile.yaml +7 -0
  573. package/src/adapters/instagram/reels-trending.yaml +7 -0
  574. package/src/adapters/instagram/reels.yaml +7 -0
  575. package/src/adapters/instagram/save.yaml +7 -0
  576. package/src/adapters/instagram/saved.yaml +7 -0
  577. package/src/adapters/instagram/search.yaml +7 -0
  578. package/src/adapters/instagram/stories.yaml +7 -0
  579. package/src/adapters/instagram/suggested.yaml +7 -0
  580. package/src/adapters/instagram/tags.yaml +7 -0
  581. package/src/adapters/instagram/unfollow.yaml +7 -0
  582. package/src/adapters/instagram/unlike.yaml +7 -0
  583. package/src/adapters/instagram/unsave.yaml +7 -0
  584. package/src/adapters/instagram/user.yaml +7 -0
  585. package/src/adapters/ip-info/lookup.yaml +7 -0
  586. package/src/adapters/itch-io/popular.yaml +7 -0
  587. package/src/adapters/itch-io/search.yaml +7 -0
  588. package/src/adapters/itch-io/top.yaml +7 -0
  589. package/src/adapters/ithome/hot.yaml +7 -0
  590. package/src/adapters/ithome/latest.yaml +7 -0
  591. package/src/adapters/ithome/news.yaml +7 -0
  592. package/src/adapters/jd/_site.json +9 -0
  593. package/src/adapters/jd/hot.yaml +7 -0
  594. package/src/adapters/jd/item.yaml +7 -0
  595. package/src/adapters/jd/search.yaml +7 -0
  596. package/src/adapters/jianyu/search.yaml +7 -0
  597. package/src/adapters/jike/feed.yaml +7 -0
  598. package/src/adapters/jike/notifications.yaml +7 -0
  599. package/src/adapters/jike/post.yaml +7 -0
  600. package/src/adapters/jike/search.yaml +7 -0
  601. package/src/adapters/jike/topic.yaml +7 -0
  602. package/src/adapters/jike/user.yaml +7 -0
  603. package/src/adapters/jimeng/generate.yaml +7 -0
  604. package/src/adapters/jimeng/history.yaml +7 -0
  605. package/src/adapters/jq/format.yaml +7 -0
  606. package/src/adapters/jq/query.yaml +7 -0
  607. package/src/adapters/kdenlive/effects.yaml +7 -0
  608. package/src/adapters/kdenlive/info.yaml +7 -0
  609. package/src/adapters/kdenlive/render.yaml +7 -0
  610. package/src/adapters/ke/ershoufang.yaml +7 -0
  611. package/src/adapters/ke/xiaoqu.yaml +7 -0
  612. package/src/adapters/krita/batch.yaml +7 -0
  613. package/src/adapters/krita/convert.yaml +7 -0
  614. package/src/adapters/krita/export.yaml +7 -0
  615. package/src/adapters/krita/info.yaml +7 -0
  616. package/src/adapters/kuaishou/hot.yaml +8 -0
  617. package/src/adapters/kuaishou/search.yaml +8 -0
  618. package/src/adapters/lark/version.yaml +7 -0
  619. package/src/adapters/lesswrong/comments.yaml +7 -0
  620. package/src/adapters/lesswrong/curated.yaml +7 -0
  621. package/src/adapters/lesswrong/frontpage.yaml +7 -0
  622. package/src/adapters/lesswrong/new.yaml +7 -0
  623. package/src/adapters/lesswrong/read.yaml +7 -0
  624. package/src/adapters/lesswrong/sequences.yaml +7 -0
  625. package/src/adapters/lesswrong/shortform.yaml +7 -0
  626. package/src/adapters/lesswrong/tag.yaml +7 -0
  627. package/src/adapters/lesswrong/tags.yaml +7 -0
  628. package/src/adapters/lesswrong/top-month.yaml +7 -0
  629. package/src/adapters/lesswrong/top-week.yaml +7 -0
  630. package/src/adapters/lesswrong/top-year.yaml +7 -0
  631. package/src/adapters/lesswrong/top.yaml +7 -0
  632. package/src/adapters/lesswrong/user-posts.yaml +7 -0
  633. package/src/adapters/lesswrong/user.yaml +7 -0
  634. package/src/adapters/libreoffice/convert.yaml +7 -0
  635. package/src/adapters/libreoffice/print.yaml +7 -0
  636. package/src/adapters/linear/issue-create.yaml +98 -0
  637. package/src/adapters/linear/issue-list.yaml +87 -0
  638. package/src/adapters/linear/issue-update.yaml +100 -0
  639. package/src/adapters/linkedin/_site.json +10 -0
  640. package/src/adapters/linkedin/jobs.yaml +7 -0
  641. package/src/adapters/linkedin/profile.yaml +7 -0
  642. package/src/adapters/linkedin/search.yaml +7 -0
  643. package/src/adapters/linkedin/timeline.yaml +7 -0
  644. package/src/adapters/linux-do/categories.yaml +7 -0
  645. package/src/adapters/linux-do/category.yaml +7 -0
  646. package/src/adapters/linux-do/feed.yaml +7 -0
  647. package/src/adapters/linux-do/hot.yaml +7 -0
  648. package/src/adapters/linux-do/latest.yaml +7 -0
  649. package/src/adapters/linux-do/search.yaml +7 -0
  650. package/src/adapters/linux-do/tags.yaml +7 -0
  651. package/src/adapters/linux-do/topic.yaml +7 -0
  652. package/src/adapters/linux-do/user-posts.yaml +7 -0
  653. package/src/adapters/linux-do/user-topics.yaml +7 -0
  654. package/src/adapters/lobsters/active.yaml +7 -0
  655. package/src/adapters/lobsters/hot.yaml +7 -0
  656. package/src/adapters/lobsters/newest.yaml +7 -0
  657. package/src/adapters/lobsters/search.yaml +7 -0
  658. package/src/adapters/lobsters/tag.yaml +7 -0
  659. package/src/adapters/macos/active-app.yaml +7 -0
  660. package/src/adapters/macos/apps-list.yaml +7 -0
  661. package/src/adapters/macos/apps.yaml +7 -0
  662. package/src/adapters/macos/battery.yaml +7 -0
  663. package/src/adapters/macos/bluetooth.yaml +7 -0
  664. package/src/adapters/macos/brightness.yaml +7 -0
  665. package/src/adapters/macos/caffeinate.yaml +7 -0
  666. package/src/adapters/macos/calendar-create.yaml +7 -0
  667. package/src/adapters/macos/calendar-list.yaml +7 -0
  668. package/src/adapters/macos/calendar-today.yaml +7 -0
  669. package/src/adapters/macos/clipboard.yaml +7 -0
  670. package/src/adapters/macos/contacts-search.yaml +7 -0
  671. package/src/adapters/macos/dark-mode.yaml +7 -0
  672. package/src/adapters/macos/disk-info.yaml +7 -0
  673. package/src/adapters/macos/disk-usage.yaml +7 -0
  674. package/src/adapters/macos/do-not-disturb.yaml +7 -0
  675. package/src/adapters/macos/empty-trash.yaml +7 -0
  676. package/src/adapters/macos/finder-copy.yaml +47 -0
  677. package/src/adapters/macos/finder-move.yaml +47 -0
  678. package/src/adapters/macos/finder-new-folder.yaml +43 -0
  679. package/src/adapters/macos/finder-recent.yaml +7 -0
  680. package/src/adapters/macos/finder-selection.yaml +7 -0
  681. package/src/adapters/macos/finder-tags.yaml +7 -0
  682. package/src/adapters/macos/lock-screen.yaml +7 -0
  683. package/src/adapters/macos/mail-send.yaml +7 -0
  684. package/src/adapters/macos/mail-status.yaml +7 -0
  685. package/src/adapters/macos/messages-send.yaml +7 -0
  686. package/src/adapters/macos/music-control.yaml +7 -0
  687. package/src/adapters/macos/music-now.yaml +7 -0
  688. package/src/adapters/macos/notes-list.yaml +7 -0
  689. package/src/adapters/macos/notes-search.yaml +7 -0
  690. package/src/adapters/macos/notification.yaml +7 -0
  691. package/src/adapters/macos/notify.yaml +7 -0
  692. package/src/adapters/macos/open-app.yaml +7 -0
  693. package/src/adapters/macos/open.yaml +7 -0
  694. package/src/adapters/macos/photos-search.yaml +7 -0
  695. package/src/adapters/macos/processes.yaml +7 -0
  696. package/src/adapters/macos/reminder-create.yaml +7 -0
  697. package/src/adapters/macos/reminders-complete.yaml +7 -0
  698. package/src/adapters/macos/reminders-list.yaml +7 -0
  699. package/src/adapters/macos/safari-history.yaml +30 -0
  700. package/src/adapters/macos/safari-tabs.yaml +7 -0
  701. package/src/adapters/macos/safari-url.yaml +29 -0
  702. package/src/adapters/macos/say.yaml +7 -0
  703. package/src/adapters/macos/screen-lock.yaml +7 -0
  704. package/src/adapters/macos/screen-recording.yaml +39 -0
  705. package/src/adapters/macos/screenshot.yaml +7 -0
  706. package/src/adapters/macos/shortcuts-list.yaml +7 -0
  707. package/src/adapters/macos/shortcuts-run.yaml +7 -0
  708. package/src/adapters/macos/sleep.yaml +7 -0
  709. package/src/adapters/macos/spotlight.yaml +7 -0
  710. package/src/adapters/macos/system-info.yaml +7 -0
  711. package/src/adapters/macos/trash.yaml +7 -0
  712. package/src/adapters/macos/uptime.yaml +7 -0
  713. package/src/adapters/macos/volume.yaml +7 -0
  714. package/src/adapters/macos/wallpaper.yaml +40 -0
  715. package/src/adapters/macos/wifi-info.yaml +7 -0
  716. package/src/adapters/macos/wifi.yaml +7 -0
  717. package/src/adapters/maimai/search.yaml +7 -0
  718. package/src/adapters/maoyan/hot.yaml +7 -0
  719. package/src/adapters/maoyan/search.yaml +7 -0
  720. package/src/adapters/mastodon/search.yaml +7 -0
  721. package/src/adapters/mastodon/timeline.yaml +7 -0
  722. package/src/adapters/mastodon/trending.yaml +7 -0
  723. package/src/adapters/mastodon/user.yaml +7 -0
  724. package/src/adapters/medium/article.yaml +7 -0
  725. package/src/adapters/medium/feed.yaml +7 -0
  726. package/src/adapters/medium/search.yaml +7 -0
  727. package/src/adapters/medium/trending.yaml +7 -0
  728. package/src/adapters/medium/user.yaml +7 -0
  729. package/src/adapters/meituan/hot.yaml +7 -0
  730. package/src/adapters/meituan/search.yaml +7 -0
  731. package/src/adapters/mermaid/render.yaml +7 -0
  732. package/src/adapters/minimax/chat.yaml +7 -0
  733. package/src/adapters/minimax/models.yaml +7 -0
  734. package/src/adapters/minimax/tts.yaml +7 -0
  735. package/src/adapters/motion-studio/component-get.yaml +7 -0
  736. package/src/adapters/mubu/list.yaml +7 -0
  737. package/src/adapters/mubu/search.yaml +14 -0
  738. package/src/adapters/musescore/convert.yaml +7 -0
  739. package/src/adapters/musescore/export.yaml +7 -0
  740. package/src/adapters/musescore/info.yaml +7 -0
  741. package/src/adapters/musescore/instruments.yaml +7 -0
  742. package/src/adapters/musescore/transpose.yaml +7 -0
  743. package/src/adapters/neonctl/projects.yaml +7 -0
  744. package/src/adapters/netease-music/hot.yaml +7 -0
  745. package/src/adapters/netease-music/playlist.yaml +7 -0
  746. package/src/adapters/netease-music/search.yaml +7 -0
  747. package/src/adapters/netease-music/top.yaml +7 -0
  748. package/src/adapters/netlify/sites.yaml +7 -0
  749. package/src/adapters/notebooklm/current.yaml +7 -0
  750. package/src/adapters/notebooklm/get.yaml +7 -0
  751. package/src/adapters/notebooklm/history.yaml +7 -0
  752. package/src/adapters/notebooklm/list.yaml +7 -0
  753. package/src/adapters/notebooklm/note-list.yaml +7 -0
  754. package/src/adapters/notebooklm/notes-get.yaml +7 -0
  755. package/src/adapters/notebooklm/open.yaml +7 -0
  756. package/src/adapters/notebooklm/rpc.yaml +7 -0
  757. package/src/adapters/notebooklm/shared.yaml +7 -0
  758. package/src/adapters/notebooklm/source-fulltext.yaml +7 -0
  759. package/src/adapters/notebooklm/source-get.yaml +7 -0
  760. package/src/adapters/notebooklm/source-guide.yaml +7 -0
  761. package/src/adapters/notebooklm/source-list.yaml +7 -0
  762. package/src/adapters/notebooklm/status.yaml +7 -0
  763. package/src/adapters/notebooklm/summary.yaml +7 -0
  764. package/src/adapters/notion/databases.yaml +7 -0
  765. package/src/adapters/notion/pages.yaml +7 -0
  766. package/src/adapters/notion/search.yaml +7 -0
  767. package/src/adapters/novita/generate.yaml +7 -0
  768. package/src/adapters/novita/models.yaml +7 -0
  769. package/src/adapters/novita/status.yaml +7 -0
  770. package/src/adapters/npm/downloads.yaml +7 -0
  771. package/src/adapters/npm/info.yaml +7 -0
  772. package/src/adapters/npm/search.yaml +7 -0
  773. package/src/adapters/npm/versions.yaml +7 -0
  774. package/src/adapters/npm-trends/compare.yaml +7 -0
  775. package/src/adapters/npm-trends/trending.yaml +7 -0
  776. package/src/adapters/nytimes/search.yaml +7 -0
  777. package/src/adapters/nytimes/top.yaml +7 -0
  778. package/src/adapters/obs/record-start.yaml +7 -0
  779. package/src/adapters/obs/record-stop.yaml +7 -0
  780. package/src/adapters/obs/scenes.yaml +7 -0
  781. package/src/adapters/obs/screenshot.yaml +7 -0
  782. package/src/adapters/obs/sources.yaml +7 -0
  783. package/src/adapters/obs/status.yaml +7 -0
  784. package/src/adapters/obs/stream-start.yaml +7 -0
  785. package/src/adapters/obs/stream-stop.yaml +7 -0
  786. package/src/adapters/obsidian/daily.yaml +7 -0
  787. package/src/adapters/obsidian/open.yaml +7 -0
  788. package/src/adapters/obsidian/search.yaml +7 -0
  789. package/src/adapters/ollama/generate.yaml +7 -0
  790. package/src/adapters/ollama/list.yaml +7 -0
  791. package/src/adapters/ollama/models.yaml +7 -0
  792. package/src/adapters/ollama/ps.yaml +7 -0
  793. package/src/adapters/ones/enrich-tasks.yaml +7 -0
  794. package/src/adapters/ones/login.yaml +7 -0
  795. package/src/adapters/ones/logout.yaml +7 -0
  796. package/src/adapters/ones/me.yaml +7 -0
  797. package/src/adapters/ones/my-tasks.yaml +7 -0
  798. package/src/adapters/ones/resolve-labels.yaml +7 -0
  799. package/src/adapters/ones/task-helpers.yaml +7 -0
  800. package/src/adapters/ones/task.yaml +7 -0
  801. package/src/adapters/ones/tasks.yaml +7 -0
  802. package/src/adapters/ones/token-info.yaml +7 -0
  803. package/src/adapters/ones/worklog.yaml +7 -0
  804. package/src/adapters/opencode/version.yaml +7 -0
  805. package/src/adapters/openharness/memory-read.yaml +7 -0
  806. package/src/adapters/openharness/skills-list.yaml +7 -0
  807. package/src/adapters/openrouter/models.yaml +7 -0
  808. package/src/adapters/openrouter/search.yaml +7 -0
  809. package/src/adapters/pandoc/convert.yaml +7 -0
  810. package/src/adapters/paperreview/feedback.yaml +7 -0
  811. package/src/adapters/paperreview/review.yaml +7 -0
  812. package/src/adapters/paperreview/submit.yaml +7 -0
  813. package/src/adapters/perplexity/ask.yaml +7 -0
  814. package/src/adapters/pexels/curated.yaml +7 -0
  815. package/src/adapters/pexels/search.yaml +7 -0
  816. package/src/adapters/pinduoduo/hot.yaml +7 -0
  817. package/src/adapters/pinduoduo/search.yaml +7 -0
  818. package/src/adapters/pixiv/detail.yaml +7 -0
  819. package/src/adapters/pixiv/download.yaml +7 -0
  820. package/src/adapters/pixiv/illusts.yaml +7 -0
  821. package/src/adapters/pixiv/ranking.yaml +7 -0
  822. package/src/adapters/pixiv/search.yaml +7 -0
  823. package/src/adapters/pixiv/user.yaml +7 -0
  824. package/src/adapters/producthunt/browse.yaml +7 -0
  825. package/src/adapters/producthunt/hot.yaml +7 -0
  826. package/src/adapters/producthunt/posts.yaml +7 -0
  827. package/src/adapters/producthunt/search.yaml +7 -0
  828. package/src/adapters/producthunt/today.yaml +7 -0
  829. package/src/adapters/pscale/databases.yaml +7 -0
  830. package/src/adapters/pypi/info.yaml +7 -0
  831. package/src/adapters/pypi/search.yaml +7 -0
  832. package/src/adapters/pypi/versions.yaml +7 -0
  833. package/src/adapters/quark/ls.yaml +7 -0
  834. package/src/adapters/quark/search.yaml +7 -0
  835. package/src/adapters/qweather/forecast.yaml +7 -0
  836. package/src/adapters/qweather/now.yaml +7 -0
  837. package/src/adapters/railway/deploy.yaml +7 -0
  838. package/src/adapters/reddit/comment.yaml +7 -0
  839. package/src/adapters/reddit/comments.yaml +7 -0
  840. package/src/adapters/reddit/frontpage.yaml +7 -0
  841. package/src/adapters/reddit/hot.yaml +7 -0
  842. package/src/adapters/reddit/new.yaml +7 -0
  843. package/src/adapters/reddit/popular.yaml +7 -0
  844. package/src/adapters/reddit/read.yaml +7 -0
  845. package/src/adapters/reddit/rising.yaml +7 -0
  846. package/src/adapters/reddit/save.yaml +7 -0
  847. package/src/adapters/reddit/saved.yaml +7 -0
  848. package/src/adapters/reddit/search.yaml +7 -0
  849. package/src/adapters/reddit/subreddit.yaml +7 -0
  850. package/src/adapters/reddit/subscribe.yaml +7 -0
  851. package/src/adapters/reddit/top.yaml +7 -0
  852. package/src/adapters/reddit/trending.yaml +7 -0
  853. package/src/adapters/reddit/upvote.yaml +7 -0
  854. package/src/adapters/reddit/upvoted.yaml +7 -0
  855. package/src/adapters/reddit/user-comments.yaml +7 -0
  856. package/src/adapters/reddit/user-posts.yaml +7 -0
  857. package/src/adapters/reddit/user.yaml +7 -0
  858. package/src/adapters/renderdoc/capture-list.yaml +7 -0
  859. package/src/adapters/renderdoc/frame-export.yaml +7 -0
  860. package/src/adapters/replicate/run.yaml +7 -0
  861. package/src/adapters/replicate/search.yaml +7 -0
  862. package/src/adapters/replicate/trending.yaml +7 -0
  863. package/src/adapters/reuters/_site.json +9 -0
  864. package/src/adapters/reuters/article.yaml +7 -0
  865. package/src/adapters/reuters/latest.yaml +7 -0
  866. package/src/adapters/reuters/search.yaml +7 -0
  867. package/src/adapters/reuters/top.yaml +7 -0
  868. package/src/adapters/shotcut/effects.yaml +7 -0
  869. package/src/adapters/shotcut/info.yaml +7 -0
  870. package/src/adapters/shotcut/render.yaml +7 -0
  871. package/src/adapters/sinablog/_site.json +9 -0
  872. package/src/adapters/sinablog/article.yaml +7 -0
  873. package/src/adapters/sinablog/hot.yaml +7 -0
  874. package/src/adapters/sinablog/search.yaml +7 -0
  875. package/src/adapters/sinablog/user.yaml +7 -0
  876. package/src/adapters/sinafinance/market.yaml +7 -0
  877. package/src/adapters/sinafinance/news.yaml +7 -0
  878. package/src/adapters/sinafinance/rolling-news.yaml +7 -0
  879. package/src/adapters/sinafinance/stock-rank.yaml +7 -0
  880. package/src/adapters/sinafinance/stock.yaml +7 -0
  881. package/src/adapters/sketch/artboards.yaml +7 -0
  882. package/src/adapters/sketch/export.yaml +7 -0
  883. package/src/adapters/sketch/symbols.yaml +7 -0
  884. package/src/adapters/slack/channels.yaml +7 -0
  885. package/src/adapters/slack/messages.yaml +7 -0
  886. package/src/adapters/slack/post.yaml +7 -0
  887. package/src/adapters/slack/search.yaml +7 -0
  888. package/src/adapters/slack/send.yaml +7 -0
  889. package/src/adapters/slack/status.yaml +7 -0
  890. package/src/adapters/slack/users.yaml +7 -0
  891. package/src/adapters/slay-the-spire-ii/deck.yaml +7 -0
  892. package/src/adapters/slay-the-spire-ii/end-turn.yaml +7 -0
  893. package/src/adapters/slay-the-spire-ii/map.yaml +7 -0
  894. package/src/adapters/slay-the-spire-ii/play-card.yaml +7 -0
  895. package/src/adapters/slay-the-spire-ii/status.yaml +7 -0
  896. package/src/adapters/slay-the-spire-ii/use-potion.yaml +7 -0
  897. package/src/adapters/slock/servers.yaml +7 -0
  898. package/src/adapters/smzdm/_site.json +9 -0
  899. package/src/adapters/smzdm/article.yaml +7 -0
  900. package/src/adapters/smzdm/hot.yaml +7 -0
  901. package/src/adapters/smzdm/search.yaml +7 -0
  902. package/src/adapters/spotify/now-playing.yaml +7 -0
  903. package/src/adapters/spotify/playlists.yaml +7 -0
  904. package/src/adapters/spotify/search.yaml +7 -0
  905. package/src/adapters/spotify/top-tracks.yaml +7 -0
  906. package/src/adapters/sspai/hot.yaml +7 -0
  907. package/src/adapters/sspai/latest.yaml +7 -0
  908. package/src/adapters/stackoverflow/bounties.yaml +7 -0
  909. package/src/adapters/stackoverflow/hot.yaml +7 -0
  910. package/src/adapters/stackoverflow/question.yaml +7 -0
  911. package/src/adapters/stackoverflow/search.yaml +7 -0
  912. package/src/adapters/stackoverflow/tags.yaml +7 -0
  913. package/src/adapters/stackoverflow/unanswered.yaml +7 -0
  914. package/src/adapters/stagehand/wrap-observe.yaml +7 -0
  915. package/src/adapters/steam/app-details.yaml +7 -0
  916. package/src/adapters/steam/new-releases.yaml +7 -0
  917. package/src/adapters/steam/search.yaml +7 -0
  918. package/src/adapters/steam/specials.yaml +7 -0
  919. package/src/adapters/steam/top-sellers.yaml +7 -0
  920. package/src/adapters/steam/wishlist.yaml +7 -0
  921. package/src/adapters/substack/feed.yaml +7 -0
  922. package/src/adapters/substack/publication.yaml +7 -0
  923. package/src/adapters/substack/search.yaml +7 -0
  924. package/src/adapters/substack/trending.yaml +7 -0
  925. package/src/adapters/supabase/projects.yaml +7 -0
  926. package/src/adapters/taobao/hot.yaml +7 -0
  927. package/src/adapters/taobao/search.yaml +7 -0
  928. package/src/adapters/techcrunch/latest.yaml +7 -0
  929. package/src/adapters/techcrunch/search.yaml +7 -0
  930. package/src/adapters/theverge/latest.yaml +7 -0
  931. package/src/adapters/theverge/search.yaml +7 -0
  932. package/src/adapters/threads/hot.yaml +8 -0
  933. package/src/adapters/threads/search.yaml +8 -0
  934. package/src/adapters/tieba/hot.yaml +7 -0
  935. package/src/adapters/tieba/posts.yaml +7 -0
  936. package/src/adapters/tieba/read.yaml +7 -0
  937. package/src/adapters/tieba/search.yaml +7 -0
  938. package/src/adapters/tiktok/comment.yaml +7 -0
  939. package/src/adapters/tiktok/explore.yaml +7 -0
  940. package/src/adapters/tiktok/follow.yaml +7 -0
  941. package/src/adapters/tiktok/following.yaml +7 -0
  942. package/src/adapters/tiktok/friends.yaml +7 -0
  943. package/src/adapters/tiktok/like.yaml +7 -0
  944. package/src/adapters/tiktok/live.yaml +7 -0
  945. package/src/adapters/tiktok/notifications.yaml +7 -0
  946. package/src/adapters/tiktok/profile.yaml +7 -0
  947. package/src/adapters/tiktok/save.yaml +7 -0
  948. package/src/adapters/tiktok/search.yaml +7 -0
  949. package/src/adapters/tiktok/trending.yaml +7 -0
  950. package/src/adapters/tiktok/unfollow.yaml +7 -0
  951. package/src/adapters/tiktok/unlike.yaml +7 -0
  952. package/src/adapters/tiktok/unsave.yaml +7 -0
  953. package/src/adapters/tiktok/user.yaml +7 -0
  954. package/src/adapters/toutiao/hot.yaml +7 -0
  955. package/src/adapters/toutiao/search.yaml +8 -0
  956. package/src/adapters/twitch/games.yaml +7 -0
  957. package/src/adapters/twitch/search.yaml +7 -0
  958. package/src/adapters/twitch/streams.yaml +7 -0
  959. package/src/adapters/twitch/top.yaml +7 -0
  960. package/src/adapters/twitter/lists.yaml +7 -0
  961. package/src/adapters/twitter/media.yaml +7 -0
  962. package/src/adapters/twitter/mentions.yaml +7 -0
  963. package/src/adapters/twitter/mute.yaml +7 -0
  964. package/src/adapters/twitter/pin.yaml +7 -0
  965. package/src/adapters/twitter/quotes.yaml +7 -0
  966. package/src/adapters/twitter/retweets.yaml +7 -0
  967. package/src/adapters/twitter/spaces.yaml +7 -0
  968. package/src/adapters/twitter/unmute.yaml +7 -0
  969. package/src/adapters/unsplash/random.yaml +7 -0
  970. package/src/adapters/unsplash/search.yaml +7 -0
  971. package/src/adapters/v2ex/daily.yaml +7 -0
  972. package/src/adapters/v2ex/hot.yaml +7 -0
  973. package/src/adapters/v2ex/latest.yaml +7 -0
  974. package/src/adapters/v2ex/me.yaml +7 -0
  975. package/src/adapters/v2ex/member.yaml +7 -0
  976. package/src/adapters/v2ex/node.yaml +7 -0
  977. package/src/adapters/v2ex/nodes.yaml +7 -0
  978. package/src/adapters/v2ex/notifications.yaml +7 -0
  979. package/src/adapters/v2ex/replies.yaml +7 -0
  980. package/src/adapters/v2ex/search.yaml +7 -0
  981. package/src/adapters/v2ex/topic.yaml +7 -0
  982. package/src/adapters/v2ex/user.yaml +7 -0
  983. package/src/adapters/vercel/list.yaml +7 -0
  984. package/src/adapters/vscode/extensions.yaml +7 -0
  985. package/src/adapters/vscode/install-ext.yaml +7 -0
  986. package/src/adapters/vscode/open.yaml +7 -0
  987. package/src/adapters/web/read.yaml +7 -0
  988. package/src/adapters/wechat-channels/hot.yaml +8 -0
  989. package/src/adapters/wechat-channels/search.yaml +15 -0
  990. package/src/adapters/weibo/comments.yaml +7 -0
  991. package/src/adapters/weibo/feed.yaml +7 -0
  992. package/src/adapters/weibo/hot.yaml +7 -0
  993. package/src/adapters/weibo/me.yaml +7 -0
  994. package/src/adapters/weibo/post.yaml +7 -0
  995. package/src/adapters/weibo/profile.yaml +7 -0
  996. package/src/adapters/weibo/search.yaml +7 -0
  997. package/src/adapters/weibo/timeline.yaml +7 -0
  998. package/src/adapters/weibo/trending.yaml +7 -0
  999. package/src/adapters/weibo/user.yaml +7 -0
  1000. package/src/adapters/weixin/_site.json +9 -0
  1001. package/src/adapters/weixin/article.yaml +7 -0
  1002. package/src/adapters/weixin/download.yaml +7 -0
  1003. package/src/adapters/weixin/hot.yaml +7 -0
  1004. package/src/adapters/weixin/search.yaml +7 -0
  1005. package/src/adapters/weread/book.yaml +7 -0
  1006. package/src/adapters/weread/highlights.yaml +7 -0
  1007. package/src/adapters/weread/notebooks.yaml +7 -0
  1008. package/src/adapters/weread/notes.yaml +7 -0
  1009. package/src/adapters/weread/ranking.yaml +7 -0
  1010. package/src/adapters/weread/search.yaml +7 -0
  1011. package/src/adapters/weread/shelf.yaml +7 -0
  1012. package/src/adapters/wikipedia/random.yaml +7 -0
  1013. package/src/adapters/wikipedia/search.yaml +7 -0
  1014. package/src/adapters/wikipedia/summary.yaml +7 -0
  1015. package/src/adapters/wikipedia/today.yaml +7 -0
  1016. package/src/adapters/wikipedia/trending.yaml +7 -0
  1017. package/src/adapters/wiremock/create-stub.yaml +7 -0
  1018. package/src/adapters/wiremock/delete-stub.yaml +7 -0
  1019. package/src/adapters/wiremock/reset.yaml +7 -0
  1020. package/src/adapters/wiremock/stubs.yaml +7 -0
  1021. package/src/adapters/wiremock/verify.yaml +7 -0
  1022. package/src/adapters/wrangler/list.yaml +7 -0
  1023. package/src/adapters/xianyu/chat.yaml +7 -0
  1024. package/src/adapters/xianyu/item.yaml +7 -0
  1025. package/src/adapters/xianyu/search.yaml +8 -0
  1026. package/src/adapters/xiaoe/catalog.yaml +7 -0
  1027. package/src/adapters/xiaoe/content.yaml +7 -0
  1028. package/src/adapters/xiaoe/courses.yaml +7 -0
  1029. package/src/adapters/xiaoe/detail.yaml +7 -0
  1030. package/src/adapters/xiaoe/play-url.yaml +7 -0
  1031. package/src/adapters/xiaohongshu/feed.yaml +7 -0
  1032. package/src/adapters/xiaohongshu/follow.yaml +7 -0
  1033. package/src/adapters/xiaohongshu/hashtag.yaml +7 -0
  1034. package/src/adapters/xiaohongshu/hot.yaml +7 -0
  1035. package/src/adapters/xiaohongshu/like.yaml +7 -0
  1036. package/src/adapters/xiaohongshu/notifications.yaml +7 -0
  1037. package/src/adapters/xiaohongshu/profile.yaml +7 -0
  1038. package/src/adapters/xiaohongshu/save.yaml +7 -0
  1039. package/src/adapters/xiaohongshu/suggest.yaml +7 -0
  1040. package/src/adapters/xiaohongshu/trending.yaml +7 -0
  1041. package/src/adapters/xiaohongshu/unfollow.yaml +7 -0
  1042. package/src/adapters/xiaoyuzhou/episode.yaml +7 -0
  1043. package/src/adapters/xiaoyuzhou/podcast-episodes.yaml +7 -0
  1044. package/src/adapters/xiaoyuzhou/podcast.yaml +7 -0
  1045. package/src/adapters/xueqiu/comments.yaml +7 -0
  1046. package/src/adapters/xueqiu/earnings-date.yaml +7 -0
  1047. package/src/adapters/xueqiu/feed.yaml +7 -0
  1048. package/src/adapters/xueqiu/fund-holdings.yaml +7 -0
  1049. package/src/adapters/xueqiu/fund-snapshot.yaml +7 -0
  1050. package/src/adapters/xueqiu/hot-stock.yaml +7 -0
  1051. package/src/adapters/xueqiu/hot.yaml +7 -0
  1052. package/src/adapters/xueqiu/market.yaml +7 -0
  1053. package/src/adapters/xueqiu/quote.yaml +7 -0
  1054. package/src/adapters/xueqiu/search.yaml +7 -0
  1055. package/src/adapters/xueqiu/stock.yaml +7 -0
  1056. package/src/adapters/xueqiu/watchlist.yaml +7 -0
  1057. package/src/adapters/yahoo-finance/quote.yaml +7 -0
  1058. package/src/adapters/yahoo-finance/search.yaml +7 -0
  1059. package/src/adapters/yahoo-finance/trending.yaml +7 -0
  1060. package/src/adapters/ycombinator/launches.yaml +7 -0
  1061. package/src/adapters/yollomi/background.yaml +7 -0
  1062. package/src/adapters/yollomi/edit.yaml +7 -0
  1063. package/src/adapters/yollomi/face-swap.yaml +7 -0
  1064. package/src/adapters/yollomi/generate.yaml +7 -0
  1065. package/src/adapters/yollomi/models.yaml +7 -0
  1066. package/src/adapters/yollomi/object-remover.yaml +7 -0
  1067. package/src/adapters/yollomi/remove-bg.yaml +7 -0
  1068. package/src/adapters/yollomi/restore.yaml +7 -0
  1069. package/src/adapters/yollomi/try-on.yaml +7 -0
  1070. package/src/adapters/yollomi/upload.yaml +7 -0
  1071. package/src/adapters/yollomi/upscale.yaml +7 -0
  1072. package/src/adapters/yollomi/video.yaml +7 -0
  1073. package/src/adapters/youtube/playlist.yaml +7 -0
  1074. package/src/adapters/youtube/shorts.yaml +7 -0
  1075. package/src/adapters/youtube/trending.yaml +7 -0
  1076. package/src/adapters/yt-dlp/download.yaml +7 -0
  1077. package/src/adapters/yt-dlp/extract-audio.yaml +7 -0
  1078. package/src/adapters/yt-dlp/info.yaml +7 -0
  1079. package/src/adapters/yt-dlp/search.yaml +7 -0
  1080. package/src/adapters/yuanbao/ask.yaml +7 -0
  1081. package/src/adapters/yuanbao/new.yaml +7 -0
  1082. package/src/adapters/yuanbao/shared.yaml +7 -0
  1083. package/src/adapters/zhihu/answer.yaml +7 -0
  1084. package/src/adapters/zhihu/answers.yaml +7 -0
  1085. package/src/adapters/zhihu/article.yaml +7 -0
  1086. package/src/adapters/zhihu/articles.yaml +7 -0
  1087. package/src/adapters/zhihu/collections.yaml +7 -0
  1088. package/src/adapters/zhihu/columns.yaml +7 -0
  1089. package/src/adapters/zhihu/comment.yaml +7 -0
  1090. package/src/adapters/zhihu/download.yaml +7 -0
  1091. package/src/adapters/zhihu/feed.yaml +7 -0
  1092. package/src/adapters/zhihu/followers.yaml +7 -0
  1093. package/src/adapters/zhihu/following.yaml +7 -0
  1094. package/src/adapters/zhihu/hot.yaml +7 -0
  1095. package/src/adapters/zhihu/me.yaml +7 -0
  1096. package/src/adapters/zhihu/notifications.yaml +7 -0
  1097. package/src/adapters/zhihu/pins.yaml +7 -0
  1098. package/src/adapters/zhihu/question.yaml +7 -0
  1099. package/src/adapters/zhihu/search.yaml +7 -0
  1100. package/src/adapters/zhihu/topic.yaml +7 -0
  1101. package/src/adapters/zhihu/topics.yaml +7 -0
  1102. package/src/adapters/zhihu/trending.yaml +7 -0
  1103. package/src/adapters/zhihu/user.yaml +7 -0
  1104. package/src/adapters/zoom/join.yaml +7 -0
  1105. package/src/adapters/zoom/start.yaml +7 -0
  1106. package/src/adapters/zoom/toggle-mute.yaml +37 -0
  1107. package/src/adapters/zotero/add-note.yaml +7 -0
  1108. package/src/adapters/zotero/add-tag.yaml +7 -0
  1109. package/src/adapters/zotero/collections.yaml +7 -0
  1110. package/src/adapters/zotero/export.yaml +7 -0
  1111. package/src/adapters/zotero/items.yaml +7 -0
  1112. package/src/adapters/zotero/notes.yaml +7 -0
  1113. package/src/adapters/zotero/search.yaml +7 -0
  1114. package/src/adapters/zotero/tags.yaml +7 -0
  1115. package/src/adapters/zsxq/dynamics.yaml +7 -0
  1116. package/src/adapters/zsxq/groups.yaml +7 -0
  1117. package/src/adapters/zsxq/search.yaml +7 -0
  1118. package/src/adapters/zsxq/topic.yaml +7 -0
  1119. package/src/adapters/zsxq/topics.yaml +7 -0
  1120. package/src/adapters/1688/manifest.yaml +0 -7
  1121. package/src/adapters/barchart/manifest.yaml +0 -8
  1122. package/src/adapters/jd/manifest.yaml +0 -7
  1123. package/src/adapters/linkedin/manifest.yaml +0 -8
  1124. package/src/adapters/reuters/manifest.yaml +0 -7
  1125. package/src/adapters/sinablog/manifest.yaml +0 -7
  1126. package/src/adapters/smzdm/manifest.yaml +0 -7
  1127. package/src/adapters/weixin/manifest.yaml +0 -7
@@ -3,20 +3,19 @@
3
3
  * MCP (Model Context Protocol) server for Uni-CLI.
4
4
  *
5
5
  * Two registration modes:
6
- * 1. **Expanded (default)** — one tool per adapter command
6
+ * 1. **Smart default** — 3 tools: `unicli_run`, `unicli_list`,
7
+ * `unicli_discover`. Keeps the MCP handshake under 200 tokens.
8
+ * 2. **Expanded (`--expanded`)** — one tool per adapter command
7
9
  * (`unicli_<site>_<command>`) with JSON Schema derived from `args` +
8
- * `columns`. This is the production mode the v0.208 plan calls out:
9
- * MCP clients see the full Uni-CLI surface area without an extra
10
- * list_adapters → run_command roundtrip.
11
- * 2. **Lazy (`--lazy`)** — only `list_adapters` + `run_command` are
12
- * registered. Useful when an MCP client has a hard tool-count limit
13
- * or wants the smallest possible handshake.
10
+ * `columns`. MCP clients see the full Uni-CLI surface area.
14
11
  *
15
- * Two transports:
12
+ * Three transports:
16
13
  * - **stdio (default)** — newline-delimited JSON over stdin/stdout
17
14
  * - **http (`--transport http [--port 19826]`)** — POST /mcp accepts a
18
- * single JSON-RPC envelope and returns a single JSON response. No
19
- * SSE streaming yet additive in a future release.
15
+ * single JSON-RPC envelope and returns a single JSON response.
16
+ * - **sse (`--transport sse [--port 19826]`)** Streamable HTTP with
17
+ * Server-Sent Events. GET /mcp/sse opens the event stream, POST
18
+ * /mcp/message?sessionId=xxx delivers JSON-RPC requests.
20
19
  *
21
20
  * Auth pass-through is automatic: every adapter the CLI loads (including
22
21
  * cookie-based ones) is exposed by name; the runtime resolves cookies on
@@ -27,175 +26,145 @@ import { createServer, } from "node:http";
27
26
  import { loadAllAdapters, loadTsAdapters } from "../discovery/loader.js";
28
27
  import { getAllAdapters, listCommands, resolveCommand } from "../registry.js";
29
28
  import { runPipeline } from "../engine/yaml-runner.js";
30
- import { VERSION } from "../constants.js";
31
- // ── Lazy-mode core tools (preserved for `--lazy` flag) ──────────────────────
32
- function buildLazyTools() {
29
+ import { VERSION, MCP_PROTOCOL_VERSION } from "../constants.js";
30
+ // sse-transport.ts is deprecated (spec 2025-03-26). Kept for backwards compatibility.
31
+ // import { startSseServer } from "./sse-transport.js";
32
+ import { startStreamableHttp } from "./streamable-http.js";
33
+ import { handleOAuthRoute, createOAuthMiddleware } from "./oauth.js";
34
+ import { buildInputSchema, buildOutputSchema, buildToolName, truncateDescription, } from "./schema.js";
35
+ import { resolveElicitation } from "./elicitation.js";
36
+ // ── Smart default tools (4 meta-tools — the default mode) ─────────────────
37
+ const MAX_RESULT_SIZE_CHARS = 10_000;
38
+ function buildDefaultTools() {
33
39
  return [
34
40
  {
35
- name: "list_adapters",
36
- description: "List all available Uni-CLI adapters and their commands. " +
37
- "Use this to discover what sites and commands are available before calling run_command.",
41
+ name: "unicli_run",
42
+ description: "Execute any Uni-CLI command. Returns JSON results.",
38
43
  inputSchema: {
39
44
  type: "object",
40
45
  properties: {
41
46
  site: {
42
47
  type: "string",
43
- description: "Filter by site name (optional, partial match)",
48
+ description: "Site name (e.g. hackernews, github, bilibili)",
44
49
  },
45
- type: {
50
+ command: {
46
51
  type: "string",
47
- description: "Filter by adapter type: web-api, desktop, browser, bridge, service",
48
- enum: ["web-api", "desktop", "browser", "bridge", "service"],
52
+ description: "Command to run (e.g. top, search, hot)",
53
+ },
54
+ args: {
55
+ type: "object",
56
+ description: 'Key-value arguments (e.g. {"query": "ai", "limit": 10})',
57
+ additionalProperties: true,
49
58
  },
50
59
  },
60
+ required: ["site", "command"],
61
+ },
62
+ _meta: {
63
+ "anthropic/searchHint": "Execute CLI commands on 200+ websites and desktop apps. Run adapters by site and command name.",
64
+ },
65
+ annotations: {
66
+ readOnlyHint: false,
67
+ destructiveHint: false,
68
+ idempotentHint: false,
69
+ openWorldHint: true,
51
70
  },
52
71
  },
53
72
  {
54
- name: "run_command",
55
- description: "Execute a Uni-CLI adapter command. Equivalent to running `unicli <site> <command>` on the CLI. " +
56
- "Returns JSON results. Use list_adapters first to discover available commands.",
73
+ name: "unicli_list",
74
+ description: "List available commands. Filter by site or adapter type.",
57
75
  inputSchema: {
58
76
  type: "object",
59
77
  properties: {
60
78
  site: {
61
79
  type: "string",
62
- description: "The adapter site name (e.g. hackernews, github, bilibili)",
80
+ description: "Filter by site name (partial match)",
63
81
  },
64
- command: {
82
+ type: {
65
83
  type: "string",
66
- description: "The command to run (e.g. top, search, hot)",
67
- },
68
- args: {
69
- type: "object",
70
- description: 'Command arguments as key-value pairs (e.g. {"query": "ai", "limit": 10})',
71
- additionalProperties: true,
84
+ description: "Filter by adapter type",
85
+ enum: ["web-api", "desktop", "browser", "bridge", "service"],
72
86
  },
73
87
  },
74
- required: ["site", "command"],
88
+ },
89
+ _meta: {
90
+ "anthropic/searchHint": "Browse available Uni-CLI sites and commands. Filter by site name or adapter type.",
91
+ "anthropic/alwaysLoad": true,
92
+ },
93
+ annotations: {
94
+ readOnlyHint: true,
95
+ idempotentHint: true,
96
+ openWorldHint: false,
75
97
  },
76
98
  },
77
- ];
78
- }
79
- // ── Expanded-mode: one tool per adapter command ─────────────────────────────
80
- /**
81
- * Map an adapter `arg.type` to a JSON Schema primitive. Defaults to "string"
82
- * for unknown / missing types — safer than failing the schema build.
83
- */
84
- function jsonTypeFor(t) {
85
- switch (t) {
86
- case "int":
87
- return "integer";
88
- case "float":
89
- return "number";
90
- case "bool":
91
- return "boolean";
92
- case "str":
93
- default:
94
- return "string";
95
- }
96
- }
97
- /**
98
- * Build the input JSON Schema for one adapter command from its `args`.
99
- */
100
- function buildInputSchema(cmd) {
101
- const props = {
102
- limit: {
103
- type: "integer",
104
- description: "Cap result count (default 20)",
105
- default: 20,
99
+ {
100
+ name: "unicli_search",
101
+ description: "Search 200+ sites and 956 commands by intent. Bilingual (EN/ZH). Returns top matches with usage examples.",
102
+ inputSchema: {
103
+ type: "object",
104
+ properties: {
105
+ query: {
106
+ type: "string",
107
+ description: "Natural language intent (e.g. 'download video', '推特热门', 'stock price')",
108
+ },
109
+ limit: {
110
+ type: "integer",
111
+ description: "Max results (default 5)",
112
+ default: 5,
113
+ },
114
+ },
115
+ required: ["query"],
116
+ },
117
+ _meta: {
118
+ "anthropic/searchHint": "Find CLI commands by intent. Semantic search across websites, desktop apps, macOS. Bilingual Chinese/English.",
119
+ "anthropic/alwaysLoad": true,
120
+ },
121
+ annotations: {
122
+ readOnlyHint: true,
123
+ idempotentHint: true,
124
+ openWorldHint: false,
125
+ },
106
126
  },
107
- };
108
- const required = [];
109
- for (const a of cmd.adapterArgs ?? []) {
110
- if (a.name === "limit")
111
- continue; // already added
112
- const prop = {
113
- type: jsonTypeFor(a.type),
114
- description: a.description,
115
- };
116
- if (a.default !== undefined)
117
- prop.default = a.default;
118
- if (a.choices)
119
- prop.enum = a.choices;
120
- props[a.name] = prop;
121
- if (a.required)
122
- required.push(a.name);
123
- }
124
- const schema = {
125
- type: "object",
126
- properties: props,
127
- additionalProperties: false,
128
- };
129
- if (required.length > 0)
130
- schema.required = required;
131
- return schema;
132
- }
133
- /**
134
- * Build the output JSON Schema. We model results as `{ count, results }`
135
- * mirroring run_command, where each item in `results` follows the
136
- * `columns` shape (string-typed properties — Uni-CLI columns are
137
- * format-agnostic and the runtime emits whatever the pipeline produced).
138
- */
139
- /**
140
- * Build an output JSON Schema. We model results as `{count, results}` where
141
- * `results` is an array of items. `columns` becomes the item's property set.
142
- *
143
- * Note: we return a simple nested schema rather than a full JSON Schema
144
- * (which would need a deeper `items` type for `array`). Most MCP clients
145
- * only inspect the top-level type; Anthropic's client is permissive. If a
146
- * strict validator rejects this, it will still fall back to the lazy tool
147
- * path via `run_command`.
148
- */
149
- function buildOutputSchema(cmd) {
150
- const itemProps = {};
151
- for (const col of cmd.columns ?? []) {
152
- itemProps[col] = { type: "string", description: `Column: ${col}` };
153
- }
154
- return {
155
- type: "object",
156
- properties: {
157
- count: { type: "integer", description: "Number of results returned" },
158
- results: {
159
- type: "array",
160
- description: "Result rows",
161
- items: {
162
- type: "object",
163
- ...(Object.keys(itemProps).length > 0
164
- ? { properties: itemProps }
165
- : {}),
127
+ {
128
+ name: "unicli_explore",
129
+ description: "Auto-discover API endpoints for any URL. Navigates the page, captures network requests, generates YAML adapters.",
130
+ inputSchema: {
131
+ type: "object",
132
+ properties: {
133
+ url: { type: "string", description: "Website URL to explore" },
134
+ goal: {
135
+ type: "string",
136
+ description: "Capability to find (e.g. 'search', 'hot', 'feed')",
137
+ },
166
138
  },
139
+ required: ["url"],
140
+ },
141
+ _meta: {
142
+ "anthropic/searchHint": "Auto-discover API endpoints for any website URL. Generate YAML adapters for new sites.",
143
+ },
144
+ annotations: {
145
+ readOnlyHint: false,
146
+ destructiveHint: false,
147
+ idempotentHint: false,
148
+ openWorldHint: true,
167
149
  },
168
150
  },
169
- };
151
+ ];
170
152
  }
153
+ const expandedRegistry = new Map();
171
154
  /**
172
- * MCP tool name: `unicli_<site>_<command>` with non-alphanumeric chars
173
- * collapsed to `_`. Anthropic / Claude Desktop accept underscores; some
174
- * older clients reject hyphens, so we normalize defensively.
155
+ * Build the expanded tool set: 4 default meta-tools + one full tool per
156
+ * adapter command. Clients see the complete Uni-CLI surface area.
175
157
  *
176
- * CRITICAL: normalization is NOT reversible (e.g. both `claude-code_version`
177
- * and `claude_code-version` would yield the same normalized name). The
178
- * expanded-mode dispatcher uses a name → {adapter, cmdName} lookup table
179
- * built at the same time as the tool list, so callers never need to reverse
180
- * the normalization. See `expandedRegistry` and `buildExpandedTools` below.
158
+ * Token cost: ~160K for 956 commands. Use only when the client can handle it.
181
159
  */
182
- function buildToolName(site, command) {
183
- return `unicli_${site}_${command}`.replace(/[^a-zA-Z0-9_]/g, "_");
184
- }
185
- const expandedRegistry = new Map();
186
160
  function buildExpandedTools() {
187
161
  const tools = [];
188
- // Always include list_adapters for discovery + as a smoke test.
189
- tools.push(buildLazyTools()[0]);
162
+ tools.push(...buildDefaultTools());
190
163
  expandedRegistry.clear();
191
- // Collision detection: if two (site, command) pairs normalize to the same
192
- // tool name, the first one wins and the second is silently shadowed. We
193
- // don't expect this in practice (most adapters use lowercase alphanumeric
194
- // + hyphen names), but flag it on stderr so it gets noticed.
195
- const seen = new Set();
164
+ const seen = new Set(DEFAULT_TOOL_NAMES);
196
165
  for (const adapter of getAllAdapters()) {
197
166
  for (const [cmdName, cmd] of Object.entries(adapter.commands)) {
198
- const description = cmd.description?.trim() ||
167
+ const rawDesc = cmd.description?.trim() ||
199
168
  adapter.description?.trim() ||
200
169
  `${cmdName} for ${adapter.name}`;
201
170
  const toolName = buildToolName(adapter.name, cmdName);
@@ -207,30 +176,82 @@ function buildExpandedTools() {
207
176
  expandedRegistry.set(toolName, { adapter, cmdName, cmd });
208
177
  tools.push({
209
178
  name: toolName,
210
- description: `[${adapter.name}] ${description}`,
179
+ description: truncateDescription(`[${adapter.name}] ${rawDesc}`),
211
180
  inputSchema: buildInputSchema(cmd),
212
181
  outputSchema: buildOutputSchema(cmd),
182
+ _meta: {
183
+ "anthropic/searchHint": `${adapter.name}: ${rawDesc}`,
184
+ },
185
+ annotations: {
186
+ readOnlyHint: true,
187
+ idempotentHint: true,
188
+ openWorldHint: true,
189
+ },
213
190
  });
214
191
  }
215
192
  }
216
- // Add unicli_discover tool — expose explore+synthesize+generate as MCP tool
217
- tools.push({
218
- name: "unicli_discover",
219
- description: "Auto-discover CLI capabilities for any website URL. Navigates the page, captures API endpoints, and optionally generates YAML adapters.",
220
- inputSchema: {
221
- type: "object",
222
- properties: {
223
- url: { type: "string", description: "Website URL to explore" },
224
- goal: {
225
- type: "string",
226
- description: "Optional: capability to find (e.g. 'search', 'hot', 'feed')",
193
+ return tools;
194
+ }
195
+ /**
196
+ * Build deferred tool set: 4 default meta-tools with full schemas, plus
197
+ * lightweight stubs for all adapter commands (name + searchHint only,
198
+ * minimal inputSchema). Clients like Claude Code's ToolSearch can discover
199
+ * tools by searchHint and then call them — the handler resolves the full
200
+ * command at call time via the expandedRegistry.
201
+ *
202
+ * Token cost: ~8K (vs ~160K for expanded). 95% reduction.
203
+ */
204
+ function buildDeferredTools() {
205
+ const tools = [];
206
+ tools.push(...buildDefaultTools());
207
+ expandedRegistry.clear();
208
+ const seen = new Set(DEFAULT_TOOL_NAMES);
209
+ for (const adapter of getAllAdapters()) {
210
+ for (const [cmdName, cmd] of Object.entries(adapter.commands)) {
211
+ const rawDesc = cmd.description?.trim() ||
212
+ adapter.description?.trim() ||
213
+ `${cmdName} for ${adapter.name}`;
214
+ const toolName = buildToolName(adapter.name, cmdName);
215
+ if (seen.has(toolName))
216
+ continue;
217
+ seen.add(toolName);
218
+ // Register in the lookup table for runtime dispatch
219
+ expandedRegistry.set(toolName, { adapter, cmdName, cmd });
220
+ // Lightweight stub: name + searchHint + minimal schema.
221
+ // Full inputSchema is resolved at call time via expandedRegistry.
222
+ tools.push({
223
+ name: toolName,
224
+ description: truncateDescription(`[${adapter.name}] ${rawDesc}`),
225
+ inputSchema: {
226
+ type: "object",
227
+ properties: {
228
+ _args: {
229
+ type: "object",
230
+ description: "Command arguments (pass key-value pairs)",
231
+ additionalProperties: true,
232
+ },
233
+ },
227
234
  },
228
- },
229
- required: ["url"],
230
- },
231
- });
235
+ _meta: {
236
+ "anthropic/searchHint": `${adapter.name}: ${rawDesc}`,
237
+ },
238
+ annotations: {
239
+ readOnlyHint: true,
240
+ idempotentHint: true,
241
+ openWorldHint: true,
242
+ },
243
+ });
244
+ }
245
+ }
232
246
  return tools;
233
247
  }
248
+ const DEFAULT_TOOL_NAMES = new Set([
249
+ "unicli_run",
250
+ "unicli_list",
251
+ "unicli_search",
252
+ "unicli_explore",
253
+ "unicli_discover",
254
+ ]);
234
255
  // ── Tool Handlers ───────────────────────────────────────────────────────────
235
256
  function handleListAdapters(params) {
236
257
  let commands = listCommands();
@@ -258,17 +279,14 @@ function handleListAdapters(params) {
258
279
  type: info.type,
259
280
  commands: info.commands,
260
281
  }));
282
+ const data = {
283
+ total_sites: result.length,
284
+ total_commands: commands.length,
285
+ adapters: result,
286
+ };
261
287
  return {
262
- content: [
263
- {
264
- type: "text",
265
- text: JSON.stringify({
266
- total_sites: result.length,
267
- total_commands: commands.length,
268
- adapters: result,
269
- }, null, 2),
270
- },
271
- ],
288
+ content: [{ type: "text", text: JSON.stringify(data, null, 2) }],
289
+ structuredContent: { type: "json", data },
272
290
  };
273
291
  }
274
292
  async function runResolvedCommand(adapter, cmd, cmdName, args) {
@@ -293,56 +311,59 @@ async function runResolvedCommand(adapter, cmd, cmdName, args) {
293
311
  results = Array.isArray(raw) ? raw : [raw];
294
312
  }
295
313
  else {
314
+ const errorData = {
315
+ error: "No pipeline or function defined for this command",
316
+ };
296
317
  return {
297
- content: [
298
- {
299
- type: "text",
300
- text: JSON.stringify({
301
- error: "No pipeline or function defined for this command",
302
- }),
303
- },
304
- ],
318
+ content: [{ type: "text", text: JSON.stringify(errorData) }],
319
+ structuredContent: { type: "json", data: errorData },
305
320
  isError: true,
306
321
  };
307
322
  }
323
+ const data = { count: results.length, results };
308
324
  return {
309
- content: [
310
- {
311
- type: "text",
312
- text: JSON.stringify({ count: results.length, results }, null, 2),
313
- },
314
- ],
325
+ content: [{ type: "text", text: JSON.stringify(data, null, 2) }],
326
+ structuredContent: { type: "json", data },
315
327
  };
316
328
  }
317
329
  catch (err) {
318
330
  const message = err instanceof Error ? err.message : String(err);
331
+ const errorData = {
332
+ error: message,
333
+ adapter_path: `src/adapters/${adapter.name}/${cmdName}.yaml`,
334
+ suggestion: "The adapter may need updating. Check the YAML file.",
335
+ };
319
336
  return {
320
- content: [
321
- {
322
- type: "text",
323
- text: JSON.stringify({
324
- error: message,
325
- adapter_path: `src/adapters/${adapter.name}/${cmdName}.yaml`,
326
- suggestion: "The adapter may need updating. Check the YAML file.",
327
- }, null, 2),
328
- },
329
- ],
337
+ content: [{ type: "text", text: JSON.stringify(errorData, null, 2) }],
338
+ structuredContent: { type: "json", data: errorData },
330
339
  isError: true,
331
340
  };
332
341
  }
333
342
  }
343
+ /**
344
+ * Annotate a tool result with `_meta.anthropic/maxResultSizeChars` when the
345
+ * serialized payload exceeds MAX_RESULT_SIZE_CHARS (10 KB). This tells
346
+ * Claude Code to accept large payloads without truncation.
347
+ */
348
+ export function annotateIfLarge(result) {
349
+ const totalChars = result.content.reduce((sum, c) => sum + c.text.length, 0);
350
+ if (totalChars > MAX_RESULT_SIZE_CHARS) {
351
+ return {
352
+ ...result,
353
+ _meta: { "anthropic/maxResultSizeChars": 100_000 },
354
+ };
355
+ }
356
+ return result;
357
+ }
334
358
  async function handleRunCommand(params) {
335
359
  const site = params.site;
336
360
  const command = params.command;
337
361
  const args = params.args ?? {};
338
362
  if (!site || !command) {
363
+ const errorData = { error: "site and command are required" };
339
364
  return {
340
- content: [
341
- {
342
- type: "text",
343
- text: JSON.stringify({ error: "site and command are required" }),
344
- },
345
- ],
365
+ content: [{ type: "text", text: JSON.stringify(errorData) }],
366
+ structuredContent: { type: "json", data: errorData },
346
367
  isError: true,
347
368
  };
348
369
  }
@@ -355,18 +376,15 @@ async function handleRunCommand(params) {
355
376
  site: a.name,
356
377
  commands: Object.keys(a.commands),
357
378
  }));
379
+ const errorData = {
380
+ error: `Unknown command: ${site} ${command}`,
381
+ suggestion: matchingSites.length > 0
382
+ ? `Did you mean one of these? ${JSON.stringify(matchingSites)}`
383
+ : "Use list_adapters to see all available commands.",
384
+ };
358
385
  return {
359
- content: [
360
- {
361
- type: "text",
362
- text: JSON.stringify({
363
- error: `Unknown command: ${site} ${command}`,
364
- suggestion: matchingSites.length > 0
365
- ? `Did you mean one of these? ${JSON.stringify(matchingSites)}`
366
- : "Use list_adapters to see all available commands.",
367
- }, null, 2),
368
- },
369
- ],
386
+ content: [{ type: "text", text: JSON.stringify(errorData, null, 2) }],
387
+ structuredContent: { type: "json", data: errorData },
370
388
  isError: true,
371
389
  };
372
390
  }
@@ -375,7 +393,7 @@ async function handleRunCommand(params) {
375
393
  /**
376
394
  * Expanded-tool dispatcher — parse `unicli_<site>_<command>` back to its
377
395
  * components and call the resolver. Returns `undefined` when the tool name
378
- * is not in expanded form, so the caller can fall through to lazy-tool
396
+ * is not in expanded form, so the caller can fall through to default-tool
379
397
  * handling (list_adapters / run_command).
380
398
  */
381
399
  async function handleExpandedTool(toolName, args) {
@@ -394,21 +412,30 @@ async function handleExpandedTool(toolName, args) {
394
412
  return runResolvedCommand(entry.adapter, entry.cmd, entry.cmdName, args);
395
413
  }
396
414
  // ── MCP Protocol Handler ────────────────────────────────────────────────────
397
- const PROTOCOL_VERSION = "2024-11-05";
415
+ // Protocol version imported from src/constants.ts (single source of truth)
416
+ const PROTOCOL_VERSION = MCP_PROTOCOL_VERSION;
398
417
  function parseArgs(argv) {
399
418
  const opts = {
400
- lazy: false,
419
+ expanded: false,
401
420
  transport: "stdio",
402
421
  port: 19826,
422
+ auth: false,
403
423
  };
404
424
  for (let i = 0; i < argv.length; i++) {
405
425
  const a = argv[i];
406
- if (a === "--lazy")
407
- opts.lazy = true;
426
+ if (a === "--expanded")
427
+ opts.expanded = true;
428
+ else if (a === "--auth")
429
+ opts.auth = true;
408
430
  else if (a === "--transport") {
409
431
  const v = argv[++i];
410
- if (v === "stdio" || v === "http")
432
+ if (v === "stdio" || v === "http" || v === "streamable") {
411
433
  opts.transport = v;
434
+ }
435
+ else if (v === "sse") {
436
+ // Deprecated alias — SSE replaced by Streamable HTTP in spec 2025-03-26
437
+ opts.transport = "streamable";
438
+ }
412
439
  }
413
440
  else if (a === "--port") {
414
441
  const v = parseInt(argv[++i], 10);
@@ -429,7 +456,8 @@ function buildHandler(tools) {
429
456
  result: {
430
457
  protocolVersion: PROTOCOL_VERSION,
431
458
  capabilities: {
432
- tools: {},
459
+ tools: { listChanged: false },
460
+ elicitation: { supported: true },
433
461
  },
434
462
  serverInfo: {
435
463
  name: "unicli",
@@ -438,6 +466,8 @@ function buildHandler(tools) {
438
466
  },
439
467
  };
440
468
  case "notifications/initialized":
469
+ // JSON-RPC notifications must not receive responses.
470
+ // Returning a sentinel that transports check before serializing.
441
471
  return null;
442
472
  case "tools/list":
443
473
  return {
@@ -456,17 +486,67 @@ function buildHandler(tools) {
456
486
  }
457
487
  const toolArgs = params.arguments ?? {};
458
488
  switch (params.name) {
489
+ // Support both old names (list_adapters, run_command) and new
490
+ // names (unicli_list, unicli_run) for backwards compatibility.
491
+ case "unicli_list":
459
492
  case "list_adapters": {
460
493
  const result = handleListAdapters(toolArgs);
461
- return { jsonrpc: "2.0", id, result };
494
+ return { jsonrpc: "2.0", id, result: annotateIfLarge(result) };
462
495
  }
496
+ case "unicli_run":
463
497
  case "run_command":
464
498
  return handleRunCommand(toolArgs).then((result) => ({
465
499
  jsonrpc: "2.0",
466
500
  id,
467
- result,
501
+ result: annotateIfLarge(result),
468
502
  }));
503
+ case "unicli_search": {
504
+ const searchQuery = toolArgs.query;
505
+ const searchLimit = toolArgs.limit || 5;
506
+ if (!searchQuery) {
507
+ return {
508
+ jsonrpc: "2.0",
509
+ id,
510
+ error: {
511
+ code: -32602,
512
+ message: "Missing required parameter: query",
513
+ },
514
+ };
515
+ }
516
+ return import("../discovery/search.js").then(({ search: searchFn }) => {
517
+ const results = searchFn(searchQuery, searchLimit);
518
+ const data = {
519
+ query: searchQuery,
520
+ count: results.length,
521
+ results: results.map((r) => ({
522
+ command: `unicli ${r.site} ${r.command}`,
523
+ site: r.site,
524
+ name: r.command,
525
+ description: r.description,
526
+ score: r.score,
527
+ category: r.category,
528
+ usage: r.usage,
529
+ })),
530
+ };
531
+ return {
532
+ jsonrpc: "2.0",
533
+ id,
534
+ result: annotateIfLarge({
535
+ content: [
536
+ {
537
+ type: "text",
538
+ text: JSON.stringify(data, null, 2),
539
+ },
540
+ ],
541
+ structuredContent: { type: "json", data },
542
+ }),
543
+ };
544
+ });
545
+ }
546
+ case "unicli_explore":
469
547
  case "unicli_discover": {
548
+ // unicli_explore is the canonical name (v0.211.1+).
549
+ // unicli_discover kept as alias for backwards compatibility.
470
550
  const discoverUrl = toolArgs.url;
471
551
  const discoverGoal = toolArgs.goal;
472
552
  if (!discoverUrl) {
@@ -479,6 +559,17 @@ function buildHandler(tools) {
479
559
  },
480
560
  };
481
561
  }
562
+ if (!discoverUrl.startsWith("http://") &&
563
+ !discoverUrl.startsWith("https://")) {
564
+ return {
565
+ jsonrpc: "2.0",
566
+ id,
567
+ error: {
568
+ code: -32602,
569
+ message: "URL must start with http:// or https://",
570
+ },
571
+ };
572
+ }
482
573
  return import("node:child_process").then(({ execFile: ef }) => import("node:util").then(({ promisify: prom }) => {
483
574
  const execFileP = prom(ef);
484
575
  const discoverArgs = ["generate", discoverUrl, "--json"];
@@ -490,11 +581,13 @@ function buildHandler(tools) {
490
581
  }).then(({ stdout }) => ({
491
582
  jsonrpc: "2.0",
492
583
  id,
493
- result: { content: [{ type: "text", text: stdout }] },
584
+ result: annotateIfLarge({
585
+ content: [{ type: "text", text: stdout }],
586
+ }),
494
587
  }), (err) => ({
495
588
  jsonrpc: "2.0",
496
589
  id,
497
- result: {
590
+ result: annotateIfLarge({
498
591
  content: [
499
592
  {
500
593
  type: "text",
@@ -504,25 +597,44 @@ function buildHandler(tools) {
504
597
  },
505
598
  ],
506
599
  isError: true,
507
- },
600
+ }),
508
601
  }));
509
602
  }));
510
603
  }
511
604
  default:
512
605
  return handleExpandedTool(params.name, toolArgs).then((result) => {
513
606
  if (result)
514
- return { jsonrpc: "2.0", id, result };
607
+ return { jsonrpc: "2.0", id, result: annotateIfLarge(result) };
515
608
  return {
516
609
  jsonrpc: "2.0",
517
610
  id,
518
611
  error: {
519
- code: -32601,
520
- message: `Unknown tool: ${params.name}. Use list_adapters to see all available commands.`,
612
+ code: -32602,
613
+ message: `Unknown tool: ${params.name}. Use unicli_list to see available commands.`,
521
614
  },
522
615
  };
523
616
  });
524
617
  }
525
618
  }
619
+ case "elicitation/response": {
620
+ const elicitParams = req.params;
621
+ if (elicitParams?.id == null || !elicitParams?.response) {
622
+ return {
623
+ jsonrpc: "2.0",
624
+ id,
625
+ error: {
626
+ code: -32602,
627
+ message: "Missing id or response in elicitation/response",
628
+ },
629
+ };
630
+ }
631
+ const resolved = resolveElicitation(elicitParams.id, elicitParams.response);
632
+ return {
633
+ jsonrpc: "2.0",
634
+ id,
635
+ result: { resolved },
636
+ };
637
+ }
526
638
  case "ping":
527
639
  return { jsonrpc: "2.0", id, result: {} };
528
640
  default:
@@ -596,15 +708,29 @@ async function startStdio(handler) {
596
708
  * to MCP only need request/response, and starting with the simpler shape
597
709
  * means zero new dependencies and a tiny attack surface.
598
710
  */
599
- async function startHttp(handler, port, toolCount) {
711
+ async function startHttp(handler, port, authEnabled = false) {
712
+ const oauthMiddleware = authEnabled ? createOAuthMiddleware() : null;
600
713
  const server = createServer((req, res) => {
601
- if (req.method === "GET" && (req.url === "/" || req.url === "/mcp")) {
714
+ // OAuth routes (authorize + token) always public
715
+ if (authEnabled && handleOAuthRoute(req, res))
716
+ return;
717
+ // Health endpoint — always public
718
+ if (req.method === "GET" &&
719
+ (req.url === "/" || req.url === "/mcp" || req.url === "/health")) {
602
720
  res.writeHead(200, { "Content-Type": "application/json" });
721
+ const adapterCount = getAllAdapters().length;
722
+ const commandCount = listCommands().length;
723
+ // Compute actual expanded tool count: 3 default tools + all adapter commands.
724
+ let expandedCount = 3; // default tools
725
+ for (const adapter of getAllAdapters()) {
726
+ expandedCount += Object.keys(adapter.commands).length;
727
+ }
603
728
  res.end(JSON.stringify({
604
- server: "unicli",
729
+ status: "ok",
730
+ adapters: adapterCount,
731
+ commands: commandCount,
732
+ tools: { default: 3, expanded: expandedCount },
605
733
  version: VERSION,
606
- tools: toolCount,
607
- protocol: PROTOCOL_VERSION,
608
734
  }));
609
735
  return;
610
736
  }
@@ -613,9 +739,31 @@ async function startHttp(handler, port, toolCount) {
613
739
  res.end(JSON.stringify({ error: "POST /mcp" }));
614
740
  return;
615
741
  }
742
+ // OAuth middleware — block unauthenticated requests when --auth is set
743
+ if (oauthMiddleware?.(req, res))
744
+ return;
745
+ const MAX_BODY = 1_048_576; // 1 MB
616
746
  const chunks = [];
617
- req.on("data", (chunk) => chunks.push(chunk));
747
+ let bodySize = 0;
748
+ let aborted = false;
749
+ req.on("data", (chunk) => {
750
+ bodySize += chunk.length;
751
+ if (bodySize > MAX_BODY) {
752
+ aborted = true;
753
+ res.writeHead(413, { "Content-Type": "application/json" });
754
+ res.end(JSON.stringify({
755
+ jsonrpc: "2.0",
756
+ id: null,
757
+ error: { code: -32600, message: "Request too large" },
758
+ }));
759
+ req.destroy();
760
+ return;
761
+ }
762
+ chunks.push(chunk);
763
+ });
618
764
  req.on("end", async () => {
765
+ if (aborted)
766
+ return;
619
767
  const body = Buffer.concat(chunks).toString("utf-8");
620
768
  let parsed;
621
769
  try {
@@ -632,8 +780,14 @@ async function startHttp(handler, port, toolCount) {
632
780
  }
633
781
  try {
634
782
  const response = await handler(parsed);
783
+ if (!response) {
784
+ // JSON-RPC notification — no response expected
785
+ res.writeHead(204);
786
+ res.end();
787
+ return;
788
+ }
635
789
  res.writeHead(200, { "Content-Type": "application/json" });
636
- res.end(JSON.stringify(response ?? null));
790
+ res.end(JSON.stringify(response));
637
791
  }
638
792
  catch (err) {
639
793
  const message = err instanceof Error ? err.message : String(err);
@@ -661,18 +815,38 @@ async function main() {
661
815
  // Load adapters (same as CLI)
662
816
  loadAllAdapters();
663
817
  await loadTsAdapters();
664
- const tools = opts.lazy ? buildLazyTools() : buildExpandedTools();
818
+ // Three modes:
819
+ // default → 4 meta-tools (~200 tokens)
820
+ // expanded → 4 meta-tools + 956 full tool schemas (~160K tokens)
821
+ // deferred → 4 meta-tools + 956 lightweight stubs (~8K tokens)
822
+ const mode = opts.expanded ? "expanded" : "default";
823
+ const tools = opts.expanded ? buildExpandedTools() : buildDefaultTools();
824
+ // Deferred mode is auto-activated for Streamable HTTP transport (remote
825
+ // clients benefit most from searchHint-based discovery).
826
+ // For explicit control, the expanded flag takes precedence.
827
+ if (opts.transport === "streamable" && !opts.expanded) {
828
+ const deferredTools = buildDeferredTools();
829
+ tools.length = 0;
830
+ tools.push(...deferredTools);
831
+ }
665
832
  const handler = buildHandler(tools);
666
833
  const adapterCount = getAllAdapters().length;
667
834
  const commandCount = listCommands().length;
668
835
  if (opts.transport === "http") {
669
- await startHttp(handler, opts.port, tools.length);
670
- process.stderr.write(`unicli MCP server v${VERSION} — ${adapterCount} sites, ${commandCount} commands (${tools.length} tools registered, mode=${opts.lazy ? "lazy" : "expanded"})\n`);
836
+ await startHttp(handler, opts.port, opts.auth);
837
+ const authLabel = opts.auth ? ", OAuth enabled" : "";
838
+ process.stderr.write(`unicli MCP server v${VERSION} — ${adapterCount} sites, ${commandCount} commands (${tools.length} tools registered, mode=${mode}${authLabel})\n`);
839
+ return;
840
+ }
841
+ if (opts.transport === "streamable") {
842
+ await startStreamableHttp(opts.port, handler, { auth: opts.auth });
843
+ const authLabel = opts.auth ? ", OAuth enabled" : "";
844
+ process.stderr.write(`unicli MCP server v${VERSION} — ${adapterCount} sites, ${commandCount} commands (${tools.length} tools, mode=${mode}, transport=streamable${authLabel})\n`);
671
845
  return;
672
846
  }
673
847
  // stdio (default)
674
848
  await startStdio(handler);
675
- process.stderr.write(`unicli MCP server v${VERSION} — ${adapterCount} sites, ${commandCount} commands (${tools.length} tools registered, mode=${opts.lazy ? "lazy" : "expanded"})\n`);
849
+ process.stderr.write(`unicli MCP server v${VERSION} — ${adapterCount} sites, ${commandCount} commands (${tools.length} tools registered, mode=${mode})\n`);
676
850
  }
677
851
  main().catch((err) => {
678
852
  process.stderr.write(`Fatal: ${err instanceof Error ? err.message : String(err)}\n`);