claude-mpm 4.1.2__py3-none-any.whl → 4.1.4__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 (87) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/agents/BASE_AGENT_TEMPLATE.md +16 -19
  3. claude_mpm/agents/MEMORY.md +21 -49
  4. claude_mpm/agents/templates/OPTIMIZATION_REPORT.md +156 -0
  5. claude_mpm/agents/templates/api_qa.json +36 -116
  6. claude_mpm/agents/templates/backup/data_engineer_agent_20250726_234551.json +42 -9
  7. claude_mpm/agents/templates/backup/documentation_agent_20250726_234551.json +29 -6
  8. claude_mpm/agents/templates/backup/engineer_agent_20250726_234551.json +34 -6
  9. claude_mpm/agents/templates/backup/ops_agent_20250726_234551.json +41 -9
  10. claude_mpm/agents/templates/backup/qa_agent_20250726_234551.json +30 -8
  11. claude_mpm/agents/templates/backup/research_agent_2025011_234551.json +2 -2
  12. claude_mpm/agents/templates/backup/research_agent_20250726_234551.json +29 -6
  13. claude_mpm/agents/templates/backup/research_memory_efficient.json +2 -2
  14. claude_mpm/agents/templates/backup/security_agent_20250726_234551.json +41 -9
  15. claude_mpm/agents/templates/backup/version_control_agent_20250726_234551.json +23 -7
  16. claude_mpm/agents/templates/code_analyzer.json +18 -36
  17. claude_mpm/agents/templates/data_engineer.json +43 -14
  18. claude_mpm/agents/templates/documentation.json +55 -74
  19. claude_mpm/agents/templates/engineer.json +57 -40
  20. claude_mpm/agents/templates/imagemagick.json +7 -2
  21. claude_mpm/agents/templates/memory_manager.json +1 -1
  22. claude_mpm/agents/templates/ops.json +36 -4
  23. claude_mpm/agents/templates/project_organizer.json +23 -71
  24. claude_mpm/agents/templates/qa.json +34 -2
  25. claude_mpm/agents/templates/refactoring_engineer.json +9 -5
  26. claude_mpm/agents/templates/research.json +36 -4
  27. claude_mpm/agents/templates/security.json +29 -2
  28. claude_mpm/agents/templates/ticketing.json +3 -3
  29. claude_mpm/agents/templates/vercel_ops_agent.json +2 -2
  30. claude_mpm/agents/templates/version_control.json +28 -2
  31. claude_mpm/agents/templates/web_qa.json +38 -151
  32. claude_mpm/agents/templates/web_ui.json +2 -2
  33. claude_mpm/cli/commands/agent_manager.py +221 -1
  34. claude_mpm/cli/commands/agents.py +556 -1009
  35. claude_mpm/cli/commands/memory.py +248 -927
  36. claude_mpm/cli/commands/run.py +139 -484
  37. claude_mpm/cli/parsers/agent_manager_parser.py +34 -0
  38. claude_mpm/cli/startup_logging.py +76 -0
  39. claude_mpm/core/agent_registry.py +6 -10
  40. claude_mpm/core/framework_loader.py +205 -595
  41. claude_mpm/core/log_manager.py +49 -1
  42. claude_mpm/core/logging_config.py +2 -4
  43. claude_mpm/hooks/claude_hooks/event_handlers.py +7 -117
  44. claude_mpm/hooks/claude_hooks/hook_handler.py +91 -755
  45. claude_mpm/hooks/claude_hooks/hook_handler_original.py +1040 -0
  46. claude_mpm/hooks/claude_hooks/hook_handler_refactored.py +347 -0
  47. claude_mpm/hooks/claude_hooks/services/__init__.py +13 -0
  48. claude_mpm/hooks/claude_hooks/services/connection_manager.py +190 -0
  49. claude_mpm/hooks/claude_hooks/services/duplicate_detector.py +106 -0
  50. claude_mpm/hooks/claude_hooks/services/state_manager.py +282 -0
  51. claude_mpm/hooks/claude_hooks/services/subagent_processor.py +374 -0
  52. claude_mpm/services/agents/deployment/agent_deployment.py +42 -454
  53. claude_mpm/services/agents/deployment/base_agent_locator.py +132 -0
  54. claude_mpm/services/agents/deployment/deployment_results_manager.py +185 -0
  55. claude_mpm/services/agents/deployment/single_agent_deployer.py +315 -0
  56. claude_mpm/services/agents/memory/agent_memory_manager.py +42 -508
  57. claude_mpm/services/agents/memory/memory_categorization_service.py +165 -0
  58. claude_mpm/services/agents/memory/memory_file_service.py +103 -0
  59. claude_mpm/services/agents/memory/memory_format_service.py +201 -0
  60. claude_mpm/services/agents/memory/memory_limits_service.py +99 -0
  61. claude_mpm/services/agents/registry/__init__.py +1 -1
  62. claude_mpm/services/cli/__init__.py +18 -0
  63. claude_mpm/services/cli/agent_cleanup_service.py +407 -0
  64. claude_mpm/services/cli/agent_dependency_service.py +395 -0
  65. claude_mpm/services/cli/agent_listing_service.py +463 -0
  66. claude_mpm/services/cli/agent_output_formatter.py +605 -0
  67. claude_mpm/services/cli/agent_validation_service.py +589 -0
  68. claude_mpm/services/cli/dashboard_launcher.py +424 -0
  69. claude_mpm/services/cli/memory_crud_service.py +617 -0
  70. claude_mpm/services/cli/memory_output_formatter.py +604 -0
  71. claude_mpm/services/cli/session_manager.py +513 -0
  72. claude_mpm/services/cli/socketio_manager.py +498 -0
  73. claude_mpm/services/cli/startup_checker.py +370 -0
  74. claude_mpm/services/core/cache_manager.py +311 -0
  75. claude_mpm/services/core/memory_manager.py +637 -0
  76. claude_mpm/services/core/path_resolver.py +498 -0
  77. claude_mpm/services/core/service_container.py +520 -0
  78. claude_mpm/services/core/service_interfaces.py +436 -0
  79. claude_mpm/services/diagnostics/checks/agent_check.py +65 -19
  80. claude_mpm/services/memory/router.py +116 -10
  81. {claude_mpm-4.1.2.dist-info → claude_mpm-4.1.4.dist-info}/METADATA +1 -1
  82. {claude_mpm-4.1.2.dist-info → claude_mpm-4.1.4.dist-info}/RECORD +86 -55
  83. claude_mpm/cli/commands/run_config_checker.py +0 -159
  84. {claude_mpm-4.1.2.dist-info → claude_mpm-4.1.4.dist-info}/WHEEL +0 -0
  85. {claude_mpm-4.1.2.dist-info → claude_mpm-4.1.4.dist-info}/entry_points.txt +0 -0
  86. {claude_mpm-4.1.2.dist-info → claude_mpm-4.1.4.dist-info}/licenses/LICENSE +0 -0
  87. {claude_mpm-4.1.2.dist-info → claude_mpm-4.1.4.dist-info}/top_level.txt +0 -0
@@ -25,6 +25,7 @@ from datetime import datetime
25
25
  from typing import Any, Dict, List, Optional, Tuple
26
26
 
27
27
  from claude_mpm.core.config import Config
28
+ from claude_mpm.core.framework_loader import FrameworkLoader
28
29
  from claude_mpm.core.mixins import LoggerMixin
29
30
 
30
31
 
