cbrowser 20.2.2 → 21.0.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 (302) hide show
  1. package/README.md +2 -2
  2. package/dist/analysis/accessibility-empathy.d.ts +29 -1
  3. package/dist/analysis/accessibility-empathy.d.ts.map +1 -1
  4. package/dist/analysis/accessibility-empathy.js +69 -35
  5. package/dist/analysis/accessibility-empathy.js.map +1 -1
  6. package/dist/browser.d.ts.map +1 -1
  7. package/dist/browser.js +11 -7
  8. package/dist/browser.js.map +1 -1
  9. package/dist/cif-score.d.ts +56 -5
  10. package/dist/cif-score.d.ts.map +1 -1
  11. package/dist/cif-score.js +595 -346
  12. package/dist/cif-score.js.map +1 -1
  13. package/dist/cli.js +10 -8
  14. package/dist/cli.js.map +1 -1
  15. package/dist/cognitive/default-traits.d.ts +14 -0
  16. package/dist/cognitive/default-traits.d.ts.map +1 -0
  17. package/dist/cognitive/default-traits.js +36 -0
  18. package/dist/cognitive/default-traits.js.map +1 -0
  19. package/dist/cognitive/emotions.d.ts.map +1 -1
  20. package/dist/cognitive/emotions.js +104 -174
  21. package/dist/cognitive/emotions.js.map +1 -1
  22. package/dist/cognitive/index.d.ts +28 -0
  23. package/dist/cognitive/index.d.ts.map +1 -1
  24. package/dist/cognitive/index.js +353 -287
  25. package/dist/cognitive/index.js.map +1 -1
  26. package/dist/cognitive/temporal.d.ts +0 -24
  27. package/dist/cognitive/temporal.d.ts.map +1 -1
  28. package/dist/cognitive/temporal.js +45 -35
  29. package/dist/cognitive/temporal.js.map +1 -1
  30. package/dist/data/ctc-reference-v2-2026-10-24.d.ts +16 -0
  31. package/dist/data/ctc-reference-v2-2026-10-24.d.ts.map +1 -0
  32. package/dist/data/ctc-reference-v2-2026-10-24.js +1004 -0
  33. package/dist/data/ctc-reference-v2-2026-10-24.js.map +1 -0
  34. package/dist/ideal-profiles-gap.d.ts +1 -0
  35. package/dist/ideal-profiles-gap.d.ts.map +1 -1
  36. package/dist/ideal-profiles-gap.js +9 -1
  37. package/dist/ideal-profiles-gap.js.map +1 -1
  38. package/dist/ideal-profiles.d.ts +8 -0
  39. package/dist/ideal-profiles.d.ts.map +1 -1
  40. package/dist/ideal-profiles.js +28 -24
  41. package/dist/ideal-profiles.js.map +1 -1
  42. package/dist/mcp-server-remote.d.ts.map +1 -1
  43. package/dist/mcp-server-remote.js +7 -8
  44. package/dist/mcp-server-remote.js.map +1 -1
  45. package/dist/mcp-tools/account-personas.d.ts.map +1 -1
  46. package/dist/mcp-tools/account-personas.js +3 -1
  47. package/dist/mcp-tools/account-personas.js.map +1 -1
  48. package/dist/mcp-tools/base/answer-provenance.d.ts +28 -0
  49. package/dist/mcp-tools/base/answer-provenance.d.ts.map +1 -0
  50. package/dist/mcp-tools/base/answer-provenance.js +32 -0
  51. package/dist/mcp-tools/base/answer-provenance.js.map +1 -0
  52. package/dist/mcp-tools/base/audit-tools.d.ts +0 -3
  53. package/dist/mcp-tools/base/audit-tools.d.ts.map +1 -1
  54. package/dist/mcp-tools/base/audit-tools.js +152 -84
  55. package/dist/mcp-tools/base/audit-tools.js.map +1 -1
  56. package/dist/mcp-tools/base/capture-tools.js +1 -1
  57. package/dist/mcp-tools/base/capture-tools.js.map +1 -1
  58. package/dist/mcp-tools/base/chain-values.d.ts +38 -0
  59. package/dist/mcp-tools/base/chain-values.d.ts.map +1 -0
  60. package/dist/mcp-tools/base/chain-values.js +85 -0
  61. package/dist/mcp-tools/base/chain-values.js.map +1 -0
  62. package/dist/mcp-tools/base/cognitive-tools.d.ts.map +1 -1
  63. package/dist/mcp-tools/base/cognitive-tools.js +126 -120
  64. package/dist/mcp-tools/base/cognitive-tools.js.map +1 -1
  65. package/dist/mcp-tools/base/gif-tools.d.ts.map +1 -1
  66. package/dist/mcp-tools/base/gif-tools.js +23 -5
  67. package/dist/mcp-tools/base/gif-tools.js.map +1 -1
  68. package/dist/mcp-tools/base/persona-comparison-tools.d.ts.map +1 -1
  69. package/dist/mcp-tools/base/persona-comparison-tools.js +229 -172
  70. package/dist/mcp-tools/base/persona-comparison-tools.js.map +1 -1
  71. package/dist/mcp-tools/base/site-familiarity.d.ts +31 -0
  72. package/dist/mcp-tools/base/site-familiarity.d.ts.map +1 -0
  73. package/dist/mcp-tools/base/site-familiarity.js +30 -0
  74. package/dist/mcp-tools/base/site-familiarity.js.map +1 -0
  75. package/dist/mcp-tools/base/site-knowledge-tools.js +1 -1
  76. package/dist/mcp-tools/base/site-knowledge-tools.js.map +1 -1
  77. package/dist/mcp-tools/base/story-narrative.d.ts +50 -0
  78. package/dist/mcp-tools/base/story-narrative.d.ts.map +1 -0
  79. package/dist/mcp-tools/base/story-narrative.js +88 -0
  80. package/dist/mcp-tools/base/story-narrative.js.map +1 -0
  81. package/dist/mcp-tools/base/values-tools.d.ts.map +1 -1
  82. package/dist/mcp-tools/base/values-tools.js +19 -5
  83. package/dist/mcp-tools/base/values-tools.js.map +1 -1
  84. package/dist/mcp-tools/base/visual-testing-tools.d.ts +5 -5
  85. package/dist/mcp-tools/base/visual-testing-tools.d.ts.map +1 -1
  86. package/dist/mcp-tools/base/visual-testing-tools.js +38 -11
  87. package/dist/mcp-tools/base/visual-testing-tools.js.map +1 -1
  88. package/dist/mcp-tools/persona-creation-tools.js +6 -6
  89. package/dist/mcp-tools/persona-creation-tools.js.map +1 -1
  90. package/dist/mcp-tools/persona-lifecycle-tools.d.ts.map +1 -1
  91. package/dist/mcp-tools/persona-lifecycle-tools.js +5 -1
  92. package/dist/mcp-tools/persona-lifecycle-tools.js.map +1 -1
  93. package/dist/mcp-tools/tier-gate.js +1 -1
  94. package/dist/mcp-tools/tool-result-saver.d.ts +7 -0
  95. package/dist/mcp-tools/tool-result-saver.d.ts.map +1 -1
  96. package/dist/mcp-tools/tool-result-saver.js +11 -0
  97. package/dist/mcp-tools/tool-result-saver.js.map +1 -1
  98. package/dist/mcp-tools/trait-provenance.d.ts +109 -0
  99. package/dist/mcp-tools/trait-provenance.d.ts.map +1 -0
  100. package/dist/mcp-tools/trait-provenance.js +187 -0
  101. package/dist/mcp-tools/trait-provenance.js.map +1 -0
  102. package/dist/mcp-tools/ui-resources.d.ts +6 -7
  103. package/dist/mcp-tools/ui-resources.d.ts.map +1 -1
  104. package/dist/mcp-tools/ui-resources.js +162 -12
  105. package/dist/mcp-tools/ui-resources.js.map +1 -1
  106. package/dist/mcp-tools/widget-kit.d.ts +129 -3
  107. package/dist/mcp-tools/widget-kit.d.ts.map +1 -1
  108. package/dist/mcp-tools/widget-kit.js +507 -28
  109. package/dist/mcp-tools/widget-kit.js.map +1 -1
  110. package/dist/performance/metrics.d.ts.map +1 -1
  111. package/dist/performance/metrics.js +4 -1
  112. package/dist/performance/metrics.js.map +1 -1
  113. package/dist/persona-questionnaire.js +1 -1
  114. package/dist/persona-questionnaire.js.map +1 -1
  115. package/dist/personas.d.ts.map +1 -1
  116. package/dist/personas.js +133 -82
  117. package/dist/personas.js.map +1 -1
  118. package/dist/recording/engine.d.ts.map +1 -1
  119. package/dist/recording/engine.js +5 -2
  120. package/dist/recording/engine.js.map +1 -1
  121. package/dist/recording/saliency-overlay.d.ts +8 -3
  122. package/dist/recording/saliency-overlay.d.ts.map +1 -1
  123. package/dist/recording/saliency-overlay.js +14 -5
  124. package/dist/recording/saliency-overlay.js.map +1 -1
  125. package/dist/recording/types.js +1 -1
  126. package/dist/testing/nl-test-suite.d.ts.map +1 -1
  127. package/dist/testing/nl-test-suite.js +2 -1
  128. package/dist/testing/nl-test-suite.js.map +1 -1
  129. package/dist/trait-reference.d.ts +19 -2
  130. package/dist/trait-reference.d.ts.map +1 -1
  131. package/dist/trait-reference.js +19 -2
  132. package/dist/trait-reference.js.map +1 -1
  133. package/dist/types.d.ts +32 -21
  134. package/dist/types.d.ts.map +1 -1
  135. package/dist/types.js +62 -52
  136. package/dist/types.js.map +1 -1
  137. package/dist/values/persona-completeness.js +1 -1
  138. package/dist/values/persona-completeness.js.map +1 -1
  139. package/dist/visual/ab-comparison.d.ts.map +1 -1
  140. package/dist/visual/ab-comparison.js +4 -1
  141. package/dist/visual/ab-comparison.js.map +1 -1
  142. package/dist/visual/attention-quality.d.ts +1 -1
  143. package/dist/visual/attention-quality.js +1 -1
  144. package/dist/visual/attention-transport.d.ts +74 -10
  145. package/dist/visual/attention-transport.d.ts.map +1 -1
  146. package/dist/visual/attention-transport.js +353 -193
  147. package/dist/visual/attention-transport.js.map +1 -1
  148. package/dist/visual/cognitive-models.d.ts +77 -55
  149. package/dist/visual/cognitive-models.d.ts.map +1 -1
  150. package/dist/visual/cognitive-models.js +231 -104
  151. package/dist/visual/cognitive-models.js.map +1 -1
  152. package/dist/visual/cognitive-transport-chain.d.ts +328 -30
  153. package/dist/visual/cognitive-transport-chain.d.ts.map +1 -1
  154. package/dist/visual/cognitive-transport-chain.js +576 -353
  155. package/dist/visual/cognitive-transport-chain.js.map +1 -1
  156. package/dist/visual/cognitive-transport.d.ts +446 -13
  157. package/dist/visual/cognitive-transport.d.ts.map +1 -1
  158. package/dist/visual/cognitive-transport.js +1085 -245
  159. package/dist/visual/cognitive-transport.js.map +1 -1
  160. package/dist/visual/cross-browser.d.ts.map +1 -1
  161. package/dist/visual/cross-browser.js +8 -6
  162. package/dist/visual/cross-browser.js.map +1 -1
  163. package/dist/visual/ctc-bands.d.ts +91 -0
  164. package/dist/visual/ctc-bands.d.ts.map +1 -0
  165. package/dist/visual/ctc-bands.js +117 -0
  166. package/dist/visual/ctc-bands.js.map +1 -0
  167. package/dist/visual/ctc-reference.d.ts +287 -0
  168. package/dist/visual/ctc-reference.d.ts.map +1 -0
  169. package/dist/visual/ctc-reference.js +376 -0
  170. package/dist/visual/ctc-reference.js.map +1 -0
  171. package/dist/visual/demand-laws.d.ts +145 -0
  172. package/dist/visual/demand-laws.d.ts.map +1 -0
  173. package/dist/visual/demand-laws.js +220 -0
  174. package/dist/visual/demand-laws.js.map +1 -0
  175. package/dist/visual/distance-metrics.d.ts +23 -1
  176. package/dist/visual/distance-metrics.d.ts.map +1 -1
  177. package/dist/visual/distance-metrics.js +49 -18
  178. package/dist/visual/distance-metrics.js.map +1 -1
  179. package/dist/visual/dro-bound.d.ts +220 -0
  180. package/dist/visual/dro-bound.d.ts.map +1 -0
  181. package/dist/visual/dro-bound.js +341 -0
  182. package/dist/visual/dro-bound.js.map +1 -0
  183. package/dist/visual/exact-w1.d.ts +60 -0
  184. package/dist/visual/exact-w1.d.ts.map +1 -0
  185. package/dist/visual/exact-w1.js +247 -0
  186. package/dist/visual/exact-w1.js.map +1 -0
  187. package/dist/visual/human-input.d.ts.map +1 -1
  188. package/dist/visual/human-input.js +45 -41
  189. package/dist/visual/human-input.js.map +1 -1
  190. package/dist/visual/index.d.ts +2 -0
  191. package/dist/visual/index.d.ts.map +1 -1
  192. package/dist/visual/index.js +2 -0
  193. package/dist/visual/index.js.map +1 -1
  194. package/dist/visual/law-times-report.d.ts +49 -0
  195. package/dist/visual/law-times-report.d.ts.map +1 -0
  196. package/dist/visual/law-times-report.js +38 -0
  197. package/dist/visual/law-times-report.js.map +1 -0
  198. package/dist/visual/model-provenance.d.ts +151 -0
  199. package/dist/visual/model-provenance.d.ts.map +1 -0
  200. package/dist/visual/model-provenance.js +334 -0
  201. package/dist/visual/model-provenance.js.map +1 -0
  202. package/dist/visual/normal-cdf.d.ts +14 -0
  203. package/dist/visual/normal-cdf.d.ts.map +1 -0
  204. package/dist/visual/normal-cdf.js +26 -0
  205. package/dist/visual/normal-cdf.js.map +1 -0
  206. package/dist/visual/perceptual-transport.d.ts +28 -4
  207. package/dist/visual/perceptual-transport.d.ts.map +1 -1
  208. package/dist/visual/perceptual-transport.js +66 -32
  209. package/dist/visual/perceptual-transport.js.map +1 -1
  210. package/dist/visual/provenance/attention.d.ts +55 -0
  211. package/dist/visual/provenance/attention.d.ts.map +1 -0
  212. package/dist/visual/provenance/attention.js +188 -0
  213. package/dist/visual/provenance/attention.js.map +1 -0
  214. package/dist/visual/provenance/chain.d.ts +41 -0
  215. package/dist/visual/provenance/chain.d.ts.map +1 -0
  216. package/dist/visual/provenance/chain.js +66 -0
  217. package/dist/visual/provenance/chain.js.map +1 -0
  218. package/dist/visual/provenance/cif.d.ts +42 -0
  219. package/dist/visual/provenance/cif.d.ts.map +1 -0
  220. package/dist/visual/provenance/cif.js +116 -0
  221. package/dist/visual/provenance/cif.js.map +1 -0
  222. package/dist/visual/provenance/ctc-reference.d.ts +36 -0
  223. package/dist/visual/provenance/ctc-reference.d.ts.map +1 -0
  224. package/dist/visual/provenance/ctc-reference.js +96 -0
  225. package/dist/visual/provenance/ctc-reference.js.map +1 -0
  226. package/dist/visual/provenance/distance.d.ts +10 -0
  227. package/dist/visual/provenance/distance.d.ts.map +1 -0
  228. package/dist/visual/provenance/distance.js +72 -0
  229. package/dist/visual/provenance/distance.js.map +1 -0
  230. package/dist/visual/provenance/dro.d.ts +10 -0
  231. package/dist/visual/provenance/dro.d.ts.map +1 -0
  232. package/dist/visual/provenance/dro.js +2 -0
  233. package/dist/visual/provenance/dro.js.map +1 -0
  234. package/dist/visual/provenance/emotion.d.ts +26 -0
  235. package/dist/visual/provenance/emotion.d.ts.map +1 -0
  236. package/dist/visual/provenance/emotion.js +99 -0
  237. package/dist/visual/provenance/emotion.js.map +1 -0
  238. package/dist/visual/provenance/human-input.d.ts +19 -0
  239. package/dist/visual/provenance/human-input.d.ts.map +1 -0
  240. package/dist/visual/provenance/human-input.js +84 -0
  241. package/dist/visual/provenance/human-input.js.map +1 -0
  242. package/dist/visual/provenance/journey-group.d.ts +15 -0
  243. package/dist/visual/provenance/journey-group.d.ts.map +1 -0
  244. package/dist/visual/provenance/journey-group.js +15 -0
  245. package/dist/visual/provenance/journey-group.js.map +1 -0
  246. package/dist/visual/provenance/journey-mcp.d.ts +24 -0
  247. package/dist/visual/provenance/journey-mcp.d.ts.map +1 -0
  248. package/dist/visual/provenance/journey-mcp.js +54 -0
  249. package/dist/visual/provenance/journey-mcp.js.map +1 -0
  250. package/dist/visual/provenance/journey.d.ts +34 -0
  251. package/dist/visual/provenance/journey.d.ts.map +1 -0
  252. package/dist/visual/provenance/journey.js +184 -0
  253. package/dist/visual/provenance/journey.js.map +1 -0
  254. package/dist/visual/provenance/laws.d.ts +38 -0
  255. package/dist/visual/provenance/laws.d.ts.map +1 -0
  256. package/dist/visual/provenance/laws.js +40 -0
  257. package/dist/visual/provenance/laws.js.map +1 -0
  258. package/dist/visual/provenance/page-metrics.d.ts +42 -0
  259. package/dist/visual/provenance/page-metrics.d.ts.map +1 -0
  260. package/dist/visual/provenance/page-metrics.js +79 -0
  261. package/dist/visual/provenance/page-metrics.js.map +1 -0
  262. package/dist/visual/provenance/perceptual.d.ts +63 -0
  263. package/dist/visual/provenance/perceptual.d.ts.map +1 -0
  264. package/dist/visual/provenance/perceptual.js +115 -0
  265. package/dist/visual/provenance/perceptual.js.map +1 -0
  266. package/dist/visual/provenance/persona-rates.d.ts +84 -0
  267. package/dist/visual/provenance/persona-rates.d.ts.map +1 -0
  268. package/dist/visual/provenance/persona-rates.js +112 -0
  269. package/dist/visual/provenance/persona-rates.js.map +1 -0
  270. package/dist/visual/provenance/personas.d.ts +122 -0
  271. package/dist/visual/provenance/personas.d.ts.map +1 -0
  272. package/dist/visual/provenance/personas.js +298 -0
  273. package/dist/visual/provenance/personas.js.map +1 -0
  274. package/dist/visual/provenance/profiles.d.ts +39 -0
  275. package/dist/visual/provenance/profiles.d.ts.map +1 -0
  276. package/dist/visual/provenance/profiles.js +37 -0
  277. package/dist/visual/provenance/profiles.js.map +1 -0
  278. package/dist/visual/provenance/temporal.d.ts +21 -0
  279. package/dist/visual/provenance/temporal.d.ts.map +1 -0
  280. package/dist/visual/provenance/temporal.js +56 -0
  281. package/dist/visual/provenance/temporal.js.map +1 -0
  282. package/dist/visual/provenance/visual-distance.d.ts +22 -0
  283. package/dist/visual/provenance/visual-distance.d.ts.map +1 -0
  284. package/dist/visual/provenance/visual-distance.js +30 -0
  285. package/dist/visual/provenance/visual-distance.js.map +1 -0
  286. package/dist/visual/regression.d.ts.map +1 -1
  287. package/dist/visual/regression.js +14 -9
  288. package/dist/visual/regression.js.map +1 -1
  289. package/dist/visual/responsive.d.ts.map +1 -1
  290. package/dist/visual/responsive.js +4 -1
  291. package/dist/visual/responsive.js.map +1 -1
  292. package/dist/visual/scope-prose.js +2 -2
  293. package/dist/visual/scope-prose.js.map +1 -1
  294. package/dist/visual/seeded-random.d.ts +16 -0
  295. package/dist/visual/seeded-random.d.ts.map +1 -0
  296. package/dist/visual/seeded-random.js +25 -0
  297. package/dist/visual/seeded-random.js.map +1 -0
  298. package/dist/visual/stored-accessibility-traits.d.ts +27 -0
  299. package/dist/visual/stored-accessibility-traits.d.ts.map +1 -0
  300. package/dist/visual/stored-accessibility-traits.js +35 -0
  301. package/dist/visual/stored-accessibility-traits.js.map +1 -0
  302. package/package.json +1 -1
