@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
package/api/docs/docs.mjs CHANGED
@@ -3,24 +3,35 @@
3
3
  /**
4
4
  * @file Programmatic API for the docs command.
5
5
  *
6
- * Dispatcher + barrel. `docs()` routes by argument shape into one of three
6
+ * Dispatcher + barrel. `docs()` routes by argument shape into one of five
7
7
  * leaves, each projecting into a single { type, data } envelope:
8
8
  *
9
- * docs() -> list -> docs.list
10
- * docs(topic) -> detail -> docs.detail
11
- * docs(topic, section) -> section -> docs.detail.section
9
+ * docs() -> list -> docs.list
10
+ * docs(topic) -> detail -> docs.detail
11
+ * docs(topic, undefined, {index: true}) -> index -> docs.index
12
+ * docs(topic, section) -> section -> docs.detail.section
13
+ * docs(route) -> node -> docs.node
12
14
  *
13
- * The leaves live in list/, detail/, and detail/section/; the discovery,
14
- * overlay loading, and topic resolution they share sit in _adapter.mjs. This
15
- * module keeps the same `docs` export (and re-exports the leaves) so
16
- * api/index.mjs and the CLI consumer import from here unchanged.
15
+ * A topic read returns the whole doc, as it always has; `index` returns its
16
+ * sections, so a reader can open one by its key (spec:AST-047). The CLI's text
17
+ * view lists the sections by default. A route names a node
18
+ * of the docs tree (spec:AST-046): a namespace lists its children, a guide the
19
+ * tree places reads like any topic, and a typed doc prints its content. The
20
+ * leaves
21
+ * live in list/, index/, detail/, detail/section/, and node/; the discovery,
22
+ * overlay loading, and resolution they share sit in _adapter.mjs.
17
23
  */
18
24
 
19
25
  import {list} from './list/list.mjs';
26
+ import {index} from './index/index.mjs';
20
27
  import {detail} from './detail/detail.mjs';
21
28
  import {section as sectionLeaf} from './detail/section/section.mjs';
29
+ import {node as nodeLeaf, nodeView} from './node/node.mjs';
30
+ import {resolveDocsArgument} from './_adapter.mjs';
31
+ import {AstryxError} from '../error.mjs';
32
+ import {ERROR_CODES} from '../../foundation/response/error-codes.mjs';
22
33
 
23
- export {list, detail, sectionLeaf as section};
34
+ export {list, index, detail, sectionLeaf as section, nodeLeaf as node};
24
35
 
25
36
  /**
26
37
  * @param {string} [topic]
@@ -29,15 +40,47 @@ export {list, detail, sectionLeaf as section};
29
40
  * @param {string} [options.lang]
30
41
  * @param {boolean} [options.zh]
31
42
  * @param {boolean} [options.dense]
43
+ * @param {boolean} [options.index] return the topic's section index instead of
44
+ * the whole doc
32
45
  * @param {string} [options.cwd]
33
46
  * @returns {Promise<
34
47
  * import('./docs.type.mjs').DocsListResponse |
48
+ * import('./docs.type.mjs').DocsIndexResponse |
35
49
  * import('./docs.type.mjs').DocsDetailResponse |
36
- * import('./docs.type.mjs').DocsDetailSectionResponse
50
+ * import('./docs.type.mjs').DocsDetailSectionResponse |
51
+ * import('./docs.type.mjs').DocsNodeResponse
37
52
  * >}
38
53
  */
