@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
@@ -15,15 +15,16 @@ import {
15
15
  CORE_PACKAGE,
16
16
  discoverComponents,
17
17
  discoverExternalComponentsGrouped,
18
- discoverIntegrationComponents,
18
+ discoverValidIntegrationComponents,
19
19
  findComponentReadme,
20
+ findExternalComponentDoc,
20
21
  resolveImportPath,
21
22
  resolveIntegrationImportPath,
22
23
  } from '../../../foundation/discovery/component-discovery.mjs';
23
24
  import {discoverExternalPackages} from '../../../foundation/fs/paths.mjs';
24
25
  import {ERROR_CODES} from '../../../foundation/response/error-codes.mjs';
25
26
  import {AstryxError} from '../../error.mjs';
26
- import {loadComponentDoc, loadIntegrationsSafely} from '../_adapter.mjs';
27
+ import {loadComponentDoc, loadIntegrationsSafely, withOwnership} from '../_adapter.mjs';
27
28
 
28
29
  /**
29
30
  * @typedef {import('../component.type.mjs').ComponentListResponse} ComponentListResponse
@@ -31,6 +32,29 @@ import {loadComponentDoc, loadIntegrationsSafely} from '../_adapter.mjs';
31
32
  * @typedef {import('../component.type.mjs').ComponentBriefEntry} ComponentBriefEntry
32
33
  */
33
34
 
35
+ /**
36
+ * The import a legacy `pkg.astryx.docs` component's detail reports, derived the
37
+ * same way (`withOwnership`) so list and detail agree.
38
+ * @param {{name: string, docsDir: string}} ext
39
+ * @param {string} name
40
+ * @param {string} coreDir
41
+ * @param {{zh: boolean, lang: string|null}} docOpts
42
+ * @returns {Promise<string>}
43
+ */
44
+ async function legacyImport(ext, name, coreDir, docOpts) {
45
+ const docPath = findExternalComponentDoc(ext.docsDir, name);
46
+ /** @type {import('../_adapter.mjs').LoadedComponentDoc} */
47
+ let docs = {};
48
+ if (docPath && docPath.endsWith('.doc.mjs')) {
49
+ try {
50
+ docs = await loadComponentDoc(docPath, docOpts);
51
+ } catch {
52
+ // Keep list resilient; validation owns malformed docs.
53
+ }
54
+ }
55
+ return withOwnership(docs, {package: ext.name, sourcePath: null}, name, coreDir).import;
56
+ }
57
+
34
58
  /**
35
59
  * Build the `component.list` envelope. The list taxonomy is collapsed: all
36
60
  * three detail levels emit ONE `component.list` type; the depth rides in
@@ -204,7 +228,8 @@ export async function componentList(
204
228
  const seenIntegration = new Set();
205
229
  for (const integration of loadedIntegrations) {
206
230
  seenIntegration.add(integration.name);
207
- const owned = discoverIntegrationComponents(integration);
231
+ const {components: owned} =
232
+ await discoverValidIntegrationComponents(integration);
208
233
  // Group integration components by their doc `group`, falling back to the
209
234
  // package name. Keys are package-qualified so they never collide with
210
235
  // core groups or each other.
@@ -267,20 +292,24 @@ export async function componentList(
267
292
  k => grouped[k].length > 1 || grouped[k][0] !== k,
268
293
  );
269
294
 
270
- if (hasGroups) {
271
- for (const [group, members] of Object.entries(grouped)) {
272
- listData[`${group} (${ext.name})`] = members.map(n => ({
295
+ /** @param {string[]} names */
296
+ const entriesFor = names =>
297
+ Promise.all(
298
+ names.map(async n => ({
273
299
  name: n,
274
300
  package: ext.name,
275
- }));
301
+ import: await legacyImport(ext, n, coreDir, {zh, lang}),
302
+ })),
303
+ );
304
+
305
+ if (hasGroups) {
306
+ for (const [group, members] of Object.entries(grouped)) {
307
+ listData[`${group} (${ext.name})`] = await entriesFor(members);
276
308
  }
277
309
  } else {
278
310
  const allComps = Object.values(grouped).flat().sort();
279
311
  if (allComps.length > 0) {
280
- listData[`${ext.category} (${ext.name})`] = allComps.map(n => ({
281
- name: n,
282
- package: ext.name,
283
- }));
312
+ listData[`${ext.category} (${ext.name})`] = await entriesFor(allComps);
284
313
  }
285
314
  }
