@12ui/design 0.2.0 → 0.2.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.
Files changed (50) hide show
  1. package/README.md +33 -6
  2. package/dist/cli-capabilities.d.ts +47 -0
  3. package/dist/cli-capabilities.d.ts.map +1 -0
  4. package/dist/cli-capabilities.js +28 -0
  5. package/dist/cli-capabilities.js.map +1 -0
  6. package/dist/cli-export-command.d.ts.map +1 -1
  7. package/dist/cli-export-command.js +11 -9
  8. package/dist/cli-export-command.js.map +1 -1
  9. package/dist/cli-export-output-directory.d.ts +5 -0
  10. package/dist/cli-export-output-directory.d.ts.map +1 -0
  11. package/dist/cli-export-output-directory.js +34 -0
  12. package/dist/cli-export-output-directory.js.map +1 -0
  13. package/dist/cli-image-command.d.ts.map +1 -1
  14. package/dist/cli-image-command.js +4 -1
  15. package/dist/cli-image-command.js.map +1 -1
  16. package/dist/cli-persistence.d.ts +9 -0
  17. package/dist/cli-persistence.d.ts.map +1 -1
  18. package/dist/cli-persistence.js +75 -2
  19. package/dist/cli-persistence.js.map +1 -1
  20. package/dist/cli-skill-command.d.ts.map +1 -1
  21. package/dist/cli-skill-command.js +6 -2
  22. package/dist/cli-skill-command.js.map +1 -1
  23. package/dist/cli.js +6 -20
  24. package/dist/cli.js.map +1 -1
  25. package/dist/conversion-client.d.ts +5 -1
  26. package/dist/conversion-client.d.ts.map +1 -1
  27. package/dist/conversion-client.js +1 -1
  28. package/dist/conversion-client.js.map +1 -1
  29. package/dist/index.d.ts +1 -1
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +1 -1
  32. package/dist/index.js.map +1 -1
  33. package/dist/legacy-cli-cleanup.d.ts +11 -0
  34. package/dist/legacy-cli-cleanup.d.ts.map +1 -0
  35. package/dist/legacy-cli-cleanup.js +97 -0
  36. package/dist/legacy-cli-cleanup.js.map +1 -0
  37. package/dist/legacy-skill-catalog.d.ts +1 -0
  38. package/dist/legacy-skill-catalog.d.ts.map +1 -1
  39. package/dist/legacy-skill-catalog.js +38 -1
  40. package/dist/legacy-skill-catalog.js.map +1 -1
  41. package/dist/project-profiles.d.ts +23 -0
  42. package/dist/project-profiles.d.ts.map +1 -1
  43. package/dist/project-profiles.js +19 -1
  44. package/dist/project-profiles.js.map +1 -1
  45. package/dist/skill-installer.d.ts.map +1 -1
  46. package/dist/skill-installer.js +5 -5
  47. package/dist/skill-installer.js.map +1 -1
  48. package/package.json +1 -1
  49. package/skills/design/SKILL.md +9 -4
  50. package/skills/design-convert/SKILL.md +44 -13
package/README.md CHANGED
@@ -72,11 +72,19 @@ then `OPENAI_API_KEY` from the process or exactly `<project-root>/.env`. It
72
72
  refuses a Git-tracked `.env`, never stores or prints the key, persists attempt
73
73
  evidence, and never switches providers after dispatch. Choose `--aspect`
74
74
  explicitly for the target interface; it defaults to `landscape` for
75
- compatibility.
75
+ compatibility. Generated candidates are always PNG bytes, and `--out` must end
76
+ in `.png`.
76
77
 
77
78
  `export` downloads one successful base LayerDoc once and dispatches the chosen
78
79
  formats in parallel. Project exports require exact web/native profiles; image
79
- extraction is not repeated.
80
+ extraction is not repeated. The command creates parent directories as needed
81
+ and accepts an existing destination directory, but refuses before any API
82
+ request when a selected output, its asset directory, or
83
+ `export-manifest.json` already exists.
84
+
85
+ `capabilities --json` reports the exact `projectProfileSchema`, including the
86
+ required fields and `version: 1` constraint, beside the supported
87
+ `projectProfiles` combinations.
80
88
 
81
89
  ## Design Corpus retrieval
82
90
 
@@ -217,8 +225,26 @@ signed raster artifact beside the requested result. Set `TWELVE_UI_ORIGIN` to
217
225
  override `https://12ui.com`; waits default to the operation expiry and can be
218
226
  bounded explicitly with `--timeout-ms`.
219
227
 
220
- To retry an ambiguous create request safely, reuse the same explicit
221
- `--idempotency-key`. When it is omitted, the client generates a new UUID.
228
+ For a detached conversion, omit `--out` from `convert`, capture its JSON stdout,
229
+ and pass the returned ID plus both `--output` and `--out` to `resume`. The
230
+ detached create does not materialize the output file:
231
+
232
+ ```bash
233
+ set -o pipefail
234
+ 12ui convert ./screen.png \
235
+ --output layerdoc \
236
+ --model standard \
237
+ --idempotency-key screen-layerdoc-v1 \
238
+ --detach | tee ./screen.operation.json
239
+ 12ui resume conversion-id --output layerdoc --out ./screen.layerdoc.json
240
+ ```
241
+
242
+ If create fails before emitting an operation ID, `resume` is not possible.
243
+ Repeat the exact create request with the same explicit `--idempotency-key` so
244
+ the service can return the original operation without repeating completed paid
245
+ work. When the key is omitted, the client generates a new UUID. The CLI prints
246
+ operation/result metadata to stdout; persist it when durable local evidence is
247
+ required.
222
248
 
223
249
  Image conversions accept `--model fast|standard|pro`; omission selects
224
250
  `standard`. In `layerdoc-worker-v148`, Fast, Standard, and Pro all use
@@ -249,8 +275,9 @@ option is not accepted for LayerDoc input or `resume`.
249
275
  LayerDoc input accepts the public v2 JSON downloaded from the API. Its signed
250
276
  raster references must still be valid and must belong to the same authenticated
251
277
  account. The service resolves those owned artifacts directly; it does not fetch
