x-ipe 1.0.20__py3-none-any.whl → 1.0.21__py3-none-any.whl

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.
x_ipe/cli/main.py CHANGED
@@ -175,8 +175,13 @@ def info(ctx: click.Context) -> None:
175
175
  is_flag=True,
176
176
  help="Skip copying skills from package.",
177
177
  )
178
+ @click.option(
179
+ "--no-mcp",
180
+ is_flag=True,
181
+ help="Skip MCP config merge prompt.",
182
+ )
178
183
  @click.pass_context
179
- def init(ctx: click.Context, force: bool, dry_run: bool, no_skills: bool) -> None:
184
+ def init(ctx: click.Context, force: bool, dry_run: bool, no_skills: bool, no_mcp: bool) -> None:
180
185
  """Initialize X-IPE in the current project.
181
186
 
182
187
  Creates the standard X-IPE folder structure:
@@ -208,6 +213,9 @@ def init(ctx: click.Context, force: bool, dry_run: bool, no_skills: bool) -> Non
208
213
  # Copy/merge copilot-instructions.md
209
214
  scaffold.copy_copilot_instructions()
210
215
 
216
+ # Copy MCP config (.github/copilot/mcp-config.json)
217
+ scaffold.copy_mcp_config()
218
+
211
219
  # Copy config files (copilot-prompt.json, tools.json, .env.example)
212
220
  scaffold.copy_config_files()
213
221
 
@@ -226,7 +234,7 @@ def init(ctx: click.Context, force: bool, dry_run: bool, no_skills: bool) -> Non
226
234
 
227
235
  # MCP config merge with user confirmation
228
236
  mcp_servers = scaffold.get_project_mcp_servers()
229
- if mcp_servers and not dry_run:
237
+ if mcp_servers and not dry_run and not no_mcp:
230
238
  click.echo("\n" + "-" * 40)
231
239
  click.echo("MCP Server Configuration")
232
240
  click.echo("-" * 40)
@@ -393,9 +401,14 @@ def serve(ctx: click.Context, host: Optional[str], port: Optional[int],
393
401
  default=None,
394
402
  help="Upgrade only the specified skill.",
395
403
  )
404
+ @click.option(
405
+ "--no-mcp",
406
+ is_flag=True,
407
+ help="Skip MCP config merge prompt.",
408
+ )
396
409
  @click.pass_context
397
410
  def upgrade(ctx: click.Context, force: bool, dry_run: bool,
398
- backup: bool, skill: Optional[str]) -> None:
411
+ backup: bool, skill: Optional[str], no_mcp: bool) -> None:
399
412
  """Upgrade skills from the X-IPE package.
400
413
 
401
414
  Syncs skills from the installed X-IPE package to the local
