@tangle-network/browser-agent-driver 0.29.0 → 0.31.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 (276) hide show
  1. package/dist/brain/index.d.ts +15 -1
  2. package/dist/brain/index.d.ts.map +1 -1
  3. package/dist/brain/index.js +67 -5
  4. package/dist/brain/index.js.map +1 -1
  5. package/dist/cli-ack-patch.d.ts +39 -0
  6. package/dist/cli-ack-patch.d.ts.map +1 -0
  7. package/dist/cli-ack-patch.js +47 -0
  8. package/dist/cli-ack-patch.js.map +1 -0
  9. package/dist/cli-design-audit.d.ts +16 -0
  10. package/dist/cli-design-audit.d.ts.map +1 -1
  11. package/dist/cli-design-audit.js +232 -7
  12. package/dist/cli-design-audit.js.map +1 -1
  13. package/dist/cli-jobs.d.ts +13 -0
  14. package/dist/cli-jobs.d.ts.map +1 -0
  15. package/dist/cli-jobs.js +262 -0
  16. package/dist/cli-jobs.js.map +1 -0
  17. package/dist/cli-patterns.d.ts +26 -0
  18. package/dist/cli-patterns.d.ts.map +1 -0
  19. package/dist/cli-patterns.js +49 -0
  20. package/dist/cli-patterns.js.map +1 -0
  21. package/dist/cli-reports.d.ts +12 -0
  22. package/dist/cli-reports.d.ts.map +1 -0
  23. package/dist/cli-reports.js +97 -0
  24. package/dist/cli-reports.js.map +1 -0
  25. package/dist/cli-ui.d.ts.map +1 -1
  26. package/dist/cli-ui.js +5 -1
  27. package/dist/cli-ui.js.map +1 -1
  28. package/dist/cli.js +52 -2
  29. package/dist/cli.js.map +1 -1
  30. package/dist/config.d.ts +4 -4
  31. package/dist/config.d.ts.map +1 -1
  32. package/dist/design/audit/attribution/aggregate.d.ts +16 -0
  33. package/dist/design/audit/attribution/aggregate.d.ts.map +1 -0
  34. package/dist/design/audit/attribution/aggregate.js +81 -0
  35. package/dist/design/audit/attribution/aggregate.js.map +1 -0
  36. package/dist/design/audit/attribution/store.d.ts +36 -0
  37. package/dist/design/audit/attribution/store.d.ts.map +1 -0
  38. package/dist/design/audit/attribution/store.js +108 -0
  39. package/dist/design/audit/attribution/store.js.map +1 -0
  40. package/dist/design/audit/attribution/types.d.ts +13 -0
  41. package/dist/design/audit/attribution/types.d.ts.map +1 -0
  42. package/dist/design/audit/attribution/types.js +10 -0
  43. package/dist/design/audit/attribution/types.js.map +1 -0
  44. package/dist/design/audit/classify-ensemble.d.ts +46 -0
  45. package/dist/design/audit/classify-ensemble.d.ts.map +1 -0
  46. package/dist/design/audit/classify-ensemble.js +207 -0
  47. package/dist/design/audit/classify-ensemble.js.map +1 -0
  48. package/dist/design/audit/ethics/check.d.ts +59 -0
  49. package/dist/design/audit/ethics/check.d.ts.map +1 -0
  50. package/dist/design/audit/ethics/check.js +137 -0
  51. package/dist/design/audit/ethics/check.js.map +1 -0
  52. package/dist/design/audit/ethics/loader.d.ts +21 -0
  53. package/dist/design/audit/ethics/loader.d.ts.map +1 -0
  54. package/dist/design/audit/ethics/loader.js +207 -0
  55. package/dist/design/audit/ethics/loader.js.map +1 -0
  56. package/dist/design/audit/ethics/rules/finance.yaml +37 -0
  57. package/dist/design/audit/ethics/rules/kids.yaml +37 -0
  58. package/dist/design/audit/ethics/rules/legal.yaml +35 -0
  59. package/dist/design/audit/ethics/rules/medical.yaml +36 -0
  60. package/dist/design/audit/evaluate.d.ts +69 -0
  61. package/dist/design/audit/evaluate.d.ts.map +1 -1
  62. package/dist/design/audit/evaluate.js +417 -55
  63. package/dist/design/audit/evaluate.js.map +1 -1
  64. package/dist/design/audit/first-principles-mode.d.ts +42 -0
  65. package/dist/design/audit/first-principles-mode.d.ts.map +1 -0
  66. package/dist/design/audit/first-principles-mode.js +77 -0
  67. package/dist/design/audit/first-principles-mode.js.map +1 -0
  68. package/dist/design/audit/modality/android.d.ts +14 -0
  69. package/dist/design/audit/modality/android.d.ts.map +1 -0
  70. package/dist/design/audit/modality/android.js +18 -0
  71. package/dist/design/audit/modality/android.js.map +1 -0
  72. package/dist/design/audit/modality/html.d.ts +22 -0
  73. package/dist/design/audit/modality/html.d.ts.map +1 -0
  74. package/dist/design/audit/modality/html.js +51 -0
  75. package/dist/design/audit/modality/html.js.map +1 -0
  76. package/dist/design/audit/modality/index.d.ts +8 -0
  77. package/dist/design/audit/modality/index.d.ts.map +1 -0
  78. package/dist/design/audit/modality/index.js +15 -0
  79. package/dist/design/audit/modality/index.js.map +1 -0
  80. package/dist/design/audit/modality/ios.d.ts +16 -0
  81. package/dist/design/audit/modality/ios.d.ts.map +1 -0
  82. package/dist/design/audit/modality/ios.js +19 -0
  83. package/dist/design/audit/modality/ios.js.map +1 -0
  84. package/dist/design/audit/modality/types.d.ts +9 -0
  85. package/dist/design/audit/modality/types.d.ts.map +1 -0
  86. package/dist/design/audit/modality/types.js +9 -0
  87. package/dist/design/audit/modality/types.js.map +1 -0
  88. package/dist/design/audit/patches/index.d.ts +8 -0
  89. package/dist/design/audit/patches/index.d.ts.map +1 -0
  90. package/dist/design/audit/patches/index.js +5 -0
  91. package/dist/design/audit/patches/index.js.map +1 -0
  92. package/dist/design/audit/patches/parse.d.ts +29 -0
  93. package/dist/design/audit/patches/parse.d.ts.map +1 -0
  94. package/dist/design/audit/patches/parse.js +153 -0
  95. package/dist/design/audit/patches/parse.js.map +1 -0
  96. package/dist/design/audit/patches/render.d.ts +20 -0
  97. package/dist/design/audit/patches/render.d.ts.map +1 -0
  98. package/dist/design/audit/patches/render.js +55 -0
  99. package/dist/design/audit/patches/render.js.map +1 -0
  100. package/dist/design/audit/patches/severity-enforcement.d.ts +23 -0
  101. package/dist/design/audit/patches/severity-enforcement.d.ts.map +1 -0
  102. package/dist/design/audit/patches/severity-enforcement.js +42 -0
  103. package/dist/design/audit/patches/severity-enforcement.js.map +1 -0
  104. package/dist/design/audit/patches/validate.d.ts +34 -0
  105. package/dist/design/audit/patches/validate.d.ts.map +1 -0
  106. package/dist/design/audit/patches/validate.js +53 -0
  107. package/dist/design/audit/patches/validate.js.map +1 -0
  108. package/dist/design/audit/patterns/match.d.ts +24 -0
  109. package/dist/design/audit/patterns/match.d.ts.map +1 -0
  110. package/dist/design/audit/patterns/match.js +48 -0
  111. package/dist/design/audit/patterns/match.js.map +1 -0
  112. package/dist/design/audit/patterns/mine.d.ts +31 -0
  113. package/dist/design/audit/patterns/mine.d.ts.map +1 -0
  114. package/dist/design/audit/patterns/mine.js +35 -0
  115. package/dist/design/audit/patterns/mine.js.map +1 -0
  116. package/dist/design/audit/patterns/store.d.ts +14 -0
  117. package/dist/design/audit/patterns/store.d.ts.map +1 -0
  118. package/dist/design/audit/patterns/store.js +53 -0
  119. package/dist/design/audit/patterns/store.js.map +1 -0
  120. package/dist/design/audit/patterns/types.d.ts +53 -0
  121. package/dist/design/audit/patterns/types.d.ts.map +1 -0
  122. package/dist/design/audit/patterns/types.js +13 -0
  123. package/dist/design/audit/patterns/types.js.map +1 -0
  124. package/dist/design/audit/pipeline.d.ts +26 -0
  125. package/dist/design/audit/pipeline.d.ts.map +1 -1
  126. package/dist/design/audit/pipeline.js +131 -4
  127. package/dist/design/audit/pipeline.js.map +1 -1
  128. package/dist/design/audit/rubric/anchor-loader.d.ts +44 -0
  129. package/dist/design/audit/rubric/anchor-loader.d.ts.map +1 -0
  130. package/dist/design/audit/rubric/anchor-loader.js +210 -0
  131. package/dist/design/audit/rubric/anchor-loader.js.map +1 -0
  132. package/dist/design/audit/rubric/anchors/blog.yaml +33 -0
  133. package/dist/design/audit/rubric/anchors/dashboard.yaml +35 -0
  134. package/dist/design/audit/rubric/anchors/docs.yaml +35 -0
  135. package/dist/design/audit/rubric/anchors/ecommerce.yaml +33 -0
  136. package/dist/design/audit/rubric/anchors/marketing.yaml +34 -0
  137. package/dist/design/audit/rubric/anchors/saas-app.yaml +38 -0
  138. package/dist/design/audit/rubric/anchors/social.yaml +33 -0
  139. package/dist/design/audit/rubric/anchors/tool.yaml +33 -0
  140. package/dist/design/audit/rubric/anchors/utility.yaml +33 -0
  141. package/dist/design/audit/rubric/fragments/audience-clinician.md +42 -0
  142. package/dist/design/audit/rubric/fragments/audience-developer.md +40 -0
  143. package/dist/design/audit/rubric/fragments/audience-kids.md +35 -0
  144. package/dist/design/audit/rubric/fragments/audience-vulnerability-minor-facing.md +37 -0
  145. package/dist/design/audit/rubric/fragments/first-principles.md +65 -0
  146. package/dist/design/audit/rubric/fragments/modality-mobile.md +39 -0
  147. package/dist/design/audit/rubric/fragments/modality-tablet.md +35 -0
  148. package/dist/design/audit/rubric/fragments/regulatory-coppa.md +32 -0
  149. package/dist/design/audit/rubric/fragments/regulatory-gdpr.md +33 -0
  150. package/dist/design/audit/rubric/fragments/regulatory-hipaa.md +36 -0
  151. package/dist/design/audit/rubric/fragments/universal-product-intent.md +48 -0
  152. package/dist/design/audit/rubric/loader.d.ts +26 -6
  153. package/dist/design/audit/rubric/loader.d.ts.map +1 -1
  154. package/dist/design/audit/rubric/loader.js +77 -27
  155. package/dist/design/audit/rubric/loader.js.map +1 -1
  156. package/dist/design/audit/rubric/rollup-weights.d.ts +25 -0
  157. package/dist/design/audit/rubric/rollup-weights.d.ts.map +1 -0
  158. package/dist/design/audit/rubric/rollup-weights.js +51 -0
  159. package/dist/design/audit/rubric/rollup-weights.js.map +1 -0
  160. package/dist/design/audit/types.d.ts +28 -0
  161. package/dist/design/audit/types.d.ts.map +1 -1
  162. package/dist/design/audit/v2/build-result.d.ts +47 -0
  163. package/dist/design/audit/v2/build-result.d.ts.map +1 -0
  164. package/dist/design/audit/v2/build-result.js +163 -0
  165. package/dist/design/audit/v2/build-result.js.map +1 -0
  166. package/dist/design/audit/v2/score.d.ts +49 -0
  167. package/dist/design/audit/v2/score.d.ts.map +1 -0
  168. package/dist/design/audit/v2/score.js +211 -0
  169. package/dist/design/audit/v2/score.js.map +1 -0
  170. package/dist/design/audit/v2/types.d.ts +431 -0
  171. package/dist/design/audit/v2/types.d.ts.map +1 -0
  172. package/dist/design/audit/v2/types.js +26 -0
  173. package/dist/design/audit/v2/types.js.map +1 -0
  174. package/dist/discover/index.d.ts +16 -0
  175. package/dist/discover/index.d.ts.map +1 -0
  176. package/dist/discover/index.js +25 -0
  177. package/dist/discover/index.js.map +1 -0
  178. package/dist/discover/wayback.d.ts +49 -0
  179. package/dist/discover/wayback.d.ts.map +1 -0
  180. package/dist/discover/wayback.js +123 -0
  181. package/dist/discover/wayback.js.map +1 -0
  182. package/dist/jobs/anti-bot.d.ts +19 -0
  183. package/dist/jobs/anti-bot.d.ts.map +1 -0
  184. package/dist/jobs/anti-bot.js +64 -0
  185. package/dist/jobs/anti-bot.js.map +1 -0
  186. package/dist/jobs/cost-estimate.d.ts +12 -0
  187. package/dist/jobs/cost-estimate.d.ts.map +1 -0
  188. package/dist/jobs/cost-estimate.js +21 -0
  189. package/dist/jobs/cost-estimate.js.map +1 -0
  190. package/dist/jobs/cost-history.d.ts +19 -0
  191. package/dist/jobs/cost-history.d.ts.map +1 -0
  192. package/dist/jobs/cost-history.js +42 -0
  193. package/dist/jobs/cost-history.js.map +1 -0
  194. package/dist/jobs/index.d.ts +31 -0
  195. package/dist/jobs/index.d.ts.map +1 -0
  196. package/dist/jobs/index.js +37 -0
  197. package/dist/jobs/index.js.map +1 -0
  198. package/dist/jobs/orchestrator.d.ts +42 -0
  199. package/dist/jobs/orchestrator.d.ts.map +1 -0
  200. package/dist/jobs/orchestrator.js +282 -0
  201. package/dist/jobs/orchestrator.js.map +1 -0
  202. package/dist/jobs/queue.d.ts +45 -0
  203. package/dist/jobs/queue.d.ts.map +1 -0
  204. package/dist/jobs/queue.js +114 -0
  205. package/dist/jobs/queue.js.map +1 -0
  206. package/dist/jobs/retry.d.ts +36 -0
  207. package/dist/jobs/retry.d.ts.map +1 -0
  208. package/dist/jobs/retry.js +77 -0
  209. package/dist/jobs/retry.js.map +1 -0
  210. package/dist/jobs/store.d.ts +31 -0
  211. package/dist/jobs/store.d.ts.map +1 -0
  212. package/dist/jobs/store.js +92 -0
  213. package/dist/jobs/store.js.map +1 -0
  214. package/dist/jobs/types.d.ts +106 -0
  215. package/dist/jobs/types.d.ts.map +1 -0
  216. package/dist/jobs/types.js +13 -0
  217. package/dist/jobs/types.js.map +1 -0
  218. package/dist/provider-defaults.d.ts +1 -1
  219. package/dist/provider-defaults.d.ts.map +1 -1
  220. package/dist/provider-defaults.js +8 -0
  221. package/dist/provider-defaults.js.map +1 -1
  222. package/dist/reports/aggregate.d.ts +38 -0
  223. package/dist/reports/aggregate.d.ts.map +1 -0
  224. package/dist/reports/aggregate.js +145 -0
  225. package/dist/reports/aggregate.js.map +1 -0
  226. package/dist/reports/index.d.ts +21 -0
  227. package/dist/reports/index.d.ts.map +1 -0
  228. package/dist/reports/index.js +15 -0
  229. package/dist/reports/index.js.map +1 -0
  230. package/dist/reports/narrate.d.ts +19 -0
  231. package/dist/reports/narrate.d.ts.map +1 -0
  232. package/dist/reports/narrate.js +40 -0
  233. package/dist/reports/narrate.js.map +1 -0
  234. package/dist/reports/templates.d.ts +43 -0
  235. package/dist/reports/templates.d.ts.map +1 -0
  236. package/dist/reports/templates.js +200 -0
  237. package/dist/reports/templates.js.map +1 -0
  238. package/dist/reports/tokens.d.ts +77 -0
  239. package/dist/reports/tokens.d.ts.map +1 -0
  240. package/dist/reports/tokens.js +88 -0
  241. package/dist/reports/tokens.js.map +1 -0
  242. package/dist/reports/tools.d.ts +76 -0
  243. package/dist/reports/tools.d.ts.map +1 -0
  244. package/dist/reports/tools.js +205 -0
  245. package/dist/reports/tools.js.map +1 -0
  246. package/dist/reports/types.d.ts +51 -0
  247. package/dist/reports/types.d.ts.map +1 -0
  248. package/dist/reports/types.js +9 -0
  249. package/dist/reports/types.js.map +1 -0
  250. package/dist/supervisor/critic.d.ts +1 -1
  251. package/dist/supervisor/critic.d.ts.map +1 -1
  252. package/dist/supervisor/critic.js +50 -5
  253. package/dist/supervisor/critic.js.map +1 -1
  254. package/dist/telemetry/client.d.ts +42 -0
  255. package/dist/telemetry/client.d.ts.map +1 -0
  256. package/dist/telemetry/client.js +203 -0
  257. package/dist/telemetry/client.js.map +1 -0
  258. package/dist/telemetry/hash.d.ts +4 -0
  259. package/dist/telemetry/hash.d.ts.map +1 -0
  260. package/dist/telemetry/hash.js +7 -0
  261. package/dist/telemetry/hash.js.map +1 -0
  262. package/dist/telemetry/index.d.ts +6 -0
  263. package/dist/telemetry/index.d.ts.map +1 -0
  264. package/dist/telemetry/index.js +5 -0
  265. package/dist/telemetry/index.js.map +1 -0
  266. package/dist/telemetry/schema.d.ts +85 -0
  267. package/dist/telemetry/schema.d.ts.map +1 -0
  268. package/dist/telemetry/schema.js +13 -0
  269. package/dist/telemetry/schema.js.map +1 -0
  270. package/dist/telemetry/sink.d.ts +46 -0
  271. package/dist/telemetry/sink.d.ts.map +1 -0
  272. package/dist/telemetry/sink.js +97 -0
  273. package/dist/telemetry/sink.js.map +1 -0
  274. package/dist/types.d.ts +5 -5
  275. package/dist/types.d.ts.map +1 -1
  276. package/package.json +5 -1
