@contentful/experience-design-system-cli 2.35.1-dev-build-e76d41c1.0 → 2.35.1-dev-build-9e5b25da.0

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 (51) hide show
  1. package/bin/cli.js +1 -1
  2. package/dist/package.json +1 -1
  3. package/legacy/bin/cli.js +19 -23
  4. package/legacy/dist/src/analyze/extract-command.d.ts +5 -2
  5. package/legacy/dist/src/apply/command.d.ts +41 -3
  6. package/legacy/dist/src/generate/command.d.ts +0 -18
  7. package/legacy/dist/src/import/tui/ai-flag.d.ts +0 -1
  8. package/legacy/dist/src/import/tui/steps/ScopeGateStep.d.ts +0 -1
  9. package/legacy/dist/src/index.js +17346 -17712
  10. package/legacy/dist/src/session/db.d.ts +2 -1
  11. package/legacy/package.json +1 -1
  12. package/legacy/skills/select-components.md +43 -8
  13. package/package.json +2 -2
  14. package/legacy/dist/src/analyze/controller/run-analyze-extract.d.ts +0 -12
  15. package/legacy/dist/src/analyze/helpers/resolve-composition-agent.d.ts +0 -9
  16. package/legacy/dist/src/analyze/helpers/resolve-no-cache.d.ts +0 -4
  17. package/legacy/dist/src/analyze/helpers/resolve-unreachable-mode.d.ts +0 -1
  18. package/legacy/dist/src/analyze/helpers/retry-db-write.d.ts +0 -1
  19. package/legacy/dist/src/analyze/orchestrator/execute-analyze-extract.d.ts +0 -21
  20. package/legacy/dist/src/analyze/services/collect-source-files.d.ts +0 -1
  21. package/legacy/dist/src/analyze/services/extract-with-cache.d.ts +0 -17
  22. package/legacy/dist/src/analyze/services/persist-extract-results.d.ts +0 -11
  23. package/legacy/dist/src/analyze/services/resolve-composition-mapping.d.ts +0 -22
  24. package/legacy/dist/src/analyze/services/resolve-source-directory.d.ts +0 -1
  25. package/legacy/dist/src/apply/controller/run-apply.d.ts +0 -1
  26. package/legacy/dist/src/apply/helpers/build-apply-output.d.ts +0 -55
  27. package/legacy/dist/src/apply/helpers/has-breaking-changes.d.ts +0 -2
  28. package/legacy/dist/src/apply/helpers/poll-apply-operation.d.ts +0 -9
  29. package/legacy/dist/src/apply/helpers/read-token-files.d.ts +0 -7
  30. package/legacy/dist/src/apply/helpers/slot-validation.d.ts +0 -20
  31. package/legacy/dist/src/apply/services/apply-interactive.d.ts +0 -13
  32. package/legacy/dist/src/apply/services/apply-non-interactive.d.ts +0 -10
  33. package/legacy/dist/src/apply/services/resolve-apply-inputs.d.ts +0 -14
  34. package/legacy/dist/src/generate/controller/run-generate-components.d.ts +0 -2
  35. package/legacy/dist/src/generate/controller/run-generate-tokens.d.ts +0 -2
  36. package/legacy/dist/src/generate/helpers/assert-file-exists.d.ts +0 -1
  37. package/legacy/dist/src/generate/helpers/normalize-component-for-cache.d.ts +0 -6
  38. package/legacy/dist/src/generate/helpers/parse-precomputed-cached-names.d.ts +0 -1
  39. package/legacy/dist/src/generate/helpers/print-fallback-instructions.d.ts +0 -6
  40. package/legacy/dist/src/generate/helpers/read-file-inline.d.ts +0 -1
  41. package/legacy/dist/src/generate/services/invoke-all-component-agents.d.ts +0 -6
  42. package/legacy/dist/src/generate/services/invoke-component-agent.d.ts +0 -36
  43. package/legacy/dist/src/generate/services/load-accepted-names.d.ts +0 -1
  44. package/legacy/dist/src/generate/services/resolve-component-cache.d.ts +0 -13
  45. package/legacy/dist/src/generate/services/resolve-generate-agent.d.ts +0 -9
  46. package/legacy/dist/src/generate/services/show-generate-view.d.ts +0 -2
  47. package/legacy/dist/src/generate/services/verify-agent-binary.d.ts +0 -2
  48. package/legacy/dist/src/lib/pluralize.d.ts +0 -1
  49. package/legacy/dist/src/map-tokens/controller/run-map-tokens.d.ts +0 -12
  50. package/legacy/dist/src/map-tokens/services/render-map-tokens-result.d.ts +0 -2
  51. package/legacy/dist/src/map-tokens/services/resolve-token-name-paths.d.ts +0 -8
