autokap 1.0.6 → 1.0.8

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 (347) hide show
  1. package/assets/chrome/ios-statusbar-comparison-reference.jpg +0 -0
  2. package/assets/chrome/ios-statusbar-dark-reference.jpg +0 -0
  3. package/assets/chrome/ios-statusbar-light-reference.jpg +0 -0
  4. package/assets/cursors/macos.svg +4 -0
  5. package/assets/cursors/windows.svg +15 -0
  6. package/assets/devices/ipad-pro-11-m4.json +52 -0
  7. package/assets/devices/iphone-16-pro.json +53 -0
  8. package/assets/devices/macbook-air-13.json +45 -0
  9. package/assets/frames/MacBook Air 13.svg +242 -0
  10. package/assets/frames/Status bar - iPhone.png +0 -0
  11. Menu bar- iPad.png +0 -0
  12. package/assets/frames/iPad Pro M4 11_.png +0 -0
  13. package/assets/frames/iPhone 16 Pro.png +0 -0
  14. package/assets/icons/Cellular Connection.svg +3 -0
  15. package/assets/icons/Union.svg +6 -0
  16. package/assets/icons/Wifi.svg +3 -0
  17. package/assets/icons/battery.svg +5 -0
  18. package/assets/icons/battery_charging.svg +8 -0
  19. package/assets/skill/OPCODE-REFERENCE.md +607 -0
  20. package/assets/skill/README.md +39 -0
  21. package/assets/skill/SKILL.md +453 -468
  22. package/assets/skill/STUDIO-SKILL.md +476 -0
  23. package/assets/skill/references/examples.md +104 -0
  24. package/assets/skill/references/interactive-demo.md +225 -0
  25. package/assets/skill/references/mock-data.md +178 -0
  26. package/dist/abort.d.ts +5 -0
  27. package/dist/abort.js +44 -0
  28. package/dist/action-verifier.d.ts +29 -0
  29. package/dist/action-verifier.js +133 -0
  30. package/dist/agent-action-recovery.d.ts +45 -0
  31. package/dist/agent-action-recovery.js +370 -0
  32. package/dist/agent-message-utils.d.ts +21 -0
  33. package/dist/agent-message-utils.js +77 -0
  34. package/dist/agent-url-utils.d.ts +30 -0
  35. package/dist/agent-url-utils.js +138 -0
  36. package/dist/agent.d.ts +226 -0
  37. package/dist/agent.js +6666 -0
  38. package/dist/ak-tree.d.ts +39 -0
  39. package/dist/ak-tree.js +368 -0
  40. package/dist/alt-text.d.ts +26 -0
  41. package/dist/alt-text.js +55 -0
  42. package/dist/auth-capture.d.ts +17 -0
  43. package/dist/auth-capture.js +164 -0
  44. package/dist/benchmark.d.ts +59 -0
  45. package/dist/benchmark.js +135 -0
  46. package/dist/billing-operation-logging.d.ts +38 -0
  47. package/dist/billing-operation-logging.js +248 -0
  48. package/dist/browser-bar.d.ts +48 -0
  49. package/dist/browser-bar.js +284 -0
  50. package/dist/browser-pool.d.ts +7 -0
  51. package/dist/browser-pool.js +15 -5
  52. package/dist/browser-utils.d.ts +31 -0
  53. package/dist/browser-utils.js +97 -0
  54. package/dist/browser.d.ts +76 -1
  55. package/dist/browser.js +1657 -39
  56. package/dist/capture-alt-text.d.ts +12 -0
  57. package/dist/capture-alt-text.js +52 -0
  58. package/dist/capture-encryption.d.ts +10 -0
  59. package/dist/capture-encryption.js +41 -0
  60. package/dist/capture-language-preflight.d.ts +41 -0
  61. package/dist/capture-language-preflight.js +300 -0
  62. package/dist/capture-llm-page-identity.d.ts +15 -0
  63. package/dist/capture-llm-page-identity.js +128 -0
  64. package/dist/capture-model-resolution.d.ts +9 -0
  65. package/dist/capture-model-resolution.js +21 -0
  66. package/dist/capture-page-identity.d.ts +7 -0
  67. package/dist/capture-page-identity.js +352 -0
  68. package/dist/capture-preset-credentials.d.ts +62 -0
  69. package/dist/capture-preset-credentials.js +184 -0
  70. package/dist/capture-request-plan.d.ts +58 -0
  71. package/dist/capture-request-plan.js +264 -0
  72. package/dist/capture-run-optimizer.d.ts +139 -0
  73. package/dist/capture-run-optimizer.js +863 -0
  74. package/dist/capture-selector-memory.d.ts +31 -0
  75. package/dist/capture-selector-memory.js +345 -0
  76. package/dist/capture-session-profile-encryption.d.ts +2 -0
  77. package/dist/capture-session-profile-encryption.js +22 -0
  78. package/dist/capture-step-timeout.d.ts +10 -0
  79. package/dist/capture-step-timeout.js +30 -0
  80. package/dist/capture-strategy.d.ts +36 -0
  81. package/dist/capture-strategy.js +95 -0
  82. package/dist/capture-studio-sync.d.ts +23 -0
  83. package/dist/capture-studio-sync.js +172 -0
  84. package/dist/capture-surface-contract.d.ts +36 -0
  85. package/dist/capture-surface-contract.js +299 -0
  86. package/dist/capture-transition-engine.d.ts +28 -0
  87. package/dist/capture-transition-engine.js +292 -0
  88. package/dist/capture-variant-state.d.ts +56 -0
  89. package/dist/capture-variant-state.js +182 -0
  90. package/dist/capture-verification.d.ts +35 -0
  91. package/dist/capture-verification.js +95 -0
  92. package/dist/capture-viewport-lock.d.ts +48 -0
  93. package/dist/capture-viewport-lock.js +74 -0
  94. package/dist/circuit-breaker.d.ts +42 -0
  95. package/dist/circuit-breaker.js +119 -0
  96. package/dist/cli-config.d.ts +8 -1
  97. package/dist/cli-config.js +62 -6
  98. package/dist/cli-contract.d.ts +15 -0
  99. package/dist/cli-contract.js +167 -0
  100. package/dist/cli-runner-local.d.ts +12 -0
  101. package/dist/cli-runner-local.js +102 -0
  102. package/dist/cli-runner.d.ts +34 -0
  103. package/dist/cli-runner.js +433 -0
  104. package/dist/cli-utils.d.ts +0 -1
  105. package/dist/cli-utils.js +2 -5
  106. package/dist/cli.js +1005 -252
  107. package/dist/clip-orchestrator.d.ts +148 -0
  108. package/dist/clip-orchestrator.js +957 -0
  109. package/dist/clip-postprocess.d.ts +42 -0
  110. package/dist/clip-postprocess.js +201 -0
  111. package/dist/cookie-dismiss.d.ts +2 -0
  112. package/dist/cookie-dismiss.js +48 -13
  113. package/dist/cost-logging.d.ts +35 -0
  114. package/dist/cost-logging.js +242 -0
  115. package/dist/cost-resolution-monitor.d.ts +16 -0
  116. package/dist/cost-resolution-monitor.js +34 -0
  117. package/dist/credential-templates.d.ts +5 -0
  118. package/dist/credential-templates.js +60 -0
  119. package/dist/cursor-overlay-script.d.ts +6 -0
  120. package/dist/cursor-overlay-script.js +169 -0
  121. package/dist/dom-css-purger.d.ts +65 -0
  122. package/dist/dom-css-purger.js +333 -0
  123. package/dist/dom-font-inliner.d.ts +45 -0
  124. package/dist/dom-font-inliner.js +148 -0
  125. package/dist/dom-patch-resolver.d.ts +52 -0
  126. package/dist/dom-patch-resolver.js +242 -0
  127. package/dist/dom-serializer.d.ts +82 -0
  128. package/dist/dom-serializer.js +378 -0
  129. package/dist/element-capture.d.ts +13 -0
  130. package/dist/element-capture.js +522 -0
  131. package/dist/env-validation.d.ts +5 -0
  132. package/dist/env-validation.js +29 -0
  133. package/dist/execution-schema.d.ts +4423 -0
  134. package/dist/execution-schema.js +507 -0
  135. package/dist/execution-types.d.ts +886 -0
  136. package/dist/execution-types.js +65 -0
  137. package/dist/fonts-loader.d.ts +14 -0
  138. package/dist/fonts-loader.js +55 -0
  139. package/dist/hybrid-navigator.d.ts +138 -0
  140. package/dist/hybrid-navigator.js +468 -0
  141. package/dist/index.d.ts +18 -0
  142. package/dist/index.js +17 -0
  143. package/dist/legacy/agent-action-recovery.d.ts +45 -0
  144. package/dist/legacy/agent-action-recovery.js +370 -0
  145. package/dist/legacy/agent-message-utils.d.ts +21 -0
  146. package/dist/legacy/agent-message-utils.js +77 -0
  147. package/dist/legacy/agent-url-utils.d.ts +30 -0
  148. package/dist/legacy/agent-url-utils.js +138 -0
  149. package/dist/legacy/agent.d.ts +226 -0
  150. package/dist/legacy/agent.js +6666 -0
  151. package/dist/legacy/clip-orchestrator.d.ts +148 -0
  152. package/dist/legacy/clip-orchestrator.js +957 -0
  153. package/dist/legacy/credential-templates.d.ts +5 -0
  154. package/dist/legacy/credential-templates.js +60 -0
  155. package/dist/legacy/hybrid-navigator.d.ts +138 -0
  156. package/dist/legacy/hybrid-navigator.js +468 -0
  157. package/dist/legacy/llm-usage.d.ts +17 -0
  158. package/dist/legacy/llm-usage.js +45 -0
  159. package/dist/legacy/prompt-cache.d.ts +10 -0
  160. package/dist/legacy/prompt-cache.js +24 -0
  161. package/dist/legacy/prompts.d.ts +175 -0
  162. package/dist/legacy/prompts.js +1038 -0
  163. package/dist/legacy/tools.d.ts +4 -0
  164. package/dist/legacy/tools.js +216 -0
  165. package/dist/legacy/video-agent.d.ts +143 -0
  166. package/dist/legacy/video-agent.js +4788 -0
  167. package/dist/legacy/video-observation.d.ts +36 -0
  168. package/dist/legacy/video-observation.js +192 -0
  169. package/dist/legacy/video-planner.d.ts +12 -0
  170. package/dist/legacy/video-planner.js +501 -0
  171. package/dist/legacy/video-prompts.d.ts +37 -0
  172. package/dist/legacy/video-prompts.js +569 -0
  173. package/dist/legacy/video-tools.d.ts +3 -0
  174. package/dist/legacy/video-tools.js +59 -0
  175. package/dist/legacy/video-variant-state.d.ts +29 -0
  176. package/dist/legacy/video-variant-state.js +80 -0
  177. package/dist/legacy/vision-model.d.ts +17 -0
  178. package/dist/legacy/vision-model.js +74 -0
  179. package/dist/llm-healer.d.ts +63 -0
  180. package/dist/llm-healer.js +166 -0
  181. package/dist/llm-provider.d.ts +29 -0
  182. package/dist/llm-provider.js +80 -0
  183. package/dist/llm-usage.d.ts +17 -0
  184. package/dist/llm-usage.js +45 -0
  185. package/dist/logger.d.ts +6 -2
  186. package/dist/logger.js +15 -1
  187. package/dist/mockup-html.d.ts +119 -0
  188. package/dist/mockup-html.js +263 -0
  189. package/dist/mockup.d.ts +187 -0
  190. package/dist/mockup.js +869 -0
  191. package/dist/mouse-animation.d.ts +46 -0
  192. package/dist/mouse-animation.js +114 -0
  193. package/dist/opcode-actions.d.ts +42 -0
  194. package/dist/opcode-actions.js +511 -0
  195. package/dist/opcode-runner.d.ts +51 -0
  196. package/dist/opcode-runner.js +770 -0
  197. package/dist/openrouter-client.d.ts +40 -0
  198. package/dist/openrouter-client.js +16 -0
  199. package/dist/overlay-engine.d.ts +24 -0
  200. package/dist/overlay-engine.js +176 -0
  201. package/dist/overlay-utils.d.ts +14 -0
  202. package/dist/overlay-utils.js +13 -0
  203. package/dist/postcondition.d.ts +16 -0
  204. package/dist/postcondition.js +269 -0
  205. package/dist/posthog.d.ts +4 -0
  206. package/dist/posthog.js +26 -0
  207. package/dist/program-patcher.d.ts +25 -0
  208. package/dist/program-patcher.js +44 -0
  209. package/dist/prompt-cache.d.ts +10 -0
  210. package/dist/prompt-cache.js +24 -0
  211. package/dist/prompts.d.ts +175 -0
  212. package/dist/prompts.js +1038 -0
  213. package/dist/provider-config.d.ts +12 -0
  214. package/dist/provider-config.js +15 -0
  215. package/dist/recovery-chain.d.ts +37 -0
  216. package/dist/recovery-chain.js +350 -0
  217. package/dist/remote-browser.d.ts +215 -0
  218. package/dist/remote-browser.js +360 -0
  219. package/dist/safari-browser-bar.d.ts +15 -0
  220. package/dist/safari-browser-bar.js +95 -0
  221. package/dist/safari-toolbar-asset.d.ts +15 -0
  222. package/dist/safari-toolbar-asset.js +12 -0
  223. package/dist/security.d.ts +21 -0
  224. package/dist/security.js +608 -0
  225. package/dist/selector-resolver.d.ts +34 -0
  226. package/dist/selector-resolver.js +181 -0
  227. package/dist/semantic-resolver.d.ts +35 -0
  228. package/dist/semantic-resolver.js +161 -0
  229. package/dist/server-capture-runtime.d.ts +125 -0
  230. package/dist/server-capture-runtime.js +585 -0
  231. package/dist/server-credit-usage.d.ts +12 -0
  232. package/dist/server-credit-usage.js +41 -0
  233. package/dist/server-posthog.d.ts +2 -0
  234. package/dist/server-posthog.js +16 -0
  235. package/dist/server-project-webhooks.d.ts +59 -0
  236. package/dist/server-project-webhooks.js +123 -0
  237. package/dist/server-screenshot-watermark.d.ts +7 -0
  238. package/dist/server-screenshot-watermark.js +60 -0
  239. package/dist/session-profile.d.ts +86 -0
  240. package/dist/session-profile.js +1536 -0
  241. package/dist/sf-pro-fonts.d.ts +4 -0
  242. package/dist/sf-pro-fonts.js +7 -0
  243. package/dist/sf-pro-symbols.d.ts +1 -0
  244. package/dist/sf-pro-symbols.js +55 -0
  245. package/dist/skill-packaging.d.ts +28 -0
  246. package/dist/skill-packaging.js +169 -0
  247. package/dist/smart-wait.d.ts +27 -0
  248. package/dist/smart-wait.js +81 -0
  249. package/dist/status-bar-l10n.d.ts +14 -0
  250. package/dist/status-bar-l10n.js +177 -0
  251. package/dist/status-bar-render.d.ts +20 -0
  252. package/dist/status-bar-render.js +410 -0
  253. package/dist/status-bar.d.ts +53 -0
  254. package/dist/status-bar.js +620 -0
  255. package/dist/svg-browser-bar.d.ts +33 -0
  256. package/dist/svg-browser-bar.js +206 -0
  257. package/dist/svg-status-bar.d.ts +36 -0
  258. package/dist/svg-status-bar.js +597 -0
  259. package/dist/svg-text.d.ts +61 -0
  260. package/dist/svg-text.js +118 -0
  261. package/dist/tools.d.ts +4 -0
  262. package/dist/tools.js +216 -0
  263. package/dist/types.d.ts +240 -5
  264. package/dist/types.js +23 -1
  265. package/dist/v2/action-verifier.d.ts +29 -0
  266. package/dist/v2/action-verifier.js +133 -0
  267. package/dist/v2/alt-text.d.ts +26 -0
  268. package/dist/v2/alt-text.js +55 -0
  269. package/dist/v2/benchmark.d.ts +59 -0
  270. package/dist/v2/benchmark.js +135 -0
  271. package/dist/v2/capture-strategy.d.ts +30 -0
  272. package/dist/v2/capture-strategy.js +67 -0
  273. package/dist/v2/capture-verification.d.ts +35 -0
  274. package/dist/v2/capture-verification.js +95 -0
  275. package/dist/v2/circuit-breaker.d.ts +42 -0
  276. package/dist/v2/circuit-breaker.js +119 -0
  277. package/dist/v2/cli-runner-local.d.ts +11 -0
  278. package/dist/v2/cli-runner-local.js +91 -0
  279. package/dist/v2/cli-runner.d.ts +34 -0
  280. package/dist/v2/cli-runner.js +300 -0
  281. package/dist/v2/compiler-prompts.d.ts +27 -0
  282. package/dist/v2/compiler-prompts.js +123 -0
  283. package/dist/v2/compiler.d.ts +37 -0
  284. package/dist/v2/compiler.js +147 -0
  285. package/dist/v2/explorer.d.ts +41 -0
  286. package/dist/v2/explorer.js +56 -0
  287. package/dist/v2/index.d.ts +37 -0
  288. package/dist/v2/index.js +31 -0
  289. package/dist/v2/llm-healer.d.ts +62 -0
  290. package/dist/v2/llm-healer.js +166 -0
  291. package/dist/v2/llm-provider.d.ts +29 -0
  292. package/dist/v2/llm-provider.js +80 -0
  293. package/dist/v2/opcode-runner.d.ts +47 -0
  294. package/dist/v2/opcode-runner.js +634 -0
  295. package/dist/v2/overlay-engine.d.ts +24 -0
  296. package/dist/v2/overlay-engine.js +150 -0
  297. package/dist/v2/postcondition.d.ts +16 -0
  298. package/dist/v2/postcondition.js +249 -0
  299. package/dist/v2/program-patcher.d.ts +25 -0
  300. package/dist/v2/program-patcher.js +44 -0
  301. package/dist/v2/recovery-chain.d.ts +30 -0
  302. package/dist/v2/recovery-chain.js +368 -0
  303. package/dist/v2/schema.d.ts +2580 -0
  304. package/dist/v2/schema.js +295 -0
  305. package/dist/v2/selector-resolver.d.ts +34 -0
  306. package/dist/v2/selector-resolver.js +181 -0
  307. package/dist/v2/semantic-resolver.d.ts +35 -0
  308. package/dist/v2/semantic-resolver.js +161 -0
  309. package/dist/v2/smart-wait.d.ts +27 -0
  310. package/dist/v2/smart-wait.js +81 -0
  311. package/dist/v2/types.d.ts +444 -0
  312. package/dist/v2/types.js +19 -0
  313. package/dist/v2/web-playwright-local.d.ts +69 -0
  314. package/dist/v2/web-playwright-local.js +392 -0
  315. package/dist/version.d.ts +1 -0
  316. package/dist/version.js +5 -0
  317. package/dist/video-agent.d.ts +143 -0
  318. package/dist/video-agent.js +4788 -0
  319. package/dist/video-observation.d.ts +36 -0
  320. package/dist/video-observation.js +192 -0
  321. package/dist/video-planner.d.ts +12 -0
  322. package/dist/video-planner.js +501 -0
  323. package/dist/video-prompts.d.ts +37 -0
  324. package/dist/video-prompts.js +554 -0
  325. package/dist/video-tools.d.ts +3 -0
  326. package/dist/video-tools.js +59 -0
  327. package/dist/video-variant-state.d.ts +29 -0
  328. package/dist/video-variant-state.js +80 -0
  329. package/dist/vision-model.d.ts +17 -0
  330. package/dist/vision-model.js +74 -0
  331. package/dist/web-playwright-local.d.ts +126 -0
  332. package/dist/web-playwright-local.js +819 -0
  333. package/dist/ws-auth.d.ts +20 -0
  334. package/dist/ws-auth.js +70 -0
  335. package/dist/ws-broadcast.d.ts +34 -0
  336. package/dist/ws-broadcast.js +85 -0
  337. package/dist/ws-connection-limits.d.ts +12 -0
  338. package/dist/ws-connection-limits.js +44 -0
  339. package/dist/ws-handler-utils.d.ts +32 -0
  340. package/dist/ws-handler-utils.js +139 -0
  341. package/dist/ws-handler.d.ts +10 -0
  342. package/dist/ws-handler.js +1793 -0
  343. package/dist/ws-metrics-server.d.ts +9 -0
  344. package/dist/ws-metrics-server.js +31 -0
  345. package/dist/ws-server.d.ts +9 -0
  346. package/dist/ws-server.js +92 -0
  347. package/package.json +142 -71
