@tangle-network/browser-agent-driver 0.33.3 → 0.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (489) hide show
  1. package/README.md +42 -1
  2. package/discovery/llms.txt +27 -0
  3. package/discovery/tangle-agent.json +36 -0
  4. package/dist/brain/action-parse.d.ts +16 -0
  5. package/dist/brain/action-parse.d.ts.map +1 -0
  6. package/dist/brain/action-parse.js +191 -0
  7. package/dist/brain/action-parse.js.map +1 -0
  8. package/dist/brain/decide.d.ts +58 -0
  9. package/dist/brain/decide.d.ts.map +1 -0
  10. package/dist/brain/decide.js +418 -0
  11. package/dist/brain/decide.js.map +1 -0
  12. package/dist/brain/history-compact.d.ts +19 -0
  13. package/dist/brain/history-compact.d.ts.map +1 -0
  14. package/dist/brain/history-compact.js +153 -0
  15. package/dist/brain/history-compact.js.map +1 -0
  16. package/dist/brain/index.d.ts +78 -152
  17. package/dist/brain/index.d.ts.map +1 -1
  18. package/dist/brain/index.js +62 -2268
  19. package/dist/brain/index.js.map +1 -1
  20. package/dist/brain/model-client.d.ts +101 -0
  21. package/dist/brain/model-client.d.ts.map +1 -0
  22. package/dist/brain/model-client.js +391 -0
  23. package/dist/brain/model-client.js.map +1 -0
  24. package/dist/brain/plan.d.ts +57 -0
  25. package/dist/brain/plan.d.ts.map +1 -0
  26. package/dist/brain/plan.js +194 -0
  27. package/dist/brain/plan.js.map +1 -0
  28. package/dist/brain/prompts.d.ts +37 -0
  29. package/dist/brain/prompts.d.ts.map +1 -0
  30. package/dist/brain/prompts.js +455 -0
  31. package/dist/brain/prompts.js.map +1 -0
  32. package/dist/brain/provider-fetch.d.ts +26 -0
  33. package/dist/brain/provider-fetch.d.ts.map +1 -0
  34. package/dist/brain/provider-fetch.js +45 -0
  35. package/dist/brain/provider-fetch.js.map +1 -0
  36. package/dist/brain/snapshot-budget.d.ts +20 -0
  37. package/dist/brain/snapshot-budget.d.ts.map +1 -0
  38. package/dist/brain/snapshot-budget.js +202 -0
  39. package/dist/brain/snapshot-budget.js.map +1 -0
  40. package/dist/brain/system-prompt.d.ts +67 -0
  41. package/dist/brain/system-prompt.d.ts.map +1 -0
  42. package/dist/brain/system-prompt.js +128 -0
  43. package/dist/brain/system-prompt.js.map +1 -0
  44. package/dist/brain/tasks/design-audit.d.ts +33 -0
  45. package/dist/brain/tasks/design-audit.d.ts.map +1 -0
  46. package/dist/brain/tasks/design-audit.js +100 -0
  47. package/dist/brain/tasks/design-audit.js.map +1 -0
  48. package/dist/brain/tasks/evaluate.d.ts +25 -0
  49. package/dist/brain/tasks/evaluate.d.ts.map +1 -0
  50. package/dist/brain/tasks/evaluate.js +55 -0
  51. package/dist/brain/tasks/evaluate.js.map +1 -0
  52. package/dist/brain/tasks/goal-verification.d.ts +32 -0
  53. package/dist/brain/tasks/goal-verification.d.ts.map +1 -0
  54. package/dist/brain/tasks/goal-verification.js +68 -0
  55. package/dist/brain/tasks/goal-verification.js.map +1 -0
  56. package/dist/brain/tasks/knowledge.d.ts +26 -0
  57. package/dist/brain/tasks/knowledge.d.ts.map +1 -0
  58. package/dist/brain/tasks/knowledge.js +56 -0
  59. package/dist/brain/tasks/knowledge.js.map +1 -0
  60. package/dist/brain/tasks/link-scout.d.ts +37 -0
  61. package/dist/brain/tasks/link-scout.d.ts.map +1 -0
  62. package/dist/brain/tasks/link-scout.js +69 -0
  63. package/dist/brain/tasks/link-scout.js.map +1 -0
  64. package/dist/brain/types.d.ts +55 -0
  65. package/dist/brain/types.d.ts.map +1 -0
  66. package/dist/brain/types.js +7 -0
  67. package/dist/brain/types.js.map +1 -0
  68. package/dist/browser/stealth-init-script.d.ts +9 -0
  69. package/dist/browser/stealth-init-script.d.ts.map +1 -0
  70. package/dist/browser/stealth-init-script.js +128 -0
  71. package/dist/browser/stealth-init-script.js.map +1 -0
  72. package/dist/browser/storage-state.d.ts +29 -0
  73. package/dist/browser/storage-state.d.ts.map +1 -0
  74. package/dist/browser/storage-state.js +47 -0
  75. package/dist/browser/storage-state.js.map +1 -0
  76. package/dist/browser-launch.d.ts +6 -0
  77. package/dist/browser-launch.d.ts.map +1 -1
  78. package/dist/browser-launch.js +3 -0
  79. package/dist/browser-launch.js.map +1 -1
  80. package/dist/cli/args.d.ts +141 -0
  81. package/dist/cli/args.d.ts.map +1 -0
  82. package/dist/cli/args.js +167 -0
  83. package/dist/cli/args.js.map +1 -0
  84. package/dist/cli/benchmark-sync.d.ts +9 -0
  85. package/dist/cli/benchmark-sync.d.ts.map +1 -0
  86. package/dist/cli/benchmark-sync.js +43 -0
  87. package/dist/cli/benchmark-sync.js.map +1 -0
  88. package/dist/cli/build-config.d.ts +11 -0
  89. package/dist/cli/build-config.d.ts.map +1 -0
  90. package/dist/cli/build-config.js +355 -0
  91. package/dist/cli/build-config.js.map +1 -0
  92. package/dist/cli/commands/auth.d.ts +3 -0
  93. package/dist/cli/commands/auth.d.ts.map +1 -0
  94. package/dist/cli/commands/auth.js +36 -0
  95. package/dist/cli/commands/auth.js.map +1 -0
  96. package/dist/cli/commands/chrome-debug.d.ts +7 -0
  97. package/dist/cli/commands/chrome-debug.d.ts.map +1 -0
  98. package/dist/cli/commands/chrome-debug.js +11 -0
  99. package/dist/cli/commands/chrome-debug.js.map +1 -0
  100. package/dist/cli/commands/design-audit.d.ts +3 -0
  101. package/dist/cli/commands/design-audit.d.ts.map +1 -0
  102. package/dist/cli/commands/design-audit.js +68 -0
  103. package/dist/cli/commands/design-audit.js.map +1 -0
  104. package/dist/cli/commands/preview.d.ts +14 -0
  105. package/dist/cli/commands/preview.d.ts.map +1 -0
  106. package/dist/cli/commands/preview.js +31 -0
  107. package/dist/cli/commands/preview.js.map +1 -0
  108. package/dist/cli/commands/run.d.ts +3 -0
  109. package/dist/cli/commands/run.d.ts.map +1 -0
  110. package/dist/cli/commands/run.js +740 -0
  111. package/dist/cli/commands/run.js.map +1 -0
  112. package/dist/cli/commands/runs.d.ts +8 -0
  113. package/dist/cli/commands/runs.d.ts.map +1 -0
  114. package/dist/cli/commands/runs.js +35 -0
  115. package/dist/cli/commands/runs.js.map +1 -0
  116. package/dist/cli/commands/share.d.ts +10 -0
  117. package/dist/cli/commands/share.d.ts.map +1 -0
  118. package/dist/cli/commands/share.js +32 -0
  119. package/dist/cli/commands/share.js.map +1 -0
  120. package/dist/cli/commands/showcase.d.ts +17 -0
  121. package/dist/cli/commands/showcase.d.ts.map +1 -0
  122. package/dist/cli/commands/showcase.js +20 -0
  123. package/dist/cli/commands/showcase.js.map +1 -0
  124. package/dist/cli/commands/snapshot.d.ts +12 -0
  125. package/dist/cli/commands/snapshot.d.ts.map +1 -0
  126. package/dist/cli/commands/snapshot.js +24 -0
  127. package/dist/cli/commands/snapshot.js.map +1 -0
  128. package/dist/cli/commands/view.d.ts +7 -0
  129. package/dist/cli/commands/view.d.ts.map +1 -0
  130. package/dist/cli/commands/view.js +23 -0
  131. package/dist/cli/commands/view.js.map +1 -0
  132. package/dist/cli/constants.d.ts +6 -0
  133. package/dist/cli/constants.d.ts.map +1 -0
  134. package/dist/cli/constants.js +3 -0
  135. package/dist/cli/constants.js.map +1 -0
  136. package/dist/cli/version.d.ts +7 -0
  137. package/dist/cli/version.d.ts.map +1 -0
  138. package/dist/cli/version.js +16 -0
  139. package/dist/cli/version.js.map +1 -0
  140. package/dist/cli-design-audit.d.ts +44 -36
  141. package/dist/cli-design-audit.d.ts.map +1 -1
  142. package/dist/cli-design-audit.js +137 -1646
  143. package/dist/cli-design-audit.js.map +1 -1
  144. package/dist/cli-jobs.js +2 -1
  145. package/dist/cli-jobs.js.map +1 -1
  146. package/dist/cli.js +66 -1697
  147. package/dist/cli.js.map +1 -1
  148. package/dist/config.d.ts +12 -0
  149. package/dist/config.d.ts.map +1 -1
  150. package/dist/config.js +20 -2
  151. package/dist/config.js.map +1 -1
  152. package/dist/design/audit/evolve/agent.d.ts +23 -0
  153. package/dist/design/audit/evolve/agent.d.ts.map +1 -0
  154. package/dist/design/audit/evolve/agent.js +273 -0
  155. package/dist/design/audit/evolve/agent.js.map +1 -0
  156. package/dist/design/audit/evolve/css.d.ts +10 -0
  157. package/dist/design/audit/evolve/css.d.ts.map +1 -0
  158. package/dist/design/audit/evolve/css.js +206 -0
  159. package/dist/design/audit/evolve/css.js.map +1 -0
  160. package/dist/design/audit/evolve/index.d.ts +13 -0
  161. package/dist/design/audit/evolve/index.d.ts.map +1 -0
  162. package/dist/design/audit/evolve/index.js +12 -0
  163. package/dist/design/audit/evolve/index.js.map +1 -0
  164. package/dist/design/audit/evolve/report.d.ts +3 -0
  165. package/dist/design/audit/evolve/report.d.ts.map +1 -0
  166. package/dist/design/audit/evolve/report.js +45 -0
  167. package/dist/design/audit/evolve/report.js.map +1 -0
  168. package/dist/design/audit/evolve/types.d.ts +14 -0
  169. package/dist/design/audit/evolve/types.d.ts.map +1 -0
  170. package/dist/design/audit/evolve/types.js +2 -0
  171. package/dist/design/audit/evolve/types.js.map +1 -0
  172. package/dist/design/audit/pipeline.d.ts +12 -0
  173. package/dist/design/audit/pipeline.d.ts.map +1 -1
  174. package/dist/design/audit/pipeline.js +43 -27
  175. package/dist/design/audit/pipeline.js.map +1 -1
  176. package/dist/design/audit/reference/artifact/build.d.ts +33 -0
  177. package/dist/design/audit/reference/artifact/build.d.ts.map +1 -0
  178. package/dist/design/audit/reference/artifact/build.js +64 -0
  179. package/dist/design/audit/reference/artifact/build.js.map +1 -0
  180. package/dist/design/audit/reference/artifact/render.d.ts +39 -0
  181. package/dist/design/audit/reference/artifact/render.d.ts.map +1 -0
  182. package/dist/design/audit/reference/artifact/render.js +213 -0
  183. package/dist/design/audit/reference/artifact/render.js.map +1 -0
  184. package/dist/design/audit/reference/artifact/text.d.ts +11 -0
  185. package/dist/design/audit/reference/artifact/text.d.ts.map +1 -0
  186. package/dist/design/audit/reference/artifact/text.js +20 -0
  187. package/dist/design/audit/reference/artifact/text.js.map +1 -0
  188. package/dist/design/audit/reference/artifact/to-findings.d.ts +57 -0
  189. package/dist/design/audit/reference/artifact/to-findings.d.ts.map +1 -0
  190. package/dist/design/audit/reference/artifact/to-findings.js +314 -0
  191. package/dist/design/audit/reference/artifact/to-findings.js.map +1 -0
  192. package/dist/design/audit/reference/config.d.ts +50 -0
  193. package/dist/design/audit/reference/config.d.ts.map +1 -0
  194. package/dist/design/audit/reference/config.js +108 -0
  195. package/dist/design/audit/reference/config.js.map +1 -0
  196. package/dist/design/audit/reference/contracts.d.ts +1030 -0
  197. package/dist/design/audit/reference/contracts.d.ts.map +1 -0
  198. package/dist/design/audit/reference/contracts.js +28 -0
  199. package/dist/design/audit/reference/contracts.js.map +1 -0
  200. package/dist/design/audit/reference/corpus/build.d.ts +115 -0
  201. package/dist/design/audit/reference/corpus/build.d.ts.map +1 -0
  202. package/dist/design/audit/reference/corpus/build.js +152 -0
  203. package/dist/design/audit/reference/corpus/build.js.map +1 -0
  204. package/dist/design/audit/reference/corpus/schema.d.ts +33 -0
  205. package/dist/design/audit/reference/corpus/schema.d.ts.map +1 -0
  206. package/dist/design/audit/reference/corpus/schema.js +249 -0
  207. package/dist/design/audit/reference/corpus/schema.js.map +1 -0
  208. package/dist/design/audit/reference/corpus/store.d.ts +26 -0
  209. package/dist/design/audit/reference/corpus/store.d.ts.map +1 -0
  210. package/dist/design/audit/reference/corpus/store.js +104 -0
  211. package/dist/design/audit/reference/corpus/store.js.map +1 -0
  212. package/dist/design/audit/reference/dna/delta.d.ts +21 -0
  213. package/dist/design/audit/reference/dna/delta.d.ts.map +1 -0
  214. package/dist/design/audit/reference/dna/delta.js +126 -0
  215. package/dist/design/audit/reference/dna/delta.js.map +1 -0
  216. package/dist/design/audit/reference/dna/derive.d.ts +31 -0
  217. package/dist/design/audit/reference/dna/derive.d.ts.map +1 -0
  218. package/dist/design/audit/reference/dna/derive.js +381 -0
  219. package/dist/design/audit/reference/dna/derive.js.map +1 -0
  220. package/dist/design/audit/reference/dna/descriptor.d.ts +36 -0
  221. package/dist/design/audit/reference/dna/descriptor.d.ts.map +1 -0
  222. package/dist/design/audit/reference/dna/descriptor.js +209 -0
  223. package/dist/design/audit/reference/dna/descriptor.js.map +1 -0
  224. package/dist/design/audit/reference/dna/page-adapter.d.ts +17 -0
  225. package/dist/design/audit/reference/dna/page-adapter.d.ts.map +1 -0
  226. package/dist/design/audit/reference/dna/page-adapter.js +35 -0
  227. package/dist/design/audit/reference/dna/page-adapter.js.map +1 -0
  228. package/dist/design/audit/reference/dna/scroll-capture.d.ts +93 -0
  229. package/dist/design/audit/reference/dna/scroll-capture.d.ts.map +1 -0
  230. package/dist/design/audit/reference/dna/scroll-capture.js +374 -0
  231. package/dist/design/audit/reference/dna/scroll-capture.js.map +1 -0
  232. package/dist/design/audit/reference/engine/budget.d.ts +63 -0
  233. package/dist/design/audit/reference/engine/budget.d.ts.map +1 -0
  234. package/dist/design/audit/reference/engine/budget.js +110 -0
  235. package/dist/design/audit/reference/engine/budget.js.map +1 -0
  236. package/dist/design/audit/reference/engine/core.d.ts +32 -0
  237. package/dist/design/audit/reference/engine/core.d.ts.map +1 -0
  238. package/dist/design/audit/reference/engine/core.js +261 -0
  239. package/dist/design/audit/reference/engine/core.js.map +1 -0
  240. package/dist/design/audit/reference/engine/guard.d.ts +43 -0
  241. package/dist/design/audit/reference/engine/guard.d.ts.map +1 -0
  242. package/dist/design/audit/reference/engine/guard.js +43 -0
  243. package/dist/design/audit/reference/engine/guard.js.map +1 -0
  244. package/dist/design/audit/reference/engine/score-core.d.ts +48 -0
  245. package/dist/design/audit/reference/engine/score-core.d.ts.map +1 -0
  246. package/dist/design/audit/reference/engine/score-core.js +134 -0
  247. package/dist/design/audit/reference/engine/score-core.js.map +1 -0
  248. package/dist/design/audit/reference/engine/wiring.d.ts +35 -0
  249. package/dist/design/audit/reference/engine/wiring.d.ts.map +1 -0
  250. package/dist/design/audit/reference/engine/wiring.js +80 -0
  251. package/dist/design/audit/reference/engine/wiring.js.map +1 -0
  252. package/dist/design/audit/reference/eval/taste-core.d.ts +77 -0
  253. package/dist/design/audit/reference/eval/taste-core.d.ts.map +1 -0
  254. package/dist/design/audit/reference/eval/taste-core.js +95 -0
  255. package/dist/design/audit/reference/eval/taste-core.js.map +1 -0
  256. package/dist/design/audit/reference/generate/generator.d.ts +49 -0
  257. package/dist/design/audit/reference/generate/generator.d.ts.map +1 -0
  258. package/dist/design/audit/reference/generate/generator.js +100 -0
  259. package/dist/design/audit/reference/generate/generator.js.map +1 -0
  260. package/dist/design/audit/reference/generate/parse.d.ts +28 -0
  261. package/dist/design/audit/reference/generate/parse.d.ts.map +1 -0
  262. package/dist/design/audit/reference/generate/parse.js +220 -0
  263. package/dist/design/audit/reference/generate/parse.js.map +1 -0
  264. package/dist/design/audit/reference/generate/prompt.d.ts +36 -0
  265. package/dist/design/audit/reference/generate/prompt.d.ts.map +1 -0
  266. package/dist/design/audit/reference/generate/prompt.js +172 -0
  267. package/dist/design/audit/reference/generate/prompt.js.map +1 -0
  268. package/dist/design/audit/reference/index.d.ts +26 -0
  269. package/dist/design/audit/reference/index.d.ts.map +1 -0
  270. package/dist/design/audit/reference/index.js +31 -0
  271. package/dist/design/audit/reference/index.js.map +1 -0
  272. package/dist/design/audit/reference/judge/image-clamp.d.ts +34 -0
  273. package/dist/design/audit/reference/judge/image-clamp.d.ts.map +1 -0
  274. package/dist/design/audit/reference/judge/image-clamp.js +88 -0
  275. package/dist/design/audit/reference/judge/image-clamp.js.map +1 -0
  276. package/dist/design/audit/reference/judge/pairwise.d.ts +34 -0
  277. package/dist/design/audit/reference/judge/pairwise.d.ts.map +1 -0
  278. package/dist/design/audit/reference/judge/pairwise.js +105 -0
  279. package/dist/design/audit/reference/judge/pairwise.js.map +1 -0
  280. package/dist/design/audit/reference/judge/parse.d.ts +31 -0
  281. package/dist/design/audit/reference/judge/parse.d.ts.map +1 -0
  282. package/dist/design/audit/reference/judge/parse.js +113 -0
  283. package/dist/design/audit/reference/judge/parse.js.map +1 -0
  284. package/dist/design/audit/reference/judge/prompt.d.ts +38 -0
  285. package/dist/design/audit/reference/judge/prompt.d.ts.map +1 -0
  286. package/dist/design/audit/reference/judge/prompt.js +123 -0
  287. package/dist/design/audit/reference/judge/prompt.js.map +1 -0
  288. package/dist/design/audit/reference/judge/quality.d.ts +28 -0
  289. package/dist/design/audit/reference/judge/quality.d.ts.map +1 -0
  290. package/dist/design/audit/reference/judge/quality.js +62 -0
  291. package/dist/design/audit/reference/judge/quality.js.map +1 -0
  292. package/dist/design/audit/reference/judge/rank.d.ts +41 -0
  293. package/dist/design/audit/reference/judge/rank.d.ts.map +1 -0
  294. package/dist/design/audit/reference/judge/rank.js +196 -0
  295. package/dist/design/audit/reference/judge/rank.js.map +1 -0
  296. package/dist/design/audit/reference/judge/text-judge.d.ts +31 -0
  297. package/dist/design/audit/reference/judge/text-judge.d.ts.map +1 -0
  298. package/dist/design/audit/reference/judge/text-judge.js +43 -0
  299. package/dist/design/audit/reference/judge/text-judge.js.map +1 -0
  300. package/dist/design/audit/reference/judge/vision-judge.d.ts +59 -0
  301. package/dist/design/audit/reference/judge/vision-judge.d.ts.map +1 -0
  302. package/dist/design/audit/reference/judge/vision-judge.js +150 -0
  303. package/dist/design/audit/reference/judge/vision-judge.js.map +1 -0
  304. package/dist/design/audit/reference/judge/vision-model.d.ts +65 -0
  305. package/dist/design/audit/reference/judge/vision-model.d.ts.map +1 -0
  306. package/dist/design/audit/reference/judge/vision-model.js +110 -0
  307. package/dist/design/audit/reference/judge/vision-model.js.map +1 -0
  308. package/dist/design/audit/reference/pipeline/evaluate-reference.d.ts +68 -0
  309. package/dist/design/audit/reference/pipeline/evaluate-reference.d.ts.map +1 -0
  310. package/dist/design/audit/reference/pipeline/evaluate-reference.js +52 -0
  311. package/dist/design/audit/reference/pipeline/evaluate-reference.js.map +1 -0
  312. package/dist/design/audit/reference/reference-context.d.ts +31 -0
  313. package/dist/design/audit/reference/reference-context.d.ts.map +1 -0
  314. package/dist/design/audit/reference/reference-context.js +73 -0
  315. package/dist/design/audit/reference/reference-context.js.map +1 -0
  316. package/dist/design/audit/reference/retrieval/embedding-hash.d.ts +30 -0
  317. package/dist/design/audit/reference/retrieval/embedding-hash.d.ts.map +1 -0
  318. package/dist/design/audit/reference/retrieval/embedding-hash.js +87 -0
  319. package/dist/design/audit/reference/retrieval/embedding-hash.js.map +1 -0
  320. package/dist/design/audit/reference/retrieval/embedding-openai.d.ts +38 -0
  321. package/dist/design/audit/reference/retrieval/embedding-openai.d.ts.map +1 -0
  322. package/dist/design/audit/reference/retrieval/embedding-openai.js +73 -0
  323. package/dist/design/audit/reference/retrieval/embedding-openai.js.map +1 -0
  324. package/dist/design/audit/reference/retrieval/matcher.d.ts +34 -0
  325. package/dist/design/audit/reference/retrieval/matcher.d.ts.map +1 -0
  326. package/dist/design/audit/reference/retrieval/matcher.js +107 -0
  327. package/dist/design/audit/reference/retrieval/matcher.js.map +1 -0
  328. package/dist/design/audit/reference/run.d.ts +59 -0
  329. package/dist/design/audit/reference/run.d.ts.map +1 -0
  330. package/dist/design/audit/reference/run.js +99 -0
  331. package/dist/design/audit/reference/run.js.map +1 -0
  332. package/dist/design/audit/report.d.ts +35 -0
  333. package/dist/design/audit/report.d.ts.map +1 -0
  334. package/dist/design/audit/report.js +195 -0
  335. package/dist/design/audit/report.js.map +1 -0
  336. package/dist/design/audit/tokens/extract.d.ts +71 -0
  337. package/dist/design/audit/tokens/extract.d.ts.map +1 -0
  338. package/dist/design/audit/tokens/extract.js +1034 -0
  339. package/dist/design/audit/tokens/extract.js.map +1 -0
  340. package/dist/design/audit/types.d.ts +8 -0
  341. package/dist/design/audit/types.d.ts.map +1 -1
  342. package/dist/design/compare.d.ts.map +1 -1
  343. package/dist/design/compare.js +2 -6
  344. package/dist/design/compare.js.map +1 -1
  345. package/dist/design/cookie-consent.d.ts +3 -0
  346. package/dist/design/cookie-consent.d.ts.map +1 -0
  347. package/dist/design/cookie-consent.js +26 -0
  348. package/dist/design/cookie-consent.js.map +1 -0
  349. package/dist/design/viewports.d.ts +18 -0
  350. package/dist/design/viewports.d.ts.map +1 -0
  351. package/dist/design/viewports.js +10 -0
  352. package/dist/design/viewports.js.map +1 -0
  353. package/dist/index.d.ts +2 -2
  354. package/dist/index.d.ts.map +1 -1
  355. package/dist/index.js +1 -1
  356. package/dist/index.js.map +1 -1
  357. package/dist/memory/store.d.ts +19 -1
  358. package/dist/memory/store.d.ts.map +1 -1
  359. package/dist/memory/store.js +47 -0
  360. package/dist/memory/store.js.map +1 -1
  361. package/dist/provider-defaults.d.ts +18 -0
  362. package/dist/provider-defaults.d.ts.map +1 -1
  363. package/dist/provider-defaults.js +33 -0
  364. package/dist/provider-defaults.js.map +1 -1
  365. package/dist/runner/allowed-domains.d.ts +11 -0
  366. package/dist/runner/allowed-domains.d.ts.map +1 -0
  367. package/dist/runner/allowed-domains.js +14 -0
  368. package/dist/runner/allowed-domains.js.map +1 -0
  369. package/dist/runner/batch-fill.d.ts +28 -0
  370. package/dist/runner/batch-fill.d.ts.map +1 -0
  371. package/dist/runner/batch-fill.js +80 -0
  372. package/dist/runner/batch-fill.js.map +1 -0
  373. package/dist/runner/completion-policy.d.ts +26 -0
  374. package/dist/runner/completion-policy.d.ts.map +1 -0
  375. package/dist/runner/completion-policy.js +76 -0
  376. package/dist/runner/completion-policy.js.map +1 -0
  377. package/dist/runner/constants.d.ts +14 -0
  378. package/dist/runner/constants.d.ts.map +1 -0
  379. package/dist/runner/constants.js +23 -0
  380. package/dist/runner/constants.js.map +1 -0
  381. package/dist/runner/decision-screenshot.d.ts +24 -0
  382. package/dist/runner/decision-screenshot.d.ts.map +1 -0
  383. package/dist/runner/decision-screenshot.js +23 -0
  384. package/dist/runner/decision-screenshot.js.map +1 -0
  385. package/dist/runner/domain-boundary.d.ts +36 -0
  386. package/dist/runner/domain-boundary.d.ts.map +1 -0
  387. package/dist/runner/domain-boundary.js +81 -0
  388. package/dist/runner/domain-boundary.js.map +1 -0
  389. package/dist/runner/effect-verify.d.ts +28 -0
  390. package/dist/runner/effect-verify.d.ts.map +1 -0
  391. package/dist/runner/effect-verify.js +42 -0
  392. package/dist/runner/effect-verify.js.map +1 -0
  393. package/dist/runner/execute-plan.d.ts +58 -0
  394. package/dist/runner/execute-plan.d.ts.map +1 -0
  395. package/dist/runner/execute-plan.js +426 -0
  396. package/dist/runner/execute-plan.js.map +1 -0
  397. package/dist/runner/max-turns-extension.d.ts +19 -0
  398. package/dist/runner/max-turns-extension.d.ts.map +1 -0
  399. package/dist/runner/max-turns-extension.js +25 -0
  400. package/dist/runner/max-turns-extension.js.map +1 -0
  401. package/dist/runner/micro-plan.d.ts +11 -0
  402. package/dist/runner/micro-plan.d.ts.map +1 -0
  403. package/dist/runner/micro-plan.js +29 -0
  404. package/dist/runner/micro-plan.js.map +1 -0
  405. package/dist/runner/prompt-snippets.d.ts +5 -0
  406. package/dist/runner/prompt-snippets.d.ts.map +1 -0
  407. package/dist/runner/prompt-snippets.js +13 -0
  408. package/dist/runner/prompt-snippets.js.map +1 -0
  409. package/dist/runner/replay/contracts.d.ts +300 -0
  410. package/dist/runner/replay/contracts.d.ts.map +1 -0
  411. package/dist/runner/replay/contracts.js +42 -0
  412. package/dist/runner/replay/contracts.js.map +1 -0
  413. package/dist/runner/replay/controller.d.ts +27 -0
  414. package/dist/runner/replay/controller.d.ts.map +1 -0
  415. package/dist/runner/replay/controller.js +197 -0
  416. package/dist/runner/replay/controller.js.map +1 -0
  417. package/dist/runner/replay/guard.d.ts +28 -0
  418. package/dist/runner/replay/guard.d.ts.map +1 -0
  419. package/dist/runner/replay/guard.js +100 -0
  420. package/dist/runner/replay/guard.js.map +1 -0
  421. package/dist/runner/runner.d.ts +44 -51
  422. package/dist/runner/runner.d.ts.map +1 -1
  423. package/dist/runner/runner.js +155 -851
  424. package/dist/runner/runner.js.map +1 -1
  425. package/dist/runner/scout-feedback.d.ts +51 -0
  426. package/dist/runner/scout-feedback.d.ts.map +1 -0
  427. package/dist/runner/scout-feedback.js +149 -0
  428. package/dist/runner/scout-feedback.js.map +1 -0
  429. package/dist/skills/macro-loader.d.ts +1 -1
  430. package/dist/test-runner.d.ts.map +1 -1
  431. package/dist/test-runner.js +27 -1
  432. package/dist/test-runner.js.map +1 -1
  433. package/dist/types/actions.d.ts +241 -0
  434. package/dist/types/actions.d.ts.map +1 -0
  435. package/dist/types/actions.js +5 -0
  436. package/dist/types/actions.js.map +1 -0
  437. package/dist/types/config.d.ts +211 -0
  438. package/dist/types/config.d.ts.map +1 -0
  439. package/dist/types/config.js +2 -0
  440. package/dist/types/config.js.map +1 -0
  441. package/dist/types/design-audit.d.ts +92 -0
  442. package/dist/types/design-audit.d.ts.map +1 -0
  443. package/dist/types/design-audit.js +5 -0
  444. package/dist/types/design-audit.js.map +1 -0
  445. package/dist/types/design-tokens.d.ts +138 -0
  446. package/dist/types/design-tokens.d.ts.map +1 -0
  447. package/dist/types/design-tokens.js +5 -0
  448. package/dist/types/design-tokens.js.map +1 -0
  449. package/dist/types/page.d.ts +16 -0
  450. package/dist/types/page.d.ts.map +1 -0
  451. package/dist/types/page.js +2 -0
  452. package/dist/types/page.js.map +1 -0
  453. package/dist/types/plan.d.ts +50 -0
  454. package/dist/types/plan.d.ts.map +1 -0
  455. package/dist/types/plan.js +2 -0
  456. package/dist/types/plan.js.map +1 -0
  457. package/dist/types/preview.d.ts +9 -0
  458. package/dist/types/preview.d.ts.map +1 -0
  459. package/dist/types/preview.js +5 -0
  460. package/dist/types/preview.js.map +1 -0
  461. package/dist/types/result.d.ts +62 -0
  462. package/dist/types/result.d.ts.map +1 -0
  463. package/dist/types/result.js +2 -0
  464. package/dist/types/result.js.map +1 -0
  465. package/dist/types/scenario.d.ts +20 -0
  466. package/dist/types/scenario.d.ts.map +1 -0
  467. package/dist/types/scenario.js +5 -0
  468. package/dist/types/scenario.js.map +1 -0
  469. package/dist/types/test-runner.d.ts +145 -0
  470. package/dist/types/test-runner.d.ts.map +1 -0
  471. package/dist/types/test-runner.js +10 -0
  472. package/dist/types/test-runner.js.map +1 -0
  473. package/dist/types/trajectory.d.ts +38 -0
  474. package/dist/types/trajectory.d.ts.map +1 -0
  475. package/dist/types/trajectory.js +2 -0
  476. package/dist/types/trajectory.js.map +1 -0
  477. package/dist/types/turn.d.ts +50 -0
  478. package/dist/types/turn.d.ts.map +1 -0
  479. package/dist/types/turn.js +2 -0
  480. package/dist/types/turn.js.map +1 -0
  481. package/dist/types.d.ts +16 -1017
  482. package/dist/types.d.ts.map +1 -1
  483. package/dist/types.js +15 -8
  484. package/dist/types.js.map +1 -1
  485. package/dist/wallet/rpc-interception.d.ts +15 -0
  486. package/dist/wallet/rpc-interception.d.ts.map +1 -0
  487. package/dist/wallet/rpc-interception.js +95 -0
  488. package/dist/wallet/rpc-interception.js.map +1 -0
  489. package/package.json +23 -5
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Per-action effect verification: the helper the runner loop calls after each
3
+ * executed action to decide whether the expected effect actually landed.
4
+ *
5
+ * Extracted from runner.ts via the delegate + host-interface pattern. The
6
+ * BrowserAgent class keeps a thin delegator (`verifyEffect`); this free
7
+ * function holds the method body verbatim and reads runner state through
8
+ * {@link RunnerEffectVerifyHost}, which BrowserAgent `implements` so tsc proves
9
+ * the host surface is complete. Behavior is byte-identical to the inlined
10
+ * version — same settle-wait conditions, timing, and verifier call.
11
+ */
12
+ import { verifyExpectedEffect } from './effect-verification.js';
13
+ export async function verifyEffectImpl(self, expectedEffect, preActionState, actionType) {
14
+ // Only pause for actions that mutate the page in flight (navigation,
15
+ // clicks that may trigger XHR/route transitions, form submits). For
16
+ // pure reads, scrolls, hovers, and waits the page state is already
17
+ // settled by the time execute returns. The previous unconditional
18
+ // 100ms wait was pure dead time on every turn.
19
+ const needsSettleWait = actionType === 'click'
20
+ || actionType === 'navigate'
21
+ || actionType === 'press'
22
+ || actionType === 'select';
23
+ // Kick observe off immediately and let the settle wait race against it.
24
+ // observe() polls waitForLoadState internally, so the 50ms settle is
25
+ // really only there to let click handlers schedule their first XHR; we
26
+ // don't need to *block* on it before starting observe.
27
+ const observePromise = self.driver.observe().catch(() => preActionState);
28
+ if (needsSettleWait) {
29
+ await Promise.all([
30
+ observePromise,
31
+ new Promise(r => setTimeout(r, 50)),
32
+ ]);
33
+ }
34
+ const postState = await observePromise;
35
+ self.cachedPostState = postState;
36
+ return verifyExpectedEffect({
37
+ expectedEffect,
38
+ preActionState,
39
+ postActionState: postState,
40
+ });
41
+ }
42
+ //# sourceMappingURL=effect-verify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effect-verify.js","sourceRoot":"","sources":["../../src/runner/effect-verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAahE,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAA4B,EAC5B,cAAsB,EACtB,cAAyB,EACzB,UAA6B;IAE7B,qEAAqE;IACrE,oEAAoE;IACpE,mEAAmE;IACnE,kEAAkE;IAClE,+CAA+C;IAC/C,MAAM,eAAe,GAAG,UAAU,KAAK,OAAO;WACzC,UAAU,KAAK,UAAU;WACzB,UAAU,KAAK,OAAO;WACtB,UAAU,KAAK,QAAQ,CAAC;IAC7B,wEAAwE;IACxE,qEAAqE;IACrE,uEAAuE;IACvE,uDAAuD;IACvD,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC;IACzE,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,cAAc;YACd,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;SACpC,CAAC,CAAC;IACL,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC;IACvC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;IACjC,OAAO,oBAAoB,CAAC;QAC1B,cAAc;QACd,cAAc;QACd,eAAe,EAAE,SAAS;KAC3B,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Deterministic plan execution: the runner loop's replan path hands a Plan to
3
+ * this helper, which drives each step through the driver and verifies the
4
+ * post-condition without re-entering the LLM between steps.
5
+ *
6
+ * Extracted from runner.ts via the delegate + host-interface pattern. The
7
+ * BrowserAgent class keeps a thin delegator (`executePlan`); this free function
8
+ * holds the method body verbatim and reads runner state through
9
+ * {@link RunnerExecuteHost}, which BrowserAgent `implements` so tsc proves the
10
+ * host surface is complete. Behavior is byte-identical to the inlined version —
11
+ * same ordering, event emissions, auto-pass list, verification thresholds, and
12
+ * fall-through reasons.
13
+ */
14
+ import type { Driver } from '../drivers/types.js';
15
+ import type { AgentConfig, PageState, Plan, Scenario, Turn } from '../types.js';
16
+ import { RunState } from '../run-state.js';
17
+ import type { TurnEventBus } from './events.js';
18
+ /**
19
+ * The slice of runner state plan execution reads. The BrowserAgent class
20
+ * declares `implements RunnerExecuteHost`, so a missing or mistyped member is a
21
+ * compile error — this interface IS the safety gate for the extraction. All
22
+ * members are public on BrowserAgent by construction.
23
+ */
24
+ export interface RunnerExecuteHost {
25
+ driver: Driver;
26
+ config: AgentConfig;
27
+ bus: TurnEventBus;
28
+ onTurn?: (turn: Turn) => void;
29
+ cachedPostState: PageState | undefined;
30
+ }
31
+ export declare function executePlanImpl(self: RunnerExecuteHost, plan: Plan, scenario: Scenario, runId: string, turns: Turn[], runState: RunState, startingTurnIndex: number,
32
+ /**
33
+ * Token usage from the Brain.plan() LLM call that produced this plan.
34
+ * The plan call's tokens are NOT attached to any per-step turn — there's
35
+ * one plan call per N steps. To make the run-level cost tally honest,
36
+ * we attribute the plan call to the FIRST step's Turn artifact so the
37
+ * downstream sum (in baseline-summary.json / report.json) reflects the
38
+ * real LLM spend.
39
+ */
40
+ planCallTokens?: {
41
+ tokensUsed?: number;
42
+ inputTokens?: number;
43
+ outputTokens?: number;
44
+ cacheReadInputTokens?: number;
45
+ cacheCreationInputTokens?: number;
46
+ }): Promise<{
47
+ kind: 'completed';
48
+ lastState: PageState;
49
+ finalResult?: string;
50
+ turnsConsumed: number;
51
+ } | {
52
+ kind: 'deviated';
53
+ lastState: PageState;
54
+ failedStepIndex: number;
55
+ reason: string;
56
+ turnsConsumed: number;
57
+ }>;
58
+ //# sourceMappingURL=execute-plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute-plan.d.ts","sourceRoot":"","sources":["../../src/runner/execute-plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAMhD;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,WAAW,CAAC;IACpB,GAAG,EAAE,YAAY,CAAC;IAClB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAC9B,eAAe,EAAE,SAAS,GAAG,SAAS,CAAC;CACxC;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,IAAI,EAAE,EACb,QAAQ,EAAE,QAAQ,EAClB,iBAAiB,EAAE,MAAM;AACzB;;;;;;;GAOG;AACH,cAAc,CAAC,EAAE;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC,GACA,OAAO,CACN;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,SAAS,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GACxF;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,SAAS,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAC7G,CA2aA"}
@@ -0,0 +1,426 @@
1
+ /**
2
+ * Deterministic plan execution: the runner loop's replan path hands a Plan to
3
+ * this helper, which drives each step through the driver and verifies the
4
+ * post-condition without re-entering the LLM between steps.
5
+ *
6
+ * Extracted from runner.ts via the delegate + host-interface pattern. The
7
+ * BrowserAgent class keeps a thin delegator (`executePlan`); this free function
8
+ * holds the method body verbatim and reads runner state through
9
+ * {@link RunnerExecuteHost}, which BrowserAgent `implements` so tsc proves the
10
+ * host surface is complete. Behavior is byte-identical to the inlined version —
11
+ * same ordering, event emissions, auto-pass list, verification thresholds, and
12
+ * fall-through reasons.
13
+ */
14
+ import { hasPlaceholderPattern, isMeaningfulRunScriptOutput } from './completion-policy.js';
15
+ import { pushGoalVerificationEvidence } from './utils.js';
16
+ import { verifyExpectedEffect } from './effect-verification.js';
17
+ export async function executePlanImpl(self, plan, scenario, runId, turns, runState, startingTurnIndex,
18
+ /**
19
+ * Token usage from the Brain.plan() LLM call that produced this plan.
20
+ * The plan call's tokens are NOT attached to any per-step turn — there's
21
+ * one plan call per N steps. To make the run-level cost tally honest,
22
+ * we attribute the plan call to the FIRST step's Turn artifact so the
23
+ * downstream sum (in baseline-summary.json / report.json) reflects the
24
+ * real LLM spend.
25
+ */
26
+ planCallTokens) {
27
+ let currentTurnIndex = startingTurnIndex;
28
+ let lastState = turns[turns.length - 1]?.state
29
+ ?? { url: '', title: '', snapshot: '' };
30
+ // Track the last successful runScript output so placeholder complete
31
+ // results can be substituted with the real script output.
32
+ let lastRunScriptOutput = null;
33
+ // Track extractWithIndex matches for per-action fallback; the LLM must
34
+ // read the list and pick by index.
35
+ let lastExtractOutput = null;
36
+ for (let stepIdx = 0; stepIdx < plan.steps.length; stepIdx++) {
37
+ if (scenario.signal?.aborted) {
38
+ return {
39
+ kind: 'deviated',
40
+ lastState,
41
+ failedStepIndex: stepIdx,
42
+ reason: scenario.signal.reason || 'Cancelled',
43
+ turnsConsumed: stepIdx,
44
+ };
45
+ }
46
+ const step = plan.steps[stepIdx];
47
+ const stepStartedAt = Date.now();
48
+ const turnNumber = currentTurnIndex + 1;
49
+ currentTurnIndex++;
50
+ // Refresh the snapshot before EVERY step. The plan was built from a
51
+ // single observe() call at turn 1; later steps may target a different
52
+ // page entirely (after navigate / click "Next"). The first observe
53
+ // here is also what verify-against will eventually consume.
54
+ const preStepState = await self.driver.observe().catch(() => lastState);
55
+ lastState = preStepState;
56
+ // Wrap each plan step in a Turn artifact so post-run analysis (the
57
+ // viewer, the events.jsonl persistence, the metrics) sees a unified
58
+ // timeline regardless of whether the runner used the planner or the
59
+ // per-action loop.
60
+ //
61
+ // Token attribution: the first step carries the Brain.plan() LLM call's
62
+ // token usage so run-level cost includes planning.
63
+ const isFirstStep = stepIdx === 0;
64
+ const turn = {
65
+ turn: turnNumber,
66
+ state: preStepState,
67
+ action: step.action,
68
+ reasoning: step.rationale ?? `Plan step ${stepIdx + 1}/${plan.steps.length}`,
69
+ expectedEffect: step.expectedEffect,
70
+ plan: plan.steps.map((s) => s.rationale ?? s.action.action),
71
+ currentStep: stepIdx,
72
+ durationMs: 0,
73
+ ...(isFirstStep && planCallTokens?.tokensUsed !== undefined ? { tokensUsed: planCallTokens.tokensUsed } : {}),
74
+ ...(isFirstStep && planCallTokens?.inputTokens !== undefined ? { inputTokens: planCallTokens.inputTokens } : {}),
75
+ ...(isFirstStep && planCallTokens?.outputTokens !== undefined ? { outputTokens: planCallTokens.outputTokens } : {}),
76
+ ...(isFirstStep && planCallTokens?.cacheReadInputTokens !== undefined ? { cacheReadInputTokens: planCallTokens.cacheReadInputTokens } : {}),
77
+ ...(isFirstStep && planCallTokens?.cacheCreationInputTokens !== undefined ? { cacheCreationInputTokens: planCallTokens.cacheCreationInputTokens } : {}),
78
+ };
79
+ // Terminal actions: complete and abort don't go through driver.execute
80
+ // — the runner handles them as the end of the plan.
81
+ if (step.action.action === 'complete') {
82
+ // Substitute placeholder complete results with prior runScript output.
83
+ let resolvedResult = step.action.result;
84
+ if (lastRunScriptOutput
85
+ && typeof resolvedResult === 'string'
86
+ && hasPlaceholderPattern(resolvedResult)) {
87
+ if (self.config.debug) {
88
+ console.log(`[Runner] Substituting placeholder complete.result with runScript output (${lastRunScriptOutput.length} chars)`);
89
+ }
90
+ resolvedResult = lastRunScriptOutput;
91
+ turn.reasoning = `${turn.reasoning ?? ''} [substituted runScript output]`.trim();
92
+ }
93
+ turn.durationMs = Date.now() - stepStartedAt;
94
+ turns.push(turn);
95
+ self.onTurn?.(turn);
96
+ self.bus.emitNow({
97
+ type: 'plan-step-executed',
98
+ runId,
99
+ turn: turnNumber,
100
+ stepIndex: stepIdx + 1,
101
+ totalSteps: plan.steps.length,
102
+ action: step.action,
103
+ executeSuccess: true,
104
+ verified: true,
105
+ durationMs: turn.durationMs,
106
+ });
107
+ return {
108
+ kind: 'completed',
109
+ lastState,
110
+ finalResult: resolvedResult,
111
+ turnsConsumed: stepIdx + 1,
112
+ };
113
+ }
114
+ if (step.action.action === 'abort') {
115
+ turn.durationMs = Date.now() - stepStartedAt;
116
+ turns.push(turn);
117
+ self.onTurn?.(turn);
118
+ self.bus.emitNow({
119
+ type: 'plan-deviated',
120
+ runId,
121
+ turn: turnNumber,
122
+ stepIndex: stepIdx + 1,
123
+ totalSteps: plan.steps.length,
124
+ reason: `plan aborted: ${step.action.reason}`,
125
+ });
126
+ return {
127
+ kind: 'deviated',
128
+ lastState,
129
+ failedStepIndex: stepIdx,
130
+ reason: `plan aborted: ${step.action.reason}`,
131
+ turnsConsumed: stepIdx + 1,
132
+ };
133
+ }
134
+ // Execute the action via the existing driver path. This emits
135
+ // execute-started / execute-completed events on the bus exactly
136
+ // like the per-action loop does.
137
+ //
138
+ // Cap each plan step at 10s so missing selectors fail quickly and hand
139
+ // control back to per-action mode.
140
+ self.bus.emitNow({ type: 'execute-started', runId, turn: turnNumber, action: step.action });
141
+ const execStartedAt = Date.now();
142
+ const planStepTimeoutMs = 10_000;
143
+ let execResult;
144
+ try {
145
+ execResult = await Promise.race([
146
+ self.driver.execute(step.action),
147
+ new Promise((resolve) => setTimeout(() => resolve({ success: false, error: `plan step wall-clock timeout after ${planStepTimeoutMs}ms` }), planStepTimeoutMs)),
148
+ ]);
149
+ }
150
+ catch (err) {
151
+ const message = err instanceof Error ? err.message : String(err);
152
+ execResult = { success: false, error: message };
153
+ }
154
+ const execDurationMs = Date.now() - execStartedAt;
155
+ self.bus.emitNow({
156
+ type: 'execute-completed',
157
+ runId,
158
+ turn: turnNumber,
159
+ action: step.action,
160
+ success: execResult.success,
161
+ ...(execResult.error ? { error: execResult.error } : {}),
162
+ ...(execResult.bounds ? { bounds: execResult.bounds } : {}),
163
+ durationMs: execDurationMs,
164
+ });
165
+ if (!execResult.success) {
166
+ turn.error = execResult.error;
167
+ turn.durationMs = Date.now() - stepStartedAt;
168
+ turn.verified = false;
169
+ turn.verificationFailure = `execute failed: ${execResult.error}`;
170
+ turns.push(turn);
171
+ self.onTurn?.(turn);
172
+ runState.recordError();
173
+ self.bus.emitNow({
174
+ type: 'plan-step-executed',
175
+ runId,
176
+ turn: turnNumber,
177
+ stepIndex: stepIdx + 1,
178
+ totalSteps: plan.steps.length,
179
+ action: step.action,
180
+ executeSuccess: false,
181
+ verified: false,
182
+ durationMs: Date.now() - stepStartedAt,
183
+ ...(execResult.error ? { verifyReason: execResult.error } : {}),
184
+ });
185
+ self.bus.emitNow({
186
+ type: 'plan-deviated',
187
+ runId,
188
+ turn: turnNumber,
189
+ stepIndex: stepIdx + 1,
190
+ totalSteps: plan.steps.length,
191
+ reason: `execute failed: ${execResult.error}`,
192
+ });
193
+ return {
194
+ kind: 'deviated',
195
+ lastState,
196
+ failedStepIndex: stepIdx,
197
+ reason: `execute failed at step ${stepIdx + 1}: ${execResult.error}`,
198
+ turnsConsumed: stepIdx + 1,
199
+ };
200
+ }
201
+ runState.clearConsecutiveErrors();
202
+ if (execResult.bounds)
203
+ turn.actionBounds = execResult.bounds;
204
+ // Capture runScript output for placeholder substitution and evidence.
205
+ if (step.action.action === 'runScript' && typeof execResult.data === 'string' && execResult.data.length > 0) {
206
+ lastRunScriptOutput = execResult.data;
207
+ if (execResult.data.length > 10) {
208
+ runState.recordEvidence(`EXTRACTED (turn ${currentTurnIndex}): ${execResult.data.slice(0, 500)}`);
209
+ }
210
+ }
211
+ // Capture extractWithIndex output for per-action fallback.
212
+ if (step.action.action === 'extractWithIndex' && typeof execResult.data === 'string' && execResult.data.length > 0) {
213
+ lastExtractOutput = execResult.data;
214
+ // Also push as goal verification evidence so the verifier sees what
215
+ // the agent extracted.
216
+ runState.firstSufficientEvidenceTurn ??= currentTurnIndex;
217
+ pushGoalVerificationEvidence(runState.goalVerificationEvidence, `EXTRACT RESULT:\n${execResult.data}`);
218
+ if (execResult.data.length > 10) {
219
+ runState.recordEvidence(`EXTRACTED (turn ${currentTurnIndex}): ${execResult.data.slice(0, 500)}`);
220
+ }
221
+ }
222
+ // Verify the post-condition. We re-observe to get the post-action
223
+ // state, then run the same verifyExpectedEffect helper the per-action
224
+ // loop uses. The fresh observe is also stashed in cachedPostState so
225
+ // the next step's pre-step observe can reuse it.
226
+ self.bus.emitNow({
227
+ type: 'verify-started',
228
+ runId,
229
+ turn: turnNumber,
230
+ expectedEffect: step.expectedEffect,
231
+ });
232
+ const verifyStartedAt = Date.now();
233
+ // Auto-pass list — these actions either don't observably mutate
234
+ // the page state OR they're self-verifying (the underlying Playwright
235
+ // call throws on real failure, so a successful return means the
236
+ // mutation actually happened). Strict expectedEffect verification
237
+ // would generate false negatives on the per-action loop fallback for
238
+ // these. Plan execution trusts the execute result.
239
+ //
240
+ // - wait / scroll / hover: don't mutate observable snapshot state
241
+ // - runScript / evaluate / verifyPreview: meta actions
242
+ // - fill / clickSequence: self-verifying (Playwright throws on miss),
243
+ // AND input values don't always reflect in the ARIA snapshot, so
244
+ // the permissive "did state change?" check would also miss them
245
+ const isAutoPass = step.action.action === 'wait'
246
+ || step.action.action === 'scroll'
247
+ || step.action.action === 'hover'
248
+ || step.action.action === 'runScript'
249
+ || step.action.action === 'extractWithIndex'
250
+ || step.action.action === 'evaluate'
251
+ || step.action.action === 'verifyPreview'
252
+ || step.action.action === 'fill'
253
+ || step.action.action === 'clickSequence';
254
+ // Settle wait for mutating actions, mirroring verifyEffect's logic
255
+ const needsSettleWait = step.action.action === 'click'
256
+ || step.action.action === 'navigate'
257
+ || step.action.action === 'press'
258
+ || step.action.action === 'select'
259
+ || step.action.action === 'fill'
260
+ || step.action.action === 'clickSequence';
261
+ const observePromise = self.driver.observe().catch(() => preStepState);
262
+ if (needsSettleWait) {
263
+ await Promise.all([
264
+ observePromise,
265
+ new Promise((r) => setTimeout(r, 50)),
266
+ ]);
267
+ }
268
+ const postStepState = await observePromise;
269
+ self.cachedPostState = postStepState;
270
+ lastState = postStepState;
271
+ // Plan verification is more permissive than per-action verification:
272
+ // a step passes if (a) it's a non-mutating action, OR (b) the strict
273
+ // verifier passes, OR (c) the snapshot/url changed in any meaningful
274
+ // way (the action did SOMETHING). Strict failure-on-no-change is
275
+ // appropriate for the per-action loop where the agent can recover,
276
+ // but plan execution needs to push forward unless there's positive
277
+ // evidence of failure.
278
+ let verifyResult;
279
+ if (isAutoPass) {
280
+ verifyResult = { verified: true };
281
+ }
282
+ else {
283
+ const strictResult = verifyExpectedEffect({
284
+ expectedEffect: step.expectedEffect,
285
+ preActionState: preStepState,
286
+ postActionState: postStepState,
287
+ });
288
+ if (strictResult.verified) {
289
+ verifyResult = strictResult;
290
+ }
291
+ else {
292
+ // Permissive fallback: did the page change at all?
293
+ const stateChanged = preStepState.url !== postStepState.url
294
+ || preStepState.title !== postStepState.title
295
+ || preStepState.snapshot !== postStepState.snapshot;
296
+ if (stateChanged) {
297
+ verifyResult = { verified: true };
298
+ }
299
+ else {
300
+ verifyResult = strictResult;
301
+ }
302
+ }
303
+ }
304
+ turn.verified = verifyResult.verified;
305
+ if (!verifyResult.verified) {
306
+ turn.verificationFailure = verifyResult.reason;
307
+ }
308
+ turn.durationMs = Date.now() - stepStartedAt;
309
+ turns.push(turn);
310
+ self.onTurn?.(turn);
311
+ self.bus.emitNow({
312
+ type: 'verify-completed',
313
+ runId,
314
+ turn: turnNumber,
315
+ verified: verifyResult.verified,
316
+ ...(verifyResult.reason ? { reason: verifyResult.reason } : {}),
317
+ durationMs: Date.now() - verifyStartedAt,
318
+ });
319
+ self.bus.emitNow({
320
+ type: 'plan-step-executed',
321
+ runId,
322
+ turn: turnNumber,
323
+ stepIndex: stepIdx + 1,
324
+ totalSteps: plan.steps.length,
325
+ action: step.action,
326
+ executeSuccess: true,
327
+ verified: verifyResult.verified,
328
+ durationMs: Date.now() - stepStartedAt,
329
+ ...(verifyResult.reason ? { verifyReason: verifyResult.reason } : {}),
330
+ });
331
+ if (!verifyResult.verified) {
332
+ self.bus.emitNow({
333
+ type: 'plan-deviated',
334
+ runId,
335
+ turn: turnNumber,
336
+ stepIndex: stepIdx + 1,
337
+ totalSteps: plan.steps.length,
338
+ reason: `verification failed at step ${stepIdx + 1}: ${verifyResult.reason ?? 'expected effect not observed'}`,
339
+ });
340
+ return {
341
+ kind: 'deviated',
342
+ lastState,
343
+ failedStepIndex: stepIdx,
344
+ reason: `verification failed at step ${stepIdx + 1}: ${verifyResult.reason ?? 'expected effect not observed'}`,
345
+ turnsConsumed: stepIdx + 1,
346
+ };
347
+ }
348
+ }
349
+ // Auto-complete when the plan ends with meaningful runScript output.
350
+ const lastStep = plan.steps[plan.steps.length - 1];
351
+ if (lastStep
352
+ && lastStep.action.action === 'runScript'
353
+ && isMeaningfulRunScriptOutput(lastRunScriptOutput)) {
354
+ const synthTurnNumber = currentTurnIndex + 1;
355
+ const synthTurn = {
356
+ turn: synthTurnNumber,
357
+ state: lastState,
358
+ action: { action: 'complete', result: lastRunScriptOutput },
359
+ reasoning: 'Auto-complete: plan ended after runScript, runner emitted complete with the runScript output',
360
+ durationMs: 0,
361
+ };
362
+ turns.push(synthTurn);
363
+ self.onTurn?.(synthTurn);
364
+ self.bus.emitNow({
365
+ type: 'plan-step-executed',
366
+ runId,
367
+ turn: synthTurnNumber,
368
+ stepIndex: plan.steps.length + 1,
369
+ totalSteps: plan.steps.length + 1,
370
+ action: synthTurn.action,
371
+ executeSuccess: true,
372
+ verified: true,
373
+ durationMs: 0,
374
+ });
375
+ if (self.config.debug) {
376
+ console.log(`[Runner] Auto-emitted complete with runScript output (${lastRunScriptOutput.length} chars) after plan exhausted`);
377
+ }
378
+ return {
379
+ kind: 'completed',
380
+ lastState,
381
+ finalResult: lastRunScriptOutput,
382
+ turnsConsumed: plan.steps.length + 1,
383
+ };
384
+ }
385
+ // If the plan produced extractWithIndex matches, fall through with the
386
+ // match list so the LLM can choose the correct index.
387
+ if (lastExtractOutput) {
388
+ return {
389
+ kind: 'deviated',
390
+ lastState,
391
+ failedStepIndex: plan.steps.length,
392
+ reason: `plan completed extractWithIndex but the LLM must read the matches and pick by index. Match list:\n${lastExtractOutput.slice(0, 4000)}\n\nPick the index whose text matches the goal, then emit complete with result: <picked text>`,
393
+ turnsConsumed: plan.steps.length,
394
+ };
395
+ }
396
+ // If the plan ends with runScript but output is empty or placeholder-like,
397
+ // fall through to per-action mode instead of completing with bad data.
398
+ if (lastStep
399
+ && lastStep.action.action === 'runScript'
400
+ && !isMeaningfulRunScriptOutput(lastRunScriptOutput)) {
401
+ if (self.config.debug) {
402
+ console.log(`[Runner] runScript returned no meaningful output (${JSON.stringify(lastRunScriptOutput).slice(0, 100)}); falling through to per-action loop for two-pass extraction`);
403
+ }
404
+ return {
405
+ kind: 'deviated',
406
+ lastState,
407
+ failedStepIndex: plan.steps.length - 1,
408
+ reason: `runScript returned no meaningful output (got: ${JSON.stringify(lastRunScriptOutput).slice(0, 200)}). The first-pass extraction failed — re-observe the page and try extractWithIndex with a wide query (e.g. 'p, span, dd, code') and a contains filter naming the expected text fragment. Pick-by-content beats pick-by-selector when the planner couldn't see the data at plan time.`,
409
+ turnsConsumed: plan.steps.length,
410
+ };
411
+ }
412
+ // All steps verified BUT the plan ended without an explicit complete/abort.
413
+ // This means the planner emitted a finite sequence of "work" steps and
414
+ // didn't terminate. The right behavior is NOT to fabricate a complete —
415
+ // we treat plan exhaustion as a deviation that triggers fallback to the
416
+ // per-action loop. The per-action loop will continue from the current
417
+ // state and emit `complete` when the goal is genuinely met.
418
+ return {
419
+ kind: 'deviated',
420
+ lastState,
421
+ failedStepIndex: plan.steps.length,
422
+ reason: 'plan exhausted without an explicit complete or abort step — falling through to per-action loop to finish the task',
423
+ turnsConsumed: plan.steps.length,
424
+ };
425
+ }
426
+ //# sourceMappingURL=execute-plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute-plan.js","sourceRoot":"","sources":["../../src/runner/execute-plan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * One-time max-turns extension decision.
3
+ *
4
+ * Pure: given the current turn and progress signals, decide whether to grant
5
+ * the single budget extension and to what new cap. The caller (the run loop)
6
+ * keeps the side effects — emitting the recovery event and mutating the live
7
+ * cap — so this stays a testable predicate over the loop's budget signals.
8
+ */
9
+ export declare function decideMaxTurnsExtension(params: {
10
+ turn: number;
11
+ maxTurns: number;
12
+ extensionGranted: boolean;
13
+ isVisionMode: boolean;
14
+ lastProgressTurn: number;
15
+ }): {
16
+ extendedMax: number;
17
+ extra: number;
18
+ } | null;
19
+ //# sourceMappingURL=max-turns-extension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"max-turns-extension.d.ts","sourceRoot":"","sources":["../../src/runner/max-turns-extension.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAiBhD"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * One-time max-turns extension decision.
3
+ *
4
+ * Pure: given the current turn and progress signals, decide whether to grant
5
+ * the single budget extension and to what new cap. The caller (the run loop)
6
+ * keeps the side effects — emitting the recovery event and mutating the live
7
+ * cap — so this stays a testable predicate over the loop's budget signals.
8
+ */
9
+ import { EXTENSION_TURNS_GRANTED, EXTENSION_HARD_CAP, EXTENSION_PROGRESS_LOOKBACK } from './constants.js';
10
+ export function decideMaxTurnsExtension(params) {
11
+ const { turn, maxTurns, extensionGranted, isVisionMode, lastProgressTurn } = params;
12
+ if (!(turn === maxTurns
13
+ && !extensionGranted
14
+ && !isVisionMode
15
+ && maxTurns < EXTENSION_HARD_CAP
16
+ && lastProgressTurn >= maxTurns - EXTENSION_PROGRESS_LOOKBACK)) {
17
+ return null;
18
+ }
19
+ const extendedMax = Math.min(maxTurns + EXTENSION_TURNS_GRANTED, EXTENSION_HARD_CAP);
20
+ const extra = extendedMax - maxTurns;
21
+ if (extra <= 0)
22
+ return null;
23
+ return { extendedMax, extra };
24
+ }
25
+ //# sourceMappingURL=max-turns-extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"max-turns-extension.js","sourceRoot":"","sources":["../../src/runner/max-turns-extension.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAE1G,MAAM,UAAU,uBAAuB,CAAC,MAMvC;IACC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE,YAAY,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC;IACpF,IACE,CAAC,CACC,IAAI,KAAK,QAAQ;WACd,CAAC,gBAAgB;WACjB,CAAC,YAAY;WACb,QAAQ,GAAG,kBAAkB;WAC7B,gBAAgB,IAAI,QAAQ,GAAG,2BAA2B,CAC9D,EACD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,uBAAuB,EAAE,kBAAkB,CAAC,CAAC;IACrF,MAAM,KAAK,GAAG,WAAW,GAAG,QAAQ,CAAC;IACrC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5B,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AAChC,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Micro-plan follow-up selection — given the primary action the LLM chose and
3
+ * the optional `nextActions` it proposed, pick the safe subset to chain in the
4
+ * same turn, bounded by the configured per-turn action cap.
5
+ */
6
+ import type { Action } from '../types.js';
7
+ export declare function selectMicroPlanFollowUps(primaryAction: Action, nextActions: Action[] | undefined, microPlanConfig: {
8
+ enabled?: boolean;
9
+ maxActionsPerTurn?: number;
10
+ } | undefined): Action[];
11
+ //# sourceMappingURL=micro-plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"micro-plan.d.ts","sourceRoot":"","sources":["../../src/runner/micro-plan.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EAAE,GAAG,SAAS,EACjC,eAAe,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GAC7E,MAAM,EAAE,CAwBV"}