@@ -467,6 +468,84 @@ class MemoryRouter(LoggerMixin):
467
468
  """
468
469
  super().__init__()
469
470
  self.config = config or Config()
471
+ self._dynamic_patterns_loaded = False
472
+ self._dynamic_patterns = {}
473
+
474
+ def _load_dynamic_patterns(self) -> None:
475
+ """Load memory routing patterns dynamically from agent templates.
476
+
477
+ WHY: Allows agents to define their own memory routing patterns
478
+ in their template files, making the system more flexible and
479
+ maintainable.
480
+ """
481
+ if self._dynamic_patterns_loaded:
482
+ return
483
+
484
+ try:
485
+ # Initialize framework loader to access agent templates
486
+ framework_loader = FrameworkLoader()
487
+
488
+ # Try to load patterns from deployed agents
489
+ from pathlib import Path
490
+
491
+ # Check both project and user agent directories
492
+ agent_dirs = [
493
+ Path(".claude/agents"), # Project agents
494
+ Path.home() / ".claude-mpm/agents", # User agents
495
+ ]
496
+
497
+ for agent_dir in agent_dirs:
498
+ if not agent_dir.exists():
499
+ continue
500
+
501
+ # Look for deployed agent files
502
+ for agent_file in agent_dir.glob("*.md"):
503
+ agent_name = agent_file.stem
504
+
505
+ # Try to load memory routing from template
506
+ memory_routing = (
507
+ framework_loader._load_memory_routing_from_template(agent_name)
508
+ )
509
+
510
+ if memory_routing:
511
+ # Convert agent name to pattern key format
512
+ # e.g., "research-agent" -> "research"
513
+ pattern_key = (
514
+ agent_name.replace("-agent", "")
515
+ .replace("_agent", "")
516
+ .replace("-", "_")
517
+ )
518
+
519
+ # Build pattern structure from memory routing
520
+ pattern_data = {
521
+ "keywords": memory_routing.get("keywords", []),
522
+ "sections": memory_routing.get("categories", []),
523
+ }
524
+
525
+ # Merge with existing patterns or add new
526
+ if pattern_key in self.AGENT_PATTERNS:
527
+ # Merge keywords, keeping unique values
528
+ existing_keywords = set(
529
+ self.AGENT_PATTERNS[pattern_key]["keywords"]
530
+ )
531
+ new_keywords = set(memory_routing.get("keywords", []))
532
+ pattern_data["keywords"] = list(
533
+ existing_keywords | new_keywords
534
+ )
535
+
536
+ self._dynamic_patterns[pattern_key] = pattern_data
537
+ self.logger.debug(
538
+ f"Loaded dynamic memory routing for {pattern_key}"
539
+ )
540
+
541
+ self._dynamic_patterns_loaded = True
542
+ self.logger.info(
543
+ f"Loaded memory routing patterns for {len(self._dynamic_patterns)} agents"
544
+ )
545
+
546
+ except Exception as e:
547
+ self.logger.warning(f"Could not load dynamic memory routing patterns: {e}")
548
+ self._dynamic_patterns_loaded = True # Don't retry
470
549
 
471
550
  def get_supported_agents(self) -> List[str]:
472
551
  """Get list of supported agent types.
@@ -477,7 +556,12 @@ class MemoryRouter(LoggerMixin):
477
556
  Returns:
478
557
  List of supported agent type names
479
558
  """
480
- return list(self.AGENT_PATTERNS.keys())
559
+ self._load_dynamic_patterns()
560
+
561
+ # Combine static and dynamic patterns
562
+ all_agents = set(self.AGENT_PATTERNS.keys())
563
+ all_agents.update(self._dynamic_patterns.keys())
564
+ return list(all_agents)
481
565
 
482
566
  def is_agent_supported(self, agent_type: str) -> bool:
483
567
  """Check if an agent type is supported by the memory router.
@@ -491,7 +575,8 @@ class MemoryRouter(LoggerMixin):
491
575
  Returns:
492
576
  True if agent type is supported, False otherwise
493
577
  """
494
- return agent_type in self.AGENT_PATTERNS
578
+ self._load_dynamic_patterns()
579
+ return agent_type in self.AGENT_PATTERNS or agent_type in self._dynamic_patterns
495
580
 
496
581
  def analyze_and_route(
497
582
  self, content: str, context: Optional[Dict] = None
@@ -605,21 +690,30 @@ class MemoryRouter(LoggerMixin):
605
690
  Returns:
606
691
  Dict containing routing patterns and statistics
607
692
  """
693
+ self._load_dynamic_patterns()
694
+
695
+ # Combine static and dynamic patterns
696
+ all_patterns = dict(self.AGENT_PATTERNS)
697
+ all_patterns.update(self._dynamic_patterns)
698
+
608
699
  return {
609
- "agents": list(self.AGENT_PATTERNS.keys()),
700
+ "agents": list(all_patterns.keys()),
610
701
  "default_agent": self.DEFAULT_AGENT,
702
+ "static_agents": list(self.AGENT_PATTERNS.keys()),
703
+ "dynamic_agents": list(self._dynamic_patterns.keys()),
611
704
  "patterns": {
612
705
  agent: {
613
706
  "keyword_count": len(patterns["keywords"]),
614
707
  "section_count": len(patterns["sections"]),
615
708
  "keywords": patterns["keywords"][:10], # Show first 10
616
709
  "sections": patterns["sections"],
710
+ "source": (
711
+ "dynamic" if agent in self._dynamic_patterns else "static"
712
+ ),
617
713
  }
618
- for agent, patterns in self.AGENT_PATTERNS.items()
714
+ for agent, patterns in all_patterns.items()
619
715
  },
620
- "total_keywords": sum(
621
- len(p["keywords"]) for p in self.AGENT_PATTERNS.values()
622
- ),
716
+ "total_keywords": sum(len(p["keywords"]) for p in all_patterns.values()),
623
717
  }
624
718
 
625
719
  def _normalize_content(self, content: str) -> str:
@@ -663,9 +757,14 @@ class MemoryRouter(LoggerMixin):
663
757
  Returns:
664
758
  Dict mapping agent names to relevance scores
665
759
  """
760
+ self._load_dynamic_patterns()
666
761
  scores = {}
667
762
 
668
- for agent, patterns in self.AGENT_PATTERNS.items():
763
+ # Combine static and dynamic patterns
764
+ all_patterns = dict(self.AGENT_PATTERNS)
765
+ all_patterns.update(self._dynamic_patterns)
766
+
767
+ for agent, patterns in all_patterns.items():
669
768
  score = 0.0
670
769
  matched_keywords = []
671
770
 
@@ -773,10 +872,17 @@ class MemoryRouter(LoggerMixin):
773
872
  Returns:
774
873
  Section name for memory storage
775
874
  """
776
- if agent not in self.AGENT_PATTERNS:
875
+ self._load_dynamic_patterns()
876
+
877
+ # Check both static and dynamic patterns
878
+ if agent in self.AGENT_PATTERNS:
879
+ sections = self.AGENT_PATTERNS[agent]["sections"]
880
+ elif agent in self._dynamic_patterns:
881
+ sections = self._dynamic_patterns[agent]["sections"]
882
+ else:
777
883
  return "Recent Learnings"
778
884
 
779
- sections = self.AGENT_PATTERNS[agent]["sections"]
885
+ sections = sections if sections else []
780
886
 
781
887
  # Simple heuristics for section selection
782
888
  if "mistake" in content or "error" in content or "avoid" in content:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-mpm
3
- Version: 4.1.2
3
+ Version: 4.1.4
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,14 +1,14 @@
1
1
  claude_mpm/BUILD_NUMBER,sha256=toytnNjkIKPgQaGwDqQdC1rpNTAdSEc6Vja50d7Ovug,4
2
- claude_mpm/VERSION,sha256=s7tvaRWG3pAZ48x5vJPwUv5iiRHPOL_3cxmgUkLMf-w,6
2
+ claude_mpm/VERSION,sha256=o5FP181BUxf8Ay2o_LTaCIABFLB3K9OJ0P32IWJvxhw,6
3
3
  claude_mpm/__init__.py,sha256=lyTZAYGH4DTaFGLRNWJKk5Q5oTjzN5I6AXmfVX-Jff0,1512
4
4
  claude_mpm/__main__.py,sha256=Ro5UBWBoQaSAIoSqWAr7zkbLyvi4sSy28WShqAhKJG0,723
5
5
  claude_mpm/constants.py,sha256=8iLwOogyO85tq8hnBIlX2JfOoAL_eu8_9hDEEtNS394,5650
6
6
  claude_mpm/init.py,sha256=mcBonXUyP9pxEFFYfFcQ4OFLWiICT1XnonM_EdjIhoI,15133
7
7
  claude_mpm/ticket_wrapper.py,sha256=qe5xY579t7_7fK5nyeAfHN_fr7CXdeOD3jfXEc8-7yo,828
8
- claude_mpm/agents/BASE_AGENT_TEMPLATE.md,sha256=r3EZA186PH7IAPaHsLc3aF3WmB5nwkz207lbAOVwRTA,5965
8
+ claude_mpm/agents/BASE_AGENT_TEMPLATE.md,sha256=aK9qxS1FRpm_8VaB5GI2I6YA9Wr8dGHuea_txMFe44M,5524
9
9
  claude_mpm/agents/BASE_PM.md,sha256=OMWebRWA4ZDk9z3H9DxvksNYqfG4ZExFVNF2vUirUBo,9299
10
10
  claude_mpm/agents/INSTRUCTIONS.md,sha256=bTTlGVJwcYjdQ51PMsJXPW6FIEg15wItyHY2u0BYJSU,10777
11
- claude_mpm/agents/MEMORY.md,sha256=zzwq4ytOrRaj64iq1q7brC6WOCQ4PDDC75TTRT8QudA,3493
11
+ claude_mpm/agents/MEMORY.md,sha256=EeY1MwnrhaAij5_pUCt_lcOc2-coo3EYkWRyRbPyJmM,3181
12
12
  claude_mpm/agents/OUTPUT_STYLE.md,sha256=HZ5GhiTwMWj9G_uefmMguH4Ukhs2CQqa8u5FQ6HBrbo,2538
