@astryxdesign/cli 0.6.3-canary.ebaebc4 → 0.6.3-canary.ee13359

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 (501) hide show
  1. package/README.md +114 -77
  2. package/api/blog/blog.doc.mjs +1 -0
  3. package/api/build/build.doc.mjs +4 -3
  4. package/api/build/build.test.mjs +14 -3
  5. package/api/build/build.type.d.mts +35 -1
  6. package/api/build/build.type.mjs +24 -3
  7. package/api/build/help/help.d.mts +8 -5
  8. package/api/build/help/help.mjs +56 -6
  9. package/api/component/_adapter.d.mts +6 -12
  10. package/api/component/_adapter.mjs +20 -10
  11. package/api/component/component.doc.mjs +13 -3
  12. package/api/component/component.mjs +91 -14
  13. package/api/component/component.test.mjs +38 -0
  14. package/api/component/component.type.d.mts +16 -5
  15. package/api/component/component.type.mjs +13 -5
  16. package/api/component/detail/blocks/blocks.d.mts +2 -1
  17. package/api/component/detail/blocks/blocks.mjs +4 -3
  18. package/api/component/list/list.d.mts +0 -5
  19. package/api/component/list/list.mjs +40 -11
  20. package/api/discover/discover.doc.mjs +2 -1
  21. package/api/docs/_adapter.d.mts +210 -34
  22. package/api/docs/_adapter.mjs +674 -134
  23. package/api/docs/detail/detail.mjs +11 -3
  24. package/api/docs/detail/section/section.mjs +24 -13
  25. package/api/docs/detail/section/section.test.mjs +15 -6
  26. package/api/docs/docs.d.mts +5 -3
  27. package/api/docs/docs.doc.mjs +36 -15
  28. package/api/docs/docs.mjs +44 -8
  29. package/api/docs/docs.test.mjs +158 -4
  30. package/api/docs/docs.type.d.mts +165 -2
  31. package/api/docs/docs.type.mjs +101 -3
  32. package/api/docs/index/index.mjs +11 -3
  33. package/api/docs/index/index.test.mjs +1 -1
  34. package/api/docs/integration-tree.test.mjs +547 -0
  35. package/api/docs/integrationDocs.test.mjs +14 -14
  36. package/api/docs/list/list.mjs +28 -12
  37. package/api/docs/node/node.d.mts +43 -0
  38. package/api/docs/node/node.mjs +192 -0
  39. package/api/doctor/doctor.d.mts +54 -4
  40. package/api/doctor/doctor.doc.mjs +1 -0
  41. package/api/doctor/doctor.mjs +327 -16
  42. package/api/doctor/doctor.test.mjs +420 -7
  43. package/api/gap-report/gap-report.doc.mjs +8 -4
  44. package/api/hook/_adapter.mjs +19 -5
  45. package/api/hook/hook.doc.mjs +1 -0
  46. package/api/hook/list/list.d.mts +1 -1
  47. package/api/hook/list/list.mjs +69 -17
  48. package/api/index.d.mts +1 -1
  49. package/api/index.mjs +1 -0
  50. package/api/init/init.doc.mjs +6 -1
  51. package/api/init/init.test.mjs +41 -1
  52. package/api/init/remove/remove.mjs +1 -1
  53. package/api/init/run/run.mjs +20 -10
  54. package/api/integration/add-contribution.component-names.test.mjs +120 -0
  55. package/api/integration/add-contribution.d.mts +2 -1
  56. package/api/integration/add-contribution.mjs +125 -12
  57. package/api/integration/add-contribution.test.mjs +254 -3
  58. package/api/integration/add-theme.mjs +34 -64
  59. package/api/integration/add-theme.test.mjs +105 -21
  60. package/api/integration/authoring-checks.mjs +108 -31
  61. package/api/integration/authoring-checks.test.mjs +171 -6
  62. package/api/integration/authoring-checks.type.d.mts +3 -1
  63. package/api/integration/authoring-checks.type.mjs +3 -1
  64. package/api/integration/integration-authoring.type.d.mts +2 -0
  65. package/api/integration/integration-authoring.type.mjs +2 -0
  66. package/api/integration/integration-block-exports.test.mjs +10 -6
  67. package/api/integration/integrationAdd.doc.mjs +14 -4
  68. package/api/integration/integrationAddAgentDoc.doc.mjs +1 -0
  69. package/api/integration/integrationAddCodemod.doc.mjs +1 -0
  70. package/api/integration/integrationAddComponent.doc.mjs +2 -1
  71. package/api/integration/integrationAddDoc.doc.mjs +8 -1
  72. package/api/integration/integrationAddTemplate.doc.mjs +1 -0
  73. package/api/integration/integrationAddTheme.doc.mjs +6 -5
  74. package/api/integration/integrationComponentConflicts.doc.mjs +1 -0
  75. package/api/integration/integrationDocConflicts.doc.mjs +2 -1
  76. package/api/integration/integrationPackCheck.doc.mjs +2 -1
  77. package/api/integration/integrationTemplateConflicts.doc.mjs +7 -5
  78. package/api/integration/pack-check.mjs +34 -0
  79. package/api/integration/pack-check.test.mjs +138 -47
  80. package/api/integration/pack-check.type.d.mts +26 -2
  81. package/api/integration/pack-check.type.mjs +14 -1
  82. package/api/integration/summarizeIssues.doc.mjs +1 -0
  83. package/api/integration/validate-integration-fixes.test.mjs +1389 -0
  84. package/api/integration/validate-integration.mjs +52 -102
  85. package/api/integration/validate-integration.test.mjs +179 -26
  86. package/api/integration/validate-unread-theme-folders.test.mjs +110 -0
  87. package/api/integration/validateIntegration.doc.mjs +3 -2
  88. package/api/json/assertResponse.doc.mjs +1 -0
  89. package/api/json/envelope-types.test.mjs +76 -0
  90. package/api/json/index.ts +2 -0
  91. package/api/json/isError.doc.mjs +1 -0
  92. package/api/json/parseResponse.doc.mjs +3 -2
  93. package/api/layout/_adapter.mjs +20 -5
  94. package/api/layout/expand/expand.mjs +7 -5
  95. package/api/layout/expand/expand.path-safety.test.mjs +53 -0
  96. package/api/layout/grammar/grammar.mjs +2 -1
  97. package/api/layout/layoutCheck.doc.mjs +1 -0
  98. package/api/layout/layoutExpand.doc.mjs +2 -1
  99. package/api/layout/layoutGrammar.doc.mjs +1 -0
  100. package/api/search/search-return-type.test.mjs +54 -0
  101. package/api/search/search.d.mts +28 -10
  102. package/api/search/search.doc.mjs +8 -2
  103. package/api/search/search.mjs +334 -38
  104. package/api/search/search.test.mjs +124 -1
  105. package/api/search/search.type.d.mts +13 -1
  106. package/api/search/search.type.mjs +4 -1
  107. package/api/swizzle/copy/copy.mjs +28 -11
  108. package/api/swizzle/swizzle.doc.mjs +2 -1
  109. package/api/template/copy/copy.mjs +17 -23
  110. package/api/template/copy/copy.test.mjs +17 -0
  111. package/api/template/list/list.mjs +1 -0
  112. package/api/template/template-integration.test.mjs +1022 -3
  113. package/api/template/template-suffix.test.mjs +41 -21
  114. package/api/template/template.doc.mjs +30 -8
  115. package/api/template/template.mjs +45 -8
  116. package/api/template/template.type.d.mts +6 -8
  117. package/api/template/template.type.mjs +3 -2
  118. package/api/theme/_adapter.d.mts +2 -3
  119. package/api/theme/_adapter.mjs +4 -5
  120. package/api/theme/add/add.binary.test.mjs +84 -0
  121. package/api/theme/add/add.mjs +20 -3
  122. package/api/theme/add/add.staging.test.mjs +66 -0
  123. package/api/theme/add/add.test.mjs +14 -1
  124. package/api/theme/build/build.mjs +114 -37
  125. package/api/theme/build/build.public-component-vars.test.mjs +1 -1
  126. package/api/theme/build/build.receipt-doc.test.mjs +111 -0
  127. package/api/theme/build/font-warning.mjs +3 -3
  128. package/api/theme/build/font-warning.test.mjs +5 -2
  129. package/api/theme/generateTonalPalette.doc.mjs +1 -0
  130. package/api/theme/integration-themes.test.mjs +39 -28
  131. package/api/theme/list/list.test.mjs +19 -20
  132. package/api/theme/listThemes.doc.mjs +6 -5
  133. package/api/theme/palette/generate/generate.mjs +7 -2
  134. package/api/theme/palette/generate/generate.test.mjs +96 -0
  135. package/api/theme/palette/generate/generator.mjs +8 -1
  136. package/api/theme/palette/generate/generator.test.mjs +10 -0
  137. package/api/theme/template/template.mjs +11 -2
  138. package/api/theme/template/template.test.mjs +20 -0
  139. package/api/theme/themeAdd.doc.mjs +4 -3
  140. package/api/theme/themeBuild.doc.mjs +8 -4
  141. package/api/theme/themeList.doc.mjs +6 -3
  142. package/api/theme/themeListAvailable.doc.mjs +5 -3
  143. package/api/theme/themePaletteGenerate.doc.mjs +1 -0
  144. package/api/theme/themeTargets.doc.mjs +1 -0
  145. package/api/theme/themeTemplate.doc.mjs +6 -2
  146. package/api/upgrade/_adapter.d.mts +32 -5
  147. package/api/upgrade/_adapter.mjs +124 -73
  148. package/api/upgrade/list/list.mjs +2 -1
  149. package/api/upgrade/list/list.test.mjs +73 -0
  150. package/api/upgrade/provider-agreement.test.mjs +152 -0
  151. package/api/upgrade/run/run.mjs +356 -59
  152. package/api/upgrade/status/status.mjs +2 -2
  153. package/api/upgrade/upgrade.doc.mjs +8 -2
  154. package/api/upgrade/upgrade.type.d.mts +38 -0
  155. package/api/upgrade/upgrade.type.mjs +16 -0
  156. package/assets/codemods/__tests__/runner.test.mjs +330 -8
  157. package/assets/codemods/integration-discovery.mjs +8 -2
  158. package/assets/codemods/integration-discovery.test.mjs +15 -0
  159. package/assets/codemods/integration-runner.mjs +56 -4
  160. package/assets/codemods/integration-runner.protection.test.mjs +153 -0
  161. package/assets/codemods/run-codemod.mjs +177 -34
  162. package/assets/codemods/runner.mjs +350 -102
  163. package/assets/codemods/term-log.mjs +32 -8
  164. package/assets/codemods/term-log.test.mjs +19 -1
  165. package/assets/codemods/transform-prop.mjs +109 -0
  166. package/assets/codemods/transform-prop.test.mjs +95 -0
  167. package/assets/codemods/transforms/next/__tests__/migrate-native-picker-to-presentation.test.mjs +63 -0
  168. package/assets/codemods/transforms/next/__tests__/migrate-theme-catalog-to-descriptors.test.mjs +220 -0
  169. package/assets/codemods/transforms/next/index.mjs +19 -1
  170. package/assets/codemods/transforms/next/migrate-native-picker-to-presentation.mjs +148 -0
  171. package/assets/codemods/transforms/next/migrate-theme-catalog-to-descriptors.mjs +141 -0
  172. package/assets/codemods/transforms/v0.0.14/__tests__/rename-status-variants.test.mjs +86 -165
  173. package/assets/codemods/transforms/v0.0.14/rename-status-variants.mjs +72 -210
  174. package/assets/codemods/transforms/v0.1.8/__tests__/rename-avatar-size-scale.test.mjs +83 -115
  175. package/assets/codemods/transforms/v0.1.8/rename-avatar-size-scale.mjs +57 -186
  176. package/assets/codemods/transforms/v0.6.0/__tests__/next-codemods.test.mjs +47 -0
  177. package/assets/codemods/transforms/v0.6.0/rename-resizable-pixel-bounds.mjs +57 -10
  178. package/assets/docs/getting-started.doc.mjs +2 -2
  179. package/assets/docs/principles.doc.mjs +6 -6
  180. package/assets/docs/styling-libraries.doc.mjs +2 -2
  181. package/assets/docs/styling.doc.mjs +4 -4
  182. package/assets/docs/theme.doc.mjs +4 -4
  183. package/assets/docs/tokens.doc.mjs +1 -1
  184. package/assets/docs/tree/api.doc.mjs +30 -0
  185. package/assets/docs/tree/cli.doc.mjs +23 -0
  186. package/assets/docs/tree/commands.doc.mjs +25 -0
  187. package/assets/docs/{cli-integrations.doc.mjs → tree/integrations.doc.mjs} +66 -38
  188. package/assets/docs/tree/integrations.test.mjs +62 -0
  189. package/assets/docs/tree/writing-docs.doc.mjs +286 -0
  190. package/assets/templates/blocks/components/DateInput/DateInputDateRange.tsx +1 -1
  191. package/assets/templates/blocks/components/Item/ItemDocumentTabs.doc.mjs +14 -0
  192. package/assets/templates/blocks/components/Item/ItemDocumentTabs.tsx +100 -0
  193. package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaInlineRail.doc.mjs +14 -0
  194. package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaInlineRail.tsx +61 -0
  195. package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaOverscrollChaining.doc.mjs +14 -0
  196. package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaOverscrollChaining.tsx +126 -0
  197. package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaShowcase.doc.mjs +15 -0
  198. package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaShowcase.tsx +86 -0
  199. package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaStickyGroupHeaders.doc.mjs +14 -0
  200. package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaStickyGroupHeaders.tsx +99 -0
  201. package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaStickyPassthrough.doc.mjs +14 -0
  202. package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaStickyPassthrough.tsx +122 -0
  203. package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaTwoAxisBoard.doc.mjs +14 -0
  204. package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaTwoAxisBoard.tsx +95 -0
  205. package/assets/templates/blocks/components/TimeInput/TimeInputConstrained.tsx +1 -0
  206. package/assets/templates/pages/table-tree/page.tsx +1704 -0
  207. package/assets/templates/pages/table-tree/template.doc.mjs +12 -0
  208. package/assets/templates/themes/butter/butterTheme.doc.mjs +11 -0
  209. package/assets/templates/themes/chocolate/chocolateTheme.doc.mjs +11 -0
  210. package/assets/templates/themes/gothic/gothicTheme.doc.mjs +11 -0
  211. package/assets/templates/themes/matcha/matchaTheme.doc.mjs +11 -0
  212. package/assets/templates/themes/neutral/neutralTheme.doc.mjs +11 -0
  213. package/assets/templates/themes/stone/stoneTheme.doc.mjs +11 -0
  214. package/assets/templates/themes/y2k/y2kTheme.doc.mjs +11 -0
  215. package/authoring/codemod/codemod.doc.mjs +1 -1
  216. package/authoring/codemod/type.ts +12 -0
  217. package/authoring/config/config.doc.mjs +2 -2
  218. package/authoring/config/debug-composition.test.mjs +92 -0
  219. package/authoring/config/type.ts +15 -3
  220. package/authoring/debug/debug.doc.d.mts +11 -0
  221. package/authoring/debug/debug.doc.mjs +182 -0
  222. package/authoring/debug/parse.d.mts +3 -3
  223. package/authoring/doctypes/_schema.d.mts +71 -141
  224. package/authoring/doctypes/_schema.mjs +29 -2
  225. package/authoring/doctypes/base/graph-fields.doc.mjs +8 -6
  226. package/authoring/doctypes/base/type.ts +6 -5
  227. package/authoring/doctypes/command/command.doc.mjs +1 -1
  228. package/authoring/doctypes/command/type.ts +2 -2
  229. package/authoring/doctypes/component/type.ts +2 -2
  230. package/authoring/doctypes/doctypes-new.test.mjs +48 -6
  231. package/authoring/doctypes/enum/enum.doc.mjs +1 -1
  232. package/authoring/doctypes/enum/type.ts +1 -1
  233. package/authoring/doctypes/function/function.doc.mjs +3 -2
  234. package/authoring/doctypes/function/type.ts +3 -2
  235. package/authoring/doctypes/hook/type.ts +2 -2
  236. package/authoring/doctypes/load-contract.test.mjs +3 -2
  237. package/authoring/doctypes/namespace/namespace.doc.mjs +6 -10
  238. package/authoring/doctypes/namespace/parse.test.mjs +23 -25
  239. package/authoring/doctypes/namespace/type.ts +5 -2
  240. package/authoring/doctypes/parse.d.mts +4 -2
  241. package/authoring/doctypes/parse.mjs +10 -5
  242. package/authoring/doctypes/reference/reference.doc.mjs +7 -5
  243. package/authoring/doctypes/reference/type.ts +12 -10
  244. package/authoring/doctypes/schema/schema.doc.mjs +1 -1
  245. package/authoring/doctypes/schema/type.ts +1 -2
  246. package/authoring/doctypes/template/parse.d.mts +2 -0
  247. package/authoring/doctypes/template/parse.mjs +4 -0
  248. package/authoring/doctypes/template/parse.test.mjs +18 -0
  249. package/authoring/doctypes/template/template.doc.mjs +9 -3
  250. package/authoring/doctypes/template/type.ts +8 -0
  251. package/authoring/doctypes/theme/parse.d.mts +35 -0
  252. package/authoring/doctypes/theme/parse.mjs +76 -0
  253. package/authoring/doctypes/theme/theme.doc.d.mts +9 -0
  254. package/authoring/doctypes/theme/theme.doc.mjs +79 -0
  255. package/authoring/doctypes/theme/type.ts +42 -0
  256. package/authoring/doctypes/types.ts +2 -1
  257. package/authoring/gap-report/gap-report.doc.d.mts +12 -0
  258. package/authoring/gap-report/gap-report.doc.mjs +183 -0
  259. package/authoring/identity/identity.doc.mjs +2 -2
  260. package/authoring/index.d.mts +1 -0
  261. package/authoring/index.d.ts +7 -4
  262. package/authoring/index.mjs +2 -1
  263. package/authoring/integration/integration.doc.mjs +2 -2
  264. package/authoring/integration/type.ts +4 -10
  265. package/clients/cli/__tests__/cliManifest.test.ts +27 -29
  266. package/clients/cli/command-load-failure.test.mjs +83 -0
  267. package/clients/cli/commands/blog.doc.mjs +1 -1
  268. package/clients/cli/commands/blog.mjs +23 -8
  269. package/clients/cli/commands/blog.test.mjs +42 -1
  270. package/clients/cli/commands/build-theme.adaptations.test.mjs +100 -1
  271. package/clients/cli/commands/build-theme.ascii-output.test.mjs +161 -0
  272. package/clients/cli/commands/build-theme.flag-docs.test.mjs +110 -0
  273. package/clients/cli/commands/build-theme.mjs +16 -50
  274. package/clients/cli/commands/build-theme.path-safety.test.mjs +86 -1
  275. package/clients/cli/commands/build-theme.variants.test.mjs +76 -0
  276. package/clients/cli/commands/build.doc.mjs +5 -2
  277. package/clients/cli/commands/build.exit-codes-doc.test.mjs +50 -0
  278. package/clients/cli/commands/build.mjs +37 -49
  279. package/clients/cli/commands/build.playbook.test.mjs +75 -0
  280. package/clients/cli/commands/build.text-fields.test.mjs +40 -0
  281. package/clients/cli/commands/component/index.mjs +3 -8
  282. package/clients/cli/commands/component-ownership.test.mjs +3 -3
  283. package/clients/cli/commands/component-package.test.mjs +46 -0
  284. package/clients/cli/commands/component-resolution.test.mjs +21 -0
  285. package/clients/cli/commands/component.doc.mjs +1 -1
  286. package/clients/cli/commands/component.test.mjs +19 -0
  287. package/clients/cli/commands/detail-levels.test.mjs +2 -2
  288. package/clients/cli/commands/discover.broken-integration.test.mjs +52 -5
  289. package/clients/cli/commands/discover.components-flag.test.mjs +97 -0
  290. package/clients/cli/commands/discover.doc.mjs +5 -3
  291. package/clients/cli/commands/discover.mjs +4 -4
  292. package/clients/cli/commands/discover.text-projection.test.mjs +103 -0
  293. package/clients/cli/commands/docs.doc.mjs +21 -9
  294. package/clients/cli/commands/docs.mjs +182 -68
  295. package/clients/cli/commands/docs.test.mjs +120 -16
  296. package/clients/cli/commands/doctor-integration-components.doc.mjs +1 -1
  297. package/clients/cli/commands/doctor-integration-docs.doc.mjs +3 -3
  298. package/clients/cli/commands/doctor-integration-templates.doc.mjs +15 -8
  299. package/clients/cli/commands/doctor-integration-validate.doc.mjs +1 -1
  300. package/clients/cli/commands/doctor-integration.doc.mjs +1 -1
  301. package/clients/cli/commands/doctor-integration.package-json.test.mjs +53 -0
  302. package/clients/cli/commands/doctor-integration.test.mjs +83 -8
  303. package/clients/cli/commands/doctor.doc.mjs +1 -1
  304. package/clients/cli/commands/doctor.mjs +30 -25
  305. package/clients/cli/commands/doctor.test.mjs +42 -0
  306. package/clients/cli/commands/gap-report.doc.mjs +17 -6
  307. package/clients/cli/commands/gap-report.test.mjs +72 -0
  308. package/clients/cli/commands/hook/index.mjs +7 -17
  309. package/clients/cli/commands/hook.doc.mjs +1 -1
  310. package/clients/cli/commands/hook.text-projection.test.mjs +45 -0
  311. package/clients/cli/commands/init.doc.mjs +20 -9
  312. package/clients/cli/commands/init.flag-help.test.mjs +153 -0
  313. package/clients/cli/commands/integration-add.controls.test.mjs +132 -0
  314. package/clients/cli/commands/integration-add.doc.mjs +32 -6
  315. package/clients/cli/commands/integration-pack.doc.mjs +1 -1
  316. package/clients/cli/commands/integration-real-world.test.mjs +3 -9
  317. package/clients/cli/commands/integration.doc.mjs +1 -1
  318. package/clients/cli/commands/integration.mjs +1 -0
  319. package/clients/cli/commands/interactive-guard.test.mjs +101 -24
  320. package/clients/cli/commands/json-contract.test.mjs +33 -0
  321. package/clients/cli/commands/layout-check.doc.mjs +15 -4
  322. package/clients/cli/commands/layout-expand.doc.mjs +22 -5
  323. package/clients/cli/commands/layout-grammar.doc.mjs +1 -1
  324. package/clients/cli/commands/layout.doc.mjs +3 -3
  325. package/clients/cli/commands/layout.mjs +21 -9
  326. package/clients/cli/commands/layout.path-help.test.mjs +33 -0
  327. package/clients/cli/commands/layout.stdin-cap.test.mjs +47 -0
  328. package/clients/cli/commands/layout.text-fields.test.mjs +39 -0
  329. package/clients/cli/commands/manifest.doc.mjs +1 -1
  330. package/clients/cli/commands/no-prompt-wording.test.mjs +94 -0
  331. package/clients/cli/commands/search.doc.mjs +7 -4
  332. package/clients/cli/commands/search.mjs +28 -9
  333. package/clients/cli/commands/search.test.mjs +75 -0
  334. package/clients/cli/commands/setup-nudge.test.mjs +6 -0
  335. package/clients/cli/commands/swizzle.doc.mjs +3 -2
  336. package/clients/cli/commands/swizzle.path-safety.test.mjs +42 -0
  337. package/clients/cli/commands/template.doc.mjs +52 -13
  338. package/clients/cli/commands/template.flag-help.test.mjs +117 -0
  339. package/clients/cli/commands/template.mjs +4 -91
  340. package/clients/cli/commands/template.path-help.test.mjs +40 -0
  341. package/clients/cli/commands/text-json-parity.test.mjs +719 -0
  342. package/clients/cli/commands/theme-add.doc.mjs +4 -3
  343. package/clients/cli/commands/theme-build.doc.mjs +8 -7
  344. package/clients/cli/commands/theme-list.doc.mjs +2 -2
  345. package/clients/cli/commands/theme-palette-generate.doc.mjs +3 -3
  346. package/clients/cli/commands/theme-palette-generate.test.mjs +19 -0
  347. package/clients/cli/commands/theme-palette.doc.mjs +1 -1
  348. package/clients/cli/commands/theme-targets.behavior.test.mjs +4 -3
  349. package/clients/cli/commands/theme-targets.doc.mjs +1 -1
  350. package/clients/cli/commands/theme-template.behavior.test.mjs +12 -0
  351. package/clients/cli/commands/theme-template.doc.mjs +2 -2
  352. package/clients/cli/commands/theme.doc.mjs +1 -1
  353. package/clients/cli/commands/upgrade.ascii-output.test.mjs +87 -0
  354. package/clients/cli/commands/upgrade.doc.mjs +20 -8
  355. package/clients/cli/commands/upgrade.file-protection.test.mjs +228 -0
  356. package/clients/cli/commands/upgrade.flag-help.test.mjs +188 -0
  357. package/clients/cli/commands/upgrade.hook-output.test.mjs +88 -0
  358. package/clients/cli/commands/upgrade.mjs +29 -7
  359. package/clients/cli/formatters/index.mjs +2 -0
  360. package/clients/cli/formatters/index.test.mjs +6 -0
  361. package/clients/cli/index.mjs +21 -30
  362. package/clients/cli/latest-version-env.test.mjs +50 -0
  363. package/clients/cli/lib/cli-error.test.mjs +7 -0
  364. package/clients/cli/lib/component-format.mjs +9 -9
  365. package/clients/cli/lib/component-format.test.mjs +1 -1
  366. package/clients/cli/lib/define-command.mjs +32 -6
  367. package/clients/cli/lib/doc-text-ascii.test.mjs +82 -0
  368. package/clients/cli/lib/exit-codes.test.mjs +97 -0
  369. package/clients/cli/lib/hook-format.mjs +19 -10
  370. package/clients/cli/lib/json-shim.mjs +38 -2
  371. package/clients/cli/lib/json-shim.test.mjs +83 -0
  372. package/clients/cli/lib/manifest.d.ts +2 -0
  373. package/clients/cli/lib/manifest.mjs +31 -2
  374. package/clients/cli/lib/manifest.test.mjs +17 -0
  375. package/foundation/agent-docs/agent-docs.d.mts +4 -0
  376. package/foundation/agent-docs/agent-docs.mjs +70 -3
  377. package/foundation/agent-docs/agent-docs.path-safety.test.mjs +266 -4
  378. package/foundation/agent-docs/agent-docs.test.mjs +10 -1
  379. package/foundation/config/integration-debug.test.mjs +28 -3
  380. package/foundation/config/project-themes.test.mjs +11 -19
  381. package/foundation/config/project.d.mts +20 -11
  382. package/foundation/config/project.mjs +246 -89
  383. package/foundation/config/project.test.mjs +270 -21
  384. package/foundation/discovery/authoring-self-docs.d.mts +6 -0
  385. package/foundation/discovery/authoring-self-docs.mjs +17 -7
  386. package/foundation/discovery/authoring-self-docs.test.mjs +20 -9
  387. package/foundation/discovery/authoring-surface.d.mts +74 -0
  388. package/foundation/discovery/authoring-surface.mjs +525 -0
  389. package/foundation/discovery/authoring-surface.test.mjs +392 -0
  390. package/foundation/discovery/cli-self-docs.d.mts +119 -0
  391. package/foundation/discovery/cli-self-docs.mjs +490 -0
  392. package/foundation/discovery/cli-self-docs.test.mjs +375 -0
  393. package/foundation/discovery/component-discovery.d.mts +38 -0
  394. package/foundation/discovery/component-discovery.mjs +48 -0
  395. package/foundation/discovery/component-loader.d.mts +35 -38
  396. package/foundation/discovery/component-loader.mjs +53 -222
  397. package/foundation/discovery/docs-discovery.d.mts +108 -10
  398. package/foundation/discovery/docs-discovery.mjs +191 -30
  399. package/foundation/discovery/docs-discovery.test.mjs +71 -32
  400. package/foundation/discovery/docs-output-budget.d.mts +2 -2
  401. package/foundation/discovery/docs-output-budget.mjs +1 -1
  402. package/foundation/discovery/docs-section-key.d.mts +28 -10
  403. package/foundation/discovery/docs-section-key.mjs +134 -33
  404. package/foundation/discovery/docs-section-key.test.mjs +41 -19
  405. package/foundation/discovery/template-adapter.d.mts +113 -11
  406. package/foundation/discovery/template-adapter.fixture-refs.test.mjs +248 -0
  407. package/foundation/discovery/template-adapter.integration-isolation.test.mjs +94 -0
  408. package/foundation/discovery/template-adapter.mjs +772 -82
  409. package/foundation/discovery/template-adapter.test.mjs +57 -0
  410. package/foundation/discovery/theme-discovery.d.mts +67 -7
  411. package/foundation/discovery/theme-discovery.mjs +916 -186
  412. package/foundation/discovery/theme-discovery.test.mjs +613 -219
  413. package/foundation/doc-compiler/bundle.d.mts +47 -0
  414. package/foundation/doc-compiler/bundle.mjs +278 -0
  415. package/foundation/doc-compiler/bundle.test.mjs +266 -0
  416. package/foundation/doc-compiler/compile.d.mts +220 -39
  417. package/foundation/doc-compiler/compile.mjs +311 -15
  418. package/foundation/doc-compiler/diagnostics.d.mts +126 -0
  419. package/foundation/doc-compiler/diagnostics.mjs +305 -0
  420. package/foundation/doc-compiler/doc-compiler.test.mjs +28 -1
  421. package/foundation/doc-compiler/doc-loads.test.mjs +1642 -0
  422. package/foundation/doc-compiler/import.d.mts +24 -0
  423. package/foundation/doc-compiler/import.mjs +59 -0
  424. package/foundation/doc-compiler/inputs.d.mts +102 -0
  425. package/foundation/doc-compiler/inputs.mjs +291 -0
  426. package/foundation/doc-compiler/inputs.test.mjs +299 -0
  427. package/foundation/doc-compiler/ir.d.mts +13 -0
  428. package/foundation/doc-compiler/ir.mjs +196 -12
  429. package/foundation/doc-compiler/lenses.d.mts +3 -2
  430. package/foundation/doc-compiler/lenses.mjs +2 -1
  431. package/foundation/doc-compiler/links.d.mts +135 -0
  432. package/foundation/doc-compiler/links.mjs +253 -0
  433. package/foundation/doc-compiler/links.test.mjs +139 -0
  434. package/foundation/doc-compiler/lower-doc.test.mjs +495 -0
  435. package/foundation/doc-compiler/overlays.d.mts +37 -0
  436. package/foundation/doc-compiler/overlays.mjs +206 -0
  437. package/foundation/doc-compiler/parse-readable.d.mts +9 -0
  438. package/foundation/doc-compiler/parse-readable.mjs +29 -0
  439. package/foundation/doc-compiler/read.d.mts +127 -0
  440. package/foundation/doc-compiler/read.mjs +325 -0
  441. package/foundation/doc-compiler/read.test.mjs +313 -0
  442. package/foundation/doc-compiler/source.d.mts +33 -0
  443. package/foundation/doc-compiler/source.mjs +128 -0
  444. package/foundation/doc-compiler/tree.d.mts +288 -0
  445. package/foundation/doc-compiler/tree.mjs +876 -0
  446. package/foundation/doc-compiler/tree.test.mjs +598 -0
  447. package/foundation/fs/file-protection.d.mts +33 -0
  448. package/foundation/fs/file-protection.mjs +825 -0
  449. package/foundation/fs/file-protection.test.mjs +250 -0
  450. package/foundation/fs/module-loader.d.mts +1 -0
  451. package/foundation/fs/module-loader.mjs +50 -1
  452. package/foundation/fs/module-loader.stdout.test.mjs +332 -0
  453. package/foundation/fs/path-safety.d.mts +3 -2
  454. package/foundation/fs/path-safety.mjs +49 -19
  455. package/foundation/fs/path-safety.test.mjs +50 -0
  456. package/foundation/fs/publish-file-hardlink-unavailable.test.mjs +129 -94
  457. package/foundation/integrations/autolink.d.mts +58 -1
  458. package/foundation/integrations/autolink.mjs +143 -52
  459. package/foundation/integrations/autolink.test.mjs +1 -1
  460. package/foundation/integrations/cli-requirement.d.mts +45 -0
  461. package/foundation/integrations/cli-requirement.mjs +154 -0
  462. package/foundation/integrations/cli-requirement.test.mjs +109 -0
  463. package/foundation/integrations/contribution-fixes.d.mts +145 -0
  464. package/foundation/integrations/contribution-fixes.mjs +1284 -0
  465. package/foundation/integrations/contribution-inventory.d.mts +3 -2
  466. package/foundation/integrations/contribution-inventory.mjs +27 -24
  467. package/foundation/integrations/contribution-inventory.test.mjs +86 -27
  468. package/foundation/integrations/integration-warnings.d.mts +9 -2
  469. package/foundation/integrations/integration-warnings.mjs +51 -26
  470. package/foundation/integrations/integration-warnings.test.mjs +74 -1
  471. package/foundation/integrations/integrations.d.mts +3 -0
  472. package/foundation/integrations/integrations.mjs +11 -97
  473. package/foundation/integrations/provider-ledger.test.mjs +275 -0
  474. package/foundation/integrations/provider-resolution.d.mts +152 -0
  475. package/foundation/integrations/provider-resolution.mjs +576 -0
  476. package/foundation/integrations/provider-resolution.test.mjs +369 -0
  477. package/foundation/integrations/theme-descriptor.d.mts +8 -0
  478. package/foundation/integrations/theme-descriptor.mjs +44 -0
  479. package/foundation/integrations/validate-contributions.mjs +121 -29
  480. package/foundation/response/base.d.ts +8 -4
  481. package/foundation/response/error-codes.d.mts +3 -1
  482. package/foundation/response/error-codes.d.ts +2 -0
  483. package/foundation/response/error-codes.doc.mjs +13 -4
  484. package/foundation/response/error-codes.mjs +8 -2
  485. package/foundation/response/error-codes.test.mjs +137 -10
  486. package/foundation/response/json-contract.test.mjs +11 -0
  487. package/foundation/response/json.d.mts +4 -2
  488. package/foundation/response/json.mjs +8 -10
  489. package/foundation/response/response-types.doc.mjs +22 -17
  490. package/foundation/response/response-types.doc.test.mjs +158 -0
  491. package/foundation/response/response.doc.mjs +1 -1
  492. package/foundation/text/string-utils.mjs +22 -10
  493. package/foundation/xle/expand.d.mts +2 -0
  494. package/foundation/xle/expand.mjs +4 -3
  495. package/foundation/xle/expand.test.mjs +54 -0
  496. package/foundation/xle/xle.test.mjs +13 -0
  497. package/package.json +10 -9
  498. package/assets/templates/themes/manifest.json +0 -95
  499. package/clients/cli/lib/update-check.mjs +0 -83
  500. package/clients/cli/lib/update-check.test.mjs +0 -137
  501. package/clients/cli/update-hint-commands.test.mjs +0 -54
