claude-mpm 5.6.29__py3-none-any.whl → 5.6.31__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
claude_mpm/VERSION CHANGED
@@ -1 +1 @@
1
- 5.6.26
1
+ 5.6.31
@@ -43,12 +43,12 @@ def display_commander_banner():
43
43
 
44
44
  # Commander ASCII art banner
45
45
  banner = f"""
46
- {CYAN}╭{'' * (width - 2)}╮{RESET}
47
- {CYAN}│{RESET}{BOLD} ⚡ MPM Commander {RESET}{DIM}v{version}{RESET}{' ' * (width - 24 - len(version))}│
48
- {CYAN}│{RESET}{DIM} Multi-Project AI Orchestration{RESET}{' ' * (width - 36)}│
49
- {CYAN}├{'' * (width - 2)}┤{RESET}
50
- {CYAN}│{RESET} {YELLOW}ALPHA{RESET} - APIs may change {' ' * (width - 55)}│
51
- {CYAN}╰{'' * (width - 2)}╯{RESET}
46
+ {CYAN}╭{"" * (width - 2)}╮{RESET}
47
+ {CYAN}│{RESET}{BOLD} ⚡ MPM Commander {RESET}{DIM}v{version}{RESET}{" " * (width - 24 - len(version))}│
48
+ {CYAN}│{RESET}{DIM} Multi-Project AI Orchestration{RESET}{" " * (width - 36)}│
49
+ {CYAN}├{"" * (width - 2)}┤{RESET}
50
+ {CYAN}│{RESET} {YELLOW}ALPHA{RESET} - APIs may change {" " * (width - 55)}│
51
+ {CYAN}╰{"" * (width - 2)}╯{RESET}
52
52
  """
53
53
  print(banner)
54
54
 
File without changes
File without changes
@@ -496,11 +496,11 @@ class ClaudeHookHandler:
496
496
  if modified_input is not None:
497
497
  # Claude Code v2.0.30+ supports modifying PreToolUse tool inputs
498
498
  print(
499
- json.dumps({"action": "continue", "tool_input": modified_input}),
499
+ json.dumps({"continue": True, "tool_input": modified_input}),
500
500
  flush=True,
501
501
  )
502
502
  else:
503
- print(json.dumps({"action": "continue"}), flush=True)
503
+ print(json.dumps({"continue": True}), flush=True)
504
504
 
505
505
  # Delegation methods for compatibility with event_handlers
506
506
  def _track_delegation(self, session_id: str, agent_type: str, request_data=None):
@@ -673,7 +673,7 @@ def main():
673
673
  # This prevents errors on older Claude Code versions
674
674
  if version:
675
675
  _log(f"Skipping hook processing due to version incompatibility ({version})")
676
- print(json.dumps({"action": "continue"}), flush=True)
676
+ print(json.dumps({"continue": True}), flush=True)
677
677
  sys.exit(0)
678
678
 
679
679
  def cleanup_handler(signum=None, frame=None):
@@ -682,7 +682,7 @@ def main():
682
682
  _log(f"Hook handler cleanup (pid: {os.getpid()}, signal: {signum})")
683
683
  # Only output continue if we haven't already (i.e., if interrupted by signal)
684
684
  if signum is not None and not _continue_printed:
685
- print(json.dumps({"action": "continue"}), flush=True)
685
+ print(json.dumps({"continue": True}), flush=True)
686
686
  _continue_printed = True
687
687
  sys.exit(0)
688
688
 
@@ -715,7 +715,7 @@ def main():
715
715
  except Exception as e:
716
716
  # Only output continue if not already printed
717
717
  if not _continue_printed:
718
- print(json.dumps({"action": "continue"}), flush=True)
718
+ print(json.dumps({"continue": True}), flush=True)
719
719
  _continue_printed = True
720
720
  # Log error for debugging
721
721
  _log(f"Hook handler error: {e}")
@@ -727,5 +727,5 @@ if __name__ == "__main__":
727
727
  main()
728
728
  except Exception:
729
729
  # Catastrophic failure (import error, etc.) - always output valid JSON
