claude-mpm 4.0.9__py3-none-any.whl → 4.0.10__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.
@@ -0,0 +1 @@
1
+ 287
claude_mpm/VERSION CHANGED
@@ -1 +1 @@
1
- 4.0.9
1
+ 4.0.10
@@ -721,31 +721,47 @@ Extract tickets from these patterns:
721
721
  Path.home() / ".claude" / "agents", # User's system agents
722
722
  ]
723
723
 
724
- agents_dir = None
725
- for potential_dir in agents_dirs:
724
+ # Collect agents from all directories with proper precedence
725
+ # Project agents override user agents with the same name
726
+ all_agents = {} # key: agent_id, value: (agent_data, priority)
727
+
728
+ for priority, potential_dir in enumerate(agents_dirs):
726
729
  if potential_dir.exists() and any(potential_dir.glob("*.md")):
727
- agents_dir = potential_dir
728
- self.logger.debug(f"Found agents directory at: {agents_dir}")
729
- break
730
-
731
-
732
- if not agents_dir:
733
- self.logger.warning(f"No .claude/agents directory found in any location: {agents_dirs}")
730
+ self.logger.debug(f"Found agents directory at: {potential_dir}")
731
+
732
+ # Collect agents from this directory
733
+ for agent_file in potential_dir.glob("*.md"):
734
+ if agent_file.name.startswith("."):
735
+ continue
736
+
737
+ # Parse agent metadata
738
+ agent_data = self._parse_agent_metadata(agent_file)
739
+ if agent_data:
740
+ agent_id = agent_data["id"]
741
+ # Only add if not already present (project has priority 0, user has priority 1)
742
+ # Lower priority number wins (project > user)
743
+ if agent_id not in all_agents or priority < all_agents[agent_id][1]:
744
+ all_agents[agent_id] = (agent_data, priority)
745
+ self.logger.debug(f"Added/Updated agent {agent_id} from {potential_dir} (priority {priority})")
746
+
747
+ if not all_agents:
748
+ self.logger.warning(f"No agents found in any location: {agents_dirs}")
734
749
  return self._get_fallback_capabilities()
735
-
750
+
751
+ # Log agent collection summary
752
+ project_agents = [aid for aid, (_, pri) in all_agents.items() if pri == 0]
753
+ user_agents = [aid for aid, (_, pri) in all_agents.items() if pri == 1]
754
+
755
+ if project_agents:
756
+ self.logger.info(f"Loaded {len(project_agents)} project agents: {', '.join(sorted(project_agents))}")
757
+ if user_agents:
758
+ self.logger.info(f"Loaded {len(user_agents)} user agents: {', '.join(sorted(user_agents))}")
759
+
736
760
  # Build capabilities section
737
761
  section = "\n\n## Available Agent Capabilities\n\n"
738
762
 
739
- # Collect deployed agents
740
- deployed_agents = []
741
- for agent_file in agents_dir.glob("*.md"):
742
- if agent_file.name.startswith("."):
743
- continue
744
-
745
- # Parse agent metadata
746
- agent_data = self._parse_agent_metadata(agent_file)
747
- if agent_data:
748
- deployed_agents.append(agent_data)
763
+ # Extract just the agent data (drop priority info) and sort
764
+ deployed_agents = [agent_data for agent_data, _ in all_agents.values()]
749
765
 
750
766
  if not deployed_agents:
751
767
  return self._get_fallback_capabilities()
File without changes
File without changes
@@ -8,6 +8,7 @@ This service handles:
8
8
  Extracted from ClaudeRunner to follow Single Responsibility Principle.
9
9
  """
10
10
 
11
+ from pathlib import Path
11
12
  from typing import Any, Dict, Optional
12
13
 
13
14
  from claude_mpm.config.paths import paths
@@ -122,17 +123,23 @@ class VersionService(BaseService, VersionServiceInterface):
122
123
  Returns:
123
124
  Build number as integer or None if not available
124
125
  """
