@astryxdesign/cli 0.6.3 → 0.6.4-canary.0e1fbdb

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 (728) hide show
  1. package/CHANGELOG.md +194 -0
  2. package/README.md +152 -107
  3. package/api/blog/blog.doc.mjs +1 -0
  4. package/api/build/_adapter.d.mts +50 -0
  5. package/api/build/_adapter.mjs +60 -0
  6. package/api/build/build.doc.mjs +22 -10
  7. package/api/build/build.test.mjs +219 -8
  8. package/api/build/build.type.d.mts +91 -2
  9. package/api/build/build.type.mjs +52 -8
  10. package/api/build/help/help.d.mts +12 -5
  11. package/api/build/help/help.mjs +69 -6
  12. package/api/build/kit/kit.d.mts +4 -1
  13. package/api/build/kit/kit.mjs +208 -53
  14. package/api/build/kit/rank.d.mts +44 -0
  15. package/api/build/kit/rank.mjs +432 -0
  16. package/api/build/kit/rank.test.mjs +196 -0
  17. package/api/component/_adapter.d.mts +31 -12
  18. package/api/component/_adapter.mjs +79 -15
  19. package/api/component/component.d.mts +6 -3
  20. package/api/component/component.doc.mjs +49 -19
  21. package/api/component/component.mjs +339 -22
  22. package/api/component/component.test.mjs +38 -0
  23. package/api/component/component.type.d.mts +47 -11
  24. package/api/component/component.type.mjs +76 -24
  25. package/api/component/detail/blocks/blocks.d.mts +2 -1
  26. package/api/component/detail/blocks/blocks.mjs +4 -3
  27. package/api/component/list/list.d.mts +0 -5
  28. package/api/component/list/list.mjs +40 -11
  29. package/api/discover/_adapter.d.mts +114 -6
  30. package/api/discover/_adapter.mjs +372 -17
  31. package/api/discover/_adapter.test.mjs +215 -0
  32. package/api/discover/_catalog-view.d.mts +115 -0
  33. package/api/discover/_catalog-view.mjs +203 -0
  34. package/api/discover/_catalog-view.test.mjs +128 -0
  35. package/api/discover/detail/detail.d.mts +18 -6
  36. package/api/discover/detail/detail.mjs +67 -13
  37. package/api/discover/detail/detail.test.mjs +85 -0
  38. package/api/discover/detail/item/item.d.mts +26 -0
  39. package/api/discover/detail/item/item.mjs +78 -0
  40. package/api/discover/detail/item/item.test.mjs +73 -0
  41. package/api/discover/discover.d.mts +3 -9
  42. package/api/discover/discover.doc.mjs +62 -18
  43. package/api/discover/discover.mjs +220 -36
  44. package/api/discover/discover.test.mjs +11 -2
  45. package/api/discover/discover.type.d.mts +150 -11
  46. package/api/discover/discover.type.mjs +107 -17
  47. package/api/discover/list/list.d.mts +20 -6
  48. package/api/discover/list/list.mjs +45 -12
  49. package/api/discover/list/list.test.mjs +46 -0
  50. package/api/discover/search/search.d.mts +18 -16
  51. package/api/discover/search/search.mjs +102 -56
  52. package/api/discover/search/search.test.mjs +144 -10
  53. package/api/docs/_adapter.d.mts +277 -41
  54. package/api/docs/_adapter.mjs +993 -108
  55. package/api/docs/compiled-topics.test.mjs +78 -0
  56. package/api/docs/detail/detail.mjs +22 -63
  57. package/api/docs/detail/section/section.d.mts +1 -1
  58. package/api/docs/detail/section/section.mjs +54 -19
  59. package/api/docs/detail/section/section.test.mjs +50 -0
  60. package/api/docs/docOverlays.test.mjs +27 -1
  61. package/api/docs/docs.d.mts +10 -3
  62. package/api/docs/docs.doc.mjs +55 -16
  63. package/api/docs/docs.mjs +53 -10
  64. package/api/docs/docs.type.d.mts +221 -5
  65. package/api/docs/docs.type.mjs +153 -11
  66. package/api/docs/index/index.d.mts +18 -0
  67. package/api/docs/index/index.mjs +40 -0
  68. package/api/docs/index/index.test.mjs +62 -0
  69. package/api/docs/list/list.mjs +28 -12
  70. package/api/docs/node/node.d.mts +43 -0
  71. package/api/docs/node/node.mjs +192 -0
  72. package/api/docs/reference-blocks.test.mjs +406 -0
  73. package/api/doctor/doctor.d.mts +104 -1
  74. package/api/doctor/doctor.doc.mjs +18 -8
  75. package/api/doctor/doctor.mjs +635 -7
  76. package/api/doctor/doctor.test.mjs +732 -11
  77. package/api/doctor/doctor.type.d.mts +1 -1
  78. package/api/doctor/doctor.type.mjs +1 -1
  79. package/api/gap-report/gap-report.doc.mjs +27 -14
  80. package/api/hook/_adapter.mjs +19 -5
  81. package/api/hook/hook.doc.mjs +7 -3
  82. package/api/hook/hook.type.d.mts +3 -3
  83. package/api/hook/hook.type.mjs +11 -11
  84. package/api/hook/list/list.d.mts +2 -2
  85. package/api/hook/list/list.mjs +69 -17
  86. package/api/index.d.mts +2 -1
  87. package/api/index.mjs +6 -3
  88. package/api/init/init.doc.mjs +22 -12
  89. package/api/init/init.test.mjs +41 -1
  90. package/api/init/remove/remove.mjs +1 -1
  91. package/api/init/run/run.mjs +20 -10
  92. package/api/integration/add-contribution.component-names.test.mjs +120 -0
  93. package/api/integration/add-contribution.d.mts +2 -1
  94. package/api/integration/add-contribution.mjs +130 -15
  95. package/api/integration/add-contribution.test.mjs +258 -7
  96. package/api/integration/add-helpers.d.mts +5 -2
  97. package/api/integration/add-helpers.mjs +36 -9
  98. package/api/integration/add-theme.mjs +56 -65
  99. package/api/integration/add-theme.test.mjs +139 -21
  100. package/api/integration/authoring-checks.mjs +138 -28
  101. package/api/integration/authoring-checks.test.mjs +179 -7
  102. package/api/integration/authoring-checks.type.mjs +6 -1
  103. package/api/integration/integration-authoring.type.d.mts +3 -1
  104. package/api/integration/integration-authoring.type.mjs +2 -0
  105. package/api/integration/integration-block-exports.test.mjs +10 -6
  106. package/api/integration/integrationAdd.doc.mjs +14 -4
  107. package/api/integration/integrationAddAgentDoc.doc.mjs +1 -0
  108. package/api/integration/integrationAddCodemod.doc.mjs +1 -0
  109. package/api/integration/integrationAddComponent.doc.mjs +2 -1
  110. package/api/integration/integrationAddDoc.doc.mjs +8 -1
  111. package/api/integration/integrationAddTemplate.doc.mjs +1 -0
  112. package/api/integration/integrationAddTheme.doc.mjs +6 -5
  113. package/api/integration/integrationComponentConflicts.doc.mjs +1 -0
  114. package/api/integration/integrationDocConflicts.doc.mjs +2 -1
  115. package/api/integration/integrationPackCheck.doc.mjs +5 -4
  116. package/api/integration/integrationTemplateConflicts.doc.d.mts +3 -0
  117. package/api/integration/integrationTemplateConflicts.doc.mjs +4 -0
  118. package/api/integration/pack-check.lifecycle-output.test.mjs +107 -0
  119. package/api/integration/pack-check.mjs +160 -11
  120. package/api/integration/pack-check.test.mjs +477 -47
  121. package/api/integration/pack-check.type.d.mts +26 -2
  122. package/api/integration/pack-check.type.mjs +15 -2
  123. package/api/integration/summarizeIssues.doc.mjs +1 -0
  124. package/api/integration/template-conflict-compatibility.test.mjs +73 -0
  125. package/api/integration/validate-integration-fixes.test.mjs +1389 -0
  126. package/api/integration/validate-integration.mjs +52 -102
  127. package/api/integration/validate-integration.test.mjs +179 -26
  128. package/api/integration/validate-unread-theme-folders.test.mjs +110 -0
  129. package/api/integration/validateIntegration.doc.mjs +3 -2
  130. package/api/json/assertResponse.doc.mjs +2 -1
  131. package/api/json/envelope-types.test.mjs +76 -0
  132. package/api/json/index.ts +2 -0
  133. package/api/json/isError.doc.mjs +2 -1
  134. package/api/json/parseResponse.doc.mjs +3 -2
  135. package/api/layout/_adapter.mjs +20 -5
  136. package/api/layout/expand/expand.mjs +7 -5
  137. package/api/layout/expand/expand.path-safety.test.mjs +53 -0
  138. package/api/layout/grammar/grammar.mjs +2 -1
  139. package/api/layout/layoutCheck.doc.mjs +1 -0
  140. package/api/layout/layoutExpand.doc.mjs +2 -1
  141. package/api/layout/layoutGrammar.doc.mjs +1 -0
  142. package/api/search/search-return-type.test.mjs +54 -0
  143. package/api/search/search.d.mts +89 -12
  144. package/api/search/search.doc.mjs +8 -2
  145. package/api/search/search.mjs +697 -97
  146. package/api/search/search.type.d.mts +15 -3
  147. package/api/search/search.type.mjs +5 -2
  148. package/api/swizzle/copy/copy.mjs +28 -11
  149. package/api/swizzle/swizzle.doc.mjs +8 -5
  150. package/api/swizzle/swizzle.type.d.mts +2 -2
  151. package/api/swizzle/swizzle.type.mjs +2 -2
  152. package/api/template/copy/copy.mjs +18 -24
  153. package/api/template/copy/copy.test.mjs +26 -0
  154. package/api/template/list/list.mjs +1 -0
  155. package/api/template/table-floating-bulk-actions.test.mjs +66 -0
  156. package/api/template/template-integration.test.mjs +1072 -3
  157. package/api/template/template-suffix.test.mjs +41 -21
  158. package/api/template/template.d.mts +1 -1
  159. package/api/template/template.doc.mjs +32 -9
  160. package/api/template/template.mjs +45 -8
  161. package/api/template/template.type.d.mts +12 -14
  162. package/api/template/template.type.mjs +15 -14
  163. package/api/theme/_adapter.d.mts +2 -3
  164. package/api/theme/_adapter.mjs +4 -5
  165. package/api/theme/add/add.binary.test.mjs +84 -0
  166. package/api/theme/add/add.mjs +31 -22
  167. package/api/theme/add/add.rollback.test.mjs +158 -0
  168. package/api/theme/add/add.staging.test.mjs +83 -0
  169. package/api/theme/add/add.test.mjs +14 -1
  170. package/api/theme/build/build.family.test.mjs +7 -12
  171. package/api/theme/build/build.mjs +140 -59
  172. package/api/theme/build/build.public-component-vars.test.mjs +1 -1
  173. package/api/theme/build/build.receipt-doc.test.mjs +111 -0
  174. package/api/theme/build/build.rollback.test.mjs +148 -0
  175. package/api/theme/build/build.test.mjs +127 -0
  176. package/api/theme/build/font-warning.mjs +3 -3
  177. package/api/theme/build/font-warning.test.mjs +5 -2
  178. package/api/theme/generateTonalPalette.doc.mjs +2 -2
  179. package/api/theme/integration-themes.test.mjs +39 -28
  180. package/api/theme/list/list.test.mjs +19 -20
  181. package/api/theme/listThemes.doc.mjs +6 -5
  182. package/api/theme/palette/generate/generate.mjs +8 -3
  183. package/api/theme/palette/generate/generate.test.mjs +96 -0
  184. package/api/theme/palette/generate/generator.d.mts +10 -13
  185. package/api/theme/palette/generate/generator.mjs +15 -4
  186. package/api/theme/palette/generate/generator.test.mjs +10 -0
  187. package/api/theme/template/template.mjs +11 -2
  188. package/api/theme/template/template.test.mjs +20 -0
  189. package/api/theme/theme.type.d.mts +170 -11
  190. package/api/theme/theme.type.mjs +94 -27
  191. package/api/theme/themeAdd.doc.mjs +12 -12
  192. package/api/theme/themeBuild.doc.mjs +21 -17
  193. package/api/theme/themeList.doc.mjs +6 -3
  194. package/api/theme/themeListAvailable.doc.mjs +6 -3
  195. package/api/theme/themePaletteGenerate.doc.mjs +16 -8
  196. package/api/theme/themeTargets.doc.mjs +4 -2
  197. package/api/theme/themeTemplate.doc.mjs +8 -3
  198. package/api/upgrade/_adapter.d.mts +32 -5
  199. package/api/upgrade/_adapter.mjs +139 -22
  200. package/api/upgrade/list/list.mjs +2 -1
  201. package/api/upgrade/list/list.test.mjs +73 -0
  202. package/api/upgrade/project-context.test.mjs +272 -0
  203. package/api/upgrade/provider-agreement.test.mjs +152 -0
  204. package/api/upgrade/run/files-changed.test.mjs +111 -0
  205. package/api/upgrade/run/run.mjs +358 -59
  206. package/api/upgrade/status/status.mjs +2 -2
  207. package/api/upgrade/upgrade.doc.mjs +32 -23
  208. package/api/upgrade/upgrade.type.d.mts +43 -5
  209. package/api/upgrade/upgrade.type.mjs +29 -13
  210. package/assets/codemods/__tests__/registry.test.mjs +1 -0
  211. package/assets/codemods/__tests__/runner.test.mjs +332 -8
  212. package/assets/codemods/file-count.test.mjs +163 -0
  213. package/assets/codemods/integration-discovery.mjs +48 -4
  214. package/assets/codemods/integration-discovery.test.mjs +73 -0
  215. package/assets/codemods/integration-runner.mjs +59 -7
  216. package/assets/codemods/integration-runner.protection.test.mjs +153 -0
  217. package/assets/codemods/registry.mjs +1 -0
  218. package/assets/codemods/run-codemod.mjs +177 -34
  219. package/assets/codemods/runner.mjs +353 -104
  220. package/assets/codemods/term-log.mjs +32 -8
  221. package/assets/codemods/term-log.test.mjs +19 -1
  222. package/assets/codemods/transform-prop.mjs +109 -0
  223. package/assets/codemods/transform-prop.test.mjs +95 -0
  224. package/assets/codemods/transforms/v0.0.14/__tests__/rename-status-variants.test.mjs +86 -165
  225. package/assets/codemods/transforms/v0.0.14/rename-status-variants.mjs +72 -210
  226. package/assets/codemods/transforms/v0.1.8/__tests__/rename-avatar-size-scale.test.mjs +83 -115
  227. package/assets/codemods/transforms/v0.1.8/rename-avatar-size-scale.mjs +57 -186
  228. package/assets/codemods/transforms/v0.3.0/__tests__/unwrap-authoring-factories.test.mjs +27 -5
  229. package/assets/codemods/transforms/v0.3.0/unwrap-authoring-factories.mjs +20 -5
  230. package/assets/codemods/transforms/v0.6.0/__tests__/next-codemods.test.mjs +47 -0
  231. package/assets/codemods/transforms/v0.6.0/rename-resizable-pixel-bounds.mjs +57 -10
  232. package/assets/codemods/transforms/v0.6.4/__tests__/migrate-native-picker-to-presentation.test.mjs +63 -0
  233. package/assets/codemods/transforms/v0.6.4/__tests__/migrate-theme-catalog-to-descriptors.test.mjs +220 -0
  234. package/assets/codemods/transforms/v0.6.4/index.mjs +31 -0
  235. package/assets/codemods/transforms/v0.6.4/migrate-native-picker-to-presentation.mjs +148 -0
  236. package/assets/codemods/transforms/v0.6.4/migrate-theme-catalog-to-descriptors.mjs +141 -0
  237. package/assets/docs/README.md +12 -1
  238. package/assets/docs/authoring.doc.mjs +14 -0
  239. package/assets/docs/browser-support.doc.mjs +11 -11
  240. package/assets/docs/color.doc.mjs +8 -2
  241. package/assets/docs/elevation.doc.mjs +6 -4
  242. package/assets/docs/getting-started.doc.mjs +6 -17
  243. package/assets/docs/icons.doc.mjs +2 -21
  244. package/assets/docs/illustrations.doc.mjs +7 -15
  245. package/assets/docs/internationalization.doc.mjs +7 -5
  246. package/assets/docs/layout.doc.dense.mjs +132 -84
  247. package/assets/docs/layout.doc.mjs +134 -78
  248. package/assets/docs/migration.doc.mjs +19 -21
  249. package/assets/docs/motion.doc.mjs +16 -3
  250. package/assets/docs/principles.doc.dense.mjs +5 -5
  251. package/assets/docs/principles.doc.mjs +14 -6
  252. package/assets/docs/principles.doc.zh.mjs +6 -6
  253. package/assets/docs/shape.doc.mjs +8 -3
  254. package/assets/docs/spacing.doc.mjs +7 -2
  255. package/assets/docs/styling-libraries.doc.mjs +10 -6
  256. package/assets/docs/styling.doc.mjs +22 -26
  257. package/assets/docs/theme.doc.dense.mjs +58 -18
  258. package/assets/docs/theme.doc.mjs +60 -50
  259. package/assets/docs/theme.doc.zh.mjs +9 -8
  260. package/assets/docs/tokens.doc.dense.mjs +2 -2
  261. package/assets/docs/tokens.doc.mjs +390 -9
  262. package/assets/docs/tokens.doc.zh.mjs +2 -2
  263. package/assets/docs/tree/add-a-component.doc.mjs +75 -0
  264. package/assets/docs/tree/add-a-theme.doc.mjs +85 -0
  265. package/assets/docs/tree/add-a-topic.doc.mjs +144 -0
  266. package/assets/docs/tree/agent-guidance.doc.mjs +138 -0
  267. package/assets/docs/tree/api.doc.mjs +30 -0
  268. package/assets/docs/tree/block-template.doc.mjs +130 -0
  269. package/assets/docs/tree/build-the-template.doc.mjs +28 -0
  270. package/assets/docs/tree/building-blocks.doc.mjs +46 -0
  271. package/assets/docs/tree/check-your-docs.doc.mjs +137 -0
  272. package/assets/docs/tree/checks.doc.mjs +119 -0
  273. package/assets/docs/tree/cli.doc.mjs +23 -0
  274. package/assets/docs/tree/codemods.doc.mjs +147 -0
  275. package/assets/docs/tree/commands.doc.mjs +25 -0
  276. package/assets/docs/tree/component-family.doc.mjs +113 -0
  277. package/assets/docs/tree/component-imports.doc.mjs +69 -0
  278. package/assets/docs/tree/component-lookups.doc.mjs +149 -0
  279. package/assets/docs/tree/components.doc.mjs +23 -0
  280. package/assets/docs/tree/configuration.doc.mjs +23 -0
  281. package/assets/docs/tree/debug-and-gap-reports.doc.mjs +182 -0
  282. package/assets/docs/tree/define-the-theme.doc.mjs +118 -0
  283. package/assets/docs/tree/describe-the-component.doc.mjs +57 -0
  284. package/assets/docs/tree/docs.doc.mjs +21 -0
  285. package/assets/docs/tree/document-the-template.doc.mjs +28 -0
  286. package/assets/docs/tree/document-the-theme.doc.mjs +68 -0
  287. package/assets/docs/tree/export-template-assets.doc.mjs +147 -0
  288. package/assets/docs/tree/extend-or-replace.doc.mjs +103 -0
  289. package/assets/docs/tree/fonts-and-assets.doc.mjs +106 -0
  290. package/assets/docs/tree/generate-a-palette.doc.mjs +66 -0
  291. package/assets/docs/tree/grade-template-with-agent.doc.mjs +105 -0
  292. package/assets/docs/tree/help.doc.mjs +16 -0
  293. package/assets/docs/tree/integrations.doc.mjs +40 -0
  294. package/assets/docs/tree/links.doc.mjs +98 -0
  295. package/assets/docs/tree/package-and-test.doc.mjs +32 -0
  296. package/assets/docs/tree/page-template.doc.mjs +71 -0
  297. package/assets/docs/tree/publishing.doc.mjs +111 -0
  298. package/assets/docs/tree/quick-start.doc.mjs +272 -0
  299. package/assets/docs/tree/replace-a-core-component.doc.mjs +104 -0
  300. package/assets/docs/tree/replace-a-core-template.doc.mjs +172 -0
  301. package/assets/docs/tree/sections-and-placement.doc.mjs +108 -0
  302. package/assets/docs/tree/see-it-in-an-app.doc.mjs +59 -0
  303. package/assets/docs/tree/ship.doc.mjs +16 -0
  304. package/assets/docs/tree/short-and-findable.doc.mjs +108 -0
  305. package/assets/docs/tree/single-component.doc.mjs +165 -0
  306. package/assets/docs/tree/start-a-template.doc.mjs +143 -0
  307. package/assets/docs/tree/subcomponent.doc.mjs +115 -0
  308. package/assets/docs/tree/template-assets.doc.mjs +64 -0
  309. package/assets/docs/tree/template-doc-overview.doc.mjs +109 -0
  310. package/assets/docs/tree/template-fonts.doc.mjs +102 -0
  311. package/assets/docs/tree/template-grading-rubric.doc.mjs +452 -0
  312. package/assets/docs/tree/template-icons.doc.mjs +97 -0
  313. package/assets/docs/tree/template-images-media.doc.mjs +127 -0
  314. package/assets/docs/tree/template-styles.doc.mjs +93 -0
  315. package/assets/docs/tree/templates.doc.mjs +34 -0
  316. package/assets/docs/tree/test-in-an-app.doc.mjs +115 -0
  317. package/assets/docs/tree/test-template-in-app.doc.mjs +128 -0
  318. package/assets/docs/tree/themes.doc.mjs +39 -0
  319. package/assets/docs/tree/troubleshooting.doc.mjs +149 -0
  320. package/assets/docs/tree/upgrading.doc.mjs +103 -0
  321. package/assets/docs/tree/use-a-theme-in-an-app.doc.mjs +51 -0
  322. package/assets/docs/tree/verify-packed-template.doc.mjs +77 -0
  323. package/assets/docs/tree/versioning.doc.mjs +161 -0
  324. package/assets/docs/tree/write-good-templates.doc.mjs +64 -0
  325. package/assets/docs/tree/write-the-template-file.doc.mjs +154 -0
  326. package/assets/docs/typography.doc.mjs +24 -4
  327. package/assets/docs/working-with-ai.doc.mjs +34 -26
  328. package/assets/templates/blocks/components/CheckboxList/CheckboxListSelectAllPattern.doc.mjs +1 -1
  329. package/assets/templates/blocks/components/CheckboxList/CheckboxListSelectAllPattern.tsx +1 -3
  330. package/assets/templates/blocks/components/DateInput/DateInputDateRange.tsx +1 -1
  331. package/assets/templates/blocks/components/InternationalizationProvider/InternationalizationProvider01ShippedLocale.tsx +1 -1
  332. package/assets/templates/blocks/components/Item/ItemDocumentTabs.doc.mjs +14 -0
  333. package/assets/templates/blocks/components/Item/ItemDocumentTabs.tsx +100 -0
  334. package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaInlineRail.doc.mjs +14 -0
  335. package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaInlineRail.tsx +61 -0
  336. package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaOverscrollChaining.doc.mjs +14 -0
  337. package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaOverscrollChaining.tsx +126 -0
  338. package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaShowcase.doc.mjs +15 -0
  339. package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaShowcase.tsx +86 -0
  340. package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaStickyGroupHeaders.doc.mjs +14 -0
  341. package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaStickyGroupHeaders.tsx +99 -0
  342. package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaStickyPassthrough.doc.mjs +14 -0
  343. package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaStickyPassthrough.tsx +122 -0
  344. package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaTwoAxisBoard.doc.mjs +14 -0
  345. package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaTwoAxisBoard.tsx +95 -0
  346. package/assets/templates/blocks/components/Table/TableBulkActionsTable.doc.mjs +14 -0
  347. package/assets/templates/blocks/components/Table/TableBulkActionsTable.tsx +71 -0
  348. package/assets/templates/blocks/components/Table/TableFloatingBulkActionsTable.doc.mjs +19 -0
  349. package/assets/templates/blocks/components/Table/TableFloatingBulkActionsTable.tsx +139 -0
  350. package/assets/templates/blocks/components/TimeInput/TimeInputConstrained.tsx +1 -0
  351. package/assets/templates/blocks/components/Timer/TimerFormats.doc.mjs +14 -0
  352. package/assets/templates/blocks/components/Timer/TimerFormats.tsx +34 -0
  353. package/assets/templates/blocks/components/Timer/TimerInline.doc.mjs +14 -0
  354. package/assets/templates/blocks/components/Timer/TimerInline.tsx +14 -0
  355. package/assets/templates/blocks/components/Timer/TimerShowcase.doc.mjs +13 -0
  356. package/assets/templates/blocks/components/Timer/TimerShowcase.tsx +47 -0
  357. package/assets/templates/blocks/components/Timer/TimerTypography.doc.mjs +14 -0
  358. package/assets/templates/blocks/components/Timer/TimerTypography.tsx +31 -0
  359. package/assets/templates/blocks/components/Toolbar/ToolbarTableFilter.doc.mjs +19 -3
  360. package/assets/templates/blocks/components/Toolbar/ToolbarTableFilter.tsx +383 -65
  361. package/assets/templates/pages/table-tree/page.tsx +1704 -0
  362. package/assets/templates/pages/table-tree/template.doc.mjs +12 -0
  363. package/assets/templates/themes/butter/butterTheme.doc.mjs +11 -0
  364. package/assets/templates/themes/chocolate/chocolateTheme.doc.mjs +11 -0
  365. package/assets/templates/themes/gothic/gothicTheme.doc.mjs +11 -0
  366. package/assets/templates/themes/matcha/matchaTheme.doc.mjs +11 -0
  367. package/assets/templates/themes/neutral/neutralTheme.doc.mjs +11 -0
  368. package/assets/templates/themes/stone/stoneTheme.doc.mjs +11 -0
  369. package/assets/templates/themes/y2k/y2kTheme.doc.mjs +11 -0
  370. package/authoring/_shared/contract.ts +22 -0
  371. package/authoring/codemod/codemod.doc.mjs +7 -2
  372. package/authoring/codemod/parse.d.mts +8 -8
  373. package/authoring/codemod/parse.mjs +8 -6
  374. package/authoring/codemod/type.ts +12 -0
  375. package/authoring/config/config.doc.mjs +11 -3
  376. package/authoring/config/debug-composition.test.mjs +92 -0
  377. package/authoring/config/parse.d.mts +15 -13
  378. package/authoring/config/parse.mjs +27 -8
  379. package/authoring/config/parse.test.mjs +8 -0
  380. package/authoring/config/type.ts +29 -6
  381. package/authoring/debug/debug.doc.d.mts +11 -0
  382. package/authoring/debug/debug.doc.mjs +182 -0
  383. package/authoring/debug/parse.d.mts +8 -8
  384. package/authoring/debug/parse.mjs +3 -3
  385. package/authoring/discover/discover.doc.d.mts +13 -0
  386. package/authoring/discover/discover.doc.mjs +138 -0
  387. package/authoring/discover/parse.d.mts +24 -0
  388. package/authoring/discover/parse.mjs +128 -0
  389. package/authoring/discover/parse.test.mjs +124 -0
  390. package/authoring/discover/type.ts +87 -0
  391. package/authoring/doctypes/_schema.d.mts +792 -24
  392. package/authoring/doctypes/_schema.mjs +549 -39
  393. package/authoring/doctypes/base/graph-fields.doc.d.mts +9 -0
  394. package/authoring/doctypes/base/graph-fields.doc.mjs +64 -0
  395. package/authoring/doctypes/base/type.ts +43 -0
  396. package/authoring/doctypes/command/command.doc.mjs +4 -3
  397. package/authoring/doctypes/command/parse.d.mts +2 -2
  398. package/authoring/doctypes/command/parse.mjs +1 -1
  399. package/authoring/doctypes/command/type.ts +5 -4
  400. package/authoring/doctypes/component/component.doc.mjs +12 -3
  401. package/authoring/doctypes/component/parse.d.mts +2 -2
  402. package/authoring/doctypes/component/parse.mjs +1 -1
  403. package/authoring/doctypes/component/type.ts +14 -5
  404. package/authoring/doctypes/doctypes-new.test.mjs +48 -6
  405. package/authoring/doctypes/enum/enum.doc.mjs +1 -1
  406. package/authoring/doctypes/enum/parse.d.mts +2 -2
  407. package/authoring/doctypes/enum/parse.mjs +1 -1
  408. package/authoring/doctypes/enum/type.ts +4 -2
  409. package/authoring/doctypes/function/function.doc.mjs +7 -2
  410. package/authoring/doctypes/function/parse.d.mts +2 -2
  411. package/authoring/doctypes/function/parse.mjs +1 -1
  412. package/authoring/doctypes/function/type.ts +9 -4
  413. package/authoring/doctypes/hook/hook.doc.mjs +4 -0
  414. package/authoring/doctypes/hook/parse.d.mts +2 -2
  415. package/authoring/doctypes/hook/parse.mjs +1 -1
  416. package/authoring/doctypes/hook/type.ts +5 -4
  417. package/authoring/doctypes/legacy.d.mts +8 -6
  418. package/authoring/doctypes/legacy.mjs +5 -4
  419. package/authoring/doctypes/load-contract.test.mjs +233 -0
  420. package/authoring/doctypes/namespace/namespace.doc.d.mts +9 -0
  421. package/authoring/doctypes/namespace/namespace.doc.mjs +128 -0
  422. package/authoring/doctypes/namespace/parse.d.mts +12 -0
  423. package/authoring/doctypes/namespace/parse.mjs +25 -0
  424. package/authoring/doctypes/namespace/parse.test.mjs +163 -0
  425. package/authoring/doctypes/namespace/type.ts +74 -0
  426. package/authoring/doctypes/parse.d.mts +22 -18
  427. package/authoring/doctypes/parse.mjs +22 -11
  428. package/authoring/doctypes/parse.test.mjs +77 -3
  429. package/authoring/doctypes/reference/parse.d.mts +2 -2
  430. package/authoring/doctypes/reference/parse.mjs +8 -5
  431. package/authoring/doctypes/reference/reference.doc.mjs +55 -6
  432. package/authoring/doctypes/reference/type.ts +75 -7
  433. package/authoring/doctypes/schema/parse.d.mts +2 -2
  434. package/authoring/doctypes/schema/parse.mjs +1 -1
  435. package/authoring/doctypes/schema/schema.doc.mjs +2 -2
  436. package/authoring/doctypes/schema/type.ts +4 -4
  437. package/authoring/doctypes/template/parse.d.mts +94 -1
  438. package/authoring/doctypes/template/parse.mjs +40 -2
  439. package/authoring/doctypes/template/parse.test.mjs +26 -2
  440. package/authoring/doctypes/template/template.doc.mjs +13 -3
  441. package/authoring/doctypes/template/type.ts +13 -2
  442. package/authoring/doctypes/theme/parse.d.mts +35 -0
  443. package/authoring/doctypes/theme/parse.mjs +76 -0
  444. package/authoring/doctypes/theme/theme.doc.d.mts +9 -0
  445. package/authoring/doctypes/theme/theme.doc.mjs +79 -0
  446. package/authoring/doctypes/theme/type.ts +42 -0
  447. package/authoring/doctypes/types.ts +12 -10
  448. package/authoring/gap-report/gap-report.doc.d.mts +12 -0
  449. package/authoring/gap-report/gap-report.doc.mjs +183 -0
  450. package/authoring/gap-report/parse.d.mts +10 -10
  451. package/authoring/gap-report/parse.mjs +6 -6
  452. package/authoring/gap-report/type.ts +1 -1
  453. package/authoring/identity/identity.doc.d.mts +9 -0
  454. package/authoring/identity/identity.doc.mjs +61 -0
  455. package/authoring/identity/type.ts +132 -0
  456. package/authoring/index.d.mts +3 -0
  457. package/authoring/index.d.ts +62 -17
  458. package/authoring/index.mjs +4 -1
  459. package/authoring/integration/integration.doc.mjs +22 -13
  460. package/authoring/integration/parse.d.mts +2 -2
  461. package/authoring/integration/parse.mjs +1 -1
  462. package/authoring/integration/parse.test.mjs +10 -1
  463. package/authoring/integration/schema.d.mts +6 -4
  464. package/authoring/integration/schema.mjs +9 -3
  465. package/authoring/integration/type.ts +19 -8
  466. package/authoring/shadcn/receipt.d.mts +6 -6
  467. package/clients/cli/__tests__/cliManifest.test.ts +27 -29
  468. package/clients/cli/command-load-failure.test.mjs +83 -0
  469. package/clients/cli/commands/blog.doc.mjs +1 -1
  470. package/clients/cli/commands/blog.mjs +23 -8
  471. package/clients/cli/commands/blog.test.mjs +42 -1
  472. package/clients/cli/commands/build-theme.adaptations.test.mjs +100 -1
  473. package/clients/cli/commands/build-theme.ascii-output.test.mjs +161 -0
  474. package/clients/cli/commands/build-theme.flag-docs.test.mjs +110 -0
  475. package/clients/cli/commands/build-theme.mjs +16 -50
  476. package/clients/cli/commands/build-theme.path-safety.test.mjs +86 -1
  477. package/clients/cli/commands/build-theme.variants.test.mjs +76 -0
  478. package/clients/cli/commands/build.doc.mjs +16 -8
  479. package/clients/cli/commands/build.exit-codes-doc.test.mjs +50 -0
  480. package/clients/cli/commands/build.mjs +137 -114
  481. package/clients/cli/commands/build.playbook.test.mjs +75 -0
  482. package/clients/cli/commands/build.text-fields.test.mjs +81 -0
  483. package/clients/cli/commands/component/index.mjs +153 -61
  484. package/clients/cli/commands/component-batch.test.mjs +341 -0
  485. package/clients/cli/commands/component-ownership.test.mjs +92 -3
  486. package/clients/cli/commands/component-package.test.mjs +46 -0
  487. package/clients/cli/commands/component-resolution.test.mjs +21 -0
  488. package/clients/cli/commands/component.doc.mjs +28 -10
  489. package/clients/cli/commands/component.test.mjs +19 -0
  490. package/clients/cli/commands/detail-levels.test.mjs +2 -2
  491. package/clients/cli/commands/discover.broken-integration.test.mjs +52 -5
  492. package/clients/cli/commands/discover.components-flag.test.mjs +97 -0
  493. package/clients/cli/commands/discover.doc.mjs +55 -9
  494. package/clients/cli/commands/discover.mjs +393 -118
  495. package/clients/cli/commands/discover.sources.test.mjs +267 -0
  496. package/clients/cli/commands/discover.text-projection.test.mjs +103 -0
  497. package/clients/cli/commands/docs.doc.mjs +28 -6
  498. package/clients/cli/commands/docs.mjs +295 -38
  499. package/clients/cli/commands/doctor-integration-components.doc.mjs +1 -1
  500. package/clients/cli/commands/doctor-integration-docs.doc.mjs +6 -5
  501. package/clients/cli/commands/doctor-integration-templates.doc.mjs +15 -8
  502. package/clients/cli/commands/doctor-integration-validate.doc.mjs +1 -1
  503. package/clients/cli/commands/doctor-integration.doc.mjs +1 -1
  504. package/clients/cli/commands/doctor-integration.package-json.test.mjs +53 -0
  505. package/clients/cli/commands/doctor-integration.test.mjs +143 -8
  506. package/clients/cli/commands/doctor.doc.mjs +4 -2
  507. package/clients/cli/commands/doctor.mjs +108 -37
  508. package/clients/cli/commands/doctor.test.mjs +42 -0
  509. package/clients/cli/commands/gap-report.doc.mjs +27 -15
  510. package/clients/cli/commands/gap-report.test.mjs +72 -0
  511. package/clients/cli/commands/hook/index.mjs +7 -17
  512. package/clients/cli/commands/hook.doc.mjs +1 -1
  513. package/clients/cli/commands/hook.text-projection.test.mjs +45 -0
  514. package/clients/cli/commands/init.doc.mjs +24 -10
  515. package/clients/cli/commands/init.flag-help.test.mjs +153 -0
  516. package/clients/cli/commands/integration-add.controls.test.mjs +132 -0
  517. package/clients/cli/commands/integration-add.doc.mjs +39 -13
  518. package/clients/cli/commands/integration-authoring.test.mjs +74 -19
  519. package/clients/cli/commands/integration-pack.doc.mjs +6 -10
  520. package/clients/cli/commands/integration-real-world.test.mjs +4 -10
  521. package/clients/cli/commands/integration-verify.doc.mjs +22 -0
  522. package/clients/cli/commands/integration.doc.mjs +5 -5
  523. package/clients/cli/commands/integration.mjs +75 -43
  524. package/clients/cli/commands/interactive-guard.test.mjs +101 -24
  525. package/clients/cli/commands/json-contract.test.mjs +33 -0
  526. package/clients/cli/commands/layout-check.doc.mjs +15 -4
  527. package/clients/cli/commands/layout-expand.doc.mjs +22 -5
  528. package/clients/cli/commands/layout-grammar.doc.mjs +1 -1
  529. package/clients/cli/commands/layout.doc.mjs +3 -3
  530. package/clients/cli/commands/layout.mjs +21 -9
  531. package/clients/cli/commands/layout.path-help.test.mjs +33 -0
  532. package/clients/cli/commands/layout.stdin-cap.test.mjs +47 -0
  533. package/clients/cli/commands/layout.text-fields.test.mjs +39 -0
  534. package/clients/cli/commands/manifest.doc.mjs +2 -2
  535. package/clients/cli/commands/no-prompt-wording.test.mjs +94 -0
  536. package/clients/cli/commands/search.doc.mjs +16 -6
  537. package/clients/cli/commands/search.mjs +49 -11
  538. package/clients/cli/commands/search.test.mjs +92 -0
  539. package/clients/cli/commands/setup-nudge.test.mjs +6 -0
  540. package/clients/cli/commands/swizzle.doc.mjs +4 -3
  541. package/clients/cli/commands/swizzle.path-safety.test.mjs +42 -0
  542. package/clients/cli/commands/template.doc.mjs +53 -14
  543. package/clients/cli/commands/template.flag-help.test.mjs +117 -0
  544. package/clients/cli/commands/template.mjs +4 -91
  545. package/clients/cli/commands/template.path-help.test.mjs +40 -0
  546. package/clients/cli/commands/text-json-parity.test.mjs +725 -0
  547. package/clients/cli/commands/theme-add.doc.mjs +5 -4
  548. package/clients/cli/commands/theme-build.doc.mjs +8 -7
  549. package/clients/cli/commands/theme-list.doc.mjs +2 -2
  550. package/clients/cli/commands/theme-palette-generate.doc.mjs +12 -7
  551. package/clients/cli/commands/theme-palette-generate.test.mjs +19 -0
  552. package/clients/cli/commands/theme-palette.doc.mjs +2 -3
  553. package/clients/cli/commands/theme-targets.behavior.test.mjs +4 -3
  554. package/clients/cli/commands/theme-targets.doc.mjs +3 -3
  555. package/clients/cli/commands/theme-template.behavior.test.mjs +12 -0
  556. package/clients/cli/commands/theme-template.doc.mjs +2 -2
  557. package/clients/cli/commands/theme.doc.mjs +3 -2
  558. package/clients/cli/commands/upgrade.ascii-output.test.mjs +87 -0
  559. package/clients/cli/commands/upgrade.doc.mjs +83 -12
  560. package/clients/cli/commands/upgrade.file-protection.test.mjs +228 -0
  561. package/clients/cli/commands/upgrade.flag-help.test.mjs +188 -0
  562. package/clients/cli/commands/upgrade.hook-output.test.mjs +88 -0
  563. package/clients/cli/commands/upgrade.mjs +29 -7
  564. package/clients/cli/formatters/index.mjs +164 -1
  565. package/clients/cli/formatters/index.test.mjs +97 -0
  566. package/clients/cli/index.mjs +47 -34
  567. package/clients/cli/latest-version-env.test.mjs +50 -0
  568. package/clients/cli/lib/cli-error.test.mjs +7 -0
  569. package/clients/cli/lib/component-format.mjs +9 -9
  570. package/clients/cli/lib/component-format.test.mjs +1 -1
  571. package/clients/cli/lib/define-command.mjs +56 -6
  572. package/clients/cli/lib/define-command.test.mjs +54 -0
  573. package/clients/cli/lib/doc-text-ascii.test.mjs +82 -0
  574. package/clients/cli/lib/exit-codes.test.mjs +113 -0
  575. package/clients/cli/lib/hook-format.mjs +19 -10
  576. package/clients/cli/lib/json-shim.mjs +62 -16
  577. package/clients/cli/lib/json-shim.test.mjs +83 -0
  578. package/clients/cli/lib/manifest.d.ts +2 -0
  579. package/clients/cli/lib/manifest.mjs +53 -6
  580. package/clients/cli/lib/manifest.test.mjs +22 -2
  581. package/clients/cli/lib/parse-error-format.test.mjs +81 -0
  582. package/foundation/agent-docs/agent-docs.d.mts +7 -2
  583. package/foundation/agent-docs/agent-docs.mjs +83 -13
  584. package/foundation/agent-docs/agent-docs.path-safety.test.mjs +266 -4
  585. package/foundation/config/integration-debug.test.mjs +28 -3
  586. package/foundation/config/project-themes.test.mjs +11 -19
  587. package/foundation/config/project.d.mts +20 -11
  588. package/foundation/config/project.mjs +263 -91
  589. package/foundation/config/project.test.mjs +270 -21
  590. package/foundation/discovery/authoring-self-docs.d.mts +87 -0
  591. package/foundation/discovery/authoring-self-docs.mjs +237 -0
  592. package/foundation/discovery/authoring-self-docs.test.mjs +174 -0
  593. package/foundation/discovery/authoring-surface.d.mts +74 -0
  594. package/foundation/discovery/authoring-surface.mjs +525 -0
  595. package/foundation/discovery/authoring-surface.test.mjs +392 -0
  596. package/foundation/discovery/cli-self-docs.d.mts +119 -0
  597. package/foundation/discovery/cli-self-docs.mjs +504 -0
  598. package/foundation/discovery/cli-self-docs.test.mjs +395 -0
  599. package/foundation/discovery/component-discovery.d.mts +39 -1
  600. package/foundation/discovery/component-discovery.mjs +50 -1
  601. package/foundation/discovery/component-loader.d.mts +35 -38
  602. package/foundation/discovery/component-loader.mjs +53 -222
  603. package/foundation/discovery/docs-discovery.d.mts +119 -11
  604. package/foundation/discovery/docs-discovery.mjs +427 -108
  605. package/foundation/discovery/docs-discovery.test.mjs +386 -20
  606. package/foundation/discovery/docs-output-budget.d.mts +28 -0
  607. package/foundation/discovery/docs-output-budget.mjs +50 -0
  608. package/foundation/discovery/docs-section-key.d.mts +116 -0
  609. package/foundation/discovery/docs-section-key.mjs +322 -0
  610. package/foundation/discovery/docs-section-key.test.mjs +246 -0
  611. package/foundation/discovery/template-adapter.d.mts +113 -11
  612. package/foundation/discovery/template-adapter.fixture-refs.test.mjs +248 -0
  613. package/foundation/discovery/template-adapter.integration-isolation.test.mjs +94 -0
  614. package/foundation/discovery/template-adapter.mjs +774 -83
  615. package/foundation/discovery/template-adapter.test.mjs +57 -0
  616. package/foundation/discovery/template-conflict-release.d.mts +13 -0
  617. package/foundation/discovery/template-conflict-release.mjs +40 -0
  618. package/foundation/discovery/template-conflict-release.test.mjs +40 -0
  619. package/foundation/discovery/theme-discovery.d.mts +67 -7
  620. package/foundation/discovery/theme-discovery.mjs +916 -186
  621. package/foundation/discovery/theme-discovery.test.mjs +613 -219
  622. package/foundation/discovery/theming-targets.test.mjs +4 -0
  623. package/foundation/doc-compiler/bundle.d.mts +47 -0
  624. package/foundation/doc-compiler/bundle.mjs +278 -0
  625. package/foundation/doc-compiler/bundle.test.mjs +266 -0
  626. package/foundation/doc-compiler/compile.d.mts +343 -0
  627. package/foundation/doc-compiler/compile.mjs +558 -0
  628. package/foundation/doc-compiler/diagnostics.d.mts +126 -0
  629. package/foundation/doc-compiler/diagnostics.mjs +305 -0
  630. package/foundation/doc-compiler/doc-compiler.test.mjs +714 -0
  631. package/foundation/doc-compiler/doc-loads.test.mjs +1643 -0
  632. package/foundation/doc-compiler/import.d.mts +24 -0
  633. package/foundation/doc-compiler/import.mjs +59 -0
  634. package/foundation/doc-compiler/inputs.d.mts +102 -0
  635. package/foundation/doc-compiler/inputs.mjs +291 -0
  636. package/foundation/doc-compiler/inputs.test.mjs +298 -0
  637. package/foundation/doc-compiler/ir.d.mts +22 -0
  638. package/foundation/doc-compiler/ir.mjs +471 -0
  639. package/foundation/doc-compiler/lenses.d.mts +36 -0
  640. package/foundation/doc-compiler/lenses.mjs +173 -0
  641. package/foundation/doc-compiler/links.d.mts +162 -0
  642. package/foundation/doc-compiler/links.mjs +294 -0
  643. package/foundation/doc-compiler/links.test.mjs +192 -0
  644. package/foundation/doc-compiler/lower-doc.test.mjs +495 -0
  645. package/foundation/doc-compiler/overlays.d.mts +37 -0
  646. package/foundation/doc-compiler/overlays.mjs +206 -0
  647. package/foundation/doc-compiler/parse-readable.d.mts +9 -0
  648. package/foundation/doc-compiler/parse-readable.mjs +29 -0
  649. package/foundation/doc-compiler/read.d.mts +127 -0
  650. package/foundation/doc-compiler/read.mjs +325 -0
  651. package/foundation/doc-compiler/read.test.mjs +313 -0
  652. package/foundation/doc-compiler/source.d.mts +33 -0
  653. package/foundation/doc-compiler/source.mjs +128 -0
  654. package/foundation/doc-compiler/tree.d.mts +292 -0
  655. package/foundation/doc-compiler/tree.mjs +881 -0
  656. package/foundation/fs/file-protection.d.mts +33 -0
  657. package/foundation/fs/file-protection.mjs +825 -0
  658. package/foundation/fs/file-protection.test.mjs +250 -0
  659. package/foundation/fs/module-loader.d.mts +1 -0
  660. package/foundation/fs/module-loader.mjs +50 -1
  661. package/foundation/fs/module-loader.stdout.test.mjs +332 -0
  662. package/foundation/fs/path-safety.d.mts +3 -2
  663. package/foundation/fs/path-safety.mjs +49 -19
  664. package/foundation/fs/path-safety.test.mjs +50 -0
  665. package/foundation/fs/publish-file-hardlink-unavailable.test.mjs +129 -94
  666. package/foundation/identity/provider-identity.d.mts +90 -0
  667. package/foundation/identity/provider-identity.mjs +320 -0
  668. package/foundation/identity/provider-identity.test.mjs +254 -0
  669. package/foundation/identity/providers.d.mts +7 -0
  670. package/foundation/identity/providers.mjs +16 -0
  671. package/foundation/integrations/autolink.d.mts +58 -1
  672. package/foundation/integrations/autolink.mjs +143 -45
  673. package/foundation/integrations/autolink.test.mjs +1 -1
  674. package/foundation/integrations/cli-requirement.d.mts +65 -0
  675. package/foundation/integrations/cli-requirement.mjs +189 -0
  676. package/foundation/integrations/cli-requirement.test.mjs +89 -0
  677. package/foundation/integrations/contribution-fixes.d.mts +145 -0
  678. package/foundation/integrations/contribution-fixes.mjs +1284 -0
  679. package/foundation/integrations/contribution-inventory.d.mts +3 -2
  680. package/foundation/integrations/contribution-inventory.mjs +28 -25
  681. package/foundation/integrations/contribution-inventory.test.mjs +86 -27
  682. package/foundation/integrations/integration-warnings.d.mts +9 -2
  683. package/foundation/integrations/integration-warnings.mjs +52 -21
  684. package/foundation/integrations/integration-warnings.test.mjs +74 -1
  685. package/foundation/integrations/integrations.d.mts +63 -3
  686. package/foundation/integrations/integrations.mjs +122 -9
  687. package/foundation/integrations/integrations.test.mjs +415 -1
  688. package/foundation/integrations/provider-conflicts.test.mjs +125 -0
  689. package/foundation/integrations/provider-ledger.test.mjs +275 -0
  690. package/foundation/integrations/provider-resolution.d.mts +152 -0
  691. package/foundation/integrations/provider-resolution.mjs +576 -0
  692. package/foundation/integrations/provider-resolution.test.mjs +369 -0
  693. package/foundation/integrations/theme-descriptor.d.mts +8 -0
  694. package/foundation/integrations/theme-descriptor.mjs +44 -0
  695. package/foundation/integrations/validate-contributions.d.mts +2 -0
  696. package/foundation/integrations/validate-contributions.mjs +131 -29
  697. package/foundation/response/base.d.ts +8 -4
  698. package/foundation/response/batch.type.d.mts +33 -0
  699. package/foundation/response/batch.type.mjs +34 -0
  700. package/foundation/response/error-codes.d.mts +3 -1
  701. package/foundation/response/error-codes.d.ts +2 -0
  702. package/foundation/response/error-codes.doc.mjs +19 -12
  703. package/foundation/response/error-codes.mjs +8 -2
  704. package/foundation/response/error-codes.test.mjs +166 -14
  705. package/foundation/response/json-contract.test.mjs +57 -17
  706. package/foundation/response/json.d.mts +4 -2
  707. package/foundation/response/json.mjs +8 -10
  708. package/foundation/response/response-types.doc.d.mts +7 -2
  709. package/foundation/response/response-types.doc.mjs +69 -25
  710. package/foundation/response/response-types.doc.test.mjs +181 -0
  711. package/foundation/response/response.doc.mjs +12 -11
  712. package/foundation/text/string-utils.d.mts +8 -0
  713. package/foundation/text/string-utils.mjs +40 -10
  714. package/foundation/xle/expand.d.mts +2 -0
  715. package/foundation/xle/expand.mjs +4 -3
  716. package/foundation/xle/expand.test.mjs +54 -0
  717. package/foundation/xle/xle.test.mjs +13 -0
  718. package/package.json +10 -11
  719. package/api/docs/docs.test.mjs +0 -83
  720. package/api/docs/integrationDocs.test.mjs +0 -208
  721. package/api/search/search.test.mjs +0 -389
  722. package/assets/docs/cli-integrations.doc.mjs +0 -367
  723. package/assets/templates/themes/manifest.json +0 -95
  724. package/clients/cli/commands/docs.test.mjs +0 -102
  725. package/clients/cli/lib/update-check.mjs +0 -83
  726. package/clients/cli/lib/update-check.test.mjs +0 -137
  727. package/clients/cli/update-hint-commands.test.mjs +0 -54
  728. package/foundation/agent-docs/agent-docs.test.mjs +0 -1141
