claude-mpm 5.1.9__py3-none-any.whl → 5.4.22__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 (176) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/__init__.py +4 -0
  3. claude_mpm/agents/CLAUDE_MPM_TEACHER_OUTPUT_STYLE.md +1 -1
  4. claude_mpm/agents/PM_INSTRUCTIONS.md +290 -34
  5. claude_mpm/agents/agent_loader.py +13 -44
  6. claude_mpm/agents/templates/circuit-breakers.md +138 -1
  7. claude_mpm/cli/__main__.py +4 -0
  8. claude_mpm/cli/chrome_devtools_installer.py +175 -0
  9. claude_mpm/cli/commands/agent_state_manager.py +8 -17
  10. claude_mpm/cli/commands/agents.py +0 -31
  11. claude_mpm/cli/commands/auto_configure.py +210 -25
  12. claude_mpm/cli/commands/config.py +88 -2
  13. claude_mpm/cli/commands/configure.py +1097 -158
  14. claude_mpm/cli/commands/configure_agent_display.py +15 -6
  15. claude_mpm/cli/commands/mpm_init/core.py +160 -46
  16. claude_mpm/cli/commands/mpm_init/knowledge_extractor.py +481 -0
  17. claude_mpm/cli/commands/mpm_init/prompts.py +280 -0
  18. claude_mpm/cli/commands/skills.py +214 -189
  19. claude_mpm/cli/commands/summarize.py +413 -0
  20. claude_mpm/cli/executor.py +11 -3
  21. claude_mpm/cli/parsers/agents_parser.py +0 -9
  22. claude_mpm/cli/parsers/auto_configure_parser.py +0 -138
  23. claude_mpm/cli/parsers/base_parser.py +5 -0
  24. claude_mpm/cli/parsers/config_parser.py +153 -83
  25. claude_mpm/cli/parsers/skills_parser.py +3 -2
  26. claude_mpm/cli/startup.py +550 -94
  27. claude_mpm/commands/mpm-config.md +265 -0
  28. claude_mpm/commands/mpm-help.md +14 -95
  29. claude_mpm/commands/mpm-organize.md +500 -0
  30. claude_mpm/config/agent_sources.py +27 -0
  31. claude_mpm/core/framework/formatters/content_formatter.py +3 -13
  32. claude_mpm/core/framework/loaders/agent_loader.py +8 -5
  33. claude_mpm/core/framework_loader.py +4 -2
  34. claude_mpm/core/logger.py +13 -0
  35. claude_mpm/core/socketio_pool.py +3 -3
  36. claude_mpm/core/unified_agent_registry.py +5 -15
  37. claude_mpm/hooks/claude_hooks/correlation_manager.py +60 -0
  38. claude_mpm/hooks/claude_hooks/event_handlers.py +211 -78
  39. claude_mpm/hooks/claude_hooks/hook_handler.py +6 -0
  40. claude_mpm/hooks/claude_hooks/installer.py +33 -10
  41. claude_mpm/hooks/claude_hooks/memory_integration.py +26 -9
  42. claude_mpm/hooks/claude_hooks/response_tracking.py +2 -3
  43. claude_mpm/hooks/claude_hooks/services/connection_manager.py +4 -0
  44. claude_mpm/hooks/memory_integration_hook.py +46 -1
  45. claude_mpm/init.py +0 -19
  46. claude_mpm/scripts/claude-hook-handler.sh +58 -18
  47. claude_mpm/scripts/launch_monitor.py +93 -13
  48. claude_mpm/scripts/start_activity_logging.py +0 -0
  49. claude_mpm/services/agents/agent_recommendation_service.py +278 -0
  50. claude_mpm/services/agents/agent_review_service.py +280 -0
  51. claude_mpm/services/agents/deployment/agent_discovery_service.py +2 -3
  52. claude_mpm/services/agents/deployment/agent_template_builder.py +4 -2
  53. claude_mpm/services/agents/deployment/multi_source_deployment_service.py +78 -9
  54. claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +335 -53
  55. claude_mpm/services/agents/git_source_manager.py +34 -0
  56. claude_mpm/services/agents/loading/base_agent_manager.py +1 -13
  57. claude_mpm/services/agents/sources/git_source_sync_service.py +8 -1
  58. claude_mpm/services/agents/toolchain_detector.py +10 -6
  59. claude_mpm/services/analysis/__init__.py +11 -1
  60. claude_mpm/services/analysis/clone_detector.py +1030 -0
  61. claude_mpm/services/command_deployment_service.py +81 -10
  62. claude_mpm/services/event_bus/config.py +3 -1
  63. claude_mpm/services/git/git_operations_service.py +93 -8
  64. claude_mpm/services/monitor/daemon.py +9 -2
  65. claude_mpm/services/monitor/daemon_manager.py +39 -3
  66. claude_mpm/services/monitor/server.py +225 -19
  67. claude_mpm/services/self_upgrade_service.py +120 -12
  68. claude_mpm/services/skills/__init__.py +3 -0
  69. claude_mpm/services/skills/git_skill_source_manager.py +32 -2
  70. claude_mpm/services/skills/selective_skill_deployer.py +704 -0
  71. claude_mpm/services/skills/skill_to_agent_mapper.py +406 -0
  72. claude_mpm/services/skills_deployer.py +126 -9
  73. claude_mpm/services/socketio/event_normalizer.py +15 -1
  74. claude_mpm/services/socketio/server/core.py +160 -21
  75. claude_mpm/services/version_control/git_operations.py +103 -0
  76. claude_mpm/utils/agent_filters.py +17 -44
  77. {claude_mpm-5.1.9.dist-info → claude_mpm-5.4.22.dist-info}/METADATA +47 -84
  78. {claude_mpm-5.1.9.dist-info → claude_mpm-5.4.22.dist-info}/RECORD +82 -161
  79. claude_mpm-5.4.22.dist-info/entry_points.txt +5 -0
  80. claude_mpm-5.4.22.dist-info/licenses/LICENSE +94 -0
  81. claude_mpm-5.4.22.dist-info/licenses/LICENSE-FAQ.md +153 -0
  82. claude_mpm/agents/BASE_AGENT_TEMPLATE.md +0 -292
  83. claude_mpm/agents/BASE_DOCUMENTATION.md +0 -53
  84. claude_mpm/agents/BASE_ENGINEER.md +0 -658
  85. claude_mpm/agents/BASE_OPS.md +0 -219
  86. claude_mpm/agents/BASE_PM.md +0 -480
  87. claude_mpm/agents/BASE_PROMPT_ENGINEER.md +0 -787
  88. claude_mpm/agents/BASE_QA.md +0 -167
  89. claude_mpm/agents/BASE_RESEARCH.md +0 -53
  90. claude_mpm/agents/base_agent.json +0 -31
  91. claude_mpm/agents/base_agent_loader.py +0 -601
  92. claude_mpm/cli/commands/agents_detect.py +0 -380
  93. claude_mpm/cli/commands/agents_recommend.py +0 -309
  94. claude_mpm/cli/ticket_cli.py +0 -35
  95. claude_mpm/commands/mpm-agents-auto-configure.md +0 -278
  96. claude_mpm/commands/mpm-agents-detect.md +0 -177
  97. claude_mpm/commands/mpm-agents-list.md +0 -131
  98. claude_mpm/commands/mpm-agents-recommend.md +0 -223
  99. claude_mpm/commands/mpm-config-view.md +0 -150
  100. claude_mpm/commands/mpm-ticket-organize.md +0 -304
  101. claude_mpm/dashboard/analysis_runner.py +0 -455
  102. claude_mpm/dashboard/index.html +0 -13
  103. claude_mpm/dashboard/open_dashboard.py +0 -66
  104. claude_mpm/dashboard/static/css/activity.css +0 -1958
  105. claude_mpm/dashboard/static/css/connection-status.css +0 -370
  106. claude_mpm/dashboard/static/css/dashboard.css +0 -4701
  107. claude_mpm/dashboard/static/js/components/activity-tree.js +0 -1871
  108. claude_mpm/dashboard/static/js/components/agent-hierarchy.js +0 -777
  109. claude_mpm/dashboard/static/js/components/agent-inference.js +0 -956
  110. claude_mpm/dashboard/static/js/components/build-tracker.js +0 -333
  111. claude_mpm/dashboard/static/js/components/code-simple.js +0 -857
  112. claude_mpm/dashboard/static/js/components/connection-debug.js +0 -654
  113. claude_mpm/dashboard/static/js/components/diff-viewer.js +0 -891
  114. claude_mpm/dashboard/static/js/components/event-processor.js +0 -542
  115. claude_mpm/dashboard/static/js/components/event-viewer.js +0 -1155
  116. claude_mpm/dashboard/static/js/components/export-manager.js +0 -368
  117. claude_mpm/dashboard/static/js/components/file-change-tracker.js +0 -443
  118. claude_mpm/dashboard/static/js/components/file-change-viewer.js +0 -690
  119. claude_mpm/dashboard/static/js/components/file-tool-tracker.js +0 -724
  120. claude_mpm/dashboard/static/js/components/file-viewer.js +0 -580
  121. claude_mpm/dashboard/static/js/components/hud-library-loader.js +0 -211
  122. claude_mpm/dashboard/static/js/components/hud-manager.js +0 -671
  123. claude_mpm/dashboard/static/js/components/hud-visualizer.js +0 -1718
  124. claude_mpm/dashboard/static/js/components/module-viewer.js +0 -2764
  125. claude_mpm/dashboard/static/js/components/session-manager.js +0 -579
  126. claude_mpm/dashboard/static/js/components/socket-manager.js +0 -368
  127. claude_mpm/dashboard/static/js/components/ui-state-manager.js +0 -749
  128. claude_mpm/dashboard/static/js/components/unified-data-viewer.js +0 -1824
  129. claude_mpm/dashboard/static/js/components/working-directory.js +0 -920
  130. claude_mpm/dashboard/static/js/connection-manager.js +0 -536
  131. claude_mpm/dashboard/static/js/dashboard.js +0 -1914
  132. claude_mpm/dashboard/static/js/extension-error-handler.js +0 -164
  133. claude_mpm/dashboard/static/js/socket-client.js +0 -1474
  134. claude_mpm/dashboard/static/js/tab-isolation-fix.js +0 -185
  135. claude_mpm/dashboard/static/socket.io.min.js +0 -7
  136. claude_mpm/dashboard/static/socket.io.v4.8.1.backup.js +0 -7
  137. claude_mpm/dashboard/templates/code_simple.html +0 -153
  138. claude_mpm/dashboard/templates/index.html +0 -606
  139. claude_mpm/dashboard/test_dashboard.html +0 -372
  140. claude_mpm/scripts/mcp_server.py +0 -75
  141. claude_mpm/scripts/mcp_wrapper.py +0 -39
  142. claude_mpm/services/mcp_gateway/__init__.py +0 -159
  143. claude_mpm/services/mcp_gateway/auto_configure.py +0 -369
  144. claude_mpm/services/mcp_gateway/config/__init__.py +0 -17
  145. claude_mpm/services/mcp_gateway/config/config_loader.py +0 -296
  146. claude_mpm/services/mcp_gateway/config/config_schema.py +0 -243
  147. claude_mpm/services/mcp_gateway/config/configuration.py +0 -429
  148. claude_mpm/services/mcp_gateway/core/__init__.py +0 -43
  149. claude_mpm/services/mcp_gateway/core/base.py +0 -312
  150. claude_mpm/services/mcp_gateway/core/exceptions.py +0 -253
  151. claude_mpm/services/mcp_gateway/core/interfaces.py +0 -443
  152. claude_mpm/services/mcp_gateway/core/process_pool.py +0 -977
  153. claude_mpm/services/mcp_gateway/core/singleton_manager.py +0 -315
  154. claude_mpm/services/mcp_gateway/core/startup_verification.py +0 -316
  155. claude_mpm/services/mcp_gateway/main.py +0 -589
  156. claude_mpm/services/mcp_gateway/registry/__init__.py +0 -12
  157. claude_mpm/services/mcp_gateway/registry/service_registry.py +0 -412
  158. claude_mpm/services/mcp_gateway/registry/tool_registry.py +0 -489
  159. claude_mpm/services/mcp_gateway/server/__init__.py +0 -15
  160. claude_mpm/services/mcp_gateway/server/mcp_gateway.py +0 -414
  161. claude_mpm/services/mcp_gateway/server/stdio_handler.py +0 -372
  162. claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -712
  163. claude_mpm/services/mcp_gateway/tools/__init__.py +0 -36
  164. claude_mpm/services/mcp_gateway/tools/base_adapter.py +0 -485
  165. claude_mpm/services/mcp_gateway/tools/document_summarizer.py +0 -789
  166. claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +0 -654
  167. claude_mpm/services/mcp_gateway/tools/health_check_tool.py +0 -456
  168. claude_mpm/services/mcp_gateway/tools/hello_world.py +0 -551
  169. claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +0 -555
  170. claude_mpm/services/mcp_gateway/utils/__init__.py +0 -14
  171. claude_mpm/services/mcp_gateway/utils/package_version_checker.py +0 -160
  172. claude_mpm/services/mcp_gateway/utils/update_preferences.py +0 -170
  173. claude_mpm-5.1.9.dist-info/entry_points.txt +0 -10
  174. claude_mpm-5.1.9.dist-info/licenses/LICENSE +0 -21
  175. {claude_mpm-5.1.9.dist-info → claude_mpm-5.4.22.dist-info}/WHEEL +0 -0
  176. {claude_mpm-5.1.9.dist-info → claude_mpm-5.4.22.dist-info}/top_level.txt +0 -0
