@tangle-network/browser-agent-driver 0.33.3 → 0.34.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 (485) 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/cli/args.d.ts +141 -0
  77. package/dist/cli/args.d.ts.map +1 -0
  78. package/dist/cli/args.js +167 -0
  79. package/dist/cli/args.js.map +1 -0
  80. package/dist/cli/benchmark-sync.d.ts +9 -0
  81. package/dist/cli/benchmark-sync.d.ts.map +1 -0
  82. package/dist/cli/benchmark-sync.js +43 -0
  83. package/dist/cli/benchmark-sync.js.map +1 -0
  84. package/dist/cli/build-config.d.ts +11 -0
  85. package/dist/cli/build-config.d.ts.map +1 -0
  86. package/dist/cli/build-config.js +355 -0
  87. package/dist/cli/build-config.js.map +1 -0
  88. package/dist/cli/commands/auth.d.ts +3 -0
  89. package/dist/cli/commands/auth.d.ts.map +1 -0
  90. package/dist/cli/commands/auth.js +36 -0
  91. package/dist/cli/commands/auth.js.map +1 -0
  92. package/dist/cli/commands/chrome-debug.d.ts +7 -0
  93. package/dist/cli/commands/chrome-debug.d.ts.map +1 -0
  94. package/dist/cli/commands/chrome-debug.js +11 -0
  95. package/dist/cli/commands/chrome-debug.js.map +1 -0
  96. package/dist/cli/commands/design-audit.d.ts +3 -0
  97. package/dist/cli/commands/design-audit.d.ts.map +1 -0
  98. package/dist/cli/commands/design-audit.js +68 -0
  99. package/dist/cli/commands/design-audit.js.map +1 -0
  100. package/dist/cli/commands/preview.d.ts +14 -0
  101. package/dist/cli/commands/preview.d.ts.map +1 -0
  102. package/dist/cli/commands/preview.js +31 -0
  103. package/dist/cli/commands/preview.js.map +1 -0
  104. package/dist/cli/commands/run.d.ts +3 -0
  105. package/dist/cli/commands/run.d.ts.map +1 -0
  106. package/dist/cli/commands/run.js +728 -0
  107. package/dist/cli/commands/run.js.map +1 -0
  108. package/dist/cli/commands/runs.d.ts +8 -0
  109. package/dist/cli/commands/runs.d.ts.map +1 -0
  110. package/dist/cli/commands/runs.js +35 -0
  111. package/dist/cli/commands/runs.js.map +1 -0
  112. package/dist/cli/commands/share.d.ts +10 -0
  113. package/dist/cli/commands/share.d.ts.map +1 -0
  114. package/dist/cli/commands/share.js +32 -0
  115. package/dist/cli/commands/share.js.map +1 -0
  116. package/dist/cli/commands/showcase.d.ts +17 -0
  117. package/dist/cli/commands/showcase.d.ts.map +1 -0
  118. package/dist/cli/commands/showcase.js +20 -0
  119. package/dist/cli/commands/showcase.js.map +1 -0
  120. package/dist/cli/commands/snapshot.d.ts +12 -0
  121. package/dist/cli/commands/snapshot.d.ts.map +1 -0
  122. package/dist/cli/commands/snapshot.js +24 -0
  123. package/dist/cli/commands/snapshot.js.map +1 -0
  124. package/dist/cli/commands/view.d.ts +7 -0
  125. package/dist/cli/commands/view.d.ts.map +1 -0
  126. package/dist/cli/commands/view.js +23 -0
  127. package/dist/cli/commands/view.js.map +1 -0
  128. package/dist/cli/constants.d.ts +6 -0
  129. package/dist/cli/constants.d.ts.map +1 -0
  130. package/dist/cli/constants.js +3 -0
  131. package/dist/cli/constants.js.map +1 -0
  132. package/dist/cli/version.d.ts +7 -0
  133. package/dist/cli/version.d.ts.map +1 -0
  134. package/dist/cli/version.js +16 -0
  135. package/dist/cli/version.js.map +1 -0
  136. package/dist/cli-design-audit.d.ts +44 -36
  137. package/dist/cli-design-audit.d.ts.map +1 -1
  138. package/dist/cli-design-audit.js +137 -1646
  139. package/dist/cli-design-audit.js.map +1 -1
  140. package/dist/cli-jobs.js +2 -1
  141. package/dist/cli-jobs.js.map +1 -1
  142. package/dist/cli.js +66 -1697
  143. package/dist/cli.js.map +1 -1
  144. package/dist/config.d.ts +5 -0
  145. package/dist/config.d.ts.map +1 -1
  146. package/dist/config.js +8 -0
  147. package/dist/config.js.map +1 -1
  148. package/dist/design/audit/evolve/agent.d.ts +23 -0
  149. package/dist/design/audit/evolve/agent.d.ts.map +1 -0
  150. package/dist/design/audit/evolve/agent.js +272 -0
  151. package/dist/design/audit/evolve/agent.js.map +1 -0
  152. package/dist/design/audit/evolve/css.d.ts +10 -0
  153. package/dist/design/audit/evolve/css.d.ts.map +1 -0
  154. package/dist/design/audit/evolve/css.js +206 -0
  155. package/dist/design/audit/evolve/css.js.map +1 -0
  156. package/dist/design/audit/evolve/index.d.ts +13 -0
  157. package/dist/design/audit/evolve/index.d.ts.map +1 -0
  158. package/dist/design/audit/evolve/index.js +12 -0
  159. package/dist/design/audit/evolve/index.js.map +1 -0
  160. package/dist/design/audit/evolve/report.d.ts +3 -0
  161. package/dist/design/audit/evolve/report.d.ts.map +1 -0
  162. package/dist/design/audit/evolve/report.js +45 -0
  163. package/dist/design/audit/evolve/report.js.map +1 -0
  164. package/dist/design/audit/evolve/types.d.ts +14 -0
  165. package/dist/design/audit/evolve/types.d.ts.map +1 -0
  166. package/dist/design/audit/evolve/types.js +2 -0
  167. package/dist/design/audit/evolve/types.js.map +1 -0
  168. package/dist/design/audit/pipeline.d.ts +12 -0
  169. package/dist/design/audit/pipeline.d.ts.map +1 -1
  170. package/dist/design/audit/pipeline.js +43 -27
  171. package/dist/design/audit/pipeline.js.map +1 -1
  172. package/dist/design/audit/reference/artifact/build.d.ts +33 -0
  173. package/dist/design/audit/reference/artifact/build.d.ts.map +1 -0
  174. package/dist/design/audit/reference/artifact/build.js +64 -0
  175. package/dist/design/audit/reference/artifact/build.js.map +1 -0
  176. package/dist/design/audit/reference/artifact/render.d.ts +39 -0
  177. package/dist/design/audit/reference/artifact/render.d.ts.map +1 -0
  178. package/dist/design/audit/reference/artifact/render.js +213 -0
  179. package/dist/design/audit/reference/artifact/render.js.map +1 -0
  180. package/dist/design/audit/reference/artifact/text.d.ts +11 -0
  181. package/dist/design/audit/reference/artifact/text.d.ts.map +1 -0
  182. package/dist/design/audit/reference/artifact/text.js +20 -0
  183. package/dist/design/audit/reference/artifact/text.js.map +1 -0
  184. package/dist/design/audit/reference/artifact/to-findings.d.ts +57 -0
  185. package/dist/design/audit/reference/artifact/to-findings.d.ts.map +1 -0
  186. package/dist/design/audit/reference/artifact/to-findings.js +314 -0
  187. package/dist/design/audit/reference/artifact/to-findings.js.map +1 -0
  188. package/dist/design/audit/reference/config.d.ts +50 -0
  189. package/dist/design/audit/reference/config.d.ts.map +1 -0
  190. package/dist/design/audit/reference/config.js +108 -0
  191. package/dist/design/audit/reference/config.js.map +1 -0
  192. package/dist/design/audit/reference/contracts.d.ts +1030 -0
  193. package/dist/design/audit/reference/contracts.d.ts.map +1 -0
  194. package/dist/design/audit/reference/contracts.js +28 -0
  195. package/dist/design/audit/reference/contracts.js.map +1 -0
  196. package/dist/design/audit/reference/corpus/build.d.ts +115 -0
  197. package/dist/design/audit/reference/corpus/build.d.ts.map +1 -0
  198. package/dist/design/audit/reference/corpus/build.js +152 -0
  199. package/dist/design/audit/reference/corpus/build.js.map +1 -0
  200. package/dist/design/audit/reference/corpus/schema.d.ts +33 -0
  201. package/dist/design/audit/reference/corpus/schema.d.ts.map +1 -0
  202. package/dist/design/audit/reference/corpus/schema.js +249 -0
  203. package/dist/design/audit/reference/corpus/schema.js.map +1 -0
  204. package/dist/design/audit/reference/corpus/store.d.ts +26 -0
  205. package/dist/design/audit/reference/corpus/store.d.ts.map +1 -0
  206. package/dist/design/audit/reference/corpus/store.js +104 -0
  207. package/dist/design/audit/reference/corpus/store.js.map +1 -0
  208. package/dist/design/audit/reference/dna/delta.d.ts +21 -0
  209. package/dist/design/audit/reference/dna/delta.d.ts.map +1 -0
  210. package/dist/design/audit/reference/dna/delta.js +126 -0
  211. package/dist/design/audit/reference/dna/delta.js.map +1 -0
  212. package/dist/design/audit/reference/dna/derive.d.ts +31 -0
  213. package/dist/design/audit/reference/dna/derive.d.ts.map +1 -0
  214. package/dist/design/audit/reference/dna/derive.js +381 -0
  215. package/dist/design/audit/reference/dna/derive.js.map +1 -0
  216. package/dist/design/audit/reference/dna/descriptor.d.ts +36 -0
  217. package/dist/design/audit/reference/dna/descriptor.d.ts.map +1 -0
  218. package/dist/design/audit/reference/dna/descriptor.js +209 -0
  219. package/dist/design/audit/reference/dna/descriptor.js.map +1 -0
  220. package/dist/design/audit/reference/dna/page-adapter.d.ts +17 -0
  221. package/dist/design/audit/reference/dna/page-adapter.d.ts.map +1 -0
  222. package/dist/design/audit/reference/dna/page-adapter.js +35 -0
  223. package/dist/design/audit/reference/dna/page-adapter.js.map +1 -0
  224. package/dist/design/audit/reference/dna/scroll-capture.d.ts +93 -0
  225. package/dist/design/audit/reference/dna/scroll-capture.d.ts.map +1 -0
  226. package/dist/design/audit/reference/dna/scroll-capture.js +374 -0
  227. package/dist/design/audit/reference/dna/scroll-capture.js.map +1 -0
  228. package/dist/design/audit/reference/engine/budget.d.ts +63 -0
  229. package/dist/design/audit/reference/engine/budget.d.ts.map +1 -0
  230. package/dist/design/audit/reference/engine/budget.js +110 -0
  231. package/dist/design/audit/reference/engine/budget.js.map +1 -0
  232. package/dist/design/audit/reference/engine/core.d.ts +32 -0
  233. package/dist/design/audit/reference/engine/core.d.ts.map +1 -0
  234. package/dist/design/audit/reference/engine/core.js +261 -0
  235. package/dist/design/audit/reference/engine/core.js.map +1 -0
  236. package/dist/design/audit/reference/engine/guard.d.ts +43 -0
  237. package/dist/design/audit/reference/engine/guard.d.ts.map +1 -0
  238. package/dist/design/audit/reference/engine/guard.js +43 -0
  239. package/dist/design/audit/reference/engine/guard.js.map +1 -0
  240. package/dist/design/audit/reference/engine/score-core.d.ts +48 -0
  241. package/dist/design/audit/reference/engine/score-core.d.ts.map +1 -0
  242. package/dist/design/audit/reference/engine/score-core.js +134 -0
  243. package/dist/design/audit/reference/engine/score-core.js.map +1 -0
  244. package/dist/design/audit/reference/engine/wiring.d.ts +35 -0
  245. package/dist/design/audit/reference/engine/wiring.d.ts.map +1 -0
  246. package/dist/design/audit/reference/engine/wiring.js +80 -0
  247. package/dist/design/audit/reference/engine/wiring.js.map +1 -0
  248. package/dist/design/audit/reference/eval/taste-core.d.ts +77 -0
  249. package/dist/design/audit/reference/eval/taste-core.d.ts.map +1 -0
  250. package/dist/design/audit/reference/eval/taste-core.js +95 -0
  251. package/dist/design/audit/reference/eval/taste-core.js.map +1 -0
  252. package/dist/design/audit/reference/generate/generator.d.ts +49 -0
  253. package/dist/design/audit/reference/generate/generator.d.ts.map +1 -0
  254. package/dist/design/audit/reference/generate/generator.js +94 -0
  255. package/dist/design/audit/reference/generate/generator.js.map +1 -0
  256. package/dist/design/audit/reference/generate/parse.d.ts +28 -0
  257. package/dist/design/audit/reference/generate/parse.d.ts.map +1 -0
  258. package/dist/design/audit/reference/generate/parse.js +180 -0
  259. package/dist/design/audit/reference/generate/parse.js.map +1 -0
  260. package/dist/design/audit/reference/generate/prompt.d.ts +36 -0
  261. package/dist/design/audit/reference/generate/prompt.d.ts.map +1 -0
  262. package/dist/design/audit/reference/generate/prompt.js +124 -0
  263. package/dist/design/audit/reference/generate/prompt.js.map +1 -0
  264. package/dist/design/audit/reference/index.d.ts +26 -0
  265. package/dist/design/audit/reference/index.d.ts.map +1 -0
  266. package/dist/design/audit/reference/index.js +31 -0
  267. package/dist/design/audit/reference/index.js.map +1 -0
  268. package/dist/design/audit/reference/judge/image-clamp.d.ts +34 -0
  269. package/dist/design/audit/reference/judge/image-clamp.d.ts.map +1 -0
  270. package/dist/design/audit/reference/judge/image-clamp.js +88 -0
  271. package/dist/design/audit/reference/judge/image-clamp.js.map +1 -0
  272. package/dist/design/audit/reference/judge/pairwise.d.ts +34 -0
  273. package/dist/design/audit/reference/judge/pairwise.d.ts.map +1 -0
  274. package/dist/design/audit/reference/judge/pairwise.js +105 -0
  275. package/dist/design/audit/reference/judge/pairwise.js.map +1 -0
  276. package/dist/design/audit/reference/judge/parse.d.ts +31 -0
  277. package/dist/design/audit/reference/judge/parse.d.ts.map +1 -0
  278. package/dist/design/audit/reference/judge/parse.js +113 -0
  279. package/dist/design/audit/reference/judge/parse.js.map +1 -0
  280. package/dist/design/audit/reference/judge/prompt.d.ts +38 -0
  281. package/dist/design/audit/reference/judge/prompt.d.ts.map +1 -0
  282. package/dist/design/audit/reference/judge/prompt.js +111 -0
  283. package/dist/design/audit/reference/judge/prompt.js.map +1 -0
  284. package/dist/design/audit/reference/judge/quality.d.ts +28 -0
  285. package/dist/design/audit/reference/judge/quality.d.ts.map +1 -0
  286. package/dist/design/audit/reference/judge/quality.js +62 -0
  287. package/dist/design/audit/reference/judge/quality.js.map +1 -0
  288. package/dist/design/audit/reference/judge/rank.d.ts +41 -0
  289. package/dist/design/audit/reference/judge/rank.d.ts.map +1 -0
  290. package/dist/design/audit/reference/judge/rank.js +196 -0
  291. package/dist/design/audit/reference/judge/rank.js.map +1 -0
  292. package/dist/design/audit/reference/judge/text-judge.d.ts +31 -0
  293. package/dist/design/audit/reference/judge/text-judge.d.ts.map +1 -0
  294. package/dist/design/audit/reference/judge/text-judge.js +43 -0
  295. package/dist/design/audit/reference/judge/text-judge.js.map +1 -0
  296. package/dist/design/audit/reference/judge/vision-judge.d.ts +59 -0
  297. package/dist/design/audit/reference/judge/vision-judge.d.ts.map +1 -0
  298. package/dist/design/audit/reference/judge/vision-judge.js +150 -0
  299. package/dist/design/audit/reference/judge/vision-judge.js.map +1 -0
  300. package/dist/design/audit/reference/judge/vision-model.d.ts +65 -0
  301. package/dist/design/audit/reference/judge/vision-model.d.ts.map +1 -0
  302. package/dist/design/audit/reference/judge/vision-model.js +110 -0
  303. package/dist/design/audit/reference/judge/vision-model.js.map +1 -0
  304. package/dist/design/audit/reference/pipeline/evaluate-reference.d.ts +68 -0
  305. package/dist/design/audit/reference/pipeline/evaluate-reference.d.ts.map +1 -0
  306. package/dist/design/audit/reference/pipeline/evaluate-reference.js +52 -0
  307. package/dist/design/audit/reference/pipeline/evaluate-reference.js.map +1 -0
  308. package/dist/design/audit/reference/reference-context.d.ts +31 -0
  309. package/dist/design/audit/reference/reference-context.d.ts.map +1 -0
  310. package/dist/design/audit/reference/reference-context.js +73 -0
  311. package/dist/design/audit/reference/reference-context.js.map +1 -0
  312. package/dist/design/audit/reference/retrieval/embedding-hash.d.ts +30 -0
  313. package/dist/design/audit/reference/retrieval/embedding-hash.d.ts.map +1 -0
  314. package/dist/design/audit/reference/retrieval/embedding-hash.js +87 -0
  315. package/dist/design/audit/reference/retrieval/embedding-hash.js.map +1 -0
  316. package/dist/design/audit/reference/retrieval/embedding-openai.d.ts +38 -0
  317. package/dist/design/audit/reference/retrieval/embedding-openai.d.ts.map +1 -0
  318. package/dist/design/audit/reference/retrieval/embedding-openai.js +73 -0
  319. package/dist/design/audit/reference/retrieval/embedding-openai.js.map +1 -0
  320. package/dist/design/audit/reference/retrieval/matcher.d.ts +34 -0
  321. package/dist/design/audit/reference/retrieval/matcher.d.ts.map +1 -0
  322. package/dist/design/audit/reference/retrieval/matcher.js +107 -0
  323. package/dist/design/audit/reference/retrieval/matcher.js.map +1 -0
  324. package/dist/design/audit/reference/run.d.ts +59 -0
  325. package/dist/design/audit/reference/run.d.ts.map +1 -0
  326. package/dist/design/audit/reference/run.js +99 -0
  327. package/dist/design/audit/reference/run.js.map +1 -0
  328. package/dist/design/audit/report.d.ts +35 -0
  329. package/dist/design/audit/report.d.ts.map +1 -0
  330. package/dist/design/audit/report.js +195 -0
  331. package/dist/design/audit/report.js.map +1 -0
  332. package/dist/design/audit/tokens/extract.d.ts +71 -0
  333. package/dist/design/audit/tokens/extract.d.ts.map +1 -0
  334. package/dist/design/audit/tokens/extract.js +1034 -0
  335. package/dist/design/audit/tokens/extract.js.map +1 -0
  336. package/dist/design/audit/types.d.ts +8 -0
  337. package/dist/design/audit/types.d.ts.map +1 -1
  338. package/dist/design/compare.d.ts.map +1 -1
  339. package/dist/design/compare.js +2 -6
  340. package/dist/design/compare.js.map +1 -1
  341. package/dist/design/cookie-consent.d.ts +3 -0
  342. package/dist/design/cookie-consent.d.ts.map +1 -0
  343. package/dist/design/cookie-consent.js +26 -0
  344. package/dist/design/cookie-consent.js.map +1 -0
  345. package/dist/design/viewports.d.ts +18 -0
  346. package/dist/design/viewports.d.ts.map +1 -0
  347. package/dist/design/viewports.js +10 -0
  348. package/dist/design/viewports.js.map +1 -0
  349. package/dist/index.d.ts +2 -2
  350. package/dist/index.d.ts.map +1 -1
  351. package/dist/index.js +1 -1
  352. package/dist/index.js.map +1 -1
  353. package/dist/memory/store.d.ts +19 -1
  354. package/dist/memory/store.d.ts.map +1 -1
  355. package/dist/memory/store.js +47 -0
  356. package/dist/memory/store.js.map +1 -1
  357. package/dist/provider-defaults.d.ts +18 -0
  358. package/dist/provider-defaults.d.ts.map +1 -1
  359. package/dist/provider-defaults.js +33 -0
  360. package/dist/provider-defaults.js.map +1 -1
  361. package/dist/runner/allowed-domains.d.ts +11 -0
  362. package/dist/runner/allowed-domains.d.ts.map +1 -0
  363. package/dist/runner/allowed-domains.js +14 -0
  364. package/dist/runner/allowed-domains.js.map +1 -0
  365. package/dist/runner/batch-fill.d.ts +28 -0
  366. package/dist/runner/batch-fill.d.ts.map +1 -0
  367. package/dist/runner/batch-fill.js +80 -0
  368. package/dist/runner/batch-fill.js.map +1 -0
  369. package/dist/runner/completion-policy.d.ts +26 -0
  370. package/dist/runner/completion-policy.d.ts.map +1 -0
  371. package/dist/runner/completion-policy.js +76 -0
  372. package/dist/runner/completion-policy.js.map +1 -0
  373. package/dist/runner/constants.d.ts +14 -0
  374. package/dist/runner/constants.d.ts.map +1 -0
  375. package/dist/runner/constants.js +23 -0
  376. package/dist/runner/constants.js.map +1 -0
  377. package/dist/runner/decision-screenshot.d.ts +24 -0
  378. package/dist/runner/decision-screenshot.d.ts.map +1 -0
  379. package/dist/runner/decision-screenshot.js +23 -0
  380. package/dist/runner/decision-screenshot.js.map +1 -0
  381. package/dist/runner/domain-boundary.d.ts +36 -0
  382. package/dist/runner/domain-boundary.d.ts.map +1 -0
  383. package/dist/runner/domain-boundary.js +81 -0
  384. package/dist/runner/domain-boundary.js.map +1 -0
  385. package/dist/runner/effect-verify.d.ts +28 -0
  386. package/dist/runner/effect-verify.d.ts.map +1 -0
  387. package/dist/runner/effect-verify.js +42 -0
  388. package/dist/runner/effect-verify.js.map +1 -0
  389. package/dist/runner/execute-plan.d.ts +58 -0
  390. package/dist/runner/execute-plan.d.ts.map +1 -0
  391. package/dist/runner/execute-plan.js +426 -0
  392. package/dist/runner/execute-plan.js.map +1 -0
  393. package/dist/runner/max-turns-extension.d.ts +19 -0
  394. package/dist/runner/max-turns-extension.d.ts.map +1 -0
  395. package/dist/runner/max-turns-extension.js +25 -0
  396. package/dist/runner/max-turns-extension.js.map +1 -0
  397. package/dist/runner/micro-plan.d.ts +11 -0
  398. package/dist/runner/micro-plan.d.ts.map +1 -0
  399. package/dist/runner/micro-plan.js +29 -0
  400. package/dist/runner/micro-plan.js.map +1 -0
  401. package/dist/runner/prompt-snippets.d.ts +5 -0
  402. package/dist/runner/prompt-snippets.d.ts.map +1 -0
  403. package/dist/runner/prompt-snippets.js +13 -0
  404. package/dist/runner/prompt-snippets.js.map +1 -0
  405. package/dist/runner/replay/contracts.d.ts +300 -0
  406. package/dist/runner/replay/contracts.d.ts.map +1 -0
  407. package/dist/runner/replay/contracts.js +42 -0
  408. package/dist/runner/replay/contracts.js.map +1 -0
  409. package/dist/runner/replay/controller.d.ts +27 -0
  410. package/dist/runner/replay/controller.d.ts.map +1 -0
  411. package/dist/runner/replay/controller.js +197 -0
  412. package/dist/runner/replay/controller.js.map +1 -0
  413. package/dist/runner/replay/guard.d.ts +28 -0
  414. package/dist/runner/replay/guard.d.ts.map +1 -0
  415. package/dist/runner/replay/guard.js +100 -0
  416. package/dist/runner/replay/guard.js.map +1 -0
  417. package/dist/runner/runner.d.ts +44 -51
  418. package/dist/runner/runner.d.ts.map +1 -1
  419. package/dist/runner/runner.js +155 -851
  420. package/dist/runner/runner.js.map +1 -1
  421. package/dist/runner/scout-feedback.d.ts +51 -0
  422. package/dist/runner/scout-feedback.d.ts.map +1 -0
  423. package/dist/runner/scout-feedback.js +149 -0
  424. package/dist/runner/scout-feedback.js.map +1 -0
  425. package/dist/skills/macro-loader.d.ts +1 -1
  426. package/dist/test-runner.d.ts.map +1 -1
  427. package/dist/test-runner.js +25 -0
  428. package/dist/test-runner.js.map +1 -1
  429. package/dist/types/actions.d.ts +241 -0
  430. package/dist/types/actions.d.ts.map +1 -0
  431. package/dist/types/actions.js +5 -0
  432. package/dist/types/actions.js.map +1 -0
  433. package/dist/types/config.d.ts +211 -0
  434. package/dist/types/config.d.ts.map +1 -0
  435. package/dist/types/config.js +2 -0
  436. package/dist/types/config.js.map +1 -0
  437. package/dist/types/design-audit.d.ts +92 -0
  438. package/dist/types/design-audit.d.ts.map +1 -0
  439. package/dist/types/design-audit.js +5 -0
  440. package/dist/types/design-audit.js.map +1 -0
  441. package/dist/types/design-tokens.d.ts +138 -0
  442. package/dist/types/design-tokens.d.ts.map +1 -0
  443. package/dist/types/design-tokens.js +5 -0
  444. package/dist/types/design-tokens.js.map +1 -0
  445. package/dist/types/page.d.ts +16 -0
  446. package/dist/types/page.d.ts.map +1 -0
  447. package/dist/types/page.js +2 -0
  448. package/dist/types/page.js.map +1 -0
  449. package/dist/types/plan.d.ts +50 -0
  450. package/dist/types/plan.d.ts.map +1 -0
  451. package/dist/types/plan.js +2 -0
  452. package/dist/types/plan.js.map +1 -0
  453. package/dist/types/preview.d.ts +9 -0
  454. package/dist/types/preview.d.ts.map +1 -0
  455. package/dist/types/preview.js +5 -0
  456. package/dist/types/preview.js.map +1 -0
  457. package/dist/types/result.d.ts +62 -0
  458. package/dist/types/result.d.ts.map +1 -0
  459. package/dist/types/result.js +2 -0
  460. package/dist/types/result.js.map +1 -0
  461. package/dist/types/scenario.d.ts +20 -0
  462. package/dist/types/scenario.d.ts.map +1 -0
  463. package/dist/types/scenario.js +5 -0
  464. package/dist/types/scenario.js.map +1 -0
  465. package/dist/types/test-runner.d.ts +145 -0
  466. package/dist/types/test-runner.d.ts.map +1 -0
  467. package/dist/types/test-runner.js +10 -0
  468. package/dist/types/test-runner.js.map +1 -0
  469. package/dist/types/trajectory.d.ts +38 -0
  470. package/dist/types/trajectory.d.ts.map +1 -0
  471. package/dist/types/trajectory.js +2 -0
  472. package/dist/types/trajectory.js.map +1 -0
  473. package/dist/types/turn.d.ts +50 -0
  474. package/dist/types/turn.d.ts.map +1 -0
  475. package/dist/types/turn.js +2 -0
  476. package/dist/types/turn.js.map +1 -0
  477. package/dist/types.d.ts +16 -1017
  478. package/dist/types.d.ts.map +1 -1
  479. package/dist/types.js +15 -8
  480. package/dist/types.js.map +1 -1
  481. package/dist/wallet/rpc-interception.d.ts +15 -0
  482. package/dist/wallet/rpc-interception.d.ts.map +1 -0
  483. package/dist/wallet/rpc-interception.js +95 -0
  484. package/dist/wallet/rpc-interception.js.map +1 -0
  485. package/package.json +6 -2
