claude-mpm 5.6.40__py3-none-any.whl → 5.6.42__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 (26) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/hooks/claude_hooks/hook_handler.py +28 -0
  3. claude_mpm/hooks/claude_hooks/installer.py +3 -2
  4. claude_mpm/services/monitor/server.py +6 -1
  5. {claude_mpm-5.6.40.dist-info → claude_mpm-5.6.42.dist-info}/METADATA +1 -1
  6. {claude_mpm-5.6.40.dist-info → claude_mpm-5.6.42.dist-info}/RECORD +11 -26
  7. claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-311.pyc +0 -0
  8. claude_mpm/hooks/claude_hooks/__pycache__/auto_pause_handler.cpython-311.pyc +0 -0
  9. claude_mpm/hooks/claude_hooks/__pycache__/correlation_manager.cpython-311.pyc +0 -0
  10. claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-311.pyc +0 -0
  11. claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-311.pyc +0 -0
  12. claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-311.pyc +0 -0
  13. claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-311.pyc +0 -0
  14. claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-311.pyc +0 -0
  15. claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-311.pyc +0 -0
  16. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-311.pyc +0 -0
  17. claude_mpm/hooks/claude_hooks/services/__pycache__/container.cpython-311.pyc +0 -0
  18. claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-311.pyc +0 -0
  19. claude_mpm/hooks/claude_hooks/services/__pycache__/protocols.cpython-311.pyc +0 -0
  20. claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-311.pyc +0 -0
  21. claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-311.pyc +0 -0
  22. {claude_mpm-5.6.40.dist-info → claude_mpm-5.6.42.dist-info}/WHEEL +0 -0
  23. {claude_mpm-5.6.40.dist-info → claude_mpm-5.6.42.dist-info}/entry_points.txt +0 -0
  24. {claude_mpm-5.6.40.dist-info → claude_mpm-5.6.42.dist-info}/licenses/LICENSE +0 -0
  25. {claude_mpm-5.6.40.dist-info → claude_mpm-5.6.42.dist-info}/licenses/LICENSE-FAQ.md +0 -0
  26. {claude_mpm-5.6.40.dist-info → claude_mpm-5.6.42.dist-info}/top_level.txt +0 -0
claude_mpm/VERSION CHANGED
@@ -1 +1 @@
1
- 5.6.40
1
+ 5.6.42
@@ -1,4 +1,32 @@
1
1
  #!/usr/bin/env python3
