claude-mpm 5.4.102__py3-none-any.whl → 5.4.104__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 (33) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/cli/executor.py +23 -17
  3. claude_mpm/config/agent_presets.py +7 -7
  4. claude_mpm/core/unified_config.py +9 -6
  5. claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-311.pyc +0 -0
  6. claude_mpm/hooks/claude_hooks/__pycache__/auto_pause_handler.cpython-311.pyc +0 -0
  7. claude_mpm/hooks/claude_hooks/__pycache__/correlation_manager.cpython-311.pyc +0 -0
  8. claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-311.pyc +0 -0
  9. claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-311.pyc +0 -0
  10. claude_mpm/hooks/claude_hooks/__pycache__/installer.cpython-311.pyc +0 -0
  11. claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-311.pyc +0 -0
  12. claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-311.pyc +0 -0
  13. claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-311.pyc +0 -0
  14. claude_mpm/hooks/claude_hooks/auto_pause_handler.py +0 -0
  15. claude_mpm/hooks/claude_hooks/event_handlers.py +0 -0
  16. claude_mpm/hooks/claude_hooks/hook_handler.py +0 -0
  17. claude_mpm/hooks/claude_hooks/response_tracking.py +0 -0
  18. claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-311.pyc +0 -0
  19. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager.cpython-311.pyc +0 -0
  20. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-311.pyc +0 -0
  21. claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-311.pyc +0 -0
  22. claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-311.pyc +0 -0
  23. claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-311.pyc +0 -0
  24. claude_mpm/scripts/start_activity_logging.py +0 -0
  25. claude_mpm/services/agents/agent_recommendation_service.py +8 -8
  26. claude_mpm/services/agents/loading/framework_agent_loader.py +75 -2
  27. {claude_mpm-5.4.102.dist-info → claude_mpm-5.4.104.dist-info}/METADATA +1 -1
  28. {claude_mpm-5.4.102.dist-info → claude_mpm-5.4.104.dist-info}/RECORD +28 -13
  29. {claude_mpm-5.4.102.dist-info → claude_mpm-5.4.104.dist-info}/WHEEL +0 -0
  30. {claude_mpm-5.4.102.dist-info → claude_mpm-5.4.104.dist-info}/entry_points.txt +0 -0
  31. {claude_mpm-5.4.102.dist-info → claude_mpm-5.4.104.dist-info}/licenses/LICENSE +0 -0
  32. {claude_mpm-5.4.102.dist-info → claude_mpm-5.4.104.dist-info}/licenses/LICENSE-FAQ.md +0 -0
  33. {claude_mpm-5.4.102.dist-info → claude_mpm-5.4.104.dist-info}/top_level.txt +0 -0
claude_mpm/VERSION CHANGED
@@ -1 +1 @@
1
- 5.4.102
1
+ 5.4.104
@@ -206,27 +206,33 @@ def execute_command(command: str, args) -> int:
206
206
  "status": show_status,
207
207
  }
208
208
 
209
- # Get handler and invoke
209
+ # Get handler and call it with argument list (same pattern as autotodos)
210
210
  handler = handlers.get(subcommand)
211
211
  if handler:
212
- # Build Click context programmatically
213
- import click
214
-
215
- ctx = click.Context(command=handler)
212
+ try:
213
+ # Build argument list for Click command based on subcommand
214
+ click_args = []
216
215
 
217
- # Prepare keyword arguments from args
218
- kwargs = {}
219
- if hasattr(args, "format"):
220
- kwargs["format"] = args.format
221
- if hasattr(args, "hook_type"):
222
- kwargs["hook_type"] = args.hook_type
223
- if hasattr(args, "yes"):
224
- kwargs["yes"] = args.yes
216
+ # list command: --format, --hook-type
217
+ if subcommand == "list":
218
+ if hasattr(args, "format") and args.format:
219
+ click_args.extend(["--format", args.format])
220
+ if hasattr(args, "hook_type") and args.hook_type:
221
+ click_args.extend(["--hook-type", args.hook_type])
222
+ # clear command: --hook-type, -y
223
+ elif subcommand == "clear":
224
+ if hasattr(args, "hook_type") and args.hook_type:
225
+ click_args.extend(["--hook-type", args.hook_type])
226
+ if hasattr(args, "yes") and args.yes:
227
+ click_args.append("-y")
228
+ # diagnose command: hook_type (positional argument)
229
+ elif subcommand == "diagnose":
230
+ if hasattr(args, "hook_type") and args.hook_type:
231
+ click_args.append(args.hook_type)
232
+ # status and summary commands: no options
225
233
 