13
13
  claude_mpm/agents/WORKFLOW.md,sha256=y-tYNbSqJ4D4ND5TMc5bvcnq_mYw3Gwq9bnpz-LzwvQ,7972
14
14
  claude_mpm/agents/__init__.py,sha256=jRFxvV_DIZ-NdENa-703Xu3YpwvlQj6yv-mQ6FgmldM,3220
@@ -23,47 +23,48 @@ claude_mpm/agents/frontmatter_validator.py,sha256=GiCxr13b-SFwvZNbNHDO0lFH9dFhsQ
23
23
  claude_mpm/agents/system_agent_config.py,sha256=HBDrtRld1ruPqrThA0j4vtMr4cBt0fT7qjDeCR79bps,24105
24
24
  claude_mpm/agents/backups/INSTRUCTIONS.md,sha256=tdekngpZ5RjECYZosOaDSBmXPZsVvZcwDQEmmlw7fOQ,14268
25
25
  claude_mpm/agents/schema/agent_schema.json,sha256=3p-_vcEAz5Py0ik7LPSJB9CQyE9L_zHhC82J0eCfn78,8784
26
+ claude_mpm/agents/templates/OPTIMIZATION_REPORT.md,sha256=qSIZ77DARoOcR4pL-izYDFCgNmXO3m6tbJyAXuYX20E,5765
26
27
  claude_mpm/agents/templates/__init__.py,sha256=kghxAWs3KvcAA9Esk3NI7caumYgW6fiW8vRO1-MEndU,2735
27
28
  claude_mpm/agents/templates/agent-manager.json,sha256=pRMILoAMxVZcc5g_XwStpJoz2K8LJo8sUyJB6bep6rI,628
28
29
  claude_mpm/agents/templates/agent-manager.md,sha256=vsy49vWxIlMVLX6H7_BtjPDaR4j_gkechvgWbN88aPI,8218
29
- claude_mpm/agents/templates/api_qa.json,sha256=uyKVTkHh_wY5hbrQoshM1sVq9lO0PkkbsXM2Kn8QQBc,19111
30
- claude_mpm/agents/templates/code_analyzer.json,sha256=WZ5z27cB3-SgXU9ubbK1m_XyiIqSigZFAes_ZnpP7NE,24778
31
- claude_mpm/agents/templates/data_engineer.json,sha256=1xlnCPJM4IR8jlqh_wkV7G1x7uuo15afl1l7zo64yt8,17442
32
- claude_mpm/agents/templates/documentation.json,sha256=Lfd2WvlpQVLMPgJkrgJNvF1QrEzDy0Ej3Junh5brXaE,13820
33
- claude_mpm/agents/templates/engineer.json,sha256=99sm1Pv7Ez5c_NhUPM_byr2jaLv0R1kl-ve-7YMsKYM,8518
34
- claude_mpm/agents/templates/imagemagick.json,sha256=yszLBxNkcGXHbRdFKGMsZYXFeuJL5yGXTgIi_kbi7D4,17596
35
- claude_mpm/agents/templates/memory_manager.json,sha256=XgXZYJFXFsNHRzwl_qyIKF6jzBa0dv6DqoiU8uuzHvw,12613
36
- claude_mpm/agents/templates/ops.json,sha256=CR4a_PAKorVPEPKEMTnVeItZMVFyah-wlU5qC0caCwY,6639
37
- claude_mpm/agents/templates/project_organizer.json,sha256=MpnwngqsKb4bEfTsnwOJCs1AMV29FEkx2sf2f_PZo5Y,17162
38
- claude_mpm/agents/templates/qa.json,sha256=BMjNCbQDsVawo5qBytTC4be03voOlExoh3n56utVmKs,8732
39
- claude_mpm/agents/templates/refactoring_engineer.json,sha256=HZs2wU-t9KSVFSaYPZATbZcdfuukGWq6L0ma3K5Bv7o,11761
40
- claude_mpm/agents/templates/research.json,sha256=5A0W3KpXx959JlowmcuxuUyak2gQMYO8n0Jv1_Mcmq4,7813
41
- claude_mpm/agents/templates/security.json,sha256=LRGVHNfUdB9EI-r7WsOdg8do4OxAMfV3BurlV_rY07o,14222
42
- claude_mpm/agents/templates/ticketing.json,sha256=qZp2fhXWbDvvyB95XrbZNqV4CVvItZ_C-Ss8a6FAxsM,11514
43
- claude_mpm/agents/templates/vercel_ops_agent.json,sha256=t_jjZeNThEYBJtntbSxR_grIr5nV_ktroJME_eXyx14,7926
30
+ claude_mpm/agents/templates/api_qa.json,sha256=hTdeNOgA2tzADCb2V9ExguFSvAv267yQYqa26AnOQHk,5786
31
+ claude_mpm/agents/templates/code_analyzer.json,sha256=UOTXl6VTmzx1OoF5M4Bc9lQGriLf6Jq84rz30J77tEM,4718
32
+ claude_mpm/agents/templates/data_engineer.json,sha256=rP3ffuaHwe0xGVpXShhVHTn1jEVMV2aAlnNGZL8j3jc,5629
33
+ claude_mpm/agents/templates/documentation.json,sha256=6G7U_48t8XX16YKI4NYMnmUU7eQ5ARGpQ7jzUshAuHc,6389
34
+ claude_mpm/agents/templates/engineer.json,sha256=ecb84bedntQHRttqxiQhgeI9GL6KJx5SboToG94pE3s,6622
35
+ claude_mpm/agents/templates/imagemagick.json,sha256=Hh5Y3OmhexTESiOZNyq79imbZ0-Vs8vpD2lpRi1x7FM,17747
36
+ claude_mpm/agents/templates/memory_manager.json,sha256=aQKZCnkljawXaY4fgtyzqKziIAsL2mtQOsh1HZ7qcws,12613
37
+ claude_mpm/agents/templates/ops.json,sha256=oC1pjdJrlRn4YBbP3RWFnmzpy-2ImabFR6GjsaWe3pI,7409
38
+ claude_mpm/agents/templates/project_organizer.json,sha256=wFpdLeMgpTMWPpd7zHDgJq-0_fyph9VOXMoZkRgwD5c,5632
39
+ claude_mpm/agents/templates/qa.json,sha256=2JunnzgFNdz_HE6_S3W84gShPnMPzH1sT63eoO1-Ie8,9526
40
+ claude_mpm/agents/templates/refactoring_engineer.json,sha256=EArflslbK27cCYtBlLpprf6BxIj5YHDpMneW5rk3jCc,11877
41
+ claude_mpm/agents/templates/research.json,sha256=EWCIP6GMtpnlVGeV9Ee2jf_PMzENaSxnau937lBIEec,8636
42
+ claude_mpm/agents/templates/security.json,sha256=Y04JVClNb1iGuMtaRjzXz3abQ8o1hR1cEBp3HHNOj5Y,14833
43
+ claude_mpm/agents/templates/ticketing.json,sha256=1aWHb9ASS178VDcNCIAz-cxWnk_jmODmwg87SV7ZqJo,11514
44
+ claude_mpm/agents/templates/vercel_ops_agent.json,sha256=FAg-erdW4b0o7zs2uUiEHdFEymT8ENxWZH4bpvjCPKQ,7927
44
45
  claude_mpm/agents/templates/vercel_ops_instructions.md,sha256=yDf5_2IEC22t6CqZaKCpbk1PIccHt3BbbnQ6IbAay38,15500
