claude-mpm 5.1.9__py3-none-any.whl → 5.4.14__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.

Files changed (162) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/__init__.py +4 -0
  3. claude_mpm/agents/PM_INSTRUCTIONS.md +85 -0
  4. claude_mpm/agents/agent_loader.py +13 -44
  5. claude_mpm/agents/templates/circuit-breakers.md +138 -1
  6. claude_mpm/cli/__main__.py +4 -0
  7. claude_mpm/cli/commands/agent_state_manager.py +8 -17
  8. claude_mpm/cli/commands/auto_configure.py +210 -25
  9. claude_mpm/cli/commands/config.py +88 -2
  10. claude_mpm/cli/commands/configure.py +1097 -158
  11. claude_mpm/cli/commands/configure_agent_display.py +15 -6
  12. claude_mpm/cli/commands/mpm_init/core.py +160 -46
  13. claude_mpm/cli/commands/mpm_init/knowledge_extractor.py +481 -0
  14. claude_mpm/cli/commands/mpm_init/prompts.py +280 -0
  15. claude_mpm/cli/commands/skills.py +21 -2
  16. claude_mpm/cli/commands/summarize.py +413 -0
  17. claude_mpm/cli/executor.py +11 -3
  18. claude_mpm/cli/parsers/base_parser.py +5 -0
  19. claude_mpm/cli/parsers/config_parser.py +153 -83
  20. claude_mpm/cli/parsers/skills_parser.py +3 -2
  21. claude_mpm/cli/startup.py +333 -89
  22. claude_mpm/commands/mpm-config.md +266 -0
  23. claude_mpm/commands/{mpm-ticket-organize.md → mpm-organize.md} +4 -5
  24. claude_mpm/config/agent_sources.py +27 -0
  25. claude_mpm/core/framework/formatters/content_formatter.py +3 -13
  26. claude_mpm/core/framework/loaders/agent_loader.py +8 -5
  27. claude_mpm/core/framework_loader.py +4 -2
  28. claude_mpm/core/logger.py +13 -0
  29. claude_mpm/core/socketio_pool.py +3 -3
  30. claude_mpm/core/unified_agent_registry.py +5 -15
  31. claude_mpm/hooks/claude_hooks/correlation_manager.py +60 -0
  32. claude_mpm/hooks/claude_hooks/event_handlers.py +206 -78
  33. claude_mpm/hooks/claude_hooks/hook_handler.py +6 -0
  34. claude_mpm/hooks/claude_hooks/installer.py +33 -10
  35. claude_mpm/hooks/claude_hooks/memory_integration.py +26 -9
  36. claude_mpm/hooks/claude_hooks/response_tracking.py +2 -3
  37. claude_mpm/hooks/claude_hooks/services/connection_manager.py +4 -0
  38. claude_mpm/hooks/memory_integration_hook.py +46 -1
  39. claude_mpm/init.py +0 -19
  40. claude_mpm/scripts/claude-hook-handler.sh +58 -18
  41. claude_mpm/scripts/launch_monitor.py +93 -13
  42. claude_mpm/services/agents/agent_recommendation_service.py +278 -0
  43. claude_mpm/services/agents/agent_review_service.py +280 -0
  44. claude_mpm/services/agents/deployment/agent_discovery_service.py +2 -3
  45. claude_mpm/services/agents/deployment/agent_template_builder.py +4 -2
  46. claude_mpm/services/agents/deployment/multi_source_deployment_service.py +78 -9
  47. claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +335 -53
  48. claude_mpm/services/agents/git_source_manager.py +34 -0
  49. claude_mpm/services/agents/loading/base_agent_manager.py +1 -13
  50. claude_mpm/services/agents/sources/git_source_sync_service.py +8 -1
  51. claude_mpm/services/agents/toolchain_detector.py +10 -6
  52. claude_mpm/services/analysis/__init__.py +11 -1
  53. claude_mpm/services/analysis/clone_detector.py +1030 -0
  54. claude_mpm/services/command_deployment_service.py +71 -10
  55. claude_mpm/services/event_bus/config.py +3 -1
  56. claude_mpm/services/git/git_operations_service.py +93 -8
  57. claude_mpm/services/monitor/daemon.py +9 -2
  58. claude_mpm/services/monitor/daemon_manager.py +39 -3
  59. claude_mpm/services/monitor/server.py +225 -19
  60. claude_mpm/services/self_upgrade_service.py +120 -12
  61. claude_mpm/services/skills/__init__.py +3 -0
  62. claude_mpm/services/skills/git_skill_source_manager.py +32 -2
  63. claude_mpm/services/skills/selective_skill_deployer.py +230 -0
  64. claude_mpm/services/skills/skill_to_agent_mapper.py +406 -0
  65. claude_mpm/services/skills_deployer.py +64 -3
  66. claude_mpm/services/socketio/event_normalizer.py +15 -1
  67. claude_mpm/services/socketio/server/core.py +160 -21
  68. claude_mpm/services/version_control/git_operations.py +103 -0
  69. claude_mpm/utils/agent_filters.py +17 -44
  70. {claude_mpm-5.1.9.dist-info → claude_mpm-5.4.14.dist-info}/METADATA +47 -84
  71. {claude_mpm-5.1.9.dist-info → claude_mpm-5.4.14.dist-info}/RECORD +76 -150
  72. claude_mpm-5.4.14.dist-info/entry_points.txt +5 -0
  73. claude_mpm-5.4.14.dist-info/licenses/LICENSE +94 -0
  74. claude_mpm-5.4.14.dist-info/licenses/LICENSE-FAQ.md +153 -0
  75. claude_mpm/agents/BASE_AGENT_TEMPLATE.md +0 -292
  76. claude_mpm/agents/BASE_DOCUMENTATION.md +0 -53
  77. claude_mpm/agents/BASE_ENGINEER.md +0 -658
  78. claude_mpm/agents/BASE_OPS.md +0 -219
  79. claude_mpm/agents/BASE_PM.md +0 -480
  80. claude_mpm/agents/BASE_PROMPT_ENGINEER.md +0 -787
  81. claude_mpm/agents/BASE_QA.md +0 -167
  82. claude_mpm/agents/BASE_RESEARCH.md +0 -53
  83. claude_mpm/agents/base_agent.json +0 -31
  84. claude_mpm/agents/base_agent_loader.py +0 -601
  85. claude_mpm/cli/ticket_cli.py +0 -35
  86. claude_mpm/commands/mpm-config-view.md +0 -150
  87. claude_mpm/dashboard/analysis_runner.py +0 -455
  88. claude_mpm/dashboard/index.html +0 -13
  89. claude_mpm/dashboard/open_dashboard.py +0 -66
  90. claude_mpm/dashboard/static/css/activity.css +0 -1958
  91. claude_mpm/dashboard/static/css/connection-status.css +0 -370
  92. claude_mpm/dashboard/static/css/dashboard.css +0 -4701
  93. claude_mpm/dashboard/static/js/components/activity-tree.js +0 -1871
  94. claude_mpm/dashboard/static/js/components/agent-hierarchy.js +0 -777
  95. claude_mpm/dashboard/static/js/components/agent-inference.js +0 -956
  96. claude_mpm/dashboard/static/js/components/build-tracker.js +0 -333
  97. claude_mpm/dashboard/static/js/components/code-simple.js +0 -857
  98. claude_mpm/dashboard/static/js/components/connection-debug.js +0 -654
  99. claude_mpm/dashboard/static/js/components/diff-viewer.js +0 -891
  100. claude_mpm/dashboard/static/js/components/event-processor.js +0 -542
  101. claude_mpm/dashboard/static/js/components/event-viewer.js +0 -1155
  102. claude_mpm/dashboard/static/js/components/export-manager.js +0 -368
  103. claude_mpm/dashboard/static/js/components/file-change-tracker.js +0 -443
  104. claude_mpm/dashboard/static/js/components/file-change-viewer.js +0 -690
  105. claude_mpm/dashboard/static/js/components/file-tool-tracker.js +0 -724
  106. claude_mpm/dashboard/static/js/components/file-viewer.js +0 -580
  107. claude_mpm/dashboard/static/js/components/hud-library-loader.js +0 -211
  108. claude_mpm/dashboard/static/js/components/hud-manager.js +0 -671
  109. claude_mpm/dashboard/static/js/components/hud-visualizer.js +0 -1718
  110. claude_mpm/dashboard/static/js/components/module-viewer.js +0 -2764
  111. claude_mpm/dashboard/static/js/components/session-manager.js +0 -579
  112. claude_mpm/dashboard/static/js/components/socket-manager.js +0 -368
  113. claude_mpm/dashboard/static/js/components/ui-state-manager.js +0 -749
  114. claude_mpm/dashboard/static/js/components/unified-data-viewer.js +0 -1824
  115. claude_mpm/dashboard/static/js/components/working-directory.js +0 -920
  116. claude_mpm/dashboard/static/js/connection-manager.js +0 -536
  117. claude_mpm/dashboard/static/js/dashboard.js +0 -1914
  118. claude_mpm/dashboard/static/js/extension-error-handler.js +0 -164
  119. claude_mpm/dashboard/static/js/socket-client.js +0 -1474
  120. claude_mpm/dashboard/static/js/tab-isolation-fix.js +0 -185
  121. claude_mpm/dashboard/static/socket.io.min.js +0 -7
  122. claude_mpm/dashboard/static/socket.io.v4.8.1.backup.js +0 -7
  123. claude_mpm/dashboard/templates/code_simple.html +0 -153
  124. claude_mpm/dashboard/templates/index.html +0 -606
  125. claude_mpm/dashboard/test_dashboard.html +0 -372
  126. claude_mpm/scripts/mcp_server.py +0 -75
  127. claude_mpm/scripts/mcp_wrapper.py +0 -39
  128. claude_mpm/services/mcp_gateway/__init__.py +0 -159
  129. claude_mpm/services/mcp_gateway/auto_configure.py +0 -369
  130. claude_mpm/services/mcp_gateway/config/__init__.py +0 -17
  131. claude_mpm/services/mcp_gateway/config/config_loader.py +0 -296
  132. claude_mpm/services/mcp_gateway/config/config_schema.py +0 -243
  133. claude_mpm/services/mcp_gateway/config/configuration.py +0 -429
  134. claude_mpm/services/mcp_gateway/core/__init__.py +0 -43
  135. claude_mpm/services/mcp_gateway/core/base.py +0 -312
  136. claude_mpm/services/mcp_gateway/core/exceptions.py +0 -253
  137. claude_mpm/services/mcp_gateway/core/interfaces.py +0 -443
  138. claude_mpm/services/mcp_gateway/core/process_pool.py +0 -977
  139. claude_mpm/services/mcp_gateway/core/singleton_manager.py +0 -315
  140. claude_mpm/services/mcp_gateway/core/startup_verification.py +0 -316
  141. claude_mpm/services/mcp_gateway/main.py +0 -589
  142. claude_mpm/services/mcp_gateway/registry/__init__.py +0 -12
  143. claude_mpm/services/mcp_gateway/registry/service_registry.py +0 -412
  144. claude_mpm/services/mcp_gateway/registry/tool_registry.py +0 -489
  145. claude_mpm/services/mcp_gateway/server/__init__.py +0 -15
  146. claude_mpm/services/mcp_gateway/server/mcp_gateway.py +0 -414
  147. claude_mpm/services/mcp_gateway/server/stdio_handler.py +0 -372
  148. claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -712
  149. claude_mpm/services/mcp_gateway/tools/__init__.py +0 -36
  150. claude_mpm/services/mcp_gateway/tools/base_adapter.py +0 -485
  151. claude_mpm/services/mcp_gateway/tools/document_summarizer.py +0 -789
  152. claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +0 -654
  153. claude_mpm/services/mcp_gateway/tools/health_check_tool.py +0 -456
  154. claude_mpm/services/mcp_gateway/tools/hello_world.py +0 -551
  155. claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +0 -555
  156. claude_mpm/services/mcp_gateway/utils/__init__.py +0 -14
  157. claude_mpm/services/mcp_gateway/utils/package_version_checker.py +0 -160
  158. claude_mpm/services/mcp_gateway/utils/update_preferences.py +0 -170
  159. claude_mpm-5.1.9.dist-info/entry_points.txt +0 -10
  160. claude_mpm-5.1.9.dist-info/licenses/LICENSE +0 -21
  161. {claude_mpm-5.1.9.dist-info → claude_mpm-5.4.14.dist-info}/WHEEL +0 -0
  162. {claude_mpm-5.1.9.dist-info → claude_mpm-5.4.14.dist-info}/top_level.txt +0 -0