730
- print(json.dumps({"action": "continue"}), flush=True)
730
+ print(json.dumps({"continue": True}), flush=True)
731
731
  sys.exit(0)
@@ -149,7 +149,7 @@ main() {
149
149
  if [ "${CLAUDE_MPM_HOOK_DEBUG}" = "true" ]; then
150
150
  echo "[$(date -u +%Y-%m-%dT%H:%M:%S.%3NZ)] Claude MPM not found, continuing..." >> /tmp/claude-mpm-hook.log
151
151
  fi
152
- echo '{"action": "continue"}'
152
+ echo '{"continue": true}'
153
153
  exit 0
154
154
  fi
155
155
 
@@ -176,7 +176,7 @@ main() {
176
176
  echo "[$(date -u +%Y-%m-%dT%H:%M:%S.%3NZ)] Hook handler failed, see /tmp/claude-mpm-hook-error.log" >> /tmp/claude-mpm-hook.log
177
177
  echo "[$(date -u +%Y-%m-%dT%H:%M:%S.%3NZ)] Error: $(cat /tmp/claude-mpm-hook-error.log 2>/dev/null | head -5)" >> /tmp/claude-mpm-hook.log
178
178
  fi
179
- echo '{"action": "continue"}'
179
+ echo '{"continue": true}'
180
180
  exit 0
181
181
  fi
182
182
 
@@ -203,10 +203,14 @@ main "$@"
203
203
  import logging
204
204
 
205
205
  self.logger = logging.getLogger(__name__)
206
- self.claude_dir = Path.home() / ".claude"
206
+ # Use project-level paths, NEVER global ~/.claude/settings.json
207
+ # This ensures hooks are scoped to the current project only
208
+ self.project_root = Path.cwd()
209
+ self.claude_dir = self.project_root / ".claude"
207
210
  self.hooks_dir = self.claude_dir / "hooks" # Kept for backward compatibility
208
- # Use settings.json for hooks (Claude Code reads from this file)
209
- self.settings_file = self.claude_dir / "settings.json"
211
+ # Use settings.local.json for project-level hook settings
212
+ # Claude Code reads project-level settings from .claude/settings.local.json
213
+ self.settings_file = self.claude_dir / "settings.local.json"
210
214
  # There is no legacy settings file - this was a bug where both pointed to same file
211
215
  # Setting to None to disable cleanup that was deleting freshly installed hooks
212
216
  self.old_settings_file = None
File without changes
File without changes
@@ -38,7 +38,7 @@ def main():
38
38
  # Read event from stdin
39
39
  event_data = sys.stdin.read()
40
40
  if not event_data.strip():
41
- print(json.dumps({"action": "continue"}))
41
+ print(json.dumps({"continue": True}))
42
42
  return
43
43
 
44
44
  event = json.loads(event_data)
@@ -49,7 +49,7 @@ def main():
49
49
  if tool_name == "Grep" and "-n" not in tool_input:
50
50
  modified_input = tool_input.copy()
51
51
  modified_input["-n"] = True
52
- print(json.dumps({"action": "continue", "tool_input": modified_input}))
52
+ print(json.dumps({"continue": True, "tool_input": modified_input}))
53
53
  return
54
54
 
55
55
  # Example: Block operations on .env files
@@ -59,19 +59,19 @@ def main():
59
59
  print(
60
60
  json.dumps(
61
61
  {
62
- "action": "block",
63
- "message": "Access to .env file blocked for security",
62
+ "continue": False,
63
+ "stopReason": "Access to .env file blocked for security",
64
64
  }
65
65
  )
66
66
  )
67
67
  return
68
68
 
69
69
  # Default: continue without modification
70
- print(json.dumps({"action": "continue"}))
70
+ print(json.dumps({"continue": True}))
71
71
 
72
72
  except Exception:
73
73
  # Always continue on error to avoid blocking Claude
74
- print(json.dumps({"action": "continue"}))
74
+ print(json.dumps({"continue": True}))
75
75
 
76
76
 
77
77
  if __name__ == "__main__":
@@ -29,7 +29,7 @@ Input Format (stdin):
29
29
 
30
30
  Output Format (stdout):
31
31
  {
32
- "action": "continue",
32
+ "continue": true,
33
33
  "tool_input": {
34
34
  "file_path": "/path/to/file.py",
35
35
  "old_string": "foo",
@@ -39,13 +39,13 @@ Output Format (stdout):
39
39
 
40
40
  Or to block execution:
41
41
  {
42
- "action": "block",
43
- "message": "Reason for blocking"
42
+ "continue": false,
43
+ "stopReason": "Reason for blocking"
44
44
  }
45
45
 
46
46
  Or to continue without modification:
47
47
  {
48
- "action": "continue"
48
+ "continue": true
49
49
  }
50
50
  """
51
51
 
@@ -94,14 +94,14 @@ class PreToolUseHook:
94
94
  self, modified_input: Optional[Dict[str, Any]] = None
95
95
  ) -> None:
96
96
  """Continue execution with optional modified input."""
97
- response = {"action": "continue"}
97
+ response = {"continue": True}
98
98
  if modified_input is not None:
99
99
  response["tool_input"] = modified_input
100
100
  print(json.dumps(response))
101
101
 
102
102
  def block_execution(self, message: str) -> None:
103
103
  """Block execution with a message."""
104
- response = {"action": "block", "message": message}
104
+ response = {"continue": False, "stopReason": message}
105
105
  print(json.dumps(response))
106
106
 
107
107
  def modify_input(
@@ -222,13 +222,13 @@ log_debug() {
222
222
  if [[ "$PYTHON_CMD" == "uv run"* ]]; then
223
223
  if ! uv run --directory "$CLAUDE_MPM_ROOT" python -c "import claude_mpm" 2>/dev/null; then
224
224
  log_debug "claude_mpm module not available, continuing without hook"
225
- echo '{"action": "continue"}'
225
+ echo '{"continue": true}'
226
226
  exit 0
227
227
  fi
228
228
  else
229
229
  if ! $PYTHON_CMD -c "import claude_mpm" 2>/dev/null; then
230
230
  log_debug "claude_mpm module not available, continuing without hook"
231
- echo '{"action": "continue"}'
231
+ echo '{"continue": true}'
232
232
  exit 0
233
233
  fi
234
234
  fi
@@ -250,5 +250,5 @@ if [ "${CLAUDE_MPM_HOOK_DEBUG}" = "true" ]; then
250
250
  echo "[$(date -u +%Y-%m-%dT%H:%M:%S.%3NZ)] Error: $(cat /tmp/claude-mpm-hook-error.log 2>/dev/null | head -5)" >> /tmp/claude-mpm-hook.log
251
251
  fi
252
252
  # Return continue action to prevent blocking Claude Code
253
- echo '{"action": "continue"}'
253
+ echo '{"continue": true}'
254
254
  exit 0
File without changes
@@ -20,8 +20,13 @@ class HookInstallerService:
20
20
  def __init__(self):
21
21
  """Initialize the hook installer service."""
22
22
  self.logger = get_logger(__name__)
23
- self.claude_dir = Path.home() / ".claude"
24
- self.settings_file = self.claude_dir / "settings.json"
23
+ # Use project-level paths, NEVER global ~/.claude/settings.json
24
+ # This ensures hooks are scoped to the current project only
25
+ self.project_root = Path.cwd()
26
+ self.claude_dir = self.project_root / ".claude"
27
+ # Use settings.local.json for project-level hook settings
28
+ # Claude Code reads project-level settings from .claude/settings.local.json
29
+ self.settings_file = self.claude_dir / "settings.local.json"
25
30
 
26
31
  def is_hooks_configured(self) -> bool:
27
32
  """Check if hooks are configured in Claude settings.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-mpm
3
- Version: 5.6.29
3
+ Version: 5.6.31
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=xioy48Xe19MIoNWbvr2OkY-KLDSyrOat555aD_R9W6E,7
2
+ claude_mpm/VERSION,sha256=qA_UH0QMgAvTCzfuWWxESBiXsP0lh8bSznuGUwuOEl8,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
@@ -61,7 +61,7 @@ claude_mpm/cli/commands/auto_configure.py,sha256=0Suzil6O0SBNeHUCwHOkt2q7gfuXRTy
61
61
  claude_mpm/cli/commands/autotodos.py,sha256=mm2R6dIfHOjAMCgFkjfjBzdFQ-ou19b_R3Lo0Vi8vCI,19428
62
62
  claude_mpm/cli/commands/cleanup.py,sha256=RQikOGLuLFWXzjeoHArdr5FA4Pf7tSK9w2NXL4vCrok,19769
63
63
  claude_mpm/cli/commands/cleanup_orphaned_agents.py,sha256=JR8crvgrz7Sa6d-SI-gKywok5S9rwc_DzDVk_h85sVs,4467
64
- claude_mpm/cli/commands/commander.py,sha256=jumK9ctW50WL-YPzQYxkBUhmS0phwmxcxcXPYg_P4Xk,7243
64
+ claude_mpm/cli/commands/commander.py,sha256=iZ8DCb3bxdWKuIGRlDu24ERdKPyYaWYro2MpwKGtKJU,7243
65
65
  claude_mpm/cli/commands/config.py,sha256=2M9VUPYcQkBUCIyyB-v1qTL3xYvao9YI2l_JGBUDauA,23374
66
66
  claude_mpm/cli/commands/configure.py,sha256=VUokhUcV90GzEEivV3xNmfQHogM94mdDadW3S4mp83M,136509
67
67
  claude_mpm/cli/commands/configure_agent_display.py,sha256=oSvUhR861o_Pyqmop4ACAQNjwL02-Rf6TMqFvmQNh24,10575
@@ -430,9 +430,9 @@ 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=ztkKTr5xFAY-K5gxhsXFtR_4tir3Cjx2l4auSYbJErU,46745
433
- claude_mpm/hooks/claude_hooks/hook_handler.py,sha256=UOl5IVvz0Ro8Z0Owx4sKUWCxoIhvQpt7VTJ8lRC7Y8o,28266
433
+ claude_mpm/hooks/claude_hooks/hook_handler.py,sha256=UbBypLK1xhm6NdBBLLjqlsjLGWg1GgW-XSfeR7gLAOc,28242
434
434
  claude_mpm/hooks/claude_hooks/hook_wrapper.sh,sha256=XYkdYtcM0nfnwYvMdyIFCasr80ry3uI5-fLYsLtDGw4,2214
435
- claude_mpm/hooks/claude_hooks/installer.py,sha256=GgXqRjm_LpukrMl-eLw3cVDJqwwemNAaEKZvKM0QDYQ,34919
435
+ claude_mpm/hooks/claude_hooks/installer.py,sha256=Od_xgLaqL3ZEerRrCiRuM5LiTKVZLwjYHI-fMozPBI8,35179
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
@@ -440,7 +440,7 @@ claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-311.pyc,sha256=EGpgXq
440
440
  claude_mpm/hooks/claude_hooks/__pycache__/auto_pause_handler.cpython-311.pyc,sha256=lw3g7dHPcJ258xtcmbXOk-tCqVz0JAc5PZ10LUfG4Zo,20829
441
441
  claude_mpm/hooks/claude_hooks/__pycache__/correlation_manager.cpython-311.pyc,sha256=SQX5iiP9bQZkLL-cj_2tlGH7lpAzarO0mYal7btj3tc,3521
442
442
  claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-311.pyc,sha256=72KlsOUX_pQDIl36j7sQukPRarsLIsjINtzsBIpxCtw,45568
443
- claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-311.pyc,sha256=vhJjvAMTdDWkB_qWaWr_PeDb4I8-h7UymR1wDVHeyYM,30789
443
+ claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-311.pyc,sha256=rEfK930vlg9myUn4xdP6mRjPvOhSFdjlxwZN-HexhjM,30759
444
444
  claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-311.pyc,sha256=1llucgjrun0H6q8V8_BXTHtkTiYAwNGyptluhoIi7ss,11185
445
445
  claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-311.pyc,sha256=E_pRoKx-mAB5gEv2_5TneMC_K10zj7FYCPwQPnPd88g,16228
446
446
  claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-311.pyc,sha256=ZjcNfNY5Ht6FhalPeh7M7OzMffcey5iF4AVjDDg9kak,10694
@@ -459,8 +459,8 @@ claude_mpm/hooks/failure_learning/__init__.py,sha256=iJ80AKFHiT8DjIH2a72DQVJvL6n
459
459
  claude_mpm/hooks/failure_learning/failure_detection_hook.py,sha256=KENoB5N-dBm5hb0SxeIZtCvNKbmG2BKHOJSrSO-3Z_I,7500
460
460
  claude_mpm/hooks/failure_learning/fix_detection_hook.py,sha256=XUk1bnBVLdfhQ9AMQSvGsTSeFQsKsVud2wbWX-Jjor8,7164
461
461
  claude_mpm/hooks/failure_learning/learning_extraction_hook.py,sha256=vAOwVuZa_bBBSrFvM9v3wt7T1frZO_Yb5iNGOCgWVuk,9981
462
- claude_mpm/hooks/templates/pre_tool_use_simple.py,sha256=E7EIiX0ERjgQ5-hzPeZnT18NBdU5hJHxXq0LH7K984M,2156
463
- claude_mpm/hooks/templates/pre_tool_use_template.py,sha256=y-FrEg04X1BAaMfhXO3ITLPg3j-aSmI7UwLpZRWzAK0,10230
462
+ claude_mpm/hooks/templates/pre_tool_use_simple.py,sha256=IBk6E2DMHvEMrLKacTgdpIuV9qdR5lxKUNOL5udce5Q,2143
463
+ claude_mpm/hooks/templates/pre_tool_use_template.py,sha256=nl8lbzv7zXwedXkQ--s3rE4X87cs0m5uPtIqLmoINAU,10224
464
464
  claude_mpm/models/__init__.py,sha256=GADyLAiF-1VVghYKI7Urz3zSnf2sjJUXlOEMuCOs7_g,468
465
465
  claude_mpm/models/agent_definition.py,sha256=rMCVu4qYpHvw0wSmr5KPyNf8p6Hne049w2erb2Ba_20,7122
466
466
  claude_mpm/models/agent_session.py,sha256=Tc-0OfAorb5BCmOpoZmC7jMdbtm6zZKF1Wtj16MO27s,20054
@@ -468,7 +468,7 @@ claude_mpm/models/git_repository.py,sha256=Lp2I5tv4fu6idIXCTW50MCTWgjuIE-rwsgVIr
468
468
  claude_mpm/models/resume_log.py,sha256=aDiFC_2FR7tue_Kn46ZDUiKmuw9a_W9yE9zE7gA6Hys,12515
469
469
  claude_mpm/schemas/__init__.py,sha256=2SLpkojJq34KnwPkVxrsVmw_cEI66872i75QBT1C2To,446
470
470
  claude_mpm/scripts/__init__.py,sha256=IffMdVD99Pxyw85yluRa0VDPi4dRQecIWce764pcfZE,553
471
- claude_mpm/scripts/claude-hook-handler.sh,sha256=1e5ZsZJQdp9lKLwEmmAtqnEGZPf5UIAG2ReGfwmXtOE,10907
471
+ claude_mpm/scripts/claude-hook-handler.sh,sha256=aGlg1QqA27oc7sXOLO8kE9RZjXqCgGzAeUAMuZq-0_Y,10895
472
472
  claude_mpm/scripts/launch_monitor.py,sha256=M0CSAYJp5UnoyXKnICZgrAFwqqP5XAWDCiii_IIcrCk,5348
473
473
  claude_mpm/scripts/mpm_doctor.py,sha256=98vBiTIB4xpaSgOvTP9N3EU22V2Odxd9DivhQizG0VM,8822
474
474
  claude_mpm/scripts/socketio_daemon.py,sha256=wWFcvKkHa_oR-NQwhvV-O8s3m1TgicBp9UQ-NR8AQmU,6041
@@ -483,7 +483,7 @@ claude_mpm/services/delegation_detector.py,sha256=ZpElqjhTbuEeeTjTMUsl-G1lHMJ9m1
483
483
  claude_mpm/services/event_aggregator.py,sha256=V_5Wln1RzozLMDZawIPl5gSjIN5KHniNPaaSP11Lihc,20251
484
484
  claude_mpm/services/event_log.py,sha256=pMKc8p2lXRoRi_cvVxaU1uNuUCNrGc0EXqBv8TeueyI,10043
485
485
  claude_mpm/services/exceptions.py,sha256=5lVZETr_6-xk0ItH7BTfYUiX5RlckS1e8ah_UalYG9c,26475
486
- claude_mpm/services/hook_installer_service.py,sha256=x3H3bFVlmhK4Ue1K279f44lwMEw3W1p3zoETGfjIH_w,19708
486
+ claude_mpm/services/hook_installer_service.py,sha256=2Oioyp3LOY4Tra2hNMd_9erW2RxWA7j33ybIwKXsTmk,20049
487
487
  claude_mpm/services/hook_service.py,sha256=I6JILbackBsdvrDNQ9TeGSB7XNqozNRP26T4E9_ROtU,15693
488
488
  claude_mpm/services/mcp_config_manager.py,sha256=pQcu5g3lHo082TMX0RDgnfspnvW8huiKysCnFGOD54A,57792
489
489
  claude_mpm/services/mcp_service_verifier.py,sha256=C2DhHY9R4j91WQbe1XSpfYeHjxHg2UyiJ1VQsBgjnlc,25808
@@ -1102,10 +1102,10 @@ claude_mpm/utils/subprocess_utils.py,sha256=D0izRT8anjiUb_JG72zlJR_JAw1cDkb7kalN
1102
1102
  claude_mpm/validation/__init__.py,sha256=YZhwE3mhit-lslvRLuwfX82xJ_k4haZeKmh4IWaVwtk,156
1103
1103
  claude_mpm/validation/agent_validator.py,sha256=GprtAvu80VyMXcKGsK_VhYiXWA6BjKHv7O6HKx0AB9w,20917
1104
1104
  claude_mpm/validation/frontmatter_validator.py,sha256=YpJlYNNYcV8u6hIOi3_jaRsDnzhbcQpjCBE6eyBKaFY,7076
1105
- claude_mpm-5.6.29.dist-info/licenses/LICENSE,sha256=ca3y_Rk4aPrbF6f62z8Ht5MJM9OAvbGlHvEDcj9vUQ4,3867
1106
- claude_mpm-5.6.29.dist-info/licenses/LICENSE-FAQ.md,sha256=TxfEkXVCK98RzDOer09puc7JVCP_q_bN4dHtZKHCMcM,5104
1107
- claude_mpm-5.6.29.dist-info/METADATA,sha256=5mDKQAbYK7VB0jweVdlAd_3Itdf0AA-H2zxBEFTYQwI,15245
1108
- claude_mpm-5.6.29.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1109
- claude_mpm-5.6.29.dist-info/entry_points.txt,sha256=n-Uk4vwHPpuvu-g_I7-GHORzTnN_m6iyOsoLveKKD0E,228
1110
- claude_mpm-5.6.29.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
1111
- claude_mpm-5.6.29.dist-info/RECORD,,
1105
+ claude_mpm-5.6.31.dist-info/licenses/LICENSE,sha256=ca3y_Rk4aPrbF6f62z8Ht5MJM9OAvbGlHvEDcj9vUQ4,3867
1106
+ claude_mpm-5.6.31.dist-info/licenses/LICENSE-FAQ.md,sha256=TxfEkXVCK98RzDOer09puc7JVCP_q_bN4dHtZKHCMcM,5104
1107
+ claude_mpm-5.6.31.dist-info/METADATA,sha256=9AEOst6iPDmwxY5OD3hWc1wxmn8Az6V8sO3De5zK7M8,15245
1108
+ claude_mpm-5.6.31.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1109
+ claude_mpm-5.6.31.dist-info/entry_points.txt,sha256=n-Uk4vwHPpuvu-g_I7-GHORzTnN_m6iyOsoLveKKD0E,228
1110
+ claude_mpm-5.6.31.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
1111
+ claude_mpm-5.6.31.dist-info/RECORD,,