claude-mpm 5.4.55__py3-none-any.whl → 5.4.85__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.
- claude_mpm/VERSION +1 -1
- claude_mpm/agents/CLAUDE_MPM_FOUNDERS_OUTPUT_STYLE.md +405 -0
- claude_mpm/agents/CLAUDE_MPM_OUTPUT_STYLE.md +63 -241
- claude_mpm/agents/CLAUDE_MPM_TEACHER_OUTPUT_STYLE.md +109 -1925
- claude_mpm/agents/PM_INSTRUCTIONS.md +36 -9
- claude_mpm/cli/__init__.py +5 -1
- claude_mpm/cli/commands/agents.py +2 -4
- claude_mpm/cli/commands/agents_reconcile.py +197 -0
- claude_mpm/cli/commands/configure.py +620 -21
- claude_mpm/cli/commands/skills.py +166 -14
- claude_mpm/cli/executor.py +1 -0
- claude_mpm/cli/interactive/__init__.py +10 -0
- claude_mpm/cli/interactive/agent_wizard.py +30 -50
- claude_mpm/cli/interactive/questionary_styles.py +65 -0
- claude_mpm/cli/interactive/skill_selector.py +481 -0
- claude_mpm/cli/parsers/base_parser.py +5 -0
- claude_mpm/cli/startup.py +223 -388
- claude_mpm/constants.py +1 -0
- claude_mpm/core/claude_runner.py +2 -2
- claude_mpm/core/interactive_session.py +7 -7
- claude_mpm/core/output_style_manager.py +21 -13
- claude_mpm/core/unified_config.py +50 -8
- claude_mpm/core/unified_paths.py +30 -13
- claude_mpm/scripts/start_activity_logging.py +0 -0
- claude_mpm/services/agents/deployment/agent_template_builder.py +8 -0
- claude_mpm/services/agents/deployment/deployment_reconciler.py +577 -0
- claude_mpm/services/agents/deployment/startup_reconciliation.py +138 -0
- claude_mpm/services/agents/sources/git_source_sync_service.py +7 -4
- claude_mpm/services/agents/startup_sync.py +5 -2
- claude_mpm/services/pm_skills_deployer.py +4 -0
- claude_mpm/services/skills/git_skill_source_manager.py +24 -8
- claude_mpm/services/skills/selective_skill_deployer.py +82 -83
- claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +79 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +178 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/agent-prompts.md +577 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/coordination-patterns.md +467 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/examples.md +537 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/troubleshooting.md +730 -0
- claude_mpm/skills/bundled/collaboration/git-worktrees.md +317 -0
- claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +112 -0
- claude_mpm/skills/bundled/collaboration/requesting-code-review/references/code-reviewer-template.md +146 -0
- claude_mpm/skills/bundled/collaboration/requesting-code-review/references/review-examples.md +412 -0
- claude_mpm/skills/bundled/collaboration/stacked-prs.md +251 -0
- claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +81 -0
- claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +362 -0
- claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +312 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +152 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/advanced-techniques.md +668 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/examples.md +587 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/integration.md +438 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/tracing-techniques.md +391 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +119 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +148 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +483 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +452 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +449 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +411 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +14 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +58 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +68 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +69 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +131 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +325 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/integration-and-workflows.md +490 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/red-flags-and-failures.md +425 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +499 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/INTEGRATION.md +611 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/README.md +596 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/SKILL.md +260 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/examples/nextjs-env-structure.md +315 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/references/frameworks.md +436 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/references/security.md +433 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/references/synchronization.md +452 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/references/troubleshooting.md +404 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/references/validation.md +420 -0
- claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +86 -0
- claude_mpm/skills/bundled/main/internal-comms/SKILL.md +43 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +47 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +65 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +30 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +16 -0
- claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +160 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +412 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +602 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +915 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +916 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +752 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +1237 -0
- claude_mpm/skills/bundled/main/skill-creator/SKILL.md +189 -0
- claude_mpm/skills/bundled/main/skill-creator/references/best-practices.md +500 -0
- claude_mpm/skills/bundled/main/skill-creator/references/creation-workflow.md +464 -0
- claude_mpm/skills/bundled/main/skill-creator/references/examples.md +619 -0
- claude_mpm/skills/bundled/main/skill-creator/references/progressive-disclosure.md +437 -0
- claude_mpm/skills/bundled/main/skill-creator/references/skill-structure.md +231 -0
- claude_mpm/skills/bundled/php/espocrm-development/SKILL.md +170 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/architecture.md +602 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/common-tasks.md +821 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/development-workflow.md +742 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/frontend-customization.md +726 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/hooks-and-services.md +764 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/testing-debugging.md +831 -0
- claude_mpm/skills/bundled/pm/pm-bug-reporting/pm-bug-reporting.md +248 -0
- claude_mpm/skills/bundled/pm/pm-delegation-patterns/SKILL.md +167 -0
- claude_mpm/skills/bundled/pm/pm-git-file-tracking/SKILL.md +113 -0
- claude_mpm/skills/bundled/pm/pm-pr-workflow/SKILL.md +124 -0
- claude_mpm/skills/bundled/pm/pm-teaching-mode/SKILL.md +657 -0
- claude_mpm/skills/bundled/pm/pm-ticketing-integration/SKILL.md +154 -0
- claude_mpm/skills/bundled/pm/pm-verification-protocols/SKILL.md +198 -0
- claude_mpm/skills/bundled/react/flexlayout-react.md +742 -0
- claude_mpm/skills/bundled/rust/desktop-applications/SKILL.md +226 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/architecture-patterns.md +901 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/native-gui-frameworks.md +901 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/platform-integration.md +775 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/state-management.md +937 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/tauri-framework.md +770 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/testing-deployment.md +961 -0
- claude_mpm/skills/bundled/tauri/tauri-async-patterns.md +495 -0
- claude_mpm/skills/bundled/tauri/tauri-build-deploy.md +599 -0
- claude_mpm/skills/bundled/tauri/tauri-command-patterns.md +535 -0
- claude_mpm/skills/bundled/tauri/tauri-error-handling.md +613 -0
- claude_mpm/skills/bundled/tauri/tauri-event-system.md +648 -0
- claude_mpm/skills/bundled/tauri/tauri-file-system.md +673 -0
- claude_mpm/skills/bundled/tauri/tauri-frontend-integration.md +767 -0
- claude_mpm/skills/bundled/tauri/tauri-performance.md +669 -0
- claude_mpm/skills/bundled/tauri/tauri-state-management.md +573 -0
- claude_mpm/skills/bundled/tauri/tauri-testing.md +384 -0
- claude_mpm/skills/bundled/tauri/tauri-window-management.md +628 -0
- claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +119 -0
- claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +253 -0
- claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +145 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +543 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +741 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +470 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +458 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +639 -0
- claude_mpm/skills/bundled/testing/test-quality-inspector/SKILL.md +458 -0
- claude_mpm/skills/bundled/testing/test-quality-inspector/examples/example-inspection-report.md +411 -0
- claude_mpm/skills/bundled/testing/test-quality-inspector/references/assertion-quality.md +317 -0
- claude_mpm/skills/bundled/testing/test-quality-inspector/references/inspection-checklist.md +270 -0
- claude_mpm/skills/bundled/testing/test-quality-inspector/references/red-flags.md +436 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +140 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/completeness-anti-patterns.md +572 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/core-anti-patterns.md +411 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/detection-guide.md +569 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/tdd-connection.md +695 -0
- claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +184 -0
- claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +459 -0
- claude_mpm/skills/bundled/testing/webapp-testing/playwright-patterns.md +479 -0
- claude_mpm/skills/bundled/testing/webapp-testing/reconnaissance-pattern.md +687 -0
- claude_mpm/skills/bundled/testing/webapp-testing/server-management.md +758 -0
- claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +868 -0
- claude_mpm/utils/agent_dependency_loader.py +103 -4
- claude_mpm/utils/robust_installer.py +45 -24
- {claude_mpm-5.4.55.dist-info → claude_mpm-5.4.85.dist-info}/METADATA +47 -23
- {claude_mpm-5.4.55.dist-info → claude_mpm-5.4.85.dist-info}/RECORD +159 -47
- claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/correlation_manager.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/installer.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-311.pyc +0 -0
- {claude_mpm-5.4.55.dist-info → claude_mpm-5.4.85.dist-info}/WHEEL +0 -0
- {claude_mpm-5.4.55.dist-info → claude_mpm-5.4.85.dist-info}/entry_points.txt +0 -0
- {claude_mpm-5.4.55.dist-info → claude_mpm-5.4.85.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-5.4.55.dist-info → claude_mpm-5.4.85.dist-info}/licenses/LICENSE-FAQ.md +0 -0
- {claude_mpm-5.4.55.dist-info → claude_mpm-5.4.85.dist-info}/top_level.txt +0 -0
|
@@ -65,6 +65,7 @@ class AgentDependencyLoader:
|
|
|
65
65
|
self.deployment_state_file = (
|
|
66
66
|
Path.cwd() / ".claude" / "agents" / ".mpm_deployment_state"
|
|
67
67
|
)
|
|
68
|
+
self.is_uv_tool = self._check_uv_tool_installation()
|
|
68
69
|
|
|
69
70
|
def discover_deployed_agents(self) -> Dict[str, Path]:
|
|
70
71
|
"""
|
|
@@ -191,9 +192,42 @@ class AgentDependencyLoader:
|
|
|
191
192
|
logger.debug(f"Loaded dependencies for {len(agent_dependencies)} agents")
|
|
192
193
|
return agent_dependencies
|
|
193
194
|
|
|
195
|
+
def _check_uv_tool_installation(self) -> bool:
|
|
196
|
+
"""
|
|
197
|
+
Check if running in UV tool environment (no pip available).
|
|
198
|
+
|
|
199
|
+
WHY: UV tool environments don't have pip installed. The executable
|
|
200
|
+
path typically contains ".local/share/uv/tools/" and the UV_TOOL_DIR
|
|
201
|
+
environment variable is set. In such environments, we need to use
|
|
202
|
+
'uv pip' instead of 'python -m pip'.
|
|
203
|
+
|
|
204
|
+
Returns:
|
|
205
|
+
True if UV tool environment, False otherwise
|
|
206
|
+
"""
|
|
207
|
+
import os
|
|
208
|
+
|
|
209
|
+
# Check UV_TOOL_DIR environment variable
|
|
210
|
+
uv_tool_dir = os.environ.get("UV_TOOL_DIR", "")
|
|
211
|
+
if uv_tool_dir and "claude-mpm" in uv_tool_dir:
|
|
212
|
+
logger.debug(f"UV tool environment detected via UV_TOOL_DIR: {uv_tool_dir}")
|
|
213
|
+
return True
|
|
214
|
+
|
|
215
|
+
# Check executable path for UV tool patterns
|
|
216
|
+
executable = sys.executable
|
|
217
|
+
if ".local/share/uv/tools/" in executable or "/uv/tools/" in executable:
|
|
218
|
+
logger.debug(
|
|
219
|
+
f"UV tool environment detected via executable path: {executable}"
|
|
220
|
+
)
|
|
221
|
+
return True
|
|
222
|
+
|
|
223
|
+
return False
|
|
224
|
+
|
|
194
225
|
def check_python_dependency(self, package_spec: str) -> Tuple[bool, Optional[str]]:
|
|
195
226
|
"""
|
|
196
|
-
Check if a Python package dependency is satisfied.
|
|
227
|
+
Check if a Python package dependency is satisfied in the TARGET environment.
|
|
228
|
+
|
|
229
|
+
WHY: UV tool environments use a separate Python installation. We must check
|
|
230
|
+
packages in the same environment where they would be installed/used.
|
|
197
231
|
|
|
198
232
|
Args:
|
|
199
233
|
package_spec: Package specification (e.g., "pandas>=2.0.0")
|
|
@@ -221,7 +255,70 @@ class AgentDependencyLoader:
|
|
|
221
255
|
)
|
|
222
256
|
return True, "optional-skipped"
|
|
223
257
|
|
|
224
|
-
#
|
|
258
|
+
# For UV tool environments, check via UV's Python
|
|
259
|
+
if self.is_uv_tool:
|
|
260
|
+
try:
|
|
261
|
+
verify_cmd = [
|
|
262
|
+
"uv",
|
|
263
|
+
"run",
|
|
264
|
+
"--no-project",
|
|
265
|
+
"python",
|
|
266
|
+
"-c",
|
|
267
|
+
f"import importlib.metadata; print(importlib.metadata.version('{package_name}'))",
|
|
268
|
+
]
|
|
269
|
+
result = subprocess.run(
|
|
270
|
+
verify_cmd, capture_output=True, timeout=30, check=False
|
|
271
|
+
)
|
|
272
|
+
if result.returncode == 0:
|
|
273
|
+
version = result.stdout.decode().strip()
|
|
274
|
+
self.checked_packages.add(package_name)
|
|
275
|
+
if req.specifier.contains(version):
|
|
276
|
+
logger.debug(
|
|
277
|
+
f"Package {package_name} {version} satisfied in UV environment"
|
|
278
|
+
)
|
|
279
|
+
return True, version
|
|
280
|
+
logger.debug(
|
|
281
|
+
f"{package_name} {version} does not satisfy {req.specifier}"
|
|
282
|
+
)
|
|
283
|
+
return False, version
|
|
284
|
+
# Check alternatives for optional packages
|
|
285
|
+
if package_name in self.OPTIONAL_DB_PACKAGES:
|
|
286
|
+
for alternative in self.OPTIONAL_DB_PACKAGES[package_name]:
|
|
287
|
+
alt_cmd = [
|
|
288
|
+
"uv",
|
|
289
|
+
"run",
|
|
290
|
+
"--no-project",
|
|
291
|
+
"python",
|
|
292
|
+
"-c",
|
|
293
|
+
f"import importlib.metadata; print(importlib.metadata.version('{alternative}'))",
|
|
294
|
+
]
|
|
295
|
+
alt_result = subprocess.run(
|
|
296
|
+
alt_cmd, capture_output=True, timeout=30, check=False
|
|
297
|
+
)
|
|
298
|
+
if alt_result.returncode == 0:
|
|
299
|
+
alt_version = alt_result.stdout.decode().strip()
|
|
300
|
+
logger.info(
|
|
301
|
+
f"Using {alternative} as alternative to {package_name}"
|
|
302
|
+
)
|
|
303
|
+
self.checked_packages.add(package_name)
|
|
304
|
+
return True, f"{alternative}:{alt_version}"
|
|
305
|
+
# If no alternatives work, mark as optional failure
|
|
306
|
+
self.optional_failed[package_name] = "No alternatives available"
|
|
307
|
+
logger.warning(
|
|
308
|
+
f"Optional package {package_name} not found, marking as optional"
|
|
309
|
+
)
|
|
310
|
+
return True, "optional-not-found"
|
|
311
|
+
return False, None
|
|
312
|
+
except subprocess.TimeoutExpired:
|
|
313
|
+
logger.warning(f"Timeout checking {package_name} in UV environment")
|
|
314
|
+
return False, None
|
|
315
|
+
except Exception as e:
|
|
316
|
+
logger.debug(
|
|
317
|
+
f"Error checking {package_name} in UV environment: {e}"
|
|
318
|
+
)
|
|
319
|
+
return False, None
|
|
320
|
+
|
|
321
|
+
# For normal Python, try to import and check version
|
|
225
322
|
try:
|
|
226
323
|
import importlib.metadata
|
|
227
324
|
|
|
@@ -671,8 +768,10 @@ class AgentDependencyLoader:
|
|
|
671
768
|
)
|
|
672
769
|
|
|
673
770
|
if is_uv_tool:
|
|
674
|
-
cmd = ["uv", "pip", "install"]
|
|
675
|
-
logger.debug(
|
|
771
|
+
cmd = ["uv", "pip", "install", "--python", sys.executable]
|
|
772
|
+
logger.debug(
|
|
773
|
+
f"Using 'uv pip install --python {sys.executable}' for UV tool environment"
|
|
774
|
+
)
|
|
676
775
|
else:
|
|
677
776
|
cmd = [sys.executable, "-m", "pip", "install"]
|
|
678
777
|
|
|
@@ -332,10 +332,12 @@ class RobustPackageInstaller:
|
|
|
332
332
|
Returns:
|
|
333
333
|
Command as list of arguments
|
|
334
334
|
"""
|
|
335
|
-
# UV tool environments don't have pip; use uv pip instead
|
|
335
|
+
# UV tool environments don't have pip; use uv pip install --python instead
|
|
336
336
|
if self.is_uv_tool:
|
|
337
|
-
base_cmd = ["uv", "pip", "install"]
|
|
338
|
-
logger.debug(
|
|
337
|
+
base_cmd = ["uv", "pip", "install", "--python", sys.executable]
|
|
338
|
+
logger.debug(
|
|
339
|
+
f"Using 'uv pip install --python {sys.executable}' for UV tool environment"
|
|
340
|
+
)
|
|
339
341
|
else:
|
|
340
342
|
base_cmd = [sys.executable, "-m", "pip", "install"]
|
|
341
343
|
|
|
@@ -478,42 +480,56 @@ class RobustPackageInstaller:
|
|
|
478
480
|
|
|
479
481
|
def _verify_installation(self, package_spec: str) -> bool:
|
|
480
482
|
"""
|
|
481
|
-
Verify that a package was successfully installed.
|
|
483
|
+
Verify that a package was successfully installed in the TARGET environment.
|
|
484
|
+
|
|
485
|
+
WHY: UV installs packages to its own Python environment, not the current process.
|
|
486
|
+
We must verify in the same environment where packages were installed.
|
|
482
487
|
|
|
483
488
|
Args:
|
|
484
489
|
package_spec: Package specification
|
|
485
490
|
|
|
486
491
|
Returns:
|
|
487
|
-
True if package is installed and importable
|
|
492
|
+
True if package is installed and importable in the target environment
|
|
488
493
|
"""
|
|
489
494
|
package_name = self._extract_package_name(package_spec)
|
|
490
495
|
|
|
491
|
-
# Convert package name to import name (e.g., tree-sitter-ruby -> tree_sitter_ruby)
|
|
492
|
-
import_name = package_name.replace("-", "_")
|
|
493
|
-
|
|
494
496
|
try:
|
|
495
|
-
|
|
497
|
+
if self.is_uv_tool:
|
|
498
|
+
# For UV tool, verify via UV's Python environment
|
|
499
|
+
verify_cmd = [
|
|
500
|
+
"uv",
|
|
501
|
+
"run",
|
|
502
|
+
"--no-project",
|
|
503
|
+
"python",
|
|
504
|
+
"-c",
|
|
505
|
+
f"import importlib.metadata; print(importlib.metadata.version('{package_name}'))",
|
|
506
|
+
]
|
|
507
|
+
result = subprocess.run(
|
|
508
|
+
verify_cmd, capture_output=True, timeout=30, check=False
|
|
509
|
+
)
|
|
510
|
+
if result.returncode == 0:
|
|
511
|
+
logger.debug(
|
|
512
|
+
f"Package {package_name} verified in UV environment: {result.stdout.decode().strip()}"
|
|
513
|
+
)
|
|
514
|
+
return True
|
|
515
|
+
logger.debug(
|
|
516
|
+
f"Package {package_name} not found in UV environment: {result.stderr.decode().strip()}"
|
|
517
|
+
)
|
|
518
|
+
return False
|
|
519
|
+
# For normal Python, use importlib.metadata in current process
|
|
496
520
|
import importlib.metadata
|
|
497
521
|
|
|
498
522
|
try:
|
|
499
523
|
version = importlib.metadata.version(package_name)
|
|
500
524
|
logger.debug(f"Package {package_name} version {version} is installed")
|
|
501
|
-
|
|
502
|
-
# For tree-sitter packages, don't try to import (they have C extensions)
|
|
503
|
-
if package_name.startswith("tree-sitter-"):
|
|
504
|
-
return True
|
|
505
|
-
|
|
506
|
-
# Try to import the package
|
|
507
|
-
try:
|
|
508
|
-
__import__(import_name)
|
|
509
|
-
return True
|
|
510
|
-
except ImportError:
|
|
511
|
-
# Some packages have different import names, that's OK
|
|
512
|
-
return True
|
|
525
|
+
return True
|
|
513
526
|
|
|
514
527
|
except importlib.metadata.PackageNotFoundError:
|
|
515
528
|
return False
|
|
516
529
|
|
|
530
|
+
except subprocess.TimeoutExpired:
|
|
531
|
+
logger.warning(f"Verification timeout for {package_name}")
|
|
532
|
+
return False
|
|
517
533
|
except ImportError:
|
|
518
534
|
# Fallback for older Python versions
|
|
519
535
|
try:
|
|
@@ -523,6 +539,9 @@ class RobustPackageInstaller:
|
|
|
523
539
|
return True
|
|
524
540
|
except pkg_resources.DistributionNotFound:
|
|
525
541
|
return False
|
|
542
|
+
except Exception as e:
|
|
543
|
+
logger.debug(f"Verification error for {package_name}: {e}")
|
|
544
|
+
return False
|
|
526
545
|
|
|
527
546
|
def _is_retryable_error(self, error: Optional[str]) -> bool:
|
|
528
547
|
"""
|
|
@@ -687,10 +706,12 @@ class RobustPackageInstaller:
|
|
|
687
706
|
Tuple of (success, error_message)
|
|
688
707
|
"""
|
|
689
708
|
try:
|
|
690
|
-
# UV tool environments don't have pip; use uv pip instead
|
|
709
|
+
# UV tool environments don't have pip; use uv pip install --python instead
|
|
691
710
|
if self.is_uv_tool:
|
|
692
|
-
cmd = ["uv", "pip", "install"]
|
|
693
|
-
logger.debug(
|
|
711
|
+
cmd = ["uv", "pip", "install", "--python", sys.executable]
|
|
712
|
+
logger.debug(
|
|
713
|
+
f"Using 'uv pip install --python {sys.executable}' for batch installation"
|
|
714
|
+
)
|
|
694
715
|
else:
|
|
695
716
|
cmd = [sys.executable, "-m", "pip", "install"]
|
|
696
717
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: claude-mpm
|
|
3
|
-
Version: 5.4.
|
|
3
|
+
Version: 5.4.85
|
|
4
4
|
Summary: Claude Multi-Agent Project Manager - Orchestrate Claude with agent delegation and ticket tracking
|
|
5
5
|
Author-email: Bob Matsuoka <bob@matsuoka.com>
|
|
6
6
|
Maintainer: Claude MPM Team
|
|
@@ -116,7 +116,13 @@ A powerful orchestration framework for **Claude Code (CLI)** that enables multi-
|
|
|
116
116
|
> - Minimum: v1.0.92 (hooks support)
|
|
117
117
|
> - Recommended: v2.0.30+ (latest features)
|
|
118
118
|
|
|
119
|
-
> **Quick Start**: See [docs/user/getting-started.md](docs/
|
|
119
|
+
> **Quick Start**: See [docs/user/getting-started.md](docs/getting-started/README.md) to get running in 5 minutes!
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
> **🆕 NEW for Founders!** Not a software engineer? **[Start with our Absolute Beginner's Guide](docs/absolute-beginners-guide.md)** — designed specifically for non-technical founders and business leaders who want to understand and oversee their technical projects. No coding experience required!
|
|
124
|
+
|
|
125
|
+
---
|
|
120
126
|
|
|
121
127
|
## 🚀 What's New in v5.0
|
|
122
128
|
|
|
@@ -153,13 +159,16 @@ claude-mpm agent-source list
|
|
|
153
159
|
**Agents** (47+ agents):
|
|
154
160
|
- 🏢 System: `bobmatnyc/claude-mpm-agents` - Core agent templates
|
|
155
161
|
|
|
156
|
-
**Skills** (
|
|
157
|
-
-
|
|
158
|
-
-
|
|
162
|
+
**Skills** (17 bundled, optional external):
|
|
163
|
+
- 📦 **Bundled**: 17 skills included in core installation (no external repo)
|
|
164
|
+
- 🏢 **Optional**: `bobmatnyc/claude-mpm-skills` - Community skills (not enabled by default)
|
|
165
|
+
- 🔧 **Custom**: Add your own via `~/.claude/skills/` or `.claude/skills/`
|
|
159
166
|
|
|
160
167
|
**What This Means:**
|
|
161
|
-
- ✅ **
|
|
162
|
-
- ✅ **
|
|
168
|
+
- ✅ **Bundled Skills**: Work immediately, no external dependencies
|
|
169
|
+
- ✅ **Offline Support**: Core skills work without internet
|
|
170
|
+
- ✅ **Automatic Setup**: Agents deploy from Git on first run
|
|
171
|
+
- ✅ **Always Updated**: Agent repositories sync on startup
|
|
163
172
|
- ✅ **Nested Support**: Repositories with subdirectories are automatically flattened
|
|
164
173
|
- ✅ **Template Inheritance**: BASE-AGENT.md files cascade from parent directories
|
|
165
174
|
- ✅ **Priority System**: Control which sources win when multiple repos provide the same agent/skill
|
|
@@ -201,12 +210,13 @@ See [docs/features/hierarchical-base-agents.md](docs/features/hierarchical-base-
|
|
|
201
210
|
|
|
202
211
|
### 🎯 Skills System
|
|
203
212
|
|
|
204
|
-
- **
|
|
205
|
-
- **
|
|
213
|
+
- **17 Bundled Skills**: Production-ready skills included in core installation (no external repo required)
|
|
214
|
+
- **Custom Skills**: Add your own project-specific or user-level skills locally
|
|
206
215
|
- **Three-Tier Organization**: Bundled/user/project skills with priority resolution
|
|
207
216
|
- **Auto-Linking**: Skills automatically linked to relevant agents
|
|
208
217
|
- **Interactive Configuration**: Skills wizard via `claude-mpm configure`
|
|
209
218
|
- **Version Tracking**: Semantic versioning for all skills
|
|
219
|
+
- **Community Contributions**: Submit PRs to add skills to the bundled collection
|
|
210
220
|
|
|
211
221
|
### 🔌 Advanced Integration
|
|
212
222
|
|
|
@@ -230,7 +240,7 @@ See [docs/features/hierarchical-base-agents.md](docs/features/hierarchical-base-
|
|
|
230
240
|
|
|
231
241
|
**Before installing Claude MPM**, ensure you have:
|
|
232
242
|
|
|
233
|
-
1. **Python 3.
|
|
243
|
+
1. **Python 3.10+** (3.11+ recommended for optimal compatibility)
|
|
234
244
|
2. **Claude Code CLI v1.0.92+** (required!)
|
|
235
245
|
|
|
236
246
|
```bash
|
|
@@ -243,19 +253,18 @@ claude --version
|
|
|
243
253
|
|
|
244
254
|
### Install Claude MPM
|
|
245
255
|
|
|
256
|
+
Choose your preferred installation method:
|
|
257
|
+
|
|
258
|
+
**Homebrew (macOS):**
|
|
246
259
|
```bash
|
|
247
260
|
# Basic installation
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
# Or with uv (faster)
|
|
251
|
-
uv tool install claude-mpm
|
|
261
|
+
brew install claude-mpm
|
|
252
262
|
|
|
253
263
|
# Install with monitoring dashboard (recommended)
|
|
254
|
-
|
|
255
|
-
uv tool install "claude-mpm[monitor]"
|
|
264
|
+
brew install claude-mpm --with-monitor
|
|
256
265
|
```
|
|
257
266
|
|
|
258
|
-
|
|
267
|
+
**pipx/uvx (recommended for isolated installation):**
|
|
259
268
|
```bash
|
|
260
269
|
# Basic installation
|
|
261
270
|
pipx install claude-mpm
|
|
@@ -271,6 +280,19 @@ pipx install "claude-mpm[monitor]"
|
|
|
271
280
|
uv tool install "claude-mpm[monitor]"
|
|
272
281
|
```
|
|
273
282
|
|
|
283
|
+
**pip/uv (system-wide installation):**
|
|
284
|
+
```bash
|
|
285
|
+
# Basic installation
|
|
286
|
+
pip install claude-mpm
|
|
287
|
+
|
|
288
|
+
# Or with uv (faster)
|
|
289
|
+
uv tool install claude-mpm
|
|
290
|
+
|
|
291
|
+
# Install with monitoring dashboard (recommended)
|
|
292
|
+
pip install "claude-mpm[monitor]"
|
|
293
|
+
uv tool install "claude-mpm[monitor]"
|
|
294
|
+
```
|
|
295
|
+
|
|
274
296
|
### Verify Installation
|
|
275
297
|
|
|
276
298
|
```bash
|
|
@@ -283,21 +305,23 @@ claude-mpm doctor
|
|
|
283
305
|
|
|
284
306
|
# Verify Git repositories are synced
|
|
285
307
|
ls ~/.claude/agents/ # Should show 47+ agents
|
|
286
|
-
|
|
308
|
+
|
|
309
|
+
# Bundled skills are in Python package (always available)
|
|
310
|
+
# Custom skills go in ~/.claude/skills/ or .claude/skills/
|
|
287
311
|
|
|
288
312
|
# Check agent sources
|
|
289
313
|
claude-mpm agent-source list
|
|
290
314
|
|
|
291
|
-
# Check skill sources
|
|
315
|
+
# Check skill sources (only if you've added external sources)
|
|
292
316
|
claude-mpm skill-source list
|
|
293
317
|
```
|
|
294
318
|
|
|
295
319
|
**What You Should See:**
|
|
296
320
|
- ✅ 47+ agents deployed to `~/.claude/agents/`
|
|
297
|
-
- ✅
|
|
298
|
-
- ✅
|
|
299
|
-
- ✅
|
|
300
|
-
- ✅ Progress bars showing sync and deployment phases
|
|
321
|
+
- ✅ 17 bundled skills (in Python package, no separate deployment needed)
|
|
322
|
+
- ✅ Agent sources configured (system repositories)
|
|
323
|
+
- ✅ Skill sources empty by default (bundled skills only)
|
|
324
|
+
- ✅ Progress bars showing sync and deployment phases for agents
|
|
301
325
|
|
|
302
326
|
**💡 Optional Dependencies**:
|
|
303
327
|
- `[monitor]` - Full monitoring dashboard with Socket.IO and async web server components
|