@astryxdesign/cli 0.6.3-canary.db4e378 → 0.6.3-canary.db52d98

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 (397) hide show
  1. package/README.md +38 -15
  2. package/api/blog/blog.doc.mjs +1 -0
  3. package/api/build/_adapter.d.mts +50 -0
  4. package/api/build/_adapter.mjs +60 -0
  5. package/api/build/build.doc.mjs +14 -7
  6. package/api/build/build.test.mjs +184 -6
  7. package/api/build/build.type.d.mts +57 -2
  8. package/api/build/build.type.mjs +30 -7
  9. package/api/build/help/help.d.mts +4 -0
  10. package/api/build/help/help.mjs +24 -11
  11. package/api/build/kit/kit.d.mts +4 -1
  12. package/api/build/kit/kit.mjs +165 -49
  13. package/api/build/kit/rank.d.mts +44 -0
  14. package/api/build/kit/rank.mjs +432 -0
  15. package/api/build/kit/rank.test.mjs +196 -0
  16. package/api/component/_adapter.d.mts +6 -12
  17. package/api/component/_adapter.mjs +20 -10
  18. package/api/component/component.doc.mjs +1 -0
  19. package/api/component/component.mjs +60 -12
  20. package/api/component/list/list.mjs +3 -2
  21. package/api/discover/discover.doc.mjs +1 -0
  22. package/api/docs/_adapter.d.mts +252 -34
  23. package/api/docs/_adapter.mjs +923 -132
  24. package/api/docs/detail/detail.mjs +11 -3
  25. package/api/docs/detail/section/section.mjs +24 -13
  26. package/api/docs/detail/section/section.test.mjs +15 -6
  27. package/api/docs/docs.d.mts +5 -3
  28. package/api/docs/docs.doc.mjs +39 -17
  29. package/api/docs/docs.mjs +44 -8
  30. package/api/docs/docs.test.mjs +158 -4
  31. package/api/docs/docs.type.d.mts +181 -2
  32. package/api/docs/docs.type.mjs +117 -3
  33. package/api/docs/index/index.mjs +11 -3
  34. package/api/docs/index/index.test.mjs +1 -1
  35. package/api/docs/integration-tree.test.mjs +555 -0
  36. package/api/docs/integrationDocs.test.mjs +14 -14
  37. package/api/docs/list/list.mjs +28 -12
  38. package/api/docs/node/node.d.mts +43 -0
  39. package/api/docs/node/node.mjs +192 -0
  40. package/api/docs/reference-blocks.test.mjs +406 -0
  41. package/api/doctor/doctor.d.mts +54 -4
  42. package/api/doctor/doctor.doc.mjs +1 -0
  43. package/api/doctor/doctor.mjs +331 -16
  44. package/api/doctor/doctor.test.mjs +420 -7
  45. package/api/gap-report/gap-report.doc.mjs +1 -0
  46. package/api/hook/_adapter.mjs +19 -5
  47. package/api/hook/hook.doc.mjs +1 -0
  48. package/api/hook/list/list.d.mts +1 -1
  49. package/api/hook/list/list.mjs +69 -17
  50. package/api/index.d.mts +1 -1
  51. package/api/index.mjs +1 -0
  52. package/api/init/init.doc.mjs +2 -1
  53. package/api/integration/add-contribution.d.mts +2 -1
  54. package/api/integration/add-contribution.mjs +114 -12
  55. package/api/integration/add-contribution.test.mjs +174 -3
  56. package/api/integration/add-theme.mjs +34 -64
  57. package/api/integration/add-theme.test.mjs +105 -21
  58. package/api/integration/authoring-checks.mjs +138 -28
  59. package/api/integration/authoring-checks.test.mjs +179 -7
  60. package/api/integration/authoring-checks.type.mjs +6 -1
  61. package/api/integration/integration-authoring.type.d.mts +2 -0
  62. package/api/integration/integration-authoring.type.mjs +2 -0
  63. package/api/integration/integration-block-exports.test.mjs +10 -6
  64. package/api/integration/integrationAdd.doc.mjs +7 -0
  65. package/api/integration/integrationAddAgentDoc.doc.mjs +1 -0
  66. package/api/integration/integrationAddCodemod.doc.mjs +1 -0
  67. package/api/integration/integrationAddComponent.doc.mjs +1 -0
  68. package/api/integration/integrationAddDoc.doc.mjs +8 -1
  69. package/api/integration/integrationAddTemplate.doc.mjs +1 -0
  70. package/api/integration/integrationAddTheme.doc.mjs +6 -5
  71. package/api/integration/integrationComponentConflicts.doc.mjs +1 -0
  72. package/api/integration/integrationDocConflicts.doc.mjs +2 -1
  73. package/api/integration/integrationPackCheck.doc.mjs +2 -1
  74. package/api/integration/integrationTemplateConflicts.doc.d.mts +3 -0
  75. package/api/integration/integrationTemplateConflicts.doc.mjs +4 -0
  76. package/api/integration/pack-check.mjs +34 -0
  77. package/api/integration/pack-check.test.mjs +138 -47
  78. package/api/integration/pack-check.type.d.mts +26 -2
  79. package/api/integration/pack-check.type.mjs +14 -1
  80. package/api/integration/summarizeIssues.doc.mjs +1 -0
  81. package/api/integration/template-conflict-compatibility.test.mjs +73 -0
  82. package/api/integration/validate-integration-fixes.test.mjs +1389 -0
  83. package/api/integration/validate-integration.mjs +50 -102
  84. package/api/integration/validate-integration.test.mjs +88 -26
  85. package/api/integration/validate-unread-theme-folders.test.mjs +110 -0
  86. package/api/integration/validateIntegration.doc.mjs +2 -1
  87. package/api/json/assertResponse.doc.mjs +1 -0
  88. package/api/json/index.ts +2 -0
  89. package/api/json/isError.doc.mjs +1 -0
  90. package/api/json/parseResponse.doc.mjs +1 -0
  91. package/api/layout/_adapter.mjs +20 -5
  92. package/api/layout/layoutCheck.doc.mjs +1 -0
  93. package/api/layout/layoutExpand.doc.mjs +1 -0
  94. package/api/layout/layoutGrammar.doc.mjs +1 -0
  95. package/api/search/search.d.mts +59 -1
  96. package/api/search/search.doc.mjs +5 -3
  97. package/api/search/search.mjs +458 -77
  98. package/api/search/search.test.mjs +91 -2
  99. package/api/search/search.type.d.mts +13 -1
  100. package/api/search/search.type.mjs +4 -1
  101. package/api/swizzle/swizzle.doc.mjs +1 -0
  102. package/api/template/list/list.mjs +1 -0
  103. package/api/template/table-floating-bulk-actions.test.mjs +66 -0
  104. package/api/template/template-integration.test.mjs +1072 -3
  105. package/api/template/template-suffix.test.mjs +41 -21
  106. package/api/template/template.doc.mjs +28 -7
  107. package/api/template/template.mjs +45 -8
  108. package/api/template/template.type.d.mts +6 -8
  109. package/api/template/template.type.mjs +3 -2
  110. package/api/theme/_adapter.d.mts +2 -3
  111. package/api/theme/_adapter.mjs +4 -5
  112. package/api/theme/add/add.binary.test.mjs +10 -17
  113. package/api/theme/add/add.test.mjs +14 -1
  114. package/api/theme/generateTonalPalette.doc.mjs +1 -0
  115. package/api/theme/integration-themes.test.mjs +39 -28
  116. package/api/theme/list/list.test.mjs +19 -20
  117. package/api/theme/listThemes.doc.mjs +6 -5
  118. package/api/theme/template/template.test.mjs +5 -0
  119. package/api/theme/themeAdd.doc.mjs +4 -3
  120. package/api/theme/themeBuild.doc.mjs +1 -0
  121. package/api/theme/themeList.doc.mjs +6 -3
  122. package/api/theme/themeListAvailable.doc.mjs +5 -3
  123. package/api/theme/themePaletteGenerate.doc.mjs +1 -0
  124. package/api/theme/themeTargets.doc.mjs +1 -0
  125. package/api/theme/themeTemplate.doc.mjs +2 -1
  126. package/api/upgrade/_adapter.d.mts +32 -5
  127. package/api/upgrade/_adapter.mjs +97 -69
  128. package/api/upgrade/provider-agreement.test.mjs +152 -0
  129. package/api/upgrade/run/run.mjs +356 -59
  130. package/api/upgrade/upgrade.doc.mjs +6 -1
  131. package/api/upgrade/upgrade.type.d.mts +34 -0
  132. package/api/upgrade/upgrade.type.mjs +15 -0
  133. package/assets/codemods/__tests__/runner.test.mjs +330 -8
  134. package/assets/codemods/integration-discovery.mjs +8 -2
  135. package/assets/codemods/integration-discovery.test.mjs +15 -0
  136. package/assets/codemods/integration-runner.mjs +56 -4
  137. package/assets/codemods/integration-runner.protection.test.mjs +153 -0
  138. package/assets/codemods/run-codemod.mjs +177 -34
  139. package/assets/codemods/runner.mjs +350 -102
  140. package/assets/codemods/transforms/next/__tests__/migrate-native-picker-to-presentation.test.mjs +63 -0
  141. package/assets/codemods/transforms/next/__tests__/migrate-theme-catalog-to-descriptors.test.mjs +220 -0
  142. package/assets/codemods/transforms/next/index.mjs +19 -1
  143. package/assets/codemods/transforms/next/migrate-native-picker-to-presentation.mjs +148 -0
  144. package/assets/codemods/transforms/next/migrate-theme-catalog-to-descriptors.mjs +141 -0
  145. package/assets/docs/getting-started.doc.mjs +2 -2
  146. package/assets/docs/layout.doc.dense.mjs +2 -2
  147. package/assets/docs/layout.doc.mjs +1 -1
  148. package/assets/docs/principles.doc.mjs +6 -6
  149. package/assets/docs/styling-libraries.doc.mjs +3 -3
  150. package/assets/docs/styling.doc.mjs +4 -4
  151. package/assets/docs/theme.doc.mjs +5 -5
  152. package/assets/docs/tokens.doc.mjs +1 -1
  153. package/assets/docs/tree/api.doc.mjs +30 -0
  154. package/assets/docs/tree/cli.doc.mjs +23 -0
  155. package/assets/docs/tree/commands.doc.mjs +25 -0
  156. package/assets/docs/{cli-integrations.doc.mjs → tree/integrations.doc.mjs} +66 -38
  157. package/assets/docs/tree/integrations.test.mjs +62 -0
  158. package/assets/docs/tree/writing-docs.doc.mjs +286 -0
  159. package/assets/docs/working-with-ai.doc.mjs +3 -3
  160. package/assets/templates/blocks/components/CheckboxList/CheckboxListSelectAllPattern.doc.mjs +1 -1
  161. package/assets/templates/blocks/components/CheckboxList/CheckboxListSelectAllPattern.tsx +1 -3
  162. package/assets/templates/blocks/components/DateInput/DateInputDateRange.tsx +1 -1
  163. package/assets/templates/blocks/components/Item/ItemDocumentTabs.doc.mjs +14 -0
  164. package/assets/templates/blocks/components/Item/ItemDocumentTabs.tsx +100 -0
  165. package/assets/templates/blocks/components/Table/TableBulkActionsTable.doc.mjs +14 -0
  166. package/assets/templates/blocks/components/Table/TableBulkActionsTable.tsx +71 -0
  167. package/assets/templates/blocks/components/Table/TableFloatingBulkActionsTable.doc.mjs +19 -0
  168. package/assets/templates/blocks/components/Table/TableFloatingBulkActionsTable.tsx +139 -0
  169. package/assets/templates/blocks/components/TimeInput/TimeInputConstrained.tsx +1 -0
  170. package/assets/templates/themes/butter/butterTheme.doc.mjs +11 -0
  171. package/assets/templates/themes/chocolate/chocolateTheme.doc.mjs +11 -0
  172. package/assets/templates/themes/gothic/gothicTheme.doc.mjs +11 -0
  173. package/assets/templates/themes/matcha/matchaTheme.doc.mjs +11 -0
  174. package/assets/templates/themes/neutral/neutralTheme.doc.mjs +11 -0
  175. package/assets/templates/themes/stone/stoneTheme.doc.mjs +11 -0
  176. package/assets/templates/themes/y2k/y2kTheme.doc.mjs +11 -0
  177. package/authoring/codemod/codemod.doc.mjs +1 -1
  178. package/authoring/codemod/type.ts +12 -0
  179. package/authoring/config/config.doc.mjs +1 -1
  180. package/authoring/debug/debug.doc.d.mts +11 -0
  181. package/authoring/debug/debug.doc.mjs +182 -0
  182. package/authoring/debug/parse.d.mts +3 -3
  183. package/authoring/doctypes/_schema.d.mts +119 -117
  184. package/authoring/doctypes/_schema.mjs +54 -3
  185. package/authoring/doctypes/base/graph-fields.doc.mjs +8 -6
  186. package/authoring/doctypes/base/type.ts +6 -5
  187. package/authoring/doctypes/command/command.doc.mjs +1 -1
  188. package/authoring/doctypes/command/type.ts +2 -2
  189. package/authoring/doctypes/component/type.ts +2 -2
  190. package/authoring/doctypes/doctypes-new.test.mjs +48 -6
  191. package/authoring/doctypes/enum/enum.doc.mjs +1 -1
  192. package/authoring/doctypes/enum/type.ts +1 -1
  193. package/authoring/doctypes/function/function.doc.mjs +3 -2
  194. package/authoring/doctypes/function/type.ts +3 -2
  195. package/authoring/doctypes/hook/type.ts +2 -2
  196. package/authoring/doctypes/load-contract.test.mjs +28 -2
  197. package/authoring/doctypes/namespace/namespace.doc.mjs +6 -10
  198. package/authoring/doctypes/namespace/parse.test.mjs +23 -25
  199. package/authoring/doctypes/namespace/type.ts +5 -2
  200. package/authoring/doctypes/parse.d.mts +4 -2
  201. package/authoring/doctypes/parse.mjs +10 -5
  202. package/authoring/doctypes/reference/reference.doc.mjs +35 -6
  203. package/authoring/doctypes/reference/type.ts +30 -13
  204. package/authoring/doctypes/schema/schema.doc.mjs +1 -1
  205. package/authoring/doctypes/schema/type.ts +1 -2
  206. package/authoring/doctypes/template/parse.d.mts +2 -0
  207. package/authoring/doctypes/template/parse.mjs +4 -0
  208. package/authoring/doctypes/template/parse.test.mjs +18 -0
  209. package/authoring/doctypes/template/template.doc.mjs +9 -3
  210. package/authoring/doctypes/template/type.ts +8 -0
  211. package/authoring/doctypes/theme/parse.d.mts +35 -0
  212. package/authoring/doctypes/theme/parse.mjs +76 -0
  213. package/authoring/doctypes/theme/theme.doc.d.mts +9 -0
  214. package/authoring/doctypes/theme/theme.doc.mjs +79 -0
  215. package/authoring/doctypes/theme/type.ts +42 -0
  216. package/authoring/doctypes/types.ts +2 -1
  217. package/authoring/gap-report/gap-report.doc.d.mts +12 -0
  218. package/authoring/gap-report/gap-report.doc.mjs +183 -0
  219. package/authoring/identity/identity.doc.mjs +2 -2
  220. package/authoring/index.d.mts +1 -0
  221. package/authoring/index.d.ts +7 -4
  222. package/authoring/index.mjs +2 -1
  223. package/authoring/integration/integration.doc.mjs +2 -2
  224. package/authoring/integration/type.ts +4 -10
  225. package/clients/cli/__tests__/cliManifest.test.ts +27 -29
  226. package/clients/cli/commands/blog.doc.mjs +1 -1
  227. package/clients/cli/commands/build-theme.adaptations.test.mjs +100 -1
  228. package/clients/cli/commands/build-theme.mjs +11 -45
  229. package/clients/cli/commands/build.doc.mjs +12 -7
  230. package/clients/cli/commands/build.mjs +105 -67
  231. package/clients/cli/commands/build.text-fields.test.mjs +41 -0
  232. package/clients/cli/commands/component/index.mjs +1 -1
  233. package/clients/cli/commands/component-ownership.test.mjs +3 -3
  234. package/clients/cli/commands/component.doc.mjs +1 -1
  235. package/clients/cli/commands/discover.broken-integration.test.mjs +7 -8
  236. package/clients/cli/commands/discover.doc.mjs +1 -1
  237. package/clients/cli/commands/discover.mjs +1 -1
  238. package/clients/cli/commands/docs.doc.mjs +21 -9
  239. package/clients/cli/commands/docs.mjs +184 -70
  240. package/clients/cli/commands/docs.test.mjs +120 -16
  241. package/clients/cli/commands/doctor-integration-components.doc.mjs +1 -1
  242. package/clients/cli/commands/doctor-integration-docs.doc.mjs +3 -3
  243. package/clients/cli/commands/doctor-integration-templates.doc.mjs +15 -8
  244. package/clients/cli/commands/doctor-integration-validate.doc.mjs +1 -1
  245. package/clients/cli/commands/doctor-integration.doc.mjs +1 -1
  246. package/clients/cli/commands/doctor-integration.test.mjs +90 -8
  247. package/clients/cli/commands/doctor.doc.mjs +1 -1
  248. package/clients/cli/commands/doctor.mjs +53 -16
  249. package/clients/cli/commands/gap-report.doc.mjs +1 -1
  250. package/clients/cli/commands/hook.doc.mjs +1 -1
  251. package/clients/cli/commands/init.doc.mjs +1 -1
  252. package/clients/cli/commands/integration-add.controls.test.mjs +1 -1
  253. package/clients/cli/commands/integration-add.doc.mjs +11 -1
  254. package/clients/cli/commands/integration-pack.doc.mjs +1 -1
  255. package/clients/cli/commands/integration-real-world.test.mjs +3 -9
  256. package/clients/cli/commands/integration.doc.mjs +1 -1
  257. package/clients/cli/commands/integration.mjs +1 -0
  258. package/clients/cli/commands/layout-check.doc.mjs +1 -1
  259. package/clients/cli/commands/layout-expand.doc.mjs +1 -1
  260. package/clients/cli/commands/layout-grammar.doc.mjs +1 -1
  261. package/clients/cli/commands/layout.doc.mjs +1 -1
  262. package/clients/cli/commands/manifest.doc.mjs +1 -1
  263. package/clients/cli/commands/search.doc.mjs +1 -1
  264. package/clients/cli/commands/search.mjs +11 -2
  265. package/clients/cli/commands/setup-nudge.test.mjs +6 -0
  266. package/clients/cli/commands/swizzle.doc.mjs +1 -1
  267. package/clients/cli/commands/template.doc.mjs +24 -7
  268. package/clients/cli/commands/template.mjs +4 -91
  269. package/clients/cli/commands/text-json-parity.test.mjs +719 -0
  270. package/clients/cli/commands/theme-add.doc.mjs +2 -2
  271. package/clients/cli/commands/theme-build.doc.mjs +1 -1
  272. package/clients/cli/commands/theme-list.doc.mjs +2 -2
  273. package/clients/cli/commands/theme-palette-generate.doc.mjs +3 -3
  274. package/clients/cli/commands/theme-palette.doc.mjs +1 -1
  275. package/clients/cli/commands/theme-targets.behavior.test.mjs +4 -3
  276. package/clients/cli/commands/theme-targets.doc.mjs +1 -1
  277. package/clients/cli/commands/theme-template.doc.mjs +1 -1
  278. package/clients/cli/commands/theme.doc.mjs +1 -1
  279. package/clients/cli/commands/upgrade.doc.mjs +3 -2
  280. package/clients/cli/commands/upgrade.file-protection.test.mjs +228 -0
  281. package/clients/cli/commands/upgrade.mjs +29 -7
  282. package/clients/cli/formatters/index.mjs +2 -0
  283. package/clients/cli/formatters/index.test.mjs +6 -0
  284. package/clients/cli/index.mjs +8 -0
  285. package/clients/cli/lib/hook-format.mjs +14 -5
  286. package/clients/cli/lib/manifest.mjs +9 -2
  287. package/foundation/agent-docs/agent-docs.d.mts +3 -2
  288. package/foundation/agent-docs/agent-docs.mjs +13 -9
  289. package/foundation/agent-docs/agent-docs.test.mjs +19 -1
  290. package/foundation/config/project-themes.test.mjs +11 -19
  291. package/foundation/config/project.d.mts +20 -11
  292. package/foundation/config/project.mjs +123 -80
  293. package/foundation/config/project.test.mjs +144 -21
  294. package/foundation/discovery/authoring-self-docs.d.mts +18 -0
  295. package/foundation/discovery/authoring-self-docs.mjs +37 -15
  296. package/foundation/discovery/authoring-self-docs.test.mjs +25 -9
  297. package/foundation/discovery/authoring-surface.d.mts +74 -0
  298. package/foundation/discovery/authoring-surface.mjs +525 -0
  299. package/foundation/discovery/authoring-surface.test.mjs +392 -0
  300. package/foundation/discovery/cli-self-docs.d.mts +119 -0
  301. package/foundation/discovery/cli-self-docs.mjs +490 -0
  302. package/foundation/discovery/cli-self-docs.test.mjs +375 -0
  303. package/foundation/discovery/component-discovery.d.mts +38 -0
  304. package/foundation/discovery/component-discovery.mjs +48 -0
  305. package/foundation/discovery/component-loader.d.mts +35 -38
  306. package/foundation/discovery/component-loader.mjs +53 -222
  307. package/foundation/discovery/docs-discovery.d.mts +112 -11
  308. package/foundation/discovery/docs-discovery.mjs +231 -36
  309. package/foundation/discovery/docs-discovery.test.mjs +111 -32
  310. package/foundation/discovery/docs-output-budget.d.mts +2 -2
  311. package/foundation/discovery/docs-output-budget.mjs +1 -1
  312. package/foundation/discovery/docs-section-key.d.mts +28 -10
  313. package/foundation/discovery/docs-section-key.mjs +134 -33
  314. package/foundation/discovery/docs-section-key.test.mjs +41 -19
  315. package/foundation/discovery/template-adapter.d.mts +99 -6
  316. package/foundation/discovery/template-adapter.mjs +480 -57
  317. package/foundation/discovery/template-adapter.test.mjs +57 -0
  318. package/foundation/discovery/template-conflict-release.d.mts +13 -0
  319. package/foundation/discovery/template-conflict-release.mjs +40 -0
  320. package/foundation/discovery/template-conflict-release.test.mjs +40 -0
  321. package/foundation/discovery/theme-discovery.d.mts +67 -7
  322. package/foundation/discovery/theme-discovery.mjs +916 -186
  323. package/foundation/discovery/theme-discovery.test.mjs +613 -219
  324. package/foundation/doc-compiler/bundle.d.mts +47 -0
  325. package/foundation/doc-compiler/bundle.mjs +278 -0
  326. package/foundation/doc-compiler/bundle.test.mjs +266 -0
  327. package/foundation/doc-compiler/compile.d.mts +220 -39
  328. package/foundation/doc-compiler/compile.mjs +311 -15
  329. package/foundation/doc-compiler/diagnostics.d.mts +126 -0
  330. package/foundation/doc-compiler/diagnostics.mjs +305 -0
  331. package/foundation/doc-compiler/doc-compiler.test.mjs +28 -1
  332. package/foundation/doc-compiler/doc-loads.test.mjs +1642 -0
  333. package/foundation/doc-compiler/import.d.mts +24 -0
  334. package/foundation/doc-compiler/import.mjs +59 -0
  335. package/foundation/doc-compiler/inputs.d.mts +102 -0
  336. package/foundation/doc-compiler/inputs.mjs +291 -0
  337. package/foundation/doc-compiler/inputs.test.mjs +299 -0
  338. package/foundation/doc-compiler/ir.d.mts +13 -0
  339. package/foundation/doc-compiler/ir.mjs +196 -12
  340. package/foundation/doc-compiler/lenses.d.mts +8 -5
  341. package/foundation/doc-compiler/lenses.mjs +50 -4
  342. package/foundation/doc-compiler/links.d.mts +162 -0
  343. package/foundation/doc-compiler/links.mjs +294 -0
  344. package/foundation/doc-compiler/links.test.mjs +192 -0
  345. package/foundation/doc-compiler/lower-doc.test.mjs +495 -0
  346. package/foundation/doc-compiler/overlays.d.mts +37 -0
  347. package/foundation/doc-compiler/overlays.mjs +206 -0
  348. package/foundation/doc-compiler/parse-readable.d.mts +9 -0
  349. package/foundation/doc-compiler/parse-readable.mjs +29 -0
  350. package/foundation/doc-compiler/read.d.mts +127 -0
  351. package/foundation/doc-compiler/read.mjs +325 -0
  352. package/foundation/doc-compiler/read.test.mjs +313 -0
  353. package/foundation/doc-compiler/source.d.mts +33 -0
  354. package/foundation/doc-compiler/source.mjs +128 -0
  355. package/foundation/doc-compiler/tree.d.mts +288 -0
  356. package/foundation/doc-compiler/tree.mjs +876 -0
  357. package/foundation/doc-compiler/tree.test.mjs +598 -0
  358. package/foundation/fs/file-protection.d.mts +33 -0
  359. package/foundation/fs/file-protection.mjs +825 -0
  360. package/foundation/fs/file-protection.test.mjs +250 -0
  361. package/foundation/integrations/autolink.d.mts +58 -1
  362. package/foundation/integrations/autolink.mjs +143 -57
  363. package/foundation/integrations/autolink.test.mjs +1 -1
  364. package/foundation/integrations/cli-requirement.d.mts +45 -0
  365. package/foundation/integrations/cli-requirement.mjs +154 -0
  366. package/foundation/integrations/cli-requirement.test.mjs +84 -0
  367. package/foundation/integrations/contribution-fixes.d.mts +145 -0
  368. package/foundation/integrations/contribution-fixes.mjs +1284 -0
  369. package/foundation/integrations/contribution-inventory.d.mts +3 -2
  370. package/foundation/integrations/contribution-inventory.mjs +27 -24
  371. package/foundation/integrations/contribution-inventory.test.mjs +86 -27
  372. package/foundation/integrations/integration-warnings.d.mts +9 -2
  373. package/foundation/integrations/integration-warnings.mjs +51 -26
  374. package/foundation/integrations/integration-warnings.test.mjs +74 -1
  375. package/foundation/integrations/integrations.d.mts +3 -0
  376. package/foundation/integrations/integrations.mjs +11 -97
  377. package/foundation/integrations/provider-ledger.test.mjs +275 -0
  378. package/foundation/integrations/provider-resolution.d.mts +152 -0
  379. package/foundation/integrations/provider-resolution.mjs +576 -0
  380. package/foundation/integrations/provider-resolution.test.mjs +369 -0
  381. package/foundation/integrations/theme-descriptor.d.mts +8 -0
  382. package/foundation/integrations/theme-descriptor.mjs +44 -0
  383. package/foundation/integrations/validate-contributions.mjs +121 -29
  384. package/foundation/response/error-codes.d.mts +3 -1
  385. package/foundation/response/error-codes.d.ts +2 -0
  386. package/foundation/response/error-codes.doc.mjs +12 -2
  387. package/foundation/response/error-codes.mjs +7 -1
  388. package/foundation/response/error-codes.test.mjs +55 -11
  389. package/foundation/response/response-types.doc.d.mts +5 -1
  390. package/foundation/response/response-types.doc.mjs +20 -11
  391. package/foundation/response/response.doc.mjs +1 -1
  392. package/foundation/text/string-utils.d.mts +8 -0
  393. package/foundation/text/string-utils.mjs +40 -10
  394. package/foundation/xle/expand.mjs +1 -1
  395. package/foundation/xle/xle.test.mjs +13 -0
  396. package/package.json +10 -9
  397. package/assets/templates/themes/manifest.json +0 -95