@@ -25,7 +25,7 @@ export namespace AuthoredDocGraphFields {
25
25
  internal: "internal";
26
26
  }>>;
27
27
  }
28
- /** Runtime schema for every existing and V1 semantic content block. */
28
+ /** Runtime schema for the stable content-block union published in 0.6.x. */
29
29
  export const ReferenceContentBlockSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
30
30
  type: z.ZodLiteral<"prose">;
31
31
  text: z.ZodString;
@@ -55,6 +55,74 @@ export const ReferenceContentBlockSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
55
55
  type: z.ZodLiteral<"token-ref">;
56
56
  topic: z.ZodString;
57
57
  section: z.ZodString;
58
+ }, z.core.$strict>], "type">;
59
+ /** Runtime schema for graph-only blocks used by NamespaceDoc. */
60
+ export const GraphContentBlockSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
61
+ type: z.ZodLiteral<"workflow">;
62
+ title: z.ZodOptional<z.ZodString>;
63
+ steps: z.ZodArray<z.ZodObject<{
64
+ title: z.ZodString;
65
+ description: z.ZodOptional<z.ZodString>;
66
+ references: z.ZodOptional<z.ZodArray<z.ZodString>>;
67
+ }, z.core.$strict>>;
68
+ }, z.core.$strict>, z.ZodObject<{
69
+ type: z.ZodLiteral<"collection">;
70
+ title: z.ZodOptional<z.ZodString>;
71
+ source: z.ZodObject<{
72
+ slot: z.ZodString;
73
+ }, z.core.$strict>;
74
+ presentation: z.ZodOptional<z.ZodEnum<{
75
+ list: "list";
76
+ cards: "cards";
77
+ compact: "compact";
78
+ }>>;
79
+ whenEmpty: z.ZodOptional<z.ZodEnum<{
80
+ show: "show";
81
+ omit: "omit";
82
+ }>>;
83
+ }, z.core.$strict>, z.ZodObject<{
84
+ type: z.ZodLiteral<"reference">;
85
+ target: z.ZodString;
86
+ projection: z.ZodOptional<z.ZodObject<{
87
+ fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
88
+ sections: z.ZodOptional<z.ZodArray<z.ZodString>>;
89
+ }, z.core.$strict>>;
90
+ presentation: z.ZodOptional<z.ZodEnum<{
91
+ compact: "compact";
92
+ summary: "summary";
93
+ full: "full";
94
+ }>>;
95
+ }, z.core.$strict>], "type">;
96
+ /** Namespace content accepts both stable reference blocks and graph-only blocks. */
97
+ export const NamespaceContentBlockSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
98
+ type: z.ZodLiteral<"prose">;
99
+ text: z.ZodString;
100
+ }, z.core.$strict>, z.ZodObject<{
101
+ type: z.ZodLiteral<"heading">;
102
+ level: z.ZodUnion<readonly [z.ZodLiteral<3>, z.ZodLiteral<4>, z.ZodLiteral<5>, z.ZodLiteral<6>]>;
103
+ text: z.ZodString;
104
+ }, z.core.$strict>, z.ZodObject<{
105
+ type: z.ZodLiteral<"code">;
106
+ lang: z.ZodString;
107
+ code: z.ZodString;
108
+ label: z.ZodOptional<z.ZodString>;
109
+ }, z.core.$strict>, z.ZodObject<{
110
+ type: z.ZodLiteral<"table">;
111
+ headers: z.ZodArray<z.ZodString>;
112
+ rows: z.ZodArray<z.ZodArray<z.ZodString>>;
113
+ }, z.core.$strict>, z.ZodObject<{
114
+ type: z.ZodLiteral<"list">;
115
+ style: z.ZodEnum<{
116
+ ordered: "ordered";
117
+ unordered: "unordered";
118
+ do: "do";
119
+ dont: "dont";
120
+ }>;
121
+ items: z.ZodArray<z.ZodString>;
122
+ }, z.core.$strict>, z.ZodObject<{
123
+ type: z.ZodLiteral<"token-ref">;
124
+ topic: z.ZodString;
125
+ section: z.ZodString;
58
126
  }, z.core.$strict>, z.ZodObject<{
59
127
  type: z.ZodLiteral<"workflow">;
60
128
  title: z.ZodOptional<z.ZodString>;
@@ -235,41 +303,6 @@ export const GenericDocKindSchema: z.ZodObject<{
235
303
  type: z.ZodLiteral<"token-ref">;
236
304
  topic: z.ZodString;
237
305
  section: z.ZodString;
238
- }, z.core.$strict>, z.ZodObject<{
239
- type: z.ZodLiteral<"workflow">;
240
- title: z.ZodOptional<z.ZodString>;
241
- steps: z.ZodArray<z.ZodObject<{
242
- title: z.ZodString;
243
- description: z.ZodOptional<z.ZodString>;
244
- references: z.ZodOptional<z.ZodArray<z.ZodString>>;
245
- }, z.core.$strict>>;
246
- }, z.core.$strict>, z.ZodObject<{
247
- type: z.ZodLiteral<"collection">;
248
- title: z.ZodOptional<z.ZodString>;
249
- source: z.ZodObject<{
250
- slot: z.ZodString;
251
- }, z.core.$strict>;
252
- presentation: z.ZodOptional<z.ZodEnum<{
253
- list: "list";
254
- cards: "cards";
255
- compact: "compact";
256
- }>>;
257
- whenEmpty: z.ZodOptional<z.ZodEnum<{
258
- show: "show";
259
- omit: "omit";
260
- }>>;
261
- }, z.core.$strict>, z.ZodObject<{
262
- type: z.ZodLiteral<"reference">;
263
- target: z.ZodString;
264
- projection: z.ZodOptional<z.ZodObject<{
265
- fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
266
- sections: z.ZodOptional<z.ZodArray<z.ZodString>>;
267
- }, z.core.$strict>>;
268
- presentation: z.ZodOptional<z.ZodEnum<{
269
- compact: "compact";
270
- summary: "summary";
271
- full: "full";
272
- }>>;
273
306
  }, z.core.$strict>], "type">>;
