@contentful/experience-design-system-cli 2.30.1-dev-build-cc5ef7d.0 → 2.30.1-dev-build-d59d797.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.
package/README.md CHANGED
@@ -63,7 +63,7 @@ When more than one source speaks to the same relationship, the higher-precedence
63
63
 
64
64
  - `--composition-agent-mode <parser|edges>` — `parser` (default; the sandboxed-parser design above) or `edges` (agent lists relationships directly; less robust).
65
65
  - `--composition-refresh` — ignore the cache and re-resolve from scratch, forcing the agent to run.
66
- - `--agent <name>` — which coding agent authors the parser (`claude`, `codex`, `opencode`, `cursor`).
66
+ - `--agent <name>` — which coding agent authors the parser (`claude`, `codex`, `opencode`, `cursor`, `copilot`).
67
67
  - `--prompt composition=<file-or-text>` — override the composition stage's prompt.
68
68
 
69
69
  Because the agent path spawns a coding agent, it adds latency and cost and is best-effort (parser quality can vary run to run). For reproducible results, prefer `--composition-map`.
@@ -86,6 +86,7 @@ If the resolved graph contains a circular slot dependency (A slots B, B slots A)
86
86
  | **OpenAI Codex** (`codex`) | `npm install -g @openai/codex` | Set `OPENAI_API_KEY` |
87
87
  | **OpenCode** (`opencode`) | `npm install -g opencode-ai` | Configure via `opencode auth` (supports multiple providers) |
88
88
  | **Cursor** (`cursor`) | Install [Cursor](https://cursor.com) | Sign in to Cursor; exposes `cursor-agent` binary |
89
+ | **GitHub Copilot** (`copilot`) | `npm install -g @github/copilot` | Run `copilot` once to complete GitHub OAuth login. Free plan uses Auto model selection by default. Paid plans can pin a specific model via `EDS_AGENT_MODEL_COPILOT=<model-id>` (e.g. `claude-sonnet-4.6`) |
89
90
 
90
91
  The CLI invokes the agent non-interactively in a subprocess. If the binary is not found in `$PATH`, the command exits 1 and prints manual fallback instructions.
91
92
 
@@ -291,7 +292,7 @@ experiences analyze extract --project <path> [--dir <src-dir>] [composition flag
291
292
  | `--composition-agent` | — | Opt into agentic resolution when deterministic sources find no groups (implies `--composite`) |
292
293
  | `--composition-refresh` | — | Bypass the composition cache and re-resolve from scratch, forcing the agent to run (implies `--composite`) |
293
294
  | `--composition-agent-mode <mode>` | `parser` | `parser` (agent writes a sandboxed parser — deterministic) or `edges` (agent lists edges directly) |
294
- | `--agent <name>` | saved by setup | Coding agent for composition resolution: `claude`, `codex`, `opencode`, `cursor` |
295
+ | `--agent <name>` | saved by setup | Coding agent for composition resolution: `claude`, `codex`, `opencode`, `cursor`, `copilot` |
295
296
  | `--prompt <stage=value>` | — | Override a stage prompt (repeatable); value is a file path or literal text, e.g. `--prompt composition=./p.md` |
296
297
 
297
298
  Scans `.tsx`, `.ts`, `.jsx`, `.js`, `.vue`, and `.astro` files. Ignores `node_modules`, `dist`, `build`, `.next`, `.nuxt`, `coverage`, `storybook-static`, `out`, `demo(s)`, and `example(s)` directories. Also ignores `*.stories.*`, `*.story.*`, `*.spec.*`, and `*.test.*` files.
@@ -339,7 +340,7 @@ experiences analyze select-agent [--agent <name>] [--session <id>]
339
340
 
340
341
  | Option | Default | Description |
341
342
  |---|---|---|
342
- | `--agent <name>` | saved by `experiences setup` | Agent: `claude`, `codex`, `opencode`, or `cursor` |
343
+ | `--agent <name>` | saved by `experiences setup` | Agent: `claude`, `codex`, `opencode`, `cursor`, or `copilot` |
343
344
  | `--session <id>` | most recent completed `analyze extract` | Session ID from `analyze extract` |
344
345
  | `--project-root <path>` | `cwd` | Project root for resolving component source files |
345
346
  | `--model <name>` | agent default | Model to use |
@@ -368,7 +369,7 @@ experiences generate components [--agent <name>] [--session <id>]
368
369
 
369
370
  | Option | Default | Description |
370
371
  |---|---|---|
371
- | `--agent <name>` | saved by setup | Agent: `claude`, `codex`, `opencode`, or `cursor` |
372
+ | `--agent <name>` | saved by setup | Agent: `claude`, `codex`, `opencode`, `cursor`, or `copilot` |
372
373
  | `--session <id>` | most recent completed `analyze extract` | Session ID from `analyze extract` |
373
374
  | `--tokens <path>` | — | Path to `tokens.json` for token-linked prop resolution |
374
375
  | `--token-map <path>` | — | Path to `token-name-map.json` sidecar |
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contentful/experience-design-system-cli",
3
- "version": "2.30.1-dev-build-cc5ef7d.0",
3
+ "version": "2.30.1-dev-build-d59d797.0",
4
4
  "description": "Contentful Experiences design system import CLI",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -47,7 +47,7 @@
47
47
  "react": "^18.3.1",
48
48
  "react-devtools-core": "^4.19.1",
49
49
  "react-dom": "^18.3.1",
50
- "svelte": "^5.57.0",
50
+ "svelte": "^5.56.4",
51
51
  "ts-morph": "^27.0.2",
52
52
  "typescript": "^5.9.3"
53
53
  },
package/dist/src/index.js CHANGED
@@ -16,7 +16,7 @@ var AGENT_NAMES, DEFAULT_AGENT_NAME;
16
16
  var init_agent_names = __esm({
17
17
  "packages/experience-design-system-generation/dist/src/agent-names.js"() {
18
18
  "use strict";
19
- AGENT_NAMES = ["claude", "codex", "opencode", "cursor"];
19
+ AGENT_NAMES = ["claude", "codex", "opencode", "cursor", "copilot"];
20
20
  DEFAULT_AGENT_NAME = "claude";
21
21
  }
22
22
  });
@@ -295,6 +295,11 @@ function buildArgs(agent, prompt2, model, promptViaStdin = false) {
295
295
  return ["run", ...modelArg, ...promptArg];
296
296
  case "cursor":
297
297
  return ["--print", ...modelArg, ...promptArg];
298
+ case "copilot": {
299
+ const copilotModel = resolveAgentModel("copilot", model);
300
+ const copilotModelArg = copilotModel === "Auto" ? [] : ["--model", copilotModel];
301
+ return ["-p", ...promptArg, ...copilotModelArg, "--allow-all-tools"];
302
+ }
298
303
  }
299
304
  }