2
+ # ==============================================================================
3
+ # CRITICAL: EARLY LOGGING SUPPRESSION - MUST BE FIRST
4
+ # ==============================================================================
5
+ # Suppress ALL logging before any other imports to prevent REPL pollution.
6
+ # The StreamingHandler in logger.py writes carriage returns (\r) and spaces
7
+ # to stderr which pollutes Claude Code's REPL output.
8
+ #
9
+ # This MUST be before any imports that could trigger module-level loggers.
10
+ # ==============================================================================
11
+ import logging as _early_logging
12
+ import sys as _early_sys
13
+
14
+ # Force redirect all logging to NullHandler before any module imports
15
+ # This prevents ANY log output from polluting stdout/stderr during hook execution
16
+ _early_logging.basicConfig(handlers=[_early_logging.NullHandler()], force=True)
17
+ # Also ensure root logger has no handlers that write to stderr
18
+ _early_logging.getLogger().handlers = [_early_logging.NullHandler()]
19
+ # Suppress all loggers by setting a very high level initially
20
+ _early_logging.getLogger().setLevel(_early_logging.CRITICAL + 1)
21
+
22
+ # Clean up namespace to avoid polluting module scope
23
+ del _early_logging
24
+ del _early_sys
25
+
26
+ # ==============================================================================
27
+ # END EARLY LOGGING SUPPRESSION
28
+ # ==============================================================================
29
+
2
30
  """Refactored Claude Code hook handler with modular service architecture.
3
31
 
4
32
  This handler uses a service-oriented architecture with:
@@ -724,7 +724,8 @@ main "$@"
724
724
  )
725
725
 
726
726
  # Simple events (no subtypes, no matcher needed)
727
- simple_events = ["Stop", "SubagentStop", "SubagentStart"]
727
+ # Note: SubagentStart is NOT a valid Claude Code event (only SubagentStop is)
728
+ simple_events = ["Stop", "SubagentStop"]
728
729
  for event_type in simple_events:
729
730
  existing = settings["hooks"].get(event_type, [])
730
731
  settings["hooks"][event_type] = merge_hooks_for_event(
@@ -843,10 +844,10 @@ main "$@"
843
844
  issues.append("No hooks configured in Claude settings")
844
845
  else:
845
846
  # Check for required event types
847
+ # Note: SubagentStart is NOT a valid Claude Code event
846
848
  required_events = [
847
849
  "Stop",
848
850
  "SubagentStop",
849
- "SubagentStart",
850
851
  "PreToolUse",
851
852
  "PostToolUse",
852
853
  ]
@@ -576,8 +576,13 @@ class UnifiedMonitorServer:
576
576
  event = data.get("event", "claude_event")
577
577
  event_data = data.get("data", {})
578
578
 
579
+ # Extract actual event name from subtype or type within data
580
+ actual_event = (
581
+ event_data.get("subtype") or event_data.get("type") or event
582
+ )
583
+
579
584
  # Categorize event and wrap in expected format
580
- event_type = self._categorize_event(event)
585
+ event_type = self._categorize_event(actual_event)
581
586
  wrapped_event = {
582
587
  "type": event_type,
583
588
  "subtype": event,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-mpm
3
- Version: 5.6.40
3
+ Version: 5.6.42
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=Z-pCnpaqxQII0qTjtChhtMldIh9cYJIuxiX_Zb1xvz8,7
2
+ claude_mpm/VERSION,sha256=6i5h2VVQ0bXg54_2EfauTiWvh5YoKcSRaQiT5pvw8Nk,7
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
@@ -430,20 +430,12 @@ claude_mpm/hooks/claude_hooks/auto_pause_handler.py,sha256=Fm8d_a0KJ1GBPPQ3xmQo-
430
430
  claude_mpm/hooks/claude_hooks/connection_pool.py,sha256=vpi-XbVf61GWhh85tHBzubbOgbJly_I-5-QmsleND2M,8658
431
431
  claude_mpm/hooks/claude_hooks/correlation_manager.py,sha256=3n-RxzqE8egG4max_NcpJgL9gzrBY6Ti529LrjleI1g,2033
432
432
  claude_mpm/hooks/claude_hooks/event_handlers.py,sha256=VJ4kY_GMZkVv8WBAII4GTfY4qxFgoKdXpMdhEbzt980,50344
433
- claude_mpm/hooks/claude_hooks/hook_handler.py,sha256=BCLqc-01d0jqxqZIhjqG4pK_17dBs22VhfVE6yE_kzU,30687
433
+ claude_mpm/hooks/claude_hooks/hook_handler.py,sha256=ftrb-fF0kVTgn7VX_GxFBVoVWgLLb061AN_rpfN7BVw,32100
434
434
  claude_mpm/hooks/claude_hooks/hook_wrapper.sh,sha256=XYkdYtcM0nfnwYvMdyIFCasr80ry3uI5-fLYsLtDGw4,2214
435
- claude_mpm/hooks/claude_hooks/installer.py,sha256=s4AqVbln4oWmVr4cSCXhMN4TxDPQ48P-qk-qKvv0690,40353
435
+ claude_mpm/hooks/claude_hooks/installer.py,sha256=bmYWn-U9uEhZgPSUtFFuurRFyL2Mng704iYm0j2l-pY,40456
436
436
  claude_mpm/hooks/claude_hooks/memory_integration.py,sha256=YOMD4Ah003uMh7A454w8ngLmKw8RUAEIHpEj-FRk3TI,10759
437
437
  claude_mpm/hooks/claude_hooks/response_tracking.py,sha256=1KOGC19rYRNYbc1Tfe7FAP6AtvgOMSM5uEPxMi2N6-c,16323
438
438
  claude_mpm/hooks/claude_hooks/tool_analysis.py,sha256=3_o2PP9D7wEMwLriCtIBOw0cj2fSZfepN7lI4P1meSQ,7862
439
- claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-311.pyc,sha256=EGpgXqhPM0iRRZtCqHaLVQ6wDH42OH_M7Gt5GiFLyro,346
440
- claude_mpm/hooks/claude_hooks/__pycache__/auto_pause_handler.cpython-311.pyc,sha256=lw3g7dHPcJ258xtcmbXOk-tCqVz0JAc5PZ10LUfG4Zo,20829
441
- claude_mpm/hooks/claude_hooks/__pycache__/correlation_manager.cpython-311.pyc,sha256=SQX5iiP9bQZkLL-cj_2tlGH7lpAzarO0mYal7btj3tc,3521
442
- claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-311.pyc,sha256=rUcbnsARIgWenNkPv8LlHJBXmxTOExqgcwtBaBfGzg4,49040
443
- claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-311.pyc,sha256=UcqjwA6kRbd8BcTnmYekEiF98aSDszayGqbuCK-ff7s,32939
444
- claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-311.pyc,sha256=1llucgjrun0H6q8V8_BXTHtkTiYAwNGyptluhoIi7ss,11185
445
- claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-311.pyc,sha256=E_pRoKx-mAB5gEv2_5TneMC_K10zj7FYCPwQPnPd88g,16228
446
- claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-311.pyc,sha256=ZjcNfNY5Ht6FhalPeh7M7OzMffcey5iF4AVjDDg9kak,10694
447
439
  claude_mpm/hooks/claude_hooks/services/__init__.py,sha256=Hb4SqNzSN-JKzp8pMM3SbDMTCsUydypfXiDx4_4QvBI,1112
448
440
  claude_mpm/hooks/claude_hooks/services/connection_manager.py,sha256=46y84lKi3KuExWyJgFcEfgLxrzQY3IjGRob_6I4hXp4,10196
449
441
  claude_mpm/hooks/claude_hooks/services/connection_manager_http.py,sha256=uJH0CGsszvhlg7zfEI2JB7uuxXtYBk9Yey-u2F6VoNo,7582
@@ -452,13 +444,6 @@ claude_mpm/hooks/claude_hooks/services/duplicate_detector.py,sha256=Fh9LmEMsVmQM
452
444
  claude_mpm/hooks/claude_hooks/services/protocols.py,sha256=vbGAhbg1vJVwyY6zQn5cNbrZYIW0XEr5h0cR2A5G0fc,8712
453
445
  claude_mpm/hooks/claude_hooks/services/state_manager.py,sha256=uuYJVsxIinmOhu7muqJsRZvFMN83YaoYoOWWIiORhr0,10898
454
446
  claude_mpm/hooks/claude_hooks/services/subagent_processor.py,sha256=Wq0CKzgBnAtJfxiWHTipjkmFbuvMGu1mqcmQoEMMyyQ,15039
455
- claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-311.pyc,sha256=Ourc5IO3cUSZ9lg-1SKh5HaF01L5DmWXTRl38UN35NE,1145
456
- claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-311.pyc,sha256=a7ERR-95KADLqU8bgoPzpCvEPo0yoYjhfXq_u2sCKuk,9613
457
- claude_mpm/hooks/claude_hooks/services/__pycache__/container.cpython-311.pyc,sha256=3SkPihhEUk3S39IvnM3bZ-ijoLE0qqHMvoeeM-hebdk,15390
458
- claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-311.pyc,sha256=Yy_REAUhJCiFjOhxeDb4v0qyEvEbUtCmXD9PAz40dhw,5321
459
- claude_mpm/hooks/claude_hooks/services/__pycache__/protocols.cpython-311.pyc,sha256=rmXujh8AxeOajj_40rSug1QdKCFNl5cFjn_pQE6DExY,15962
460
- claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-311.pyc,sha256=FkVlm20olvS286fK1SKPBDo9tOy0A9hRW0o5Gkyszuc,12352
461
- claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-311.pyc,sha256=LILTBRAG9Wxpu_FmVod_5hnJO-wbaewqKrxEZ_GJTEI,14931
462
447
  claude_mpm/hooks/failure_learning/__init__.py,sha256=iJ80AKFHiT8DjIH2a72DQVJvL6nAFrizNA2yTKwZ4rw,1805
463
448
  claude_mpm/hooks/failure_learning/failure_detection_hook.py,sha256=KENoB5N-dBm5hb0SxeIZtCvNKbmG2BKHOJSrSO-3Z_I,7500
464
449
  claude_mpm/hooks/failure_learning/fix_detection_hook.py,sha256=XUk1bnBVLdfhQ9AMQSvGsTSeFQsKsVud2wbWX-Jjor8,7164
@@ -780,7 +765,7 @@ claude_mpm/services/monitor/__init__.py,sha256=X7gxSLUm9Fg_zEsX6LtCHP2ipF0qj6Emk
780
765
  claude_mpm/services/monitor/daemon.py,sha256=IfP0aE4RIW3xaNrF_RwxlorKzJoT1LQ2R3OFXpI_XGY,27534
781
766
  claude_mpm/services/monitor/daemon_manager.py,sha256=W4g5Odf670emexERFSuLkITwt-fQYaJmbTvUqdn_meM,40541
782
767
  claude_mpm/services/monitor/event_emitter.py,sha256=6bRpUbd-GFrGu9VxlyigVpZbM9Tr4LqSOkYxMTmc59A,12522
783
- claude_mpm/services/monitor/server.py,sha256=wSDDT8PZinnXrkRaKSm0sM7osnhF1qWbybY-rlSuBU8,62706
768
+ claude_mpm/services/monitor/server.py,sha256=RpwzDGukhe0V9TGDnMBr0xDrMKTyaDpq2N2JulVByDo,62939
784
769
  claude_mpm/services/monitor/handlers/__init__.py,sha256=jgPIf4IJVERm_tAeD9834tfx9IcxtlHj5r9rhEWpkfM,701
785
770
  claude_mpm/services/monitor/handlers/code_analysis.py,sha256=3na63aagO8DN3Z2e9c_VpStkd3-NTpA4c58b9G_Bv-Y,11404
786
771
  claude_mpm/services/monitor/handlers/dashboard.py,sha256=FWhX4eLGedD9-KAXTBXQ5g2ZuwTUIpYQUNSxyQIzqUU,9856
@@ -1106,10 +1091,10 @@ claude_mpm/utils/subprocess_utils.py,sha256=D0izRT8anjiUb_JG72zlJR_JAw1cDkb7kalN
1106
1091
  claude_mpm/validation/__init__.py,sha256=YZhwE3mhit-lslvRLuwfX82xJ_k4haZeKmh4IWaVwtk,156
1107
1092
  claude_mpm/validation/agent_validator.py,sha256=GprtAvu80VyMXcKGsK_VhYiXWA6BjKHv7O6HKx0AB9w,20917
1108
1093
  claude_mpm/validation/frontmatter_validator.py,sha256=YpJlYNNYcV8u6hIOi3_jaRsDnzhbcQpjCBE6eyBKaFY,7076
1109
- claude_mpm-5.6.40.dist-info/licenses/LICENSE,sha256=ca3y_Rk4aPrbF6f62z8Ht5MJM9OAvbGlHvEDcj9vUQ4,3867
1110
- claude_mpm-5.6.40.dist-info/licenses/LICENSE-FAQ.md,sha256=TxfEkXVCK98RzDOer09puc7JVCP_q_bN4dHtZKHCMcM,5104
1111
- claude_mpm-5.6.40.dist-info/METADATA,sha256=ebfBslq9e58CyY8JnhNjw7o7OoalCxnq6zJ68bSf1f0,15245
1112
- claude_mpm-5.6.40.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1113
- claude_mpm-5.6.40.dist-info/entry_points.txt,sha256=1zA7qb37iArFuimIPKvNMoJz1WtKPNKfxfr8E_ijk30,290
1114
- claude_mpm-5.6.40.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
1115
- claude_mpm-5.6.40.dist-info/RECORD,,
1094
+ claude_mpm-5.6.42.dist-info/licenses/LICENSE,sha256=ca3y_Rk4aPrbF6f62z8Ht5MJM9OAvbGlHvEDcj9vUQ4,3867
1095
+ claude_mpm-5.6.42.dist-info/licenses/LICENSE-FAQ.md,sha256=TxfEkXVCK98RzDOer09puc7JVCP_q_bN4dHtZKHCMcM,5104
1096
+ claude_mpm-5.6.42.dist-info/METADATA,sha256=XItQDzXQ67rLHK2gK7K7AvymITxhJ5x5a_RWP186ST8,15245
1097
+ claude_mpm-5.6.42.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1098
+ claude_mpm-5.6.42.dist-info/entry_points.txt,sha256=1zA7qb37iArFuimIPKvNMoJz1WtKPNKfxfr8E_ijk30,290
1099
+ claude_mpm-5.6.42.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
1100
+ claude_mpm-5.6.42.dist-info/RECORD,,