@@ -1,18 +1,81 @@
1
1
  // Copyright (c) Meta Platforms, Inc. and affiliates.
2
2
 
3
3
  /**
4
- * @file build.help leaf — the "how to build a page" playbook signal.
4
+ * @file build.help leaf — the "how to build a page" playbook.
5
5
  *
6
- * `build` with no query returns this envelope: a pure marker that the command
7
- * renderer expands into the workflow playbook prose. It carries no data beyond
8
- * `playbook: true`, so the JSON shape stays environment-agnostic and stable.
6
+ * `build` with no query returns this envelope. The playbook is data — steps,
7
+ * rules, and related lookups — so a `--json` or programmatic caller gets the
8
+ * same guidance the terminal shows. Commands are bare subcommands with no
9
+ * package-manager prefix, which keeps the JSON environment-agnostic; the CLI
10
+ * renders each one with the caller's invocation, as it does build.kit's
11
+ * `hint.commands`.
12
+ *
13
+ * The workflow starts every page from a template, because a template already
14
+ * has the frame, spacing, and section rhythm that a page composed from
15
+ * components has to rediscover.
9
16
  */
10
17
 
11
18
  /**
12
- * The page-building playbook signal (emitted when `build` runs with no query).
19
+ * The page-building playbook (emitted when `build` runs with no query).
13
20
  *
14
21
  * @returns {import('../build.type.mjs').BuildHelpResponse}
15
22
  */