@@ -1,160 +0,0 @@
1
- """
2
- Package Version Checker
3
- =======================
4
-
5
- Checks PyPI packages for updates with caching and timeout support.
6
- Provides non-blocking version checking for MCP tools like kuzu-memory.
7
- """
8
-
9
- import asyncio
10
- import json
11
- from datetime import datetime, timedelta, timezone
12
- from pathlib import Path
13
- from typing import Any, Dict, Optional
14
-
15
- import aiohttp
16
- from packaging import version
17
-
18
- from ....core.logger import get_logger
19
-
20
-
21
- class PackageVersionChecker:
22
- """
23
- Check PyPI packages for updates with caching and timeout.
24
-
25
- WHY: Automatically detect when newer versions of critical packages
26
- (like kuzu-memory) are available to help users stay up-to-date.
27
-
28
- DESIGN DECISIONS:
29
- - Cache results to avoid excessive PyPI API calls
30
- - Non-blocking with timeout to prevent startup delays
31
- - Graceful failure handling (never block system operation)
32
- """
33
-
34
- CACHE_DIR = Path.home() / ".cache" / "claude-mpm" / "version-checks"
35
- DEFAULT_CACHE_TTL = 86400 # 24 hours
36
- PYPI_TIMEOUT = 5 # seconds
37
-
38
- def __init__(self):
39
- """Initialize the version checker with cache directory."""
40
- self.logger = get_logger("PackageVersionChecker")
41
- self.cache_dir = self.CACHE_DIR
42
- self.cache_dir.mkdir(parents=True, exist_ok=True)
43
-
44
- async def check_for_update(
45
- self, package_name: str, current_version: str, cache_ttl: Optional[int] = None
46
- ) -> Optional[Dict[str, Any]]:
47
- """
48
- Check if a package has updates available.
49
-
50
- Args:
51
- package_name: Name of the package on PyPI
52
- current_version: Currently installed version
53
- cache_ttl: Cache time-to-live in seconds (optional)
54
-
55
- Returns:
56
- Dict with update information or None if check fails:
57
- {
58
- "current": "1.0.0",
59
- "latest": "1.1.0",
60
- "update_available": True,
61
- "checked_at": "2025-01-29T12:00:00"
62
- }
63
- """
64
- cache_ttl = cache_ttl or self.DEFAULT_CACHE_TTL
65
-
66
- # Check cache first
67
- cache_file = self.cache_dir / f"{package_name}.json"
68
- cached = self._read_cache(cache_file, cache_ttl)
69
- if cached:
70
- # Update current version in cached data
71
- cached["current"] = current_version
72
- cached["update_available"] = version.parse(
73
- cached["latest"]
74
- ) > version.parse(current_version)
75
- return cached
76
-
77
- # Fetch from PyPI with timeout
78
- try:
79
- latest = await self._fetch_pypi_version(package_name)
80
- if latest:
81
- result = {
82
- "current": current_version,
83
- "latest": latest,
84
- "update_available": version.parse(latest)
85
- > version.parse(current_version),
86
- "checked_at": datetime.now(timezone.utc).isoformat(),
87
- }
88
- self._write_cache(cache_file, result)
89
- return result
90
- except Exception as e:
91
- self.logger.debug(f"Version check failed for {package_name}: {e}")
92
-
93
- return None
94
-
95
- async def _fetch_pypi_version(self, package_name: str) -> Optional[str]:
96
- """
97
- Fetch the latest version from PyPI.
98
-
99
- Args:
100
- package_name: Package name to query
101
-
102
- Returns:
103
- Latest version string or None if fetch fails
104
- """
105
- url = f"https://pypi.org/pypi/{package_name}/json"
106
-
107
- try:
108
- timeout = aiohttp.ClientTimeout(total=self.PYPI_TIMEOUT)
109
- async with aiohttp.ClientSession(timeout=timeout) as session:
110
- async with session.get(url) as response:
111
- if response.status == 200:
112
- data = await response.json()
113
- return data["info"]["version"]
114
- except asyncio.TimeoutError:
115
- self.logger.debug(f"PyPI request timed out for {package_name}")
116
- except Exception as e:
117
- self.logger.debug(f"PyPI request failed: {e}")
118
-
119
- return None
120
-
121
- def _read_cache(self, cache_file: Path, ttl: int) -> Optional[Dict[str, Any]]:
122
- """
123
- Read from cache if valid.
124
-
125
- Args:
126
- cache_file: Path to cache file
127
- ttl: Time-to-live in seconds
128
-
129
- Returns:
130
- Cached data if valid, None otherwise
131
- """
132
- if not cache_file.exists():
133
- return None
134
-
135
- try:
136
- with cache_file.open() as f:
137
- data = json.load(f)
138
-
139
- # Check TTL
140
- checked_at = datetime.fromisoformat(data["checked_at"])
141
- if datetime.now(timezone.utc) - checked_at < timedelta(seconds=ttl):
142
- return data
143
- except Exception as e:
144
- self.logger.debug(f"Cache read error: {e}")
145
-
146
- return None
147
-
148
- def _write_cache(self, cache_file: Path, data: Dict[str, Any]) -> None:
149
- """
150
- Write data to cache file.
151
-
152
- Args:
153
- cache_file: Path to cache file
154
- data: Data to cache
155
- """
156
- try:
157
- with cache_file.open("w") as f:
158
- json.dump(data, f, indent=2)
159
- except Exception as e:
160
- self.logger.debug(f"Cache write failed: {e}")
@@ -1,170 +0,0 @@
1
- """
2
- Update Preferences Manager
3
- ===========================
4
-
5
- Manages user preferences for package update checking.
6
- Allows users to skip specific versions or disable update checks entirely.
7
- """
8
-
9
- import json
10
- from pathlib import Path
11
- from typing import Any, Dict
12
-
13
-
14
- class UpdatePreferences:
15
- """
16
- Manage update checking preferences.
17
-
18
- WHY: Respect user preferences about update notifications to avoid
19
- annoying users who want to stay on specific versions or disable checks.
20
-
21
- DESIGN DECISIONS:
22
- - Store preferences in user's home directory
23
- - Simple JSON format for easy manual editing
24
- - Per-package preferences for granular control
25
- """
26
-
27
- PREFS_FILE = Path.home() / ".claude-mpm" / "mcp_updates.json"
28
-
29
- @classmethod
30
- def load(cls) -> Dict[str, Any]:
31
- """
32
- Load preferences from disk.
33
-
34
- Returns:
35
- Dictionary of preferences, empty dict if file doesn't exist
36
- """
37
- if cls.PREFS_FILE.exists():
38
- try:
39
- with cls.PREFS_FILE.open() as f:
40
- return json.load(f)
41
- except (OSError, json.JSONDecodeError):
42
- # Return empty dict if file is corrupted or unreadable
43
- pass
44
- return {}
45
-
46
- @classmethod
47
- def save(cls, prefs: Dict[str, Any]) -> None:
48
- """
49
- Save preferences to disk.
50
-
51
- Args:
52
- prefs: Preferences dictionary to save
53
- """
54
- cls.PREFS_FILE.parent.mkdir(parents=True, exist_ok=True)
55
- try:
56
- with cls.PREFS_FILE.open("w") as f:
57
- json.dump(prefs, f, indent=2)
58
- except OSError:
59
- # Silently fail if we can't write preferences
60
- pass
61
-
62
- @classmethod
63
- def should_check_package(cls, package: str) -> bool:
64
- """
65
- Check if updates should be checked for a specific package.
66
-
67
- Args:
68
- package: Package name to check
69
-
70
- Returns:
71
- True if updates should be checked, False otherwise
72
- """
73
- prefs = cls.load()
74
-
75
- # Global preference takes precedence
76
- if not prefs.get("global_check_enabled", True):
77
- return False
78
-
79
- # Package-specific preference
80
- pkg_prefs = prefs.get("packages", {}).get(package, {})
81
- return pkg_prefs.get("check_enabled", True)
82
-
83
- @classmethod
84
- def should_skip_version(cls, package: str, version: str) -> bool:
85
- """
86
- Check if a specific version should be skipped for a package.
87
-
88
- Args:
89
- package: Package name
90
- version: Version to check
91
-
92
- Returns:
93
- True if this version should be skipped, False otherwise
94
- """
95
- prefs = cls.load()
96
- pkg_prefs = prefs.get("packages", {}).get(package, {})
97
- skip_version = pkg_prefs.get("skip_version")
98
- return skip_version == version
99
-
100
- @classmethod
101
- def set_skip_version(cls, package: str, version: str) -> None:
102
- """
103
- Remember to skip a specific version for a package.
104
-
105
- Args:
106
- package: Package name
107
- version: Version to skip
108
- """
109
- prefs = cls.load()
110
-
111
- # Ensure packages dict exists
112
- if "packages" not in prefs:
113
- prefs["packages"] = {}
114
- if package not in prefs["packages"]:
115
- prefs["packages"][package] = {}
116
-
117
- prefs["packages"][package]["skip_version"] = version
118
- cls.save(prefs)
119
-
120
- @classmethod
121
- def disable_package_checks(cls, package: str) -> None:
122
- """
123
- Disable update checks for a specific package.
124
-
125
- Args:
126
- package: Package name to disable checks for
127
- """
128
- prefs = cls.load()
129
-
130
- # Ensure packages dict exists
131
- if "packages" not in prefs:
132
- prefs["packages"] = {}
133
- if package not in prefs["packages"]:
134
- prefs["packages"][package] = {}
135
-
136
- prefs["packages"][package]["check_enabled"] = False
137
- cls.save(prefs)
138
-
139
- @classmethod
140
- def enable_package_checks(cls, package: str) -> None:
141
- """
142
- Enable update checks for a specific package.
143
-
144
- Args:
145
- package: Package name to enable checks for
146
- """
147
- prefs = cls.load()
148
-
149
- # Ensure packages dict exists
150
- if "packages" not in prefs:
151
- prefs["packages"] = {}
152
- if package not in prefs["packages"]:
153
- prefs["packages"][package] = {}
154
-
155
- prefs["packages"][package]["check_enabled"] = True
156
- cls.save(prefs)
157
-
158
- @classmethod
159
- def disable_all_checks(cls) -> None:
160
- """Disable all update checks globally."""
161
- prefs = cls.load()
162
- prefs["global_check_enabled"] = False
163
- cls.save(prefs)
164
-
165
- @classmethod
166
- def enable_all_checks(cls) -> None:
167
- """Enable all update checks globally."""
168
- prefs = cls.load()
169
- prefs["global_check_enabled"] = True
170
- cls.save(prefs)
@@ -1,10 +0,0 @@
1
- [console_scripts]
2
- claude-mpm = claude_mpm.cli:main
3
- claude-mpm-doctor = claude_mpm.scripts.mpm_doctor:main
4
- claude-mpm-mcp = claude_mpm.services.mcp_gateway.server.stdio_server:main_sync
5
- claude-mpm-mcp-wrapper = claude_mpm.scripts.mcp_wrapper:entry_point
6
- claude-mpm-monitor = claude_mpm.scripts.launch_monitor:main
7
- claude-mpm-socketio = claude_mpm.scripts.socketio_daemon:main
8
- claude-mpm-ticket = claude_mpm.cli.ticket_cli:main
9
- claude-mpm-version = claude_mpm.scripts.manage_version:main
10
- ticket = claude_mpm.cli.ticket_cli:main
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 Claude MPM Team
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.