@zenalexa/unicli 0.224.1 → 0.225.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 (256) hide show
  1. package/AGENTS.md +5 -5
  2. package/README.md +92 -92
  3. package/README.zh-CN.md +69 -69
  4. package/dist/adapters/_electron/desktop-shared.d.ts.map +1 -1
  5. package/dist/adapters/_electron/desktop-shared.js +2 -1
  6. package/dist/adapters/_electron/desktop-shared.js.map +1 -1
  7. package/dist/adapters/_electron/shared.d.ts +6 -0
  8. package/dist/adapters/_electron/shared.d.ts.map +1 -1
  9. package/dist/adapters/_electron/shared.js +9 -0
  10. package/dist/adapters/_electron/shared.js.map +1 -1
  11. package/dist/adapters/antigravity/extra.js +4 -1
  12. package/dist/adapters/antigravity/extra.js.map +1 -1
  13. package/dist/adapters/chatwise/extra.js +4 -1
  14. package/dist/adapters/chatwise/extra.js.map +1 -1
  15. package/dist/adapters/codex/codex.js +3 -1
  16. package/dist/adapters/codex/codex.js.map +1 -1
  17. package/dist/adapters/codex/extra.js +4 -1
  18. package/dist/adapters/codex/extra.js.map +1 -1
  19. package/dist/adapters/codex/projects.d.ts.map +1 -1
  20. package/dist/adapters/codex/projects.js +3 -1
  21. package/dist/adapters/codex/projects.js.map +1 -1
  22. package/dist/adapters/cursor/cursor.js +6 -1
  23. package/dist/adapters/cursor/cursor.js.map +1 -1
  24. package/dist/adapters/discord-app/discord-app.js +10 -1
  25. package/dist/adapters/discord-app/discord-app.js.map +1 -1
  26. package/dist/adapters/notion-app/notion-app.js +11 -1
  27. package/dist/adapters/notion-app/notion-app.js.map +1 -1
  28. package/dist/adapters/spotify/api.js +36 -6
  29. package/dist/adapters/spotify/api.js.map +1 -1
  30. package/dist/adapters/xiaohongshu/browser-state.d.ts +2 -1
  31. package/dist/adapters/xiaohongshu/browser-state.d.ts.map +1 -1
  32. package/dist/adapters/xiaohongshu/browser-state.js +56 -2
  33. package/dist/adapters/xiaohongshu/browser-state.js.map +1 -1
  34. package/dist/adapters/xiaohongshu/feed.d.ts +24 -0
  35. package/dist/adapters/xiaohongshu/feed.d.ts.map +1 -0
  36. package/dist/adapters/xiaohongshu/feed.js +82 -0
  37. package/dist/adapters/xiaohongshu/feed.js.map +1 -0
  38. package/dist/adapters/xueqiu/extra.js +2 -2
  39. package/dist/adapters/xueqiu/extra.js.map +1 -1
  40. package/dist/browser/cdp-client.d.ts +15 -1
  41. package/dist/browser/cdp-client.d.ts.map +1 -1
  42. package/dist/browser/cdp-client.js +45 -16
  43. package/dist/browser/cdp-client.js.map +1 -1
  44. package/dist/browser/daemon.js +29 -7
  45. package/dist/browser/daemon.js.map +1 -1
  46. package/dist/browser/launcher.d.ts.map +1 -1
  47. package/dist/browser/launcher.js +22 -8
  48. package/dist/browser/launcher.js.map +1 -1
  49. package/dist/browser/local-profiles.d.ts +2 -0
  50. package/dist/browser/local-profiles.d.ts.map +1 -1
  51. package/dist/browser/local-profiles.js +42 -2
  52. package/dist/browser/local-profiles.js.map +1 -1
  53. package/dist/browser/page.d.ts +2 -2
  54. package/dist/browser/page.d.ts.map +1 -1
  55. package/dist/browser/page.js +2 -2
  56. package/dist/browser/page.js.map +1 -1
  57. package/dist/browser/protocol.d.ts +7 -0
  58. package/dist/browser/protocol.d.ts.map +1 -1
  59. package/dist/browser/protocol.js +5 -0
  60. package/dist/browser/protocol.js.map +1 -1
  61. package/dist/cli.d.ts.map +1 -1
  62. package/dist/cli.js +4 -3
  63. package/dist/cli.js.map +1 -1
  64. package/dist/commands/architecture.d.ts +3 -1
  65. package/dist/commands/architecture.d.ts.map +1 -1
  66. package/dist/commands/architecture.js +13 -5
  67. package/dist/commands/architecture.js.map +1 -1
  68. package/dist/commands/browser/index.d.ts.map +1 -1
  69. package/dist/commands/browser/index.js +26 -4
  70. package/dist/commands/browser/index.js.map +1 -1
  71. package/dist/commands/delivery.d.ts.map +1 -1
  72. package/dist/commands/delivery.js.map +1 -1
  73. package/dist/commands/describe.d.ts.map +1 -1
  74. package/dist/commands/describe.js +104 -9
  75. package/dist/commands/describe.js.map +1 -1
  76. package/dist/commands/dispatch.d.ts.map +1 -1
  77. package/dist/commands/dispatch.js +3 -13
  78. package/dist/commands/dispatch.js.map +1 -1
  79. package/dist/commands/do.d.ts +16 -13
  80. package/dist/commands/do.d.ts.map +1 -1
  81. package/dist/commands/do.js +72 -18
  82. package/dist/commands/do.js.map +1 -1
  83. package/dist/commands/social.d.ts.map +1 -1
  84. package/dist/commands/social.js +3 -13
  85. package/dist/commands/social.js.map +1 -1
  86. package/dist/core/architecture-tree.d.ts +26 -6
  87. package/dist/core/architecture-tree.d.ts.map +1 -1
  88. package/dist/core/architecture-tree.js +184 -40
  89. package/dist/core/architecture-tree.js.map +1 -1
  90. package/dist/core/capability-matrix.d.ts +63 -0
  91. package/dist/core/capability-matrix.d.ts.map +1 -0
  92. package/dist/core/capability-matrix.js +316 -0
  93. package/dist/core/capability-matrix.js.map +1 -0
  94. package/dist/core/command-contract-lint.d.ts.map +1 -1
  95. package/dist/core/command-contract-lint.js +3 -1
  96. package/dist/core/command-contract-lint.js.map +1 -1
  97. package/dist/core/command-contract.d.ts +10 -3
  98. package/dist/core/command-contract.d.ts.map +1 -1
  99. package/dist/core/command-contract.js +87 -5
  100. package/dist/core/command-contract.js.map +1 -1
  101. package/dist/discovery/aliases.d.ts.map +1 -1
  102. package/dist/discovery/aliases.js +26 -0
  103. package/dist/discovery/aliases.js.map +1 -1
  104. package/dist/discovery/core-catalog.d.ts +1 -0
  105. package/dist/discovery/core-catalog.d.ts.map +1 -1
  106. package/dist/discovery/core-catalog.js +22 -5
  107. package/dist/discovery/core-catalog.js.map +1 -1
  108. package/dist/discovery/intents.d.ts +31 -4
  109. package/dist/discovery/intents.d.ts.map +1 -1
  110. package/dist/discovery/intents.js +166 -3
  111. package/dist/discovery/intents.js.map +1 -1
  112. package/dist/discovery/loader.d.ts.map +1 -1
  113. package/dist/discovery/loader.js +3 -0
  114. package/dist/discovery/loader.js.map +1 -1
  115. package/dist/discovery/search.d.ts.map +1 -1
  116. package/dist/discovery/search.js +10 -1
  117. package/dist/discovery/search.js.map +1 -1
  118. package/dist/engine/cascade.d.ts.map +1 -1
  119. package/dist/engine/cascade.js +21 -25
  120. package/dist/engine/cascade.js.map +1 -1
  121. package/dist/engine/chromium-cookies.d.ts +27 -0
  122. package/dist/engine/chromium-cookies.d.ts.map +1 -1
  123. package/dist/engine/chromium-cookies.js +53 -14
  124. package/dist/engine/chromium-cookies.js.map +1 -1
  125. package/dist/engine/cookie-capture.d.ts +30 -0
  126. package/dist/engine/cookie-capture.d.ts.map +1 -0
  127. package/dist/engine/cookie-capture.js +104 -0
  128. package/dist/engine/cookie-capture.js.map +1 -0
  129. package/dist/engine/cookie-extractor.d.ts.map +1 -1
  130. package/dist/engine/cookie-extractor.js +4 -12
  131. package/dist/engine/cookie-extractor.js.map +1 -1
  132. package/dist/engine/cookie-refresh.d.ts +59 -8
  133. package/dist/engine/cookie-refresh.d.ts.map +1 -1
  134. package/dist/engine/cookie-refresh.js +80 -58
  135. package/dist/engine/cookie-refresh.js.map +1 -1
  136. package/dist/engine/cookie-source.d.ts +110 -0
  137. package/dist/engine/cookie-source.d.ts.map +1 -0
  138. package/dist/engine/cookie-source.js +207 -0
  139. package/dist/engine/cookie-source.js.map +1 -0
  140. package/dist/engine/cookies.d.ts +37 -25
  141. package/dist/engine/cookies.d.ts.map +1 -1
  142. package/dist/engine/cookies.js +58 -157
  143. package/dist/engine/cookies.js.map +1 -1
  144. package/dist/engine/delivery/index.d.ts +2 -1
  145. package/dist/engine/delivery/index.d.ts.map +1 -1
  146. package/dist/engine/delivery/index.js +2 -1
  147. package/dist/engine/delivery/index.js.map +1 -1
  148. package/dist/engine/delivery/spec.d.ts +44 -0
  149. package/dist/engine/delivery/spec.d.ts.map +1 -0
  150. package/dist/engine/delivery/spec.js +82 -0
  151. package/dist/engine/delivery/spec.js.map +1 -0
  152. package/dist/engine/executor.d.ts +17 -6
  153. package/dist/engine/executor.d.ts.map +1 -1
  154. package/dist/engine/executor.js +131 -68
  155. package/dist/engine/executor.js.map +1 -1
  156. package/dist/engine/kernel/stages.d.ts.map +1 -1
  157. package/dist/engine/kernel/stages.js +14 -4
  158. package/dist/engine/kernel/stages.js.map +1 -1
  159. package/dist/engine/objective/catalog.d.ts +23 -0
  160. package/dist/engine/objective/catalog.d.ts.map +1 -0
  161. package/dist/engine/objective/catalog.js +42 -0
  162. package/dist/engine/objective/catalog.js.map +1 -0
  163. package/dist/engine/objective/delivery.d.ts +18 -0
  164. package/dist/engine/objective/delivery.d.ts.map +1 -0
  165. package/dist/engine/objective/delivery.js +64 -0
  166. package/dist/engine/objective/delivery.js.map +1 -0
  167. package/dist/engine/objective/index.d.ts +20 -0
  168. package/dist/engine/objective/index.d.ts.map +1 -0
  169. package/dist/engine/objective/index.js +20 -0
  170. package/dist/engine/objective/index.js.map +1 -0
  171. package/dist/engine/objective/media-playback.d.ts +17 -0
  172. package/dist/engine/objective/media-playback.d.ts.map +1 -0
  173. package/dist/engine/objective/media-playback.js +186 -0
  174. package/dist/engine/objective/media-playback.js.map +1 -0
  175. package/dist/engine/objective/output.d.ts +20 -0
  176. package/dist/engine/objective/output.d.ts.map +1 -0
  177. package/dist/engine/objective/output.js +88 -0
  178. package/dist/engine/objective/output.js.map +1 -0
  179. package/dist/engine/objective/planner.d.ts +17 -0
  180. package/dist/engine/objective/planner.d.ts.map +1 -0
  181. package/dist/engine/objective/planner.js +60 -0
  182. package/dist/engine/objective/planner.js.map +1 -0
  183. package/dist/engine/objective/types.d.ts +66 -0
  184. package/dist/engine/objective/types.d.ts.map +1 -0
  185. package/dist/engine/objective/types.js +16 -0
  186. package/dist/engine/objective/types.js.map +1 -0
  187. package/dist/engine/runtime.d.ts.map +1 -1
  188. package/dist/engine/runtime.js +9 -4
  189. package/dist/engine/runtime.js.map +1 -1
  190. package/dist/engine/step-observer.d.ts +62 -0
  191. package/dist/engine/step-observer.d.ts.map +1 -0
  192. package/dist/engine/step-observer.js +38 -0
  193. package/dist/engine/step-observer.js.map +1 -0
  194. package/dist/engine/steps/browser-helpers.d.ts.map +1 -1
  195. package/dist/engine/steps/browser-helpers.js +36 -8
  196. package/dist/engine/steps/browser-helpers.js.map +1 -1
  197. package/dist/engine/steps/fetch-text.d.ts.map +1 -1
  198. package/dist/engine/steps/fetch-text.js +106 -33
  199. package/dist/engine/steps/fetch-text.js.map +1 -1
  200. package/dist/engine/steps/fetch.d.ts +20 -0
  201. package/dist/engine/steps/fetch.d.ts.map +1 -1
  202. package/dist/engine/steps/fetch.js.map +1 -1
  203. package/dist/engine/steps/index.d.ts +2 -0
  204. package/dist/engine/steps/index.d.ts.map +1 -1
  205. package/dist/engine/steps/index.js +2 -0
  206. package/dist/engine/steps/index.js.map +1 -1
  207. package/dist/engine/steps/split-text.d.ts +26 -0
  208. package/dist/engine/steps/split-text.d.ts.map +1 -0
  209. package/dist/engine/steps/split-text.js +89 -0
  210. package/dist/engine/steps/split-text.js.map +1 -0
  211. package/dist/engine/steps/to-entries.d.ts +9 -0
  212. package/dist/engine/steps/to-entries.d.ts.map +1 -0
  213. package/dist/engine/steps/to-entries.js +27 -0
  214. package/dist/engine/steps/to-entries.js.map +1 -0
  215. package/dist/fast-path/handlers/discovery.d.ts.map +1 -1
  216. package/dist/fast-path/handlers/discovery.js +7 -7
  217. package/dist/fast-path/handlers/discovery.js.map +1 -1
  218. package/dist/manifest-compact.txt +3 -2
  219. package/dist/manifest.json +183 -17
  220. package/dist/mcp/tools.js +1 -1
  221. package/dist/mcp/tools.js.map +1 -1
  222. package/dist/output/auth-guidance.d.ts +17 -3
  223. package/dist/output/auth-guidance.d.ts.map +1 -1
  224. package/dist/output/auth-guidance.js +27 -3
  225. package/dist/output/auth-guidance.js.map +1 -1
  226. package/dist/output/error-map.d.ts.map +1 -1
  227. package/dist/output/error-map.js +4 -0
  228. package/dist/output/error-map.js.map +1 -1
  229. package/package.json +4 -2
  230. package/server.json +2 -2
  231. package/skills/unicli/SKILL.md +1 -1
  232. package/skills/unicli-claude-code/SKILL.md +1 -1
  233. package/skills/unicli-hermes/SKILL.md +1 -1
  234. package/src/adapters/12306/price.yaml +91 -0
  235. package/src/adapters/12306/stations.yaml +52 -0
  236. package/src/adapters/12306/trains.yaml +129 -0
  237. package/src/adapters/_electron/desktop-shared.ts +5 -1
  238. package/src/adapters/_electron/shared.ts +15 -0
  239. package/src/adapters/antigravity/extra.ts +10 -1
  240. package/src/adapters/chatwise/extra.ts +10 -1
  241. package/src/adapters/codex/codex.ts +6 -0
  242. package/src/adapters/codex/extra.ts +10 -1
  243. package/src/adapters/codex/projects.ts +9 -1
  244. package/src/adapters/cursor/cursor.ts +9 -0
  245. package/src/adapters/discord-app/discord-app.ts +16 -1
  246. package/src/adapters/macos/brightness.yaml +6 -3
  247. package/src/adapters/macos/calendar-list.yaml +9 -11
  248. package/src/adapters/macos/calendar-today.yaml +1 -1
  249. package/src/adapters/macos/safari-url.yaml +8 -4
  250. package/src/adapters/maoyan/hot.yaml +1 -1
  251. package/src/adapters/notion-app/notion-app.ts +17 -1
  252. package/src/adapters/spotify/api.ts +54 -8
  253. package/src/adapters/weibo/trending.yaml +2 -0
  254. package/src/adapters/xiaohongshu/browser-state.ts +59 -2
  255. package/src/adapters/xiaohongshu/feed.ts +103 -0
  256. package/src/adapters/xueqiu/extra.ts +5 -2