@@ -124,41 +124,59 @@ export function loadFragments(dir = BUILTIN_FRAGMENTS_DIR) {
124
124
  .map(f => parseFragment(path.join(dir, f)));
125
125
  }
126
126
  /**
127
- * Predicate evaluator. Returns true if the fragment applies to the classification.
127
+ * Predicate evaluator. Returns true if the fragment applies to the classification
128
+ * or the optional Layer 6 context (audience / modality / regulatoryContext /
129
+ * audienceVulnerability hints).
128
130
  *
129
131
  * Universal fragments always apply.
130
- * Type/domain/maturity/designSystem predicates are AND-combined: all listed
131
- * fields must match. Within a field, the classification value must be in the
132
- * fragment's allowed set.
132
+ * Predicate groups are OR-combined at the group level: a fragment fires if ANY
133
+ * one of its predicate groups matches. Within a group, list membership is used
134
+ * (the classification/context value must appear in the fragment's allowed set).
135
+ *
136
+ * Layer 6 predicates are additive: they can cause a fragment to fire even when
137
+ * no type/domain predicate matches, enabling composition across independent
138
+ * predicate dimensions.
133
139
  */
134
- export function fragmentApplies(fragment, classification) {
140
+ export function fragmentApplies(fragment, classification, ctx) {
135
141
  const w = fragment.appliesWhen;
136
142
  if (w.universal)
137
143
  return true;
138
- if (w.type && w.type.length > 0) {
139
- if (!w.type.includes(classification.type))
144
+ // --- Layer 1 classification predicates (AND-combined when all set) ---
145
+ const classificationPredicateSet = !!w.type?.length || !!w.domain?.length || !!w.maturity?.length || !!w.designSystem?.length;
146
+ if (classificationPredicateSet) {
147
+ if (w.type?.length && !w.type.includes(classification.type))
140
148
  return false;
141
- }
142
- if (w.domain && w.domain.length > 0) {
143
- const domainMatch = w.domain.some(d => classification.domain.toLowerCase().includes(d.toLowerCase()));
144
- if (!domainMatch)
149
+ if (w.domain?.length) {
150
+ const domainMatch = w.domain.some(d => classification.domain.toLowerCase().includes(d.toLowerCase()));
151
+ if (!domainMatch)
152
+ return false;
153
+ }
154
+ if (w.maturity?.length && !w.maturity.includes(classification.maturity))
145
155
  return false;
146
- }
147
- if (w.maturity && w.maturity.length > 0) {
148
- if (!w.maturity.includes(classification.maturity))
156
+ if (w.designSystem?.length && !w.designSystem.includes(classification.designSystem))
149
157
  return false;
158
+ return true;
150
159
  }
151
- if (w.designSystem && w.designSystem.length > 0) {
152
- if (!w.designSystem.includes(classification.designSystem))
153
- return false;
160
+ // --- Layer 6 context predicates (any overlap fires the fragment) ---
161
+ if (ctx) {
162
+ if (w.audience?.length && ctx.audience?.length) {
163
+ if (w.audience.some(a => ctx.audience.includes(a)))
164
+ return true;
165
+ }
166
+ if (w.modality?.length && ctx.modality?.length) {
167
+ if (w.modality.some(m => ctx.modality.includes(m)))
168
+ return true;
169
+ }
170
+ if (w.regulatoryContext?.length && ctx.regulatoryContext?.length) {
171
+ if (w.regulatoryContext.some(r => ctx.regulatoryContext.includes(r)))
172
+ return true;
173
+ }
174
+ if (w.audienceVulnerability?.length && ctx.audienceVulnerability?.length) {
175
+ if (w.audienceVulnerability.some(av => ctx.audienceVulnerability.includes(av)))
176
+ return true;
177
+ }
154
178
  }
155
- // If at least one predicate field was set and all matched, apply.
156
- // If NO predicates were set and not universal, don't apply (be conservative).
157
- const hasPredicate = !!w.type?.length ||
158
- !!w.domain?.length ||
159
- !!w.maturity?.length ||
160
- !!w.designSystem?.length;
161
- return hasPredicate;
179
+ return false;
162
180
  }
163
181
  /**
164
182
  * Compose a rubric from a classification.
@@ -166,14 +184,15 @@ export function fragmentApplies(fragment, classification) {
166
184
  * @param classification - the page classification
167
185
  * @param fragments - all loaded fragments (defaults to builtin)
168
186
  * @param userFragmentsDir - optional path to user-supplied fragments
187
+ * @param ctx - optional Layer 6 context for audience/modality/regulatory predicates
169
188
  */
170
- export function composeRubric(classification, fragments, userFragmentsDir) {
189
+ export function composeRubric(classification, fragments, userFragmentsDir, ctx) {
171
190
  const all = [
172
191
  ...(fragments ?? loadFragments(BUILTIN_FRAGMENTS_DIR)),
173
192
  ...(userFragmentsDir ? loadFragments(userFragmentsDir) : []),
174
193
  ];
175
194
  const matched = all
176
- .filter(f => fragmentApplies(f, classification))
195
+ .filter(f => fragmentApplies(f, classification, ctx))
177
196
  .sort((a, b) => WEIGHT_ORDER[a.weight] - WEIGHT_ORDER[b.weight]);
178
197
  const body = matched
179
198
  .map(f => `## ${f.title}\n\n${f.body}`)
@@ -198,10 +217,14 @@ export function composeRubric(classification, fragments, userFragmentsDir) {
198
217
  */
199
218
  export function composeRubricFromProfile(profile, fragmentsOverride) {
200
219
  const all = fragmentsOverride ?? loadFragments(BUILTIN_FRAGMENTS_DIR);
220
+ const normalizedProfile = profile.toLowerCase();
221
+ const profileFragmentIds = profileToFragmentIds(normalizedProfile);
201
222
  const wanted = new Set([
202
- `type-${profile}`,
223
+ ...profileFragmentIds,
203
224
  'universal-foundation',
225
+ 'universal-product-intent',
204
226
  'universal-calibration',
227
+ 'universal-effort-anchor',
205
228
  ]);
206
229
  const matched = all
207
230
  .filter(f => wanted.has(f.id))
@@ -213,4 +236,31 @@ export function composeRubricFromProfile(profile, fragmentsOverride) {
213
236
  const dimensions = Array.from(new Set(matched.map(f => f.dimension).filter((d) => Boolean(d))));
214
237
  return { fragments: matched, body, calibration, dimensions };
215
238
  }
239
+ function profileToFragmentIds(profile) {
240
+ switch (profile) {
241
+ case 'saas':
242
+ case 'app':
243
+ case 'dashboard':
244
+ return ['type-saas-app'];
245
+ case 'defi':
246
+ case 'crypto':
247
+ case 'web3':
248
+ return ['type-saas-app', 'domain-crypto'];
249
+ case 'devtools':
250
+ case 'developer':
251
+ case 'dev':
252
+ return ['type-saas-app', 'domain-devtools'];
253
+ case 'ai':
254
+ case 'ml':
255
+ case 'llm':
256
+ return ['type-saas-app', 'domain-ai'];
257
+ case 'fintech':
258
+ case 'finance':
259
+ return ['type-saas-app', 'domain-fintech'];
260
+ case 'general':
261
+ return [];
262
+ default:
263
+ return [`type-${profile}`];
264
+ }
265
+ }
216
266
  //# sourceMappingURL=loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../../src/design/audit/rubric/loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../../src/design/audit/rubric/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Rollup weights — Layer 1 of the world-class design-audit architecture.
3
+ *
4
+ * Per-page-type weights for combining the 5 dimension scores into a single
5
+ * rollup. Marketing surfaces emphasize visual + content; saas-app surfaces
6
+ * emphasize product_intent + workflow; docs lean on content_ia. The weights
7
+ * are evolvable via the GEPA target `pareto-rollup-weights`.
8
+ *
9
+ * Invariant: every weight set sums to 1.0 within 1e-6.
10
+ */
11
+ import type { Dimension } from '../v2/types.js';
12
+ import type { PageType } from '../types.js';
13
+ export type RollupWeightKey = PageType | 'default';
14
+ export declare const ROLLUP_WEIGHTS: Record<RollupWeightKey, Record<Dimension, number>>;
15
+ /**
16
+ * Look up rollup weights for a page type, falling back to `default` when the
17
+ * type isn't in the table (forward-compat for new types).
18
+ */
19
+ export declare function rollupWeightsFor(type: PageType | undefined): Record<Dimension, number>;
20
+ /**
21
+ * Render a human-readable formula for the audit report, e.g.
22
+ * "saas-app: product_intent*0.35 + workflow*0.30 + visual_craft*0.15 + trust_clarity*0.10 + content_ia*0.10"
23
+ */
24
+ export declare function rollupFormula(type: PageType | undefined, weights: Record<Dimension, number>): string;
25
+ //# sourceMappingURL=rollup-weights.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rollup-weights.d.ts","sourceRoot":"","sources":["../../../../src/design/audit/rubric/rollup-weights.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,SAAS,CAAA;AA0BlD,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAsB,CAAA;AAEpG;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAGtF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,CAIpG"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Rollup weights — Layer 1 of the world-class design-audit architecture.
3
+ *
4
+ * Per-page-type weights for combining the 5 dimension scores into a single
5
+ * rollup. Marketing surfaces emphasize visual + content; saas-app surfaces
6
+ * emphasize product_intent + workflow; docs lean on content_ia. The weights
7
+ * are evolvable via the GEPA target `pareto-rollup-weights`.
8
+ *
9
+ * Invariant: every weight set sums to 1.0 within 1e-6.
10
+ */
11
+ const ROLLUP_WEIGHTS_RAW = {
12
+ marketing: { product_intent: 0.30, visual_craft: 0.30, content_ia: 0.25, trust_clarity: 0.10, workflow: 0.05 },
13
+ 'saas-app': { product_intent: 0.35, workflow: 0.30, visual_craft: 0.15, trust_clarity: 0.10, content_ia: 0.10 },
14
+ dashboard: { product_intent: 0.30, workflow: 0.30, content_ia: 0.20, visual_craft: 0.15, trust_clarity: 0.05 },
15
+ docs: { content_ia: 0.45, workflow: 0.25, product_intent: 0.15, visual_craft: 0.15, trust_clarity: 0.0 },
16
+ ecommerce: { trust_clarity: 0.35, product_intent: 0.30, workflow: 0.20, visual_craft: 0.10, content_ia: 0.05 },
17
+ social: { product_intent: 0.30, workflow: 0.30, content_ia: 0.20, visual_craft: 0.15, trust_clarity: 0.05 },
18
+ tool: { workflow: 0.40, product_intent: 0.30, content_ia: 0.15, visual_craft: 0.10, trust_clarity: 0.05 },
19
+ blog: { content_ia: 0.50, visual_craft: 0.25, product_intent: 0.15, workflow: 0.10, trust_clarity: 0.0 },
20
+ utility: { workflow: 0.45, product_intent: 0.25, content_ia: 0.20, visual_craft: 0.10, trust_clarity: 0.0 },
21
+ unknown: { product_intent: 0.30, workflow: 0.25, visual_craft: 0.20, content_ia: 0.15, trust_clarity: 0.10 },
22
+ default: { product_intent: 0.30, workflow: 0.25, visual_craft: 0.20, content_ia: 0.15, trust_clarity: 0.10 },
23
+ };
24
+ const WEIGHT_SUM_TOLERANCE = 1e-6;
25
+ // Validate at module load — fail fast if a weight set drifts.
26
+ for (const [type, weights] of Object.entries(ROLLUP_WEIGHTS_RAW)) {
27
+ const sum = Object.values(weights).reduce((acc, n) => acc + n, 0);
28
+ if (Math.abs(sum - 1) > WEIGHT_SUM_TOLERANCE) {
29
+ throw new Error(`rollup weights for ${type} sum to ${sum}, expected 1.0 ± ${WEIGHT_SUM_TOLERANCE}`);
30
+ }
31
+ }
32
+ export const ROLLUP_WEIGHTS = ROLLUP_WEIGHTS_RAW;
33
+ /**
34
+ * Look up rollup weights for a page type, falling back to `default` when the
35
+ * type isn't in the table (forward-compat for new types).
36
+ */
37
+ export function rollupWeightsFor(type) {
38
+ if (type && type in ROLLUP_WEIGHTS)
39
+ return ROLLUP_WEIGHTS[type];
40
+ return ROLLUP_WEIGHTS.default;
41
+ }
42
+ /**
43
+ * Render a human-readable formula for the audit report, e.g.
44
+ * "saas-app: product_intent*0.35 + workflow*0.30 + visual_craft*0.15 + trust_clarity*0.10 + content_ia*0.10"
45
+ */
46
+ export function rollupFormula(type, weights) {
47
+ const entries = Object.entries(weights).sort(([, a], [, b]) => b - a);
48
+ const body = entries.map(([dim, w]) => `${dim}*${w.toFixed(2)}`).join(' + ');
49
+ return `${type ?? 'default'}: ${body}`;
50
+ }
51
+ //# sourceMappingURL=rollup-weights.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rollup-weights.js","sourceRoot":"","sources":["../../../../src/design/audit/rubric/rollup-weights.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,9 @@
5
5
  * Each stage is a pure transformation; the orchestrator (`pipeline.ts`) wires them.
6
6
  */
7
7
  import type { DesignFinding, DesignSystemScore } from '../../types.js';
8
+ import type { EthicsViolation } from './v2/types.js';
8
9
  export type { DesignFinding, DesignSystemScore } from '../../types.js';
10
+ export type { EthicsViolation } from './v2/types.js';
9
11
  /**
10
12
  * Page classification — produced by a single cheap LLM call before any scoring.
11
13
  * Drives rubric composition and measurement strategy.
@@ -161,6 +163,32 @@ export interface PageAuditResult {
161
163
  designSystemScore?: DesignSystemScore;
162
164
  screenshotPath?: string;
163
165
  tokensUsed?: number;
166
+ /**
167
+ * Layer 7 — domain ethics violations. When non-empty, `score` is capped by
168
+ * the lowest `rollupCap` across violations until the underlying issue is
169
+ * remediated. Empty when --skip-ethics is set or when no rule fires.
170
+ */
171
+ ethicsViolations?: EthicsViolation[];
172
+ /**
173
+ * The pre-cap score (Layer 7). Set when `ethicsViolations` is non-empty so
174
+ * tooling can show "would have scored X, capped at Y" without losing
175
+ * the LLM's original assessment.
176
+ */
177
+ preEthicsScore?: number;
178
+ /**
179
+ * Layer 1 — v2 multi-dim audit result. Emitted alongside the v1 fields for
180
+ * one release as a backwards-compat bridge. Consumers should migrate to
181
+ * `auditResultV2` and treat the v1 surface as deprecated.
182
+ *
183
+ * Typed as `unknown` here to avoid pulling v2/types.ts into v1 consumers.
184
+ * The concrete shape is `import('./v2/types.js').AuditResult_v2`.
185
+ */
186
+ auditResultV2?: unknown;
187
+ /**
188
+ * Layer 1 — ensemble classification (URL + DOM + LLM). When set, the
189
+ * pipeline used `--audit-passes auto` (the new default).
190
+ */
191
+ ensembleClassification?: unknown;
164
192
  error?: string;
165
193
  }
166
194
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/design/audit/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/design/audit/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * v2 AuditResult builder.
3
+ *
4
+ * Wraps the existing v1 PageAuditResult with multi-dim scoring + ensemble
5
+ * classification + rollup. Layer 1 emits BOTH schemas in `report.json` so
6
+ * downstream consumers can migrate at their own pace (one-release deprecation
7
+ * window per the RFC).
8
+ */
9
+ import type { Brain } from '../../../brain/index.js';
10
+ import type { PageState } from '../../../types.js';
11
+ import type { PageAuditResult, ComposedRubric, MeasurementBundle } from '../types.js';
12
+ import { type AuditResult_v2, type DesignFinding, type Dimension, type DimensionScore, type EnsembleClassification } from './types.js';
13
+ import { renderAnchor, type CalibrationAnchor } from '../rubric/anchor-loader.js';
14
+ export interface BuildV2ResultInput {
15
+ brain: Brain;
16
+ state: PageState;
17
+ pageRef: string;
18
+ ensemble: EnsembleClassification;
19
+ rubric: ComposedRubric;
20
+ measurements: MeasurementBundle;
21
+ v1Result: PageAuditResult;
22
+ anchor?: CalibrationAnchor;
23
+ /** Reuse the pipeline runId so envelopes correlate. */
24
+ runId?: string;
25
+ /** Optional override (e.g. test fixtures). When set, skip the LLM call. */
26
+ precomputedScores?: Record<Dimension, DimensionScore>;
27
+ }
28
+ /**
29
+ * Produce a complete `AuditResult_v2`. When `precomputedScores` is set we
30
+ * skip the v2 LLM call entirely (used by deterministic tests + the
31
+ * `--audit-passes auto` legacy fallback path).
32
+ */
33
+ export declare function buildAuditResultV2(input: BuildV2ResultInput): Promise<AuditResult_v2>;
34
+ declare function renderMeasurementSummary(measurements: MeasurementBundle): string;
35
+ declare function adaptFindings(v1Findings: PageAuditResult['findings']): DesignFinding[];
36
+ declare function mapCategoryToDimension(category: string): Dimension;
37
+ declare function computeTopFixes(findings: DesignFinding[]): DesignFinding[];
38
+ declare function synthesizeScoresFromV1(v1: PageAuditResult): Record<Dimension, DimensionScore>;
39
+ export declare const V2_INTERNALS: {
40
+ renderMeasurementSummary: typeof renderMeasurementSummary;
41
+ adaptFindings: typeof adaptFindings;
42
+ mapCategoryToDimension: typeof mapCategoryToDimension;
43
+ computeTopFixes: typeof computeTopFixes;
44
+ synthesizeScoresFromV1: typeof synthesizeScoresFromV1;
45
+ };
46
+ export { renderAnchor };
47
+ //# sourceMappingURL=build-result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-result.d.ts","sourceRoot":"","sources":["../../../../src/design/audit/v2/build-result.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,KAAK,EACV,eAAe,EAEf,cAAc,EACd,iBAAiB,EAClB,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAG5B,MAAM,YAAY,CAAA;AAMnB,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAEjF,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,KAAK,CAAA;IACZ,KAAK,EAAE,SAAS,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,sBAAsB,CAAA;IAChC,MAAM,EAAE,cAAc,CAAA;IACtB,YAAY,EAAE,iBAAiB,CAAA;IAC/B,QAAQ,EAAE,eAAe,CAAA;IACzB,MAAM,CAAC,EAAE,iBAAiB,CAAA;IAC1B,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,2EAA2E;IAC3E,iBAAiB,CAAC,EAAE,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;CACtD;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,CAyD3F;AAED,iBAAS,wBAAwB,CAAC,YAAY,EAAE,iBAAiB,GAAG,MAAM,CAOzE;AAED,iBAAS,aAAa,CAAC,UAAU,EAAE,eAAe,CAAC,UAAU,CAAC,GAAG,aAAa,EAAE,CAe/E;AAED,iBAAS,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAe3D;AAQD,iBAAS,eAAe,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,CAMnE;AAWD,iBAAS,sBAAsB,CAAC,EAAE,EAAE,eAAe,GAAG,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAgBtF;AAMD,eAAO,MAAM,YAAY;;;;;;CAMxB,CAAA;AAED,OAAO,EAAE,YAAY,EAAE,CAAA"}
@@ -0,0 +1,163 @@
1
+ /**
2
+ * v2 AuditResult builder.
3
+ *
4
+ * Wraps the existing v1 PageAuditResult with multi-dim scoring + ensemble
5
+ * classification + rollup. Layer 1 emits BOTH schemas in `report.json` so
6
+ * downstream consumers can migrate at their own pace (one-release deprecation
7
+ * window per the RFC).
8
+ */
9
+ import { randomUUID, createHash } from 'node:crypto';
10
+ import { DIMENSIONS, } from './types.js';
11
+ import { buildEvalPromptV2, computeRollup, parseAuditResponseV2, } from './score.js';
12
+ import { renderAnchor } from '../rubric/anchor-loader.js';
13
+ /**
14
+ * Produce a complete `AuditResult_v2`. When `precomputedScores` is set we
15
+ * skip the v2 LLM call entirely (used by deterministic tests + the
16
+ * `--audit-passes auto` legacy fallback path).
17
+ */
18
+ export async function buildAuditResultV2(input) {
19
+ const { brain, state, pageRef, ensemble, rubric, measurements, v1Result, anchor, runId } = input;
20
+ const measurementSummary = renderMeasurementSummary(measurements);
21
+ const prompt = buildEvalPromptV2({
22
+ pageType: ensemble.type,
23
+ rubricBody: rubric.body,
24
+ anchor,
25
+ measurementSummary,
26
+ intent: ensemble.intent,
27
+ });
28
+ let scores;
29
+ let llmTokens = 0;
30
+ if (input.precomputedScores) {
31
+ scores = input.precomputedScores;
32
+ }
33
+ else {
34
+ try {
35
+ const llm = await brain.auditDesign(state, 'Multi-dimensional audit (v2)', [], prompt);
36
+ llmTokens = llm.tokensUsed ?? 0;
37
+ const parsed = parseAuditResponseV2(llm.raw);
38
+ scores = parsed.scores;
39
+ }
40
+ catch {
41
+ // Fall back: synthesize per-dim scores from the v1 result. Conservative —
42
+ // every dim gets the v1 score, range +/- 1, confidence 'low'.
43
+ scores = synthesizeScoresFromV1(v1Result);
44
+ }
45
+ }
46
+ const rollup = computeRollup(scores, ensemble.type);
47
+ const findings = adaptFindings(v1Result.findings);
48
+ const topFixes = computeTopFixes(findings).slice(0, 5).map((f) => f.id);
49
+ const promptHash = sha1(prompt);
50
+ const rubricHash = sha1(rubric.body);
51
+ const totalTokens = (v1Result.tokensUsed ?? 0) + llmTokens;
52
+ return {
53
+ schemaVersion: 2,
54
+ runId: runId ?? randomUUID(),
55
+ pageRef,
56
+ classification: ensemble,
57
+ scores,
58
+ rollup,
59
+ findings,
60
+ topFixes,
61
+ measurements,
62
+ ethicsViolations: [],
63
+ matchedPatterns: [],
64
+ modality: 'html',
65
+ evaluatedAt: new Date().toISOString(),
66
+ promptHash,
67
+ rubricHash,
68
+ tokensUsed: totalTokens > 0 ? totalTokens : undefined,
69
+ passes: ['v2-multidim'],
70
+ ...(v1Result.error ? { error: v1Result.error } : {}),
71
+ };
72
+ }
73
+ function renderMeasurementSummary(measurements) {
74
+ const aaFails = measurements.contrast.aaFailures.length;
75
+ const a11y = measurements.a11y.violations.length;
76
+ return [
77
+ `contrast AA failures: ${aaFails} of ${measurements.contrast.totalChecked} text elements`,
78
+ `axe violations: ${a11y}${a11y > 0 ? ` (top: ${measurements.a11y.violations.slice(0, 3).map((v) => `${v.id}/${v.impact}`).join(', ')})` : ''}`,
79
+ ].join('\n');
80
+ }
81
+ function adaptFindings(v1Findings) {
82
+ return v1Findings.map((f, idx) => {
83
+ const id = `finding-${idx + 1}-${sha1(`${f.category}|${f.description}`).slice(0, 8)}`;
84
+ const dimension = mapCategoryToDimension(f.category);
85
+ const kind = inferKind(f);
86
+ return {
87
+ ...f,
88
+ id,
89
+ dimension,
90
+ kind,
91
+ // Layer 2 supplies real Patches; Layer 1 emits an empty array so the
92
+ // schema is satisfied without fabricating diffs.
93
+ patches: [],
94
+ };
95
+ });
96
+ }
97
+ function mapCategoryToDimension(category) {
98
+ switch (category) {
99
+ case 'visual-bug':
100
+ case 'spacing':
101
+ case 'typography':
102
+ case 'alignment':
103
+ case 'layout':
104
+ return 'visual_craft';
105
+ case 'contrast':
106
+ case 'accessibility':
107
+ return 'visual_craft';
108
+ case 'ux':
109
+ default:
110
+ return 'product_intent';
111
+ }
112
+ }
113
+ function inferKind(f) {
114
+ if (f.category === 'contrast' || f.category === 'accessibility')
115
+ return 'measurement';
116
+ if (f.category === 'ux')
117
+ return 'job';
118
+ return 'polish';
119
+ }
120
+ function computeTopFixes(findings) {
121
+ return [...findings].sort((a, b) => {
122
+ const aScore = (a.impact ?? 0) * blastWeight(a.blast);
123
+ const bScore = (b.impact ?? 0) * blastWeight(b.blast);
124
+ return bScore - aScore;
125
+ });
126
+ }
127
+ function blastWeight(blast) {
128
+ switch (blast) {
129
+ case 'system': return 4;
130
+ case 'component': return 3;
131
+ case 'section': return 2;
132
+ default: return 1;
133
+ }
134
+ }
135
+ function synthesizeScoresFromV1(v1) {
136
+ const fallback = Math.max(1, Math.min(10, Math.round(v1.score)));
137
+ const out = {};
138
+ for (const dim of DIMENSIONS) {
139
+ out[dim] = {
140
+ score: fallback,
141
+ range: [
142
+ Math.max(1, fallback - 1),
143
+ Math.min(10, fallback + 1),
144
+ ],
145
+ confidence: 'low',
146
+ summary: 'Synthesized from v1 score (v2 LLM call unavailable).',
147
+ primaryFindings: [],
148
+ };
149
+ }
150
+ return out;
151
+ }
152
+ function sha1(s) {
153
+ return createHash('sha1').update(s).digest('hex');
154
+ }
155
+ export const V2_INTERNALS = {
156
+ renderMeasurementSummary,
157
+ adaptFindings,
158
+ mapCategoryToDimension,
159
+ computeTopFixes,
160
+ synthesizeScoresFromV1,
161
+ };
162
+ export { renderAnchor };
163
+ //# sourceMappingURL=build-result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-result.js","sourceRoot":"","sources":["../../../../src/design/audit/v2/build-result.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Layer 1 multi-dim scoring — prompt builder, parser, and rollup.
3
+ *
4
+ * Pure functions. No I/O, no Brain dependency. The pipeline supplies the
5
+ * inputs (classification, rubric, anchor, measurements) and persists the
6
+ * resulting `Record<Dimension, DimensionScore> + RollupScore`.
7
+ */
8
+ import { type Dimension, type DimensionScore, type RollupScore } from './types.js';
9
+ import type { PageType } from '../types.js';
10
+ import type { CalibrationAnchor } from '../rubric/anchor-loader.js';
11
+ export interface BuildV2PromptInput {
12
+ pageType: PageType;
13
+ rubricBody: string;
14
+ anchor?: CalibrationAnchor;
15
+ /** Concise text summary of deterministic measurements (axe, contrast). */
16
+ measurementSummary: string;
17
+ /** Optional auditor framing override. */
18
+ systemOpener?: string;
19
+ /** Page intent line surfaced from classification. */
20
+ intent?: string;
21
+ }
22
+ /**
23
+ * Build the v2 evaluation prompt. Demands per-dim DimensionScore output with
24
+ * range + confidence. Does NOT request the rollup — the rollup is computed
25
+ * deterministically from the per-dim scores using rollup-weights.
26
+ */
27
+ export declare function buildEvalPromptV2(input: BuildV2PromptInput): string;
28
+ export interface ParsedDimensionScores {
29
+ scores: Record<Dimension, DimensionScore>;
30
+ summary: string;
31
+ strengths: string[];
32
+ }
33
+ /**
34
+ * Parse the v2 LLM response. Throws when scores are missing, ranges violate
35
+ * `range[0] <= score <= range[1]`, or score is outside 1..10. The pipeline
36
+ * catches the throw and falls back to v1 mean-of-passes.
37
+ */
38
+ export declare function parseAuditResponseV2(raw: string): ParsedDimensionScores;
39
+ /**
40
+ * Compute the rollup from per-dimension scores using per-page-type weights.
41
+ * Conservative confidence rule: rollup confidence = lowest dim confidence.
42
+ */
43
+ export declare function computeRollup(scores: Record<Dimension, DimensionScore>, pageType: PageType): RollupScore;
44
+ /**
45
+ * Aggregate per-dim scores from N independent passes (mean). Used when the
46
+ * audit runs deep mode and we want one DimensionScore per dimension.
47
+ */
48
+ export declare function mergeDimensionScoresAcrossPasses(perPass: Array<Record<Dimension, DimensionScore>>): Record<Dimension, DimensionScore>;
49
+ //# sourceMappingURL=score.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"score.d.ts","sourceRoot":"","sources":["../../../../src/design/audit/v2/score.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,WAAW,EACjB,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAKnE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,QAAQ,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,iBAAiB,CAAA;IAC1B,0EAA0E;IAC1E,kBAAkB,EAAE,MAAM,CAAA;IAC1B,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAKD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CA6CnE;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;IACzC,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,EAAE,CAAA;CACpB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,qBAAqB,CA4BvE;AAoCD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,WAAW,CAgCxG;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,GAChD,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CA6BnC"}