286
315
  }
@@ -11,6 +11,7 @@ export const doc = {
11
11
  type: 'function',
12
12
  kind: 'api',
13
13
  name: 'discover',
14
+ namespace: 'cli/api',
14
15
  displayName: 'discover()',
15
16
  summary: 'Browse and search components from configured external packages.',
16
17
  description:
@@ -41,7 +42,7 @@ export const doc = {
41
42
  name: 'options.components',
42
43
  type: 'boolean',
43
44
  description:
44
- 'List components only. A CLI display flag consumed by the renderer; the programmatic response shape is unchanged.',
45
+ 'In the CLI package list, print every component of each package instead of the first 10. A display flag for the CLI renderer; the programmatic response is unchanged.',
45
46
  },
46
47
  {
47
48
  name: 'options.lang',
@@ -16,22 +16,75 @@
16
16
  */
17
17
  export function loadDocsCatalog(cwd?: string): Promise<DocsCatalog>;
18
18
  /**
19
- * The overlay languages a topic ships for its own file or any extension.
20
- * @param {import('../../foundation/discovery/docs-discovery.mjs').DocsTopicEntry} entry
21
- * @returns {string[]}
19
+ * The CLI's own topics alone, for a check that runs without a project.
20
+ * @returns {DocsCatalog}
22
21
  */
23
- export function overlayLanguages(entry: import("../../foundation/discovery/docs-discovery.mjs").DocsTopicEntry): string[];
22
+ export function builtinCatalog(): DocsCatalog;
24
23
  /**
25
- * One topic, lowered for `lang`: overlaid, extensions merged, keys stamped.
26
- * Memoized per catalog, so a read that references a topic twice loads it once.
27
- * Every read of the catalog shares the memoized node, so it is frozen; the
28
- * lenses hand readers copies.
24
+ * One topic, lowered for `lang` with every link between docs resolved
25
+ * (spec:AST-047 FR9): an inline `{@link <target>}` reads as the command that
26
+ * opens its doc, and a `reference` or `workflow` block carries the doc it
27
+ * names. Memoized per catalog and frozen, like the lowered node.
29
28
  * @param {DocsCatalog} catalog
30
- * @param {import('../../foundation/discovery/docs-discovery.mjs').DocsTopicEntry} entry
29
+ * @param {DocsTopicEntry} entry
31
30
  * @param {string | null} [lang]
32
31
  * @returns {Promise<import('../../foundation/doc-compiler/compile.mjs').CompiledReferenceNode>}
33
32
  */
34
- export function lowerTopic(catalog: DocsCatalog, entry: import("../../foundation/discovery/docs-discovery.mjs").DocsTopicEntry, lang?: string | null): Promise<import("../../foundation/doc-compiler/compile.mjs").CompiledReferenceNode>;
33
+ export function lowerTopic(catalog: DocsCatalog, entry: DocsTopicEntry, lang?: string | null): Promise<import("../../foundation/doc-compiler/compile.mjs").CompiledReferenceNode>;
34
+ /**
35
+ * Each link in a topic that names no doc.
36
+ * @param {DocsCatalog} catalog
37
+ * @param {DocsTopicEntry} entry
38
+ * @returns {Promise<LinkProblem[]>}
39
+ */
40
+ export function topicLinkProblems(catalog: DocsCatalog, entry: DocsTopicEntry): Promise<LinkProblem[]>;
41
+ /**
42
+ * The project's docs tree: the CLI's own docs plus the namespace docs and
43
+ * placed guides the configured integrations ship (spec:AST-046), built once
44
+ * per catalog. Without integration docs it is the CLI's tree, built once per
45
+ * process.
46
+ * @param {DocsCatalog} catalog
47
+ * @param {{fresh?: boolean}} [options] `fresh`: reread the CLI's tree files
48
+ * @returns {Promise<DocsTree>}
49
+ */
50
+ export function projectTree(catalog: DocsCatalog, { fresh }?: {
51
+ fresh?: boolean;
52
+ }): Promise<DocsTree>;
53
+ /**
54
+ * How a doc's links find their targets (spec:AST-047 FR9): a doc in the
55
+ * project's docs tree by its identity, or a flat topic by its provider and
56
+ * name. A target that matches neither is a problem, never a guess.
57
+ * @param {DocsCatalog} catalog
58
+ * @param {string} fromProvider the provider id of the doc the links sit in
59
+ * @returns {Promise<LinkResolver>}
60
+ */
61
+ export function linkResolver(catalog: DocsCatalog, fromProvider: string): Promise<LinkResolver>;
62
+ /**
63
+ * Every link in the project's docs that names no doc: in each topic, each
64
+ * guide the tree places, and each typed doc.
65
+ * @param {DocsCatalog} catalog
66
+ * @param {DocsTree} tree
67
+ * @param {{owner?: string}} [options] `owner`: only the docs this package owns
68
+ * @returns {Promise<string[]>}
69
+ */
70
+ export function docsLinkProblems(catalog: DocsCatalog, tree: DocsTree, { owner }?: {
71
+ owner?: string;
72
+ }): Promise<string[]>;
73
+ /**
74
+ * What \`astryx doctor integration docs\` checks in one integration's docs: the
75
+ * docs tree they build beside the CLI's (namespaces, placements, routes) and
76
+ * every link in them (spec:AST-046, spec:AST-047).
77
+ * @param {{name: string}} integration
78
+ * @param {{records: import('../../foundation/discovery/docs-discovery.mjs').DocsTopicRecord[], namespaces: import('../../foundation/doc-compiler/tree.mjs').TreeNamespaceInput[], guides: import('../../foundation/doc-compiler/tree.mjs').TreeDocInput[]}} discovered
79
+ * @returns {Promise<string[]>}
80
+ */
81
+ export function packageDocsProblems(integration: {
82
+ name: string;
83
+ }, discovered: {
84
+ records: import("../../foundation/discovery/docs-discovery.mjs").DocsTopicRecord[];
85
+ namespaces: import("../../foundation/doc-compiler/tree.mjs").TreeNamespaceInput[];
86
+ guides: import("../../foundation/doc-compiler/tree.mjs").TreeDocInput[];
87
+ }): Promise<string[]>;
35
88
  /**
36
89
  * How a token reference finds its target: the topic it names in `catalog`,
37
90
  * lowered for the same language.
@@ -49,33 +102,156 @@ export function referenceTargets(catalog: DocsCatalog, lang: string | null): (to
49
102
  */
50
103
  export function compileTopic(catalog: DocsCatalog, entry: import("../../foundation/discovery/docs-discovery.mjs").DocsTopicEntry, lang?: string | null): Promise<import("../../foundation/doc-compiler/compile.mjs").CompiledReferenceNode>;
51
104
  /**
52
- * Resolve `topic` against the project's catalog (throwing `ERR_UNKNOWN_TOPIC`
53
- * when unmatched) and lower it with any --dense/--zh overlay and any
54
- * integration extension applied. Shared by the leaves so topic normalization
55
- * and unknown-topic handling live in exactly one place.
56
- *
57
- * @param {string} topic
58
- * @param {object} [options]
59
- * @param {string} [options.lang]
60
- * @param {boolean} [options.zh]
61
- * @param {boolean} [options.dense]
62
- * @param {string} [options.cwd]
63
- * @returns {Promise<{
64
- * catalog: DocsCatalog,
65
- * node: import('../../foundation/doc-compiler/compile.mjs').CompiledReferenceNode,
66
- * lang: string | null,
67
- * }>}
68
- */
69
- export function resolveTopicDocs(topic: string, options?: {
70
- lang?: string | undefined;
71
- zh?: boolean | undefined;
72
- dense?: boolean | undefined;
73
- cwd?: string | undefined;
105
+ * A guide the docs tree places, as a topic entry the topic readers open by its
106
+ * route. It is never a flat topic: `astryx docs <route>` is its only name.
107
+ * @param {import('../../foundation/doc-compiler/tree.mjs').TreeNode} node
108
+ * @returns {import('../../foundation/discovery/docs-discovery.mjs').DocsTopicEntry}
109
+ */
110
+ export function guideEntry(node: import("../../foundation/doc-compiler/tree.mjs").TreeNode): import("../../foundation/discovery/docs-discovery.mjs").DocsTopicEntry;
111
+ /**
112
+ * What a typed doc in the docs tree prints: its content, with every link to
113
+ * another doc resolved (spec:AST-047 FR9). A namespace has no content. The
114
+ * CLI's doc modules are discovery, so this lives in the adapter
115
+ * (architecture:cli-surface INV21).
116
+ * @param {DocsCatalog} catalog
117
+ * @param {DocsTree} tree
118
+ * @param {TreeNode} node
119
+ * @returns {Promise<{content: any[], problems: LinkProblem[]}>}
120
+ */
121
+ export function nodeContent(catalog: DocsCatalog, tree: DocsTree, node: TreeNode): Promise<{
122
+ content: any[];
123
+ problems: LinkProblem[];
124
+ }>;
125
+ /**
126
+ * The command that opens the level a topic sits in when the tree cannot say:
127
+ * a guide's parent namespace, or the topic list.
128
+ * @param {import('../../foundation/discovery/docs-discovery.mjs').DocsTopicEntry} entry
129
+ * @returns {import('./docs.type.mjs').DocsCommand}
130
+ */
131
+ export function topicUp(entry: import("../../foundation/discovery/docs-discovery.mjs").DocsTopicEntry): import("./docs.type.mjs").DocsCommand;
132
+ /**
133
+ * The moves from a node's place in the tree (spec:AST-047 FR2, FR4): up to its
134
+ * parent (the topic list, at the top), and across to the nodes before and
135
+ * after it in its parent's slot.
136
+ * @param {DocsTree} tree
137
+ * @param {TreeNode} node
138
+ * @returns {import('./docs.type.mjs').DocsLinks}
139
+ */
140
+ export function placeLinks(tree: DocsTree, node: TreeNode): import("./docs.type.mjs").DocsLinks;
141
+ /**
142
+ * The moves a topic read offers: from its place in the tree, where a guide
143
+ * sits in its namespace and a flat topic in the Unorganized level.
144
+ * @param {DocsCatalog} catalog
145
+ * @param {import('../../foundation/discovery/docs-discovery.mjs').DocsTopicEntry} entry
146
+ * @returns {Promise<import('./docs.type.mjs').DocsLinks>}
147
+ */
148
+ export function topicLinks(catalog: DocsCatalog, entry: import("../../foundation/discovery/docs-discovery.mjs").DocsTopicEntry): Promise<import("./docs.type.mjs").DocsLinks>;
149
+ /**
150
+ * What a docs argument names: a topic (a flat one, or a guide the docs tree
151
+ * places), a namespace or typed doc in the tree, or nothing, as nameOwner
152
+ * decides.
153
+ * @param {unknown} topic
154
+ * @param {{cwd?: string}} [options]
155
+ * @returns {Promise<
156
+ * | {kind: 'topic', catalog: DocsCatalog, entry: import('../../foundation/discovery/docs-discovery.mjs').DocsTopicEntry}
157
+ * | {kind: 'node', catalog: DocsCatalog, tree: import('../../foundation/doc-compiler/tree.mjs').DocsTree, node: import('../../foundation/doc-compiler/tree.mjs').TreeNode}
158
+ * | {kind: 'unknown', catalog: DocsCatalog}
159
+ * >}
160
+ */
161
+ export function resolveDocsArgument(topic: unknown, { cwd }?: {
162
+ cwd?: string;
163
+ }): Promise<{
164
+ kind: "topic";
165
+ catalog: DocsCatalog;
166
+ entry: import("../../foundation/discovery/docs-discovery.mjs").DocsTopicEntry;
167
+ } | {
168
+ kind: "node";
169
+ catalog: DocsCatalog;
170
+ tree: import("../../foundation/doc-compiler/tree.mjs").DocsTree;
171
+ node: import("../../foundation/doc-compiler/tree.mjs").TreeNode;
172
+ } | {
173
+ kind: "unknown";
174
+ catalog: DocsCatalog;
175
+ }>;
176
+ /**
177
+ * Who answers to a name a reader types (spec:AST-046 FR5, FR11). The tree
178
+ * decides first: the node at that route, compared without case, holds it. A
179
+ * name with no node of its own is a topic's other name (its `replaces`
180
+ * alias), and that topic answers, unless the tree gave the topic's own route
181
+ * to another doc. Reads, the topic list, and search all ask this, so they
182
+ * agree on every name.
183
+ * @param {DocsTree} tree
184
+ * @param {DocsCatalog} catalog
185
+ * @param {string} name
186
+ * @returns {{kind: 'topic', entry: import('../../foundation/discovery/docs-discovery.mjs').DocsTopicEntry} | {kind: 'node', node: TreeNode} | null}
187
+ */
188
+ export function nameOwner(tree: DocsTree, catalog: DocsCatalog, name: string): {
189
+ kind: "topic";
190
+ entry: import("../../foundation/discovery/docs-discovery.mjs").DocsTopicEntry;
191
+ } | {
192
+ kind: "node";
193
+ node: TreeNode;
194
+ } | null;
195
+ /**
196
+ * Whether a topic answers to its own name: what the topic list and search
197
+ * offer must open that topic.
198
+ * @param {DocsTree} tree
199
+ * @param {DocsCatalog} catalog
200
+ * @param {import('../../foundation/discovery/docs-discovery.mjs').DocsTopicEntry} entry
201
+ * @returns {boolean}
202
+ */
203
+ export function holdsOwnName(tree: DocsTree, catalog: DocsCatalog, entry: import("../../foundation/discovery/docs-discovery.mjs").DocsTopicEntry): boolean;
204
+ /**
205
+ * The doc that took a flat topic's route in the docs tree, when it is not
206
+ * that topic (spec:AST-046 FR11): the CLI keeps its routes, such as `cli`
207
+ * and `unorganized`, and a namespace keeps its route over a topic of the same
208
+ * name. Null when the topic owns its route, or the tree has no node there.
209
+ * @param {DocsTree} tree
210
+ * @param {import('../../foundation/discovery/docs-discovery.mjs').DocsTopicEntry} entry
211
+ * @returns {TreeNode | null}
212
+ */
213
+ export function routeOwner(tree: DocsTree, entry: import("../../foundation/discovery/docs-discovery.mjs").DocsTopicEntry): TreeNode | null;
214
+ /**
215
+ * The error for a docs argument that names nothing. For a route, it suggests
216
+ * the children of the deepest namespace the route reaches; otherwise, every
217
+ * topic and every top-level namespace.
218
+ * @param {unknown} topic
219
+ * @param {DocsCatalog} catalog
220
+ * @returns {Promise<AstryxError>}
221
+ */
222
+ export function unknownTopicError(topic: unknown, catalog: DocsCatalog): Promise<AstryxError>;
223
+ /**
224
+ * A sentence naming the packages whose docs did not load, or nothing: a doc
225
+ * that fails to load withdraws its package's docs, so a reader who cannot
226
+ * find one learns where to look.
227
+ * @param {DocsCatalog} catalog
228
+ * @returns {string}
229
+ */
230
+ export function notLoaded(catalog: DocsCatalog): string;
231
+ /**
232
+ * Resolve a topic (a flat one, or a guide the docs tree places by its route)
233
+ * and lower it for the topic readers.
234
+ * @param {unknown} topic
235
+ * @param {{lang?: string | null, zh?: boolean, dense?: boolean, cwd?: string}} [options]
236
+ */
237
+ export function resolveTopicDocs(topic: unknown, options?: {
238
+ lang?: string | null;
239
+ zh?: boolean;
240
+ dense?: boolean;
241
+ cwd?: string;
74
242
  }): Promise<{
75
243
  catalog: DocsCatalog;
76
244
  node: import("../../foundation/doc-compiler/compile.mjs").CompiledReferenceNode;
77
245
  lang: string | null;
246
+ entry: import("../../foundation/discovery/docs-discovery.mjs").DocsTopicEntry;
78
247
  }>;
79
- /** The localized overlays a docs read can apply. */
80
- export const OVERLAY_LANGUAGES: string[];
248
+ export type DocsTree = import("../../foundation/doc-compiler/tree.mjs").DocsTree;
249
+ export type TreeNode = import("../../foundation/doc-compiler/tree.mjs").TreeNode;
250
+ export type LinkProblem = import("../../foundation/doc-compiler/links.mjs").LinkProblem;
251
+ export type LinkResolver = import("../../foundation/doc-compiler/links.mjs").LinkResolver;
252
+ export type DocsTopicEntry = import("../../foundation/discovery/docs-discovery.mjs").DocsTopicEntry;
81
253
  import { DocsCatalog } from '../../foundation/discovery/docs-discovery.mjs';
254
+ import { AstryxError } from '../error.mjs';
255
+ import { OVERLAY_LANGUAGES } from '../../foundation/doc-compiler/read.mjs';
256
+ import { overlayLanguages } from '../../foundation/doc-compiler/read.mjs';
257
+ export { OVERLAY_LANGUAGES, overlayLanguages };