125
- try:
126
- build_file = paths.project_root / "BUILD_NUMBER"
127
- if build_file.exists():
128
- build_content = build_file.read_text().strip()
129
- build_number = int(build_content)
130
- self.logger.debug(f"Build number obtained from file: {build_number}")
131
- return build_number
132
- except (ValueError, IOError) as e:
133
- self.logger.debug(f"Could not read BUILD_NUMBER: {e}")
134
- except Exception as e:
135
- self.logger.debug(f"Unexpected error reading BUILD_NUMBER: {e}")
126
+ # Try multiple locations for BUILD_NUMBER file
127
+ build_file_locations = [
128
+ paths.project_root / "BUILD_NUMBER", # Development location
129
+ Path(__file__).parent.parent / "BUILD_NUMBER", # Package location
130
+ ]
131
+
132
+ for build_file in build_file_locations:
133
+ try:
134
+ if build_file.exists():
135
+ build_content = build_file.read_text().strip()
136
+ build_number = int(build_content)
137
+ self.logger.debug(f"Build number obtained from {build_file}: {build_number}")
138
+ return build_number
139
+ except (ValueError, IOError) as e:
140
+ self.logger.debug(f"Could not read BUILD_NUMBER from {build_file}: {e}")
141
+ except Exception as e:
142
+ self.logger.debug(f"Unexpected error reading BUILD_NUMBER from {build_file}: {e}")
136
143
 
137
144
  return None
138
145
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-mpm
3
- Version: 4.0.9
3
+ Version: 4.0.10
4
4
  Summary: Claude Multi-agent Project Manager - Clean orchestration with ticket management
5
5
  Home-page: https://github.com/bobmatnyc/claude-mpm
6
6
  Author: Claude MPM Team
@@ -1,4 +1,5 @@
1
- claude_mpm/VERSION,sha256=NlyEVzfcERhhF26h0CRs57M1do2NvSzqI0wwWymDvro,6
1
+ claude_mpm/BUILD_NUMBER,sha256=ra2KPUYLh7RotFiDIuCPImXsbEcwnA847UFNgGToN-0,4
2
+ claude_mpm/VERSION,sha256=Xm0N5pw0LsSAcOK92caP5MeunVmgHR49Xdv_Ai2jKCg,7
2
3
  claude_mpm/__init__.py,sha256=lyTZAYGH4DTaFGLRNWJKk5Q5oTjzN5I6AXmfVX-Jff0,1512
3
4
  claude_mpm/__main__.py,sha256=Lfi2z17WSKiMrTAhA0LNsdLJRiV-J2dAezXPt0R9Qis,643
4
5
  claude_mpm/constants.py,sha256=cwfhDsstU5KK7esKnoq0PtSUg7LjneujdHjR-o5dX00,5597
@@ -101,7 +102,7 @@ claude_mpm/core/constants.py,sha256=6e_IMQMOeW3oMgUsLFGvbqzM8Sf4fDYMpn3rGpfWVhM,
101
102
  claude_mpm/core/container.py,sha256=SERH3YOH9BXtHbv-kWu0bViNpdcGccDXR0NXFXbw1Pc,32155
102
103
  claude_mpm/core/exceptions.py,sha256=lNVLqVuRjygHe89NJg1rPAyevVdzpLOKgHFMQtGSxdA,19654
103
104
  claude_mpm/core/factories.py,sha256=A7WcjYWjhkc-tzUnef0YaW0Jj8oxMP-7_g2jIj1XYa8,7265
104
- claude_mpm/core/framework_loader.py,sha256=wRIkE7FeawWrvM3VF7uY1jJGRBalnuHZ4-PUayAhKD8,40727
105
+ claude_mpm/core/framework_loader.py,sha256=E_l5hrqwrGvAWCE-CHwjqAQErjxdzwgJ7AY31au5Hhk,42122
105
106
  claude_mpm/core/hook_manager.py,sha256=N-54QwNsyrUZSrH533HAo6hlJKPFbgMeDirg92H8en8,11014
106
107
  claude_mpm/core/hook_performance_config.py,sha256=Cqf-89mjiLlFJ-v4PhxfzsaOVovYYQa5pa-RMm42Ki8,5748