package/AGENTS.md CHANGED
@@ -36,7 +36,7 @@ it starts only the Uni-CLI automation profile.
36
36
 
37
37
  <!-- BEGIN COUNTS -->
38
38
 
39
- > <!-- STATS:site_count -->312<!-- /STATS --> sites, <!-- STATS:command_count -->1763<!-- /STATS --> commands, <!-- STATS:pipeline_step_count -->103<!-- /STATS --> pipeline steps, BM25 bilingual search. `npm install -g @zenalexa/unicli`
39
+ > <!-- STATS:site_count -->313<!-- /STATS --> sites, <!-- STATS:command_count -->1767<!-- /STATS --> commands, <!-- STATS:pipeline_step_count -->103<!-- /STATS --> pipeline steps, BM25 bilingual search. `npm install -g @zenalexa/unicli`
40
40
 
41
41
  <!-- END COUNTS -->
42
42
 
@@ -46,9 +46,9 @@ it starts only the Uni-CLI automation profile.
46
46
 
47
47
  ### Web (182+ sites)
48
48
 
49
- **Chinese**: zhihu (27), xiaohongshu (22), bilibili (20), douyin (13), douban (12), v2ex (12), weibo (12), linux-do (11), +29 more (`unicli list`)
49
+ **Chinese**: zhihu (27), xiaohongshu (22), bilibili (20), douyin (13), douban (12), v2ex (12), weibo (12), linux-do (11), +28 more (`unicli list`)
50
50
 