252
- arbitrary remote URLs. LayerDoc input produces `layerdoc`, `html`, `svg`, `png`, `jpg`, `webp`, `pdf`, `psd`,
253
- `pptx`, `sketch`, `web_project`, or `app_project`. Project outputs require
278
+ arbitrary remote URLs. LayerDoc input produces `layerdoc`, `html`,
279
+ `html_fixed`, `svg`, `png`, `jpg` (JPEG), `webp`, `pdf`, `psd`, `pptx`,
280
+ `sketch`, `web_project`, or `app_project`. Project outputs require
254
281
  `--profile <json|file>`; the CLI also accepts `--profile @file.json`.
255
282
 
256
283
  ## LayerDoc to downstream formats
@@ -0,0 +1,47 @@
1
+ export declare const CLI_CAPABILITIES: {
2
+ readonly inputs: readonly ["image/png", "image/jpeg", "image/webp", "application/vnd.12ui.layerdoc+json;version=2"];
3
+ readonly outputs: readonly ["layerdoc", "html", "html_fixed", "svg", "png", "jpg", "webp", "pdf", "psd", "pptx", "sketch", "web_project", "app_project"];
4
+ readonly imageModels: readonly ["fast", "standard", "pro"];
5
+ readonly imageOutputWidth: {
6
+ readonly flag: "--width";
7
+ readonly minimum: 1;
8
+ readonly maximum: 8192;
9
+ readonly description: "Set the native output canvas width by proportionally resizing image input up or down.";
10
+ };
11
+ readonly responsiveQualities: readonly ["standard", "pro"];
12
+ readonly projectProfileSchema: {
13
+ readonly required: readonly ["version", "framework", "styling", "language", "packaging"];
14
+ readonly additionalProperties: false;
15
+ readonly properties: {
16
+ readonly version: {
17
+ readonly type: "integer";
18
+ readonly const: 1;
19
+ };
20
+ readonly framework: {
21
+ readonly type: "string";
22
+ };
23
+ readonly styling: {
24
+ readonly type: "string";
25
+ };
26
+ readonly language: {
27
+ readonly type: "string";
28
+ };
29
+ readonly packaging: {
30
+ readonly type: "string";
31
+ };
32
+ };
33
+ };
34
+ readonly projectProfiles: {
35
+ readonly web_project: Readonly<Record<"html" | "react" | "next" | "vue" | "nuxt" | "svelte" | "sveltekit" | "angular" | "astro" | "lit", {
36
+ styling: readonly ("css" | "scss" | "css_modules" | "tailwind" | "bootstrap" | "mui" | "chakra" | "antd" | "shadcn")[];
37
+ language: readonly ("html" | "javascript" | "typescript")[];
38
+ packaging: readonly ("component" | "page" | "project")[];
39
+ }>>;
40
+ readonly app_project: Readonly<Record<"expo" | "react_native" | "flutter" | "ionic_capacitor" | "swiftui" | "uikit" | "jetpack_compose" | "android_views" | "compose_multiplatform", {
41
+ styling: readonly ("css" | "native")[];
42
+ language: readonly ("typescript" | "dart" | "swift" | "kotlin")[];
43
+ packaging: readonly ("project" | "screen")[];
44
+ }>>;
45
+ };
46
+ };
47
+ //# sourceMappingURL=cli-capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-capabilities.d.ts","sourceRoot":"","sources":["../src/cli-capabilities.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqBnB,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { CONVERSION_MODELS } from './conversion-models.js';
2
+ import { CONVERSION_OUTPUT_MEDIA_TYPES, CONVERSION_OUTPUTS, } from './conversion-outputs.js';
3
+ import { MAX_IMAGE_OUTPUT_WIDTH } from './image-output-width.js';
4
+ import { APP_PROJECT_CAPABILITIES, PROJECT_PROFILE_SCHEMA, WEB_PROJECT_CAPABILITIES, } from './project-profiles.js';
5
+ import { RESPONSIVE_CONVERSION_QUALITIES } from './responsive-quality.js';
6
+ export const CLI_CAPABILITIES = {
7
+ inputs: [
8
+ 'image/png',
9
+ 'image/jpeg',
10
+ 'image/webp',
11
+ CONVERSION_OUTPUT_MEDIA_TYPES.layerdoc,
12
+ ],
13
+ outputs: CONVERSION_OUTPUTS,
14
+ imageModels: CONVERSION_MODELS,
15
+ imageOutputWidth: {
16
+ flag: '--width',
17
+ minimum: 1,
18
+ maximum: MAX_IMAGE_OUTPUT_WIDTH,
19
+ description: 'Set the native output canvas width by proportionally resizing image input up or down.',
20
+ },
21
+ responsiveQualities: RESPONSIVE_CONVERSION_QUALITIES,
22
+ projectProfileSchema: PROJECT_PROFILE_SCHEMA,
23
+ projectProfiles: {
24
+ web_project: WEB_PROJECT_CAPABILITIES,
25
+ app_project: APP_PROJECT_CAPABILITIES,
26
+ },
27
+ };
28
+ //# sourceMappingURL=cli-capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-capabilities.js","sourceRoot":"","sources":["../src/cli-capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EACL,6BAA6B,EAC7B,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAE1E,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,MAAM,EAAE;QACN,WAAW;QACX,YAAY;QACZ,YAAY;QACZ,6BAA6B,CAAC,QAAQ;KACvC;IACD,OAAO,EAAE,kBAAkB;IAC3B,WAAW,EAAE,iBAAiB;IAC9B,gBAAgB,EAAE;QAChB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,sBAAsB;QAC/B,WAAW,EAAE,uFAAuF;KACrG;IACD,mBAAmB,EAAE,+BAA+B;IACpD,oBAAoB,EAAE,sBAAsB;IAC5C,eAAe,EAAE;QACf,WAAW,EAAE,wBAAwB;QACrC,WAAW,EAAE,wBAAwB;KACtC;CACO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"cli-export-command.d.ts","sourceRoot":"","sources":["../src/cli-export-command.ts"],"names":[],"mappings":"AAQA,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AA4N/D,eAAO,MAAM,gBAAgB,GAC3B,oBAAoB,MAAM,GAAG,SAAS,EACtC,OAAO,QAAQ,KACd,OAAO,CAAC,IAAI,CAyFd,CAAC"}
1
+ {"version":3,"file":"cli-export-command.d.ts","sourceRoot":"","sources":["../src/cli-export-command.ts"],"names":[],"mappings":"AAQA,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AA8N/D,eAAO,MAAM,gBAAgB,GAC3B,oBAAoB,MAAM,GAAG,SAAS,EACtC,OAAO,QAAQ,KACd,OAAO,CAAC,IAAI,CAyFd,CAAC"}
@@ -1,10 +1,11 @@
1
1
  import { createHash } from 'node:crypto';
