@12ui/design 0.2.56 → 0.2.58

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 (429) hide show
  1. package/SKILL.md +1 -1
  2. package/dist/artifact-materializer.d.ts.map +1 -1
  3. package/dist/artifact-materializer.js +4 -1
  4. package/dist/artifact-materializer.js.map +1 -1
  5. package/dist/branch-client.d.ts +86 -2
  6. package/dist/branch-client.d.ts.map +1 -1
  7. package/dist/branch-client.js +31 -0
  8. package/dist/branch-client.js.map +1 -1
  9. package/dist/cli-arguments.d.ts.map +1 -1
  10. package/dist/cli-arguments.js +3 -1
  11. package/dist/cli-arguments.js.map +1 -1
  12. package/dist/cli-capabilities.d.ts +1 -1
  13. package/dist/cli-conversion-derivation.js +2 -2
  14. package/dist/cli-conversion-derivation.js.map +1 -1
  15. package/dist/cli-convert-command.d.ts +2 -0
  16. package/dist/cli-convert-command.d.ts.map +1 -1
  17. package/dist/cli-convert-command.js +176 -38
  18. package/dist/cli-convert-command.js.map +1 -1
  19. package/dist/cli-corpus-command.js +2 -2
  20. package/dist/cli-corpus-command.js.map +1 -1
  21. package/dist/cli-corpus-evidence.d.ts.map +1 -1
  22. package/dist/cli-corpus-evidence.js +2 -1
  23. package/dist/cli-corpus-evidence.js.map +1 -1
  24. package/dist/cli-corpus-reference-downloads.d.ts +1 -0
  25. package/dist/cli-corpus-reference-downloads.d.ts.map +1 -1
  26. package/dist/cli-corpus-reference-downloads.js +13 -3
  27. package/dist/cli-corpus-reference-downloads.js.map +1 -1
  28. package/dist/cli-corpus-types.d.ts +2 -0
  29. package/dist/cli-corpus-types.d.ts.map +1 -1
  30. package/dist/cli-draft-command.d.ts +9 -0
  31. package/dist/cli-draft-command.d.ts.map +1 -1
  32. package/dist/cli-draft-command.js +26 -1
  33. package/dist/cli-draft-command.js.map +1 -1
  34. package/dist/cli-help/design.d.ts +7 -4
  35. package/dist/cli-help/design.d.ts.map +1 -1
  36. package/dist/cli-help/design.js +23 -6
  37. package/dist/cli-help/design.js.map +1 -1
  38. package/dist/cli-help/index.d.ts +9 -6
  39. package/dist/cli-help/index.d.ts.map +1 -1
  40. package/dist/cli-help/meta.d.ts +2 -2
  41. package/dist/cli-help/meta.d.ts.map +1 -1
  42. package/dist/cli-help/meta.js +4 -1
  43. package/dist/cli-help/meta.js.map +1 -1
  44. package/dist/cli-improve-command.d.ts.map +1 -1
  45. package/dist/cli-improve-command.js +273 -28
  46. package/dist/cli-improve-command.js.map +1 -1
  47. package/dist/cli-redesign-command.d.ts.map +1 -1
  48. package/dist/cli-redesign-command.js +97 -24
  49. package/dist/cli-redesign-command.js.map +1 -1
  50. package/dist/cli-run.d.ts.map +1 -1
  51. package/dist/cli-run.js +13 -3
  52. package/dist/cli-run.js.map +1 -1
  53. package/dist/cli-spend-command.d.ts +12 -1
  54. package/dist/cli-spend-command.d.ts.map +1 -1
  55. package/dist/cli-spend-command.js +94 -2
  56. package/dist/cli-spend-command.js.map +1 -1
  57. package/dist/cli-usage.js +5 -5
  58. package/dist/cli-usage.js.map +1 -1
  59. package/dist/concept-input.d.ts +6 -56
  60. package/dist/concept-input.d.ts.map +1 -1
  61. package/dist/concept-input.js +6 -65
  62. package/dist/concept-input.js.map +1 -1
  63. package/dist/conversion-client.d.ts +92 -3
  64. package/dist/conversion-client.d.ts.map +1 -1
  65. package/dist/conversion-client.js +317 -23
  66. package/dist/conversion-client.js.map +1 -1
  67. package/dist/corpus-client.d.ts +7 -1
  68. package/dist/corpus-client.d.ts.map +1 -1
  69. package/dist/corpus-client.js +3 -2
  70. package/dist/corpus-client.js.map +1 -1
  71. package/dist/corpus-reference-download-retry.d.ts +68 -0
  72. package/dist/corpus-reference-download-retry.d.ts.map +1 -0
  73. package/dist/corpus-reference-download-retry.js +123 -0
  74. package/dist/corpus-reference-download-retry.js.map +1 -0
  75. package/dist/corpus-request-error.d.ts +17 -0
  76. package/dist/corpus-request-error.d.ts.map +1 -0
  77. package/dist/corpus-request-error.js +21 -0
  78. package/dist/corpus-request-error.js.map +1 -0
  79. package/dist/draft-run.d.ts +15 -0
  80. package/dist/draft-run.d.ts.map +1 -1
  81. package/dist/draft-run.js +32 -5
  82. package/dist/draft-run.js.map +1 -1
  83. package/dist/draft-workspace.d.ts +2 -1
  84. package/dist/draft-workspace.d.ts.map +1 -1
  85. package/dist/draft-workspace.js.map +1 -1
  86. package/dist/hosted-draft-identity.d.ts +9 -0
  87. package/dist/hosted-draft-identity.d.ts.map +1 -1
  88. package/dist/hosted-draft-identity.js +2 -0
  89. package/dist/hosted-draft-identity.js.map +1 -1
  90. package/dist/improve-added-specs.d.ts +12 -31
  91. package/dist/improve-added-specs.d.ts.map +1 -1
  92. package/dist/improve-added-specs.js +64 -152
  93. package/dist/improve-added-specs.js.map +1 -1
  94. package/dist/improve-artifact-writer.d.ts +13 -0
  95. package/dist/improve-artifact-writer.d.ts.map +1 -0
  96. package/dist/improve-artifact-writer.js +27 -0
  97. package/dist/improve-artifact-writer.js.map +1 -0
  98. package/dist/improve-bootstrap-history.d.ts +21 -0
  99. package/dist/improve-bootstrap-history.d.ts.map +1 -0
  100. package/dist/improve-bootstrap-history.js +43 -0
  101. package/dist/improve-bootstrap-history.js.map +1 -0
  102. package/dist/improve-bootstrap-secret.d.ts +35 -0
  103. package/dist/improve-bootstrap-secret.d.ts.map +1 -0
  104. package/dist/improve-bootstrap-secret.js +61 -0
  105. package/dist/improve-bootstrap-secret.js.map +1 -0
  106. package/dist/improve-branch-stage.d.ts +10 -0
  107. package/dist/improve-branch-stage.d.ts.map +1 -0
  108. package/dist/improve-branch-stage.js +325 -0
  109. package/dist/improve-branch-stage.js.map +1 -0
  110. package/dist/improve-capture-redirect.d.ts +65 -0
  111. package/dist/improve-capture-redirect.d.ts.map +1 -0
  112. package/dist/improve-capture-redirect.js +85 -0
  113. package/dist/improve-capture-redirect.js.map +1 -0
  114. package/dist/improve-capture-words.d.ts +43 -0
  115. package/dist/improve-capture-words.d.ts.map +1 -0
  116. package/dist/improve-capture-words.js +25 -0
  117. package/dist/improve-capture-words.js.map +1 -0
  118. package/dist/improve-concept.d.ts +6 -7
  119. package/dist/improve-concept.d.ts.map +1 -1
  120. package/dist/improve-concept.js +12 -38
  121. package/dist/improve-concept.js.map +1 -1
  122. package/dist/improve-conversion-attempts.d.ts +21 -9
  123. package/dist/improve-conversion-attempts.d.ts.map +1 -1
  124. package/dist/improve-conversion-attempts.js +6 -1
  125. package/dist/improve-conversion-attempts.js.map +1 -1
  126. package/dist/improve-conversion-stage.d.ts +20 -2
  127. package/dist/improve-conversion-stage.d.ts.map +1 -1
  128. package/dist/improve-conversion-stage.js +386 -178
  129. package/dist/improve-conversion-stage.js.map +1 -1
  130. package/dist/improve-convert-progress.d.ts +44 -0
  131. package/dist/improve-convert-progress.d.ts.map +1 -0
  132. package/dist/improve-convert-progress.js +47 -0
  133. package/dist/improve-convert-progress.js.map +1 -0
  134. package/dist/improve-convert-resilience.d.ts +96 -58
  135. package/dist/improve-convert-resilience.d.ts.map +1 -1
  136. package/dist/improve-convert-resilience.js +128 -72
  137. package/dist/improve-convert-resilience.js.map +1 -1
  138. package/dist/improve-core/concept-input.d.ts +80 -0
  139. package/dist/improve-core/concept-input.d.ts.map +1 -0
  140. package/dist/improve-core/concept-input.js +92 -0
  141. package/dist/improve-core/concept-input.js.map +1 -0
  142. package/dist/improve-core/improve-added-specs.d.ts +62 -0
  143. package/dist/improve-core/improve-added-specs.d.ts.map +1 -0
  144. package/dist/improve-core/improve-added-specs.js +160 -0
  145. package/dist/improve-core/improve-added-specs.js.map +1 -0
  146. package/dist/improve-core/improve-artifacts.d.ts +18 -0
  147. package/dist/improve-core/improve-artifacts.d.ts.map +1 -0
  148. package/dist/improve-core/improve-artifacts.js +4 -0
  149. package/dist/improve-core/improve-artifacts.js.map +1 -0
  150. package/dist/improve-core/improve-concept.d.ts +7 -0
  151. package/dist/improve-core/improve-concept.d.ts.map +1 -0
  152. package/dist/improve-core/improve-concept.js +185 -0
  153. package/dist/improve-core/improve-concept.js.map +1 -0
  154. package/dist/improve-core/improve-discovery.d.ts +84 -0
  155. package/dist/improve-core/improve-discovery.d.ts.map +1 -0
  156. package/dist/improve-core/improve-discovery.js +154 -0
  157. package/dist/improve-core/improve-discovery.js.map +1 -0
  158. package/dist/improve-core/improve-dom-anchor.d.ts.map +1 -0
  159. package/dist/{improve-dom-anchor.js → improve-core/improve-dom-anchor.js} +2 -0
  160. package/dist/improve-core/improve-dom-anchor.js.map +1 -0
  161. package/dist/improve-core/improve-dom-diff.d.ts +59 -0
  162. package/dist/improve-core/improve-dom-diff.d.ts.map +1 -0
  163. package/dist/improve-core/improve-dom-diff.js +151 -0
  164. package/dist/improve-core/improve-dom-diff.js.map +1 -0
  165. package/dist/improve-core/improve-dom-extract.d.ts.map +1 -0
  166. package/dist/{improve-dom-extract.js → improve-core/improve-dom-extract.js} +2 -0
  167. package/dist/improve-core/improve-dom-extract.js.map +1 -0
  168. package/dist/improve-core/improve-dom-gate.d.ts +49 -0
  169. package/dist/improve-core/improve-dom-gate.d.ts.map +1 -0
  170. package/dist/improve-core/improve-dom-gate.js +99 -0
  171. package/dist/improve-core/improve-dom-gate.js.map +1 -0
  172. package/dist/improve-core/improve-dom-neighbour.d.ts.map +1 -0
  173. package/dist/{improve-dom-neighbour.js → improve-core/improve-dom-neighbour.js} +2 -0
  174. package/dist/improve-core/improve-dom-neighbour.js.map +1 -0
  175. package/dist/improve-core/improve-dom-scale.d.ts.map +1 -0
  176. package/dist/{improve-dom-scale.js → improve-core/improve-dom-scale.js} +2 -0
  177. package/dist/improve-core/improve-dom-scale.js.map +1 -0
  178. package/dist/improve-core/improve-icon-svg.d.ts +29 -0
  179. package/dist/improve-core/improve-icon-svg.d.ts.map +1 -0
  180. package/dist/improve-core/improve-icon-svg.js +85 -0
  181. package/dist/improve-core/improve-icon-svg.js.map +1 -0
  182. package/dist/improve-core/improve-kit-asset-model.d.ts +177 -0
  183. package/dist/improve-core/improve-kit-asset-model.d.ts.map +1 -0
  184. package/dist/improve-core/improve-kit-asset-model.js +269 -0
  185. package/dist/improve-core/improve-kit-asset-model.js.map +1 -0
  186. package/dist/improve-core/improve-layerdoc-diff.d.ts.map +1 -0
  187. package/dist/{improve-layerdoc-diff.js → improve-core/improve-layerdoc-diff.js} +2 -0
  188. package/dist/improve-core/improve-layerdoc-diff.js.map +1 -0
  189. package/dist/{improve-layerdoc-types.d.ts → improve-core/improve-layerdoc-types.d.ts} +9 -0
  190. package/dist/improve-core/improve-layerdoc-types.d.ts.map +1 -0
  191. package/dist/improve-core/improve-layerdoc-types.js +4 -0
  192. package/dist/improve-core/improve-layerdoc-types.js.map +1 -0
  193. package/dist/improve-core/improve-page-words.d.ts +180 -0
  194. package/dist/improve-core/improve-page-words.d.ts.map +1 -0
  195. package/dist/improve-core/improve-page-words.js +303 -0
  196. package/dist/improve-core/improve-page-words.js.map +1 -0
  197. package/dist/{improve-plan-annotated-render.d.ts → improve-core/improve-plan-annotated-render.d.ts} +19 -2
  198. package/dist/improve-core/improve-plan-annotated-render.d.ts.map +1 -0
  199. package/dist/{improve-plan-annotated-render.js → improve-core/improve-plan-annotated-render.js} +77 -28
  200. package/dist/improve-core/improve-plan-annotated-render.js.map +1 -0
  201. package/dist/improve-core/improve-plan-annotator.d.ts +34 -0
  202. package/dist/improve-core/improve-plan-annotator.d.ts.map +1 -0
  203. package/dist/improve-core/improve-plan-annotator.js +52 -0
  204. package/dist/improve-core/improve-plan-annotator.js.map +1 -0
  205. package/dist/{improve-plan-render.d.ts → improve-core/improve-plan-render.d.ts} +2 -1
  206. package/dist/improve-core/improve-plan-render.d.ts.map +1 -0
  207. package/dist/{improve-plan-render.js → improve-core/improve-plan-render.js} +7 -1
  208. package/dist/improve-core/improve-plan-render.js.map +1 -0
  209. package/dist/improve-core/improve-plan-vector-keep.d.ts +29 -0
  210. package/dist/improve-core/improve-plan-vector-keep.d.ts.map +1 -0
  211. package/dist/improve-core/improve-plan-vector-keep.js +68 -0
  212. package/dist/improve-core/improve-plan-vector-keep.js.map +1 -0
  213. package/dist/{improve-raster-layers-section.d.ts → improve-core/improve-raster-layers-section.d.ts} +9 -1
  214. package/dist/improve-core/improve-raster-layers-section.d.ts.map +1 -0
  215. package/dist/{improve-raster-layers-section.js → improve-core/improve-raster-layers-section.js} +5 -2
  216. package/dist/improve-core/improve-raster-layers-section.js.map +1 -0
  217. package/dist/improve-core/improve-refusal.d.ts +6 -0
  218. package/dist/improve-core/improve-refusal.d.ts.map +1 -0
  219. package/dist/improve-core/improve-refusal.js +27 -0
  220. package/dist/improve-core/improve-refusal.js.map +1 -0
  221. package/dist/improve-core/improve-retain.d.ts +121 -0
  222. package/dist/improve-core/improve-retain.d.ts.map +1 -0
  223. package/dist/improve-core/improve-retain.js +115 -0
  224. package/dist/improve-core/improve-retain.js.map +1 -0
  225. package/dist/improve-core/improve-site-plan.d.ts +75 -0
  226. package/dist/improve-core/improve-site-plan.d.ts.map +1 -0
  227. package/dist/improve-core/improve-site-plan.js +135 -0
  228. package/dist/improve-core/improve-site-plan.js.map +1 -0
  229. package/dist/improve-core/improve-site-shell.d.ts +56 -0
  230. package/dist/improve-core/improve-site-shell.d.ts.map +1 -0
  231. package/dist/improve-core/improve-site-shell.js +152 -0
  232. package/dist/improve-core/improve-site-shell.js.map +1 -0
  233. package/dist/improve-core/improve-site-tokens.d.ts +44 -0
  234. package/dist/improve-core/improve-site-tokens.d.ts.map +1 -0
  235. package/dist/improve-core/improve-site-tokens.js +87 -0
  236. package/dist/improve-core/improve-site-tokens.js.map +1 -0
  237. package/dist/improve-core/improve-source-hints.d.ts +25 -0
  238. package/dist/improve-core/improve-source-hints.d.ts.map +1 -0
  239. package/dist/improve-core/improve-source-hints.js +17 -0
  240. package/dist/improve-core/improve-source-hints.js.map +1 -0
  241. package/dist/{improve-token-patch.d.ts → improve-core/improve-token-patch.d.ts} +2 -0
  242. package/dist/improve-core/improve-token-patch.d.ts.map +1 -0
  243. package/dist/{improve-token-patch.js → improve-core/improve-token-patch.js} +25 -5
  244. package/dist/improve-core/improve-token-patch.js.map +1 -0
  245. package/dist/improve-core/index.d.ts +47 -0
  246. package/dist/improve-core/index.d.ts.map +1 -0
  247. package/dist/improve-core/index.js +49 -0
  248. package/dist/improve-core/index.js.map +1 -0
  249. package/dist/improve-delivery-stages.d.ts +6 -0
  250. package/dist/improve-delivery-stages.d.ts.map +1 -1
  251. package/dist/improve-delivery-stages.js +91 -6
  252. package/dist/improve-delivery-stages.js.map +1 -1
  253. package/dist/improve-dom-diff.d.ts +8 -24
  254. package/dist/improve-dom-diff.d.ts.map +1 -1
  255. package/dist/improve-dom-diff.js +23 -123
  256. package/dist/improve-dom-diff.js.map +1 -1
  257. package/dist/improve-dom-gate.d.ts +1 -18
  258. package/dist/improve-dom-gate.d.ts.map +1 -1
  259. package/dist/improve-dom-gate.js +1 -46
  260. package/dist/improve-dom-gate.js.map +1 -1
  261. package/dist/improve-generation-stages.d.ts +0 -2
  262. package/dist/improve-generation-stages.d.ts.map +1 -1
  263. package/dist/improve-generation-stages.js +191 -15
  264. package/dist/improve-generation-stages.js.map +1 -1
  265. package/dist/improve-kit-assets.d.ts +8 -116
  266. package/dist/improve-kit-assets.d.ts.map +1 -1
  267. package/dist/improve-kit-assets.js +9 -229
  268. package/dist/improve-kit-assets.js.map +1 -1
  269. package/dist/improve-kit-ignore.d.ts +32 -0
  270. package/dist/improve-kit-ignore.d.ts.map +1 -0
  271. package/dist/improve-kit-ignore.js +111 -0
  272. package/dist/improve-kit-ignore.js.map +1 -0
  273. package/dist/improve-kit-readme.d.ts +4 -0
  274. package/dist/improve-kit-readme.d.ts.map +1 -1
  275. package/dist/improve-kit-readme.js +155 -24
  276. package/dist/improve-kit-readme.js.map +1 -1
  277. package/dist/improve-kit-stall.d.ts +51 -3
  278. package/dist/improve-kit-stall.d.ts.map +1 -1
  279. package/dist/improve-kit-stall.js +205 -21
  280. package/dist/improve-kit-stall.js.map +1 -1
  281. package/dist/improve-kit-status.d.ts +36 -0
  282. package/dist/improve-kit-status.d.ts.map +1 -1
  283. package/dist/improve-kit-status.js +82 -7
  284. package/dist/improve-kit-status.js.map +1 -1
  285. package/dist/improve-options.d.ts +14 -0
  286. package/dist/improve-options.d.ts.map +1 -1
  287. package/dist/improve-options.js +95 -12
  288. package/dist/improve-options.js.map +1 -1
  289. package/dist/improve-passthrough-flags.d.ts +8 -0
  290. package/dist/improve-passthrough-flags.d.ts.map +1 -0
  291. package/dist/improve-passthrough-flags.js +11 -0
  292. package/dist/improve-passthrough-flags.js.map +1 -0
  293. package/dist/improve-plan-annotator.d.ts +13 -2
  294. package/dist/improve-plan-annotator.d.ts.map +1 -1
  295. package/dist/improve-plan-annotator.js +35 -37
  296. package/dist/improve-plan-annotator.js.map +1 -1
  297. package/dist/improve-pricing-plan.d.ts +3 -0
  298. package/dist/improve-pricing-plan.d.ts.map +1 -1
  299. package/dist/improve-pricing-plan.js +33 -5
  300. package/dist/improve-pricing-plan.js.map +1 -1
  301. package/dist/improve-recheck.d.ts +9 -0
  302. package/dist/improve-recheck.d.ts.map +1 -0
  303. package/dist/improve-recheck.js +200 -0
  304. package/dist/improve-recheck.js.map +1 -0
  305. package/dist/improve-reset.d.ts.map +1 -1
  306. package/dist/improve-reset.js +11 -0
  307. package/dist/improve-reset.js.map +1 -1
  308. package/dist/improve-run-summary.d.ts +6 -0
  309. package/dist/improve-run-summary.d.ts.map +1 -1
  310. package/dist/improve-run-summary.js +77 -7
  311. package/dist/improve-run-summary.js.map +1 -1
  312. package/dist/improve-site-plan.d.ts +57 -0
  313. package/dist/improve-site-plan.d.ts.map +1 -0
  314. package/dist/improve-site-plan.js +79 -0
  315. package/dist/improve-site-plan.js.map +1 -0
  316. package/dist/improve-site-shell.d.ts +11 -0
  317. package/dist/improve-site-shell.d.ts.map +1 -0
  318. package/dist/improve-site-shell.js +24 -0
  319. package/dist/improve-site-shell.js.map +1 -0
  320. package/dist/improve-site-stage.d.ts +10 -0
  321. package/dist/improve-site-stage.d.ts.map +1 -0
  322. package/dist/improve-site-stage.js +84 -0
  323. package/dist/improve-site-stage.js.map +1 -0
  324. package/dist/improve-site-tokens.d.ts +9 -0
  325. package/dist/improve-site-tokens.d.ts.map +1 -0
  326. package/dist/improve-site-tokens.js +17 -0
  327. package/dist/improve-site-tokens.js.map +1 -0
  328. package/dist/improve-source-hints.d.ts +3 -12
  329. package/dist/improve-source-hints.d.ts.map +1 -1
  330. package/dist/improve-source-hints.js +4 -5
  331. package/dist/improve-source-hints.js.map +1 -1
  332. package/dist/improve-spend-ledger.d.ts +69 -0
  333. package/dist/improve-spend-ledger.d.ts.map +1 -0
  334. package/dist/improve-spend-ledger.js +118 -0
  335. package/dist/improve-spend-ledger.js.map +1 -0
  336. package/dist/improve-stage-runners.d.ts +5 -2
  337. package/dist/improve-stage-runners.d.ts.map +1 -1
  338. package/dist/improve-stage-runners.js +5 -2
  339. package/dist/improve-stage-runners.js.map +1 -1
  340. package/dist/improve-stage-shared.d.ts +49 -2
  341. package/dist/improve-stage-shared.d.ts.map +1 -1
  342. package/dist/improve-stage-shared.js +80 -3
  343. package/dist/improve-stage-shared.js.map +1 -1
  344. package/dist/improve-stop-handler.d.ts +15 -0
  345. package/dist/improve-stop-handler.d.ts.map +1 -1
  346. package/dist/improve-stop-handler.js +74 -3
  347. package/dist/improve-stop-handler.js.map +1 -1
  348. package/dist/improve-terminal-event.d.ts.map +1 -1
  349. package/dist/improve-terminal-event.js +13 -4
  350. package/dist/improve-terminal-event.js.map +1 -1
  351. package/dist/improve-workspace.d.ts +282 -9
  352. package/dist/improve-workspace.d.ts.map +1 -1
  353. package/dist/improve-workspace.js +250 -78
  354. package/dist/improve-workspace.js.map +1 -1
  355. package/dist/index.d.ts +2 -1
  356. package/dist/index.d.ts.map +1 -1
  357. package/dist/index.js +1 -0
  358. package/dist/index.js.map +1 -1
  359. package/dist/legacy-skill-catalog.d.ts.map +1 -1
  360. package/dist/legacy-skill-catalog.js +202 -0
  361. package/dist/legacy-skill-catalog.js.map +1 -1
  362. package/dist/mcp-convert.js +1 -1
  363. package/dist/mcp-convert.js.map +1 -1
  364. package/dist/redesign-capture.d.ts +146 -15
  365. package/dist/redesign-capture.d.ts.map +1 -1
  366. package/dist/redesign-capture.js +182 -65
  367. package/dist/redesign-capture.js.map +1 -1
  368. package/dist/redesign-workspace.d.ts +13 -0
  369. package/dist/redesign-workspace.d.ts.map +1 -1
  370. package/dist/redesign-workspace.js +14 -0
  371. package/dist/redesign-workspace.js.map +1 -1
  372. package/dist/responsive-alternative-materializer.d.ts +24 -0
  373. package/dist/responsive-alternative-materializer.d.ts.map +1 -0
  374. package/dist/responsive-alternative-materializer.js +93 -0
  375. package/dist/responsive-alternative-materializer.js.map +1 -0
  376. package/dist/result-integrity.d.ts +38 -0
  377. package/dist/result-integrity.d.ts.map +1 -0
  378. package/dist/result-integrity.js +46 -0
  379. package/dist/result-integrity.js.map +1 -0
  380. package/dist/review-edit-source.d.ts.map +1 -1
  381. package/dist/review-edit-source.js +6 -2
  382. package/dist/review-edit-source.js.map +1 -1
  383. package/dist/review-edit.js +2 -2
  384. package/dist/review-edit.js.map +1 -1
  385. package/dist/review-prototype-gap.js +1 -1
  386. package/dist/review-prototype-gap.js.map +1 -1
  387. package/dist/spend-run-filter.d.ts +21 -0
  388. package/dist/spend-run-filter.d.ts.map +1 -0
  389. package/dist/spend-run-filter.js +65 -0
  390. package/dist/spend-run-filter.js.map +1 -0
  391. package/dist/spend-scoped-report-lines.d.ts +4 -0
  392. package/dist/spend-scoped-report-lines.d.ts.map +1 -0
  393. package/dist/spend-scoped-report-lines.js +46 -0
  394. package/dist/spend-scoped-report-lines.js.map +1 -0
  395. package/dist/spend-scoped-report.d.ts +28 -0
  396. package/dist/spend-scoped-report.d.ts.map +1 -0
  397. package/dist/spend-scoped-report.js +45 -0
  398. package/dist/spend-scoped-report.js.map +1 -0
  399. package/open-design.json +2 -2
  400. package/package.json +5 -5
  401. package/skills/12ui-design/SKILL.md +14 -4
  402. package/skills/12ui-design/improve.md +67 -5
  403. package/skills/12ui-design/inspire.md +1 -1
  404. package/dist/improve-dom-anchor.d.ts.map +0 -1
  405. package/dist/improve-dom-anchor.js.map +0 -1
  406. package/dist/improve-dom-extract.d.ts.map +0 -1
  407. package/dist/improve-dom-extract.js.map +0 -1
  408. package/dist/improve-dom-neighbour.d.ts.map +0 -1
  409. package/dist/improve-dom-neighbour.js.map +0 -1
  410. package/dist/improve-dom-scale.d.ts.map +0 -1
  411. package/dist/improve-dom-scale.js.map +0 -1
  412. package/dist/improve-layerdoc-diff.d.ts.map +0 -1
  413. package/dist/improve-layerdoc-diff.js.map +0 -1
  414. package/dist/improve-layerdoc-types.d.ts.map +0 -1
  415. package/dist/improve-layerdoc-types.js +0 -2
  416. package/dist/improve-layerdoc-types.js.map +0 -1
  417. package/dist/improve-plan-annotated-render.d.ts.map +0 -1
  418. package/dist/improve-plan-annotated-render.js.map +0 -1
  419. package/dist/improve-plan-render.d.ts.map +0 -1
  420. package/dist/improve-plan-render.js.map +0 -1
  421. package/dist/improve-raster-layers-section.d.ts.map +0 -1
  422. package/dist/improve-raster-layers-section.js.map +0 -1
  423. package/dist/improve-token-patch.d.ts.map +0 -1
  424. package/dist/improve-token-patch.js.map +0 -1
  425. /package/dist/{improve-dom-anchor.d.ts → improve-core/improve-dom-anchor.d.ts} +0 -0
  426. /package/dist/{improve-dom-extract.d.ts → improve-core/improve-dom-extract.d.ts} +0 -0
  427. /package/dist/{improve-dom-neighbour.d.ts → improve-core/improve-dom-neighbour.d.ts} +0 -0
  428. /package/dist/{improve-dom-scale.d.ts → improve-core/improve-dom-scale.d.ts} +0 -0
  429. /package/dist/{improve-layerdoc-diff.d.ts → improve-core/improve-layerdoc-diff.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"improve-layerdoc-diff.d.ts","sourceRoot":"","sources":["../../src/improve-core/improve-layerdoc-diff.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EACV,eAAe,EACf,YAAY,EACZ,SAAS,EAEV,MAAM,6BAA6B,CAAC;AAErC;;;;;;;GAOG;AAEH,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,eAAe,MAAM,CAAC;AAGnC,eAAO,MAAM,kBAAkB,aAE7B,CAAC;AAQH,eAAO,MAAM,QAAQ,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAExE,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,KAAK,OAAO,KAAG,SAAS,EAYvD,CAAC;AAEF,eAAO,MAAM,KAAK,GAAI,MAAM,SAAS,GAAG,SAAS,KAAG,QAAQ,GAAG,SAM9D,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,OAAO,OAAO,EAAE,kBAAe,KAAG,MAAM,GAAG,SAKlE,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,OAAO,OAAO,KAAG,MAEjD,CAAC;AAEF,eAAO,MAAM,MAAM,GAAI,MAAM,QAAQ,EAAE,OAAO,QAAQ,KAAG,MAcxD,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,QAAQ,SAAS,EAAE,OAAO,SAAS,KAAG,OASrE,CAAC;AA0IF,eAAO,MAAM,iBAAiB,2MAIpB,CAAC;AAIX,eAAO,MAAM,kBAAkB,GAAI,QAAQ,SAAS,EAAE,OAAO,SAAS,KAAG,UAAU,EAmBlF,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,WAAW,OAAO,EAClB,UAAU,OAAO,EACjB,UAAS;IAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;CAAO,KACnF,eAsDF,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,KAAK,OAAO,KAAG,YAAY,CAAC,QAAQ,CAS/D,CAAC"}
@@ -1,3 +1,5 @@
1
+ // GENERATED — do not edit. Copied verbatim from
2
+ // packages/layerdoc/src/improve-core by scripts/sync-improve-core.mjs.
1
3
  /**
2
4
  * LayerDoc matching ported from the measured improve pilot.
3
5
  *
@@ -0,0 +1 @@
1
+ {"version":3,"file":"improve-layerdoc-diff.js","sourceRoot":"","sources":["../../src/improve-core/improve-layerdoc-diff.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ /** What a host can prove about the requested page and its capture. */
2
+ export type ImproveCaptureIdentity = 'matched' | 'redirected' | 'unrecorded' | 'image';
1
3
  export type LayerBox = [number, number, number, number];
2
4
  export type LayerLeaf = Record<string, unknown> & {
3
5
  kind?: string;
@@ -105,5 +107,12 @@ export type ImproveGate = {
105
107
  coverage: number;
106
108
  coveragePct: number;
107
109
  thresholdPct: number;
110
+ /** What the run can prove about the capture; the gate arbitrates on it (F42). */
111
+ captureIdentity: ImproveCaptureIdentity;
112
+ /**
113
+ * Passed on a proven capture while under the threshold — a large redesign,
114
+ * not a mismatch. The plan is emitted and says so.
115
+ */
116
+ lowOverlap: boolean;
108
117
  };
109
118
  //# sourceMappingURL=improve-layerdoc-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"improve-layerdoc-types.d.ts","sourceRoot":"","sources":["../../src/improve-core/improve-layerdoc-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ // GENERATED — do not edit. Copied verbatim from
2
+ // packages/layerdoc/src/improve-core by scripts/sync-improve-core.mjs.
3
+ export {};
4
+ //# sourceMappingURL=improve-layerdoc-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"improve-layerdoc-types.js","sourceRoot":"","sources":["../../src/improve-core/improve-layerdoc-types.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,uEAAuE"}
@@ -0,0 +1,180 @@
1
+ import { type ImproveRetainPolicy } from './improve-retain.js';
2
+ /**
3
+ * THE PAGE'S OWN WORDS, CARRIED INTO THE PROMPT.
4
+ *
5
+ * WHY (measured, `.tmp/site-improve/degree-study/FINDINGS.md` finding 7): with
6
+ * the default toggles — copy and brand kept, layout and style free — an image
7
+ * edit that ALSO carried the page's own text kept the real copy verbatim
8
+ * ("Manage payments inside Zendesk", the 500px testimonial, the platform wall)
9
+ * across four structurally different compositions, while the same edit without
10
+ * it paraphrases and a text-only supply invents whole products ("Skyvia",
11
+ * "Loyalty Lion") that are not the caller's at all.
12
+ *
13
+ * The capture already holds this fact. Every /improve page and every CLI kit
14
+ * writes `domdoc.json` beside the screenshot — a LayerDoc-v2-shaped document
15
+ * whose leaves are the VISIBLE painted nodes with their rendered text, because
16
+ * `extractImproveDomInPage` already dropped scripts, styles, `display: none`,
17
+ * `visibility: hidden`, zero-opacity and zero-area nodes before it emitted
18
+ * one. Improve threw that text away and asked the model to read the copy back
19
+ * out of a screenshot.
20
+ *
21
+ * WHAT THIS IS NOT. It is not a summary, not a rewrite, and not a judgement
22
+ * about which words matter: it is the leaves in document order, deduplicated,
23
+ * whitespace-collapsed, and cut at a stated cap. Anything cleverer would be a
24
+ * second opinion about the page competing with the pixels the model is editing.
25
+ *
26
+ * Pure by construction (`tsconfig.improve-core.json`): the web page and the
27
+ * CLI both call it and both put the identical string on the wire, so a kit
28
+ * built in the browser and a kit built on a laptop ask for the same thing.
29
+ */
30
+ /**
31
+ * The cut. `MAX_CREATE_PAGE_WORDS_CHARACTERS` in
32
+ * `workers/api/src/create/contract.ts` is its server-side twin and
33
+ * `improve-page-words.test.ts` fails if the two drift — a client that measures
34
+ * a different number either refuses text the service would take or puts an
35
+ * over-length field on the wire.
36
+ *
37
+ * It is a BUDGET, not a depth control and not a target. Nothing about a
38
+ * smaller number keeps the words above the fold — measured, `depth.mjs`: even
39
+ * at 600 characters chargedesk's carried text already reaches 93% of the way
40
+ * down its page, because a sparse page's few leaves are spread over its whole
41
+ * height. All the budget decides is whether a page fits WHOLE.
42
+ *
43
+ * WHY 2000 (`.tmp/site-improve/fullwords-study/FINDINGS.md`). The rule below
44
+ * carries the whole page or the screen, and that rule is only free if the
45
+ * pages whose whole text nearly fits actually clear the bar: chargedesk's page
46
+ * is 1627 characters and 12ui's is 1005. At 1500 chargedesk fell a hundred
47
+ * characters short and would have fallen back to a 40-character viewport,
48
+ * throwing away the largest win the study measured (page phrases rendered
49
+ * verbatim 7.1% -> 94.9%) for the tail of a list of integration names. 2000 is
50
+ * the smallest round budget that carries both whole; it is deliberately NOT
51
+ * large enough to make hubspot's 6233-character page fit, because that page is
52
+ * meant to fall back to its screen.
53
+ */
54
+ export declare const IMPROVE_PAGE_WORDS_MAX_CHARACTERS = 2000;
55
+ /**
56
+ * THE FULL PAGE'S LEAVES, WHICH THE VIEWPORT DOCUMENT CANNOT HOLD.
57
+ *
58
+ * `domdoc.json` is the plan core's DOM-anchored geometry input, so it is
59
+ * extracted at `fullPage: false` and must stay that way: its `canvas` is one
60
+ * viewport and its `layers` are the leaves painted inside it. That also means
61
+ * the words stopped at the fold — measured on 2026-09-02 with the shipped
62
+ * extractor, chargedesk carried 40 characters against the full page's 1621,
63
+ * 12ui 145 against 1005, hubspot 666 against 6275.
64
+ *
65
+ * So the capture runs the SAME extractor a second time at `fullPage: true`
66
+ * and stores that document's leaves beside the viewport ones, under `words`.
67
+ * `canvas` and `layers` are untouched, byte for byte; nothing that reads
68
+ * geometry can see this field; and a capture written before it existed — or
69
+ * by a host that could not run the second extraction — simply has no `words`
70
+ * and falls back to `layers`, which is exactly what shipped before.
71
+ *
72
+ * WHY IT LIVES INSIDE `domdoc.json` rather than beside it. A second artifact
73
+ * would need an R2 key, an upload part, a serving route, an envelope href and
74
+ * a second authenticated fetch per page in the browser, and the words would
75
+ * then be able to go missing while the screenshot arrived. One file cannot be
76
+ * half-captured.
77
+ */
78
+ export declare const IMPROVE_PAGE_WORDS_FULL_PAGE_FIELD = "words";
79
+ /**
80
+ * THE PROJECTION CONTRACT — the only fields a stored leaf must carry.
81
+ *
82
+ * `readableLeaf` below reads exactly these and nothing else, so a host that
83
+ * copies them has stored the whole of what this module can use, and the
84
+ * decisions (which kinds are words, what is hidden, what a tag suppresses,
85
+ * document order, dedupe, the cut) all stay here. The hosted capture service
86
+ * mirrors the copy in `services/site-capture/render.mjs`, whose test reads
87
+ * this constant out of this file and fails if the two lists drift; the CLI
88
+ * imports `improvePageWordLeaves` directly.
89
+ *
90
+ * Storing the leaves rather than a finished string is what keeps the cap a
91
+ * client-side policy: raising or lowering `IMPROVE_PAGE_WORDS_MAX_CHARACTERS`
92
+ * re-cuts every capture already taken, with no recapture and no paid call.
93
+ */
94
+ export declare const IMPROVE_PAGE_WORDS_LEAF_FIELDS: readonly ["kind", "content", "hidden", "dom"];
95
+ /**
96
+ * A full-page document reduced to what `improvePageWords` reads.
97
+ *
98
+ * It makes no judgement about which leaves are words — it copies fields and
99
+ * drops geometry, styling and selectors, which is the whole reason it is safe
100
+ * to run at capture time. Measured on the same three pages: hubspot's full
101
+ * document is 266 KB and its projection 28 KB, against a 31 KB viewport
102
+ * document, so the words cost the kit about what one more small page costs
103
+ * rather than another megabyte.
104
+ */
105
+ export declare const improvePageWordLeaves: (document: unknown) => Array<Record<string, unknown>>;
106
+ export type ImprovePageWordsOptions = {
107
+ /** Defaults to `IMPROVE_PAGE_WORDS_MAX_CHARACTERS`. */
108
+ limit?: number;
109
+ };
110
+ /**
111
+ * THE WHOLE PAGE, OR THE SCREEN — NEVER A PREFIX OF THE PAGE.
112
+ *
113
+ * The document holds two lists: `words` is the WHOLE page's leaves (see
114
+ * `IMPROVE_PAGE_WORDS_FULL_PAGE_FIELD`) and `layers` is the first viewport's —
115
+ * the screen the model is actually looking at, since the reference image is
116
+ * one viewport tall. This returns the whole page's words when they fit the
117
+ * budget, and the screen's words when they do not.
118
+ *
119
+ * WHY THAT IS THE RULE, AND WHY IT IS NOT A TUNED THRESHOLD
120
+ * (`.tmp/site-improve/fullwords-study/FINDINGS.md`, 47 candidates over three
121
+ * sites; hubspot's two configurations bought three and two times on
122
+ * independent claims). The study bought both halves of the same question and
123
+ * they answered in opposite directions. The measure is copy survival — how
124
+ * many of a stated phrase list a candidate renders verbatim, OCR'd the same
125
+ * way for every arm — because it is the only instrument here that separated
126
+ * the arms by more than its own run-to-run spread:
127
+ *
128
+ * - Where the whole page was carried, it is the difference between a poster
129
+ * and a product page. chargedesk rendered 6.0% -> 95.1% of its page's 46
130
+ * phrases verbatim, and its own screen's phrases went 91.7% -> 100%, so
131
+ * nothing was crowded out. 12ui the same way. Nothing was invented: the
132
+ * real testimonials with their real attributions, the real gateway list,
133
+ * a real footer.
134
+ * - Where only the HEAD of a much longer page was carried, it bought nothing
135
+ * and cost the screen. hubspot (6233 characters) rendered 13-15% of its
136
+ * page whatever it was handed — the prefix included — while its own
137
+ * SCREEN's phrases fell to 58.7% and 72.8% across the two prefix passes,
138
+ * against 83.7%, 84.8% and 85.9% across three passes carrying the screen's
139
+ * words. Three against two, no overlap. The mechanism is dilution in one
140
+ * frame: 43 items to place instead of 23, each rendered smaller and less
141
+ * faithfully.
142
+ *
143
+ * The study also read a cookie-consent overlay and a collapse in candidate
144
+ * variety off the prefix arm. Neither survived replication (L-CAP: the overlay
145
+ * appears in about one candidate in four in EVERY configuration, including one
146
+ * whose request was byte-identical to the baseline; pairwise agreement on that
147
+ * page has been measured at 0.226, 0.357, 0.618 and 0.689 for one and the same
148
+ * configuration). Both are withdrawn there, and neither is load-bearing here.
149
+ *
150
+ * So the discriminator is not "how much of the page did the budget cover",
151
+ * which would be a threshold somebody tuned and which CLAUDE.md item 8
152
+ * forbids. It is a fact the capture declares and this module can read off the
153
+ * document in front of it: EITHER the page's words are all here, or they are
154
+ * not. A page whose words are all here is described completely; a page whose
155
+ * words are not is described completely only at its screen, so that is what
156
+ * is carried — which is exactly, byte for byte, what improve sent before the
157
+ * full-page field existed.
158
+ *
159
+ * The rule is free only because `IMPROVE_PAGE_WORDS_MAX_CHARACTERS` is 2000:
160
+ * at 1500 chargedesk's 1627-character page missed by a hundred characters and
161
+ * would have fallen back to a 40-character viewport, losing the largest win in
162
+ * the study. See that constant for why the budget is a budget.
163
+ *
164
+ * A document with neither list reads as a page with no words — a capture that
165
+ * failed, a document from a future version, `undefined` from a fetch that
166
+ * 404'd. Improve must still be able to run (CLAUDE.md item 5: prefer a valid
167
+ * artifact over a user-visible failure), and a run without the words is
168
+ * exactly what shipped before any of this existed.
169
+ */
170
+ export declare const improvePageWords: (document: unknown, options?: ImprovePageWordsOptions) => string;
171
+ /**
172
+ * The words this run may carry, which is nothing at all when the visitor freed
173
+ * the copy. WITH `content` OFF THE PAGE'S WORDS ARE NOT CARRIED: the run has
174
+ * asked for them to be rewritten, and handing the model the old ones verbatim
175
+ * in the same breath is the contradiction the retain clause was rewritten to
176
+ * remove (`retain.source`, improve-retain.ts). One module answers it, so the
177
+ * web page and the CLI cannot disagree about what a toggle did.
178
+ */
179
+ export declare const improvePageWordsFor: (document: unknown, retain: ImproveRetainPolicy, options?: ImprovePageWordsOptions) => string;
180
+ //# sourceMappingURL=improve-page-words.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"improve-page-words.d.ts","sourceRoot":"","sources":["../../src/improve-core/improve-page-words.ts"],"names":[],"mappings":"AAGA,OAAO,EAAsB,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAEnF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,iCAAiC,OAAO,CAAC;AA4DtD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,kCAAkC,UAAU,CAAC;AAE1D;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,8BAA8B,+CAAgD,CAAC;AAE5F;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,GAAI,UAAU,OAAO,KAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiBtF,CAAC;AA0CF,MAAM,MAAM,uBAAuB,GAAG;IACpC,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AACH,eAAO,MAAM,gBAAgB,GAC3B,UAAU,OAAO,EACjB,UAAS,uBAA4B,KACpC,MAgBF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,GAC9B,UAAU,OAAO,EACjB,QAAQ,mBAAmB,EAC3B,UAAS,uBAA4B,KACpC,MAEF,CAAC"}
@@ -0,0 +1,303 @@
1
+ // GENERATED — do not edit. Copied verbatim from
2
+ // packages/layerdoc/src/improve-core by scripts/sync-improve-core.mjs.
3
+ import { improveRetainKeeps } from './improve-retain.js';
4
+ /**
5
+ * THE PAGE'S OWN WORDS, CARRIED INTO THE PROMPT.
6
+ *
7
+ * WHY (measured, `.tmp/site-improve/degree-study/FINDINGS.md` finding 7): with
8
+ * the default toggles — copy and brand kept, layout and style free — an image
9
+ * edit that ALSO carried the page's own text kept the real copy verbatim
10
+ * ("Manage payments inside Zendesk", the 500px testimonial, the platform wall)
11
+ * across four structurally different compositions, while the same edit without
12
+ * it paraphrases and a text-only supply invents whole products ("Skyvia",
13
+ * "Loyalty Lion") that are not the caller's at all.
14
+ *
15
+ * The capture already holds this fact. Every /improve page and every CLI kit
16
+ * writes `domdoc.json` beside the screenshot — a LayerDoc-v2-shaped document
17
+ * whose leaves are the VISIBLE painted nodes with their rendered text, because
18
+ * `extractImproveDomInPage` already dropped scripts, styles, `display: none`,
19
+ * `visibility: hidden`, zero-opacity and zero-area nodes before it emitted
20
+ * one. Improve threw that text away and asked the model to read the copy back
21
+ * out of a screenshot.
22
+ *
23
+ * WHAT THIS IS NOT. It is not a summary, not a rewrite, and not a judgement
24
+ * about which words matter: it is the leaves in document order, deduplicated,
25
+ * whitespace-collapsed, and cut at a stated cap. Anything cleverer would be a
26
+ * second opinion about the page competing with the pixels the model is editing.
27
+ *
28
+ * Pure by construction (`tsconfig.improve-core.json`): the web page and the
29
+ * CLI both call it and both put the identical string on the wire, so a kit
30
+ * built in the browser and a kit built on a laptop ask for the same thing.
31
+ */
32
+ /**
33
+ * The cut. `MAX_CREATE_PAGE_WORDS_CHARACTERS` in
34
+ * `workers/api/src/create/contract.ts` is its server-side twin and
35
+ * `improve-page-words.test.ts` fails if the two drift — a client that measures
36
+ * a different number either refuses text the service would take or puts an
37
+ * over-length field on the wire.
38
+ *
39
+ * It is a BUDGET, not a depth control and not a target. Nothing about a
40
+ * smaller number keeps the words above the fold — measured, `depth.mjs`: even
41
+ * at 600 characters chargedesk's carried text already reaches 93% of the way
42
+ * down its page, because a sparse page's few leaves are spread over its whole
43
+ * height. All the budget decides is whether a page fits WHOLE.
44
+ *
45
+ * WHY 2000 (`.tmp/site-improve/fullwords-study/FINDINGS.md`). The rule below
46
+ * carries the whole page or the screen, and that rule is only free if the
47
+ * pages whose whole text nearly fits actually clear the bar: chargedesk's page
48
+ * is 1627 characters and 12ui's is 1005. At 1500 chargedesk fell a hundred
49
+ * characters short and would have fallen back to a 40-character viewport,
50
+ * throwing away the largest win the study measured (page phrases rendered
51
+ * verbatim 7.1% -> 94.9%) for the tail of a list of integration names. 2000 is
52
+ * the smallest round budget that carries both whole; it is deliberately NOT
53
+ * large enough to make hubspot's 6233-character page fit, because that page is
54
+ * meant to fall back to its screen.
55
+ */
56
+ export const IMPROVE_PAGE_WORDS_MAX_CHARACTERS = 2000;
57
+ /**
58
+ * THE CUT POLICY, STATED SO IT CAN BE READ OFF THE OUTPUT.
59
+ *
60
+ * Leaves are appended in document order. A leaf that would not fit WHOLE is
61
+ * skipped and the walk continues; the walk stops once fewer than
62
+ * `MINIMUM_REMAINING` characters remain. Nothing is ever truncated mid-leaf,
63
+ * because a mid-word cut is exactly the defect the study's own harness had:
64
+ * "improving customer s" is not the page's words, it is a fragment the model
65
+ * has to guess the end of.
66
+ *
67
+ * Skipping rather than stopping at the first oversized leaf matters for the
68
+ * pathological page whose FIRST leaf is a thousand-word paragraph: stopping
69
+ * there would carry nothing at all and improve would silently lose the whole
70
+ * feature on the pages that need it most.
71
+ */
72
+ const MINIMUM_REMAINING = 40;
73
+ /** The leaf kinds that carry words a person reads on the page. */
74
+ const WORD_KINDS = new Set(['heading', 'text', 'button', 'input', 'photo']);
75
+ /**
76
+ * `icon` content is an icon IDENTIFIER (`lucide-search`, a `data-icon` value),
77
+ * not the page's words; `panel`, `decoration`, and `background` carry none.
78
+ * `photo` content is the image's alt or title text, which is kept on purpose:
79
+ * on chargedesk the platform names ARE logos, and an extractor that read only
80
+ * text nodes reported that page as 77 characters long (measured).
81
+ * An ALT-LESS logo wall therefore contributes nothing, which is the intent —
82
+ * there is no honest text to carry, and inventing one would be item 8's
83
+ * fabrication pole.
84
+ */
85
+ const SKIPPED_TAGS = new Set(['script', 'style', 'noscript', 'template', 'head', 'meta', 'link', 'title']);
86
+ /** At least one letter or digit, or it is a glyph separator, not a word. */
87
+ const HAS_WORD = /[\p{L}\p{N}]/u;
88
+ const collapse = (value) => (typeof value === 'string' ? value.replace(/\s+/gu, ' ').trim() : '');
89
+ const readableLeaf = (leaf) => {
90
+ if (leaf.hidden === true)
91
+ return '';
92
+ if (typeof leaf.kind !== 'string' || !WORD_KINDS.has(leaf.kind))
93
+ return '';
94
+ const tag = leaf.dom && typeof leaf.dom === 'object' ? leaf.dom.tag : undefined;
95
+ if (typeof tag === 'string' && SKIPPED_TAGS.has(tag.toLowerCase()))
96
+ return '';
97
+ const content = collapse(leaf.content);
98
+ return HAS_WORD.test(content) ? content : '';
99
+ };
100
+ /** The separator the study's proven arm used; it reads as a list, not prose. */
101
+ const SEPARATOR = ' · ';
102
+ /**
103
+ * THE FULL PAGE'S LEAVES, WHICH THE VIEWPORT DOCUMENT CANNOT HOLD.
104
+ *
105
+ * `domdoc.json` is the plan core's DOM-anchored geometry input, so it is
106
+ * extracted at `fullPage: false` and must stay that way: its `canvas` is one
107
+ * viewport and its `layers` are the leaves painted inside it. That also means
108
+ * the words stopped at the fold — measured on 2026-09-02 with the shipped
109
+ * extractor, chargedesk carried 40 characters against the full page's 1621,
110
+ * 12ui 145 against 1005, hubspot 666 against 6275.
111
+ *
112
+ * So the capture runs the SAME extractor a second time at `fullPage: true`
113
+ * and stores that document's leaves beside the viewport ones, under `words`.
114
+ * `canvas` and `layers` are untouched, byte for byte; nothing that reads
115
+ * geometry can see this field; and a capture written before it existed — or
116
+ * by a host that could not run the second extraction — simply has no `words`
117
+ * and falls back to `layers`, which is exactly what shipped before.
118
+ *
119
+ * WHY IT LIVES INSIDE `domdoc.json` rather than beside it. A second artifact
120
+ * would need an R2 key, an upload part, a serving route, an envelope href and
121
+ * a second authenticated fetch per page in the browser, and the words would
122
+ * then be able to go missing while the screenshot arrived. One file cannot be
123
+ * half-captured.
124
+ */
125
+ export const IMPROVE_PAGE_WORDS_FULL_PAGE_FIELD = 'words';
126
+ /**
127
+ * THE PROJECTION CONTRACT — the only fields a stored leaf must carry.
128
+ *
129
+ * `readableLeaf` below reads exactly these and nothing else, so a host that
130
+ * copies them has stored the whole of what this module can use, and the
131
+ * decisions (which kinds are words, what is hidden, what a tag suppresses,
132
+ * document order, dedupe, the cut) all stay here. The hosted capture service
133
+ * mirrors the copy in `services/site-capture/render.mjs`, whose test reads
134
+ * this constant out of this file and fails if the two lists drift; the CLI
135
+ * imports `improvePageWordLeaves` directly.
136
+ *
137
+ * Storing the leaves rather than a finished string is what keeps the cap a
138
+ * client-side policy: raising or lowering `IMPROVE_PAGE_WORDS_MAX_CHARACTERS`
139
+ * re-cuts every capture already taken, with no recapture and no paid call.
140
+ */
141
+ export const IMPROVE_PAGE_WORDS_LEAF_FIELDS = ['kind', 'content', 'hidden', 'dom'];
142
+ /**
143
+ * A full-page document reduced to what `improvePageWords` reads.
144
+ *
145
+ * It makes no judgement about which leaves are words — it copies fields and
146
+ * drops geometry, styling and selectors, which is the whole reason it is safe
147
+ * to run at capture time. Measured on the same three pages: hubspot's full
148
+ * document is 266 KB and its projection 28 KB, against a 31 KB viewport
149
+ * document, so the words cost the kit about what one more small page costs
150
+ * rather than another megabyte.
151
+ */
152
+ export const improvePageWordLeaves = (document) => {
153
+ if (!document || typeof document !== 'object' || Array.isArray(document))
154
+ return [];
155
+ const layers = document.layers;
156
+ if (!Array.isArray(layers))
157
+ return [];
158
+ const leaves = [];
159
+ for (const entry of layers) {
160
+ if (!entry || typeof entry !== 'object' || Array.isArray(entry))
161
+ continue;
162
+ const leaf = entry;
163
+ const tag = leaf.dom && typeof leaf.dom === 'object' ? leaf.dom.tag : undefined;
164
+ leaves.push({
165
+ ...(leaf.kind === undefined ? {} : { kind: leaf.kind }),
166
+ ...(leaf.content === undefined ? {} : { content: leaf.content }),
167
+ ...(leaf.hidden === true ? { hidden: true } : {}),
168
+ ...(typeof tag === 'string' ? { dom: { tag } } : {}),
169
+ });
170
+ }
171
+ return leaves;
172
+ };
173
+ /**
174
+ * The leaves this document offers, full page first.
175
+ *
176
+ * A document with neither reads as a page with no words — a capture that
177
+ * failed, a document from a future version, `undefined` from a fetch that
178
+ * 404'd. Improve must still be able to run (CLAUDE.md item 5: prefer a valid
179
+ * artifact over a user-visible failure).
180
+ */
181
+ const arrayField = (document, field) => {
182
+ if (!document || typeof document !== 'object' || Array.isArray(document))
183
+ return null;
184
+ const value = document[field];
185
+ return Array.isArray(value) ? value : null;
186
+ };
187
+ /**
188
+ * The budget for a walk that is allowed to carry everything, used to ask what
189
+ * the WHOLE page says before deciding whether it fits.
190
+ */
191
+ const NO_BUDGET = Number.POSITIVE_INFINITY;
192
+ /** The walk: document order, deduplicated, cut, never mid-leaf. */
193
+ const walk = (source, limit) => {
194
+ const seen = new Set();
195
+ const parts = [];
196
+ let length = 0;
197
+ for (const entry of source) {
198
+ if (!entry || typeof entry !== 'object' || Array.isArray(entry))
199
+ continue;
200
+ const content = readableLeaf(entry);
201
+ if (!content || seen.has(content))
202
+ continue;
203
+ const cost = (parts.length === 0 ? 0 : SEPARATOR.length) + [...content].length;
204
+ if (length + cost <= limit) {
205
+ seen.add(content);
206
+ parts.push(content);
207
+ length += cost;
208
+ }
209
+ if (limit - length < MINIMUM_REMAINING)
210
+ break;
211
+ }
212
+ return parts.join(SEPARATOR);
213
+ };
214
+ /**
215
+ * THE WHOLE PAGE, OR THE SCREEN — NEVER A PREFIX OF THE PAGE.
216
+ *
217
+ * The document holds two lists: `words` is the WHOLE page's leaves (see
218
+ * `IMPROVE_PAGE_WORDS_FULL_PAGE_FIELD`) and `layers` is the first viewport's —
219
+ * the screen the model is actually looking at, since the reference image is
220
+ * one viewport tall. This returns the whole page's words when they fit the
221
+ * budget, and the screen's words when they do not.
222
+ *
223
+ * WHY THAT IS THE RULE, AND WHY IT IS NOT A TUNED THRESHOLD
224
+ * (`.tmp/site-improve/fullwords-study/FINDINGS.md`, 47 candidates over three
225
+ * sites; hubspot's two configurations bought three and two times on
226
+ * independent claims). The study bought both halves of the same question and
227
+ * they answered in opposite directions. The measure is copy survival — how
228
+ * many of a stated phrase list a candidate renders verbatim, OCR'd the same
229
+ * way for every arm — because it is the only instrument here that separated
230
+ * the arms by more than its own run-to-run spread:
231
+ *
232
+ * - Where the whole page was carried, it is the difference between a poster
233
+ * and a product page. chargedesk rendered 6.0% -> 95.1% of its page's 46
234
+ * phrases verbatim, and its own screen's phrases went 91.7% -> 100%, so
235
+ * nothing was crowded out. 12ui the same way. Nothing was invented: the
236
+ * real testimonials with their real attributions, the real gateway list,
237
+ * a real footer.
238
+ * - Where only the HEAD of a much longer page was carried, it bought nothing
239
+ * and cost the screen. hubspot (6233 characters) rendered 13-15% of its
240
+ * page whatever it was handed — the prefix included — while its own
241
+ * SCREEN's phrases fell to 58.7% and 72.8% across the two prefix passes,
242
+ * against 83.7%, 84.8% and 85.9% across three passes carrying the screen's
243
+ * words. Three against two, no overlap. The mechanism is dilution in one
244
+ * frame: 43 items to place instead of 23, each rendered smaller and less
245
+ * faithfully.
246
+ *
247
+ * The study also read a cookie-consent overlay and a collapse in candidate
248
+ * variety off the prefix arm. Neither survived replication (L-CAP: the overlay
249
+ * appears in about one candidate in four in EVERY configuration, including one
250
+ * whose request was byte-identical to the baseline; pairwise agreement on that
251
+ * page has been measured at 0.226, 0.357, 0.618 and 0.689 for one and the same
252
+ * configuration). Both are withdrawn there, and neither is load-bearing here.
253
+ *
254
+ * So the discriminator is not "how much of the page did the budget cover",
255
+ * which would be a threshold somebody tuned and which CLAUDE.md item 8
256
+ * forbids. It is a fact the capture declares and this module can read off the
257
+ * document in front of it: EITHER the page's words are all here, or they are
258
+ * not. A page whose words are all here is described completely; a page whose
259
+ * words are not is described completely only at its screen, so that is what
260
+ * is carried — which is exactly, byte for byte, what improve sent before the
261
+ * full-page field existed.
262
+ *
263
+ * The rule is free only because `IMPROVE_PAGE_WORDS_MAX_CHARACTERS` is 2000:
264
+ * at 1500 chargedesk's 1627-character page missed by a hundred characters and
265
+ * would have fallen back to a 40-character viewport, losing the largest win in
266
+ * the study. See that constant for why the budget is a budget.
267
+ *
268
+ * A document with neither list reads as a page with no words — a capture that
269
+ * failed, a document from a future version, `undefined` from a fetch that
270
+ * 404'd. Improve must still be able to run (CLAUDE.md item 5: prefer a valid
271
+ * artifact over a user-visible failure), and a run without the words is
272
+ * exactly what shipped before any of this existed.
273
+ */
274
+ export const improvePageWords = (document, options = {}) => {
275
+ const limit = Math.max(0, Math.trunc(options.limit ?? IMPROVE_PAGE_WORDS_MAX_CHARACTERS));
276
+ if (limit === 0)
277
+ return '';
278
+ const screen = arrayField(document, 'layers') ?? [];
279
+ const page = arrayField(document, 'words');
280
+ if (page === null)
281
+ return walk(screen, limit);
282
+ const whole = walk(page, NO_BUDGET);
283
+ /**
284
+ * An empty whole-page walk means the stored field describes no words at all.
285
+ * On a genuinely wordless page the screen is empty too and both branches
286
+ * agree; where they disagree the field is not describing this page, and
287
+ * item 8's rule for an unproven suppression is to render rather than leave a
288
+ * hole. So it reads as a document that stored no full page.
289
+ */
290
+ if (!whole)
291
+ return walk(screen, limit);
292
+ return [...whole].length <= limit ? whole : walk(screen, limit);
293
+ };
294
+ /**
295
+ * The words this run may carry, which is nothing at all when the visitor freed
296
+ * the copy. WITH `content` OFF THE PAGE'S WORDS ARE NOT CARRIED: the run has
297
+ * asked for them to be rewritten, and handing the model the old ones verbatim
298
+ * in the same breath is the contradiction the retain clause was rewritten to
299
+ * remove (`retain.source`, improve-retain.ts). One module answers it, so the
300
+ * web page and the CLI cannot disagree about what a toggle did.
301
+ */
302
+ export const improvePageWordsFor = (document, retain, options = {}) => (improveRetainKeeps(retain, 'content') ? improvePageWords(document, options) : '');
303
+ //# sourceMappingURL=improve-page-words.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"improve-page-words.js","sourceRoot":"","sources":["../../src/improve-core/improve-page-words.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import { type ImproveKitAssetIndex } from './improve-kit-assets.js';
1
+ import { type ImproveKitAssetIndex } from './improve-kit-asset-model.js';
2
2
  import { type SourceHint } from './improve-source-hints.js';
3
3
  import type { AddedElementSpec } from './improve-added-specs.js';
4
4
  import type { ImproveDomDiff } from './improve-dom-diff.js';
5
- import type { ImproveTokenPatch } from './improve-token-patch.js';
5
+ import { type ImproveTokenPatch } from './improve-token-patch.js';
6
6
  import type { LayerDiffMatch } from './improve-layerdoc-types.js';
7
7
  /**
8
8
  * `plan/plan-annotated.md`, readable in its first screen.
@@ -21,11 +21,28 @@ export type ImprovePlanMode = 'dom-anchored' | 'layerdoc-anchored' | 'unanchored
21
21
  export declare const IMPROVE_PLAN_TOKEN_LIMIT = 12;
22
22
  /** Selectors per token line. Fifty-four on one line is not a readable plan. */
23
23
  export declare const IMPROVE_PLAN_SELECTOR_LIMIT = 3;
24
+ /**
25
+ * The design's font, named as a fact rather than fetched (F23).
26
+ *
27
+ * The token patch used to open with a Google Fonts `@import`, which is a
28
+ * network dependency and a CSP hazard the repository never asked for. The plan
29
+ * says which family the design uses and leaves the loading to whatever the
30
+ * repository already does.
31
+ */
32
+ export declare const improveFontLines: (fonts: ReadonlyArray<{
33
+ family: string;
34
+ weights: number[];
35
+ }>) => string[];
24
36
  export declare const renderImproveAnnotatedPlan: (args: {
25
37
  computed: ImproveDomDiff;
26
38
  entries: readonly AnnotatedEntry[];
27
39
  tokenPatch: ImproveTokenPatch;
28
40
  addedSpecs: readonly AddedElementSpec[];
41
+ /**
42
+ * The target's raster layers, and the files carrying them where the host has
43
+ * files. A host with no filesystem still passes the layers the document
44
+ * declares, so both kits' plans name the same imagery.
45
+ */
29
46
  index: ImproveKitAssetIndex;
30
47
  repo?: string;
31
48
  mode: ImprovePlanMode;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"improve-plan-annotated-render.d.ts","sourceRoot":"","sources":["../../src/improve-core/improve-plan-annotated-render.ts"],"names":[],"mappings":"AAKA,OAAO,EAIL,KAAK,oBAAoB,EAE1B,MAAM,8BAA8B,CAAC;AAOtC,OAAO,EAA2B,KAAK,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,KAAK,EAA6B,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7F;;;;;;;;GAQG;AAEH,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG;IAAE,UAAU,EAAE,UAAU,CAAA;CAAE,CAAC;AAEzE,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG,mBAAmB,GAAG,YAAY,CAAC;AAElF,qFAAqF;AACrF,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C,+EAA+E;AAC/E,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAwC7C;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,GAC3B,OAAO,aAAa,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,KAC1D,MAAM,EAIP,CAAC;AA4JH,eAAO,MAAM,0BAA0B,GAAI,MAAM;IAC/C,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE,SAAS,cAAc,EAAE,CAAC;IACnC,UAAU,EAAE,iBAAiB,CAAC;IAC9B,UAAU,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACxC;;;;OAIG;IACH,KAAK,EAAE,oBAAoB,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,eAAe,CAAC;CACvB,KAAG,MAyCH,CAAC"}