51
- **International**: twitter (47), instagram (29), reddit (24), tiktok (18), youtube (17), nowcoder (16), discord-app (15), facebook (15), +73 more (`unicli list`)
51
+ **International**: twitter (47), instagram (29), reddit (24), tiktok (18), youtube (17), nowcoder (16), discord-app (15), facebook (15), +74 more (`unicli list`)
52
52
 
53
53
  **AI / ML**: chatgpt (17), antigravity (16), chatwise (16), notebooklm (15), claude (14), doubao-app (13), yollomi (12), deepseek (9), +16 more (`unicli list`)
54
54
 
@@ -58,7 +58,7 @@ it starts only the Uni-CLI automation profile.
58
58
 
59
59
  **News**: hackernews (11), bloomberg (10), 36kr (5), bbc (5), reuters (5), ithome (3), cnn (2), infoq (2), +3 more (`unicli list`)
60
60
 
61
- **Reference**: spotify (23), netease-music (17), linear (10), imdb (7), marxists-cn (7), bitwarden (7), todoist (7), wikipedia (6), +15 more (`unicli list`)
61
+ **Reference**: spotify (24), netease-music (17), linear (10), imdb (7), marxists-cn (7), bitwarden (7), todoist (7), wikipedia (6), +15 more (`unicli list`)
62
62
 
63
63
  ### macOS (60 cmds)
64
64
 
@@ -128,7 +128,7 @@ allowlist entry without a one-line `// REASON:` justification in
128
128
 
129
129
  ## Version
130
130
 
131
- 0.224.1 — Apollo · Collins
131
+ 0.225.1 — Apollo · Conrad
132
132
 
133
133
  ## MCP one-liner (Claude Desktop / Cursor / Continue)
134
134
 
package/README.md CHANGED
@@ -9,20 +9,22 @@
9
9
  </p>
10
10
 
11
11
  <p align="center">
12
- <strong>The operations substrate for agents that use real software.</strong>
12
+ <strong>The universal computer-control platform for agents: an agent control plane for real software.</strong>
13
13
  </p>
14
14
 
15
15
  <p align="center">
16
- Uni-CLI turns websites, logged-in browsers, desktop apps, local tools, MCP
17
- servers, and system capabilities into searchable, governed, repairable
18
- operations. It is not another website wrapper or generated CLI pile; it is the
19
- execution layer agents can reuse across runtimes when real software drifts.
16
+ Install once, search by intent, and run the smallest governed operation across
17
+ websites, browsers, desktop apps, local tools, files, operating systems, and
18
+ agent protocols. Browser automation, computer-use sandboxes, MCP servers,
19
+ local code execution, accessibility, screenshots, app wrappers, and external
20
+ CLIs are action substrates below one loop: intent in, governed action out,
21
+ evidence back, repair or reroute until the result is delivered.
20
22
  </p>
21
23
 
22
24
  <p align="center">
23
25
  <a href="https://olo-dot-io.github.io/Uni-CLI/">Docs</a>
24
26
  ·
25
- <a href="https://olo-dot-io.github.io/Uni-CLI/reference/sites">Command catalog</a>
27
+ <a href="https://olo-dot-io.github.io/Uni-CLI/reference/sites">Operation catalog</a>
26
28
  ·
27
29
  <a href="https://olo-dot-io.github.io/Uni-CLI/llms.txt">Agent index</a>
28
30
  </p>
@@ -39,16 +41,16 @@
39
41
  </p>
40
42
 
41
43
  <p align="center">
42
- <sub>Native CLI · MCP · ACP · JSON/Markdown envelopes · browser CDP · visual fallback · macOS desktop AX · <!-- STATS:site_count -->312<!-- /STATS --> surfaces · <!-- STATS:test_count -->8976<!-- /STATS --> tests</sub>
44
+ <sub>Native CLI · MCP · ACP · JSON/Markdown envelopes · browser CDP · visual fallback · macOS desktop AX · <!-- STATS:site_count -->313<!-- /STATS --> surfaces · <!-- STATS:test_count -->9117<!-- /STATS --> tests</sub>
43
45
  </p>
44
46
 
45
47
  <p align="center">
46
- <strong>Search by intent. Execute with policy. Record evidence. Repair the path. Deliver the result.</strong><br>
47
- Reuse the same capability from a terminal, an agent loop, MCP, ACP, CI, or a
48
- generated skill without rebuilding the integration.
48
+ <strong>One agent-to-computer control loop. Many substrates. One receipt.</strong><br>
49
+ Search by intent, act through the best available software boundary, observe
50
+ the result, and keep the path repairable across CLI, MCP, ACP, CI, and skills.
49
51
  </p>
50
52
 
51
- ## Start In 30 Seconds
53
+ ## Install And Run In 30 Seconds
52
54
 
53
55
  ```bash
54
56
  npm install -g @zenalexa/unicli
@@ -58,67 +60,67 @@ unicli compute snapshot --app Calculator --format compact
58
60
  npx @zenalexa/unicli mcp serve
59
61
  ```
60
62
 