2
- import { mkdir, readFile, writeFile } from 'node:fs/promises';
2
+ import { readFile, writeFile } from 'node:fs/promises';
3
3
  import path from 'node:path';
4
4
  import { materializeConversionArtifacts, } from './artifact-materializer.js';
5
5
  import { stringFlag } from './cli-arguments.js';
6
+ import { exportManifestPath, exportOutputFilePath, prepareExportOutputDirectory, } from './cli-export-output-directory.js';
6
7
  import { TwelveUiConversionClient, } from './conversion-client.js';
7
- import { CONVERSION_OUTPUT_FILENAME_SUFFIXES, isConversionOutput, } from './conversion-outputs.js';
8
+ import { isConversionOutput, } from './conversion-outputs.js';
8
9
  import { readConversionConfig } from './config.js';
9
10
  import { normalizeOptionalIdempotencyKey } from './idempotency-key.js';
10
11
  import { parseConversionOutputProfile, } from './project-profiles.js';
@@ -83,11 +84,7 @@ const waitForSuccess = async (client, operation, timeoutMs) => {
83
84
  });
84
85
  };
85
86
  const exportOne = async (args) => {
86
- const outFile = path.join(args.outDir, args.plan.output === 'html'
87
- ? 'export.responsive.html'
88
- : args.plan.output === 'html_fixed'
89
- ? 'export.fixed.html'
90
- : `export.${CONVERSION_OUTPUT_FILENAME_SUFFIXES[args.plan.output]}`);
87
+ const outFile = exportOutputFilePath(args.outDir, args.plan.output);
91
88
  if (args.plan.output === 'layerdoc') {
92
89
  await writeFile(outFile, args.baseLayerDoc, { flag: 'wx' });
93
90
  return {
@@ -105,6 +102,8 @@ const exportOne = async (args) => {
105
102
  };
106
103
  const input = args.plan.output === 'html'
107
104
  ? {
105
+ layerdoc: args.baseLayerDoc,
106
+ filename: `${args.source.id}.layerdoc.json`,
108
107
  sourceConversionId: args.source.id,
109
108
  output: 'html',
110
109
  responsiveQuality: args.plan.request.responsiveQuality,
@@ -115,6 +114,7 @@ const exportOne = async (args) => {
115
114
  ? {
116
115
  layerdoc: args.baseLayerDoc,
117
116
  filename: `${args.source.id}.layerdoc.json`,
117
+ sourceConversionId: args.source.id,
118
118
  output: 'web_project',
119
119
  profile: args.plan.request.profile,
120
120
  idempotencyKey: shared.idempotencyKey,
@@ -124,6 +124,7 @@ const exportOne = async (args) => {
124
124
  ? {
125
125
  layerdoc: args.baseLayerDoc,
126
126
  filename: `${args.source.id}.layerdoc.json`,
127
+ sourceConversionId: args.source.id,
127
128
  output: 'app_project',
128
129
  profile: args.plan.request.profile,
129
130
  idempotencyKey: shared.idempotencyKey,
@@ -132,6 +133,7 @@ const exportOne = async (args) => {
132
133
  : {
133
134
  layerdoc: args.baseLayerDoc,
134
135
  filename: `${args.source.id}.layerdoc.json`,
136
+ sourceConversionId: args.source.id,
135
137
  output: args.plan.output,
136
138
  idempotencyKey: shared.idempotencyKey,
137
139
  waitSeconds: shared.waitSeconds,
@@ -171,6 +173,7 @@ export const runExportCommand = async (sourceConversionId, flags) => {
171
173
  ? readProfile('app_project', stringFlag(flags, 'app-profile'))
172
174
  : undefined,
173
175
  ]);
176
+ await prepareExportOutputDirectory(outDir, outputs);
174
177
  const client = new TwelveUiConversionClient(readConversionConfig({
175
178
  origin: stringFlag(flags, 'origin'),
176
179
  apiKey: stringFlag(flags, 'api-key'),
@@ -181,7 +184,6 @@ export const runExportCommand = async (sourceConversionId, flags) => {
181
184
  + ` found ${source.status} ${source.output}`);
182
185
  }
183
186
  const baseLayerDoc = (await client.downloadResult(source.id, 'layerdoc')).bytes;
184
- await mkdir(outDir, { recursive: false });
185
187
  const timeoutValue = stringFlag(flags, 'timeout-ms');
186
188
  const timeoutMs = timeoutValue === undefined ? undefined : Number(timeoutValue);
187
189
  if (timeoutMs !== undefined && (!Number.isFinite(timeoutMs) || timeoutMs < 1_000)) {
@@ -210,7 +212,7 @@ export const runExportCommand = async (sourceConversionId, flags) => {
210
212
  error: result.reason instanceof Error ? result.reason.message : String(result.reason),
211
213
  }]
212
214
  : []);
213
- const manifestPath = path.join(outDir, 'export-manifest.json');
215
+ const manifestPath = exportManifestPath(outDir);
214
216
  await writeFile(manifestPath, `${JSON.stringify({
215
217
  schemaVersion: 2,
216
218
  sourceConversionId: source.id,
@@ -1 +1 @@
1
- {"version":3,"file":"cli-export-command.js","sourceRoot":"","sources":["../src/cli-export-command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-export-command.js","sourceRoot":"","sources":["../src/cli-export-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,8BAA8B,GAE/B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,UAAU,EAAiB,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,4BAA4B,GAC7B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,wBAAwB,GAGzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,kBAAkB,GAEnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EACL,4BAA4B,GAI7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,6BAA6B,GAE9B,MAAM,yBAAyB,CAAC;AAsBjC,MAAM,MAAM,GAAG,CAAC,KAAiB,EAAU,EAAE,CAAC,CAC5C,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACjD,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,KAAc,EAAsB,EAAE;IAC1D,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAClE,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;IACxE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5F,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAuB,CAAC;AACrD,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,KAAK,EACvB,MAAqC,EACrC,KAAyB,EACS,EAAE;IACpC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,GAAG,MAAM,KAAK,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,cAAc;cAC3E,mBAAmB,MAAM,EAAE,CAC9B,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;QACpC,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/F,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,WAAW,MAAM,kBAAkB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC5F,CAAC;IACJ,CAAC;IACD,OAAO,4BAA4B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAC3B,IAAY,EACZ,MAAwB,EACxB,kBAA0B,EAClB,EAAE;IACV,MAAM,MAAM,GAAG,GAAG,MAAM,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;IAC9D,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC;AAC/D,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,IAK1B,EAAc,EAAE;IACf,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,KAAK,MAAM;QACzC,CAAC,CAAC;YACA,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;SAC1C;QACD,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,aAAa,IAAI,IAAI,CAAC,MAAM,KAAK,aAAa;YAC9D,CAAC,CAAC;gBACA,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB;YACD,CAAC,CAAC;gBACA,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC;IACN,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC7E,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE;YACP,cAAc,EAAE,IAAI,CAAC,MAAM,KAAK,UAAU;gBACxC,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC;YAC9E,kBAAkB;YAClB,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM;gBACxB,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE;gBAC/C,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,aAAa,IAAI,IAAI,CAAC,MAAM,KAAK,aAAa;gBAChE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;gBAC3B,CAAC,CAAC,EAAE,CAAC;SACR;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,KAAK,EAC1B,MAAgC,EAChC,SAA8B,EAC9B,SAA6B,EACC,EAAE;IAChC,IAAI,SAAS,CAAC,MAAM,KAAK,WAAW;QAAE,OAAO,SAAS,CAAC;IACvD,OAAO,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,EAAE;QAC5C,SAAS,EAAE,SAAS,CAAC,UAAU;QAC/B,SAAS;KACV,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,KAAK,EAAE,IAOxB,EAAyB,EAAE;IAC1B,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpE,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QACpC,MAAM,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;YACxB,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;YAC5B,OAAO;YACP,gBAAgB,EAAE,IAAI;YACtB,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;SAC3B,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG;QACb,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;QACxB,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAe;QACjD,WAAW,EAAE,EAAE;KAChB,CAAC;IACF,MAAM,KAAK,GAA0B,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM;QAC9D,CAAC,CAAC;YACA,QAAQ,EAAE,IAAI,CAAC,YAAY;YAC3B,QAAQ,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,gBAAgB;YAC3C,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;YAClC,MAAM,EAAE,MAAM;YACd,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAkB;YACvD,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC;QACD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,aAAa;YAClC,CAAC,CAAC;gBACA,QAAQ,EAAE,IAAI,CAAC,YAAY;gBAC3B,QAAQ,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,gBAAgB;gBAC3C,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;gBAClC,MAAM,EAAE,aAAa;gBACrB,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAA8B;gBACzD,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,WAAW,EAAE,MAAM,CAAC,WAAW;aAChC;YACD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,aAAa;gBAClC,CAAC,CAAC;oBACA,QAAQ,EAAE,IAAI,CAAC,YAAY;oBAC3B,QAAQ,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,gBAAgB;oBAC3C,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;oBAClC,MAAM,EAAE,aAAa;oBACrB,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAA8B;oBACzD,cAAc,EAAE,MAAM,CAAC,cAAc;oBACrC,WAAW,EAAE,MAAM,CAAC,WAAW;iBAChC;gBACD,CAAC,CAAC;oBACA,QAAQ,EAAE,IAAI,CAAC,YAAY;oBAC3B,QAAQ,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,gBAAgB;oBAC3C,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;oBAClC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;oBACxB,cAAc,EAAE,MAAM,CAAC,cAAc;oBACrC,WAAW,EAAE,MAAM,CAAC,WAAW;iBAChC,CAAC;IACR,MAAM,SAAS,GAAG,MAAM,cAAc,CACpC,IAAI,CAAC,MAAM,EACX,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,EACzC,IAAI,CAAC,SAAS,CACf,CAAC;IACF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpF,MAAM,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;QACxB,YAAY,EAAE,SAAS,CAAC,EAAE;QAC1B,OAAO;QACP,gBAAgB,EAAE,MAAM,8BAA8B,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC;QACvF,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;KAC3B,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACnC,kBAAsC,EACtC,KAAe,EACA,EAAE;IACjB,MAAM,QAAQ,GAAG,kBAAkB,EAAE,IAAI,EAAE,CAAC;IAC5C,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAC/F,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACjD,IAAI,CAAC,WAAW;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACzC,MAAM,cAAc,GAAG,+BAA+B,CACpD,UAAU,CAAC,KAAK,EAAE,iBAAiB,CAAC,EACpC,mBAAmB,CACpB,CAAC;IACF,IAAI,CAAC,cAAc;QAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACtE,MAAM,eAAe,GAAG,UAAU,CAAC,KAAK,EAAE,oBAAoB,CAAC,IAAI,UAAU,CAAC;IAC9E,IAAI,CAAC,6BAA6B,CAAC,eAAe,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACjD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;YAC7B,CAAC,CAAC,WAAW,CAAC,aAAa,EAAE,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;YAC9D,CAAC,CAAC,SAAS;QACb,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;YAC7B,CAAC,CAAC,WAAW,CAAC,aAAa,EAAE,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;YAC9D,CAAC,CAAC,SAAS;KACd,CAAC,CAAC;IACH,MAAM,4BAA4B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,IAAI,wBAAwB,CAAC,oBAAoB,CAAC;QAC/D,MAAM,EAAE,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC;QACnC,MAAM,EAAE,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC;KACrC,CAAC,CAAC,CAAC;IACJ,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACpD,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CACb,qBAAqB,QAAQ,4CAA4C;cACvE,UAAU,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAC7C,CAAC;IACJ,CAAC;IACD,MAAM,YAAY,GAAG,CAAC,MAAM,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;IAChF,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAChF,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,KAAK,CAAC,EAAE,CAAC;QAClF,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,iBAAiB,CAAC;QACtD,cAAc;QACd,MAAM;QACN,OAAO,EAAE,MAAM,KAAK,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;QAClG,iBAAiB,EAAE,eAAe;KACnC,CAAC,CAAC,CAAC;IACJ,MAAM,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC;QACrE,YAAY;QACZ,MAAM;QACN,MAAM;QACN,IAAI;QACJ,MAAM;QACN,SAAS;KACV,CAAC,CAAC,CAAC,CAAC;IACL,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACjG,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU;QAC9E,CAAC,CAAC,CAAC;gBACD,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM;gBAC3B,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO;gBAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;aACtF,CAAC;QACF,CAAC,CAAC,EAAE,CAAC,CAAC;IACR,MAAM,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,SAAS,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAC9C,aAAa,EAAE,CAAC;QAChB,kBAAkB,EAAE,MAAM,CAAC,EAAE;QAC7B,oBAAoB,EAAE,MAAM,CAAC,YAAY,CAAC;QAC1C,cAAc;QACd,UAAU;QACV,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,OAAO;QACP,QAAQ;KACT,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACjC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,kDAAkD,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAC1E,GAAG,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,KAAK,EAAE,CACtC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,YAAY,EAAE,CAC3C,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;QACzB,kBAAkB,EAAE,MAAM,CAAC,EAAE;QAC7B,oBAAoB,EAAE,MAAM,CAAC,YAAY,CAAC;QAC1C,YAAY;QACZ,OAAO;KACR,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACf,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { type ConversionOutput } from './conversion-outputs.js';
2
+ export declare const exportOutputFilePath: (outDir: string, output: ConversionOutput) => string;
3
+ export declare const exportManifestPath: (outDir: string) => string;
4
+ export declare const prepareExportOutputDirectory: (outDir: string, outputs: readonly ConversionOutput[]) => Promise<void>;
5
+ //# sourceMappingURL=cli-export-output-directory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-export-output-directory.d.ts","sourceRoot":"","sources":["../src/cli-export-output-directory.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,yBAAyB,CAAC;AAEjC,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,MAAM,EACd,QAAQ,gBAAgB,KACvB,MAOF,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,QAAQ,MAAM,KAAG,MAEnD,CAAC;AAYF,eAAO,MAAM,4BAA4B,GACvC,QAAQ,MAAM,EACd,SAAS,SAAS,gBAAgB,EAAE,KACnC,OAAO,CAAC,IAAI,CAkBd,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { lstat, mkdir } from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { CONVERSION_OUTPUT_FILENAME_SUFFIXES, } from './conversion-outputs.js';
4
+ export const exportOutputFilePath = (outDir, output) => path.join(outDir, output === 'html'
5
+ ? 'export.responsive.html'
6
+ : output === 'html_fixed'
7
+ ? 'export.fixed.html'
8
+ : `export.${CONVERSION_OUTPUT_FILENAME_SUFFIXES[output]}`);
9
+ export const exportManifestPath = (outDir) => (path.join(outDir, 'export-manifest.json'));
10
+ const pathExists = async (target) => {
11
+ try {
12
+ await lstat(target);
13
+ return true;
14
+ }
15
+ catch (error) {
16
+ if (error.code === 'ENOENT')
17
+ return false;
18
+ throw error;
19
+ }
20
+ };
21
+ export const prepareExportOutputDirectory = async (outDir, outputs) => {
22
+ await mkdir(outDir, { recursive: true });
23
+ const outputFiles = outputs.map((output) => exportOutputFilePath(outDir, output));
24
+ const reservedPaths = [
25
+ exportManifestPath(outDir),
26
+ ...outputFiles,
27
+ ...outputFiles.flatMap((outputFile, index) => (outputs[index] === 'layerdoc' ? [] : [`${outputFile}.assets`])),
28
+ ];
29
+ const conflicts = (await Promise.all(reservedPaths.map(async (target) => (await pathExists(target) ? target : null)))).filter((target) => target !== null);
30
+ if (conflicts.length > 0) {
31
+ throw new Error(`Refusing export because destination path already exists: ${conflicts.join(', ')}`);
32
+ }
33
+ };
34
+ //# sourceMappingURL=cli-export-output-directory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-export-output-directory.js","sourceRoot":"","sources":["../src/cli-export-output-directory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,mCAAmC,GAEpC,MAAM,yBAAyB,CAAC;AAEjC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,MAAc,EACd,MAAwB,EAChB,EAAE,CAAC,IAAI,CAAC,IAAI,CACpB,MAAM,EACN,MAAM,KAAK,MAAM;IACf,CAAC,CAAC,wBAAwB;IAC1B,CAAC,CAAC,MAAM,KAAK,YAAY;QACvB,CAAC,CAAC,mBAAmB;QACrB,CAAC,CAAC,UAAU,mCAAmC,CAAC,MAAM,CAAC,EAAE,CAC9D,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAc,EAAU,EAAE,CAAC,CAC5D,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAC1C,CAAC;AAEF,MAAM,UAAU,GAAG,KAAK,EAAE,MAAc,EAAoB,EAAE;IAC5D,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QACrE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,EAC/C,MAAc,EACd,OAAoC,EACrB,EAAE;IACjB,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAClF,MAAM,aAAa,GAAG;QACpB,kBAAkB,CAAC,MAAM,CAAC;QAC1B,GAAG,WAAW;QACd,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,CAAC,CAC5C,OAAO,CAAC,KAAK,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,SAAS,CAAC,CAC9D,CAAC;KACH,CAAC;IACF,MAAM,SAAS,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CACvE,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CACzC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAoB,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;IAC3D,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,4DAA4D,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACnF,CAAC;IACJ,CAAC;AACH,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"cli-image-command.d.ts","sourceRoot":"","sources":["../src/cli-image-command.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAM/D,OAAO,EAGL,sBAAsB,EACvB,MAAM,+BAA+B,CAAC;AAgEvC,eAAO,MAAM,eAAe,GAC1B,QAAQ,MAAM,GAAG,SAAS,EAC1B,OAAO,QAAQ,EACf,eAAc;IACZ,QAAQ,CAAC,EAAE,OAAO,aAAa,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,sBAAsB,CAAC;CACtC,KACL,OAAO,CAAC,IAAI,CA8Id,CAAC"}
1
+ {"version":3,"file":"cli-image-command.d.ts","sourceRoot":"","sources":["../src/cli-image-command.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAM/D,OAAO,EAGL,sBAAsB,EACvB,MAAM,+BAA+B,CAAC;AAgEvC,eAAO,MAAM,eAAe,GAC1B,QAAQ,MAAM,GAAG,SAAS,EAC1B,OAAO,QAAQ,EACf,eAAc;IACZ,QAAQ,CAAC,EAAE,OAAO,aAAa,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,sBAAsB,CAAC;CACtC,KACL,OAAO,CAAC,IAAI,CAiJd,CAAC"}
@@ -62,7 +62,7 @@ export const runImageCommand = async (action, flags, dependencies = {}) => {
62
62
  if (action !== 'generate') {
63
63
  throw new Error('Usage: 12ui image generate --prompt-file <file> --reference-1 <file>'
64
64
  + ' --reference-2 <file> --reference-3 <file> --reference-4 <file>'
65
- + ' --out <file> --aspect landscape|portrait|square'
65
+ + ' --out <file.png> --aspect landscape|portrait|square'
66
66
  + ' --provider auto|codex|openai --project-root <directory>'
67
67
  + ' --idempotency-key <key>');
68
68
  }
@@ -75,6 +75,9 @@ export const runImageCommand = async (action, flags, dependencies = {}) => {
75
75
  throw new Error('--out is required');
76
76
  if (!stringFlag(flags, 'project-root'))
77
77
  throw new Error('--project-root is required');
78
+ if (path.extname(outputPath).toLowerCase() !== '.png') {
79
+ throw new Error('--out must end in .png because image generate always writes PNG bytes');
80
+ }
78
81
  const attemptFile = imageAttemptPath(outputPath);
79
82
  if (await pathExists(outputPath)) {
80
83
  throw new Error(`Refusing to dispatch because output already exists at ${outputPath}`);
@@ -1 +1 @@
1
- {"version":3,"file":"cli-image-command.js","sourceRoot":"","sources":["../src/cli-image-command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-image-command.js","sourceRoot":"","sources":["../src/cli-image-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAE7E,OAAO,EAAE,UAAU,EAAiB,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EACL,gBAAgB,EAChB,2BAA2B,GAE5B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAC;AAEvE,MAAM,wBAAwB,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,QAAQ,CAAU,CAAC;AAG9E,MAAM,uBAAuB,GAAG,CAAC,KAAa,EAAkC,EAAE,CAAC,CACjF,wBAAwB,CAAC,QAAQ,CAAC,KAA8B,CAAC,CAClE,CAAC;AAEF,MAAM,MAAM,GAAG,CAAC,KAA0B,EAAU,EAAE,CAAC,CACrD,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACjD,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,KAAe,EAAY,EAAE;IACnD,MAAM,MAAM,GAAG,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,CAAC;SACxE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;SAC9C,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACtD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,gGAAgG,CACjG,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,KAAiB,EAAE,QAAgB,EAAU,EAAE;IACnE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACvD,MAAM,SAAS,GAAG,SAAS,KAAK,MAAM;QACpC,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,OAAO;YAC7C,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,SAAS,KAAK,OAAO;gBACrB,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,IAAI,CAAC;IACb,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,gDAAgD,QAAQ,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,QAAQ,SAAS,WAAW,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC7E,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,KAAK,EAAE,MAAc,EAAuB,EAAE;IACnE,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAClG,OAAO,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;IAC/E,MAAM,OAAO,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;IACvC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC7D,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IACtF,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,KAAK,EAAE,MAAc,EAAoB,EAAE;IAC5D,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QACrE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAClC,MAA0B,EAC1B,KAAe,EACf,eAGI,EAAE,EACS,EAAE;IACjB,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,sEAAsE;cACpE,iEAAiE;cACjE,sDAAsD;cACtD,0DAA0D;cAC1D,0BAA0B,CAC7B,CAAC;IACJ,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;IACxE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAChE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1E,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACpF,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACpE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,cAAc,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACtF,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;IAC3F,CAAC;IACD,MAAM,WAAW,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACjD,IAAI,MAAM,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,yDAAyD,UAAU,EAAE,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,MAAM,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CACb,4CAA4C,WAAW,6BAA6B;cAClF,mFAAmF,CACtF,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC;IAC9D,IAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,8BAA8B,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzF,CAAC;IACD,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,WAAW,CAAC;IAC/D,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,4BAA4B,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC;IACD,MAAM,cAAc,GAAG,+BAA+B,CACpD,UAAU,CAAC,KAAK,EAAE,iBAAiB,CAAC,EACpC,mBAAmB,CACpB,CAAC;IACF,IAAI,CAAC,cAAc;QAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3D,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC7E,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;QAC5D,OAAO;YACL,IAAI,EAAE,aAAa;YACnB,KAAK;YACL,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;YACrB,OAAO,EAAE,YAAY,CAAC,KAAK,EAAE,aAAa,CAAC;SAC5C,CAAC;IACJ,CAAC,CAAC,CAAC,CAAC;IACJ,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,IAAI,sBAAsB,CAAC,CAAC;QACzE,QAAQ,EAAE,aAAa;QACvB,WAAW;KACZ,CAAC,CAAC;IACH,MAAM,OAAO,GAA2B;QACtC,aAAa,EAAE,CAAC;QAChB,MAAM,EAAE,UAAU;QAClB,cAAc;QACd,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,gBAAgB,EAAE,SAAS,CAAC,QAAQ,KAAK,OAAO;YAC9C,CAAC,CAAC,EAAE,YAAY,EAAE,SAAS,CAAC,YAAY,EAAE;YAC1C,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE;QACtC,UAAU,EAAE,UAAU;QACtB,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC;QAC5B,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;YACvE,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;QACH,UAAU;QACV,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACrC,CAAC;IACF,MAAM,2BAA2B,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QAC5E,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CACb,4CAA4C,WAAW,6BAA6B;kBAClF,mFAAmF,CACtF,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,MAAM,GAAG,YAAY,CAAC;IAC9B,OAAO,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAChD,MAAM,2BAA2B,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACxD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG;YACZ,QAAQ,EAAE,cAAc,MAAM,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;YAC7D,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,GAAG,EAAE,WAAW;YAChB,YAAY,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE;SAChC,CAAC;QACF,MAAM,OAAO,GAAG;YACd,CAAC,EAAE,CAAC;YACJ,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,MAAe;YACxB,aAAa,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC;YACvD,GAAG,CAAC,SAAS,CAAC,QAAQ,KAAK,OAAO;gBAChC,CAAC,CAAC,EAAE,cAAc,EAAE,MAAe,EAAE;gBACrC,CAAC,CAAC,EAAE,CAAC;YACP,aAAa,EAAE,KAAc;YAC7B,eAAe,EAAE,cAAc;YAC/B,UAAU,EAAE,cAAc;SAC3B,CAAC;QACF,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ;YACrC,CAAC,CAAC,MAAM,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC;YACrD,CAAC,CAAC,SAAS,CAAC,QAAQ,KAAK,QAAQ;gBAC/B,CAAC,CAAC,MAAM,IAAI,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,WAAW,CACtD,MAAM,EACN,SAAS,CAAC,KAAK,EACf,KAAK,EACL,OAAO,CACR;gBACD,CAAC,CAAC,MAAM,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC5F,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,SAAS,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC;QAC7B,OAAO,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC/C,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,2BAA2B,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;YACzB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,UAAU;YACV,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,WAAW;SACZ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC;QAC1B,OAAO,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC/C,OAAO,CAAC,KAAK,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,2BAA2B,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACxD,MAAM,IAAI,KAAK,CACb,+CAA+C,OAAO,CAAC,QAAQ,wBAAwB;cACrF,6BAA6B,WAAW,KAAK,OAAO,CAAC,KAAK,EAAE,EAC9D,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;IACJ,CAAC;AACH,CAAC,CAAC"}
@@ -1,14 +1,21 @@
1
+ import { retireRecognizedLegacyCli, type RetiredLegacyCli } from './legacy-cli-cleanup.js';
1
2
  type NpmInstallInvocation = {
2
3
  executable: 'npm' | 'npm.cmd';
3
4
  arguments: string[];
4
5
  environment: NodeJS.ProcessEnv;
5
6
  };
6
7
  type NpmInstallRunner = (invocation: NpmInstallInvocation) => Promise<void>;
8
+ type LauncherCheckRunner = (args: {
9
+ environment: NodeJS.ProcessEnv;
10
+ launcher: string;
11
+ version: string;
12
+ }) => Promise<void>;
7
13
  export type CliPersistenceResult = {
8
14
  source: 'bundle' | 'npm';
9
15
  version: string;
10
16
  dataRoot: string;
11
17
  launcher: string;
18
+ retiredLegacyCli?: RetiredLegacyCli;
12
19
  };
13
20
  export declare const resolveCliInstallLayout: (environment?: NodeJS.ProcessEnv, homeDirectory?: string, platform?: NodeJS.Platform) => {
14
21
  dataRoot: string;
@@ -19,6 +26,8 @@ export declare const persistCurrentCli: (args?: {
19
26
  homeDirectory?: string;
20
27
  platform?: NodeJS.Platform;
21
28
  runNpmInstall?: NpmInstallRunner;
29
+ runLauncherCheck?: LauncherCheckRunner;
30
+ retireLegacyCli?: typeof retireRecognizedLegacyCli;
22
31
  }) => Promise<CliPersistenceResult>;
23
32
  export declare const runningPackageRoot: () => string;
24
33
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"cli-persistence.d.ts","sourceRoot":"","sources":["../src/cli-persistence.ts"],"names":[],"mappings":"AAoBA,KAAK,oBAAoB,GAAG;IAC1B,UAAU,EAAE,KAAK,GAAG,SAAS,CAAC;IAC9B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC;CAChC,CAAC;AAEF,KAAK,gBAAgB,GAAG,CAAC,UAAU,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAe5E,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,QAAQ,GAAG,KAAK,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AA4JF,eAAO,MAAM,uBAAuB,GAClC,cAAa,MAAM,CAAC,UAAwB,EAC5C,sBAA4B,EAC5B,WAAU,MAAM,CAAC,QAA2B,KAC3C;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAuBlB,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAU,OAAM;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,aAAa,CAAC,EAAE,gBAAgB,CAAC;CAC7B,KAAG,OAAO,CAAC,oBAAoB,CAoIpC,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAO,MAErC,CAAC"}
1
+ {"version":3,"file":"cli-persistence.d.ts","sourceRoot":"","sources":["../src/cli-persistence.ts"],"names":[],"mappings":"AAkBA,OAAO,EACL,yBAAyB,EACzB,KAAK,gBAAgB,EACtB,MAAM,yBAAyB,CAAC;AAIjC,KAAK,oBAAoB,GAAG;IAC1B,UAAU,EAAE,KAAK,GAAG,SAAS,CAAC;IAC9B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC;CAChC,CAAC;AAEF,KAAK,gBAAgB,GAAG,CAAC,UAAU,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAC5E,KAAK,mBAAmB,GAAG,CAAC,IAAI,EAAE;IAChC,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAmCpB,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,QAAQ,GAAG,KAAK,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC,CAAC;AAsLF,eAAO,MAAM,uBAAuB,GAClC,cAAa,MAAM,CAAC,UAAwB,EAC5C,sBAA4B,EAC5B,WAAU,MAAM,CAAC,QAA2B,KAC3C;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAuBlB,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAU,OAAM;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,aAAa,CAAC,EAAE,gBAAgB,CAAC;IACjC,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;IACvC,eAAe,CAAC,EAAE,OAAO,yBAAyB,CAAC;CAC/C,KAAG,OAAO,CAAC,oBAAoB,CAiLpC,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAO,MAErC,CAAC"}
@@ -5,6 +5,7 @@ import os from 'node:os';
5
5
  import path from 'node:path';
6
6
  import { fileURLToPath } from 'node:url';
7
7
  import { promisify } from 'node:util';
8
+ import { retireRecognizedLegacyCli, } from './legacy-cli-cleanup.js';
8
9
  const execFileAsync = promisify(execFile);
9
10
  const runNpmInstall = async (invocation) => {
10
11
  await execFileAsync(invocation.executable, invocation.arguments, {
@@ -14,6 +15,19 @@ const runNpmInstall = async (invocation) => {
14
15
  env: invocation.environment,
15
16
  });
16
17
  };
18
+ const runLauncherCheck = async (args) => {
19
+ const result = await execFileAsync(args.launcher, ['--version'], {
20
+ encoding: 'utf8',
21
+ timeout: 30_000,
22
+ windowsHide: true,
23
+ env: args.environment,
24
+ shell: process.platform === 'win32',
25
+ });
26
+ if (result.stdout.trim() !== args.version) {
27
+ throw new Error(`Managed 12ui launcher reported ${result.stdout.trim() || 'no version'},`
28
+ + ` expected ${args.version}`);
29
+ }
30
+ };
17
31
  const packageIdentity = async () => {
18
32
  const parsed = JSON.parse(await readFile(new URL('../package.json', import.meta.url), 'utf8'));
19
33
  if (parsed.name !== '@12ui/design' || typeof parsed.version !== 'string') {
@@ -42,6 +56,14 @@ const readLinkOrNull = async (target) => {
42
56
  throw error;
43
57
  }
44
58
  };
59
+ const snapshotPath = async (target) => {
60
+ if (!(await exists(target)))
61
+ return { kind: 'missing' };
62
+ const link = await readLinkOrNull(target);
63
+ if (link !== null)
64
+ return { kind: 'symlink', target: link };
65
+ return { kind: 'file', source: await readFile(target, 'utf8') };
66
+ };
45
67
  const assertManagedLauncherCollision = async (launcher, dataRoot, homeDirectory, platform) => {
46
68
  if (!(await exists(launcher)))
47
69
  return;
@@ -122,6 +144,16 @@ const writeExecutableAtomic = async (target, source, platform) => {
122
144
  await rm(temporary, { force: true });
123
145
  }
124
146
  };
147
+ const restoreSnapshot = async (target, snapshot, platform) => {
148
+ await rm(target, { recursive: true, force: true });
149
+ if (snapshot.kind === 'missing')
150
+ return;
151
+ if (snapshot.kind === 'symlink') {
152
+ await symlink(snapshot.target, target, target.endsWith('.cmd') ? 'file' : 'dir');
153
+ return;
154
+ }
155
+ await writeExecutableAtomic(target, snapshot.source, platform);
156
+ };
125
157
  export const resolveCliInstallLayout = (environment = process.env, homeDirectory = os.homedir(), platform = process.platform) => {
126
158
  if (platform === 'win32') {
127
159
  const configuredLocalAppData = environment.LOCALAPPDATA?.trim();
@@ -201,12 +233,16 @@ export const persistCurrentCli = async (args = {}) => {
201
233
  }
202
234
  }
203
235
  await verifyInstalledVersion(versionRoot, identity);
236
+ const current = path.join(layout.dataRoot, 'current');
237
+ const [launcherSnapshot, currentSnapshot] = await Promise.all([
238
+ snapshotPath(layout.launcher),
239
+ platform === 'win32' ? Promise.resolve({ kind: 'missing' }) : snapshotPath(current),
240
+ ]);
204
241
  let cliPath;
205
242
  if (platform === 'win32') {
206
243
  cliPath = path.join(versionRoot, 'node_modules', '@12ui', 'design', 'dist', 'cli.js');
207
244
  }
208
245
  else {
209
- const current = path.join(layout.dataRoot, 'current');
210
246
  const currentTemporary = path.join(layout.dataRoot, `.current-${randomUUID()}.tmp`);
211
247
  await symlink(path.relative(layout.dataRoot, versionRoot), currentTemporary, 'dir');
212
248
  try {
@@ -241,12 +277,49 @@ export const persistCurrentCli = async (args = {}) => {
241
277
  const launcher = platform === 'win32'
242
278
  ? `@echo off\r\n"${process.execPath.replaceAll('%', '%%')}" "${cliPath.replaceAll('%', '%%')}" %*\r\n`
243
279
  : `#!/bin/sh\nexec "${process.execPath}" "${cliPath}" "$@"\n`;
244
- await writeExecutableAtomic(layout.launcher, launcher, platform);
280
+ let retiredLegacyCli = null;
281
+ try {
282
+ await writeExecutableAtomic(layout.launcher, launcher, platform);
283
+ await (args.runLauncherCheck ?? runLauncherCheck)({
284
+ environment,
285
+ launcher: layout.launcher,
286
+ version: identity.version,
287
+ });
288
+ retiredLegacyCli = await (args.retireLegacyCli ?? retireRecognizedLegacyCli)({
289
+ dataRoot: layout.dataRoot,
290
+ homeDirectory,
291
+ });
292
+ }
293
+ catch (error) {
294
+ const rollbackErrors = [];
295
+ try {
296
+ await restoreSnapshot(layout.launcher, launcherSnapshot, platform);
297
+ }
298
+ catch (rollbackError) {
299
+ rollbackErrors.push(rollbackError instanceof Error ? rollbackError : new Error(String(rollbackError)));
300
+ }
301
+ if (platform !== 'win32') {
302
+ try {
303
+ await restoreSnapshot(current, currentSnapshot, platform);
304
+ }
305
+ catch (rollbackError) {
306
+ rollbackErrors.push(rollbackError instanceof Error ? rollbackError : new Error(String(rollbackError)));
307
+ }
308
+ }
309
+ if (rollbackErrors.length > 0) {
310
+ throw new AggregateError([
311
+ error instanceof Error ? error : new Error(String(error)),
312
+ ...rollbackErrors,
313
+ ], '12UI launcher migration failed and the prior installation could not be restored');
314
+ }
315
+ throw error;
316
+ }
245
317
  return {
246
318
  source: 'npm',
247
319
  version: identity.version,
248
320
  dataRoot: layout.dataRoot,
249
321
  launcher: layout.launcher,
322
+ ...(retiredLegacyCli ? { retiredLegacyCli } : {}),
250
323
  };
251
324
  };
252
325
  export const runningPackageRoot = () => (path.dirname(path.dirname(fileURLToPath(import.meta.url))));