@mseep/clawdcursor 1.5.5

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 (354) hide show
  1. package/CHANGELOG.md +2264 -0
  2. package/LICENSE +21 -0
  3. package/README.md +385 -0
  4. package/SECURITY.md +44 -0
  5. package/SKILL.md +503 -0
  6. package/dist/core/agent-loop/agent.d.ts +42 -0
  7. package/dist/core/agent-loop/agent.js +1023 -0
  8. package/dist/core/agent-loop/agent.js.map +1 -0
  9. package/dist/core/agent-loop/batch-tool.d.ts +25 -0
  10. package/dist/core/agent-loop/batch-tool.js +218 -0
  11. package/dist/core/agent-loop/batch-tool.js.map +1 -0
  12. package/dist/core/agent-loop/coord-scale.d.ts +72 -0
  13. package/dist/core/agent-loop/coord-scale.js +89 -0
  14. package/dist/core/agent-loop/coord-scale.js.map +1 -0
  15. package/dist/core/agent-loop/focus-guard.d.ts +24 -0
  16. package/dist/core/agent-loop/focus-guard.js +29 -0
  17. package/dist/core/agent-loop/focus-guard.js.map +1 -0
  18. package/dist/core/agent-loop/project-mcp.d.ts +97 -0
  19. package/dist/core/agent-loop/project-mcp.js +253 -0
  20. package/dist/core/agent-loop/project-mcp.js.map +1 -0
  21. package/dist/core/agent-loop/prompt.d.ts +45 -0
  22. package/dist/core/agent-loop/prompt.js +426 -0
  23. package/dist/core/agent-loop/prompt.js.map +1 -0
  24. package/dist/core/agent-loop/tool-meta.d.ts +93 -0
  25. package/dist/core/agent-loop/tool-meta.js +651 -0
  26. package/dist/core/agent-loop/tool-meta.js.map +1 -0
  27. package/dist/core/agent-loop/tools.d.ts +38 -0
  28. package/dist/core/agent-loop/tools.js +2134 -0
  29. package/dist/core/agent-loop/tools.js.map +1 -0
  30. package/dist/core/agent-loop/types.d.ts +170 -0
  31. package/dist/core/agent-loop/types.js +12 -0
  32. package/dist/core/agent-loop/types.js.map +1 -0
  33. package/dist/core/agent.d.ts +51 -0
  34. package/dist/core/agent.js +245 -0
  35. package/dist/core/agent.js.map +1 -0
  36. package/dist/core/app-categories.d.ts +67 -0
  37. package/dist/core/app-categories.js +108 -0
  38. package/dist/core/app-categories.js.map +1 -0
  39. package/dist/core/banner.d.ts +70 -0
  40. package/dist/core/banner.js +245 -0
  41. package/dist/core/banner.js.map +1 -0
  42. package/dist/core/classify/capability.d.ts +45 -0
  43. package/dist/core/classify/capability.js +78 -0
  44. package/dist/core/classify/capability.js.map +1 -0
  45. package/dist/core/decompose/llm-decomposer.d.ts +35 -0
  46. package/dist/core/decompose/llm-decomposer.js +156 -0
  47. package/dist/core/decompose/llm-decomposer.js.map +1 -0
  48. package/dist/core/decompose/parser.d.ts +27 -0
  49. package/dist/core/decompose/parser.js +101 -0
  50. package/dist/core/decompose/parser.js.map +1 -0
  51. package/dist/core/observability/correlation.d.ts +19 -0
  52. package/dist/core/observability/correlation.js +36 -0
  53. package/dist/core/observability/correlation.js.map +1 -0
  54. package/dist/core/observability/cost-meter.d.ts +51 -0
  55. package/dist/core/observability/cost-meter.js +134 -0
  56. package/dist/core/observability/cost-meter.js.map +1 -0
  57. package/dist/core/observability/logger.d.ts +61 -0
  58. package/dist/core/observability/logger.js +550 -0
  59. package/dist/core/observability/logger.js.map +1 -0
  60. package/dist/core/router/aliases.d.ts +50 -0
  61. package/dist/core/router/aliases.js +104 -0
  62. package/dist/core/router/aliases.js.map +1 -0
  63. package/dist/core/router/normalize.d.ts +41 -0
  64. package/dist/core/router/normalize.js +80 -0
  65. package/dist/core/router/normalize.js.map +1 -0
  66. package/dist/core/safety.d.ts +126 -0
  67. package/dist/core/safety.js +568 -0
  68. package/dist/core/safety.js.map +1 -0
  69. package/dist/core/sense/a11y-resolver.d.ts +73 -0
  70. package/dist/core/sense/a11y-resolver.js +76 -0
  71. package/dist/core/sense/a11y-resolver.js.map +1 -0
  72. package/dist/core/sense/fingerprint.d.ts +41 -0
  73. package/dist/core/sense/fingerprint.js +123 -0
  74. package/dist/core/sense/fingerprint.js.map +1 -0
  75. package/dist/core/sense/rank.d.ts +70 -0
  76. package/dist/core/sense/rank.js +192 -0
  77. package/dist/core/sense/rank.js.map +1 -0
  78. package/dist/core/sense/reactive-check.d.ts +40 -0
  79. package/dist/core/sense/reactive-check.js +48 -0
  80. package/dist/core/sense/reactive-check.js.map +1 -0
  81. package/dist/core/sense/snapshot.d.ts +19 -0
  82. package/dist/core/sense/snapshot.js +100 -0
  83. package/dist/core/sense/snapshot.js.map +1 -0
  84. package/dist/core/sense/types.d.ts +66 -0
  85. package/dist/core/sense/types.js +9 -0
  86. package/dist/core/sense/types.js.map +1 -0
  87. package/dist/core/sense/ui-map-anchors.d.ts +7 -0
  88. package/dist/core/sense/ui-map-anchors.js +24 -0
  89. package/dist/core/sense/ui-map-anchors.js.map +1 -0
  90. package/dist/core/sense/ui-map-elements.d.ts +5 -0
  91. package/dist/core/sense/ui-map-elements.js +33 -0
  92. package/dist/core/sense/ui-map-elements.js.map +1 -0
  93. package/dist/core/sense/ui-map-find.d.ts +56 -0
  94. package/dist/core/sense/ui-map-find.js +153 -0
  95. package/dist/core/sense/ui-map-find.js.map +1 -0
  96. package/dist/core/sense/ui-map-fuse.d.ts +4 -0
  97. package/dist/core/sense/ui-map-fuse.js +44 -0
  98. package/dist/core/sense/ui-map-fuse.js.map +1 -0
  99. package/dist/core/sense/ui-map-geom.d.ts +3 -0
  100. package/dist/core/sense/ui-map-geom.js +16 -0
  101. package/dist/core/sense/ui-map-geom.js.map +1 -0
  102. package/dist/core/sense/ui-map-holder.d.ts +58 -0
  103. package/dist/core/sense/ui-map-holder.js +87 -0
  104. package/dist/core/sense/ui-map-holder.js.map +1 -0
  105. package/dist/core/sense/ui-map-normalize.d.ts +19 -0
  106. package/dist/core/sense/ui-map-normalize.js +65 -0
  107. package/dist/core/sense/ui-map-normalize.js.map +1 -0
  108. package/dist/core/sense/ui-map-render.d.ts +4 -0
  109. package/dist/core/sense/ui-map-render.js +34 -0
  110. package/dist/core/sense/ui-map-render.js.map +1 -0
  111. package/dist/core/sense/ui-map-resolve.d.ts +41 -0
  112. package/dist/core/sense/ui-map-resolve.js +59 -0
  113. package/dist/core/sense/ui-map-resolve.js.map +1 -0
  114. package/dist/core/sense/ui-map-types.d.ts +66 -0
  115. package/dist/core/sense/ui-map-types.js +11 -0
  116. package/dist/core/sense/ui-map-types.js.map +1 -0
  117. package/dist/core/sense/ui-map.d.ts +29 -0
  118. package/dist/core/sense/ui-map.js +113 -0
  119. package/dist/core/sense/ui-map.js.map +1 -0
  120. package/dist/core/verify/assertions.d.ts +132 -0
  121. package/dist/core/verify/assertions.js +284 -0
  122. package/dist/core/verify/assertions.js.map +1 -0
  123. package/dist/index.d.ts +21 -0
  124. package/dist/index.js +24 -0
  125. package/dist/index.js.map +1 -0
  126. package/dist/llm/browser-config.d.ts +36 -0
  127. package/dist/llm/browser-config.js +83 -0
  128. package/dist/llm/browser-config.js.map +1 -0
  129. package/dist/llm/client.d.ts +268 -0
  130. package/dist/llm/client.js +1094 -0
  131. package/dist/llm/client.js.map +1 -0
  132. package/dist/llm/config.d.ts +79 -0
  133. package/dist/llm/config.js +375 -0
  134. package/dist/llm/config.js.map +1 -0
  135. package/dist/llm/credentials.d.ts +35 -0
  136. package/dist/llm/credentials.js +491 -0
  137. package/dist/llm/credentials.js.map +1 -0
  138. package/dist/llm/external-creds.d.ts +42 -0
  139. package/dist/llm/external-creds.js +169 -0
  140. package/dist/llm/external-creds.js.map +1 -0
  141. package/dist/llm/providers.d.ts +123 -0
  142. package/dist/llm/providers.js +717 -0
  143. package/dist/llm/providers.js.map +1 -0
  144. package/dist/paths.d.ts +31 -0
  145. package/dist/paths.js +147 -0
  146. package/dist/paths.js.map +1 -0
  147. package/dist/platform/accessibility.d.ts +139 -0
  148. package/dist/platform/accessibility.js +670 -0
  149. package/dist/platform/accessibility.js.map +1 -0
  150. package/dist/platform/cdp-driver.d.ts +318 -0
  151. package/dist/platform/cdp-driver.js +1179 -0
  152. package/dist/platform/cdp-driver.js.map +1 -0
  153. package/dist/platform/index.d.ts +11 -0
  154. package/dist/platform/index.js +69 -0
  155. package/dist/platform/index.js.map +1 -0
  156. package/dist/platform/keys.d.ts +17 -0
  157. package/dist/platform/keys.js +129 -0
  158. package/dist/platform/keys.js.map +1 -0
  159. package/dist/platform/launch-poll.d.ts +101 -0
  160. package/dist/platform/launch-poll.js +177 -0
  161. package/dist/platform/launch-poll.js.map +1 -0
  162. package/dist/platform/linux.d.ts +173 -0
  163. package/dist/platform/linux.js +1253 -0
  164. package/dist/platform/linux.js.map +1 -0
  165. package/dist/platform/macos.d.ts +136 -0
  166. package/dist/platform/macos.js +976 -0
  167. package/dist/platform/macos.js.map +1 -0
  168. package/dist/platform/native-desktop.d.ts +145 -0
  169. package/dist/platform/native-desktop.js +936 -0
  170. package/dist/platform/native-desktop.js.map +1 -0
  171. package/dist/platform/native-helper.d.ts +130 -0
  172. package/dist/platform/native-helper.js +592 -0
  173. package/dist/platform/native-helper.js.map +1 -0
  174. package/dist/platform/ocr-engine.d.ts +78 -0
  175. package/dist/platform/ocr-engine.js +363 -0
  176. package/dist/platform/ocr-engine.js.map +1 -0
  177. package/dist/platform/ps-runner.d.ts +28 -0
  178. package/dist/platform/ps-runner.js +228 -0
  179. package/dist/platform/ps-runner.js.map +1 -0
  180. package/dist/platform/types.d.ts +397 -0
  181. package/dist/platform/types.js +15 -0
  182. package/dist/platform/types.js.map +1 -0
  183. package/dist/platform/uri-handler.d.ts +75 -0
  184. package/dist/platform/uri-handler.js +273 -0
  185. package/dist/platform/uri-handler.js.map +1 -0
  186. package/dist/platform/wayland-backend.d.ts +53 -0
  187. package/dist/platform/wayland-backend.js +348 -0
  188. package/dist/platform/wayland-backend.js.map +1 -0
  189. package/dist/platform/windows.d.ts +232 -0
  190. package/dist/platform/windows.js +1210 -0
  191. package/dist/platform/windows.js.map +1 -0
  192. package/dist/postbuild.d.ts +10 -0
  193. package/dist/postbuild.js +98 -0
  194. package/dist/postbuild.js.map +1 -0
  195. package/dist/schema/snapshot.d.ts +33 -0
  196. package/dist/schema/snapshot.js +90 -0
  197. package/dist/schema/snapshot.js.map +1 -0
  198. package/dist/shortcuts.d.ts +30 -0
  199. package/dist/shortcuts.js +261 -0
  200. package/dist/shortcuts.js.map +1 -0
  201. package/dist/surface/cli.d.ts +7 -0
  202. package/dist/surface/cli.js +1556 -0
  203. package/dist/surface/cli.js.map +1 -0
  204. package/dist/surface/dashboard.d.ts +8 -0
  205. package/dist/surface/dashboard.js +1193 -0
  206. package/dist/surface/dashboard.js.map +1 -0
  207. package/dist/surface/doctor.d.ts +29 -0
  208. package/dist/surface/doctor.js +1514 -0
  209. package/dist/surface/doctor.js.map +1 -0
  210. package/dist/surface/format.d.ts +10 -0
  211. package/dist/surface/format.js +37 -0
  212. package/dist/surface/format.js.map +1 -0
  213. package/dist/surface/http-utility.d.ts +65 -0
  214. package/dist/surface/http-utility.js +336 -0
  215. package/dist/surface/http-utility.js.map +1 -0
  216. package/dist/surface/mcp-server.d.ts +91 -0
  217. package/dist/surface/mcp-server.js +280 -0
  218. package/dist/surface/mcp-server.js.map +1 -0
  219. package/dist/surface/onboarding.d.ts +15 -0
  220. package/dist/surface/onboarding.js +184 -0
  221. package/dist/surface/onboarding.js.map +1 -0
  222. package/dist/surface/pidfile.d.ts +79 -0
  223. package/dist/surface/pidfile.js +263 -0
  224. package/dist/surface/pidfile.js.map +1 -0
  225. package/dist/surface/readiness.d.ts +45 -0
  226. package/dist/surface/readiness.js +230 -0
  227. package/dist/surface/readiness.js.map +1 -0
  228. package/dist/surface/report.d.ts +68 -0
  229. package/dist/surface/report.js +341 -0
  230. package/dist/surface/report.js.map +1 -0
  231. package/dist/surface/skill-register.d.ts +14 -0
  232. package/dist/surface/skill-register.js +150 -0
  233. package/dist/surface/skill-register.js.map +1 -0
  234. package/dist/surface/version.d.ts +6 -0
  235. package/dist/surface/version.js +27 -0
  236. package/dist/surface/version.js.map +1 -0
  237. package/dist/tools/a11y.d.ts +8 -0
  238. package/dist/tools/a11y.js +545 -0
  239. package/dist/tools/a11y.js.map +1 -0
  240. package/dist/tools/a11y_depth.d.ts +19 -0
  241. package/dist/tools/a11y_depth.js +455 -0
  242. package/dist/tools/a11y_depth.js.map +1 -0
  243. package/dist/tools/agent.d.ts +15 -0
  244. package/dist/tools/agent.js +248 -0
  245. package/dist/tools/agent.js.map +1 -0
  246. package/dist/tools/batch.d.ts +46 -0
  247. package/dist/tools/batch.js +230 -0
  248. package/dist/tools/batch.js.map +1 -0
  249. package/dist/tools/cdp.d.ts +8 -0
  250. package/dist/tools/cdp.js +233 -0
  251. package/dist/tools/cdp.js.map +1 -0
  252. package/dist/tools/compact.d.ts +63 -0
  253. package/dist/tools/compact.js +418 -0
  254. package/dist/tools/compact.js.map +1 -0
  255. package/dist/tools/cost-class.d.ts +38 -0
  256. package/dist/tools/cost-class.js +117 -0
  257. package/dist/tools/cost-class.js.map +1 -0
  258. package/dist/tools/desktop.d.ts +9 -0
  259. package/dist/tools/desktop.js +346 -0
  260. package/dist/tools/desktop.js.map +1 -0
  261. package/dist/tools/electron_bridge.d.ts +41 -0
  262. package/dist/tools/electron_bridge.js +261 -0
  263. package/dist/tools/electron_bridge.js.map +1 -0
  264. package/dist/tools/extras.d.ts +22 -0
  265. package/dist/tools/extras.js +942 -0
  266. package/dist/tools/extras.js.map +1 -0
  267. package/dist/tools/favorites.d.ts +13 -0
  268. package/dist/tools/favorites.js +137 -0
  269. package/dist/tools/favorites.js.map +1 -0
  270. package/dist/tools/introspection.d.ts +13 -0
  271. package/dist/tools/introspection.js +55 -0
  272. package/dist/tools/introspection.js.map +1 -0
  273. package/dist/tools/ocr.d.ts +8 -0
  274. package/dist/tools/ocr.js +66 -0
  275. package/dist/tools/ocr.js.map +1 -0
  276. package/dist/tools/orchestration.d.ts +7 -0
  277. package/dist/tools/orchestration.js +377 -0
  278. package/dist/tools/orchestration.js.map +1 -0
  279. package/dist/tools/playbooks/extract-compose.d.ts +22 -0
  280. package/dist/tools/playbooks/extract-compose.js +85 -0
  281. package/dist/tools/playbooks/extract-compose.js.map +1 -0
  282. package/dist/tools/playbooks/find-replace.d.ts +11 -0
  283. package/dist/tools/playbooks/find-replace.js +56 -0
  284. package/dist/tools/playbooks/find-replace.js.map +1 -0
  285. package/dist/tools/playbooks/index.d.ts +63 -0
  286. package/dist/tools/playbooks/index.js +70 -0
  287. package/dist/tools/playbooks/index.js.map +1 -0
  288. package/dist/tools/playbooks/keys-blocklist.d.ts +24 -0
  289. package/dist/tools/playbooks/keys-blocklist.js +89 -0
  290. package/dist/tools/playbooks/keys-blocklist.js.map +1 -0
  291. package/dist/tools/registry.d.ts +40 -0
  292. package/dist/tools/registry.js +560 -0
  293. package/dist/tools/registry.js.map +1 -0
  294. package/dist/tools/safety-gate.d.ts +16 -0
  295. package/dist/tools/safety-gate.js +70 -0
  296. package/dist/tools/safety-gate.js.map +1 -0
  297. package/dist/tools/scheduler.d.ts +76 -0
  298. package/dist/tools/scheduler.js +413 -0
  299. package/dist/tools/scheduler.js.map +1 -0
  300. package/dist/tools/shortcuts.d.ts +13 -0
  301. package/dist/tools/shortcuts.js +205 -0
  302. package/dist/tools/shortcuts.js.map +1 -0
  303. package/dist/tools/smart.d.ts +15 -0
  304. package/dist/tools/smart.js +785 -0
  305. package/dist/tools/smart.js.map +1 -0
  306. package/dist/tools/types.d.ts +174 -0
  307. package/dist/tools/types.js +67 -0
  308. package/dist/tools/types.js.map +1 -0
  309. package/dist/tools/window-text.d.ts +15 -0
  310. package/dist/tools/window-text.js +39 -0
  311. package/dist/tools/window-text.js.map +1 -0
  312. package/dist/types.d.ts +122 -0
  313. package/dist/types.js +41 -0
  314. package/dist/types.js.map +1 -0
  315. package/native/Package.swift +38 -0
  316. package/native/README.md +113 -0
  317. package/native/Sources/ClawdCursorHelper/main.swift +602 -0
  318. package/native/Sources/ClawdCursorHost/main.swift +182 -0
  319. package/native/Sources/PermissionCheck/main.swift +53 -0
  320. package/native/Sources/ScreenshotHelper/main.swift +219 -0
  321. package/native/build.sh +139 -0
  322. package/native/entitlements.plist +12 -0
  323. package/package.json +115 -0
  324. package/scripts/banner.ps1 +112 -0
  325. package/scripts/coord-accuracy.ps1 +140 -0
  326. package/scripts/coord-uwp.ps1 +80 -0
  327. package/scripts/edge-glow.ps1 +180 -0
  328. package/scripts/find-element.ps1 +198 -0
  329. package/scripts/get-foreground-window.ps1 +71 -0
  330. package/scripts/get-screen-context.ps1 +183 -0
  331. package/scripts/get-windows.ps1 +66 -0
  332. package/scripts/install-panic-hotkey.ps1 +46 -0
  333. package/scripts/interact-element.ps1 +431 -0
  334. package/scripts/invoke-element.ps1 +314 -0
  335. package/scripts/linux/atspi-bridge.py +356 -0
  336. package/scripts/linux/ocr-recognize.py +154 -0
  337. package/scripts/mac/_window-picker.jxa +163 -0
  338. package/scripts/mac/find-element.jxa +0 -0
  339. package/scripts/mac/find-element.sh +161 -0
  340. package/scripts/mac/focus-window.jxa +284 -0
  341. package/scripts/mac/get-focused-element.jxa +102 -0
  342. package/scripts/mac/get-foreground-window.jxa +173 -0
  343. package/scripts/mac/get-screen-context.jxa +197 -0
  344. package/scripts/mac/get-ui-tree.sh +141 -0
  345. package/scripts/mac/get-windows.jxa +117 -0
  346. package/scripts/mac/interact-element.sh +235 -0
  347. package/scripts/mac/invoke-element.jxa +408 -0
  348. package/scripts/mac/ocr-recognize.swift +124 -0
  349. package/scripts/ocr-recognize.ps1 +102 -0
  350. package/scripts/postinstall-native.js +48 -0
  351. package/scripts/ps-bridge.ps1 +830 -0
  352. package/scripts/smoke-mcp.ps1 +119 -0
  353. package/scripts/sync-version.ts +178 -0
  354. package/scripts/verify-install.js +81 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/core/agent-loop/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * `batch` — the autonomous loop's action-list executor (Phase 3).