61
- | Agent problem | Uni-CLI answer |
62
- | ------------------------ | -------------------------------------------------------------------------------------------------- |
63
- | "What tool can do this?" | `unicli search` and `unicli do` turn intent into ranked, inspectable command plans |
64
- | "Can I run it safely?" | permission profiles expose `open`, `confirm`, and `locked` execution modes |
65
- | "What happened?" | every run returns an AgentEnvelope with data, context, retryability, and evidence hooks |
66
- | "The path failed." | `unicli delivery` turns run evidence into diagnosis, next experiment, execution, and repair bounds |
67
- | "The app is local." | desktop transports cover macOS AX, UIA/AT-SPI sidecars, subprocesses, and visual input |
68
- | "Expose it to my agent." | `unicli mcp serve`, ACP, native CLI, and JSON streams share the same catalog |
63
+ | Agent problem | Uni-CLI answer |
64
+ | ----------------------------- | -------------------------------------------------------------------------------------------------- |
65
+ | "What can control this?" | `unicli search` and `unicli do` turn intent into ranked operation plans |
66
+ | "Which boundary should act?" | Web, browser, desktop, subprocess, protocol, and visual substrates share one runtime |
67
+ | "Can I run it safely?" | permission profiles expose `open`, `confirm`, and `locked` execution modes |
68
+ | "What happened?" | every run returns an AgentEnvelope with data, context, retryability, and evidence hooks |
69
+ | "The path failed." | `unicli delivery` turns run evidence into diagnosis, next experiment, execution, and repair bounds |
70
+ | "Expose it to my agent host." | `unicli mcp serve`, ACP, native CLI, and JSON streams expose the same operation contracts |
69
71
 
70
72
  ## Why It Exists
71
73
 
72
74
  The next software user is not only a person with a mouse. It is an agent with a
73
- task, a context window, a permission budget, and a need for evidence. A raw
74
- browser driver gives the agent pixels and selectors. A one-off script gives it
75
- an island. A giant resident tool list burns context before the task starts.
76
-
77
- Uni-CLI is the execution layer in between. It turns useful operations into
78
- typed, searchable commands, keeps dangerous actions behind policy, returns
79
- machine-readable receipts, and makes failures repairable by pointing at the
80
- exact adapter and pipeline step that broke. The delivery operator now adds the
81
- missing model above repair: it classifies why an objective failed, chooses
82
- retry, route switch, auth, permission, or repair, and keeps the next attempt tied
83
- to evidence. Websites are just one surface; real agent work crosses browser,
84
- desktop, subprocess, protocol, and OS boundaries.
85
-
86
- This is why the project combines pieces that usually live apart:
87
-
88
- - a website adapter catalog for public APIs, logged-in sessions, browser
89
- intercepts, downloads, publishing, and search;
90
- - a browser automation layer for ad-hoc navigation, DOM snapshots, network
91
- capture, clicks, typing, screenshots, and render-aware evidence;
92
- - a local computer-use layer for desktop apps, macOS Accessibility, background
93
- input, subprocesses, and visual fallback;
94
- - a CLI hub for external binaries and agent coding tools;
95
- - protocol adapters for MCP, ACP, native CLI, JSON streams, and skills.
96
-
97
- ## The Operating Model
75
+ task, a context window, a permission budget, and a need for evidence. Vehicle
76
+ assistants work because navigation, media, climate, and driving assistance sit
77
+ behind a bounded control surface. General computers need the same idea at larger
78
+ scale: browser state, desktop apps, local tools, files, OS services,
79
+ accessibility trees, screenshots, protocol servers, and website-specific paths
80
+ must become one controllable environment.
81
+
82
+ Uni-CLI is that control surface. It is not a browser library, a computer-use VM,
83
+ a natural-language shell, an MCP server, or a pile of site wrappers. Those are
84
+ all useful substrates. Uni-CLI sits above them and turns agent intent into
85
+ governed software action with an evidence receipt and a repairable path.
86
+
87
+ The platform combines pieces that usually live apart, but they are not separate
88
+ product identities:
89
+
90
+ - operation contracts for reusable actions across websites, apps, OS state,
91
+ local tools, files, and protocols;
92
+ - substrate adapters for HTTP, browser CDP, desktop accessibility, subprocesses,
93
+ visual fallback, MCP, ACP, and external CLIs;
94
+ - an invocation kernel that validates args, evaluates policy, executes through
95
+ the selected substrate, and returns one envelope;
96
+ - an evidence and delivery loop that diagnoses failure, records the next
97
+ hypothesis, reroutes or repairs, and decides whether the objective is done.
98
+
99
+ ## The Computer-Control Loop
98
100
 
99
101
  Every serious agent operation follows the same loop.
100
102
 
101
- | Step | What Uni-CLI gives the agent |
102
- | --------- | ----------------------------------------------------------------------------------------------------------------- |
103
- | Discover | `unicli search` and `unicli do` map intent to command, args, auth mode, examples, and risk signals |
104
- | Execute | Web, browser, desktop, subprocess, and protocol transports run behind one runtime |
105
- | Govern | `open`, `confirm`, and `locked` profiles block risky effects before requests, writes, or spawns |
106
- | Observe | AgentEnvelope v2 returns data, context, retryability, timing, and evidence hooks |
107
- | Diagnose | `unicli delivery assess` classifies failures as product drift, missing context, policy block, or upstream trouble |
108
- | Adapt | `unicli delivery trajectory` records the hypothesis and next executable experiment |
109
- | Retry | `unicli delivery run` executes the next safe experiment through the shared kernel and records the new attempt |
110
- | Deliver | Evidence gates decide whether the objective is satisfied, still active, blocked, or exhausted |
111
- | Re-expose | The same command can be called by humans, agents, MCP clients, ACP clients, and scripts |
103
+ | Step | What Uni-CLI gives the agent |
104
+ | -------- | ------------------------------------------------------------------------------------------------------------------ |
105
+ | Intent | `unicli search` and `unicli do` map a task to candidate operations, args, auth mode, examples, and risk signals |
106
+ | Select | operation contracts choose the smallest boundary that can act: API, browser, desktop, subprocess, protocol, visual |
107
+ | Govern | `open`, `confirm`, and `locked` profiles block risky effects before requests, writes, or spawns |
108
+ | Act | the shared kernel invokes the selected substrate instead of forking wrapper-specific behavior |
109
+ | Observe | AgentEnvelope v2 returns data, context, retryability, timing, and evidence hooks |
110
+ | Diagnose | `unicli delivery assess` classifies failures as product drift, missing context, policy block, or upstream trouble |
111
+ | Repair | `unicli delivery trajectory` and `repair-candidate` keep the next experiment bounded by evidence |
112
+ | Deliver | evidence gates decide whether the objective is satisfied, still active, blocked, or exhausted |
113
+ | Expose | the same operation can be called by humans, agents, MCP clients, ACP clients, CI, and scripts |
112
114
 
113
115
  ## What Makes It Different
114
116
 
115
- | If you start from... | You usually get... | Uni-CLI adds... |
116
- | ------------------------ | --------------------------------------------------- | ------------------------------------------------------------------------------- |
117
- | Browser automation | powerful ad-hoc page control | catalog commands, output contracts, auth posture, run evidence, and repair |
118
- | A generated app CLI | deep access to one application | one searchable runtime across web, desktop, local tools, and agent protocols |
119
- | An MCP server collection | easy agent attachment but high resident tool weight | a low-token CLI path plus MCP profiles when the runtime requires MCP |
120
- | A scraper script | quick data extraction | policy gates, structured errors, typed args, tests, docs, and local overrides |
121
- | Manual computer use | flexible last-mile control | native accessibility first, then browser/visual fallback under the same receipt |
117
+ | If you start from... | You usually get... | Uni-CLI makes it a substrate under... |
118
+ | -------------------------------- | --------------------------------------------------- | --------------------------------------------------------------------------------- |
119
+ | Browser automation | powerful page control | operation contracts, auth posture, evidence, delivery, and repair |
120
+ | Computer-use sandboxes | screen, mouse, keyboard, and benchmark environments | the same agent-to-computer loop used by local apps, browsers, CLIs, and protocols |
121
+ | Natural-language local execution | flexible shell and code access | typed operation boundaries, policy, receipts, and reusable command contracts |
122
+ | MCP server collections | easy agent attachment but high resident tool weight | a compact search-first path plus MCP profiles when the host requires MCP |
123
+ | Per-app or per-site wrappers | deep access to one surface | one governed runtime across web, desktop, local tools, files, and agent protocols |
122
124
 
