@zenalexa/unicli 0.213.1 → 0.215.0

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 (512) hide show
  1. package/AGENTS.md +10 -10
  2. package/README.md +40 -27
  3. package/README.zh-CN.md +36 -36
  4. package/dist/adapters/_electron/desktop-shared.d.ts +12 -0
  5. package/dist/adapters/_electron/desktop-shared.d.ts.map +1 -0
  6. package/dist/adapters/_electron/desktop-shared.js +312 -0
  7. package/dist/adapters/_electron/desktop-shared.js.map +1 -0
  8. package/dist/adapters/electron-desktop/electron-desktop.d.ts +9 -0
  9. package/dist/adapters/electron-desktop/electron-desktop.d.ts.map +1 -0
  10. package/dist/adapters/electron-desktop/electron-desktop.js +56 -0
  11. package/dist/adapters/electron-desktop/electron-desktop.js.map +1 -0
  12. package/dist/browser/adapter-authoring.d.ts +20 -0
  13. package/dist/browser/adapter-authoring.d.ts.map +1 -0
  14. package/dist/browser/adapter-authoring.js +68 -0
  15. package/dist/browser/adapter-authoring.js.map +1 -0
  16. package/dist/browser/analyze.d.ts +54 -0
  17. package/dist/browser/analyze.d.ts.map +1 -0
  18. package/dist/browser/analyze.js +205 -0
  19. package/dist/browser/analyze.js.map +1 -0
  20. package/dist/browser/bridge.d.ts +1 -1
  21. package/dist/browser/bridge.d.ts.map +1 -1
  22. package/dist/browser/bridge.js +2 -0
  23. package/dist/browser/bridge.js.map +1 -1
  24. package/dist/browser/daemon-client.d.ts.map +1 -1
  25. package/dist/browser/daemon-client.js +12 -1
  26. package/dist/browser/daemon-client.js.map +1 -1
  27. package/dist/browser/network-cache.d.ts +58 -0
  28. package/dist/browser/network-cache.d.ts.map +1 -0
  29. package/dist/browser/network-cache.js +146 -0
  30. package/dist/browser/network-cache.js.map +1 -0
  31. package/dist/browser/page.d.ts +1 -1
  32. package/dist/browser/page.d.ts.map +1 -1
  33. package/dist/browser/page.js +2 -1
  34. package/dist/browser/page.js.map +1 -1
  35. package/dist/browser/protocol.d.ts +6 -2
  36. package/dist/browser/protocol.d.ts.map +1 -1
  37. package/dist/browser/site-memory.d.ts +57 -0
  38. package/dist/browser/site-memory.d.ts.map +1 -0
  39. package/dist/browser/site-memory.js +127 -0
  40. package/dist/browser/site-memory.js.map +1 -0
  41. package/dist/browser/verify-fixture.d.ts +30 -0
  42. package/dist/browser/verify-fixture.d.ts.map +1 -0
  43. package/dist/browser/verify-fixture.js +168 -0
  44. package/dist/browser/verify-fixture.js.map +1 -0
  45. package/dist/browser/workspace.d.ts +8 -0
  46. package/dist/browser/workspace.d.ts.map +1 -0
  47. package/dist/browser/workspace.js +15 -0
  48. package/dist/browser/workspace.js.map +1 -0
  49. package/dist/cli.d.ts.map +1 -1
  50. package/dist/cli.js +11 -2
  51. package/dist/cli.js.map +1 -1
  52. package/dist/commands/browser-adapter-authoring.d.ts +3 -0
  53. package/dist/commands/browser-adapter-authoring.d.ts.map +1 -0
  54. package/dist/commands/browser-adapter-authoring.js +206 -0
  55. package/dist/commands/browser-adapter-authoring.js.map +1 -0
  56. package/dist/commands/browser-authoring-operator.d.ts +3 -0
  57. package/dist/commands/browser-authoring-operator.d.ts.map +1 -0
  58. package/dist/commands/browser-authoring-operator.js +110 -0
  59. package/dist/commands/browser-authoring-operator.js.map +1 -0
  60. package/dist/commands/browser-operator-runtime.d.ts +38 -0
  61. package/dist/commands/browser-operator-runtime.d.ts.map +1 -0
  62. package/dist/commands/browser-operator-runtime.js +281 -0
  63. package/dist/commands/browser-operator-runtime.js.map +1 -0
  64. package/dist/commands/browser-operator.d.ts +6 -0
  65. package/dist/commands/browser-operator.d.ts.map +1 -0
  66. package/dist/commands/browser-operator.js +374 -0
  67. package/dist/commands/browser-operator.js.map +1 -0
  68. package/dist/commands/browser.d.ts.map +1 -1
  69. package/dist/commands/browser.js +72 -1
  70. package/dist/commands/browser.js.map +1 -1
  71. package/dist/commands/daemon.d.ts.map +1 -1
  72. package/dist/commands/daemon.js +40 -4
  73. package/dist/commands/daemon.js.map +1 -1
  74. package/dist/commands/describe.d.ts +26 -0
  75. package/dist/commands/describe.d.ts.map +1 -0
  76. package/dist/commands/describe.js +230 -0
  77. package/dist/commands/describe.js.map +1 -0
  78. package/dist/commands/dev.js +1 -1
  79. package/dist/commands/dev.js.map +1 -1
  80. package/dist/commands/dispatch.d.ts +14 -3
  81. package/dist/commands/dispatch.d.ts.map +1 -1
  82. package/dist/commands/dispatch.js +141 -81
  83. package/dist/commands/dispatch.js.map +1 -1
  84. package/dist/commands/explore.d.ts.map +1 -1
  85. package/dist/commands/explore.js +4 -1
  86. package/dist/commands/explore.js.map +1 -1
  87. package/dist/commands/generate.d.ts.map +1 -1
  88. package/dist/commands/generate.js +4 -1
  89. package/dist/commands/generate.js.map +1 -1
  90. package/dist/commands/health.d.ts.map +1 -1
  91. package/dist/commands/health.js +1 -1
  92. package/dist/commands/health.js.map +1 -1
  93. package/dist/commands/mcp.d.ts.map +1 -1
  94. package/dist/commands/mcp.js +14 -14
  95. package/dist/commands/mcp.js.map +1 -1
  96. package/dist/commands/migrate-schema.d.ts.map +1 -1
  97. package/dist/commands/migrate-schema.js +10 -0
  98. package/dist/commands/migrate-schema.js.map +1 -1
  99. package/dist/commands/operate.d.ts +4 -3
  100. package/dist/commands/operate.d.ts.map +1 -1
  101. package/dist/commands/operate.js +8 -483
  102. package/dist/commands/operate.js.map +1 -1
  103. package/dist/commands/record.d.ts.map +1 -1
  104. package/dist/commands/record.js +2 -1
  105. package/dist/commands/record.js.map +1 -1
  106. package/dist/commands/search.js +1 -1
  107. package/dist/commands/search.js.map +1 -1
  108. package/dist/commands/skills.d.ts.map +1 -1
  109. package/dist/commands/skills.js +2 -2
  110. package/dist/commands/skills.js.map +1 -1
  111. package/dist/commands/synthesize.d.ts.map +1 -1
  112. package/dist/commands/synthesize.js +33 -3
  113. package/dist/commands/synthesize.js.map +1 -1
  114. package/dist/constants.d.ts +2 -0
  115. package/dist/constants.d.ts.map +1 -1
  116. package/dist/constants.js +2 -0
  117. package/dist/constants.js.map +1 -1
  118. package/dist/discovery/aliases.d.ts.map +1 -1
  119. package/dist/discovery/aliases.js +76 -1
  120. package/dist/discovery/aliases.js.map +1 -1
  121. package/dist/discovery/loader.d.ts +8 -0
  122. package/dist/discovery/loader.d.ts.map +1 -1
  123. package/dist/discovery/loader.js +25 -2
  124. package/dist/discovery/loader.js.map +1 -1
  125. package/dist/electron-apps.d.ts +22 -0
  126. package/dist/electron-apps.d.ts.map +1 -1
  127. package/dist/electron-apps.js +324 -0
  128. package/dist/electron-apps.js.map +1 -1
  129. package/dist/engine/args.d.ts +83 -0
  130. package/dist/engine/args.d.ts.map +1 -0
  131. package/dist/engine/args.js +260 -0
  132. package/dist/engine/args.js.map +1 -0
  133. package/dist/engine/download.d.ts.map +1 -1
  134. package/dist/engine/download.js +12 -5
  135. package/dist/engine/download.js.map +1 -1
  136. package/dist/engine/executor.d.ts +20 -1
  137. package/dist/engine/executor.d.ts.map +1 -1
  138. package/dist/engine/executor.js +11 -2
  139. package/dist/engine/executor.js.map +1 -1
  140. package/dist/engine/harden.d.ts +48 -0
  141. package/dist/engine/harden.d.ts.map +1 -0
  142. package/dist/engine/harden.js +327 -0
  143. package/dist/engine/harden.js.map +1 -0
  144. package/dist/engine/invoke.d.ts +16 -0
  145. package/dist/engine/invoke.d.ts.map +1 -0
  146. package/dist/engine/invoke.js +15 -0
  147. package/dist/engine/invoke.js.map +1 -0
  148. package/dist/engine/kernel/compile.d.ts +30 -0
  149. package/dist/engine/kernel/compile.d.ts.map +1 -0
  150. package/dist/engine/kernel/compile.js +167 -0
  151. package/dist/engine/kernel/compile.js.map +1 -0
  152. package/dist/engine/kernel/execute.d.ts +35 -0
  153. package/dist/engine/kernel/execute.d.ts.map +1 -0
  154. package/dist/engine/kernel/execute.js +221 -0
  155. package/dist/engine/kernel/execute.js.map +1 -0
  156. package/dist/engine/kernel/types.d.ts +49 -0
  157. package/dist/engine/kernel/types.d.ts.map +1 -0
  158. package/dist/engine/kernel/types.js +9 -0
  159. package/dist/engine/kernel/types.js.map +1 -0
  160. package/dist/engine/kernel/ulid.d.ts +21 -0
  161. package/dist/engine/kernel/ulid.d.ts.map +1 -0
  162. package/dist/engine/kernel/ulid.js +76 -0
  163. package/dist/engine/kernel/ulid.js.map +1 -0
  164. package/dist/engine/repair/engine.js +2 -2
  165. package/dist/engine/repair/engine.js.map +1 -1
  166. package/dist/engine/steps/desktop-ax.d.ts +10 -0
  167. package/dist/engine/steps/desktop-ax.d.ts.map +1 -1
  168. package/dist/engine/steps/desktop-ax.js +20 -0
  169. package/dist/engine/steps/desktop-ax.js.map +1 -1
  170. package/dist/engine/steps/exec.d.ts +1 -1
  171. package/dist/engine/steps/exec.d.ts.map +1 -1
  172. package/dist/engine/steps/exec.js +20 -1
  173. package/dist/engine/steps/exec.js.map +1 -1
  174. package/dist/engine/steps/write-temp.js +1 -1
  175. package/dist/engine/steps/write-temp.js.map +1 -1
  176. package/dist/engine/template.d.ts.map +1 -1
  177. package/dist/engine/template.js +21 -2
  178. package/dist/engine/template.js.map +1 -1
  179. package/dist/manifest-compact.txt +8 -7
  180. package/dist/manifest-search.json +1 -1
  181. package/dist/manifest.json +2161 -171
  182. package/dist/mcp/dispatch.d.ts +46 -0
  183. package/dist/mcp/dispatch.d.ts.map +1 -0
  184. package/dist/mcp/dispatch.js +109 -0
  185. package/dist/mcp/dispatch.js.map +1 -0
  186. package/dist/mcp/handler.d.ts +30 -0
  187. package/dist/mcp/handler.d.ts.map +1 -0
  188. package/dist/mcp/handler.js +293 -0
  189. package/dist/mcp/handler.js.map +1 -0
  190. package/dist/mcp/http-transport.d.ts +16 -0
  191. package/dist/mcp/http-transport.d.ts.map +1 -0
  192. package/dist/mcp/http-transport.js +121 -0
  193. package/dist/mcp/http-transport.js.map +1 -0
  194. package/dist/mcp/server.d.ts +17 -33
  195. package/dist/mcp/server.d.ts.map +1 -1
  196. package/dist/mcp/server.js +31 -742
  197. package/dist/mcp/server.js.map +1 -1
  198. package/dist/mcp/sse-transport.js.map +1 -1
  199. package/dist/mcp/streamable-http/handle-post.d.ts +23 -0
  200. package/dist/mcp/streamable-http/handle-post.d.ts.map +1 -0
  201. package/dist/mcp/streamable-http/handle-post.js +357 -0
  202. package/dist/mcp/streamable-http/handle-post.js.map +1 -0
  203. package/dist/mcp/streamable-http/index.d.ts +45 -0
  204. package/dist/mcp/streamable-http/index.d.ts.map +1 -0
  205. package/dist/mcp/streamable-http/index.js +150 -0
  206. package/dist/mcp/streamable-http/index.js.map +1 -0
  207. package/dist/mcp/streamable-http/session.d.ts +85 -0
  208. package/dist/mcp/streamable-http/session.d.ts.map +1 -0
  209. package/dist/mcp/streamable-http/session.js +104 -0
  210. package/dist/mcp/streamable-http/session.js.map +1 -0
  211. package/dist/mcp/streamable-http.d.ts +7 -85
  212. package/dist/mcp/streamable-http.d.ts.map +1 -1
  213. package/dist/mcp/streamable-http.js +6 -568
  214. package/dist/mcp/streamable-http.js.map +1 -1
  215. package/dist/mcp/tools.d.ts +58 -0
  216. package/dist/mcp/tools.d.ts.map +1 -0
  217. package/dist/mcp/tools.js +241 -0
  218. package/dist/mcp/tools.js.map +1 -0
  219. package/dist/output/envelope.d.ts +30 -5
  220. package/dist/output/envelope.d.ts.map +1 -1
  221. package/dist/output/envelope.js +7 -5
  222. package/dist/output/envelope.js.map +1 -1
  223. package/dist/output/formatter.d.ts +2 -2
  224. package/dist/output/formatter.js +3 -3
  225. package/dist/output/formatter.js.map +1 -1
  226. package/dist/output/next-actions.d.ts +18 -0
  227. package/dist/output/next-actions.d.ts.map +1 -0
  228. package/dist/output/next-actions.js +64 -0
  229. package/dist/output/next-actions.js.map +1 -0
  230. package/dist/output/projection.d.ts +93 -0
  231. package/dist/output/projection.d.ts.map +1 -0
  232. package/dist/output/projection.js +255 -0
  233. package/dist/output/projection.js.map +1 -0
  234. package/dist/protocol/acp-helpers.d.ts +32 -0
  235. package/dist/protocol/acp-helpers.d.ts.map +1 -0
  236. package/dist/protocol/acp-helpers.js +175 -0
  237. package/dist/protocol/acp-helpers.js.map +1 -0
  238. package/dist/protocol/acp.d.ts +2 -27
  239. package/dist/protocol/acp.d.ts.map +1 -1
  240. package/dist/protocol/acp.js +7 -170
  241. package/dist/protocol/acp.js.map +1 -1
  242. package/dist/transport/adapters/cua.d.ts +9 -10
  243. package/dist/transport/adapters/cua.d.ts.map +1 -1
  244. package/dist/transport/adapters/cua.js +22 -24
  245. package/dist/transport/adapters/cua.js.map +1 -1
  246. package/dist/transport/adapters/desktop-atspi.d.ts +1 -1
  247. package/dist/transport/adapters/desktop-atspi.js +2 -2
  248. package/dist/transport/adapters/desktop-atspi.js.map +1 -1
  249. package/dist/transport/adapters/desktop-ax-background-click-swift.d.ts +11 -0
  250. package/dist/transport/adapters/desktop-ax-background-click-swift.d.ts.map +1 -0
  251. package/dist/transport/adapters/desktop-ax-background-click-swift.js +136 -0
  252. package/dist/transport/adapters/desktop-ax-background-click-swift.js.map +1 -0
  253. package/dist/transport/adapters/desktop-ax-background-click.d.ts +4 -0
  254. package/dist/transport/adapters/desktop-ax-background-click.d.ts.map +1 -0
  255. package/dist/transport/adapters/desktop-ax-background-click.js +70 -0
  256. package/dist/transport/adapters/desktop-ax-background-click.js.map +1 -0
  257. package/dist/transport/adapters/desktop-ax-swift.d.ts +56 -0
  258. package/dist/transport/adapters/desktop-ax-swift.d.ts.map +1 -0
  259. package/dist/transport/adapters/desktop-ax-swift.js +458 -0
  260. package/dist/transport/adapters/desktop-ax-swift.js.map +1 -0
  261. package/dist/transport/adapters/desktop-ax.d.ts +14 -0
  262. package/dist/transport/adapters/desktop-ax.d.ts.map +1 -1
  263. package/dist/transport/adapters/desktop-ax.js +262 -32
  264. package/dist/transport/adapters/desktop-ax.js.map +1 -1
  265. package/dist/transport/adapters/desktop-uia.d.ts +1 -1
  266. package/dist/transport/adapters/desktop-uia.js +2 -2
  267. package/dist/transport/adapters/desktop-uia.js.map +1 -1
  268. package/dist/transport/adapters/http.js +1 -1
  269. package/dist/transport/adapters/http.js.map +1 -1
  270. package/dist/transport/capability.d.ts +1 -1
  271. package/dist/transport/capability.d.ts.map +1 -1
  272. package/dist/transport/capability.js +6 -1
  273. package/dist/transport/capability.js.map +1 -1
  274. package/dist/types.d.ts +32 -0
  275. package/dist/types.d.ts.map +1 -1
  276. package/dist/types.js.map +1 -1
  277. package/package.json +14 -3
  278. package/src/adapters/1688/item.yaml +1 -0
  279. package/src/adapters/1688/store.yaml +1 -0
  280. package/src/adapters/36kr/article.yaml +1 -0
  281. package/src/adapters/_electron/desktop-shared.ts +383 -0
  282. package/src/adapters/amazon/bestsellers.yaml +2 -0
  283. package/src/adapters/amazon/movers-shakers.yaml +2 -0
  284. package/src/adapters/amazon/new-releases.yaml +2 -0
  285. package/src/adapters/amazon/rankings.yaml +1 -0
  286. package/src/adapters/apple-podcasts/episodes.yaml +1 -0
  287. package/src/adapters/arxiv/paper.yaml +1 -0
  288. package/src/adapters/audacity/convert.yaml +1 -0
  289. package/src/adapters/audacity/effects.yaml +1 -0
  290. package/src/adapters/audacity/info.yaml +1 -0
  291. package/src/adapters/audacity/mix.yaml +1 -0
  292. package/src/adapters/audacity/normalize.yaml +1 -0
  293. package/src/adapters/audacity/spectrogram.yaml +1 -0
  294. package/src/adapters/audacity/split-channels.yaml +1 -0
  295. package/src/adapters/audacity/trim.yaml +1 -0
  296. package/src/adapters/bilibili/favorites.yaml +1 -0
  297. package/src/adapters/blender/animation.yaml +2 -0
  298. package/src/adapters/blender/camera.yaml +1 -0
  299. package/src/adapters/blender/convert.yaml +1 -0
  300. package/src/adapters/blender/export.yaml +1 -0
  301. package/src/adapters/blender/import.yaml +1 -0
  302. package/src/adapters/blender/info.yaml +1 -0
  303. package/src/adapters/blender/lighting.yaml +1 -0
  304. package/src/adapters/blender/materials.yaml +1 -0
  305. package/src/adapters/blender/objects.yaml +1 -0
  306. package/src/adapters/blender/render.yaml +2 -0
  307. package/src/adapters/blender/scene.yaml +1 -0
  308. package/src/adapters/blender/screenshot.yaml +2 -0
  309. package/src/adapters/blender/script.yaml +1 -0
  310. package/src/adapters/boss/detail.yaml +2 -0
  311. package/src/adapters/cloudcompare/info.yaml +1 -0
  312. package/src/adapters/coupang/add-to-cart.yaml +1 -0
  313. package/src/adapters/ctrip/search.yaml +1 -0
  314. package/src/adapters/docker/build.yaml +1 -1
  315. package/src/adapters/docker/images.yaml +1 -1
  316. package/src/adapters/docker/logs.yaml +1 -1
  317. package/src/adapters/docker/networks.yaml +1 -1
  318. package/src/adapters/docker/ps.yaml +1 -1
  319. package/src/adapters/docker/run.yaml +1 -1
  320. package/src/adapters/docker/volumes.yaml +1 -1
  321. package/src/adapters/douban/download.yaml +1 -0
  322. package/src/adapters/douban/photos.yaml +1 -0
  323. package/src/adapters/douban/subject.yaml +2 -0
  324. package/src/adapters/doubao-web/detail.yaml +1 -0
  325. package/src/adapters/doubao-web/meeting-summary.yaml +1 -0
  326. package/src/adapters/doubao-web/meeting-transcript.yaml +1 -0
  327. package/src/adapters/drawio/export.yaml +2 -0
  328. package/src/adapters/electron-desktop/electron-desktop.ts +57 -0
  329. package/src/adapters/facebook/join-group.yaml +2 -0
  330. package/src/adapters/ffmpeg/compress.yaml +2 -0
  331. package/src/adapters/ffmpeg/concat.yaml +1 -0
  332. package/src/adapters/ffmpeg/convert.yaml +1 -0
  333. package/src/adapters/ffmpeg/extract-audio.yaml +2 -0
  334. package/src/adapters/ffmpeg/gif.yaml +2 -0
  335. package/src/adapters/ffmpeg/normalize.yaml +2 -0
  336. package/src/adapters/ffmpeg/probe.yaml +1 -0
  337. package/src/adapters/ffmpeg/resize.yaml +2 -0
  338. package/src/adapters/ffmpeg/subtitles.yaml +2 -0
  339. package/src/adapters/ffmpeg/thumbnail.yaml +2 -0
  340. package/src/adapters/ffmpeg/trim.yaml +2 -0
  341. package/src/adapters/freecad/assembly.yaml +1 -0
  342. package/src/adapters/freecad/bom.yaml +1 -0
  343. package/src/adapters/freecad/boolean.yaml +1 -0
  344. package/src/adapters/freecad/check.yaml +1 -0
  345. package/src/adapters/freecad/convert.yaml +1 -0
  346. package/src/adapters/freecad/export-stl.yaml +1 -0
  347. package/src/adapters/freecad/import.yaml +1 -0
  348. package/src/adapters/freecad/info.yaml +1 -0
  349. package/src/adapters/freecad/macro.yaml +1 -0
  350. package/src/adapters/freecad/measure.yaml +1 -0
  351. package/src/adapters/freecad/mesh.yaml +1 -0
  352. package/src/adapters/freecad/properties.yaml +1 -0
  353. package/src/adapters/freecad/render.yaml +1 -0
  354. package/src/adapters/freecad/section.yaml +1 -0
  355. package/src/adapters/freecad/sketch.yaml +1 -0
  356. package/src/adapters/gimp/adjust.yaml +1 -0
  357. package/src/adapters/gimp/batch.yaml +1 -0
  358. package/src/adapters/gimp/convert.yaml +1 -0
  359. package/src/adapters/gimp/crop.yaml +1 -0
  360. package/src/adapters/gimp/filter.yaml +1 -0
  361. package/src/adapters/gimp/flip.yaml +1 -0
  362. package/src/adapters/gimp/info.yaml +1 -0
  363. package/src/adapters/gimp/layers.yaml +1 -0
  364. package/src/adapters/gimp/merge-layers.yaml +1 -0
  365. package/src/adapters/gimp/resize.yaml +1 -0
  366. package/src/adapters/gimp/rotate.yaml +1 -0
  367. package/src/adapters/gimp/text.yaml +1 -0
  368. package/src/adapters/godot/scene-export.yaml +1 -0
  369. package/src/adapters/hackernews/comments.yaml +1 -0
  370. package/src/adapters/hackernews/item.yaml +1 -0
  371. package/src/adapters/hf/top.yaml +1 -0
  372. package/src/adapters/imagemagick/composite.yaml +1 -0
  373. package/src/adapters/imagemagick/convert.yaml +1 -0
  374. package/src/adapters/imagemagick/identify.yaml +1 -0
  375. package/src/adapters/imagemagick/montage.yaml +1 -0
  376. package/src/adapters/imagemagick/resize.yaml +1 -0
  377. package/src/adapters/imdb/person.yaml +1 -0
  378. package/src/adapters/imdb/reviews.yaml +1 -0
  379. package/src/adapters/imdb/title.yaml +1 -0
  380. package/src/adapters/inkscape/convert.yaml +2 -0
  381. package/src/adapters/inkscape/export.yaml +2 -0
  382. package/src/adapters/inkscape/optimize.yaml +2 -0
  383. package/src/adapters/instagram/stories.yaml +1 -0
  384. package/src/adapters/jd/item.yaml +1 -0
  385. package/src/adapters/jike/post.yaml +2 -0
  386. package/src/adapters/jike/topic.yaml +2 -0
  387. package/src/adapters/kdenlive/info.yaml +1 -0
  388. package/src/adapters/kdenlive/render.yaml +1 -0
  389. package/src/adapters/krita/batch.yaml +1 -0
  390. package/src/adapters/krita/convert.yaml +1 -0
  391. package/src/adapters/krita/export.yaml +1 -0
  392. package/src/adapters/krita/info.yaml +1 -0
  393. package/src/adapters/libreoffice/convert.yaml +1 -0
  394. package/src/adapters/libreoffice/print.yaml +1 -0
  395. package/src/adapters/linear/issue-update.yaml +1 -0
  396. package/src/adapters/linux-do/category.yaml +1 -0
  397. package/src/adapters/linux-do/topic.yaml +1 -0
  398. package/src/adapters/macos/caffeinate.yaml +2 -2
  399. package/src/adapters/macos/calendar-create.yaml +1 -0
  400. package/src/adapters/macos/finder-copy.yaml +1 -0
  401. package/src/adapters/macos/finder-move.yaml +1 -0
  402. package/src/adapters/macos/finder-new-folder.yaml +1 -0
  403. package/src/adapters/macos/finder-tags.yaml +1 -0
  404. package/src/adapters/macos/open.yaml +2 -0
  405. package/src/adapters/macos/processes.yaml +3 -3
  406. package/src/adapters/macos/screen-recording.yaml +3 -2
  407. package/src/adapters/macos/screenshot.yaml +1 -0
  408. package/src/adapters/macos/spotlight.yaml +1 -0
  409. package/src/adapters/macos/wallpaper.yaml +1 -0
  410. package/src/adapters/medium/article.yaml +1 -0
  411. package/src/adapters/mermaid/render.yaml +1 -0
  412. package/src/adapters/minimax/tts.yaml +1 -0
  413. package/src/adapters/motion-studio/component-get.yaml +1 -0
  414. package/src/adapters/musescore/convert.yaml +2 -0
  415. package/src/adapters/musescore/export.yaml +2 -0
  416. package/src/adapters/musescore/info.yaml +1 -0
  417. package/src/adapters/musescore/instruments.yaml +1 -0
  418. package/src/adapters/musescore/transpose.yaml +1 -0
  419. package/src/adapters/netease-music/playlist.yaml +1 -0
  420. package/src/adapters/netease-music/top.yaml +1 -0
  421. package/src/adapters/notebooklm/get.yaml +1 -0
  422. package/src/adapters/notebooklm/history.yaml +1 -0
  423. package/src/adapters/notebooklm/note-list.yaml +1 -0
  424. package/src/adapters/notebooklm/notes-get.yaml +1 -0
  425. package/src/adapters/notebooklm/open.yaml +1 -0
  426. package/src/adapters/notebooklm/source-fulltext.yaml +1 -0
  427. package/src/adapters/notebooklm/source-get.yaml +1 -0
  428. package/src/adapters/notebooklm/source-guide.yaml +1 -0
  429. package/src/adapters/notebooklm/source-list.yaml +1 -0
  430. package/src/adapters/notebooklm/summary.yaml +1 -0
  431. package/src/adapters/novita/status.yaml +1 -0
  432. package/src/adapters/obs/screenshot.yaml +1 -0
  433. package/src/adapters/obsidian/open.yaml +1 -0
  434. package/src/adapters/ones/login.yaml +1 -0
  435. package/src/adapters/ones/task.yaml +1 -0
  436. package/src/adapters/pandoc/convert.yaml +1 -0
  437. package/src/adapters/paperreview/feedback.yaml +2 -0
  438. package/src/adapters/paperreview/review.yaml +2 -0
  439. package/src/adapters/paperreview/submit.yaml +2 -0
  440. package/src/adapters/pixiv/detail.yaml +1 -0
  441. package/src/adapters/pixiv/download.yaml +2 -0
  442. package/src/adapters/quark/ls.yaml +1 -0
  443. package/src/adapters/reddit/comments.yaml +2 -0
  444. package/src/adapters/renderdoc/capture-list.yaml +1 -0
  445. package/src/adapters/renderdoc/frame-export.yaml +1 -0
  446. package/src/adapters/reuters/article.yaml +2 -0
  447. package/src/adapters/shotcut/info.yaml +1 -0
  448. package/src/adapters/shotcut/render.yaml +1 -0
  449. package/src/adapters/sinablog/article.yaml +1 -0
  450. package/src/adapters/sinablog/user.yaml +1 -0
  451. package/src/adapters/sketch/artboards.yaml +1 -0
  452. package/src/adapters/sketch/export.yaml +1 -0
  453. package/src/adapters/sketch/symbols.yaml +1 -0
  454. package/src/adapters/smzdm/article.yaml +1 -0
  455. package/src/adapters/stackoverflow/question.yaml +1 -0
  456. package/src/adapters/stagehand/wrap-observe.yaml +1 -0
  457. package/src/adapters/steam/wishlist.yaml +1 -0
  458. package/src/adapters/substack/trending.yaml +2 -1
  459. package/src/adapters/tieba/read.yaml +1 -0
  460. package/src/adapters/tiktok/comment.yaml +1 -0
  461. package/src/adapters/tiktok/like.yaml +1 -0
  462. package/src/adapters/tiktok/save.yaml +1 -0
  463. package/src/adapters/tiktok/unlike.yaml +1 -0
  464. package/src/adapters/tiktok/unsave.yaml +1 -0
  465. package/src/adapters/twitch/streams.yaml +1 -0
  466. package/src/adapters/twitter/quotes.yaml +2 -0
  467. package/src/adapters/twitter/retweets.yaml +1 -0
  468. package/src/adapters/v2ex/replies.yaml +1 -0
  469. package/src/adapters/v2ex/topic.yaml +1 -0
  470. package/src/adapters/vscode/install-ext.yaml +1 -0
  471. package/src/adapters/vscode/open.yaml +1 -0
  472. package/src/adapters/web/read.yaml +1 -0
  473. package/src/adapters/weibo/comments.yaml +1 -0
  474. package/src/adapters/weibo/post.yaml +1 -0
  475. package/src/adapters/weixin/download.yaml +1 -0
  476. package/src/adapters/wiremock/create-stub.yaml +2 -0
  477. package/src/adapters/wiremock/delete-stub.yaml +1 -0
  478. package/src/adapters/wiremock/verify.yaml +1 -0
  479. package/src/adapters/xianyu/item.yaml +1 -0
  480. package/src/adapters/xiaoe/catalog.yaml +1 -0
  481. package/src/adapters/xiaoe/content.yaml +1 -0
  482. package/src/adapters/xiaoe/detail.yaml +1 -0
  483. package/src/adapters/xiaoe/play-url.yaml +1 -0
  484. package/src/adapters/xiaoyuzhou/podcast.yaml +2 -0
  485. package/src/adapters/yollomi/edit.yaml +2 -0
  486. package/src/adapters/yollomi/remove-bg.yaml +2 -0
  487. package/src/adapters/yollomi/restore.yaml +2 -0
  488. package/src/adapters/yollomi/upload.yaml +2 -0
  489. package/src/adapters/yollomi/upscale.yaml +2 -0
  490. package/src/adapters/youtube/playlist.yaml +1 -0
  491. package/src/adapters/yt-dlp/download.yaml +2 -0
  492. package/src/adapters/yt-dlp/extract-audio.yaml +2 -0
  493. package/src/adapters/yt-dlp/info.yaml +1 -0
  494. package/src/adapters/zhihu/answer.yaml +1 -0
  495. package/src/adapters/zhihu/answers.yaml +2 -0
  496. package/src/adapters/zhihu/article.yaml +1 -0
  497. package/src/adapters/zhihu/articles.yaml +2 -0
  498. package/src/adapters/zhihu/collections.yaml +2 -0
  499. package/src/adapters/zhihu/columns.yaml +2 -0
  500. package/src/adapters/zhihu/comment.yaml +1 -0
  501. package/src/adapters/zhihu/download.yaml +1 -0
  502. package/src/adapters/zhihu/followers.yaml +2 -0
  503. package/src/adapters/zhihu/following.yaml +2 -0
  504. package/src/adapters/zhihu/pins.yaml +2 -0
  505. package/src/adapters/zhihu/question.yaml +1 -0
  506. package/src/adapters/zhihu/topic.yaml +1 -0
  507. package/src/adapters/zhihu/topics.yaml +1 -0
  508. package/src/adapters/zhihu/user.yaml +2 -0
  509. package/src/adapters/zoom/join.yaml +1 -0
  510. package/src/adapters/zsxq/search.yaml +1 -0
  511. package/src/adapters/zsxq/topic.yaml +1 -0
  512. package/src/adapters/zsxq/topics.yaml +1 -0