@@ -6,7 +6,22 @@
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;
@@ -22,6 +37,21 @@ export type DocsListEntry = {
22
37
  */
23
38
  replaces?: string | undefined;
24
39
  };
40
+ /**
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
+ };
25
55
  /**
26
56
  * astryx --json docs <topic> --index
27
57
  */
@@ -34,7 +64,65 @@ export type DocsIndexResponse = {
34
64
  */
35
65
  export type DocsDetailResponse = {
36
66
  type: "docs.detail";
37
- 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[];
87
+ };
88
+ /**
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;
38
126
  };
39
127
  /**
40
128
  * The section index of one topic: what the topic is, and the key each section
@@ -48,6 +136,10 @@ export type DocsIndex = {
48
136
  title: string;
49
137
  description: string;
50
138
  sections: DocsIndexSection[];
139
+ /**
140
+ * the moves from the index
141
+ */
142
+ links: DocsLinks;
51
143
  };
52
144
  export type DocsIndexSection = {
53
145
  /**
@@ -66,7 +158,94 @@ export type DocsIndexSection = {
66
158
  */
67
159
  export type DocsDetailSectionResponse = {
68
160
  type: "docs.detail.section";
69
- 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;
70
249
  };
71
250
  /**
72
251
  * Options for `docs()`.
@@ -10,6 +10,8 @@
10
10
  * astryx --json docs <topic> -> docs.detail
11
11
  * astryx --json docs <topic> --index -> docs.index
12
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)
13
15
  * (unknown topic/section) -> CLIError
14
16
  */
15
17
 
@@ -17,7 +19,11 @@
17
19
  * astryx --json docs
18
20
  * @typedef {object} DocsListResponse
19
21
  * @property {'docs.list'} type
20
- * @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)
21
27
  */