123
125
  <!-- IF YOU ARE AN AI AGENT: Start here.
124
126
  Install: npm install -g @zenalexa/unicli
@@ -129,24 +131,22 @@ Delivery: write an objective spec, run unicli delivery run spec.json -f json
129
131
  Prefer native CLI / JSON stream / MCP for agent runtimes. Use ACP as an editor compatibility gateway.
130
132
  -->
131
133
 
132
- ## What It Does
133
-
134
- Uni-CLI is not another scraper bundle. It is the execution layer underneath an
135
- agent: a command graph, policy gate, evidence recorder, local computer-use
136
- bridge, and repair loop wrapped behind one CLI contract.
137
-
138
- | Surface | What you get |
139
- | ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
140
- | Websites and APIs | Declarative adapters for public, cookie, header, and browser-intercept workflows |
141
- | Browser automation | CDP steps for navigate, click, type, intercept, snapshot, extract, wait, and related browser work |
142
- | Desktop and macOS | System commands, app adapters, real-time Shortcuts/App Intent discovery, screenshots, clipboard, calendar, brightness, and local tools |
143
- | External CLIs | 59 registered pass-through bridges with install/status discovery |
144
- | Agent backends | Route matrix for native CLI, JSON stream, MCP, ACP, HTTP API, OpenAI-compatible, and bridge routes |
145
- | Operation policy | `open`, `confirm`, and `locked` profiles with effect/risk scopes, local deny rules, `--yes`, and persisted approval memory |
146
- | Evidence | Run traces with environment snapshots, probe/replay/compare scores, structured gate results, browser session leases with tab/auth posture, render-aware evidence, movement checks, and stale-ref details |
147
- | Delivery operator | `unicli delivery assess`, `run`, `trajectory`, and `repair-candidate` for objective-level evidence gates, diagnoses, hypotheses, executed attempts, and bounded repairs |
148
- | Output | v2 `AgentEnvelope` in Markdown, JSON, YAML, CSV, or compact format |
149
- | Repair | Structured errors with `adapter_path`, failing `step`, retryability, suggestions, and alternatives |
134
+ ## What It Controls
135
+
136
+ Uni-CLI treats the computer as the environment and each controllable boundary as
137
+ a substrate. The substrate can be high-level and typed, or low-level and visual;
138
+ the receipt remains the same.
139
+
140
+ | Layer | What it controls |
141
+ | ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
142
+ | Operation contracts | reusable actions with args, output shape, auth posture, safety metadata, source path, and repair path |
143
+ | Web and APIs | public, cookie, header, browser-intercept, download, upload, publish, extract, and search workflows |
144
+ | Browser sessions | CDP navigate/click/type/fill/select/wait/network/screenshot/snapshot/evidence |
145
+ | Desktop and OS | macOS apps, Accessibility refs, screenshots, clipboard, calendar, brightness, app actions, and local system state |
146
+ | Local tools/files | subprocess bridges, external binaries, PDF and paper workflows, file transforms, media tools, and developer CLIs |
147
+ | Agent protocols | native CLI, JSON stream, MCP, ACP, Streamable HTTP, OpenAI-compatible routes, generated configs, and skills |
148
+ | Policy and evidence | permission profiles, deny rules, approvals, run recording, replay, probe, compare, browser session leases, render-aware evidence, movement checks, and stale-ref details |
149
+ | Delivery and repair | `unicli delivery assess`, `run`, `trajectory`, and `repair-candidate` for objective-level evidence gates, diagnoses, hypotheses, executed attempts, reroutes, and bounded repairs |
150
150
 
151
151
  ## Built For Agent Runtimes
152
152
 
@@ -165,19 +165,19 @@ The runtime is agent-friendly in ways that matter during long tasks:
165
165
  - repair instructions point to the owned file instead of asking the agent to
166
166
  guess what changed upstream;
167
167
  - generated docs, `llms.txt`, AGENTS.md, MCP profiles, and skills all describe
168
- the same command catalog.
168
+ the same operation contracts.
169
169
 
170
170
  ## Capability Map
171
171
 
172
- | Layer | Examples |
173
- | -------------------- | ---------------------------------------------------------------------------------------- |
174
- | Search and discovery | `search`, `do`, generated command catalog, docs index, compact catalog, AGENTS surface |
175
- | Web adapters | HTTP, RSS, cookie, header, browser-intercept, download, upload, publish, extract |
176
- | Browser sessions | CDP open/click/type/fill/select/wait/network/screenshot/snapshot/evidence |
177
- | Local computer use | `compute apps`, `snapshot`, `find`, `click`, `type`, `press`, `scroll`, `doctor compute` |
178
- | Desktop/system | macOS, Office, design/media tools, Docker, app actions, subprocess bridges |
179
- | Policy and evidence | permission profiles, deny rules, approvals, run recording, replay, probe, compare |
180
- | Integration | native CLI, MCP stdio, MCP Streamable HTTP, ACP, package exports, agent skills |
172
+ | Layer | Examples |
173
+ | ---------------------- | ---------------------------------------------------------------------------------------- |
174
+ | Intent and discovery | `search`, `do`, generated operation catalog, docs index, compact catalog, AGENTS surface |
175
+ | Operation contract | args, output, auth posture, effect, safety, capability, source path, repair path |
176
+ | Action substrates | HTTP, RSS, CDP, AX/UIA/AT-SPI, subprocess, visual, protocol, app-specific adapters |
177
+ | Local computer control | `compute apps`, `snapshot`, `find`, `click`, `type`, `press`, `scroll`, `doctor compute` |
178
+ | Policy and evidence | permission profiles, deny rules, approvals, run recording, replay, probe, compare |
179
+ | Delivery and repair | objective specs, trajectories, repair candidates, reroutes, evidence gates |
180
+ | Runtime exposure | native CLI, MCP stdio, MCP Streamable HTTP, ACP, package exports, agent skills |
181
181
 
182
182
  ## For Agents
183
183
 
@@ -352,7 +352,7 @@ The wall below is generated from active manifest sites with real logo support. B
352
352
  <p><strong>audio</strong><br>
353
353
  <a data-site="apple-podcasts" href="https://olo-dot-io.github.io/Uni-CLI/reference/sites" title="apple-podcasts: 2 commands"><img alt="apple-podcasts" src="https://img.shields.io/static/v1?label=apple-podcasts&message=2+cmds&color=16a34a&style=flat-square&logo=applepodcasts&logoColor=white"></a>
354
354
  <a data-site="netease-music" href="https://olo-dot-io.github.io/Uni-CLI/reference/sites" title="netease-music: 15 commands"><img alt="netease-music" src="https://img.shields.io/static/v1?label=netease-music&message=15+cmds&color=16a34a&style=flat-square&logo=neteasecloudmusic&logoColor=white"></a>
355
- <a data-site="spotify" href="https://olo-dot-io.github.io/Uni-CLI/reference/sites" title="spotify: 23 commands"><img alt="spotify" src="https://img.shields.io/static/v1?label=spotify&message=23+cmds&color=16a34a&style=flat-square&logo=spotify&logoColor=white"></a>
355
+ <a data-site="spotify" href="https://olo-dot-io.github.io/Uni-CLI/reference/sites" title="spotify: 24 commands"><img alt="spotify" src="https://img.shields.io/static/v1?label=spotify&message=24+cmds&color=16a34a&style=flat-square&logo=spotify&logoColor=white"></a>
356
356
  </p>
357
357
  <p><strong>content</strong><br>