39
54
  export async function docs(topic, section, options = {}) {
40
55
  if (!topic) return list(options);
56
+ const found = await resolveDocsArgument(topic, options);
57
+ if (found.kind === 'node') {
58
+ // A namespace or a typed doc has no sections: it is one read. `--index`
59
+ // asks for what the node read already is.
60
+ if (section) {
61
+ throw new AstryxError(
62
+ `"${found.node.route}" has no sections. ${
63
+ found.node.kind === 'namespace'
64
+ ? 'Open one of its children instead.'
65
+ : `Read it whole: astryx docs ${found.node.route}.`
66
+ }`,
67
+ found.node.kind === 'namespace'
68
+ ? found.node.slots.flatMap(slot =>
69
+ slot.children.map(route => ({
70
+ name: route,
71
+ reason: found.tree.get(route)?.summary ?? '',
72
+ })),
73
+ )
74
+ : [{name: found.node.route, reason: found.node.summary}],
75
+ ERROR_CODES.ERR_UNKNOWN_SECTION,
76
+ );
77
+ }
78
+ return {
79
+ type: 'docs.node',
80
+ data: await nodeView(found.catalog, found.tree, found.node),
81
+ };
82
+ }
41
83
  if (section) return sectionLeaf(topic, section, options);
84
+ if (options.index) return index(topic, options);
42
85
  return detail(topic, options);
43
86
  }
@@ -2,11 +2,26 @@
2
2
  // DO NOT EDIT — run `pnpm sync:api-types` to regenerate.
3
3
 
4
4
  /**
5
- * xds --json docs
5
+ * astryx --json docs
6
6
  */
7
7
  export type DocsListResponse = {
8
8
  type: "docs.list";
9
+ /**
10
+ * every topic, each readable as a topic
11
+ */
9
12
  data: DocsListEntry[];
13
+ /**
14
+ * `namespaces`: the docs tree's top-level namespaces, each opened by its
15
+ * `topic` as a docs.node; `notLoaded`: each package whose doc files did not
16
+ * load, and why (its docs are withdrawn)
17
+ */
18
+ meta?: {
19
+ namespaces?: DocsListNamespace[];
20
+ notLoaded?: Array<{
21
+ package: string;
22
+ message: string;
23
+ }>;
24
+ } | undefined;
10
25
  };