@@ -4,7 +4,7 @@
4
4
  * Treats persona cognitive profiles as probability measures in Wasserstein space.
5
5
  * Provides mathematically grounded operations:
6
6
  *
7
- * - Cognitive distance: W₁(personaA, personaB) — true distance between minds
7
+ * - Cognitive distance: generalized W₁(personaA, personaB) — trait shape AND level
8
8
  * - Barycenter: consensus cognitive profile from multiple personas
9
9
  * - Geodesic interpolation: principled persona blending preserving trait coupling
10
10
  * - Adversarial generation: worst-case persona via distributionally robust optimization
@@ -40,13 +40,21 @@ export interface OTCognitiveProfile {
40
40
  covariance: Float64Array[];
41
41
  }
42
42
  export interface CognitiveDistance {
43
- /** Wasserstein-1 distance between trait distributions */
43
+ /**
44
+ * Generalized Wasserstein-1 distance between the two trait measures (shape
45
+ * AND level; see cognitiveDistance). In [0, distance.slackCost].
46
+ */
44
47
  w1: number;
45
- /** Wasserstein-2 distance (Bures-Wasserstein for Gaussians) */
48
+ /** Wasserstein-2 distance (Bures-Wasserstein for Gaussians), on the simplex: shape only */
46
49
  w2: number;
47
- /** Per-trait contribution to total distance */
50
+ /**
51
+ * Per-trait contribution to `w1`, plus one non-trait key, OVERALL_LEVEL_KEY
52
+ * ("overallLevel"): the slack bin's half of the cost of creating or destroying
53
+ * trait mass, exactly 0.5 * slackCost * |mean trait level A - mean trait
54
+ * level B|. The values sum to `w1`.
55
+ */
48
56
  traitContributions: Record<string, number>;
49
- /** Sliced Wasserstein approximation */
57
+ /** Sliced Wasserstein-1 over uniform directions, exact (closed form), on the simplex: shape only */
50
58
  sliced: number;
51
59
  }