22
28
 
23
29
  /**
@@ -30,6 +36,15 @@
30
36
  * was contributed as a replacement
31
37
  */
32
38
 
39
+ /**
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
+
33
48
  /**
34
49
  * astryx --json docs <topic> --index
35
50
  * @typedef {object} DocsIndexResponse
@@ -41,7 +56,51 @@
41
56
  * astryx --json docs <topic>
42
57
  * @typedef {object} DocsDetailResponse
43
58
  * @property {'docs.detail'} type
44
- * @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
45
104
  */
46
105
 
47
106
  /**
@@ -52,6 +111,7 @@
52
111
  * @property {string} title
53
112
  * @property {string} description
54
113
  * @property {DocsIndexSection[]} sections
114
+ * @property {DocsLinks} links the moves from the index
55
115
  */
56
116
 
57
117
  /**
@@ -66,7 +126,61 @@
66
126
  * astryx --json docs <topic> <section>
67
127
  * @typedef {object} DocsDetailSectionResponse
68
128
  * @property {'docs.detail.section'} type
69
- * @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
70
184
  */
71
185
 
72
186
  /**
@@ -15,7 +15,7 @@
15
15
  */
16
16
 
17
17
  import {indexView} from '../../../foundation/doc-compiler/lenses.mjs';
18
- import {resolveTopicDocs} from '../_adapter.mjs';
18
+ import {resolveTopicDocs, topicLinks} from '../_adapter.mjs';
19
19
 
20
20
  /**
21
21
  * @param {string} topic
@@ -27,6 +27,14 @@ import {resolveTopicDocs} from '../_adapter.mjs';
27
27
  * @returns {Promise<import('../docs.type.mjs').DocsIndexResponse>}
28
28
  */
29
29
  export async function index(topic, options = {}) {
30
- const {node} = await resolveTopicDocs(topic, options);
31
- return {type: 'docs.index', data: indexView(node)};
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};
32
40
  }
@@ -49,7 +49,7 @@ describe('docs.index leaf', () => {
49
49
  });
50
50
 
51
51
  describe('docs() topic reads', () => {
52
- it('returns the whole topic by default, as before', async () => {
52
+ it('returns the whole topic by default', async () => {
53
53
  const res = await docs('theme');
54
54
  expect(res.type).toBe('docs.detail');
55
55
  expect(res.data.sections[0].content.length).toBeGreaterThan(0);