package/bin/cli.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- await import("../dist/index.js");
2
+ await import('../dist/index.js');
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contentful/experience-design-system-cli",
3
- "version": "2.35.1-dev-build-e76d41c1.0",
3
+ "version": "2.35.1-dev-build-9e5b25da.0",
4
4
  "description": "Contentful Experiences design system import CLI",
5
5
  "license": "MIT",
6
6
  "type": "module",
package/legacy/bin/cli.js CHANGED
@@ -1,18 +1,18 @@
1
1
  #!/usr/bin/env node
2
2
  // Suppress the SQLite ExperimentalWarning before any modules load.
3
3
  // Must use dynamic import so this handler registers before sqlite is imported.
4
- process.removeAllListeners("warning");
5
- process.on("warning", (w) => {
6
- if (w.name === "ExperimentalWarning" && w.message.includes("SQLite")) return;
4
+ process.removeAllListeners('warning');
5
+ process.on('warning', (w) => {
6
+ if (w.name === 'ExperimentalWarning' && w.message.includes('SQLite')) return;
7
7
  process.stderr.write(`${w.name}: ${w.message}\n`);
8
8
  });
9
9
 
10
10
  // Auto-rebuild when running from source (dev mode only).
11
11
  // Skipped when src/ doesn't exist (e.g. npm-installed users).
12
- import { existsSync, statSync, readdirSync } from "node:fs";
13
- import { execFileSync } from "node:child_process";
14
- import { fileURLToPath } from "node:url";
15
- import { dirname, resolve, join } from "node:path";
12
+ import { existsSync, statSync, readdirSync } from 'node:fs';
13
+ import { execFileSync } from 'node:child_process';
14
+ import { fileURLToPath } from 'node:url';
15
+ import { dirname, resolve, join } from 'node:path';
16
16
 
17
17
  function newestMtime(dir, depth = 0) {
18
18
  if (depth > 10) return 0;
@@ -22,7 +22,7 @@ function newestMtime(dir, depth = 0) {
22
22
  const full = join(dir, entry.name);
23
23
  if (entry.isDirectory()) {
24
24
  max = Math.max(max, newestMtime(full, depth + 1));
25
- } else if (entry.name.endsWith(".ts") || entry.name.endsWith(".tsx")) {
25
+ } else if (entry.name.endsWith('.ts') || entry.name.endsWith('.tsx')) {
26
26
  max = Math.max(max, statSync(full).mtimeMs);
27
27
  }
28
28
  }
@@ -30,29 +30,25 @@ function newestMtime(dir, depth = 0) {
30
30
  }
31
31
 
32
32
  const __dirname = dirname(fileURLToPath(import.meta.url));
33
- const pkgRoot = resolve(__dirname, "..");
34
- const srcDir = join(pkgRoot, "src");
35
- const distEntry = join(pkgRoot, "dist", "src", "index.js");
33
+ const pkgRoot = resolve(__dirname, '..');
34
+ const srcDir = join(pkgRoot, 'src');
35
+ const distEntry = join(pkgRoot, 'dist', 'src', 'index.js');
36
36
 
37
- if (
38
- existsSync(srcDir) &&
39
- existsSync(distEntry) &&
40
- process.env.NODE_ENV !== "test"
41
- ) {
37
+ if (existsSync(srcDir) && existsSync(distEntry) && process.env.NODE_ENV !== 'test') {
42
38
  const distMtime = statSync(distEntry).mtimeMs;
43
39
  if (newestMtime(srcDir) > distMtime) {
44
- process.stderr.write("⚙ Source changed — rebuilding...\n");
45
- const tsc = join(pkgRoot, "node_modules", ".bin", "tsc");
40
+ process.stderr.write('⚙ Source changed — rebuilding...\n');
41
+ const tsc = join(pkgRoot, 'node_modules', '.bin', 'tsc');
46
42
  try {
47
- execFileSync(tsc, ["-p", join(pkgRoot, "tsconfig.build.json")], {
48
- stdio: ["ignore", "ignore", "inherit"],
43
+ execFileSync(tsc, ['-p', join(pkgRoot, 'tsconfig.build.json')], {
44
+ stdio: ['ignore', 'ignore', 'inherit'],
49
45
  cwd: pkgRoot,
50
46
  });
51
- process.stderr.write("✓ Build complete\n");
47
+ process.stderr.write('✓ Build complete\n');
52
48
  } catch {
53
- process.stderr.write("✗ Build failed — running with existing dist\n");
49
+ process.stderr.write('✗ Build failed — running with existing dist\n');
54
50
  }
55
51
  }
56
52
  }
57
53
 
58
- await import("../dist/src/index.js");
54
+ await import('../dist/src/index.js');
@@ -1,4 +1,7 @@
1
1
  import type { Command } from 'commander';
2
- export { resolveExtractNoCache } from './helpers/resolve-no-cache.js';
3
- export { collectSourceFiles } from './services/collect-source-files.js';
2
+ export declare function resolveExtractNoCache(opts: {
3
+ cache?: boolean;
4
+ noCache?: boolean;
5
+ }): boolean;
6
+ export declare function collectSourceFiles(directory: string, onProgress?: (scannedCount: number) => void): Promise<string[]>;
4
7
  export declare function registerInternalExtractCommand(program: Command): void;
@@ -1,5 +1,43 @@
1
1
  import type { Command } from 'commander';
2
- export { readTokensFromPath, toCDFTokens } from './helpers/read-token-files.js';
3
- export { detectSlotCycles, formatSlotCycleReport, assertNoSlotCycles, formatUnresolvedSlotReferences, assertNoUnresolvedSlotReferences, extractComponents, } from './helpers/slot-validation.js';
4
- export { hasBreakingChangesWithImpact } from './helpers/has-breaking-changes.js';
2
+ import type { CDFComponentEntry, CDFTokenEntry, CDFValidationError, DTCGTokenEntry } from '@contentful/experience-design-system-types';
3
+ import { findSlotCycles } from '../analyze/cycle-detection.js';
4
+ import type { ServerPreviewResponse } from '@contentful/experience-design-system-types';
5
+ export declare function readTokensFromPath(flag: string, p: string): Promise<DTCGTokenEntry[]>;
6
+ /** Adapts flat DTCGTokenEntry[] (path alongside the leaf) into the
7
+ * {path, entry} pairs buildCDF/buildFilteredCDF expect. */
8
+ export declare function toCDFTokens(tokens: DTCGTokenEntry[]): Array<{
9
+ path: string;
10
+ entry: CDFTokenEntry;
11
+ }>;
12
+ export declare function detectSlotCycles(components: Array<{
13
+ key: string;
14
+ entry: CDFComponentEntry;
15
+ }>): ReturnType<typeof findSlotCycles>;
16
+ export declare function formatSlotCycleReport(cycles: ReturnType<typeof findSlotCycles>): string[];
17
+ export declare function assertNoSlotCycles(components: Array<{
18
+ key: string;
19
+ entry: CDFComponentEntry;
20
+ }>): Promise<void>;
21
+ /**
22
+ * Client-side pre-flight for `$allowedComponents` references that are absent
23
+ * from this document, so a typo'd or renamed reference fails fast instead of
24
+ * waiting on the `previewImport`/`applyImport` round-trip. Only catches
25
+ * document-internal misses — a name that resolves against an *existing*
26
+ * target-environment Component still needs the network round-trip to
27
+ * confirm, so this cannot replace the server-side check.
28
+ *
29
+ * `validateSlotReferences` is the detection step (shared with
30
+ * `WizardApp.tsx` via `formatUnresolvedSlotReferences` below, mirroring how
31
+ * `detectSlotCycles`/`formatSlotCycleReport` split for the cycle check).
32
+ */
33
+ export declare function formatUnresolvedSlotReferences(errors: CDFValidationError[]): string[];
34
+ export declare function assertNoUnresolvedSlotReferences(components: Array<{
35
+ key: string;
36
+ entry: CDFComponentEntry;
37
+ }>): Promise<void>;
38
+ export declare function extractComponents(cdf: Record<string, unknown> | null | undefined): Array<{
39
+ key: string;
40
+ entry: CDFComponentEntry;
41
+ }>;
42
+ export declare function hasBreakingChangesWithImpact(preview: ServerPreviewResponse): boolean;
5
43
  export declare function registerApplyCommand(program: Command): void;
@@ -1,20 +1,2 @@
1
1
  import type { Command } from 'commander';
2
- export interface GenerateSubcommandOptions {
3
- agent?: string;
4
- model?: string;
5
- bedrock?: boolean;
6
- session?: string;
7
- rawTokens?: string;
8
- tokens?: string;
9
- tokenMap?: string;
10
- dryRun?: boolean;
11
- verbose?: boolean;
12
- cache?: boolean;
13
- generatePromptPath?: string;
14
- prompt?: string[];
15
- existingEntitiesPath?: string;
16
- cacheStatus?: boolean;
17
- restoreCache?: boolean;
18
- cachedComponents?: string;
19
- }
20
2
  export declare function registerInternalGenerateCommand(program: Command): void;
@@ -1,6 +1,5 @@
1
1
  export type AiFlaggable = {
2
2
  aiDecision?: 'accepted' | 'rejected' | 'failed' | null;
3
- needsReview?: boolean;
4
3
  };
5
4
  export declare function isAiFlagged(row: AiFlaggable): boolean;
6
5
  export declare function isDefaultIncluded(row: AiFlaggable): boolean;
@@ -4,7 +4,6 @@ export type ScopeComponent = {
4
4
  componentId: string;
5
5
  aiDecision?: 'accepted' | 'rejected' | 'failed' | null;
6
6
  aiReason?: string | null;
7
- needsReview?: boolean;
8
7
  slots?: Array<{
9
8
  name: string;
10
9
  allowedComponents: string[];