11
26
  export type DocsListEntry = {
12
27
  topic: string;
@@ -23,18 +38,214 @@ export type DocsListEntry = {
23
38
  replaces?: string | undefined;
24
39
  };
25
40
  /**
26
- * xds --json docs <topic>
41
+ * A top-level namespace of the docs tree, as `astryx docs --json` lists it in
42
+ * `meta.namespaces`.
43
+ */
44
+ export type DocsListNamespace = {
45
+ /**
46
+ * its route, the argument that opens it
47
+ */
48
+ topic: string;
49
+ description: string;
50
+ /**
51
+ * the package that owns it
52
+ */
53
+ package: string;
54
+ };
55
+ /**
56
+ * astryx --json docs <topic> --index
57
+ */
58
+ export type DocsIndexResponse = {
59
+ type: "docs.index";
60
+ data: DocsIndex;
61
+ };
62
+ /**
63
+ * astryx --json docs <topic>
27
64
  */
28
65
  export type DocsDetailResponse = {
29
66
  type: "docs.detail";
30
- data: import("@astryxdesign/cli/authoring").ReferenceDoc;
67
+ /**
68
+ * the whole doc, and the moves from it
69
+ */
70
+ data: DocsReadDoc & {
71
+ links: DocsLinks;
72
+ };
73
+ };
74
+ /**
75
+ * A topic section as a read returns it. A read inlines each token reference
76
+ * and each `reference` block the author wrote, so its content holds only the
77
+ * stable ReferenceContentBlock kinds.
78
+ */
79
+ export type DocsReadSection = Omit<import("@astryxdesign/cli/authoring").ReferenceSection, "content"> & {
80
+ content: import("@astryxdesign/cli/authoring").ReferenceContentBlock[];
81
+ };
82
+ /**
83
+ * A topic as a read returns it: every section a {@link DocsReadSection}.
84
+ */
85
+ export type DocsReadDoc = Omit<import("@astryxdesign/cli/authoring").ReferenceDoc, "sections"> & {
86
+ sections: DocsReadSection[];
31
87
  };
32
88
  /**
33
- * xds --json docs <topic> <section>
89
+ * The doc a link opens (spec:AST-047 FR9). A docs read resolves every link:
90
+ * an inline `{@link <target>}` reads as `link.command`, a `reference` block in
91
+ * a namespace doc carries `link` (null when the target names no doc), and each
92
+ * `workflow` step carries `links`, one per reference. A topic read inlines a
93
+ * section's `reference` block as the doc it includes, then a line naming where
94
+ * that comes from and the command that opens it.
95
+ */
96
+ export type DocLink = import("../../foundation/doc-compiler/links.mjs").DocLink;
97
+ /**
98
+ * One move: a whole `astryx docs` command a reader can run as is.
99
+ */
100
+ export type DocsCommand = "astryx docs" | `astryx docs ${string}`;
101
+ /**
102
+ * The moves a docs read offers (spec:AST-047). Every read but the topic list
103
+ * carries them.
104
+ */
105
+ export type DocsLinks = {
106
+ /**
107
+ * opens the level the read sits in: a section's
108
+ * topic index, a node's parent namespace, or the topic list
109
+ */
110
+ up: DocsCommand;
111
+ /**
112
+ * opens the item before it at its level: the
113
+ * previous section of its topic, or the previous node in its parent's slot
114
+ */
115
+ previous?: DocsCommand | undefined;
116
+ /**
117
+ * opens the item after it at its level
118
+ */
119
+ next?: DocsCommand | undefined;
120
+ /**
121
+ * opens each doc a typed doc names: a
122
+ * function's command, a command's function, and the docs it lists as
123
+ * related
124
+ */
125
+ related?: DocsCommand[] | undefined;
126
+ };
127
+ /**
128
+ * The section index of one topic: what the topic is, and the key each section
129
+ * is read by.
130
+ */
131
+ export type DocsIndex = {
132
+ /**
133
+ * the topic
134
+ */
135
+ name: string;
136
+ title: string;
137
+ description: string;
138
+ sections: DocsIndexSection[];
139
+ /**
140
+ * the moves from the index
141
+ */
142
+ links: DocsLinks;
143
+ };
144
+ export type DocsIndexSection = {
145
+ /**
146
+ * stable key; pass it as the section argument
147
+ */
148
+ id: string;
149
+ title: string;
150
+ /**
151
+ * the section's first line of text, at most 240
152
+ * characters
153
+ */
154
+ summary: string;
155
+ };
156
+ /**
157
+ * astryx --json docs <topic> <section>
34
158
  */
35
159
  export type DocsDetailSectionResponse = {
36
160
  type: "docs.detail.section";
37
- data: import("@astryxdesign/cli/authoring").ReferenceSection;
161
+ /**
162
+ * the section, and the moves from it: up to its topic's index, and across to
163
+ * the sections before and after it
164
+ */
165
+ data: DocsReadSection & {
166
+ links: DocsLinks;
167
+ };
168
+ };
169
+ /**
170
+ * astryx --json docs <route>, for a namespace or a typed doc in the docs tree
171
+ */
172
+ export type DocsNodeResponse = {
173
+ type: "docs.node";
174
+ data: DocsNode;
175
+ };
176
+ /**
177
+ * One node of the docs tree.
178
+ */
179
+ export type DocsNode = {
180
+ /**
181
+ * the doc's DocId, built from its provider's
182
+ * ProviderId, kind, and name (see the provider-identity authoring doc);
183
+ * unchanged when the node moves. Always present; null on a generated level,
184
+ * such as `cli/api/functions`, which has no authored doc
185
+ */
186
+ id: string | null;
187
+ /**
188
+ * pass it to `astryx docs`
189
+ */
190
+ route: string;
191
+ /**
192
+ * `namespace`, or the typed doc's kind: `command`,
193
+ * `function`, `schema`, or `enum`
194
+ */
195
+ kind: string;
196
+ /**
197
+ * the package that owns the node
198
+ */
199
+ package: string;
200
+ title: string;
201
+ summary: string;
202
+ /**
203
+ * the namespaces above it, top first
204
+ */
205
+ breadcrumb: DocsNodeLink[];
206
+ /**
207
+ * a namespace's slots that hold children, in
208
+ * order; empty for a typed doc
209
+ */
210
+ slots: DocsNodeSlot[];
211
+ /**
212
+ * a typed doc's content; empty for a namespace
213
+ */
214
+ content: import("@astryxdesign/cli/authoring").ReferenceContentBlock[];
215
+ /**
216
+ * the moves from the node: up to its parent (the
217
+ * topic list, for a top-level namespace), and across to its neighbors in its
218
+ * parent's slot
219
+ */
220
+ links: DocsLinks;
221
+ };
222
+ export type DocsNodeLink = {
223
+ route: string;
224
+ title: string;
225
+ };
226
+ export type DocsNodeSlot = {
227
+ /**
228
+ * the slot's key in its namespace
229
+ */
230
+ name: string;
231
+ title: string;
232
+ /**
233
+ * in reading order
234
+ */
235
+ children: DocsNodeChild[];
236
+ };
237
+ export type DocsNodeChild = {
238
+ /**
239
+ * pass it to `astryx docs` to go one level down
240
+ */
241
+ route: string;
242
+ /**
243
+ * the last segment of its route
244
+ */
245
+ name: string;
246
+ kind: string;
247
+ title: string;
248
+ summary: string;
38
249
  };
39
250
  /**
40
251
  * Options for `docs()`.
@@ -43,6 +254,11 @@ export type DocsOptions = {
43
254
  lang?: string | undefined;
44
255
  zh?: boolean | undefined;
45
256
  dense?: boolean | undefined;
257
+ /**
258
+ * return a topic's section index instead of its
259
+ * whole doc
260
+ */
261
+ index?: boolean | undefined;
46
262
  /**
47
263
  * project directory whose configured integrations
48
264
  * contribute topics; defaults to process.cwd()
@@ -4,19 +4,26 @@
4
4
  * @file Colocated types for the `docs` command — source of truth for the docs
5
5
  * command JSON responses. `types/docs.d.ts` re-exports these.
6
6
  *
7
- * Invocation -> type discriminator
7
+ * Invocation -> type discriminator
8
8
  * ------------------------------------------------------------
9
- * xds --json docs -> docs.list
10
- * xds --json docs <topic> -> docs.detail
11
- * xds --json docs <topic> <section> -> docs.detail.section
12
- * (unknown topic/section) -> CLIError
9
+ * astryx --json docs -> docs.list
10
+ * astryx --json docs <topic> -> docs.detail
11
+ * astryx --json docs <topic> --index -> docs.index
12
+ * astryx --json docs <topic> <section> -> docs.detail.section
13
+ * astryx --json docs <route> -> docs.node (a namespace or a
14
+ * typed doc in the docs tree)
15
+ * (unknown topic/section) -> CLIError
13
16
  */
14
17
 
15
18
  /**
16
- * xds --json docs
19
+ * astryx --json docs
17
20
  * @typedef {object} DocsListResponse
18
21
  * @property {'docs.list'} type
19
- * @property {DocsListEntry[]} data
22
+ * @property {DocsListEntry[]} data every topic, each readable as a topic
23
+ * @property {{namespaces?: DocsListNamespace[], notLoaded?: Array<{package: string, message: string}>}} [meta]
24
+ * `namespaces`: the docs tree's top-level namespaces, each opened by its
25
+ * `topic` as a docs.node; `notLoaded`: each package whose doc files did not
26
+ * load, and why (its docs are withdrawn)
20
27
  */
21
28
 
22
29
  /**
@@ -30,17 +37,150 @@
30
37
  */
31
38
 
32
39
  /**
33
- * xds --json docs <topic>
40
+ * A top-level namespace of the docs tree, as `astryx docs --json` lists it in
41
+ * `meta.namespaces`.
42
+ * @typedef {object} DocsListNamespace
43
+ * @property {string} topic its route, the argument that opens it
44
+ * @property {string} description
45
+ * @property {string} package the package that owns it
46
+ */
47
+
48
+ /**
49
+ * astryx --json docs <topic> --index
50
+ * @typedef {object} DocsIndexResponse
51
+ * @property {'docs.index'} type
52
+ * @property {DocsIndex} data
53
+ */
54
+
55
+ /**
56
+ * astryx --json docs <topic>
34
57
  * @typedef {object} DocsDetailResponse
35
58
  * @property {'docs.detail'} type
36
- * @property {import('@astryxdesign/cli/authoring').ReferenceDoc} data
59
+ * @property {DocsReadDoc & {links: DocsLinks}} data
60
+ * the whole doc, and the moves from it
61
+ */
62
+
63
+ /**
64
+ * A topic section as a read returns it. A read inlines each token reference
65
+ * and each `reference` block the author wrote, so its content holds only the
66
+ * stable ReferenceContentBlock kinds.
67
+ * @typedef {Omit<import('@astryxdesign/cli/authoring').ReferenceSection, 'content'>
68
+ * & {content: import('@astryxdesign/cli/authoring').ReferenceContentBlock[]}} DocsReadSection
69
+ */
70
+
71
+ /**
72
+ * A topic as a read returns it: every section a {@link DocsReadSection}.
73
+ * @typedef {Omit<import('@astryxdesign/cli/authoring').ReferenceDoc, 'sections'>
74
+ * & {sections: DocsReadSection[]}} DocsReadDoc
75
+ */
76
+
77
+ /**
78
+ * The doc a link opens (spec:AST-047 FR9). A docs read resolves every link:
79
+ * an inline `{@link <target>}` reads as `link.command`, a `reference` block in
80
+ * a namespace doc carries `link` (null when the target names no doc), and each
81
+ * `workflow` step carries `links`, one per reference. A topic read inlines a
82
+ * section's `reference` block as the doc it includes, then a line naming where
83
+ * that comes from and the command that opens it.
84
+ * @typedef {import('../../foundation/doc-compiler/links.mjs').DocLink} DocLink
85
+ */
86
+
87
+ /**
88
+ * One move: a whole `astryx docs` command a reader can run as is.
89
+ * @typedef {'astryx docs' | `astryx docs ${string}`} DocsCommand
90
+ */
91
+
92
+ /**
93
+ * The moves a docs read offers (spec:AST-047). Every read but the topic list
94
+ * carries them.
95
+ * @typedef {object} DocsLinks
96
+ * @property {DocsCommand} up opens the level the read sits in: a section's
97
+ * topic index, a node's parent namespace, or the topic list
98
+ * @property {DocsCommand} [previous] opens the item before it at its level: the
99
+ * previous section of its topic, or the previous node in its parent's slot
100
+ * @property {DocsCommand} [next] opens the item after it at its level
101
+ * @property {DocsCommand[]} [related] opens each doc a typed doc names: a
102
+ * function's command, a command's function, and the docs it lists as
103
+ * related
37
104
  */
38
105
 
39
106
  /**
40
- * xds --json docs <topic> <section>
107
+ * The section index of one topic: what the topic is, and the key each section
108
+ * is read by.
109
+ * @typedef {object} DocsIndex
110
+ * @property {string} name the topic
111
+ * @property {string} title
112
+ * @property {string} description
113
+ * @property {DocsIndexSection[]} sections
114
+ * @property {DocsLinks} links the moves from the index
115
+ */
116
+
117
+ /**
118
+ * @typedef {object} DocsIndexSection
119
+ * @property {string} id stable key; pass it as the section argument
120
+ * @property {string} title
121
+ * @property {string} summary the section's first line of text, at most 240
122
+ * characters
123
+ */
124
+
125
+ /**
126
+ * astryx --json docs <topic> <section>
41
127
  * @typedef {object} DocsDetailSectionResponse
42
128
  * @property {'docs.detail.section'} type
43
- * @property {import('@astryxdesign/cli/authoring').ReferenceSection} data
129
+ * @property {DocsReadSection & {links: DocsLinks}} data
130
+ * the section, and the moves from it: up to its topic's index, and across to
131
+ * the sections before and after it
132
+ */
133
+
134
+ /**
135
+ * astryx --json docs <route>, for a namespace or a typed doc in the docs tree
136
+ * @typedef {object} DocsNodeResponse
137
+ * @property {'docs.node'} type
138
+ * @property {DocsNode} data
139
+ */
140
+
141
+ /**
142
+ * One node of the docs tree.
143
+ * @typedef {object} DocsNode
144
+ * @property {string | null} id the doc's DocId, built from its provider's
145
+ * ProviderId, kind, and name (see the provider-identity authoring doc);
146
+ * unchanged when the node moves. Always present; null on a generated level,
147
+ * such as `cli/api/functions`, which has no authored doc
148
+ * @property {string} route pass it to `astryx docs`
149
+ * @property {string} kind `namespace`, or the typed doc's kind: `command`,
150
+ * `function`, `schema`, or `enum`
151
+ * @property {string} package the package that owns the node
152
+ * @property {string} title
153
+ * @property {string} summary
154
+ * @property {DocsNodeLink[]} breadcrumb the namespaces above it, top first
155
+ * @property {DocsNodeSlot[]} slots a namespace's slots that hold children, in
156
+ * order; empty for a typed doc
157
+ * @property {import('@astryxdesign/cli/authoring').ReferenceContentBlock[]} content
158
+ * a typed doc's content; empty for a namespace
159
+ * @property {DocsLinks} links the moves from the node: up to its parent (the
160
+ * topic list, for a top-level namespace), and across to its neighbors in its
161
+ * parent's slot
162
+ */
163
+
164
+ /**
165
+ * @typedef {object} DocsNodeLink
166
+ * @property {string} route
167
+ * @property {string} title
168
+ */
169
+
170
+ /**
171
+ * @typedef {object} DocsNodeSlot
172
+ * @property {string} name the slot's key in its namespace
173
+ * @property {string} title
174
+ * @property {DocsNodeChild[]} children in reading order
175
+ */
176
+
177
+ /**
178
+ * @typedef {object} DocsNodeChild
179
+ * @property {string} route pass it to `astryx docs` to go one level down
180
+ * @property {string} name the last segment of its route
181
+ * @property {string} kind
182
+ * @property {string} title
183
+ * @property {string} summary
44
184
  */
45
185
 
46
186
  /**
@@ -49,6 +189,8 @@
49
189
  * @property {string} [lang]
50
190
  * @property {boolean} [zh]
51
191
  * @property {boolean} [dense]
192
+ * @property {boolean} [index] return a topic's section index instead of its
193
+ * whole doc
52
194
  * @property {string} [cwd] project directory whose configured integrations
53
195
  * contribute topics; defaults to process.cwd()
54
196
  */
@@ -0,0 +1,18 @@
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
+ * @param {string} topic
6
+ * @param {object} [options]
7
+ * @param {string} [options.lang]
8
+ * @param {boolean} [options.zh]
9
+ * @param {boolean} [options.dense]
10
+ * @param {string} [options.cwd]
11
+ * @returns {Promise<import('../docs.type.mjs').DocsIndexResponse>}
12
+ */
13
+ export function index(topic: string, options?: {
14
+ lang?: string | undefined;
15
+ zh?: boolean | undefined;
16
+ dense?: boolean | undefined;
17
+ cwd?: string | undefined;
18
+ }): Promise<import("../docs.type.mjs").DocsIndexResponse>;
@@ -0,0 +1,40 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @file docs.index leaf — the section index of one topic.
5
+ *
6
+ * @input A topic name plus optional {lang, zh, dense, cwd}. Resolves the topic
7
+ * via the shared adapter and reads its lowered compiled node; nothing is
8
+ * linked, since the index never inlines a token reference.
9
+ * @output { type: 'docs.index', data: DocsIndex } — the topic's name, title and
10
+ * description and, for each section, the key it is read by, its title, and a
11
+ * one-line summary. Matches `astryx --json docs <topic> --index`.
12
+ * @position Leaf under api/docs: a topic's opt-in progressive read. One section
13
+ * is the section leaf (`docs <topic> <key>`); the whole topic, a plain topic
14
+ * read, is the detail leaf.
15
+ */
16
+
17
+ import {indexView} from '../../../foundation/doc-compiler/lenses.mjs';
18
+ import {resolveTopicDocs, topicLinks} from '../_adapter.mjs';
19
+
20
+ /**
21
+ * @param {string} topic
22
+ * @param {object} [options]
23
+ * @param {string} [options.lang]
24
+ * @param {boolean} [options.zh]
25
+ * @param {boolean} [options.dense]
26
+ * @param {string} [options.cwd]
27
+ * @returns {Promise<import('../docs.type.mjs').DocsIndexResponse>}
28
+ */
29
+ export async function index(topic, options = {}) {
30
+ const {node, entry, catalog} = await resolveTopicDocs(topic, options);
31
+ const view = indexView(node);
32
+ /** @type {import('../docs.type.mjs').DocsIndex} */
33
+ const data = {
34
+ ...view,
35
+ // A guide the docs tree places is read by its route, not its doc name.
36
+ name: entry.tree ? entry.name : view.name,
37
+ links: await topicLinks(catalog, entry),
38
+ };
39
+ return {type: 'docs.index', data};
40
+ }
@@ -0,0 +1,62 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ import {describe, expect, it} from 'vitest';
4
+ import {docs} from '../docs.mjs';
5
+ import {index} from './index.mjs';
6
+ import {loadDocsCatalog} from '../_adapter.mjs';
7
+
8
+ const SLOW = 60_000;
9
+
10
+ describe('docs.index leaf', () => {
11
+ it('lists each section by key, title, and summary', async () => {
12
+ const res = await index('theme');
13
+ expect(res.type).toBe('docs.index');
14
+ expect(res.data).toMatchObject({name: 'theme', title: expect.any(String)});
15
+ const keys = res.data.sections.map(s => s.id);
16
+ expect(new Set(keys).size).toBe(keys.length);
17
+ for (const entry of res.data.sections) {
18
+ expect(Object.keys(entry)).toEqual(['id', 'title', 'summary']);
19
+ expect(entry.summary.length).toBeLessThanOrEqual(240);
20
+ }
21
+ }, SLOW);
22
+
23
+ it('names the sections the full topic has, with the same keys', async () => {
24
+ const full = await docs('theme');
25
+ const {data} = await index('theme');
26
+ expect(data.sections.map(s => [s.id, s.title])).toEqual(
27
+ full.data.sections.map(s => [s.id, s.title]),
28
+ );
29
+ }, SLOW);
30
+
31
+ it('keeps every key the same in every language', async () => {
32
+ const english = (await index('theme')).data.sections.map(s => s.id);
33
+ for (const lang of ['zh', 'dense']) {
34
+ const localized = await index('theme', {lang});
35
+ expect(localized.data.sections.map(s => s.id)).toEqual(english);
36
+ }
37
+ }, SLOW);
38
+
39
+ it('lists keys every section can be read by', async () => {
40
+ const catalog = await loadDocsCatalog();
41
+ for (const entry of catalog.entries()) {
42
+ const {data} = await index(entry.name);
43
+ for (const {id, title} of data.sections) {
44
+ const read = await docs(entry.name, id);
45
+ expect(read.data.title).toBe(title);
46
+ }
47
+ }
48
+ }, SLOW);
49
+ });
50
+
51
+ describe('docs() topic reads', () => {
52
+ it('returns the whole topic by default', async () => {
53
+ const res = await docs('theme');
54
+ expect(res.type).toBe('docs.detail');
55
+ expect(res.data.sections[0].content.length).toBeGreaterThan(0);
56
+ }, SLOW);
57
+
58
+ it('returns the section index on request', async () => {
59
+ const res = await docs('theme', undefined, {index: true});
60
+ expect(res.type).toBe('docs.index');
61
+ }, SLOW);
62
+ });