minder-cli 0.4.5__tar.gz → 0.4.8__tar.gz
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.
- {minder_cli-0.4.5 → minder_cli-0.4.8}/.gitignore +9 -3
- {minder_cli-0.4.5 → minder_cli-0.4.8}/PKG-INFO +1 -1
- {minder_cli-0.4.5 → minder_cli-0.4.8}/pyproject.toml +1 -1
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/presentation/cli/commands/mcp.py +54 -31
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/presentation/cli/main.py +1 -1
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/tools/repo_scanner.py +1 -1
- {minder_cli-0.4.5 → minder_cli-0.4.8}/LICENSE +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/README-pypi.md +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/README.md +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/__init__.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/api/routers/prompts.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/application/__init__.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/application/admin/__init__.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/application/admin/dto.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/application/admin/jobs.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/application/admin/use_cases.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/auth/__init__.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/auth/context.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/auth/middleware.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/auth/principal.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/auth/rate_limiter.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/auth/rbac.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/auth/service.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/bootstrap/__init__.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/bootstrap/providers.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/bootstrap/transport.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/cache/__init__.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/cache/providers.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/chunking/__init__.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/chunking/code_splitter.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/chunking/splitter.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/cli.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/config.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/context_compactor.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/continuity.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/dev.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/embedding/__init__.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/embedding/base.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/embedding/local.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/embedding/openai.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/graph/__init__.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/graph/edges.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/graph/executor.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/graph/graph.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/graph/nodes/__init__.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/graph/nodes/clarification.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/graph/nodes/evaluator.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/graph/nodes/guard.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/graph/nodes/llm.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/graph/nodes/planning.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/graph/nodes/reasoning.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/graph/nodes/reflection.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/graph/nodes/reranker.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/graph/nodes/retriever.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/graph/nodes/verification.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/graph/nodes/workflow_planner.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/graph/runtime.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/graph/state.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/learning/__init__.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/learning/error_learner.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/learning/pattern_extractor.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/learning/quality_optimizer.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/learning/skill_synthesizer.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/llm/__init__.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/llm/base.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/llm/factory.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/llm/litert.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/llm/openai.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/models/__init__.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/models/base.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/models/client.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/models/document.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/models/error.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/models/graph.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/models/history.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/models/job.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/models/prompt.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/models/repository.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/models/rule.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/models/session.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/models/skill.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/models/user.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/models/workflow.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/observability/__init__.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/observability/audit.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/observability/logging.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/observability/metrics.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/observability/tracing.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/presentation/__init__.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/presentation/cli/__init__.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/presentation/cli/commands/agent.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/presentation/cli/commands/auth.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/presentation/cli/commands/ide.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/presentation/cli/commands/sync.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/presentation/cli/commands/update.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/presentation/cli/utils/common.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/presentation/cli/utils/config.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/presentation/cli/utils/git.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/presentation/cli/utils/version.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/presentation/http/__init__.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/presentation/http/admin/__init__.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/presentation/http/admin/api.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/presentation/http/admin/context.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/presentation/http/admin/dashboard.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/presentation/http/admin/jobs.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/presentation/http/admin/memories.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/presentation/http/admin/prompts.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/presentation/http/admin/routes.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/presentation/http/admin/runtime.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/presentation/http/admin/search.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/presentation/http/admin/skills.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/prompts/__init__.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/prompts/formatter.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/resources/__init__.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/retrieval/__init__.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/retrieval/hybrid.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/retrieval/mmr.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/retrieval/multi_hop.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/runtime.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/server.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/store/__init__.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/store/document.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/store/error.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/store/feedback.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/store/graph.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/store/history.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/store/interfaces.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/store/milvus/__init__.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/store/milvus/client.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/store/milvus/collections.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/store/milvus/vector_store.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/store/mongodb/__init__.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/store/mongodb/client.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/store/mongodb/graph_store.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/store/mongodb/indexes.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/store/mongodb/operational_store.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/store/relational.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/store/repo_state.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/store/rule.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/store/vector.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/tools/__init__.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/tools/auth.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/tools/graph.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/tools/ingest.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/tools/memory.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/tools/query.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/tools/registry.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/tools/search.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/tools/session.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/tools/skills.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/tools/workflow.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/transport/__init__.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/transport/base.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/transport/sse.py +0 -0
- {minder_cli-0.4.5 → minder_cli-0.4.8}/src/minder/transport/stdio.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: minder-cli
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.8
|
|
4
4
|
Summary: Minder CLI is the command-line interface for the Minder self-hosted MCP platform.
|
|
5
5
|
Project-URL: Homepage, https://github.com/hiimtrung/minder
|
|
6
6
|
Project-URL: Repository, https://github.com/hiimtrung/minder
|
|
@@ -38,11 +38,8 @@ def _global_target_path(target: str) -> Path:
|
|
|
38
38
|
return appdata_dir() / "Cursor" / "User" / "globalStorage" / "mcp-servers.json"
|
|
39
39
|
return Path.home() / ".config" / "Cursor" / "User" / "globalStorage" / "mcp-servers.json"
|
|
40
40
|
if target == "claude-code":
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
if system == "Windows":
|
|
44
|
-
return appdata_dir() / "Claude" / "claude_desktop_config.json"
|
|
45
|
-
return Path.home() / ".config" / "Claude" / "claude_desktop_config.json"
|
|
41
|
+
# User scope: ~/.claude.json stores cross-project MCP servers under top-level mcpServers key
|
|
42
|
+
return Path.home() / ".claude.json"
|
|
46
43
|
if target == "antigravity":
|
|
47
44
|
return Path.home() / ".gemini" / "antigravity" / "mcp_config.json"
|
|
48
45
|
if target == "codex":
|
|
@@ -94,7 +91,8 @@ def local_target_path(target: str, cwd: Path) -> Path:
|
|
|
94
91
|
if target == "cursor":
|
|
95
92
|
return cwd / ".cursor" / "mcp.json"
|
|
96
93
|
if target == "claude-code":
|
|
97
|
-
|
|
94
|
+
# Project scope: .mcp.json at project root, shared via version control
|
|
95
|
+
return cwd / ".mcp.json"
|
|
98
96
|
if target == "antigravity":
|
|
99
97
|
del cwd
|
|
100
98
|
return Path.home() / ".gemini" / "antigravity" / "mcp_config.json"
|
|
@@ -107,27 +105,39 @@ def _target_root_key(target: str) -> str:
|
|
|
107
105
|
return "mcpServers"
|
|
108
106
|
|
|
109
107
|
|
|
108
|
+
def _ensure_gitignored(cwd: Path, filename: str) -> None:
|
|
109
|
+
gitignore = cwd / ".gitignore"
|
|
110
|
+
existing = gitignore.read_text(encoding="utf-8") if gitignore.is_file() else ""
|
|
111
|
+
for line in existing.splitlines():
|
|
112
|
+
if line.strip() in (filename, f"/{filename}"):
|
|
113
|
+
return
|
|
114
|
+
sep = "" if not existing or existing.endswith("\n") else "\n"
|
|
115
|
+
gitignore.write_text(existing + sep + filename + "\n", encoding="utf-8")
|
|
116
|
+
print(f" Added '{filename}' to .gitignore")
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
def _remove_gitignored(cwd: Path, filename: str) -> None:
|
|
120
|
+
gitignore = cwd / ".gitignore"
|
|
121
|
+
if not gitignore.is_file():
|
|
122
|
+
return
|
|
123
|
+
lines = gitignore.read_text(encoding="utf-8").splitlines(keepends=True)
|
|
124
|
+
filtered = [line for line in lines if line.strip() not in (filename, f"/{filename}")]
|
|
125
|
+
if len(filtered) < len(lines):
|
|
126
|
+
gitignore.write_text("".join(filtered), encoding="utf-8")
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
def _remote_url(protocol: str, server_url: str) -> str:
|
|
130
|
+
return sse_url(server_url) if protocol == "sse" else mcp_url(server_url)
|
|
131
|
+
|
|
132
|
+
|
|
110
133
|
def _target_entry(
|
|
111
134
|
target: str,
|
|
112
135
|
protocol: str,
|
|
113
136
|
client_key: str,
|
|
114
137
|
server_url: str | None,
|
|
115
138
|
) -> dict[str, Any]:
|
|
116
|
-
if target == "antigravity" and protocol != "stdio":
|
|
117
|
-
return {
|
|
118
|
-
"serverUrl": mcp_url(server_url or ""),
|
|
119
|
-
"headers": {"X-Minder-Client-Key": client_key},
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
if target == "vscode" and protocol != "stdio":
|
|
123
|
-
return {
|
|
124
|
-
"type": "sse",
|
|
125
|
-
"url": sse_url(server_url or ""),
|
|
126
|
-
"headers": {"X-Minder-Client-Key": client_key},
|
|
127
|
-
}
|
|
128
|
-
|
|
129
139
|
if protocol == "stdio":
|
|
130
|
-
entry = {
|
|
140
|
+
entry: dict[str, Any] = {
|
|
131
141
|
"command": "uv",
|
|
132
142
|
"args": ["run", "python", "-m", "minder.server"],
|
|
133
143
|
"env": {
|
|
@@ -138,10 +148,21 @@ def _target_entry(
|
|
|
138
148
|
if target == "vscode":
|
|
139
149
|
entry["type"] = "stdio"
|
|
140
150
|
return entry
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
151
|
+
|
|
152
|
+
# Remote transport: URL and auth header are uniform across all targets.
|
|
153
|
+
# Only format differences below (key name, type field) per IDE spec.
|
|
154
|
+
url = _remote_url(protocol, server_url or "")
|
|
155
|
+
headers = {"X-Minder-Client-Key": client_key}
|
|
156
|
+
|
|
157
|
+
if target == "antigravity":
|
|
158
|
+
# Gemini CLI expects "serverUrl" instead of "url"
|
|
159
|
+
return {"serverUrl": url, "headers": headers}
|
|
160
|
+
if target in ("vscode", "claude-code"):
|
|
161
|
+
# VSCode and Claude Code require an explicit "type" field
|
|
162
|
+
return {"type": protocol, "url": url, "headers": headers}
|
|
163
|
+
|
|
164
|
+
# Standard format: cursor and all future targets
|
|
165
|
+
return {"url": url, "headers": headers}
|
|
145
166
|
|
|
146
167
|
|
|
147
168
|
def install_mcp_command(args: argparse.Namespace) -> int:
|
|
@@ -167,25 +188,24 @@ def install_mcp_command(args: argparse.Namespace) -> int:
|
|
|
167
188
|
continue
|
|
168
189
|
|
|
169
190
|
try:
|
|
170
|
-
if args.global_install
|
|
171
|
-
path = _global_target_path(target)
|
|
172
|
-
else:
|
|
173
|
-
path = local_target_path(target, cwd)
|
|
174
|
-
|
|
191
|
+
path = _global_target_path(target) if args.global_install else local_target_path(target, cwd)
|
|
175
192
|
payload = load_json(path)
|
|
176
193
|
root_key = _target_root_key(target)
|
|
177
194
|
if root_key not in payload:
|
|
178
195
|
payload[root_key] = {}
|
|
179
|
-
|
|
196
|
+
|
|
180
197
|
payload[root_key]["minder"] = _target_entry(
|
|
181
198
|
target,
|
|
182
199
|
settings["protocol"],
|
|
183
200
|
settings["client_api_key"],
|
|
184
201
|
settings.get("server_url"),
|
|
185
202
|
)
|
|
186
|
-
|
|
203
|
+
|
|
187
204
|
write_json(path, payload)
|
|
188
205
|
print(f"Installed Minder MCP config for {target} at {path}")
|
|
206
|
+
|
|
207
|
+
if not args.global_install and target == "claude-code":
|
|
208
|
+
_ensure_gitignored(cwd, ".mcp.json")
|
|
189
209
|
except Exception as e:
|
|
190
210
|
print(f"Failed to install MCP for {target}: {e}")
|
|
191
211
|
|
|
@@ -229,6 +249,9 @@ def uninstall_mcp_command(args: argparse.Namespace) -> int:
|
|
|
229
249
|
else:
|
|
230
250
|
write_json(path, payload)
|
|
231
251
|
print(f"Removed Minder MCP config for {target} from {path}")
|
|
252
|
+
|
|
253
|
+
if not args.global_install and target == "claude-code":
|
|
254
|
+
_remove_gitignored(cwd, ".mcp.json")
|
|
232
255
|
except Exception as e:
|
|
233
256
|
print(f"Failed to uninstall MCP for {target}: {e}")
|
|
234
257
|
|
|
@@ -48,7 +48,7 @@ def build_parser() -> argparse.ArgumentParser:
|
|
|
48
48
|
f" --global: {_global_target_path('vscode')}\n"
|
|
49
49
|
f" cursor per-repo: {_cwd_placeholder}/.cursor/mcp.json\n"
|
|
50
50
|
f" --global: {_global_target_path('cursor')}\n"
|
|
51
|
-
f" claude-code per-repo: {_cwd_placeholder}/.
|
|
51
|
+
f" claude-code per-repo: {_cwd_placeholder}/.mcp.json\n"
|
|
52
52
|
f" --global: {_global_target_path('claude-code')}\n"
|
|
53
53
|
f" antigravity always: {_global_target_path('antigravity')} [--global has no effect]\n"
|
|
54
54
|
f" codex always: {_global_target_path('codex')} [--global has no effect]\n"
|
|
@@ -488,7 +488,7 @@ class RepoScanner:
|
|
|
488
488
|
line = line.strip()
|
|
489
489
|
if line:
|
|
490
490
|
path = self._root / line
|
|
491
|
-
if path.suffix.lower() in _SOURCE_SUFFIXES:
|
|
491
|
+
if path.is_file() and path.suffix.lower() in _SOURCE_SUFFIXES:
|
|
492
492
|
files.append(path)
|
|
493
493
|
if files:
|
|
494
494
|
return sorted(set(files))
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|