45
- claude_mpm/agents/templates/version_control.json,sha256=I_BudE8mEMWUwKYdkh36B-VraJwY7WLmOvgVTUJI3i0,13910
46
- claude_mpm/agents/templates/web_qa.json,sha256=nz_V_a6vovlm0jnJOblmvy3GpqKoPxzJgc-U26QVMZQ,31496
47
- claude_mpm/agents/templates/web_ui.json,sha256=O0zjrFOsR8P_gQJrNFMi7aIEaISLnt7tNn3KxwsIxbM,34906
48
- claude_mpm/agents/templates/backup/data_engineer_agent_20250726_234551.json,sha256=lLso4RHXVTQmX4A1XwF84kT59zZDblPO1xCgBj4S4x8,5060
49
- claude_mpm/agents/templates/backup/documentation_agent_20250726_234551.json,sha256=snfJW2yW9aMv9ldCSIWW7zwnyoQRx5u7xLMkNlfus9I,2258
50
- claude_mpm/agents/templates/backup/engineer_agent_20250726_234551.json,sha256=21o8TGCM9TO6eocSV9Ev5MmCq-xYwwCqMU7KQESaY2Q,8479
51
- claude_mpm/agents/templates/backup/ops_agent_20250726_234551.json,sha256=y-unQijBWKAaPz3YCFoe21OMZXsU8jJ-mFrLGcmo8H0,2227
52
- claude_mpm/agents/templates/backup/qa_agent_20250726_234551.json,sha256=_FHWnUeh151rgWX_xUgXsfGrJz7Bs3wno2lXU0nTwAo,2157
53
- claude_mpm/agents/templates/backup/research_agent_2025011_234551.json,sha256=pk2Tg0GVSPEkPEnMw5Iax5QUFY8XY7uF1uPG6eHBe14,12336
54
- claude_mpm/agents/templates/backup/research_agent_20250726_234551.json,sha256=o4n_sqSbjnsFRELB2q501vgwm-o2tQNLJLYvnVP9LWU,5629
55
- claude_mpm/agents/templates/backup/research_memory_efficient.json,sha256=WlPnKlojeiCBZ4H75nWexLl_dHU5cSORIqLCDp4tCMM,8419
56
- claude_mpm/agents/templates/backup/security_agent_20250726_234551.json,sha256=l5YuD-27CxKSOsRLv0bDY_tCZyds0yGbeizLb8paeFY,2322
57
- claude_mpm/agents/templates/backup/version_control_agent_20250726_234551.json,sha256=too38RPTLJ9HutCMn0nfmEdCj2me241dx5tUYDFtu94,2143
46
+ claude_mpm/agents/templates/version_control.json,sha256=QulRKPGVBvcCsvrQNdZWMcwyFhLMVzo3Lzy63cWwlrY,14430
47
+ claude_mpm/agents/templates/web_qa.json,sha256=Mykq_61giWYQWW30iU3zuRh9P8yOPvoXkp_x3vOVAR0,6344
48
+ claude_mpm/agents/templates/web_ui.json,sha256=l1DHRCrXpHDl01K5lkhiLYjPtv6i90lMRE_jZjPkifM,34852
49
+ claude_mpm/agents/templates/backup/data_engineer_agent_20250726_234551.json,sha256=k0iVEhxBfcSbeoTmoZ9oXpV3iT9cylrJ_GF1fp3ngV8,5264
50
+ claude_mpm/agents/templates/backup/documentation_agent_20250726_234551.json,sha256=SkaO4cDfV3rVMQX6awTVIZFpa2_KojzohPp32yIzRRo,2403
51
+ claude_mpm/agents/templates/backup/engineer_agent_20250726_234551.json,sha256=9p1_Ad4neaXI05eaIF7tyd2582zYin5H5Zvo_tNUios,8654
52
+ claude_mpm/agents/templates/backup/ops_agent_20250726_234551.json,sha256=GZZE11TqEoo2EiA6e-ZYw2ZEIP4cJC_mj-QNb37iXZw,2425
53
+ claude_mpm/agents/templates/backup/qa_agent_20250726_234551.json,sha256=P3JOCnlcO-lF-d_D9YmT12gDAGhUHjnF6nHbHmU7rWE,2294
54
+ claude_mpm/agents/templates/backup/research_agent_2025011_234551.json,sha256=3_Qo1ZBORi7xtroqh5_fXk1xUdG5LGKdaCf3yed8gF4,12337
55
+ claude_mpm/agents/templates/backup/research_agent_20250726_234551.json,sha256=mgajkxBOfzIWzPN0XkFW-4GeXZjhA7yLRz40tm02kC0,5774
56
+ claude_mpm/agents/templates/backup/research_memory_efficient.json,sha256=4ucuMNzAkL5XFFpxYuHH0Qei3ekAoQ8RKlkyO9zjgcQ,8420
57
+ claude_mpm/agents/templates/backup/security_agent_20250726_234551.json,sha256=sSMY54y7cEWjV1vEfFkIvL8UfNvC1u1Rd9znB6MSRmk,2520
58
+ claude_mpm/agents/templates/backup/version_control_agent_20250726_234551.json,sha256=2Xrc5FW5udGnzQC5uluvnw5qLcVswi9HVxse7BWhAl8,2244
58
59
  claude_mpm/cli/__init__.py,sha256=Ld4NA9EoNj5SHeYFWU26Hdd1mCP4lrlSwss-tvnbfKA,15522
59
60
  claude_mpm/cli/__main__.py,sha256=WnVGBwe10InxuZjJRFdwuMF6Gh16aXox6zFgxr0sRXk,847
60
61
  claude_mpm/cli/parser.py,sha256=pG4B8kcROCNLF5-3YiZTXwDBs4EoKxTdhw8CHKezYHc,1362
61
- claude_mpm/cli/startup_logging.py,sha256=esVpwncpLwLSC-HHys2Vj8TLJP0YxlfPl-Or8OXZXV8,19811
62
+ claude_mpm/cli/startup_logging.py,sha256=Xq1SHRZloSlH2UcszYvW1SETHsYnbpakS2-25x5h3Vk,22230
62
63
  claude_mpm/cli/ticket_cli.py,sha256=Cco0riIeo-PuzBslX3-5LAtLUcsLvexSRtVlheb7-cQ,916
63
64
  claude_mpm/cli/utils.py,sha256=-ObCOxPff4CB6xYulsneC19Fwwb3UHn53UI7u-B_pJ8,7023
64
65
  claude_mpm/cli/commands/__init__.py,sha256=fpng_LKNL_kdi1qmZ1I6wVop0U8rShOnPyv-GtZ50xE,979
65
- claude_mpm/cli/commands/agent_manager.py,sha256=Q_uJk_s2ZGfZnimZ7WCGu-bxzr2hFydbLQEWx-a8zVA,19713
66
- claude_mpm/cli/commands/agents.py,sha256=0cfS_MiT_mY5_FBbuZg9f1yeV596AA1YiSf4mIen7JY,51436
66
+ claude_mpm/cli/commands/agent_manager.py,sha256=BYyoyyTx06Oy-kN6EwDOc1aFqw_HKRFhn3XYaT99u-M,29642
67
+ claude_mpm/cli/commands/agents.py,sha256=Zz0UZF8t6KOsgMSehTDjEb39pevPwKCDhH-2WoYFq-Y,38064
67
68
  claude_mpm/cli/commands/aggregate.py,sha256=rLwZxXmIyTPuDUYKTooVtTgiW4mU3vw4_383jK1nXHU,18065
68
69
  claude_mpm/cli/commands/cleanup.py,sha256=c4QyAs9odx7__rSM9RDy2r9iwPlrfeIzx2vINbl7WaA,19694
69
70
  claude_mpm/cli/commands/cleanup_orphaned_agents.py,sha256=JR8crvgrz7Sa6d-SI-gKywok5S9rwc_DzDVk_h85sVs,4467
@@ -77,14 +78,13 @@ claude_mpm/cli/commands/mcp_install_commands.py,sha256=dFjMT2p15-F2VLS6o1whXgmBt
77
78
  claude_mpm/cli/commands/mcp_pipx_config.py,sha256=sE62VD6Q1CcO2k1nlbIhHMfAJFQTZfIzCss99LmfNqA,6088
78
79
  claude_mpm/cli/commands/mcp_server_commands.py,sha256=-1G_2Y5ScTvzDd-kY8fTAao2H6FH7DnsLimleF1rVqQ,6197
79
80
  claude_mpm/cli/commands/mcp_tool_commands.py,sha256=q17GzlFT3JiLTrDqwPO2tz1-fKmPO5QU449syTnKTz4,1283
80
- claude_mpm/cli/commands/memory.py,sha256=YEoOPqDdyS9834RHTwyML5S1bpBeorGGgHKcxTS5AaA,51485
81
+ claude_mpm/cli/commands/memory.py,sha256=Yzfs3_oiKciv3sfOoDm2lJL4M9idG7ARV3-sNw1ge_g,26186
81
82
  claude_mpm/cli/commands/monitor.py,sha256=F4HY3x1A6hJgtHJlLssIWJFgND1xFGfzZSLU0ylwHpM,27308
82
- claude_mpm/cli/commands/run.py,sha256=Se7LsWuf13PBU3Yt_2i4JZ_m7uZHqtQDITMlrnhbnv4,56537
83
- claude_mpm/cli/commands/run_config_checker.py,sha256=OEtAyBMG83Ws_cX-HeAluFZe4xuxL4An9i06gkuN-DM,6929
83
+ claude_mpm/cli/commands/run.py,sha256=7jvKy4emK8szoHR9nEigXnOrkugx4MduLmUadfWnUv0,43113
84
84
  claude_mpm/cli/commands/socketio_monitor.py,sha256=GHHY5pKg0XCffoqLoO0l0Nxa9HQY4gdrpYebLVahzl4,9540
85
85
  claude_mpm/cli/commands/tickets.py,sha256=gK8IL4IRZmLQTqJh3eEWU4TU_kbdo-Z9BE1QtFaF9dI,33514
