claude-mpm 5.0.2__py3-none-any.whl → 5.4.3__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.
Potentially problematic release.
This version of claude-mpm might be problematic. Click here for more details.
- claude_mpm/VERSION +1 -1
- claude_mpm/agents/CLAUDE_MPM_TEACHER_OUTPUT_STYLE.md +2002 -0
- claude_mpm/agents/PM_INSTRUCTIONS.md +1218 -905
- claude_mpm/agents/agent_loader.py +10 -17
- claude_mpm/agents/base_agent_loader.py +10 -35
- claude_mpm/agents/frontmatter_validator.py +68 -0
- claude_mpm/agents/templates/circuit-breakers.md +431 -45
- claude_mpm/cli/__init__.py +0 -1
- claude_mpm/cli/commands/__init__.py +2 -0
- claude_mpm/cli/commands/agent_state_manager.py +67 -23
- claude_mpm/cli/commands/agents.py +446 -25
- claude_mpm/cli/commands/auto_configure.py +535 -233
- claude_mpm/cli/commands/configure.py +1500 -147
- claude_mpm/cli/commands/configure_agent_display.py +13 -6
- claude_mpm/cli/commands/mpm_init/core.py +158 -1
- claude_mpm/cli/commands/mpm_init/knowledge_extractor.py +481 -0
- claude_mpm/cli/commands/mpm_init/prompts.py +280 -0
- claude_mpm/cli/commands/postmortem.py +401 -0
- claude_mpm/cli/commands/run.py +1 -39
- claude_mpm/cli/commands/skills.py +322 -19
- claude_mpm/cli/commands/summarize.py +413 -0
- claude_mpm/cli/executor.py +8 -0
- claude_mpm/cli/interactive/agent_wizard.py +302 -195
- claude_mpm/cli/parsers/agents_parser.py +137 -0
- claude_mpm/cli/parsers/auto_configure_parser.py +13 -0
- claude_mpm/cli/parsers/base_parser.py +9 -0
- claude_mpm/cli/parsers/skills_parser.py +7 -0
- claude_mpm/cli/startup.py +133 -85
- claude_mpm/commands/mpm-agents-auto-configure.md +2 -2
- claude_mpm/commands/mpm-agents-list.md +2 -2
- claude_mpm/commands/mpm-config-view.md +2 -2
- claude_mpm/commands/mpm-help.md +3 -0
- claude_mpm/commands/{mpm-ticket-organize.md → mpm-organize.md} +4 -5
- claude_mpm/commands/mpm-postmortem.md +123 -0
- claude_mpm/commands/mpm-session-resume.md +2 -2
- claude_mpm/commands/mpm-ticket-view.md +2 -2
- claude_mpm/config/agent_presets.py +312 -82
- claude_mpm/config/agent_sources.py +27 -0
- claude_mpm/config/skill_presets.py +392 -0
- claude_mpm/constants.py +1 -0
- claude_mpm/core/claude_runner.py +2 -25
- claude_mpm/core/framework/loaders/agent_loader.py +8 -5
- claude_mpm/core/framework/loaders/file_loader.py +54 -101
- claude_mpm/core/interactive_session.py +19 -5
- claude_mpm/core/oneshot_session.py +16 -4
- claude_mpm/core/output_style_manager.py +173 -43
- claude_mpm/core/protocols/__init__.py +23 -0
- claude_mpm/core/protocols/runner_protocol.py +103 -0
- claude_mpm/core/protocols/session_protocol.py +131 -0
- claude_mpm/core/shared/singleton_manager.py +11 -4
- claude_mpm/core/socketio_pool.py +3 -3
- claude_mpm/core/system_context.py +38 -0
- claude_mpm/core/unified_agent_registry.py +134 -16
- claude_mpm/core/unified_config.py +22 -0
- claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/correlation_manager.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/correlation_manager.py +60 -0
- claude_mpm/hooks/claude_hooks/event_handlers.py +35 -2
- claude_mpm/hooks/claude_hooks/hook_handler.py +4 -0
- claude_mpm/hooks/claude_hooks/memory_integration.py +12 -1
- claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/connection_manager.py +4 -0
- claude_mpm/models/agent_definition.py +7 -0
- claude_mpm/scripts/launch_monitor.py +93 -13
- claude_mpm/services/agents/agent_recommendation_service.py +279 -0
- claude_mpm/services/agents/cache_git_manager.py +621 -0
- claude_mpm/services/agents/deployment/agent_template_builder.py +3 -2
- claude_mpm/services/agents/deployment/multi_source_deployment_service.py +110 -3
- claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +518 -55
- claude_mpm/services/agents/git_source_manager.py +20 -0
- claude_mpm/services/agents/sources/git_source_sync_service.py +45 -6
- claude_mpm/services/agents/toolchain_detector.py +6 -5
- claude_mpm/services/analysis/__init__.py +35 -0
- claude_mpm/services/analysis/clone_detector.py +1030 -0
- claude_mpm/services/analysis/postmortem_reporter.py +474 -0
- claude_mpm/services/analysis/postmortem_service.py +765 -0
- claude_mpm/services/command_deployment_service.py +106 -5
- claude_mpm/services/core/base.py +7 -2
- claude_mpm/services/diagnostics/checks/mcp_services_check.py +7 -15
- claude_mpm/services/event_bus/config.py +3 -1
- claude_mpm/services/git/git_operations_service.py +8 -8
- claude_mpm/services/mcp_config_manager.py +75 -145
- claude_mpm/services/mcp_service_verifier.py +6 -3
- claude_mpm/services/monitor/daemon.py +37 -10
- claude_mpm/services/monitor/daemon_manager.py +134 -21
- claude_mpm/services/monitor/server.py +225 -19
- claude_mpm/services/project/project_organizer.py +4 -0
- claude_mpm/services/runner_configuration_service.py +16 -3
- claude_mpm/services/session_management_service.py +16 -4
- claude_mpm/services/socketio/event_normalizer.py +15 -1
- claude_mpm/services/socketio/server/core.py +160 -21
- claude_mpm/services/version_control/git_operations.py +103 -0
- claude_mpm/utils/agent_filters.py +261 -0
- claude_mpm/utils/gitignore.py +3 -0
- claude_mpm/utils/migration.py +372 -0
- claude_mpm/utils/progress.py +5 -1
- {claude_mpm-5.0.2.dist-info → claude_mpm-5.4.3.dist-info}/METADATA +69 -84
- {claude_mpm-5.0.2.dist-info → claude_mpm-5.4.3.dist-info}/RECORD +112 -153
- {claude_mpm-5.0.2.dist-info → claude_mpm-5.4.3.dist-info}/entry_points.txt +0 -2
- claude_mpm/dashboard/analysis_runner.py +0 -455
- claude_mpm/dashboard/index.html +0 -13
- claude_mpm/dashboard/open_dashboard.py +0 -66
- claude_mpm/dashboard/static/css/activity.css +0 -1958
- claude_mpm/dashboard/static/css/connection-status.css +0 -370
- claude_mpm/dashboard/static/css/dashboard.css +0 -4701
- claude_mpm/dashboard/static/js/components/activity-tree.js +0 -1871
- claude_mpm/dashboard/static/js/components/agent-hierarchy.js +0 -777
- claude_mpm/dashboard/static/js/components/agent-inference.js +0 -956
- claude_mpm/dashboard/static/js/components/build-tracker.js +0 -333
- claude_mpm/dashboard/static/js/components/code-simple.js +0 -857
- claude_mpm/dashboard/static/js/components/connection-debug.js +0 -654
- claude_mpm/dashboard/static/js/components/diff-viewer.js +0 -891
- claude_mpm/dashboard/static/js/components/event-processor.js +0 -542
- claude_mpm/dashboard/static/js/components/event-viewer.js +0 -1155
- claude_mpm/dashboard/static/js/components/export-manager.js +0 -368
- claude_mpm/dashboard/static/js/components/file-change-tracker.js +0 -443
- claude_mpm/dashboard/static/js/components/file-change-viewer.js +0 -690
- claude_mpm/dashboard/static/js/components/file-tool-tracker.js +0 -724
- claude_mpm/dashboard/static/js/components/file-viewer.js +0 -580
- claude_mpm/dashboard/static/js/components/hud-library-loader.js +0 -211
- claude_mpm/dashboard/static/js/components/hud-manager.js +0 -671
- claude_mpm/dashboard/static/js/components/hud-visualizer.js +0 -1718
- claude_mpm/dashboard/static/js/components/module-viewer.js +0 -2764
- claude_mpm/dashboard/static/js/components/session-manager.js +0 -579
- claude_mpm/dashboard/static/js/components/socket-manager.js +0 -368
- claude_mpm/dashboard/static/js/components/ui-state-manager.js +0 -749
- claude_mpm/dashboard/static/js/components/unified-data-viewer.js +0 -1824
- claude_mpm/dashboard/static/js/components/working-directory.js +0 -920
- claude_mpm/dashboard/static/js/connection-manager.js +0 -536
- claude_mpm/dashboard/static/js/dashboard.js +0 -1914
- claude_mpm/dashboard/static/js/extension-error-handler.js +0 -164
- claude_mpm/dashboard/static/js/socket-client.js +0 -1474
- claude_mpm/dashboard/static/js/tab-isolation-fix.js +0 -185
- claude_mpm/dashboard/static/socket.io.min.js +0 -7
- claude_mpm/dashboard/static/socket.io.v4.8.1.backup.js +0 -7
- claude_mpm/dashboard/templates/code_simple.html +0 -153
- claude_mpm/dashboard/templates/index.html +0 -606
- claude_mpm/dashboard/test_dashboard.html +0 -372
- claude_mpm/scripts/mcp_server.py +0 -75
- claude_mpm/scripts/mcp_wrapper.py +0 -39
- claude_mpm/services/mcp_gateway/__init__.py +0 -159
- claude_mpm/services/mcp_gateway/auto_configure.py +0 -369
- claude_mpm/services/mcp_gateway/config/__init__.py +0 -17
- claude_mpm/services/mcp_gateway/config/config_loader.py +0 -296
- claude_mpm/services/mcp_gateway/config/config_schema.py +0 -243
- claude_mpm/services/mcp_gateway/config/configuration.py +0 -429
- claude_mpm/services/mcp_gateway/core/__init__.py +0 -43
- claude_mpm/services/mcp_gateway/core/base.py +0 -312
- claude_mpm/services/mcp_gateway/core/exceptions.py +0 -253
- claude_mpm/services/mcp_gateway/core/interfaces.py +0 -443
- claude_mpm/services/mcp_gateway/core/process_pool.py +0 -971
- claude_mpm/services/mcp_gateway/core/singleton_manager.py +0 -315
- claude_mpm/services/mcp_gateway/core/startup_verification.py +0 -316
- claude_mpm/services/mcp_gateway/main.py +0 -589
- claude_mpm/services/mcp_gateway/registry/__init__.py +0 -12
- claude_mpm/services/mcp_gateway/registry/service_registry.py +0 -412
- claude_mpm/services/mcp_gateway/registry/tool_registry.py +0 -489
- claude_mpm/services/mcp_gateway/server/__init__.py +0 -15
- claude_mpm/services/mcp_gateway/server/mcp_gateway.py +0 -414
- claude_mpm/services/mcp_gateway/server/stdio_handler.py +0 -372
- claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -712
- claude_mpm/services/mcp_gateway/tools/__init__.py +0 -36
- claude_mpm/services/mcp_gateway/tools/base_adapter.py +0 -485
- claude_mpm/services/mcp_gateway/tools/document_summarizer.py +0 -789
- claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +0 -654
- claude_mpm/services/mcp_gateway/tools/health_check_tool.py +0 -456
- claude_mpm/services/mcp_gateway/tools/hello_world.py +0 -551
- claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +0 -555
- claude_mpm/services/mcp_gateway/utils/__init__.py +0 -14
- claude_mpm/services/mcp_gateway/utils/package_version_checker.py +0 -160
- claude_mpm/services/mcp_gateway/utils/update_preferences.py +0 -170
- /claude_mpm/agents/{OUTPUT_STYLE.md → CLAUDE_MPM_OUTPUT_STYLE.md} +0 -0
- {claude_mpm-5.0.2.dist-info → claude_mpm-5.4.3.dist-info}/WHEEL +0 -0
- {claude_mpm-5.0.2.dist-info → claude_mpm-5.4.3.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-5.0.2.dist-info → claude_mpm-5.4.3.dist-info}/top_level.txt +0 -0
|
@@ -339,9 +339,29 @@ class GitSourceManager:
|
|
|
339
339
|
|
|
340
340
|
# Walk cache directory structure
|
|
341
341
|
logger.debug(f"[DEBUG] Walking cache root: {self.cache_root}")
|
|
342
|
+
|
|
343
|
+
# Known legacy category directories to skip (flat cache structure)
|
|
344
|
+
LEGACY_CATEGORIES = {
|
|
345
|
+
"universal",
|
|
346
|
+
"engineer",
|
|
347
|
+
"ops",
|
|
348
|
+
"qa",
|
|
349
|
+
"security",
|
|
350
|
+
"documentation",
|
|
351
|
+
"claude-mpm",
|
|
352
|
+
}
|
|
353
|
+
|
|
342
354
|
for owner_dir in self.cache_root.iterdir():
|
|
343
355
|
if not owner_dir.is_dir():
|
|
344
356
|
continue
|
|
357
|
+
|
|
358
|
+
# Skip legacy category directories (they're not GitHub owners)
|
|
359
|
+
if owner_dir.name.lower() in LEGACY_CATEGORIES:
|
|
360
|
+
logger.debug(
|
|
361
|
+
f"[DEBUG] Skipping legacy category directory: {owner_dir.name}"
|
|
362
|
+
)
|
|
363
|
+
continue
|
|
364
|
+
|
|
345
365
|
logger.debug(f"[DEBUG] Processing owner_dir: {owner_dir.name}")
|
|
346
366
|
|
|
347
367
|
for repo_dir in owner_dir.iterdir():
|
|
@@ -188,10 +188,10 @@ class GitSourceSyncService:
|
|
|
188
188
|
|
|
189
189
|
Args:
|
|
190
190
|
source_url: Base URL for raw files (without trailing slash)
|
|
191
|
-
cache_dir: Local cache directory (defaults to ~/.claude-mpm/cache/agents/)
|
|
191
|
+
cache_dir: Local cache directory (defaults to ~/.claude-mpm/cache/remote-agents/)
|
|
192
192
|
source_id: Unique identifier for this source (for multi-source support)
|
|
193
193
|
|
|
194
|
-
Design Decision: Cache to ~/.claude-mpm/cache/agents/ (
|
|
194
|
+
Design Decision: Cache to ~/.claude-mpm/cache/remote-agents/ (canonical location)
|
|
195
195
|
|
|
196
196
|
Rationale: Separates cached repository structure from deployed agents.
|
|
197
197
|
This allows preserving nested directory structure in cache while
|
|
@@ -207,13 +207,13 @@ class GitSourceSyncService:
|
|
|
207
207
|
self.source_url = source_url.rstrip("/")
|
|
208
208
|
self.source_id = source_id
|
|
209
209
|
|
|
210
|
-
# Setup cache directory (
|
|
210
|
+
# Setup cache directory (canonical: ~/.claude-mpm/cache/remote-agents/)
|
|
211
211
|
if cache_dir:
|
|
212
212
|
self.cache_dir = Path(cache_dir)
|
|
213
213
|
else:
|
|
214
|
-
# Default to ~/.claude-mpm/cache/agents/ (
|
|
214
|
+
# Default to ~/.claude-mpm/cache/remote-agents/ (canonical cache location)
|
|
215
215
|
home = Path.home()
|
|
216
|
-
self.cache_dir = home / ".claude-mpm" / "cache" / "agents"
|
|
216
|
+
self.cache_dir = home / ".claude-mpm" / "cache" / "remote-agents"
|
|
217
217
|
|
|
218
218
|
self.cache_dir.mkdir(parents=True, exist_ok=True)
|
|
219
219
|
|
|
@@ -237,6 +237,11 @@ class GitSourceSyncService:
|
|
|
237
237
|
if etag_cache_file.exists():
|
|
238
238
|
self._migrate_etag_cache(etag_cache_file)
|
|
239
239
|
|
|
240
|
+
# NEW: Initialize git manager for cache (Phase 1 integration)
|
|
241
|
+
from claude_mpm.services.agents.cache_git_manager import CacheGitManager
|
|
242
|
+
|
|
243
|
+
self.git_manager = CacheGitManager(self.cache_dir)
|
|
244
|
+
|
|
240
245
|
def sync_agents(
|
|
241
246
|
self,
|
|
242
247
|
force_refresh: bool = False,
|
|
@@ -273,6 +278,33 @@ class GitSourceSyncService:
|
|
|
273
278
|
|
|
274
279
|
start_time = time.time()
|
|
275
280
|
|
|
281
|
+
# NEW: Pre-sync git operations (Phase 1 integration)
|
|
282
|
+
if self.git_manager.is_git_repo():
|
|
283
|
+
logger.debug("Cache is a git repository, checking for updates...")
|
|
284
|
+
|
|
285
|
+
# Warn about uncommitted changes
|
|
286
|
+
if self.git_manager.has_uncommitted_changes():
|
|
287
|
+
uncommitted_count = len(
|
|
288
|
+
self.git_manager.get_status().get("uncommitted", [])
|
|
289
|
+
)
|
|
290
|
+
logger.warning(
|
|
291
|
+
f"Cache has {uncommitted_count} uncommitted change(s). "
|
|
292
|
+
"These will be preserved, but consider committing them."
|
|
293
|
+
)
|
|
294
|
+
|
|
295
|
+
# Pull latest if online (non-blocking)
|
|
296
|
+
try:
|
|
297
|
+
success, msg = self.git_manager.pull_latest()
|
|
298
|
+
if success:
|
|
299
|
+
logger.info(f"✅ Git pull: {msg}")
|
|
300
|
+
else:
|
|
301
|
+
logger.warning(f"⚠️ Git pull failed: {msg}")
|
|
302
|
+
logger.info("Continuing with HTTP sync as fallback")
|
|
303
|
+
except Exception as e:
|
|
304
|
+
logger.warning(f"Git pull error (continuing with HTTP sync): {e}")
|
|
305
|
+
else:
|
|
306
|
+
logger.debug("Cache is not a git repository, skipping git operations")
|
|
307
|
+
|
|
276
308
|
results = {
|
|
277
309
|
"synced": [],
|
|
278
310
|
"cached": [],
|
|
@@ -819,6 +851,12 @@ class GitSourceSyncService:
|
|
|
819
851
|
if base_path and not path.startswith(base_path + "/"):
|
|
820
852
|
continue
|
|
821
853
|
|
|
854
|
+
# Exclude build/dist directories (prevents double-counting)
|
|
855
|
+
# e.g., both "agents/engineer.md" and "dist/agents/engineer.md"
|
|
856
|
+
path_parts = path.split("/")
|
|
857
|
+
if any(excluded in path_parts for excluded in ["dist", "build", ".cache"]):
|
|
858
|
+
continue
|
|
859
|
+
|
|
822
860
|
# Remove base_path prefix for relative paths
|
|
823
861
|
if base_path:
|
|
824
862
|
relative_path = path[len(base_path) + 1 :]
|
|
@@ -939,7 +977,8 @@ class GitSourceSyncService:
|
|
|
939
977
|
"""
|
|
940
978
|
import shutil
|
|
941
979
|
|
|
942
|
-
|
|
980
|
+
# Deploy to .claude/agents/ where Claude Code expects them
|
|
981
|
+
deployment_dir = project_dir / ".claude" / "agents"
|
|
943
982
|
deployment_dir.mkdir(parents=True, exist_ok=True)
|
|
944
983
|
|
|
945
984
|
results = {
|
|
@@ -158,12 +158,13 @@ class ToolchainDetector:
|
|
|
158
158
|
"make": ["ops"],
|
|
159
159
|
}
|
|
160
160
|
|
|
161
|
-
# Core agents always included
|
|
161
|
+
# Core agents always included (use exact agent IDs from repository)
|
|
162
162
|
CORE_AGENTS = [
|
|
163
|
-
"qa",
|
|
164
|
-
"research",
|
|
165
|
-
"documentation",
|
|
163
|
+
"qa-agent",
|
|
164
|
+
"research-agent",
|
|
165
|
+
"documentation-agent",
|
|
166
166
|
"ticketing",
|
|
167
|
+
"local-ops-agent",
|
|
167
168
|
]
|
|
168
169
|
|
|
169
170
|
# Directories to exclude from scanning
|
|
@@ -365,7 +366,7 @@ class ToolchainDetector:
|
|
|
365
366
|
"""Map detected toolchain to recommended agents.
|
|
366
367
|
|
|
367
368
|
Combines language-specific, framework-specific, and ops agents with
|
|
368
|
-
core agents (qa, research, documentation, ticketing).
|
|
369
|
+
core agents (qa-agent, research-agent, documentation-agent, ticketing, local-ops-agent).
|
|
369
370
|
|
|
370
371
|
Args:
|
|
371
372
|
toolchain: Detected toolchain dictionary with languages, frameworks, tools
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Analysis services for Claude MPM.
|
|
3
|
+
|
|
4
|
+
Provides postmortem analysis, error improvement suggestions, and code clone detection.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from .clone_detector import (
|
|
8
|
+
CloneDetector,
|
|
9
|
+
CloneReport,
|
|
10
|
+
RefactoringSuggestion,
|
|
11
|
+
SimilarityReport,
|
|
12
|
+
)
|
|
13
|
+
from .postmortem_service import (
|
|
14
|
+
ActionType,
|
|
15
|
+
ErrorAnalysis,
|
|
16
|
+
ErrorCategory,
|
|
17
|
+
ImprovementAction,
|
|
18
|
+
PostmortemReport,
|
|
19
|
+
PostmortemService,
|
|
20
|
+
get_postmortem_service,
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
__all__ = [
|
|
24
|
+
"ActionType",
|
|
25
|
+
"CloneDetector",
|
|
26
|
+
"CloneReport",
|
|
27
|
+
"ErrorAnalysis",
|
|
28
|
+
"ErrorCategory",
|
|
29
|
+
"ImprovementAction",
|
|
30
|
+
"PostmortemReport",
|
|
31
|
+
"PostmortemService",
|
|
32
|
+
"RefactoringSuggestion",
|
|
33
|
+
"SimilarityReport",
|
|
34
|
+
"get_postmortem_service",
|
|
35
|
+
]
|