@zenalexa/unicli 0.221.1 → 0.222.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 (125) hide show
  1. package/AGENTS.md +2 -2
  2. package/README.md +29 -22
  3. package/README.zh-CN.md +26 -22
  4. package/crates/unicli-atspi/src/errors.rs +2 -2
  5. package/crates/unicli-uia/src/errors.rs +1 -1
  6. package/dist/commands/compute.d.ts.map +1 -1
  7. package/dist/commands/compute.js +1 -1
  8. package/dist/commands/compute.js.map +1 -1
  9. package/dist/commands/doctor-compute.js +11 -7
  10. package/dist/commands/doctor-compute.js.map +1 -1
  11. package/dist/commands/lint.js +3 -3
  12. package/dist/commands/lint.js.map +1 -1
  13. package/dist/commands/migrate-schema.d.ts.map +1 -1
  14. package/dist/commands/migrate-schema.js +26 -22
  15. package/dist/commands/migrate-schema.js.map +1 -1
  16. package/dist/discovery/loader.d.ts.map +1 -1
  17. package/dist/discovery/loader.js +47 -2
  18. package/dist/discovery/loader.js.map +1 -1
  19. package/dist/electron-apps.d.ts +1 -1
  20. package/dist/electron-apps.d.ts.map +1 -1
  21. package/dist/electron-apps.js +2 -2
  22. package/dist/electron-apps.js.map +1 -1
  23. package/dist/engine/executor.d.ts +1 -1
  24. package/dist/engine/executor.js +7 -7
  25. package/dist/engine/executor.js.map +1 -1
  26. package/dist/engine/repair/remedies.js +3 -3
  27. package/dist/engine/repair/remedies.js.map +1 -1
  28. package/dist/engine/steps/desktop-ax.d.ts +4 -0
  29. package/dist/engine/steps/desktop-ax.d.ts.map +1 -1
  30. package/dist/engine/steps/desktop-ax.js +8 -0
  31. package/dist/engine/steps/desktop-ax.js.map +1 -1
  32. package/dist/engine/steps/desktop-sidecar.d.ts +1 -1
  33. package/dist/engine/steps/desktop-sidecar.js +1 -1
  34. package/dist/engine/steps/index.d.ts +1 -1
  35. package/dist/engine/steps/index.d.ts.map +1 -1
  36. package/dist/engine/steps/index.js +1 -1
  37. package/dist/engine/steps/index.js.map +1 -1
  38. package/dist/engine/steps/visual.d.ts +47 -0
  39. package/dist/engine/steps/visual.d.ts.map +1 -0
  40. package/dist/engine/steps/visual.js +66 -0
  41. package/dist/engine/steps/visual.js.map +1 -0
  42. package/dist/engine/transport/mcp-browser.d.ts +1 -1
  43. package/dist/engine/transport/mcp-browser.js +1 -1
  44. package/dist/manifest-compact.txt +2 -2
  45. package/dist/manifest-search.json +1 -1
  46. package/dist/manifest.json +68 -54
  47. package/dist/transport/adapters/desktop-atspi.js +1 -1
  48. package/dist/transport/adapters/desktop-atspi.js.map +1 -1
  49. package/dist/transport/adapters/desktop-ax-background-activation-swift.d.ts +9 -0
  50. package/dist/transport/adapters/desktop-ax-background-activation-swift.d.ts.map +1 -0
  51. package/dist/transport/adapters/desktop-ax-background-activation-swift.js +99 -0
  52. package/dist/transport/adapters/desktop-ax-background-activation-swift.js.map +1 -0
  53. package/dist/transport/adapters/desktop-ax-background-click-swift.d.ts.map +1 -1
  54. package/dist/transport/adapters/desktop-ax-background-click-swift.js +10 -133
  55. package/dist/transport/adapters/desktop-ax-background-click-swift.js.map +1 -1
  56. package/dist/transport/adapters/desktop-ax-background-click.d.ts +1 -3
  57. package/dist/transport/adapters/desktop-ax-background-click.d.ts.map +1 -1
  58. package/dist/transport/adapters/desktop-ax-background-click.js +1 -69
  59. package/dist/transport/adapters/desktop-ax-background-click.js.map +1 -1
  60. package/dist/transport/adapters/desktop-ax-background-dispatch-swift.d.ts +9 -0
  61. package/dist/transport/adapters/desktop-ax-background-dispatch-swift.d.ts.map +1 -0
  62. package/dist/transport/adapters/desktop-ax-background-dispatch-swift.js +169 -0
  63. package/dist/transport/adapters/desktop-ax-background-dispatch-swift.js.map +1 -0
  64. package/dist/transport/adapters/desktop-ax-background-input-swift.d.ts +23 -0
  65. package/dist/transport/adapters/desktop-ax-background-input-swift.d.ts.map +1 -0
  66. package/dist/transport/adapters/desktop-ax-background-input-swift.js +157 -0
  67. package/dist/transport/adapters/desktop-ax-background-input-swift.js.map +1 -0
  68. package/dist/transport/adapters/desktop-ax-background-input.d.ts +13 -0
  69. package/dist/transport/adapters/desktop-ax-background-input.d.ts.map +1 -0
  70. package/dist/transport/adapters/desktop-ax-background-input.js +124 -0
  71. package/dist/transport/adapters/desktop-ax-background-input.js.map +1 -0
  72. package/dist/transport/adapters/desktop-ax-background-window-swift.d.ts +9 -0
  73. package/dist/transport/adapters/desktop-ax-background-window-swift.d.ts.map +1 -0
  74. package/dist/transport/adapters/desktop-ax-background-window-swift.js +110 -0
  75. package/dist/transport/adapters/desktop-ax-background-window-swift.js.map +1 -0
  76. package/dist/transport/adapters/desktop-ax-swift.d.ts +1 -0
  77. package/dist/transport/adapters/desktop-ax-swift.d.ts.map +1 -1
  78. package/dist/transport/adapters/desktop-ax-swift.js +1 -0
  79. package/dist/transport/adapters/desktop-ax-swift.js.map +1 -1
  80. package/dist/transport/adapters/desktop-ax.d.ts +4 -1
  81. package/dist/transport/adapters/desktop-ax.d.ts.map +1 -1
  82. package/dist/transport/adapters/desktop-ax.js +57 -6
  83. package/dist/transport/adapters/desktop-ax.js.map +1 -1
  84. package/dist/transport/adapters/desktop-uia.js +1 -1
  85. package/dist/transport/adapters/desktop-uia.js.map +1 -1
  86. package/dist/transport/adapters/visual.d.ts +114 -0
  87. package/dist/transport/adapters/visual.d.ts.map +1 -0
  88. package/dist/transport/adapters/visual.js +473 -0
  89. package/dist/transport/adapters/visual.js.map +1 -0
  90. package/dist/transport/bus.d.ts +1 -1
  91. package/dist/transport/bus.js +3 -3
  92. package/dist/transport/bus.js.map +1 -1
  93. package/dist/transport/capability.d.ts.map +1 -1
  94. package/dist/transport/capability.js +32 -30
  95. package/dist/transport/capability.js.map +1 -1
  96. package/dist/transport/cascade.js +27 -27
  97. package/dist/transport/cascade.js.map +1 -1
  98. package/dist/transport/types.d.ts +5 -5
  99. package/dist/transport/types.d.ts.map +1 -1
  100. package/dist/transport/types.js +1 -1
  101. package/docs/operate/compute.md +20 -7
  102. package/docs/operate/focus-behavior.md +21 -12
  103. package/docs/operate/troubleshooting.md +17 -12
  104. package/package.json +5 -11
  105. package/server.json +2 -2
  106. package/skills/unicli/SKILL.md +1 -1
  107. package/skills/unicli-claude-code/SKILL.md +1 -1
  108. package/skills/unicli-hermes/SKILL.md +1 -1
  109. package/skills/unicli-repair/references/error-codes.md +7 -7
  110. package/src/adapters/_archived/README.md +6 -6
  111. package/src/adapters/_archived/apple-music/rate-album.yaml +15 -15
  112. package/src/adapters/_archived/archive.json +2 -2
  113. package/src/adapters/figma/export-selected.yaml +16 -16
  114. package/src/adapters/openalex/works.test.ts +40 -32
  115. package/src/adapters/zoom/toggle-mute.yaml +1 -1
  116. package/dist/engine/steps/cua.d.ts +0 -41
  117. package/dist/engine/steps/cua.d.ts.map +0 -1
  118. package/dist/engine/steps/cua.js +0 -59
  119. package/dist/engine/steps/cua.js.map +0 -1
  120. package/dist/transport/adapters/cua.d.ts +0 -239
  121. package/dist/transport/adapters/cua.d.ts.map +0 -1
  122. package/dist/transport/adapters/cua.js +0 -661
  123. package/dist/transport/adapters/cua.js.map +0 -1
  124. package/src/adapters/cua/bench-list.yaml +0 -28
  125. package/src/adapters/cua/bench-run.yaml +0 -40
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.221.1",
2
+ "version": "0.222.0",
3
3
  "sites": {
4
4
  "1688": {
5
5
  "commands": [
@@ -8533,58 +8533,6 @@
8533
8533
  ],
8534
8534
  "category": "other"
8535
8535
  },
8536
- "cua": {
8537
- "commands": [
8538
- {
8539
- "name": "bench-list",
8540
- "description": "List trycua/cua computer-use benchmarks",
8541
- "strategy": "public",
8542
- "type": "bridge",
8543
- "browser": false,
8544
- "quarantined": false,
8545
- "args": [],
8546
- "columns": [
8547
- "name",
8548
- "description"
8549
- ],
8550
- "pipeline_steps": 1,
8551
- "adapter_path": "src/adapters/cua/bench-list.yaml"
8552
- },
8553
- {
8554
- "name": "bench-run",
8555
- "description": "Run a trycua/cua computer-use benchmark",
8556
- "strategy": "public",
8557
- "type": "bridge",
8558
- "browser": false,
8559
- "quarantined": false,
8560
- "args": [
8561
- {
8562
- "name": "benchmark",
8563
- "type": "str",
8564
- "required": true,
8565
- "positional": true,
8566
- "description": "Benchmark name from `cua bench/list`"
8567
- },
8568
- {
8569
- "name": "agent",
8570
- "type": "str",
8571
- "required": false,
8572
- "positional": false,
8573
- "description": "Agent backend (e.g. unicli, browser-use, claude)"
8574
- }
8575
- ],
8576
- "columns": [
8577
- "task",
8578
- "score",
8579
- "duration",
8580
- "agent"
8581
- ],
8582
- "pipeline_steps": 1,
8583
- "adapter_path": "src/adapters/cua/bench-run.yaml"
8584
- }
8585
- ],
8586
- "category": "other"
8587
- },
8588
8536
  "cursor": {
8589
8537
  "commands": [
8590
8538
  {
@@ -15266,7 +15214,7 @@
15266
15214
  },
15267
15215
  {
15268
15216
  "name": "export-selected",
15269
- "description": "Export the currently-selected Figma frame via CUA + macOS AX",
15217
+ "description": "Export the currently-selected Figma frame via Visual + macOS AX",
15270
15218
  "strategy": "ui",
15271
15219
  "type": "browser",
15272
15220
  "domain": "figma.com",
@@ -35575,6 +35523,39 @@
35575
35523
  },
35576
35524
  "semantic-scholar": {
35577
35525
  "commands": [
35526
+ {
35527
+ "name": "citations",
35528
+ "description": "List Semantic Scholar paper citations",
35529
+ "strategy": "public",
35530
+ "type": "web-api",
35531
+ "domain": "api.semanticscholar.org",
35532
+ "columns": [
35533
+ "id",
35534
+ "title",
35535
+ "authors",
35536
+ "year",
35537
+ "venue",
35538
+ "doi",
35539
+ "pdf_url",
35540
+ "source_url"
35541
+ ],
35542
+ "args": [
35543
+ {
35544
+ "name": "id",
35545
+ "type": "str",
35546
+ "required": true,
35547
+ "positional": true
35548
+ },
35549
+ {
35550
+ "name": "limit",
35551
+ "type": "int",
35552
+ "default": 20
35553
+ }
35554
+ ],
35555
+ "pipeline_steps": 0,
35556
+ "adapter_path": "src/adapters/semantic-scholar/papers.ts",
35557
+ "target_surface": ""
35558
+ },
35578
35559
  {
35579
35560
  "name": "paper",
35580
35561
  "description": "Fetch one Semantic Scholar paper by paperId, DOI, or arXiv id",
@@ -35603,6 +35584,39 @@
35603
35584
  "adapter_path": "src/adapters/semantic-scholar/papers.ts",
35604
35585
  "target_surface": ""
35605
35586
  },
35587
+ {
35588
+ "name": "references",
35589
+ "description": "List Semantic Scholar paper references",
35590
+ "strategy": "public",
35591
+ "type": "web-api",
35592
+ "domain": "api.semanticscholar.org",
35593
+ "columns": [
35594
+ "id",
35595
+ "title",
35596
+ "authors",
35597
+ "year",
35598
+ "venue",
35599
+ "doi",
35600
+ "pdf_url",
35601
+ "source_url"
35602
+ ],
35603
+ "args": [
35604
+ {
35605
+ "name": "id",
35606
+ "type": "str",
35607
+ "required": true,
35608
+ "positional": true
35609
+ },
35610
+ {
35611
+ "name": "limit",
35612
+ "type": "int",
35613
+ "default": 20
35614
+ }
35615
+ ],
35616
+ "pipeline_steps": 0,
35617
+ "adapter_path": "src/adapters/semantic-scholar/papers.ts",
35618
+ "target_surface": ""
35619
+ },
35606
35620
  {
35607
35621
  "name": "search",
35608
35622
  "description": "Search Semantic Scholar papers",
@@ -29,7 +29,7 @@ const ATSPI_CAPABILITY = {
29
29
  platforms: ["linux"],
30
30
  mutatesHost: true,
31
31
  };
32
- const LINUX_ONLY_SUGGESTION = "run on Linux with the native AT-SPI backend available, or fall back to CUA";
32
+ const LINUX_ONLY_SUGGESTION = "run on Linux with the native AT-SPI backend available, or fall back to Visual";
33
33
  export class DesktopAtspiTransport {
34
34
  kind = "desktop-atspi";
35
35
  capability = ATSPI_CAPABILITY;
@@ -1 +1 @@
1
- {"version":3,"file":"desktop-atspi.js","sourceRoot":"","sources":["../../../src/transport/adapters/desktop-atspi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"desktop-atspi.js","sourceRoot":"","sources":["../../../src/transport/adapters/desktop-atspi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @owner src/transport/adapters/desktop-ax-background-activation-swift.ts
3
+ * @does Generate Swift for per-process focus suppression and background window priming.
4
+ * @needs AppKit/CoreGraphics event tap APIs, window event stamping helpers
5
+ * @feeds desktop-ax background input Swift generator
6
+ * @breaks Failed tap installation can steal user focus or prevent background activation.
7
+ */
8
+ export declare function swiftBackgroundActivationSupportCode(): string;
9
+ //# sourceMappingURL=desktop-ax-background-activation-swift.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"desktop-ax-background-activation-swift.d.ts","sourceRoot":"","sources":["../../../src/transport/adapters/desktop-ax-background-activation-swift.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,wBAAgB,oCAAoC,IAAI,MAAM,CA0F7D"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * @owner src/transport/adapters/desktop-ax-background-activation-swift.ts
3
+ * @does Generate Swift for per-process focus suppression and background window priming.
4
+ * @needs AppKit/CoreGraphics event tap APIs, window event stamping helpers
5
+ * @feeds desktop-ax background input Swift generator
6
+ * @breaks Failed tap installation can steal user focus or prevent background activation.
7
+ */
8
+ export function swiftBackgroundActivationSupportCode() {
9
+ return [
10
+ `final class ScopedWindowActivationSession {`,
11
+ ` enum TapKind { case previous, target }`,
12
+ ` private enum Phase { case deliveringToTarget, holding, finished }`,
13
+ ` final class TapContext { let session: ScopedWindowActivationSession; let kind: TapKind; init(session: ScopedWindowActivationSession, kind: TapKind) { self.session = session; self.kind = kind } }`,
14
+ ` private let targetPID: pid_t`,
15
+ ` private let lock = NSLock()`,
16
+ ` private var phase: Phase = .deliveringToTarget`,
17
+ ` private var taps: [CFMachPort] = []`,
18
+ ` private var contexts: [TapContext] = []`,
19
+ ` private var finished = false`,
20
+ ` private init(targetPID: pid_t) { self.targetPID = targetPID }`,
21
+ ` static func start(targetPID: pid_t) -> ScopedWindowActivationSession? {`,
22
+ ` guard let previous = NSWorkspace.shared.frontmostApplication, previous.processIdentifier != targetPID else { return ScopedWindowActivationSession(targetPID: targetPID) }`,
23
+ ` let session = ScopedWindowActivationSession(targetPID: targetPID)`,
24
+ ` guard session.installTap(kind: .previous, pid: previous.processIdentifier), session.installTap(kind: .target, pid: targetPID) else { session.finish(); return nil }`,
25
+ ` return session`,
26
+ ` }`,
27
+ ` func beginTargetDelivery() { setPhase(.deliveringToTarget) }`,
28
+ ` func holdFocusSuppressionUntilFinish() { setPhase(.holding) }`,
29
+ ` static func activateWindow(targetPID: pid_t, windowNumber: Int, windowFrame: CGRect) {`,
30
+ ` postWindowActivationEvent(targetPID: targetPID, windowNumber: windowNumber)`,
31
+ ` postWindowCenterPrimer(targetPID: targetPID, windowNumber: windowNumber, windowFrame: windowFrame)`,
32
+ ` }`,
33
+ ` private static func postWindowActivationEvent(targetPID: pid_t, windowNumber: Int) {`,
34
+ ` guard windowNumber != 0 else { return }`,
35
+ ` let event = NSEvent.otherEvent(with: .appKitDefined, location: .zero, modifierFlags: [], timestamp: 0, windowNumber: windowNumber, context: nil, subtype: Int16(1), data1: 0, data2: 0)?.cgEvent`,
36
+ ` guard let event else { return }`,
37
+ ` event.setWindowAddressingFields(windowNumber: windowNumber)`,
38
+ ` event.postToPid(targetPID)`,
39
+ ` usleep(20_000)`,
40
+ ` }`,
41
+ ` private static func postWindowCenterPrimer(targetPID: pid_t, windowNumber: Int, windowFrame: CGRect) {`,
42
+ ` guard windowNumber != 0, windowFrame.width > 0, windowFrame.height > 0 else { return }`,
43
+ ` let point = CGPoint(x: windowFrame.midX, y: windowFrame.midY)`,
44
+ ` postMouse(.leftMouseDown, targetPID: targetPID, windowNumber: windowNumber, windowFrame: windowFrame, point: point, clickState: 1, pressure: 1)`,
45
+ ` usleep(30_000)`,
46
+ ` postMouse(.leftMouseUp, targetPID: targetPID, windowNumber: windowNumber, windowFrame: windowFrame, point: point, clickState: 1, pressure: 0)`,
47
+ ` usleep(20_000)`,
48
+ ` }`,
49
+ ` private static func postMouse(_ type: CGEventType, targetPID: pid_t, windowNumber: Int, windowFrame: CGRect, point: CGPoint, clickState: Int64, pressure: Double) {`,
50
+ ` guard let event = CGEvent(mouseEventSource: nil, mouseType: type, mouseCursorPosition: point, mouseButton: .left) else { return }`,
51
+ ` stampWindow(event, targetPID: targetPID, windowNumber: windowNumber, windowFrame: windowFrame, point: point, buttonNumber: 0, clickState: clickState, pressure: pressure)`,
52
+ ` event.postToPid(targetPID)`,
53
+ ` }`,
54
+ ` func restoreBackgroundActivationIfNeeded(windowNumber: Int) {`,
55
+ ` guard windowNumber != 0 else { return }`,
56
+ ` guard NSWorkspace.shared.frontmostApplication?.processIdentifier != targetPID else { return }`,
57
+ ` beginTargetDelivery()`,
58
+ ` let event = NSEvent.otherEvent(with: .appKitDefined, location: .zero, modifierFlags: [], timestamp: 0, windowNumber: windowNumber, context: nil, subtype: NSEvent.EventSubtype.applicationDeactivated.rawValue, data1: 0, data2: 0)?.cgEvent`,
59
+ ` guard let event else { return }`,
60
+ ` event.setWindowAddressingFields(windowNumber: windowNumber)`,
61
+ ` event.postToPid(targetPID)`,
62
+ ` usleep(20_000)`,
63
+ ` }`,
64
+ ` func finish() {`,
65
+ ` let shouldFinish: Bool = lock.withLock { if finished { return false }; finished = true; phase = .finished; return true }`,
66
+ ` guard shouldFinish else { return }`,
67
+ ` for tap in taps { CFMachPortInvalidate(tap) }`,
68
+ ` taps.removeAll(); contexts.removeAll()`,
69
+ ` }`,
70
+ ` private func installTap(kind: TapKind, pid: pid_t) -> Bool {`,
71
+ ` let context = TapContext(session: self, kind: kind)`,
72
+ ` let pointer = Unmanaged.passUnretained(context).toOpaque()`,
73
+ ` guard let tap = CGEvent.tapCreateForPid(pid: pid, place: .headInsertEventTap, options: .defaultTap, eventsOfInterest: CGEventMask.max, callback: scopedWindowActivationEventTapCallback, userInfo: pointer) else { return false }`,
74
+ ` guard let source = CFMachPortCreateRunLoopSource(kCFAllocatorDefault, tap, 0) else { CFMachPortInvalidate(tap); return false }`,
75
+ ` CFRunLoopAddSource(CFRunLoopGetCurrent(), source, CFRunLoopMode.commonModes)`,
76
+ ` CGEvent.tapEnable(tap: tap, enable: true)`,
77
+ ` contexts.append(context); taps.append(tap)`,
78
+ ` return true`,
79
+ ` }`,
80
+ ` func shouldDrop(kind: TapKind, type: CGEventType) -> Bool {`,
81
+ ` guard type.rawValue == 13 || type.rawValue == 19 || type.rawValue == 20 else { return false }`,
82
+ ` let current = lock.withLock { phase }`,
83
+ ` switch current {`,
84
+ ` case .deliveringToTarget, .holding: return kind == .previous`,
85
+ ` case .finished: return false`,
86
+ ` }`,
87
+ ` }`,
88
+ ` private func setPhase(_ next: Phase) { lock.withLock { phase = next } }`,
89
+ `}`,
90
+ ``,
91
+ `let scopedWindowActivationEventTapCallback: CGEventTapCallBack = { _, type, event, rawContext in`,
92
+ ` guard let rawContext else { return Unmanaged.passUnretained(event) }`,
93
+ ` let context = Unmanaged<ScopedWindowActivationSession.TapContext>.fromOpaque(rawContext).takeUnretainedValue()`,
94
+ ` if context.session.shouldDrop(kind: context.kind, type: type) { return nil }`,
95
+ ` return Unmanaged.passUnretained(event)`,
96
+ `}`,
97
+ ].join("\n");
98
+ }
99
+ //# sourceMappingURL=desktop-ax-background-activation-swift.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"desktop-ax-background-activation-swift.js","sourceRoot":"","sources":["../../../src/transport/adapters/desktop-ax-background-activation-swift.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,UAAU,oCAAoC;IAClD,OAAO;QACL,6CAA6C;QAC7C,0CAA0C;QAC1C,qEAAqE;QACrE,sMAAsM;QACtM,gCAAgC;QAChC,+BAA+B;QAC/B,kDAAkD;QAClD,uCAAuC;QACvC,2CAA2C;QAC3C,gCAAgC;QAChC,iEAAiE;QACjE,2EAA2E;QAC3E,+KAA+K;QAC/K,uEAAuE;QACvE,yKAAyK;QACzK,oBAAoB;QACpB,KAAK;QACL,gEAAgE;QAChE,iEAAiE;QACjE,0FAA0F;QAC1F,iFAAiF;QACjF,wGAAwG;QACxG,KAAK;QACL,wFAAwF;QACxF,6CAA6C;QAC7C,sMAAsM;QACtM,qCAAqC;QACrC,iEAAiE;QACjE,gCAAgC;QAChC,oBAAoB;QACpB,KAAK;QACL,0GAA0G;QAC1G,4FAA4F;QAC5F,mEAAmE;QACnE,qJAAqJ;QACrJ,oBAAoB;QACpB,mJAAmJ;QACnJ,oBAAoB;QACpB,KAAK;QACL,uKAAuK;QACvK,uIAAuI;QACvI,+KAA+K;QAC/K,gCAAgC;QAChC,KAAK;QACL,iEAAiE;QACjE,6CAA6C;QAC7C,mGAAmG;QACnG,2BAA2B;QAC3B,kPAAkP;QAClP,qCAAqC;QACrC,iEAAiE;QACjE,gCAAgC;QAChC,oBAAoB;QACpB,KAAK;QACL,mBAAmB;QACnB,8HAA8H;QAC9H,wCAAwC;QACxC,mDAAmD;QACnD,4CAA4C;QAC5C,KAAK;QACL,gEAAgE;QAChE,yDAAyD;QACzD,gEAAgE;QAChE,uOAAuO;QACvO,oIAAoI;QACpI,kFAAkF;QAClF,+CAA+C;QAC/C,gDAAgD;QAChD,iBAAiB;QACjB,KAAK;QACL,+DAA+D;QAC/D,mGAAmG;QACnG,2CAA2C;QAC3C,sBAAsB;QACtB,kEAAkE;QAClE,kCAAkC;QAClC,OAAO;QACP,KAAK;QACL,2EAA2E;QAC3E,GAAG;QACH,EAAE;QACF,kGAAkG;QAClG,wEAAwE;QACxE,kHAAkH;QAClH,gFAAgF;QAChF,0CAA0C;QAC1C,GAAG;KACJ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"desktop-ax-background-click-swift.d.ts","sourceRoot":"","sources":["../../../src/transport/adapters/desktop-ax-background-click-swift.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,WAAW,8BAA8B;IAC7C,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,eAAe,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,8BAA8B,GACnC,MAAM,CAgGR"}
1
+ {"version":3,"file":"desktop-ax-background-click-swift.d.ts","sourceRoot":"","sources":["../../../src/transport/adapters/desktop-ax-background-click-swift.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG9D,MAAM,WAAW,8BAA8B;IAC7C,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,eAAe,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,8BAA8B,GACnC,MAAM,CAUR"}
@@ -1,136 +1,13 @@
1
+ import { buildAxBackgroundInputScript } from "./desktop-ax-background-input-swift.js";
1
2
  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);
3
+ return buildAxBackgroundInputScript(target, {
4
+ action: "click",
5
+ x: opts.x,
6
+ y: opts.y,
7
+ coordinateSpace: opts.coordinateSpace,
8
+ button: opts.button,
9
+ clickCount: opts.clickCount,
10
+ windowNumber: opts.windowNumber,
11
+ });
135
12
  }
136
13
  //# sourceMappingURL=desktop-ax-background-click-swift.js.map
@@ -1 +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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"}
1
+ {"version":3,"file":"desktop-ax-background-click-swift.js","sourceRoot":"","sources":["../../../src/transport/adapters/desktop-ax-background-click-swift.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AAWtF,MAAM,UAAU,4BAA4B,CAC1C,MAAwB,EACxB,IAAoC;IAEpC,OAAO,4BAA4B,CAAC,MAAM,EAAE;QAC1C,MAAM,EAAE,OAAO;QACf,CAAC,EAAE,IAAI,CAAC,CAAC;QACT,CAAC,EAAE,IAAI,CAAC,CAAC;QACT,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,YAAY,EAAE,IAAI,CAAC,YAAY;KAChC,CAAC,CAAC;AACL,CAAC"}
@@ -1,4 +1,2 @@
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>>;
1
+ export { runAxBackgroundClick } from "./desktop-ax-background-input.js";
4
2
  //# sourceMappingURL=desktop-ax-background-click.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"desktop-ax-background-click.d.ts","sourceRoot":"","sources":["../../../src/transport/adapters/desktop-ax-background-click.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC"}
@@ -1,70 +1,2 @@
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
- }
1
+ export { runAxBackgroundClick } from "./desktop-ax-background-input.js";
70
2
  //# sourceMappingURL=desktop-ax-background-click.js.map
@@ -1 +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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"}
1
+ {"version":3,"file":"desktop-ax-background-click.js","sourceRoot":"","sources":["../../../src/transport/adapters/desktop-ax-background-click.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @owner src/transport/adapters/desktop-ax-background-dispatch-swift.ts
3
+ * @does Generate Swift for pid-addressed mouse, text, and key-combo dispatch.
4
+ * @needs AppKit NSEvent factories, CoreGraphics event APIs, Carbon virtual key constants
5
+ * @feeds desktop-ax background input Swift generator
6
+ * @breaks Bad key maps or event ordering can drop input or leave modifier keys pressed.
7
+ */
8
+ export declare function swiftBackgroundDispatcherSupportCode(): string;
9
+ //# sourceMappingURL=desktop-ax-background-dispatch-swift.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"desktop-ax-background-dispatch-swift.d.ts","sourceRoot":"","sources":["../../../src/transport/adapters/desktop-ax-background-dispatch-swift.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,wBAAgB,oCAAoC,IAAI,MAAM,CAgK7D"}