274
307
  previewType: z.ZodOptional<z.ZodEnum<{
275
308
  swatch: "swatch";
@@ -351,41 +384,6 @@ export const SchemaDocKindSchema: z.ZodObject<{
351
384
  type: z.ZodLiteral<"token-ref">;
352
385
  topic: z.ZodString;
353
386
  section: z.ZodString;
354
- }, z.core.$strict>, z.ZodObject<{
355
- type: z.ZodLiteral<"workflow">;
356
- title: z.ZodOptional<z.ZodString>;
357
- steps: z.ZodArray<z.ZodObject<{
358
- title: z.ZodString;
359
- description: z.ZodOptional<z.ZodString>;
360
- references: z.ZodOptional<z.ZodArray<z.ZodString>>;
361
- }, z.core.$strict>>;
362
- }, z.core.$strict>, z.ZodObject<{
363
- type: z.ZodLiteral<"collection">;
364
- title: z.ZodOptional<z.ZodString>;
365
- source: z.ZodObject<{
366
- slot: z.ZodString;
367
- }, z.core.$strict>;
368
- presentation: z.ZodOptional<z.ZodEnum<{
369
- list: "list";
370
- cards: "cards";
371
- compact: "compact";
372
- }>>;
373
- whenEmpty: z.ZodOptional<z.ZodEnum<{
374
- show: "show";
375
- omit: "omit";
376
- }>>;
377
- }, z.core.$strict>, z.ZodObject<{
378
- type: z.ZodLiteral<"reference">;
379
- target: z.ZodString;
380
- projection: z.ZodOptional<z.ZodObject<{
381
- fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
382
- sections: z.ZodOptional<z.ZodArray<z.ZodString>>;
383
- }, z.core.$strict>>;
384
- presentation: z.ZodOptional<z.ZodEnum<{
385
- compact: "compact";
386
- summary: "summary";
387
- full: "full";
388
- }>>;
389
387
  }, z.core.$strict>], "type">>>;
