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,65 @@
1
+ /**
2
+ * Capture Agent — IR Types
3
+ *
4
+ * All types for the compiled execution model:
5
+ * preset (natural language) -> ExecutionProgram (typed IR) -> deterministic runtime
6
+ */
7
+ /** Sentinel value that resolves to the current variant's locale or theme at runtime */
8
+ export const VARIANT_PLACEHOLDER = '$variant';
9
+ // ── Opcode kinds ────────────────────────────────────────────────────
10
+ export const OPCODE_KINDS = [
11
+ 'NAVIGATE',
12
+ 'DISMISS_OVERLAYS',
13
+ 'ASSERT_ROUTE',
14
+ 'ASSERT_SURFACE',
15
+ 'CLICK',
16
+ 'TYPE',
17
+ 'PRESS_KEY',
18
+ 'WAIT_FOR',
19
+ 'SET_LOCALE',
20
+ 'SET_THEME',
21
+ 'SCROLL',
22
+ 'CAPTURE_SCREENSHOT',
23
+ 'CAPTURE_DOM',
24
+ 'CAPTURE_FRAGMENT',
25
+ 'BEGIN_CLIP',
26
+ 'END_CLIP',
27
+ 'HOVER',
28
+ 'SELECT_OPTION',
29
+ 'CHECK',
30
+ 'DOUBLE_CLICK',
31
+ 'CLONE_ELEMENT',
32
+ 'INJECT_MOCK_DATA',
33
+ 'REMOVE_ELEMENT',
34
+ 'SET_ATTRIBUTE',
35
+ ];
36
+ /**
37
+ * Soft opcodes are non-blocking — if their action or postcondition fails at
38
+ * runtime, the runner returns `status: 'skipped'` instead of aborting the
39
+ * variant. The circuit breaker is not ticked. Used by mock data injection so
40
+ * a missing template selector logs a warning and the capture proceeds.
41
+ */
42
+ export const SOFT_OPCODE_KINDS = new Set([
43
+ 'CLONE_ELEMENT',
44
+ 'INJECT_MOCK_DATA',
45
+ 'REMOVE_ELEMENT',
46
+ 'SET_ATTRIBUTE',
47
+ ]);
48
+ export function isSoftOpcodeKind(kind) {
49
+ return SOFT_OPCODE_KINDS.has(kind);
50
+ }
51
+ export const DEFAULT_RECOVERY_POLICY = {
52
+ retries: 2,
53
+ useSelectorMemory: true,
54
+ useAltInteraction: true,
55
+ allowReload: false,
56
+ allowHealer: true,
57
+ };
58
+ // ── Artifact spec ───────────────────────────────────────────────────
59
+ export const MEDIA_MODES = ['screenshot', 'clip', 'dom'];
60
+ export const DEFAULT_CIRCUIT_BREAKER = {
61
+ maxPerOpcode: 3,
62
+ maxPerPage: 5,
63
+ maxPerRun: 10,
64
+ };
65
+ //# sourceMappingURL=execution-types.js.map
@@ -0,0 +1,14 @@
1
+ /**
2
+ * SF Pro font loader for native SVG mockup rendering.
3
+ *
4
+ * Parses the woff2 base64 data URIs from sf-pro-fonts.ts / sf-pro-symbols.ts
5
+ * with fontkit and caches the parsed Font instances at module level. Used by
6
+ * src/svg-text.ts and the SVG status bar / browser bar generators to render
7
+ * text as native `<path>` elements (no Playwright required).
8
+ */
9
+ import type { Font } from 'fontkit';
10
+ export type SfFontId = 'text-regular' | 'text-semibold' | 'text-bold' | 'display-regular' | 'display-semibold' | 'display-bold' | 'symbols';
11
+ /** Get a parsed Font instance for the requested SF Pro variant. Cached. */
12
+ export declare function getFont(id: SfFontId): Font;
13
+ /** Resolve an SF font id from a CSS-like family + weight pair. */
14
+ export declare function resolveFontId(family: 'text' | 'display', weight?: number | 'bold' | 'semibold' | 'regular' | 'medium' | 'normal'): SfFontId;
@@ -0,0 +1,55 @@
1
+ /**
2
+ * SF Pro font loader for native SVG mockup rendering.
3
+ *
4
+ * Parses the woff2 base64 data URIs from sf-pro-fonts.ts / sf-pro-symbols.ts
5
+ * with fontkit and caches the parsed Font instances at module level. Used by
6
+ * src/svg-text.ts and the SVG status bar / browser bar generators to render
7
+ * text as native `<path>` elements (no Playwright required).
8
+ */
9
+ import * as fontkit from 'fontkit';
10
+ import { SF_PRO_TEXT_REGULAR, SF_PRO_TEXT_SEMIBOLD, SF_PRO_DISPLAY_REGULAR, SF_PRO_DISPLAY_SEMIBOLD, } from './sf-pro-fonts.js';
11
+ import { SF_PRO_SYMBOLS } from './sf-pro-symbols.js';
12
+ const FONT_DATA = {
13
+ // SF Pro "Bold" maps to "Semibold" in our subset (we don't ship a separate
14
+ // bold weight). Native macOS uses semibold for menu bar app names anyway.
15
+ 'text-regular': SF_PRO_TEXT_REGULAR,
16
+ 'text-semibold': SF_PRO_TEXT_SEMIBOLD,
17
+ 'text-bold': SF_PRO_TEXT_SEMIBOLD,
18
+ 'display-regular': SF_PRO_DISPLAY_REGULAR,
19
+ 'display-semibold': SF_PRO_DISPLAY_SEMIBOLD,
20
+ 'display-bold': SF_PRO_DISPLAY_SEMIBOLD,
21
+ symbols: SF_PRO_SYMBOLS,
22
+ };
23
+ const cache = new Map();
24
+ function dataUriToBuffer(dataUri) {
25
+ const comma = dataUri.indexOf(',');
26
+ if (comma === -1) {
27
+ throw new Error('invalid font data URI');
28
+ }
29
+ const base64 = dataUri.slice(comma + 1);
30
+ return Buffer.from(base64, 'base64');
31
+ }
32
+ /** Get a parsed Font instance for the requested SF Pro variant. Cached. */
33
+ export function getFont(id) {
34
+ const cached = cache.get(id);
35
+ if (cached)
36
+ return cached;
37
+ const buf = dataUriToBuffer(FONT_DATA[id]);
38
+ const parsed = fontkit.create(buf);
39
+ // fontkit.create can return a FontCollection, but our subsets are all
40
+ // single fonts.
41
+ if ('fonts' in parsed) {
42
+ throw new Error(`unexpected font collection for ${id}`);
43
+ }
44
+ cache.set(id, parsed);
45
+ return parsed;
46
+ }
47
+ /** Resolve an SF font id from a CSS-like family + weight pair. */
48
+ export function resolveFontId(family, weight = 400) {
49
+ const isBoldish = weight === 'bold' ||
50
+ weight === 'semibold' ||
51
+ (typeof weight === 'number' && weight >= 600);
52
+ const suffix = isBoldish ? 'semibold' : 'regular';
53
+ return `${family}-${suffix}`;
54
+ }
55
+ //# sourceMappingURL=fonts-loader.js.map
@@ -0,0 +1,138 @@
1
+ /**
2
+ * Hybrid Navigator — Uses the screenshot agent for navigation (Phase 1),
3
+ * then exports the session for video recording (Phase 2).
4
+ *
5
+ * This wrapper around `runAgent()` provides:
6
+ * - Agent-driven navigation with full self-healing
7
+ * - Session export (storageState + sessionStorage + scroll position)
8
+ * - Post-transfer auth detection (silent re-auth wait)
9
+ * - Lightweight selector pre-validation for clip plans
10
+ * - Fresh observation capture on recording browser
11
+ */
12
+ import { Browser } from './browser.js';
13
+ import { type VariantStateDetection } from './video-variant-state.js';
14
+ import type { BrowserStorageState, BrowserSessionStorageState, CapturePageIdentity, ExecutedAction, InteractiveElement, LoginCredentials, StepUsage, VerificationResult, VideoPlan, VideoObservationSnapshot, VideoPageSignals, VideoStep } from './types.js';
15
+ export interface NavigationResult {
16
+ success: boolean;
17
+ finalUrl: string;
18
+ scrollPosition: {
19
+ x: number;
20
+ y: number;
21
+ };
22
+ storageState?: BrowserStorageState;
23
+ sessionStorage?: BrowserSessionStorageState;
24
+ observationSummary?: string;
25
+ observationSnapshot?: VideoObservationSnapshot;
26
+ coherenceKey?: string;
27
+ interactiveElements?: InteractiveElement[];
28
+ pageIdentity?: CapturePageIdentity | null;
29
+ actions?: ExecutedAction[];
30
+ replayableActions?: ExecutedAction[];
31
+ verification?: VerificationResult | null;
32
+ verificationMode?: VerificationResult['mode'];
33
+ exactStartStateVerified: boolean;
34
+ detectedLang?: string | null;
35
+ detectedTheme?: 'light' | 'dark' | null;
36
+ pageSignals?: VideoPageSignals;
37
+ variantState?: VariantStateDetection;
38
+ error?: string;
39
+ usage: StepUsage[];
40
+ }
41
+ export interface NavigateWithAgentConfig {
42
+ /** Target URL — can be relative (e.g. "/docs") if baseUrl is provided. */
43
+ url: string;
44
+ /** Base URL of the project (e.g. "https://example.com"). Used to resolve relative urls. */
45
+ baseUrl?: string;
46
+ navigationPrompt: string;
47
+ /**
48
+ * When provided (two-part mode), this describes the RECORDED interaction separately
49
+ * from the navigation. The navigation agent only needs to know what will be recorded
50
+ * to stop at the right pre-recording state — it must NOT perform the recorded actions.
51
+ */
52
+ recordingScript?: string;
53
+ viewport: {
54
+ width: number;
55
+ height: number;
56
+ };
57
+ outputScale?: number;
58
+ lang?: string;
59
+ theme?: 'light' | 'dark';
60
+ credentials?: LoginCredentials;
61
+ langInstructions?: string;
62
+ themeInstructions?: string;
63
+ navigationInstructions?: string;
64
+ model: string;
65
+ apiKey: string;
66
+ maxIterations?: number;
67
+ abortSignal?: AbortSignal;
68
+ onLog?: (entry: {
69
+ level: 'info' | 'action' | 'success' | 'error' | 'ai';
70
+ message: string;
71
+ timestamp: number;
72
+ }) => void;
73
+ onScreenshot?: (base64: string) => void;
74
+ }
75
+ export interface SelectorValidationResult {
76
+ valid: boolean;
77
+ missingSelectors: Array<{
78
+ stepIndex: number;
79
+ step: VideoStep;
80
+ selector: string;
81
+ }>;
82
+ }
83
+ export interface FreshObservationConfig {
84
+ url: string;
85
+ viewport: {
86
+ width: number;
87
+ height: number;
88
+ };
89
+ outputScale?: number;
90
+ lang?: string;
91
+ theme?: 'light' | 'dark';
92
+ storageState?: BrowserStorageState;
93
+ sessionStorage?: BrowserSessionStorageState;
94
+ scrollPosition?: {
95
+ x: number;
96
+ y: number;
97
+ };
98
+ abortSignal?: AbortSignal;
99
+ }
100
+ /**
101
+ * Phase 1: Use the screenshot agent to navigate to a target state.
102
+ * Exports the full session (cookies, localStorage, sessionStorage, scroll)
103
+ * for reuse in the video recording phase.
104
+ */
105
+ export declare function navigateWithAgent(config: NavigateWithAgentConfig): Promise<NavigationResult>;
106
+ /**
107
+ * Capture a fresh observation from a browser that already has the session loaded.
108
+ * Use this on Browser B (recording browser) AFTER navigation, not the stale
109
+ * observation from Browser A (agent browser).
110
+ */
111
+ export declare function captureFreshObservation(browser: Browser): Promise<string>;
112
+ /**
113
+ * Capture a fresh observation by opening a temporary pool browser with the
114
+ * exported session. Closes the browser automatically.
115
+ */
116
+ export declare function captureFreshObservationFromSession(config: FreshObservationConfig): Promise<string>;
117
+ /**
118
+ * After transferring session to a new browser context, detect if the page
119
+ * ended up in a logged-out state (e.g., due to IndexedDB/in-memory JWT loss).
120
+ * If detected, waits for silent re-auth to complete.
121
+ *
122
+ * Returns true if auth is confirmed or no auth issues detected.
123
+ */
124
+ export declare function waitForAuthStabilization(browser: Browser, options?: {
125
+ timeoutMs?: number;
126
+ }): Promise<{
127
+ ok: boolean;
128
+ reason?: string;
129
+ }>;
130
+ /**
131
+ * Validate selectors in a plan that can be checked on the current page.
132
+ *
133
+ * Only validates selectors up to the first page-mutating step (click, hover,
134
+ * type, select_option, key). After such a step the DOM changes and later
135
+ * selectors cannot be verified without actually executing the plan.
136
+ */
137
+ export declare function validatePlanSelectors(browser: Browser, plan: VideoPlan): Promise<SelectorValidationResult>;
138
+ export declare function buildNavigationPrompt(resolvedUrl: string, config: NavigateWithAgentConfig): string;