226
- try:
227
- # Invoke handler with arguments
228
- with ctx:
229
- handler.invoke(ctx, **kwargs)
234
+ # Call Click command with argument list and standalone_mode=False
235
+ handler(click_args, standalone_mode=False)
230
236
  return 0
231
237
  except SystemExit as e:
232
238
  return e.code if e.code is not None else 0
@@ -25,12 +25,16 @@ from typing import Any, Callable, Dict, List, Union
25
25
  PresetResolver = Union[List[str], Callable[[], List[str]]]
26
26
 
27
27
  # Core agents included in ALL presets (MIN and MAX)
28
+ # Standard 6 core agents for essential PM workflow functionality
28
29
  CORE_AGENTS = [
29
30
  "claude-mpm/mpm-agent-manager", # Agent lifecycle management
30
31
  "claude-mpm/mpm-skills-manager", # Skills management
31
- "universal/research", # Codebase investigation
32
+ "engineer/core/engineer", # General-purpose implementation
33
+ "universal/research", # Codebase exploration and analysis
34
+ "qa/qa", # Testing and quality assurance
32
35
  "documentation/documentation", # Documentation generation
33
- "engineer/core/engineer", # General-purpose engineering
36
+ "ops/core/ops", # Basic deployment operations
37
+ "documentation/ticketing", # Ticket tracking (essential for PM workflow)
34
38
  ]
35
39
 
