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,36 @@
1
+ import { Browser } from './browser.js';
2
+ import type { BrowserVideoVerificationBundle } from './browser.js';
3
+ import type { BrowserSessionStorageState, BrowserStorageState, CapturePageIdentity, InteractiveElement, VideoAgentConfig, VideoObservationSnapshot, VideoPageSignals } from './types.js';
4
+ export declare function buildVideoObservationSummary(params: {
5
+ url: string;
6
+ title: string;
7
+ accessibilityTree: string;
8
+ interactiveElements: InteractiveElement[];
9
+ pageSignals: VideoPageSignals;
10
+ maxAccessibilityChars?: number;
11
+ maxElements?: number;
12
+ maxVisibleTextChars?: number;
13
+ }): string;
14
+ export declare function buildVideoObservationSnapshot(params: {
15
+ coherenceKey?: string;
16
+ interactiveElements: InteractiveElement[];
17
+ pageSignals: VideoPageSignals;
18
+ pageIdentity?: CapturePageIdentity | null;
19
+ }): VideoObservationSnapshot;
20
+ export declare function captureVideoObservationSummary(source: Browser | BrowserVideoVerificationBundle, options?: {
21
+ maxAccessibilityChars?: number;
22
+ maxElements?: number;
23
+ maxVisibleTextChars?: number;
24
+ }): Promise<string>;
25
+ export interface PlanningObservation {
26
+ summary: string;
27
+ screenshot?: Buffer;
28
+ snapshot?: VideoObservationSnapshot;
29
+ }
30
+ export declare function observePlanningContext(config: Pick<VideoAgentConfig, 'url' | 'viewport' | 'outputScale' | 'lang' | 'theme' | 'abortSignal'> & {
31
+ startUrl?: string;
32
+ storageState?: BrowserStorageState;
33
+ sessionStorage?: BrowserSessionStorageState;
34
+ captureScreenshot?: boolean;
35
+ pageIdentity?: CapturePageIdentity | null;
36
+ }): Promise<PlanningObservation>;
@@ -0,0 +1,192 @@
1
+ import { Browser } from './browser.js';
2
+ import { throwIfAborted } from './abort.js';
3
+ import { dismissOverlaysWithLogging } from './overlay-utils.js';
4
+ function summarizeObservationElements(elements, limit = 18) {
5
+ const rank = (element) => {
6
+ let score = 0;
7
+ if (element.visible)
8
+ score += 20;
9
+ if (element.visibilityState === 'full')
10
+ score += 12;
11
+ if (element.href)
12
+ score += 10;
13
+ if (element.role === 'link' || element.tag === 'a')
14
+ score += 8;
15
+ if (element.role === 'button' || element.tag === 'button')
16
+ score += 6;
17
+ if (element.inputType)
18
+ score += 5;
19
+ if (element.text)
20
+ score += Math.min(12, element.text.length / 6);
21
+ if (element.ariaLabel)
22
+ score += 4;
23
+ return score;
24
+ };
25
+ return [...elements]
26
+ .sort((a, b) => rank(b) - rank(a))
27
+ .slice(0, limit)
28
+ .map((element) => {
29
+ const label = element.text || element.ariaLabel || '(no label)';
30
+ const href = element.href ? ` href=${element.href}` : '';
31
+ return `- [${element.role || element.tag}] "${label}"${href}`;
32
+ });
33
+ }
34
+ function formatSignalList(title, values, maxItems = 8) {
35
+ if (values.length === 0)
36
+ return '';
37
+ return `${title}: ${values.slice(0, maxItems).join(' | ')}`;
38
+ }
39
+ function summarizeVariantControls(signals, limit = 8) {
40
+ return signals.variantControls
41
+ .slice(0, limit)
42
+ .map((control) => {
43
+ const options = control.options?.length
44
+ ? ` options=${control.options
45
+ .slice(0, 5)
46
+ .map((option) => `${option.selected ? '*' : ''}${option.label || option.value || '(empty)'}`)
47
+ .join(', ')}`
48
+ : '';
49
+ const href = control.href ? ` href=${control.href}` : '';
50
+ return `- [${control.kind}/${control.mechanism}] "${control.label}" selector=${control.selector}${href}${options}`;
51
+ });
52
+ }
53
+ function summarizeStorageHints(signals, limit = 8) {
54
+ return signals.storageHints
55
+ .slice(0, limit)
56
+ .map((hint) => `- [${hint.kind}] ${hint.storage}.${hint.key}=${hint.valueSample || '(empty)'}`);
57
+ }
58
+ export function buildVideoObservationSummary(params) {
59
+ const signalLines = [
60
+ `Observed URL: ${params.url}`,
61
+ `Observed title: ${params.title || '(untitled)'}`,
62
+ params.pageSignals.htmlLang ? `Observed html lang: ${params.pageSignals.htmlLang}` : '',
63
+ params.pageSignals.canonicalUrl ? `Canonical URL: ${params.pageSignals.canonicalUrl}` : '',
64
+ params.pageSignals.detectedTheme ? `Observed theme: ${params.pageSignals.detectedTheme}` : '',
65
+ formatSignalList('Headings', params.pageSignals.headings),
66
+ formatSignalList('Navigation labels', params.pageSignals.navLabels, 10),
67
+ formatSignalList('Breadcrumbs', params.pageSignals.breadcrumbLabels, 8),
68
+ formatSignalList('Locale hints', params.pageSignals.localeHints, 10),
69
+ formatSignalList('hreflang links', params.pageSignals.hreflangs, 8),
70
+ params.pageSignals.visibleText
71
+ ? `Visible text sample: ${params.pageSignals.visibleText.slice(0, params.maxVisibleTextChars ?? 500)}`
72
+ : '',
73
+ ].filter(Boolean);
74
+ const elementLines = summarizeObservationElements(params.interactiveElements, params.maxElements ?? 18);
75
+ const controlLines = summarizeVariantControls(params.pageSignals, 8);
76
+ const storageLines = summarizeStorageHints(params.pageSignals, 8);
77
+ const accessibilitySnippet = params.accessibilityTree.slice(0, params.maxAccessibilityChars ?? 3500);
78
+ return [
79
+ ...signalLines,
80
+ controlLines.length > 0 ? 'Likely variant controls:' : '',
81
+ ...controlLines,
82
+ storageLines.length > 0 ? 'Likely variant storage keys:' : '',
83
+ ...storageLines,
84
+ elementLines.length > 0 ? 'Visible interactive elements:' : '',
85
+ ...elementLines,
86
+ accessibilitySnippet ? `Accessibility tree snippet:\n${accessibilitySnippet}` : '',
87
+ ]
88
+ .filter(Boolean)
89
+ .join('\n');
90
+ }
91
+ export function buildVideoObservationSnapshot(params) {
92
+ return {
93
+ coherenceKey: params.coherenceKey,
94
+ interactiveElements: params.interactiveElements,
95
+ pageSignals: params.pageSignals,
96
+ pageIdentity: params.pageIdentity ?? null,
97
+ };
98
+ }
99
+ export async function captureVideoObservationSummary(source, options = {}) {
100
+ if (source instanceof Browser) {
101
+ const [pageState, pageSignals, pageTitle] = await Promise.all([
102
+ source.getPageState(),
103
+ source.capturePageSignals(),
104
+ source.currentPage.title().catch(() => ''),
105
+ ]);
106
+ return buildVideoObservationSummary({
107
+ url: source.currentPage.url(),
108
+ title: pageTitle,
109
+ accessibilityTree: pageState.accessibilityTree,
110
+ interactiveElements: pageState.interactiveElements,
111
+ pageSignals,
112
+ ...options,
113
+ });
114
+ }
115
+ return buildVideoObservationSummary({
116
+ url: source.url,
117
+ title: source.title,
118
+ accessibilityTree: source.accessibilityTree,
119
+ interactiveElements: source.interactiveElements,
120
+ pageSignals: source.pageSignals,
121
+ ...options,
122
+ });
123
+ }
124
+ export async function observePlanningContext(config) {
125
+ throwIfAborted(config.abortSignal, 'Video planning observation cancelled.');
126
+ const browser = await Browser.fromPool({
127
+ headed: false,
128
+ viewport: config.viewport,
129
+ deviceScaleFactor: config.outputScale,
130
+ lang: config.lang,
131
+ colorScheme: config.theme,
132
+ storageState: config.storageState,
133
+ });
134
+ try {
135
+ await browser.prepareSessionStorage(config.sessionStorage, { replace: true });
136
+ await browser.navigateTo(config.startUrl ?? config.url);
137
+ await dismissOverlaysWithLogging(browser, { context: 'planning observation' });
138
+ const [summary, screenshot] = await Promise.all([
139
+ captureVideoObservationSummary(browser, {
140
+ maxAccessibilityChars: 3500,
141
+ maxElements: 18,
142
+ maxVisibleTextChars: 500,
143
+ }),
144
+ config.captureScreenshot
145
+ ? browser.takeScreenshotForAI().catch(() => undefined)
146
+ : Promise.resolve(undefined),
147
+ ]);
148
+ const [interactiveElements, pageSignals] = await Promise.all([
149
+ browser.getInteractiveElements().catch(() => []),
150
+ browser.capturePageSignals().catch(() => ({
151
+ url: browser.currentPage.url(),
152
+ title: '',
153
+ htmlLang: '',
154
+ canonicalUrl: '',
155
+ hreflangs: [],
156
+ headings: [],
157
+ navLabels: [],
158
+ breadcrumbLabels: [],
159
+ visibleText: '',
160
+ localeHints: [],
161
+ detectedTheme: null,
162
+ preferredColorScheme: 'light',
163
+ authHints: {
164
+ hasPasswordField: false,
165
+ hasEmailField: false,
166
+ hasAuthForm: false,
167
+ loginButtons: [],
168
+ logoutButtons: [],
169
+ accountMenuLabels: [],
170
+ accountLikeText: [],
171
+ },
172
+ variantControls: [],
173
+ storageHints: [],
174
+ })),
175
+ ]);
176
+ return {
177
+ summary,
178
+ screenshot,
179
+ snapshot: buildVideoObservationSnapshot({
180
+ interactiveElements,
181
+ pageSignals,
182
+ pageIdentity: config.pageIdentity ?? null,
183
+ }),
184
+ };
185
+ }
186
+ finally {
187
+ await browser.close().catch(() => {
188
+ // Best effort cleanup.
189
+ });
190
+ }
191
+ }
192
+ //# sourceMappingURL=video-observation.js.map
@@ -0,0 +1,12 @@
1
+ import type { StepUsage, VideoPlan } from './types.js';
2
+ import { type VideoPlannerPromptOptions } from './video-prompts.js';
3
+ export { observePlanningContext } from './video-observation.js';
4
+ export interface PlannerResult {
5
+ plan: VideoPlan;
6
+ usage: StepUsage;
7
+ }
8
+ /**
9
+ * Phase 1 of the video pipeline: convert a natural-language script into a
10
+ * structured `VideoPlan` using a single LLM call in JSON mode.
11
+ */
12
+ export declare function planFromScript(script: string, url: string, model: string, apiKey: string, maxRetries?: number, options?: VideoPlannerPromptOptions, abortSignal?: AbortSignal): Promise<PlannerResult>;