16
23
  export function buildHelp() {
17
- return {type: 'build.help', data: {playbook: true}};
24
+ return {
25
+ type: 'build.help',
26
+ data: {
27
+ playbook: true,
28
+ title: 'How to build a page with Astryx',
29
+ steps: [
30
+ {
31
+ title: 'Find the page template to start from',
32
+ commands: [{command: 'build "<what you\'re building>"'}],
33
+ returns:
34
+ 'the [page] template to start from (always one: the closest match, or the app shell when nothing matches), the next two templates, and the [block]s and [component]s for the parts it lacks',
35
+ },
36
+ {
37
+ title: 'Scaffold that template into your project',
38
+ commands: [
39
+ {
40
+ command: 'template <name> <path>',
41
+ purpose: 'write the page template to <path>',
42
+ },
43
+ ],
44
+ },
45
+ {
46
+ title: 'Adapt it: keep its frame and spacing, replace its content',
47
+ commands: [
48
+ {
49
+ command: 'template <BlockName>',
50
+ purpose:
51
+ 'print a block to put inside a section, for a part the template lacks',
52
+ },
53
+ {
54
+ command: 'component <Name>',
55
+ purpose: 'read props before you change a component',
56
+ },
57
+ ],
58
+ },
59
+ ],
60
+ rules: [
61
+ 'Start every page from a page template. Never lay out a page from scratch.',
62
+ 'Changing a page you already have? Keep it. Add blocks and components inside its sections.',
63
+ "Keep the template's page frame, gap, and padding values. Replace its data, copy, and sections.",
64
+ 'No <div>/raw HTML for layout — use VStack/HStack/Grid/Stack/Card etc.',
65
+ 'No style={{}} — use component props, and design tokens for values.',
66
+ 'Wrap the app in <Theme theme={...}> and import core reset.css + astryx.css.',
67
+ ],
68
+ related: [
69
+ {
70
+ command: 'template --list --type page',
71
+ purpose: 'every page template',
72
+ },
73
+ {command: 'docs tokens', purpose: 'the design tokens'},
74
+ {
75
+ command: 'search <query>',
76
+ purpose: 'a neutral lookup of any component, doc, or template',
77
+ },
78
+ ],
79
+ },
80
+ };
18
81
  }