package/AGENTS.md CHANGED
@@ -9,7 +9,7 @@
9
9
 
10
10
  <!-- BEGIN COUNTS -->
11
11
 
12
- > <!-- STATS:site_count -->200<!-- /STATS --> sites, <!-- STATS:command_count -->968<!-- /STATS --> commands, <!-- STATS:pipeline_step_count -->54<!-- /STATS --> pipeline steps, BM25 bilingual search. `npm install -g @zenalexa/unicli`
12
+ > <!-- STATS:site_count -->220<!-- /STATS --> sites, <!-- STATS:command_count -->1283<!-- /STATS --> commands, <!-- STATS:pipeline_step_count -->59<!-- /STATS --> pipeline steps, BM25 bilingual search. `npm install -g @zenalexa/unicli`
13
13
 
14
14
  <!-- END COUNTS -->
15
15
 
@@ -34,29 +34,29 @@ npm install -g @zenalexa/unicli
34
34
 
35
35
  ## What You Can Do
36
36
 
37
- ### Web (108+ sites)
37
+ ### Web (138+ sites)
38
38
 
39
- **Chinese**: xiaohongshu (22), zhihu (21), bilibili (17), douyin (13), douban (12), v2ex (12), jike (10), linux-do (10), +33 more (`unicli list`)
39
+ **Chinese**: xiaohongshu (22), zhihu (21), bilibili (17), douyin (13), douban (12), v2ex (12), jike (10), linux-do (10), +31 more (`unicli list`)
40
40
 