86
86
  claude_mpm/cli/parsers/__init__.py,sha256=f0Fm1DDXorlVOZPLxUpjC-GIvLh01G-FZOK7TEV1L3I,1005
87
- claude_mpm/cli/parsers/agent_manager_parser.py,sha256=iUHzYV3zpoLawJe3SOA-vtw4NpaiEtsCzVsX3lmdnNM,6827
87
+ claude_mpm/cli/parsers/agent_manager_parser.py,sha256=8HuGpTnHSOnTOqOHriBTzi8EzKLMSfqH2eFHs0dEuu4,8009
88
88
  claude_mpm/cli/parsers/agents_parser.py,sha256=DxAZMotptyaJbROqbRbTipOKLLJ96ATrXhwiFK6Dbm0,5450
89
89
  claude_mpm/cli/parsers/base_parser.py,sha256=3paei6ok6gg7QGrCEqmNd7bh4CoJCWVXdo_MMFaJq9w,12192
90
90
  claude_mpm/cli/parsers/config_parser.py,sha256=wp6NbV8_p9txP28MXFcQrri0JDIfGFM7u4aJbYJXcYQ,2699
@@ -109,7 +109,7 @@ claude_mpm/config/paths.py,sha256=Dl35_QF0kfC2I6Fy7ETcNjz7jlumNGt45qlRKqsPJrk,76
109
109
  claude_mpm/config/socketio_config.py,sha256=qNLvjKZWUZEsNmSXUe0ueXu1q7-EOlxK3mdQquEZwTI,9714
110
110
  claude_mpm/core/__init__.py,sha256=QhEX_NpiCprUp87bV75FnMapblMeqC5soNVJXVvZObc,887
111
111
  claude_mpm/core/agent_name_normalizer.py,sha256=_h92sTPltmvqevCjdKQ7EsOz-CAm1-hd8GOubWjuRgw,8907
112
- claude_mpm/core/agent_registry.py,sha256=dd0H7RtEaymHqUQPIr4dRu09nGUTh7AXyd1rbomnUIo,19064
112
+ claude_mpm/core/agent_registry.py,sha256=cPQsOSIyrspr3KpS-P9MQ6Dv_BLXa9BWhs9RM0iu4C4,18798
113
113
  claude_mpm/core/agent_session_manager.py,sha256=JmhP67tZuJhGaXOriWeYdl69edxB8szVMLMxcO9EGsg,11043
114
114
  claude_mpm/core/base_service.py,sha256=OGFg2IrvkSVhDUoN12y9HD6L6YGka0pc6Wj3AmHKxYk,29182
115
115
  claude_mpm/core/cache.py,sha256=aCvZg08gT8uMFSDp-s0-xqRYSgcfBTDGM3MlJTTboMY,17170
@@ -121,16 +121,16 @@ claude_mpm/core/constants.py,sha256=88J9bGT05Fbr3lzHLWtLQbBYRuJuLBjK3Bfq_qyWcIo,
121
121
  claude_mpm/core/container.py,sha256=tktmoChULNzNm_wUNR0YCzzRO8wH2AEy-hCaCFis4JU,32137
122
122
  claude_mpm/core/exceptions.py,sha256=vrEJGpgThvqRRD6qsNkmaQcYAoUMQSNuHUOnNFJcEGg,19628
123
123
  claude_mpm/core/factories.py,sha256=vtlwkbpxeWzqgPRGO1ehnMOzddLCHWTeiKa8halV_dU,7271
124
- claude_mpm/core/framework_loader.py,sha256=WgQat9BpTrbpKjQE_CCm0w3Yn-KnYCuVrwVzJ8eRfkw,88509
124
+ claude_mpm/core/framework_loader.py,sha256=Ei0lJUFdNGMF-Eb0xKWTFr3w1_mL1zDBlXpJXS_LX8U,72650
125
125
  claude_mpm/core/hook_manager.py,sha256=_Y7QWv8MfZgSHbKmWYfojuDRPxC2niZgOb7JkeUFQaE,11059
126
126
  claude_mpm/core/hook_performance_config.py,sha256=e7a7oFctkRhA3aPXMO5Wavr-E6ku7ikLxMzPU7P1-yg,5779
127
127
  claude_mpm/core/injectable_service.py,sha256=6MUqTVTBBw6legToIVj1C_BzdERO0zKYEPnFPVZJJfE,7398
128
128
  claude_mpm/core/interactive_session.py,sha256=OO0Oqv5hXfEtnAUNUc2WKd6BtxbT_p4Kcei-53GKxno,21973
129
129
  claude_mpm/core/interfaces.py,sha256=RNqXxUioEpV4vOaEoUJ38OvKYPMlpSb3V5Sb97l0w3Q,25625
130
130
  claude_mpm/core/lazy.py,sha256=6EYpXGZwsMAMQ3GXepNtyw_b7IxDwOTjfOVE6mV-S2s,14774
131
- claude_mpm/core/log_manager.py,sha256=J_WaF7qWbqCOo3dBEizMi7CPTgzSlXIMW8XJyIF8DuU,19677
131
+ claude_mpm/core/log_manager.py,sha256=jE6ZJNv6P2dZcpMIG9x8EQXWxH4g-xAj6sGjq-fSA1k,21504
132
132
  claude_mpm/core/logger.py,sha256=O_6X9LS-qpkpQnbQMitwpBj-C7Ll0HmTvo3nWAf_H1Y,20730
133
- claude_mpm/core/logging_config.py,sha256=fd7f68PQVaiMc7Dirnl9P9PmaD2pCgeyr_XYcCGiES4,14687
133
+ claude_mpm/core/logging_config.py,sha256=tCxM3EpSmjZ7kT7hckQxQZlrxuWVm4g-qu9RHe8hDcw,14588
134
134
  claude_mpm/core/minimal_framework_loader.py,sha256=vmDEjL3MjnV7W4WIR-ymaL8QgsGsgxJJ0KdiQqAtudM,3640
135
135
  claude_mpm/core/mixins.py,sha256=vmZ7Nu2ZOnKjbhN07Ixk4noIej9nsJiknrp-Sclfu0A,5344
136
136
  claude_mpm/core/oneshot_session.py,sha256=QkSw-gs7tTQkdKQiZh7mbia5hc5PMt_xaMoDY-9_bZk,17693
@@ -214,13 +214,20 @@ claude_mpm/hooks/tool_call_interceptor.py,sha256=mTE3QLC3UN8DeH2pwUBaDfPcGAQCp7p
214
214
  claude_mpm/hooks/validation_hooks.py,sha256=qTkO93lJWInqvEibKbY-Fj-qDvMtKRcE6dDfV29VTiQ,6433
215
215
  claude_mpm/hooks/claude_hooks/__init__.py,sha256=b4mud_g3S-3itHY_Dzpbb_SmdMEcJwtUU8fTcqpLqqs,130
216
216
  claude_mpm/hooks/claude_hooks/connection_pool.py,sha256=OSVJk4q-Zj_4UrQIKyGsJv6sab-oZfq-BB4_9mQqPYU,8618
217
- claude_mpm/hooks/claude_hooks/event_handlers.py,sha256=uO1BvLD27jnPPEUp32Nke9kQJDOxLlizRYcydye1x4U,34873
218
- claude_mpm/hooks/claude_hooks/hook_handler.py,sha256=AOcGOf2WiA_aaRsaENKBvaj3Vi_UzeL_zaEgN3zxCrk,42964
217
+ claude_mpm/hooks/claude_hooks/event_handlers.py,sha256=OWglHktyzLmuNhkKmV_Bgka7M_YUB84lspYJlR3HQ7I,30312
218
+ claude_mpm/hooks/claude_hooks/hook_handler.py,sha256=TW8i7heEzLT0EkQmZrc8LWpBMiQbfOSLZ3XzvWiGweI,14171
219
219
  claude_mpm/hooks/claude_hooks/hook_handler_eventbus.py,sha256=IZKE3cJok_gb4UGFEtftic5MjYBAPupt3iDq20L9Pfc,14848
220
+ claude_mpm/hooks/claude_hooks/hook_handler_original.py,sha256=AOcGOf2WiA_aaRsaENKBvaj3Vi_UzeL_zaEgN3zxCrk,42964
221
+ claude_mpm/hooks/claude_hooks/hook_handler_refactored.py,sha256=e8phCM18f-IcovV9_xVNYSV8nndVKdzmFJa-xjKGkq8,12983
220
222
  claude_mpm/hooks/claude_hooks/hook_wrapper.sh,sha256=4lG3TlLVoVfTJipPj1X_ICUlS-KpnkbUp1U3oSq80Bw,2476
221
223
  claude_mpm/hooks/claude_hooks/memory_integration.py,sha256=TXLavDM9eEoakPX_n2WtnfXyqGn80N-xgAvcYgvoW8s,8832