@@ -2,7 +2,7 @@
2
2
  // DO NOT EDIT — run `pnpm sync:api-types` to regenerate.
3
3
 
4
4
  /**
5
- * The grouped composition kit for what you're building.
5
+ * The page template to start from, and the kit around it.
6
6
  *
7
7
  * @param {string} query what you're building (e.g. "analytics dashboard")
8
8
  * @param {{cwd?: string, type?: import('../../search/search.type.mjs').SearchDomain, limit?: number}} [options]
@@ -13,3 +13,6 @@ export function buildKit(query: string, options?: {
13
13
  type?: import("../../search/search.type.mjs").SearchDomain;
14
14
  limit?: number;
15
15
  }): Promise<import("../build.type.mjs").BuildKitResponse>;
16
+ export type SearchResultEntry = import("../../search/search.type.mjs").SearchResultEntry;
17
+ export type BuildStart = import("../build.type.mjs").BuildStart;
18
+ export type PageTemplate = import("../_adapter.mjs").PageTemplate;
@@ -1,44 +1,60 @@
1
1
  // Copyright (c) Meta Platforms, Inc. and affiliates.
2
2
 
3
3
  /**
4
- * @file build.kit leaf — the grouped composition kit and raw match count.
4
+ * @file build.kit leaf — the page template to start from, and the kit around it.
5
5
  *
6
- * Runs the unified search for the query and groups the results into a
7
- * composition KIT: the closest page templates, the blocks that cover parts,
8
- * and the domain components to fill gaps, plus the always-on frame + foundation.
6
+ * Every kit names a page template to START from: the page the page ranker
7
+ * (rank.mjs) puts first when it has the evidence to lead, else the app shell.
8
+ * The ranker is the only thing that picks the start, so one noisy signal —
9
+ * search matching "site" to a gallery's "side" — cannot choose the page. A
10
+ * template carries the page frame, the spacing, and the section rhythm; a page
11
+ * composed from components carries none of that, so the kit never recommends
12
+ * composing from scratch while a template exists. Next to the start it names
13
+ * the ranker's next two templates, then groups the unified search into the
14
+ * blocks that cover parts and the domain components to fill gaps, plus the
15
+ * always-on frame + foundation names. `pages` and `directMatch` keep search's
16
+ * own view for callers that read them.
9
17
  *
10
18
  * The kit carries RAW `SearchResultEntry` objects and static name arrays only —
11
19
  * never pre-formatted command strings. All CLI prefixing (formatCliCommand /
12
20
  * getCliInvocation) and the section prose live in the command renderer, so the
13
21
  * JSON shape stays package-manager-agnostic and stable across environments.
14
22
  *
15
- * The one adjustment it makes is on a page's `command`: when the top page is
16
- * not a direct match the kit appends `--skeleton`, so the field agrees with
17
- * the recommendation the kit itself computed. That is still not prefixing —
23
+ * Two commands are the kit's own: `start.command`, the scaffold (`astryx
24
+ * template <id> --type page <path>`, with `<path>` a placeholder), and the `--skeleton`
25
+ * a page entry carries when it is not a direct match, so a loose page reads
26
+ * as a layout preview rather than the thing to build. Neither is prefixing —
18
27
  * the invocation stays the renderer's job.
19
28
  */
