@tangle-network/browser-agent-driver 0.33.2 → 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 +7 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../../src/design/audit/reference/contracts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Reference-Grounded Art Director — shared contracts.
3
+ *
4
+ * This is the SINGLE source of truth for every type and module-boundary
5
+ * interface the reference engine passes between stages. It holds ZERO runtime
6
+ * logic, ZERO constants, and ZERO default values — only `type`/`interface`
7
+ * declarations and re-exports. Keeping it logic-free is what prevents it from
8
+ * becoming a god module that every core imports for behaviour rather than shape.
9
+ *
10
+ * Design rules encoded here:
11
+ * - Every cross-stage hop is typed by a record in this file, so no module
12
+ * reaches into another's internals.
13
+ * - Every IO / LLM / browser boundary is expressed as a NARROW, single-purpose
14
+ * interface (DesignDnaExtractor, CorpusReader, CorpusWriter, ExemplarMatcher,
15
+ * EmbeddingProvider, RedesignGenerator, TasteJudge, DirectionRanker). Cores
16
+ * and the orchestrator depend on these interfaces, never on concrete
17
+ * adapters. There is deliberately NO single "God" interface — each boundary
18
+ * is its own contract, and read/write surfaces are split (CorpusReader vs
19
+ * CorpusWriter) so the runtime audit path can never reach authoring mutators.
20
+ * - The engine emits the EXISTING audit contracts (DesignFinding,
21
+ * PageAuditResult, …) verbatim by re-exporting them, never redefining them,
22
+ * so the closed enums stay authoritative and stages 7-9 of the v1 pipeline
23
+ * keep working unchanged.
24
+ *
25
+ * Units are noted inline (px, ms, 0-1 ratios) so downstream math is unambiguous.
26
+ */
27
+ export {};
28
+ //# sourceMappingURL=contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../../src/design/audit/reference/contracts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Corpus authoring — reverse-engineer an `Exemplar` from a live page, and ingest a
3
+ * batch into a corpus. This is the OFFLINE authoring path (never the audit hot
4
+ * path) and the ONLY consumer of the `CorpusWriter` half of the store.
5
+ *
6
+ * Every browser/LLM/IO dependency is INJECTED through the narrow contract
7
+ * interfaces, so the whole module unit-tests with no live browser, model, or
8
+ * network:
9
+ * - `DesignDnaExtractor` turns a URL into a `DnaCapture` (the shipped adapter
10
+ * reuses `extractDesignTokens` → `toDesignDNA`; tests inject a fake);
11
+ * - `EmbeddingProvider` embeds the `aestheticDescriptor` into the retrieval
12
+ * vector (the deterministic `HashEmbeddingProvider` is the offline default);
13
+ * - `ExemplarClassifier` supplies `pageType` + `jobToBeDone` when they aren't
14
+ * authored by hand (the shipped wiring backs it with `classifyEnsemble`).
15
+ *
16
+ * Nothing here fabricates a page type: an exemplar's `pageType`/`jobToBeDone` must
17
+ * be authored explicitly OR produced by an injected classifier, otherwise the
18
+ * build fails closed.
19
+ */
20
+ import type { DesignDnaExtractor, DesignDNA, DesignTokens, EmbeddingProvider, Exemplar, ExemplarSource, CorpusWriter, MeasurementBundle, PageType } from '../contracts.js';
21
+ /**
22
+ * Seed taste rating for a freshly-authored exemplar, before any pairwise vote
23
+ * moves it. Matches `judge/rank.ts`'s `ELO_START` so corpus seeds and ranked
24
+ * directions live on one rating scale.
25
+ */
26
+ export declare const SEED_ELO = 1500;
27
+ /** Page-typing input handed to an injected classifier. */
28
+ export interface ExemplarClassifyInput {
29
+ url: string;
30
+ dna: DesignDNA;
31
+ tokens: DesignTokens;
32
+ }
33
+ /** What an injected classifier must return — the two retrieval-keying fields. */
34
+ export interface ExemplarClassification {
35
+ pageType: PageType;
36
+ jobToBeDone: string;
37
+ }
38
+ /**
39
+ * Narrow classification boundary: derive `pageType` + `jobToBeDone` from a
40
+ * captured page. Injected so the heavyweight `classifyEnsemble` (Brain + browser)
41
+ * stays out of this pure-by-injection module and tests pass a stub.
42
+ */
43
+ export interface ExemplarClassifier {
44
+ classify(input: ExemplarClassifyInput): Promise<ExemplarClassification>;
45
+ }
46
+ /** Options for authoring ONE exemplar. Deps are injected alongside the target. */
47
+ export interface BuildExemplarOptions {
48
+ url: string;
49
+ extractor: DesignDnaExtractor;
50
+ embedder: EmbeddingProvider;
51
+ /** Required unless BOTH `pageType` and `jobToBeDone` are authored explicitly. */
52
+ classifier?: ExemplarClassifier;
53
+ /** Provenance label; defaults to `'manual'`. */
54
+ source?: ExemplarSource;
55
+ /** Hand-authored page type (skips the classifier for this field). */
56
+ pageType?: PageType;
57
+ /** Hand-authored job-to-be-done (skips the classifier for this field). */
58
+ jobToBeDone?: string;
59
+ /** Seed taste rating; defaults to `SEED_ELO`. */
60
+ eloRating?: number;
61
+ outputDir?: string;
62
+ headless?: boolean;
63
+ /** Deterministic measurements folded into the DNA signals, when available. */
64
+ measurements?: MeasurementBundle;
65
+ }
66
+ /**
67
+ * Stable id from source + url. URL targets key on host+path (query/hash dropped);
68
+ * non-URL targets (a rip dir / file path) slugify raw. Deterministic and
69
+ * filename-safe.
70
+ */
71
+ export declare function exemplarId(source: ExemplarSource, url: string): string;
72
+ /**
73
+ * Reverse-engineer one `Exemplar` from a URL: extract → DNA, classify (or use the
74
+ * authored type/job), embed the aesthetic descriptor, and assemble the row. Does
75
+ * NOT persist — `ingestCorpus` owns the `CorpusWriter`. Fail-closed on a missing
76
+ * classifier and on an empty embedding.
77
+ */
78
+ export declare function buildExemplar(opts: BuildExemplarOptions): Promise<Exemplar>;
79
+ /** One target page to ingest; per-target fields override the shared `ingestCorpus` deps. */
80
+ export interface IngestTarget {
81
+ url: string;
82
+ source?: ExemplarSource;
83
+ pageType?: PageType;
84
+ jobToBeDone?: string;
85
+ eloRating?: number;
86
+ outputDir?: string;
87
+ headless?: boolean;
88
+ measurements?: MeasurementBundle;
89
+ }
90
+ /** Shared deps + targets for a batch ingest. */
91
+ export interface IngestCorpusOptions {
92
+ targets: IngestTarget[];
93
+ /** The corpus authoring sink — the only `CorpusWriter` use in the engine. */
94
+ store: CorpusWriter;
95
+ extractor: DesignDnaExtractor;
96
+ embedder: EmbeddingProvider;
97
+ classifier?: ExemplarClassifier;
98
+ /** Default source for targets that don't set one. */
99
+ source?: ExemplarSource;
100
+ }
101
+ /** Outcome of a batch ingest: ids added + per-target failures (never throws on one bad target). */
102
+ export interface IngestResult {
103
+ added: string[];
104
+ failed: {
105
+ url: string;
106
+ reason: string;
107
+ }[];
108
+ }
109
+ /**
110
+ * Author a batch of exemplars into the corpus. Each target is built, its
111
+ * screenshot relocated into the corpus, and the row upserted; a failure on one
112
+ * target is captured in `failed` and never aborts the rest.
113
+ */
114
+ export declare function ingestCorpus(opts: IngestCorpusOptions): Promise<IngestResult>;
115
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../../../src/design/audit/reference/corpus/build.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EACV,kBAAkB,EAClB,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,QAAQ,EACT,MAAM,iBAAiB,CAAA;AAGxB;;;;GAIG;AACH,eAAO,MAAM,QAAQ,OAAO,CAAA;AAE5B,0DAA0D;AAC1D,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,SAAS,CAAA;IACd,MAAM,EAAE,YAAY,CAAA;CACrB;AAED,iFAAiF;AACjF,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,QAAQ,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAA;CACxE;AAED,kFAAkF;AAClF,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,kBAAkB,CAAA;IAC7B,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,iFAAiF;IACjF,UAAU,CAAC,EAAE,kBAAkB,CAAA;IAC/B,gDAAgD;IAChD,MAAM,CAAC,EAAE,cAAc,CAAA;IACvB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,8EAA8E;IAC9E,YAAY,CAAC,EAAE,iBAAiB,CAAA;CACjC;AAUD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAStE;AAOD;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,QAAQ,CAAC,CA0CjF;AAED,4FAA4F;AAC5F,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,cAAc,CAAA;IACvB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,YAAY,CAAC,EAAE,iBAAiB,CAAA;CACjC;AAED,gDAAgD;AAChD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,6EAA6E;IAC7E,KAAK,EAAE,YAAY,CAAA;IACnB,SAAS,EAAE,kBAAkB,CAAA;IAC7B,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,UAAU,CAAC,EAAE,kBAAkB,CAAA;IAC/B,qDAAqD;IACrD,MAAM,CAAC,EAAE,cAAc,CAAA;CACxB;AAED,mGAAmG;AACnG,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAC1C;AAmBD;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC,CA6BnF"}
@@ -0,0 +1,152 @@
1
+ /**
2
+ * Corpus authoring — reverse-engineer an `Exemplar` from a live page, and ingest a
3
+ * batch into a corpus. This is the OFFLINE authoring path (never the audit hot
4
+ * path) and the ONLY consumer of the `CorpusWriter` half of the store.
5
+ *
6
+ * Every browser/LLM/IO dependency is INJECTED through the narrow contract
7
+ * interfaces, so the whole module unit-tests with no live browser, model, or
8
+ * network:
9
+ * - `DesignDnaExtractor` turns a URL into a `DnaCapture` (the shipped adapter
10
+ * reuses `extractDesignTokens` → `toDesignDNA`; tests inject a fake);
11
+ * - `EmbeddingProvider` embeds the `aestheticDescriptor` into the retrieval
12
+ * vector (the deterministic `HashEmbeddingProvider` is the offline default);
13
+ * - `ExemplarClassifier` supplies `pageType` + `jobToBeDone` when they aren't
14
+ * authored by hand (the shipped wiring backs it with `classifyEnsemble`).
15
+ *
16
+ * Nothing here fabricates a page type: an exemplar's `pageType`/`jobToBeDone` must
17
+ * be authored explicitly OR produced by an injected classifier, otherwise the
18
+ * build fails closed.
19
+ */
20
+ import { promises as fs } from 'node:fs';
21
+ import { aestheticDescriptor } from '../dna/descriptor.js';
22
+ /**
23
+ * Seed taste rating for a freshly-authored exemplar, before any pairwise vote
24
+ * moves it. Matches `judge/rank.ts`'s `ELO_START` so corpus seeds and ranked
25
+ * directions live on one rating scale.
26
+ */
27
+ export const SEED_ELO = 1500;
28
+ /** Lowercase, filename-safe slug; collapses runs of non-alphanumerics to `-`. */
29
+ function slugify(input) {
30
+ return input
31
+ .toLowerCase()
32
+ .replace(/[^a-z0-9]+/g, '-')
33
+ .replace(/^-+|-+$/g, '');
34
+ }
35
+ /**
36
+ * Stable id from source + url. URL targets key on host+path (query/hash dropped);
37
+ * non-URL targets (a rip dir / file path) slugify raw. Deterministic and
38
+ * filename-safe.
39
+ */
40
+ export function exemplarId(source, url) {
41
+ let locus = url;
42
+ try {
43
+ const u = new URL(url);
44
+ locus = `${u.hostname}${u.pathname}`;
45
+ }
46
+ catch {
47
+ // Non-URL target — slugify the raw string.
48
+ }
49
+ return slugify(`${source}-${locus}`) || slugify(String(source)) || 'exemplar';
50
+ }
51
+ /** Prefer the desktop viewport screenshot; fall back to the first available. */
52
+ function pickScreenshot(paths) {
53
+ return paths['desktop'] ?? Object.values(paths)[0] ?? '';
54
+ }
55
+ /**
56
+ * Reverse-engineer one `Exemplar` from a URL: extract → DNA, classify (or use the
57
+ * authored type/job), embed the aesthetic descriptor, and assemble the row. Does
58
+ * NOT persist — `ingestCorpus` owns the `CorpusWriter`. Fail-closed on a missing
59
+ * classifier and on an empty embedding.
60
+ */
61
+ export async function buildExemplar(opts) {
62
+ const source = opts.source ?? 'manual';
63
+ const capture = await opts.extractor.extract({
64
+ url: opts.url,
65
+ headless: opts.headless,
66
+ outputDir: opts.outputDir,
67
+ measurements: opts.measurements,
68
+ });
69
+ let pageType;
70
+ let jobToBeDone;
71
+ if (opts.pageType !== undefined && opts.jobToBeDone !== undefined) {
72
+ pageType = opts.pageType;
73
+ jobToBeDone = opts.jobToBeDone;
74
+ }
75
+ else {
76
+ if (!opts.classifier) {
77
+ throw new Error('buildExemplar: provide both pageType and jobToBeDone, or inject a classifier — page type is never fabricated');
78
+ }
79
+ const classified = await opts.classifier.classify({ url: opts.url, dna: capture.dna, tokens: capture.tokens });
80
+ pageType = opts.pageType ?? classified.pageType;
81
+ jobToBeDone = opts.jobToBeDone ?? classified.jobToBeDone;
82
+ }
83
+ const descriptor = aestheticDescriptor(capture.dna);
84
+ const [aestheticVector] = await opts.embedder.embed([descriptor]);
85
+ if (!aestheticVector || aestheticVector.length === 0) {
86
+ throw new Error('buildExemplar: embedder returned no vector for the aesthetic descriptor');
87
+ }
88
+ return {
89
+ id: exemplarId(source, opts.url),
90
+ source,
91
+ url: opts.url,
92
+ pageType,
93
+ jobToBeDone,
94
+ dna: capture.dna,
95
+ screenshotPath: pickScreenshot(capture.screenshotPaths),
96
+ aestheticVector,
97
+ eloRating: opts.eloRating ?? SEED_ELO,
98
+ };
99
+ }
100
+ /**
101
+ * Relocate a freshly-captured screenshot into the corpus via `saveScreenshot`,
102
+ * returning the corpus-relative path to store. Returns `undefined` when there is
103
+ * no readable source screenshot (a missing screenshot is non-fatal — the DNA and
104
+ * vector are the load-bearing parts of an exemplar).
105
+ */
106
+ async function relocateScreenshot(store, id, srcPath) {
107
+ if (!srcPath)
108
+ return undefined;
109
+ let png;
110
+ try {
111
+ png = await fs.readFile(srcPath);
112
+ }
113
+ catch {
114
+ return undefined;
115
+ }
116
+ return store.saveScreenshot(id, png);
117
+ }
118
+ /**
119
+ * Author a batch of exemplars into the corpus. Each target is built, its
120
+ * screenshot relocated into the corpus, and the row upserted; a failure on one
121
+ * target is captured in `failed` and never aborts the rest.
122
+ */
123
+ export async function ingestCorpus(opts) {
124
+ const added = [];
125
+ const failed = [];
126
+ for (const target of opts.targets) {
127
+ try {
128
+ const exemplar = await buildExemplar({
129
+ url: target.url,
130
+ extractor: opts.extractor,
131
+ embedder: opts.embedder,
132
+ classifier: opts.classifier,
133
+ source: target.source ?? opts.source,
134
+ pageType: target.pageType,
135
+ jobToBeDone: target.jobToBeDone,
136
+ eloRating: target.eloRating,
137
+ outputDir: target.outputDir,
138
+ headless: target.headless,
139
+ measurements: target.measurements,
140
+ });
141
+ const relocated = await relocateScreenshot(opts.store, exemplar.id, exemplar.screenshotPath);
142
+ const persisted = relocated !== undefined ? { ...exemplar, screenshotPath: relocated } : exemplar;
143
+ await opts.store.upsert(persisted);
144
+ added.push(persisted.id);
145
+ }
146
+ catch (err) {
147
+ failed.push({ url: target.url, reason: err instanceof Error ? err.message : String(err) });
148
+ }
149
+ }
150
+ return { added, failed };
151
+ }
152
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../../../src/design/audit/reference/corpus/build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Exemplar (de)serialisation + validation — the PURE corpus schema core.
3
+ *
4
+ * `parseExemplar` is the single fail-closed gate every corpus row passes through
5
+ * (on load AND before write): it validates the full `Exemplar` shape — including a
6
+ * deep `DesignDNA` walk — and returns a FRESH, whitelisted object built field by
7
+ * field. Nothing from the raw input is ever spread or assigned wholesale, so a
8
+ * hostile row carrying `__proto__` / `constructor` keys can neither pollute a
9
+ * prototype nor smuggle extra fields into the corpus; unknown keys are simply
10
+ * dropped. No `eval`, no `Function`, no dynamic require — `JSON.parse` upstream is
11
+ * the only deserialisation, and it is treated as untrusted data.
12
+ *
13
+ * `isExemplar` is the boolean guard derived from the same path; `serializeExemplar`
14
+ * is its inverse (pretty JSON, one record per file). Pure: no IO, no LLM, no
15
+ * browser; identical inputs → identical output.
16
+ */
17
+ import type { Exemplar } from '../contracts.js';
18
+ /**
19
+ * Validate and normalise one raw record into a fresh `Exemplar`, or throw a typed
20
+ * rejection. Fail-closed: a missing/ malformed `dna`, `aestheticVector`, or
21
+ * `pageType` is rejected rather than defaulted, and the result is built by
22
+ * whitelisting known fields (no spread of untrusted input → no prototype
23
+ * pollution).
24
+ */
25
+ export declare function parseExemplar(raw: unknown): Exemplar;
26
+ /** Boolean guard derived from the same validation path as `parseExemplar`. */
27
+ export declare function isExemplar(raw: unknown): raw is Exemplar;
28
+ /**
29
+ * Serialise one `Exemplar` to a stable, human-reviewable JSON string (one record
30
+ * per corpus file). Round-trips through `parseExemplar(JSON.parse(...))`.
31
+ */
32
+ export declare function serializeExemplar(e: Exemplar): string;
33
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../../src/design/audit/reference/corpus/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EACV,QAAQ,EAUT,MAAM,iBAAiB,CAAA;AAqMxB;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,QAAQ,CAgBpD;AAED,8EAA8E;AAC9E,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,QAAQ,CAOxD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,CAErD"}
@@ -0,0 +1,249 @@
1
+ /**
2
+ * Exemplar (de)serialisation + validation — the PURE corpus schema core.
3
+ *
4
+ * `parseExemplar` is the single fail-closed gate every corpus row passes through
5
+ * (on load AND before write): it validates the full `Exemplar` shape — including a
6
+ * deep `DesignDNA` walk — and returns a FRESH, whitelisted object built field by
7
+ * field. Nothing from the raw input is ever spread or assigned wholesale, so a
8
+ * hostile row carrying `__proto__` / `constructor` keys can neither pollute a
9
+ * prototype nor smuggle extra fields into the corpus; unknown keys are simply
10
+ * dropped. No `eval`, no `Function`, no dynamic require — `JSON.parse` upstream is
11
+ * the only deserialisation, and it is treated as untrusted data.
12
+ *
13
+ * `isExemplar` is the boolean guard derived from the same path; `serializeExemplar`
14
+ * is its inverse (pretty JSON, one record per file). Pure: no IO, no LLM, no
15
+ * browser; identical inputs → identical output.
16
+ */
17
+ const PAGE_TYPES = [
18
+ 'marketing',
19
+ 'saas-app',
20
+ 'dashboard',
21
+ 'docs',
22
+ 'ecommerce',
23
+ 'social',
24
+ 'tool',
25
+ 'blog',
26
+ 'utility',
27
+ 'unknown',
28
+ ];
29
+ const COLOR_ROLES = ['primary', 'secondary', 'accent', 'neutral', 'background', 'border'];
30
+ const DENSITIES = ['sparse', 'balanced', 'dense'];
31
+ const STEP_ROLES = ['display', 'heading', 'body', 'caption', 'label'];
32
+ const FONT_ROLES = ['heading', 'body', 'mono', 'display'];
33
+ const isRecord = (v) => typeof v === 'object' && v !== null && !Array.isArray(v);
34
+ const isString = (v) => typeof v === 'string';
35
+ const isBoolean = (v) => typeof v === 'boolean';
36
+ const isFiniteNumber = (v) => typeof v === 'number' && Number.isFinite(v);
37
+ const isStringArray = (v) => Array.isArray(v) && v.every(isString);
38
+ const isFiniteNumberArray = (v) => Array.isArray(v) && v.every(isFiniteNumber);
39
+ /** Throw a uniform, contextual rejection. Never returns. */
40
+ function fail(msg) {
41
+ throw new Error(`invalid exemplar: ${msg}`);
42
+ }
43
+ function asRecord(v, where) {
44
+ if (!isRecord(v))
45
+ fail(`${where} must be an object`);
46
+ return v;
47
+ }
48
+ function asString(v, where) {
49
+ if (!isString(v))
50
+ fail(`${where} must be a string`);
51
+ return v;
52
+ }
53
+ function asNonEmptyString(v, where) {
54
+ const s = asString(v, where);
55
+ if (s.length === 0)
56
+ fail(`${where} must be non-empty`);
57
+ return s;
58
+ }
59
+ function asFiniteNumber(v, where) {
60
+ if (!isFiniteNumber(v))
61
+ fail(`${where} must be a finite number`);
62
+ return v;
63
+ }
64
+ function asEnum(v, allowed, where) {
65
+ if (!isString(v) || !allowed.includes(v))
66
+ fail(`${where} must be one of ${allowed.join(', ')}`);
67
+ return v;
68
+ }
69
+ function normalizeTypeStep(raw, where) {
70
+ const r = asRecord(raw, where);
71
+ return {
72
+ fontSizePx: asFiniteNumber(r.fontSizePx, `${where}.fontSizePx`),
73
+ weight: asFiniteNumber(r.weight, `${where}.weight`),
74
+ lineHeight: asFiniteNumber(r.lineHeight, `${where}.lineHeight`),
75
+ family: asString(r.family, `${where}.family`),
76
+ role: asEnum(r.role, STEP_ROLES, `${where}.role`),
77
+ };
78
+ }
79
+ function normalizeFontRole(raw, where) {
80
+ const r = asRecord(raw, where);
81
+ if (!isFiniteNumberArray(r.weights))
82
+ fail(`${where}.weights must be a number array`);
83
+ return {
84
+ family: asString(r.family, `${where}.family`),
85
+ role: asEnum(r.role, FONT_ROLES, `${where}.role`),
86
+ weights: [...r.weights],
87
+ };
88
+ }
89
+ function asBoolean(v, where) {
90
+ if (!isBoolean(v))
91
+ fail(`${where} must be a boolean`);
92
+ return v;
93
+ }
94
+ /**
95
+ * Validate + whitelist an optional live scroll-motion record. Fail-closed (a
96
+ * malformed field is rejected, never defaulted) and built field by field so the
97
+ * honest signal round-trips through the corpus instead of being silently dropped
98
+ * on load.
99
+ */
100
+ function normalizeScrollMotion(raw) {
101
+ const s = asRecord(raw, 'dna.motion.scroll');
102
+ const revealsRaw = asRecord(s.reveals, 'dna.motion.scroll.reveals');
103
+ if (!isStringArray(revealsRaw.kinds))
104
+ fail('dna.motion.scroll.reveals.kinds must be a string array');
105
+ return {
106
+ pageHeightRatio: asFiniteNumber(s.pageHeightRatio, 'dna.motion.scroll.pageHeightRatio'),
107
+ reveals: {
108
+ count: asFiniteNumber(revealsRaw.count, 'dna.motion.scroll.reveals.count'),
109
+ kinds: [...revealsRaw.kinds],
110
+ },
111
+ stickyCount: asFiniteNumber(s.stickyCount, 'dna.motion.scroll.stickyCount'),
112
+ parallax: asFiniteNumber(s.parallax, 'dna.motion.scroll.parallax'),
113
+ scrollDriven: asBoolean(s.scrollDriven, 'dna.motion.scroll.scrollDriven'),
114
+ };
115
+ }
116
+ function normalizeDNA(raw) {
117
+ const d = asRecord(raw, 'dna');
118
+ const typeRaw = asRecord(d.type, 'dna.type');
119
+ if (!Array.isArray(typeRaw.steps))
120
+ fail('dna.type.steps must be an array');
121
+ if (!Array.isArray(typeRaw.families))
122
+ fail('dna.type.families must be an array');
123
+ const type = {
124
+ steps: typeRaw.steps.map((s, i) => normalizeTypeStep(s, `dna.type.steps[${i}]`)),
125
+ families: typeRaw.families.map((f, i) => normalizeFontRole(f, `dna.type.families[${i}]`)),
126
+ };
127
+ if (typeRaw.ratio !== undefined)
128
+ type.ratio = asFiniteNumber(typeRaw.ratio, 'dna.type.ratio');
129
+ const colorRaw = asRecord(d.color, 'dna.color');
130
+ const rolesRaw = asRecord(colorRaw.roles, 'dna.color.roles');
131
+ const roles = {};
132
+ for (const role of COLOR_ROLES) {
133
+ const arr = rolesRaw[role];
134
+ if (arr !== undefined && !isStringArray(arr))
135
+ fail(`dna.color.roles.${role} must be a string array`);
136
+ roles[role] = isStringArray(arr) ? [...arr] : [];
137
+ }
138
+ const color = { roles };
139
+ if (colorRaw.contrastFloor !== undefined) {
140
+ color.contrastFloor = asFiniteNumber(colorRaw.contrastFloor, 'dna.color.contrastFloor');
141
+ }
142
+ const spacingRaw = asRecord(d.spacing, 'dna.spacing');
143
+ if (!isFiniteNumberArray(spacingRaw.steps))
144
+ fail('dna.spacing.steps must be a number array');
145
+ const spacing = {
146
+ steps: [...spacingRaw.steps],
147
+ density: asEnum(spacingRaw.density, DENSITIES, 'dna.spacing.density'),
148
+ };
149
+ if (spacingRaw.baseUnit !== undefined)
150
+ spacing.baseUnit = asFiniteNumber(spacingRaw.baseUnit, 'dna.spacing.baseUnit');
151
+ const radiiRaw = asRecord(d.radii, 'dna.radii');
152
+ if (!isFiniteNumberArray(radiiRaw.steps))
153
+ fail('dna.radii.steps must be a number array');
154
+ const motionRaw = asRecord(d.motion, 'dna.motion');
155
+ if (!isFiniteNumberArray(motionRaw.durationsMs))
156
+ fail('dna.motion.durationsMs must be a number array');
157
+ if (!isStringArray(motionRaw.easings))
158
+ fail('dna.motion.easings must be a string array');
159
+ if (!isStringArray(motionRaw.libraries))
160
+ fail('dna.motion.libraries must be a string array');
161
+ const motion = {
162
+ durationsMs: [...motionRaw.durationsMs],
163
+ easings: [...motionRaw.easings],
164
+ libraries: [...motionRaw.libraries],
165
+ };
166
+ if (motionRaw.scroll !== undefined)
167
+ motion.scroll = normalizeScrollMotion(motionRaw.scroll);
168
+ const layoutRaw = asRecord(d.layout, 'dna.layout');
169
+ const layout = {
170
+ density: asEnum(layoutRaw.density, DENSITIES, 'dna.layout.density'),
171
+ archetype: asString(layoutRaw.archetype, 'dna.layout.archetype'),
172
+ };
173
+ if (layoutRaw.columns !== undefined)
174
+ layout.columns = asFiniteNumber(layoutRaw.columns, 'dna.layout.columns');
175
+ if (layoutRaw.gridBaseUnit !== undefined)
176
+ layout.gridBaseUnit = asFiniteNumber(layoutRaw.gridBaseUnit, 'dna.layout.gridBaseUnit');
177
+ if (layoutRaw.whitespaceRatio !== undefined)
178
+ layout.whitespaceRatio = asFiniteNumber(layoutRaw.whitespaceRatio, 'dna.layout.whitespaceRatio');
179
+ const compRaw = asRecord(d.components, 'dna.components');
180
+ const components = {
181
+ buttons: asFiniteNumber(compRaw.buttons, 'dna.components.buttons'),
182
+ inputs: asFiniteNumber(compRaw.inputs, 'dna.components.inputs'),
183
+ cards: asFiniteNumber(compRaw.cards, 'dna.components.cards'),
184
+ nav: asFiniteNumber(compRaw.nav, 'dna.components.nav'),
185
+ };
186
+ const dna = {
187
+ url: asString(d.url, 'dna.url'),
188
+ capturedAt: asString(d.capturedAt, 'dna.capturedAt'),
189
+ type,
190
+ color,
191
+ spacing,
192
+ radii: { steps: [...radiiRaw.steps] },
193
+ motion,
194
+ layout,
195
+ components,
196
+ };
197
+ if (d.signals !== undefined) {
198
+ const sigRaw = asRecord(d.signals, 'dna.signals');
199
+ const signals = {};
200
+ if (sigRaw.contrastAaPassRate !== undefined)
201
+ signals.contrastAaPassRate = asFiniteNumber(sigRaw.contrastAaPassRate, 'dna.signals.contrastAaPassRate');
202
+ if (sigRaw.a11yBlockingCount !== undefined)
203
+ signals.a11yBlockingCount = asFiniteNumber(sigRaw.a11yBlockingCount, 'dna.signals.a11yBlockingCount');
204
+ dna.signals = signals;
205
+ }
206
+ return dna;
207
+ }
208
+ /**
209
+ * Validate and normalise one raw record into a fresh `Exemplar`, or throw a typed
210
+ * rejection. Fail-closed: a missing/ malformed `dna`, `aestheticVector`, or
211
+ * `pageType` is rejected rather than defaulted, and the result is built by
212
+ * whitelisting known fields (no spread of untrusted input → no prototype
213
+ * pollution).
214
+ */
215
+ export function parseExemplar(raw) {
216
+ const r = asRecord(raw, 'exemplar');
217
+ if (!isFiniteNumberArray(r.aestheticVector) || r.aestheticVector.length === 0) {
218
+ fail('aestheticVector must be a non-empty finite number array');
219
+ }
220
+ return {
221
+ id: asNonEmptyString(r.id, 'id'),
222
+ source: asNonEmptyString(r.source, 'source'),
223
+ url: asString(r.url, 'url'),
224
+ pageType: asEnum(r.pageType, PAGE_TYPES, 'pageType'),
225
+ jobToBeDone: asString(r.jobToBeDone, 'jobToBeDone'),
226
+ dna: normalizeDNA(r.dna),
227
+ screenshotPath: asString(r.screenshotPath, 'screenshotPath'),
228
+ aestheticVector: [...r.aestheticVector],
229
+ eloRating: asFiniteNumber(r.eloRating, 'eloRating'),
230
+ };
231
+ }
232
+ /** Boolean guard derived from the same validation path as `parseExemplar`. */
233
+ export function isExemplar(raw) {
234
+ try {
235
+ parseExemplar(raw);
236
+ return true;
237
+ }
238
+ catch {
239
+ return false;
240
+ }
241
+ }
242
+ /**
243
+ * Serialise one `Exemplar` to a stable, human-reviewable JSON string (one record
244
+ * per corpus file). Round-trips through `parseExemplar(JSON.parse(...))`.
245
+ */
246
+ export function serializeExemplar(e) {
247
+ return `${JSON.stringify(e, null, 2)}\n`;
248
+ }
249
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../../src/design/audit/reference/corpus/schema.ts"],"names":[],"mappings":"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"}