222
224
  claude_mpm/hooks/claude_hooks/response_tracking.py,sha256=4RcM54LyYeINf3A_toaSOPuD3oXS6jZtiRstHxgSOao,14990
223
225
  claude_mpm/hooks/claude_hooks/tool_analysis.py,sha256=3_o2PP9D7wEMwLriCtIBOw0cj2fSZfepN7lI4P1meSQ,7862
226
+ claude_mpm/hooks/claude_hooks/services/__init__.py,sha256=xd8L37zh9JccPvliQEQj6SiUlrWL2oZDzZf_sPXPkqA,410
227
+ claude_mpm/hooks/claude_hooks/services/connection_manager.py,sha256=brkw3wE5m5RWa3fOo4noRO0xl0GpLWUPVacxcP6QYpM,7496
228
+ claude_mpm/hooks/claude_hooks/services/duplicate_detector.py,sha256=Fh9LmEMsVmQM9t0U1v2l_fuBwvNpVkl_0EF8Wu5KLHQ,3882
229
+ claude_mpm/hooks/claude_hooks/services/state_manager.py,sha256=c7OldfemaMU37YGJxgO2uEcTOuPc-C80SRhzEH07j7I,11072
230
+ claude_mpm/hooks/claude_hooks/services/subagent_processor.py,sha256=l8fPF5CgmYnj1GqZQs3D_611xuZkRq3bFeg9axl-EEg,15229
224
231
  claude_mpm/models/__init__.py,sha256=GADyLAiF-1VVghYKI7Urz3zSnf2sjJUXlOEMuCOs7_g,468
225
232
  claude_mpm/models/agent_definition.py,sha256=LC7EwihixF2Gw4QqOxiCNchsEzzyQJPR6AgPrcTrWTM,6674
226
233
  claude_mpm/models/agent_session.py,sha256=7YU9oklwqEDyH3PTKUQ52yh6N9C9eJX8GJKhxDCpDj0,19988
@@ -261,7 +268,7 @@ claude_mpm/services/agents/deployment/__init__.py,sha256=iprW-Ww3LBtWu9pVFjAX45_
261
268
  claude_mpm/services/agents/deployment/agent_config_provider.py,sha256=_voUMuk_6IiJy_VHloDC6OA803-Z2wENOK60extV_ZU,13312
262
269
  claude_mpm/services/agents/deployment/agent_configuration_manager.py,sha256=5nf69hfo7lUa3_55sDcU5WfpzBtOZCMSTPYGr2dlIdY,12173
263
270
  claude_mpm/services/agents/deployment/agent_definition_factory.py,sha256=DaJ__b3-ADinfd-qNnW6LKWfclOaZbkBBcfuHgqlUic,2697
264
- claude_mpm/services/agents/deployment/agent_deployment.py,sha256=lTRdlH-Osfdu8sidTUF1TpV8CN8R3NR6ccHpH-Hd4hg,51253
271
+ claude_mpm/services/agents/deployment/agent_deployment.py,sha256=6YFg1ZcAMI_cb7xGhSm0e3qdPOrVNoQ_-o1qoc_PM2k,35514
265
272
  claude_mpm/services/agents/deployment/agent_discovery_service.py,sha256=VxTm-jq51nDlGek_srK5BRTAQk2XH5OxGjEgazL1e6o,13443
266
273
  claude_mpm/services/agents/deployment/agent_environment_manager.py,sha256=kjMiLyZYHs-s9pVdtj4av4hJW0gNXnD7lZz2CJpxmZI,9863
267
274
  claude_mpm/services/agents/deployment/agent_filesystem_manager.py,sha256=kstcGvufqF3cmmkJ_hDIHutPbIrMo_ZsGCKlIKmNbMA,12904
@@ -276,7 +283,9 @@ claude_mpm/services/agents/deployment/agent_version_manager.py,sha256=RtU3zrz9VJ
276
283
  claude_mpm/services/agents/deployment/agent_versioning.py,sha256=cDkSv12m6_XjhhD6Tr_tmcnvx4RrXhMAKpjm6E_fKyQ,989
277
284
  claude_mpm/services/agents/deployment/agents_directory_resolver.py,sha256=4ylwNMs9i8eGa1jSBkU0wW1O0Jvr4GNrrWX81F0wQWU,2175
278
285
  claude_mpm/services/agents/deployment/async_agent_deployment.py,sha256=VDUw-UcGDby99ZULTK6G4rF3yp33Pef3O5zmnQxdQFg,28163
286
+ claude_mpm/services/agents/deployment/base_agent_locator.py,sha256=szw9N1Di6AJuuWGIZHRfgWij6wwMbag--6XzjFvmpiA,4751
279
287
  claude_mpm/services/agents/deployment/deployment_config_loader.py,sha256=Wlm64Ovb-9qgm6F4AOMoBNsUb796Ixe0lDh8gRvKO3o,1935
288
+ claude_mpm/services/agents/deployment/deployment_results_manager.py,sha256=oNJ8DhmeXswD4_6qmLpDusI2edyJy2gd203ePxmJEy8,6609
280
289
  claude_mpm/services/agents/deployment/deployment_type_detector.py,sha256=b6x6qpGVSGPzNzioqN4kSOXHAhSiIqbqiaLTdlcvwsY,4378
281
290
  claude_mpm/services/agents/deployment/deployment_wrapper.py,sha256=qu2U43LBmAGhGWOEgzD9H9-Kj5tGt_J5hODP5UaGU5c,2400
282
291
  claude_mpm/services/agents/deployment/interface_adapter.py,sha256=mOsQ5IJHLEezq8vCoGSY5OarxolDw1B6Yr0dAYUMMVE,8078
@@ -284,6 +293,7 @@ claude_mpm/services/agents/deployment/lifecycle_health_checker.py,sha256=2dphAvY
284
293
  claude_mpm/services/agents/deployment/lifecycle_performance_tracker.py,sha256=lK_yg0uRL55opUoecOJBL83Tjj6Pu_z4-4EYWPeN6tM,4336
285
294
  claude_mpm/services/agents/deployment/multi_source_deployment_service.py,sha256=OHiNvdd4qb5gpmXLcHzUsm0OvJHNfyyOZQ8clWTB8No,39184
286
295
  claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py,sha256=5-StpaZYqVvm-WrmLMsoIp85WFYL2p0VLWQOfZEn8jU,11707
296
+ claude_mpm/services/agents/deployment/single_agent_deployer.py,sha256=6QtHP-y4T_-UXYXYvdQgdIooOfjnC5NArlbkUo4EPl0,11492
287
297
  claude_mpm/services/agents/deployment/system_instructions_deployer.py,sha256=SCBBXleIn322X_w-swOHjO22J3HCxSHGkd3V-rSbbOs,4060
288
298
  claude_mpm/services/agents/deployment/config/__init__.py,sha256=gVzYqpnF_1it3VjDHRQoUs2VRDVm_WwkhDzNv8x23nM,397
289
299
  claude_mpm/services/agents/deployment/config/deployment_config.py,sha256=CdKUySW30GRE3aR4WL8oTDxtOcNkHdkiofsOMVpYcOQ,6427
@@ -329,17 +339,38 @@ claude_mpm/services/agents/management/__init__.py,sha256=--BL1mjPq28_Lil5Ogsz367
329
339
  claude_mpm/services/agents/management/agent_capabilities_generator.py,sha256=CR2aPfgcKHEq_c5OPGHPMn2-LxjY0b3U1V2q0_nFWIU,6971
330
340
  claude_mpm/services/agents/management/agent_management_service.py,sha256=EmwywtVTtxcARJTSZVSPQHqsGpSGj_fy0VeX1fz7ERA,22949
331
341
  claude_mpm/services/agents/memory/__init__.py,sha256=cu8XUsFeI06NjPwDIysofA0dSpALEKd1f3_E_hJ9wyI,608
332
- claude_mpm/services/agents/memory/agent_memory_manager.py,sha256=uxff_Y4akhqOscNeWSr_JhEORA4pEkjUyl5HrDDQXfI,47913
342
+ claude_mpm/services/agents/memory/agent_memory_manager.py,sha256=ewmfS80ZqLGdoalGCVNxlpPVBp5qf1uGUfUpqPtwtOA,31721
333
343
  claude_mpm/services/agents/memory/agent_persistence_service.py,sha256=1_wMyoXRdAo82xg8yLBd4vR1nl-hze0gECOJDOPwsZc,2757
334
344
  claude_mpm/services/agents/memory/content_manager.py,sha256=OUrTFKvw1Ym8JyMt6bPQbfCARgMGN__nqNVPkxQnF6A,16385