@@ -478,10 +491,13 @@ def upgrade(ctx: click.Context, force: bool, dry_run: bool,
478
491
  if backup and skills_to_warn:
479
492
  click.echo(f"\nBackups created in: {project_root / '.x-ipe' / 'backups'}")
480
493
 
481
- # MCP config merge with user confirmation
494
+ # Copy/update MCP config from package, then merge to global
482
495
  scaffold = ScaffoldManager(project_root, dry_run=dry_run, force=force)
496
+ scaffold.copy_mcp_config()
497
+
498
+ # MCP config merge with user confirmation
483
499
  mcp_servers = scaffold.get_project_mcp_servers()
484
- if mcp_servers and not dry_run:
500
+ if mcp_servers and not dry_run and not no_mcp:
485
501
  click.echo("\n" + "-" * 40)
486
502
  click.echo("MCP Server Configuration")
487
503
  click.echo("-" * 40)
x_ipe/core/scaffold.py CHANGED
@@ -145,6 +145,28 @@ class ScaffoldManager:
145
145
  shutil.copy2(source, target)
146
146
  self.created.append(target)
147
147
 
148
+ def copy_mcp_config(self) -> None:
149
+ """Copy mcp-config.json to .github/copilot/."""
150
+ source = self._get_resource_path("copilot")
151
+ if source is None or not source.exists():
152
+ return
153
+
154
+ source_file = source / "mcp-config.json"
155
+ if not source_file.exists():
156
+ return
157
+
158
+ target = self.project_root / ".github" / "copilot" / "mcp-config.json"
159
+
160
+ if target.exists():
161
+ if not self.force:
162
+ self.skipped.append(target)
163
+ return
164
+
165
+ if not self.dry_run:
166
+ target.parent.mkdir(parents=True, exist_ok=True)
167
+ shutil.copy2(source_file, target)
168
+ self.created.append(target)
169
+
148
170
  def get_project_mcp_servers(self) -> dict:
149
171
  """Get MCP servers from project's .github/copilot/mcp-config.json.
150
172
 
@@ -382,6 +404,7 @@ server:
382
404
  self.create_runtime_folder()
383
405
  self.copy_skills()
384
406
  self.copy_copilot_instructions()
407
+ self.copy_mcp_config()
385
408
  self.copy_config_files()
386
409
  self.copy_planning_templates()
387
410
  self.copy_themes()
@@ -0,0 +1,15 @@
1
+ {
2
+ "mcpServers": {
3
+ "chrome-devtools": {
4
+ "type": "local",
5
+ "command": "npx",
6
+ "tools": [
7
+ "*"
8
+ ],
9
+ "args": [
10
+ "-y",
11
+ "chrome-devtools-mcp@latest"
12
+ ]
13
+ }
14
+ }
15
+ }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: x-ipe
3
- Version: 1.0.20
3
+ Version: 1.0.21
4
4
  Summary: X-IPE: AI-powered development framework
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.12
@@ -4,12 +4,12 @@ x_ipe/app.py,sha256=EkOYKxF-nKnRG2ev6tC-Fw5EHikWJyVxO7hfLAouJPE,5262
4
4
  x_ipe/app.py.bak,sha256=WRuPkrHkS77BAMFYV5uVS2Xl2-QDwQE0KdgTyJHxMpk,45732
5
5
  x_ipe/config.py,sha256=NYLhpfhxVMZETHW2SNej3sVoUutuPzTGrQTsJTuie80,1685
6
6
  x_ipe/cli/__init__.py,sha256=yAg0J4ULFDPnVbtFOORPAcWT_SwjW4CK9bNDd-c2xPg,80
7
- x_ipe/cli/main.py,sha256=sVX-T_w-sr-TtPpzdrYXlWWYOUKLy-sV_lE1mT8Cg5g,16160
7
+ x_ipe/cli/main.py,sha256=NA0Fn7t6tjrYczASydcE0qPsA-y89pYPxBv8faiyURs,16596
8
8
  x_ipe/core/__init__.py,sha256=aB6UCmjC3QRrJfHPTV0uBqGHnnnQncX6rl4i6PKI5oo,556
9
9
  x_ipe/core/config.py,sha256=9JmWcVqBvfcqwkWnfx4WvmSi65JVnfhERE5w6pBZSRI,5590
10
10
  x_ipe/core/hashing.py,sha256=brF5W8fHZVxADkRqztoBg9yNkN8PpbLI7WWrsRY54Zg,3573
11
11
  x_ipe/core/paths.py,sha256=bTXouYy0-_k7A1mNaRg2MLWnfDuzZesPlsY9Rg6nMOo,2562
12
- x_ipe/core/scaffold.py,sha256=-Jw6jI6oMcwWJ5JMB2iENXxK2ywDhAsx-ADjrd6K2Lo,14337
12
+ x_ipe/core/scaffold.py,sha256=64jB8jYmm9oU_7l3PUjRzLyudb8NxZ9mDwgHb8WytVI,15107
13
13
  x_ipe/core/skills.py,sha256=sZSk-eDLYxvpa9J1a7HIv3xuwrDLinvL7tLIcmTXixc,8535
14
14
  x_ipe/handlers/__init__.py,sha256=asR3VNYqVYbOowET6Nxn82S7hM52ySEuCmqAaKaZ78E,359
15
15
  x_ipe/handlers/terminal_handlers.py,sha256=1vc34FAdaBL2J_wi3BSlGKw6HmWADXf83O-ECTO8Ov0,4463
@@ -17,6 +17,7 @@ x_ipe/handlers/voice_handlers.py,sha256=Eo5qzQR4WIbG-Jm5zmQHro4kAb-1mbnUPIDnGcop
17
17
  x_ipe/resources/config/.env.example,sha256=uG9RiX2q9wd-RS-2kg8gqiYrZwNtYHjJINzrIIk3_1I,1192
18
18
  x_ipe/resources/config/copilot-prompt.json,sha256=R6aG7x63Kw_YHIZgs0QVNMA1w4DBY8ilTWBhSYTrAxo,709
19
19
  x_ipe/resources/config/tools.json,sha256=WilFs7YfsbPEhml10ksFcba61F1OU-iMqYocogqTefE,595
20
+ x_ipe/resources/copilot/mcp-config.json,sha256=cSjfY0a1ewqwnTMbTJNYk1UOZrPKCS43xKvOwP7DcjQ,216
20
21
  x_ipe/resources/planning/features.md,sha256=NhWPI3eeC7EN5yqWwR-7pKbLrbBJ5JVKDtWoiYOOiAY,981
21
22
  x_ipe/resources/planning/task-board.md,sha256=y_TZ7SZxCZCRUTs-g04BWewSb3CnX_lXY3UP7_5vkF4,2028
22
23
  x_ipe/resources/themes/theme-default/component-visualization.html,sha256=0Ykm6QxVsEyk4Xpt7uNggZnqD1UxAR0vN3qtLbb3OLk,27908
@@ -1243,8 +1244,8 @@ x_ipe/resources/skills/x-ipe-skill-creator/templates/references/examples.md,sha2
1243
1244
  x_ipe/resources/skills/xlsx/LICENSE.txt,sha256=efbY9bQnJS-jscEezb22v2ELlE91MLTeePdw84dBz6o,1467
1244
1245
  x_ipe/resources/skills/xlsx/SKILL.md,sha256=AgzNtZMiV7ZsY47BFX6iSNV_pSyMAfH2i1WbWXDH3zU,10632
1245
1246
  x_ipe/resources/skills/xlsx/recalc.py,sha256=qx7wyUU2uyO2xqPTJ2mwQB7DzIXnPCR9V03YTsc68V0,6408
1246
- x_ipe-1.0.20.dist-info/METADATA,sha256=3aKo1TZuRFH4JY1Ex8Fk-yRqNAXf5QCKnByjHevL5A4,637
1247
- x_ipe-1.0.20.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
1248
- x_ipe-1.0.20.dist-info/entry_points.txt,sha256=b787rsvZAIjLgjBzB87D_BE8yu6DCqBqv9zv4F6_j6M,41
1249
- x_ipe-1.0.20.dist-info/licenses/LICENSE,sha256=8lS-M88bBvSI9_8kauYvQRu03WEMnj1Q5KoxOFKFnhc,1062
1250
- x_ipe-1.0.20.dist-info/RECORD,,
1247
+ x_ipe-1.0.21.dist-info/METADATA,sha256=oknwRHE940fbvhPbPU1g4GA-bJX5gSV_mqhZmPE8Huo,637
1248
+ x_ipe-1.0.21.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
1249
+ x_ipe-1.0.21.dist-info/entry_points.txt,sha256=b787rsvZAIjLgjBzB87D_BE8yu6DCqBqv9zv4F6_j6M,41
1250
+ x_ipe-1.0.21.dist-info/licenses/LICENSE,sha256=8lS-M88bBvSI9_8kauYvQRu03WEMnj1Q5KoxOFKFnhc,1062
1251
+ x_ipe-1.0.21.dist-info/RECORD,,
File without changes