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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (485) hide show
  1. package/README.md +42 -1
  2. package/discovery/llms.txt +27 -0
  3. package/discovery/tangle-agent.json +36 -0
  4. package/dist/brain/action-parse.d.ts +16 -0
  5. package/dist/brain/action-parse.d.ts.map +1 -0
  6. package/dist/brain/action-parse.js +191 -0
  7. package/dist/brain/action-parse.js.map +1 -0
  8. package/dist/brain/decide.d.ts +58 -0
  9. package/dist/brain/decide.d.ts.map +1 -0
  10. package/dist/brain/decide.js +418 -0
  11. package/dist/brain/decide.js.map +1 -0
  12. package/dist/brain/history-compact.d.ts +19 -0
  13. package/dist/brain/history-compact.d.ts.map +1 -0
  14. package/dist/brain/history-compact.js +153 -0
  15. package/dist/brain/history-compact.js.map +1 -0
  16. package/dist/brain/index.d.ts +78 -152
  17. package/dist/brain/index.d.ts.map +1 -1
  18. package/dist/brain/index.js +62 -2268
  19. package/dist/brain/index.js.map +1 -1
  20. package/dist/brain/model-client.d.ts +101 -0
  21. package/dist/brain/model-client.d.ts.map +1 -0
  22. package/dist/brain/model-client.js +391 -0
  23. package/dist/brain/model-client.js.map +1 -0
  24. package/dist/brain/plan.d.ts +57 -0
  25. package/dist/brain/plan.d.ts.map +1 -0
  26. package/dist/brain/plan.js +194 -0
  27. package/dist/brain/plan.js.map +1 -0
  28. package/dist/brain/prompts.d.ts +37 -0
  29. package/dist/brain/prompts.d.ts.map +1 -0
  30. package/dist/brain/prompts.js +455 -0
  31. package/dist/brain/prompts.js.map +1 -0
  32. package/dist/brain/provider-fetch.d.ts +26 -0
  33. package/dist/brain/provider-fetch.d.ts.map +1 -0
  34. package/dist/brain/provider-fetch.js +45 -0
  35. package/dist/brain/provider-fetch.js.map +1 -0
  36. package/dist/brain/snapshot-budget.d.ts +20 -0
  37. package/dist/brain/snapshot-budget.d.ts.map +1 -0
  38. package/dist/brain/snapshot-budget.js +202 -0
  39. package/dist/brain/snapshot-budget.js.map +1 -0
  40. package/dist/brain/system-prompt.d.ts +67 -0
  41. package/dist/brain/system-prompt.d.ts.map +1 -0
  42. package/dist/brain/system-prompt.js +128 -0
  43. package/dist/brain/system-prompt.js.map +1 -0
  44. package/dist/brain/tasks/design-audit.d.ts +33 -0
  45. package/dist/brain/tasks/design-audit.d.ts.map +1 -0
  46. package/dist/brain/tasks/design-audit.js +100 -0
  47. package/dist/brain/tasks/design-audit.js.map +1 -0
  48. package/dist/brain/tasks/evaluate.d.ts +25 -0
  49. package/dist/brain/tasks/evaluate.d.ts.map +1 -0
  50. package/dist/brain/tasks/evaluate.js +55 -0
  51. package/dist/brain/tasks/evaluate.js.map +1 -0
  52. package/dist/brain/tasks/goal-verification.d.ts +32 -0
  53. package/dist/brain/tasks/goal-verification.d.ts.map +1 -0
  54. package/dist/brain/tasks/goal-verification.js +68 -0
  55. package/dist/brain/tasks/goal-verification.js.map +1 -0
  56. package/dist/brain/tasks/knowledge.d.ts +26 -0
  57. package/dist/brain/tasks/knowledge.d.ts.map +1 -0
  58. package/dist/brain/tasks/knowledge.js +56 -0
  59. package/dist/brain/tasks/knowledge.js.map +1 -0
  60. package/dist/brain/tasks/link-scout.d.ts +37 -0
  61. package/dist/brain/tasks/link-scout.d.ts.map +1 -0
  62. package/dist/brain/tasks/link-scout.js +69 -0
  63. package/dist/brain/tasks/link-scout.js.map +1 -0
  64. package/dist/brain/types.d.ts +55 -0
  65. package/dist/brain/types.d.ts.map +1 -0
  66. package/dist/brain/types.js +7 -0
  67. package/dist/brain/types.js.map +1 -0
  68. package/dist/browser/stealth-init-script.d.ts +9 -0
  69. package/dist/browser/stealth-init-script.d.ts.map +1 -0
  70. package/dist/browser/stealth-init-script.js +128 -0
  71. package/dist/browser/stealth-init-script.js.map +1 -0
  72. package/dist/browser/storage-state.d.ts +29 -0
  73. package/dist/browser/storage-state.d.ts.map +1 -0
  74. package/dist/browser/storage-state.js +47 -0
  75. package/dist/browser/storage-state.js.map +1 -0
  76. package/dist/cli/args.d.ts +141 -0
  77. package/dist/cli/args.d.ts.map +1 -0
  78. package/dist/cli/args.js +167 -0
  79. package/dist/cli/args.js.map +1 -0
  80. package/dist/cli/benchmark-sync.d.ts +9 -0
  81. package/dist/cli/benchmark-sync.d.ts.map +1 -0
  82. package/dist/cli/benchmark-sync.js +43 -0
  83. package/dist/cli/benchmark-sync.js.map +1 -0
  84. package/dist/cli/build-config.d.ts +11 -0
  85. package/dist/cli/build-config.d.ts.map +1 -0
  86. package/dist/cli/build-config.js +355 -0
  87. package/dist/cli/build-config.js.map +1 -0
  88. package/dist/cli/commands/auth.d.ts +3 -0
  89. package/dist/cli/commands/auth.d.ts.map +1 -0
  90. package/dist/cli/commands/auth.js +36 -0
  91. package/dist/cli/commands/auth.js.map +1 -0
  92. package/dist/cli/commands/chrome-debug.d.ts +7 -0
  93. package/dist/cli/commands/chrome-debug.d.ts.map +1 -0
  94. package/dist/cli/commands/chrome-debug.js +11 -0
  95. package/dist/cli/commands/chrome-debug.js.map +1 -0
  96. package/dist/cli/commands/design-audit.d.ts +3 -0
  97. package/dist/cli/commands/design-audit.d.ts.map +1 -0
  98. package/dist/cli/commands/design-audit.js +68 -0
  99. package/dist/cli/commands/design-audit.js.map +1 -0
  100. package/dist/cli/commands/preview.d.ts +14 -0
  101. package/dist/cli/commands/preview.d.ts.map +1 -0
  102. package/dist/cli/commands/preview.js +31 -0
  103. package/dist/cli/commands/preview.js.map +1 -0
  104. package/dist/cli/commands/run.d.ts +3 -0
  105. package/dist/cli/commands/run.d.ts.map +1 -0
  106. package/dist/cli/commands/run.js +728 -0
  107. package/dist/cli/commands/run.js.map +1 -0
  108. package/dist/cli/commands/runs.d.ts +8 -0
  109. package/dist/cli/commands/runs.d.ts.map +1 -0
  110. package/dist/cli/commands/runs.js +35 -0
  111. package/dist/cli/commands/runs.js.map +1 -0
  112. package/dist/cli/commands/share.d.ts +10 -0
  113. package/dist/cli/commands/share.d.ts.map +1 -0
  114. package/dist/cli/commands/share.js +32 -0
  115. package/dist/cli/commands/share.js.map +1 -0
  116. package/dist/cli/commands/showcase.d.ts +17 -0
  117. package/dist/cli/commands/showcase.d.ts.map +1 -0
  118. package/dist/cli/commands/showcase.js +20 -0
  119. package/dist/cli/commands/showcase.js.map +1 -0
  120. package/dist/cli/commands/snapshot.d.ts +12 -0
  121. package/dist/cli/commands/snapshot.d.ts.map +1 -0
  122. package/dist/cli/commands/snapshot.js +24 -0
  123. package/dist/cli/commands/snapshot.js.map +1 -0
  124. package/dist/cli/commands/view.d.ts +7 -0
  125. package/dist/cli/commands/view.d.ts.map +1 -0
  126. package/dist/cli/commands/view.js +23 -0
  127. package/dist/cli/commands/view.js.map +1 -0
  128. package/dist/cli/constants.d.ts +6 -0
  129. package/dist/cli/constants.d.ts.map +1 -0
  130. package/dist/cli/constants.js +3 -0
  131. package/dist/cli/constants.js.map +1 -0
  132. package/dist/cli/version.d.ts +7 -0
  133. package/dist/cli/version.d.ts.map +1 -0
  134. package/dist/cli/version.js +16 -0
  135. package/dist/cli/version.js.map +1 -0
  136. package/dist/cli-design-audit.d.ts +44 -36
  137. package/dist/cli-design-audit.d.ts.map +1 -1
  138. package/dist/cli-design-audit.js +137 -1646
  139. package/dist/cli-design-audit.js.map +1 -1
  140. package/dist/cli-jobs.js +2 -1
  141. package/dist/cli-jobs.js.map +1 -1
  142. package/dist/cli.js +66 -1697
  143. package/dist/cli.js.map +1 -1
  144. package/dist/config.d.ts +5 -0
  145. package/dist/config.d.ts.map +1 -1
  146. package/dist/config.js +8 -0
  147. package/dist/config.js.map +1 -1
  148. package/dist/design/audit/evolve/agent.d.ts +23 -0
  149. package/dist/design/audit/evolve/agent.d.ts.map +1 -0
  150. package/dist/design/audit/evolve/agent.js +272 -0
  151. package/dist/design/audit/evolve/agent.js.map +1 -0
  152. package/dist/design/audit/evolve/css.d.ts +10 -0
  153. package/dist/design/audit/evolve/css.d.ts.map +1 -0
  154. package/dist/design/audit/evolve/css.js +206 -0
  155. package/dist/design/audit/evolve/css.js.map +1 -0
  156. package/dist/design/audit/evolve/index.d.ts +13 -0
  157. package/dist/design/audit/evolve/index.d.ts.map +1 -0
  158. package/dist/design/audit/evolve/index.js +12 -0
  159. package/dist/design/audit/evolve/index.js.map +1 -0
  160. package/dist/design/audit/evolve/report.d.ts +3 -0
  161. package/dist/design/audit/evolve/report.d.ts.map +1 -0
  162. package/dist/design/audit/evolve/report.js +45 -0
  163. package/dist/design/audit/evolve/report.js.map +1 -0
  164. package/dist/design/audit/evolve/types.d.ts +14 -0
  165. package/dist/design/audit/evolve/types.d.ts.map +1 -0
  166. package/dist/design/audit/evolve/types.js +2 -0
  167. package/dist/design/audit/evolve/types.js.map +1 -0
  168. package/dist/design/audit/pipeline.d.ts +12 -0
  169. package/dist/design/audit/pipeline.d.ts.map +1 -1
  170. package/dist/design/audit/pipeline.js +43 -27
  171. package/dist/design/audit/pipeline.js.map +1 -1
  172. package/dist/design/audit/reference/artifact/build.d.ts +33 -0
  173. package/dist/design/audit/reference/artifact/build.d.ts.map +1 -0
  174. package/dist/design/audit/reference/artifact/build.js +64 -0
  175. package/dist/design/audit/reference/artifact/build.js.map +1 -0
  176. package/dist/design/audit/reference/artifact/render.d.ts +39 -0
  177. package/dist/design/audit/reference/artifact/render.d.ts.map +1 -0
  178. package/dist/design/audit/reference/artifact/render.js +213 -0
  179. package/dist/design/audit/reference/artifact/render.js.map +1 -0
  180. package/dist/design/audit/reference/artifact/text.d.ts +11 -0
  181. package/dist/design/audit/reference/artifact/text.d.ts.map +1 -0
  182. package/dist/design/audit/reference/artifact/text.js +20 -0
  183. package/dist/design/audit/reference/artifact/text.js.map +1 -0
  184. package/dist/design/audit/reference/artifact/to-findings.d.ts +57 -0
  185. package/dist/design/audit/reference/artifact/to-findings.d.ts.map +1 -0
  186. package/dist/design/audit/reference/artifact/to-findings.js +314 -0
  187. package/dist/design/audit/reference/artifact/to-findings.js.map +1 -0
  188. package/dist/design/audit/reference/config.d.ts +50 -0
  189. package/dist/design/audit/reference/config.d.ts.map +1 -0
  190. package/dist/design/audit/reference/config.js +108 -0
  191. package/dist/design/audit/reference/config.js.map +1 -0
  192. package/dist/design/audit/reference/contracts.d.ts +1030 -0
  193. package/dist/design/audit/reference/contracts.d.ts.map +1 -0
  194. package/dist/design/audit/reference/contracts.js +28 -0
  195. package/dist/design/audit/reference/contracts.js.map +1 -0
  196. package/dist/design/audit/reference/corpus/build.d.ts +115 -0
  197. package/dist/design/audit/reference/corpus/build.d.ts.map +1 -0
  198. package/dist/design/audit/reference/corpus/build.js +152 -0
  199. package/dist/design/audit/reference/corpus/build.js.map +1 -0
  200. package/dist/design/audit/reference/corpus/schema.d.ts +33 -0
  201. package/dist/design/audit/reference/corpus/schema.d.ts.map +1 -0
  202. package/dist/design/audit/reference/corpus/schema.js +249 -0
  203. package/dist/design/audit/reference/corpus/schema.js.map +1 -0
  204. package/dist/design/audit/reference/corpus/store.d.ts +26 -0
  205. package/dist/design/audit/reference/corpus/store.d.ts.map +1 -0
  206. package/dist/design/audit/reference/corpus/store.js +104 -0
  207. package/dist/design/audit/reference/corpus/store.js.map +1 -0
  208. package/dist/design/audit/reference/dna/delta.d.ts +21 -0
  209. package/dist/design/audit/reference/dna/delta.d.ts.map +1 -0
  210. package/dist/design/audit/reference/dna/delta.js +126 -0
  211. package/dist/design/audit/reference/dna/delta.js.map +1 -0
  212. package/dist/design/audit/reference/dna/derive.d.ts +31 -0
  213. package/dist/design/audit/reference/dna/derive.d.ts.map +1 -0
  214. package/dist/design/audit/reference/dna/derive.js +381 -0
  215. package/dist/design/audit/reference/dna/derive.js.map +1 -0
  216. package/dist/design/audit/reference/dna/descriptor.d.ts +36 -0
  217. package/dist/design/audit/reference/dna/descriptor.d.ts.map +1 -0
  218. package/dist/design/audit/reference/dna/descriptor.js +209 -0
  219. package/dist/design/audit/reference/dna/descriptor.js.map +1 -0
  220. package/dist/design/audit/reference/dna/page-adapter.d.ts +17 -0
  221. package/dist/design/audit/reference/dna/page-adapter.d.ts.map +1 -0
  222. package/dist/design/audit/reference/dna/page-adapter.js +35 -0
  223. package/dist/design/audit/reference/dna/page-adapter.js.map +1 -0
  224. package/dist/design/audit/reference/dna/scroll-capture.d.ts +93 -0
  225. package/dist/design/audit/reference/dna/scroll-capture.d.ts.map +1 -0
  226. package/dist/design/audit/reference/dna/scroll-capture.js +374 -0
  227. package/dist/design/audit/reference/dna/scroll-capture.js.map +1 -0
  228. package/dist/design/audit/reference/engine/budget.d.ts +63 -0
  229. package/dist/design/audit/reference/engine/budget.d.ts.map +1 -0
  230. package/dist/design/audit/reference/engine/budget.js +110 -0
  231. package/dist/design/audit/reference/engine/budget.js.map +1 -0
  232. package/dist/design/audit/reference/engine/core.d.ts +32 -0
  233. package/dist/design/audit/reference/engine/core.d.ts.map +1 -0
  234. package/dist/design/audit/reference/engine/core.js +261 -0
  235. package/dist/design/audit/reference/engine/core.js.map +1 -0
  236. package/dist/design/audit/reference/engine/guard.d.ts +43 -0
  237. package/dist/design/audit/reference/engine/guard.d.ts.map +1 -0
  238. package/dist/design/audit/reference/engine/guard.js +43 -0
  239. package/dist/design/audit/reference/engine/guard.js.map +1 -0
  240. package/dist/design/audit/reference/engine/score-core.d.ts +48 -0
  241. package/dist/design/audit/reference/engine/score-core.d.ts.map +1 -0
  242. package/dist/design/audit/reference/engine/score-core.js +134 -0
  243. package/dist/design/audit/reference/engine/score-core.js.map +1 -0
  244. package/dist/design/audit/reference/engine/wiring.d.ts +35 -0
  245. package/dist/design/audit/reference/engine/wiring.d.ts.map +1 -0
  246. package/dist/design/audit/reference/engine/wiring.js +80 -0
  247. package/dist/design/audit/reference/engine/wiring.js.map +1 -0
  248. package/dist/design/audit/reference/eval/taste-core.d.ts +77 -0
  249. package/dist/design/audit/reference/eval/taste-core.d.ts.map +1 -0
  250. package/dist/design/audit/reference/eval/taste-core.js +95 -0
  251. package/dist/design/audit/reference/eval/taste-core.js.map +1 -0
  252. package/dist/design/audit/reference/generate/generator.d.ts +49 -0
  253. package/dist/design/audit/reference/generate/generator.d.ts.map +1 -0
  254. package/dist/design/audit/reference/generate/generator.js +94 -0
  255. package/dist/design/audit/reference/generate/generator.js.map +1 -0
  256. package/dist/design/audit/reference/generate/parse.d.ts +28 -0
  257. package/dist/design/audit/reference/generate/parse.d.ts.map +1 -0
  258. package/dist/design/audit/reference/generate/parse.js +180 -0
  259. package/dist/design/audit/reference/generate/parse.js.map +1 -0
  260. package/dist/design/audit/reference/generate/prompt.d.ts +36 -0
  261. package/dist/design/audit/reference/generate/prompt.d.ts.map +1 -0
  262. package/dist/design/audit/reference/generate/prompt.js +124 -0
  263. package/dist/design/audit/reference/generate/prompt.js.map +1 -0
  264. package/dist/design/audit/reference/index.d.ts +26 -0
  265. package/dist/design/audit/reference/index.d.ts.map +1 -0
  266. package/dist/design/audit/reference/index.js +31 -0
  267. package/dist/design/audit/reference/index.js.map +1 -0
  268. package/dist/design/audit/reference/judge/image-clamp.d.ts +34 -0
  269. package/dist/design/audit/reference/judge/image-clamp.d.ts.map +1 -0
  270. package/dist/design/audit/reference/judge/image-clamp.js +88 -0
  271. package/dist/design/audit/reference/judge/image-clamp.js.map +1 -0
  272. package/dist/design/audit/reference/judge/pairwise.d.ts +34 -0
  273. package/dist/design/audit/reference/judge/pairwise.d.ts.map +1 -0
  274. package/dist/design/audit/reference/judge/pairwise.js +105 -0
  275. package/dist/design/audit/reference/judge/pairwise.js.map +1 -0
  276. package/dist/design/audit/reference/judge/parse.d.ts +31 -0
  277. package/dist/design/audit/reference/judge/parse.d.ts.map +1 -0
  278. package/dist/design/audit/reference/judge/parse.js +113 -0
  279. package/dist/design/audit/reference/judge/parse.js.map +1 -0
  280. package/dist/design/audit/reference/judge/prompt.d.ts +38 -0
  281. package/dist/design/audit/reference/judge/prompt.d.ts.map +1 -0
  282. package/dist/design/audit/reference/judge/prompt.js +111 -0
  283. package/dist/design/audit/reference/judge/prompt.js.map +1 -0
  284. package/dist/design/audit/reference/judge/quality.d.ts +28 -0
  285. package/dist/design/audit/reference/judge/quality.d.ts.map +1 -0
  286. package/dist/design/audit/reference/judge/quality.js +62 -0
  287. package/dist/design/audit/reference/judge/quality.js.map +1 -0
  288. package/dist/design/audit/reference/judge/rank.d.ts +41 -0
  289. package/dist/design/audit/reference/judge/rank.d.ts.map +1 -0
  290. package/dist/design/audit/reference/judge/rank.js +196 -0
  291. package/dist/design/audit/reference/judge/rank.js.map +1 -0
  292. package/dist/design/audit/reference/judge/text-judge.d.ts +31 -0
  293. package/dist/design/audit/reference/judge/text-judge.d.ts.map +1 -0
  294. package/dist/design/audit/reference/judge/text-judge.js +43 -0
  295. package/dist/design/audit/reference/judge/text-judge.js.map +1 -0
  296. package/dist/design/audit/reference/judge/vision-judge.d.ts +59 -0
  297. package/dist/design/audit/reference/judge/vision-judge.d.ts.map +1 -0
  298. package/dist/design/audit/reference/judge/vision-judge.js +150 -0
  299. package/dist/design/audit/reference/judge/vision-judge.js.map +1 -0
  300. package/dist/design/audit/reference/judge/vision-model.d.ts +65 -0
  301. package/dist/design/audit/reference/judge/vision-model.d.ts.map +1 -0
  302. package/dist/design/audit/reference/judge/vision-model.js +110 -0
  303. package/dist/design/audit/reference/judge/vision-model.js.map +1 -0
  304. package/dist/design/audit/reference/pipeline/evaluate-reference.d.ts +68 -0
  305. package/dist/design/audit/reference/pipeline/evaluate-reference.d.ts.map +1 -0
  306. package/dist/design/audit/reference/pipeline/evaluate-reference.js +52 -0
  307. package/dist/design/audit/reference/pipeline/evaluate-reference.js.map +1 -0
  308. package/dist/design/audit/reference/reference-context.d.ts +31 -0
  309. package/dist/design/audit/reference/reference-context.d.ts.map +1 -0
  310. package/dist/design/audit/reference/reference-context.js +73 -0
  311. package/dist/design/audit/reference/reference-context.js.map +1 -0
  312. package/dist/design/audit/reference/retrieval/embedding-hash.d.ts +30 -0
  313. package/dist/design/audit/reference/retrieval/embedding-hash.d.ts.map +1 -0
  314. package/dist/design/audit/reference/retrieval/embedding-hash.js +87 -0
  315. package/dist/design/audit/reference/retrieval/embedding-hash.js.map +1 -0
  316. package/dist/design/audit/reference/retrieval/embedding-openai.d.ts +38 -0
  317. package/dist/design/audit/reference/retrieval/embedding-openai.d.ts.map +1 -0
  318. package/dist/design/audit/reference/retrieval/embedding-openai.js +73 -0
  319. package/dist/design/audit/reference/retrieval/embedding-openai.js.map +1 -0
  320. package/dist/design/audit/reference/retrieval/matcher.d.ts +34 -0
  321. package/dist/design/audit/reference/retrieval/matcher.d.ts.map +1 -0
  322. package/dist/design/audit/reference/retrieval/matcher.js +107 -0
  323. package/dist/design/audit/reference/retrieval/matcher.js.map +1 -0
  324. package/dist/design/audit/reference/run.d.ts +59 -0
  325. package/dist/design/audit/reference/run.d.ts.map +1 -0
  326. package/dist/design/audit/reference/run.js +99 -0
  327. package/dist/design/audit/reference/run.js.map +1 -0
  328. package/dist/design/audit/report.d.ts +35 -0
  329. package/dist/design/audit/report.d.ts.map +1 -0
  330. package/dist/design/audit/report.js +195 -0
  331. package/dist/design/audit/report.js.map +1 -0
  332. package/dist/design/audit/tokens/extract.d.ts +71 -0
  333. package/dist/design/audit/tokens/extract.d.ts.map +1 -0
  334. package/dist/design/audit/tokens/extract.js +1034 -0
  335. package/dist/design/audit/tokens/extract.js.map +1 -0
  336. package/dist/design/audit/types.d.ts +8 -0
  337. package/dist/design/audit/types.d.ts.map +1 -1
  338. package/dist/design/compare.d.ts.map +1 -1
  339. package/dist/design/compare.js +2 -6
  340. package/dist/design/compare.js.map +1 -1
  341. package/dist/design/cookie-consent.d.ts +3 -0
  342. package/dist/design/cookie-consent.d.ts.map +1 -0
  343. package/dist/design/cookie-consent.js +26 -0
  344. package/dist/design/cookie-consent.js.map +1 -0
  345. package/dist/design/viewports.d.ts +18 -0
  346. package/dist/design/viewports.d.ts.map +1 -0
  347. package/dist/design/viewports.js +10 -0
  348. package/dist/design/viewports.js.map +1 -0
  349. package/dist/index.d.ts +2 -2
  350. package/dist/index.d.ts.map +1 -1
  351. package/dist/index.js +1 -1
  352. package/dist/index.js.map +1 -1
  353. package/dist/memory/store.d.ts +19 -1
  354. package/dist/memory/store.d.ts.map +1 -1
  355. package/dist/memory/store.js +47 -0
  356. package/dist/memory/store.js.map +1 -1
  357. package/dist/provider-defaults.d.ts +18 -0
  358. package/dist/provider-defaults.d.ts.map +1 -1
  359. package/dist/provider-defaults.js +33 -0
  360. package/dist/provider-defaults.js.map +1 -1
  361. package/dist/runner/allowed-domains.d.ts +11 -0
  362. package/dist/runner/allowed-domains.d.ts.map +1 -0
  363. package/dist/runner/allowed-domains.js +14 -0
  364. package/dist/runner/allowed-domains.js.map +1 -0
  365. package/dist/runner/batch-fill.d.ts +28 -0
  366. package/dist/runner/batch-fill.d.ts.map +1 -0
  367. package/dist/runner/batch-fill.js +80 -0
  368. package/dist/runner/batch-fill.js.map +1 -0
  369. package/dist/runner/completion-policy.d.ts +26 -0
  370. package/dist/runner/completion-policy.d.ts.map +1 -0
  371. package/dist/runner/completion-policy.js +76 -0
  372. package/dist/runner/completion-policy.js.map +1 -0
  373. package/dist/runner/constants.d.ts +14 -0
  374. package/dist/runner/constants.d.ts.map +1 -0
  375. package/dist/runner/constants.js +23 -0
  376. package/dist/runner/constants.js.map +1 -0
  377. package/dist/runner/decision-screenshot.d.ts +24 -0
  378. package/dist/runner/decision-screenshot.d.ts.map +1 -0
  379. package/dist/runner/decision-screenshot.js +23 -0
  380. package/dist/runner/decision-screenshot.js.map +1 -0
  381. package/dist/runner/domain-boundary.d.ts +36 -0
  382. package/dist/runner/domain-boundary.d.ts.map +1 -0
  383. package/dist/runner/domain-boundary.js +81 -0
  384. package/dist/runner/domain-boundary.js.map +1 -0
  385. package/dist/runner/effect-verify.d.ts +28 -0
  386. package/dist/runner/effect-verify.d.ts.map +1 -0
  387. package/dist/runner/effect-verify.js +42 -0
  388. package/dist/runner/effect-verify.js.map +1 -0
  389. package/dist/runner/execute-plan.d.ts +58 -0
  390. package/dist/runner/execute-plan.d.ts.map +1 -0
  391. package/dist/runner/execute-plan.js +426 -0
  392. package/dist/runner/execute-plan.js.map +1 -0
  393. package/dist/runner/max-turns-extension.d.ts +19 -0
  394. package/dist/runner/max-turns-extension.d.ts.map +1 -0
  395. package/dist/runner/max-turns-extension.js +25 -0
  396. package/dist/runner/max-turns-extension.js.map +1 -0
  397. package/dist/runner/micro-plan.d.ts +11 -0
  398. package/dist/runner/micro-plan.d.ts.map +1 -0
  399. package/dist/runner/micro-plan.js +29 -0
  400. package/dist/runner/micro-plan.js.map +1 -0
  401. package/dist/runner/prompt-snippets.d.ts +5 -0
  402. package/dist/runner/prompt-snippets.d.ts.map +1 -0
  403. package/dist/runner/prompt-snippets.js +13 -0
  404. package/dist/runner/prompt-snippets.js.map +1 -0
  405. package/dist/runner/replay/contracts.d.ts +300 -0
  406. package/dist/runner/replay/contracts.d.ts.map +1 -0
  407. package/dist/runner/replay/contracts.js +42 -0
  408. package/dist/runner/replay/contracts.js.map +1 -0
  409. package/dist/runner/replay/controller.d.ts +27 -0
  410. package/dist/runner/replay/controller.d.ts.map +1 -0
  411. package/dist/runner/replay/controller.js +197 -0
  412. package/dist/runner/replay/controller.js.map +1 -0
  413. package/dist/runner/replay/guard.d.ts +28 -0
  414. package/dist/runner/replay/guard.d.ts.map +1 -0
  415. package/dist/runner/replay/guard.js +100 -0
  416. package/dist/runner/replay/guard.js.map +1 -0
  417. package/dist/runner/runner.d.ts +44 -51
  418. package/dist/runner/runner.d.ts.map +1 -1
  419. package/dist/runner/runner.js +155 -851
  420. package/dist/runner/runner.js.map +1 -1
  421. package/dist/runner/scout-feedback.d.ts +51 -0
  422. package/dist/runner/scout-feedback.d.ts.map +1 -0
  423. package/dist/runner/scout-feedback.js +149 -0
  424. package/dist/runner/scout-feedback.js.map +1 -0
  425. package/dist/skills/macro-loader.d.ts +1 -1
  426. package/dist/test-runner.d.ts.map +1 -1
  427. package/dist/test-runner.js +25 -0
  428. package/dist/test-runner.js.map +1 -1
  429. package/dist/types/actions.d.ts +241 -0
  430. package/dist/types/actions.d.ts.map +1 -0
  431. package/dist/types/actions.js +5 -0
  432. package/dist/types/actions.js.map +1 -0
  433. package/dist/types/config.d.ts +211 -0
  434. package/dist/types/config.d.ts.map +1 -0
  435. package/dist/types/config.js +2 -0
  436. package/dist/types/config.js.map +1 -0
  437. package/dist/types/design-audit.d.ts +92 -0
  438. package/dist/types/design-audit.d.ts.map +1 -0
  439. package/dist/types/design-audit.js +5 -0
  440. package/dist/types/design-audit.js.map +1 -0
  441. package/dist/types/design-tokens.d.ts +138 -0
  442. package/dist/types/design-tokens.d.ts.map +1 -0
  443. package/dist/types/design-tokens.js +5 -0
  444. package/dist/types/design-tokens.js.map +1 -0
  445. package/dist/types/page.d.ts +16 -0
  446. package/dist/types/page.d.ts.map +1 -0
  447. package/dist/types/page.js +2 -0
  448. package/dist/types/page.js.map +1 -0
  449. package/dist/types/plan.d.ts +50 -0
  450. package/dist/types/plan.d.ts.map +1 -0
  451. package/dist/types/plan.js +2 -0
  452. package/dist/types/plan.js.map +1 -0
  453. package/dist/types/preview.d.ts +9 -0
  454. package/dist/types/preview.d.ts.map +1 -0
  455. package/dist/types/preview.js +5 -0
  456. package/dist/types/preview.js.map +1 -0
  457. package/dist/types/result.d.ts +62 -0
  458. package/dist/types/result.d.ts.map +1 -0
  459. package/dist/types/result.js +2 -0
  460. package/dist/types/result.js.map +1 -0
  461. package/dist/types/scenario.d.ts +20 -0
  462. package/dist/types/scenario.d.ts.map +1 -0
  463. package/dist/types/scenario.js +5 -0
  464. package/dist/types/scenario.js.map +1 -0
  465. package/dist/types/test-runner.d.ts +145 -0
  466. package/dist/types/test-runner.d.ts.map +1 -0
  467. package/dist/types/test-runner.js +10 -0
  468. package/dist/types/test-runner.js.map +1 -0
  469. package/dist/types/trajectory.d.ts +38 -0
  470. package/dist/types/trajectory.d.ts.map +1 -0
  471. package/dist/types/trajectory.js +2 -0
  472. package/dist/types/trajectory.js.map +1 -0
  473. package/dist/types/turn.d.ts +50 -0
  474. package/dist/types/turn.d.ts.map +1 -0
  475. package/dist/types/turn.js +2 -0
  476. package/dist/types/turn.js.map +1 -0
  477. package/dist/types.d.ts +16 -1017
  478. package/dist/types.d.ts.map +1 -1
  479. package/dist/types.js +15 -8
  480. package/dist/types.js.map +1 -1
  481. package/dist/wallet/rpc-interception.d.ts +15 -0
  482. package/dist/wallet/rpc-interception.d.ts.map +1 -0
  483. package/dist/wallet/rpc-interception.js +95 -0
  484. package/dist/wallet/rpc-interception.js.map +1 -0
  485. package/package.json +6 -2
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Exemplar retrieval — the de-hardcoding PURE core. Implements `ExemplarMatcher`.
3
+ *
4
+ * Instead of the scattered if/else domain tables the v1 audit uses, retrieval
5
+ * ranks exemplars by similarity: a hard `pageType` filter, then a blended score
6
+ * over aesthetic-vector cosine similarity, an optional structural-vector signal,
7
+ * and a low-weight job-to-be-done token overlap. The de-hardcoding guarantee:
8
+ * a NOVEL `pageType` with no same-type exemplar does not fall through a table —
9
+ * it resolves to its nearest neighbour across the whole corpus.
10
+ *
11
+ * Purity: the matcher consumes the PRE-COMPUTED `query.aestheticVector` (the
12
+ * orchestrator embeds once) and NEVER embeds. Its only same-layer imports are
13
+ * `cosineSimilarity` (the pure half of the embedding boundary) and
14
+ * `structuralFeatures` — the SAME projection the orchestrator uses to build
15
+ * `query.structuralVector`, so both sides of the structural comparison live in
16
+ * one feature space. No IO, no LLM.
17
+ */
18
+ import type { CorpusQuery, Exemplar, RetrievalResult, RetrieveWeights } from '../contracts.js';
19
+ /**
20
+ * Blended similarity of one exemplar to the query, in [0, 1]. Pure: the
21
+ * weighted sub-scores are renormalised by the weights actually applied, so the
22
+ * absence of a structural vector does not deflate the score.
23
+ */
24
+ export declare function scoreExemplar(query: CorpusQuery, e: Exemplar, weights?: RetrieveWeights): number;
25
+ /**
26
+ * Rank a corpus of exemplars against a query. Hard-filters to same-`pageType`
27
+ * candidates; if none exist (novel page type) it ranks the FULL corpus by nearest
28
+ * neighbour rather than failing or table-dispatching. Sorted best→worst by
29
+ * blended score, tie-broken by `eloRating` (desc) then `id` (asc) for full
30
+ * determinism. Returns every candidate (no `k` truncation — the orchestrator
31
+ * slices to its configured `k`).
32
+ */
33
+ export declare function retrieve(query: CorpusQuery, corpus: Exemplar[], weights?: RetrieveWeights): RetrievalResult[];
34
+ //# sourceMappingURL=matcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matcher.d.ts","sourceRoot":"","sources":["../../../../../src/design/audit/reference/retrieval/matcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AA6B9F;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,GAAE,eAAkC,GAAG,MAAM,CAmBlH;AAkBD;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CACtB,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,QAAQ,EAAE,EAClB,OAAO,GAAE,eAAkC,GAC1C,eAAe,EAAE,CAmBnB"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Exemplar retrieval — the de-hardcoding PURE core. Implements `ExemplarMatcher`.
3
+ *
4
+ * Instead of the scattered if/else domain tables the v1 audit uses, retrieval
5
+ * ranks exemplars by similarity: a hard `pageType` filter, then a blended score
6
+ * over aesthetic-vector cosine similarity, an optional structural-vector signal,
7
+ * and a low-weight job-to-be-done token overlap. The de-hardcoding guarantee:
8
+ * a NOVEL `pageType` with no same-type exemplar does not fall through a table —
9
+ * it resolves to its nearest neighbour across the whole corpus.
10
+ *
11
+ * Purity: the matcher consumes the PRE-COMPUTED `query.aestheticVector` (the
12
+ * orchestrator embeds once) and NEVER embeds. Its only same-layer imports are
13
+ * `cosineSimilarity` (the pure half of the embedding boundary) and
14
+ * `structuralFeatures` — the SAME projection the orchestrator uses to build
15
+ * `query.structuralVector`, so both sides of the structural comparison live in
16
+ * one feature space. No IO, no LLM.
17
+ */
18
+ import { cosineSimilarity } from './embedding-hash.js';
19
+ import { structuralFeatures } from '../dna/descriptor.js';
20
+ /**
21
+ * Fallback blend used ONLY when no weights are passed (direct/test calls).
22
+ * Aesthetic + pageType dominate; `job` is intentionally low because
23
+ * classification intent is noisy and is fabricated on `--profile` runs. The
24
+ * orchestrator always supplies config's canonical `DEFAULT_RETRIEVE_WEIGHTS`.
25
+ */
26
+ const FALLBACK_WEIGHTS = { aesthetic: 0.7, structural: 0.2, job: 0.1 };
27
+ // Score differences below this read as a tie and defer to the elo/id tie-break.
28
+ const SCORE_TIE_EPSILON = 1e-9;
29
+ const round2 = (n) => Math.round(n * 100) / 100;
30
+ const clamp01 = (n) => (n < 0 ? 0 : n > 1 ? 1 : n);
31
+ /** Jaccard overlap of the word tokens in two job-to-be-done strings, 0-1. */
32
+ function jobOverlap(a, b) {
33
+ const sa = new Set((a.toLowerCase().match(/[a-z0-9]+/g) ?? []).filter((t) => t.length >= 2));
34
+ const sb = new Set((b.toLowerCase().match(/[a-z0-9]+/g) ?? []).filter((t) => t.length >= 2));
35
+ if (sa.size === 0 || sb.size === 0)
36
+ return 0;
37
+ let inter = 0;
38
+ for (const t of sa)
39
+ if (sb.has(t))
40
+ inter++;
41
+ const union = sa.size + sb.size - inter;
42
+ return union === 0 ? 0 : inter / union;
43
+ }
44
+ /**
45
+ * Blended similarity of one exemplar to the query, in [0, 1]. Pure: the
46
+ * weighted sub-scores are renormalised by the weights actually applied, so the
47
+ * absence of a structural vector does not deflate the score.
48
+ */
49
+ export function scoreExemplar(query, e, weights = FALLBACK_WEIGHTS) {
50
+ let acc = 0;
51
+ let wsum = 0;
52
+ const aesthetic = clamp01(cosineSimilarity(query.aestheticVector, e.aestheticVector));
53
+ acc += weights.aesthetic * aesthetic;
54
+ wsum += weights.aesthetic;
55
+ if (query.structuralVector && query.structuralVector.length > 0) {
56
+ const structural = clamp01(cosineSimilarity(query.structuralVector, structuralFeatures(e.dna)));
57
+ acc += weights.structural * structural;
58
+ wsum += weights.structural;
59
+ }
60
+ const job = jobOverlap(query.jobToBeDone, e.jobToBeDone);
61
+ acc += weights.job * job;
62
+ wsum += weights.job;
63
+ return wsum > 0 ? clamp01(acc / wsum) : 0;
64
+ }
65
+ function buildReasons(query, e, novel) {
66
+ const reasons = [];
67
+ reasons.push(novel
68
+ ? `nearest-neighbour fallback: no '${query.pageType}' exemplar, matched across types (${e.pageType})`
69
+ : `page-type match: ${e.pageType}`);
70
+ reasons.push(`aesthetic similarity ${round2(clamp01(cosineSimilarity(query.aestheticVector, e.aestheticVector)))}`);
71
+ if (query.structuralVector && query.structuralVector.length > 0) {
72
+ reasons.push(`structural similarity ${round2(clamp01(cosineSimilarity(query.structuralVector, structuralFeatures(e.dna))))}`);
73
+ }
74
+ const job = jobOverlap(query.jobToBeDone, e.jobToBeDone);
75
+ if (job > 0)
76
+ reasons.push(`job overlap ${round2(job)}`);
77
+ return reasons;
78
+ }
79
+ /**
80
+ * Rank a corpus of exemplars against a query. Hard-filters to same-`pageType`
81
+ * candidates; if none exist (novel page type) it ranks the FULL corpus by nearest
82
+ * neighbour rather than failing or table-dispatching. Sorted best→worst by
83
+ * blended score, tie-broken by `eloRating` (desc) then `id` (asc) for full
84
+ * determinism. Returns every candidate (no `k` truncation — the orchestrator
85
+ * slices to its configured `k`).
86
+ */
87
+ export function retrieve(query, corpus, weights = FALLBACK_WEIGHTS) {
88
+ if (corpus.length === 0)
89
+ return [];
90
+ const sameType = corpus.filter((e) => e.pageType === query.pageType);
91
+ const novel = sameType.length === 0;
92
+ const candidates = novel ? corpus : sameType;
93
+ const scored = candidates.map((e) => ({
94
+ exemplar: e,
95
+ score: scoreExemplar(query, e, weights),
96
+ reasons: buildReasons(query, e, novel),
97
+ }));
98
+ scored.sort((x, y) => {
99
+ if (Math.abs(y.score - x.score) > SCORE_TIE_EPSILON)
100
+ return y.score - x.score;
101
+ if (y.exemplar.eloRating !== x.exemplar.eloRating)
102
+ return y.exemplar.eloRating - x.exemplar.eloRating;
103
+ return x.exemplar.id.localeCompare(y.exemplar.id);
104
+ });
105
+ return scored;
106
+ }
107
+ //# sourceMappingURL=matcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matcher.js","sourceRoot":"","sources":["../../../../../src/design/audit/reference/retrieval/matcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAEzD;;;;;GAKG;AACH,MAAM,gBAAgB,GAAoB,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;AAEvF,gFAAgF;AAChF,MAAM,iBAAiB,GAAG,IAAI,CAAA;AAE9B,MAAM,MAAM,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;AAC/D,MAAM,OAAO,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAElE,6EAA6E;AAC7E,SAAS,UAAU,CAAC,CAAS,EAAE,CAAS;IACtC,MAAM,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAA;IAC5F,MAAM,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAA;IAC5F,IAAI,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,CAAC,CAAA;IAC5C,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,KAAK,MAAM,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,KAAK,EAAE,CAAA;IAC1C,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,GAAG,KAAK,CAAA;IACvC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAA;AACxC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,KAAkB,EAAE,CAAW,EAAE,UAA2B,gBAAgB;IACxG,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,IAAI,IAAI,GAAG,CAAC,CAAA;IAEZ,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAA;IACrF,GAAG,IAAI,OAAO,CAAC,SAAS,GAAG,SAAS,CAAA;IACpC,IAAI,IAAI,OAAO,CAAC,SAAS,CAAA;IAEzB,IAAI,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChE,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAC/F,GAAG,IAAI,OAAO,CAAC,UAAU,GAAG,UAAU,CAAA;QACtC,IAAI,IAAI,OAAO,CAAC,UAAU,CAAA;IAC5B,CAAC;IAED,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,WAAW,CAAC,CAAA;IACxD,GAAG,IAAI,OAAO,CAAC,GAAG,GAAG,GAAG,CAAA;IACxB,IAAI,IAAI,OAAO,CAAC,GAAG,CAAA;IAEnB,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC3C,CAAC;AAED,SAAS,YAAY,CAAC,KAAkB,EAAE,CAAW,EAAE,KAAc;IACnE,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,OAAO,CAAC,IAAI,CACV,KAAK;QACH,CAAC,CAAC,mCAAmC,KAAK,CAAC,QAAQ,qCAAqC,CAAC,CAAC,QAAQ,GAAG;QACrG,CAAC,CAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE,CACrC,CAAA;IACD,OAAO,CAAC,IAAI,CAAC,wBAAwB,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IACnH,IAAI,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChE,OAAO,CAAC,IAAI,CAAC,yBAAyB,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IAC/H,CAAC;IACD,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,WAAW,CAAC,CAAA;IACxD,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACvD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,QAAQ,CACtB,KAAkB,EAClB,MAAkB,EAClB,UAA2B,gBAAgB;IAE3C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAClC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAA;IACpE,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAA;IACnC,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAA;IAE5C,MAAM,MAAM,GAAsB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvD,QAAQ,EAAE,CAAC;QACX,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC;QACvC,OAAO,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC;KACvC,CAAC,CAAC,CAAA;IAEH,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACnB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,iBAAiB;YAAE,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAA;QAC7E,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,KAAK,CAAC,CAAC,QAAQ,CAAC,SAAS;YAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAA;QACrG,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IACnD,CAAC,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * L4 entrypoint — the rich library/CLI entry returning the first-class
3
+ * `RedesignArtifact`. ORCH: it composes the default wiring, runs the ONE shared
4
+ * core, and shapes nothing of its own.
5
+ *
6
+ * Responsibilities (and only these):
7
+ * - resolve the config once (operator overrides + the already-resolved
8
+ * `reference` folded into `config.reference`, the single field the core reads);
9
+ * - build the dependency bundle through `engine/wiring.buildDefaultDeps`, unless
10
+ * the caller injects its own `deps` (tests pass deterministic fakes — no live
11
+ * model, browser, or corpus disk);
12
+ * - acquire-once: load the corpus a SINGLE time per run via `deps.store.load()`
13
+ * (overridable by `corpus`) and thread it into the core, so a caller looping
14
+ * pages never re-reads it — the reproducibility discipline the core relies on;
15
+ * - stream accepted directions through `onDirection` by decorating the generator
16
+ * dep (the core sequences and does not forward streaming hooks);
17
+ * - write the artifact when `config.artifactDir` is set, then return it.
18
+ *
19
+ * Classification + deterministic measurements are produced by the existing v1
20
+ * stages UPSTREAM (`classifyEnsemble` / `gatherMeasurements`) and passed in. When
21
+ * a caller omits them this entry falls back to an honest "unknown / nothing
22
+ * measured" pair — never fabricated passing data — so retrieval fails closed in
23
+ * the guard (no exemplars of an unknown type, no reference) rather than grounding
24
+ * against a guessed page archetype.
25
+ */
26
+ import type { RedesignArtifact, RedesignDirection, ReferenceEngineDeps, ReferenceContext, PageClassification, MeasurementBundle, Exemplar } from './contracts.js';
27
+ import { type ReferenceBrain } from './engine/wiring.js';
28
+ import { type ReferenceConfigOverrides } from './config.js';
29
+ /**
30
+ * Options for {@link runReferenceRedesign}. `url` + `brain` are the only required
31
+ * inputs; everything else is an override the upstream pipeline (or a test) supplies.
32
+ */
33
+ export interface RunReferenceRedesignOptions {
34
+ url: string;
35
+ /** Text model seam, satisfied structurally by the real `Brain`. */
36
+ brain: ReferenceBrain;
37
+ /** Operator overrides merged onto the frozen defaults. */
38
+ config?: ReferenceConfigOverrides;
39
+ /** Reference resolved ONCE upstream; folded into `config.reference` here. */
40
+ reference?: ReferenceContext;
41
+ /** Upstream page classification; an honest `unknown` placeholder when omitted. */
42
+ classification?: PageClassification;
43
+ /** Upstream deterministic measurements; an honest "nothing measured" bundle when omitted. */
44
+ measurements?: MeasurementBundle;
45
+ /** Page screenshot for a future vision judge (text judge ignores it). */
46
+ screenshotPath?: string;
47
+ /** Fires once per accepted direction as generation streams. */
48
+ onDirection?: (direction: RedesignDirection) => void;
49
+ /** Pre-built deps; defaults to `buildDefaultDeps(brain, config)`. Tests inject fakes. */
50
+ deps?: ReferenceEngineDeps;
51
+ /** Pre-loaded corpus; defaults to a single `deps.store.load()` per run. */
52
+ corpus?: Exemplar[];
53
+ }
54
+ /**
55
+ * Run one page through the reference-grounded engine and return the rich
56
+ * `RedesignArtifact` (winner-first directions, ranking, grounding provenance).
57
+ */
58
+ export declare function runReferenceRedesign(opts: RunReferenceRedesignOptions): Promise<RedesignArtifact>;
59
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../../src/design/audit/reference/run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EAEjB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,QAAQ,EACT,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAC1E,OAAO,EAA0B,KAAK,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAGnF;;;GAGG;AACH,MAAM,WAAW,2BAA2B;IAC1C,GAAG,EAAE,MAAM,CAAA;IACX,mEAAmE;IACnE,KAAK,EAAE,cAAc,CAAA;IACrB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,wBAAwB,CAAA;IACjC,6EAA6E;IAC7E,SAAS,CAAC,EAAE,gBAAgB,CAAA;IAC5B,kFAAkF;IAClF,cAAc,CAAC,EAAE,kBAAkB,CAAA;IACnC,6FAA6F;IAC7F,YAAY,CAAC,EAAE,iBAAiB,CAAA;IAChC,yEAAyE;IACzE,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,iBAAiB,KAAK,IAAI,CAAA;IACpD,yFAAyF;IACzF,IAAI,CAAC,EAAE,mBAAmB,CAAA;IAC1B,2EAA2E;IAC3E,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAA;CACpB;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,2BAA2B,GAChC,OAAO,CAAC,gBAAgB,CAAC,CAuB3B"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * L4 entrypoint — the rich library/CLI entry returning the first-class
3
+ * `RedesignArtifact`. ORCH: it composes the default wiring, runs the ONE shared
4
+ * core, and shapes nothing of its own.
5
+ *
6
+ * Responsibilities (and only these):
7
+ * - resolve the config once (operator overrides + the already-resolved
8
+ * `reference` folded into `config.reference`, the single field the core reads);
9
+ * - build the dependency bundle through `engine/wiring.buildDefaultDeps`, unless
10
+ * the caller injects its own `deps` (tests pass deterministic fakes — no live
11
+ * model, browser, or corpus disk);
12
+ * - acquire-once: load the corpus a SINGLE time per run via `deps.store.load()`
13
+ * (overridable by `corpus`) and thread it into the core, so a caller looping
14
+ * pages never re-reads it — the reproducibility discipline the core relies on;
15
+ * - stream accepted directions through `onDirection` by decorating the generator
16
+ * dep (the core sequences and does not forward streaming hooks);
17
+ * - write the artifact when `config.artifactDir` is set, then return it.
18
+ *
19
+ * Classification + deterministic measurements are produced by the existing v1
20
+ * stages UPSTREAM (`classifyEnsemble` / `gatherMeasurements`) and passed in. When
21
+ * a caller omits them this entry falls back to an honest "unknown / nothing
22
+ * measured" pair — never fabricated passing data — so retrieval fails closed in
23
+ * the guard (no exemplars of an unknown type, no reference) rather than grounding
24
+ * against a guessed page archetype.
25
+ */
26
+ import { runRedesignCore } from './engine/core.js';
27
+ import { buildDefaultDeps } from './engine/wiring.js';
28
+ import { resolveReferenceConfig } from './config.js';
29
+ import { writeArtifact } from './artifact/render.js';
30
+ /**
31
+ * Run one page through the reference-grounded engine and return the rich
32
+ * `RedesignArtifact` (winner-first directions, ranking, grounding provenance).
33
+ */
34
+ export async function runReferenceRedesign(opts) {
35
+ const config = resolveReferenceConfig({
36
+ ...opts.config,
37
+ ...(opts.reference ? { reference: opts.reference } : {}),
38
+ });
39
+ const baseDeps = opts.deps ?? buildDefaultDeps(opts.brain, config);
40
+ const deps = opts.onDirection ? withDirectionStream(baseDeps, opts.onDirection) : baseDeps;
41
+ // Acquire-once: a single corpus read per run, reused across the caller's pages.
42
+ const corpus = opts.corpus ?? (await deps.store.load());
43
+ const result = await runRedesignCore(deps, {
44
+ url: opts.url,
45
+ classification: opts.classification ?? neutralClassification(),
46
+ measurements: opts.measurements ?? unmeasuredBundle(),
47
+ ...(opts.screenshotPath ? { screenshotPath: opts.screenshotPath } : {}),
48
+ corpus,
49
+ config,
50
+ });
51
+ if (config.artifactDir)
52
+ await writeArtifact(result.artifact, config.artifactDir);
53
+ return result.artifact;
54
+ }
55
+ /**
56
+ * Decorate the generator boundary so the caller's `onDirection` is injected into
57
+ * the core's generation call. The core invokes `generate(ctx, hits, { count })`
58
+ * with no streaming hook by design; composing the callback here keeps the core a
59
+ * pure sequencer while still surfacing each accepted direction as it lands.
60
+ */
61
+ function withDirectionStream(deps, onDirection) {
62
+ const generator = {
63
+ generate: (ctx, exemplars, genOpts) => deps.generator.generate(ctx, exemplars, { ...genOpts, onDirection }),
64
+ };
65
+ return { ...deps, generator };
66
+ }
67
+ /**
68
+ * The honest "no upstream classification" fallback. Only `type` (the retrieval
69
+ * hard filter) and `intent` (the low-weight job signal) are consumed by the
70
+ * engine, so the remaining fields are inert placeholders; `type: 'unknown'` with
71
+ * `confidence: 0` makes the absence explicit and lets the guard abort rather than
72
+ * grounding against a guessed archetype.
73
+ */
74
+ function neutralClassification() {
75
+ return {
76
+ type: 'unknown',
77
+ domain: 'unknown',
78
+ framework: null,
79
+ designSystem: 'unknown',
80
+ maturity: 'shipped',
81
+ intent: '',
82
+ confidence: 0,
83
+ };
84
+ }
85
+ /**
86
+ * The honest "no measurements gathered" fallback — NOT "everything passed". No
87
+ * failures are reported because nothing ran (`a11y.ran: false`, contrast
88
+ * `totalChecked: 0`), mirroring `gatherMeasurements`' own catch-fallback shape, so
89
+ * the DNA folds in absent signals and the headline floor never trips on
90
+ * fabricated pass data.
91
+ */
92
+ function unmeasuredBundle() {
93
+ return {
94
+ contrast: { totalChecked: 0, aaFailures: [], aaaFailures: [], summary: { aaPassRate: 1, aaaPassRate: 1 } },
95
+ a11y: { ran: false, violations: [], passes: 0 },
96
+ hasBlockingIssues: false,
97
+ };
98
+ }
99
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../../src/design/audit/reference/run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Design Audit report renderer.
3
+ *
4
+ * Turns scored page-audit results into the markdown report, plus the
5
+ * terminal print/format helpers the design-audit CLI handler uses to
6
+ * surface scores and ethics violations.
7
+ */
8
+ import type { DesignFinding } from '../../types.js';
9
+ import type { EthicsViolation } from './types.js';
10
+ import type { PageAuditResult } from '../../cli-design-audit.js';
11
+ /** Split "a, b , c" → ['a','b','c']. Returns undefined for empty input so the
12
+ * layered predicates can distinguish "operator did not say" from "[]". */
13
+ export declare function parseTagList(input: string | undefined): string[] | undefined;
14
+ /** Pretty-print the ethics-violation report for a set of pages. Prints
15
+ * nothing when no page tripped a rule. Each rule is shown with severity,
16
+ * remediation, and citation so the operator can act without re-running. */
17
+ export declare function printEthicsViolations(pages: Array<{
18
+ url: string;
19
+ ethicsViolations?: EthicsViolation[];
20
+ }>): void;
21
+ /** Lowest rollup cap across all violated pages, or undefined if none fired. */
22
+ export declare function lowestRollupCap(pages: Array<{
23
+ ethicsViolations?: EthicsViolation[];
24
+ }>): number | undefined;
25
+ /**
26
+ * Layer 1 — print the per-dimension breakdown for one page when an
27
+ * `auditResult` is attached. Five dim lines + one rollup line; each shows
28
+ * score, range, and confidence so an agent can reason about uncertainty.
29
+ */
30
+ export declare function printScoreBreakdown(page: {
31
+ auditResult?: unknown;
32
+ }): void;
33
+ declare function generateReport(results: PageAuditResult[], profile: string | undefined, topFixes?: DesignFinding[], redesignSection?: string): string;
34
+ export { generateReport as generateDesignReport };
35
+ //# sourceMappingURL=report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/design/audit/report.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAEhE;2EAC2E;AAC3E,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,GAAG,SAAS,CAI5E;AAED;;4EAE4E;AAC5E,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAA;CAAE,CAAC,GAAG,IAAI,CAc/G;AAED,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC;IAAE,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAA;CAAE,CAAC,GAAG,MAAM,GAAG,SAAS,CAG1G;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAyBzE;AAMD,iBAAS,cAAc,CACrB,OAAO,EAAE,eAAe,EAAE,EAC1B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,QAAQ,GAAE,aAAa,EAAO,EAC9B,eAAe,CAAC,EAAE,MAAM,GACvB,MAAM,CA6HR;AAID,OAAO,EAAE,cAAc,IAAI,oBAAoB,EAAE,CAAA"}
@@ -0,0 +1,195 @@
1
+ /**
2
+ * Design Audit report renderer.
3
+ *
4
+ * Turns scored page-audit results into the markdown report, plus the
5
+ * terminal print/format helpers the design-audit CLI handler uses to
6
+ * surface scores and ethics violations.
7
+ */
8
+ import chalk from 'chalk';
9
+ /** Split "a, b , c" → ['a','b','c']. Returns undefined for empty input so the
10
+ * layered predicates can distinguish "operator did not say" from "[]". */
11
+ export function parseTagList(input) {
12
+ if (!input)
13
+ return undefined;
14
+ const tags = input.split(',').map(s => s.trim()).filter(Boolean);
15
+ return tags.length > 0 ? tags : undefined;
16
+ }
17
+ /** Pretty-print the ethics-violation report for a set of pages. Prints
18
+ * nothing when no page tripped a rule. Each rule is shown with severity,
19
+ * remediation, and citation so the operator can act without re-running. */
20
+ export function printEthicsViolations(pages) {
21
+ const offenders = pages.filter(p => (p.ethicsViolations?.length ?? 0) > 0);
22
+ if (offenders.length === 0)
23
+ return;
24
+ console.log('');
25
+ console.log(` ${chalk.bgRed.white.bold(' ETHICS VIOLATIONS ')}`);
26
+ for (const page of offenders) {
27
+ console.log(` ${chalk.dim('Page:')} ${page.url}`);
28
+ for (const v of page.ethicsViolations ?? []) {
29
+ const sevColor = v.severity === 'critical-floor' ? chalk.red : chalk.yellow;
30
+ console.log(` ${sevColor('•')} ${chalk.bold(v.ruleId)} ${chalk.dim('—')} ${sevColor(v.severity)} ${chalk.dim(`(rollup capped at ${v.rollupCap})`)}`);
31
+ console.log(` ${chalk.dim('fix:')} ${v.remediation}`);
32
+ if (v.citation)
33
+ console.log(` ${chalk.dim('cite:')} ${v.citation}`);
34
+ }
35
+ }
36
+ }
37
+ /** Lowest rollup cap across all violated pages, or undefined if none fired. */
38
+ export function lowestRollupCap(pages) {
39
+ const caps = pages.flatMap(p => p.ethicsViolations ?? []).map(v => v.rollupCap);
40
+ return caps.length === 0 ? undefined : Math.min(...caps);
41
+ }
42
+ /**
43
+ * Layer 1 — print the per-dimension breakdown for one page when an
44
+ * `auditResult` is attached. Five dim lines + one rollup line; each shows
45
+ * score, range, and confidence so an agent can reason about uncertainty.
46
+ */
47
+ export function printScoreBreakdown(page) {
48
+ const result = page.auditResult;
49
+ if (!result || !result.scores || !result.rollup)
50
+ return;
51
+ const dimOrder = ['product_intent', 'visual_craft', 'trust_clarity', 'workflow', 'content_ia'];
52
+ for (const dim of dimOrder) {
53
+ const s = result.scores[dim];
54
+ if (!s)
55
+ continue;
56
+ const sevColor = s.score >= 8 ? chalk.green : s.score >= 5 ? chalk.yellow : chalk.red;
57
+ const confColor = s.confidence === 'high' ? chalk.green : s.confidence === 'medium' ? chalk.yellow : chalk.dim;
58
+ console.log(` ${chalk.dim(dim.padEnd(15))} ${sevColor(`${s.score}/10`)} ${chalk.dim(`[${s.range[0]}-${s.range[1]}]`)} ${confColor(s.confidence)}`);
59
+ }
60
+ const r = result.rollup;
61
+ const rColor = r.score >= 8 ? chalk.green : r.score >= 5 ? chalk.yellow : chalk.red;
62
+ const confColor = r.confidence === 'high' ? chalk.green : r.confidence === 'medium' ? chalk.yellow : chalk.dim;
63
+ console.log(` ${chalk.dim('rollup'.padEnd(15))} ${rColor(`${r.score.toFixed(1)}/10`)} ${chalk.dim(`[${r.range[0].toFixed(1)}-${r.range[1].toFixed(1)}]`)} ${confColor(r.confidence)} ${chalk.dim(r.rule)}`);
64
+ }
65
+ // ---------------------------------------------------------------------------
66
+ // Report generation
67
+ // ---------------------------------------------------------------------------
68
+ function generateReport(results, profile, topFixes = [], redesignSection) {
69
+ const lines = [];
70
+ const avgScore = results.length > 0
71
+ ? results.reduce((sum, r) => sum + r.score, 0) / results.length
72
+ : 0;
73
+ const allFindings = results.flatMap(r => r.findings);
74
+ const critical = allFindings.filter(f => f.severity === 'critical').length;
75
+ const major = allFindings.filter(f => f.severity === 'major').length;
76
+ const minor = allFindings.filter(f => f.severity === 'minor').length;
77
+ const totalTokens = results.reduce((sum, r) => sum + (r.tokensUsed ?? 0), 0);
78
+ lines.push('# Design Audit Report');
79
+ lines.push('');
80
+ if (profile) {
81
+ lines.push(`**Profile:** ${profile}`);
82
+ }
83
+ // Surface per-page classification when present.
84
+ const classifications = results
85
+ .filter(r => r.classification)
86
+ .map(r => `${r.url}: ${r.classification.type}/${r.classification.domain} (${r.classification.maturity})`);
87
+ if (classifications.length > 0) {
88
+ lines.push(`**Auto-classified:**`);
89
+ for (const c of classifications)
90
+ lines.push(`- ${c}`);
91
+ }
92
+ lines.push(`**Pages audited:** ${results.length}`);
93
+ lines.push(`**Overall score:** ${avgScore.toFixed(1)}/10`);
94
+ lines.push(`**Findings:** ${allFindings.length} (${critical} critical, ${major} major, ${minor} minor)`);
95
+ if (totalTokens > 0)
96
+ lines.push(`**Tokens used:** ${totalTokens.toLocaleString()}`);
97
+ lines.push('');
98
+ // Score bar
99
+ const scoreBar = '█'.repeat(Math.round(avgScore)) + '░'.repeat(10 - Math.round(avgScore));
100
+ lines.push(`\`${scoreBar}\` ${avgScore.toFixed(1)}/10`);
101
+ lines.push('');
102
+ // ── Top Fixes (by ROI) — the headline section users actually read first ──
103
+ if (topFixes.length > 0) {
104
+ lines.push('## Top Fixes (by ROI)');
105
+ lines.push('');
106
+ lines.push('Fix these first — sorted by impact × blast / effort:');
107
+ lines.push('');
108
+ for (let i = 0; i < topFixes.length; i++) {
109
+ const f = topFixes[i];
110
+ const tags = [];
111
+ if (f.pageCount && f.pageCount >= 2)
112
+ tags.push(`appears on ${f.pageCount} pages`);
113
+ if (f.blast === 'system')
114
+ tags.push('SYSTEMIC');
115
+ const tagStr = tags.length > 0 ? ` _(${tags.join(', ')})_` : '';
116
+ const roiStr = f.roi !== undefined ? f.roi.toFixed(1) : '—';
117
+ lines.push(`### ${i + 1}. [${f.severity}] ${f.description}${tagStr}`);
118
+ lines.push('');
119
+ lines.push(`- **ROI:** ${roiStr} · Impact ${f.impact ?? '—'} · Effort ${f.effort ?? '—'} · Blast ${f.blast ?? '—'}`);
120
+ lines.push(`- **Location:** ${f.location}`);
121
+ lines.push(`- **Fix:** ${f.suggestion}`);
122
+ if (f.cssSelector && f.cssFix) {
123
+ lines.push(`- **CSS:** \`${f.cssSelector} { ${f.cssFix} }\``);
124
+ }
125
+ lines.push('');
126
+ }
127
+ lines.push('---');
128
+ lines.push('');
129
+ }
130
+ // ── Redesign directions (reference-grounded mode only) — a pre-rendered,
131
+ // compact projection of the rich artifact: winner in brief + ranked alternates,
132
+ // pointing at the full `<slug>.redesign.md`. Undefined on the v1 path, so the
133
+ // default report stays byte-identical. ──
134
+ if (redesignSection) {
135
+ lines.push(redesignSection);
136
+ lines.push('');
137
+ lines.push('---');
138
+ lines.push('');
139
+ }
140
+ // Per-page results
141
+ for (const result of results) {
142
+ lines.push(`## ${result.url}`);
143
+ lines.push('');
144
+ const pageBar = '█'.repeat(Math.round(result.score)) + '░'.repeat(10 - Math.round(result.score));
145
+ lines.push(`**Score:** \`${pageBar}\` ${result.score}/10`);
146
+ if (result.summary)
147
+ lines.push(`**Summary:** ${result.summary}`);
148
+ if (result.error)
149
+ lines.push(`**Error:** ${result.error}`);
150
+ lines.push('');
151
+ if (result.strengths.length > 0) {
152
+ lines.push('**Strengths:**');
153
+ for (const s of result.strengths)
154
+ lines.push(`- ${s}`);
155
+ lines.push('');
156
+ }
157
+ if (result.designSystemScore) {
158
+ lines.push('**Design System Breakdown:**');
159
+ lines.push('');
160
+ const ds = result.designSystemScore;
161
+ // Universal dimensions in fixed order, then any custom dimensions (alpha)
162
+ const universal = ['layout', 'typography', 'color', 'spacing', 'components', 'interactions', 'accessibility', 'polish'];
163
+ const custom = Object.keys(ds).filter(k => !universal.includes(k)).sort();
164
+ for (const key of [...universal, ...custom]) {
165
+ if (typeof ds[key] === 'number') {
166
+ const bar = '█'.repeat(Math.round(ds[key])) + '░'.repeat(10 - Math.round(ds[key]));
167
+ lines.push(`- ${key}: \`${bar}\` ${ds[key]}/10`);
168
+ }
169
+ }
170
+ lines.push('');
171
+ }
172
+ if (result.findings.length > 0) {
173
+ lines.push('**Findings:**');
174
+ lines.push('');
175
+ lines.push('| Sev | Category | Description | Location | Fix | CSS |');
176
+ lines.push('|-----|----------|-------------|----------|-----|-----|');
177
+ for (const f of result.findings) {
178
+ const esc = (s) => s.replace(/\|/g, '\\|').replace(/\n/g, ' ').slice(0, 120);
179
+ const icon = f.severity === 'critical' ? '🔴' : f.severity === 'major' ? '🟡' : '⚪';
180
+ const cssFix = f.cssFix ? `\`${esc(f.cssFix)}\`` : '';
181
+ lines.push(`| ${icon} ${f.severity} | ${f.category} | ${esc(f.description)} | ${esc(f.location)} | ${esc(f.suggestion)} | ${cssFix} |`);
182
+ }
183
+ lines.push('');
184
+ }
185
+ else if (!result.error) {
186
+ lines.push('No issues found.');
187
+ lines.push('');
188
+ }
189
+ }
190
+ return lines.join('\n');
191
+ }
192
+ // Exported under a distinct name to avoid clashing with test-report.ts's
193
+ // unrelated `generateReport`. Internal name kept for parity with prior history.
194
+ export { generateReport as generateDesignReport };
195
+ //# sourceMappingURL=report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../../src/design/audit/report.ts"],"names":[],"mappings":"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"}