300
305
  async function runAgent(options) {
@@ -445,15 +450,18 @@ var init_agent_runner = __esm({
445
450
  claude: "claude",
446
451
  codex: "codex",
447
452
  opencode: "opencode",
448
- cursor: "cursor-agent"
453
+ cursor: "cursor-agent",
454
+ copilot: "copilot"
449
455
  };
450
456
  DEFAULT_MODELS = {
451
457
  claude: "haiku",
452
458
  codex: "gpt-5.4-mini",
453
459
  // requires OPENAI_API_KEY; ChatGPT account users must pass --model
454
460
  opencode: "claude-haiku-4-5",
455
- cursor: "gpt-mini"
461
+ cursor: "gpt-mini",
456
462
  // cursor alias for gpt-5.4-mini-medium; haiku not in cursor's catalog
463
+ copilot: "Auto"
464
+ // the only model guaranteed on every Copilot plan (Free/Pro/Business/Enterprise); Pro+ users override via EDS_AGENT_MODEL_COPILOT
457
465
  };
458
466
  }
459
467
  });
@@ -36075,7 +36083,8 @@ async function setupBuild(repoRoot) {
36075
36083
  var AGENT_DEFS = [
36076
36084
  { name: "Claude Code", binary: "claude", installHint: "npm install -g @anthropic-ai/claude-code && claude login" },
36077
36085
  { name: "OpenAI Codex", binary: "codex", installHint: "npm install -g @openai/codex (requires OPENAI_API_KEY)" },
36078
- { name: "OpenCode", binary: "opencode", installHint: "npm install -g opencode-ai && opencode auth" }
36086
+ { name: "OpenCode", binary: "opencode", installHint: "npm install -g opencode-ai && opencode auth" },
36087
+ { name: "GitHub Copilot", binary: "copilot", installHint: "npm install -g @github/copilot && copilot" }
36079
36088
  ];
36080
36089
  function pick(items, defaultIdx = 0) {
36081
36090
  items.forEach((item, i) => {
@@ -36110,7 +36119,7 @@ async function promptCodexModel() {
36110
36119
  return void 0;
36111
36120
  }
36112
36121
  async function setupAgent() {
36113
- section("Step 4: Coding agent (claude, codex, or opencode)", "[required]");
36122
+ section("Step 4: Coding agent (claude, codex, opencode, or copilot)", "[required]");
36114
36123
  info("experiences import uses a coding agent to generate component definitions.");
36115
36124
  info("");
36116
36125
  const found = (await Promise.all(AGENT_DEFS.map(async (a) => await binaryExists(a.binary) ? a : null))).filter(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contentful/experience-design-system-cli",
3
- "version": "2.30.1-dev-build-cc5ef7d.0",
3
+ "version": "2.30.1-dev-build-d59d797.0",
4
4
  "description": "Contentful Experiences design system import CLI",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -36,11 +36,11 @@
36
36
  "react": "^18.3.1",
37
37
  "react-devtools-core": "^4.19.1",
38
38
  "react-dom": "^18.3.1",
39
- "svelte": "^5.57.0",
39
+ "svelte": "^5.56.4",
40
40
  "ts-morph": "^27.0.2",
41
41
  "typescript": "^5.9.3",
42
- "@contentful/experience-design-system-cli-v2": "2.30.1-dev-build-cc5ef7d.0",
43
- "@contentful/experience-design-system-types": "2.30.1-dev-build-cc5ef7d.0"
42
+ "@contentful/experience-design-system-cli-v2": "2.30.1-dev-build-d59d797.0",
43
+ "@contentful/experience-design-system-types": "2.30.1-dev-build-d59d797.0"
44
44
  },
45
45
  "devDependencies": {
46
46
  "@tsconfig/node24": "^24.0.4",
@@ -52,9 +52,9 @@
52
52
  "ink-testing-library": "^4.0.0",
53
53
  "typescript-eslint": "^8.67.0",
54
54
  "vitest": "^4.0.16",
55
- "@contentful/experience-design-system-extraction": "2.30.1-dev-build-cc5ef7d.0",
56
- "@contentful/experience-design-system-generation": "2.30.1-dev-build-cc5ef7d.0",
57
- "@contentful/experience-design-system-client": "2.30.1-dev-build-cc5ef7d.0"
55
+ "@contentful/experience-design-system-extraction": "2.30.1-dev-build-d59d797.0",
56
+ "@contentful/experience-design-system-client": "2.30.1-dev-build-d59d797.0",
57
+ "@contentful/experience-design-system-generation": "2.30.1-dev-build-d59d797.0"
58
58
  },
59
59
  "repository": {
60
60
  "type": "git",