358
358
  <a data-site="pixiv" href="https://olo-dot-io.github.io/Uni-CLI/reference/sites" title="pixiv: 6 commands"><img alt="pixiv" src="https://img.shields.io/static/v1?label=pixiv&message=6+cmds&color=c2410c&style=flat-square&logo=pixiv&logoColor=white"></a>
@@ -552,5 +552,5 @@ npm run verify
552
552
  [Apache-2.0](./LICENSE)
553
553
 
554
554
  <p align="center">
555
- <sub>v0.224.1 — Apollo · Collins</sub>
555
+ <sub>v0.225.1 — Apollo · Conrad</sub>
556
556
  </p>
package/README.zh-CN.md CHANGED
@@ -9,18 +9,21 @@
9
9
  </p>
10
10
 
11
11
  <p align="center">
12
- <strong>给 AI Agent 操作真实软件的执行底座。</strong>
12
+ <strong>AI Agent 控制真实软件的通用 computer-control 平台。</strong>
13
13
  </p>
14
14
 
15
15
  <p align="center">
16
- Uni-CLI 把网站、登录态浏览器、桌面应用、本地工具、MCP 服务和系统能力收进一套可搜索、可治理、可修复的操作层。
17
- 它不是又一个网页 wrapper,也不是生成一堆 CLI;它是 Agent 在真实软件持续漂移时仍能复用的执行层。
16
+ 一次安装,按意图搜索,再通过最小可治理操作控制网站、浏览器、桌面 App、
17
+ 本地工具、文件、操作系统和 Agent 协议。浏览器自动化、computer-use sandbox、
18
+ MCP 服务、本地代码执行、无障碍树、截图、App wrapper 和外部 CLI,
19
+ 都是同一个闭环下面的行动 substrate:意图进入,按策略行动,证据返回,
20
+ 失败后修复或换路,直到结果交付。
18
21
  </p>
19
22
 
20
23
  <p align="center">
21
24
  <a href="https://olo-dot-io.github.io/Uni-CLI/">文档站</a>
22
25
  ·
23
- <a href="https://olo-dot-io.github.io/Uni-CLI/reference/sites">命令目录</a>
26
+ <a href="https://olo-dot-io.github.io/Uni-CLI/reference/sites">操作目录</a>
24
27
  ·
25
28
  <a href="https://olo-dot-io.github.io/Uni-CLI/llms.txt">Agent 索引</a>
26
29
  </p>
@@ -37,15 +40,15 @@
37
40
  </p>
38
41
 
39
42
  <p align="center">
40
- <sub>Native CLI · MCP · ACP · JSON/Markdown envelope · browser CDP · visual fallback · macOS desktop AX · <!-- STATS:site_count -->312<!-- /STATS --> 个 surface · <!-- STATS:test_count -->8976<!-- /STATS --> 个测试</sub>
43
+ <sub>Native CLI · MCP · ACP · JSON/Markdown envelope · browser CDP · visual fallback · macOS desktop AX · <!-- STATS:site_count -->313<!-- /STATS --> 个 surface · <!-- STATS:test_count -->9117<!-- /STATS --> 个测试</sub>
41
44
  </p>
42
45
 
43
46
  <p align="center">
44
- <strong>按意图发现,按策略执行,记录证据,修复路径,交付结果。</strong><br>
45
- 同一份能力可以从终端、Agent loop、MCP、ACP、CI 或生成的 skill 里调用,不需要为每个入口重写一遍集成。
47
+ <strong>一条 Agent-to-computer 控制闭环,多种 substrate,同一种回执。</strong><br>
48
+ 按意图搜索,通过最合适的软件边界行动,观察结果,并让路径在 CLI、MCP、ACP、CI skill 中保持可修复。
46
49
  </p>
47
50
 
48
- ## 30 秒开始
51
+ ## 30 秒安装并运行
49
52
 
50
53
  ```bash
51
54
  npm install -g @zenalexa/unicli
@@ -55,54 +58,53 @@ unicli compute snapshot --app Calculator --format compact
55
58
  npx @zenalexa/unicli mcp serve
56
59
  ```
57
60
 
58
- | Agent 遇到的问题 | Uni-CLI 给的答案 |
59
- | ---------------------- | ------------------------------------------------------------------------------- |
60
- | "哪个工具能做这个?" | `unicli search` 和 `unicli do` 把意图转成可检查、可执行的命令计划 |
61
- | "能不能安全地跑?" | permission profile 暴露 `open`、`confirm`、`locked` 三种执行模式 |
62
- | "刚才发生了什么?" | 每次运行都返回带 data、context、retryability 和证据钩子的 AgentEnvelope |
63
- | "这条路径失败了。" | `unicli delivery` 把运行证据转成诊断、下一次实验、执行和修复边界 |
64
- | "目标是本地应用。" | desktop transport 覆盖 macOS AX、UIA/AT-SPI sidecar、subprocess 和 visual input |
65
- | "把它接给我的 Agent。" | `unicli mcp serve`、ACP、native CLI、JSON stream 共享同一个目录 |
61
+ | Agent 遇到的问题 | Uni-CLI 给的答案 |
62
+ | --------------------------- | -------------------------------------------------------------------------------- |
63
+ | "什么能控制这个?" | `unicli search` 和 `unicli do` 把意图转成排序后的操作计划 |
64
+ | "应该走哪个软件边界?" | Web、browser、desktop、subprocess、protocol、visual substrate 共享同一个 runtime |
65
+ | "能不能安全地跑?" | permission profile 暴露 `open`、`confirm`、`locked` 三种执行模式 |
66
+ | "刚才发生了什么?" | 每次运行都返回带 data、context、retryability 和证据钩子的 AgentEnvelope |
67
+ | "这条路径失败了。" | `unicli delivery` 把运行证据转成诊断、下一次实验、执行和修复边界 |
68
+ | "把它接给我的 Agent host。" | `unicli mcp serve`、ACP、native CLI、JSON stream 暴露同一份操作合同 |
66
69
 
67
70
  ## 为什么需要它
68
71
 
69
- 下一代软件用户不只是拿鼠标的人,也会是带着任务、上下文窗口、权限预算和证据需求的 Agent。直接给浏览器驱动,Agent 得临场猜 selector;写一个脚本,只能解决一个孤岛;把巨大工具列表常驻到上下文里,还没开始任务就先烧掉一截 token。
72
+ 下一代软件用户不只是拿鼠标的人,也会是带着任务、上下文窗口、权限预算和证据需求的 Agent。车载助手能成立,是因为导航、媒体、空调、辅助驾驶都在一个有边界的控制层下面。通用 computer 也有同样结构,只是规模更大:浏览器状态、桌面 App、本地工具、文件、OS 服务、无障碍树、截图、协议服务、站点路径,都需要被编译成一个可控环境。
70
73
 
71
- Uni-CLI 做的是中间那层执行底座:把可复用操作整理成 typed、可搜索的命令;把危险动作放到策略闸门后面;把结果变成机器可读回执;失败时明确指出坏掉的 adapter pipeline step。交付 operator 补上 repair 上方缺失的模型:判断一个目标为什么没交付,选择重试、换路径、补认证、请求权限或进入有边界的修复,并让下一次尝试继续绑定证据。网页只是其中一个 surface,真正的 Agent 任务会同时跨过 browser、desktop、subprocess、protocol 和 OS 边界。
74
+ Uni-CLI 就是这个控制面。它不是浏览器库、computer-use VM、自然语言 shell、MCP 服务,也不是一堆站点 wrapper;这些都是有价值的 substrate。Uni-CLI 位于它们之上,把 Agent 的意图变成可治理的软件动作,返回证据回执,并保留可修复、可换路的路径。
72
75
 
73
- 所以这个项目把通常分散的几块放在一起:
76
+ 因此项目里这些能力不是并列身份,而是同一个平台的下层:
74
77
 