3
+ *
4
+ * Lets the cheap text brain (Haiku) plan SEVERAL known next actions and run them
5
+ * in ONE turn instead of one tool-call per LLM round-trip. Same shape and
6
+ * guarantees as the MCP-side `batch` (src/tools/batch.ts) but over the agent-loop
7
+ * machinery: UnifiedTool catalog, AgentToolContext, and the loop's own
8
+ * `safety.evaluate` chokepoint. Declarative + guarded:
9
+ *
10
+ * - Each step { name, args, precheck? } is a normal agent-loop tool call.
11
+ * - Optional `precheck` ({window}|{element}) is re-checked against LIVE state
12
+ * before the step — so an action can't fire into the wrong window.
13
+ * - Steps get the SAME per-call treatment as single tool calls (audit
14
+ * 2026-06-10, finding B): el_NN→label resolution for the safety gate,
15
+ * activeApp refreshed from a post-step snapshot, outcome-gated UIMap
16
+ * invalidation, and the Layer C reactive check (assertion-array `expect`
17
+ * in a step's args is verified, DEVIATION halts the batch).
18
+ * - Halts on the first guard miss / safety stop / step failure / DEVIATION
19
+ * and returns a trace; the loop continues from real state.
20
+ *
21
+ * The token A/B (scripts/measure-batch-tokens.ts) shows this collapses the
22
+ * per-turn catalog/perception re-reads — the win grows with task length.
23
+ */
24
+ import type { UnifiedTool } from './types';
25
+ export declare function buildBatchTool(): UnifiedTool;
@@ -0,0 +1,218 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildBatchTool = buildBatchTool;
4
+ const tools_1 = require("./tools");
5
+ const safety_1 = require("../safety");
6
+ const snapshot_1 = require("../sense/snapshot");
7
+ const reactive_check_1 = require("../sense/reactive-check");
8
+ const ocr_engine_1 = require("../../platform/ocr-engine");
9
+ const window_text_1 = require("../../tools/window-text");
10
+ const MAX_STEPS = 10;
11
+ // Lazy OCR singleton for per-step reactive checks — mirrors agent.ts reactiveOcr.
12
+ let _batchOcr = null;
13
+ function batchOcr() { return (_batchOcr ??= new ocr_engine_1.OcrEngine()); }
14
+ /** Re-perceive the a11y tree (lower-cased) — fallback guard surface when a
15
+ * structured snapshot is unavailable. */
16
+ async function perceiveTree(ctx) {
17
+ const rs = (0, tools_1.buildUnifiedTools)().find(t => t.name === 'read_screen');
18
+ if (!rs)
19
+ return '';
20
+ try {
21
+ return ((await rs.execute({}, ctx)).text || '').toLowerCase();
22
+ }
23
+ catch {
24
+ return '';
25
+ }
26
+ }
27
+ function buildBatchTool() {
28
+ return {
29
+ name: 'batch',
30
+ description: 'Run SEVERAL known next actions in ONE call instead of one per turn (saves round-trips). ' +
31
+ 'steps = JSON array of {"name","args","precheck"?}. Each step is a normal tool call (e.g. ' +
32
+ '{"name":"type","args":{"text":"hi"}}). Optional "precheck" is a precondition re-checked ' +
33
+ 'against live state before the step: {"window":"notepad"} (that window must be focused) or ' +
34
+ '{"element":"Send"} (that a11y element must exist). An `expect` assertion array inside a ' +
35
+ 'step\'s args is verified after that step (DEVIATION halts the batch). The batch STOPS at ' +
36
+ 'the first failed precondition, safety stop, step error, or DEVIATION and returns a ' +
37
+ 'per-step trace so you continue from real state. el_NN refs are only safe up to the first ' +
38
+ 'screen-changing step — after that the screen moved; target later steps by name. Use it ' +
39
+ 'for deterministic stretches (open -> focus -> type -> save). Do NOT put perception-only ' +
40
+ 'reads or terminal tools (done/give_up) in a batch.',
41
+ inputSchema: {
42
+ type: 'object',
43
+ properties: {
44
+ steps: {
45
+ type: 'array',
46
+ maxItems: 10,
47
+ description: 'The steps to run (max 10). Each step is a normal tool call: {"name","args","precheck"?}, e.g. {"name":"type","args":{"text":"hi"}}.',
48
+ items: {
49
+ type: 'object',
50
+ properties: {
51
+ name: { type: 'string', description: 'Tool to call (e.g. "type", "key", "invoke_element").' },
52
+ args: { type: 'object', description: 'Arguments object for that tool (may include an `expect` assertion array, verified after the step).' },
53
+ precheck: { type: 'object', description: 'Optional precondition re-checked against live state before the step: {"window":"..."} or {"element":"..."}.' },
54
+ },
55
+ required: ['name'],
56
+ },
57
+ },
58
+ },
59
+ required: ['steps'],
60
+ additionalProperties: false,
61
+ },
62
+ changesScreen: true,
63
+ async execute(args, ctx) {
64
+ let steps;
65
+ const raw = args.steps;
66
+ try {
67
+ steps = typeof raw === 'string' ? JSON.parse(raw) : raw;
68
+ }
69
+ catch {
70
+ return { success: false, text: 'batch: `steps` must be a JSON array of {name, args, precheck?}.' };
71
+ }
72
+ if (!Array.isArray(steps) || steps.length === 0) {
73
+ return { success: false, text: 'batch: `steps` must be a non-empty array.' };
74
+ }
75
+ // Terminal tools must never run inside a batch — their stop/terminalExit
76
+ // semantics are discarded by the trace, so the loop would keep going
77
+ // while the model believes it terminated.
78
+ const byName = new Map((0, tools_1.buildUnifiedTools)().filter(t => t.name !== 'batch' && t.terminal !== true).map(t => [t.name, t]));
79
+ const trace = [];
80
+ let done = 0;
81
+ const halt = (msg) => ({ success: false, text: `${msg}\n${trace.join('\n')}` });
82
+ // Live state tracked ACROSS steps. The single-call path refreshes the
83
+ // active app + invalidates the UIMap holder between actions; the batch
84
+ // must do the same per step, or later steps act on — and are safety-
85
+ // gated against — pre-batch state (audit 2026-06-10, finding B).
86
+ let activeApp = ctx.activeApp;
87
+ let snap = await (0, snapshot_1.captureSnapshot)(ctx.platform).catch(() => null);
88
+ if (snap?.activeWindow?.processName)
89
+ activeApp = snap.activeWindow.processName;
90
+ for (let i = 0; i < steps.length; i++) {
91
+ const step = steps[i];
92
+ const label = step.label || `${step.name}${step.args?.action ? '.' + String(step.args.action) : ''}`;
93
+ if (i >= MAX_STEPS) {
94
+ trace.push(` ${i}. [skipped] ${label}`);
95
+ return halt(`batch: ${done}/${steps.length} done — capped at ${MAX_STEPS}; submit the rest as a new batch.`);
96
+ }
97
+ const tool = byName.get(step.name);
98
+ if (!tool) {
99
+ trace.push(` ${i}. [unknown] ${label}`);
100
+ return halt(`batch halted: tool "${step.name}" is not available inside a batch.`);
101
+ }
102
+ // Precondition. `precheck` is canonical; a legacy OBJECT `expect`
103
+ // is accepted as the same thing (the two shapes used to share one
104
+ // name — audit finding B/H4).
105
+ const legacyExpect = step.expect;
106
+ const precheck = step.precheck
107
+ ?? (legacyExpect && !Array.isArray(legacyExpect) && typeof legacyExpect === 'object'
108
+ ? legacyExpect
109
+ : undefined);
110
+ if (precheck && (precheck.window || precheck.element)) {
111
+ if (!snap)
112
+ snap = await (0, snapshot_1.captureSnapshot)(ctx.platform).catch(() => null);
113
+ if (snap) {
114
+ // Structured check: window against the ACTIVE window's process+title
115
+ // (not a substring of arbitrary element text), element against the
116
+ // FULL element list (not a 60-element truncated render).
117
+ if (precheck.window) {
118
+ // window-normalized: tolerate invisible Unicode in titles (Edge's
119
+ // NBSP in "Microsoft Edge") that defeats a plain substring compare.
120
+ const got = `${snap.activeWindow?.processName ?? ''} ${snap.activeWindow?.title ?? ''}`;
121
+ if (!(0, window_text_1.windowTextIncludes)(got, precheck.window)) {
122
+ trace.push(` ${i}. [guard_failed] ${label} — window "${precheck.window}" not focused (active: ${snap.activeWindow?.processName ?? 'unknown'})`);
123
+ return halt(`batch halted at step ${i}: precondition failed (window "${precheck.window}" not focused) — re-plan from current state.`);
124
+ }
125
+ }
126
+ if (precheck.element) {
127
+ const found = snap.elements.some(e => (0, window_text_1.windowTextIncludes)(e.name, precheck.element));
128
+ if (!found) {
129
+ trace.push(` ${i}. [guard_failed] ${label} — element "${precheck.element}" not present`);
130
+ return halt(`batch halted at step ${i}: precondition failed (element "${precheck.element}" not present) — re-plan from current state.`);
131
+ }
132
+ }
133
+ }
134
+ else {
135
+ // Snapshot unavailable — degrade to the legacy tree-text check
136
+ // rather than blocking the batch outright.
137
+ const tree = await perceiveTree({ ...ctx, activeApp });
138
+ if (precheck.window && !(0, window_text_1.windowTextIncludes)(tree, precheck.window)) {
139
+ trace.push(` ${i}. [guard_failed] ${label} — window "${precheck.window}" not focused`);
140
+ return halt(`batch halted at step ${i}: precondition failed (window "${precheck.window}" not focused) — re-plan from current state.`);
141
+ }
142
+ if (precheck.element && !(0, window_text_1.windowTextIncludes)(tree, precheck.element)) {
143
+ trace.push(` ${i}. [guard_failed] ${label} — element "${precheck.element}" not present`);
144
+ return halt(`batch halted at step ${i}: precondition failed (element "${precheck.element}" not present) — re-plan from current state.`);
145
+ }
146
+ }
147
+ }
148
+ const a = step.args ?? {};
149
+ let targetLabel = typeof a.name === 'string' ? a.name : typeof a.target === 'string' ? a.target : undefined;
150
+ // el_NN refs carry no name/target — resolve the element's label from the
151
+ // holder so the safety gate sees a real label (same as the loop's 5a;
152
+ // without this a batched invoke on a "Send"/"Pay" button skipped the
153
+ // destructive-label rule entirely — audit finding B/H3).
154
+ if (!targetLabel && step.name === 'invoke_element'
155
+ && typeof a.element_id === 'string' && typeof a.snapshot_id === 'string' && ctx.uiMaps) {
156
+ const r = ctx.uiMaps.resolve(a.snapshot_id, Date.now());
157
+ if (r.ok) {
158
+ const el = r.map.elements.find(e => e.id === a.element_id);
159
+ if (el)
160
+ targetLabel = el.text ?? el.normalized_text ?? undefined;
161
+ }
162
+ }
163
+ const decision = (0, safety_1.evaluate)({ tool: step.name, args: a, targetLabel, activeApp, userTaskText: ctx.task });
164
+ if (!(0, safety_1.isAllowed)(decision)) {
165
+ trace.push(` ${i}. [${decision.decision}] ${label}`);
166
+ const why = 'reason' in decision ? decision.reason : decision.tier;
167
+ return halt(`batch halted at step ${i}: safety ${decision.decision} (${why}).`);
168
+ }
169
+ let res;
170
+ try {
171
+ res = await tool.execute(a, { ...ctx, activeApp });
172
+ }
173
+ catch (e) {
174
+ res = { success: false, text: `threw: ${e instanceof Error ? e.message : String(e)}` };
175
+ }
176
+ // Post-step parity with the loop's 5c: re-perceive after a screen-
177
+ // changing step, refresh activeApp, and invalidate the holder when the
178
+ // action actually did something (outcome-gated, same rule as the loop).
179
+ let observedChange = false;
180
+ if (tool.changesScreen) {
181
+ const post = await (0, snapshot_1.captureSnapshot)(ctx.platform).catch(() => null);
182
+ if (post) {
183
+ observedChange = snap ? post.fingerprint !== snap.fingerprint : false;
184
+ snap = post;
185
+ if (post.activeWindow?.processName)
186
+ activeApp = post.activeWindow.processName;
187
+ }
188
+ if (res.success || observedChange)
189
+ ctx.uiMaps?.invalidate();
190
+ }
191
+ // Layer C per step — the assertion-array `expect` lives in the step's
192
+ // args (same schema as the single-call tools); a step-level ARRAY
193
+ // `expect` is accepted as the same thing. Previously these were
194
+ // silently dropped inside a batch (audit finding B/H4).
195
+ const assertionExpect = a.expect !== undefined ? a.expect : (Array.isArray(legacyExpect) ? legacyExpect : undefined);
196
+ const reactive = await (0, reactive_check_1.reactiveCheck)({
197
+ expect: assertionExpect,
198
+ toolText: res.text,
199
+ toolSuccess: res.success,
200
+ changesScreen: tool.changesScreen === true,
201
+ observedChange,
202
+ adapter: ctx.platform,
203
+ ocrText: async () => (await batchOcr().recognizeScreen()).fullText ?? '',
204
+ }).catch(() => null);
205
+ if (reactive)
206
+ res = { ...res, success: reactive.success, text: reactive.text };
207
+ if (!res.success) {
208
+ trace.push(` ${i}. [error] ${label} — ${(res.text || '').slice(0, 100)}`);
209
+ return halt(`batch halted at step ${i} (${label}): ${(res.text || '').slice(0, 200)}`);
210
+ }
211
+ trace.push(` ${i}. [ok] ${label} — ${(res.text || '').slice(0, 80)}`);
212
+ done++;
213
+ }
214
+ return { success: true, text: `batch: all ${steps.length} steps completed.\n${trace.join('\n')}` };
215
+ },
216
+ };
217
+ }
218
+ //# sourceMappingURL=batch-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch-tool.js","sourceRoot":"","sources":["../../../src/core/agent-loop/batch-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Shared screenshot↔screen coordinate scaling.
3
+ *
4
+ * Two coordinate spaces exist and MUST NOT be mixed:
5
+ * - SCREEN space — the coordinate system the OS mouse driver consumes.
6
+ * Accessibility-snapshot coords are already in this space.
7
+ * - IMAGE space — the downscaled screenshot the model sees, capped at
8
+ * LLM_TARGET_WIDTH (1280). A target read off the screenshot is in this
9
+ * space and must be multiplied by `imageScale` to reach screen space.
10
+ *
11
+ * The vision `mouse` compound tool always works in IMAGE space and scales. The
12
+ * granular click/drag/scroll tools default to SCREEN space (a11y coords pass
13
+ * through) but accept IMAGE-space coords when the agent had to read a target
14
+ * off the screenshot (e.g. an empty-a11y webview). Centralising the factor
15
+ * here keeps both paths identical — the earlier bug was the granular tools
16
+ * NOT scaling image coords, so a 1280-space click landed at half-position.
17
+ *
18
+ * PLATFORM NOTE — macOS Retina / HiDPI (#154):
19
+ * nut-js on macOS drives the cursor in LOGICAL POINTS (Cocoa/CGEvent space),
20
+ * not physical pixels. On a 2× Retina panel the physical width is double the
21
+ * logical width (e.g. 4480 physical / 2240 logical), so if we scaled
22
+ * image → physical the click would land twice as far right as intended.
23
+ * The correct target for the mouse driver is LOGICAL coords:
24
+ *
25
+ * mouseScale(macOS) = logicalWidth / LLM_TARGET_WIDTH
26
+ * mouseScale(others) = physicalWidth / LLM_TARGET_WIDTH
27
+ *
28
+ * The SCREENSHOT coordinate space is unchanged — screenshots are captured at
29
+ * physical resolution and downscaled to LLM_TARGET_WIDTH regardless of OS.
30
+ * Only the MOUSE INPUT mapping differs.
31
+ */
32
+ /** Width the screenshot is downscaled to before the model sees it. Keep in
33
+ * sync with the maxWidth passed to adapter.screenshot() and the native layer. */
34
+ export declare const LLM_TARGET_WIDTH = 1280;
35
+ /**
36
+ * Factor to convert IMAGE-space (screenshot) coords to the OS mouse driver's
37
+ * coordinate space. 1 when the effective width ≤ screenshot width.
38
+ *
39
+ * On macOS nut-js drives in LOGICAL POINTS, so we scale image → logical.
40
+ * On Windows / Linux nut-js drives in PHYSICAL PIXELS, so we scale image → physical.
41
+ *
42
+ * `ctx.screen.logicalWidth` is populated by MacOSAdapter.getScreenSize().
43
+ * `ctx.screen.physicalWidth` is populated by all adapters.
44
+ */
45
+ export declare function imageScale(ctx: {
46
+ screen?: {
47
+ physicalWidth?: number;
48
+ logicalWidth?: number;
49
+ };
50
+ _platform?: string;
51
+ }): number;
52
+ /** Round a coordinate after scaling. */
53
+ export declare function scaleCoord(v: number, scale: number): number;
54
+ /**
55
+ * Screen-center point in the coordinate space the OS mouse driver consumes —
56
+ * LOGICAL points on macOS, PHYSICAL pixels on Windows/Linux. Used by the
57
+ * no-coordinate scroll fallback ("scroll at the center of the screen"). Using
58
+ * physicalWidth/2 on a 2× Retina panel fed a logical-space driver a coord at
59
+ * the far edge (#154 double-count), so the wheel fired in the wrong region.
60
+ */
61
+ export declare function screenCenter(ctx: {
62
+ screen?: {
63
+ physicalWidth?: number;
64
+ physicalHeight?: number;
65
+ logicalWidth?: number;
66
+ logicalHeight?: number;
67
+ };
68
+ _platform?: string;
69
+ }): {
70
+ x: number;
71
+ y: number;
72
+ };
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ /**
3
+ * Shared screenshot↔screen coordinate scaling.
4
+ *
5
+ * Two coordinate spaces exist and MUST NOT be mixed:
6
+ * - SCREEN space — the coordinate system the OS mouse driver consumes.
7
+ * Accessibility-snapshot coords are already in this space.
8
+ * - IMAGE space — the downscaled screenshot the model sees, capped at
9
+ * LLM_TARGET_WIDTH (1280). A target read off the screenshot is in this
10
+ * space and must be multiplied by `imageScale` to reach screen space.
11
+ *
12
+ * The vision `mouse` compound tool always works in IMAGE space and scales. The
13
+ * granular click/drag/scroll tools default to SCREEN space (a11y coords pass
14
+ * through) but accept IMAGE-space coords when the agent had to read a target
15
+ * off the screenshot (e.g. an empty-a11y webview). Centralising the factor
16
+ * here keeps both paths identical — the earlier bug was the granular tools
17
+ * NOT scaling image coords, so a 1280-space click landed at half-position.
18
+ *
19
+ * PLATFORM NOTE — macOS Retina / HiDPI (#154):
20
+ * nut-js on macOS drives the cursor in LOGICAL POINTS (Cocoa/CGEvent space),
21
+ * not physical pixels. On a 2× Retina panel the physical width is double the
22
+ * logical width (e.g. 4480 physical / 2240 logical), so if we scaled
23
+ * image → physical the click would land twice as far right as intended.
24
+ * The correct target for the mouse driver is LOGICAL coords:
25
+ *
26
+ * mouseScale(macOS) = logicalWidth / LLM_TARGET_WIDTH
27
+ * mouseScale(others) = physicalWidth / LLM_TARGET_WIDTH
28
+ *
29
+ * The SCREENSHOT coordinate space is unchanged — screenshots are captured at
30
+ * physical resolution and downscaled to LLM_TARGET_WIDTH regardless of OS.
31
+ * Only the MOUSE INPUT mapping differs.
32
+ */
33
+ Object.defineProperty(exports, "__esModule", { value: true });
34
+ exports.LLM_TARGET_WIDTH = void 0;
35
+ exports.imageScale = imageScale;
36
+ exports.scaleCoord = scaleCoord;
37
+ exports.screenCenter = screenCenter;
38
+ /** Width the screenshot is downscaled to before the model sees it. Keep in
39
+ * sync with the maxWidth passed to adapter.screenshot() and the native layer. */
40
+ exports.LLM_TARGET_WIDTH = 1280;
41
+ /**
42
+ * Factor to convert IMAGE-space (screenshot) coords to the OS mouse driver's
43
+ * coordinate space. 1 when the effective width ≤ screenshot width.
44
+ *
45
+ * On macOS nut-js drives in LOGICAL POINTS, so we scale image → logical.
46
+ * On Windows / Linux nut-js drives in PHYSICAL PIXELS, so we scale image → physical.
47
+ *
48
+ * `ctx.screen.logicalWidth` is populated by MacOSAdapter.getScreenSize().
49
+ * `ctx.screen.physicalWidth` is populated by all adapters.
50
+ */
51
+ function imageScale(ctx) {
52
+ const platform = ctx._platform ?? process.platform;
53
+ if (platform === 'darwin') {
54
+ // macOS: nut-js mouse operates in logical points.
55
+ const lw = ctx.screen?.logicalWidth ?? 0;
56
+ if (lw > 0) {
57
+ return lw > exports.LLM_TARGET_WIDTH ? lw / exports.LLM_TARGET_WIDTH : 1;
58
+ }
59
+ // logicalWidth unavailable: fall back to physical (best effort — will
60
+ // still be wrong on Retina but avoids a silent ×1 regress).
61
+ const pw = ctx.screen?.physicalWidth ?? 0;
62
+ return pw > exports.LLM_TARGET_WIDTH ? pw / exports.LLM_TARGET_WIDTH : 1;
63
+ }
64
+ // Windows / Linux: nut-js mouse operates in physical pixels.
65
+ const w = ctx.screen?.physicalWidth ?? 0;
66
+ return w > exports.LLM_TARGET_WIDTH ? w / exports.LLM_TARGET_WIDTH : 1;
67
+ }
68
+ /** Round a coordinate after scaling. */
69
+ function scaleCoord(v, scale) {
70
+ return Math.round(v * scale);
71
+ }
72
+ /**
73
+ * Screen-center point in the coordinate space the OS mouse driver consumes —
74
+ * LOGICAL points on macOS, PHYSICAL pixels on Windows/Linux. Used by the
75
+ * no-coordinate scroll fallback ("scroll at the center of the screen"). Using
76
+ * physicalWidth/2 on a 2× Retina panel fed a logical-space driver a coord at
77
+ * the far edge (#154 double-count), so the wheel fired in the wrong region.
78
+ */
79
+ function screenCenter(ctx) {
80
+ const platform = ctx._platform ?? process.platform;
81
+ const s = ctx.screen ?? {};
82
+ if (platform === 'darwin') {
83
+ const w = s.logicalWidth || s.physicalWidth || 0;
84
+ const h = s.logicalHeight || s.physicalHeight || 0;
85
+ return { x: Math.floor(w / 2), y: Math.floor(h / 2) };
86
+ }
87
+ return { x: Math.floor((s.physicalWidth ?? 0) / 2), y: Math.floor((s.physicalHeight ?? 0) / 2) };
88
+ }
89
+ //# sourceMappingURL=coord-scale.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coord-scale.js","sourceRoot":"","sources":["../../../src/core/agent-loop/coord-scale.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;;;AAgBH,gCAmBC;AAGD,gCAEC;AASD,oCAYC;AA3DD;kFACkF;AACrE,QAAA,gBAAgB,GAAG,IAAI,CAAC;AAErC;;;;;;;;;GASG;AACH,SAAgB,UAAU,CAAC,GAG1B;IACC,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC;IACnD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,kDAAkD;QAClD,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,YAAY,IAAI,CAAC,CAAC;QACzC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YACX,OAAO,EAAE,GAAG,wBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG,wBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,CAAC;QACD,sEAAsE;QACtE,4DAA4D;QAC5D,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,aAAa,IAAI,CAAC,CAAC;QAC1C,OAAO,EAAE,GAAG,wBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG,wBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,6DAA6D;IAC7D,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,aAAa,IAAI,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,wBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,wBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,wCAAwC;AACxC,SAAgB,UAAU,CAAC,CAAS,EAAE,KAAa;IACjD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,YAAY,CAAC,GAG5B;IACC,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC;IACnD,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;IAC3B,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC;QACjD,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC;QACnD,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;IACxD,CAAC;IACD,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;AACnG,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Pre-click foreground guarantee — shared by the granular pointer tools
3
+ * (tools.ts) and the compound `mouse` tool (compound.ts).
4
+ *
5
+ * A coordinate click is delivered by the OS to whatever window is TOPMOST at
6
+ * that pixel (SendInput is screen-global), which is decoupled from the window
7
+ * the agent reasoned about. When a target window is known (the subtask anchor)
8
+ * and the current foreground is a DIFFERENT process, we raise the target first
9
+ * so the click lands on it instead of an overlapping window (the recurring
10
+ * "click hit the Task Console" failure). No-op when no target is set or the
11
+ * target is already foreground — working single-window flows pay nothing.
12
+ */
13
+ import type { AgentToolContext } from './types';
14
+ /** Compare two process names by basename, case-insensitively (handles ".exe"
15
+ * and path prefixes — "C:\\...\\Notepad.exe" == "notepad"). */
16
+ export declare function sameProcess(a?: string, b?: string): boolean;
17
+ /**
18
+ * Raise the subtask's target window when the foreground drifted to a different
19
+ * process, so the imminent click lands on the intended window. Single attempt,
20
+ * never throws. Returns a short note for the tool-result text (empty when no-op).
21
+ */
22
+ export declare function ensureTargetForeground(ctx: AgentToolContext, foreground: {
23
+ processName?: string;
24
+ } | null): Promise<string>;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sameProcess = sameProcess;
4
+ exports.ensureTargetForeground = ensureTargetForeground;
5
+ const sleep = (ms) => new Promise(r => setTimeout(r, ms));
6
+ /** Compare two process names by basename, case-insensitively (handles ".exe"
7
+ * and path prefixes — "C:\\...\\Notepad.exe" == "notepad"). */
8
+ function sameProcess(a, b) {
9
+ if (!a || !b)
10
+ return false;
11
+ const norm = (s) => (s.replace(/\\/g, '/').split('/').pop() ?? s).replace(/\.exe$/i, '').toLowerCase();
12
+ return norm(a) === norm(b);
13
+ }
14
+ /**
15
+ * Raise the subtask's target window when the foreground drifted to a different
16
+ * process, so the imminent click lands on the intended window. Single attempt,
17
+ * never throws. Returns a short note for the tool-result text (empty when no-op).
18
+ */
19
+ async function ensureTargetForeground(ctx, foreground) {
20
+ const t = ctx.targetWindow;
21
+ if (!t || !t.processName)
22
+ return '';
23
+ if (foreground && sameProcess(foreground.processName, t.processName))
24
+ return '';
25
+ const ok = await ctx.platform.focusWindow({ processName: t.processName }).catch(() => false);
26
+ await sleep(120);
27
+ return ok ? ` ·raised ${t.processName}` : '';
28
+ }
29
+ //# sourceMappingURL=focus-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focus-guard.js","sourceRoot":"","sources":["../../../src/core/agent-loop/focus-guard.ts"],"names":[],"mappings":";;AAkBA,kCAIC;AAOD,wDAUC;AAzBD,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAExE;gEACgE;AAChE,SAAgB,WAAW,CAAC,CAAU,EAAE,CAAU;IAChD,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3B,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC/G,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,sBAAsB,CAC1C,GAAqB,EACrB,UAA2C;IAE3C,MAAM,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC;IAC3B,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW;QAAE,OAAO,EAAE,CAAC;IACpC,IAAI,UAAU,IAAI,WAAW,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,WAAW,CAAC;QAAE,OAAO,EAAE,CAAC;IAChF,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IAC7F,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IACjB,OAAO,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/C,CAAC"}