20
29
 
21
30
  import {search} from '../../search/search.mjs';
31
+ import {findCoreDir} from '../../../foundation/fs/paths.mjs';
32
+ import {AstryxError} from '../../error.mjs';
33
+ import {ERROR_CODES} from '../../../foundation/response/error-codes.mjs';
22
34
  import {getResultCoverage} from '../../search/coverage.mjs';
35
+ import {loadPageTemplates} from '../_adapter.mjs';
36
+ import {pickAlternatives, pickStart, rankPages} from './rank.mjs';
23
37
 
24
38
  /** A page at/above this score is a confident direct match. */
25
39
  const PAGE_DIRECT = 95;
26
- /** Below this a page is too weak to offer even as a layout reference. */
40
+ /** Below this a page is too weak to offer at all. */
27
41
  const PAGE_FLOOR = 50;
28
- /** Below this a block/domain-component match is incidental noise. */
29
- const DOMAIN_FLOOR = 55;
30
42
  /**
31
- * How much of a multi-word query a result must cover to be offered as a PAGE.
32
- *
33
- * Score alone cannot carry this. A page's keywords include every component its
34
- * source renders, so `build "actionable warning banner"` scored `login`,
35
- * `contact-form` and `documentation-design` at 95 apiece — an exact keyword hit
36
- * (90) on "banner" alone, plus the coverage garnish, lands exactly on
37
- * PAGE_DIRECT. Three pages that are not warnings, presented as a direct match,
38
- * because each happens to render a Banner somewhere.
43
+ * Below this a block/domain-component match is incidental noise. A single
44
+ * description word in a multi-word idea scores 50 plus at most 7.5 of coverage
45
+ * garnish, so it stays below; a name or keyword hit clears it. `build "weekly
46
+ * brief"` used to offer Toast, Popover and TextInput because their
47
+ * descriptions say "brief".
48
+ */
49
+ const DOMAIN_FLOOR = 60;
50
+ /**
51
+ * How much of a multi-word query a page must cover to be offered on breadth.
39
52
  *
40
- * Coverage has to gate rather than garnish: matching one of three concepts is
41
- * not the same claim as matching three.
53
+ * Score alone cannot carry this. A page's derived keywords include every
54
+ * component its source renders, so `build "actionable warning banner"` once
55
+ * scored `login`, `contact-form` and `documentation-design` at 95 apiece — an
56
+ * exact hit on "banner" alone, plus the coverage garnish. Matching one of
57
+ * three concepts is not the same claim as matching three.
42
58
  */