36
40
  PRESETS: Dict[str, Dict[str, Any]] = {
@@ -39,11 +43,7 @@ PRESETS: Dict[str, Dict[str, Any]] = {
39
43
  # ========================================
40
44
  "minimal": {
41
45
  "description": "Core agents only - universal starter kit",
42
- "agents": CORE_AGENTS
43
- + [
44
- "qa/qa",
45
- "ops/core/ops",
46
- ],
46
+ "agents": CORE_AGENTS, # All 8 core agents (no additional needed)
47
47
  "use_cases": ["Any project type", "Quick start", "Learning"],
48
48
  },
49
49
  # ========================================
@@ -73,15 +73,18 @@ class AgentConfig(BaseModel):
73
73
  )
74
74
 
75
75
  # Required agents that are always deployed
76
+ # Standard 6 core agents for essential PM workflow functionality
77
+ # These are auto-deployed when no agents are specified in configuration
76
78
  required: List[str] = Field(
77
79
  default_factory=lambda: [
78
- "research",
79
- "mpm-skills-manager",
80
- "mpm-agent-manager",
81
- "memory-manager-agent", # Specific agent ID (not generic "memory-manager")
82
- "ticketing",
80
+ "engineer", # General-purpose implementation
81
+ "research", # Codebase exploration and analysis
82
+ "qa", # Testing and quality assurance
83
+ "documentation", # Documentation generation
84
+ "ops", # Basic deployment operations
85
+ "ticketing", # Ticket tracking (essential for PM workflow)
83
86
  ],
84
- description="Agents that are always deployed (core system agents)",
87
+ description="Agents that are always deployed (standard 6 core agents)",
85
88
  )
86
89
 
87
90
  include_universal: bool = Field(
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -30,16 +30,16 @@ class AgentRecommendationService:
30
30
  Can be used by CLI, API, or future auto-configuration features.
31
31
  """
32
32
 
33
- # Core agents always included - matches ToolchainDetector.CORE_AGENTS
33
+ # Core agents always included - Standard 6 core agents for essential PM workflow
34
+ # These agents are auto-deployed when no configuration exists
34
35
  # Uses exact agent IDs from repository for consistency
35
36
  CORE_AGENTS = {
36
- "engineer",
37
- "qa-agent",
38
- "memory-manager-agent",
39
- "local-ops-agent",
40
- "research-agent",
41
- "documentation-agent",
42
- "security-agent",
37
+ "engineer", # General-purpose implementation
38
+ "research", # Codebase exploration and analysis
39
+ "qa", # Testing and quality assurance
40
+ "documentation", # Documentation generation
41
+ "ops", # Basic deployment operations
42
+ "ticketing", # Ticket tracking (essential for PM workflow)
43
43
  }
44
44
 
45
45
  # Map detected languages to recommended engineer agents
@@ -10,10 +10,19 @@ Loading precedence: Project → User → System
10
10
 
11
11
  This service integrates with the main agent_loader.py to provide
12
12
  markdown-based agent profiles alongside JSON-based templates.
13
+
14
+ Auto-Deployment: When no agents are configured, the standard 6 core agents
15
+ are automatically deployed:
16
+ - engineer: General-purpose implementation
17
+ - research: Codebase exploration and analysis
18
+ - qa: Testing and quality assurance
19
+ - documentation: Documentation generation
20
+ - ops: Basic deployment operations
21
+ - ticketing: Ticket tracking (essential for PM workflow)
13
22
  """
14
23
 
15
24
  from pathlib import Path
16
- from typing import Any, Dict, Optional
25
+ from typing import Any, Dict, List, Optional
17
26
 
18
27
  from claude_mpm.agents.agent_loader import AgentTier, list_agents_by_tier
19
28
  from claude_mpm.core.logging_utils import get_logger
@@ -21,6 +30,17 @@ from claude_mpm.core.unified_paths import get_path_manager
21
30
 
22
31
  logger = get_logger(__name__)
23
32
 
33
+ # Standard 6 core agents that are auto-deployed when no agents are specified
34
+ # This list is the canonical source - other modules should import from here
35
+ CORE_AGENTS: List[str] = [
36
+ "engineer", # General-purpose implementation
37
+ "research", # Codebase exploration and analysis
38
+ "qa", # Testing and quality assurance
39
+ "documentation", # Documentation generation
40
+ "ops", # Basic deployment operations
41
+ "ticketing", # Ticket tracking (essential for PM workflow)
42
+ ]
43
+
24
44
 
25
45
  class FrameworkAgentLoader:
26
46
  """Loads agent profiles from project, user, and system directories with proper precedence"""
@@ -86,7 +106,7 @@ class FrameworkAgentLoader:
86
106
  data_claude = package_path / "data" / "agents" / "CLAUDE.md"
87
107
  if data_instructions.exists() or data_claude.exists():
88
108
  return package_path / "data"
89
- except Exception:
109
+ except Exception: # nosec B110 - intentional fallthrough to next location
90
110
  pass
91
111
 
92
112
  current = Path.cwd()
@@ -431,3 +451,56 @@ Please operate according to your profile specifications and maintain quality sta
431
451
  """
432
452
 
433
453
  return instruction.strip()
454
+
455
+ def get_core_agents(self) -> List[str]:
456
+ """
457
+ Get the standard 6 core agents for auto-deployment.
458
+
459
+ These agents are automatically deployed when no agents are specified
460
+ in the configuration. They provide essential PM workflow functionality.
461
+
462
+ Returns:
463
+ List of core agent IDs
464
+
465
+ Example:
466
+ >>> loader = FrameworkAgentLoader()
467
+ >>> core = loader.get_core_agents()
468
+ >>> 'engineer' in core
469
+ True
470
+ >>> len(core)
471
+ 6
472
+ """
473
+ return CORE_AGENTS.copy()
474
+
475
+ def get_agents_with_fallback(self) -> Dict[str, list]:
476
+ """
477
+ Get available agents, falling back to core agents if none found.
478
+
479
+ This method implements the auto-deployment logic: when no agents
480
+ are found in any tier (project, user, system), it returns the
481
+ standard 6 core agents as a fallback.
482
+
483
+ Returns:
484
+ Dictionary with agent lists by tier. If no agents found in any tier,
485
+ returns core agents under 'fallback' key.
486
+
487
+ Example:
488
+ >>> loader = FrameworkAgentLoader()
489
+ >>> loader.initialize()
490
+ >>> agents = loader.get_agents_with_fallback()
491
+ >>> if 'fallback' in agents:
492
+ ... print("Using core agents as fallback")
493
+ """
494
+ available = self.get_available_agents()
495
+
496
+ # Check if any agents are found
497
+ total_agents = sum(len(agents) for agents in available.values())
498
+
499
+ if total_agents == 0:
500
+ logger.info(
501
+ "No agents found in configuration. "
502
+ "Auto-deploying standard 6 core agents."
503
+ )
504
+ return {"fallback": CORE_AGENTS.copy()}
505
+
506
+ return available
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-mpm
3
- Version: 5.4.102
3
+ Version: 5.4.104
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
@@ -1,5 +1,5 @@
1
1
  claude_mpm/BUILD_NUMBER,sha256=9JfxhnDtr-8l3kCP2U5TVXSErptHoga8m7XA8zqgGOc,4
2
- claude_mpm/VERSION,sha256=7BisaLazCkuebHWk9nyaTT5wGRPgme1Q2NJy5-DcIo4,8
2
+ claude_mpm/VERSION,sha256=u2IW-FZis-WhBsFTnPey3Q0V0o8e-Zwv4EJx84eW-PU,8
3
3
  claude_mpm/__init__.py,sha256=AGfh00BHKvLYD-UVFw7qbKtl7NMRIzRXOWw7vEuZ-h4,2214
4
4
  claude_mpm/__main__.py,sha256=Ro5UBWBoQaSAIoSqWAr7zkbLyvi4sSy28WShqAhKJG0,723
5
5
  claude_mpm/constants.py,sha256=pz3lTrZZR5HhV3eZzYtIbtBwWo7iM6pkBHP_ixxmI6Y,6827
@@ -39,7 +39,7 @@ claude_mpm/agents/templates/validation-templates.md,sha256=Y4_D7dphQaKigZWqKWvJ4
39
39
  claude_mpm/cli/__init__.py,sha256=j5x0uyJ4bRrKY1V4626cQI66OZsBzRz6JN26gQBxYSQ,4568
40
40
  claude_mpm/cli/__main__.py,sha256=KSy-J-vbTM2yXHOjsBJNZ60I2CJ2i5QP5zxsZV7-cjo,997
41
41
  claude_mpm/cli/chrome_devtools_installer.py,sha256=efA_ZX1iR3oaJi3222079BQw6DEG8KYr2HVGtgVj2Gs,5637
42
- claude_mpm/cli/executor.py,sha256=BswSkXHYbkBFuy0Wg7h1YpPExwK9KZZiev_630EB4Nc,14004
42
+ claude_mpm/cli/executor.py,sha256=rAo-zxp_QmSDpwLVX-BiaXdDQZUxD-9BjjOzsRmuExw,14734
43
43
  claude_mpm/cli/helpers.py,sha256=CypEhw0tbNH6_GzVTaQdi4w7ThCWO43Ep92YbJzPR4I,3638
44
44
  claude_mpm/cli/parser.py,sha256=Vqx9n-6Xo1uNhXR4rThmgWpZXTr0nOtkgDf3oMS9b0g,5855
45
45
  claude_mpm/cli/startup.py,sha256=JyNv5YZa_xC6B8fmw-mNxv0XK-XhIWFibJUz72Tg2H8,63021
@@ -164,7 +164,7 @@ claude_mpm/commands/mpm-version.md,sha256=YGmoK3xnOQS6UkOUG_N5uh-7vJ8Ey0bSD66Qpj
164
164
  claude_mpm/commands/mpm.md,sha256=zAQJatuONUsVL3vgm7CxIyw648U75ds6c3Zx34xa3rw,968
165
165
  claude_mpm/config/__init__.py,sha256=V2dyJQ8_gVCpNiCg8zYTQqE1RSeON5Zm8n5Ndkqhp1g,916
166
166
  claude_mpm/config/agent_config.py,sha256=IpHt9jfY335dnWbFbZHz3fBwQr5afQMvQ1c1Uo4zGmA,14862
167
- claude_mpm/config/agent_presets.py,sha256=EGqGQFElNo27Q-Q4JLLBVvxr4aulLANIiwDBuE9CFg0,15588
167
+ claude_mpm/config/agent_presets.py,sha256=XifeOkPwb0BULWDq5aIbhR7n06IOXtVQ-RIxAwRZqNU,15815
168
168
  claude_mpm/config/agent_sources.py,sha256=UVXHbi18Hl3jD7fWZ_IAP9kc18EQONMJIRKsHp-c_yg,12626
169
169
  claude_mpm/config/experimental_features.py,sha256=cH95HqMUEQL-_Hs833dAAC33GHMUE5e26qpOyiEtBWI,7546
170
170
  claude_mpm/config/model_config.py,sha256=34JnIb_U19UYns3yLX-jjpuNywDnVZhiUSvvDzGzx0g,12410
@@ -218,7 +218,7 @@ claude_mpm/core/tool_access_control.py,sha256=dpdxxp_77SuxGM2C7SsHUZbtysJmHw1rLD
218
218
  claude_mpm/core/types.py,sha256=Sv62QhMYvfxbt7oIGoAhhN_jxonFTeLRf-BuhxZ4vYw,7719
219
219
  claude_mpm/core/typing_utils.py,sha256=qny3rA9mAeXqdLgUj9DZg642shw4LmLbkPqADN-765s,13314
220
220
  claude_mpm/core/unified_agent_registry.py,sha256=YbL-oWeHU85zdf1mF7tyMHBYKtFBupsMeH9BCdzD6ZI,34161
221
- claude_mpm/core/unified_config.py,sha256=V1Nyj8b6HGjGOQfuofS6_ZQA0FBNlqtpAVMn8EsosOc,21826
221
+ claude_mpm/core/unified_config.py,sha256=DSE5JZhLJNDAfSzb4hAKrj1_nrvfBfNgyHOqXplphVg,22120
222
222
  claude_mpm/core/unified_paths.py,sha256=F2NYAK6RNtn_xsZnVHVfP7MErzDh_O9hyaa3B4OyT9A,36690
223
223
  claude_mpm/core/framework/__init__.py,sha256=IJCp6-MQO8gW31uG8aMWHdNg54NgGvXb4GvOuwZF6Iw,736
224
224
  claude_mpm/core/framework/formatters/__init__.py,sha256=OKkLN2x21rcbg3d3feZLixIS-UjHPlxl768uGmQy7Qc,307
@@ -343,12 +343,27 @@ claude_mpm/hooks/claude_hooks/installer.py,sha256=VbvVGMcrmCXQB3Pf9zOdjeGET2AFqb
343
343
  claude_mpm/hooks/claude_hooks/memory_integration.py,sha256=73w7A5-3s5i1oYdkbEgw7qhgalQvSuJjfx6OFqfaw64,9963
344
344
  claude_mpm/hooks/claude_hooks/response_tracking.py,sha256=bgX4iVQqmX0L3_GHyKs1q4CSIjnavdxYnJZT0GaT4gs,17148
345
345
  claude_mpm/hooks/claude_hooks/tool_analysis.py,sha256=3_o2PP9D7wEMwLriCtIBOw0cj2fSZfepN7lI4P1meSQ,7862
346
+ claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-311.pyc,sha256=EGpgXqhPM0iRRZtCqHaLVQ6wDH42OH_M7Gt5GiFLyro,346
347
+ claude_mpm/hooks/claude_hooks/__pycache__/auto_pause_handler.cpython-311.pyc,sha256=X7A8O4KPXkuDaLDFbF7Izi1qVDyS0tQjHVo1xy_HzNQ,21172
348
+ claude_mpm/hooks/claude_hooks/__pycache__/correlation_manager.cpython-311.pyc,sha256=SQX5iiP9bQZkLL-cj_2tlGH7lpAzarO0mYal7btj3tc,3521
349
+ claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-311.pyc,sha256=76VtByCuOr7L1_snjeHo1iWDyD2QyvoMpAj1hrSq4-Q,45735
350
+ claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-311.pyc,sha256=ehLm68zhDmqOwzr1Di6xYjGuE9SRg0mvKePQfepuuQ4,30577
351
+ claude_mpm/hooks/claude_hooks/__pycache__/installer.cpython-311.pyc,sha256=9mpAKY4gNcbU5VvZ5tGbf2UM0uIEWdreKSUvVr_BKcM,33917
352
+ claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-311.pyc,sha256=YbwauQDKSGvXkT1972faalJLuxwyvq328DYQhkCnel0,10513
353
+ claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-311.pyc,sha256=-L-n4xvi1eHY48MdZ-7v249UaNfkuiIwfwxdPgxwd80,16730
354
+ claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-311.pyc,sha256=ZjcNfNY5Ht6FhalPeh7M7OzMffcey5iF4AVjDDg9kak,10694
346
355
  claude_mpm/hooks/claude_hooks/services/__init__.py,sha256=OIYOKsUNw1BHYawOCp-KFK5kmQKuj92cCqCEPO0nwo0,585
347
356
  claude_mpm/hooks/claude_hooks/services/connection_manager.py,sha256=6MhoPiSQSkG5Xsb9KjPk_eu60h6-v5uNXjn6ry255aA,10452
348
357
  claude_mpm/hooks/claude_hooks/services/connection_manager_http.py,sha256=7YKEsD45us5SNnj-jpSyFBYbU0KrZ8FWoIdZDUeU2gI,7795
349
358
  claude_mpm/hooks/claude_hooks/services/duplicate_detector.py,sha256=Fh9LmEMsVmQM9t0U1v2l_fuBwvNpVkl_0EF8Wu5KLHQ,3882
350
359
  claude_mpm/hooks/claude_hooks/services/state_manager.py,sha256=QB0JPJQThTVg0TGRO3Dc_3y3bac-hkulgMqqzo_71ng,11189
351
360
  claude_mpm/hooks/claude_hooks/services/subagent_processor.py,sha256=nJw1ERCMxq23ioZ5DKwprmwO0fuvuqpdFHJ03XaMiDo,16052
361
+ claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-311.pyc,sha256=xBfLBSqnpcKfcQBWfh7xUm454g1lq1LvbO7SxGvcOPc,644
362
+ claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager.cpython-311.pyc,sha256=9BnGRXKqMq5FI3vqUlho0NyMxJTiMD_Pn560x-4kNh4,10513
363
+ claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-311.pyc,sha256=xN6QYqLTQ9I9qPDKsSikhAhncXrxYemjfQp4wLiiq9M,9774
364
+ claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-311.pyc,sha256=Yy_REAUhJCiFjOhxeDb4v0qyEvEbUtCmXD9PAz40dhw,5321
365
+ claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-311.pyc,sha256=TPkEc-Zi3oNS5dCXBpGbSZwg_8RQvzNzd4pVx9B3WeM,12364
366
+ claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-311.pyc,sha256=WffRFbZrgwiOypPUMgcm_LT18AtyGckgDny5IXhkogg,15554
352
367
  claude_mpm/hooks/failure_learning/__init__.py,sha256=iJ80AKFHiT8DjIH2a72DQVJvL6nAFrizNA2yTKwZ4rw,1805
353
368
  claude_mpm/hooks/failure_learning/failure_detection_hook.py,sha256=KENoB5N-dBm5hb0SxeIZtCvNKbmG2BKHOJSrSO-3Z_I,7500
354
369
  claude_mpm/hooks/failure_learning/fix_detection_hook.py,sha256=XUk1bnBVLdfhQ9AMQSvGsTSeFQsKsVud2wbWX-Jjor8,7164
@@ -407,7 +422,7 @@ claude_mpm/services/version_service.py,sha256=QSCEVZ1yrbT2OrqjiFaGhT0oPJSMCX9Z84
407
422
  claude_mpm/services/agents/__init__.py,sha256=ZkES34SfCrTzWjdoCZExRccPHXXWEBzech6dNEb3T9g,2547
408
423
  claude_mpm/services/agents/agent_builder.py,sha256=ehnzIgQ3OcF5ThqvbmS4c4ZyA-hbpvF7YhMjTKNJQkA,16378
409
424
  claude_mpm/services/agents/agent_preset_service.py,sha256=YpIKwaq52Pi4ox6ha3L9qTT4GHc-1nPeGgV0MWGRIAs,8588
410
- claude_mpm/services/agents/agent_recommendation_service.py,sha256=nQEg7nHMBJ3MlGaPSdBKGJrJpuIoyggjH_sGTyv1C8M,9626
425
+ claude_mpm/services/agents/agent_recommendation_service.py,sha256=f3F6LkPG1S42ZE52o8QnSdFwZFsv_7vgegJ6bCNbWWk,9846
411
426
  claude_mpm/services/agents/agent_review_service.py,sha256=1meV6u8FGbYMx1vhSsCX8OembWbF3gXfl26hRdGd95Y,10001
412
427
  claude_mpm/services/agents/agent_selection_service.py,sha256=ItCXMuFv3XzBuZAVUvx74gMeRbXTCOBFh5vLlgurJKg,17951
413
428
  claude_mpm/services/agents/auto_config_manager.py,sha256=WdrOaosxmK1iD-1Me7eZ-VJzMW-p8liei6iEjGkbodA,30706
@@ -497,7 +512,7 @@ claude_mpm/services/agents/deployment/validation/validation_result.py,sha256=SxD
497
512
  claude_mpm/services/agents/loading/__init__.py,sha256=jDKxJ4kmuMT5kJkeqUjazADtfr4zXtd8dm8EwZIfWhQ,306
498
513
  claude_mpm/services/agents/loading/agent_profile_loader.py,sha256=AjGOXrLP20_ekBMwtVf0eS-hqxZj5R-EMlMoIFjvucs,25042
499
514
  claude_mpm/services/agents/loading/base_agent_manager.py,sha256=ifjCdluQXNkcTJN46OCZmRZ4mf23uWHUcvxj4PzUK1c,14886
500
- claude_mpm/services/agents/loading/framework_agent_loader.py,sha256=JSQPPbO39W4kjCc3AWGjJCwLKHswBbvm-NP6zo7EogE,17598
515
+ claude_mpm/services/agents/loading/framework_agent_loader.py,sha256=GE8ZG4pK8NdUi9rhVJaeJuYfGURLe3yRLVdias-Q5CI,20269
501
516
  claude_mpm/services/agents/management/__init__.py,sha256=--BL1mjPq28_Lil5Ogsz367jdtIYXo7u5AWhAoWxUhU,234
502
517
  claude_mpm/services/agents/management/agent_capabilities_generator.py,sha256=Xt4_yA5EbvPIh_bInnIiVDTbAyqMHiduC9Pf-vRH0xI,7003
503
518
  claude_mpm/services/agents/management/agent_management_service.py,sha256=_scmVmrnnZoWL6vnchswx8PBmu96Lz7NyKPuv9yPuWk,23014
@@ -983,10 +998,10 @@ claude_mpm/utils/subprocess_utils.py,sha256=D0izRT8anjiUb_JG72zlJR_JAw1cDkb7kalN
983
998
  claude_mpm/validation/__init__.py,sha256=YZhwE3mhit-lslvRLuwfX82xJ_k4haZeKmh4IWaVwtk,156
984
999
  claude_mpm/validation/agent_validator.py,sha256=GprtAvu80VyMXcKGsK_VhYiXWA6BjKHv7O6HKx0AB9w,20917
985
1000
  claude_mpm/validation/frontmatter_validator.py,sha256=YpJlYNNYcV8u6hIOi3_jaRsDnzhbcQpjCBE6eyBKaFY,7076
986
- claude_mpm-5.4.102.dist-info/licenses/LICENSE,sha256=ca3y_Rk4aPrbF6f62z8Ht5MJM9OAvbGlHvEDcj9vUQ4,3867
987
- claude_mpm-5.4.102.dist-info/licenses/LICENSE-FAQ.md,sha256=TxfEkXVCK98RzDOer09puc7JVCP_q_bN4dHtZKHCMcM,5104
988
- claude_mpm-5.4.102.dist-info/METADATA,sha256=UVxxzz1uAWThEl4jzchNFi8cTSBZ6o6By6FesCHOyOs,14350
989
- claude_mpm-5.4.102.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
990
- claude_mpm-5.4.102.dist-info/entry_points.txt,sha256=n-Uk4vwHPpuvu-g_I7-GHORzTnN_m6iyOsoLveKKD0E,228
991
- claude_mpm-5.4.102.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
992
- claude_mpm-5.4.102.dist-info/RECORD,,
1001
+ claude_mpm-5.4.104.dist-info/licenses/LICENSE,sha256=ca3y_Rk4aPrbF6f62z8Ht5MJM9OAvbGlHvEDcj9vUQ4,3867
1002
+ claude_mpm-5.4.104.dist-info/licenses/LICENSE-FAQ.md,sha256=TxfEkXVCK98RzDOer09puc7JVCP_q_bN4dHtZKHCMcM,5104
1003
+ claude_mpm-5.4.104.dist-info/METADATA,sha256=NT50RmXXow29OCeGE89mcx44_NNgc7UA-M5JkcgLDE0,14350
1004
+ claude_mpm-5.4.104.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1005
+ claude_mpm-5.4.104.dist-info/entry_points.txt,sha256=n-Uk4vwHPpuvu-g_I7-GHORzTnN_m6iyOsoLveKKD0E,228
1006
+ claude_mpm-5.4.104.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
1007
+ claude_mpm-5.4.104.dist-info/RECORD,,