41
- **International**: twitter (34), instagram (26), reddit (20), tiktok (16), lesswrong (15), boss (14), bluesky (12), facebook (12), +38 more (`unicli list`)
41
+ **International**: twitter (34), instagram (26), reddit (20), tiktok (16), discord-app (15), lesswrong (15), slack (14), boss (14), +36 more (`unicli list`)
42
42
 
43
- **AI / ML**: notebooklm (15), doubao-web (9), gemini (5), hf (4), ollama (4), doubao (3), minimax (3), novita (3), +6 more (`unicli list`)
43
+ **AI / ML**: notebooklm (15), antigravity (14), chatgpt (14), chatwise (14), doubao-app (13), doubao-web (9), perplexity (8), claude (7), +13 more (`unicli list`)
44
44
 
45
45
  **Finance**: xueqiu (12), sinafinance (5), barchart (4), eastmoney (4), binance (3), yahoo-finance (3), coinbase (2), futu (2)
46
46
 
47
- **Developer**: stackoverflow (6), devto (5), producthunt (5), npm (4), crates-io (3), docker-hub (3), gitee (3), github-trending (3), +5 more (`unicli list`)
47
+ **Developer**: cursor (18), codex (15), vscode (10), docker-desktop (7), github-desktop (7), gitkraken (7), insomnia (7), postman (7), +16 more (`unicli list`)
48
48
 
