@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,314 @@
1
+ /**
2
+ * Artifact → existing-pipeline compatibility layer. PURE: no IO, no LLM.
3
+ *
4
+ * Two responsibilities, both expressed by REUSING the v1 audit helpers rather
5
+ * than re-implementing them — this is what lets the reference-grounded engine
6
+ * return through the unchanged `PageAuditResult` contract that stages 7-9 expect:
7
+ *
8
+ * 1. `directionToFindings` projects the winning `RedesignDirection` + the
9
+ * DNA-altitude `DnaDelta` onto the CLOSED `DesignFinding` enum as `minor`
10
+ * recommendations, then MERGES the deterministic `measurementsToFindings`
11
+ * ground truth (contrast + axe) and ROI-sorts the union via `annotateRoi` /
12
+ * `topByRoi`. Directional items are always `minor`, so the v1
13
+ * major/critical-must-carry-a-patch downgrade rule can never corrupt them;
14
+ * `contrast` / `accessibility` findings come ONLY from measurements — the
15
+ * generator is never allowed to invent them.
16
+ * 2. `toReferencePageAuditResult` maps a finished `RedesignRunResult` onto the
17
+ * `PageAuditResult` shape. It NEVER re-scores: the reported page `score` IS
18
+ * the engine's `headlineScore` — the single scoring authority (`score-core`
19
+ * off one `QualityAssessment`, already measurement-capped by
20
+ * `deriveHeadlineScore`). It does NOT borrow `conservativeScore`: there are no
21
+ * per-pass page scores in this mode, and folding the per-`Dimension` scores in
22
+ * would let an UNASSESSED placeholder (the default-budget fill, score 5 /
23
+ * confidence 'low') drag a genuine headline down to ~5 — the scoring fiction
24
+ * `score-core` was built to avoid. The rich per-dimension surface flows to
25
+ * stage 8 as `precomputedScores`, never into this headline.
26
+ */
27
+ import { measurementsToFindings } from '../../evaluate.js';
28
+ import { annotateRoi, topByRoi } from '../../roi.js';
29
+ import { clipToWord } from './text.js';
30
+ // Directional recommendations are advisory prose; bound them so an injected
31
+ // rationale can never blow up a finding into a wall of text.
32
+ const MAX_DIRECTIONAL_CHARS = 240;
33
+ const MAX_SUMMARY_CHARS = 400;
34
+ // Cap copy revisions surfaced as findings so a chatty generator can't flood the
35
+ // list; the full set always lives in the rich artifact.
36
+ const MAX_COPY_FINDINGS = 6;
37
+ // A dimension at or above this 1-10 score reads as a genuine strength.
38
+ const STRENGTH_THRESHOLD = 7;
39
+ const DIM_LABEL = {
40
+ product_intent: 'Product intent',
41
+ visual_craft: 'Visual craft',
42
+ trust_clarity: 'Trust & clarity',
43
+ workflow: 'Workflow',
44
+ content_ia: 'Content & IA',
45
+ };
46
+ function clip(s, max = MAX_DIRECTIONAL_CHARS) {
47
+ const t = s.trim().replace(/\s+/g, ' ');
48
+ return t.length > max ? `${t.slice(0, max - 1)}…` : t;
49
+ }
50
+ function directionalFinding(over) {
51
+ return {
52
+ category: over.category,
53
+ severity: 'minor',
54
+ description: clip(over.description),
55
+ location: over.location,
56
+ suggestion: clip(over.suggestion),
57
+ impact: over.impact,
58
+ effort: over.effort,
59
+ blast: over.blast,
60
+ };
61
+ }
62
+ /**
63
+ * Build the advisory "static page vs scroll-rich peers" finding, or `null`.
64
+ *
65
+ * Honest-signals gate: fires ONLY when the audited page's scroll motion was
66
+ * actually OBSERVED (capture ran) and read as NOT scroll-driven, AND at least one
67
+ * retrieved world-class exemplar was observed scroll-driven. If the page's scroll
68
+ * was never captured (`dna.motion.scroll` undefined) nothing fires — absence is
69
+ * not evidence of a static page. Computed directly from the two DNAs because
70
+ * `DnaDelta` carries no motion field.
71
+ */
72
+ function scrollMotionAdvisory(dna, hits) {
73
+ if (!dna || !hits || hits.length === 0)
74
+ return null;
75
+ const pageScroll = dna.motion.scroll;
76
+ if (!pageScroll || pageScroll.scrollDriven)
77
+ return null;
78
+ const scrollRichPeers = hits.filter((h) => h.exemplar.dna.motion.scroll?.scrollDriven === true);
79
+ if (scrollRichPeers.length === 0)
80
+ return null;
81
+ const peerIds = scrollRichPeers.slice(0, 3).map((h) => h.exemplar.id).join(', ');
82
+ // Aggregate what the peers actually show, so the advice names real interactions.
83
+ const cues = new Set();
84
+ for (const p of scrollRichPeers) {
85
+ const s = p.exemplar.dna.motion.scroll;
86
+ if (!s)
87
+ continue;
88
+ if (s.reveals.count >= 2)
89
+ cues.add('scroll reveals');
90
+ if (s.stickyCount >= 1)
91
+ cues.add('sticky section pinning');
92
+ if (s.parallax >= 0.25)
93
+ cues.add('parallax depth');
94
+ }
95
+ const cueList = [...cues].join(', ') || 'scroll-driven motion';
96
+ return directionalFinding({
97
+ category: 'ux',
98
+ description: `This page reads as static on scroll, but its world-class references (${peerIds}) use ${cueList}. Consider adding grounded scroll interaction.`,
99
+ location: 'page motion',
100
+ suggestion: `Introduce scroll-driven motion seen in the references: ${cueList}. Keep it purposeful and accessible (respect prefers-reduced-motion).`,
101
+ impact: 3,
102
+ effort: 5,
103
+ blast: 'page',
104
+ });
105
+ }
106
+ /**
107
+ * Project the winning direction + DNA gap onto `minor` `DesignFinding`s, merge
108
+ * the deterministic measurement findings, and return the ROI-sorted union.
109
+ *
110
+ * The directional categories are restricted to `typography` / `spacing` /
111
+ * `layout` / `ux` — `contrast` and `accessibility` are reserved for
112
+ * `measurementsToFindings` so a generated recommendation can never masquerade as
113
+ * a measured a11y/contrast fact.
114
+ *
115
+ * `dna` + `hits` are optional: when both are supplied an advisory scroll-motion
116
+ * finding may be minted (see {@link scrollMotionAdvisory}). Omitting them yields
117
+ * byte-identical output to the prior 3-arg behaviour.
118
+ */
119
+ export function directionToFindings(winner, gap, measurements, dna, hits) {
120
+ const directional = [];
121
+ // ── Type system ──────────────────────────────────────────────────────────
122
+ const t = winner.typeSystem;
123
+ const ratioStr = t.ratio ? `, modular ratio ~${t.ratio}×` : '';
124
+ const families = t.families.join(', ') || 'a single family';
125
+ const scale = t.scalePx.join('/') || 'a defined scale';
126
+ directional.push(directionalFinding({
127
+ category: 'typography',
128
+ description: `Adopt the "${winner.name}" type system — families ${families}, scale ${scale}px${ratioStr}. ${t.rationale}`,
129
+ location: 'page typography',
130
+ suggestion: `Apply the proposed type scale and families consistently across headings and body. ${t.rationale}`,
131
+ impact: 5,
132
+ effort: 4,
133
+ blast: 'system',
134
+ }));
135
+ // ── Colour system (no `color` enum member → `ux`; `contrast` stays measured) ─
136
+ const c = winner.colorSystem;
137
+ const accent = c.accent ? ` accent ${c.accent},` : '';
138
+ const neutrals = c.neutrals.join(' ') || 'a neutral ramp';
139
+ directional.push(directionalFinding({
140
+ category: 'ux',
141
+ description: `Restyle to the "${winner.name}" colour system — primary ${c.primary},${accent} background ${c.background}, neutrals ${neutrals}. ${c.rationale}`,
142
+ location: 'page colour system',
143
+ suggestion: `Map the proposed palette onto your colour tokens. ${c.rationale}`,
144
+ impact: 5,
145
+ effort: 4,
146
+ blast: 'system',
147
+ }));
148
+ // ── Layout / hierarchy ───────────────────────────────────────────────────
149
+ if (winner.hierarchy.length > 0 || winner.asciiLayout.trim()) {
150
+ const order = winner.hierarchy.length ? winner.hierarchy.join(' → ') : 'the proposed structure';
151
+ directional.push(directionalFinding({
152
+ category: 'layout',
153
+ description: `Restructure toward the "${winner.name}" layout: ${order}. ${winner.rationale}`,
154
+ location: 'page layout',
155
+ suggestion: `Reflow the page to the proposed information hierarchy: ${order}.`,
156
+ impact: 5,
157
+ effort: 6,
158
+ blast: 'page',
159
+ }));
160
+ }
161
+ // ── Spacing rhythm (only when the gap shows a real rhythm change) ──────────
162
+ if (gap.spacing.densityChanged || gap.spacing.baseUnitFrom !== gap.spacing.baseUnitTo) {
163
+ // Only describe a base-unit re-base when the unit actually moved. With an
164
+ // unchanged base unit the gate fired purely on density, so a "from Xpx to Xpx"
165
+ // clause would be a no-op lie — describe the real (density) delta instead.
166
+ const baseChanged = gap.spacing.baseUnitFrom !== gap.spacing.baseUnitTo;
167
+ let description;
168
+ let suggestion;
169
+ if (baseChanged) {
170
+ const from = gap.spacing.baseUnitFrom ?? 'none';
171
+ const to = gap.spacing.baseUnitTo ?? 'none';
172
+ description = `Re-base the spacing rhythm from ${from}px to ${to}px${gap.spacing.densityChanged ? ' and rebalance visual density' : ''}. ${gap.summary}`;
173
+ suggestion = `Snap padding and margins to a ${to}px grid for a consistent rhythm.`;
174
+ }
175
+ else {
176
+ description = `Rebalance the visual density of the spacing rhythm. ${gap.summary}`;
177
+ suggestion = 'Rework padding and margins to rebalance density while keeping the existing base unit.';
178
+ }
179
+ directional.push(directionalFinding({
180
+ category: 'spacing',
181
+ description,
182
+ location: 'page spacing',
183
+ suggestion,
184
+ impact: 4,
185
+ effort: 3,
186
+ blast: 'system',
187
+ }));
188
+ }
189
+ // ── Motion (only when the direction actually proposes motion) ─────────────
190
+ const m = winner.motionSpec;
191
+ if (m.cues.length > 0 || m.durationsMs.length > 0) {
192
+ const cues = m.cues.join('; ') || 'key transitions';
193
+ const durations = m.durationsMs.join('/') || 'default';
194
+ directional.push(directionalFinding({
195
+ category: 'ux',
196
+ description: `Add motion per the "${winner.name}" direction — ${cues} (${durations}ms).`,
197
+ location: 'page motion',
198
+ suggestion: `Apply the proposed motion cues: ${cues}.`,
199
+ impact: 3,
200
+ effort: 4,
201
+ blast: 'page',
202
+ }));
203
+ }
204
+ // ── Copy revisions ────────────────────────────────────────────────────────
205
+ // Drop no-op revisions (before === after after trim) BEFORE slicing so the
206
+ // suppressed rows never consume the MAX_COPY_FINDINGS budget. Genuine adds
207
+ // (before undefined) always survive.
208
+ const copyRevisions = winner.copy.filter((rev) => rev.before === undefined || rev.before.trim() !== rev.after.trim());
209
+ for (const rev of copyRevisions.slice(0, MAX_COPY_FINDINGS)) {
210
+ directional.push(directionalFinding({
211
+ category: 'ux',
212
+ description: rev.before
213
+ ? `Revise copy at ${rev.location}: "${rev.before}" → "${rev.after}".`
214
+ : `Add copy at ${rev.location}: "${rev.after}".`,
215
+ location: rev.location,
216
+ suggestion: `Use the revised copy: "${rev.after}".`,
217
+ impact: 4,
218
+ effort: 2,
219
+ blast: 'page',
220
+ }));
221
+ }
222
+ // Advisory: audited page is static on scroll but its peers are scroll-rich.
223
+ // Fires only on observed signals (see scrollMotionAdvisory).
224
+ const advisory = scrollMotionAdvisory(dna, hits);
225
+ if (advisory)
226
+ directional.push(advisory);
227
+ // Merge deterministic ground truth, then ROI-annotate + sort the union. Reuse
228
+ // — never reimplement — the v1 measurement→finding and ROI helpers.
229
+ const all = [...directional, ...measurementsToFindings(measurements)];
230
+ annotateRoi(all);
231
+ return topByRoi(all, all.length);
232
+ }
233
+ /**
234
+ * Map a finished engine run onto the v1 `PageAuditResult` so the reference mode
235
+ * flows through stages 7-9 unchanged. Pure: it shapes already-computed values
236
+ * and never issues a new scoring pass.
237
+ *
238
+ * `score` IS `result.headlineScore` — the single scoring authority. The headline
239
+ * is monotonic in the page's win-rate vs world-class exemplars and already capped
240
+ * by `deriveHeadlineScore` when measurements flag blocking issues. The per-
241
+ * `Dimension` scores are NOT folded in here: under the default judge budget they
242
+ * are UNASSESSED placeholders (`score-core`'s confidence-'low' fill), and
243
+ * averaging those into the reported number would crush a genuine headline toward
244
+ * 5. The rich dimension surface is consumed by stage 8 as `precomputedScores`
245
+ * instead. `findings` carries the already ROI-sorted set from the core.
246
+ */
247
+ export function toReferencePageAuditResult(result) {
248
+ const winner = result.artifact.directions[0];
249
+ return {
250
+ url: result.artifact.url,
251
+ score: result.headlineScore,
252
+ summary: buildSummary(result, winner),
253
+ strengths: buildStrengths(result),
254
+ findings: result.findings,
255
+ classification: result.classification,
256
+ measurements: result.measurements,
257
+ designSystemScore: result.designSystemScore,
258
+ tokensUsed: result.tokensUsed,
259
+ };
260
+ }
261
+ function buildSummary(result, winner) {
262
+ const wr = Math.round(result.quality.overallWinRate * 100);
263
+ const head = winner
264
+ ? `Reference-grounded redesign — winner "${winner.name}". ${winner.rationale}`
265
+ : 'Reference-grounded redesign produced no ranked direction.';
266
+ // Word-aware truncation: the summary must end on a clean word boundary, never
267
+ // mid-word ("…pairwise compa…"). The hard `clip` stays on the directional
268
+ // finding bodies whose snapshot text must not shift.
269
+ return clipToWord(`${head} Page wins ${wr}% of ${result.quality.comparisons} pairwise comparisons against world-class exemplars.`, MAX_SUMMARY_CHARS);
270
+ }
271
+ /**
272
+ * Render one judged dimension as a strength line. `score-core` prefixes its
273
+ * summary with the raw dimension key (`product_intent: …`); strip that so the
274
+ * human label isn't doubled (`Product intent: product_intent: …`).
275
+ */
276
+ function strengthLine(dim, s) {
277
+ const prefix = `${dim}:`;
278
+ const body = (s.summary.startsWith(prefix) ? s.summary.slice(prefix.length) : s.summary).trim();
279
+ return `${DIM_LABEL[dim]}: ${body}`;
280
+ }
281
+ function buildStrengths(result) {
282
+ // Only genuinely judge-resolved dimensions can be a strength. A dimension is
283
+ // judge-resolved iff it carries a real per-dimension win-rate; the rest are
284
+ // `score-core` placeholders (default-budget fill) and must never be promoted.
285
+ const judged = result.quality.dimensionWinRates ?? {};
286
+ const entries = Object.entries(result.dimensionScores).filter(([dim]) => judged[dim] !== undefined);
287
+ if (entries.length === 0) {
288
+ // No dimension was independently judged under this run's budget. Say so rather
289
+ // than promoting an UNASSESSED placeholder as a strength.
290
+ return ['No dimension was independently judged under this run’s budget — see the headline win-rate and findings.'];
291
+ }
292
+ // A genuine strength must actually beat world-class exemplars at least sometimes
293
+ // (win-rate > 0) AND clear the score floor. A 0%-win-rate dimension is the page's
294
+ // WEAKEST axis — it can never be a strength, regardless of its placeholder score.
295
+ const strong = entries
296
+ .filter(([dim, s]) => (judged[dim] ?? 0) > 0 && s.score >= STRENGTH_THRESHOLD)
297
+ .sort((a, b) => b[1].score - a[1].score)
298
+ .map(([dim, s]) => strengthLine(dim, s));
299
+ if (strong.length > 0)
300
+ return strong;
301
+ // Nothing clears the strength bar — surface the strongest dimension that at
302
+ // least wins SOME comparisons, honestly labelled.
303
+ const contenders = entries
304
+ .filter(([dim]) => (judged[dim] ?? 0) > 0)
305
+ .sort((a, b) => b[1].score - a[1].score);
306
+ if (contenders.length > 0) {
307
+ const [dim, s] = contenders[0];
308
+ return [`Strongest area — ${strengthLine(dim, s)}`];
309
+ }
310
+ // Every judged dimension lost every comparison (0% win-rate). Don't invent a
311
+ // strength out of the page's weakest axes.
312
+ return ['No dimension stood out against world-class exemplars — every judged dimension lost its pairwise comparisons.'];
313
+ }
314
+ //# sourceMappingURL=to-findings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"to-findings.js","sourceRoot":"","sources":["../../../../../src/design/audit/reference/artifact/to-findings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Reference-grounded engine configuration — the PURE defaults + clamped merge.
3
+ *
4
+ * Holds the frozen `DEFAULT_REFERENCE_CONFIG` (and its nested `EngineBudget`),
5
+ * the frozen `DEFAULT_RETRIEVE_WEIGHTS`, and `resolveReferenceConfig`, which
6
+ * folds operator overrides onto those defaults field-by-field and clamps the
7
+ * numeric knobs (`k`, `directionCount`, and the budget counts) to their safe
8
+ * minimums. No IO, no LLM, no env reads — fully deterministic.
9
+ *
10
+ * Design rules encoded here:
11
+ * - The defaults are the SINGLE place the engine's cost shape is decided; every
12
+ * other module receives a resolved `ReferenceGroundedConfig`, never a literal.
13
+ * - Overrides are a DEEP-partial (`budget` may be partially specified) so an
14
+ * operator can bump one knob (e.g. `judgeReps`) without restating the bundle.
15
+ * - Clamping is fail-safe, not fail-loud: a non-finite / sub-minimum override
16
+ * falls back to the default rather than producing a zero-budget run that
17
+ * would silently judge nothing.
18
+ */
19
+ import type { ReferenceGroundedConfig, EngineBudget, RetrieveWeights } from './contracts.js';
20
+ /**
21
+ * Relative blend weights for the matcher. Aesthetic similarity dominates;
22
+ * structural overlap is a secondary signal; the free-form job-to-be-done signal
23
+ * is intentionally low because `classification.intent` is noisy and is
24
+ * fabricated on `--profile` runs (see contracts `RetrieveWeights`). The
25
+ * `pageType` hard filter lives in the matcher, not in these weights.
26
+ */
27
+ export declare const DEFAULT_RETRIEVE_WEIGHTS: RetrieveWeights;
28
+ /**
29
+ * The frozen default `ReferenceGroundedConfig`. `corpusDir` is the only field an
30
+ * operator almost always overrides; the rest are tuned for the offline/text
31
+ * default path (deterministic hash embedder, text judge) so a run works with
32
+ * zero API key and zero network.
33
+ */
34
+ export declare const DEFAULT_REFERENCE_CONFIG: ReferenceGroundedConfig;
35
+ /**
36
+ * Deep-partial overrides for `resolveReferenceConfig`: every top-level field is
37
+ * optional, and `budget` is itself partial so a single budget knob can be
38
+ * overridden without restating the whole bundle.
39
+ */
40
+ export interface ReferenceConfigOverrides extends Partial<Omit<ReferenceGroundedConfig, 'budget'>> {
41
+ budget?: Partial<EngineBudget>;
42
+ }
43
+ /**
44
+ * Resolve operator overrides onto the frozen defaults: a field-by-field merge
45
+ * with the count knobs clamped to their minimums. Always returns a fresh,
46
+ * mutable config (the frozen defaults are never handed out directly), so callers
47
+ * that attach a resolved `reference` later don't mutate the shared default.
48
+ */
49
+ export declare function resolveReferenceConfig(partial?: ReferenceConfigOverrides): ReferenceGroundedConfig;
50
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/design/audit/reference/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EACV,uBAAuB,EACvB,YAAY,EACZ,eAAe,EAEhB,MAAM,gBAAgB,CAAA;AAEvB;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,EAAE,eAIrC,CAAA;AAkBF;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,EAAE,uBAgBrC,CAAA;AAEF;;;;GAIG;AACH,MAAM,WAAW,wBACf,SAAQ,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC;IACxD,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;CAC/B;AAYD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,GAAE,wBAA6B,GACrC,uBAAuB,CAsBzB"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Reference-grounded engine configuration — the PURE defaults + clamped merge.
3
+ *
4
+ * Holds the frozen `DEFAULT_REFERENCE_CONFIG` (and its nested `EngineBudget`),
5
+ * the frozen `DEFAULT_RETRIEVE_WEIGHTS`, and `resolveReferenceConfig`, which
6
+ * folds operator overrides onto those defaults field-by-field and clamps the
7
+ * numeric knobs (`k`, `directionCount`, and the budget counts) to their safe
8
+ * minimums. No IO, no LLM, no env reads — fully deterministic.
9
+ *
10
+ * Design rules encoded here:
11
+ * - The defaults are the SINGLE place the engine's cost shape is decided; every
12
+ * other module receives a resolved `ReferenceGroundedConfig`, never a literal.
13
+ * - Overrides are a DEEP-partial (`budget` may be partially specified) so an
14
+ * operator can bump one knob (e.g. `judgeReps`) without restating the bundle.
15
+ * - Clamping is fail-safe, not fail-loud: a non-finite / sub-minimum override
16
+ * falls back to the default rather than producing a zero-budget run that
17
+ * would silently judge nothing.
18
+ */
19
+ /**
20
+ * Relative blend weights for the matcher. Aesthetic similarity dominates;
21
+ * structural overlap is a secondary signal; the free-form job-to-be-done signal
22
+ * is intentionally low because `classification.intent` is noisy and is
23
+ * fabricated on `--profile` runs (see contracts `RetrieveWeights`). The
24
+ * `pageType` hard filter lives in the matcher, not in these weights.
25
+ */
26
+ export const DEFAULT_RETRIEVE_WEIGHTS = Object.freeze({
27
+ aesthetic: 0.7,
28
+ structural: 0.25,
29
+ job: 0.05,
30
+ });
31
+ /**
32
+ * The default per-run cost ceiling. Pairwise judging multiplies LLM calls, so
33
+ * every leg is capped: at most `maxGenerationCalls` directions, at most
34
+ * `maxJudgeCalls` total judge calls across the relative + absolute legs (each
35
+ * pairwise comparison = both slot orders × `judgeReps`), `concurrency` in
36
+ * flight at once. `screenThenValidate` is off by default (full reps on every
37
+ * comparison); flip it on to contain cost on larger direction sets.
38
+ */
39
+ const DEFAULT_ENGINE_BUDGET = Object.freeze({
40
+ maxGenerationCalls: 3,
41
+ maxJudgeCalls: 24,
42
+ judgeReps: 1,
43
+ concurrency: 4,
44
+ screenThenValidate: false,
45
+ });
46
+ /**
47
+ * The frozen default `ReferenceGroundedConfig`. `corpusDir` is the only field an
48
+ * operator almost always overrides; the rest are tuned for the offline/text
49
+ * default path (deterministic hash embedder, text judge) so a run works with
50
+ * zero API key and zero network.
51
+ */
52
+ export const DEFAULT_REFERENCE_CONFIG = Object.freeze({
53
+ corpusDir: 'bench/design/reference-corpus',
54
+ artifactDir: undefined,
55
+ k: 4,
56
+ directionCount: 3,
57
+ judge: 'text',
58
+ // A single sensible default vision model ⇒ a single-judge vision run when
59
+ // `judge: 'vision'` is selected without `--judge-models`. Ignored under the
60
+ // default `judge: 'text'`. One ref ⇒ single judge; many ⇒ ensemble.
61
+ // Deep-frozen: the inner ref is frozen too, so a consumer can't mutate the
62
+ // shared default (every config without an override aliases this array).
63
+ visionModels: Object.freeze([Object.freeze({ provider: 'openai', model: 'gpt-5.4' })]),
64
+ embedder: 'deterministic',
65
+ budget: DEFAULT_ENGINE_BUDGET,
66
+ reference: undefined,
67
+ model: undefined,
68
+ });
69
+ /**
70
+ * Clamp a numeric override to a minimum, falling back to `fallback` when the
71
+ * override is absent or non-finite (NaN/Infinity). Counts are rounded to the
72
+ * nearest integer first so a fractional override (`k: 2.6`) resolves sensibly.
73
+ */
74
+ function clampMin(value, min, fallback) {
75
+ if (value === undefined || !Number.isFinite(value))
76
+ return fallback;
77
+ return Math.max(min, Math.round(value));
78
+ }
79
+ /**
80
+ * Resolve operator overrides onto the frozen defaults: a field-by-field merge
81
+ * with the count knobs clamped to their minimums. Always returns a fresh,
82
+ * mutable config (the frozen defaults are never handed out directly), so callers
83
+ * that attach a resolved `reference` later don't mutate the shared default.
84
+ */
85
+ export function resolveReferenceConfig(partial = {}) {
86
+ const base = DEFAULT_REFERENCE_CONFIG;
87
+ const b = partial.budget ?? {};
88
+ const budget = {
89
+ maxGenerationCalls: clampMin(b.maxGenerationCalls, 1, base.budget.maxGenerationCalls),
90
+ maxJudgeCalls: clampMin(b.maxJudgeCalls, 1, base.budget.maxJudgeCalls),
91
+ judgeReps: clampMin(b.judgeReps, 1, base.budget.judgeReps),
92
+ concurrency: clampMin(b.concurrency, 1, base.budget.concurrency),
93
+ screenThenValidate: b.screenThenValidate ?? base.budget.screenThenValidate,
94
+ };
95
+ return {
96
+ corpusDir: partial.corpusDir ?? base.corpusDir,
97
+ artifactDir: partial.artifactDir ?? base.artifactDir,
98
+ k: clampMin(partial.k, 1, base.k),
99
+ directionCount: clampMin(partial.directionCount, 1, base.directionCount),
100
+ judge: partial.judge ?? base.judge,
101
+ visionModels: partial.visionModels ?? base.visionModels,
102
+ embedder: partial.embedder ?? base.embedder,
103
+ budget,
104
+ reference: partial.reference ?? base.reference,
105
+ model: partial.model ?? base.model,
106
+ };
107
+ }
108
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/design/audit/reference/config.ts"],"names":[],"mappings":"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"}