345
+ claude_mpm/services/agents/memory/memory_categorization_service.py,sha256=nJTztLXl_g5Z6bjUFvvDL8mOqqfLNFrbqYBJR5_EchM,4713
346
+ claude_mpm/services/agents/memory/memory_file_service.py,sha256=uQ7Ou39UsFabHCNYocO9XjkJdlXmR7Z6LS4o1L7yA98,3319
347
+ claude_mpm/services/agents/memory/memory_format_service.py,sha256=Y4lgKb6SV1iVTSFNDSGy8Ve267mvKaPJZhzYxYOJHtc,6183
348
+ claude_mpm/services/agents/memory/memory_limits_service.py,sha256=6nkCXOE3_3aPla7n8GwWBVJTxZI7w0aA596E9J-a48c,3310
335
349
  claude_mpm/services/agents/memory/template_generator.py,sha256=bfRY_GEhsO3WoIU36VjlVYWqmXR9UEPngeBcSpWoDUQ,2547
336
- claude_mpm/services/agents/registry/__init__.py,sha256=eI7hDul-gf00hQKxXefFVzmpTPChYqAv0QJI6m09Yy4,727
350
+ claude_mpm/services/agents/registry/__init__.py,sha256=ROBX82Ac4iLHEE7-aFUy7mT3NSz5eIub19ck5Q81NHQ,681
337
351
  claude_mpm/services/agents/registry/deployed_agent_discovery.py,sha256=aaqu50tjonWURgBWFXUKZvWw9qJYLQgUtCux9xCL1rE,10213
338
352
  claude_mpm/services/agents/registry/modification_tracker.py,sha256=bA4F2chibZCTTK_aUVapuK_z0mYZQ7wOi8-OejjZ0AU,33909
353
+ claude_mpm/services/cli/__init__.py,sha256=6yavdruQywt9k39RBOrPxUTz6dEEJ6mHzjY4pl_Q3Do,559
354
+ claude_mpm/services/cli/agent_cleanup_service.py,sha256=2d_f4owY06Vr6NqFyq3zAOm02VgHSiM6tuPZhuzi5KE,14098
355
+ claude_mpm/services/cli/agent_dependency_service.py,sha256=a9bt0Crkglo3D4X-yVgUYKY_FPok_vLfPjHeJh3-WOc,13700
356
+ claude_mpm/services/cli/agent_listing_service.py,sha256=bRb7rAsybTOZ-0F22xE3a4S1QPkuq3K7FavlFePCrVc,15999
357
+ claude_mpm/services/cli/agent_output_formatter.py,sha256=FcJ18m3CyeFr_wotJfEmIURHeZ71eomqO_vK7wsPWsM,20521
358
+ claude_mpm/services/cli/agent_validation_service.py,sha256=6qRpRm6Qwjr_Kj4dH1RxIyffdN_3wJsYH5XxviuK5gU,21756
359
+ claude_mpm/services/cli/dashboard_launcher.py,sha256=l0bwF37jU_P9bHYBfQj0Sr9GtdHHF-XembC8LTSOstg,14473
360
+ claude_mpm/services/cli/memory_crud_service.py,sha256=ciN9Pl_12iDAqF9zPBWOzu-iXiAzpy3CiIwXRoeB5m0,22645
361
+ claude_mpm/services/cli/memory_output_formatter.py,sha256=nbf7VsjGvH4e9fLv9c7PzjuO9COZhbK5P2fNZ79055w,24783
362
+ claude_mpm/services/cli/session_manager.py,sha256=rla_Stbcvt93wa9G9MCMu9UqB3FLGqlPt_eN5lQb3Gg,16599
363
+ claude_mpm/services/cli/socketio_manager.py,sha256=90pvf97Q2Upz9WMP4_SOMfDmlgdkdiCJ0ix6vA7hgco,16745
364
+ claude_mpm/services/cli/startup_checker.py,sha256=FfRoJV0lEjw7hFJhl0JHHOZPHhQSnLCrQx2ni5RLhCY,12687
339
365
  claude_mpm/services/communication/__init__.py,sha256=b4qc7_Rqy4DE9q7BAUlfUZjoYG4uimAyUnE0irPcXyU,560
340
366
  claude_mpm/services/core/__init__.py,sha256=evEayLlBqJvxMZhrhuK6aagXmNrKGSj8Jm9OOxKzqvU,2195
341
367
  claude_mpm/services/core/base.py,sha256=iA-F7DgGp-FJIMvQTiHQ68RkG_k-AtUWlArJPMw6ZPk,7297
368
+ claude_mpm/services/core/cache_manager.py,sha256=KI70dHFuh4SgF1be49eQHJ6cP5lQnM_2-bGd6EILF5g,11594
342
369
  claude_mpm/services/core/interfaces.py,sha256=FbLhWiOUMlvBfqjYBCeoWgsmRscQGBKteRMW-BGz4hQ,1261
370
+ claude_mpm/services/core/memory_manager.py,sha256=CxKyA9uquU6FPKfCz3lxlP56-2t_5hEOaeq9f7EPlWk,23953
371
+ claude_mpm/services/core/path_resolver.py,sha256=sY7EoZ6SZa1VTlSwn0kAylJPUhrA5Fd7AEMWy4H7iUA,17703
372
+ claude_mpm/services/core/service_container.py,sha256=iwfZAGTKO-pt8pNV9J3ZYDs1aPWlh79vCEnTK1cJSsc,18496
373
+ claude_mpm/services/core/service_interfaces.py,sha256=dlNp0K4gaMcLiNSZxXjsL-kto6vipYw87pBuFK7oVNo,10770
343
374
  claude_mpm/services/core/interfaces/__init__.py,sha256=1oFXxW9U8rQNQGzWd9kI_FJeo4uU17-24wC63-KswWE,6398
344
375
  claude_mpm/services/core/interfaces/agent.py,sha256=EaPYn6k9HjB2DRTiZIMJwEIBABZFvQ9fUPEtfERkIIE,10368
345
376
  claude_mpm/services/core/interfaces/communication.py,sha256=evwtLbYCFa3Zb8kEfL10LOBVdwP4-n3a3wa7NqIHmKQ,8887
@@ -350,7 +381,7 @@ claude_mpm/services/diagnostics/diagnostic_runner.py,sha256=zPWNEV0YYmocz2S0X05h
350
381
  claude_mpm/services/diagnostics/doctor_reporter.py,sha256=Z8hYLqUbGC02gL7nX9kZKbLWRzOmTORRINfCr7EHbBI,10537
351
382
  claude_mpm/services/diagnostics/models.py,sha256=nqOQLllZyZmw3Zt5eFJfE1Al7C3Vrn3REgFlARtT3jQ,3831
352
383
  claude_mpm/services/diagnostics/checks/__init__.py,sha256=6FGHqefdlt17BGhwHSOFFk9QCBW_LNL8hxEby-MUGmc,848
353
- claude_mpm/services/diagnostics/checks/agent_check.py,sha256=2c7VnsEdcKtHi23wYlC9fM3mfX1tpF_y_L7On4LCakI,12213
384
+ claude_mpm/services/diagnostics/checks/agent_check.py,sha256=JZwqu4o4Q46uk2jKKU-AS0Y_n4AjVcmq2XR61t18UKE,14022
354
385
  claude_mpm/services/diagnostics/checks/base_check.py,sha256=FdCPk4z5wdBVR5Y4bikwVY4P4BIIXBkYCmhr-qu1ChM,1574
355
386
  claude_mpm/services/diagnostics/checks/claude_desktop_check.py,sha256=fRM-hZM5nkM4aB6PhbydSBLpM5u80xSyLXHu0AmI4qY,11337
356
387
  claude_mpm/services/diagnostics/checks/common_issues_check.py,sha256=Yi73_1yGNcQUCF8Jwba6xHvDHr4QbklWEbzidby-o0o,13353
@@ -431,7 +462,7 @@ claude_mpm/services/memory/__init__.py,sha256=vOZrdDfYdgjV5jhUyqGiICoywAwUNGcE_d
431
462
  claude_mpm/services/memory/builder.py,sha256=SWL8TjDxriCCXK5UU1xZaFsnp6dfcARqZnQgso0R6cc,34272
432
463
  claude_mpm/services/memory/indexed_memory.py,sha256=wtRLfAhRJb693ZKI7R5mbI_nzHJ8EvDeZCyAkE9r0TA,19492
433
464
  claude_mpm/services/memory/optimizer.py,sha256=Ns4YDLuwBHDzhEZIaEEEpexojtCeDSaR36hSVcLPvAE,22908
434
- claude_mpm/services/memory/router.py,sha256=jZj-FIskRfGg5LqYCGKD0x_G8dn8B_ZNV922AHmW-gc,26613
465
+ claude_mpm/services/memory/router.py,sha256=FHhoRV5Q-UwG5eUkKvF4d0Bgz5qsEiEsLx1Q7v2HMe0,31026
435
466
  claude_mpm/services/memory/cache/__init__.py,sha256=6M6-P8ParyxX8vOgp_IxHgLMvacrQHPnXeZIvwJKtw8,351