49
49
  **News**: bloomberg (10), hackernews (10), 36kr (5), bbc (4), reuters (4), ithome (3), cnn (2), infoq (2), +3 more (`unicli list`)
50
50
 
51
- **Reference**: imdb (7), wikipedia (5), google (4), netease-music (4), spotify (4), arxiv (3), dictionary (3), paperreview (3), +8 more (`unicli list`)
51
+ **Reference**: netease-music (17), spotify (17), linear (10), imdb (7), bitwarden (7), todoist (7), wikipedia (5), google (4), +11 more (`unicli list`)
52
52
 
53
53
  ### macOS (58 cmds)
54
54
 
55
55
  active-app, apps, apps-list, battery, bluetooth, brightness, caffeinate, calendar-create, calendar-list, calendar-today, clipboard, contacts-search, … (`unicli list --site macos`)
56
56
 
57
- ### Desktop (24 apps)
57
+ ### Desktop (25 apps)
58
58
 
59
- freecad (15 cmds), blender (13 cmds), gimp (12 cmds), ffmpeg (11 cmds), audacity (8 cmds), docker (7 cmds), imagemagick (6 cmds), slay-the-spire-ii (6 cmds), +16 more (`unicli list --category desktop`)
59
+ freecad (15 cmds), blender (13 cmds), gimp (12 cmds), ffmpeg (11 cmds), audacity (8 cmds), figma (8 cmds), docker (7 cmds), imagemagick (6 cmds), +17 more (`unicli list --category desktop`)
60
60
 