52
60
  export interface CognitiveBarycenter {
@@ -86,6 +94,28 @@ export interface AdversarialPersona {
86
94
  }
87
95
  export declare const COGNITIVE_TRAITS: readonly ["patience", "riskTolerance", "comprehension", "persistence", "resilience", "selfEfficacy", "emotionalContagion", "attributionStyle", "satisficing", "anchoringBias", "timeHorizon", "fearOfMissingOut", "interruptRecovery", "metacognitivePlanning", "proceduralFluency", "transferLearning", "informationForaging", "changeBlindness", "mentalModelFlexibility", "trustCalibration", "socialProofSensitivity", "authoritySensitivity", "workingMemory", "readingTendency", "curiosity", "siteFamiliarity", "readingCapacity", "motorCapacity", "sustainedAttention"];
88
96
  export type CognitiveTrait = typeof COGNITIVE_TRAITS[number];
97
+ /** The 29 x 29 trait ground-cost matrix, exposed for tests (a copy). */
98
+ export declare function traitGroundCostMatrix(): number[][];
99
+ /**
100
+ * Key of the slack bin's share in `CognitiveDistance.traitContributions`. Not a
101
+ * trait: it is the part of the distance spent creating or destroying trait mass,
102
+ * i.e. the difference in overall level between the two profiles.
103
+ */
104
+ export declare const OVERALL_LEVEL_KEY = "overallLevel";
105
+ /** The generalized (trait + slack bin) cost matrix, exposed for tests (a copy). */
106
+ export declare function traitGeneralizedCostMatrix(): number[][];
107
+ /**
108
+ * A profile's trait measure for the generalized distance: d + 1 masses that sum
109
+ * to 1. Trait i carries t_i / d (t_i clamped to the schema range [0, 1], missing
110
+ * traits at distance.missingTraitDefault); the last entry is the slack bin,
111
+ * 1 - sum_i t_i / d, which holds the mass the traits do not.
112
+ *
113
+ * Unlike traitsToDistribution nothing is renormalised, so the absolute level
114
+ * survives: all traits 0.2 puts 0.2 on the traits and 0.8 in the slack bin, all
115
+ * traits 0.8 puts 0.8 and 0.2. No floor is applied either, because the solver
116
+ * accepts zero atoms (distance.simplexFloor belongs to the simplex encoding).
117
+ */
118
+ export declare function traitsToLevelMeasure(traits: Record<string, number>): Float64Array;
89
119
  /**
90
120
  * Normalize trait values to a probability measure (simplex).
91
121
  * This is the fundamental operation: traits → distribution.
@@ -99,6 +129,96 @@ export declare function distributionToTraits(dist: Float64Array, traitScale?: nu
99
129
  * Build a OTCognitiveProfile from raw trait values.
100
130
  */
101
131
  export declare function buildOTCognitiveProfile(name: string, traits: Record<string, number>): OTCognitiveProfile;
132
+ /**
133
+ * E|<x, theta>| / ||x|| for theta uniform on the unit sphere in `d`
134
+ * dimensions: Gamma(d/2) / (sqrt(pi) * Gamma((d + 1)/2)). The sliced
135
+ * Wasserstein-1 distance between two points is this times their Euclidean
136
+ * distance. Built from c_1 = 1, c_2 = 2/pi and c_(d+2) = c_d * d/(d + 1), so
137
+ * no gamma function is needed; for odd d it is a product of rationals.
138
+ * Exported for tests of the formula.
139
+ */
140
+ export declare function sphereMeanAbsProjection(d: number): number;
141
+ /**
142
+ * Distance between two cognitive profiles.
143
+ *
144
+ * `w1` is the exact GENERALIZED Wasserstein-1 distance between the two trait
145
+ * vectors (Piccoli & Rossi 2014, "Generalized Wasserstein distance and its
146
+ * application to transport equations with source"; the unbalanced-OT form with
147
+ * a per-unit cost for creating or destroying mass). Each profile is the measure
148
+ * that puts t_i / 29 on trait i, so its total mass is its mean trait level and
149
+ * is NOT normalised away. The distance is the cheapest way to turn one measure
150
+ * into the other when moving a unit of mass from trait i to trait j costs
151
+ * d(trait_i, trait_j) (traitGroundDistance) and creating or destroying a unit
152
+ * costs c = distance.slackCost (0.4, a registered hypothesis).
153
+ *
154
+ * It is computed by the standard slack-bin reduction (traitsToLevelMeasure):
155
+ * each measure gets one extra bin holding 1 - its trait mass, so both sum to 1,
156
+ * the slack bin is at cost c from every trait and 0 from itself, and the exact
157
+ * balanced W1 is solved on the 30 bins by min-cost flow (successive shortest
158
+ * paths; see exact-w1.ts). Mass sent from a trait to the other side's slack bin
159
+ * is destroyed, mass sent from the slack bin to a trait is created. The
160
+ * reduction equals the Piccoli-Rossi distance (with a = c, b = 1) whenever
161
+ * 2c >= the largest ground cost (0.8): a plan that both destroys at i and
162
+ * creates at j can then be replaced by transporting i -> j at no greater cost,
163
+ * so some optimum only destroys (or only creates) |mass_A - mass_B|, which the
164
+ * slack bins always have room for since both trait masses are at most 1. The
165
+ * same condition makes the 30-bin cost a metric, so `w1` is a metric on trait
166
+ * vectors: 0 exactly when the 29 values agree (after the [0, 1] clamp and the
167
+ * missing-trait default). tests/cognitive-distance-w1.test.ts checks the
168
+ * reduction against the Piccoli-Rossi LP solved by an independent simplex.
169
+ *
170
+ * Bounds, with mean_i over the 29 traits:
171
+ * c * |mean_i t_A,i - mean_i t_B,i| <= w1 <= c * mean_i |t_A,i - t_B,i| <= c.
172
+ * The lower bound is the mass imbalance, which can only be created or
173
+ * destroyed; the upper bound routes every difference through the slack bin.
174
+ * Proportional profiles are no longer at distance 0: all traits 0.2 versus all
175
+ * traits 0.8 is exactly 0.6 * c = 0.24 (both bounds meet). History: until
176
+ * 2026-10-21 this field was a weighted L1 that was not optimal transport (see
177
+ * exact-w1.ts); its exact replacement, shipped the same day, normalised both
178
+ * profiles to the simplex, and that pair was at 0 on every metric.
179
+ *
180
+ * `w1` is also positively homogeneous in the trait difference: moving every
181
+ * trait of A toward B by the same fraction scales the distance by that
182
+ * fraction (Kantorovich-Rubinstein: W1 under a metric cost depends only on the
183
+ * signed difference of the measures). So pushing a persona's traits further
184
+ * from another's never brings it closer.
185
+ *
186
+ * `w2` and `sliced` are UNCHANGED and still computed on the simplex
187
+ * (traitsToDistribution), so they remain shape-only: proportional profiles are
188
+ * at 0 on both.
189
+ *
190
+ * `traitContributions[t]` is the cost attributed to trait t under the optimal
191
+ * plan: half the cost of mass shipped OUT of t plus half the cost of mass
192
+ * shipped INTO t, i.e. 0.5 * (sum_j P[t][j] C(t,j) + sum_i P[i][t] C(i,t)) over
193
+ * all 30 bins. The slack bin's share is reported under OVERALL_LEVEL_KEY: half
194
+ * of every creation or destruction is charged to the trait it happened at and
195
+ * half to the overall level. Each unit of cost is split between the two
196
+ * endpoints it connects, so the contributions sum to `w1` exactly and are
197
+ * symmetric in the two profiles (swapping A and B transposes P and leaves every
198
+ * contribution unchanged). Mass that stays put (P[t][t]) costs 0 and
199
+ * contributes nothing.
200
+ *
201
+ * The optimal plan is often not unique (ties are common under a three-level
202
+ * cost), and one tie matters for the attribution: destroying a unit at trait i
203
+ * and creating one at trait j costs 2c = 0.8, exactly what moving it i -> j
204
+ * costs between unrelated domains. Left to the solver, a pure shape difference
205
+ * can be booked as a level difference: with exactW1's earlier end-node rule
206
+ * (same optimal costs) 211 of the 300 roster pairs did, by up to 0.017. The
207
+ * current solver happens not to (0 of 300 roster pairs, 0 of 21,000 random
208
+ * pairs, 2026-10-21), but nothing guarantees which tied plan it returns, so
209
+ * the plan is UNCROSSED after solving: wherever it both destroys at i and
210
+ * creates at j, that mass is routed i -> j directly, which costs
211
+ * C(i, j) <= 2c, so the plan stays optimal. With the old end-node rule put
212
+ * back, uncrossing alone brings all 300 pairs back to the identity below.
213
+ * The uncrossed plan creates or destroys exactly |mass_A - mass_B|, which makes
214
+ * the attribution unique where it matters:
215
+ * overallLevel = 0.5 * c * |mean_i t_A,i - mean_i t_B,i|,
216
+ * half of what the level difference forces (the other half is charged to the
217
+ * traits where the mass is created or destroyed). Remaining ties among trait
218
+ * pairs are settled by solving the pair in a canonical order, so the
219
+ * attribution is deterministic and the same for (A, B) and (B, A). `w1` itself
220
+ * is unique.
221
+ */
102
222
  export declare function cognitiveDistance(profileA: OTCognitiveProfile, profileB: OTCognitiveProfile): CognitiveDistance;
103
223
  /**
104
224
  * Compute the Wasserstein barycenter of multiple cognitive profiles.
@@ -152,7 +272,6 @@ export declare function generateAdversarialPersonas(knownPersonas: OTCognitivePr
152
272
  *
153
273
  * The expectation distribution is derived from the persona's traits:
154
274
  * - High patience → expects slower information delivery (wider temporal spread)
155
- * - High comprehension → expects denser information
156
275
  * - attention / motor / text read the three BRIDGED capacities
157
276
  * (sustainedAttention, motorCapacity, readingCapacity), so a caller must run
158
277
  * bridgeCapacityTraits (visual/cognitive-models.ts) before building the
@@ -187,8 +306,9 @@ export declare function estimateCognitiveLoad(persona: OTCognitiveProfile, pageM
187
306
  };
188
307
  /**
189
308
  * Given a set of personas, find the N most different ones for maximum
190
- * test coverage. Uses greedy farthest-point sampling in Wasserstein space,
191
- * seeded with the two farthest-apart profiles.
309
+ * test coverage. Uses greedy farthest-point sampling under the generalized W1
310
+ * of cognitiveDistance (so a difference in overall level counts as well as one
311
+ * in profile shape), seeded with the two farthest-apart profiles.
192
312
  *
193
313
  * The seed used to be `profiles[0]` — whichever persona happened to be first in
194
314
  * the caller's array. Farthest-point traversal is seed-sensitive, so the same
@@ -282,9 +402,11 @@ export declare function measurePageGeometry(page: any, maxScreens?: number): Pro
282
402
  * Returns one metrics object per screen, in document order.
283
403
  */
284
404
  export declare function extractPerScreenMetrics(page: any, maxScreens?: number, geometry?: PageGeometry): Promise<Array<Awaited<ReturnType<typeof extractPageMetrics>>>>;
285
- export declare function extractPageMetrics(page: any, scope?: MetricScope,
286
- /** Geometry already measured by the caller, so both derivations share one read. */
287
- geometry?: PageGeometry): Promise<{
405
+ /**
406
+ * What extractPageMetrics returns: the PageMetrics the chain reads, plus the
407
+ * fields reported beside them.
408
+ */
409
+ export interface ExtractedPageMetrics {
288
410
  informationDensity: number;
289
411
  visualComplexity: number;
290
412
  interactiveElementCount: number;
@@ -304,10 +426,321 @@ geometry?: PageGeometry): Promise<{
304
426
  /** Uncapped choice count, so the cap below is visible rather than silent. */
305
427
  choiceCountRaw: number;
306
428
  choiceCountCapped: boolean;
307
- }>;
429
+ /**
430
+ * Stage B: seconds of work for the reference user, from published laws
431
+ * (demand-laws.ts). The chain turns each into a demand against one time
432
+ * budget (computeDemandDistribution). See lawSecondsOf for what each covers.
433
+ */
434
+ pointingSeconds: number;
435
+ choosingSeconds: number;
436
+ readingSeconds: number;
437
+ procedureSeconds: number;
438
+ /**
439
+ * Stage C: the same choices by Hick-Hyman, the expert limit of the menu
440
+ * model (Cockburn, Gutwin & Greenberg 2007) whose novice limit is
441
+ * choosingSeconds. cognitiveLoad's demand reads (1 - e) choosingSeconds +
442
+ * e choosingSecondsExpert, e the run's siteFamiliarity.
443
+ */
444
+ choosingSecondsExpert: number;
445
+ /** Diagnostics beside the law times; no demand reads them. */
446
+ lawDiagnostics: LawDiagnostics;
447
+ }
448
+ /** What lawSecondsOf measured besides the law times. */
449
+ export interface LawDiagnostics {
450
+ /** Mean Fitts index of difficulty over the stored targets, bits. */
451
+ meanFittsID: number;
452
+ /** Targets acquired (interactiveElements, uncapped). */
453
+ targets: number;
454
+ /** Entry steps the KLM time charges an M for. */
455
+ entrySteps: number;
456
+ /** Choice groups resolved, uncapped, plus the ungrouped links as one more when there are any. */
457
+ choiceGroups: number;
458
+ /** Links in no choice group, which form one more choice set. */
459
+ ungroupedLinks: number;
460
+ /**
461
+ * How ungroupedLinks was counted: `groupedLinks` (format 2: links -
462
+ * groupedLinks, each link once) or `navGroupSizes` (format 1: links minus the
463
+ * stored nav groups' sizes, where a link in nested groups may count twice).
464
+ */
465
+ ungroupedLinksFrom: "groupedLinks" | "navGroupSizes";
466
+ /**
467
+ * Menu labels read once each: the grouped links whose drawn text holds a
468
+ * letter or digit (groupedLinksWithText); an icon-only link has nothing to
469
+ * read. 0 for format 1, which has no in-group prose.
470
+ */
471
+ labels: number;
472
+ /** The part of readingSeconds that is the labels' first read (law.reading.labelFirstRead per label). */
473
+ labelSeconds: number;
474
+ }
475
+ /**
476
+ * A page as measured, before any normaliser: the counts every PageMetrics
477
+ * field is computed from, and the geometry a demand model needs beyond them
478
+ * (interactive targets, choice groups, text blocks). Plain numbers, strings
479
+ * and arrays, so it serialises as JSON and round-trips exactly.
480
+ *
481
+ * WHY IT EXISTS. extractPageMetrics used to count and normalise in one pass
482
+ * inside the page, so the only thing a caller could keep was the normalised
483
+ * 0-1 metric. The CTC reference set stored exactly that, and a registered
484
+ * normaliser (a midpoint, a weight, a cap) could not move the curve built from
485
+ * it: every stored page had the old value baked in. Now measurePageRaw counts,
486
+ * deriveMetrics normalises, and extractPageMetrics is the two in sequence,
487
+ * returning what it always returned (tests/page-metrics-golden.test.ts).
488
+ *
489
+ * WHICH CONSTANTS ARE APPLIED WHERE. The ids in PAGE_METRICS_MEASURE_IDS
490
+ * (provenance/page-metrics.ts) decide what is counted at all, so they are
491
+ * applied while measuring and a stored record cannot be re-derived under
492
+ * another value: the lazy-load walk, the colour sample, the prose length
493
+ * filter, script detection, and this record's own storage bounds. Every other
494
+ * pageMetrics constant is applied by deriveMetrics, the word, run and
495
+ * sentence-length thresholds included: they read the length histograms below
496
+ * rather than counts already cut at one threshold.
497
+ *
498
+ * FORMAT 2 (RAW_PAGE_FORMAT). Four things format 1 measured wrongly or not
499
+ * at all, fixed where they are measured because a stored record cannot be
500
+ * corrected later:
501
+ * - Prose counted once. Format 1 took every element matching the prose
502
+ * selector, so a p inside an li, an li inside a td or a p inside a
503
+ * blockquote was counted once per matching ancestor (a nested menu many
504
+ * times over). Format 2 counts the outermost matching element only, so
505
+ * `text`, `textBlocks` and `prose` hold each visible character once.
506
+ * Format 1's count survives as `proseNested`, three totals measured on
507
+ * the same DOM, for comparison; nothing derives from it.
508
+ * - A language picker is not the page's language. The key-element script
509
+ * rule read the first nav, and www.w3.org's first nav lists its Japanese
510
+ * and Chinese editions, so the page read as CJK. Text declared to be in
511
+ * another language (lang, or a link's hreflang) is no longer key-element
512
+ * text, and a nav that is a language picker is not "the nav".
513
+ * - Menu labels apart from the prose (proseInNav): the prose that sits in
514
+ * a nav or composite group, which the choosing law already reads.
515
+ * - A choice in one group only, with whole nav totals. Format 1 counted a
516
+ * nav's links, then a menubar inside it, then its submenus, so one link
517
+ * sat in up to three groups, and its nav sizes stopped at the stored
518
+ * list's 64 groups. Format 2 gives each choice to the outermost group
519
+ * that offers it and stores navGroupCount, navLinks and groupedLinks
520
+ * uncapped; format 1's group totals survive as `choiceNested`.
521
+ * deriveMetrics reads groupedLinks (the links in no group, for the choosing
522
+ * law) and none of the other new fields. It still accepts a format-1 record
523
+ * (RawPageMeasurementV1), which derives as format 2 does except choosing,
524
+ * whose ungrouped links come from the stored nav sizes, so the two can be
525
+ * compared.
526
+ */
527
+ export interface RawPageMeasurement {
528
+ /** Version of this record's layout: RAW_PAGE_FORMAT. */
529
+ format: 2;
530
+ scope: MetricScope;
531
+ /** window.innerWidth, CSS px. */
532
+ viewportWidth: number;
533
+ /** From the shared PageGeometry. */
534
+ viewportHeight: number;
535
+ documentHeight: number;
536
+ pageScreens: number;
537
+ /** window.scrollY when measured. Boxes are in document coordinates; subtract it for viewport ones. */
538
+ scrollY: number;
539
+ /** Summed trimmed innerText length of every text element in scope (nested elements count their text again). */
540
+ textChars: number;
541
+ /** Elements matching the interactive selector, in scope. */
542
+ interactiveElements: number;
543
+ /** a[href] in scope. */
544
+ links: number;
545
+ /** option elements inside the selects in scope. */
546
+ selectOptions: number;
547
+ /** Elements in scope with a running CSS animation. */
548
+ runningAnimations: number;
549
+ /** [autoplay] elements in scope. */
550
+ autoplayElements: number;
551
+ /** An element whose class names a carousel, slider or swiper, anywhere in the document. */
552
+ carousel: boolean;
553
+ /** Breadcrumb links, anywhere in the document. */
554
+ breadcrumbLinks: number;
555
+ /** Distinct colours among the body and the first visual.colourSample visible elements. */
556
+ colours: number;
557
+ /** Laid-out elements in scope. */
558
+ visibleElements: number;
559
+ /** img, svg and role=img elements in scope. */
560
+ images: number;
561
+ /** The visible prose, each character once, tokenised for its script. */
562
+ text: RawText;
563
+ /**
564
+ * The visible prose's totals, uncapped: trimmed characters and
565
+ * whitespace-separated words over the outermost prose elements (the
566
+ * textBlocks, all of them). `textBlockCount` is their number.
567
+ */
568
+ prose: {
569
+ chars: number;
570
+ words: number;
571
+ };
572
+ /**
573
+ * The part of `prose` inside a nav or ARIA composite group in scope (the
574
+ * groups choiceGroups counts, each choice once): menu labels, which the
575
+ * choosing law already reads as choices. A block a group holds counts
576
+ * whole; a block that holds groups (a layout td around a nav) counts their
577
+ * text. chars and words as `prose` counts them; letters, abjadWords and
578
+ * cjkChars in the reading law's units, tokenised as `text` is, so
579
+ * prose minus proseInNav is the prose outside every group.
580
+ */
581
+ proseInNav: {
582
+ chars: number;
583
+ words: number;
584
+ letters: number;
585
+ abjadWords: number;
586
+ cjkChars: number;
587
+ };
588
+ /**
589
+ * The same totals as format 1 counted them: every element matching the
590
+ * prose selector, nested ones again (elements, characters, words). For
591
+ * comparison only; nothing derives from it.
592
+ */
593
+ proseNested: {
594
+ elements: number;
595
+ chars: number;
596
+ words: number;
597
+ };
598
+ /** Element kinds, indexed by `boxes` and `choiceGroups`: tag, `:type` for inputs, `[role]` when set. */
599
+ kinds: string[];
600
+ /**
601
+ * The interactive elements in scope, five numbers each: kind index, x, y,
602
+ * width, height (CSS px, document coordinates, rounded). The first
603
+ * pageMetrics.raw.maxBoxes in document order; interactiveElements is the
604
+ * uncapped count.
605
+ */
606
+ boxes: number[];
607
+ /**
608
+ * Choice groups in scope, two numbers each: kind index and size. A nav's
609
+ * visible links, a select's options, a named radio or checkbox group (an
610
+ * unnamed one is a group of one), a menu, listbox, tablist or radiogroup's
611
+ * visible items. The first pageMetrics.raw.maxChoiceGroups, navs first,
612
+ * then selects, toggles and the ARIA composites, each in document order.
613
+ *
614
+ * Each choice is in one group only: the outermost nav or composite that
615
+ * offers it (an item and the link inside it are one choice). A menubar
616
+ * inside a nav, its submenus, or a nav inside a navigation region keep only
617
+ * what no outer group took, and are no group when that is nothing.
618
+ */
619
+ choiceGroups: number[];
620
+ /** Every group, uncapped: the length choiceGroups would have without its bound. */
621
+ choiceGroupCount: number;
622
+ /** Nav groups (nav, role=navigation) left with at least one link of their own, uncapped. */
623
+ navGroupCount: number;
624
+ /** The links those nav groups hold, each once, uncapped: the sum of every nav size, stored or not. */
625
+ navLinks: number;
626
+ /** Visible links inside any choice group (nav or composite), each once, uncapped; `links - groupedLinks` are in none. */
627
+ groupedLinks: number;
628
+ /**
629
+ * Of groupedLinks, those whose drawn text holds at least one letter or
630
+ * digit (any script: a Latin letter, an abjad word, a CJK character, a page
631
+ * number), uncapped. Text a sighted user does not see is left out:
632
+ * aria-label, title and alt, an svg title, and text hidden, transparent,
633
+ * sub-pixel or clipped away inside the link (a visually-hidden span).
634
+ * groupedLinks minus this is the icon-only grouped links.
635
+ */
636
+ groupedLinksWithText: number;
637
+ /**
638
+ * The group totals as format 1 counted them: every nav, select, toggle and
639
+ * composite group with a choice, nested groups counting their choices again.
640
+ * For comparison only; nothing derives from it.
641
+ */
642
+ choiceNested: {
643
+ groups: number;
644
+ items: number;
645
+ };
646
+ /**
647
+ * The prose elements the readability metrics read, eight numbers each:
648
+ * characters, whitespace-separated words, CJK characters, sentences
649
+ * (non-empty fragments between . ! ? and their CJK and Arabic forms), font
650
+ * size px, line height px (0 when `normal`), width and height px. Sizes to
651
+ * half a pixel, boxes rounded. The first pageMetrics.raw.maxTextBlocks.
652
+ *
653
+ * A block is an OUTERMOST prose element: one that matches the prose
654
+ * selector, is laid out in scope and longer than prose.lengthAbove, and has
655
+ * no such element above it. Its text includes everything nested inside it,
656
+ * so its font size and box are the outer element's. At viewport scope an
657
+ * outer element that is partly on screen brings all of its text, as every
658
+ * element-level count here does.
659
+ */
660
+ textBlocks: number[];
661
+ textBlockCount: number;
662
+ }
663
+ /** The layout measurePageRaw writes, and the only one the CTC reference loads. */
664
+ export declare const RAW_PAGE_FORMAT = 2;
665
+ /**
666
+ * A format-1 record (2026-10-22): nested prose counted per element, the
667
+ * first-nav script rule, nested choice groups counted again, no prose or nav
668
+ * totals. deriveMetrics still derives it,
669
+ * exactly as it did then, so format-1 data can be compared with format 2.
670
+ */
671
+ export type RawPageMeasurementV1 = Omit<RawPageMeasurement, "format" | "prose" | "proseNested" | "proseInNav" | "navGroupCount" | "navLinks" | "groupedLinks" | "groupedLinksWithText" | "choiceNested"> & {
672
+ format: 1;
673
+ };
674
+ /** The visible prose of a RawPageMeasurement, as length histograms rather than threshold counts. */
675
+ export interface RawText {
676
+ script: 'alphabetic' | 'cjk' | 'abjad';
677
+ /**
678
+ * [length, count] pairs, exact. alphabetic: every word, letters only.
679
+ * abjad: the words with no abjad letter. cjk: the words starting with a
680
+ * Latin letter, as written.
681
+ */
682
+ wordLengths: Array<[number, number]>;
683
+ /** abjad only: the abjad words, [length, count] pairs, exact. */
684
+ abjadWordLengths: Array<[number, number]>;
685
+ /** cjk only: CJK characters in the prose. */
686
+ cjkChars: number;
687
+ /** cjk only: maximal runs of CJK characters, [length, count]; lengths at or above lengthBins share that bin. */
688
+ cjkRunLengths: Array<[number, number]>;
689
+ /** Distinct words (cjk: distinct CJK bigrams plus Latin words). */
690
+ uniqueWords: number;
691
+ /** The script's sentence split, [trimmed length, count]; lengths at or above lengthBins share that bin. */
692
+ fragmentLengths: Array<[number, number]>;
693
+ /** pageMetrics.raw.lengthBins when measured: a threshold must sit below it to be re-derived. */
694
+ lengthBins: number;
695
+ }
696
+ /**
697
+ * Measure the page: counts and geometry, no normaliser (RawPageMeasurement).
698
+ * The scope decides which elements count; at full_page the page is walked
699
+ * first so lazy content exists to be counted.
700
+ */
701
+ export declare function measurePageRaw(page: any, scope?: MetricScope,
702
+ /** Geometry already measured by the caller, so both derivations share one read. */
703
+ geometry?: PageGeometry): Promise<RawPageMeasurement>;
704
+ /**
705
+ * Stage B's four law times for a raw page measurement, in seconds for the
706
+ * reference user, with what they rest on. Everything in scope, once
707
+ * (research/stage-b-design.md, decision 1):
708
+ *
709
+ * pointing every interactive box acquired once: Fitts, SMALLER-OF width,
710
+ * from the centre of the screen it is seen on; the stored boxes'
711
+ * sum scaled to interactiveElements when the box list is capped.
712
+ * choosing every choice group resolved once by novice linear search
713
+ * (Cockburn et al. 2007); a checkbox group is one yes/no per box;
714
+ * links in no group form one more set. Groups beyond the stored
715
+ * ones are scaled to choiceGroupCount. choosingSecondsExpert is
716
+ * the same groups by Hick-Hyman, the menu model's expert limit
717
+ * (Stage C: cognitiveLoad's demand interpolates the two by the
718
+ * run's siteFamiliarity, Cockburn et al.'s Eq. 4).
719
+ * reading the prose outside every group read once at Brysbaert's rate
720
+ * (letters of the alphabetic words, abjad words, CJK
721
+ * characters; format 2 counts each character once), plus a
722
+ * first read per menu label: law.reading.labelFirstRead per
723
+ * grouped link with visible text (an icon-only link has nothing
724
+ * to read), which the novice search above leaves out
725
+ * (Cockburn et al. fitted it without that one-off cost). Format
726
+ * 1 has no in-group prose, so it reads all of its prose and
727
+ * charges no label.
728
+ * procedure KLM's M per entry step: an entry field (ENTRY_INPUT_TYPES,
729
+ * textarea, select) or a radio or checkbox group.
730
+ */
731
+ export declare function lawSecondsOf(raw: RawPageMeasurement | RawPageMeasurementV1): Pick<ExtractedPageMetrics, "pointingSeconds" | "choosingSeconds" | "choosingSecondsExpert" | "readingSeconds" | "procedureSeconds" | "lawDiagnostics">;
732
+ export declare function deriveMetrics(raw: RawPageMeasurement | RawPageMeasurementV1): ExtractedPageMetrics;
733
+ /**
734
+ * Page metrics of a live page: measurePageRaw, then deriveMetrics. Callers
735
+ * that keep the measurement (the CTC reference crawl) call the two halves.
736
+ */
737
+ export declare function extractPageMetrics(page: any, scope?: MetricScope,
738
+ /** Geometry already measured by the caller, so both derivations share one read. */
739
+ geometry?: PageGeometry): Promise<ExtractedPageMetrics>;
308
740
  /**
309
741
  * Compute the full pairwise distance matrix between personas.
310
- * Returns a symmetric matrix where entry [i][j] = W₁(persona_i, persona_j).
742
+ * Returns a symmetric matrix where entry [i][j] = cognitiveDistance(persona_i,
743
+ * persona_j).w1, the generalized W₁ (shape and level; see cognitiveDistance).
311
744
  */
312
745
  export declare function cognitiveDistanceMatrix(profiles: OTCognitiveProfile[]): {
313
746
  matrix: number[][];
@@ -1 +1 @@
1
- {"version":3,"file":"cognitive-transport.d.ts","sourceRoot":"","sources":["../../src/visual/cognitive-transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cognitive-transport.d.ts","sourceRoot":"","sources":["../../src/visual/cognitive-transport.ts"],"names":[],"mappings":"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"}