75
- - 网站 adapter catalog:公开 API、登录态会话、浏览器 intercept、下载、发布、搜索;
76
- - 浏览器自动化层:临场导航、DOM snapshot、网络捕获、点击、输入、截图、render-aware 证据;
77
- - 本地 computer-use 层:桌面应用、macOS Accessibility、后台输入、subprocess、visual fallback
78
- - CLI hub:外部二进制、开发者工具、Agent coding tools;
79
- - 协议层:MCP、ACP、native CLI、JSON stream、skills。
78
+ - operation contract:覆盖网站、App、OS 状态、本地工具、文件和协议的可复用动作;
79
+ - substrate adapter:HTTP、browser CDP、desktop accessibility、subprocess、visual fallback、MCP、ACP、external CLI;
80
+ - invocation kernel:校验参数、执行策略、选择 substrate、统一 envelope
81
+ - evidence / delivery loop:诊断失败、记录下一条假设、修复或换路,并判断目标是否已经交付。
80
82
 
81
- ## 操作模型
83
+ ## Computer-Control 闭环
82
84
 
83
85
  严肃的 Agent 操作基本都走同一条链路。
84
86
 
85
- | 步骤 | Uni-CLI 给 Agent 的东西 |
86
- | ------ | ------------------------------------------------------------------------------------- |
87
- | 发现 | `unicli search` 和 `unicli do` 把一句任务话映射成命令、参数、认证方式、样例和风险信号 |
88
- | 执行 | Web、browser、desktop、subprocess、protocol transport 走同一个 runtime |
89
- | 治理 | `open`、`confirm`、`locked` profile 在请求、写入、启动进程前拦住高风险动作 |
90
- | 观察 | AgentEnvelope v2 返回 data、context、retryability、耗时和证据 hook |
91
- | 诊断 | `unicli delivery assess` 把失败归为产品漂移、缺少上下文、策略阻断或上游/环境问题 |
92
- | 调整 | `unicli delivery trajectory` 记录假设和下一次可执行实验 |
93
- | 重试 | `unicli delivery run` 通过共享 kernel 执行下一次安全实验,并记录新的 attempt |
94
- | 交付 | evidence gate 判断目标已交付、仍在进行、被阻断,还是已经耗尽 |
95
- | 再暴露 | 同一条命令可以给人、Agent、MCP client、ACP client 和脚本调用 |
87
+ | 步骤 | Uni-CLI 给 Agent 的东西 |
88
+ | ---- | -------------------------------------------------------------------------------------------- |
89
+ | 意图 | `unicli search` 和 `unicli do` 把任务映射成候选操作、参数、认证方式、样例和风险信号 |
90
+ | 选择 | operation contract 选择能行动的最小边界:API、browser、desktop、subprocess、protocol、visual |
91
+ | 治理 | `open`、`confirm`、`locked` profile 在请求、写入、启动进程前拦住高风险动作 |
92
+ | 行动 | 共享 kernel 调用选中的 substrate,不让 wrapper 各自定义行为 |
93
+ | 观察 | AgentEnvelope v2 返回 data、context、retryability、耗时和证据 hook |
94
+ | 诊断 | `unicli delivery assess` 把失败归为产品漂移、缺少上下文、策略阻断或上游/环境问题 |
95
+ | 修复 | `unicli delivery trajectory` `repair-candidate` 让下一次实验继续受证据约束 |
96
+ | 交付 | evidence gate 判断目标已交付、仍在进行、被阻断,还是已经耗尽 |
97
+ | 暴露 | 同一条操作可以给人、Agent、MCP client、ACP client、CI 和脚本调用 |
96
98
 
97
99
  ## 和常见路径的区别
98
100
 
99
- | 如果从...开始 | 通常会得到... | Uni-CLI 补上的东西 |
100
- | ------------------- | ------------------------------------- | ----------------------------------------------------------------------------- |
101
- | 浏览器自动化 | 强大的临场网页控制 | 命令目录、输出合同、登录态姿态、运行证据和修复路径 |
102
- | 生成某个 App CLI | 对单个应用的深访问 | 横跨 web、desktop、本地工具和 Agent 协议的一套可搜索 runtime |
103
- | MCP server 集合 | Agent 很方便,但常驻工具上下文很重 | token 的 CLI 主路径,以及运行时需要时才启用的 MCP profile |
104
- | 爬虫脚本 | 快速提取数据 | 权限策略、结构化错误、typed args、测试、文档和本地 override |
105
- | 手动 computer use | 灵活的最后一公里控制 | 优先走 native accessibility,必要时落到 browser/visual fallback,回执仍然统一 |
101
+ | 如果从...开始 | 通常会得到... | Uni-CLI 把它放到哪个上位模型下面 |
102
+ | ----------------------- | --------------------------------- | -------------------------------------------------------------------- |
103
+ | 浏览器自动化 | 强大的网页控制 | operation contract、登录态姿态、证据、交付和修复 |
104
+ | computer-use sandbox | 屏幕、鼠标、键盘和 benchmark 环境 | 和本地 App、浏览器、CLI、协议共用的 Agent-to-computer 闭环 |
105
+ | 自然语言本地执行 | 灵活的 shell 和代码能力 | typed 操作边界、策略、回执和可复用合同 |
106
+ | MCP server 集合 | 接 Agent 很方便,但常驻上下文很重 | search-first 的低 token 主路径,以及 host 需要时才启用的 MCP profile |
107
+ | App / 单站点 wrapper | 对一个 surface 的深访问 | 横跨 web、desktop、本地工具、文件和 Agent 协议的一套可治理 runtime |
106
108
 
107
109
  <!-- IF YOU ARE AN AI AGENT: Start here.
108
110
  Install: npm install -g @zenalexa/unicli
@@ -113,22 +115,20 @@ Delivery: write an objective spec, run unicli delivery run spec.json -f json
113
115
  Prefer native CLI / JSON stream / MCP for agent runtimes. Use ACP as an editor compatibility gateway.
114
116
  -->
115
117
 
116
- ## 它解决什么
118
+ ## 它控制什么
117
119
 
118
- Uni-CLI 不是又一个 scraper 包,而是 Agent 底下的执行层:命令图谱、策略闸门、证据记录、本地 computer-use bridge 和自修复 loop,都收在同一个 CLI 合同里。
120
+ Uni-CLI computer 当作环境,把每一个可控边界当作 substrate。substrate 可以是高层 typed API,也可以是低层 visual;回执保持同一种。
119
121
 
120
- | 表面 | 能力 |
121
- | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
122
- | 网站和 API | publiccookie、header、browser-intercept 等 adapter |
123
- | 浏览器自动化 | CDP navigateclicktype、intercept、snapshot、extract、wait 等步骤 |
124
- | 桌面和 macOS | 系统命令、App adapter、实时 Shortcuts/App Intent 发现、截图、剪贴板、日历、亮度、本地工具 |
125
- | 外部 CLI | 58 个已登记的 passthrough bridge,支持安装和状态发现 |
126
- | Agent 后端 | native CLI、JSON stream、MCP、ACP、HTTP API、OpenAI-compatible、bridge 路由矩阵 |
127
- | 操作策略 | `open`、`confirm`、`locked` profile,暴露 effect/risk scope、本地 deny 规则、`--yes` 和持久审批记忆 |
128
- | 执行证据 | run trace 会记录环境快照,也能 probe/replay/compare 打分并输出结构化 gate 结果;浏览器 session lease 带 tab/auth 姿态,还支持 render-aware 证据、移动检测和 stale-ref 细节 |
129
- | 交付 operator | `unicli delivery assess`、`run`、`trajectory`、`repair-candidate`,覆盖 objective-level evidence gate、diagnosis、hypothesis、已执行尝试和有边界修复 |
130
- | 输出 | v2 `AgentEnvelope`,支持 Markdown、JSON、YAML、CSV、compact |
131
- | 修复 | 错误里带 `adapter_path`、失败 `step`、是否可重试、修复建议和替代命令 |
122
+ | 层级 | 能力 |
123
+ | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
124
+ | Operation contract | 可复用动作,带 args、输出形状、认证姿态、安全元数据、source pathrepair path |
125
+ | Web API | publiccookieheaderbrowser-intercept、downloadupload、publish、extract、search 工作流 |
126
+ | Browser session | CDP navigate/click/type/fill/select/wait/network/screenshot/snapshot/evidence |
127
+ | Desktop 和 OS | macOS App、Accessibility ref、截图、剪贴板、日历、亮度、App action、本地系统状态 |
128
+ | 本地工具和文件 | subprocess bridge、外部二进制、PDF/论文工作流、文件转换、媒体工具、开发者 CLI |
129
+ | Agent 协议 | native CLI、JSON stream、MCP、ACP、Streamable HTTP、OpenAI-compatible route、生成配置、skill |
130
+ | 策略和证据 | permission profile、deny rule、approval、run recording、replay、probecompare、browser session leaserender-aware evidence、movement check、stale-ref 细节 |
131
+ | 交付和修复 | `unicli delivery assess`、`run`、`trajectory`、`repair-candidate`,覆盖 evidence gate、diagnosis、hypothesis、已执行尝试、换路和有边界修复 |
132
132
 