61
61
  ### Bridge (3 CLIs)
62
62
 
@@ -210,4 +210,4 @@ unicli lark-cli calendar +agenda # Direct passthrough
210
210
 
211
211
  ## Version
212
212
 
213
- 0.213.1Vostok · Gagarin Patch
213
+ 0.215.0Closed Adapter Loop
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- <!-- AGENT: npm install -g @zenalexa/unicli && unicli search "your intent" — hundreds of commands across ~200 sites. JSON when piped. Self-repairing YAML adapters. Bilingual EN/ZH search. See AGENTS.md for live counts. -->
1
+ <!-- AGENT: npm install -g @zenalexa/unicli && unicli search "your intent" — 1283 commands across 220 sites. Markdown envelope by default; use -f json for JSON. Self-repairing YAML adapters. Bilingual EN/ZH search. See AGENTS.md for live counts. -->
2
2
 
3
3
  <div align="center">
4
4
 
@@ -19,7 +19,7 @@ The execution layer for agent skills. Deterministic, editable, cross-vendor.
19
19
  <a href="https://www.npmjs.com/package/@zenalexa/unicli"><img src="https://img.shields.io/npm/v/@zenalexa/unicli?style=flat-square&color=cb3837" alt="npm"></a>
20
20
  <a href="https://github.com/olo-dot-io/Uni-CLI/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/olo-dot-io/Uni-CLI/ci.yml?style=flat-square&label=CI" alt="CI"></a>
21
21
  <a href="./LICENSE"><img src="https://img.shields.io/github/license/olo-dot-io/Uni-CLI?style=flat-square" alt="license"></a>
22
- <img src="https://img.shields.io/badge/tests-<!-- STATS:test_count -->6931<!-- /STATS -->-44cc11?style=flat-square" alt="tests">
22
+ <img src="https://img.shields.io/badge/tests-<!-- STATS:test_count -->7145<!-- /STATS -->-44cc11?style=flat-square" alt="tests">
23
23
  <img src="https://img.shields.io/badge/agent--reach-ally-6a5acd?style=flat-square" alt="agent-reach ally">
24
24
 
25
25
  <br><br>
@@ -38,9 +38,9 @@ npm install -g @zenalexa/unicli
38
38
 
39
39
  ## What
40
40
 
41
- Uni-CLI is a universal interface that compiles agent intent into deterministic CLI programs. One binary reaches <!-- STATS:site_count -->200<!-- /STATS --> sites, 30+ desktop apps, 35 CLI bridges, and the local OS — <!-- STATS:command_count -->968<!-- /STATS --> commands in total. Every adapter is a 20-line YAML pipeline, so agents can read, edit, and re-run them without a compiler.
41
+ Uni-CLI is a universal interface that compiles agent intent into deterministic CLI programs. One binary reaches <!-- STATS:site_count -->220<!-- /STATS --> sites, 30+ desktop apps, 35 CLI bridges, and the local OS — <!-- STATS:command_count -->1283<!-- /STATS --> commands in total. Every adapter is a 20-line YAML pipeline, so agents can read, edit, and re-run them without a compiler.
42
42
 
43
- Coverage is cross-cutting: web APIs and browser automation, desktop subprocesses (ffmpeg, Blender, LibreOffice), macOS system calls (screenshot, clipboard, Calendar), and Computer Use Agents (Anthropic, OpenAI, Google) — all behind the same `unicli <site> <command>` surface. Output is a table in a terminal and JSON when piped. Errors are structured JSON on stderr with the adapter path, the failing step, and a suggestion — enough directional feedback for an agent to fix the adapter and retry.
43
+ Coverage is cross-cutting: web APIs and browser automation, desktop subprocesses (ffmpeg, Blender, LibreOffice), macOS system calls (screenshot, clipboard, Calendar), macOS AX, and a pluggable CUA contract with mock/provider stubs — all behind the same `unicli <site> <command>` surface. Output is a v2 AgentEnvelope in Markdown by default; use `-f json` for JSON, `-f yaml` for YAML, or legacy `csv` / `compact` when needed. Errors include the adapter path, the failing step, and a suggestion — enough directional feedback for an agent to fix the adapter and retry.
44
44
 
45
45
  Self-repair is a first-class capability. When a site changes its API, an agent reads the 20-line YAML, edits the selector or endpoint, saves to `~/.unicli/adapters/`, and retries. Fixes survive `npm update`. No human in the loop.
46
46
 
@@ -64,7 +64,7 @@ unicli search "推特热门" # → twitter trending (bilin
64
64
 
65
65
  # 3. Run
66
66
  unicli reddit hot --limit 3 # zero-config web API
67
- unicli hackernews top --json | jq '.[].title' # pipe + transform
67
+ unicli hackernews top -f json | jq '.data[].title' # pipe + transform
68
68
 
69
69
  # 4. Wire into an agent
