@12ui/design 0.2.57 → 0.2.59

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 (456) 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/atomic-file-replace.d.ts +21 -0
  6. package/dist/atomic-file-replace.d.ts.map +1 -0
  7. package/dist/atomic-file-replace.js +48 -0
  8. package/dist/atomic-file-replace.js.map +1 -0
  9. package/dist/branch-client.d.ts +84 -2
  10. package/dist/branch-client.d.ts.map +1 -1
  11. package/dist/branch-client.js +30 -0
  12. package/dist/branch-client.js.map +1 -1
  13. package/dist/cli-arguments.d.ts.map +1 -1
  14. package/dist/cli-arguments.js +2 -1
  15. package/dist/cli-arguments.js.map +1 -1
  16. package/dist/cli-capabilities.d.ts +1 -1
  17. package/dist/cli-conversion-derivation.d.ts +14 -1
  18. package/dist/cli-conversion-derivation.d.ts.map +1 -1
  19. package/dist/cli-conversion-derivation.js +14 -7
  20. package/dist/cli-conversion-derivation.js.map +1 -1
  21. package/dist/cli-convert-command.d.ts +2 -0
  22. package/dist/cli-convert-command.d.ts.map +1 -1
  23. package/dist/cli-convert-command.js +86 -34
  24. package/dist/cli-convert-command.js.map +1 -1
  25. package/dist/cli-corpus-command.d.ts.map +1 -1
  26. package/dist/cli-corpus-command.js +0 -3
  27. package/dist/cli-corpus-command.js.map +1 -1
  28. package/dist/cli-draft-command.d.ts +16 -0
  29. package/dist/cli-draft-command.d.ts.map +1 -1
  30. package/dist/cli-draft-command.js +47 -9
  31. package/dist/cli-draft-command.js.map +1 -1
  32. package/dist/cli-help/design.d.ts +7 -4
  33. package/dist/cli-help/design.d.ts.map +1 -1
  34. package/dist/cli-help/design.js +20 -7
  35. package/dist/cli-help/design.js.map +1 -1
  36. package/dist/cli-help/index.d.ts +9 -6
  37. package/dist/cli-help/index.d.ts.map +1 -1
  38. package/dist/cli-help/meta.d.ts +2 -2
  39. package/dist/cli-help/meta.d.ts.map +1 -1
  40. package/dist/cli-help/meta.js +4 -1
  41. package/dist/cli-help/meta.js.map +1 -1
  42. package/dist/cli-improve-command.d.ts.map +1 -1
  43. package/dist/cli-improve-command.js +215 -33
  44. package/dist/cli-improve-command.js.map +1 -1
  45. package/dist/cli-redesign-command.d.ts.map +1 -1
  46. package/dist/cli-redesign-command.js +268 -156
  47. package/dist/cli-redesign-command.js.map +1 -1
  48. package/dist/cli-run.d.ts.map +1 -1
  49. package/dist/cli-run.js +13 -3
  50. package/dist/cli-run.js.map +1 -1
  51. package/dist/cli-spend-command.d.ts +12 -1
  52. package/dist/cli-spend-command.d.ts.map +1 -1
  53. package/dist/cli-spend-command.js +94 -2
  54. package/dist/cli-spend-command.js.map +1 -1
  55. package/dist/cli-usage.js +5 -5
  56. package/dist/cli-usage.js.map +1 -1
  57. package/dist/concept-input.d.ts +6 -77
  58. package/dist/concept-input.d.ts.map +1 -1
  59. package/dist/concept-input.js +6 -87
  60. package/dist/concept-input.js.map +1 -1
  61. package/dist/conversion-client.d.ts +106 -17
  62. package/dist/conversion-client.d.ts.map +1 -1
  63. package/dist/conversion-client.js +244 -80
  64. package/dist/conversion-client.js.map +1 -1
  65. package/dist/corpus-client.d.ts.map +1 -1
  66. package/dist/corpus-client.js +0 -3
  67. package/dist/corpus-client.js.map +1 -1
  68. package/dist/draft-identity.d.ts +7 -0
  69. package/dist/draft-identity.d.ts.map +1 -1
  70. package/dist/draft-identity.js +4 -0
  71. package/dist/draft-identity.js.map +1 -1
  72. package/dist/draft-run.d.ts +13 -0
  73. package/dist/draft-run.d.ts.map +1 -1
  74. package/dist/draft-run.js +20 -2
  75. package/dist/draft-run.js.map +1 -1
  76. package/dist/draft-workspace.d.ts +4 -0
  77. package/dist/draft-workspace.d.ts.map +1 -1
  78. package/dist/draft-workspace.js.map +1 -1
  79. package/dist/hosted-draft-identity.d.ts +18 -0
  80. package/dist/hosted-draft-identity.d.ts.map +1 -1
  81. package/dist/hosted-draft-identity.js +8 -0
  82. package/dist/hosted-draft-identity.js.map +1 -1
  83. package/dist/hosted-draft-run.d.ts +15 -0
  84. package/dist/hosted-draft-run.d.ts.map +1 -1
  85. package/dist/hosted-draft-run.js +27 -0
  86. package/dist/hosted-draft-run.js.map +1 -1
  87. package/dist/improve-added-specs.d.ts +12 -40
  88. package/dist/improve-added-specs.d.ts.map +1 -1
  89. package/dist/improve-added-specs.js +63 -172
  90. package/dist/improve-added-specs.js.map +1 -1
  91. package/dist/improve-artifact-writer.d.ts +13 -0
  92. package/dist/improve-artifact-writer.d.ts.map +1 -0
  93. package/dist/improve-artifact-writer.js +27 -0
  94. package/dist/improve-artifact-writer.js.map +1 -0
  95. package/dist/improve-bootstrap-history.d.ts +21 -0
  96. package/dist/improve-bootstrap-history.d.ts.map +1 -0
  97. package/dist/improve-bootstrap-history.js +43 -0
  98. package/dist/improve-bootstrap-history.js.map +1 -0
  99. package/dist/improve-branch-stage.d.ts +10 -0
  100. package/dist/improve-branch-stage.d.ts.map +1 -0
  101. package/dist/improve-branch-stage.js +325 -0
  102. package/dist/improve-branch-stage.js.map +1 -0
  103. package/dist/improve-capture-redirect.d.ts +19 -0
  104. package/dist/improve-capture-redirect.d.ts.map +1 -1
  105. package/dist/improve-capture-redirect.js +18 -1
  106. package/dist/improve-capture-redirect.js.map +1 -1
  107. package/dist/improve-capture-words.d.ts +43 -0
  108. package/dist/improve-capture-words.d.ts.map +1 -0
  109. package/dist/improve-capture-words.js +25 -0
  110. package/dist/improve-capture-words.js.map +1 -0
  111. package/dist/improve-concept.d.ts +6 -20
  112. package/dist/improve-concept.d.ts.map +1 -1
  113. package/dist/improve-concept.js +12 -59
  114. package/dist/improve-concept.js.map +1 -1
  115. package/dist/improve-conversion-attempts.d.ts +12 -4
  116. package/dist/improve-conversion-attempts.d.ts.map +1 -1
  117. package/dist/improve-conversion-attempts.js.map +1 -1
  118. package/dist/improve-conversion-stage.d.ts +13 -2
  119. package/dist/improve-conversion-stage.d.ts.map +1 -1
  120. package/dist/improve-conversion-stage.js +211 -20
  121. package/dist/improve-conversion-stage.js.map +1 -1
  122. package/dist/improve-convert-progress.d.ts +10 -2
  123. package/dist/improve-convert-progress.d.ts.map +1 -1
  124. package/dist/improve-convert-progress.js +7 -3
  125. package/dist/improve-convert-progress.js.map +1 -1
  126. package/dist/improve-convert-resilience.d.ts +60 -13
  127. package/dist/improve-convert-resilience.d.ts.map +1 -1
  128. package/dist/improve-convert-resilience.js +85 -22
  129. package/dist/improve-convert-resilience.js.map +1 -1
  130. package/dist/improve-core/concept-input.d.ts +80 -0
  131. package/dist/improve-core/concept-input.d.ts.map +1 -0
  132. package/dist/improve-core/concept-input.js +92 -0
  133. package/dist/improve-core/concept-input.js.map +1 -0
  134. package/dist/improve-core/improve-added-specs.d.ts +62 -0
  135. package/dist/improve-core/improve-added-specs.d.ts.map +1 -0
  136. package/dist/improve-core/improve-added-specs.js +160 -0
  137. package/dist/improve-core/improve-added-specs.js.map +1 -0
  138. package/dist/improve-core/improve-artifacts.d.ts +18 -0
  139. package/dist/improve-core/improve-artifacts.d.ts.map +1 -0
  140. package/dist/improve-core/improve-artifacts.js +4 -0
  141. package/dist/improve-core/improve-artifacts.js.map +1 -0
  142. package/dist/improve-core/improve-concept.d.ts +11 -0
  143. package/dist/improve-core/improve-concept.d.ts.map +1 -0
  144. package/dist/improve-core/improve-concept.js +190 -0
  145. package/dist/improve-core/improve-concept.js.map +1 -0
  146. package/dist/improve-core/improve-discovery.d.ts +84 -0
  147. package/dist/improve-core/improve-discovery.d.ts.map +1 -0
  148. package/dist/improve-core/improve-discovery.js +154 -0
  149. package/dist/improve-core/improve-discovery.js.map +1 -0
  150. package/dist/improve-core/improve-dom-anchor.d.ts.map +1 -0
  151. package/dist/{improve-dom-anchor.js → improve-core/improve-dom-anchor.js} +2 -0
  152. package/dist/improve-core/improve-dom-anchor.js.map +1 -0
  153. package/dist/improve-core/improve-dom-diff.d.ts +59 -0
  154. package/dist/improve-core/improve-dom-diff.d.ts.map +1 -0
  155. package/dist/improve-core/improve-dom-diff.js +151 -0
  156. package/dist/improve-core/improve-dom-diff.js.map +1 -0
  157. package/dist/improve-core/improve-dom-extract.d.ts.map +1 -0
  158. package/dist/{improve-dom-extract.js → improve-core/improve-dom-extract.js} +2 -0
  159. package/dist/improve-core/improve-dom-extract.js.map +1 -0
  160. package/dist/improve-core/improve-dom-gate.d.ts +49 -0
  161. package/dist/improve-core/improve-dom-gate.d.ts.map +1 -0
  162. package/dist/improve-core/improve-dom-gate.js +99 -0
  163. package/dist/improve-core/improve-dom-gate.js.map +1 -0
  164. package/dist/improve-core/improve-dom-neighbour.d.ts.map +1 -0
  165. package/dist/{improve-dom-neighbour.js → improve-core/improve-dom-neighbour.js} +2 -0
  166. package/dist/improve-core/improve-dom-neighbour.js.map +1 -0
  167. package/dist/improve-core/improve-dom-scale.d.ts.map +1 -0
  168. package/dist/{improve-dom-scale.js → improve-core/improve-dom-scale.js} +2 -0
  169. package/dist/improve-core/improve-dom-scale.js.map +1 -0
  170. package/dist/improve-core/improve-icon-svg.d.ts +29 -0
  171. package/dist/improve-core/improve-icon-svg.d.ts.map +1 -0
  172. package/dist/{improve-icon-svg.js → improve-core/improve-icon-svg.js} +2 -0
  173. package/dist/improve-core/improve-icon-svg.js.map +1 -0
  174. package/dist/improve-core/improve-kit-asset-model.d.ts +177 -0
  175. package/dist/improve-core/improve-kit-asset-model.d.ts.map +1 -0
  176. package/dist/improve-core/improve-kit-asset-model.js +269 -0
  177. package/dist/improve-core/improve-kit-asset-model.js.map +1 -0
  178. package/dist/improve-core/improve-layerdoc-diff.d.ts.map +1 -0
  179. package/dist/{improve-layerdoc-diff.js → improve-core/improve-layerdoc-diff.js} +2 -0
  180. package/dist/improve-core/improve-layerdoc-diff.js.map +1 -0
  181. package/dist/{improve-layerdoc-types.d.ts → improve-core/improve-layerdoc-types.d.ts} +9 -0
  182. package/dist/improve-core/improve-layerdoc-types.d.ts.map +1 -0
  183. package/dist/improve-core/improve-layerdoc-types.js +4 -0
  184. package/dist/improve-core/improve-layerdoc-types.js.map +1 -0
  185. package/dist/improve-core/improve-page-words.d.ts +180 -0
  186. package/dist/improve-core/improve-page-words.d.ts.map +1 -0
  187. package/dist/improve-core/improve-page-words.js +303 -0
  188. package/dist/improve-core/improve-page-words.js.map +1 -0
  189. package/dist/{improve-plan-annotated-render.d.ts → improve-core/improve-plan-annotated-render.d.ts} +6 -1
  190. package/dist/improve-core/improve-plan-annotated-render.d.ts.map +1 -0
  191. package/dist/{improve-plan-annotated-render.js → improve-core/improve-plan-annotated-render.js} +56 -28
  192. package/dist/{improve-plan-annotated-render.js.map → improve-core/improve-plan-annotated-render.js.map} +1 -1
  193. package/dist/improve-core/improve-plan-annotator.d.ts +34 -0
  194. package/dist/improve-core/improve-plan-annotator.d.ts.map +1 -0
  195. package/dist/improve-core/improve-plan-annotator.js +52 -0
  196. package/dist/improve-core/improve-plan-annotator.js.map +1 -0
  197. package/dist/{improve-plan-render.d.ts → improve-core/improve-plan-render.d.ts} +2 -1
  198. package/dist/improve-core/improve-plan-render.d.ts.map +1 -0
  199. package/dist/{improve-plan-render.js → improve-core/improve-plan-render.js} +7 -1
  200. package/dist/improve-core/improve-plan-render.js.map +1 -0
  201. package/dist/improve-core/improve-plan-vector-keep.d.ts +29 -0
  202. package/dist/improve-core/improve-plan-vector-keep.d.ts.map +1 -0
  203. package/dist/improve-core/improve-plan-vector-keep.js +68 -0
  204. package/dist/improve-core/improve-plan-vector-keep.js.map +1 -0
  205. package/dist/{improve-raster-layers-section.d.ts → improve-core/improve-raster-layers-section.d.ts} +9 -1
  206. package/dist/improve-core/improve-raster-layers-section.d.ts.map +1 -0
  207. package/dist/{improve-raster-layers-section.js → improve-core/improve-raster-layers-section.js} +5 -2
  208. package/dist/improve-core/improve-raster-layers-section.js.map +1 -0
  209. package/dist/improve-core/improve-refusal.d.ts +6 -0
  210. package/dist/improve-core/improve-refusal.d.ts.map +1 -0
  211. package/dist/improve-core/improve-refusal.js +27 -0
  212. package/dist/improve-core/improve-refusal.js.map +1 -0
  213. package/dist/improve-core/improve-retain.d.ts +121 -0
  214. package/dist/improve-core/improve-retain.d.ts.map +1 -0
  215. package/dist/improve-core/improve-retain.js +115 -0
  216. package/dist/improve-core/improve-retain.js.map +1 -0
  217. package/dist/improve-core/improve-site-plan.d.ts +75 -0
  218. package/dist/improve-core/improve-site-plan.d.ts.map +1 -0
  219. package/dist/improve-core/improve-site-plan.js +135 -0
  220. package/dist/improve-core/improve-site-plan.js.map +1 -0
  221. package/dist/improve-core/improve-site-shell.d.ts +56 -0
  222. package/dist/improve-core/improve-site-shell.d.ts.map +1 -0
  223. package/dist/improve-core/improve-site-shell.js +152 -0
  224. package/dist/improve-core/improve-site-shell.js.map +1 -0
  225. package/dist/improve-core/improve-site-tokens.d.ts +44 -0
  226. package/dist/improve-core/improve-site-tokens.d.ts.map +1 -0
  227. package/dist/improve-core/improve-site-tokens.js +87 -0
  228. package/dist/improve-core/improve-site-tokens.js.map +1 -0
  229. package/dist/improve-core/improve-source-hints.d.ts +25 -0
  230. package/dist/improve-core/improve-source-hints.d.ts.map +1 -0
  231. package/dist/improve-core/improve-source-hints.js +17 -0
  232. package/dist/improve-core/improve-source-hints.js.map +1 -0
  233. package/dist/improve-core/improve-token-patch.d.ts.map +1 -0
  234. package/dist/{improve-token-patch.js → improve-core/improve-token-patch.js} +2 -0
  235. package/dist/improve-core/improve-token-patch.js.map +1 -0
  236. package/dist/improve-core/index.d.ts +47 -0
  237. package/dist/improve-core/index.d.ts.map +1 -0
  238. package/dist/improve-core/index.js +49 -0
  239. package/dist/improve-core/index.js.map +1 -0
  240. package/dist/improve-delivery-stages.d.ts +6 -0
  241. package/dist/improve-delivery-stages.d.ts.map +1 -1
  242. package/dist/improve-delivery-stages.js +87 -6
  243. package/dist/improve-delivery-stages.js.map +1 -1
  244. package/dist/improve-dom-diff.d.ts +8 -24
  245. package/dist/improve-dom-diff.d.ts.map +1 -1
  246. package/dist/improve-dom-diff.js +23 -123
  247. package/dist/improve-dom-diff.js.map +1 -1
  248. package/dist/improve-dom-gate.d.ts +1 -18
  249. package/dist/improve-dom-gate.d.ts.map +1 -1
  250. package/dist/improve-dom-gate.js +1 -46
  251. package/dist/improve-dom-gate.js.map +1 -1
  252. package/dist/improve-generation-stages.d.ts +0 -2
  253. package/dist/improve-generation-stages.d.ts.map +1 -1
  254. package/dist/improve-generation-stages.js +162 -15
  255. package/dist/improve-generation-stages.js.map +1 -1
  256. package/dist/improve-kit-assets.d.ts +8 -116
  257. package/dist/improve-kit-assets.d.ts.map +1 -1
  258. package/dist/improve-kit-assets.js +9 -229
  259. package/dist/improve-kit-assets.js.map +1 -1
  260. package/dist/improve-kit-readme.d.ts +4 -0
  261. package/dist/improve-kit-readme.d.ts.map +1 -1
  262. package/dist/improve-kit-readme.js +57 -16
  263. package/dist/improve-kit-readme.js.map +1 -1
  264. package/dist/improve-kit-stall.d.ts +3 -1
  265. package/dist/improve-kit-stall.d.ts.map +1 -1
  266. package/dist/improve-kit-stall.js +46 -14
  267. package/dist/improve-kit-stall.js.map +1 -1
  268. package/dist/improve-kit-status.d.ts.map +1 -1
  269. package/dist/improve-kit-status.js +8 -3
  270. package/dist/improve-kit-status.js.map +1 -1
  271. package/dist/improve-options.d.ts +8 -0
  272. package/dist/improve-options.d.ts.map +1 -1
  273. package/dist/improve-options.js +92 -12
  274. package/dist/improve-options.js.map +1 -1
  275. package/dist/improve-passthrough-flags.d.ts +8 -0
  276. package/dist/improve-passthrough-flags.d.ts.map +1 -0
  277. package/dist/improve-passthrough-flags.js +11 -0
  278. package/dist/improve-passthrough-flags.js.map +1 -0
  279. package/dist/improve-plan-annotator.d.ts +8 -2
  280. package/dist/improve-plan-annotator.d.ts.map +1 -1
  281. package/dist/improve-plan-annotator.js +35 -38
  282. package/dist/improve-plan-annotator.js.map +1 -1
  283. package/dist/improve-pricing-plan.d.ts +3 -0
  284. package/dist/improve-pricing-plan.d.ts.map +1 -1
  285. package/dist/improve-pricing-plan.js +33 -5
  286. package/dist/improve-pricing-plan.js.map +1 -1
  287. package/dist/improve-recheck.d.ts +9 -0
  288. package/dist/improve-recheck.d.ts.map +1 -0
  289. package/dist/improve-recheck.js +200 -0
  290. package/dist/improve-recheck.js.map +1 -0
  291. package/dist/improve-reset.d.ts.map +1 -1
  292. package/dist/improve-reset.js +11 -0
  293. package/dist/improve-reset.js.map +1 -1
  294. package/dist/improve-run-summary.d.ts +6 -0
  295. package/dist/improve-run-summary.d.ts.map +1 -1
  296. package/dist/improve-run-summary.js +29 -5
  297. package/dist/improve-run-summary.js.map +1 -1
  298. package/dist/improve-site-plan.d.ts +57 -0
  299. package/dist/improve-site-plan.d.ts.map +1 -0
  300. package/dist/improve-site-plan.js +79 -0
  301. package/dist/improve-site-plan.js.map +1 -0
  302. package/dist/improve-site-shell.d.ts +11 -0
  303. package/dist/improve-site-shell.d.ts.map +1 -0
  304. package/dist/improve-site-shell.js +24 -0
  305. package/dist/improve-site-shell.js.map +1 -0
  306. package/dist/improve-site-stage.d.ts +10 -0
  307. package/dist/improve-site-stage.d.ts.map +1 -0
  308. package/dist/improve-site-stage.js +84 -0
  309. package/dist/improve-site-stage.js.map +1 -0
  310. package/dist/improve-site-tokens.d.ts +9 -0
  311. package/dist/improve-site-tokens.d.ts.map +1 -0
  312. package/dist/improve-site-tokens.js +17 -0
  313. package/dist/improve-site-tokens.js.map +1 -0
  314. package/dist/improve-source-hints.d.ts +3 -12
  315. package/dist/improve-source-hints.d.ts.map +1 -1
  316. package/dist/improve-source-hints.js +4 -5
  317. package/dist/improve-source-hints.js.map +1 -1
  318. package/dist/improve-spend-ledger.d.ts +69 -0
  319. package/dist/improve-spend-ledger.d.ts.map +1 -0
  320. package/dist/improve-spend-ledger.js +118 -0
  321. package/dist/improve-spend-ledger.js.map +1 -0
  322. package/dist/improve-stage-runners.d.ts +5 -2
  323. package/dist/improve-stage-runners.d.ts.map +1 -1
  324. package/dist/improve-stage-runners.js +5 -2
  325. package/dist/improve-stage-runners.js.map +1 -1
  326. package/dist/improve-stage-shared.d.ts +10 -1
  327. package/dist/improve-stage-shared.d.ts.map +1 -1
  328. package/dist/improve-stage-shared.js.map +1 -1
  329. package/dist/improve-stop-handler.d.ts +15 -0
  330. package/dist/improve-stop-handler.d.ts.map +1 -1
  331. package/dist/improve-stop-handler.js +74 -3
  332. package/dist/improve-stop-handler.js.map +1 -1
  333. package/dist/improve-terminal-event.d.ts.map +1 -1
  334. package/dist/improve-terminal-event.js +7 -4
  335. package/dist/improve-terminal-event.js.map +1 -1
  336. package/dist/improve-workspace.d.ts +198 -2
  337. package/dist/improve-workspace.d.ts.map +1 -1
  338. package/dist/improve-workspace.js +249 -92
  339. package/dist/improve-workspace.js.map +1 -1
  340. package/dist/legacy-skill-catalog.d.ts.map +1 -1
  341. package/dist/legacy-skill-catalog.js +79 -0
  342. package/dist/legacy-skill-catalog.js.map +1 -1
  343. package/dist/mcp-convert.js +1 -1
  344. package/dist/mcp-convert.js.map +1 -1
  345. package/dist/mcp-tool-definitions.js +1 -1
  346. package/dist/mcp-tool-definitions.js.map +1 -1
  347. package/dist/mcp-tool-handler.d.ts.map +1 -1
  348. package/dist/mcp-tool-handler.js +0 -3
  349. package/dist/mcp-tool-handler.js.map +1 -1
  350. package/dist/redesign-branch-adoption.d.ts +29 -0
  351. package/dist/redesign-branch-adoption.d.ts.map +1 -0
  352. package/dist/redesign-branch-adoption.js +183 -0
  353. package/dist/redesign-branch-adoption.js.map +1 -0
  354. package/dist/redesign-branch-identity.d.ts +23 -0
  355. package/dist/redesign-branch-identity.d.ts.map +1 -0
  356. package/dist/redesign-branch-identity.js +27 -0
  357. package/dist/redesign-branch-identity.js.map +1 -0
  358. package/dist/redesign-branch-record-verification.d.ts +51 -0
  359. package/dist/redesign-branch-record-verification.d.ts.map +1 -0
  360. package/dist/redesign-branch-record-verification.js +127 -0
  361. package/dist/redesign-branch-record-verification.js.map +1 -0
  362. package/dist/redesign-branch-stage.d.ts +17 -0
  363. package/dist/redesign-branch-stage.d.ts.map +1 -0
  364. package/dist/redesign-branch-stage.js +218 -0
  365. package/dist/redesign-branch-stage.js.map +1 -0
  366. package/dist/redesign-capture.d.ts +145 -15
  367. package/dist/redesign-capture.d.ts.map +1 -1
  368. package/dist/redesign-capture.js +182 -71
  369. package/dist/redesign-capture.js.map +1 -1
  370. package/dist/redesign-page-candidates.d.ts +40 -0
  371. package/dist/redesign-page-candidates.d.ts.map +1 -0
  372. package/dist/redesign-page-candidates.js +131 -0
  373. package/dist/redesign-page-candidates.js.map +1 -0
  374. package/dist/redesign-page-ownership.d.ts +36 -0
  375. package/dist/redesign-page-ownership.d.ts.map +1 -0
  376. package/dist/redesign-page-ownership.js +174 -0
  377. package/dist/redesign-page-ownership.js.map +1 -0
  378. package/dist/redesign-plan-identity.d.ts +3 -1
  379. package/dist/redesign-plan-identity.d.ts.map +1 -1
  380. package/dist/redesign-plan-identity.js +4 -1
  381. package/dist/redesign-plan-identity.js.map +1 -1
  382. package/dist/redesign-plan.d.ts.map +1 -1
  383. package/dist/redesign-plan.js +12 -6
  384. package/dist/redesign-plan.js.map +1 -1
  385. package/dist/redesign-record-validation.d.ts +4 -0
  386. package/dist/redesign-record-validation.d.ts.map +1 -0
  387. package/dist/redesign-record-validation.js +210 -0
  388. package/dist/redesign-record-validation.js.map +1 -0
  389. package/dist/redesign-workspace.d.ts +43 -5
  390. package/dist/redesign-workspace.d.ts.map +1 -1
  391. package/dist/redesign-workspace.js +66 -7
  392. package/dist/redesign-workspace.js.map +1 -1
  393. package/dist/responsive-alternative-materializer.d.ts +8 -3
  394. package/dist/responsive-alternative-materializer.d.ts.map +1 -1
  395. package/dist/responsive-alternative-materializer.js +68 -51
  396. package/dist/responsive-alternative-materializer.js.map +1 -1
  397. package/dist/result-integrity.d.ts +38 -0
  398. package/dist/result-integrity.d.ts.map +1 -0
  399. package/dist/result-integrity.js +46 -0
  400. package/dist/result-integrity.js.map +1 -0
  401. package/dist/review-edit-source.d.ts.map +1 -1
  402. package/dist/review-edit-source.js +6 -2
  403. package/dist/review-edit-source.js.map +1 -1
  404. package/dist/review-edit.js +2 -2
  405. package/dist/review-edit.js.map +1 -1
  406. package/dist/review-prototype-gap.js +1 -1
  407. package/dist/review-prototype-gap.js.map +1 -1
  408. package/dist/run-journal.d.ts +3 -1
  409. package/dist/run-journal.d.ts.map +1 -1
  410. package/dist/run-journal.js +7 -1
  411. package/dist/run-journal.js.map +1 -1
  412. package/dist/spend-run-filter.d.ts +21 -0
  413. package/dist/spend-run-filter.d.ts.map +1 -0
  414. package/dist/spend-run-filter.js +67 -0
  415. package/dist/spend-run-filter.js.map +1 -0
  416. package/dist/spend-scoped-report-lines.d.ts +4 -0
  417. package/dist/spend-scoped-report-lines.d.ts.map +1 -0
  418. package/dist/spend-scoped-report-lines.js +46 -0
  419. package/dist/spend-scoped-report-lines.js.map +1 -0
  420. package/dist/spend-scoped-report.d.ts +28 -0
  421. package/dist/spend-scoped-report.d.ts.map +1 -0
  422. package/dist/spend-scoped-report.js +45 -0
  423. package/dist/spend-scoped-report.js.map +1 -0
  424. package/open-design.json +2 -2
  425. package/package.json +5 -5
  426. package/skills/12ui-design/SKILL.md +8 -4
  427. package/skills/12ui-design/improve.md +50 -3
  428. package/dist/improve-dom-anchor.d.ts.map +0 -1
  429. package/dist/improve-dom-anchor.js.map +0 -1
  430. package/dist/improve-dom-extract.d.ts.map +0 -1
  431. package/dist/improve-dom-extract.js.map +0 -1
  432. package/dist/improve-dom-neighbour.d.ts.map +0 -1
  433. package/dist/improve-dom-neighbour.js.map +0 -1
  434. package/dist/improve-dom-scale.d.ts.map +0 -1
  435. package/dist/improve-dom-scale.js.map +0 -1
  436. package/dist/improve-icon-svg.d.ts +0 -47
  437. package/dist/improve-icon-svg.d.ts.map +0 -1
  438. package/dist/improve-icon-svg.js.map +0 -1
  439. package/dist/improve-layerdoc-diff.d.ts.map +0 -1
  440. package/dist/improve-layerdoc-diff.js.map +0 -1
  441. package/dist/improve-layerdoc-types.d.ts.map +0 -1
  442. package/dist/improve-layerdoc-types.js +0 -2
  443. package/dist/improve-layerdoc-types.js.map +0 -1
  444. package/dist/improve-plan-annotated-render.d.ts.map +0 -1
  445. package/dist/improve-plan-render.d.ts.map +0 -1
  446. package/dist/improve-plan-render.js.map +0 -1
  447. package/dist/improve-raster-layers-section.d.ts.map +0 -1
  448. package/dist/improve-raster-layers-section.js.map +0 -1
  449. package/dist/improve-token-patch.d.ts.map +0 -1
  450. package/dist/improve-token-patch.js.map +0 -1
  451. /package/dist/{improve-dom-anchor.d.ts → improve-core/improve-dom-anchor.d.ts} +0 -0
  452. /package/dist/{improve-dom-extract.d.ts → improve-core/improve-dom-extract.d.ts} +0 -0
  453. /package/dist/{improve-dom-neighbour.d.ts → improve-core/improve-dom-neighbour.d.ts} +0 -0
  454. /package/dist/{improve-dom-scale.d.ts → improve-core/improve-dom-scale.d.ts} +0 -0
  455. /package/dist/{improve-layerdoc-diff.d.ts → improve-core/improve-layerdoc-diff.d.ts} +0 -0
  456. /package/dist/{improve-token-patch.d.ts → improve-core/improve-token-patch.d.ts} +0 -0
