claude-mpm 4.5.6__py3-none-any.whl → 4.5.11__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.
Files changed (62) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/__init__.py +20 -5
  3. claude_mpm/agents/BASE_OPS.md +10 -0
  4. claude_mpm/agents/PM_INSTRUCTIONS.md +28 -4
  5. claude_mpm/agents/agent_loader.py +19 -2
  6. claude_mpm/agents/base_agent_loader.py +5 -5
  7. claude_mpm/agents/templates/agent-manager.json +3 -3
  8. claude_mpm/agents/templates/agentic-coder-optimizer.json +3 -3
  9. claude_mpm/agents/templates/api_qa.json +1 -1
  10. claude_mpm/agents/templates/clerk-ops.json +3 -3
  11. claude_mpm/agents/templates/code_analyzer.json +3 -3
  12. claude_mpm/agents/templates/dart_engineer.json +294 -0
  13. claude_mpm/agents/templates/data_engineer.json +3 -3
  14. claude_mpm/agents/templates/documentation.json +2 -2
  15. claude_mpm/agents/templates/engineer.json +2 -2
  16. claude_mpm/agents/templates/gcp_ops_agent.json +2 -2
  17. claude_mpm/agents/templates/imagemagick.json +1 -1
  18. claude_mpm/agents/templates/local_ops_agent.json +363 -49
  19. claude_mpm/agents/templates/memory_manager.json +2 -2
  20. claude_mpm/agents/templates/nextjs_engineer.json +2 -2
  21. claude_mpm/agents/templates/ops.json +2 -2
  22. claude_mpm/agents/templates/php-engineer.json +1 -1
  23. claude_mpm/agents/templates/project_organizer.json +1 -1
  24. claude_mpm/agents/templates/prompt-engineer.json +6 -4
  25. claude_mpm/agents/templates/python_engineer.json +2 -2
  26. claude_mpm/agents/templates/qa.json +1 -1
  27. claude_mpm/agents/templates/react_engineer.json +3 -3
  28. claude_mpm/agents/templates/refactoring_engineer.json +3 -3
  29. claude_mpm/agents/templates/research.json +2 -2
  30. claude_mpm/agents/templates/security.json +2 -2
  31. claude_mpm/agents/templates/ticketing.json +2 -2
  32. claude_mpm/agents/templates/typescript_engineer.json +2 -2
  33. claude_mpm/agents/templates/vercel_ops_agent.json +2 -2
  34. claude_mpm/agents/templates/version_control.json +2 -2
  35. claude_mpm/agents/templates/web_qa.json +6 -6
  36. claude_mpm/agents/templates/web_ui.json +3 -3
  37. claude_mpm/cli/__init__.py +49 -19
  38. claude_mpm/cli/commands/configure.py +591 -7
  39. claude_mpm/cli/parsers/configure_parser.py +5 -0
  40. claude_mpm/core/__init__.py +53 -17
  41. claude_mpm/core/config.py +1 -1
  42. claude_mpm/core/log_manager.py +7 -0
  43. claude_mpm/hooks/claude_hooks/response_tracking.py +16 -11
  44. claude_mpm/hooks/claude_hooks/services/connection_manager_http.py +9 -11
  45. claude_mpm/services/__init__.py +140 -156
  46. claude_mpm/services/agents/deployment/deployment_config_loader.py +21 -0
  47. claude_mpm/services/agents/loading/base_agent_manager.py +12 -2
  48. claude_mpm/services/async_session_logger.py +112 -96
  49. claude_mpm/services/claude_session_logger.py +63 -61
  50. claude_mpm/services/mcp_config_manager.py +328 -38
  51. claude_mpm/services/mcp_gateway/__init__.py +98 -94
  52. claude_mpm/services/monitor/event_emitter.py +1 -1
  53. claude_mpm/services/orphan_detection.py +791 -0
  54. claude_mpm/services/project_port_allocator.py +601 -0
  55. claude_mpm/services/response_tracker.py +17 -6
  56. claude_mpm/services/session_manager.py +176 -0
  57. {claude_mpm-4.5.6.dist-info → claude_mpm-4.5.11.dist-info}/METADATA +1 -1
  58. {claude_mpm-4.5.6.dist-info → claude_mpm-4.5.11.dist-info}/RECORD +62 -58
  59. {claude_mpm-4.5.6.dist-info → claude_mpm-4.5.11.dist-info}/WHEEL +0 -0
  60. {claude_mpm-4.5.6.dist-info → claude_mpm-4.5.11.dist-info}/entry_points.txt +0 -0
  61. {claude_mpm-4.5.6.dist-info → claude_mpm-4.5.11.dist-info}/licenses/LICENSE +0 -0
  62. {claude_mpm-4.5.6.dist-info → claude_mpm-4.5.11.dist-info}/top_level.txt +0 -0