70
70
  claude mcp add unicli -- npx @zenalexa/unicli mcp serve # Claude Code (MCP stdio)
@@ -80,19 +80,19 @@ Full walkthrough with 5 worked examples: [`docs/QUICKSTART.md`](docs/QUICKSTART.
80
80
  graph TB
81
81
  CMD["unicli &lt;site&gt; &lt;command&gt;"]
82
82
 
83
- CMD --> ADAPT["Adapter layer<br/>887 YAML · 72 TS · 35 bridges"]
83
+ CMD --> ADAPT["Adapter layer<br/><!-- STATS:adapter_count_yaml -->896<!-- /STATS --> YAML · <!-- STATS:adapter_count_ts -->77<!-- /STATS --> TS · 35 bridges"]
84
84
 
85
- ADAPT --> ENGINE["Pipeline engine — <!-- STATS:pipeline_step_count -->54<!-- /STATS -->+ steps<br/>fetch · navigate · exec · extract · each · if · parallel"]
85
+ ADAPT --> ENGINE["Pipeline engine — <!-- STATS:pipeline_step_count -->59<!-- /STATS -->+ steps<br/>fetch · navigate · exec · extract · each · if · parallel"]
86
86
 
87
87
  ENGINE --> T1["HTTP<br/>(web APIs)"]
88
88
  ENGINE --> T2["CDP Browser<br/>(raw WebSocket)"]
89
89
  ENGINE --> T3["Subprocess<br/>(ffmpeg, yt-dlp, gh)"]
90
90
  ENGINE --> T4["Desktop-AX<br/>(macOS AppleScript)"]
91
- ENGINE --> T5["Desktop-UIA<br/>(Windows UIAutomation)"]
92
- ENGINE --> T6["Desktop-AT-SPI<br/>(Linux accessibility)"]
93
- ENGINE --> T7["CUA<br/>(Anthropic · OpenAI · Google)"]
91
+ ENGINE --> T5["Desktop-UIA<br/>(Windows declared stub)"]
92
+ ENGINE --> T6["Desktop-AT-SPI<br/>(Linux declared stub)"]
93
+ ENGINE --> T7["CUA<br/>(contract · mock · provider stubs)"]
94
94
 
95
- T1 --> OUT["Formatter<br/>table · json · yaml · csv · md"]
95
+ T1 --> OUT["Formatter<br/>md · json · yaml · csv · compact"]
96
96
  T2 --> OUT
97
97
  T3 --> OUT
98
98
  T4 --> OUT
@@ -109,7 +109,7 @@ When a command breaks:
109
109
 
110
110
  ```
111
111
  unicli <site> <cmd> fails
112
- → structured JSON error on stderr
112
+ → structured error envelope on stderr
113
113
  { adapter_path, step, action, suggestion }
114
114
  → agent opens the ~20-line YAML
115
115
  → agent edits the selector / URL / auth
@@ -127,21 +127,21 @@ Exit codes follow `sysexits.h`: `0` ok, `66` empty, `69` unavailable, `75` tempo
127
127
 
128
128
  ## Feature matrix
129
129
 
130
- | Capability | What it means |
131
- | ------------------------ | ---------------------------------------------------------------------------------------------------- |
132
- | **CUA backends** | Anthropic `computer-use`, OpenAI Operator, Google CUA, and direct CDP 4 transports behind one flag |
133
- | **MCP transports** | stdio · Streamable HTTP (spec 2025-11-25) · SSE · OAuth 2.1 PKCE |
134
- | **ACP ready** | `unicli acp` speaks JSON-RPC 2.0 for avante.nvim, Zed, Gemini CLI |
135
- | **Cross-vendor skills** | Skills in `skills/` work in Claude Code, OpenCode, Codex, Cursor, Cline |
136
- | **Self-repair envelope** | Every error ships `adapter_path` + `step` + `suggestion` (Banach-convergent) |
137
- | **Bilingual search** | BM25 + TF-IDF, 50KB index, <10ms queries, 200-entry ZH↔EN alias table |
138
- | **Browser daemon** | Persistent Chrome via CDP, reuses your login sessions, 13-layer stealth |
130
+ | Capability | What it means |
131
+ | ------------------------ | ----------------------------------------------------------------------------------------------------------------------- |
132
+ | **CUA contract** | Stable screenshot/action interface with mock backend and explicit provider stubs; not marketed as real computer-use yet |
133
+ | **MCP transports** | stdio · Streamable HTTP (spec 2025-11-25) · SSE · OAuth 2.1 PKCE |
134
+ | **ACP ready** | `unicli acp` speaks JSON-RPC 2.0 for avante.nvim, Zed, Gemini CLI |
135
+ | **Cross-vendor skills** | Skills in `skills/` work in Claude Code, OpenCode, Codex, Cursor, Cline |
136
+ | **Self-repair envelope** | Every error ships `adapter_path` + `step` + `suggestion` (Banach-convergent) |
137
+ | **Bilingual search** | BM25 + TF-IDF, 50KB index, <10ms queries, 200-entry ZH↔EN alias table |
138
+ | **Browser operator** | Extension-backed browser daemon with shared or isolated workspaces, background mode, bind/sessions |
139
139
 
140
140
  Detailed benchmarks (p50/p95 token cost per category, vs GitHub MCP cold-start): [`docs/BENCHMARK.md`](docs/BENCHMARK.md).
141
141
 
142
142
  ## Platform coverage
143
143
 
144
- <!-- STATS:site_count -->200<!-- /STATS --> sites · <!-- STATS:command_count -->968<!-- /STATS --> commands — the live list is auto-generated in [`AGENTS.md`](AGENTS.md) and split by domain:
144
+ <!-- STATS:site_count -->220<!-- /STATS --> sites · <!-- STATS:command_count -->1283<!-- /STATS --> commands — the live list is auto-generated in [`AGENTS.md`](AGENTS.md) and split by domain:
145
145
 
146
146
  | Domain | Highlights |
147
147
  | --------------------- | ----------------------------------------------------------------------- |
@@ -195,7 +195,20 @@ unicli auth check twitter # Validate cookie file
195
195
  unicli auth list # All configured sites
196
196
  ```
197
197
 
198
- The browser daemon (`unicli browser start`) reuses your signed-in Chrome session via CDP — no cookie export, no extension install. Auto-exits after 4h idle.
198
+ The browser operator has two layers:
199
+
200
+ - `unicli browser start` manages a local Chrome/CDP launch path for cookie extraction and direct CDP use.
201
+ - `unicli browser ...` / `unicli daemon ...` route through the local browser daemon plus Browser Bridge extension, with explicit workspace reuse, `--daemon-port` multi-profile routing, background/focus controls, and live session diagnostics.
202
+
203
+ For agent-style interactive browsing, prefer:
204
+
205
+ ```bash
206
+ unicli browser open https://example.com
207
+ unicli browser state
208
+ unicli browser find --css "button, a"
209
+ unicli browser network --raw
210
+ unicli browser extract
211
+ ```
199
212
 
200
213
  ## Write an adapter
201
214
 
@@ -273,11 +286,11 @@ npm run verify # typecheck + lint + test + build + stats check
273
286
  | `npm run build` | Production build |
274
287
  | `npm run typecheck` | TypeScript strict |
275
288
  | `npm run lint` | Oxlint |
276
- | `npm run test` | Unit tests (<!-- STATS:test_count -->6931<!-- /STATS -->) |
289
+ | `npm run test` | Unit tests (<!-- STATS:test_count -->7145<!-- /STATS -->) |
277
290
  | `npm run test:adapter` | Validate all adapters |
278
291
  | `npm run verify` | Full pipeline (7 gates) |
279
292
 
280
- Seven production dependencies: `chalk`, `cli-table3`, `commander`, `js-yaml`, `turndown`, `undici`, `ws`.
293
+ Eleven production dependencies: `ajv`, `ajv-formats`, `chalk`, `cli-table3`, `commander`, `js-yaml`, `jsonpath-plus`, `turndown`, `undici`, `ws`, `zod`.
281
294
 
282
295
  ## Release cadence
283
296
 
@@ -316,6 +329,6 @@ Repo: <https://github.com/olo-dot-io/Uni-CLI> · npm: [`@zenalexa/unicli`](https
316
329
  </p>
317
330
 
318
331
  <p align="center">
319
- <sub>v0.213.1Vostok · Gagarin Patch</sub><br>
320
- <sub><!-- STATS:site_count -->200<!-- /STATS --> sites · <!-- STATS:command_count -->968<!-- /STATS --> commands · <!-- STATS:pipeline_step_count -->54<!-- /STATS --> pipeline steps · BM25+TF-IDF bilingual search · MCP 2025-11-25 · <!-- STATS:test_count -->6931<!-- /STATS --> tests</sub>
332
+ <sub>v0.215.0Closed Adapter Loop</sub><br>
333
+ <sub><!-- STATS:site_count -->220<!-- /STATS --> sites · <!-- STATS:command_count -->1283<!-- /STATS --> commands · <!-- STATS:pipeline_step_count -->59<!-- /STATS --> pipeline steps · BM25+TF-IDF bilingual search · MCP 2025-11-25 · <!-- STATS:test_count -->7145<!-- /STATS --> tests</sub>
321
334
  </p>
package/README.zh-CN.md CHANGED
@@ -1,4 +1,4 @@
1
- <!-- AGENT: npm install -g @zenalexa/unicli && unicli search "你的意图" — 200+ 站点,968+ 命令,自修复 YAML 适配器,BM25 中英双语搜索,比 MCP 少 95–99% token。实时统计见 AGENTS.md。 -->
1
+ <!-- AGENT: npm install -g @zenalexa/unicli && unicli search "你的意图" — 220 个站点,1283 条命令,自修复 YAML 适配器,BM25 中英双语搜索,比 MCP 少 95–99% token。默认 Markdown envelope;JSON 用 -f json。实时统计见 AGENTS.md。 -->
2
2
 
3
3
  <div align="center">
4
4
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  > 给你的 Agent 一双手。
10
10
 
11
- <!-- STATS:site_count -->200<!-- /STATS --> 个站点 &nbsp;·&nbsp; <!-- STATS:command_count -->968<!-- /STATS --> 条命令 &nbsp;·&nbsp; 自修复 YAML &nbsp;·&nbsp; 比 MCP 少 95–99% token
11
+ <!-- STATS:site_count -->220<!-- /STATS --> 个站点 &nbsp;·&nbsp; <!-- STATS:command_count -->1283<!-- /STATS --> 条命令 &nbsp;·&nbsp; 自修复 YAML &nbsp;·&nbsp; 比 MCP 少 95–99% token
12
12
 
13
13
  <br>
14
14
 
@@ -16,7 +16,7 @@
16
16
  <a href="https://github.com/olo-dot-io/Uni-CLI/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/olo-dot-io/Uni-CLI/ci.yml?style=flat-square&label=CI" alt="CI"></a>
17
17
  <a href="https://github.com/olo-dot-io/Uni-CLI/stargazers"><img src="https://img.shields.io/github/stars/olo-dot-io/Uni-CLI?style=flat-square" alt="stars"></a>
18
18
  <a href="./LICENSE"><img src="https://img.shields.io/github/license/olo-dot-io/Uni-CLI?style=flat-square" alt="license"></a>
19
- <img src="https://img.shields.io/badge/tests-<!-- STATS:test_count -->6931<!-- /STATS -->-44cc11?style=flat-square" alt="tests">
19
+ <img src="https://img.shields.io/badge/tests-<!-- STATS:test_count -->7145<!-- /STATS -->-44cc11?style=flat-square" alt="tests">
20
20
  <img src="https://img.shields.io/badge/agent--reach-ally-6a5acd?style=flat-square" alt="agent-reach ally">
21
21
 
22
22
  <br>
@@ -42,13 +42,13 @@ npm install -g @zenalexa/unicli
42
42
  把下面这段扔给你的 agent,然后去倒杯水:
43
43
 
44
44
  ```
45
- 帮我配置 unicli——它能给 AI Agent 提供 200+ 站点的 CLI 访问权限,支持自修复适配器:
45
+ 帮我配置 unicli——它能给 AI Agent 提供 220 个站点的 CLI 访问权限,支持自修复适配器:
46
46
  1. npm install -g @zenalexa/unicli
47
47
  2. 添加 MCP:claude mcp add unicli -- npx @zenalexa/unicli mcp serve
48
- 3. 验证:unicli hackernews top --json
48
+ 3. 验证:unicli hackernews top -f json
49
49
  ```
50
50
 
51
- Agent 自己会搞定。回来的时候,200 个站点都在 CLI 里等着你了。
51
+ Agent 自己会搞定。回来的时候,220 个站点都在 CLI 里等着你了。
52
52
 
53
53
  **各平台一行配置:**
54
54
 
@@ -65,9 +65,9 @@ Agent 自己会搞定。回来的时候,200 个站点都在 CLI 里等着你
65
65
 
66
66
  ## 是什么
67
67
 
68
- Uni-CLI 是专为 AI Agent 设计的通用命令行界面——单个二进制文件,将 Agent 意图编译为可确定性执行的程序,覆盖 <!-- STATS:site_count -->200<!-- /STATS --> 个站点、30+ 桌面应用、35 个 CLI 桥接和本地操作系统(共 <!-- STATS:command_count -->968<!-- /STATS --> 条命令)。每个适配器约 20 行 YAML:Agent 可读、可编辑、零构建步骤。站点修改 API 时,Agent 编辑 YAML,保存到 `~/.unicli/adapters/`,重试即可。修复永久生效,`npm update` 也不会覆盖。全程无需人工介入。
68
+ Uni-CLI 是专为 AI Agent 设计的通用命令行界面——单个二进制文件,将 Agent 意图编译为可确定性执行的程序,覆盖 <!-- STATS:site_count -->220<!-- /STATS --> 个站点、30+ 桌面应用、35 个 CLI 桥接和本地操作系统(共 <!-- STATS:command_count -->1283<!-- /STATS --> 条命令)。每个适配器约 20 行 YAML:Agent 可读、可编辑、零构建步骤。站点修改 API 时,Agent 编辑 YAML,保存到 `~/.unicli/adapters/`,重试即可。修复永久生效,`npm update` 也不会覆盖。全程无需人工介入。
69
69
 
70
- 覆盖范围贯穿各个层面:HTTP Web API、原生 CDP 浏览器自动化(13 层反检测隐身,复用登录状态)、桌面子进程(ffmpeg、Blender、LibreOffice)、macOS 系统调用(截屏、日历、剪贴板)、Windows UIAutomation、Linux AT-SPI,以及四个计算机使用 Agent 后端(Anthropic `computer-use`、OpenAI Operator、Google CUA、直连 CDP)——全部通过统一的 `unicli <站点> <命令>` 接口访问。
70
+ 覆盖范围贯穿各个层面:HTTP Web APICDP 浏览器自动化、桌面子进程(ffmpeg、Blender、LibreOffice)、macOS 系统调用(截屏、日历、剪贴板)、macOS AX,以及可插拔 CUA 合同。Windows UIA、Linux AT-SPI 和第三方 CUA provider 当前是显式声明的能力边界/接口桩,不按已完成实执行能力宣传;全部通过统一的 `unicli <站点> <命令>` 接口访问。
71
71
 
72
72
  ## 为什么 CLI 比 MCP 强
73
73
 
@@ -95,9 +95,9 @@ unicli search "download video" # → bilibili download, yt-dlp
95
95
 
96
96
  # 运行
97
97
  unicli weibo trending --limit 10 # 微博热搜,零配置
98
- unicli zhihu hot --json # 知乎热榜,JSON 输出
98
+ unicli zhihu hot -f json # 知乎热榜,JSON envelope
99
99
  unicli bilibili popular --limit 5 # B 站热门视频
100
- unicli hackernews top --json | jq '.[].title' # 管道 + 变换
100
+ unicli hackernews top -f json | jq '.data[].title' # 管道 + 变换
101
101
 
102
102
  # 接入 Agent
103
103
  claude mcp add unicli -- npx @zenalexa/unicli mcp serve # Claude Code
@@ -136,35 +136,35 @@ unicli repair --loop # 自主修复循环(Agent 驱动)
136
136
 
137
137
  七个传输层,一个适配器接口,一个输出格式化器。
138
138
 
139
- | 传输层 | 覆盖范围 |
140
- | ------------------ | ------------------------------------------------------------------ |
141
- | **HTTP** | Web API — REST、RSS、JSON、GraphQL |
142
- | **CDP 浏览器** | 通过真实 Chrome 会话访问任意站点(13 层反检测隐身,复用登录状态) |
143
- | **子进程** | ffmpeg、yt-dlp、gh、aws、docker、stripe 等 30+ 工具 |
144
- | **Desktop-AX** | macOS — AppleScript、Accessibility API、快捷指令、日历、邮件 |
145
- | **Desktop-UIA** | Windows — UIAutomation、WinRT |
146
- | **Desktop-AT-SPI** | Linux — 无障碍树、AT-SPI2 |
147
- | **CUA** | Anthropic `computer-use` · OpenAI Operator · Google CUA · 直连 CDP |
139
+ | 传输层 | 覆盖范围 |
140
+ | ------------------ | ----------------------------------------------------------------- |
141
+ | **HTTP** | Web API — REST、RSS、JSON、GraphQL |
142
+ | **CDP 浏览器** | 通过真实 Chrome 会话访问任意站点(13 层反检测隐身,复用登录状态) |
143
+ | **子进程** | ffmpeg、yt-dlp、gh、aws、docker、stripe 等 30+ 工具 |
144
+ | **Desktop-AX** | macOS — AppleScript、Accessibility API、快捷指令、日历、邮件 |
145
+ | **Desktop-UIA** | Windows — 声明式接口桩,尚不按实执行能力宣传 |
146
+ | **Desktop-AT-SPI** | Linux — 声明式接口桩,尚不按实执行能力宣传 |
147
+ | **CUA** | screenshot/action 合同、mock 后端、provider 接口桩 |
148
148
 
149
- 适配器默认使用声明式 YAML(Rice 可判定性——无图灵完备逻辑,可证明终止)。流水线有 <!-- STATS:pipeline_step_count -->54<!-- /STATS -->+ 个步骤:`fetch`、`navigate`、`exec`、`extract`、`each`、`if`、`parallel`、`rate_limit`、`retry` 等。完整文档:[`docs/ADAPTER-FORMAT.md`](docs/ADAPTER-FORMAT.md)。
149
+ 适配器默认使用声明式 YAML(Rice 可判定性——无图灵完备逻辑,可证明终止)。流水线有 <!-- STATS:pipeline_step_count -->59<!-- /STATS -->+ 个步骤:`fetch`、`navigate`、`exec`、`extract`、`each`、`if`、`parallel`、`rate_limit`、`retry` 等。完整文档:[`docs/ADAPTER-FORMAT.md`](docs/ADAPTER-FORMAT.md)。
150
150
 
151
151
  ## 功能矩阵
152
152
 
153
- | 能力 | 详情 |
154
- | ------------------ | ------------------------------------------------------------------------------------ |
155
- | **CUA 后端** | Anthropic `computer-use`、OpenAI Operator、Google CUA、直连 CDP 4 个后端,一个接口 |
156
- | **MCP 传输** | stdio · Streamable HTTP(规范 2025-11-25)· SSE · OAuth 2.1 PKCE |
157
- | **ACP** | `unicli acp` — JSON-RPC 2.0,支持 avante.nvim、Zed、Gemini CLI |
158
- | **跨厂商 Skills** | Claude Code · OpenCode · Codex CLI · Cursor · Windsurf · Cline |
159
- | **自修复** | 每条 stderr 错误携带 `adapter_path` + `step` + `suggestion`(Banach 收敛) |
160
- | **中英双语搜索** | BM25 + TF-IDF · 50KB 索引 · <10ms · 200 条 ZH↔EN 别名表 |
161
- | **浏览器守护进程** | 持久化 Chrome(CDP)· 复用登录状态 · 13 层反检测隐身 |
162
- | **输出格式** | 终端表格 · JSON(管道自动切换)· YAML · CSV · Markdown |
163
- | **认证策略** | public · cookie · CSRF header · browser intercept · UI 自动化 — 自动级联探测 |
153
+ | 能力 | 详情 |
154
+ | ------------------ | -------------------------------------------------------------------------------------- |
155
+ | **CUA 合同** | 稳定 screenshot/action 接口、mock 后端和显式 provider 桩;尚不按真实 computer-use 宣传 |
156
+ | **MCP 传输** | stdio · Streamable HTTP(规范 2025-11-25)· SSE · OAuth 2.1 PKCE |
157
+ | **ACP** | `unicli acp` — JSON-RPC 2.0,支持 avante.nvim、Zed、Gemini CLI |
158
+ | **跨厂商 Skills** | Claude Code · OpenCode · Codex CLI · Cursor · Windsurf · Cline |
159
+ | **自修复** | 每条 stderr 错误携带 `adapter_path` + `step` + `suggestion`(Banach 收敛) |
160
+ | **中英双语搜索** | BM25 + TF-IDF · 50KB 索引 · <10ms · 200 条 ZH↔EN 别名表 |
161
+ | **浏览器守护进程** | 持久化 Chrome(CDP)· 复用登录状态 · 13 层反检测隐身 |
162
+ | **输出格式** | 终端表格 · JSON(管道自动切换)· YAML · CSV · Markdown |
163
+ | **认证策略** | public · cookie · CSRF header · browser intercept · UI 自动化 — 自动级联探测 |
164
164
 
165
165
  ## 平台覆盖
166
166
 
167
- <!-- STATS:site_count -->200<!-- /STATS --> 个站点 · <!-- STATS:command_count -->968<!-- /STATS --> 条命令 — 完整实时列表见 [`AGENTS.md`](AGENTS.md):
167
+ <!-- STATS:site_count -->220<!-- /STATS --> 个站点 · <!-- STATS:command_count -->1283<!-- /STATS --> 条命令 — 完整实时列表见 [`AGENTS.md`](AGENTS.md):
168
168
 
169
169
  | 领域 | 代表站点 |
170
170
  | ------------------- | -------------------------------------------------------------------- |
@@ -293,11 +293,11 @@ npm run verify # 类型检查 + lint + 测试 + 构建(7 个关卡,发布
293
293
  | `npm run build` | 生产构建 |
294
294
  | `npm run typecheck` | TypeScript 严格模式 |
295
295
  | `npm run lint` | Oxlint |
296
- | `npm run test` | 单元测试(<!-- STATS:test_count -->6931<!-- /STATS --> 个) |
296
+ | `npm run test` | 单元测试(<!-- STATS:test_count -->7145<!-- /STATS --> 个) |
297
297
  | `npm run test:adapter` | 验证所有适配器 |
298
298
  | `npm run verify` | 完整流水线 — 发布前必须通过 |
299
299
 
300
- 七个生产依赖:`chalk` · `cli-table3` · `commander` · `js-yaml` · `turndown` · `undici` · `ws`。
300
+ 十一个生产依赖:`ajv` · `ajv-formats` · `chalk` · `cli-table3` · `commander` · `js-yaml` · `jsonpath-plus` · `turndown` · `undici` · `ws` · `zod`。
301
301
 
302
302
  ## 发布节奏
303
303
 
@@ -335,6 +335,6 @@ npm run verify # 类型检查 + lint + 测试 + 构建(7 个关卡,发布
335
335
  </p>
336
336
 
337
337
  <p align="center">
338
- <sub>v0.213.0 — Vostok · Gagarin</sub><br>
339
- <sub><!-- STATS:site_count -->200<!-- /STATS --> 个站点 · <!-- STATS:command_count -->968<!-- /STATS --> 条命令 · <!-- STATS:pipeline_step_count -->54<!-- /STATS --> 个流水线步骤 · BM25+TF-IDF 中英双语搜索 · MCP 2025-11-25 · <!-- STATS:test_count -->6931<!-- /STATS --> 个测试</sub>
338
+ <sub>v0.215.0 — Closed Adapter Loop</sub><br>
339
+ <sub><!-- STATS:site_count -->220<!-- /STATS --> 个站点 · <!-- STATS:command_count -->1283<!-- /STATS --> 条命令 · <!-- STATS:pipeline_step_count -->59<!-- /STATS --> 个流水线步骤 · BM25+TF-IDF 中英双语搜索 · MCP 2025-11-25 · <!-- STATS:test_count -->7145<!-- /STATS --> 个测试</sub>
340
340
  </p>
@@ -0,0 +1,12 @@
1
+ export interface ElectronMediaProfile {
2
+ likedText: string;
3
+ playAllText: string;
4
+ }
5
+ export interface ElectronDesktopCommandProfile {
6
+ displayName?: string;
7
+ media?: ElectronMediaProfile;
8
+ }
9
+ export declare const ELECTRON_DESKTOP_BASE_COMMANDS: readonly ["open-app", "status-app", "dump", "snapshot-app", "click-text", "type-text", "press"];
10
+ export declare const ELECTRON_DESKTOP_MEDIA_COMMANDS: readonly ["play-liked", "play", "pause", "toggle", "next", "prev"];
11
+ export declare function registerElectronDesktopCommands(site: string, profile?: ElectronDesktopCommandProfile): void;
12
+ //# sourceMappingURL=desktop-shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"desktop-shared.d.ts","sourceRoot":"","sources":["../../../src/adapters/_electron/desktop-shared.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,6BAA6B;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,oBAAoB,CAAC;CAC9B;AAED,eAAO,MAAM,8BAA8B,iGAQjC,CAAC;AAEX,eAAO,MAAM,+BAA+B,oEAOlC,CAAC;AAEX,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,6BAAkC,GAC1C,IAAI,CAkJN"}