133
133
  ## 为 Agent Runtime 设计
134
134
 
@@ -140,19 +140,19 @@ Uni-CLI 在边界上刻意保持朴素:进程、文件、JSON、Markdown 和
140
140
  - 输出足够稳定,可以 pipe 给 `jq`、存为证据,或者继续喂给下一步工具;
141
141
  - auth failure、empty result、timeout、blocked action 是不同 exit state;
142
142
  - repair instruction 指向我们拥有的文件,而不是让 Agent 猜 upstream 哪儿变了;
143
- - 生成文档、`llms.txt`、AGENTS.md、MCP profile 和 skills 描述的是同一份命令目录。
143
+ - 生成文档、`llms.txt`、AGENTS.md、MCP profile 和 skills 描述的是同一份操作合同。
144
144
 
145
145
  ## 能力地图
146
146
 
147
- | 层级 | 例子 |
148
- | ----------------- | ---------------------------------------------------------------------------------------- |
149
- | 搜索和发现 | `search`、`do`、生成命令目录、docs index、compact catalog、AGENTS surface |
150
- | Web adapter | HTTPRSScookieheaderbrowser-interceptdownloaduploadpublish、extract |
151
- | 浏览器 session | CDP open/click/type/fill/select/wait/network/screenshot/snapshot/evidence |
152
- | 本地 computer use | `compute apps`、`snapshot`、`find`、`click`、`type`、`press`、`scroll`、`doctor compute` |
153
- | 桌面和系统 | macOSOffice、设计/音视频工具、DockerApp actionssubprocess bridge |
154
- | 策略和证据 | permission profiledeny ruleapprovalrun recording、replay、probe、compare |
155
- | 集成 | native CLI、MCP stdio、MCP Streamable HTTP、ACP、package export、agent skills |
147
+ | 层级 | 例子 |
148
+ | --------------------- | ---------------------------------------------------------------------------------------- |
149
+ | 意图和发现 | `search`、`do`、生成操作目录、docs index、compact catalog、AGENTS surface |
150
+ | Operation contract | argsoutputauth postureeffectsafetycapabilitysource pathrepair path |
151
+ | 行动 substrate | HTTP、RSS、CDP、AX/UIA/AT-SPI、subprocess、visual、protocol、App-specific adapter |
152
+ | 本地 computer control | `compute apps`、`snapshot`、`find`、`click`、`type`、`press`、`scroll`、`doctor compute` |
153
+ | 策略和证据 | permission profiledeny ruleapproval、run recordingreplay、probe、compare |
154
+ | 交付和修复 | objective spectrajectory、repair candidatererouteevidence gate |
155
+ | Runtime 暴露 | native CLI、MCP stdio、MCP Streamable HTTP、ACP、package export、agent skills |
156
156
 
157
157
  ## 给 Agent 的入口
158
158
 
@@ -311,7 +311,7 @@ ACP 作为编辑器和桥接兼容层保留。真正跑任务时,优先 native
311
311
  <p><strong>音频</strong><br>
312
312
  <a data-site="apple-podcasts" href="https://olo-dot-io.github.io/Uni-CLI/reference/sites" title="apple-podcasts: 2 commands"><img alt="apple-podcasts" src="https://img.shields.io/static/v1?label=apple-podcasts&message=2+cmds&color=16a34a&style=flat-square&logo=applepodcasts&logoColor=white"></a>
313
313
  <a data-site="netease-music" href="https://olo-dot-io.github.io/Uni-CLI/reference/sites" title="netease-music: 15 commands"><img alt="netease-music" src="https://img.shields.io/static/v1?label=netease-music&message=15+cmds&color=16a34a&style=flat-square&logo=neteasecloudmusic&logoColor=white"></a>
314
- <a data-site="spotify" href="https://olo-dot-io.github.io/Uni-CLI/reference/sites" title="spotify: 23 commands"><img alt="spotify" src="https://img.shields.io/static/v1?label=spotify&message=23+cmds&color=16a34a&style=flat-square&logo=spotify&logoColor=white"></a>
314
+ <a data-site="spotify" href="https://olo-dot-io.github.io/Uni-CLI/reference/sites" title="spotify: 24 commands"><img alt="spotify" src="https://img.shields.io/static/v1?label=spotify&message=24+cmds&color=16a34a&style=flat-square&logo=spotify&logoColor=white"></a>
315
315
  </p>
316
316
  <p><strong>内容</strong><br>
317
317
  <a data-site="pixiv" href="https://olo-dot-io.github.io/Uni-CLI/reference/sites" title="pixiv: 6 commands"><img alt="pixiv" src="https://img.shields.io/static/v1?label=pixiv&message=6+cmds&color=c2410c&style=flat-square&logo=pixiv&logoColor=white"></a>
@@ -496,5 +496,5 @@ npm run verify
496
496
  [Apache-2.0](./LICENSE)
497
497
 
498
498
  <p align="center">
499
- <sub>v0.224.1 — Apollo · Collins</sub>
499
+ <sub>v0.225.1 — Apollo · Conrad</sub>
500
500
  </p>
@@ -1 +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;AAOX,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,6BAAkC,GAC1C,IAAI,CAyJN"}
1
+ {"version":3,"file":"desktop-shared.d.ts","sourceRoot":"","sources":["../../../src/adapters/_electron/desktop-shared.ts"],"names":[],"mappings":"AAYA,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;AAQX,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,6BAAkC,GAC1C,IAAI,CAyJN"}
@@ -1,7 +1,7 @@
1
1
  import { cli, Strategy } from "../../registry.js";
2
2
  import { getElectronApp, resolveAppControlPolicy, } from "../../electron-apps.js";
3
3
  import { launchElectronApp } from "../../browser/launcher.js";
4
- import { connectElectronApp } from "./shared.js";
4
+ import { connectElectronApp, ELECTRON_APP_MINIMUM_CAPABILITY, } from "./shared.js";
5
5
  export const ELECTRON_DESKTOP_BASE_COMMANDS = [
6
6
  "open-app",
7
7
  "status-app",
@@ -22,6 +22,7 @@ export const ELECTRON_DESKTOP_MEDIA_COMMANDS = [
22
22
  const ELECTRON_DESKTOP_COMMAND_META = {
23
23
  adapter_path: "src/adapters/electron-desktop/electron-desktop.ts",
24
24
  target_surface: "desktop",
25
+ minimum_capability: ELECTRON_APP_MINIMUM_CAPABILITY,
25
26
  };
26
27
  export function registerElectronDesktopCommands(site, profile = {}) {
27
28
  const app = getElectronApp(site);