@zenalexa/unicli 0.213.1 → 0.215.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (512) hide show
  1. package/AGENTS.md +10 -10
  2. package/README.md +40 -27
  3. package/README.zh-CN.md +36 -36
  4. package/dist/adapters/_electron/desktop-shared.d.ts +12 -0
  5. package/dist/adapters/_electron/desktop-shared.d.ts.map +1 -0
  6. package/dist/adapters/_electron/desktop-shared.js +312 -0
  7. package/dist/adapters/_electron/desktop-shared.js.map +1 -0
  8. package/dist/adapters/electron-desktop/electron-desktop.d.ts +9 -0
  9. package/dist/adapters/electron-desktop/electron-desktop.d.ts.map +1 -0
  10. package/dist/adapters/electron-desktop/electron-desktop.js +56 -0
  11. package/dist/adapters/electron-desktop/electron-desktop.js.map +1 -0
  12. package/dist/browser/adapter-authoring.d.ts +20 -0
  13. package/dist/browser/adapter-authoring.d.ts.map +1 -0
  14. package/dist/browser/adapter-authoring.js +68 -0
  15. package/dist/browser/adapter-authoring.js.map +1 -0
  16. package/dist/browser/analyze.d.ts +54 -0
  17. package/dist/browser/analyze.d.ts.map +1 -0
  18. package/dist/browser/analyze.js +205 -0
  19. package/dist/browser/analyze.js.map +1 -0
  20. package/dist/browser/bridge.d.ts +1 -1
  21. package/dist/browser/bridge.d.ts.map +1 -1
  22. package/dist/browser/bridge.js +2 -0
  23. package/dist/browser/bridge.js.map +1 -1
  24. package/dist/browser/daemon-client.d.ts.map +1 -1
  25. package/dist/browser/daemon-client.js +12 -1
  26. package/dist/browser/daemon-client.js.map +1 -1
  27. package/dist/browser/network-cache.d.ts +58 -0
  28. package/dist/browser/network-cache.d.ts.map +1 -0
  29. package/dist/browser/network-cache.js +146 -0
  30. package/dist/browser/network-cache.js.map +1 -0
  31. package/dist/browser/page.d.ts +1 -1
  32. package/dist/browser/page.d.ts.map +1 -1
  33. package/dist/browser/page.js +2 -1
  34. package/dist/browser/page.js.map +1 -1
  35. package/dist/browser/protocol.d.ts +6 -2
  36. package/dist/browser/protocol.d.ts.map +1 -1
  37. package/dist/browser/site-memory.d.ts +57 -0
  38. package/dist/browser/site-memory.d.ts.map +1 -0
  39. package/dist/browser/site-memory.js +127 -0
  40. package/dist/browser/site-memory.js.map +1 -0
  41. package/dist/browser/verify-fixture.d.ts +30 -0
  42. package/dist/browser/verify-fixture.d.ts.map +1 -0
  43. package/dist/browser/verify-fixture.js +168 -0
  44. package/dist/browser/verify-fixture.js.map +1 -0
  45. package/dist/browser/workspace.d.ts +8 -0
  46. package/dist/browser/workspace.d.ts.map +1 -0
  47. package/dist/browser/workspace.js +15 -0
  48. package/dist/browser/workspace.js.map +1 -0
  49. package/dist/cli.d.ts.map +1 -1
  50. package/dist/cli.js +11 -2
  51. package/dist/cli.js.map +1 -1
  52. package/dist/commands/browser-adapter-authoring.d.ts +3 -0
  53. package/dist/commands/browser-adapter-authoring.d.ts.map +1 -0
  54. package/dist/commands/browser-adapter-authoring.js +206 -0
  55. package/dist/commands/browser-adapter-authoring.js.map +1 -0
  56. package/dist/commands/browser-authoring-operator.d.ts +3 -0
  57. package/dist/commands/browser-authoring-operator.d.ts.map +1 -0
  58. package/dist/commands/browser-authoring-operator.js +110 -0
  59. package/dist/commands/browser-authoring-operator.js.map +1 -0
  60. package/dist/commands/browser-operator-runtime.d.ts +38 -0
  61. package/dist/commands/browser-operator-runtime.d.ts.map +1 -0
  62. package/dist/commands/browser-operator-runtime.js +281 -0
  63. package/dist/commands/browser-operator-runtime.js.map +1 -0
  64. package/dist/commands/browser-operator.d.ts +6 -0
  65. package/dist/commands/browser-operator.d.ts.map +1 -0
  66. package/dist/commands/browser-operator.js +374 -0
  67. package/dist/commands/browser-operator.js.map +1 -0
  68. package/dist/commands/browser.d.ts.map +1 -1
  69. package/dist/commands/browser.js +72 -1
  70. package/dist/commands/browser.js.map +1 -1
  71. package/dist/commands/daemon.d.ts.map +1 -1
  72. package/dist/commands/daemon.js +40 -4
  73. package/dist/commands/daemon.js.map +1 -1
  74. package/dist/commands/describe.d.ts +26 -0
  75. package/dist/commands/describe.d.ts.map +1 -0
  76. package/dist/commands/describe.js +230 -0
  77. package/dist/commands/describe.js.map +1 -0
  78. package/dist/commands/dev.js +1 -1
  79. package/dist/commands/dev.js.map +1 -1
  80. package/dist/commands/dispatch.d.ts +14 -3
  81. package/dist/commands/dispatch.d.ts.map +1 -1
  82. package/dist/commands/dispatch.js +141 -81
  83. package/dist/commands/dispatch.js.map +1 -1
  84. package/dist/commands/explore.d.ts.map +1 -1
  85. package/dist/commands/explore.js +4 -1
  86. package/dist/commands/explore.js.map +1 -1
  87. package/dist/commands/generate.d.ts.map +1 -1
  88. package/dist/commands/generate.js +4 -1
  89. package/dist/commands/generate.js.map +1 -1
  90. package/dist/commands/health.d.ts.map +1 -1
  91. package/dist/commands/health.js +1 -1
  92. package/dist/commands/health.js.map +1 -1
  93. package/dist/commands/mcp.d.ts.map +1 -1
  94. package/dist/commands/mcp.js +14 -14
  95. package/dist/commands/mcp.js.map +1 -1
  96. package/dist/commands/migrate-schema.d.ts.map +1 -1
  97. package/dist/commands/migrate-schema.js +10 -0
  98. package/dist/commands/migrate-schema.js.map +1 -1
  99. package/dist/commands/operate.d.ts +4 -3
  100. package/dist/commands/operate.d.ts.map +1 -1
  101. package/dist/commands/operate.js +8 -483
  102. package/dist/commands/operate.js.map +1 -1
  103. package/dist/commands/record.d.ts.map +1 -1
  104. package/dist/commands/record.js +2 -1
  105. package/dist/commands/record.js.map +1 -1
  106. package/dist/commands/search.js +1 -1
  107. package/dist/commands/search.js.map +1 -1
  108. package/dist/commands/skills.d.ts.map +1 -1
  109. package/dist/commands/skills.js +2 -2
  110. package/dist/commands/skills.js.map +1 -1
  111. package/dist/commands/synthesize.d.ts.map +1 -1
  112. package/dist/commands/synthesize.js +33 -3
  113. package/dist/commands/synthesize.js.map +1 -1
  114. package/dist/constants.d.ts +2 -0
  115. package/dist/constants.d.ts.map +1 -1
  116. package/dist/constants.js +2 -0
  117. package/dist/constants.js.map +1 -1
  118. package/dist/discovery/aliases.d.ts.map +1 -1
  119. package/dist/discovery/aliases.js +76 -1
  120. package/dist/discovery/aliases.js.map +1 -1
  121. package/dist/discovery/loader.d.ts +8 -0
  122. package/dist/discovery/loader.d.ts.map +1 -1
  123. package/dist/discovery/loader.js +25 -2
  124. package/dist/discovery/loader.js.map +1 -1
  125. package/dist/electron-apps.d.ts +22 -0
  126. package/dist/electron-apps.d.ts.map +1 -1
  127. package/dist/electron-apps.js +324 -0
  128. package/dist/electron-apps.js.map +1 -1
  129. package/dist/engine/args.d.ts +83 -0
  130. package/dist/engine/args.d.ts.map +1 -0
  131. package/dist/engine/args.js +260 -0
  132. package/dist/engine/args.js.map +1 -0
  133. package/dist/engine/download.d.ts.map +1 -1
  134. package/dist/engine/download.js +12 -5
  135. package/dist/engine/download.js.map +1 -1
  136. package/dist/engine/executor.d.ts +20 -1
  137. package/dist/engine/executor.d.ts.map +1 -1
  138. package/dist/engine/executor.js +11 -2
  139. package/dist/engine/executor.js.map +1 -1
  140. package/dist/engine/harden.d.ts +48 -0
  141. package/dist/engine/harden.d.ts.map +1 -0
  142. package/dist/engine/harden.js +327 -0
  143. package/dist/engine/harden.js.map +1 -0
  144. package/dist/engine/invoke.d.ts +16 -0
  145. package/dist/engine/invoke.d.ts.map +1 -0
  146. package/dist/engine/invoke.js +15 -0
  147. package/dist/engine/invoke.js.map +1 -0
  148. package/dist/engine/kernel/compile.d.ts +30 -0
  149. package/dist/engine/kernel/compile.d.ts.map +1 -0
  150. package/dist/engine/kernel/compile.js +167 -0
  151. package/dist/engine/kernel/compile.js.map +1 -0
  152. package/dist/engine/kernel/execute.d.ts +35 -0
  153. package/dist/engine/kernel/execute.d.ts.map +1 -0
  154. package/dist/engine/kernel/execute.js +221 -0
  155. package/dist/engine/kernel/execute.js.map +1 -0
  156. package/dist/engine/kernel/types.d.ts +49 -0
  157. package/dist/engine/kernel/types.d.ts.map +1 -0
  158. package/dist/engine/kernel/types.js +9 -0
  159. package/dist/engine/kernel/types.js.map +1 -0
  160. package/dist/engine/kernel/ulid.d.ts +21 -0
  161. package/dist/engine/kernel/ulid.d.ts.map +1 -0
  162. package/dist/engine/kernel/ulid.js +76 -0
  163. package/dist/engine/kernel/ulid.js.map +1 -0
  164. package/dist/engine/repair/engine.js +2 -2
  165. package/dist/engine/repair/engine.js.map +1 -1
  166. package/dist/engine/steps/desktop-ax.d.ts +10 -0
  167. package/dist/engine/steps/desktop-ax.d.ts.map +1 -1
  168. package/dist/engine/steps/desktop-ax.js +20 -0
  169. package/dist/engine/steps/desktop-ax.js.map +1 -1
  170. package/dist/engine/steps/exec.d.ts +1 -1
  171. package/dist/engine/steps/exec.d.ts.map +1 -1
  172. package/dist/engine/steps/exec.js +20 -1
  173. package/dist/engine/steps/exec.js.map +1 -1
  174. package/dist/engine/steps/write-temp.js +1 -1
  175. package/dist/engine/steps/write-temp.js.map +1 -1
  176. package/dist/engine/template.d.ts.map +1 -1
  177. package/dist/engine/template.js +21 -2
  178. package/dist/engine/template.js.map +1 -1
  179. package/dist/manifest-compact.txt +8 -7
  180. package/dist/manifest-search.json +1 -1
  181. package/dist/manifest.json +2161 -171
  182. package/dist/mcp/dispatch.d.ts +46 -0
  183. package/dist/mcp/dispatch.d.ts.map +1 -0
  184. package/dist/mcp/dispatch.js +109 -0
  185. package/dist/mcp/dispatch.js.map +1 -0
  186. package/dist/mcp/handler.d.ts +30 -0
  187. package/dist/mcp/handler.d.ts.map +1 -0
  188. package/dist/mcp/handler.js +293 -0
  189. package/dist/mcp/handler.js.map +1 -0
  190. package/dist/mcp/http-transport.d.ts +16 -0
  191. package/dist/mcp/http-transport.d.ts.map +1 -0
  192. package/dist/mcp/http-transport.js +121 -0
  193. package/dist/mcp/http-transport.js.map +1 -0
  194. package/dist/mcp/server.d.ts +17 -33
  195. package/dist/mcp/server.d.ts.map +1 -1
  196. package/dist/mcp/server.js +31 -742
  197. package/dist/mcp/server.js.map +1 -1
  198. package/dist/mcp/sse-transport.js.map +1 -1
  199. package/dist/mcp/streamable-http/handle-post.d.ts +23 -0
  200. package/dist/mcp/streamable-http/handle-post.d.ts.map +1 -0
  201. package/dist/mcp/streamable-http/handle-post.js +357 -0
  202. package/dist/mcp/streamable-http/handle-post.js.map +1 -0
  203. package/dist/mcp/streamable-http/index.d.ts +45 -0
  204. package/dist/mcp/streamable-http/index.d.ts.map +1 -0
  205. package/dist/mcp/streamable-http/index.js +150 -0
  206. package/dist/mcp/streamable-http/index.js.map +1 -0
  207. package/dist/mcp/streamable-http/session.d.ts +85 -0
  208. package/dist/mcp/streamable-http/session.d.ts.map +1 -0
  209. package/dist/mcp/streamable-http/session.js +104 -0
  210. package/dist/mcp/streamable-http/session.js.map +1 -0
  211. package/dist/mcp/streamable-http.d.ts +7 -85
  212. package/dist/mcp/streamable-http.d.ts.map +1 -1
  213. package/dist/mcp/streamable-http.js +6 -568
  214. package/dist/mcp/streamable-http.js.map +1 -1
  215. package/dist/mcp/tools.d.ts +58 -0
  216. package/dist/mcp/tools.d.ts.map +1 -0
  217. package/dist/mcp/tools.js +241 -0
  218. package/dist/mcp/tools.js.map +1 -0
  219. package/dist/output/envelope.d.ts +30 -5
  220. package/dist/output/envelope.d.ts.map +1 -1
  221. package/dist/output/envelope.js +7 -5
  222. package/dist/output/envelope.js.map +1 -1
  223. package/dist/output/formatter.d.ts +2 -2
  224. package/dist/output/formatter.js +3 -3
  225. package/dist/output/formatter.js.map +1 -1
  226. package/dist/output/next-actions.d.ts +18 -0
  227. package/dist/output/next-actions.d.ts.map +1 -0
  228. package/dist/output/next-actions.js +64 -0
  229. package/dist/output/next-actions.js.map +1 -0
  230. package/dist/output/projection.d.ts +93 -0
  231. package/dist/output/projection.d.ts.map +1 -0
  232. package/dist/output/projection.js +255 -0
  233. package/dist/output/projection.js.map +1 -0
  234. package/dist/protocol/acp-helpers.d.ts +32 -0
  235. package/dist/protocol/acp-helpers.d.ts.map +1 -0
  236. package/dist/protocol/acp-helpers.js +175 -0
  237. package/dist/protocol/acp-helpers.js.map +1 -0
  238. package/dist/protocol/acp.d.ts +2 -27
  239. package/dist/protocol/acp.d.ts.map +1 -1
  240. package/dist/protocol/acp.js +7 -170
  241. package/dist/protocol/acp.js.map +1 -1
  242. package/dist/transport/adapters/cua.d.ts +9 -10
  243. package/dist/transport/adapters/cua.d.ts.map +1 -1
  244. package/dist/transport/adapters/cua.js +22 -24
  245. package/dist/transport/adapters/cua.js.map +1 -1
  246. package/dist/transport/adapters/desktop-atspi.d.ts +1 -1
  247. package/dist/transport/adapters/desktop-atspi.js +2 -2
  248. package/dist/transport/adapters/desktop-atspi.js.map +1 -1
  249. package/dist/transport/adapters/desktop-ax-background-click-swift.d.ts +11 -0
  250. package/dist/transport/adapters/desktop-ax-background-click-swift.d.ts.map +1 -0
  251. package/dist/transport/adapters/desktop-ax-background-click-swift.js +136 -0
  252. package/dist/transport/adapters/desktop-ax-background-click-swift.js.map +1 -0
  253. package/dist/transport/adapters/desktop-ax-background-click.d.ts +4 -0
  254. package/dist/transport/adapters/desktop-ax-background-click.d.ts.map +1 -0
  255. package/dist/transport/adapters/desktop-ax-background-click.js +70 -0
  256. package/dist/transport/adapters/desktop-ax-background-click.js.map +1 -0
  257. package/dist/transport/adapters/desktop-ax-swift.d.ts +56 -0
  258. package/dist/transport/adapters/desktop-ax-swift.d.ts.map +1 -0
  259. package/dist/transport/adapters/desktop-ax-swift.js +458 -0
  260. package/dist/transport/adapters/desktop-ax-swift.js.map +1 -0
  261. package/dist/transport/adapters/desktop-ax.d.ts +14 -0
  262. package/dist/transport/adapters/desktop-ax.d.ts.map +1 -1
  263. package/dist/transport/adapters/desktop-ax.js +262 -32
  264. package/dist/transport/adapters/desktop-ax.js.map +1 -1
  265. package/dist/transport/adapters/desktop-uia.d.ts +1 -1
  266. package/dist/transport/adapters/desktop-uia.js +2 -2
  267. package/dist/transport/adapters/desktop-uia.js.map +1 -1
  268. package/dist/transport/adapters/http.js +1 -1
  269. package/dist/transport/adapters/http.js.map +1 -1
  270. package/dist/transport/capability.d.ts +1 -1
  271. package/dist/transport/capability.d.ts.map +1 -1
  272. package/dist/transport/capability.js +6 -1
  273. package/dist/transport/capability.js.map +1 -1
  274. package/dist/types.d.ts +32 -0
  275. package/dist/types.d.ts.map +1 -1
  276. package/dist/types.js.map +1 -1
  277. package/package.json +14 -3
  278. package/src/adapters/1688/item.yaml +1 -0
  279. package/src/adapters/1688/store.yaml +1 -0
  280. package/src/adapters/36kr/article.yaml +1 -0
  281. package/src/adapters/_electron/desktop-shared.ts +383 -0
  282. package/src/adapters/amazon/bestsellers.yaml +2 -0
  283. package/src/adapters/amazon/movers-shakers.yaml +2 -0
  284. package/src/adapters/amazon/new-releases.yaml +2 -0
  285. package/src/adapters/amazon/rankings.yaml +1 -0
  286. package/src/adapters/apple-podcasts/episodes.yaml +1 -0
  287. package/src/adapters/arxiv/paper.yaml +1 -0
  288. package/src/adapters/audacity/convert.yaml +1 -0
  289. package/src/adapters/audacity/effects.yaml +1 -0
  290. package/src/adapters/audacity/info.yaml +1 -0
  291. package/src/adapters/audacity/mix.yaml +1 -0
  292. package/src/adapters/audacity/normalize.yaml +1 -0
  293. package/src/adapters/audacity/spectrogram.yaml +1 -0
  294. package/src/adapters/audacity/split-channels.yaml +1 -0
  295. package/src/adapters/audacity/trim.yaml +1 -0
  296. package/src/adapters/bilibili/favorites.yaml +1 -0
  297. package/src/adapters/blender/animation.yaml +2 -0
  298. package/src/adapters/blender/camera.yaml +1 -0
  299. package/src/adapters/blender/convert.yaml +1 -0
  300. package/src/adapters/blender/export.yaml +1 -0
  301. package/src/adapters/blender/import.yaml +1 -0
  302. package/src/adapters/blender/info.yaml +1 -0
  303. package/src/adapters/blender/lighting.yaml +1 -0
  304. package/src/adapters/blender/materials.yaml +1 -0
  305. package/src/adapters/blender/objects.yaml +1 -0
  306. package/src/adapters/blender/render.yaml +2 -0
  307. package/src/adapters/blender/scene.yaml +1 -0
  308. package/src/adapters/blender/screenshot.yaml +2 -0
  309. package/src/adapters/blender/script.yaml +1 -0
  310. package/src/adapters/boss/detail.yaml +2 -0
  311. package/src/adapters/cloudcompare/info.yaml +1 -0
  312. package/src/adapters/coupang/add-to-cart.yaml +1 -0
  313. package/src/adapters/ctrip/search.yaml +1 -0
  314. package/src/adapters/docker/build.yaml +1 -1
  315. package/src/adapters/docker/images.yaml +1 -1
  316. package/src/adapters/docker/logs.yaml +1 -1
  317. package/src/adapters/docker/networks.yaml +1 -1
  318. package/src/adapters/docker/ps.yaml +1 -1
  319. package/src/adapters/docker/run.yaml +1 -1
  320. package/src/adapters/docker/volumes.yaml +1 -1
  321. package/src/adapters/douban/download.yaml +1 -0
  322. package/src/adapters/douban/photos.yaml +1 -0
  323. package/src/adapters/douban/subject.yaml +2 -0
  324. package/src/adapters/doubao-web/detail.yaml +1 -0
  325. package/src/adapters/doubao-web/meeting-summary.yaml +1 -0
  326. package/src/adapters/doubao-web/meeting-transcript.yaml +1 -0
  327. package/src/adapters/drawio/export.yaml +2 -0
  328. package/src/adapters/electron-desktop/electron-desktop.ts +57 -0
  329. package/src/adapters/facebook/join-group.yaml +2 -0
  330. package/src/adapters/ffmpeg/compress.yaml +2 -0
  331. package/src/adapters/ffmpeg/concat.yaml +1 -0
  332. package/src/adapters/ffmpeg/convert.yaml +1 -0
  333. package/src/adapters/ffmpeg/extract-audio.yaml +2 -0
  334. package/src/adapters/ffmpeg/gif.yaml +2 -0
  335. package/src/adapters/ffmpeg/normalize.yaml +2 -0
  336. package/src/adapters/ffmpeg/probe.yaml +1 -0
  337. package/src/adapters/ffmpeg/resize.yaml +2 -0
  338. package/src/adapters/ffmpeg/subtitles.yaml +2 -0
  339. package/src/adapters/ffmpeg/thumbnail.yaml +2 -0
  340. package/src/adapters/ffmpeg/trim.yaml +2 -0
  341. package/src/adapters/freecad/assembly.yaml +1 -0
  342. package/src/adapters/freecad/bom.yaml +1 -0
  343. package/src/adapters/freecad/boolean.yaml +1 -0
  344. package/src/adapters/freecad/check.yaml +1 -0
  345. package/src/adapters/freecad/convert.yaml +1 -0
  346. package/src/adapters/freecad/export-stl.yaml +1 -0
  347. package/src/adapters/freecad/import.yaml +1 -0
  348. package/src/adapters/freecad/info.yaml +1 -0
  349. package/src/adapters/freecad/macro.yaml +1 -0
  350. package/src/adapters/freecad/measure.yaml +1 -0
  351. package/src/adapters/freecad/mesh.yaml +1 -0
  352. package/src/adapters/freecad/properties.yaml +1 -0
  353. package/src/adapters/freecad/render.yaml +1 -0
  354. package/src/adapters/freecad/section.yaml +1 -0
  355. package/src/adapters/freecad/sketch.yaml +1 -0
  356. package/src/adapters/gimp/adjust.yaml +1 -0
  357. package/src/adapters/gimp/batch.yaml +1 -0
  358. package/src/adapters/gimp/convert.yaml +1 -0
  359. package/src/adapters/gimp/crop.yaml +1 -0
  360. package/src/adapters/gimp/filter.yaml +1 -0
  361. package/src/adapters/gimp/flip.yaml +1 -0
  362. package/src/adapters/gimp/info.yaml +1 -0
  363. package/src/adapters/gimp/layers.yaml +1 -0
  364. package/src/adapters/gimp/merge-layers.yaml +1 -0
  365. package/src/adapters/gimp/resize.yaml +1 -0
  366. package/src/adapters/gimp/rotate.yaml +1 -0
  367. package/src/adapters/gimp/text.yaml +1 -0
  368. package/src/adapters/godot/scene-export.yaml +1 -0
  369. package/src/adapters/hackernews/comments.yaml +1 -0
  370. package/src/adapters/hackernews/item.yaml +1 -0
  371. package/src/adapters/hf/top.yaml +1 -0
  372. package/src/adapters/imagemagick/composite.yaml +1 -0
  373. package/src/adapters/imagemagick/convert.yaml +1 -0
  374. package/src/adapters/imagemagick/identify.yaml +1 -0
  375. package/src/adapters/imagemagick/montage.yaml +1 -0
  376. package/src/adapters/imagemagick/resize.yaml +1 -0
  377. package/src/adapters/imdb/person.yaml +1 -0
  378. package/src/adapters/imdb/reviews.yaml +1 -0
  379. package/src/adapters/imdb/title.yaml +1 -0
  380. package/src/adapters/inkscape/convert.yaml +2 -0
  381. package/src/adapters/inkscape/export.yaml +2 -0
  382. package/src/adapters/inkscape/optimize.yaml +2 -0
  383. package/src/adapters/instagram/stories.yaml +1 -0
  384. package/src/adapters/jd/item.yaml +1 -0
  385. package/src/adapters/jike/post.yaml +2 -0
  386. package/src/adapters/jike/topic.yaml +2 -0
  387. package/src/adapters/kdenlive/info.yaml +1 -0
  388. package/src/adapters/kdenlive/render.yaml +1 -0
  389. package/src/adapters/krita/batch.yaml +1 -0
  390. package/src/adapters/krita/convert.yaml +1 -0
  391. package/src/adapters/krita/export.yaml +1 -0
  392. package/src/adapters/krita/info.yaml +1 -0
  393. package/src/adapters/libreoffice/convert.yaml +1 -0
  394. package/src/adapters/libreoffice/print.yaml +1 -0
  395. package/src/adapters/linear/issue-update.yaml +1 -0
  396. package/src/adapters/linux-do/category.yaml +1 -0
  397. package/src/adapters/linux-do/topic.yaml +1 -0
  398. package/src/adapters/macos/caffeinate.yaml +2 -2
  399. package/src/adapters/macos/calendar-create.yaml +1 -0
  400. package/src/adapters/macos/finder-copy.yaml +1 -0
  401. package/src/adapters/macos/finder-move.yaml +1 -0
  402. package/src/adapters/macos/finder-new-folder.yaml +1 -0
  403. package/src/adapters/macos/finder-tags.yaml +1 -0
  404. package/src/adapters/macos/open.yaml +2 -0
  405. package/src/adapters/macos/processes.yaml +3 -3
  406. package/src/adapters/macos/screen-recording.yaml +3 -2
  407. package/src/adapters/macos/screenshot.yaml +1 -0
  408. package/src/adapters/macos/spotlight.yaml +1 -0
  409. package/src/adapters/macos/wallpaper.yaml +1 -0
  410. package/src/adapters/medium/article.yaml +1 -0
  411. package/src/adapters/mermaid/render.yaml +1 -0
  412. package/src/adapters/minimax/tts.yaml +1 -0
  413. package/src/adapters/motion-studio/component-get.yaml +1 -0
  414. package/src/adapters/musescore/convert.yaml +2 -0
  415. package/src/adapters/musescore/export.yaml +2 -0
  416. package/src/adapters/musescore/info.yaml +1 -0
  417. package/src/adapters/musescore/instruments.yaml +1 -0
  418. package/src/adapters/musescore/transpose.yaml +1 -0
  419. package/src/adapters/netease-music/playlist.yaml +1 -0
  420. package/src/adapters/netease-music/top.yaml +1 -0
  421. package/src/adapters/notebooklm/get.yaml +1 -0
  422. package/src/adapters/notebooklm/history.yaml +1 -0
  423. package/src/adapters/notebooklm/note-list.yaml +1 -0
  424. package/src/adapters/notebooklm/notes-get.yaml +1 -0
  425. package/src/adapters/notebooklm/open.yaml +1 -0
  426. package/src/adapters/notebooklm/source-fulltext.yaml +1 -0
  427. package/src/adapters/notebooklm/source-get.yaml +1 -0
  428. package/src/adapters/notebooklm/source-guide.yaml +1 -0
  429. package/src/adapters/notebooklm/source-list.yaml +1 -0
  430. package/src/adapters/notebooklm/summary.yaml +1 -0
  431. package/src/adapters/novita/status.yaml +1 -0
  432. package/src/adapters/obs/screenshot.yaml +1 -0
  433. package/src/adapters/obsidian/open.yaml +1 -0
  434. package/src/adapters/ones/login.yaml +1 -0
  435. package/src/adapters/ones/task.yaml +1 -0
  436. package/src/adapters/pandoc/convert.yaml +1 -0
  437. package/src/adapters/paperreview/feedback.yaml +2 -0
  438. package/src/adapters/paperreview/review.yaml +2 -0
  439. package/src/adapters/paperreview/submit.yaml +2 -0
  440. package/src/adapters/pixiv/detail.yaml +1 -0
  441. package/src/adapters/pixiv/download.yaml +2 -0
  442. package/src/adapters/quark/ls.yaml +1 -0
  443. package/src/adapters/reddit/comments.yaml +2 -0
  444. package/src/adapters/renderdoc/capture-list.yaml +1 -0
  445. package/src/adapters/renderdoc/frame-export.yaml +1 -0
  446. package/src/adapters/reuters/article.yaml +2 -0
  447. package/src/adapters/shotcut/info.yaml +1 -0
  448. package/src/adapters/shotcut/render.yaml +1 -0
  449. package/src/adapters/sinablog/article.yaml +1 -0
  450. package/src/adapters/sinablog/user.yaml +1 -0
  451. package/src/adapters/sketch/artboards.yaml +1 -0
  452. package/src/adapters/sketch/export.yaml +1 -0
  453. package/src/adapters/sketch/symbols.yaml +1 -0
  454. package/src/adapters/smzdm/article.yaml +1 -0
  455. package/src/adapters/stackoverflow/question.yaml +1 -0
  456. package/src/adapters/stagehand/wrap-observe.yaml +1 -0
  457. package/src/adapters/steam/wishlist.yaml +1 -0
  458. package/src/adapters/substack/trending.yaml +2 -1
  459. package/src/adapters/tieba/read.yaml +1 -0
  460. package/src/adapters/tiktok/comment.yaml +1 -0
  461. package/src/adapters/tiktok/like.yaml +1 -0
  462. package/src/adapters/tiktok/save.yaml +1 -0
  463. package/src/adapters/tiktok/unlike.yaml +1 -0
  464. package/src/adapters/tiktok/unsave.yaml +1 -0
  465. package/src/adapters/twitch/streams.yaml +1 -0
  466. package/src/adapters/twitter/quotes.yaml +2 -0
  467. package/src/adapters/twitter/retweets.yaml +1 -0
  468. package/src/adapters/v2ex/replies.yaml +1 -0
  469. package/src/adapters/v2ex/topic.yaml +1 -0
  470. package/src/adapters/vscode/install-ext.yaml +1 -0
  471. package/src/adapters/vscode/open.yaml +1 -0
  472. package/src/adapters/web/read.yaml +1 -0
  473. package/src/adapters/weibo/comments.yaml +1 -0
  474. package/src/adapters/weibo/post.yaml +1 -0
  475. package/src/adapters/weixin/download.yaml +1 -0
  476. package/src/adapters/wiremock/create-stub.yaml +2 -0
  477. package/src/adapters/wiremock/delete-stub.yaml +1 -0
  478. package/src/adapters/wiremock/verify.yaml +1 -0
  479. package/src/adapters/xianyu/item.yaml +1 -0
  480. package/src/adapters/xiaoe/catalog.yaml +1 -0
  481. package/src/adapters/xiaoe/content.yaml +1 -0
  482. package/src/adapters/xiaoe/detail.yaml +1 -0
  483. package/src/adapters/xiaoe/play-url.yaml +1 -0
  484. package/src/adapters/xiaoyuzhou/podcast.yaml +2 -0
  485. package/src/adapters/yollomi/edit.yaml +2 -0
  486. package/src/adapters/yollomi/remove-bg.yaml +2 -0
  487. package/src/adapters/yollomi/restore.yaml +2 -0
  488. package/src/adapters/yollomi/upload.yaml +2 -0
  489. package/src/adapters/yollomi/upscale.yaml +2 -0
  490. package/src/adapters/youtube/playlist.yaml +1 -0
  491. package/src/adapters/yt-dlp/download.yaml +2 -0
  492. package/src/adapters/yt-dlp/extract-audio.yaml +2 -0
  493. package/src/adapters/yt-dlp/info.yaml +1 -0
  494. package/src/adapters/zhihu/answer.yaml +1 -0
  495. package/src/adapters/zhihu/answers.yaml +2 -0
  496. package/src/adapters/zhihu/article.yaml +1 -0
  497. package/src/adapters/zhihu/articles.yaml +2 -0
  498. package/src/adapters/zhihu/collections.yaml +2 -0
  499. package/src/adapters/zhihu/columns.yaml +2 -0
  500. package/src/adapters/zhihu/comment.yaml +1 -0
  501. package/src/adapters/zhihu/download.yaml +1 -0
  502. package/src/adapters/zhihu/followers.yaml +2 -0
  503. package/src/adapters/zhihu/following.yaml +2 -0
  504. package/src/adapters/zhihu/pins.yaml +2 -0
  505. package/src/adapters/zhihu/question.yaml +1 -0
  506. package/src/adapters/zhihu/topic.yaml +1 -0
  507. package/src/adapters/zhihu/topics.yaml +1 -0
  508. package/src/adapters/zhihu/user.yaml +2 -0
  509. package/src/adapters/zoom/join.yaml +1 -0
  510. package/src/adapters/zsxq/search.yaml +1 -0
  511. package/src/adapters/zsxq/topic.yaml +1 -0
  512. package/src/adapters/zsxq/topics.yaml +1 -0
@@ -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":"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"}
@@ -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"}