@@ -0,0 +1,118 @@
1
+ /**
2
+ * SVG text rendering via fontkit.
3
+ *
4
+ * Converts text strings to native SVG `<path>` elements by laying out glyphs
5
+ * with fontkit and serializing each glyph's vector path. This avoids depending
6
+ * on a system font installation or any HTML rendering layer (no Playwright).
7
+ *
8
+ * Coordinate system:
9
+ * - SVG uses Y-down. Font glyphs use Y-up with the baseline at y=0.
10
+ * - We flip Y while serializing each glyph's path commands.
11
+ * - The caller passes a baseline Y position; glyphs are placed relative to it.
12
+ *
13
+ * Vertical alignment helper:
14
+ * - Use `baselineForCenteredText` to compute the baseline Y so the cap-height
15
+ * visual centroid lines up with the parent box's vertical centre. This
16
+ * matches what `display:flex; align-items:center; line-height:1` produces
17
+ * in CSS for the SF Pro status bar layouts.
18
+ */
19
+ import { getFont } from './fonts-loader.js';
20
+ /**
21
+ * Lay out a text run and serialize each glyph's vector path into a single
22
+ * SVG path data string. Y is flipped on the fly so the result is ready to
23
+ * embed in an SVG document with the standard top-left origin.
24
+ */
25
+ export function layoutText(opts) {
26
+ const font = getFont(opts.fontId);
27
+ const fontSize = opts.fontSize;
28
+ const scale = fontSize / font.unitsPerEm;
29
+ const x0 = opts.x ?? 0;
30
+ const baselineY = opts.baselineY ?? fontSize;
31
+ const letterSpacing = opts.letterSpacing ?? 0;
32
+ const run = font.layout(opts.text);
33
+ let cursorX = x0;
34
+ let pathData = '';
35
+ for (let i = 0; i < run.glyphs.length; i++) {
36
+ const glyph = run.glyphs[i];
37
+ const pos = run.positions[i];
38
+ const glyphX = cursorX + pos.xOffset * scale;
39
+ const glyphY = baselineY - pos.yOffset * scale; // flipped
40
+ pathData += pathToSvgData(glyph.path, scale, glyphX, glyphY);
41
+ cursorX += pos.xAdvance * scale + letterSpacing;
42
+ }
43
+ return {
44
+ pathData,
45
+ width: cursorX - x0,
46
+ capHeight: font.capHeight * scale,
47
+ ascent: font.ascent * scale,
48
+ descent: -font.descent * scale,
49
+ };
50
+ }
51
+ /** Measure a text run without producing path data. */
52
+ export function measureText(opts) {
53
+ const font = getFont(opts.fontId);
54
+ const fontSize = opts.fontSize;
55
+ const scale = fontSize / font.unitsPerEm;
56
+ const letterSpacing = opts.letterSpacing ?? 0;
57
+ const run = font.layout(opts.text);
58
+ let width = 0;
59
+ for (let i = 0; i < run.positions.length; i++) {
60
+ width += run.positions[i].xAdvance * scale + letterSpacing;
61
+ }
62
+ return { width, capHeight: font.capHeight * scale };
63
+ }
64
+ /**
65
+ * Compute the baseline Y so the cap-height visual centroid sits at parentY +
66
+ * parentH/2. This is what `align-items:center; line-height:1` does for short
67
+ * runs of digits / latin in SF Pro at status-bar sizes.
68
+ */
69
+ export function baselineForCenteredText(parentY, parentH, fontId, fontSize) {
70
+ const font = getFont(fontId);
71
+ const cap = font.capHeight * (fontSize / font.unitsPerEm);
72
+ return parentY + (parentH + cap) / 2;
73
+ }
74
+ /** Default font id for SF Pro at status-bar sizes. */
75
+ export function pickStatusBarFontId(weight = 'regular') {
76
+ return weight === 'semibold' ? 'text-semibold' : 'text-regular';
77
+ }
78
+ // ── Internal: glyph path → SVG path data ──────────────────────────────
79
+ /**
80
+ * Convert a fontkit Path to SVG path data, scaled by `scale` and translated
81
+ * to (dx, dy). Y is flipped on every coordinate (font Y-up → SVG Y-down).
82
+ *
83
+ * fontkit's Path.toSVG() returns the data in font units with Y-up; we'd then
84
+ * need a wrapping `<g transform="...">` to place each glyph. Doing the math
85
+ * inline produces a single flat path string with no nested groups, which Sharp
86
+ * (librsvg) handles slightly faster and which is easier to debug.
87
+ */
88
+ function pathToSvgData(path, scale, dx, dy) {
89
+ let s = '';
90
+ for (const cmd of path.commands) {
91
+ const a = cmd.args;
92
+ switch (cmd.command) {
93
+ case 'moveTo':
94
+ s += `M${fmt(dx + a[0] * scale)},${fmt(dy - a[1] * scale)}`;
95
+ break;
96
+ case 'lineTo':
97
+ s += `L${fmt(dx + a[0] * scale)},${fmt(dy - a[1] * scale)}`;
98
+ break;
99
+ case 'quadraticCurveTo':
100
+ s += `Q${fmt(dx + a[0] * scale)},${fmt(dy - a[1] * scale)} ${fmt(dx + a[2] * scale)},${fmt(dy - a[3] * scale)}`;
101
+ break;
102
+ case 'bezierCurveTo':
103
+ s += `C${fmt(dx + a[0] * scale)},${fmt(dy - a[1] * scale)} ${fmt(dx + a[2] * scale)},${fmt(dy - a[3] * scale)} ${fmt(dx + a[4] * scale)},${fmt(dy - a[5] * scale)}`;
104
+ break;
105
+ case 'closePath':
106
+ s += 'Z';
107
+ break;
108
+ }
109
+ }
110
+ return s;
111
+ }
112
+ /** Round to 3 decimals to keep generated SVGs compact. */
113
+ function fmt(n) {
114
+ return Number.isInteger(n) ? String(n) : (Math.round(n * 1000) / 1000).toString();
115
+ }
116
+ // Keep Font import side-effect free.
117
+ void null;
118
+ //# sourceMappingURL=svg-text.js.map
@@ -0,0 +1,4 @@
1
+ import type { ChatCompletionFunctionTool } from 'openai/resources/chat/completions';
2
+ export declare const agentTools: ChatCompletionFunctionTool[];
3
+ /** Restricted tool set for the element capture mini-agent */
4
+ export declare const elementCaptureTools: ChatCompletionFunctionTool[];
package/dist/tools.js ADDED
@@ -0,0 +1,216 @@
1
+ // Note: evaluation_previous_action and memory fields are no longer injected into
2
+ // tool schemas. They are documented in the system prompt instead (see prompts.ts),
3
+ // which saves tokens on every iteration.
4
+ const akTypeEnum = [
5
+ 'button', 'input', 'link', 'text', 'image', 'heading',
6
+ 'list', 'table', 'container', 'icon', 'toggle', 'select',
7
+ 'checkbox', 'radio', 'slider', 'tab', 'modal', 'nav', 'form',
8
+ 'video', 'audio', 'iframe',
9
+ ];
10
+ const semanticPatternEnum = [
11
+ 'cookie-banner', 'modal', 'navbar', 'footer', 'hero',
12
+ 'sidebar', 'dropdown', 'toast', 'tooltip', 'form', 'card',
13
+ 'pricing-table', 'cta-group',
14
+ ];
15
+ const semanticTraitEnum = [
16
+ 'floating', 'overlay', 'sticky', 'fixed',
17
+ 'above-fold', 'below-fold', 'full-width', 'scrollable',
18
+ ];
19
+ export const agentTools = [
20
+ {
21
+ type: 'function',
22
+ function: {
23
+ name: 'tap',
24
+ description: 'Click an element identified by its AKTree nodeId.',
25
+ parameters: {
26
+ type: 'object',
27
+ properties: {
28
+ nodeId: {
29
+ type: 'string',
30
+ description: 'Stable AKTree node id, for example "ak_3f8a2c1b".',
31
+ },
32
+ },
33
+ required: ['nodeId'],
34
+ },
35
+ },
36
+ },
37
+ {
38
+ type: 'function',
39
+ function: {
40
+ name: 'type',
41
+ description: 'Type text into a text-like control identified by AKTree nodeId.',
42
+ parameters: {
43
+ type: 'object',
44
+ properties: {
45
+ nodeId: {
46
+ type: 'string',
47
+ description: 'Stable AKTree node id of the target input.',
48
+ },
49
+ text: {
50
+ type: 'string',
51
+ description: 'Text to type. Use credential placeholders when available.',
52
+ },
53
+ },
54
+ required: ['nodeId', 'text'],
55
+ },
56
+ },
57
+ },
58
+ {
59
+ type: 'function',
60
+ function: {
61
+ name: 'scroll',
62
+ description: 'Scroll the page or a scrollable AKTree container. Use direction/offset for manual scrolling, or centerOn to center another AKTree node inside the page or container.',
63
+ parameters: {
64
+ type: 'object',
65
+ properties: {
66
+ direction: {
67
+ type: 'string',
68
+ enum: ['up', 'down', 'left', 'right'],
69
+ description: 'Scroll direction for manual scrolling. Optional when centerOn is provided.',
70
+ },
71
+ offset: {
72
+ type: 'number',
73
+ description: 'Optional scroll offset in pixels for manual scrolling, or bias in pixels from perfect center when centerOn is provided.',
74
+ },
75
+ target: {
76
+ type: 'string',
77
+ description: 'Optional AKTree node id of a scrollable container. Omit to scroll the page.',
78
+ },
79
+ centerOn: {
80
+ type: 'string',
81
+ description: 'Optional AKTree node id to bring to the center of the page or of the target container.',
82
+ },
83
+ },
84
+ required: [],
85
+ },
86
+ },
87
+ },
88
+ {
89
+ type: 'function',
90
+ function: {
91
+ name: 'navigate_to',
92
+ description: 'Navigate directly to a URL on the current site when that is the fastest deterministic way to reach the target.',
93
+ parameters: {
94
+ type: 'object',
95
+ properties: {
96
+ url: {
97
+ type: 'string',
98
+ description: 'Absolute or site-relative URL to navigate to.',
99
+ },
100
+ },
101
+ required: ['url'],
102
+ },
103
+ },
104
+ },
105
+ {
106
+ type: 'function',
107
+ function: {
108
+ name: 'press_key',
109
+ description: 'Press a keyboard key when the workflow requires Escape, Enter, Tab, or arrow keys.',
110
+ parameters: {
111
+ type: 'object',
112
+ properties: {
113
+ key: {
114
+ type: 'string',
115
+ description: 'Keyboard key name, for example "Escape", "Enter", "Tab", "ArrowDown".',
116
+ },
117
+ },
118
+ required: ['key'],
119
+ },
120
+ },
121
+ },
122
+ {
123
+ type: 'function',
124
+ function: {
125
+ name: 'capture',
126
+ description: 'Capture the current target and end the current run. When nodeId is provided, crop to that node bounds.',
127
+ parameters: {
128
+ type: 'object',
129
+ properties: {
130
+ nodeId: {
131
+ type: 'string',
132
+ description: 'Optional AKTree node id to crop. Omit for a page-level capture.',
133
+ },
134
+ },
135
+ required: [],
136
+ },
137
+ },
138
+ },
139
+ {
140
+ type: 'function',
141
+ function: {
142
+ name: 'analyze_screenshot',
143
+ description: 'Ask the vision model a targeted question about the current screenshot when AKTree structure is insufficient.',
144
+ parameters: {
145
+ type: 'object',
146
+ properties: {
147
+ question: {
148
+ type: 'string',
149
+ description: 'Specific visual question to answer, for example "Is a modal blocking the page?" or "Does this dialog already show the target template selected?"',
150
+ },
151
+ },
152
+ required: ['question'],
153
+ },
154
+ },
155
+ },
156
+ {
157
+ type: 'function',
158
+ function: {
159
+ name: 'focus',
160
+ description: 'Return a filtered AKTree view using typed filters only.',
161
+ parameters: {
162
+ type: 'object',
163
+ properties: {
164
+ type: {
165
+ type: 'array',
166
+ items: { type: 'string', enum: [...akTypeEnum] },
167
+ description: 'Optional node types to keep.',
168
+ },
169
+ semantic: {
170
+ type: 'array',
171
+ items: { type: 'string', enum: [...semanticPatternEnum] },
172
+ description: 'Optional semantic patterns to keep.',
173
+ },
174
+ trait: {
175
+ type: 'array',
176
+ items: { type: 'string', enum: [...semanticTraitEnum] },
177
+ description: 'Optional semantic traits to keep.',
178
+ },
179
+ interactive: {
180
+ type: 'boolean',
181
+ description: 'Optional interactive filter.',
182
+ },
183
+ visible: {
184
+ type: 'boolean',
185
+ description: 'Optional visibility filter.',
186
+ },
187
+ within: {
188
+ type: 'string',
189
+ description: 'Optional AKTree node id used as subtree scope.',
190
+ },
191
+ labelContains: {
192
+ type: 'string',
193
+ description: 'Case-insensitive substring match against node labels.',
194
+ },
195
+ maxDepth: {
196
+ type: 'number',
197
+ description: 'Optional maximum subtree depth.',
198
+ },
199
+ includeAncestors: {
200
+ type: 'boolean',
201
+ description: 'Include parent path to the root when true.',
202
+ },
203
+ },
204
+ required: [],
205
+ },
206
+ },
207
+ },
208
+ ];
209
+ /** Restricted tool set for the element capture mini-agent */
210
+ export const elementCaptureTools = [
211
+ agentTools[7],
212
+ agentTools[2],
213
+ agentTools[6],
214
+ agentTools[5],
215
+ ];
216
+ //# sourceMappingURL=tools.js.map