@@ -0,0 +1,121 @@
1
+ /**
2
+ * WHAT AN IMPROVE RUN KEEPS. One module owns the answer, because the CLI, the
3
+ * /improve page, and the site-wide branch all have to ask it and all have to
4
+ * get the same one.
5
+ *
6
+ * WHY THIS EXISTS (owner, direct chat 2026-09-02, on a chargedesk.com run):
7
+ * "it's kind of retaining the wrong stuff. Obviously, I would expect the logo
8
+ * to be retained, or at least very similar, whereas it's keeping all of the
9
+ * title, the text, the icons, and stuff in the exact same place and just very
10
+ * slightly altering the background image… It's not giving me a new design."
11
+ *
12
+ * That was the shipped default doing exactly what it was told: improve pinned
13
+ * `layout` and `content` and excluded `assets`, so the geometry was frozen and
14
+ * the brand was the one thing licensed to change. The vocabulary was never
15
+ * wrong — the DEFAULT was inverted, and the four facets were invisible.
16
+ *
17
+ * THE CONTROL IS THE FACETS THEMSELVES (owner, same day): "I feel like it
18
+ * might be better to have retain toggles on the UI. So if we were to remove
19
+ * the layout toggle for example, it might resolve some of the problems?" So
20
+ * there is no invented ladder of level names between the visitor and the
21
+ * service — the four things the service already understands are the four
22
+ * things a visitor turns on and off, and `12ui improve --retain` is the same
23
+ * control on the command line.
24
+ */
25
+ /** The same shape as the service's `CreateRetainPolicy`, restated here because
26
+ * improve-core may not import from the worker or the CLI. */
27
+ export type ImproveRetainPolicy = {
28
+ include: string[];
29
+ exclude: string[];
30
+ notes?: string;
31
+ /**
32
+ * Improve's reference is always the caller's OWN page, never a design they
33
+ * liked, and the service reads this to decide what an EXCLUSION means: a
34
+ * prohibition against someone else's work, or a licence over your own. Every
35
+ * policy this module hands out declares it, so no improve request can reach
36
+ * the model as "do not reuse its actual content or text".
37
+ */
38
+ source?: 'inspiration' | 'subject';
39
+ };
40
+ /** The service's vocabulary, in the order the toggles read. */
41
+ export declare const IMPROVE_RETAIN_FACETS: readonly ["layout", "content", "assets", "style"];
42
+ export type ImproveRetainFacet = (typeof IMPROVE_RETAIN_FACETS)[number];
43
+ /**
44
+ * Copy and brand kept; geometry and visual system free.
45
+ *
46
+ * The superseded default was the exact inverse — `include [layout, content]`,
47
+ * `exclude [style, assets]` — which pinned every element in place and licensed
48
+ * the logo to change. Keeping the product's own words and brand while freeing
49
+ * how the page is laid out and how it looks is what "improve" was always meant
50
+ * to mean.
51
+ */
52
+ export declare const DEFAULT_IMPROVE_RETAIN: Readonly<ImproveRetainPolicy>;
53
+ export declare const improveRetainKeeps: (retain: ImproveRetainPolicy, facet: ImproveRetainFacet) => boolean;
54
+ /** Canonicalize a facet set into the policy the service hashes. */
55
+ export declare const improveRetainFor: (facets: readonly ImproveRetainFacet[]) => ImproveRetainPolicy;
56
+ /** Flip one toggle, returning a fresh canonical policy. */
57
+ export declare const improveRetainToggled: (retain: ImproveRetainPolicy, facet: ImproveRetainFacet, keep: boolean) => ImproveRetainPolicy;
58
+ /**
59
+ * THE STATE IMPROVE MUST NOT BE IN (owner, direct chat 2026-09-02): "maybe we
60
+ * just don't allow all 4 to be enabled at once? At least one gate must not be
61
+ * selected?"
62
+ *
63
+ * With every facet kept there is nothing left for an improvement to be. The
64
+ * measured behaviour on a photo-led page is a near no-op — an image edit handed
65
+ * a full conservation set returns its input (`.tmp/site-improve/polish-study`,
66
+ * chargedesk ink delta 4.6%) — so the request buys a paid call and returns the
67
+ * page it was given. The four facets are exhaustive, so "keep all four" is the
68
+ * one combination that cannot be honoured, and it is refused rather than
69
+ * charged for.
70
+ *
71
+ * Extra labels (`palette`, an unknown semantic note) do not enter into it: the
72
+ * question is only whether all four of the facets the toggles expose are held.
73
+ */
74
+ export declare const improveRetainKeepsEverything: (retain: ImproveRetainPolicy) => boolean;
75
+ /**
76
+ * The one sentence every surface says when it refuses. `copy` and `brand` are
77
+ * the words the toggles use AND accepted `--retain` aliases for `content` and
78
+ * `assets`, so the same sentence is true on the page and on the command line.
79
+ */
80
+ export declare const IMPROVE_RETAIN_ALL_KEPT_REFUSAL = "At least one of layout, copy, brand, and style must be left free to change.";
81
+ /**
82
+ * Whether this facet may still be switched on. Three kept is the ceiling, so
83
+ * the fourth box is the only one a page ever has to disable.
84
+ */
85
+ export declare const improveRetainMayKeep: (retain: ImproveRetainPolicy, facet: ImproveRetainFacet) => boolean;
86
+ /**
87
+ * A policy that arrived from outside this session — restored history, a link
88
+ * someone kept, a stored draft from before this rule — made usable. All four
89
+ * kept is not a request anything can honour, so it resolves to the default
90
+ * (copy + brand) rather than crashing a page or reaching a paid call.
91
+ */
92
+ export declare const improveRetainResolved: (retain: ImproveRetainPolicy) => ImproveRetainPolicy;
93
+ /**
94
+ * The service derives run mode from retain (layout retained → preserve
95
+ * structure), so a caller that sends a mode has to send the matching one or
96
+ * its request reads as a contradiction it did not intend.
97
+ */
98
+ export declare const improveRetainMode: (retain: ImproveRetainPolicy) => "preserve-structure" | "inspiration";
99
+ /**
100
+ * The toggle's own label. The owner named these in plain words, and they are
101
+ * the words both the page and `--help` use: a facet is called the same thing
102
+ * wherever a person meets it.
103
+ */
104
+ export declare const improveRetainFacetLabel: (facet: ImproveRetainFacet) => string;
105
+ /**
106
+ * What turning this one off licenses, for a hover or a help line.
107
+ *
108
+ * `style` says both halves, because "keep style" is the one facet a person
109
+ * reads as "change nothing" (owner, 2026-09-02: "Selecting all the options
110
+ * results in no changes?"). It keeps the style's IDENTITY — palette,
111
+ * typography voice, image treatment — and the page still gets polished.
112
+ */
113
+ export declare const improveRetainFacetHint: (facet: ImproveRetainFacet) => string;
114
+ /**
115
+ * The `12ui improve --retain` string that asks for exactly this. With nothing
116
+ * kept there is no positive list to write, so it uses the flag's own explicit
117
+ * exclusion spelling (`-layout,…`) rather than a word the parser would read as
118
+ * a label.
119
+ */
120
+ export declare const improveRetainFlag: (retain: ImproveRetainPolicy) => string;
121
+ //# sourceMappingURL=improve-retain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"improve-retain.d.ts","sourceRoot":"","sources":["../../src/improve-core/improve-retain.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;6DAC6D;AAC7D,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;CACpC,CAAC;AAEF,+DAA+D;AAC/D,eAAO,MAAM,qBAAqB,mDAAoD,CAAC;AACvF,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAExE;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,mBAAmB,CAIhE,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,mBAAmB,EAC3B,OAAO,kBAAkB,KACxB,OAAyC,CAAC;AAE7C,mEAAmE;AACnE,eAAO,MAAM,gBAAgB,GAC3B,QAAQ,SAAS,kBAAkB,EAAE,KACpC,mBAOF,CAAC;AAEF,2DAA2D;AAC3D,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,mBAAmB,EAC3B,OAAO,kBAAkB,EACzB,MAAM,OAAO,KACZ,mBAEF,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,4BAA4B,GAAI,QAAQ,mBAAmB,KAAG,OAE1E,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,+BAA+B,gFACmC,CAAC;AAEhF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,mBAAmB,EAC3B,OAAO,kBAAkB,KACxB,OAGF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAChC,QAAQ,mBAAmB,KAC1B,mBAMF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,mBAAmB,KAC1B,oBAAoB,GAAG,aAEzB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,GAAI,OAAO,kBAAkB,KAAG,MAKnE,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,GAAI,OAAO,kBAAkB,KAAG,MAKlE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAI,QAAQ,mBAAmB,KAAG,MAI/D,CAAC"}
@@ -0,0 +1,115 @@
1
+ // GENERATED — do not edit. Copied verbatim from
2
+ // packages/layerdoc/src/improve-core by scripts/sync-improve-core.mjs.
3
+ /** The service's vocabulary, in the order the toggles read. */
4
+ export const IMPROVE_RETAIN_FACETS = ['layout', 'content', 'assets', 'style'];
5
+ /**
6
+ * Copy and brand kept; geometry and visual system free.
7
+ *
8
+ * The superseded default was the exact inverse — `include [layout, content]`,
9
+ * `exclude [style, assets]` — which pinned every element in place and licensed
10
+ * the logo to change. Keeping the product's own words and brand while freeing
11
+ * how the page is laid out and how it looks is what "improve" was always meant
12
+ * to mean.
13
+ */
14
+ export const DEFAULT_IMPROVE_RETAIN = {
15
+ include: ['assets', 'content'],
16
+ exclude: ['layout', 'style'],
17
+ source: 'subject',
18
+ };
19
+ export const improveRetainKeeps = (retain, facet) => retain.include.includes(facet);
20
+ /** Canonicalize a facet set into the policy the service hashes. */
21
+ export const improveRetainFor = (facets) => {
22
+ const kept = new Set(facets);
23
+ return {
24
+ include: IMPROVE_RETAIN_FACETS.filter((facet) => kept.has(facet)).sort(),
25
+ exclude: IMPROVE_RETAIN_FACETS.filter((facet) => !kept.has(facet)).sort(),
26
+ source: 'subject',
27
+ };
28
+ };
29
+ /** Flip one toggle, returning a fresh canonical policy. */
30
+ export const improveRetainToggled = (retain, facet, keep) => improveRetainFor(IMPROVE_RETAIN_FACETS.filter((entry) => (entry === facet ? keep : improveRetainKeeps(retain, entry))));
31
+ /**
32
+ * THE STATE IMPROVE MUST NOT BE IN (owner, direct chat 2026-09-02): "maybe we
33
+ * just don't allow all 4 to be enabled at once? At least one gate must not be
34
+ * selected?"
35
+ *
36
+ * With every facet kept there is nothing left for an improvement to be. The
37
+ * measured behaviour on a photo-led page is a near no-op — an image edit handed
38
+ * a full conservation set returns its input (`.tmp/site-improve/polish-study`,
39
+ * chargedesk ink delta 4.6%) — so the request buys a paid call and returns the
40
+ * page it was given. The four facets are exhaustive, so "keep all four" is the
41
+ * one combination that cannot be honoured, and it is refused rather than
42
+ * charged for.
43
+ *
44
+ * Extra labels (`palette`, an unknown semantic note) do not enter into it: the
45
+ * question is only whether all four of the facets the toggles expose are held.
46
+ */
47
+ export const improveRetainKeepsEverything = (retain) => (IMPROVE_RETAIN_FACETS.every((facet) => improveRetainKeeps(retain, facet)));
48
+ /**
49
+ * The one sentence every surface says when it refuses. `copy` and `brand` are
50
+ * the words the toggles use AND accepted `--retain` aliases for `content` and
51
+ * `assets`, so the same sentence is true on the page and on the command line.
52
+ */
53
+ export const IMPROVE_RETAIN_ALL_KEPT_REFUSAL = 'At least one of layout, copy, brand, and style must be left free to change.';
54
+ /**
55
+ * Whether this facet may still be switched on. Three kept is the ceiling, so
56
+ * the fourth box is the only one a page ever has to disable.
57
+ */
58
+ export const improveRetainMayKeep = (retain, facet) => (improveRetainKeeps(retain, facet)
59
+ || IMPROVE_RETAIN_FACETS.some((entry) => entry !== facet && !improveRetainKeeps(retain, entry)));
60
+ /**
61
+ * A policy that arrived from outside this session — restored history, a link
62
+ * someone kept, a stored draft from before this rule — made usable. All four
63
+ * kept is not a request anything can honour, so it resolves to the default
64
+ * (copy + brand) rather than crashing a page or reaching a paid call.
65
+ */
66
+ export const improveRetainResolved = (retain) => (improveRetainKeepsEverything(retain)
67
+ ? improveRetainFor(IMPROVE_RETAIN_FACETS.filter((facet) => improveRetainKeeps(DEFAULT_IMPROVE_RETAIN, facet)))
68
+ : retain);
69
+ /**
70
+ * The service derives run mode from retain (layout retained → preserve
71
+ * structure), so a caller that sends a mode has to send the matching one or
72
+ * its request reads as a contradiction it did not intend.
73
+ */
74
+ export const improveRetainMode = (retain) => (improveRetainKeeps(retain, 'layout') ? 'preserve-structure' : 'inspiration');
75
+ /**
76
+ * The toggle's own label. The owner named these in plain words, and they are
77
+ * the words both the page and `--help` use: a facet is called the same thing
78
+ * wherever a person meets it.
79
+ */
80
+ export const improveRetainFacetLabel = (facet) => {
81
+ if (facet === 'layout')
82
+ return 'Keep layout';
83
+ if (facet === 'content')
84
+ return 'Keep copy';
85
+ if (facet === 'assets')
86
+ return 'Keep brand';
87
+ return 'Keep style';
88
+ };
89
+ /**
90
+ * What turning this one off licenses, for a hover or a help line.
91
+ *
92
+ * `style` says both halves, because "keep style" is the one facet a person
93
+ * reads as "change nothing" (owner, 2026-09-02: "Selecting all the options
94
+ * results in no changes?"). It keeps the style's IDENTITY — palette,
95
+ * typography voice, image treatment — and the page still gets polished.
96
+ */
97
+ export const improveRetainFacetHint = (facet) => {
98
+ if (facet === 'layout')
99
+ return 'Off: the page may be laid out again from scratch.';
100
+ if (facet === 'content')
101
+ return 'Off: the words may be rewritten, but no fact may be invented.';
102
+ if (facet === 'assets')
103
+ return 'Off: the logo, wordmark, and brand imagery may be replaced.';
104
+ return 'Off: a new palette, typography, and image treatment. On: those stay, and the page is still polished.';
105
+ };
106
+ /**
107
+ * The `12ui improve --retain` string that asks for exactly this. With nothing
108
+ * kept there is no positive list to write, so it uses the flag's own explicit
109
+ * exclusion spelling (`-layout,…`) rather than a word the parser would read as
110
+ * a label.
111
+ */
112
+ export const improveRetainFlag = (retain) => (retain.include.length > 0
113
+ ? [...retain.include].sort().join(',')
114
+ : IMPROVE_RETAIN_FACETS.map((facet) => `-${facet}`).join(','));
115
+ //# sourceMappingURL=improve-retain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"improve-retain.js","sourceRoot":"","sources":["../../src/improve-core/improve-retain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ import { type ImproveSiteShellChange, type ImproveSiteSharedShellRollup } from './improve-site-shell.js';
2
+ import { type ImproveSiteTokenPatch, type ImproveSiteTokenRollup } from './improve-site-tokens.js';
3
+ import type { ImproveArtifactMap } from './improve-artifacts.js';
4
+ export type ImproveSitePageGate = 'passed' | 'blocked' | 'not-applicable' | 'failed';
5
+ /**
6
+ * The site roll-up needs stable page facts and the paths a reader should be
7
+ * linked to; capture, branch, and conversion orchestration stay outside. Paths
8
+ * are opaque to the core — it hands each one to the caller's `relativePath` to
9
+ * be named, so a kit written to disk and a kit zipped in a browser read alike.
10
+ */
11
+ export type ImproveSitePagePlan = {
12
+ id: string;
13
+ url: string;
14
+ gate: ImproveSitePageGate;
15
+ /** A branch failure has no polished target or implementation plan. */
16
+ failure?: {
17
+ code: string;
18
+ message: string;
19
+ };
20
+ polishedImagePath?: string;
21
+ targetHtmlPath?: string;
22
+ targetLayout?: 'document' | 'responsive' | 'fixed';
23
+ responsiveWarning?: string;
24
+ currentDomDocPath: string;
25
+ tokenPatchPath: string;
26
+ diffPath: string;
27
+ planPath: string;
28
+ coverage?: number;
29
+ matchedCount?: number;
30
+ addedCount?: number;
31
+ removedCount?: number;
32
+ sourceHints: string[];
33
+ };
34
+ export type ImproveSitePlanArtifacts = {
35
+ artifacts: ImproveArtifactMap;
36
+ pages: readonly ImproveSitePagePlan[];
37
+ tokens: ImproveSiteTokenRollup;
38
+ sharedShell: ImproveSiteSharedShellRollup;
39
+ };
40
+ export type ImproveSiteDiffFacts = {
41
+ coverage?: number;
42
+ matchedCount?: number;
43
+ addedCount?: number;
44
+ removedCount?: number;
45
+ };
46
+ /** How the core names a path it did not create: the caller decides. */
47
+ export type ImproveSiteRelativePath = (file: string) => string;
48
+ /** The counts a page plan's `diff.json` contributes to the page inventory. */
49
+ export declare const parseImproveSiteDiffFacts: (text: string | undefined) => ImproveSiteDiffFacts;
50
+ export declare const IMPROVE_SITE_PAGES_FILE = "pages.md";
51
+ export declare const IMPROVE_SITE_APPLY_FILE = "APPLY.md";
52
+ export declare const renderImproveSitePages: (args: {
53
+ pages: readonly ImproveSitePagePlan[];
54
+ relativePath: ImproveSiteRelativePath;
55
+ }) => string;
56
+ export declare const renderImproveSiteApply: (args: {
57
+ pages: readonly ImproveSitePagePlan[];
58
+ relativePath: ImproveSiteRelativePath;
59
+ repo?: string;
60
+ sourceUrl?: string;
61
+ }) => string;
62
+ /**
63
+ * The four free site-stage deliverables. Missing token or diff artifacts are
64
+ * expected for blocked pages and are shown honestly in `pages.md` rather than
65
+ * preventing the rest of the roll-up.
66
+ */
67
+ export declare const planImproveSiteArtifacts: (args: {
68
+ pages: readonly ImproveSitePagePlan[];
69
+ tokenPatches: readonly ImproveSiteTokenPatch[];
70
+ shellChanges: readonly ImproveSiteShellChange[];
71
+ relativePath: ImproveSiteRelativePath;
72
+ repo?: string;
73
+ sourceUrl?: string;
74
+ }) => ImproveSitePlanArtifacts;
75
+ //# sourceMappingURL=improve-site-plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"improve-site-plan.d.ts","sourceRoot":"","sources":["../../src/improve-core/improve-site-plan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,135 @@
1
+ // GENERATED — do not edit. Copied verbatim from
2
+ // packages/layerdoc/src/improve-core by scripts/sync-improve-core.mjs.
3
+ import { detectImproveSiteSharedShell, renderImproveSiteSharedShell, IMPROVE_SITE_SHARED_SHELL_FILE, } from './improve-site-shell.js';
4
+ import { mergeImproveSiteTokens, IMPROVE_SITE_TOKENS_FILE, } from './improve-site-tokens.js';
5
+ const isRecord = (value) => (Boolean(value) && typeof value === 'object' && !Array.isArray(value));
6
+ const markdownCell = (value) => value.replaceAll('|', '\\|').replaceAll('\n', ' ');
7
+ const markdownLink = (relativePath, file, label) => (file ? `[${label}](${relativePath(file)})` : '—');
8
+ /** The counts a page plan's `diff.json` contributes to the page inventory. */
9
+ export const parseImproveSiteDiffFacts = (text) => {
10
+ if (!text)
11
+ return {};
12
+ const document = JSON.parse(text);
13
+ if (!isRecord(document))
14
+ return {};
15
+ const meta = isRecord(document.meta) ? document.meta : {};
16
+ return {
17
+ ...(typeof document.domCoverage === 'number' ? { coverage: document.domCoverage } : {}),
18
+ ...(typeof meta.matchedCount === 'number' ? { matchedCount: meta.matchedCount } : {}),
19
+ ...(typeof meta.addedCount === 'number' ? { addedCount: meta.addedCount } : {}),
20
+ ...(typeof meta.removedCount === 'number' ? { removedCount: meta.removedCount } : {}),
21
+ };
22
+ };
23
+ const formatCoverage = (coverage) => coverage === undefined
24
+ ? '—'
25
+ : `${(coverage * 100).toFixed(1)}%`;
26
+ const formatFailure = (failure) => (failure ? markdownCell(`${failure.code}: ${failure.message}`) : '—');
27
+ const formatTarget = (relativePath, page) => {
28
+ const link = markdownLink(relativePath, page.targetHtmlPath, page.targetLayout === 'fixed' ? 'fixed HTML' : 'target HTML');
29
+ if (!page.responsiveWarning)
30
+ return link;
31
+ return markdownCell(`${link} — ${page.responsiveWarning}`);
32
+ };
33
+ export const IMPROVE_SITE_PAGES_FILE = 'pages.md';
34
+ export const IMPROVE_SITE_APPLY_FILE = 'APPLY.md';
35
+ export const renderImproveSitePages = (args) => {
36
+ const lines = [
37
+ '# Pages', '',
38
+ '| Page | URL | Gate | Failure | Coverage | Matched | Added | Removed | Polished image | Target HTML | Plan |',
39
+ '| --- | --- | --- | --- | ---: | ---: | ---: | ---: | --- | --- | --- |',
40
+ ];
41
+ for (const page of args.pages) {
42
+ lines.push([
43
+ page.id,
44
+ markdownCell(page.url),
45
+ page.gate,
46
+ formatFailure(page.failure),
47
+ formatCoverage(page.coverage),
48
+ page.matchedCount ?? '—',
49
+ page.addedCount ?? '—',
50
+ page.removedCount ?? '—',
51
+ markdownLink(args.relativePath, page.polishedImagePath, 'polished.png'),
52
+ formatTarget(args.relativePath, page),
53
+ page.gate === 'failed' ? '—' : markdownLink(args.relativePath, page.planPath, 'annotated plan'),
54
+ ].join(' | ').replace(/^/u, '| ').replace(/$/u, ' |'));
55
+ }
56
+ lines.push('');
57
+ return lines.join('\n');
58
+ };
59
+ export const renderImproveSiteApply = (args) => {
60
+ const source = args.sourceUrl ?? args.pages[0]?.url ?? '<root-url>';
61
+ const lines = [
62
+ '# Apply the whole-site polish', '',
63
+ 'Use this brief in order. The page plans are implementation evidence, not an invitation to invent a new product.', '',
64
+ '## 1. Apply tokens through the theme entry point', '',
65
+ `- Start with [tokens.css](${IMPROVE_SITE_TOKENS_FILE}). Apply its declarations through the repository's existing global token or theme entry point.`,
66
+ ...(args.repo ? [`- Repository supplied with \`--repo\`: \`${args.repo}\`. Prefer its existing theme ownership and avoid parallel token systems.`] : ['- No `--repo` was supplied. Identify the owning theme entry point before changing tokens.']),
67
+ '',
68
+ '## 2. Apply shared shell changes once', '',
69
+ `- Follow [shared-shell.md](${IMPROVE_SITE_SHARED_SHELL_FILE}) for repeated header, navigation, sidebar, and footer changes. Implement each shared item in its shared component once.`,
70
+ '- Do not repeat entries marked **shared — apply once** in page-specific residue.', '',
71
+ '## 3. Apply per-page residue in page order', '',
72
+ ];
73
+ for (const page of args.pages) {
74
+ if (page.gate === 'failed') {
75
+ const failure = page.failure
76
+ ? `${page.failure.code}: ${page.failure.message}`
77
+ : 'the branch service did not return a failure detail';
78
+ lines.push(`- **${page.id}** (${page.url}) — Skipped: its branch failed (${failure}). No polished target or per-page plan was produced; resolve the branch failure before applying this page.`);
79
+ continue;
80
+ }
81
+ const plan = markdownLink(args.relativePath, page.planPath, 'plan-annotated.md');
82
+ const state = page.gate === 'blocked'
83
+ ? 'Blocked: resolve the gate before applying page-specific changes.'
84
+ : page.gate === 'not-applicable'
85
+ ? 'Target-only: implement only the explicitly specified target changes.'
86
+ : 'Apply only the page-specific residue after tokens and shared shell work.';
87
+ lines.push(`- **${page.id}** (${page.url}) — ${plan}. ${state}`);
88
+ if (args.repo && page.sourceHints.length > 0) {
89
+ lines.push(` - Repository hints: ${page.sourceHints.map((hint) => `\`${hint}\``).join(', ')}.`);
90
+ }
91
+ }
92
+ lines.push('', '## 4. Implement added-element specs with their assets', '');
93
+ lines.push('- In each annotated page plan, implement every `Added` specification exactly where it says to insert it. Copy or reference the declared asset at its listed destination; do not replace it with a placeholder.');
94
+ lines.push('', '## 5. Guardrails', '');
95
+ lines.push('- No invention: preserve the real content, data, copy, and controls shown by each current page.', '- No dead controls: retain behavior and wire every visible interactive control to its existing action.', '- No hardcoded identity: preserve configurable product, account, and route data instead of baking it into components.', '- Keep configurable data configurable: use the existing data and theme boundaries rather than duplicating literals.');
96
+ lines.push('', '## 6. Verify convergence', '');
97
+ lines.push('- Re-shoot every page at its captured viewport after implementation.', `- Apply this \`APPLY.md\`, then run \`12ui improve ${source} --scope site --out-dir <kit> --recheck\` against the kept targets and compare the residual drift before accepting the implementation.`, '- Treat a blocked page or a structural regression as unresolved even if a coverage metric improves.', '');
98
+ return lines.join('\n');
99
+ };
100
+ /**
101
+ * The four free site-stage deliverables. Missing token or diff artifacts are
102
+ * expected for blocked pages and are shown honestly in `pages.md` rather than
103
+ * preventing the rest of the roll-up.
104
+ */
105
+ export const planImproveSiteArtifacts = (args) => {
106
+ const tokens = mergeImproveSiteTokens(args.tokenPatches);
107
+ const sharedShellChanges = detectImproveSiteSharedShell(args.shellChanges);
108
+ const sharedShell = {
109
+ changes: sharedShellChanges,
110
+ markdown: renderImproveSiteSharedShell(sharedShellChanges, args.relativePath),
111
+ };
112
+ return {
113
+ artifacts: {
114
+ files: {
115
+ [IMPROVE_SITE_TOKENS_FILE]: tokens.css,
116
+ [IMPROVE_SITE_SHARED_SHELL_FILE]: sharedShell.markdown,
117
+ [IMPROVE_SITE_PAGES_FILE]: renderImproveSitePages({
118
+ pages: args.pages,
119
+ relativePath: args.relativePath,
120
+ }),
121
+ [IMPROVE_SITE_APPLY_FILE]: renderImproveSiteApply({
122
+ pages: args.pages,
123
+ relativePath: args.relativePath,
124
+ ...(args.repo ? { repo: args.repo } : {}),
125
+ ...(args.sourceUrl ? { sourceUrl: args.sourceUrl } : {}),
126
+ }),
127
+ },
128
+ remove: [],
129
+ },
130
+ pages: args.pages,
131
+ tokens,
132
+ sharedShell,
133
+ };
134
+ };
135
+ //# sourceMappingURL=improve-site-plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"improve-site-plan.js","sourceRoot":"","sources":["../../src/improve-core/improve-site-plan.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,uEAAuE;AAEvE,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,EAC5B,8BAA8B,GAG/B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,sBAAsB,EACtB,wBAAwB,GAGzB,MAAM,0BAA0B,CAAC;AA8ClC,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAoC,EAAE,CAAC,CACrE,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CACrE,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAKnG,MAAM,YAAY,GAAG,CACnB,YAAqC,EACrC,IAAwB,EACxB,KAAa,EACL,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAEhE,8EAA8E;AAC9E,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,IAAwB,EAAwB,EAAE;IAC1F,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,OAAO;QACL,GAAG,CAAC,OAAO,QAAQ,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvF,GAAG,CAAC,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrF,GAAG,CAAC,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,GAAG,CAAC,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,QAA4B,EAAU,EAAE,CAAC,QAAQ,KAAK,SAAS;IACrF,CAAC,CAAC,GAAG;IACL,CAAC,CAAC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AAEtC,MAAM,aAAa,GAAG,CAAC,OAAuC,EAAU,EAAE,CAAC,CACzE,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CACpE,CAAC;AAEF,MAAM,YAAY,GAAG,CACnB,YAAqC,EACrC,IAAyB,EACjB,EAAE;IACV,MAAM,IAAI,GAAG,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;IAC3H,IAAI,CAAC,IAAI,CAAC,iBAAiB;QAAE,OAAO,IAAI,CAAC;IACzC,OAAO,YAAY,CAAC,GAAG,IAAI,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAC7D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAU,CAAC;AAClD,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAU,CAAC;AAElD,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,IAGtC,EAAU,EAAE;IACX,MAAM,KAAK,GAAG;QACZ,SAAS,EAAE,EAAE;QACb,8GAA8G;QAC9G,yEAAyE;KAC1E,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,CAAC,EAAE;YACP,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;YACtB,IAAI,CAAC,IAAI;YACT,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;YAC3B,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC7B,IAAI,CAAC,YAAY,IAAI,GAAG;YACxB,IAAI,CAAC,UAAU,IAAI,GAAG;YACtB,IAAI,CAAC,YAAY,IAAI,GAAG;YACxB,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,iBAAiB,EAAE,cAAc,CAAC;YACvE,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC;YACrC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAChG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACzD,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,IAKtC,EAAU,EAAE;IACX,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,YAAY,CAAC;IACpE,MAAM,KAAK,GAAG;QACZ,+BAA+B,EAAE,EAAE;QACnC,iHAAiH,EAAE,EAAE;QACrH,kDAAkD,EAAE,EAAE;QACtD,6BAA6B,wBAAwB,gGAAgG;QACrJ,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,4CAA4C,IAAI,CAAC,IAAI,2EAA2E,CAAC,CAAC,CAAC,CAAC,CAAC,2FAA2F,CAAC,CAAC;QACnP,EAAE;QACF,uCAAuC,EAAE,EAAE;QAC3C,8BAA8B,8BAA8B,0HAA0H;QACtL,kFAAkF,EAAE,EAAE;QACtF,4CAA4C,EAAE,EAAE;KACjD,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO;gBAC1B,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;gBACjD,CAAC,CAAC,oDAAoD,CAAC;YACzD,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE,OAAO,IAAI,CAAC,GAAG,mCAAmC,OAAO,4GAA4G,CAAC,CAAC;YAChM,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QACjF,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS;YACnC,CAAC,CAAC,kEAAkE;YACpE,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB;gBAC9B,CAAC,CAAC,sEAAsE;gBACxE,CAAC,CAAC,0EAA0E,CAAC;QACjF,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE,OAAO,IAAI,CAAC,GAAG,OAAO,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;QACjE,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC,yBAAyB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnG,CAAC;IACH,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,uDAAuD,EAAE,EAAE,CAAC,CAAC;IAC5E,KAAK,CAAC,IAAI,CAAC,gNAAgN,CAAC,CAAC;IAC7N,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;IACvC,KAAK,CAAC,IAAI,CACR,iGAAiG,EACjG,wGAAwG,EACxG,uHAAuH,EACvH,qHAAqH,CACtH,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,0BAA0B,EAAE,EAAE,CAAC,CAAC;IAC/C,KAAK,CAAC,IAAI,CACR,sEAAsE,EACtE,sDAAsD,MAAM,wIAAwI,EACpM,qGAAqG,EACrG,EAAE,CACH,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,IAOxC,EAA4B,EAAE;IAC7B,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzD,MAAM,kBAAkB,GAAG,4BAA4B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3E,MAAM,WAAW,GAAiC;QAChD,OAAO,EAAE,kBAAkB;QAC3B,QAAQ,EAAE,4BAA4B,CAAC,kBAAkB,EAAE,IAAI,CAAC,YAAY,CAAC;KAC9E,CAAC;IACF,OAAO;QACL,SAAS,EAAE;YACT,KAAK,EAAE;gBACL,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC,GAAG;gBACtC,CAAC,8BAA8B,CAAC,EAAE,WAAW,CAAC,QAAQ;gBACtD,CAAC,uBAAuB,CAAC,EAAE,sBAAsB,CAAC;oBAChD,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,YAAY,EAAE,IAAI,CAAC,YAAY;iBAChC,CAAC;gBACF,CAAC,uBAAuB,CAAC,EAAE,sBAAsB,CAAC;oBAChD,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,YAAY,EAAE,IAAI,CAAC,YAAY;oBAC/B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACzC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACzD,CAAC;aACH;YACD,MAAM,EAAE,EAAE;SACX;QACD,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM;QACN,WAAW;KACZ,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,56 @@
1
+ import type { LayerDelta } from './improve-layerdoc-types.js';
2
+ /**
3
+ * Shared shell detection. The inputs are the strings a host happens to have —
4
+ * a page `diff.json` and its `current.domdoc.json` — so parsing them is policy
5
+ * and reading them is not.
6
+ */
7
+ export type ImproveSiteShellSelectorKind = 'id' | 'testid' | 'class' | 'path';
8
+ export type ImproveSiteShellChange = {
9
+ pageId: string;
10
+ selectorKind: ImproveSiteShellSelectorKind;
11
+ selector: string;
12
+ classSelector?: string;
13
+ tag?: string;
14
+ path?: string;
15
+ classList?: readonly string[];
16
+ content?: string;
17
+ deltas: readonly LayerDelta[];
18
+ impliedPadding?: readonly LayerDelta[];
19
+ planPath?: string;
20
+ };
21
+ export type ImproveSiteSharedShellChange = {
22
+ selectorKind: ImproveSiteShellSelectorKind;
23
+ selector: string;
24
+ content: string;
25
+ pages: string[];
26
+ changes: ImproveSiteShellChange[];
27
+ };
28
+ export type ImproveSiteSharedShellRollup = {
29
+ changes: ImproveSiteSharedShellChange[];
30
+ markdown: string;
31
+ };
32
+ /**
33
+ * Retains only changed, shell-region entries that recur on two or more distinct
34
+ * pages. The signature deliberately includes content so identical selector names
35
+ * do not merge unrelated navigation items.
36
+ */
37
+ export declare const detectImproveSiteSharedShell: (changes: readonly ImproveSiteShellChange[]) => ImproveSiteSharedShellChange[];
38
+ /** Alias matching the artifact name used by the site stage. */
39
+ export declare const findImproveSiteSharedShell: (changes: readonly ImproveSiteShellChange[]) => ImproveSiteSharedShellChange[];
40
+ export declare const renderImproveSiteSharedShell: (changes: readonly ImproveSiteSharedShellChange[], relativePath?: (file: string) => string) => string;
41
+ export type ImproveSiteShellSource = {
42
+ pageId: string;
43
+ /** The page `diff.json` text; absent when that page never emitted one. */
44
+ diffText?: string;
45
+ /** The page `current.domdoc.json` text, which carries the DOM identities. */
46
+ currentDomDocText?: string;
47
+ planPath?: string;
48
+ };
49
+ /**
50
+ * Turns each page's settled plan JSON into shell-change candidates. A page with
51
+ * no diff contributes nothing — that is the normal shape of a blocked or failed
52
+ * page, not an error.
53
+ */
54
+ export declare const parseImproveSiteShellChanges: (sources: readonly ImproveSiteShellSource[]) => ImproveSiteShellChange[];
55
+ export declare const IMPROVE_SITE_SHARED_SHELL_FILE = "shared-shell.md";
56
+ //# sourceMappingURL=improve-site-shell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"improve-site-shell.d.ts","sourceRoot":"","sources":["../../src/improve-core/improve-site-shell.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D;;;;GAIG;AACH,MAAM,MAAM,4BAA4B,GAAG,IAAI,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAE9E,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,4BAA4B,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;IAC9B,cAAc,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,YAAY,EAAE,4BAA4B,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,sBAAsB,EAAE,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,OAAO,EAAE,4BAA4B,EAAE,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAgDF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,GACvC,SAAS,SAAS,sBAAsB,EAAE,KACzC,4BAA4B,EAwB9B,CAAC;AAEF,+DAA+D;AAC/D,eAAO,MAAM,0BAA0B,YA5B5B,SAAS,sBAAsB,EAAE,KACzC,4BAA4B,EA2BuC,CAAC;AAEvE,eAAO,MAAM,4BAA4B,GACvC,SAAS,SAAS,4BAA4B,EAAE,EAChD,eAAc,CAAC,IAAI,EAAE,MAAM,KAAK,MAAuB,KACtD,MAoBF,CAAC;AAGF,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,GACvC,SAAS,SAAS,sBAAsB,EAAE,KACzC,sBAAsB,EAiDvB,CAAC;AAEH,eAAO,MAAM,8BAA8B,oBAAoB,CAAC"}