107
108
  claude_mpm/core/injectable_service.py,sha256=HXuviYX-h0sNxOFzgZiYjf-gLDUnQIeG-0-KuWdfCzk,7397
@@ -219,7 +220,7 @@ claude_mpm/services/subprocess_launcher_service.py,sha256=ZfMPJ2TvHP3SIho5wtCiBC
219
220
  claude_mpm/services/system_instructions_service.py,sha256=OVrTABcN99Hb7hcr95UEObUyLj45CVj_-aTvDsfioLY,10058
220
221
  claude_mpm/services/ticket_manager.py,sha256=SJCaVqDnsv-ZyjBZ38zwR-GhoCMTXhr0HF7fJjP7dYo,606
221
222
  claude_mpm/services/utility_service.py,sha256=zAt1EaTXfsyXymRD6UTuFFAM6kZORkdGaKFV0jhBGlI,8465
222
- claude_mpm/services/version_service.py,sha256=ys_ZTY_VAUEpzUhuOUz6Yg9V6f9COZSqqmttflRS9kc,9812
223
+ claude_mpm/services/version_service.py,sha256=MG88cKmDQTcxVKXB_X0dI1CNNvXYZoxACfJii2cMlVE,10159
223
224
  claude_mpm/services/agents/__init__.py,sha256=ExaFbDQt4cf1bpLvrVHkZA-ev8chEBeZPI35AQRGh_E,2175
224
225
  claude_mpm/services/agents/deployment/__init__.py,sha256=d9l1uaf-G7v_mCxcz8OUQMFtgG8-JZviqXacOOlaU4g,539
225
226
  claude_mpm/services/agents/deployment/agent_config_provider.py,sha256=iH_N4Qi7gq_Pc4OYqsnaaX5KPVMlJ2dYkQS_PEVmLtY,13312
@@ -409,9 +410,9 @@ claude_mpm/utils/subprocess_utils.py,sha256=e74VlIPozCljZss_0SwLO3J1ZuIKRT9FrrFi
409
410
  claude_mpm/validation/__init__.py,sha256=YZhwE3mhit-lslvRLuwfX82xJ_k4haZeKmh4IWaVwtk,156
410
411
  claude_mpm/validation/agent_validator.py,sha256=szbK9d29v_T6xE_KvW845WLKXbS_yYpXQscrSrSeldI,20937
411
412
  claude_mpm/validation/frontmatter_validator.py,sha256=Q_aTyjigfKZQG7eSwLtwMfd0h_eyS9FQAm59ZFf5VYA,7036
412
- claude_mpm-4.0.9.dist-info/licenses/LICENSE,sha256=lpaivOlPuBZW1ds05uQLJJswy8Rp_HMNieJEbFlqvLk,1072
413
- claude_mpm-4.0.9.dist-info/METADATA,sha256=yfwG_dB9JY1ZhH2T0SMGfWDG9wmey7GzDVmasVV-W9Q,11818
414
- claude_mpm-4.0.9.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
415
- claude_mpm-4.0.9.dist-info/entry_points.txt,sha256=uafLVeHm4AXrzvdR77fXO3a2MmvvfGtmVU2iY8uIPt8,403
416
- claude_mpm-4.0.9.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
417
- claude_mpm-4.0.9.dist-info/RECORD,,
413
+ claude_mpm-4.0.10.dist-info/licenses/LICENSE,sha256=lpaivOlPuBZW1ds05uQLJJswy8Rp_HMNieJEbFlqvLk,1072
414
+ claude_mpm-4.0.10.dist-info/METADATA,sha256=sCeWoa3vLWYxaX2_PRoWeyQraB037QdGukeFuEELcSc,11819
415
+ claude_mpm-4.0.10.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
416
+ claude_mpm-4.0.10.dist-info/entry_points.txt,sha256=uafLVeHm4AXrzvdR77fXO3a2MmvvfGtmVU2iY8uIPt8,403
417
+ claude_mpm-4.0.10.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
418
+ claude_mpm-4.0.10.dist-info/RECORD,,