436
467
  claude_mpm/services/memory/cache/shared_prompt_cache.py,sha256=crnYPUT8zcS7TvoE1vW7pyaf4T77N5rJ1wUf_YQ2vvo,28704
437
468
  claude_mpm/services/memory/cache/simple_cache.py,sha256=qsTjbcsPxj-kNfaod9VN_uE5NioIwpfkUin_mMVUJCg,10218
@@ -490,9 +521,9 @@ claude_mpm/utils/subprocess_utils.py,sha256=zgiwLqh_17WxHpySvUPH65pb4bzIeUGOAYUJ
490
521
  claude_mpm/validation/__init__.py,sha256=YZhwE3mhit-lslvRLuwfX82xJ_k4haZeKmh4IWaVwtk,156
491
522
  claude_mpm/validation/agent_validator.py,sha256=3Lo6LK-Mw9IdnL_bd3zl_R6FkgSVDYKUUM7EeVVD3jc,20865
492
523
  claude_mpm/validation/frontmatter_validator.py,sha256=u8g4Eyd_9O6ugj7Un47oSGh3kqv4wMkuks2i_CtWRvM,7028
493
- claude_mpm-4.1.2.dist-info/licenses/LICENSE,sha256=lpaivOlPuBZW1ds05uQLJJswy8Rp_HMNieJEbFlqvLk,1072
494
- claude_mpm-4.1.2.dist-info/METADATA,sha256=qezACcqEJHOfB9qlWK3gwYksOAQphYaDuINS6C-N1Ew,13327
495
- claude_mpm-4.1.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
496
- claude_mpm-4.1.2.dist-info/entry_points.txt,sha256=FDPZgz8JOvD-6iuXY2l9Zbo9zYVRuE4uz4Qr0vLeGOk,471
497
- claude_mpm-4.1.2.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
498
- claude_mpm-4.1.2.dist-info/RECORD,,
524
+ claude_mpm-4.1.4.dist-info/licenses/LICENSE,sha256=lpaivOlPuBZW1ds05uQLJJswy8Rp_HMNieJEbFlqvLk,1072
525
+ claude_mpm-4.1.4.dist-info/METADATA,sha256=i1zuYiyiu907sxco_kgZp8Bixd6hM-avOusLxtYaxyM,13327
526
+ claude_mpm-4.1.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
527
+ claude_mpm-4.1.4.dist-info/entry_points.txt,sha256=FDPZgz8JOvD-6iuXY2l9Zbo9zYVRuE4uz4Qr0vLeGOk,471
528
+ claude_mpm-4.1.4.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
529
+ claude_mpm-4.1.4.dist-info/RECORD,,
@@ -1,159 +0,0 @@
1
- """Configuration checking functionality for run commands.
2
-
3
- This module provides configuration health checking and memory validation.
4
- Extracted from run.py to reduce complexity and improve maintainability.
5
- """
6
-
7
- import os
8
- from pathlib import Path
9
-
10
- from ...core.config import Config
11
-
12
-
13
- class RunConfigChecker:
14
- """Handles configuration checking for run commands."""
15
-
16
- def __init__(self, logger):
17
- """Initialize the config checker."""
18
- self.logger = logger
19
-
20
- def check_claude_json_memory(self, args):
21
- """Check .claude.json file size and warn about memory issues.
22
-
23
- WHY: Large .claude.json files (>500KB) cause significant memory issues when
24
- using --resume. Claude Code loads the entire conversation history into
25
- memory, leading to 2GB+ memory consumption.
26
- """
27
- try:
28
- # Only check if --mpm-resume is being used
29
- if not getattr(args, "mpm_resume", False):
30
- return
31
-
32
- claude_json_path = Path.cwd() / ".claude.json"
33
- if not claude_json_path.exists():
34
- self.logger.debug("No .claude.json file found")
35
- return
36
-
37
- file_size = claude_json_path.stat().st_size
38
-
39
- def format_size(size_bytes):
40
- """Format file size in human readable format."""
41
- if size_bytes < 1024:
42
- return f"{size_bytes} B"
43
- if size_bytes < 1024 * 1024:
44
- return f"{size_bytes / 1024:.1f} KB"
45
- return f"{size_bytes / (1024 * 1024):.1f} MB"
46
-
47
- # Warn if file is larger than 500KB
48
- if file_size > 500 * 1024: # 500KB threshold
49
- print(
50
- f"\n⚠️ WARNING: Large .claude.json file detected ({format_size(file_size)})"
51
- )
52
- print(" This may cause memory issues when using --mpm-resume")
53
- print(
54
- " 💡 Consider running 'claude-mpm cleanup-memory' to archive old conversations\n"
55
- )
56
- # Just warn, don't block execution
57
-
58
- self.logger.info(f".claude.json size: {format_size(file_size)}")
59
-
60
- except Exception as e:
61
- self.logger.warning(f"Failed to check .claude.json size: {e}")
62
- # Just warn, don't block execution
63
-
64
- def check_configuration_health(self):
65
- """Check configuration health at startup and warn about issues.
66
-
67
- WHY: Configuration errors can cause silent failures, especially for response
68
- logging. This function proactively checks configuration at startup and warns
69
- users about any issues, providing actionable guidance.
70
-
71
- DESIGN DECISIONS:
72
- - Non-blocking: Issues are logged as warnings, not errors
73
- - Actionable: Provides specific commands to fix issues
74
- - Focused: Only checks critical configuration that affects runtime
75
- """
76
- try:
77
- config = Config()
78
-
79
- # Check response logging configuration
80
- response_logging = config.get("response_logging", {})
81
- if response_logging.get("enabled", False):
82
- log_dir = response_logging.get("directory")
83
- if log_dir:
84
- log_path = Path(log_dir)
85
- if not log_path.exists():
86
- self.logger.warning(
87
- f"Response logging directory does not exist: {log_path}"
88
- )
89
- print(f"⚠️ Response logging directory missing: {log_path}")
90
- print(f" Run: mkdir -p {log_path}")
91
- elif not log_path.is_dir():
92
- self.logger.warning(
93
- f"Response logging path is not a directory: {log_path}"
94
- )
95
- print(
96
- f"⚠️ Response logging path is not a directory: {log_path}"
97
- )
98
- elif not os.access(log_path, os.W_OK):
99
- self.logger.warning(
100
- f"Response logging directory is not writable: {log_path}"
101
- )
102
- print(
103
- f"⚠️ Response logging directory is not writable: {log_path}"
104
- )
105
- print(f" Run: chmod 755 {log_path}")
106
-
107
- # Check agent deployment configuration
108
- agent_deployment = config.get("agent_deployment", {})
109
- excluded_agents = agent_deployment.get("excluded_agents", [])
110
- if excluded_agents:
111
- self.logger.info(f"Agent exclusions configured: {excluded_agents}")
112
-
113
- # Check memory management configuration
114
- memory_config = config.get("memory_management", {})
115
- if memory_config.get("auto_cleanup", False):
116
- cleanup_threshold = memory_config.get("cleanup_threshold_mb", 100)
117
- if cleanup_threshold < 50:
118
- self.logger.warning(
119
- f"Memory cleanup threshold very low: {cleanup_threshold}MB"
120
- )
121
- print(
122
- f"⚠️ Memory cleanup threshold is very low: {cleanup_threshold}MB"
123
- )
124
- print(" Consider increasing to at least 50MB")
125
-
126
- # Check for common configuration issues
127
- self._check_common_config_issues(config)
128
-
129
- except Exception as e:
130
- self.logger.warning(f"Configuration health check failed: {e}")
131
- # Don't block execution for config check failures
132
-
133
- def _check_common_config_issues(self, config):
134
- """Check for common configuration issues."""
135
- try:
136
- import os
137
-
138
- # Check if config file exists and is readable
139
- config_file = config.config_file
140
- if config_file and Path(config_file).exists():
141
- if not os.access(config_file, os.R_OK):
142
- self.logger.warning(
143
- f"Configuration file is not readable: {config_file}"
144
- )
145
- print(f"⚠️ Configuration file is not readable: {config_file}")
146
- print(f" Run: chmod 644 {config_file}")
147
-
148
- # Check for deprecated configuration keys
149
- deprecated_keys = ["legacy_mode", "old_agent_format", "deprecated_logging"]
150
-
151
- for key in deprecated_keys:
152
- if config.get(key) is not None:
153
- self.logger.warning(f"Deprecated configuration key found: {key}")
154
- print(f"⚠️ Deprecated configuration key: {key}")
155
- print(" Consider removing this key from your configuration")
156
-
157
- except Exception as e:
158
- self.logger.debug(f"Common config issues check failed: {e}")
159
- # Don't propagate errors from this check