@astryxdesign/cli 0.7.2-canary.fdd384f → 0.7.2
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.
- package/CHANGELOG.md +119 -0
- package/README.md +169 -149
- package/api/build/_adapter.d.mts +8 -0
- package/api/build/_adapter.mjs +12 -1
- package/api/build/build.doc.mjs +4 -0
- package/api/build/kit/kit.mjs +3 -11
- package/api/component/_adapter.d.mts +31 -0
- package/api/component/_adapter.mjs +119 -11
- package/api/component/component.doc.mjs +6 -1
- package/api/component/component.mjs +60 -10
- package/api/component/doc-links.test.mjs +386 -0
- package/api/discover/_adapter.d.mts +132 -12
- package/api/discover/_adapter.mjs +488 -27
- package/api/discover/_adapter.test.mjs +599 -17
- package/api/discover/_catalog-view.d.mts +16 -5
- package/api/discover/_catalog-view.mjs +32 -8
- package/api/discover/detail/doc/doc.mjs +9 -1
- package/api/discover/discover.d.mts +11 -0
- package/api/discover/discover.doc.mjs +9 -7
- package/api/discover/discover.mjs +121 -19
- package/api/discover/discover.type.d.mts +20 -7
- package/api/discover/discover.type.mjs +17 -7
- package/api/discover/list/list.d.mts +4 -3
- package/api/discover/list/list.mjs +17 -10
- package/api/docs/_adapter.d.mts +63 -0
- package/api/docs/_adapter.mjs +312 -18
- package/api/docs/docs.doc.mjs +2 -1
- package/api/docs/docs.mjs +2 -1
- package/api/docs/docs.test.mjs +5 -2
- package/api/docs/integration-tree.test.mjs +22 -0
- package/api/docs/list/list.mjs +12 -2
- package/api/docs/reference-blocks.test.mjs +1 -3
- package/api/doctor/_adapter.d.mts +108 -0
- package/api/doctor/_adapter.mjs +223 -4
- package/api/doctor/doctor.d.mts +199 -0
- package/api/doctor/doctor.doc.mjs +3 -2
- package/api/doctor/doctor.mjs +530 -34
- package/api/doctor/doctor.test.mjs +180 -14
- package/api/doctor/release-checks.test.mjs +156 -0
- package/api/doctor/theme-checks.mjs +16 -3
- package/api/doctor/theme-checks.test.mjs +223 -7
- package/api/error.d.mts +10 -0
- package/api/error.mjs +25 -0
- package/api/gap-report/gap-report.d.mts +3 -0
- package/api/gap-report/gap-report.doc.mjs +11 -3
- package/api/gap-report/gap-report.mjs +152 -48
- package/api/gap-report/gap-report.test.mjs +233 -0
- package/api/gap-report/gap-report.type.d.mts +41 -0
- package/api/gap-report/gap-report.type.mjs +18 -0
- package/api/hook/_adapter.mjs +3 -11
- package/api/hook/hook.doc.mjs +4 -0
- package/api/hook/list/list.d.mts +1 -1
- package/api/init/_adapter.d.mts +22 -0
- package/api/init/_adapter.mjs +59 -0
- package/api/init/init.d.mts +7 -5
- package/api/init/init.doc.mjs +28 -7
- package/api/init/init.mjs +28 -4
- package/api/init/init.type.d.mts +48 -3
- package/api/init/init.type.mjs +37 -3
- package/api/init/run/run.d.mts +1 -1
- package/api/init/run/run.mjs +15 -4
- package/api/init/user/user.d.mts +14 -0
- package/api/init/user/user.mjs +87 -0
- package/api/init/user/user.test.mjs +232 -0
- package/api/integration/_adapter.d.mts +33 -0
- package/api/integration/_adapter.mjs +58 -0
- package/api/integration/authoring-checks.mjs +100 -5
- package/api/integration/authoring-checks.test.mjs +769 -0
- package/api/integration/authoring-checks.type.d.mts +134 -0
- package/api/integration/authoring-checks.type.mjs +60 -1
- package/api/integration/integrationCheck.doc.mjs +1 -1
- package/api/integration/integrationComponentConflicts.doc.mjs +11 -3
- package/api/integration/integrationDocConflicts.doc.mjs +22 -5
- package/api/integration/pack-check.mjs +303 -13
- package/api/integration/pack-check.test.mjs +371 -10
- package/api/integration/validate-integration-fixes.test.mjs +67 -0
- package/api/integration/validate-integration.d.mts +8 -0
- package/api/integration/validate-integration.mjs +55 -9
- package/api/integration/validate-integration.test.mjs +77 -8
- package/api/integration/validate-integration.type.d.mts +8 -0
- package/api/integration/validate-integration.type.mjs +3 -1
- package/api/integration/validate-unread-theme-folders.test.mjs +3 -2
- package/api/integration/validateIntegration.doc.mjs +4 -2
- package/api/search/_adapter.d.mts +11 -0
- package/api/search/_adapter.mjs +25 -0
- package/api/search/search.d.mts +73 -13
- package/api/search/search.doc.mjs +8 -3
- package/api/search/search.domain-priority.test.mjs +108 -18
- package/api/search/search.mjs +541 -52
- package/api/search/search.test.mjs +143 -1
- package/api/search/search.type.d.mts +14 -1
- package/api/search/search.type.mjs +6 -1
- package/api/swizzle/_adapter.mjs +2 -2
- package/api/swizzle/copy/copy.mjs +1 -1
- package/api/template/template-integration.test.mjs +1 -1
- package/api/theme/_adapter.d.mts +16 -0
- package/api/theme/_adapter.mjs +32 -5
- package/api/theme/build/build.d.mts +2 -1
- package/api/theme/build/build.mjs +70 -14
- package/api/theme/build/build.packed-old-core.test.mjs +20 -3
- package/api/theme/build/font-warning.mjs +5 -3
- package/api/theme/build/font-warning.test.mjs +2 -1
- package/api/theme/remove/remove.test.mjs +2 -2
- package/api/theme/targets/targets.mjs +3 -10
- package/api/theme/themeTargets.doc.mjs +4 -0
- package/api/theme/use/use.test.mjs +1 -1
- package/api/upgrade/_adapter.d.mts +40 -2
- package/api/upgrade/_adapter.mjs +118 -5
- package/api/upgrade/run/cli-behind-core.test.mjs +438 -0
- package/api/upgrade/run/run.mjs +35 -2
- package/api/upgrade/status/status.d.mts +21 -5
- package/api/upgrade/status/status.mjs +45 -8
- package/api/upgrade/upgrade.doc.mjs +6 -3
- package/api/upgrade/upgrade.mjs +5 -1
- package/api/upgrade/upgrade.type.d.mts +23 -0
- package/api/upgrade/upgrade.type.mjs +16 -1
- package/assets/codemods/__tests__/registry.test.mjs +1 -0
- package/assets/codemods/registry.mjs +1 -0
- package/assets/codemods/runner.mjs +7 -1
- package/assets/codemods/transforms/next/index.mjs +1 -11
- package/assets/codemods/transforms/v0.7.2/index.mjs +20 -0
- package/assets/discover/official-packages.json +367 -0
- package/assets/docs/author-a-theme.doc.mjs +2 -2
- package/assets/docs/browser-support.doc.mjs +1 -1
- package/assets/docs/getting-started.doc.mjs +23 -3
- package/assets/docs/styling-overview.doc.mjs +1 -1
- package/assets/docs/theme.doc.mjs +1 -1
- package/assets/docs/tree/add-a-component.doc.mjs +12 -2
- package/assets/docs/tree/add-a-theme.doc.mjs +13 -3
- package/assets/docs/tree/add-a-topic.doc.mjs +54 -9
- package/assets/docs/tree/agent-guidance.doc.mjs +19 -5
- package/assets/docs/tree/block-template.doc.mjs +6 -18
- package/assets/docs/tree/build-the-template.doc.mjs +1 -1
- package/assets/docs/tree/building-blocks.doc.mjs +4 -0
- package/assets/docs/tree/check-the-props.doc.mjs +8 -3
- package/assets/docs/tree/check-your-docs.doc.mjs +30 -13
- package/assets/docs/tree/checks.doc.mjs +17 -17
- package/assets/docs/tree/ci-and-containers.doc.mjs +88 -0
- package/assets/docs/tree/cli-command.doc.mjs +142 -0
- package/assets/docs/tree/cli.doc.mjs +6 -0
- package/assets/docs/tree/codemods.doc.mjs +17 -7
- package/assets/docs/tree/commands.doc.mjs +7 -1
- package/assets/docs/tree/component-family.doc.mjs +3 -5
- package/assets/docs/tree/component-imports.doc.mjs +13 -3
- package/assets/docs/tree/components.doc.mjs +7 -1
- package/assets/docs/tree/computer-agent-guide.doc.mjs +160 -0
- package/assets/docs/tree/computer-integrations.doc.mjs +93 -0
- package/assets/docs/tree/configuration.doc.mjs +7 -3
- package/assets/docs/tree/debug-and-gap-reports.doc.mjs +41 -22
- package/assets/docs/tree/define-the-theme.doc.mjs +6 -5
- package/assets/docs/tree/describe-the-component.doc.mjs +2 -2
- package/assets/docs/tree/docs.doc.mjs +9 -3
- package/assets/docs/tree/document-the-template.doc.mjs +1 -1
- package/assets/docs/tree/document-the-theme.doc.mjs +3 -3
- package/assets/docs/tree/export-template-assets.doc.mjs +1 -1
- package/assets/docs/tree/extend-or-replace.doc.mjs +19 -9
- package/assets/docs/tree/fonts-and-assets.doc.mjs +2 -2
- package/assets/docs/tree/generate-a-palette.doc.mjs +7 -5
- package/assets/docs/tree/global-integrations.doc.mjs +124 -0
- package/assets/docs/tree/global.doc.mjs +131 -0
- package/assets/docs/tree/grade-template-with-agent.doc.mjs +5 -5
- package/assets/docs/tree/install-once.doc.mjs +105 -0
- package/assets/docs/tree/integrations.doc.mjs +13 -1
- package/assets/docs/tree/layout-spacing.doc.mjs +2 -3
- package/assets/docs/tree/layout.doc.mjs +6 -6
- package/assets/docs/tree/links.doc.mjs +6 -5
- package/assets/docs/tree/migration-setup.doc.mjs +3 -2
- package/assets/docs/tree/migration-verification.doc.mjs +0 -1
- package/assets/docs/tree/migration.doc.mjs +0 -1
- package/assets/docs/tree/monorepos.doc.mjs +84 -0
- package/assets/docs/tree/package-and-test.doc.mjs +1 -1
- package/assets/docs/tree/page-template.doc.mjs +3 -7
- package/assets/docs/tree/problems.doc.mjs +205 -0
- package/assets/docs/tree/project-global-or-both.doc.mjs +131 -0
- package/assets/docs/tree/publishing.doc.mjs +6 -6
- package/assets/docs/tree/quick-start.doc.mjs +52 -26
- package/assets/docs/tree/reference.doc.mjs +192 -0
- package/assets/docs/tree/replace-a-core-component.doc.mjs +15 -7
- package/assets/docs/tree/replace-a-core-template.doc.mjs +9 -11
- package/assets/docs/tree/scaffold.doc.mjs +1 -1
- package/assets/docs/tree/sections-and-placement.doc.mjs +9 -11
- package/assets/docs/tree/see-it-in-an-app.doc.mjs +17 -5
- package/assets/docs/tree/short-and-findable.doc.mjs +9 -8
- package/assets/docs/tree/single-component.doc.mjs +14 -6
- package/assets/docs/tree/start-a-template.doc.mjs +18 -8
- package/assets/docs/tree/subcomponent.doc.mjs +6 -6
- package/assets/docs/tree/template-assets.doc.mjs +2 -2
- package/assets/docs/tree/template-doc-overview.doc.mjs +6 -17
- package/assets/docs/tree/template-fonts.doc.mjs +1 -1
- package/assets/docs/tree/template-icons.doc.mjs +1 -1
- package/assets/docs/tree/template-images-media.doc.mjs +1 -1
- package/assets/docs/tree/template-styles.doc.mjs +2 -2
- package/assets/docs/tree/templates.doc.mjs +7 -1
- package/assets/docs/tree/test-in-an-app.doc.mjs +7 -7
- package/assets/docs/tree/test-template-in-app.doc.mjs +5 -5
- package/assets/docs/tree/themes.doc.mjs +4 -0
- package/assets/docs/tree/tokens-and-setup.doc.mjs +19 -15
- package/assets/docs/tree/troubleshooting.doc.mjs +22 -14
- package/assets/docs/tree/uninstall.doc.mjs +109 -0
- package/assets/docs/tree/updates.doc.mjs +92 -0
- package/assets/docs/tree/upgrading.doc.mjs +6 -6
- package/assets/docs/tree/use-a-theme-in-an-app.doc.mjs +14 -2
- package/assets/docs/tree/verify-packed-template.doc.mjs +3 -3
- package/assets/docs/tree/versioning.doc.mjs +9 -9
- package/assets/docs/tree/who-answers.doc.mjs +119 -0
- package/assets/docs/tree/write-the-template-file.doc.mjs +5 -5
- package/assets/docs/working-with-ai.doc.mjs +23 -9
- package/authoring/codemod/codemod.doc.mjs +7 -3
- package/authoring/config/config.doc.mjs +9 -6
- package/authoring/config/type.ts +4 -2
- package/authoring/debug/parse.d.mts +5 -5
- package/authoring/discover/discover.doc.mjs +7 -1
- package/authoring/doctypes/_schema.d.mts +8 -3
- package/authoring/doctypes/_schema.mjs +1 -0
- package/authoring/doctypes/base/graph-fields.doc.mjs +6 -4
- package/authoring/doctypes/command/command.doc.mjs +20 -12
- package/authoring/doctypes/command/type.ts +14 -0
- package/authoring/doctypes/component/component.doc.mjs +29 -26
- package/authoring/doctypes/component/type.ts +15 -5
- package/authoring/doctypes/enum/enum.doc.mjs +7 -4
- package/authoring/doctypes/function/function.doc.mjs +9 -8
- package/authoring/doctypes/hook/hook.doc.mjs +5 -4
- package/authoring/doctypes/hook/type.ts +4 -0
- package/authoring/doctypes/namespace/namespace.doc.mjs +7 -6
- package/authoring/doctypes/reference/reference.doc.mjs +12 -11
- package/authoring/doctypes/schema/schema.doc.mjs +9 -9
- package/authoring/doctypes/template/template.doc.mjs +2 -2
- package/authoring/doctypes/theme/theme.doc.mjs +2 -2
- package/authoring/gap-report/gap-report.doc.mjs +2 -2
- package/authoring/identity/identity.doc.mjs +3 -3
- package/authoring/index.d.ts +1 -0
- package/authoring/integration/integration.doc.mjs +22 -5
- package/authoring/integration/parse.test.mjs +11 -0
- package/authoring/integration/schema.d.mts +14 -3
- package/authoring/integration/schema.mjs +33 -2
- package/authoring/integration/type.ts +8 -0
- package/clients/cli/bin/astryx.mjs +20 -3
- package/clients/cli/cli-command.test.mjs +166 -0
- package/clients/cli/commands/blog.doc.mjs +1 -0
- package/clients/cli/commands/build-theme.batch-report.test.mjs +14 -2
- package/clients/cli/commands/build-theme.font-warning.test.mjs +3 -3
- package/clients/cli/commands/build-theme.mjs +25 -12
- package/clients/cli/commands/build.doc.mjs +1 -0
- package/clients/cli/commands/build.exit-codes-doc.test.mjs +4 -0
- package/clients/cli/commands/cli-postinstall.test.mjs +49 -1
- package/clients/cli/commands/component.doc.mjs +1 -0
- package/clients/cli/commands/discover.broken-integration.test.mjs +11 -7
- package/clients/cli/commands/discover.doc.mjs +9 -1
- package/clients/cli/commands/discover.mjs +144 -93
- package/clients/cli/commands/discover.no-source.test.mjs +448 -33
- package/clients/cli/commands/discover.sources.test.mjs +20 -1
- package/clients/cli/commands/docs.doc.mjs +1 -0
- package/clients/cli/commands/docs.mjs +49 -19
- package/clients/cli/commands/docs.test.mjs +2 -2
- package/clients/cli/commands/doctor-integration-components.doc.mjs +7 -3
- package/clients/cli/commands/doctor-integration-docs.doc.mjs +20 -5
- package/clients/cli/commands/doctor-integration-templates.doc.mjs +1 -0
- package/clients/cli/commands/doctor-integration-validate.doc.mjs +13 -2
- package/clients/cli/commands/doctor-integration.test.mjs +52 -4
- package/clients/cli/commands/doctor.doc.mjs +12 -2
- package/clients/cli/commands/doctor.mjs +102 -7
- package/clients/cli/commands/doctor.test.mjs +10 -4
- package/clients/cli/commands/gap-report.doc.mjs +15 -2
- package/clients/cli/commands/gap-report.mjs +24 -2
- package/clients/cli/commands/gap-report.test.mjs +79 -0
- package/clients/cli/commands/hook.doc.mjs +1 -0
- package/clients/cli/commands/init.behavior.test.mjs +5 -0
- package/clients/cli/commands/init.doc.mjs +29 -3
- package/clients/cli/commands/integration-add.doc.mjs +7 -0
- package/clients/cli/commands/integration-authoring.test.mjs +49 -3
- package/clients/cli/commands/integration-check.doc.mjs +10 -2
- package/clients/cli/commands/integration-check.test.mjs +175 -1
- package/clients/cli/commands/integration-pack.doc.mjs +8 -1
- package/clients/cli/commands/integration-verify.doc.mjs +8 -1
- package/clients/cli/commands/integration.mjs +15 -9
- package/clients/cli/commands/json-contract.test.mjs +11 -2
- package/clients/cli/commands/manifest.doc.mjs +1 -0
- package/clients/cli/commands/outside-project.test.mjs +774 -0
- package/clients/cli/commands/search.doc.mjs +1 -0
- package/clients/cli/commands/search.mjs +16 -11
- package/clients/cli/commands/search.test.mjs +429 -296
- package/clients/cli/commands/setup-nudge.test.mjs +102 -2
- package/clients/cli/commands/swizzle.doc.mjs +7 -0
- package/clients/cli/commands/swizzle.mjs +5 -3
- package/clients/cli/commands/swizzle.routing.test.mjs +19 -2
- package/clients/cli/commands/template.doc.mjs +1 -0
- package/clients/cli/commands/theme-add-lifecycle.test.mjs +3 -3
- package/clients/cli/commands/theme-add.doc.mjs +8 -1
- package/clients/cli/commands/theme-build.doc.mjs +1 -0
- package/clients/cli/commands/theme-eject.doc.mjs +1 -0
- package/clients/cli/commands/theme-list.behavior.test.mjs +6 -0
- package/clients/cli/commands/theme-list.doc.mjs +1 -0
- package/clients/cli/commands/theme-palette-generate.doc.mjs +1 -0
- package/clients/cli/commands/theme-remove.doc.mjs +7 -0
- package/clients/cli/commands/theme-targets.doc.mjs +1 -0
- package/clients/cli/commands/theme-template.doc.mjs +1 -0
- package/clients/cli/commands/theme-use.doc.mjs +7 -0
- package/clients/cli/commands/upgrade.config-ordering.test.mjs +2 -1
- package/clients/cli/commands/upgrade.doc.mjs +22 -1
- package/clients/cli/commands/upgrade.file-protection.test.mjs +3 -2
- package/clients/cli/commands/upgrade.hook-output.test.mjs +2 -1
- package/clients/cli/commands/upgrade.older-cli.test.mjs +160 -0
- package/clients/cli/index.mjs +111 -16
- package/clients/cli/lib/cli-error.mjs +4 -1
- package/clients/cli/lib/component-format.test.mjs +1 -1
- package/clients/cli/lib/define-command.mjs +2 -2
- package/clients/cli/lib/json-shim.mjs +3 -1
- package/clients/cli/lib/manifest.d.ts +9 -0
- package/clients/cli/lib/manifest.mjs +17 -1
- package/clients/cli/lib/manifest.test.mjs +25 -0
- package/foundation/agent-docs/agent-doc-state.d.mts +35 -6
- package/foundation/agent-docs/agent-doc-state.mjs +66 -6
- package/foundation/agent-docs/agent-docs.d.mts +4 -3
- package/foundation/agent-docs/agent-docs.mjs +11 -9
- package/foundation/agent-docs/computer-agent-text.d.mts +133 -0
- package/foundation/agent-docs/computer-agent-text.mjs +623 -0
- package/foundation/agent-docs/computer-agent-text.test.mjs +602 -0
- package/foundation/config/project.d.mts +35 -3
- package/foundation/config/project.mjs +145 -8
- package/foundation/config/project.test.mjs +66 -0
- package/foundation/config/theme-state.mjs +5 -4
- package/foundation/discovery/authoring-self-docs.mjs +1 -1
- package/foundation/discovery/cli-self-docs.mjs +20 -3
- package/foundation/discovery/cli-self-docs.test.mjs +3 -2
- package/foundation/discovery/component-replacement.mjs +2 -1
- package/foundation/discovery/copied-passages.d.mts +216 -0
- package/foundation/discovery/copied-passages.mjs +720 -0
- package/foundation/discovery/copied-passages.test.mjs +124 -0
- package/foundation/discovery/doc-consistency.d.mts +34 -0
- package/foundation/discovery/doc-consistency.mjs +513 -0
- package/foundation/discovery/doc-consistency.test.mjs +347 -0
- package/foundation/discovery/doc-fluff.d.mts +112 -0
- package/foundation/discovery/doc-fluff.mjs +328 -0
- package/foundation/discovery/doc-fluff.test.mjs +142 -0
- package/foundation/discovery/doc-types.d.mts +1 -1
- package/foundation/discovery/doc-types.mjs +15 -8
- package/foundation/discovery/doc-types.test.mjs +94 -2
- package/foundation/discovery/docs-discovery.d.mts +7 -0
- package/foundation/discovery/docs-discovery.mjs +26 -2
- package/foundation/discovery/project-typescript.d.mts +11 -2
- package/foundation/discovery/project-typescript.mjs +32 -4
- package/foundation/discovery/prop-drift.d.mts +26 -7
- package/foundation/discovery/prop-drift.mjs +173 -8
- package/foundation/discovery/prop-drift.test.mjs +120 -2
- package/foundation/discovery/runner-allowlist.d.mts +40 -0
- package/foundation/discovery/runner-allowlist.mjs +53 -0
- package/foundation/discovery/stray-pointers.d.mts +52 -0
- package/foundation/discovery/stray-pointers.mjs +293 -0
- package/foundation/discovery/stray-pointers.test.mjs +86 -0
- package/foundation/discovery/template-needs.mjs +5 -2
- package/foundation/discovery/theme-imports.mjs +8 -4
- package/foundation/discovery/theme-imports.test.mjs +1 -1
- package/foundation/discovery/type-text.mjs +1 -1
- package/foundation/discovery/type-text.test.mjs +1 -1
- package/foundation/doc-compiler/doc-loads.test.mjs +42 -2
- package/foundation/doc-compiler/inputs.mjs +4 -1
- package/foundation/doc-compiler/links.d.mts +32 -0
- package/foundation/doc-compiler/links.mjs +163 -26
- package/foundation/doc-compiler/links.test.mjs +97 -4
- package/foundation/doc-compiler/read.d.mts +1 -1
- package/foundation/doc-compiler/tree.mjs +30 -1
- package/foundation/doc-compiler/tree.test.mjs +8 -1
- package/foundation/env/cli-command.d.mts +83 -0
- package/foundation/env/cli-command.mjs +152 -0
- package/foundation/env/cli-command.test.mjs +129 -0
- package/foundation/env/node-version.test.mjs +15 -3
- package/foundation/env/package-manager.d.mts +93 -9
- package/foundation/env/package-manager.global.test.mjs +66 -0
- package/foundation/env/package-manager.mjs +184 -13
- package/foundation/env/package-manager.test.mjs +341 -15
- package/foundation/env/project-scope.d.mts +9 -0
- package/foundation/env/project-scope.mjs +33 -0
- package/foundation/env/search-path.d.mts +42 -0
- package/foundation/env/search-path.mjs +205 -0
- package/foundation/env/search-path.test.mjs +122 -0
- package/foundation/env/user-dirs.d.mts +39 -0
- package/foundation/env/user-dirs.mjs +93 -0
- package/foundation/env/user-dirs.test.mjs +72 -0
- package/foundation/env/user-settings.d.mts +46 -0
- package/foundation/env/user-settings.mjs +106 -0
- package/foundation/env/user-settings.test.mjs +64 -0
- package/foundation/fs/file-protection.mjs +15 -1
- package/foundation/fs/module-loader.d.mts +2 -1
- package/foundation/fs/module-loader.mjs +60 -4
- package/foundation/fs/module-loader.stdout.test.mjs +3 -2
- package/foundation/fs/module-loader.test.mjs +194 -0
- package/foundation/fs/path-compare.d.mts +33 -0
- package/foundation/fs/path-compare.mjs +73 -0
- package/foundation/fs/paths.d.mts +57 -1
- package/foundation/fs/paths.mjs +131 -3
- package/foundation/fs/paths.test.mjs +10 -1
- package/foundation/integrations/computer-integrations.d.mts +78 -0
- package/foundation/integrations/computer-integrations.mjs +316 -0
- package/foundation/integrations/computer-integrations.test.mjs +292 -0
- package/foundation/integrations/contribution-inventory.d.mts +11 -0
- package/foundation/integrations/contribution-inventory.mjs +50 -2
- package/foundation/integrations/integration-warnings.mjs +3 -2
- package/foundation/integrations/integration-warnings.test.mjs +8 -9
- package/foundation/integrations/integrations.d.mts +25 -1
- package/foundation/integrations/integrations.mjs +46 -3
- package/foundation/integrations/issue.ts +6 -0
- package/foundation/integrations/validate-contributions.d.mts +2 -0
- package/foundation/integrations/validate-contributions.mjs +41 -1
- package/foundation/release/agent-text-worker.d.mts +4 -0
- package/foundation/release/agent-text-worker.mjs +52 -0
- package/foundation/release/cache.d.mts +310 -0
- package/foundation/release/cache.mjs +1216 -0
- package/foundation/release/cache.test.mjs +920 -0
- package/foundation/release/choose.d.mts +207 -0
- package/foundation/release/choose.mjs +677 -0
- package/foundation/release/choose.test.mjs +427 -0
- package/foundation/release/core-worker.d.mts +4 -0
- package/foundation/release/core-worker.mjs +38 -0
- package/foundation/release/global-state.d.mts +259 -0
- package/foundation/release/global-state.mjs +472 -0
- package/foundation/release/global-state.test.mjs +381 -0
- package/foundation/release/handoff.d.mts +60 -0
- package/foundation/release/handoff.e2e.test.mjs +278 -0
- package/foundation/release/handoff.mjs +357 -0
- package/foundation/release/lock-lease.d.mts +23 -0
- package/foundation/release/lock-lease.mjs +80 -0
- package/foundation/release/notices.d.mts +253 -0
- package/foundation/release/notices.mjs +596 -0
- package/foundation/release/notices.test.mjs +565 -0
- package/foundation/release/npm-guard.d.mts +4 -0
- package/foundation/release/npm-guard.mjs +126 -0
- package/foundation/release/project.d.mts +141 -0
- package/foundation/release/project.mjs +466 -0
- package/foundation/release/project.test.mjs +288 -0
- package/foundation/release/refresh-worker.d.mts +4 -0
- package/foundation/release/refresh-worker.mjs +27 -0
- package/foundation/release/run-context.d.mts +47 -0
- package/foundation/release/run-context.mjs +149 -0
- package/foundation/release/update-notice-env.d.mts +28 -0
- package/foundation/release/update-notice-env.mjs +39 -0
- package/foundation/response/base.d.ts +26 -3
- package/foundation/response/error-codes.d.mts +3 -1
- package/foundation/response/error-codes.doc.mjs +12 -0
- package/foundation/response/error-codes.mjs +17 -0
- package/foundation/response/error-codes.test.mjs +2 -0
- package/foundation/response/json-contract.test.mjs +7 -2
- package/foundation/response/json.mjs +4 -1
- package/foundation/response/response-types.doc.mjs +17 -11
- package/foundation/response/response-types.doc.test.mjs +46 -0
- package/foundation/response/response.doc.mjs +3 -3
- package/foundation/xle/browser-imports.test.mjs +74 -0
- package/package.json +11 -11
- package/scripts/postinstall.mjs +24 -5
- /package/assets/codemods/transforms/{next → v0.7.2}/__tests__/migrate-list-edge-compensation-to-edge.test.mjs +0 -0
- /package/assets/codemods/transforms/{next → v0.7.2}/migrate-list-edge-compensation-to-edge.mjs +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* @file `astryx docs cli/integrations/templates/document-the-template`:
|
|
4
|
+
* @file `astryx docs cli/integrations/building-blocks/templates/document-the-template`:
|
|
5
5
|
* document page and block templates for discovery and correct reuse.
|
|
6
6
|
*/
|
|
7
7
|
|
|
@@ -13,7 +13,7 @@ export const docs = {
|
|
|
13
13
|
title: 'Document the theme',
|
|
14
14
|
category: 'guide',
|
|
15
15
|
description:
|
|
16
|
-
'Document a theme by extending the core theme topic, so an app reads it in
|
|
16
|
+
'Document a theme by extending the core theme topic, so an app reads it in {@link generic:theme}.',
|
|
17
17
|
sections: [
|
|
18
18
|
{
|
|
19
19
|
id: 'extend-the-theme-topic',
|
|
@@ -21,7 +21,7 @@ export const docs = {
|
|
|
21
21
|
content: [
|
|
22
22
|
{
|
|
23
23
|
type: 'prose',
|
|
24
|
-
text: "Give your theme a doc topic that extends the core `theme` topic, so an app that lists your package sees your theme at the end of
|
|
24
|
+
text: "Give your theme a doc topic that extends the core `theme` topic, so an app that lists your package sees your theme at the end of {@link generic:theme}. Add it with `extends: 'theme'` ({@link generic:extend-or-replace}).",
|
|
25
25
|
},
|
|
26
26
|
{
|
|
27
27
|
type: 'code',
|
|
@@ -50,7 +50,7 @@ export default {
|
|
|
50
50
|
},
|
|
51
51
|
{
|
|
52
52
|
type: 'prose',
|
|
53
|
-
text: 'Keep the section short: how to install the package, run `theme add`, apply the generated module ({@link generic:use-a-theme-in-an-app}), and customize with `extends`. When the theme uses a custom font, name the families and the optional exported font stylesheet that `theme add` imports ({@link generic:fonts-and-assets}). Extend `theme` rather than a topic another package replaces, or an app that
|
|
53
|
+
text: 'Keep the section short: how to install the package, run `theme add`, apply the generated module ({@link generic:use-a-theme-in-an-app}), and customize with `extends`. When the theme uses a custom font, name the families and the optional exported font stylesheet that `theme add` imports ({@link generic:fonts-and-assets}). Extend `theme` rather than a topic another package replaces, or an app that loads that package after yours drops your section.',
|
|
54
54
|
},
|
|
55
55
|
],
|
|
56
56
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* @file `astryx docs cli/integrations/templates/build-the-template/package-and-test/export-template-assets`:
|
|
4
|
+
* @file `astryx docs cli/integrations/building-blocks/templates/build-the-template/package-and-test/export-template-assets`:
|
|
5
5
|
* expose and include everything a copied template imports, and declare the
|
|
6
6
|
* packages it needs.
|
|
7
7
|
*/
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* @file `astryx docs cli/integrations/docs/extend-or-replace`:
|
|
5
|
-
* existing topic with `replaces`, merge sections into one with
|
|
6
|
-
* check overlaps with Core topics.
|
|
4
|
+
* @file `astryx docs cli/integrations/building-blocks/docs/extend-or-replace`:
|
|
5
|
+
* take over an existing topic with `replaces`, merge sections into one with
|
|
6
|
+
* `extends`, and check overlaps with Core topics.
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
/** @type {import('@astryxdesign/cli/authoring').ReferenceDoc} */
|
|
@@ -26,7 +26,7 @@ export const docs = {
|
|
|
26
26
|
{
|
|
27
27
|
type: 'code',
|
|
28
28
|
lang: 'bash',
|
|
29
|
-
code: '
|
|
29
|
+
code: 'astryx integration add doc acme-getting-started --replaces getting-started\n# The old name now opens your topic\nastryx docs getting-started',
|
|
30
30
|
},
|
|
31
31
|
{
|
|
32
32
|
type: 'code',
|
|
@@ -46,12 +46,12 @@ export const docs = {
|
|
|
46
46
|
content: [
|
|
47
47
|
{
|
|
48
48
|
type: 'prose',
|
|
49
|
-
text: 'Set `extends` to merge sections into an existing topic instead of owning it. A section
|
|
49
|
+
text: 'Set `extends` to merge sections into an existing topic instead of owning it. A section replaces the base section it matches, and a section that matches none is added at the end.',
|
|
50
50
|
},
|
|
51
51
|
{
|
|
52
52
|
type: 'code',
|
|
53
53
|
lang: 'bash',
|
|
54
|
-
code: '
|
|
54
|
+
code: 'astryx integration add doc acme-theming --extends theme\nastryx docs theme --index',
|
|
55
55
|
},
|
|
56
56
|
{
|
|
57
57
|
type: 'code',
|
|
@@ -63,7 +63,7 @@ export const docs = {
|
|
|
63
63
|
type: 'list',
|
|
64
64
|
style: 'unordered',
|
|
65
65
|
items: [
|
|
66
|
-
"
|
|
66
|
+
"Read the base topic's keys with `--index`, and give a section that replaces one that key as its `id`. A section without an `id` matches only a base section with exactly its title, or one whose `id` is the key its title makes, so `Integration Themes` is added beside a base `Integration themes` that has no `id`.",
|
|
67
67
|
"The topic keeps the base's title and description, and readers open it by the base's name.",
|
|
68
68
|
'Replace the `Overview` placeholder that `integration add` writes, or it is added to the base topic.',
|
|
69
69
|
"Extend a topic to correct or add to it. A copy made with `replaces` stops getting the owner's fixes.",
|
|
@@ -82,12 +82,12 @@ export const docs = {
|
|
|
82
82
|
{
|
|
83
83
|
type: 'code',
|
|
84
84
|
lang: 'bash',
|
|
85
|
-
code: '
|
|
85
|
+
code: 'astryx doctor integration docs',
|
|
86
86
|
},
|
|
87
87
|
{
|
|
88
88
|
type: 'code',
|
|
89
89
|
lang: 'text',
|
|
90
|
-
code: 'severity: [info]\ntopic: acme-getting-started\nrelationship: replaces\ncoreTopic: getting-started\nmessage: Intentional override: "acme-getting-started" replaces the Core topic "getting-started".\n\nseverity: [fail]\ntopic:
|
|
90
|
+
code: 'severity: [info]\ntopic: acme-getting-started\nrelationship: replaces\ncoreTopic: getting-started\nmessage: Intentional override: "acme-getting-started" replaces the Core topic "getting-started".\n\nseverity: [fail]\ntopic: color\nrelationship: accidental\ncoreTopic: color\nmessage: Accidental conflict: "color" is already a Core topic. Rename it, declare replaces: \'color\' to take it over, or declare extends: \'color\' to merge sections.',
|
|
91
91
|
},
|
|
92
92
|
{
|
|
93
93
|
type: 'list',
|
|
@@ -99,5 +99,15 @@ export const docs = {
|
|
|
99
99
|
},
|
|
100
100
|
],
|
|
101
101
|
},
|
|
102
|
+
{
|
|
103
|
+
id: 'global-mode',
|
|
104
|
+
title: 'In global mode',
|
|
105
|
+
content: [
|
|
106
|
+
{
|
|
107
|
+
type: 'prose',
|
|
108
|
+
text: 'In global mode: a doc that extends or replaces a topic from a package installed for the computer applies in folders outside any project; inside a project, only those from packages the project installs apply. See {@link namespace:global} and {@link generic:global-integrations}.',
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
},
|
|
102
112
|
],
|
|
103
113
|
};
|
|
@@ -61,7 +61,7 @@ export const oceanTheme = defineTheme({
|
|
|
61
61
|
},
|
|
62
62
|
{
|
|
63
63
|
type: 'prose',
|
|
64
|
-
text: 'The stylesheet can contain self-hosted `@font-face` rules or import a hosted stylesheet. A hosted `@import` is simple, but it delays loading compared with a preconnected `<link>`; choose that trade-off deliberately.
|
|
64
|
+
text: 'The stylesheet can contain self-hosted `@font-face` rules or import a hosted stylesheet. A hosted `@import` is simple, but it delays loading compared with a preconnected `<link>`; choose that trade-off deliberately. Doctor warns when it cannot prove the loader — a hosted `@import`, or no font stylesheet while the app loads the family itself — but the warning does not fail the app.',
|
|
65
65
|
},
|
|
66
66
|
{
|
|
67
67
|
type: 'code',
|
|
@@ -83,7 +83,7 @@ export const oceanTheme = defineTheme({
|
|
|
83
83
|
'Load every weight and style the theme uses. Do not let the browser synthesize bold or italic.',
|
|
84
84
|
'Include self-hosted font files and their licenses in the packed package.',
|
|
85
85
|
'Keep CSS and font assets side-effectful so a bundler does not remove the loader.',
|
|
86
|
-
'Run `integration verify`; it fails when an exported font stylesheet
|
|
86
|
+
'Run `integration verify`; it fails when an exported font stylesheet cannot resolve, but it does not check the font files the stylesheet names.',
|
|
87
87
|
],
|
|
88
88
|
},
|
|
89
89
|
],
|
|
@@ -21,7 +21,7 @@ export const docs = {
|
|
|
21
21
|
content: [
|
|
22
22
|
{
|
|
23
23
|
type: 'prose',
|
|
24
|
-
text: 'A theme needs dozens of related colors — shades of each brand color for backgrounds, borders, text, and states, in both light and dark mode. A palette is that full set of shades. Rather than hand-pick every one, you name a few seed colors and generate the rest, so the shades stay consistent
|
|
24
|
+
text: 'A theme needs dozens of related colors — shades of each brand color for backgrounds, borders, text, and states, in both light and dark mode. A palette is that full set of shades. Rather than hand-pick every one, you name a few seed colors and generate the rest, so the shades stay consistent.',
|
|
25
25
|
},
|
|
26
26
|
{
|
|
27
27
|
type: 'prose',
|
|
@@ -40,9 +40,9 @@ export const docs = {
|
|
|
40
40
|
type: 'code',
|
|
41
41
|
lang: 'bash',
|
|
42
42
|
code: `# Print the palette without writing files
|
|
43
|
-
|
|
43
|
+
astryx theme palette generate themes/ocean/palette.config.json
|
|
44
44
|
# Write the palette and its receipt
|
|
45
|
-
|
|
45
|
+
astryx theme palette generate themes/ocean/palette.config.json \\
|
|
46
46
|
--out themes/ocean/tokens/ocean.palette.ts`,
|
|
47
47
|
},
|
|
48
48
|
{
|
|
@@ -50,7 +50,9 @@ npx astryx theme palette generate themes/ocean/palette.config.json \\
|
|
|
50
50
|
lang: 'text',
|
|
51
51
|
code: `[ok] Wrote themes/ocean/tokens/ocean.palette.ts
|
|
52
52
|
|
|
53
|
-
[ok] Wrote themes/ocean/tokens/ocean.palette.receipt.json
|
|
53
|
+
[ok] Wrote themes/ocean/tokens/ocean.palette.receipt.json
|
|
54
|
+
|
|
55
|
+
Review and edit the candidate before adopting it as theme-owned palette data.`,
|
|
54
56
|
},
|
|
55
57
|
{
|
|
56
58
|
type: 'prose',
|
|
@@ -58,7 +60,7 @@ npx astryx theme palette generate themes/ocean/palette.config.json \\
|
|
|
58
60
|
},
|
|
59
61
|
{
|
|
60
62
|
type: 'prose',
|
|
61
|
-
text: 'Add `--preview <file>.html` to also get a web page showing every shade, so you can eyeball the palette in a browser. Write it outside `themes/` so it does not ship in your package.
|
|
63
|
+
text: 'Add `--preview <file>.html` to also get a web page showing every shade, so you can eyeball the palette in a browser. Write it outside `themes/` so it does not ship in your package. Every option is in {@link command:theme palette generate}, and the config it reads is described in {@link function:generateTonalPalette}.',
|
|
62
64
|
},
|
|
63
65
|
],
|
|
64
66
|
},
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file `astryx docs cli/integrations/global-integrations`: make an
|
|
5
|
+
* integration work when people install it next to their global Astryx
|
|
6
|
+
* install; a checklist and the commands to try it (spec AST-081 FR12).
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/** @type {import('@astryxdesign/cli/authoring').ReferenceDoc} */
|
|
10
|
+
export const docs = {
|
|
11
|
+
type: 'generic',
|
|
12
|
+
name: 'global-integrations',
|
|
13
|
+
placement: {
|
|
14
|
+
parent: 'namespace:integrations',
|
|
15
|
+
slot: 'guides',
|
|
16
|
+
order: 25,
|
|
17
|
+
},
|
|
18
|
+
title: 'Make your integration work globally',
|
|
19
|
+
category: 'guide',
|
|
20
|
+
keywords: [
|
|
21
|
+
'global integration',
|
|
22
|
+
'global mode',
|
|
23
|
+
'npm i -g',
|
|
24
|
+
'installed for this computer',
|
|
25
|
+
'outside a project',
|
|
26
|
+
'peer range',
|
|
27
|
+
'peerDependencies',
|
|
28
|
+
'cliCommand conflict',
|
|
29
|
+
'try it globally',
|
|
30
|
+
],
|
|
31
|
+
description:
|
|
32
|
+
"People can install your integration next to their global Astryx install, where it works in every folder outside a project; inside a project, only the project's own integrations work. A checklist, with the exact commands to try it.",
|
|
33
|
+
sections: [
|
|
34
|
+
{
|
|
35
|
+
id: 'peer-range',
|
|
36
|
+
title: "First: your peer ranges must include the global CLI's version",
|
|
37
|
+
content: [
|
|
38
|
+
{
|
|
39
|
+
type: 'prose',
|
|
40
|
+
text: 'Your `@astryxdesign/core` (and, if you use it, `@astryxdesign/cli`) `peerDependencies` ranges must include the version of the CLI installed globally. If they do not, Astryx skips your package outside projects, and `astryx doctor` warns and names the range.',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
type: 'prose',
|
|
44
|
+
text: "Inside a project that does not install your package, `astryx discover` offers it, with the command that adds it to that project, once your peer range admits the project's release.",
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
id: 'where-it-works',
|
|
50
|
+
title: 'Where your integration works',
|
|
51
|
+
content: [
|
|
52
|
+
{
|
|
53
|
+
type: 'list',
|
|
54
|
+
style: 'unordered',
|
|
55
|
+
items: [
|
|
56
|
+
"Installed in an app: it works in that app, as always, whichever `astryx` the person runs, because the app's version of Astryx answers there.",
|
|
57
|
+
'Installed next to the global install (`npm i -g @astryxdesign/cli your-package`), or in the same folder as the CLI by a tool that installs them together: it works in every folder outside a project. People and agents there see its components, templates, docs, themes, codemods, and discover source.',
|
|
58
|
+
"Installed only globally, inside an app that does not install it: it adds nothing there. When it supports the app's version and loads, `astryx discover` lists it as one the app could add, with the app's install command.",
|
|
59
|
+
"Installed both ways: the app's copy is the one used in that app. In your own package folder, your working copy is used.",
|
|
60
|
+
],
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
type: 'prose',
|
|
64
|
+
text: "Astryx loads a global integration with the same loader and checks as an app's, so nothing extra goes in your manifest.",
|
|
65
|
+
},
|
|
66
|
+
],
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
id: 'checklist',
|
|
70
|
+
title: 'Checklist',
|
|
71
|
+
content: [
|
|
72
|
+
{
|
|
73
|
+
type: 'list',
|
|
74
|
+
style: 'unordered',
|
|
75
|
+
items: [
|
|
76
|
+
'Declare the `@astryxdesign/core` (and, if you use it, `@astryxdesign/cli`) `peerDependencies` range your package really supports. Outside a project, Astryx skips your package when that range leaves out the global version, and `astryx doctor` says why: too narrow, and global users lose it after an upgrade; too wide, and it loads against a Core it may not build with.',
|
|
77
|
+
'Keep imports in your docs and templates to packages an app installs with yours, since outside a project there is no app to check them against.',
|
|
78
|
+
"If you set `cliCommand`, know that outside a project it starts every command Astryx prints, and that two global integrations naming different commands cancel out, falling back to `astryx` ({@link generic:cli-command}). Inside an app, only the app's integrations count.",
|
|
79
|
+
'Try it globally before you publish, with the steps below.',
|
|
80
|
+
],
|
|
81
|
+
},
|
|
82
|
+
],
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
id: 'try-it',
|
|
86
|
+
title: 'Try it globally',
|
|
87
|
+
content: [
|
|
88
|
+
{
|
|
89
|
+
type: 'prose',
|
|
90
|
+
text: 'Pack your package, install it next to a global CLI, and look at it from an empty folder:',
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
type: 'code',
|
|
94
|
+
lang: 'bash',
|
|
95
|
+
code: 'npm pack\nnpm i -g @astryxdesign/cli ./your-package-1.0.0.tgz\nmkdir -p /tmp/try-global && cd /tmp/try-global\nastryx discover\nastryx docs\nastryx doctor',
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
type: 'list',
|
|
99
|
+
style: 'unordered',
|
|
100
|
+
items: [
|
|
101
|
+
'`astryx discover` lists your package as installed, with what it adds.',
|
|
102
|
+
'`astryx docs` lists your topics, and `astryx search <one of your component names>` finds them.',
|
|
103
|
+
"`astryx doctor`'s `computer-integrations` check lists your package as used, with no warning.",
|
|
104
|
+
"In an app that does not install it, `astryx discover` lists it as one the app could add, with the app's install command, and none of its components or docs show up.",
|
|
105
|
+
],
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
type: 'prose',
|
|
109
|
+
text: 'Remove it again with `npm uninstall -g your-package`.',
|
|
110
|
+
},
|
|
111
|
+
],
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
id: 'more',
|
|
115
|
+
title: 'More on global mode',
|
|
116
|
+
content: [
|
|
117
|
+
{
|
|
118
|
+
type: 'prose',
|
|
119
|
+
text: 'How global mode works for the people who install your package: {@link namespace:global}. Their side of global integrations: {@link generic:computer-integrations}.',
|
|
120
|
+
},
|
|
121
|
+
],
|
|
122
|
+
},
|
|
123
|
+
],
|
|
124
|
+
};
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file `astryx docs global`: global mode. What it is, how to install it, what you get,
|
|
5
|
+
* and which version runs where; the parent of every global-mode page
|
|
6
|
+
* (spec AST-081).
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/** @type {import('@astryxdesign/cli/authoring').NamespaceDoc} */
|
|
10
|
+
export const docs = {
|
|
11
|
+
type: 'namespace',
|
|
12
|
+
name: 'global',
|
|
13
|
+
title: 'Global mode',
|
|
14
|
+
summary:
|
|
15
|
+
'Install Astryx once on your computer and use it in any folder. Each project still runs its own version of Astryx, so a global install never changes what a project gets.',
|
|
16
|
+
keywords: [
|
|
17
|
+
'global',
|
|
18
|
+
'global mode',
|
|
19
|
+
'globally',
|
|
20
|
+
'global install',
|
|
21
|
+
'npm i -g',
|
|
22
|
+
'install globally',
|
|
23
|
+
'install once',
|
|
24
|
+
'any folder',
|
|
25
|
+
'outside a project',
|
|
26
|
+
'which version',
|
|
27
|
+
'computer',
|
|
28
|
+
],
|
|
29
|
+
slots: {
|
|
30
|
+
guides: {
|
|
31
|
+
title: 'Global mode, question by question',
|
|
32
|
+
accepts: {
|
|
33
|
+
kinds: ['generic'],
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
blocks: [
|
|
38
|
+
{
|
|
39
|
+
type: 'prose',
|
|
40
|
+
text: "Global mode means installing the Astryx CLI once for your computer, so the astryx command works everywhere: in your projects, in an empty folder, and for every coding agent. Inside a project, the project's own version of Astryx answers, so your global install never changes what a project gets.",
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
type: 'code',
|
|
44
|
+
lang: 'bash',
|
|
45
|
+
code: 'npm i -g @astryxdesign/cli',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
type: 'heading',
|
|
49
|
+
level: 3,
|
|
50
|
+
text: 'What you get',
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
type: 'list',
|
|
54
|
+
style: 'unordered',
|
|
55
|
+
items: [
|
|
56
|
+
'Docs, components, templates, and search in any folder, before you have a project.',
|
|
57
|
+
'Every coding agent on your computer knows Astryx, through a short guide the CLI keeps where agent tools look.',
|
|
58
|
+
"Each project keeps its own version: in a project, the project's version answers, whichever astryx command you run.",
|
|
59
|
+
],
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
type: 'heading',
|
|
63
|
+
level: 3,
|
|
64
|
+
text: 'Which version runs',
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
type: 'table',
|
|
68
|
+
headers: ['Where you run it', 'Which version answers'],
|
|
69
|
+
rows: [
|
|
70
|
+
[
|
|
71
|
+
'Inside a project',
|
|
72
|
+
"The project's own CLI. In a project that installs only `@astryxdesign/core`, the astryx command you started, with a hint once a day to add the CLI.",
|
|
73
|
+
],
|
|
74
|
+
['Outside any project', 'Your global version.'],
|
|
75
|
+
[
|
|
76
|
+
'Commands for your computer, such as `astryx init --user`',
|
|
77
|
+
'Your global version, in any folder.',
|
|
78
|
+
],
|
|
79
|
+
],
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
type: 'prose',
|
|
83
|
+
text: 'Not sure whether you want a project install, a global one, or both: {@link generic:project-global-or-both}. The details: {@link generic:who-answers}.',
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
type: 'heading',
|
|
87
|
+
level: 3,
|
|
88
|
+
text: 'Updates',
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
type: 'prose',
|
|
92
|
+
text: 'Your global install never upgrades itself or a project. When a newer version is out, a command that succeeds ends with a two-line notice, at most once a day: {@link generic:updates}.',
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
type: 'heading',
|
|
96
|
+
level: 3,
|
|
97
|
+
text: 'Agents',
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
type: 'prose',
|
|
101
|
+
text: 'The CLI keeps a short Astryx guide where agent tools look in your home folder, so an agent working anywhere knows Astryx is there: {@link generic:computer-agent-guide}.',
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
type: 'heading',
|
|
105
|
+
level: 3,
|
|
106
|
+
text: 'Integrations',
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
type: 'prose',
|
|
110
|
+
text: "Integrations you install next to your global install work outside projects. Inside a project, only the project's own integrations do: {@link generic:computer-integrations}. Building one: {@link generic:global-integrations}.",
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
type: 'heading',
|
|
114
|
+
level: 3,
|
|
115
|
+
text: 'More',
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
type: 'list',
|
|
119
|
+
style: 'unordered',
|
|
120
|
+
items: [
|
|
121
|
+
'Install, and work offline: {@link generic:install-once}.',
|
|
122
|
+
'Monorepos and nested folders: {@link generic:monorepos}.',
|
|
123
|
+
'CI and containers: {@link generic:ci-and-containers}.',
|
|
124
|
+
'Something looks wrong: {@link generic:problems}.',
|
|
125
|
+
'Uninstall and reset: {@link generic:uninstall}.',
|
|
126
|
+
'Every path, setting, JSON field, and error code: {@link generic:reference}.',
|
|
127
|
+
'What each command does outside a project: {@link namespace:commands}.',
|
|
128
|
+
],
|
|
129
|
+
},
|
|
130
|
+
],
|
|
131
|
+
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* @file `astryx docs cli/integrations/building-blocks/templates/grade-template-with-agent`:
|
|
4
|
+
* @file `astryx docs cli/integrations/building-blocks/templates/write-good-templates/grade-template-with-agent`:
|
|
5
5
|
* give an agent the canonical rubric and require a reproducible template grade.
|
|
6
6
|
*/
|
|
7
7
|
|
|
@@ -36,11 +36,11 @@ export const docs = {
|
|
|
36
36
|
code: `Grade integration template <id> from <package> at <revision>.
|
|
37
37
|
|
|
38
38
|
Before scoring:
|
|
39
|
-
1. Read \`
|
|
40
|
-
2. Read \`
|
|
39
|
+
1. Read \`astryx docs cli/integrations/building-blocks/templates/write-good-templates --full\`.
|
|
40
|
+
2. Read \`astryx docs cli/integrations/building-blocks/templates/write-good-templates/template-grading-rubric --full\` and every guide it links.
|
|
41
41
|
3. Inspect the template source, its matching .doc.mjs file, package.json exports and files, and astryx.integration.mjs.
|
|
42
|
-
4. Run \`
|
|
43
|
-
5. Follow \`
|
|
42
|
+
4. Run \`astryx integration verify\` in the package.
|
|
43
|
+
5. Follow \`astryx docs cli/integrations/building-blocks/templates/build-the-template/package-and-test/test-template-in-app --full\`: install the packed package in the clean app, copy the template, build the app, and render the behavior matrix.
|
|
44
44
|
|
|
45
45
|
Score all seven rubric categories. Cite file and line evidence for every deduction. Do not award points for a state you did not inspect. If browser or build evidence is unavailable, say so and mark the template not publishable.
|
|
46
46
|
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file `astryx docs global/install-once`: install the CLI for the computer with each
|
|
5
|
+
* package manager; the cache of versions projects need; offline (spec AST-081).
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/** @type {import('@astryxdesign/cli/authoring').ReferenceDoc} */
|
|
9
|
+
export const docs = {
|
|
10
|
+
type: 'generic',
|
|
11
|
+
name: 'install-once',
|
|
12
|
+
placement: {
|
|
13
|
+
parent: 'namespace:global',
|
|
14
|
+
slot: 'guides',
|
|
15
|
+
order: 2,
|
|
16
|
+
},
|
|
17
|
+
title: 'Install Astryx globally',
|
|
18
|
+
category: 'guide',
|
|
19
|
+
keywords: [
|
|
20
|
+
'pnpm add -g',
|
|
21
|
+
'yarn global add',
|
|
22
|
+
'bun add -g',
|
|
23
|
+
'volta install',
|
|
24
|
+
'npx',
|
|
25
|
+
'offline',
|
|
26
|
+
'cache',
|
|
27
|
+
'per-user cache',
|
|
28
|
+
'EACCES',
|
|
29
|
+
'permission denied',
|
|
30
|
+
'sudo',
|
|
31
|
+
'npm prefix',
|
|
32
|
+
],
|
|
33
|
+
description:
|
|
34
|
+
'Install the Astryx CLI once for your computer with npm, pnpm, Yarn, Bun, or Volta, and what happens when you are offline.',
|
|
35
|
+
sections: [
|
|
36
|
+
{
|
|
37
|
+
id: 'install',
|
|
38
|
+
title: 'Install it',
|
|
39
|
+
content: [
|
|
40
|
+
{
|
|
41
|
+
type: 'prose',
|
|
42
|
+
text: 'Install the CLI package with your package manager. One astryx command then works in every folder.',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
type: 'code',
|
|
46
|
+
lang: 'bash',
|
|
47
|
+
code: 'npm i -g @astryxdesign/cli\n# or: pnpm add -g @astryxdesign/cli · yarn global add @astryxdesign/cli · bun add -g @astryxdesign/cli · volta install @astryxdesign/cli',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
type: 'prose',
|
|
51
|
+
text: "Keep the CLI installed in each project too: that pins its version for teammates and CI ({@link generic:project-global-or-both}). Inside a project, whichever astryx command you type, the project's version answers. Outside a project, your global install answers with its own version, and a version you name, such as `npx @astryxdesign/cli@0.7.0`, answers as exactly that version.",
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
id: 'eacces',
|
|
57
|
+
title: 'Permission denied (EACCES)',
|
|
58
|
+
content: [
|
|
59
|
+
{
|
|
60
|
+
type: 'prose',
|
|
61
|
+
text: 'If `npm i -g` fails with `EACCES`, do not use `sudo`. Give npm a global folder you own, then add its `bin` folder to your PATH, or use a Node version manager such as nvm, fnm, or Volta:',
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
type: 'code',
|
|
65
|
+
lang: 'bash',
|
|
66
|
+
code: 'npm config set prefix ~/.npm-global\nexport PATH="$HOME/.npm-global/bin:$PATH"\nnpm i -g @astryxdesign/cli',
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
type: 'prose',
|
|
70
|
+
text: "Astryx's update notice then names that folder in its upgrade command.",
|
|
71
|
+
},
|
|
72
|
+
],
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
id: 'versions-for-projects',
|
|
76
|
+
title: 'Versions for your projects',
|
|
77
|
+
content: [
|
|
78
|
+
{
|
|
79
|
+
type: 'prose',
|
|
80
|
+
text: "When a project's own CLI is installed but cannot start, Astryx runs the CLI version equal to the project's Core instead, installing it once into a cache in your home folder and reusing it. It uses npm for that, so your npm registry, proxy, and offline settings apply. Deleting the cache is safe: versions come back when a project needs them. Where it lives: {@link generic:reference}.",
|
|
81
|
+
},
|
|
82
|
+
],
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
id: 'offline',
|
|
86
|
+
title: 'Offline',
|
|
87
|
+
content: [
|
|
88
|
+
{
|
|
89
|
+
type: 'prose',
|
|
90
|
+
text: "Your global install answers offline in a project with only Core, and so does any project that installs its own CLI. Outside a project, commands that read components, such as `astryx component Button`, need your global version's Core: after any command you run online, your global install downloads it once into the cache in the background, so they work offline from then on (not in CI, where nothing downloads by itself: {@link generic:ci-and-containers}; and not on Windows, where the first component command downloads it). Only a project whose own CLI cannot start needs a version installed or cached; when it is neither and cannot be fetched, your global install answers with a one-line warning, and Astryx waits 2 minutes before trying to download it again (10 minutes after a second failure in a row). {@link generic:problems} has the exact message.",
|
|
91
|
+
},
|
|
92
|
+
],
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
id: 'more',
|
|
96
|
+
title: 'More on global mode',
|
|
97
|
+
content: [
|
|
98
|
+
{
|
|
99
|
+
type: 'prose',
|
|
100
|
+
text: 'This page is part of {@link namespace:global}, which explains what global mode is and how each part works. Next: {@link generic:who-answers}.',
|
|
101
|
+
},
|
|
102
|
+
],
|
|
103
|
+
},
|
|
104
|
+
],
|
|
105
|
+
};
|
|
@@ -24,17 +24,29 @@ export const docs = {
|
|
|
24
24
|
},
|
|
25
25
|
},
|
|
26
26
|
blocks: [
|
|
27
|
+
{
|
|
28
|
+
type: 'prose',
|
|
29
|
+
text: 'In global mode: users can install your integration for their computer, beside the global CLI. It then applies in folders outside any project, and inside a project only if the project installs it. See {@link namespace:global} and {@link generic:global-integrations}.',
|
|
30
|
+
},
|
|
27
31
|
{
|
|
28
32
|
type: 'prose',
|
|
29
33
|
text: 'An integration is a way to share things with Astryx users: a package you own and maintain, built on a framework Astryx gives you. Publish one, many, or any mix, and people install it in one step. It works with the Astryx CLI alongside Core. See each kind under {@link namespace:building-blocks}.',
|
|
30
34
|
},
|
|
31
35
|
{
|
|
32
36
|
type: 'prose',
|
|
33
|
-
text: 'For example, ship a carousel as an integration. Any app that installs it can find it with `
|
|
37
|
+
text: 'For example, ship a carousel as an integration. Any app that installs it can find it with `astryx search carousel`, and the CLI uses it like any Astryx Core component.',
|
|
34
38
|
},
|
|
35
39
|
{
|
|
36
40
|
type: 'prose',
|
|
37
41
|
text: 'An integration can also replace a built-in template or doc. To start, install `@astryxdesign/cli` and open {@link generic:quick-start}.',
|
|
38
42
|
},
|
|
43
|
+
{
|
|
44
|
+
type: 'prose',
|
|
45
|
+
text: 'Every field of every file you write for an integration is in {@link generic:authoring}.',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
type: 'prose',
|
|
49
|
+
text: "Every integration runs `astryx integration check --strict` in its own build: it is required, not optional, so a doc, prop, or link that stops matching the code fails your build instead of your users' apps. See {@link generic:checks}.",
|
|
50
|
+
},
|
|
39
51
|
],
|
|
40
52
|
};
|
|
@@ -13,8 +13,7 @@ export const docs = {
|
|
|
13
13
|
title: 'Layout spacing',
|
|
14
14
|
placement: {parent: 'namespace:layout', slot: 'guides', order: 40},
|
|
15
15
|
category: 'guide',
|
|
16
|
-
description:
|
|
17
|
-
'Hold one content line per region, then tune gaps and density.',
|
|
16
|
+
description: 'Hold one content line per region, then tune gaps and density.',
|
|
18
17
|
keywords: [
|
|
19
18
|
'alignment',
|
|
20
19
|
'content line',
|
|
@@ -35,7 +34,7 @@ export const docs = {
|
|
|
35
34
|
content: [
|
|
36
35
|
{
|
|
37
36
|
type: 'prose',
|
|
38
|
-
text: 'Hold one content line per region, then tune gaps and density. Alignment, Rhythm, and Density and size
|
|
37
|
+
text: 'Hold one content line per region, then tune gaps and density. Alignment, Rhythm, and Density and size each build on these rules.',
|
|
39
38
|
},
|
|
40
39
|
{
|
|
41
40
|
type: 'list',
|
|
@@ -32,21 +32,21 @@ export const docs = {
|
|
|
32
32
|
blocks: [
|
|
33
33
|
{
|
|
34
34
|
type: 'prose',
|
|
35
|
-
text:
|
|
35
|
+
text: 'Build a layout outside-in. Settle the shell and its region budgets before any content exists, then work inward. Content-first layouts drift into a padded column of cards, because every section ends up inventing its own container.',
|
|
36
36
|
},
|
|
37
37
|
{
|
|
38
38
|
type: 'list',
|
|
39
39
|
style: 'ordered',
|
|
40
40
|
items: [
|
|
41
|
-
|
|
42
|
-
"Structure: rank
|
|
43
|
-
|
|
44
|
-
|
|
41
|
+
'Scaffold: pick the shell, budget each region, and choose navigation',
|
|
42
|
+
"Structure: rank each region's content and choose its container",
|
|
43
|
+
'Spacing: align each region to one content line, then set gaps and density',
|
|
44
|
+
'Breakpoints: decide what each region does as width changes',
|
|
45
45
|
],
|
|
46
46
|
},
|
|
47
47
|
{
|
|
48
48
|
type: 'prose',
|
|
49
|
-
text:
|
|
49
|
+
text: 'This guide decides layout, not component APIs. Run `astryx build "<idea>"` to start from the closest template for your app type, and `astryx component <Name>` for a component\'s props.',
|
|
50
50
|
},
|
|
51
51
|
],
|
|
52
52
|
slots: {
|