@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.
- package/AGENTS.md +10 -10
- package/README.md +40 -27
- package/README.zh-CN.md +36 -36
- package/dist/adapters/_electron/desktop-shared.d.ts +12 -0
- package/dist/adapters/_electron/desktop-shared.d.ts.map +1 -0
- package/dist/adapters/_electron/desktop-shared.js +312 -0
- package/dist/adapters/_electron/desktop-shared.js.map +1 -0
- package/dist/adapters/electron-desktop/electron-desktop.d.ts +9 -0
- package/dist/adapters/electron-desktop/electron-desktop.d.ts.map +1 -0
- package/dist/adapters/electron-desktop/electron-desktop.js +56 -0
- package/dist/adapters/electron-desktop/electron-desktop.js.map +1 -0
- package/dist/browser/adapter-authoring.d.ts +20 -0
- package/dist/browser/adapter-authoring.d.ts.map +1 -0
- package/dist/browser/adapter-authoring.js +68 -0
- package/dist/browser/adapter-authoring.js.map +1 -0
- package/dist/browser/analyze.d.ts +54 -0
- package/dist/browser/analyze.d.ts.map +1 -0
- package/dist/browser/analyze.js +205 -0
- package/dist/browser/analyze.js.map +1 -0
- package/dist/browser/bridge.d.ts +1 -1
- package/dist/browser/bridge.d.ts.map +1 -1
- package/dist/browser/bridge.js +2 -0
- package/dist/browser/bridge.js.map +1 -1
- package/dist/browser/daemon-client.d.ts.map +1 -1
- package/dist/browser/daemon-client.js +12 -1
- package/dist/browser/daemon-client.js.map +1 -1
- package/dist/browser/network-cache.d.ts +58 -0
- package/dist/browser/network-cache.d.ts.map +1 -0
- package/dist/browser/network-cache.js +146 -0
- package/dist/browser/network-cache.js.map +1 -0
- package/dist/browser/page.d.ts +1 -1
- package/dist/browser/page.d.ts.map +1 -1
- package/dist/browser/page.js +2 -1
- package/dist/browser/page.js.map +1 -1
- package/dist/browser/protocol.d.ts +6 -2
- package/dist/browser/protocol.d.ts.map +1 -1
- package/dist/browser/site-memory.d.ts +57 -0
- package/dist/browser/site-memory.d.ts.map +1 -0
- package/dist/browser/site-memory.js +127 -0
- package/dist/browser/site-memory.js.map +1 -0
- package/dist/browser/verify-fixture.d.ts +30 -0
- package/dist/browser/verify-fixture.d.ts.map +1 -0
- package/dist/browser/verify-fixture.js +168 -0
- package/dist/browser/verify-fixture.js.map +1 -0
- package/dist/browser/workspace.d.ts +8 -0
- package/dist/browser/workspace.d.ts.map +1 -0
- package/dist/browser/workspace.js +15 -0
- package/dist/browser/workspace.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +11 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/browser-adapter-authoring.d.ts +3 -0
- package/dist/commands/browser-adapter-authoring.d.ts.map +1 -0
- package/dist/commands/browser-adapter-authoring.js +206 -0
- package/dist/commands/browser-adapter-authoring.js.map +1 -0
- package/dist/commands/browser-authoring-operator.d.ts +3 -0
- package/dist/commands/browser-authoring-operator.d.ts.map +1 -0
- package/dist/commands/browser-authoring-operator.js +110 -0
- package/dist/commands/browser-authoring-operator.js.map +1 -0
- package/dist/commands/browser-operator-runtime.d.ts +38 -0
- package/dist/commands/browser-operator-runtime.d.ts.map +1 -0
- package/dist/commands/browser-operator-runtime.js +281 -0
- package/dist/commands/browser-operator-runtime.js.map +1 -0
- package/dist/commands/browser-operator.d.ts +6 -0
- package/dist/commands/browser-operator.d.ts.map +1 -0
- package/dist/commands/browser-operator.js +374 -0
- package/dist/commands/browser-operator.js.map +1 -0
- package/dist/commands/browser.d.ts.map +1 -1
- package/dist/commands/browser.js +72 -1
- package/dist/commands/browser.js.map +1 -1
- package/dist/commands/daemon.d.ts.map +1 -1
- package/dist/commands/daemon.js +40 -4
- package/dist/commands/daemon.js.map +1 -1
- package/dist/commands/describe.d.ts +26 -0
- package/dist/commands/describe.d.ts.map +1 -0
- package/dist/commands/describe.js +230 -0
- package/dist/commands/describe.js.map +1 -0
- package/dist/commands/dev.js +1 -1
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/dispatch.d.ts +14 -3
- package/dist/commands/dispatch.d.ts.map +1 -1
- package/dist/commands/dispatch.js +141 -81
- package/dist/commands/dispatch.js.map +1 -1
- package/dist/commands/explore.d.ts.map +1 -1
- package/dist/commands/explore.js +4 -1
- package/dist/commands/explore.js.map +1 -1
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +4 -1
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/health.d.ts.map +1 -1
- package/dist/commands/health.js +1 -1
- package/dist/commands/health.js.map +1 -1
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +14 -14
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/migrate-schema.d.ts.map +1 -1
- package/dist/commands/migrate-schema.js +10 -0
- package/dist/commands/migrate-schema.js.map +1 -1
- package/dist/commands/operate.d.ts +4 -3
- package/dist/commands/operate.d.ts.map +1 -1
- package/dist/commands/operate.js +8 -483
- package/dist/commands/operate.js.map +1 -1
- package/dist/commands/record.d.ts.map +1 -1
- package/dist/commands/record.js +2 -1
- package/dist/commands/record.js.map +1 -1
- package/dist/commands/search.js +1 -1
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/skills.d.ts.map +1 -1
- package/dist/commands/skills.js +2 -2
- package/dist/commands/skills.js.map +1 -1
- package/dist/commands/synthesize.d.ts.map +1 -1
- package/dist/commands/synthesize.js +33 -3
- package/dist/commands/synthesize.js.map +1 -1
- package/dist/constants.d.ts +2 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +2 -0
- package/dist/constants.js.map +1 -1
- package/dist/discovery/aliases.d.ts.map +1 -1
- package/dist/discovery/aliases.js +76 -1
- package/dist/discovery/aliases.js.map +1 -1
- package/dist/discovery/loader.d.ts +8 -0
- package/dist/discovery/loader.d.ts.map +1 -1
- package/dist/discovery/loader.js +25 -2
- package/dist/discovery/loader.js.map +1 -1
- package/dist/electron-apps.d.ts +22 -0
- package/dist/electron-apps.d.ts.map +1 -1
- package/dist/electron-apps.js +324 -0
- package/dist/electron-apps.js.map +1 -1
- package/dist/engine/args.d.ts +83 -0
- package/dist/engine/args.d.ts.map +1 -0
- package/dist/engine/args.js +260 -0
- package/dist/engine/args.js.map +1 -0
- package/dist/engine/download.d.ts.map +1 -1
- package/dist/engine/download.js +12 -5
- package/dist/engine/download.js.map +1 -1
- package/dist/engine/executor.d.ts +20 -1
- package/dist/engine/executor.d.ts.map +1 -1
- package/dist/engine/executor.js +11 -2
- package/dist/engine/executor.js.map +1 -1
- package/dist/engine/harden.d.ts +48 -0
- package/dist/engine/harden.d.ts.map +1 -0
- package/dist/engine/harden.js +327 -0
- package/dist/engine/harden.js.map +1 -0
- package/dist/engine/invoke.d.ts +16 -0
- package/dist/engine/invoke.d.ts.map +1 -0
- package/dist/engine/invoke.js +15 -0
- package/dist/engine/invoke.js.map +1 -0
- package/dist/engine/kernel/compile.d.ts +30 -0
- package/dist/engine/kernel/compile.d.ts.map +1 -0
- package/dist/engine/kernel/compile.js +167 -0
- package/dist/engine/kernel/compile.js.map +1 -0
- package/dist/engine/kernel/execute.d.ts +35 -0
- package/dist/engine/kernel/execute.d.ts.map +1 -0
- package/dist/engine/kernel/execute.js +221 -0
- package/dist/engine/kernel/execute.js.map +1 -0
- package/dist/engine/kernel/types.d.ts +49 -0
- package/dist/engine/kernel/types.d.ts.map +1 -0
- package/dist/engine/kernel/types.js +9 -0
- package/dist/engine/kernel/types.js.map +1 -0
- package/dist/engine/kernel/ulid.d.ts +21 -0
- package/dist/engine/kernel/ulid.d.ts.map +1 -0
- package/dist/engine/kernel/ulid.js +76 -0
- package/dist/engine/kernel/ulid.js.map +1 -0
- package/dist/engine/repair/engine.js +2 -2
- package/dist/engine/repair/engine.js.map +1 -1
- package/dist/engine/steps/desktop-ax.d.ts +10 -0
- package/dist/engine/steps/desktop-ax.d.ts.map +1 -1
- package/dist/engine/steps/desktop-ax.js +20 -0
- package/dist/engine/steps/desktop-ax.js.map +1 -1
- package/dist/engine/steps/exec.d.ts +1 -1
- package/dist/engine/steps/exec.d.ts.map +1 -1
- package/dist/engine/steps/exec.js +20 -1
- package/dist/engine/steps/exec.js.map +1 -1
- package/dist/engine/steps/write-temp.js +1 -1
- package/dist/engine/steps/write-temp.js.map +1 -1
- package/dist/engine/template.d.ts.map +1 -1
- package/dist/engine/template.js +21 -2
- package/dist/engine/template.js.map +1 -1
- package/dist/manifest-compact.txt +8 -7
- package/dist/manifest-search.json +1 -1
- package/dist/manifest.json +2161 -171
- package/dist/mcp/dispatch.d.ts +46 -0
- package/dist/mcp/dispatch.d.ts.map +1 -0
- package/dist/mcp/dispatch.js +109 -0
- package/dist/mcp/dispatch.js.map +1 -0
- package/dist/mcp/handler.d.ts +30 -0
- package/dist/mcp/handler.d.ts.map +1 -0
- package/dist/mcp/handler.js +293 -0
- package/dist/mcp/handler.js.map +1 -0
- package/dist/mcp/http-transport.d.ts +16 -0
- package/dist/mcp/http-transport.d.ts.map +1 -0
- package/dist/mcp/http-transport.js +121 -0
- package/dist/mcp/http-transport.js.map +1 -0
- package/dist/mcp/server.d.ts +17 -33
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +31 -742
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/sse-transport.js.map +1 -1
- package/dist/mcp/streamable-http/handle-post.d.ts +23 -0
- package/dist/mcp/streamable-http/handle-post.d.ts.map +1 -0
- package/dist/mcp/streamable-http/handle-post.js +357 -0
- package/dist/mcp/streamable-http/handle-post.js.map +1 -0
- package/dist/mcp/streamable-http/index.d.ts +45 -0
- package/dist/mcp/streamable-http/index.d.ts.map +1 -0
- package/dist/mcp/streamable-http/index.js +150 -0
- package/dist/mcp/streamable-http/index.js.map +1 -0
- package/dist/mcp/streamable-http/session.d.ts +85 -0
- package/dist/mcp/streamable-http/session.d.ts.map +1 -0
- package/dist/mcp/streamable-http/session.js +104 -0
- package/dist/mcp/streamable-http/session.js.map +1 -0
- package/dist/mcp/streamable-http.d.ts +7 -85
- package/dist/mcp/streamable-http.d.ts.map +1 -1
- package/dist/mcp/streamable-http.js +6 -568
- package/dist/mcp/streamable-http.js.map +1 -1
- package/dist/mcp/tools.d.ts +58 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +241 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/output/envelope.d.ts +30 -5
- package/dist/output/envelope.d.ts.map +1 -1
- package/dist/output/envelope.js +7 -5
- package/dist/output/envelope.js.map +1 -1
- package/dist/output/formatter.d.ts +2 -2
- package/dist/output/formatter.js +3 -3
- package/dist/output/formatter.js.map +1 -1
- package/dist/output/next-actions.d.ts +18 -0
- package/dist/output/next-actions.d.ts.map +1 -0
- package/dist/output/next-actions.js +64 -0
- package/dist/output/next-actions.js.map +1 -0
- package/dist/output/projection.d.ts +93 -0
- package/dist/output/projection.d.ts.map +1 -0
- package/dist/output/projection.js +255 -0
- package/dist/output/projection.js.map +1 -0
- package/dist/protocol/acp-helpers.d.ts +32 -0
- package/dist/protocol/acp-helpers.d.ts.map +1 -0
- package/dist/protocol/acp-helpers.js +175 -0
- package/dist/protocol/acp-helpers.js.map +1 -0
- package/dist/protocol/acp.d.ts +2 -27
- package/dist/protocol/acp.d.ts.map +1 -1
- package/dist/protocol/acp.js +7 -170
- package/dist/protocol/acp.js.map +1 -1
- package/dist/transport/adapters/cua.d.ts +9 -10
- package/dist/transport/adapters/cua.d.ts.map +1 -1
- package/dist/transport/adapters/cua.js +22 -24
- package/dist/transport/adapters/cua.js.map +1 -1
- package/dist/transport/adapters/desktop-atspi.d.ts +1 -1
- package/dist/transport/adapters/desktop-atspi.js +2 -2
- package/dist/transport/adapters/desktop-atspi.js.map +1 -1
- package/dist/transport/adapters/desktop-ax-background-click-swift.d.ts +11 -0
- package/dist/transport/adapters/desktop-ax-background-click-swift.d.ts.map +1 -0
- package/dist/transport/adapters/desktop-ax-background-click-swift.js +136 -0
- package/dist/transport/adapters/desktop-ax-background-click-swift.js.map +1 -0
- package/dist/transport/adapters/desktop-ax-background-click.d.ts +4 -0
- package/dist/transport/adapters/desktop-ax-background-click.d.ts.map +1 -0
- package/dist/transport/adapters/desktop-ax-background-click.js +70 -0
- package/dist/transport/adapters/desktop-ax-background-click.js.map +1 -0
- package/dist/transport/adapters/desktop-ax-swift.d.ts +56 -0
- package/dist/transport/adapters/desktop-ax-swift.d.ts.map +1 -0
- package/dist/transport/adapters/desktop-ax-swift.js +458 -0
- package/dist/transport/adapters/desktop-ax-swift.js.map +1 -0
- package/dist/transport/adapters/desktop-ax.d.ts +14 -0
- package/dist/transport/adapters/desktop-ax.d.ts.map +1 -1
- package/dist/transport/adapters/desktop-ax.js +262 -32
- package/dist/transport/adapters/desktop-ax.js.map +1 -1
- package/dist/transport/adapters/desktop-uia.d.ts +1 -1
- package/dist/transport/adapters/desktop-uia.js +2 -2
- package/dist/transport/adapters/desktop-uia.js.map +1 -1
- package/dist/transport/adapters/http.js +1 -1
- package/dist/transport/adapters/http.js.map +1 -1
- package/dist/transport/capability.d.ts +1 -1
- package/dist/transport/capability.d.ts.map +1 -1
- package/dist/transport/capability.js +6 -1
- package/dist/transport/capability.js.map +1 -1
- package/dist/types.d.ts +32 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +14 -3
- package/src/adapters/1688/item.yaml +1 -0
- package/src/adapters/1688/store.yaml +1 -0
- package/src/adapters/36kr/article.yaml +1 -0
- package/src/adapters/_electron/desktop-shared.ts +383 -0
- package/src/adapters/amazon/bestsellers.yaml +2 -0
- package/src/adapters/amazon/movers-shakers.yaml +2 -0
- package/src/adapters/amazon/new-releases.yaml +2 -0
- package/src/adapters/amazon/rankings.yaml +1 -0
- package/src/adapters/apple-podcasts/episodes.yaml +1 -0
- package/src/adapters/arxiv/paper.yaml +1 -0
- package/src/adapters/audacity/convert.yaml +1 -0
- package/src/adapters/audacity/effects.yaml +1 -0
- package/src/adapters/audacity/info.yaml +1 -0
- package/src/adapters/audacity/mix.yaml +1 -0
- package/src/adapters/audacity/normalize.yaml +1 -0
- package/src/adapters/audacity/spectrogram.yaml +1 -0
- package/src/adapters/audacity/split-channels.yaml +1 -0
- package/src/adapters/audacity/trim.yaml +1 -0
- package/src/adapters/bilibili/favorites.yaml +1 -0
- package/src/adapters/blender/animation.yaml +2 -0
- package/src/adapters/blender/camera.yaml +1 -0
- package/src/adapters/blender/convert.yaml +1 -0
- package/src/adapters/blender/export.yaml +1 -0
- package/src/adapters/blender/import.yaml +1 -0
- package/src/adapters/blender/info.yaml +1 -0
- package/src/adapters/blender/lighting.yaml +1 -0
- package/src/adapters/blender/materials.yaml +1 -0
- package/src/adapters/blender/objects.yaml +1 -0
- package/src/adapters/blender/render.yaml +2 -0
- package/src/adapters/blender/scene.yaml +1 -0
- package/src/adapters/blender/screenshot.yaml +2 -0
- package/src/adapters/blender/script.yaml +1 -0
- package/src/adapters/boss/detail.yaml +2 -0
- package/src/adapters/cloudcompare/info.yaml +1 -0
- package/src/adapters/coupang/add-to-cart.yaml +1 -0
- package/src/adapters/ctrip/search.yaml +1 -0
- package/src/adapters/docker/build.yaml +1 -1
- package/src/adapters/docker/images.yaml +1 -1
- package/src/adapters/docker/logs.yaml +1 -1
- package/src/adapters/docker/networks.yaml +1 -1
- package/src/adapters/docker/ps.yaml +1 -1
- package/src/adapters/docker/run.yaml +1 -1
- package/src/adapters/docker/volumes.yaml +1 -1
- package/src/adapters/douban/download.yaml +1 -0
- package/src/adapters/douban/photos.yaml +1 -0
- package/src/adapters/douban/subject.yaml +2 -0
- package/src/adapters/doubao-web/detail.yaml +1 -0
- package/src/adapters/doubao-web/meeting-summary.yaml +1 -0
- package/src/adapters/doubao-web/meeting-transcript.yaml +1 -0
- package/src/adapters/drawio/export.yaml +2 -0
- package/src/adapters/electron-desktop/electron-desktop.ts +57 -0
- package/src/adapters/facebook/join-group.yaml +2 -0
- package/src/adapters/ffmpeg/compress.yaml +2 -0
- package/src/adapters/ffmpeg/concat.yaml +1 -0
- package/src/adapters/ffmpeg/convert.yaml +1 -0
- package/src/adapters/ffmpeg/extract-audio.yaml +2 -0
- package/src/adapters/ffmpeg/gif.yaml +2 -0
- package/src/adapters/ffmpeg/normalize.yaml +2 -0
- package/src/adapters/ffmpeg/probe.yaml +1 -0
- package/src/adapters/ffmpeg/resize.yaml +2 -0
- package/src/adapters/ffmpeg/subtitles.yaml +2 -0
- package/src/adapters/ffmpeg/thumbnail.yaml +2 -0
- package/src/adapters/ffmpeg/trim.yaml +2 -0
- package/src/adapters/freecad/assembly.yaml +1 -0
- package/src/adapters/freecad/bom.yaml +1 -0
- package/src/adapters/freecad/boolean.yaml +1 -0
- package/src/adapters/freecad/check.yaml +1 -0
- package/src/adapters/freecad/convert.yaml +1 -0
- package/src/adapters/freecad/export-stl.yaml +1 -0
- package/src/adapters/freecad/import.yaml +1 -0
- package/src/adapters/freecad/info.yaml +1 -0
- package/src/adapters/freecad/macro.yaml +1 -0
- package/src/adapters/freecad/measure.yaml +1 -0
- package/src/adapters/freecad/mesh.yaml +1 -0
- package/src/adapters/freecad/properties.yaml +1 -0
- package/src/adapters/freecad/render.yaml +1 -0
- package/src/adapters/freecad/section.yaml +1 -0
- package/src/adapters/freecad/sketch.yaml +1 -0
- package/src/adapters/gimp/adjust.yaml +1 -0
- package/src/adapters/gimp/batch.yaml +1 -0
- package/src/adapters/gimp/convert.yaml +1 -0
- package/src/adapters/gimp/crop.yaml +1 -0
- package/src/adapters/gimp/filter.yaml +1 -0
- package/src/adapters/gimp/flip.yaml +1 -0
- package/src/adapters/gimp/info.yaml +1 -0
- package/src/adapters/gimp/layers.yaml +1 -0
- package/src/adapters/gimp/merge-layers.yaml +1 -0
- package/src/adapters/gimp/resize.yaml +1 -0
- package/src/adapters/gimp/rotate.yaml +1 -0
- package/src/adapters/gimp/text.yaml +1 -0
- package/src/adapters/godot/scene-export.yaml +1 -0
- package/src/adapters/hackernews/comments.yaml +1 -0
- package/src/adapters/hackernews/item.yaml +1 -0
- package/src/adapters/hf/top.yaml +1 -0
- package/src/adapters/imagemagick/composite.yaml +1 -0
- package/src/adapters/imagemagick/convert.yaml +1 -0
- package/src/adapters/imagemagick/identify.yaml +1 -0
- package/src/adapters/imagemagick/montage.yaml +1 -0
- package/src/adapters/imagemagick/resize.yaml +1 -0
- package/src/adapters/imdb/person.yaml +1 -0
- package/src/adapters/imdb/reviews.yaml +1 -0
- package/src/adapters/imdb/title.yaml +1 -0
- package/src/adapters/inkscape/convert.yaml +2 -0
- package/src/adapters/inkscape/export.yaml +2 -0
- package/src/adapters/inkscape/optimize.yaml +2 -0
- package/src/adapters/instagram/stories.yaml +1 -0
- package/src/adapters/jd/item.yaml +1 -0
- package/src/adapters/jike/post.yaml +2 -0
- package/src/adapters/jike/topic.yaml +2 -0
- package/src/adapters/kdenlive/info.yaml +1 -0
- package/src/adapters/kdenlive/render.yaml +1 -0
- package/src/adapters/krita/batch.yaml +1 -0
- package/src/adapters/krita/convert.yaml +1 -0
- package/src/adapters/krita/export.yaml +1 -0
- package/src/adapters/krita/info.yaml +1 -0
- package/src/adapters/libreoffice/convert.yaml +1 -0
- package/src/adapters/libreoffice/print.yaml +1 -0
- package/src/adapters/linear/issue-update.yaml +1 -0
- package/src/adapters/linux-do/category.yaml +1 -0
- package/src/adapters/linux-do/topic.yaml +1 -0
- package/src/adapters/macos/caffeinate.yaml +2 -2
- package/src/adapters/macos/calendar-create.yaml +1 -0
- package/src/adapters/macos/finder-copy.yaml +1 -0
- package/src/adapters/macos/finder-move.yaml +1 -0
- package/src/adapters/macos/finder-new-folder.yaml +1 -0
- package/src/adapters/macos/finder-tags.yaml +1 -0
- package/src/adapters/macos/open.yaml +2 -0
- package/src/adapters/macos/processes.yaml +3 -3
- package/src/adapters/macos/screen-recording.yaml +3 -2
- package/src/adapters/macos/screenshot.yaml +1 -0
- package/src/adapters/macos/spotlight.yaml +1 -0
- package/src/adapters/macos/wallpaper.yaml +1 -0
- package/src/adapters/medium/article.yaml +1 -0
- package/src/adapters/mermaid/render.yaml +1 -0
- package/src/adapters/minimax/tts.yaml +1 -0
- package/src/adapters/motion-studio/component-get.yaml +1 -0
- package/src/adapters/musescore/convert.yaml +2 -0
- package/src/adapters/musescore/export.yaml +2 -0
- package/src/adapters/musescore/info.yaml +1 -0
- package/src/adapters/musescore/instruments.yaml +1 -0
- package/src/adapters/musescore/transpose.yaml +1 -0
- package/src/adapters/netease-music/playlist.yaml +1 -0
- package/src/adapters/netease-music/top.yaml +1 -0
- package/src/adapters/notebooklm/get.yaml +1 -0
- package/src/adapters/notebooklm/history.yaml +1 -0
- package/src/adapters/notebooklm/note-list.yaml +1 -0
- package/src/adapters/notebooklm/notes-get.yaml +1 -0
- package/src/adapters/notebooklm/open.yaml +1 -0
- package/src/adapters/notebooklm/source-fulltext.yaml +1 -0
- package/src/adapters/notebooklm/source-get.yaml +1 -0
- package/src/adapters/notebooklm/source-guide.yaml +1 -0
- package/src/adapters/notebooklm/source-list.yaml +1 -0
- package/src/adapters/notebooklm/summary.yaml +1 -0
- package/src/adapters/novita/status.yaml +1 -0
- package/src/adapters/obs/screenshot.yaml +1 -0
- package/src/adapters/obsidian/open.yaml +1 -0
- package/src/adapters/ones/login.yaml +1 -0
- package/src/adapters/ones/task.yaml +1 -0
- package/src/adapters/pandoc/convert.yaml +1 -0
- package/src/adapters/paperreview/feedback.yaml +2 -0
- package/src/adapters/paperreview/review.yaml +2 -0
- package/src/adapters/paperreview/submit.yaml +2 -0
- package/src/adapters/pixiv/detail.yaml +1 -0
- package/src/adapters/pixiv/download.yaml +2 -0
- package/src/adapters/quark/ls.yaml +1 -0
- package/src/adapters/reddit/comments.yaml +2 -0
- package/src/adapters/renderdoc/capture-list.yaml +1 -0
- package/src/adapters/renderdoc/frame-export.yaml +1 -0
- package/src/adapters/reuters/article.yaml +2 -0
- package/src/adapters/shotcut/info.yaml +1 -0
- package/src/adapters/shotcut/render.yaml +1 -0
- package/src/adapters/sinablog/article.yaml +1 -0
- package/src/adapters/sinablog/user.yaml +1 -0
- package/src/adapters/sketch/artboards.yaml +1 -0
- package/src/adapters/sketch/export.yaml +1 -0
- package/src/adapters/sketch/symbols.yaml +1 -0
- package/src/adapters/smzdm/article.yaml +1 -0
- package/src/adapters/stackoverflow/question.yaml +1 -0
- package/src/adapters/stagehand/wrap-observe.yaml +1 -0
- package/src/adapters/steam/wishlist.yaml +1 -0
- package/src/adapters/substack/trending.yaml +2 -1
- package/src/adapters/tieba/read.yaml +1 -0
- package/src/adapters/tiktok/comment.yaml +1 -0
- package/src/adapters/tiktok/like.yaml +1 -0
- package/src/adapters/tiktok/save.yaml +1 -0
- package/src/adapters/tiktok/unlike.yaml +1 -0
- package/src/adapters/tiktok/unsave.yaml +1 -0
- package/src/adapters/twitch/streams.yaml +1 -0
- package/src/adapters/twitter/quotes.yaml +2 -0
- package/src/adapters/twitter/retweets.yaml +1 -0
- package/src/adapters/v2ex/replies.yaml +1 -0
- package/src/adapters/v2ex/topic.yaml +1 -0
- package/src/adapters/vscode/install-ext.yaml +1 -0
- package/src/adapters/vscode/open.yaml +1 -0
- package/src/adapters/web/read.yaml +1 -0
- package/src/adapters/weibo/comments.yaml +1 -0
- package/src/adapters/weibo/post.yaml +1 -0
- package/src/adapters/weixin/download.yaml +1 -0
- package/src/adapters/wiremock/create-stub.yaml +2 -0
- package/src/adapters/wiremock/delete-stub.yaml +1 -0
- package/src/adapters/wiremock/verify.yaml +1 -0
- package/src/adapters/xianyu/item.yaml +1 -0
- package/src/adapters/xiaoe/catalog.yaml +1 -0
- package/src/adapters/xiaoe/content.yaml +1 -0
- package/src/adapters/xiaoe/detail.yaml +1 -0
- package/src/adapters/xiaoe/play-url.yaml +1 -0
- package/src/adapters/xiaoyuzhou/podcast.yaml +2 -0
- package/src/adapters/yollomi/edit.yaml +2 -0
- package/src/adapters/yollomi/remove-bg.yaml +2 -0
- package/src/adapters/yollomi/restore.yaml +2 -0
- package/src/adapters/yollomi/upload.yaml +2 -0
- package/src/adapters/yollomi/upscale.yaml +2 -0
- package/src/adapters/youtube/playlist.yaml +1 -0
- package/src/adapters/yt-dlp/download.yaml +2 -0
- package/src/adapters/yt-dlp/extract-audio.yaml +2 -0
- package/src/adapters/yt-dlp/info.yaml +1 -0
- package/src/adapters/zhihu/answer.yaml +1 -0
- package/src/adapters/zhihu/answers.yaml +2 -0
- package/src/adapters/zhihu/article.yaml +1 -0
- package/src/adapters/zhihu/articles.yaml +2 -0
- package/src/adapters/zhihu/collections.yaml +2 -0
- package/src/adapters/zhihu/columns.yaml +2 -0
- package/src/adapters/zhihu/comment.yaml +1 -0
- package/src/adapters/zhihu/download.yaml +1 -0
- package/src/adapters/zhihu/followers.yaml +2 -0
- package/src/adapters/zhihu/following.yaml +2 -0
- package/src/adapters/zhihu/pins.yaml +2 -0
- package/src/adapters/zhihu/question.yaml +1 -0
- package/src/adapters/zhihu/topic.yaml +1 -0
- package/src/adapters/zhihu/topics.yaml +1 -0
- package/src/adapters/zhihu/user.yaml +2 -0
- package/src/adapters/zoom/join.yaml +1 -0
- package/src/adapters/zsxq/search.yaml +1 -0
- package/src/adapters/zsxq/topic.yaml +1 -0
- 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 -->
|
|
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 (
|
|
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), +
|
|
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),
|
|
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),
|
|
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**:
|
|
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**:
|
|
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 (
|
|
57
|
+
### Desktop (25 apps)
|
|
58
58
|
|
|
59
|
-
freecad (15 cmds), blender (13 cmds), gimp (12 cmds), ffmpeg (11 cmds), audacity (8 cmds),
|
|
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
|
+
0.215.0 — Closed Adapter Loop
|
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!-- AGENT: npm install -g @zenalexa/unicli && unicli search "your intent" —
|
|
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 -->
|
|
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 -->
|
|
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
|
|
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
|
|
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 <site> <command>"]
|
|
82
82
|
|
|
83
|
-
CMD --> ADAPT["Adapter layer<br
|
|
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 -->
|
|
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
|
|
92
|
-
ENGINE --> T6["Desktop-AT-SPI<br/>(Linux
|
|
93
|
-
ENGINE --> T7["CUA<br/>(
|
|
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/>
|
|
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
|
|
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
|
|
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
|
|
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 -->
|
|
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
|
|
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 -->
|
|
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
|
-
|
|
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.
|
|
320
|
-
<sub><!-- STATS:site_count -->
|
|
332
|
+
<sub>v0.215.0 — Closed 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 "你的意图" —
|
|
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 -->
|
|
11
|
+
<!-- STATS:site_count -->220<!-- /STATS --> 个站点 · <!-- STATS:command_count -->1283<!-- /STATS --> 条命令 · 自修复 YAML · 比 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 -->
|
|
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 提供
|
|
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
|
|
48
|
+
3. 验证:unicli hackernews top -f json
|
|
49
49
|
```
|
|
50
50
|
|
|
51
|
-
Agent 自己会搞定。回来的时候,
|
|
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 -->
|
|
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
|
|
70
|
+
覆盖范围贯穿各个层面:HTTP Web API、CDP 浏览器自动化、桌面子进程(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
|
|
98
|
+
unicli zhihu hot -f json # 知乎热榜,JSON envelope
|
|
99
99
|
unicli bilibili popular --limit 5 # B 站热门视频
|
|
100
|
-
unicli hackernews top
|
|
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 —
|
|
146
|
-
| **Desktop-AT-SPI** | Linux —
|
|
147
|
-
| **CUA** |
|
|
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 -->
|
|
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
|
|
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 -->
|
|
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 -->
|
|
296
|
+
| `npm run test` | 单元测试(<!-- STATS:test_count -->7145<!-- /STATS --> 个) |
|
|
297
297
|
| `npm run test:adapter` | 验证所有适配器 |
|
|
298
298
|
| `npm run verify` | 完整流水线 — 发布前必须通过 |
|
|
299
299
|
|
|
300
|
-
|
|
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.
|
|
339
|
-
<sub><!-- STATS:site_count -->
|
|
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"}
|