@@ -0,0 +1,391 @@
1
+ /**
2
+ * Transport layer for the Brain decision engine: provider/model-name
3
+ * resolution, lazy (cached) model-client instantiation, and the single
4
+ * `generate()` round-trip every Brain method funnels through.
5
+ *
6
+ * Extracted from brain/index.ts via the delegate + host-interface pattern.
7
+ * The Brain class keeps thin delegators; these free functions hold the method
8
+ * bodies verbatim and read Brain state through {@link BrainModelHost}. tsc
9
+ * proves the host surface is complete because Brain `implements` it.
10
+ */
11
+ import { generateText, streamText } from 'ai';
12
+ import { resolveProviderApiKey, resolveProviderModelName, isClaudeCodeRoutedModel, shouldSendTemperature, ZAI_OPENAI_BASE_URL, ZAI_ANTHROPIC_BASE_URL, } from '../provider-defaults.js';
13
+ import { generateWithSandboxBackend } from '../providers/sandbox-backend.js';
14
+ import { JSON_TEXT_OUTPUT, createForceNonStreamingFetch } from './provider-fetch.js';
15
+ export function resolveModelNameImpl(self, provider, requestedModel) {
16
+ return resolveProviderModelName(provider, requestedModel, {
17
+ sandboxBackendType: provider === 'sandbox-backend' ? self.sandboxBackendType : undefined,
18
+ });
19
+ }
20
+ export function shouldSendTemperatureImpl(self, modelName = self.modelName) {
21
+ // Reasoning models reject an explicit temperature — see the shared
22
+ // capability check (GPT-5, o-series, Opus 4.8+, Kimi K2.6+, DeepSeek
23
+ // reasoner).
24
+ return shouldSendTemperature(modelName);
25
+ }
26
+ export function generationOptionsImpl(self, maxOutputTokens, selection) {
27
+ const providerName = selection?.provider || self.provider;
28
+ const modelName = resolveModelNameImpl(self, providerName, selection?.model || self.modelName);
29
+ // CLI-spawning providers (codex-cli, claude-code, and zai-coding-plan
30
+ // when routed through claude-code) don't accept maxOutputTokens through
31
+ // the AI SDK shape — the subprocess controls its own output.
32
+ const isCliSpawning = providerName === 'codex-cli' ||
33
+ providerName === 'claude-code' ||
34
+ providerName === 'sandbox-backend' ||
35
+ (providerName === 'zai-coding-plan' && isClaudeCodeRoutedModel(modelName));
36
+ const omitsLegacyMaxTokens = providerName === 'cli-bridge' || /(^|\/)gpt-5(?:[.-]|$)/i.test(modelName);
37
+ return {
38
+ ...(shouldSendTemperatureImpl(self, modelName) ? { temperature: 0 } : {}),
39
+ ...(isCliSpawning || omitsLegacyMaxTokens ? {} : { maxOutputTokens }),
40
+ // forceReasoning routes the AI SDK to OpenAI's Responses API
41
+ // (`/v1/responses`). Most third-party OpenAI-compatible proxies
42
+ // (router.tangle.tools, LiteLLM, Together, vLLM, etc.) only implement
43
+ // /v1/chat/completions — Responses API requests come back 503 / 4xx
44
+ // and the SDK throws "Invalid JSON response". Disable on proxied
45
+ // openai routes; only OpenAI direct supports the Responses API today.
46
+ ...(providerName === 'openai'
47
+ && /(^|\/)gpt-5(?:[.-]|$)/i.test(modelName)
48
+ && !isProxiedOpenAIImpl(self, providerName)
49
+ ? {
50
+ providerOptions: {
51
+ openai: {
52
+ forceReasoning: true,
53
+ maxCompletionTokens: maxOutputTokens,
54
+ },
55
+ },
56
+ }
57
+ : {}),
58
+ };
59
+ }
60
+ /**
61
+ * True iff we're hitting an OpenAI-compatible *proxy* (router.tangle.tools,
62
+ * LiteLLM, etc.) rather than OpenAI direct. Used to downshift to the lowest
63
+ * common denominator API surface — chat-completions, no Responses API,
64
+ * non-streaming — that every OpenAI-compatible proxy is guaranteed to serve.
65
+ *
66
+ * The single source of truth for "we're talking to a proxy, be conservative
67
+ * about API features"; both `createForceNonStreamingFetch()` and the
68
+ * `forceReasoning` gate route through this predicate.
69
+ */
70
+ export function isProxiedOpenAIImpl(self, providerName) {
71
+ return providerName === 'openai' && Boolean(self.baseUrl);
72
+ }
73
+ /** Get a LLM model instance, optionally with provider/model override (e.g. for CAPTCHA fallback) */
74
+ export async function getLanguageModelImpl(self, selection) {
75
+ return getModelImpl(self, selection);
76
+ }
77
+ /** Lazily create the LLM model instance based on provider config */
78
+ export async function getModelImpl(self, selection) {
79
+ const providerName = selection?.provider || self.provider;
80
+ const modelName = resolveModelNameImpl(self, providerName, selection?.model || self.modelName);
81
+ const apiKey = resolveProviderApiKey(providerName, self.explicitApiKey);
82
+ const cacheKey = `${providerName}:${modelName}`;
83
+ const cached = self.modelCache.get(cacheKey);
84
+ if (cached)
85
+ return cached;
86
+ let model;
87
+ switch (providerName) {
88
+ case 'anthropic': {
89
+ const { createAnthropic } = await import('@ai-sdk/anthropic');
90
+ const provider = createAnthropic({
91
+ apiKey,
92
+ ...(self.baseUrl ? { baseURL: self.baseUrl } : {}),
93
+ });
94
+ model = provider(modelName);
95
+ break;
96
+ }
97
+ case 'google': {
98
+ const { createGoogleGenerativeAI } = await import('@ai-sdk/google');
99
+ const provider = createGoogleGenerativeAI({
100
+ apiKey,
101
+ ...(self.baseUrl ? { baseURL: self.baseUrl } : {}),
102
+ });
103
+ model = provider(modelName);
104
+ break;
105
+ }
106
+ case 'cli-bridge': {
107
+ const { createOpenAI } = await import('@ai-sdk/openai');
108
+ const rawUrl = self.baseUrl || process.env.CLI_BRIDGE_URL;
109
+ if (!rawUrl) {
110
+ throw new Error('cli-bridge provider requires CLI_BRIDGE_URL or --base-url');
111
+ }
112
+ const baseURL = rawUrl.endsWith('/v1') ? rawUrl : `${rawUrl.replace(/\/+$/, '')}/v1`;
113
+ const provider = createOpenAI({
114
+ apiKey: apiKey || '',
115
+ baseURL,
116
+ });
117
+ model = provider.chat(modelName);
118
+ break;
119
+ }
120
+ case 'codex-cli': {
121
+ const { codexExec } = await import('ai-sdk-provider-codex-cli');
122
+ const env = {};
123
+ if (apiKey)
124
+ env.OPENAI_API_KEY = apiKey;
125
+ model = codexExec(modelName, {
126
+ allowNpx: process.env.CODEX_ALLOW_NPX !== '0',
127
+ skipGitRepoCheck: true,
128
+ ...(process.env.CODEX_CLI_PATH ? { codexPath: process.env.CODEX_CLI_PATH } : {}),
129
+ ...(Object.keys(env).length > 0 ? { env } : {}),
130
+ });
131
+ break;
132
+ }
133
+ case 'claude-code': {
134
+ const { createClaudeCode } = await import('ai-sdk-provider-claude-code');
135
+ const env = {};
136
+ if (apiKey)
137
+ env.ANTHROPIC_API_KEY = apiKey;
138
+ const provider = createClaudeCode({
139
+ defaultSettings: {
140
+ ...(process.env.CLAUDE_CODE_CLI_PATH ? { pathToClaudeCodeExecutable: process.env.CLAUDE_CODE_CLI_PATH } : {}),
141
+ permissionMode: 'default',
142
+ allowDangerouslySkipPermissions: false,
143
+ // The Claude Code SDK only forwards image parts when streaming input
144
+ // is on; the vision-judge wiring sets this so completeVision images
145
+ // are not silently dropped. Left off for every other claude-code path.
146
+ ...(self.claudeCodeStreamingInput ? { streamingInput: 'always' } : {}),
147
+ ...(self.debug ? { verbose: true } : {}),
148
+ ...(self.debug
149
+ ? {
150
+ stderr: (chunk) => {
151
+ const line = chunk.trim();
152
+ if (line)
153
+ console.error(`[claude-code] ${line}`);
154
+ },
155
+ }
156
+ : {}),
157
+ ...(Object.keys(env).length > 0 ? { env } : {}),
158
+ },
159
+ });
160
+ model = provider(modelName);
161
+ break;
162
+ }
163
+ case 'zai-coding-plan': {
164
+ // Z.ai coding plan: GLM models (glm-4.6, glm-4.5-air) at a fraction
165
+ // of Anthropic prices. Two backends:
166
+ // 1. Default — OpenAI-compatible endpoint, native GLM models
167
+ // 2. claude-code routed — spawn the Claude Code CLI subprocess
168
+ // with ANTHROPIC_BASE_URL/AUTH_TOKEN env vars pointed at Z.ai's
169
+ // Anthropic-compatible endpoint. The user gets the Claude Code
170
+ // agent loop with Z.ai pricing.
171
+ if (!apiKey) {
172
+ throw new Error('zai-coding-plan: API key required (set ZAI_API_KEY env var or pass --api-key)');
173
+ }
174
+ if (isClaudeCodeRoutedModel(modelName)) {
175
+ const { createClaudeCode } = await import('ai-sdk-provider-claude-code');
176
+ const env = {
177
+ // Override Claude Code's API base + auth at the env-var level.
178
+ // The CLI subprocess inherits these and routes all Anthropic
179
+ // API calls to Z.ai's Anthropic-compatible endpoint.
180
+ ANTHROPIC_BASE_URL: ZAI_ANTHROPIC_BASE_URL,
181
+ ANTHROPIC_AUTH_TOKEN: apiKey,
182
+ // Some Claude Code versions still read ANTHROPIC_API_KEY — set
183
+ // both so we don't depend on which env var name wins.
184
+ ANTHROPIC_API_KEY: apiKey,
185
+ };
186
+ const provider = createClaudeCode({
187
+ defaultSettings: {
188
+ ...(process.env.CLAUDE_CODE_CLI_PATH ? { pathToClaudeCodeExecutable: process.env.CLAUDE_CODE_CLI_PATH } : {}),
189
+ permissionMode: 'default',
190
+ allowDangerouslySkipPermissions: false,
191
+ ...(self.debug ? { verbose: true } : {}),
192
+ ...(self.debug
193
+ ? {
194
+ stderr: (chunk) => {
195
+ const line = chunk.trim();
196
+ if (line)
197
+ console.error(`[zai-claude-code] ${line}`);
198
+ },
199
+ }
200
+ : {}),
201
+ env,
202
+ },
203
+ });
204
+ // The Claude Code SDK takes a model alias (sonnet/haiku/opus); when
205
+ // the user passes a glm-* name we just hand it through — Claude
206
+ // Code passes it as the model param to the upstream API, which is
207
+ // Z.ai's Anthropic-compat endpoint that maps it to the right glm.
208
+ // For 'claude-code'/'cc' we default to 'sonnet' which Z.ai aliases
209
+ // to its strongest glm model under the coding plan.
210
+ const ccModel = modelName === 'claude-code' || modelName === 'cc' ? 'sonnet' : modelName;
211
+ model = provider(ccModel);
212
+ break;
213
+ }
214
+ // Default path — direct OpenAI-compatible API to Z.ai. Z.ai's
215
+ // paas/v4 endpoint only implements `/chat/completions` (no
216
+ // `/responses`), so we MUST use `provider.chat(model)` rather than
217
+ // the bare `provider(model)` call which now defaults to the new
218
+ // OpenAI Responses API in @ai-sdk/openai v3+.
219
+ const { createOpenAI } = await import('@ai-sdk/openai');
220
+ const provider = createOpenAI({
221
+ apiKey,
222
+ baseURL: ZAI_OPENAI_BASE_URL,
223
+ });
224
+ model = provider.chat(modelName);
225
+ break;
226
+ }
227
+ default: {
228
+ // 'openai' or any OpenAI-compatible API (LiteLLM, Together, etc.).
229
+ // Same reason as the zai-coding-plan branch above: most third-party
230
+ // OpenAI-compatible proxies (LiteLLM, vLLM, Together) implement
231
+ // `/chat/completions` but not the new `/responses` API. Use the
232
+ // chat factory explicitly so we hit a path the upstream actually
233
+ // serves.
234
+ const { createOpenAI } = await import('@ai-sdk/openai');
235
+ const usingProxy = isProxiedOpenAIImpl(self, providerName);
236
+ const provider = createOpenAI({
237
+ apiKey: apiKey || '',
238
+ ...(self.baseUrl ? { baseURL: self.baseUrl } : {}),
239
+ // Proxy downshift — see isProxiedOpenAI(). Routes like
240
+ // router.tangle.tools default chat-completions to SSE when the
241
+ // client omits `stream`, and the AI SDK's generateText errors with
242
+ // "Invalid JSON response" on SSE. Force stream: false on every
243
+ // chat-completions body. Paired with the forceReasoning gate in
244
+ // generationOptions() so all "talk to a proxy" downshifts share
245
+ // one predicate.
246
+ ...(usingProxy ? { fetch: createForceNonStreamingFetch() } : {}),
247
+ });
248
+ model = provider.chat(modelName);
249
+ break;
250
+ }
251
+ }
252
+ self.modelCache.set(cacheKey, model);
253
+ return model;
254
+ }
255
+ export async function generateImpl(self, system, messages, selection, maxOutputTokens = 800) {
256
+ const providerName = selection?.provider || self.provider;
257
+ const modelName = resolveModelNameImpl(self, providerName, selection?.model || self.modelName);
258
+ // Sandbox backend doesn't accept structured system messages — flatten.
259
+ const systemForSandbox = typeof system === 'string'
260
+ ? system
261
+ : system.map(m => m.content).join('\n\n');
262
+ if (providerName === 'sandbox-backend') {
263
+ const result = await generateWithSandboxBackend({
264
+ system: systemForSandbox,
265
+ messages,
266
+ model: modelName,
267
+ timeoutMs: self.llmTimeoutMs,
268
+ debug: self.debug,
269
+ backendType: self.sandboxBackendType,
270
+ backendProfile: self.sandboxBackendProfile,
271
+ backendModelProvider: self.sandboxBackendProvider,
272
+ });
273
+ return { text: result.text };
274
+ }
275
+ const model = await getModelImpl(self, {
276
+ provider: providerName,
277
+ model: modelName,
278
+ });
279
+ // Anthropic supports structured system messages with cache_control. For
280
+ // every other provider, flatten back to a string — they ignore the array
281
+ // form's per-message provider options anyway, and some (claude-code,
282
+ // codex-cli) wrap their own subprocess CLI which only takes plain text.
283
+ const systemForRequest = providerName === 'anthropic' || typeof system === 'string'
284
+ ? system
285
+ : systemForSandbox;
286
+ const generationSettings = {
287
+ model,
288
+ system: systemForRequest,
289
+ messages,
290
+ ...(providerName === 'cli-bridge' ? { output: JSON_TEXT_OUTPUT } : {}),
291
+ ...generationOptionsImpl(self, maxOutputTokens, { provider: providerName, model: modelName }),
292
+ abortSignal: AbortSignal.timeout(self.llmTimeoutMs),
293
+ };
294
+ const result = providerName === 'cli-bridge'
295
+ ? await (async () => {
296
+ const streamed = streamText(generationSettings);
297
+ const [text, usage, providerMetadata] = await Promise.all([
298
+ streamed.text,
299
+ streamed.totalUsage,
300
+ streamed.providerMetadata,
301
+ ]);
302
+ return { text, usage, providerMetadata };
303
+ })()
304
+ : await generateText(generationSettings);
305
+ // Extract prompt-cache stats from the AI SDK's PROVIDER-AGNOSTIC fields:
306
+ // result.usage.inputTokenDetails.{cacheReadTokens, cacheWriteTokens}
307
+ //
308
+ // These flow uniformly from every provider that supports prompt caching:
309
+ // - OpenAI (gpt-5.4, gpt-4.1-mini): AUTOMATIC server-side caching for
310
+ // >1024 token prefixes, no markers needed. Returns cached_tokens.
311
+ // - Anthropic (claude-*): EXPLICIT cache_control markers required (we
312
+ // set them in buildSystemForDecide). Returns cache_read_input_tokens.
313
+ // - ZAI / GLM (zai-coding-plan via OpenAI-compatible endpoint): AUTOMATIC
314
+ // server-side caching, returns cached_tokens in prompt_tokens_details.
315
+ // - Google Gemini: explicit `cachedContent` ID-based caching (different
316
+ // paradigm — not currently exercised).
317
+ //
318
+ // The unified inputTokenDetails fields mean we get cache observability
319
+ // for free across providers without per-provider extraction code.
320
+ const inputDetails = result.usage?.inputTokenDetails;
321
+ let cacheReadInputTokens = typeof inputDetails?.cacheReadTokens === 'number'
322
+ ? inputDetails.cacheReadTokens
323
+ : undefined;
324
+ let cacheCreationInputTokens = typeof inputDetails?.cacheWriteTokens === 'number'
325
+ ? inputDetails.cacheWriteTokens
326
+ : undefined;
327
+ // Fallback: some providers expose cache stats only via providerMetadata.
328
+ // Anthropic uses cacheReadInputTokens / cacheCreationInputTokens directly,
329
+ // OpenAI sometimes lands cached_tokens under providerMetadata.openai.
330
+ if (cacheReadInputTokens === undefined || cacheCreationInputTokens === undefined) {
331
+ const meta = result.providerMetadata;
332
+ const anthropicMeta = meta?.anthropic;
333
+ const openaiMeta = meta?.openai;
334
+ if (cacheReadInputTokens === undefined) {
335
+ const fromAnthropic = typeof anthropicMeta?.cacheReadInputTokens === 'number'
336
+ ? anthropicMeta.cacheReadInputTokens
337
+ : undefined;
338
+ const fromOpenAI = typeof openaiMeta?.cachedPromptTokens === 'number'
339
+ ? openaiMeta.cachedPromptTokens
340
+ : undefined;
341
+ cacheReadInputTokens = fromAnthropic ?? fromOpenAI;
342
+ }
343
+ if (cacheCreationInputTokens === undefined) {
344
+ const fromAnthropic = typeof anthropicMeta?.cacheCreationInputTokens === 'number'
345
+ ? anthropicMeta.cacheCreationInputTokens
346
+ : undefined;
347
+ cacheCreationInputTokens = fromAnthropic;
348
+ }
349
+ }
350
+ return {
351
+ text: result.text,
352
+ tokensUsed: result.usage?.totalTokens,
353
+ inputTokens: result.usage?.inputTokens ?? undefined,
354
+ outputTokens: result.usage?.outputTokens ?? undefined,
355
+ cacheReadInputTokens,
356
+ cacheCreationInputTokens,
357
+ };
358
+ }
359
+ /**
360
+ * Generic text-completion entry point for non-agent uses (GEPA reflective
361
+ * mutation, ad-hoc rubric authoring, knowledge distillation). Returns the
362
+ * raw text + token usage; callers parse JSON themselves.
363
+ *
364
+ * No tool use, no decode-loop heuristics — just a single round-trip through
365
+ * the configured provider/model.
366
+ */
367
+ export async function completeImpl(self, system, user, options = {}) {
368
+ const result = await generateImpl(self, system, [{ role: 'user', content: user }], undefined, options.maxOutputTokens ?? 1500);
369
+ return { text: result.text, tokensUsed: result.tokensUsed };
370
+ }
371
+ /**
372
+ * Multimodal sibling of {@link completeImpl}: a single round-trip with a system
373
+ * prompt, a user prompt, and one-or-more already-encoded images. The narrow
374
+ * vision seam the reference-grounded taste judge binds to (one Brain per
375
+ * `{ provider, model }` ref), built on the same `generate` so it goes through
376
+ * the existing provider abstraction — any vision-capable backend works.
377
+ *
378
+ * Images arrive ENCODED (`{ image, mediaType }`, base64/data); the disk read +
379
+ * mediaType inference live in the judge's `createBrainVisionModel` adapter, so
380
+ * this method does no IO. It is NOT `auditDesign` — the page-audit seam stays
381
+ * off-limits to taste comparison by contract.
382
+ */
383
+ export async function completeVisionImpl(self, system, user, images, options = {}) {
384
+ const content = [
385
+ { type: 'text', text: user },
386
+ ...images.map((img) => ({ type: 'image', image: img.image, mediaType: img.mediaType })),
387
+ ];
388
+ const result = await generateImpl(self, system, [{ role: 'user', content }], undefined, options.maxOutputTokens ?? 1500);
389
+ return { text: result.text, tokensUsed: result.tokensUsed };
390
+ }
391
+ //# sourceMappingURL=model-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-client.js","sourceRoot":"","sources":["../../src/brain/model-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Whole-task planning for the Brain engine: a single LLM call that returns a
3
+ * structured, deterministically-executable Plan (or null when the response is
4
+ * unusable, signalling the runner to fall back to the per-action loop).
5
+ *
6
+ * Extracted from brain/index.ts via the delegate + host-interface pattern.
7
+ * The Brain class keeps a thin `plan` delegator; this free function holds the
8
+ * method body verbatim and reads Brain state through {@link BrainPlanHost},
9
+ * which Brain `implements` so tsc proves the host surface is complete.
10
+ * Behavior is byte-identical — same JSON tolerance, step validation, and
11
+ * fallback shapes.
12
+ */
13
+ import type { ModelMessage, SystemModelMessage } from 'ai';
14
+ import type { PageState, Plan } from '../types.js';
15
+ import type { BrainProvider, ModelSelection, GenerateResult } from './model-client.js';
16
+ /**
17
+ * The slice of Brain state the planner reads. Brain declares
18
+ * `implements BrainPlanHost`, so a missing or mistyped member is a compile
19
+ * error — this interface IS the safety gate for the extraction. All members
20
+ * are public on Brain by construction.
21
+ */
22
+ export interface BrainPlanHost {
23
+ provider: BrainProvider;
24
+ modelName: string;
25
+ plannerModel?: string;
26
+ plannerProvider?: string;
27
+ observationMode: 'dom' | 'vision' | 'hybrid';
28
+ generate(system: string | SystemModelMessage[], messages: ModelMessage[], selection?: ModelSelection, maxOutputTokens?: number): Promise<GenerateResult>;
29
+ }
30
+ /**
31
+ * Generate a structured plan for the entire task with one LLM call.
32
+ *
33
+ * The runner executes the plan deterministically (no LLM between steps),
34
+ * falling back to per-action `decide()` only when verification fails.
35
+ * Returns null when:
36
+ * - the LLM response is unparseable JSON (fall through to per-action)
37
+ * - the plan has zero steps
38
+ * - any plan step has an invalid/unknown action shape
39
+ *
40
+ * The caller (BrowserAgent.run) treats null as "planner unavailable,
41
+ * use per-action loop".
42
+ */
43
+ export declare function planImpl(self: BrainPlanHost, goal: string, state: PageState, options?: {
44
+ maxSteps?: number;
45
+ extraContext?: string;
46
+ }): Promise<{
47
+ plan: Plan | null;
48
+ raw: string;
49
+ durationMs: number;
50
+ tokensUsed?: number;
51
+ inputTokens?: number;
52
+ outputTokens?: number;
53
+ cacheReadInputTokens?: number;
54
+ cacheCreationInputTokens?: number;
55
+ parseError?: string;
56
+ }>;
57
+ //# sourceMappingURL=plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/brain/plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,IAAI,CAAC;AAC3D,OAAO,KAAK,EAAU,SAAS,EAAE,IAAI,EAAY,MAAM,aAAa,CAAC;AAKrE,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEvF;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,aAAa,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC7C,QAAQ,CACN,MAAM,EAAE,MAAM,GAAG,kBAAkB,EAAE,EACrC,QAAQ,EAAE,YAAY,EAAE,EACxB,SAAS,CAAC,EAAE,cAAc,EAC1B,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,cAAc,CAAC,CAAC;CAC5B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,SAAS,EAChB,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GACrD,OAAO,CAAC;IACT,IAAI,EAAE,IAAI,GAAG,IAAI,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,CAAA;IAClB,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;IACjC,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAC,CAmLD"}