43
59
  const PAGE_COVERAGE = 0.5;
44
60
  /**
@@ -50,12 +66,21 @@ const PAGE_COVERAGE = 0.5;
50
66
  * Astryx contains, which is exactly the failure `build` exists to prevent.
51
67
  */
52
68
  const THIN_KIT = 3;
69
+ /**
70
+ * Where a page starts when no page template matched: the first of these the
71
+ * project can scaffold. A top nav over empty, full-width content is the least
72
+ * opinionated frame that still has navigation; `blank` is the floor, with no
73
+ * chrome at all. Either one still hands the reader a page frame and its
74
+ * padding, which composing from components does not.
75
+ */
76
+ const FALLBACK_STARTS = ['shell-top-nav', 'blank'];
53
77
 
54
78
  /**
55
79
  * Always-surfaced primitives. Every page needs a shell + layout/typography/
56
80
  * action atoms, but these never keyword-match an idea ("dashboard" != "Stack"),
57
81
  * so search alone never returns them. Kept here (not the renderer) because they
58
82
  * are ALSO used to exclude these names from the idea-specific `domain` group.
83
+ * Every page template already uses them.
59
84
  */
60
85
  const FRAME = ['AppShell', 'TopNav', 'SideNav', 'Layout'];
61
86
  const FOUNDATION = [
@@ -75,7 +100,90 @@ const FOUNDATION = [
75
100
  const ALWAYS = new Set([...FRAME, ...FOUNDATION]);
76
101
 
77
102
  /**
78
- * The grouped composition kit for what you're building.
103
+ * @typedef {import('../../search/search.type.mjs').SearchResultEntry} SearchResultEntry
104
+ * @typedef {import('../build.type.mjs').BuildStart} BuildStart
105
+ * @typedef {import('../_adapter.mjs').PageTemplate} PageTemplate
106
+ */
107
+
108
+ /**
109
+ * A page template as the kit names it: the command that selects exactly that
110
+ * template, scaffolding into `<path>`, a placeholder for the file or folder to
111
+ * write it to.
112
+ * @param {PageTemplate} t
113
+ */
114
+ const asTemplate = t => ({
115
+ name: t.name,
116
+ displayName: t.displayName,
117
+ description: t.description,
118
+ command: `${t.command} <path>`,
119
+ });
120
+
121
+ /**
122
+ * The template to start from: the ready page the ranker puts first when it
123
+ * has the evidence to lead, else the first fallback shell the project can
124
+ * scaffold. Null only when the project has no page template to offer at all.
125
+ *
126
+ * `direct` means two independent signals agree: the ranker's pick is also
127
+ * search's direct match. The ranker sees only ready templates, so a template
128
+ * still marked not ready is never the start; when search matched one directly
129
+ * the reason names it, so the reader knows why the kit starts elsewhere.
130
+ *
131
+ * @param {import('./rank.mjs').RankedPage[]} ranked
132
+ * @param {SearchResultEntry[]} pages
133
+ * @param {boolean} directMatch
134
+ * @param {PageTemplate[]} catalog
135
+ * @returns {Omit<BuildStart, 'alternatives'> | null}
136
+ */
137
+ function chooseStart(ranked, pages, directMatch, catalog) {
138
+ const direct = directMatch ? pages[0].name : null;
139
+ const unready =
140
+ direct && !catalog.some(t => t.name === direct) ? direct : null;
141
+ // The reason never denies a match the same response reports: a direct
142
+ // match the ranker outweighed is named, and so are the loose page matches
143
+ // search listed when the kit falls back to the shell.
144
+ const loose = pages.map(p => `\`${p.name}\``).join(', ');
145
+ const pick = pickStart(ranked);
146
+ const closest = pick && catalog.find(t => t.name === pick.name);
147
+ if (closest) {
148
+ const agrees = closest.name === direct;
149
+ return {
150
+ ...asTemplate(closest),
151
+ basis: agrees ? 'direct' : 'closest',
152
+ reason: agrees
153
+ ? 'Matches the idea.'
154
+ : unready
155
+ ? `\`${unready}\` matches but is not ready yet; this is the closest ready template.`
156
+ : direct
157
+ ? `Search matched \`${direct}\` by name, but this template fits more of the idea.`
158
+ : 'The closest template; none is exactly this page.',
159
+ };
160
+ }
161
+ for (const id of FALLBACK_STARTS) {
162
+ const shell = catalog.find(t => t.name === id);
163
+ if (shell) {
164
+ // The shell can also be the ranker's best guess without the evidence to
165
+ // lead ("horizontal site navigation"); say so rather than "no match".
166
+ const nearest = ranked[0]?.name === shell.name && ranked[0].hits > 0;
167
+ return {
168
+ ...asTemplate(shell),
169
+ basis: 'fallback',
170
+ reason: unready
171
+ ? `\`${unready}\` matches but is not ready yet, so start from the app shell.`
172
+ : direct
173
+ ? `Search matched \`${direct}\` by name, but too little of the idea fits it, so start from the app shell.`
174
+ : nearest
175
+ ? 'No template is a clear match; the app shell is the closest.'
176
+ : loose
177
+ ? `Search matched ${loose} only loosely, so start from the app shell.`
178
+ : 'No template matched, so start from the app shell.',
179
+ };
180
+ }
181
+ }
182
+ return null;
183
+ }
184
+
185
+ /**
186
+ * The page template to start from, and the kit around it.
79
187
  *
80
188
  * @param {string} query what you're building (e.g. "analytics dashboard")
81
189
  * @param {{cwd?: string, type?: import('../../search/search.type.mjs').SearchDomain, limit?: number}} [options]
@@ -83,12 +191,30 @@ const ALWAYS = new Set([...FRAME, ...FOUNDATION]);
83
191
  */
84
192
  export async function buildKit(query, options = {}) {
85
193
  const {cwd = process.cwd(), type, limit = 60} = options;
194
+ // A kit is built from Core's components, hooks, and templates. An open
195
+ // search without core covers the docs alone, so the kit asks for core here.
196
+ if (type !== 'doc' && !findCoreDir(cwd)) {
197
+ throw new AstryxError(
198
+ 'Could not find @astryxdesign/core package',
199
+ undefined,
200
+ ERROR_CODES.ERR_CORE_NOT_FOUND,
201
+ );
202
+ }
86
203
  // search()'s JSDoc @returns widens results to object[]; the SearchResponse
87
204
  // shape is the contract (api/search/search.type.mjs). Cast locally rather than
88
205
  // tightening the search @returns (a separate follow-up).
89
206
  const result =
90
207
  /** @type {import('../../search/search.type.mjs').SearchResponse} */ (
91
- await search(query, {cwd, type, limit})
208
+ await search(query, {
209
+ cwd,
210
+ type,
211
+ // Search wider than the surfaced kit so a flood of doc matches cannot
212
+ // bury the page templates past the cutoff; the caller's `limit` still
213
+ // caps the kit below. A non-positive or non-integer limit is passed
214
+ // through unchanged so search rejects it (ERR_INVALID_ARGUMENT).
215
+ limit:
216
+ Number.isInteger(limit) && limit > 0 ? Math.max(limit, 200) : limit,
217
+ })
92
218
  );
93
219
  const results = result.data.results;
94
220
  // The TOTAL number of matches, not the number that survived `limit`. The kit
@@ -98,7 +224,7 @@ export async function buildKit(query, options = {}) {
98
224
  const matchCount = result.data.matchCount;
99
225
 
100
226
  /**
101
- * Did this result answer enough of the query to stand as a page?
227
+ * Did this result answer enough of the query to stand as a page on breadth?
102
228
  * Single-concept queries have nothing to cover, so they always pass. Coverage
103
229
  * stays in a module-private WeakMap and never enters public search/build JSON.
104
230
  * @param {object} r
@@ -110,7 +236,7 @@ export async function buildKit(query, options = {}) {
110
236
  return (coverage?.matched ?? 0) / total >= PAGE_COVERAGE;
111
237
  };
112
238
 
113
- const pages = results
239
+ const matchedPages = results
114
240
  .filter(
115
241
  r =>
116
242
  r.domain === 'template' &&
@@ -135,32 +261,60 @@ export async function buildKit(query, options = {}) {
135
261
  !ALWAYS.has(r.name),
136
262
  )
137
263
  .slice(0, 6);
138
- const directMatch = pages.length > 0 && pages[0].score >= PAGE_DIRECT;
264
+ const directMatch =
265
+ matchedPages.length > 0 && matchedPages[0].score >= PAGE_DIRECT;
139
266
 
140
267
  /**
141
- * On a loose match, recommend reading the layout rather than scaffolding it.
142
- *
143
- * A page entry's `command` is what a caller runs next, and it was always the
144
- * scaffold command — `template <name>` — even when the kit had just decided
145
- * the top page was NOT a direct match. The renderer already says the right
146
- * thing to a human in that case: RECOMMENDED START prints
147
- * `template <name> --skeleton` and the PAGE TEMPLATES heading reads "use as
148
- * a layout reference". But prose is not what a program reads. A JSON caller
149
- * takes `command` and gets the scaffold, so the two audiences were given
150
- * opposite advice from the same kit.
151
- *
152
- * That matters most for the caller least able to notice. `template <name>`
153
- * emits the whole page, and an agent handed a full template it did not quite
154
- * ask for tends to adapt it anyway — which is how a request for one thing
155
- * comes back as a competent version of another. `--skeleton` gives the
156
- * layout without the invitation.
157
- *
158
- * Copied rather than mutated: these entries come from `search()` and are not
159
- * this function's to modify.
268
+ * On a loose match, a page entry's `command` previews the layout rather
269
+ * than printing the whole template: `--skeleton` gives the shape without
270
+ * presenting the page as the thing to build. The recommendation itself is
271
+ * `start`, which always scaffolds. Copied rather than mutated: these entries
272
+ * come from `search()` and are not this function's to modify.
160
273
  */
161
- const recommendedPages = directMatch
162
- ? pages
163
- : pages.map(page => ({...page, command: `${page.command} --skeleton`}));
274
+ const pages = directMatch
275
+ ? matchedPages
276
+ : matchedPages.map(page => ({
277
+ ...page,
278
+ command: `${page.command} --skeleton`,
279
+ }));
280
+
281
+ // The caller's `limit` caps the surfaced kit, even though the search above
282
+ // ran wider to find templates that a flood of doc matches would otherwise
283
+ // bury past the cutoff. Keep pages first, then blocks, then components.
284
+ let budget = limit;
285
+ /**
286
+ * @template T
287
+ * @param {T[]} arr
288
+ * @returns {T[]}
289
+ */
290
+ const toLimit = arr => {
291
+ const out = arr.slice(0, Math.max(0, budget));
292
+ budget -= out.length;
293
+ return out;
294
+ };
295
+ const pagesKept = toLimit(pages);
296
+ const blocksKept = toLimit(blocks);
297
+ const domainKept = toLimit(domain);
298
+
299
+ // A kit narrowed to components or hooks has no page to start from; every
300
+ // other kit does, so the reader is never left to compose a page from scratch.
301
+ const wantsPages = !type || type === 'template';
302
+ const catalog = wantsPages ? await loadPageTemplates(cwd) : [];
303
+ const ranked = wantsPages ? rankPages(query, catalog) : [];
304
+ const chosen = wantsPages
305
+ ? chooseStart(ranked, matchedPages, directMatch, catalog)
306
+ : null;
307
+ // Name the ranker's next two templates beside the start: the reader judges
308
+ // meaning better than keywords do, and an acceptable template is in these
309
+ // three far more often than it is the start alone.
310
+ /** @type {BuildStart | null} */
311
+ const start = chosen && {
312
+ ...chosen,
313
+ alternatives: pickAlternatives(ranked, chosen.name).flatMap(r => {
314
+ const t = catalog.find(c => c.name === r.name);
315
+ return t ? [asTemplate(t)] : [];
316
+ }),
317
+ };
164
318
 
165
319
  // What to try when the kit comes back thin. Keyword search over a design
166
320
  // system misses in a predictable way — the reader's words and the package's
@@ -173,7 +327,7 @@ export async function buildKit(query, options = {}) {
173
327
  // not resolve — the same defect `getCliInvocation` exists to prevent, and
174
328
  // the renderer applies it. A JSON caller gets the parts, not a sentence.
175
329
  const hint =
176
- pages.length + blocks.length + domain.length < THIN_KIT
330
+ pagesKept.length + blocksKept.length + domainKept.length < THIN_KIT
177
331
  ? {
178
332
  reason:
179
333
  'Few matches. This is keyword search, not semantic — try other wordings.',
@@ -185,14 +339,15 @@ export async function buildKit(query, options = {}) {
185
339
  type: 'build.kit',
186
340
  data: {
187
341
  query: result.data.query,
188
- // Distinguishes "search found nothing" (renderer shows "No matches")
189
- // from a weak-but-non-empty result set (renderer still shows the kit).
342
+ // Distinguishes "search found nothing" from a weak-but-non-empty result
343
+ // set. Either way the kit still names a template to start from.
190
344
  hasResults: matchCount > 0,
191
345
  matchCount,
192
346
  directMatch,
193
- pages: recommendedPages,
194
- blocks,
195
- domain,
347
+ start,
348
+ pages: pagesKept,
349
+ blocks: blocksKept,
350
+ domain: domainKept,
196
351
  frame: FRAME,
197
352
  foundation: FOUNDATION,
198
353
  hint,
@@ -0,0 +1,44 @@
1
+ // @generated by scripts/sync-api-types.mjs from the JSDoc in api/**/*.mjs.
2
+ // DO NOT EDIT — run `pnpm sync:api-types` to regenerate.
3
+
4
+ /**
5
+ * @typedef {import('../_adapter.mjs').PageTemplate} PageTemplate
6
+ * @typedef {{name: string, score: number, hits: number, familyNamed: boolean, containerMatched: boolean}} RankedPage
7
+ */
8
+ /**
9
+ * Rank page templates against an idea, best first. Ties go to the template
10
+ * with the shorter id (the family's broader page), then by name.
11
+ *
12
+ * @param {string} query
13
+ * @param {PageTemplate[]} pages
14
+ * @returns {RankedPage[]}
15
+ */
16
+ export function rankPages(query: string, pages: PageTemplate[]): RankedPage[];
17
+ /**
18
+ * The next closest templates after the start, best first: the ones a reader
19
+ * should check the idea against when the start's shape is wrong. Each matched
20
+ * at least one term and scored at least half of what a start needs.
21
+ *
22
+ * @param {RankedPage[]} ranked
23
+ * @param {string} startName
24
+ * @param {number} [count]
25
+ * @returns {RankedPage[]}
26
+ */
27
+ export function pickAlternatives(ranked: RankedPage[], startName: string, count?: number): RankedPage[];
28
+ /**
29
+ * The template to start from, or null when the best one has too little
30
+ * evidence to lead and the page should start from the app shell. Evidence is
31
+ * two matched terms, the idea naming the template's family, or its container.
32
+ *
33
+ * @param {RankedPage[]} ranked
34
+ * @returns {RankedPage | null}
35
+ */
36
+ export function pickStart(ranked: RankedPage[]): RankedPage | null;
37
+ export type PageTemplate = import("../_adapter.mjs").PageTemplate;
38
+ export type RankedPage = {
39
+ name: string;
40
+ score: number;
41
+ hits: number;
42
+ familyNamed: boolean;
43
+ containerMatched: boolean;
44
+ };