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 +21 -5
- x_ipe/core/scaffold.py +23 -0
- x_ipe/resources/copilot/mcp-config.json +15 -0
- {x_ipe-1.0.20.dist-info → x_ipe-1.0.21.dist-info}/METADATA +1 -1
- {x_ipe-1.0.20.dist-info → x_ipe-1.0.21.dist-info}/RECORD +8 -7
- {x_ipe-1.0.20.dist-info → x_ipe-1.0.21.dist-info}/WHEEL +0 -0
- {x_ipe-1.0.20.dist-info → x_ipe-1.0.21.dist-info}/entry_points.txt +0 -0
- {x_ipe-1.0.20.dist-info → x_ipe-1.0.21.dist-info}/licenses/LICENSE +0 -0
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
|
|
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()
|
|
@@ -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=
|
|
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
|
|
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.
|
|
1247
|
-
x_ipe-1.0.
|
|
1248
|
-
x_ipe-1.0.
|
|
1249
|
-
x_ipe-1.0.
|
|
1250
|
-
x_ipe-1.0.
|
|
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
|
|
File without changes
|
|
File without changes
|