390
388
  placement: z.ZodOptional<z.ZodObject<{
391
389
  parent: z.ZodString;
@@ -470,41 +468,6 @@ export const CommandDocKindSchema: z.ZodObject<{
470
468
  type: z.ZodLiteral<"token-ref">;
471
469
  topic: z.ZodString;
472
470
  section: z.ZodString;
473
- }, z.core.$strict>, z.ZodObject<{
474
- type: z.ZodLiteral<"workflow">;
475
- title: z.ZodOptional<z.ZodString>;
476
- steps: z.ZodArray<z.ZodObject<{
477
- title: z.ZodString;
478
- description: z.ZodOptional<z.ZodString>;
479
- references: z.ZodOptional<z.ZodArray<z.ZodString>>;
480
- }, z.core.$strict>>;
481
- }, z.core.$strict>, z.ZodObject<{
482
- type: z.ZodLiteral<"collection">;
483
- title: z.ZodOptional<z.ZodString>;
484
- source: z.ZodObject<{
485
- slot: z.ZodString;
486
- }, z.core.$strict>;
487
- presentation: z.ZodOptional<z.ZodEnum<{
488
- list: "list";
489
- cards: "cards";
490
- compact: "compact";
491
- }>>;
492
- whenEmpty: z.ZodOptional<z.ZodEnum<{
493
- show: "show";
494
- omit: "omit";
495
- }>>;
496
- }, z.core.$strict>, z.ZodObject<{
497
- type: z.ZodLiteral<"reference">;
498
- target: z.ZodString;
499
- projection: z.ZodOptional<z.ZodObject<{
500
- fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
501
- sections: z.ZodOptional<z.ZodArray<z.ZodString>>;
502
- }, z.core.$strict>>;
503
- presentation: z.ZodOptional<z.ZodEnum<{
504
- compact: "compact";
505
- summary: "summary";
506
- full: "full";
507
- }>>;
508
471
  }, z.core.$strict>], "type">>>;