@@ -1,443 +0,0 @@
1
- """
2
- MCP Gateway Interface Definitions
3
- ==================================
4
-
5
- This module defines the core interfaces for the MCP Gateway service,
6
- establishing contracts for dependency injection and service orchestration.
7
-
8
- Part of ISS-0034: Infrastructure Setup - MCP Gateway Project Foundation
9
- """
10
-
11
- from abc import ABC, abstractmethod
12
- from dataclasses import dataclass
13
- from pathlib import Path
14
- from typing import Any, Callable, Dict, List, Optional
15
-
16
-
17
- # Tool-related data structures
18
- @dataclass
19
- class MCPToolDefinition:
20
- """Definition of an MCP tool."""
21
-
22
- name: str
23
- description: str
24
- input_schema: Dict[str, Any]
25
- output_schema: Optional[Dict[str, Any]] = None
26
- version: str = "1.0.0"
27
- metadata: Optional[Dict[str, Any]] = None
28
-
29
-
30
- @dataclass
31
- class MCPToolInvocation:
32
- """Represents a tool invocation request."""
33
-
34
- tool_name: str
35
- parameters: Dict[str, Any]
36
- context: Optional[Dict[str, Any]] = None
37
- timeout: Optional[float] = None
38
- request_id: Optional[str] = None
39
-
40
-
41
- @dataclass
42
- class MCPToolResult:
43
- """Result from a tool invocation."""
44
-
45
- success: bool
46
- data: Optional[Any] = None
47
- error: Optional[str] = None
48
- metadata: Optional[Dict[str, Any]] = None
49
- execution_time: Optional[float] = None
50
-
51
-
52
- # Core MCP interfaces
53
- class IMCPConfiguration(ABC):
54
- """
55
- Interface for MCP configuration management.
56
-
57
- Handles loading, validation, and access to MCP Gateway configuration.
58
- """
59
-
60
- @abstractmethod
61
- def load_config(self, config_path: Path) -> bool:
62
- """
63
- Load configuration from a file.
64
-
65
- Args:
66
- config_path: Path to configuration file
67
-
68
- Returns:
69
- True if configuration loaded successfully
70
- """
71
-
72
- @abstractmethod
73
- def get(self, key: str, default: Any = None) -> Any:
74
- """
75
- Get configuration value by key.
76
-
77
- Args:
78
- key: Configuration key (supports dot notation)
79
- default: Default value if key not found
80
-
81
- Returns:
82
- Configuration value or default
83
- """
84
-
85
- @abstractmethod
86
- def set(self, key: str, value: Any) -> None:
87
- """
88
- Set configuration value.
89
-
90
- Args:
91
- key: Configuration key (supports dot notation)
92
- value: Configuration value
93
- """
94
-
95
- @abstractmethod
96
- def validate(self) -> bool:
97
- """
98
- Validate the current configuration.
99
-
100
- Returns:
101
- True if configuration is valid
102
- """
103
-
104
- @abstractmethod
105
- def get_server_config(self) -> Dict[str, Any]:
106
- """
107
- Get MCP server configuration.
108
-
109
- Returns:
110
- Server configuration dictionary
111
- """
112
-
113
- @abstractmethod
114
- def get_tools_config(self) -> Dict[str, Any]:
115
- """
116
- Get tools configuration.
117
-
118
- Returns:
119
- Tools configuration dictionary
120
- """
121
-
122
-
123
- class IMCPToolAdapter(ABC):
124
- """
125
- Interface for MCP tool adapters.
126
-
127
- Tool adapters wrap external tools to make them MCP-compatible.
128
- """
129
-
130
- @abstractmethod
131
- def get_definition(self) -> MCPToolDefinition:
132
- """
133
- Get the tool definition.
134
-
135
- Returns:
136
- Tool definition with schema and metadata
137
- """
138
-
139
- @abstractmethod
140
- async def invoke(self, invocation: MCPToolInvocation) -> MCPToolResult:
141
- """
142
- Invoke the tool with given parameters.
143
-
144
- Args:
145
- invocation: Tool invocation request
146
-
147
- Returns:
148
- Tool execution result
149
- """
150
-
151
- @abstractmethod
152
- def validate_parameters(self, parameters: Dict[str, Any]) -> bool:
153
- """
154
- Validate tool parameters against schema.
155
-
156
- Args:
157
- parameters: Parameters to validate
158
-
159
- Returns:
160
- True if parameters are valid
161
- """
162
-
163
- @abstractmethod
164
- async def initialize(self) -> bool:
165
- """
166
- Initialize the tool adapter.
167
-
168
- Returns:
169
- True if initialization successful
170
- """
171
-
172
- @abstractmethod
173
- async def shutdown(self) -> None:
174
- """
175
- Shutdown the tool adapter and clean up resources.
176
- """
177
-
178
-
179
- class IMCPToolRegistry(ABC):
180
- """
181
- Interface for MCP tool registry.
182
-
183
- Manages registration, discovery, and invocation of MCP tools.
184
- """
185
-
186
- @abstractmethod
187
- def register_tool(self, adapter: IMCPToolAdapter) -> bool:
188
- """
189
- Register a tool adapter.
190
-
191
- Args:
192
- adapter: Tool adapter to register
193
-
194
- Returns:
195
- True if registration successful
196
- """
197
-
198
- @abstractmethod
199
- def unregister_tool(self, tool_name: str) -> bool:
200
- """
201
- Unregister a tool by name.
202
-
203
- Args:
204
- tool_name: Name of tool to unregister
205
-
206
- Returns:
207
- True if unregistration successful
208
- """
209
-
210
- @abstractmethod
211
- def get_tool(self, tool_name: str) -> Optional[IMCPToolAdapter]:
212
- """
213
- Get a tool adapter by name.
214
-
215
- Args:
216
- tool_name: Name of the tool
217
-
218
- Returns:
219
- Tool adapter if found, None otherwise
220
- """
221
-
222
- @abstractmethod
223
- def list_tools(self) -> List[MCPToolDefinition]:
224
- """
225
- List all registered tools.
226
-
227
- Returns:
228
- List of tool definitions
229
- """
230
-
231
- @abstractmethod
232
- async def invoke_tool(self, invocation: MCPToolInvocation) -> MCPToolResult:
233
- """
234
- Invoke a tool through the registry.
235
-
236
- Args:
237
- invocation: Tool invocation request
238
-
239
- Returns:
240
- Tool execution result
241
- """
242
-
243
- @abstractmethod
244
- def search_tools(self, query: str) -> List[MCPToolDefinition]:
245
- """
246
- Search for tools by query.
247
-
248
- Args:
249
- query: Search query
250
-
251
- Returns:
252
- List of matching tool definitions
253
- """
254
-
255
-
256
- class IMCPCommunication(ABC):
257
- """
258
- Interface for MCP communication handling.
259
-
260
- Manages stdio-based communication with MCP clients.
261
- """
262
-
263
- @abstractmethod
264
- async def send_message(self, message: Dict[str, Any]) -> None:
265
- """
266
- Send a message to the MCP client.
267
-
268
- Args:
269
- message: Message to send
270
- """
271
-
272
- @abstractmethod
273
- async def receive_message(self) -> Optional[Dict[str, Any]]:
274
- """
275
- Receive a message from the MCP client.
276
-
277
- Returns:
278
- Received message or None if no message available
279
- """
280
-
281
- @abstractmethod
282
- async def send_response(self, request_id: str, result: Any) -> None:
283
- """
284
- Send a response to a request.
285
-
286
- Args:
287
- request_id: ID of the request being responded to
288
- result: Result data
289
- """
290
-
291
- @abstractmethod
292
- async def send_error(self, request_id: str, error: str, code: int = -1) -> None:
293
- """
294
- Send an error response.
295
-
296
- Args:
297
- request_id: ID of the request that caused the error
298
- error: Error message
299
- code: Error code
300
- """
301
-
302
- @abstractmethod
303
- def is_connected(self) -> bool:
304
- """
305
- Check if communication channel is connected.
306
-
307
- Returns:
308
- True if connected
309
- """
310
-
311
-
312
- class IMCPLifecycle(ABC):
313
- """
314
- Interface for MCP service lifecycle management.
315
-
316
- Manages initialization, startup, shutdown, and health monitoring.
317
- """
318
-
319
- @abstractmethod
320
- async def initialize(self) -> bool:
321
- """
322
- Initialize the MCP service.
323
-
324
- Returns:
325
- True if initialization successful
326
- """
327
-
328
- @abstractmethod
329
- async def start(self) -> bool:
330
- """
331
- Start the MCP service.
332
-
333
- Returns:
334
- True if startup successful
335
- """
336
-
337
- @abstractmethod
338
- async def stop(self) -> None:
339
- """
340
- Stop the MCP service gracefully.
341
- """
342
-
343
- @abstractmethod
344
- async def restart(self) -> bool:
345
- """
346
- Restart the MCP service.
347
-
348
- Returns:
349
- True if restart successful
350
- """
351
-
352
- @abstractmethod
353
- def get_state(self) -> str:
354
- """
355
- Get current service state.
356
-
357
- Returns:
358
- Service state (e.g., "initialized", "running", "stopped")
359
- """
360
-
361
- @abstractmethod
362
- def is_healthy(self) -> bool:
363
- """
364
- Check if service is healthy.
365
-
366
- Returns:
367
- True if service is healthy
368
- """
369
-
370
- @abstractmethod
371
- def get_health_status(self) -> Dict[str, Any]:
372
- """
373
- Get detailed health status.
374
-
375
- Returns:
376
- Health status information
377
- """
378
-
379
-
380
- class IMCPGateway(IMCPLifecycle):
381
- """
382
- Main interface for MCP gateway implementation.
383
-
384
- Orchestrates tool registry, communication, and request handling.
385
- Acts as a protocol bridge between Claude Code and internal tools.
386
- """
387
-
388
- @abstractmethod
389
- def set_tool_registry(self, registry: IMCPToolRegistry) -> None:
390
- """
391
- Set the tool registry for the server.
392
-
393
- Args:
394
- registry: Tool registry to use
395
- """
396
-
397
- @abstractmethod
398
- def set_communication(self, communication: IMCPCommunication) -> None:
399
- """
400
- Set the communication handler.
401
-
402
- Args:
403
- communication: Communication handler to use
404
- """
405
-
406
- @abstractmethod
407
- async def handle_request(self, request: Dict[str, Any]) -> Dict[str, Any]:
408
- """
409
- Handle an MCP request.
410
-
411
- Args:
412
- request: MCP request message
413
-
414
- Returns:
415
- Response message
416
- """
417
-
418
- @abstractmethod
419
- async def run(self) -> None:
420
- """
421
- Run the MCP gateway main loop.
422
-
423
- This method should handle incoming requests and manage the gateway lifecycle.
424
- """
425
-
426
- @abstractmethod
427
- def register_handler(self, method: str, handler: Callable) -> None:
428
- """
429
- Register a custom request handler.
430
-
431
- Args:
432
- method: Method name to handle
433
- handler: Handler function
434
- """
435
-
436
- @abstractmethod
437
- def get_capabilities(self) -> Dict[str, Any]:
438
- """
439
- Get gateway capabilities.
440
-
441
- Returns:
442
- Dictionary of gateway capabilities
443
- """