@astryxdesign/cli 0.6.3-canary.90e79a2 → 0.6.3-canary.98a2e4e
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/api/upgrade/upgrade.doc.mjs +4 -3
- package/api/upgrade/upgrade.type.d.mts +1 -1
- package/api/upgrade/upgrade.type.mjs +1 -1
- package/assets/docs/cli-integrations.doc.mjs +72 -14
- package/authoring/integration/type.ts +15 -2
- package/clients/cli/commands/theme-palette-generate.doc.mjs +8 -4
- package/clients/cli/commands/upgrade.doc.mjs +2 -2
- package/package.json +9 -9
|
@@ -16,8 +16,9 @@ export const doc = {
|
|
|
16
16
|
description:
|
|
17
17
|
'Migrates project source from a previous Astryx version to the currently ' +
|
|
18
18
|
'installed one by running the registered codemods, and compares the fully ' +
|
|
19
|
-
'rendered managed agent-docs block on every path, including
|
|
20
|
-
'integration guidance changes
|
|
19
|
+
'rendered managed agent-docs block on every migration path, including ' +
|
|
20
|
+
'same-Core integration guidance changes; list and registry-only modes do not ' +
|
|
21
|
+
'run migration reconciliation. Dry-run previews without writing; `apply` ' +
|
|
21
22
|
'writes the prepared block only after selected codemods and hooks succeed. ' +
|
|
22
23
|
'Core codemods run before ' +
|
|
23
24
|
'the config is loaded so a config codemod can repair an otherwise-invalid ' +
|
|
@@ -68,7 +69,7 @@ export const doc = {
|
|
|
68
69
|
name: 'options.integration',
|
|
69
70
|
type: 'string[]',
|
|
70
71
|
description:
|
|
71
|
-
'Explicit integration
|
|
72
|
+
'Explicit integration specifiers to process. Resolved beneath node_modules; absolute paths and `.` or `..` segments are rejected.',
|
|
72
73
|
},
|
|
73
74
|
{
|
|
74
75
|
name: 'options.path',
|
|
@@ -211,7 +211,7 @@ export type UpgradeOptions = {
|
|
|
211
211
|
*/
|
|
212
212
|
skipCodemod?: string[] | undefined;
|
|
213
213
|
/**
|
|
214
|
-
* Explicit integration
|
|
214
|
+
* Explicit integration specifiers resolved beneath node_modules; absolute paths and `.` or `..` segments are rejected.
|
|
215
215
|
*/
|
|
216
216
|
integration?: string[] | undefined;
|
|
217
217
|
/**
|
|
@@ -135,7 +135,7 @@
|
|
|
135
135
|
* @property {boolean} [force] Run codemods even if `from` >= installed.
|
|
136
136
|
* @property {string} [codemod] Run a single named transform.
|
|
137
137
|
* @property {string[]} [skipCodemod] Exclude named codemods (re-run past a failure).
|
|
138
|
-
* @property {string[]} [integration] Explicit integration
|
|
138
|
+
* @property {string[]} [integration] Explicit integration specifiers resolved beneath node_modules; absolute paths and `.` or `..` segments are rejected.
|
|
139
139
|
* @property {string} [path] Source directory to scan (default `./src`).
|
|
140
140
|
* @property {boolean} [installDeps] Auto-install jscodeshift without prompting.
|
|
141
141
|
* @property {boolean} [registry] Reconcile only ShadCN-copied compositions; `from` is not required.
|
|
@@ -20,7 +20,7 @@ export const docs = {
|
|
|
20
20
|
},
|
|
21
21
|
{
|
|
22
22
|
type: 'prose',
|
|
23
|
-
text: 'The authoring CLI owns the integration file. The first `astryx integration add` creates `astryx.integration.mjs`; each later add declares its root only after writing a valid contribution behind it. Identity (name and version) still comes from package.json. For the consumer side, run `
|
|
23
|
+
text: 'The authoring CLI owns the integration file. The first `astryx integration add` creates `astryx.integration.mjs`; each later add declares its root only after writing a valid contribution behind it. Identity (name and version) still comes from package.json. For the consumer side, run `astryx docs getting-started`.',
|
|
24
24
|
},
|
|
25
25
|
{
|
|
26
26
|
type: 'prose',
|
|
@@ -52,7 +52,7 @@ export const docs = {
|
|
|
52
52
|
content: [
|
|
53
53
|
{
|
|
54
54
|
type: 'prose',
|
|
55
|
-
text: 'Do not start by hand-editing a manifest. Add the contribution you mean to ship; Astryx creates the manifest, writes every required file, preserves an existing custom root, and updates an existing package.json files allowlist without creating one.',
|
|
55
|
+
text: 'Do not start by hand-editing a manifest. Add the contribution you mean to ship; Astryx creates the manifest, writes every required file, preserves an existing custom root, and updates an existing package.json files allowlist without creating one. Always run these commands from the locally installed CLI in the package (e.g. `node node_modules/@astryxdesign/cli/clients/cli/bin/astryx.mjs` or `pnpm astryx`), not `npx @astryxdesign/cli` — npx may resolve a stale registry version whose integration scaffolding does not match the installed one.',
|
|
56
56
|
},
|
|
57
57
|
{
|
|
58
58
|
type: 'code',
|
|
@@ -84,17 +84,17 @@ export const docs = {
|
|
|
84
84
|
content: [
|
|
85
85
|
{
|
|
86
86
|
type: 'prose',
|
|
87
|
-
text: 'A useful theme package usually ships more than colors. Start with the source theme, then add the guides its consumers need.
|
|
87
|
+
text: 'A useful theme package usually ships more than colors. Start with the source theme, author the palette request at `themes/ocean/palette.config.json`, then add the guides its consumers need. The `integration add` commands keep the package manifest in sync; add palette outputs to the theme catalog after generation.',
|
|
88
88
|
},
|
|
89
89
|
{
|
|
90
90
|
type: 'code',
|
|
91
91
|
lang: 'bash',
|
|
92
92
|
label: 'In the provider package',
|
|
93
|
-
code: 'astryx integration add theme ocean\nastryx theme palette generate palette.config.json --out themes/ocean/tokens/ocean.palette.ts\nastryx integration add doc brand-theme\nastryx integration add doc theme-migration\nastryx theme list --package @acme/brand-integration\nastryx docs brand-theme\nastryx integration pack --check\nnpm pack',
|
|
93
|
+
code: 'astryx integration add theme ocean\nastryx theme palette generate themes/ocean/palette.config.json --out themes/ocean/tokens/ocean.palette.ts\nastryx integration add doc brand-theme\nastryx integration add doc theme-migration\nastryx theme list --package @acme/brand-integration\nastryx docs brand-theme\nastryx integration pack --check\nnpm pack',
|
|
94
94
|
},
|
|
95
95
|
{
|
|
96
96
|
type: 'prose',
|
|
97
|
-
text:
|
|
97
|
+
text: "Edit the generated theme and guide files before publishing. The shown palette command writes `themes/ocean/tokens/ocean.palette.ts` and its sibling `themes/ocean/tokens/ocean.palette.receipt.json`. The TypeScript candidate directly exports `black`, `white`, and `palette`; import what the theme uses from `./tokens/ocean.palette`. Keep the request at `themes/ocean/palette.config.json`, and list the theme source, request, candidate, and receipt in the catalog entry's `files` array. Add any optional wrapper, refs, icon, or preview modules only when you author them, and list each one too. `integration pack --check` runs the real package lifecycle and compares local discovery with the npm tarball, so a missing source file or files allowlist entry fails before a consumer sees it.",
|
|
98
98
|
},
|
|
99
99
|
{
|
|
100
100
|
type: 'code',
|
|
@@ -108,6 +108,25 @@ export const docs = {
|
|
|
108
108
|
},
|
|
109
109
|
],
|
|
110
110
|
},
|
|
111
|
+
{
|
|
112
|
+
title: 'Contribution Kinds at a Glance',
|
|
113
|
+
category: 'guide',
|
|
114
|
+
content: [
|
|
115
|
+
{
|
|
116
|
+
type: 'prose',
|
|
117
|
+
text: 'Each contribution kind uses a different metadata suffix, type stamp, and discovery rule. The table below prevents the most common first-time authoring mistake — using the wrong file or export convention.',
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
type: 'code',
|
|
121
|
+
lang: 'text',
|
|
122
|
+
code: "Kind Metadata suffix type stamp Source file\n──────── ───────────────────────── ───────────── ──────────────────────\nComponent Name.doc.{ts,mjs,js} 'component' Name.tsx (same stem)\nTemplate Name.template.{ts,mjs,js} 'page'/'block' Name.tsx (same stem)\nDoc topic topic.doc.{ts,mjs,js} 'generic' (none — docs are prose)\nCodemod <version>/<id>.{ts,mjs,js} 'code'/'config' (the codemod IS the source)\nTheme manifest.json entry — <slug>/<entry>.ts",
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
type: 'prose',
|
|
126
|
+
text: 'The `type` stamp is how new docs should be authored — it routes parsing to the correct schema at the load boundary. Legacy docs without a stamp still load via shape-sniffing for backward compatibility, but unstamped docs rely on heuristics (presence of `props`, `params`, etc.) and may parse under the wrong schema if the shape is ambiguous. Always stamp new integration contributions.',
|
|
127
|
+
},
|
|
128
|
+
],
|
|
129
|
+
},
|
|
111
130
|
{
|
|
112
131
|
title: 'The Integration File',
|
|
113
132
|
category: 'guide',
|
|
@@ -133,7 +152,7 @@ export const docs = {
|
|
|
133
152
|
content: [
|
|
134
153
|
{
|
|
135
154
|
type: 'prose',
|
|
136
|
-
text:
|
|
155
|
+
text: "Export your components from your library however you like, and consumers still import them from your package. For each component the CLI should document, ship a `.doc.{ts,mjs,js}` file with the same stem, for example `AcmeCarousel.tsx` alongside `AcmeCarousel.doc.ts`. The doc file must default-export an object with `type: 'component'` — not `'generic'` (that is for reference docs) and not `'page'`/`'block'` (those are for templates).",
|
|
137
156
|
},
|
|
138
157
|
{
|
|
139
158
|
type: 'prose',
|
|
@@ -142,7 +161,7 @@ export const docs = {
|
|
|
142
161
|
{
|
|
143
162
|
type: 'code',
|
|
144
163
|
lang: 'typescript',
|
|
145
|
-
code: "// AcmeCarousel.doc.ts\nexport default {\n type: 'component',\n name: 'AcmeCarousel',\n description: 'A carousel that cycles through slides.',\n // props, usage, examples, ...\n};",
|
|
164
|
+
code: "// AcmeCarousel.doc.ts\nexport default {\n type: 'component',\n name: 'AcmeCarousel',\n description: 'A carousel that cycles through slides.',\n // props, usage, examples, ...\n} satisfies import('@astryxdesign/cli/authoring').ComponentDoc;",
|
|
146
165
|
},
|
|
147
166
|
],
|
|
148
167
|
},
|
|
@@ -152,7 +171,7 @@ export const docs = {
|
|
|
152
171
|
content: [
|
|
153
172
|
{
|
|
154
173
|
type: 'prose',
|
|
155
|
-
text: "Templates are usually not exported from the package directly. Instead, consumers browse them through the CLI and materialize them into their app. Define a template as a plain object
|
|
174
|
+
text: "Templates are usually not exported from the package directly. Instead, consumers browse them through the CLI and materialize them into their app. Define a template as a plain object with `type: 'page'` (full pages) or `type: 'block'` (smaller chunks) as its default export in a `.template.{ts,mjs,js}` file next to the source, for example `AcmeLandingPage.tsx` and `AcmeLandingPage.template.ts`. Do not use the `.doc.{ts,mjs,js}` suffix — that is for component docs and reference docs.",
|
|
156
175
|
},
|
|
157
176
|
{
|
|
158
177
|
type: 'prose',
|
|
@@ -165,7 +184,7 @@ export const docs = {
|
|
|
165
184
|
},
|
|
166
185
|
{
|
|
167
186
|
type: 'prose',
|
|
168
|
-
text: 'The CLI needs both files at consume time. `integration add` includes the templates root when package.json already has a files allowlist. It never creates an exports map, because doing that can make previously-open deep imports private; when a map already exists, it adds the generated source subpath without replacing author-owned entries. `integration pack --check` proves the source and metadata survive the tarball and verifies every component through the public import its metadata advertises.',
|
|
187
|
+
text: 'The CLI needs both files at consume time. `integration add` includes the templates root when package.json already has a files allowlist. It never creates an exports map, because doing that can make previously-open deep imports private; when a map already exists, it adds the generated source subpath without replacing author-owned entries. Use consumer-safe extensionless subpaths in the exports map (e.g. `"./templates/AcmeDashboard"` instead of `"./templates/AcmeDashboard.tsx"`), so consumers import without knowing the file extension. `integration pack --check` proves the source and metadata survive the tarball and verifies every component through the public import its metadata advertises.',
|
|
169
188
|
},
|
|
170
189
|
],
|
|
171
190
|
},
|
|
@@ -175,7 +194,7 @@ export const docs = {
|
|
|
175
194
|
content: [
|
|
176
195
|
{
|
|
177
196
|
type: 'prose',
|
|
178
|
-
text: "Point the integration file's `docs` field at a directory of reference docs and every `{topic}.doc.{ts,mjs,js}` under it becomes a topic the CLI serves: `astryx docs` lists it, `astryx docs <topic>` prints it, `astryx search` indexes it, and `astryx init` names it in the agent block. A topic is a plain object
|
|
197
|
+
text: "Point the integration file's `docs` field at a directory of reference docs and every `{topic}.doc.{ts,mjs,js}` under it becomes a topic the CLI serves: `astryx docs` lists it, `astryx docs <topic>` prints it, `astryx search` indexes it, and `astryx init` names it in the agent block. A topic is a plain object with `type: 'generic'` as its default export — not `'component'` (that is for component docs with a same-stem source file). This is the same shape core's own topics use.",
|
|
179
198
|
},
|
|
180
199
|
{
|
|
181
200
|
type: 'code',
|
|
@@ -219,16 +238,33 @@ export const docs = {
|
|
|
219
238
|
{
|
|
220
239
|
type: 'code',
|
|
221
240
|
lang: 'text',
|
|
222
|
-
code: 'themes/\n manifest.json\n ocean/\n oceanTheme.ts',
|
|
241
|
+
code: 'themes/\n manifest.json\n ocean/\n oceanTheme.ts\n palette.config.json\n tokens/\n ocean.palette.ts\n ocean.palette.receipt.json',
|
|
223
242
|
},
|
|
224
243
|
{
|
|
225
244
|
type: 'prose',
|
|
226
|
-
text:
|
|
245
|
+
text: 'The root catalog `manifest.json` must be `{ "version": 1, "themes": [...] }`. Each entry in the `themes` array requires every field shown below — omitting any one is a hard validation error:',
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
type: 'list',
|
|
249
|
+
style: 'unordered',
|
|
250
|
+
items: [
|
|
251
|
+
'`slug` — lowercase kebab-case starting with a letter (e.g. `"ocean"`). Must be unique within the catalog.',
|
|
252
|
+
'`displayName` — human-readable label (e.g. `"Ocean"`).',
|
|
253
|
+
'`description` — string description of the theme.',
|
|
254
|
+
'`maintained` — boolean indicating active maintenance.',
|
|
255
|
+
'`entry` — source file relative to `themes/<slug>/` (e.g. `"oceanTheme.ts"`).',
|
|
256
|
+
'`exportName` — a valid JS identifier naming the runtime export in the entry file (e.g. `"oceanTheme"`). Astryx parses the source without executing it and rejects missing or type-only exports.',
|
|
257
|
+
'`files` — non-empty array of filenames relative to `themes/<slug>/`. Must include the entry file and every local static import the entry source uses. Astryx validates that every listed file exists on disk and that every local import in the entry names a file in this list.',
|
|
258
|
+
],
|
|
227
259
|
},
|
|
228
260
|
{
|
|
229
261
|
type: 'code',
|
|
230
262
|
lang: 'json',
|
|
231
|
-
code: '{\n "version": 1,\n "themes": [{\n "slug": "ocean",\n "displayName": "Ocean",\n "description": "Ocean theme.",\n "maintained": true,\n "entry": "oceanTheme.ts",\n "exportName": "oceanTheme",\n "files": ["oceanTheme.ts"]\n }]\n}',
|
|
263
|
+
code: '{\n "version": 1,\n "themes": [{\n "slug": "ocean",\n "displayName": "Ocean",\n "description": "Ocean theme with OKLCH palettes.",\n "maintained": true,\n "entry": "oceanTheme.ts",\n "exportName": "oceanTheme",\n "files": [\n "oceanTheme.ts",\n "palette.config.json",\n "tokens/ocean.palette.ts",\n "tokens/ocean.palette.receipt.json"\n ]\n }]\n}',
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
type: 'prose',
|
|
267
|
+
text: 'The generated candidate is already importable: it exports `black`, `white`, `palette`, and a default palette value. Import it directly from `./tokens/ocean.palette`. A wrapper or palette-refs module is optional application code, not generator output; list it only if you create it.',
|
|
232
268
|
},
|
|
233
269
|
{
|
|
234
270
|
type: 'prose',
|
|
@@ -271,10 +307,32 @@ export const docs = {
|
|
|
271
307
|
type: 'prose',
|
|
272
308
|
text: "Ship codemods so `astryx upgrade` can migrate consumers across breaking changes in your package. Point the integration file's `codemods` field at your codemods root, and author each one as a plain object stamped with `type: 'code'` (transforms source files) or `type: 'config'` (rewrites the consumer's `astryx.config`).",
|
|
273
309
|
},
|
|
310
|
+
{
|
|
311
|
+
type: 'prose',
|
|
312
|
+
text: 'The codemods root uses a version-folder-first layout. Each folder name is an exact semver string (no `v` prefix) matching the version the codemod migrates TO. Each module under it is a kebab-case `.ts`, `.mjs`, or `.js` file whose default export is the codemod envelope:',
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
type: 'code',
|
|
316
|
+
lang: 'text',
|
|
317
|
+
code: 'codemods/\n 0.2.0/\n rename-widget-prop.ts\n 0.3.0/\n update-theme-import.ts\n config/rename-integration.ts',
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
type: 'prose',
|
|
321
|
+
text: 'Codemod ids (the extension-less relative path under the version folder, e.g. `rename-widget-prop`, `config/rename-integration`) must be unique within a package across all versions. A duplicate id across versions is a hard error.',
|
|
322
|
+
},
|
|
274
323
|
{
|
|
275
324
|
type: 'code',
|
|
276
325
|
lang: 'typescript',
|
|
277
|
-
code: "// codemods/
|
|
326
|
+
code: "// codemods/0.2.0/rename-widget-prop.ts\nexport default {\n type: 'code',\n title: 'Rename AcmeWidget oldProp to newProp',\n description: 'Updates JSX props in consumer source files.',\n transform(file, api) {\n // jscodeshift transform\n return file.source;\n },\n};",
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
type: 'prose',
|
|
330
|
+
text: "`astryx upgrade` is dry-run by default — it previews which codemods would run and what files would change, without writing anything. Pass `--apply` to write the changes. There is no `--dry-run` flag; omitting `--apply` is the dry run. The `--integration` flag resolves each value beneath the project's `node_modules` (for example, `--integration @acme/widgets`). Absolute paths and `.` or `..` segments are rejected; other slash-separated values remain beneath `node_modules`.",
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
type: 'code',
|
|
334
|
+
lang: 'bash',
|
|
335
|
+
code: '# Preview what would change (dry-run, the default)\nastryx upgrade --from 0.1.0\n\n# Apply the migration\nastryx upgrade --from 0.1.0 --apply',
|
|
278
336
|
},
|
|
279
337
|
{
|
|
280
338
|
type: 'prose',
|
|
@@ -21,7 +21,13 @@ export interface AstryxIntegration {
|
|
|
21
21
|
components?: string;
|
|
22
22
|
/** Relative path to the templates root (resolved to absolute). */
|
|
23
23
|
templates?: string;
|
|
24
|
-
/** Relative path to the codemods root (resolved to absolute).
|
|
24
|
+
/** Relative path to the codemods root (resolved to absolute).
|
|
25
|
+
* The root uses a version-folder-first layout:
|
|
26
|
+
* `<codemodsRoot>/<version>/<id>.<ext>`, where `<version>` is an exact
|
|
27
|
+
* semver string (e.g. `0.2.0`, no `v` prefix) and `<id>` is a kebab-case
|
|
28
|
+
* module basename. Each module default-exports a codemod envelope stamped
|
|
29
|
+
* `type: 'code'` or `type: 'config'`. Codemod ids must be unique within
|
|
30
|
+
* a package across all versions. */
|
|
25
31
|
codemods?: string;
|
|
26
32
|
/** Relative path to the reference-docs (topics) root (resolved to
|
|
27
33
|
* absolute). Every `{topic}.doc.{ts,mjs,js}` under it is a topic the CLI
|
|
@@ -29,7 +35,14 @@ export interface AstryxIntegration {
|
|
|
29
35
|
* `replace` or `extend` a built-in topic; see the ReferenceDoc type. */
|
|
30
36
|
docs?: string;
|
|
31
37
|
/** Relative path to the source-theme catalog root (resolved to absolute).
|
|
32
|
-
* The root contains `manifest.json` plus one directory per theme slug.
|
|
38
|
+
* The root contains `manifest.json` plus one directory per theme slug.
|
|
39
|
+
* `manifest.json` is `{ "version": 1, "themes": [...] }` where each
|
|
40
|
+
* entry requires `slug`, `displayName`, `description` (string),
|
|
41
|
+
* `maintained` (boolean), `entry` (source file relative to `themes/<slug>/`),
|
|
42
|
+
* `exportName` (a valid JS identifier naming the runtime export), and
|
|
43
|
+
* `files` (non-empty array of filenames relative to `themes/<slug>/`).
|
|
44
|
+
* Every file listed must exist on disk; the entry file must also appear
|
|
45
|
+
* in `files`. */
|
|
33
46
|
themes?: string;
|
|
34
47
|
/** Static package guidance appended to the CLI-owned managed agent block. */
|
|
35
48
|
agentDocs?: {
|
|
@@ -18,7 +18,11 @@ export const doc = {
|
|
|
18
18
|
'Without --out it prints a preview. With --out it writes a candidate file and detached ' +
|
|
19
19
|
'receipt. --preview writes a standardized, self-contained HTML review artifact. ' +
|
|
20
20
|
'TypeScript output is directly importable and contains no generator dependency. ' +
|
|
21
|
-
'JSON is also supported. Existing author-owned files are left untouched unless --overwrite is explicit.'
|
|
21
|
+
'JSON is also supported. Existing author-owned files are left untouched unless --overwrite is explicit. ' +
|
|
22
|
+
'When used in a theme integration, keep the palette request under the theme slug, ' +
|
|
23
|
+
'write the candidate and receipt under that same slug, import the candidate from the theme source, ' +
|
|
24
|
+
"and list all three paths in the theme catalog entry's `files` array " +
|
|
25
|
+
'so `astryx theme add` copies them into the consumer project.',
|
|
22
26
|
fn: 'themePaletteGenerate',
|
|
23
27
|
args: [{name: 'config', param: 'configPath', required: true}],
|
|
24
28
|
options: [
|
|
@@ -42,15 +46,15 @@ export const doc = {
|
|
|
42
46
|
examples: [
|
|
43
47
|
{
|
|
44
48
|
label: 'Preview candidate JSON',
|
|
45
|
-
cli: 'astryx theme palette generate palette.config.json',
|
|
49
|
+
cli: 'astryx theme palette generate themes/ocean/palette.config.json',
|
|
46
50
|
},
|
|
47
51
|
{
|
|
48
52
|
label: 'Write candidate and receipt',
|
|
49
|
-
cli: 'astryx theme palette generate palette.config.json --out ocean.palette.ts',
|
|
53
|
+
cli: 'astryx theme palette generate themes/ocean/palette.config.json --out themes/ocean/tokens/ocean.palette.ts',
|
|
50
54
|
},
|
|
51
55
|
{
|
|
52
56
|
label: 'Write candidate, receipt, and review preview',
|
|
53
|
-
cli: 'astryx theme palette generate palette.config.json --out ocean.palette.ts --preview ocean.palette.html',
|
|
57
|
+
cli: 'astryx theme palette generate themes/ocean/palette.config.json --out themes/ocean/tokens/ocean.palette.ts --preview themes/ocean/tokens/ocean.palette.html',
|
|
54
58
|
},
|
|
55
59
|
],
|
|
56
60
|
exitCodes: [
|
|
@@ -53,10 +53,10 @@ export const doc = {
|
|
|
53
53
|
'Exclude named codemods (repeatable). Re-run past a failed codemod by skipping it.',
|
|
54
54
|
},
|
|
55
55
|
{
|
|
56
|
-
flag: '--integration <package
|
|
56
|
+
flag: '--integration <package>',
|
|
57
57
|
param: 'options.integration',
|
|
58
58
|
description:
|
|
59
|
-
'Explicit integration
|
|
59
|
+
'Explicit integration specifier (repeatable). Resolved beneath node_modules; absolute paths and `.` or `..` segments are rejected.',
|
|
60
60
|
default: [],
|
|
61
61
|
},
|
|
62
62
|
{
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@astryxdesign/cli",
|
|
3
|
-
"version": "0.6.3-canary.
|
|
3
|
+
"version": "0.6.3-canary.98a2e4e",
|
|
4
4
|
"displayName": "CLI",
|
|
5
5
|
"description": "Scaffold projects, browse templates, generate themes, and get agent-ready docs from the command line.",
|
|
6
6
|
"author": "Meta Open Source",
|
|
@@ -100,10 +100,10 @@
|
|
|
100
100
|
"zod": "^4.4.3"
|
|
101
101
|
},
|
|
102
102
|
"peerDependencies": {
|
|
103
|
-
"@astryxdesign/charts": "0.6.3-canary.
|
|
104
|
-
"@astryxdesign/core": "0.6.3-canary.
|
|
105
|
-
"@astryxdesign/lab": "0.6.3-canary.
|
|
106
|
-
"@astryxdesign/theme-neutral": "0.6.3-canary.
|
|
103
|
+
"@astryxdesign/charts": "0.6.3-canary.98a2e4e",
|
|
104
|
+
"@astryxdesign/core": "0.6.3-canary.98a2e4e",
|
|
105
|
+
"@astryxdesign/lab": "0.6.3-canary.98a2e4e",
|
|
106
|
+
"@astryxdesign/theme-neutral": "0.6.3-canary.98a2e4e",
|
|
107
107
|
"gpt-tokenizer": "^3.4.0"
|
|
108
108
|
},
|
|
109
109
|
"peerDependenciesMeta": {
|
|
@@ -121,10 +121,10 @@
|
|
|
121
121
|
}
|
|
122
122
|
},
|
|
123
123
|
"devDependencies": {
|
|
124
|
-
"@astryxdesign/charts": "0.6.3-canary.
|
|
125
|
-
"@astryxdesign/core": "0.6.3-canary.
|
|
126
|
-
"@astryxdesign/lab": "0.6.3-canary.
|
|
127
|
-
"@astryxdesign/theme-neutral": "0.6.3-canary.
|
|
124
|
+
"@astryxdesign/charts": "0.6.3-canary.98a2e4e",
|
|
125
|
+
"@astryxdesign/core": "0.6.3-canary.98a2e4e",
|
|
126
|
+
"@astryxdesign/lab": "0.6.3-canary.98a2e4e",
|
|
127
|
+
"@astryxdesign/theme-neutral": "0.6.3-canary.98a2e4e",
|
|
128
128
|
"@heroicons/react": "^2.2.0",
|
|
129
129
|
"@stylexjs/stylex": "^0.19.0",
|
|
130
130
|
"@types/babel__core": "^7.20.5",
|