@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
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
export function buildAxBackgroundClickScript(target, opts) {
|
|
2
|
+
const x = normalizeNumber(opts.x, 0);
|
|
3
|
+
const y = normalizeNumber(opts.y, 0);
|
|
4
|
+
const coordinateSpace = opts.coordinateSpace === "screen" ? "screen" : "window";
|
|
5
|
+
const button = Math.max(0, Math.trunc(opts.button));
|
|
6
|
+
const clickCount = Math.max(1, Math.trunc(opts.clickCount));
|
|
7
|
+
const windowNumber = opts.windowNumber
|
|
8
|
+
? Math.max(0, Math.trunc(opts.windowNumber))
|
|
9
|
+
: 0;
|
|
10
|
+
return [
|
|
11
|
+
`import AppKit`,
|
|
12
|
+
`import ApplicationServices`,
|
|
13
|
+
`import CoreGraphics`,
|
|
14
|
+
`import CoreFoundation`,
|
|
15
|
+
`import Darwin`,
|
|
16
|
+
`import Foundation`,
|
|
17
|
+
``,
|
|
18
|
+
...buildRunningAppPrelude(target),
|
|
19
|
+
swiftEmitHelper(),
|
|
20
|
+
`let commandMode = "background_click"`,
|
|
21
|
+
`let inputX = CGFloat(${x})`,
|
|
22
|
+
`let inputY = CGFloat(${y})`,
|
|
23
|
+
`let coordinateSpace = ${swiftStringLiteral(coordinateSpace)}`,
|
|
24
|
+
`let buttonIndex = ${button}`,
|
|
25
|
+
`let requestedClickCount = ${clickCount}`,
|
|
26
|
+
`let requestedWindowNumber = ${windowNumber}`,
|
|
27
|
+
``,
|
|
28
|
+
`typealias CGEventSetWindowLocationFn = @convention(c) (CGEvent, CGPoint) -> Void`,
|
|
29
|
+
`func loadSetWindowLocation() -> CGEventSetWindowLocationFn? {`,
|
|
30
|
+
` guard let symbol = dlsym(dlopen(nil, RTLD_NOW), "CGEventSetWindowLocation") else { return nil }`,
|
|
31
|
+
` return unsafeBitCast(symbol, to: CGEventSetWindowLocationFn.self)`,
|
|
32
|
+
`}`,
|
|
33
|
+
``,
|
|
34
|
+
`func number(_ dict: NSDictionary, _ key: CFString) -> NSNumber? { dict[key as String] as? NSNumber }`,
|
|
35
|
+
``,
|
|
36
|
+
`func rect(_ dict: NSDictionary) -> CGRect? {`,
|
|
37
|
+
` guard let raw = dict[kCGWindowBounds as String] as? NSDictionary else { return nil }`,
|
|
38
|
+
` var rect = CGRect.zero`,
|
|
39
|
+
` return CGRectMakeWithDictionaryRepresentation(raw, &rect) ? rect : nil`,
|
|
40
|
+
`}`,
|
|
41
|
+
``,
|
|
42
|
+
`func targetWindow(pid: pid_t) -> (id: CGWindowID, frame: CGRect)? {`,
|
|
43
|
+
` guard let list = CGWindowListCopyWindowInfo(.optionOnScreenOnly, kCGNullWindowID) as? [NSDictionary] else { return nil }`,
|
|
44
|
+
` for item in list {`,
|
|
45
|
+
` guard number(item, kCGWindowOwnerPID)?.int32Value == pid else { continue }`,
|
|
46
|
+
` guard let idNumber = number(item, kCGWindowNumber), let frame = rect(item), !frame.isEmpty else { continue }`,
|
|
47
|
+
` let windowId = CGWindowID(idNumber.uint32Value)`,
|
|
48
|
+
` if requestedWindowNumber == 0 || requestedWindowNumber == Int(windowId) { return (windowId, frame) }`,
|
|
49
|
+
` }`,
|
|
50
|
+
` return nil`,
|
|
51
|
+
`}`,
|
|
52
|
+
``,
|
|
53
|
+
`func eventType(down: Bool) -> NSEvent.EventType {`,
|
|
54
|
+
` if buttonIndex == 1 { return down ? .rightMouseDown : .rightMouseUp }`,
|
|
55
|
+
` if buttonIndex == 2 { return down ? .otherMouseDown : .otherMouseUp }`,
|
|
56
|
+
` return down ? .leftMouseDown : .leftMouseUp`,
|
|
57
|
+
`}`,
|
|
58
|
+
``,
|
|
59
|
+
`func makeEvent(down: Bool, screenPoint: CGPoint, windowPoint: CGPoint, windowNumber: CGWindowID, eventNumber: Int, isBackground: Bool, setWindowLocation: CGEventSetWindowLocationFn?) -> CGEvent? {`,
|
|
60
|
+
` guard let event = NSEvent.mouseEvent(with: eventType(down: down), location: screenPoint, modifierFlags: isBackground ? [.command] : [], timestamp: ProcessInfo.processInfo.systemUptime, windowNumber: Int(windowNumber), context: nil, eventNumber: eventNumber, clickCount: requestedClickCount, pressure: down ? 1.0 : 0.0) else { return nil }`,
|
|
61
|
+
` guard let cg = event.cgEvent else { return nil }`,
|
|
62
|
+
` cg.location = screenPoint`,
|
|
63
|
+
` if isBackground { cg.flags = CGEventFlags.maskCommand }`,
|
|
64
|
+
` cg.setIntegerValueField(CGEventField(rawValue: 3)!, value: Int64(buttonIndex))`,
|
|
65
|
+
` cg.setIntegerValueField(CGEventField(rawValue: 7)!, value: 3)`,
|
|
66
|
+
` cg.setIntegerValueField(CGEventField(rawValue: 91)!, value: Int64(windowNumber))`,
|
|
67
|
+
` cg.setIntegerValueField(CGEventField(rawValue: 92)!, value: Int64(windowNumber))`,
|
|
68
|
+
` setWindowLocation?(cg, windowPoint)`,
|
|
69
|
+
` return cg`,
|
|
70
|
+
`}`,
|
|
71
|
+
``,
|
|
72
|
+
`guard let running else {`,
|
|
73
|
+
` emit(["found": false, "mode": commandMode, "bundleId": bundleId, "localizedName": processName])`,
|
|
74
|
+
` exit(0)`,
|
|
75
|
+
`}`,
|
|
76
|
+
``,
|
|
77
|
+
`guard let window = targetWindow(pid: running.processIdentifier) else {`,
|
|
78
|
+
` emit(["found": true, "posted": false, "mode": commandMode, "pid": Int(running.processIdentifier), "reason": "window_not_found"])`,
|
|
79
|
+
` exit(0)`,
|
|
80
|
+
`}`,
|
|
81
|
+
``,
|
|
82
|
+
`let screenPoint = coordinateSpace == "screen" ? CGPoint(x: inputX, y: inputY) : CGPoint(x: window.frame.origin.x + inputX, y: window.frame.origin.y + inputY)`,
|
|
83
|
+
`let windowPoint = screenPoint.applying(CGAffineTransform(translationX: -window.frame.origin.x, y: -window.frame.origin.y))`,
|
|
84
|
+
`let setWindowLocation = loadSetWindowLocation()`,
|
|
85
|
+
`let isBackground = !running.isActive`,
|
|
86
|
+
`let eventNumber = Int((ProcessInfo.processInfo.systemUptime * 1_000_000).truncatingRemainder(dividingBy: 2_147_483_647))`,
|
|
87
|
+
`guard let down = makeEvent(down: true, screenPoint: screenPoint, windowPoint: windowPoint, windowNumber: window.id, eventNumber: eventNumber, isBackground: isBackground, setWindowLocation: setWindowLocation), let up = makeEvent(down: false, screenPoint: screenPoint, windowPoint: windowPoint, windowNumber: window.id, eventNumber: eventNumber + 1, isBackground: isBackground, setWindowLocation: setWindowLocation) else {`,
|
|
88
|
+
` emit(["found": true, "posted": false, "mode": commandMode, "pid": Int(running.processIdentifier), "windowNumber": Int(window.id), "reason": "event_create_failed"])`,
|
|
89
|
+
` exit(0)`,
|
|
90
|
+
`}`,
|
|
91
|
+
`down.postToPid(running.processIdentifier)`,
|
|
92
|
+
`up.postToPid(running.processIdentifier)`,
|
|
93
|
+
`emit(["found": true, "posted": true, "mode": commandMode, "pid": Int(running.processIdentifier), "windowNumber": Int(window.id), "screenX": Double(screenPoint.x), "screenY": Double(screenPoint.y), "windowX": Double(windowPoint.x), "windowY": Double(windowPoint.y), "commandFlagApplied": isBackground, "setWindowLocationAvailable": setWindowLocation != nil])`,
|
|
94
|
+
].join("\n");
|
|
95
|
+
}
|
|
96
|
+
function buildRunningAppPrelude(target) {
|
|
97
|
+
return [
|
|
98
|
+
`let bundleId: String? = ${swiftStringLiteral(target.bundleId ?? "")}.isEmpty ? nil : ${swiftStringLiteral(target.bundleId ?? "")}`,
|
|
99
|
+
`let processName: String? = ${swiftStringLiteral(target.processName)}.isEmpty ? nil : ${swiftStringLiteral(target.processName)}`,
|
|
100
|
+
`let executableNames: [String] = ${swiftStringArray(target.executableNames)}`,
|
|
101
|
+
`func matches(_ app: NSRunningApplication) -> Bool {`,
|
|
102
|
+
` if let bundleId, app.bundleIdentifier == bundleId { return true }`,
|
|
103
|
+
` if let processName, app.localizedName == processName { return true }`,
|
|
104
|
+
` if let executable = app.executableURL?.lastPathComponent, executableNames.contains(executable) { return true }`,
|
|
105
|
+
` return false`,
|
|
106
|
+
`}`,
|
|
107
|
+
`let running = NSWorkspace.shared.runningApplications.first(where: matches)`,
|
|
108
|
+
``,
|
|
109
|
+
];
|
|
110
|
+
}
|
|
111
|
+
function swiftEmitHelper() {
|
|
112
|
+
return [
|
|
113
|
+
`func emit(_ object: [String: Any?]) {`,
|
|
114
|
+
` let flat = object.reduce(into: [String: Any]()) { acc, item in`,
|
|
115
|
+
` if let value = item.value { acc[item.key] = value }`,
|
|
116
|
+
` }`,
|
|
117
|
+
` let data = try! JSONSerialization.data(withJSONObject: flat, options: [])`,
|
|
118
|
+
` FileHandle.standardOutput.write(data)`,
|
|
119
|
+
`}`,
|
|
120
|
+
].join("\n");
|
|
121
|
+
}
|
|
122
|
+
function swiftStringLiteral(value) {
|
|
123
|
+
return `"${value
|
|
124
|
+
.replace(/\\/g, "\\\\")
|
|
125
|
+
.replace(/"/g, '\\"')
|
|
126
|
+
.replace(/\r/g, "\\r")
|
|
127
|
+
.replace(/\n/g, "\\n")
|
|
128
|
+
.replaceAll("\0", "")}"`;
|
|
129
|
+
}
|
|
130
|
+
function swiftStringArray(values) {
|
|
131
|
+
return `[${values.map(swiftStringLiteral).join(", ")}]`;
|
|
132
|
+
}
|
|
133
|
+
function normalizeNumber(value, fallback) {
|
|
134
|
+
return String(Number.isFinite(value) ? value : fallback);
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=desktop-ax-background-click-swift.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"desktop-ax-background-click-swift.js","sourceRoot":"","sources":["../../../src/transport/adapters/desktop-ax-background-click-swift.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Envelope } from "../../core/envelope.js";
|
|
2
|
+
import type { AxShell } from "./desktop-ax.js";
|
|
3
|
+
export declare function runAxBackgroundClick<T>(shell: AxShell, params: Record<string, unknown>): Promise<Envelope<T>>;
|
|
4
|
+
//# sourceMappingURL=desktop-ax-background-click.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"desktop-ax-background-click.d.ts","sourceRoot":"","sources":["../../../src/transport/adapters/desktop-ax-background-click.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAMvD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAQ/C,wBAAsB,oBAAoB,CAAC,CAAC,EAC1C,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CA4EtB"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { err, exitCodeFor, ok } from "../../core/envelope.js";
|
|
2
|
+
import { buildAxBackgroundClickScript, readPositiveInt, resolveAxTarget, } from "./desktop-ax-swift.js";
|
|
3
|
+
export async function runAxBackgroundClick(shell, params) {
|
|
4
|
+
const target = resolveAxTarget(params);
|
|
5
|
+
if (!target) {
|
|
6
|
+
return err({
|
|
7
|
+
transport: "desktop-ax",
|
|
8
|
+
step: 0,
|
|
9
|
+
action: "ax_background_click",
|
|
10
|
+
reason: "missing target app (`app`, `bundleId`, or `processName`)",
|
|
11
|
+
suggestion: "pass params.app, or supply params.bundleId / params.processName for localized Electron apps",
|
|
12
|
+
exit_code: exitCodeFor("usage_error"),
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
const x = typeof params.x === "number" ? params.x : undefined;
|
|
16
|
+
const y = typeof params.y === "number" ? params.y : undefined;
|
|
17
|
+
if (x === undefined || y === undefined) {
|
|
18
|
+
return err({
|
|
19
|
+
transport: "desktop-ax",
|
|
20
|
+
step: 0,
|
|
21
|
+
action: "ax_background_click",
|
|
22
|
+
reason: `missing required param \`${x === undefined ? "x" : "y"}\``,
|
|
23
|
+
suggestion: "pass window-local x/y coordinates to ax_background_click",
|
|
24
|
+
exit_code: exitCodeFor("usage_error"),
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
try {
|
|
28
|
+
const { stdout } = await shell.run("swift", [
|
|
29
|
+
"-e",
|
|
30
|
+
buildAxBackgroundClickScript(target, {
|
|
31
|
+
x,
|
|
32
|
+
y,
|
|
33
|
+
coordinateSpace: params.coordinateSpace === "screen" ? "screen" : "window",
|
|
34
|
+
button: readPositiveInt(params.button, 0),
|
|
35
|
+
clickCount: readPositiveInt(params.clickCount, 1) || 1,
|
|
36
|
+
windowNumber: typeof params.windowNumber === "number"
|
|
37
|
+
? readPositiveInt(params.windowNumber, 0)
|
|
38
|
+
: undefined,
|
|
39
|
+
}),
|
|
40
|
+
], { timeoutMs: 10_000 });
|
|
41
|
+
const result = JSON.parse(stdout.trim());
|
|
42
|
+
if (!result.found || result.posted === false) {
|
|
43
|
+
return err({
|
|
44
|
+
transport: "desktop-ax",
|
|
45
|
+
step: 0,
|
|
46
|
+
action: "ax_background_click",
|
|
47
|
+
reason: `background click failed in ${target.appName}: ${result.reason ?? "target app/window not found"}`,
|
|
48
|
+
suggestion: "verify the target window is on screen and grant Input Monitoring / Accessibility to the host terminal",
|
|
49
|
+
exit_code: exitCodeFor("service_unavailable"),
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
return ok(result);
|
|
53
|
+
}
|
|
54
|
+
catch (e) {
|
|
55
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
56
|
+
const timeout = /timeout|timed out|ETIMEDOUT/i.test(msg);
|
|
57
|
+
return err({
|
|
58
|
+
transport: "desktop-ax",
|
|
59
|
+
step: 0,
|
|
60
|
+
action: "ax_background_click",
|
|
61
|
+
reason: msg,
|
|
62
|
+
suggestion: "check app name, Input Monitoring / Accessibility permissions, and that the app is installed",
|
|
63
|
+
retryable: timeout,
|
|
64
|
+
exit_code: timeout
|
|
65
|
+
? exitCodeFor("temp_failure")
|
|
66
|
+
: exitCodeFor("service_unavailable"),
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=desktop-ax-background-click.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"desktop-ax-background-click.js","sourceRoot":"","sources":["../../../src/transport/adapters/desktop-ax-background-click.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EACL,4BAA4B,EAC5B,eAAe,EACf,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAS/B,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,KAAc,EACd,MAA+B;IAE/B,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,GAAG,CAAC;YACT,SAAS,EAAE,YAAY;YACvB,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,qBAAqB;YAC7B,MAAM,EAAE,0DAA0D;YAClE,UAAU,EACR,6FAA6F;YAC/F,SAAS,EAAE,WAAW,CAAC,aAAa,CAAC;SACtC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,GAAG,OAAO,MAAM,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9D,MAAM,CAAC,GAAG,OAAO,MAAM,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9D,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QACvC,OAAO,GAAG,CAAC;YACT,SAAS,EAAE,YAAY;YACvB,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,qBAAqB;YAC7B,MAAM,EAAE,4BAA4B,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI;YACnE,UAAU,EAAE,0DAA0D;YACtE,SAAS,EAAE,WAAW,CAAC,aAAa,CAAC;SACtC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,GAAG,CAChC,OAAO,EACP;YACE,IAAI;YACJ,4BAA4B,CAAC,MAAM,EAAE;gBACnC,CAAC;gBACD,CAAC;gBACD,eAAe,EACb,MAAM,CAAC,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;gBAC3D,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;gBACzC,UAAU,EAAE,eAAe,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC;gBACtD,YAAY,EACV,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ;oBACrC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;oBACzC,CAAC,CAAC,SAAS;aAChB,CAAC;SACH,EACD,EAAE,SAAS,EAAE,MAAM,EAAE,CACtB,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAA0B,CAAC;QAClE,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAC7C,OAAO,GAAG,CAAC;gBACT,SAAS,EAAE,YAAY;gBACvB,IAAI,EAAE,CAAC;gBACP,MAAM,EAAE,qBAAqB;gBAC7B,MAAM,EAAE,8BAA8B,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,MAAM,IAAI,6BAA6B,EAAE;gBACzG,UAAU,EACR,uGAAuG;gBACzG,SAAS,EAAE,WAAW,CAAC,qBAAqB,CAAC;aAC9C,CAAC,CAAC;QACL,CAAC;QACD,OAAO,EAAE,CAAC,MAAsB,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,8BAA8B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzD,OAAO,GAAG,CAAC;YACT,SAAS,EAAE,YAAY;YACvB,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,qBAAqB;YAC7B,MAAM,EAAE,GAAG;YACX,UAAU,EACR,6FAA6F;YAC/F,SAAS,EAAE,OAAO;YAClB,SAAS,EAAE,OAAO;gBAChB,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC;gBAC7B,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC;SACvC,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export { buildAxBackgroundClickScript, type AxBackgroundClickScriptOptions, } from "./desktop-ax-background-click-swift.js";
|
|
2
|
+
export interface ResolvedAxTarget {
|
|
3
|
+
appName: string;
|
|
4
|
+
openArgs: readonly string[];
|
|
5
|
+
activationRef: string;
|
|
6
|
+
uiProcessName: string;
|
|
7
|
+
bundleId?: string;
|
|
8
|
+
processName: string;
|
|
9
|
+
executableNames: readonly string[];
|
|
10
|
+
ensureElectronAx: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface AxWarmupResult {
|
|
13
|
+
trusted: boolean;
|
|
14
|
+
found: boolean;
|
|
15
|
+
pid?: number;
|
|
16
|
+
bundleId?: string | null;
|
|
17
|
+
localizedName?: string | null;
|
|
18
|
+
setResults?: Record<string, number>;
|
|
19
|
+
observerCreated?: boolean;
|
|
20
|
+
observerResults?: Record<string, number>;
|
|
21
|
+
pumpMs?: number;
|
|
22
|
+
}
|
|
23
|
+
export interface AxSnapshotScriptOptions {
|
|
24
|
+
maxDepth: number;
|
|
25
|
+
scope: "focusedWindow" | "focusedElement";
|
|
26
|
+
}
|
|
27
|
+
export interface AxElementQuery {
|
|
28
|
+
focused: boolean;
|
|
29
|
+
maxDepth: number;
|
|
30
|
+
roles: readonly string[];
|
|
31
|
+
subroles: readonly string[];
|
|
32
|
+
titles: readonly string[];
|
|
33
|
+
descriptions: readonly string[];
|
|
34
|
+
identifiers: readonly string[];
|
|
35
|
+
titlePrefix: boolean;
|
|
36
|
+
descriptionPrefix: boolean;
|
|
37
|
+
}
|
|
38
|
+
export interface AxSetValueScriptOptions extends AxElementQuery {
|
|
39
|
+
attribute: string;
|
|
40
|
+
value: string;
|
|
41
|
+
}
|
|
42
|
+
export interface AxPressScriptOptions extends AxElementQuery {
|
|
43
|
+
actionName: string;
|
|
44
|
+
}
|
|
45
|
+
export declare function buildElectronAxWarmupScript(target: ResolvedAxTarget, waitMs: number): string;
|
|
46
|
+
export declare function buildAxSnapshotScript(target: ResolvedAxTarget, opts: AxSnapshotScriptOptions): string;
|
|
47
|
+
export declare function buildAxFocusedReadScript(target: ResolvedAxTarget, query: AxElementQuery): string;
|
|
48
|
+
export declare function buildAxSetValueScript(target: ResolvedAxTarget, opts: AxSetValueScriptOptions): string;
|
|
49
|
+
export declare function buildAxPressScript(target: ResolvedAxTarget, opts: AxPressScriptOptions): string;
|
|
50
|
+
export declare function swiftStringLiteral(value: string): string;
|
|
51
|
+
export declare function swiftStringArray(values: readonly string[]): string;
|
|
52
|
+
export declare function resolveAxTarget(params: Record<string, unknown>): ResolvedAxTarget | null;
|
|
53
|
+
export declare function readAxElementQuery(params: Record<string, unknown>, defaultFocused: boolean): AxElementQuery;
|
|
54
|
+
export declare function hasAxElementMatcher(params: Record<string, unknown>): boolean;
|
|
55
|
+
export declare function readPositiveInt(value: unknown, fallback: number): number;
|
|
56
|
+
//# sourceMappingURL=desktop-ax-swift.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"desktop-ax-swift.d.ts","sourceRoot":"","sources":["../../../src/transport/adapters/desktop-ax-swift.ts"],"names":[],"mappings":"AACA,OAAO,EACL,4BAA4B,EAC5B,KAAK,8BAA8B,GACpC,MAAM,wCAAwC,CAAC;AAEhD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,eAAe,GAAG,gBAAgB,CAAC;CAC3C;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,WAAW,EAAE,OAAO,CAAC;IACrB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,uBAAwB,SAAQ,cAAc;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IAC1D,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,GACb,MAAM,CA2ER;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,uBAAuB,GAC5B,MAAM,CAsCR;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,cAAc,GACpB,MAAM,CAER;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,uBAAuB,GAC5B,MAAM,CAER;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,oBAAoB,GACzB,MAAM,CAER;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOxD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAElE;AAMD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,gBAAgB,GAAG,IAAI,CAoCzB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,cAAc,EAAE,OAAO,GACtB,cAAc,CAiBhB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAQ5E;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIxE"}
|