@@ -26,100 +26,104 @@ __version__ = "0.1.0"
26
26
 
27
27
 
28
28
  # Lazy imports to prevent circular dependencies and improve startup performance
29
- def __getattr__(name): # noqa: PLR0911
30
- """Lazy import mechanism for MCP Gateway components."""
31
-
32
- # Core interfaces and base classes
33
- if name == "IMCPGateway":
34
- from .core.interfaces import IMCPGateway
35
-
36
- return IMCPGateway
37
- if name == "IMCPToolRegistry":
38
- from .core.interfaces import IMCPToolRegistry
39
-
40
- return IMCPToolRegistry
41
- if name == "IMCPConfiguration":
42
- from .core.interfaces import IMCPConfiguration
43
-
44
- return IMCPConfiguration
45
- if name == "IMCPToolAdapter":
46
- from .core.interfaces import IMCPToolAdapter
47
-
48
- return IMCPToolAdapter
49
- if name == "BaseMCPService":
50
- from .core.base import BaseMCPService
51
-
52
- return BaseMCPService
53
-
54
- # Gateway implementations
55
- if name == "MCPGateway":
56
- from .server.mcp_gateway import MCPGateway
57
-
58
- return MCPGateway
59
- if name == "StdioHandler":
60
- from .server.stdio_handler import StdioHandler
61
-
62
- return StdioHandler
63
- if name == "AlternativeStdioHandler":
64
- from .server.stdio_handler import AlternativeStdioHandler
65
-
66
- return AlternativeStdioHandler
67
-
68
- # Tool registry and adapters
69
- if name == "ToolRegistry":
70
- from .registry.tool_registry import ToolRegistry
71
-
72
- return ToolRegistry
73
- if name == "BaseToolAdapter":
74
- from .tools.base_adapter import BaseToolAdapter
75
-
76
- return BaseToolAdapter
77
- if name == "EchoToolAdapter":
78
- from .tools.base_adapter import EchoToolAdapter
79
-
80
- return EchoToolAdapter
81
- if name == "CalculatorToolAdapter":
82
- from .tools.base_adapter import CalculatorToolAdapter
83
-
84
- return CalculatorToolAdapter
85
- if name == "SystemInfoToolAdapter":
86
- from .tools.base_adapter import SystemInfoToolAdapter
87
-
88
- return SystemInfoToolAdapter
89
-
90
- # Configuration management
91
- if name == "MCPConfiguration":
92
- from .config.configuration import MCPConfiguration
93
-
94
- return MCPConfiguration
95
- if name == "MCPConfigLoader":
96
- from .config.config_loader import MCPConfigLoader
97
-
98
- return MCPConfigLoader
99
-
100
- # Service registry
101
- if name == "MCPServiceRegistry":
102
- from .registry.service_registry import MCPServiceRegistry
103
-
104
- return MCPServiceRegistry
105
-
106
- # Exceptions
107
- if name == "MCPException":
108
- from .core.exceptions import MCPException
109
-
110
- return MCPException
111
- if name == "MCPConfigurationError":
112
- from .core.exceptions import MCPConfigurationError
113
-
114
- return MCPConfigurationError
115
- if name == "MCPToolNotFoundError":
116
- from .core.exceptions import MCPToolNotFoundError
117
-
118
- return MCPToolNotFoundError
119
- if name == "MCPServerError":
120
- from .core.exceptions import MCPServerError
121
-
122
- return MCPServerError
29
+ def __getattr__(name):
30
+ """Lazy import mechanism for MCP Gateway components using dictionary-based mapping."""
31
+ from importlib import import_module
32
+
33
+ # Dictionary mapping: name -> (module_path, attribute_name)
34
+ _LAZY_IMPORTS = {
35
+ # Core interfaces and base classes
36
+ "IMCPGateway": (
37
+ "claude_mpm.services.mcp_gateway.core.interfaces",
38
+ "IMCPGateway",
39
+ ),
40
+ "IMCPToolRegistry": (
41
+ "claude_mpm.services.mcp_gateway.core.interfaces",
42
+ "IMCPToolRegistry",
43
+ ),
44
+ "IMCPConfiguration": (
45
+ "claude_mpm.services.mcp_gateway.core.interfaces",
46
+ "IMCPConfiguration",
47
+ ),
48
+ "IMCPToolAdapter": (
49
+ "claude_mpm.services.mcp_gateway.core.interfaces",
50
+ "IMCPToolAdapter",
51
+ ),
52
+ "BaseMCPService": (
53
+ "claude_mpm.services.mcp_gateway.core.base",
54
+ "BaseMCPService",
55
+ ),
56
+ # Gateway implementations
57
+ "MCPGateway": (
58
+ "claude_mpm.services.mcp_gateway.server.mcp_gateway",
59
+ "MCPGateway",
60
+ ),
61
+ "StdioHandler": (
62
+ "claude_mpm.services.mcp_gateway.server.stdio_handler",
63
+ "StdioHandler",
64
+ ),
65
+ "AlternativeStdioHandler": (
66
+ "claude_mpm.services.mcp_gateway.server.stdio_handler",
67
+ "AlternativeStdioHandler",
68
+ ),
69
+ # Tool registry and adapters
70
+ "ToolRegistry": (
71
+ "claude_mpm.services.mcp_gateway.registry.tool_registry",
72
+ "ToolRegistry",
73
+ ),
74
+ "BaseToolAdapter": (
75
+ "claude_mpm.services.mcp_gateway.tools.base_adapter",
76
+ "BaseToolAdapter",
77
+ ),
78
+ "EchoToolAdapter": (
79
+ "claude_mpm.services.mcp_gateway.tools.base_adapter",
80
+ "EchoToolAdapter",
81
+ ),
82
+ "CalculatorToolAdapter": (
83
+ "claude_mpm.services.mcp_gateway.tools.base_adapter",
84
+ "CalculatorToolAdapter",
85
+ ),
86
+ "SystemInfoToolAdapter": (
87
+ "claude_mpm.services.mcp_gateway.tools.base_adapter",
88
+ "SystemInfoToolAdapter",
89
+ ),
90
+ # Configuration management
91
+ "MCPConfiguration": (
92
+ "claude_mpm.services.mcp_gateway.config.configuration",
93
+ "MCPConfiguration",
94
+ ),
95
+ "MCPConfigLoader": (
96
+ "claude_mpm.services.mcp_gateway.config.config_loader",
97
+ "MCPConfigLoader",
98
+ ),
99
+ # Service registry
100
+ "MCPServiceRegistry": (
101
+ "claude_mpm.services.mcp_gateway.registry.service_registry",
102
+ "MCPServiceRegistry",
103
+ ),
104
+ # Exceptions
105
+ "MCPException": (
106
+ "claude_mpm.services.mcp_gateway.core.exceptions",
107
+ "MCPException",
108
+ ),
109
+ "MCPConfigurationError": (
110
+ "claude_mpm.services.mcp_gateway.core.exceptions",
111
+ "MCPConfigurationError",
112
+ ),
113
+ "MCPToolNotFoundError": (
114
+ "claude_mpm.services.mcp_gateway.core.exceptions",
115
+ "MCPToolNotFoundError",
116
+ ),
117
+ "MCPServerError": (
118
+ "claude_mpm.services.mcp_gateway.core.exceptions",
119
+ "MCPServerError",
120
+ ),
121
+ }
122
+
123
+ if name in _LAZY_IMPORTS:
124
+ module_path, attr_name = _LAZY_IMPORTS[name]
125
+ module = import_module(module_path)
126
+ return getattr(module, attr_name)
123
127
 
124
128
  raise AttributeError(f"module '{__name__}' has no attribute '{name}'")
125
129
 
@@ -85,7 +85,7 @@ class AsyncEventEmitter:
85
85
  },
86
86
  )
87
87
 
88
- self.logger.info("AsyncEventEmitter initialized with connection pooling")
88
+ self.logger.debug("AsyncEventEmitter initialized with connection pooling")
89
89
 
90
90
  except Exception as e:
91
91
  self.logger.error(f"Error initializing AsyncEventEmitter: {e}")