509
472
  placement: z.ZodOptional<z.ZodObject<{
510
473
  parent: z.ZodString;
@@ -877,41 +840,6 @@ export const LegacyDocSchema: z.ZodUnion<readonly [z.ZodObject<{
877
840
  type: z.ZodLiteral<"token-ref">;
878
841
  topic: z.ZodString;
879
842
  section: z.ZodString;
880
- }, z.core.$strict>, z.ZodObject<{
881
- type: z.ZodLiteral<"workflow">;
882
- title: z.ZodOptional<z.ZodString>;
883
- steps: z.ZodArray<z.ZodObject<{
884
- title: z.ZodString;
885
- description: z.ZodOptional<z.ZodString>;
886
- references: z.ZodOptional<z.ZodArray<z.ZodString>>;
887
- }, z.core.$strict>>;
888
- }, z.core.$strict>, z.ZodObject<{
889
- type: z.ZodLiteral<"collection">;
890
- title: z.ZodOptional<z.ZodString>;
891
- source: z.ZodObject<{
892
- slot: z.ZodString;
893
- }, z.core.$strict>;
894
- presentation: z.ZodOptional<z.ZodEnum<{
895
- list: "list";
896
- cards: "cards";
897
- compact: "compact";
898
- }>>;
899
- whenEmpty: z.ZodOptional<z.ZodEnum<{
900
- show: "show";
901
- omit: "omit";
902
- }>>;
903
- }, z.core.$strict>, z.ZodObject<{
904
- type: z.ZodLiteral<"reference">;
905
- target: z.ZodString;
906
- projection: z.ZodOptional<z.ZodObject<{
907
- fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
908
- sections: z.ZodOptional<z.ZodArray<z.ZodString>>;
909
- }, z.core.$strict>>;
910
- presentation: z.ZodOptional<z.ZodEnum<{
911
- compact: "compact";
912
- summary: "summary";
913
- full: "full";
914
- }>>;
915
843
  }, z.core.$strict>], "type">>;
916
844
  previewType: z.ZodOptional<z.ZodEnum<{
917
845
  swatch: "swatch";
@@ -933,6 +861,7 @@ export type AuthoredDocGraphFieldsType = import("./base/type.js").AuthoredDocGra
933
861
  export type AuthoredDocKind = import("./base/type.js").AuthoredDocKind;
934
862
  export type NamespaceDoc = import("./namespace/type.js").NamespaceDoc;
935
863
  export type ReferenceContentBlock = import("./reference/type.js").ReferenceContentBlock;
864
+ export type GraphContentBlock = import("./reference/type.js").GraphContentBlock;
936
865
  export type ReferenceDoc = import("./reference/type.js").ReferenceDoc;
937
866
  export type SingleComponentDoc = import("./component/type.js").SingleComponentDoc;
938
867
  export type ComponentPropDoc = import("./base/type.js").ComponentPropDoc;
@@ -944,6 +873,7 @@ export type EnumDoc = import("./enum/type.js").EnumDoc;
944
873
  export type _AuthoredDocKindDriftLock = import("../_shared/contract.js").Expect<import("../_shared/contract.js").Equal<z.infer<typeof AuthoredDocKindSchema>, AuthoredDocKind>>;
945
874
  export type _AuthoredDocGraphDriftLock = import("../_shared/contract.js").Expect<import("../_shared/contract.js").MutuallyAssignable<z.infer<typeof _AuthoredDocGraphSchema>, AuthoredDocGraphFieldsType>>;
946
875
  export type _ReferenceContentBlockDriftLock = import("../_shared/contract.js").Expect<import("../_shared/contract.js").Equal<z.infer<typeof ReferenceContentBlockSchema>, ReferenceContentBlock>>;
876
+ export type _GraphContentBlockDriftLock = import("../_shared/contract.js").Expect<import("../_shared/contract.js").Equal<z.infer<typeof GraphContentBlockSchema>, GraphContentBlock>>;
947
877
  /**
948
878
  * A stamped component doc as it loads. The loader accepts what the unstamped
949
879
  * format always accepted, so stamping an existing doc never breaks it:
@@ -15,6 +15,7 @@ import {z} from 'zod';
15
15
  /** @typedef {import('./base/type.js').AuthoredDocKind} AuthoredDocKind */
16
16
  /** @typedef {import('./namespace/type.js').NamespaceDoc} NamespaceDoc */
17
17
  /** @typedef {import('./reference/type.js').ReferenceContentBlock} ReferenceContentBlock */
18
+ /** @typedef {import('./reference/type.js').GraphContentBlock} GraphContentBlock */
18
19
  /** @typedef {import('./reference/type.js').ReferenceDoc} ReferenceDoc */
19
20
  /** @typedef {import('./component/type.js').SingleComponentDoc} SingleComponentDoc */
20
21
  /** @typedef {import('./base/type.js').ComponentPropDoc} ComponentPropDoc */
@@ -161,7 +162,7 @@ const ReferenceBlockSchema = z
161
162
  })
