@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
@@ -0,0 +1,139 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ 'use client';
4
+
5
+ import {useState} from 'react';
6
+ import * as stylex from '@stylexjs/stylex';
7
+ import {Button} from '@astryxdesign/core/Button';
8
+ import {ScrollableArea} from '@astryxdesign/core/ScrollableArea';
9
+ import {
10
+ Table,
11
+ TableSelectionToolbar,
12
+ useTableSelection,
13
+ useTableSelectionState,
14
+ proportional,
15
+ } from '@astryxdesign/core/Table';
16
+ import type {TableColumn} from '@astryxdesign/core/Table';
17
+ import {
18
+ colorVars,
19
+ radiusVars,
20
+ shadowVars,
21
+ sizeVars,
22
+ spacingVars,
23
+ } from '@astryxdesign/core/theme/tokens.stylex';
24
+
25
+ interface User extends Record<string, unknown> {
26
+ id: string;
27
+ name: string;
28
+ email: string;
29
+ role: string;
30
+ }
31
+
32
+ const baseUsers: Array<Pick<User, 'name' | 'email' | 'role'>> = [
33
+ {name: 'Alice', email: 'alice@example.com', role: 'Engineer'},
34
+ {name: 'Bob', email: 'bob@example.com', role: 'Designer'},
35
+ {name: 'Charlie', email: 'charlie@example.com', role: 'Manager'},
36
+ {name: 'Diana', email: 'diana@example.com', role: 'Engineer'},
37
+ {name: 'Eve', email: 'eve@example.com', role: 'Admin'},
38
+ ];
39
+
40
+ const users: User[] = Array.from({length: 40}, (_, index) => {
41
+ const user = baseUsers[index % baseUsers.length];
42
+ return {...user, id: String(index + 1), name: `${user.name} ${index + 1}`};
43
+ });
44
+
45
+ const columns: TableColumn<User>[] = [
46
+ {key: 'name', header: 'Name', width: proportional(1)},
47
+ {key: 'email', header: 'Email', width: proportional(1)},
48
+ {key: 'role', header: 'Role', width: proportional(1)},
49
+ ];
50
+
51
+ const styles = stylex.create({
52
+ page: {
53
+ maxBlockSize: 640,
54
+ isolation: 'isolate',
55
+ scrollbarGutter: 'stable',
56
+ },
57
+ metrics: {
58
+ display: 'grid',
59
+ gridTemplateColumns: 'repeat(3, minmax(0, 1fr))',
60
+ gap: spacingVars['--spacing-3'],
61
+ marginBlockEnd: spacingVars['--spacing-6'],
62
+ },
63
+ metricCard: {
64
+ padding: spacingVars['--spacing-4'],
65
+ borderRadius: radiusVars['--radius-container'],
66
+ backgroundColor: colorVars['--color-background-muted'],
67
+ },
68
+ metricLabel: {
69
+ display: 'block',
70
+ color: colorVars['--color-text-secondary'],
71
+ },
72
+ metricValue: {
73
+ display: 'block',
74
+ marginBlockStart: spacingVars['--spacing-1'],
75
+ color: colorVars['--color-text-primary'],
76
+ },
77
+ tableRegion: {
78
+ '--table-bulk-actions-space': `calc(${sizeVars['--size-element-sm']} + ${spacingVars['--spacing-2']} + ${spacingVars['--spacing-2']} + ${spacingVars['--spacing-4']})`,
79
+ position: 'relative',
80
+ paddingBlockStart: 'var(--table-bulk-actions-space)',
81
+ },
82
+ toolbar: {
83
+ position: 'sticky',
84
+ insetBlockStart: `calc(var(--table-bulk-actions-space) + ${spacingVars['--spacing-4']})`,
85
+ transform: 'translateY(calc(0px - var(--table-bulk-actions-space)))',
86
+ marginBlockEnd: `calc(${spacingVars['--spacing-4']} - var(--table-bulk-actions-space))`,
87
+ zIndex: 1,
88
+ borderRadius: radiusVars['--radius-element'],
89
+ boxShadow: shadowVars['--shadow-med'],
90
+ },
91
+ });
92
+
93
+ export default function TableFloatingBulkActionsTable() {
94
+ const [selectedKeys, setSelectedKeys] = useState<Set<string>>(new Set());
95
+
96
+ const {selectionConfig, selectionState} = useTableSelectionState<User>({
97
+ data: users,
98
+ idKey: 'id',
99
+ selectedKeys,
100
+ setSelectedKeys,
101
+ });
102
+ const selectionPlugin = useTableSelection<User>(selectionConfig);
103
+
104
+ return (
105
+ <ScrollableArea
106
+ axis="block"
107
+ label="Bulk actions example"
108
+ overscroll="contain"
109
+ xstyle={styles.page}>
110
+ <div {...stylex.props(styles.metrics)}>
111
+ {[
112
+ ['Active users', '12,840'],
113
+ ['Selection rate', '18.4%'],
114
+ ['Pending reviews', '247'],
115
+ ].map(([label, value]) => (
116
+ <div key={label} {...stylex.props(styles.metricCard)}>
117
+ <span {...stylex.props(styles.metricLabel)}>{label}</span>
118
+ <strong {...stylex.props(styles.metricValue)}>{value}</strong>
119
+ </div>
120
+ ))}
121
+ </div>
122
+ <div {...stylex.props(styles.tableRegion)}>
123
+ <TableSelectionToolbar
124
+ selection={selectionState}
125
+ xstyle={styles.toolbar}
126
+ startContent={
127
+ <Button label="Approve" variant="ghost" onClick={() => {}} />
128
+ }
129
+ />
130
+ <Table
131
+ data={users}
132
+ columns={columns}
133
+ idKey="id"
134
+ plugins={{selection: selectionPlugin}}
135
+ />
136
+ </div>
137
+ </ScrollableArea>
138
+ );
139
+ }
@@ -17,6 +17,7 @@ export default function TimeInputConstrained() {
17
17
  max={'22:00' as never}
18
18
  description="Evening seating: 5 PM – 10 PM"
19
19
  placeholder="Select reservation time"
20
+ presentation="adaptive-bottom-sheet"
20
21
  value={evening as never}
21
22
  onChange={setEvening as never}
22
23
  hasClear
@@ -0,0 +1,11 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /** @type {import('@astryxdesign/cli/authoring').ThemeDoc} */
4
+ export default {
5
+ type: 'theme',
6
+ name: 'butter',
7
+ displayName: 'Butter',
8
+ description:
9
+ 'Warm, creamy yellows with a friendly blue accent. Playful enough for consumer surfaces, soft enough to stay readable.',
10
+ maintained: false,
11
+ };
@@ -0,0 +1,11 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /** @type {import('@astryxdesign/cli/authoring').ThemeDoc} */
4
+ export default {
5
+ type: 'theme',
6
+ name: 'chocolate',
7
+ displayName: 'Chocolate',
8
+ description:
9
+ 'Warm chocolate theme for Astryx — rich brown palette with Fraunces headings, Albert Sans body, and Lucide icons',
10
+ maintained: false,
11
+ };
@@ -0,0 +1,11 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /** @type {import('@astryxdesign/cli/authoring').ThemeDoc} */
4
+ export default {
5
+ type: 'theme',
6
+ name: 'gothic',
7
+ displayName: 'Gothic',
8
+ description:
9
+ 'Deep blue-grays and a signature display serif. Dramatic and editorial, for surfaces that want to be remembered.',
10
+ maintained: false,
11
+ };
@@ -0,0 +1,11 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /** @type {import('@astryxdesign/cli/authoring').ThemeDoc} */
4
+ export default {
5
+ type: 'theme',
6
+ name: 'matcha',
7
+ displayName: 'Matcha',
8
+ description:
9
+ 'Earthy greens with a calm, organic feel. Naturalistic and grounded, great for wellness or content-first apps.',
10
+ maintained: false,
11
+ };
@@ -0,0 +1,11 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /** @type {import('@astryxdesign/cli/authoring').ThemeDoc} */
4
+ export default {
5
+ type: 'theme',
6
+ name: 'neutral',
7
+ displayName: 'Neutral',
8
+ description:
9
+ 'Restrained warm grays. Minimal and quiet, so the content stays the focus.',
10
+ maintained: true,
11
+ };
@@ -0,0 +1,11 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /** @type {import('@astryxdesign/cli/authoring').ThemeDoc} */
4
+ export default {
5
+ type: 'theme',
6
+ name: 'stone',
7
+ displayName: 'Stone',
8
+ description:
9
+ 'Warm stone and slate, earthy and understated, with just enough character to feel handcrafted.',
10
+ maintained: false,
11
+ };
@@ -0,0 +1,11 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /** @type {import('@astryxdesign/cli/authoring').ThemeDoc} */
4
+ export default {
5
+ type: 'theme',
6
+ name: 'y2k',
7
+ displayName: 'Y2K',
8
+ description:
9
+ 'Hot pinks, lime greens, and Poppins. Bubbly, playful, and unmistakably retro.',
10
+ maintained: false,
11
+ };
@@ -12,7 +12,7 @@ export const doc = {
12
12
  type: 'schema',
13
13
  name: 'codemod',
14
14
  displayName: 'Astryx Codemod',
15
- namespace: 'cli',
15
+ namespace: 'authoring',
16
16
  description:
17
17
  'A codemod module the CLI runs during `astryx upgrade`. Default-export a ' +
18
18
  "plain object with a `type` discriminant: 'code' rewrites source files, " +
@@ -128,7 +128,19 @@ export interface CodemodEntry {
128
128
  /** The result of running a single codemod over one or more files. */
129
129
  export interface CodemodRunResult {
130
130
  filesChanged: number;
131
+ /** Existing owned files changed or previewed by this codemod. */
132
+ changedFiles: string[];
133
+ /** Files actually written; empty during a dry run. */
131
134
  writtenFiles: string[];
135
+ /** Existing files that require the change but are protected. */
136
+ protectedFiles: Array<{
137
+ file: string;
138
+ codemod: string;
139
+ reason: string;
140
+ declaration: string;
141
+ generated: boolean;
142
+ command?: string;
143
+ }>;
132
144
  errors: Array<{file: string; codemod: string; error: string}>;
133
145
  }
134
146
 
@@ -11,7 +11,7 @@ export const doc = {
11
11
  type: 'schema',
12
12
  name: 'config',
13
13
  displayName: 'Astryx Config',
14
- namespace: 'cli',
14
+ namespace: 'authoring',
15
15
  description:
16
16
  'The optional astryx.config.* file at your project root. Declares which ' +
17
17
  'integrations to load, where to route issue links, post-codemod hooks, local ' +
@@ -0,0 +1,11 @@
1
+ // @generated by scripts/sync-api-types.mjs from the JSDoc in authoring/**/*.mjs.
2
+ // DO NOT EDIT — run `pnpm sync:api-types` to regenerate.
3
+
4
+ /**
5
+ * @file SchemaDoc for DebugEvent, the record of one CLI run.
6
+ * @input The DebugEvent type beside it (`type.ts`), which `parse.mjs` reads.
7
+ * @output The `debug-event` section of `astryx docs authoring`.
8
+ * @position packages/cli/authoring/debug — schema documentation
9
+ */
10
+ /** @type {import('@astryxdesign/cli/authoring').SchemaDoc} */
11
+ export const doc: import("@astryxdesign/cli/authoring").SchemaDoc;
@@ -0,0 +1,182 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @file SchemaDoc for DebugEvent, the record of one CLI run.
5
+ * @input The DebugEvent type beside it (`type.ts`), which `parse.mjs` reads.
6
+ * @output The `debug-event` section of `astryx docs authoring`.
7
+ * @position packages/cli/authoring/debug — schema documentation
8
+ */
9
+
10
+ /** @type {import('@astryxdesign/cli/authoring').SchemaDoc} */
11
+ export const doc = {
12
+ type: 'schema',
13
+ name: 'debug-event',
14
+ displayName: 'DebugEvent',
15
+ namespace: 'authoring',
16
+ description:
17
+ 'One recorded CLI run: what a `debug` handler receives, whether it is set in astryx.config or exported by an integration manifest. There is exactly one event per run, and every field is present by the time a handler sees it.',
18
+ appliesTo: 'The argument of a `debug` handler',
19
+ fields: [
20
+ {
21
+ name: 'schemaVersion',
22
+ type: 'DebugSchemaVersion',
23
+ description:
24
+ 'Version of the recorded shape: 1, 2, or 3. A field that changes meaning gets a new version, so switch on this.',
25
+ required: true,
26
+ },
27
+ {
28
+ name: 'id',
29
+ type: 'string',
30
+ description: 'Unique per run. Deduplicate on it.',
31
+ required: true,
32
+ },
33
+ {
34
+ name: 'startedAt',
35
+ type: 'string',
36
+ description: 'When the run started, as ISO 8601.',
37
+ required: true,
38
+ },
39
+ {
40
+ name: 'endedAt',
41
+ type: 'string',
42
+ description: 'When the run ended, as ISO 8601.',
43
+ required: true,
44
+ },
45
+ {
46
+ name: 'durationMs',
47
+ type: 'number',
48
+ description: 'How long the run took, in milliseconds.',
49
+ required: true,
50
+ },
51
+ {
52
+ name: 'command',
53
+ type: 'string',
54
+ description:
55
+ 'The full command name. Empty when astryx ran without a command.',
56
+ required: true,
57
+ example: "'theme build'",
58
+ },
59
+ {
60
+ name: 'commandPath',
61
+ type: 'string[]',
62
+ description: 'The command name split into segments.',
63
+ required: true,
64
+ example: "['theme', 'build']",
65
+ },
66
+ {
67
+ name: 'argv',
68
+ type: 'string[]',
69
+ description: 'The arguments after the binary, scrubbed.',
70
+ required: true,
71
+ },
72
+ {
73
+ name: 'args',
74
+ type: 'Record<string, unknown>',
75
+ description: 'Positional arguments, keyed by their declared names.',
76
+ required: true,
77
+ },
78
+ {
79
+ name: 'options',
80
+ type: 'Record<string, unknown>',
81
+ description: 'The command options, as the CLI resolved them.',
82
+ required: true,
83
+ },
84
+ {
85
+ name: 'optionSources',
86
+ type: 'Record<string, DebugOptionSource>',
87
+ description:
88
+ "Where each option value came from: 'cli', 'default', 'env', 'config', or 'implied'. The keys match `options`.",
89
+ required: true,
90
+ },
91
+ {
92
+ name: 'globalOptions',
93
+ type: 'Record<string, unknown>',
94
+ description: 'The root flags, such as --json, --detail, and --lang.',
95
+ required: true,
96
+ },
97
+ {
98
+ name: 'outcome',
99
+ type: 'DebugOutcome',
100
+ description:
101
+ "How the run ended: 'ok', 'error', 'parse-error', 'fatal', 'rejected', or 'incomplete'.",
102
+ required: true,
103
+ },
104
+ {
105
+ name: 'exitCode',
106
+ type: 'number',
107
+ description:
108
+ 'The process exit code. When a signal ended the run, 128 plus the signal number.',
109
+ required: true,
110
+ },
111
+ {
112
+ name: 'signal',
113
+ type: 'string',
114
+ description:
115
+ "The signal that ended the run, such as 'SIGINT'. Null otherwise.",
116
+ required: true,
117
+ },
118
+ {
119
+ name: 'error',
120
+ type: 'DebugEventError',
121
+ description:
122
+ 'The failure: `name`, `message`, `code`, and `stack`. Branch on `code`, never on `message`. Null when nothing failed.',
123
+ required: true,
124
+ },
125
+ {
126
+ name: 'output',
127
+ type: 'DebugEventOutput',
128
+ description:
129
+ 'What the run answered with: JSON mode, the envelope types, the result count and kind, and the stdout and stderr it printed, scrubbed and cut at the capture limit.',
130
+ required: true,
131
+ },
132
+ {
133
+ name: 'env',
134
+ type: 'DebugEventEnv',
135
+ description:
136
+ 'Runtime facts: the CLI and Node versions, platform, CI, package manager, and whether a person, an AI agent, or automation ran the command. It never holds a hostname, a user name, or a raw session ID.',
137
+ required: true,
138
+ },
139
+ {
140
+ name: 'project',
141
+ type: 'DebugEventProject',
142
+ description:
143
+ 'The project the command ran in, as flags and counts. It never holds package names.',
144
+ required: true,
145
+ },
146
+ {
147
+ name: 'redacted',
148
+ type: 'boolean',
149
+ description:
150
+ 'Whether the values in the record were scrubbed. It is true on every event a handler receives. When it is false, treat the log as sensitive.',
151
+ required: true,
152
+ },
153
+ ],
154
+ examples: [
155
+ {
156
+ label: 'Keep a local log of the runs that failed',
157
+ code:
158
+ "import {appendFileSync} from 'node:fs';\n\n" +
159
+ 'export default {\n' +
160
+ ' debug: event => {\n' +
161
+ " if (event.outcome !== 'ok') {\n" +
162
+ " appendFileSync('failed-runs.ndjson', JSON.stringify(event) + '\\n');\n" +
163
+ ' }\n' +
164
+ ' },\n' +
165
+ '};',
166
+ },
167
+ ],
168
+ notes: [
169
+ {
170
+ type: 'prose',
171
+ text: 'The shape only grows: fields are added, never removed or given a new meaning. When a meaning must change, `schemaVersion` gets a new value. In version 3, a null `output.resultKind` means the run never reached an answer, so do not count it together with a version 1 or 2 null.',
172
+ },
173
+ {
174
+ type: 'prose',
175
+ text: 'The handler runs synchronously as the process exits, so a promise it returns is never awaited. It gets a copy of the event, and anything it throws is ignored.',
176
+ },
177
+ {
178
+ type: 'prose',
179
+ text: 'Import DebugEventOutput, DebugEventEnv, DebugEventProject, and DebugEventError from @astryxdesign/cli/authoring for the fields of `output`, `env`, `project`, and `error`.',
180
+ },
181
+ ],
182
+ };
@@ -52,8 +52,8 @@ declare const eventSchema: z.ZodObject<{
52
52
  }>>;
53
53
  globalOptions: z.ZodRecord<z.ZodString, z.ZodUnknown>;
54
54
  outcome: z.ZodEnum<{
55
- ok: "ok";
56
55
  error: "error";
56
+ ok: "ok";
57
57
  "parse-error": "parse-error";
58
58
  fatal: "fatal";
59
59
  rejected: "rejected";
@@ -79,8 +79,8 @@ declare const eventSchema: z.ZodObject<{
79
79
  component: "component";
80
80
  command: "command";
81
81
  hook: "hook";
82
- doc: "doc";
83
82
  template: "template";
83
+ doc: "doc";
84
84
  integration: "integration";
85
85
  migration: "migration";
86
86
  mixed: "mixed";
@@ -106,10 +106,10 @@ declare const eventSchema: z.ZodObject<{
106
106
  agentSessionIdHash: z.ZodDefault<z.ZodNullable<z.ZodString>>;
107
107
  agentSessionIdSource: z.ZodDefault<z.ZodNullable<z.ZodString>>;
108
108
  invocationSource: z.ZodDefault<z.ZodEnum<{
109
+ unknown: "unknown";
109
110
  human: "human";
110
111
  ai: "ai";
111
112
  automation: "automation";
112
- unknown: "unknown";
113
113
  }>>;
114
114
  oneOff: z.ZodBoolean;
115
115
  packageManager: z.ZodNullable<z.ZodString>;