162
163
  .strict();
163
164
 
164
- /** Runtime schema for every existing and V1 semantic content block. */
165
+ /** Runtime schema for the stable content-block union published in 0.6.x. */
165
166
  export const ReferenceContentBlockSchema = z.discriminatedUnion('type', [
166
167
  ProseBlockSchema,
167
168
  HeadingBlockSchema,
@@ -169,6 +170,23 @@ export const ReferenceContentBlockSchema = z.discriminatedUnion('type', [
169
170
  TableBlockSchema,
170
171
  ListBlockSchema,
171
172
  TokenReferenceBlockSchema,
173
+ ]);
174
+
175
+ /** Runtime schema for graph-only blocks used by NamespaceDoc. */
176
+ export const GraphContentBlockSchema = z.discriminatedUnion('type', [
177
+ WorkflowBlockSchema,
178
+ CollectionBlockSchema,
179
+ ReferenceBlockSchema,
180
+ ]);
181
+
182
+ /** Namespace content accepts both stable reference blocks and graph-only blocks. */
183
+ export const NamespaceContentBlockSchema = z.discriminatedUnion('type', [
184
+ ProseBlockSchema,
185
+ HeadingBlockSchema,
186
+ CodeBlockSchema,
187
+ TableBlockSchema,
188
+ ListBlockSchema,
189
+ TokenReferenceBlockSchema,
172
190
  WorkflowBlockSchema,
173
191
  CollectionBlockSchema,
174
192
  ReferenceBlockSchema,
@@ -183,6 +201,15 @@ export const ReferenceContentBlockSchema = z.discriminatedUnion('type', [
183
201
  * >} _ReferenceContentBlockDriftLock
184
202
  */
185
203
 
204
+ /**
205
+ * @typedef {import('../_shared/contract.js').Expect<
206
+ * import('../_shared/contract.js').Equal<
207
+ * z.infer<typeof GraphContentBlockSchema>,
208
+ * GraphContentBlock
209
+ * >
210
+ * >} _GraphContentBlockDriftLock
211
+ */
212
+
186
213
  const ReferenceSectionSchema = z
187
214
  .object({
188
215
  id: nonEmptyString.optional(),
@@ -605,7 +632,7 @@ export const NamespaceDocKindSchema = z
605
632
  .strict(),
606
633
  )
607
634
  .optional(),
608
- blocks: z.array(ReferenceContentBlockSchema).optional(),
635
+ blocks: z.array(NamespaceContentBlockSchema).optional(),
609
636
  })
610
637
  .strict()
611
638
  .superRefine((doc, context) => {
@@ -12,25 +12,27 @@ export const doc = {
12
12
  displayName: 'Authored doc graph fields',
13
13
  namespace: 'authoring',
14
14
  description:
15
- 'Placement, compatibility aliases, and audience: fields every authored doc kind declares for the docs graph. The docs graph is not built yet, so nothing reads them: a reference topic that sets one fails to load, and other doc kinds accept them and ignore them.',
15
+ "Placement, compatibility aliases, and audience: fields every authored doc kind declares for the docs tree. The docs tree reads `placement` for every guide, the CLI's and each integration's; aliases and audience are not built yet. A reference topic outside the docs tree that sets one fails to load, and other doc kinds accept them and ignore them.",
16
16
  appliesTo: 'Every supported .doc.mjs object',
17
17
  fields: [
18
18
  {
19
19
  name: 'placement',
20
20
  type: 'DocPlacement',
21
21
  description:
22
- 'Requests one canonical parent in the docs graph. Not read yet: a topic that sets it fails to load.',
22
+ "Names the doc's one parent in the docs tree: a namespace of the same package, one of its slots, and an order. Read for every guide, the CLI's and each integration's: a guide with `placement` gets a route in the tree instead of a flat topic name, and cannot also `replaces` or `extends` a topic. In the CLI's own topic directory a topic that sets it fails to load: the CLI keeps its guides in its docs tree directory. Commands, API functions, schemas, and enums do not set it: the tree adopts each by its `namespace`.",
23
23
  fields: [
24
24
  {
25
25
  name: 'placement.parent',
26
26
  type: 'string',
27
- description: 'Stable reference to the requested parent namespace.',
27
+ description:
28
+ 'The parent namespace: `namespace:<name>` in the same package.',
28
29
  required: true,
29
30
  },
30
31
  {
31
32
  name: 'placement.slot',
32
33
  type: 'string',
33
- description: 'Named slot owned by the parent namespace.',
34
+ description:
35
+ "A slot the parent namespace declares; it must accept this doc's kind. Optional when the parent has one slot.",
34
36
  },
35
37
  {
36
38
  name: 'placement.order',
@@ -43,7 +45,7 @@ export const doc = {
43
45
  name: 'aliases',
44
46
  type: 'string[]',
45
47
  description:
46
- 'Prior names or routes the docs graph will keep resolving to this doc, without creating another identity. Not read yet: a topic that sets it fails to load.',
48
+ 'Prior names or routes the docs tree will keep resolving to this doc, without creating another identity. Not read yet: a topic that sets it fails to load.',
47
49
  },
48
50
  {
49
51
  name: 'audience',
@@ -56,7 +58,7 @@ export const doc = {
56
58
  notes: [
57
59
  {
58
60
  type: 'prose',
59
- text: 'Unknown fields: `component`, `function`, `generic`, `schema`, `command` and `enum` docs accept a field they do not know, and nothing reads it, so a doc written for a newer CLI still loads here. `page`, `block` and `namespace` docs refuse one. Sections and content blocks refuse one in every doc.',
61
+ text: 'Unknown fields: `component`, `function`, `generic`, `schema`, `command` and `enum` docs accept a field they do not know, and nothing reads it, so a doc written for a newer CLI still loads here. `page`, `block` and `namespace` docs refuse one, as do `theme` descriptors. Sections and content blocks refuse one in every doc.',
60
62
  },
61
63
  ],
62
64
  };
@@ -31,14 +31,15 @@ export interface DocPlacement {
31
31
  }
32
32
 
33
33
  /**
34
- * Graph metadata shared by every authored doc kind. Reserved for the docs
35
- * graph, which is not built yet: nothing reads these fields, and a reference
36
- * topic that sets one fails to load.
34
+ * Tree metadata shared by every authored doc kind. The docs tree reads
35
+ * `placement` for every guide, the CLI's and each integration's
36
+ * (spec:AST-046); nothing reads `aliases` or `audience` yet. A reference topic
37
+ * outside the docs tree that sets one fails to load.
37
38
  */
38
39
  export interface AuthoredDocGraphFields {
39
- /** Requested canonical parent in the docs graph. Not read yet. */
40
+ /** The doc's one parent in the docs tree: a namespace of its own package. */
40
41
  placement?: DocPlacement;
41
- /** Prior routes or names the docs graph will keep resolving. Not read yet. */
42
+ /** Prior routes or names the docs tree will keep resolving. Not read yet. */
42
43
  aliases?: string[];
43
44
  /** Docs bundle audience; omit for public docs. Not read yet. */
44
45
  audience?: DocAudience;
@@ -54,7 +54,7 @@ export const doc = {
54
54
  name: 'namespace',
55
55
  type: 'string',
56
56
  description:
57
- "Docs namespace path. Defaults to 'cli' when applied by the docs index.",
57
+ "Optional in the type, but every doc the CLI ships declares it. The group that reads this doc. The CLI's commands use 'cli/commands', which the docs tree adopts: each is the leaf `cli/commands/<name>`. Every command doc the CLI ships declares one, and `astryx doctor` fails on one that is missing or that nothing reads.",
58
58
  },
59
59
  {
60
60
  name: 'aliases',
@@ -65,7 +65,7 @@ export interface CommandDoc extends AuthoredDocGraphFields {
65
65
  summary: string;
66
66
  /** Longer help body / when-to-use. */
67
67
  description?: string;
68
- /** Docs namespace path. Defaults to 'cli' when applied by the docs index. */
68
+ /** The group that reads this doc. The CLI's commands use 'cli/commands', which the docs tree adopts: each is the leaf `cli/commands/<name>`. Every command doc the CLI ships declares one, and `astryx doctor` fails on one that is missing or that nothing reads. */
69
69
  namespace?: string;
70
70
  /** Alternate slugs that also resolve to this doc. */
71
71
  aliases?: string[];
@@ -81,7 +81,7 @@ export interface CommandDoc extends AuthoredDocGraphFields {
81
81
  examples?: CommandExampleDoc[];
82
82
  /** Documented exit codes. */
83
83
  exitCodes?: {code: number; when: string}[];
84
- /** Related command names. */
84
+ /** Related command names; the CLI links each to its doc. */
85
85
  related?: string[];
86
86
  /** Freeform prose/notes. */
87
87
  notes?: ReferenceContentBlock[];
@@ -146,10 +146,10 @@ export interface ComponentBaseDoc extends AuthoredDocGraphFields {
146
146
  /**
147
147
  * The documentation type for a component directory's {Name}.doc.mjs file.
148
148
  *
149
- * Every .doc.mjs must export a single `docs` constant of this type:
149
+ * Every new .doc.mjs default-exports a stamped object of this type:
150
150
  *
151
151
  * /\*\* \@type \{import('@astryxdesign/cli/authoring').ComponentDoc\} *\/
152
- * export const docs = \{ ... \};
152
+ * export default \{ type: 'component', ... \};
153
153
  *
154
154
  * Use SingleComponentDoc (with `props`) for single-component directories.
155
155
  * Use MultiComponentDoc (with `components`) for multi-component directories.
@@ -1,7 +1,7 @@
1
1
  // Copyright (c) Meta Platforms, Inc. and affiliates.
2
2
 
3
3
  /**
4
- * @file Tests for the new authoring doc-types (schema/command/enum) and the
4
+ * @file Tests for the new authoring doc-types (schema/command/enum/theme) and the
5
5
  * generalized `function` doc (hooks + CLI/API functions sharing the schema).
6
6
  */
7
7
 
@@ -12,6 +12,7 @@ import {
12
12
  parseCommand,
13
13
  parseEnum,
14
14
  parseFunction,
15
+ parseTheme,
15
16
  } from '../index.mjs';
16
17
 
17
18
  describe('SchemaDoc', () => {
@@ -22,13 +23,21 @@ describe('SchemaDoc', () => {
22
23
  description: 'Project config.',
23
24
  appliesTo: 'astryx.config.{ts,mjs,js}',
24
25
  fields: [
25
- {name: 'integrations', type: 'string[]', description: 'Packages to load.'},
26
+ {
27
+ name: 'integrations',
28
+ type: 'string[]',
29
+ description: 'Packages to load.',
30
+ },
26
31
  {
27
32
  name: 'hooks',
28
33
  type: 'object',
29
34
  description: 'Lifecycle hooks.',
30
35
  fields: [
31
- {name: 'hooks.postCodemod', type: 'PostCodemodHook[]', description: 'Runs after codemods.'},
36
+ {
37
+ name: 'hooks.postCodemod',
38
+ type: 'PostCodemodHook[]',
39
+ description: 'Runs after codemods.',
40
+ },
32
41
  ],
33
42
  },
34
43
  ],
@@ -63,8 +72,16 @@ describe('CommandDoc', () => {
63
72
  fn: 'search',
64
73
  args: [{name: 'query', param: 'query', required: true}],
65
74
  options: [
66
- {flag: '--type <domain>', param: 'options.type', choices: ['component', 'hook']},
67
- {flag: '--json', cliOnly: true, description: 'Emit the typed JSON envelope.'},
75
+ {
76
+ flag: '--type <domain>',
77
+ param: 'options.type',
78
+ choices: ['component', 'hook'],
79
+ },
80
+ {
81
+ flag: '--json',
82
+ cliOnly: true,
83
+ description: 'Emit the typed JSON envelope.',
84
+ },
68
85
  ],
69
86
  examples: [{label: 'Terminal', cli: 'astryx search button --json'}],
70
87
  exitCodes: [{code: 1, when: 'invalid --type'}],
@@ -90,6 +107,29 @@ describe('EnumDoc', () => {
90
107
  });
91
108
  });
92
109
 
110
+ describe('ThemeDoc', () => {
111
+ const doc = {
112
+ type: 'theme',
113
+ name: 'ocean',
114
+ displayName: 'Ocean',
115
+ description: 'Cool blue surfaces with crisp contrast.',
116
+ maintained: true,
117
+ };
118
+
119
+ it('accepts a complete theme descriptor and dispatches through parseDoc', () => {
120
+ expect(parseTheme(doc)).toEqual(doc);
121
+ expect(parseDoc(doc)).toEqual(doc);
122
+ });
123
+
124
+ it('rejects non-kebab identity and missing required metadata', () => {
125
+ expect(() => parseTheme({...doc, name: 'OceanTheme'})).toThrow(
126
+ /lowercase kebab-case/,
127
+ );
128
+ const {maintained: _maintained, ...missingMaintained} = doc;
129
+ expect(() => parseTheme(missingMaintained)).toThrow(/maintained/);
130
+ });
131
+ });
132
+
93
133
  describe('generalized FunctionDoc', () => {
94
134
  it('accepts an API function whose returns are envelope entries (no field name)', () => {
95
135
  const apiFn = {
@@ -98,7 +138,9 @@ describe('generalized FunctionDoc', () => {
98
138
  name: 'search',
99
139
  displayName: 'search()',
100
140
  importPath: '@astryxdesign/cli/api',
101
- params: [{name: 'query', type: 'string', description: 'Term.', required: true}],
141
+ params: [
142
+ {name: 'query', type: 'string', description: 'Term.', required: true},
143
+ ],
102
144
  returns: [{type: 'search', description: 'query + ranked results[]'}],
103
145
  throws: [{code: 'ERR_INVALID_ARGUMENT', when: 'empty query'}],
104
146
  };
@@ -49,7 +49,7 @@ export const doc = {
49
49
  name: 'namespace',
50
50
  type: 'string',
51
51
  description:
52
- "Docs namespace path. Defaults to 'cli' when applied by the docs index.",
52
+ "Optional in the type, but every doc the CLI ships declares it. The group that reads this doc. The CLI's enums use 'cli/api', which the docs tree adopts by kind: each is the leaf `cli/api/enums/<name>`. Every enum doc the CLI ships declares one, and `astryx doctor` fails on one that is missing or that nothing reads.",
53
53
  },
54
54
  {
55
55
  name: 'aliases',
@@ -32,7 +32,7 @@ export interface EnumDoc extends AuthoredDocGraphFields {
32
32
  displayName: string;
33
33
  /** One-line summary shown in listings. */
34
34
  description: string;
35
- /** Docs namespace path. Defaults to 'cli' when applied by the docs index. */
35
+ /** The group that reads this doc. The CLI's enums use 'cli/api', which the docs tree adopts by kind: each is the leaf `cli/api/enums/<name>`. Every enum doc the CLI ships declares one, and `astryx doctor` fails on one that is missing or that nothing reads. */
36
36
  namespace?: string;
37
37
  /** Alternate slugs that also resolve to this doc. */
38
38
  aliases?: string[];
@@ -57,7 +57,7 @@ export const doc = {
57
57
  name: 'namespace',
58
58
  type: 'string',
59
59
  description:
60
- "Docs namespace path. Defaults (e.g. 'cli/api') applied by the docs index.",
60
+ "Optional in the type, but every doc the CLI ships declares it. The group that reads this doc. The CLI's API functions use 'cli/api', which the docs tree adopts by kind: each is the leaf `cli/api/functions/<name>`. Every function doc the CLI ships declares one, and `astryx doctor` fails on one that is missing or that nothing reads.",
61
61
  },
62
62
  {
63
63
  name: 'aliases',
@@ -201,7 +201,8 @@ export const doc = {
201
201
  {
202
202
  name: 'related',
203
203
  type: 'string[]',
204
- description: 'Related function/command names.',
204
+ description:
205
+ 'Related function names; the CLI links each to its doc. Name the CLI command with `command`, not here.',
205
206
  },
206
207
  {
207
208
  name: 'relatedComponents',
@@ -62,7 +62,7 @@ export interface FunctionDoc extends AuthoredDocGraphFields {
62
62
  summary?: string;
63
63
  /** Longer description. */
64
64
  description?: string;
65
- /** Docs namespace path. Defaults (e.g. 'cli/api') applied by the docs index. */
65
+ /** The group that reads this doc. The CLI's API functions use 'cli/api', which the docs tree adopts by kind: each is the leaf `cli/api/functions/<name>`. Every function doc the CLI ships declares one, and `astryx doctor` fails on one that is missing or that nothing reads. */
66
66
  namespace?: string;
67
67
  /** Alternate slugs that also resolve to this doc. */
68
68
  aliases?: string[];
@@ -84,7 +84,8 @@ export interface FunctionDoc extends AuthoredDocGraphFields {
84
84
  usage?: UsageDoc;
85
85
  /** The CLI command that wraps this function, e.g. 'search'. */
86
86
  command?: string;
87
- /** Related function/command names. */
87
+ /** Related function names; the CLI links each to its doc. Name the CLI
88
+ * command with `command`, not here. */
88
89
  related?: string[];
89
90
  /** Component names this is commonly used with (hooks). */
90
91
  relatedComponents?: string[];
@@ -23,10 +23,10 @@ import type {
23
23
  * Standalone hooks (e.g. useMediaQuery, useFocusTrap, useOverflow) get
24
24
  * their own {hookName}.doc.mjs file and use this type.
25
25
  *
26
- * Every hook .doc.mjs must export a single `docs` constant:
26
+ * Every new hook .doc.mjs default-exports a stamped object:
27
27
  *
28
28
  * /\*\* @type {import('@astryxdesign/cli/authoring').HookDoc} \*\/
29
- * export const docs = { ... };
29
+ * export default { type: 'function', ... };
30
30
  */
31
31
  export interface HookDoc extends AuthoredDocGraphFields {
32
32
  /** Doc-kind discriminant for the stamped default-export format
@@ -49,7 +49,7 @@ const EXAMPLES = Object.fromEntries(
49
49
 
50
50
  describe('load check vs published type', () => {
51
51
  it('locks every doc kind', () => {
52
- const source = ['_schema.mjs', 'template/parse.mjs']
52
+ const source = ['_schema.mjs', 'template/parse.mjs', 'theme/parse.mjs']
53
53
  .map(file => fs.readFileSync(path.join(HERE, file), 'utf8'))
54
54
  .join('\n');
55
55
  expect(Object.keys(LOCKS).sort()).toEqual([...KINDS].sort());
@@ -57,6 +57,7 @@ describe('load check vs published type', () => {
57
57
  ...Object.values(LOCKS),
58
58
  '_AuthoredDocKindDriftLock',
59
59
  '_HookDocIsFunctionDocLock',
60
+ '_ThemeDocDriftLock',
60
61
  ];
61
62
  for (const lock of locks) {
62
63
  expect(source, `${lock} is missing`).toMatch(
@@ -70,7 +71,7 @@ describe('load check vs published type', () => {
70
71
  expect(() => parseDoc(EXAMPLES[kind], `${kind}.doc.mjs`)).not.toThrow();
71
72
  }
72
73
  expect(() => parseDoc({type: 'widget', name: 'x'}, 'x.doc.mjs')).toThrow(
73
- /unsupported type "widget"/,
74
+ /x\.doc\.mjs is invalid/u,
74
75
  );
75
76
  });
76
77
  });