claude-mpm 4.0.19__py3-none-any.whl → 4.0.20__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 (38) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/__main__.py +4 -0
  3. claude_mpm/agents/BASE_AGENT_TEMPLATE.md +38 -2
  4. claude_mpm/agents/OUTPUT_STYLE.md +84 -0
  5. claude_mpm/agents/templates/qa.json +1 -1
  6. claude_mpm/cli/__init__.py +23 -1
  7. claude_mpm/cli/__main__.py +4 -0
  8. claude_mpm/cli/commands/memory.py +32 -5
  9. claude_mpm/cli/commands/run.py +33 -6
  10. claude_mpm/cli/parsers/base_parser.py +5 -0
  11. claude_mpm/cli/parsers/run_parser.py +5 -0
  12. claude_mpm/cli/utils.py +17 -4
  13. claude_mpm/core/base_service.py +1 -1
  14. claude_mpm/core/config.py +70 -5
  15. claude_mpm/core/framework_loader.py +342 -31
  16. claude_mpm/core/interactive_session.py +55 -1
  17. claude_mpm/core/oneshot_session.py +7 -1
  18. claude_mpm/core/output_style_manager.py +468 -0
  19. claude_mpm/core/unified_paths.py +190 -21
  20. claude_mpm/hooks/claude_hooks/hook_handler.py +91 -16
  21. claude_mpm/hooks/claude_hooks/hook_wrapper.sh +3 -0
  22. claude_mpm/init.py +1 -0
  23. claude_mpm/services/agents/deployment/agent_deployment.py +151 -7
  24. claude_mpm/services/agents/deployment/agent_template_builder.py +37 -1
  25. claude_mpm/services/agents/deployment/multi_source_deployment_service.py +441 -0
  26. claude_mpm/services/agents/memory/__init__.py +0 -2
  27. claude_mpm/services/agents/memory/agent_memory_manager.py +737 -43
  28. claude_mpm/services/agents/memory/content_manager.py +144 -14
  29. claude_mpm/services/agents/memory/template_generator.py +7 -354
  30. claude_mpm/services/mcp_gateway/server/stdio_server.py +61 -169
  31. claude_mpm/services/subprocess_launcher_service.py +5 -0
  32. {claude_mpm-4.0.19.dist-info → claude_mpm-4.0.20.dist-info}/METADATA +1 -1
  33. {claude_mpm-4.0.19.dist-info → claude_mpm-4.0.20.dist-info}/RECORD +37 -35
  34. claude_mpm/services/agents/memory/analyzer.py +0 -430
  35. {claude_mpm-4.0.19.dist-info → claude_mpm-4.0.20.dist-info}/WHEEL +0 -0
  36. {claude_mpm-4.0.19.dist-info → claude_mpm-4.0.20.dist-info}/entry_points.txt +0 -0
  37. {claude_mpm-4.0.19.dist-info → claude_mpm-4.0.20.dist-info}/licenses/LICENSE +0 -0
  38. {claude_mpm-4.0.19.dist-info → claude_mpm-4.0.20.dist-info}/top_level.txt +0 -0
@@ -16,7 +16,7 @@ import asyncio
16
16
  import json
17
17
  import logging
18
18
  import sys
19
- from typing import Any, Dict, List, Optional
19
+ from typing import Any, Dict, Optional
20
20
 
21
21
  # Import MCP SDK components
22
22
  from mcp.server import NotificationOptions, Server
@@ -190,7 +190,7 @@ class SimpleMCPServer:
190
190
  # Default to brief
191
191
  return self._create_brief_summary(sentences, max_length)
192
192
 
193
- def _create_brief_summary(self, sentences: List[str], max_length: int) -> str:
193
+ def _create_brief_summary(self, sentences: list[str], max_length: int) -> str:
194
194
  """Create a brief summary by selecting most important sentences."""
195
195
  if not sentences:
196
196
  return ""
@@ -272,7 +272,7 @@ class SimpleMCPServer:
272
272
  return " ".join(s[1] for s in selected)
273
273
 
274
274
  def _create_detailed_summary(
275
- self, sentences: List[str], content: str, max_length: int
275
+ self, sentences: list[str], content: str, max_length: int
276
276
  ) -> str:
277
277
  """Create a detailed summary preserving document structure."""
278
278
  import re
@@ -303,7 +303,7 @@ class SimpleMCPServer:
303
303
  return " ".join(words) + ("..." if len(result.split()) > max_length else "")
304
304
 
305
305
  def _create_bullet_summary(
306
- self, sentences: List[str], content: str, max_length: int
306
+ self, sentences: list[str], content: str, max_length: int
307
307
  ) -> str:
308
308
  """Extract key points as a bullet list."""
309
309
  import re
@@ -347,7 +347,7 @@ class SimpleMCPServer:
347
347
  return "\n".join(result_lines)
348
348
 
349
349
  def _create_executive_summary(
350
- self, sentences: List[str], content: str, max_length: int
350
+ self, sentences: list[str], content: str, max_length: int
351
351
  ) -> str:
352
352
  """Create an executive summary with overview, findings, and recommendations."""
353
353
  # Allocate words across sections
@@ -436,32 +436,9 @@ class SimpleMCPServer:
436
436
  # NOTE: Defer initialization to avoid event loop issues
437
437
  self.unified_ticket_tool = None
438
438
  self._ticket_tool_initialized = False
439
-
440
- async def _initialize_ticket_tool(self):
441
- """
442
- Initialize the unified ticket tool asynchronously.
443
-
444
- This is called lazily when the tool is first needed,
445
- ensuring an event loop is available.
446
- """
447
- if self._ticket_tool_initialized or not TICKET_TOOLS_AVAILABLE:
448
- return
449
439
 
450
- try:
451
- self.logger.info("Initializing unified ticket tool...")
452
- self.unified_ticket_tool = UnifiedTicketTool()
453
- # If the tool has an async init method, call it
454
- if hasattr(self.unified_ticket_tool, 'initialize'):
455
- await self.unified_ticket_tool.initialize()
456
- self._ticket_tool_initialized = True
457
- self.logger.info("Unified ticket tool initialized successfully")
458
- except Exception as e:
459
- self.logger.warning(f"Failed to initialize unified ticket tool: {e}")
460
- self.unified_ticket_tool = None
461
- self._ticket_tool_initialized = True # Mark as attempted
462
-
463
440
  @self.server.list_tools()
464
- async def handle_list_tools() -> List[Tool]:
441
+ async def handle_list_tools() -> list[Tool]:
465
442
  """List available tools."""
466
443
  # Initialize ticket tool lazily if needed
467
444
  if not self._ticket_tool_initialized and TICKET_TOOLS_AVAILABLE:
@@ -469,69 +446,22 @@ class SimpleMCPServer:
469
446
 
470
447
  tools = [
471
448
  Tool(
472
- name="echo",
473
- description="Echo back the provided message",
474
- inputSchema={
475
- "type": "object",
476
- "properties": {
477
- "message": {
478
- "type": "string",
479
- "description": "Message to echo",
480
- }
481
- },
482
- "required": ["message"],
483
- },
484
- ),
485
- Tool(
486
- name="calculator",
487
- description="Perform basic arithmetic calculations",
488
- inputSchema={
489
- "type": "object",
490
- "properties": {
491
- "expression": {
492
- "type": "string",
493
- "description": "Mathematical expression to evaluate",
494
- }
495
- },
496
- "required": ["expression"],
497
- },
498
- ),
499
- Tool(
500
- name="system_info",
501
- description="Get system information",
449
+ name="status",
450
+ description="Get system and service status information",
502
451
  inputSchema={
503
452
  "type": "object",
504
453
  "properties": {
505
454
  "info_type": {
506
455
  "type": "string",
507
- "enum": ["platform", "python_version", "cwd"],
508
- "description": "Type of system information to retrieve",
456
+ "enum": ["platform", "python_version", "cwd", "all"],
457
+ "description": "Type of status information to retrieve (default: all)",
458
+ "default": "all",
509
459
  }
510
460
  },
511
- "required": ["info_type"],
512
- },
513
- ),
514
- Tool(
515
- name="run_command",
516
- description="Execute a shell command",
517
- inputSchema={
518
- "type": "object",
519
- "properties": {
520
- "command": {
521
- "type": "string",
522
- "description": "Shell command to execute",
523
- },
524
- "timeout": {
525
- "type": "number",
526
- "description": "Command timeout in seconds",
527
- "default": 30,
528
- },
529
- },
530
- "required": ["command"],
531
461
  },
532
462
  ),
533
463
  Tool(
534
- name="summarize_document",
464
+ name="document_summarizer",
535
465
  description="Summarize documents or text content",
536
466
  inputSchema={
537
467
  "type": "object",
@@ -576,60 +506,17 @@ class SimpleMCPServer:
576
506
  self.logger.info(f"Listing {len(tools)} available tools")
577
507
  return tools
578
508
 
509
+
579
510
  @self.server.call_tool()
580
511
  async def handle_call_tool(
581
512
  name: str, arguments: Dict[str, Any]
582
- ) -> List[TextContent]:
513
+ ) -> list[TextContent]:
583
514
  """Handle tool invocation."""
584
515
  self.logger.info(f"Invoking tool: {name} with arguments: {arguments}")
585
516
 
586
517
  try:
587
- if name == "echo":
588
- message = arguments.get("message", "")
589
- result = f"Echo: {message}"
590
-
591
- elif name == "calculator":
592
- expression = arguments.get("expression", "")
593
- try:
594
- # Safe evaluation of mathematical expressions
595
- import ast
596
- import operator as op
597
-
598
- # Supported operators
599
- ops = {
600
- ast.Add: op.add,
601
- ast.Sub: op.sub,
602
- ast.Mult: op.mul,
603
- ast.Div: op.truediv,
604
- ast.Pow: op.pow,
605
- ast.Mod: op.mod,
606
- ast.USub: op.neg,
607
- }
608
-
609
- def eval_expr(expr):
610
- """Safely evaluate mathematical expression."""
611
-
612
- def _eval(node):
613
- if isinstance(node, ast.Constant):
614
- return node.value
615
- elif isinstance(node, ast.BinOp):
616
- return ops[type(node.op)](
617
- _eval(node.left), _eval(node.right)
618
- )
619
- elif isinstance(node, ast.UnaryOp):
620
- return ops[type(node.op)](_eval(node.operand))
621
- else:
622
- raise TypeError(f"Unsupported operation: {node}")
623
-
624
- return _eval(ast.parse(expr, mode="eval").body)
625
-
626
- result_value = eval_expr(expression)
627
- result = f"{expression} = {result_value}"
628
- except Exception as e:
629
- result = f"Error evaluating expression: {str(e)}"
630
-
631
- elif name == "system_info":
632
- info_type = arguments.get("info_type", "platform")
518
+ if name == "status":
519
+ info_type = arguments.get("info_type", "all")
633
520
 
634
521
  if info_type == "platform":
635
522
  import platform
@@ -643,49 +530,25 @@ class SimpleMCPServer:
643
530
  import os
644
531
 
645
532
  result = f"Working Directory: {os.getcwd()}"
533
+ elif info_type == "all":
534
+ import platform
535
+ import sys
536
+ import os
537
+ import datetime
538
+
539
+ result = (
540
+ f"=== System Status ===\n"
541
+ f"Platform: {platform.system()} {platform.release()}\n"
542
+ f"Python: {sys.version.split()[0]}\n"
543
+ f"Working Directory: {os.getcwd()}\n"
544
+ f"Server: {self.name} v{self.version}\n"
545
+ f"Timestamp: {datetime.datetime.now().isoformat()}\n"
546
+ f"Tools Available: status, document_summarizer{', ticket' if self.unified_ticket_tool else ''}"
547
+ )
646
548
  else:
647
549
  result = f"Unknown info type: {info_type}"
648
550
 
649
- elif name == "run_command":
650
- command = arguments.get("command", "")
651
- timeout = arguments.get("timeout", 30)
652
-
653
- import shlex
654
- import subprocess
655
-
656
- try:
657
- # Split command string into a list to avoid shell injection
658
- command_parts = shlex.split(command)
659
-
660
- # Use create_subprocess_exec instead of create_subprocess_shell
661
- # to prevent command injection vulnerabilities
662
- proc = await asyncio.create_subprocess_exec(
663
- *command_parts,
664
- stdout=subprocess.PIPE,
665
- stderr=subprocess.PIPE,
666
- )
667
-
668
- stdout, stderr = await asyncio.wait_for(
669
- proc.communicate(), timeout=timeout
670
- )
671
-
672
- if proc.returncode == 0:
673
- result = (
674
- stdout.decode()
675
- if stdout
676
- else "Command completed successfully"
677
- )
678
- else:
679
- result = f"Command failed with code {proc.returncode}: {stderr.decode()}"
680
- except asyncio.TimeoutError:
681
- result = f"Command timed out after {timeout} seconds"
682
- except ValueError as e:
683
- # Handle shlex parsing errors (e.g., unmatched quotes)
684
- result = f"Invalid command syntax: {str(e)}"
685
- except Exception as e:
686
- result = f"Error running command: {str(e)}"
687
-
688
- elif name == "summarize_document":
551
+ elif name == "document_summarizer":
689
552
  content = arguments.get("content", "")
690
553
  style = arguments.get("style", "brief")
691
554
  max_length = arguments.get("max_length", 150)
@@ -734,6 +597,29 @@ class SimpleMCPServer:
734
597
  return [TextContent(type="text", text=error_msg)]
735
598
 
736
599
 
600
+ async def _initialize_ticket_tool(self):
601
+ """
602
+ Initialize the unified ticket tool asynchronously.
603
+
604
+ This is called lazily when the tool is first needed,
605
+ ensuring an event loop is available.
606
+ """
607
+ if self._ticket_tool_initialized or not TICKET_TOOLS_AVAILABLE:
608
+ return
609
+
610
+ try:
611
+ self.logger.info("Initializing unified ticket tool...")
612
+ self.unified_ticket_tool = UnifiedTicketTool()
613
+ # If the tool has an async init method, call it
614
+ if hasattr(self.unified_ticket_tool, 'initialize'):
615
+ await self.unified_ticket_tool.initialize()
616
+ self._ticket_tool_initialized = True
617
+ self.logger.info("Unified ticket tool initialized successfully")
618
+ except Exception as e:
619
+ self.logger.warning(f"Failed to initialize unified ticket tool: {e}")
620
+ self.unified_ticket_tool = None
621
+ self._ticket_tool_initialized = True # Mark as attempted
622
+
737
623
  async def run(self):
738
624
  """
739
625
  Run the MCP server using stdio communication with backward compatibility.
@@ -799,9 +685,15 @@ async def main():
799
685
 
800
686
  def main_sync():
801
687
  """Synchronous entry point for use as a console script."""
688
+ import os
689
+ # Disable telemetry by default
690
+ os.environ.setdefault('DISABLE_TELEMETRY', '1')
802
691
  asyncio.run(main())
803
692
 
804
693
 
805
694
  if __name__ == "__main__":
695
+ import os
696
+ # Disable telemetry by default
697
+ os.environ.setdefault('DISABLE_TELEMETRY', '1')
806
698
  # Run the async main function
807
699
  main_sync()
@@ -313,4 +313,9 @@ class SubprocessLauncherService(BaseService, SubprocessLauncherInterface):
313
313
  env = os.environ.copy()
314
314
  if base_env:
315
315
  env.update(base_env)
316
+
317
+ # Disable telemetry for Claude Code subprocesses
318
+ # This ensures Claude Code doesn't send telemetry data during runtime
319
+ env["DISABLE_TELEMETRY"] = "1"
320
+
316
321
  return env
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-mpm
3
- Version: 4.0.19
3
+ Version: 4.0.20
4
4
  Summary: Claude Multi-agent Project Manager - Clean orchestration with ticket management
5
5
  Home-page: https://github.com/bobmatnyc/claude-mpm
6
6
  Author: Claude MPM Team
@@ -1,14 +1,15 @@
1
1
  claude_mpm/BUILD_NUMBER,sha256=lClFCBcT1eNYIwcwgsxZcVeZ3Ebeb7-A7a1Zx8FU8xQ,4
2
- claude_mpm/VERSION,sha256=Z-JqRBA-lg5d3JWZYUWbiCNR9q8mM3cObebQWlEvUTQ,7
2
+ claude_mpm/VERSION,sha256=LuG3_UpVIlN7GaTUhjk6a1oc-0jWsWEvW6XSPD4fSgs,7
3
3
  claude_mpm/__init__.py,sha256=lyTZAYGH4DTaFGLRNWJKk5Q5oTjzN5I6AXmfVX-Jff0,1512
4
- claude_mpm/__main__.py,sha256=Lfi2z17WSKiMrTAhA0LNsdLJRiV-J2dAezXPt0R9Qis,643
4
+ claude_mpm/__main__.py,sha256=_kaecmtouDenx_-wueUULnTxu8LirJEerzXIHiKMgew,723
5
5
  claude_mpm/constants.py,sha256=cwfhDsstU5KK7esKnoq0PtSUg7LjneujdHjR-o5dX00,5597
6
- claude_mpm/init.py,sha256=D8aMwFSXUYBV_GicM9SWUJZHkQ3g1VpEupu73DqA47o,15128
6
+ claude_mpm/init.py,sha256=n2W1sBtGUOod2XSMbiYZsqucvQUMuxf0ZudzeQjFv7E,15209
7
7
  claude_mpm/ticket_wrapper.py,sha256=qe5xY579t7_7fK5nyeAfHN_fr7CXdeOD3jfXEc8-7yo,828
8
- claude_mpm/agents/BASE_AGENT_TEMPLATE.md,sha256=P1H5dBjwT3VsRVGxsCM1Wx7ViFhwCBWxNZOWLeJyRIw,2427
8
+ claude_mpm/agents/BASE_AGENT_TEMPLATE.md,sha256=IV25JFisAu0sVR3IbVZ8OxiLGYjKJ5QdiBJ3OycmeSw,4110
9
9
  claude_mpm/agents/BASE_PM.md,sha256=0qquMIRvJyXpHe7vs2TNwaZNuC5IdLUkLkJgY6nWgvc,7951
10
10
  claude_mpm/agents/INSTRUCTIONS.md,sha256=gQK3E0lcWntCyMoTXmwxuXPSyh-9zX94MU8nQT7gbaU,9750
11
11
  claude_mpm/agents/MEMORY.md,sha256=zzwq4ytOrRaj64iq1q7brC6WOCQ4PDDC75TTRT8QudA,3493
12
+ claude_mpm/agents/OUTPUT_STYLE.md,sha256=iX1vX81PnCq8N92v95hWbvaUfg3JZ2qpGJYfCG97r0c,2854
12
13
  claude_mpm/agents/WORKFLOW.md,sha256=K1XqSlPNAs6HkcOSBTrOD7-0BcWCn90Sb6zX1EXtV6c,4686
13
14
  claude_mpm/agents/__init__.py,sha256=CPLqdKz9t_0gsSNdMSCZFw09jWQKSQ_piszPRFUyhKM,3220
14
15
  claude_mpm/agents/agent-template.yaml,sha256=mRlz5Yd0SmknTeoJWgFkZXzEF5T7OmGBJGs2-KPT93k,1969
@@ -30,7 +31,7 @@ claude_mpm/agents/templates/engineer.json,sha256=cxES5OiUT9UcI8npqpFrDo9doOyVJXY
30
31
  claude_mpm/agents/templates/memory_manager.json,sha256=XgXZYJFXFsNHRzwl_qyIKF6jzBa0dv6DqoiU8uuzHvw,12613
31
32
  claude_mpm/agents/templates/ops.json,sha256=QVlUNxE6ohwUYLj9nGG7_E9J3NA4Q8re22WXa8Zg-U4,13779
32
33
  claude_mpm/agents/templates/project_organizer.json,sha256=MpnwngqsKb4bEfTsnwOJCs1AMV29FEkx2sf2f_PZo5Y,17162
33
- claude_mpm/agents/templates/qa.json,sha256=4ej-Cw3ypjZCxkm42_odXsXmySBnM5nhhVJvZRn9IyA,14890
34
+ claude_mpm/agents/templates/qa.json,sha256=hNHlTT92r99ozH-TcBjmB5cMpUP09shCm2i7tK-v46g,14890
34
35
  claude_mpm/agents/templates/refactoring_engineer.json,sha256=02FSPaBHJW5Oc6jVp9BM10dbMfXXhVZRTE4gHaq557Y,17216
35
36
  claude_mpm/agents/templates/research.json,sha256=eSIjZXOlwn8N4ldiK84YsMpZeMmRYf8RvNQjNPkFd8Y,10909
36
37
  claude_mpm/agents/templates/security.json,sha256=VqJfSmc7HtKdima7CGPAbZ1hkOarrQ8_R_pV43utwBA,12350
@@ -48,11 +49,11 @@ claude_mpm/agents/templates/backup/research_agent_20250726_234551.json,sha256=o4
48
49
  claude_mpm/agents/templates/backup/research_memory_efficient.json,sha256=WlPnKlojeiCBZ4H75nWexLl_dHU5cSORIqLCDp4tCMM,8419
49
50
  claude_mpm/agents/templates/backup/security_agent_20250726_234551.json,sha256=l5YuD-27CxKSOsRLv0bDY_tCZyds0yGbeizLb8paeFY,2322
50
51
  claude_mpm/agents/templates/backup/version_control_agent_20250726_234551.json,sha256=too38RPTLJ9HutCMn0nfmEdCj2me241dx5tUYDFtu94,2143
51
- claude_mpm/cli/__init__.py,sha256=j8VD88hQjRr0THMih9HVjirQR_XFv_K_FzUNrHAZYi4,10994
52
- claude_mpm/cli/__main__.py,sha256=kTFfTFeGzMIj-LPJY6wkJby8jCHt0UnapS7J7P83y7w,767
52
+ claude_mpm/cli/__init__.py,sha256=p0w-UrQmYejMmqBmysAY2NdyLBk2UNPEucOA-W4xCFg,12047
53
+ claude_mpm/cli/__main__.py,sha256=si_4WQX3adES4XRQJt-Jb0f7tWOZq0I-A7eO14hrMc4,847
53
54
  claude_mpm/cli/parser.py,sha256=Kv2d4JJMVIag1Q_YJimJdjzrnEN_jetKW-hGuEW67Uo,1438
54
55
  claude_mpm/cli/ticket_cli.py,sha256=Cco0riIeo-PuzBslX3-5LAtLUcsLvexSRtVlheb7-cQ,916
55
- claude_mpm/cli/utils.py,sha256=W5Wvd0_ZjgKgxZ7bBTJUD1i9TmYWDuKr-Jrt1zodHtA,6512
56
+ claude_mpm/cli/utils.py,sha256=uhTQ4TG8TulEOl93PKFNmkhheWynNIPmadD-p4FhytQ,7091
56
57
  claude_mpm/cli/commands/__init__.py,sha256=GEfUDqgt_zib001DbkGZmVHaTncFjUPk4_Aa3OYKTFU,856
57
58
  claude_mpm/cli/commands/agents.py,sha256=F6lfXBGroB82mmODbjVzg0gH_FqFYstHQa6Wjv_vd3Q,32877
58
59
  claude_mpm/cli/commands/aggregate.py,sha256=QxVFh2bTC3fNjTAksBvAmfTXNoCdsHQn36Ej0ZAGvbg,14405
@@ -65,20 +66,20 @@ claude_mpm/cli/commands/mcp_config_commands.py,sha256=TnTg7-erE5Z6O8C84o4lZITco7
65
66
  claude_mpm/cli/commands/mcp_install_commands.py,sha256=mrrCtvWZeSVyGxivSSTPMpo2wWGsNNAsPM3-IZjY9Ms,2931
66
67
  claude_mpm/cli/commands/mcp_server_commands.py,sha256=_5iC8Iuroz_OwJCsMQ1CJKNNaGJl2616rf9s9xYb-_o,6503
67
68
  claude_mpm/cli/commands/mcp_tool_commands.py,sha256=q17GzlFT3JiLTrDqwPO2tz1-fKmPO5QU449syTnKTz4,1283
68
- claude_mpm/cli/commands/memory.py,sha256=UqMSrwFhXEt4lsOOcgHDOKWmlwLe0rwCuc4E2FNi3BE,36807
69
+ claude_mpm/cli/commands/memory.py,sha256=FhOF5pl-EVhkHRUErnlGlraBh_vM2fsOrZCsD07Fd1E,38397
69
70
  claude_mpm/cli/commands/monitor.py,sha256=L8ID5Z2CAgPhGBWh85rmwrM3ZgHNOZj2nKNHvZEkcps,23148
70
- claude_mpm/cli/commands/run.py,sha256=fXZBz6d3GTrg0XeeZGvjOMy1tx-SyOqaZeI4iv_j8go,37264
71
+ claude_mpm/cli/commands/run.py,sha256=seVEyYFdbVvCAKZXIGmNH6RZpyqxXbx5SRriHZDzB34,38488
71
72
  claude_mpm/cli/commands/run_config_checker.py,sha256=OVH6KwhQPRXCk1GpjuBVHyc3WhdntPGYJfOK3uQc6FA,6962
72
73
  claude_mpm/cli/commands/socketio_monitor.py,sha256=3QnUrbd7l6wZyYKA3mGoT_AbenhSgw2JfRgf4OHJ8Ug,9588
73
74
  claude_mpm/cli/commands/tickets.py,sha256=CU8_SupT6KCRKqGKAY8eE3_3K5nSvBC8PBD-WQFsdUM,25977
74
75
  claude_mpm/cli/parsers/__init__.py,sha256=z6xJz7lumf54qkqv5hvDYr3P1ib_MqvoxSW8-gFz9Kg,1005
75
76
  claude_mpm/cli/parsers/agents_parser.py,sha256=KK2XQjheedr2OpQ2vGfH1iOWHYLgGgpNZx0yU5un_Aw,4576
76
- claude_mpm/cli/parsers/base_parser.py,sha256=Keh3ToQyWhdj0_1zPPV_6P_LiXqv7KNy5jo5Av8CROA,11495
77
+ claude_mpm/cli/parsers/base_parser.py,sha256=XS0-ZsErT-SoWzhwXVa2jFJSZEqvMRK8v074TaWZtOA,11663
77
78
  claude_mpm/cli/parsers/config_parser.py,sha256=wp6NbV8_p9txP28MXFcQrri0JDIfGFM7u4aJbYJXcYQ,2699
78
79
  claude_mpm/cli/parsers/mcp_parser.py,sha256=SUwOagXlNP3qbRUvjuNU17plTyCD2ppJXBIPLQ0rmvw,5050
79
80
  claude_mpm/cli/parsers/memory_parser.py,sha256=ZwCDxJEgp-w03L-1tZsWTgisiwamP42s424bA5bvDJc,4760
80
81
  claude_mpm/cli/parsers/monitor_parser.py,sha256=lkiAzMfU8DDdv5cJ-OHQ4sS5b-kcmACIuAwsqWkVdik,4453
81
- claude_mpm/cli/parsers/run_parser.py,sha256=nBCEIPRSMHIhRRuvVb8eq_gBXBmVCW63Fq2xh59be3w,4585
82
+ claude_mpm/cli/parsers/run_parser.py,sha256=blZYOZQI0kumQ6aRuk1Fn75Fbca5KrUTGiVomzdWIWA,4753
82
83
  claude_mpm/cli/parsers/tickets_parser.py,sha256=FYl-VNH7PrZzfZUCcjnf6F7g6JXnL8YDxwrmR5svIcg,6966
83
84
  claude_mpm/cli_module/__init__.py,sha256=CbBbzKiJASmLmq3ElvXbOKS4Y4A_ugZo1bMv3kUBf6k,392
84
85
  claude_mpm/cli_module/args.py,sha256=QHxD6ockBSKQojBcmh9HmEMMlyscBgtNtIyGe78NG_o,8474
@@ -93,30 +94,31 @@ claude_mpm/core/__init__.py,sha256=xIIcZZv57QDkKs6SEs_3wd7kXKrI1imDa_9v8crCwEQ,8
93
94
  claude_mpm/core/agent_name_normalizer.py,sha256=NNQoglaVWsynV3p0ti6chQavjEdVT6o71Zyg4priZ54,8913
94
95
  claude_mpm/core/agent_registry.py,sha256=iH8i6F0SvtW2QjSh5UQ1w8DciXE1zluyLBwoqyfMWxo,19251
95
96
  claude_mpm/core/agent_session_manager.py,sha256=MolW5mHhKCN1VSPvzgMnLiXJGv7TRic0TNFQaJqs3kw,11054
96
- claude_mpm/core/base_service.py,sha256=rJ5tsG8rpP2DW_FBuDTqC0GMwb3bNaRo2grfOomF-wg,29072
97
+ claude_mpm/core/base_service.py,sha256=ROXWZ2G9pKoORye9KNHQdQUhx-x7soa8PwgFY5IK1Iw,29073
97
98
  claude_mpm/core/cache.py,sha256=eE-5dW5scztLo8hqx1kuOnNamP4X_oO9E8Rz_QP4UDI,17224
98
99
  claude_mpm/core/claude_runner.py,sha256=m86M3emg76oIlYIe5zSjsnNuw9W52f21Da73q8yZ77o,31765
99
- claude_mpm/core/config.py,sha256=KxFIVFzRvw9RoC7bThU_Ta6xRMD9rM6qQYcUigojp8g,31746
100
+ claude_mpm/core/config.py,sha256=8-bbiPaKbux9VYOdaLDIAmgSmtsxQcF3vFfyMsorM4w,34945
100
101
  claude_mpm/core/config_aliases.py,sha256=X8H0cwry7pPdvfnorB1s0paUNA7E989G0ZNSccYUKnE,9693
101
102
  claude_mpm/core/config_constants.py,sha256=i5gxsDPQjCCzp6EYcLljhTu2x-oSzlRM5-wNBnCYPqQ,9395
102
103
  claude_mpm/core/constants.py,sha256=6e_IMQMOeW3oMgUsLFGvbqzM8Sf4fDYMpn3rGpfWVhM,9561
103
104
  claude_mpm/core/container.py,sha256=SERH3YOH9BXtHbv-kWu0bViNpdcGccDXR0NXFXbw1Pc,32155
104
105
  claude_mpm/core/exceptions.py,sha256=lNVLqVuRjygHe89NJg1rPAyevVdzpLOKgHFMQtGSxdA,19654
105
106
  claude_mpm/core/factories.py,sha256=A7WcjYWjhkc-tzUnef0YaW0Jj8oxMP-7_g2jIj1XYa8,7265
106
- claude_mpm/core/framework_loader.py,sha256=kXHTB8GdQGY0BsWPCay3N7lD6vUUFpem6sNnsqAi4bs,52625
107
+ claude_mpm/core/framework_loader.py,sha256=VDoEjTYP2t1e2Mo7dBsHFkAw2QwtP_6g2YaxMLtYc6Q,66946
107
108
  claude_mpm/core/hook_manager.py,sha256=N-54QwNsyrUZSrH533HAo6hlJKPFbgMeDirg92H8en8,11014
108
109
  claude_mpm/core/hook_performance_config.py,sha256=Cqf-89mjiLlFJ-v4PhxfzsaOVovYYQa5pa-RMm42Ki8,5748
109
110
  claude_mpm/core/injectable_service.py,sha256=HXuviYX-h0sNxOFzgZiYjf-gLDUnQIeG-0-KuWdfCzk,7397
110
- claude_mpm/core/interactive_session.py,sha256=bYrQDEYUvKAoQEEU8CVBlqE2nkDhLqJQCijbGJQnHxw,19002
111
+ claude_mpm/core/interactive_session.py,sha256=L_UdxRBsvzGDLv0u6ySW-aRQ7XZbq2rlg1IFcM0rPWw,21701
111
112
  claude_mpm/core/interfaces.py,sha256=unClq54EgOIamVICS0G_LJzUa4gLXixqfDxiAvNjEkk,26914
112
113
  claude_mpm/core/lazy.py,sha256=to0DBciTUnWL9UO8o5bCVSgFCRHE1VtSrgX_B8qYg0Y,14724
113
114
  claude_mpm/core/logger.py,sha256=lzwREb0SBEXL-IkCRnJHK_GKuRaegNOx4CJltfAsNAE,15774
114
115
  claude_mpm/core/logging_config.py,sha256=37qqwb9-PKWIBO_Bx6PyrB9sMpppSV-fvskdZMzB6uc,14738
115
116
  claude_mpm/core/minimal_framework_loader.py,sha256=DqAuORutgdXXsKXb-6B7lfE-0qMVeMnU0j2TdmyuCgs,3652
116
117
  claude_mpm/core/mixins.py,sha256=vmZ7Nu2ZOnKjbhN07Ixk4noIej9nsJiknrp-Sclfu0A,5344
117
- claude_mpm/core/oneshot_session.py,sha256=abTB5OHoinx06pNabdm7wLZ8KvTwg5zLOXpH-ZftS0w,18120
118
+ claude_mpm/core/oneshot_session.py,sha256=dFVWch2ddbD2p0ahITjS-LUod-6Src3EGmULk3fT9ZU,18317
118
119
  claude_mpm/core/optimized_agent_loader.py,sha256=_P9lEPpHB0ZjACkQ8wurxFZZ8wv8Q-2wKUnVCUbMDcE,15874
119
120
  claude_mpm/core/optimized_startup.py,sha256=p4T5eWtKnJZ1WVz5rvlGtBazWwLcYXRfoRA5jXzP1pQ,15470
121
+ claude_mpm/core/output_style_manager.py,sha256=5XtYD2aIdR23zaoyF-FKkTpKIUaKgIkwKq1qh4kTCOE,19800
120
122
  claude_mpm/core/pm_hook_interceptor.py,sha256=-rhH08QB_WgPB_ZGTtdbUJkCDB3asvSzMTDc-TVPYKk,7109
121
123
  claude_mpm/core/service_registry.py,sha256=Tx_i9dKYVYL70us7qI6TGYhqGAtSsroWNgdwT5ljpFc,11451
122
124
  claude_mpm/core/session_manager.py,sha256=xevsFjemngwcsHsHwJpz6Fx3rkVsfepfJQlmQlQsk7E,11961
@@ -126,7 +128,7 @@ claude_mpm/core/types.py,sha256=RQ6MQlV_G3ohLPSdQRRAlQkoCt1BuLK-vnl2JbuFQYA,7835
126
128
  claude_mpm/core/typing_utils.py,sha256=IV-AaalNeJaXIqgfnPqY2yO46az8ji42ENuhVCLhkaU,13477
127
129
  claude_mpm/core/unified_agent_registry.py,sha256=57So2ivXX8UiEWYkPGjX-dZgWVxJDlyMwbfoRpNEhmM,24561
128
130
  claude_mpm/core/unified_config.py,sha256=zMqUPiszLIA4D3PZgGjuKCaPc7EdadsNjnGnERNt3a0,19694
129
- claude_mpm/core/unified_paths.py,sha256=bh5Oe99o4mmBYYFYHnyakQt-BXOq5fAeqobm2Hk3p3o,19461
131
+ claude_mpm/core/unified_paths.py,sha256=hVLgGObMpWksI0fVDbsh2Z62C-uh9pPTn2Nk4gQWB8M,29197
130
132
  claude_mpm/dashboard/index.html,sha256=d0DPXBFdtIYWPv0TsLnnYBY8jY2wnoAL9EYAkrUN7UM,452
131
133
  claude_mpm/dashboard/open_dashboard.py,sha256=q6KuQg1ZWvr1SvYXKJdSMfyNsXzDElxBxeMihcc-EMU,2237
132
134
  claude_mpm/dashboard/test_dashboard.html,sha256=Aakmm9O-pWld_CCXLuUBOJC81Ix9D1avytTN93u0zfc,15090
@@ -189,8 +191,8 @@ claude_mpm/hooks/validation_hooks.py,sha256=w3bSApxZE6hfLnBLVEs62DpJ6grxOr1-JZn1
189
191
  claude_mpm/hooks/claude_hooks/__init__.py,sha256=b4mud_g3S-3itHY_Dzpbb_SmdMEcJwtUU8fTcqpLqqs,130
190
192
  claude_mpm/hooks/claude_hooks/connection_pool.py,sha256=8bluFsgiM6HUJuNw-Dl7RkuzLR1vVMWGdEwucp9r3gc,6508
191
193
  claude_mpm/hooks/claude_hooks/event_handlers.py,sha256=rLaKV_pV8NOCwbJQtg7At0xYNfYcCDiajSge7TiiuPk,30081
192
- claude_mpm/hooks/claude_hooks/hook_handler.py,sha256=quEOyJ6pKwxPdzoFt9RaFHa9u88nNdLN7mvg6_a-5F0,38649
193
- claude_mpm/hooks/claude_hooks/hook_wrapper.sh,sha256=xcNT3yIx9srBSd_9aosBp9w45JwaZHDlsp5ocio9cM8,2405
194
+ claude_mpm/hooks/claude_hooks/hook_handler.py,sha256=tUwThb4R76_oQsoV_Z_J7rWXJH0TZjP6Ua4kAx-S3Qc,42556
195
+ claude_mpm/hooks/claude_hooks/hook_wrapper.sh,sha256=4lG3TlLVoVfTJipPj1X_ICUlS-KpnkbUp1U3oSq80Bw,2476
194
196
  claude_mpm/hooks/claude_hooks/memory_integration.py,sha256=fxkawPwMkMCGxJ5Ki_PJ7blN1vtQXEYqGxxQPJytOq4,8801
195
197
  claude_mpm/hooks/claude_hooks/response_tracking.py,sha256=Cm5uyWgMLC5HZF0FA0xhP7bhQ1vC1H3Cak8wfzzW5MU,13887
196
198
  claude_mpm/hooks/claude_hooks/tool_analysis.py,sha256=z75UOImtbECItB0pleRUSeNXqjh0jk3dMWq6eekPQw8,7981
@@ -219,7 +221,7 @@ claude_mpm/services/runner_configuration_service.py,sha256=QYsl1srbYxJR7h3-u_TzY
219
221
  claude_mpm/services/session_management_service.py,sha256=w82Q9BXFbcYZTHc3rqh0Qw4yLqyj-GaR1RJfH-f-EPg,10089
220
222
  claude_mpm/services/socketio_client_manager.py,sha256=LV0wO7oZx3rgnoGeVww6e441gOSvB3qOZm9lO7xFS_8,18157
221
223
  claude_mpm/services/socketio_server.py,sha256=yE14_4pHERXBC5L1WQCpIBHuy0tpklsUY_icyl-nLkg,3033
222
- claude_mpm/services/subprocess_launcher_service.py,sha256=ZfMPJ2TvHP3SIho5wtCiBCVM8agtgYnr4WRWpxufRek,10840
224
+ claude_mpm/services/subprocess_launcher_service.py,sha256=wOKNbqbse8NY6Gequ0i9OY5XaM_g2_mLyOwwhKOnDHI,11032
223
225
  claude_mpm/services/system_instructions_service.py,sha256=OVrTABcN99Hb7hcr95UEObUyLj45CVj_-aTvDsfioLY,10058
224
226
  claude_mpm/services/ticket_manager.py,sha256=SJCaVqDnsv-ZyjBZ38zwR-GhoCMTXhr0HF7fJjP7dYo,606
225
227
  claude_mpm/services/utility_service.py,sha256=zAt1EaTXfsyXymRD6UTuFFAM6kZORkdGaKFV0jhBGlI,8465
@@ -229,7 +231,7 @@ claude_mpm/services/agents/deployment/__init__.py,sha256=d9l1uaf-G7v_mCxcz8OUQMF
229
231
  claude_mpm/services/agents/deployment/agent_config_provider.py,sha256=iH_N4Qi7gq_Pc4OYqsnaaX5KPVMlJ2dYkQS_PEVmLtY,13312
230
232
  claude_mpm/services/agents/deployment/agent_configuration_manager.py,sha256=VhwSYX1wYYnSQqfqmCpy9goPJ9f2eEA2_DFrdwtO7j4,12180
231
233
  claude_mpm/services/agents/deployment/agent_definition_factory.py,sha256=izcjZGLznts8khXD8wLViUbk_kPhnrqucLHFdfap_8c,2754
232
- claude_mpm/services/agents/deployment/agent_deployment.py,sha256=WLnveiY8s3z7ttVri981OakY7p7VukKlWF0axW1Fh2s,38399
234
+ claude_mpm/services/agents/deployment/agent_deployment.py,sha256=imA_m0LuqM5SzF9FLGgDO3is2hRBTPMv5M3DS7afFf8,44867
233
235
  claude_mpm/services/agents/deployment/agent_discovery_service.py,sha256=0z1y1OXZUt2vJEmY0RCD0KSvSiG7KkpqT68wVVfNEDY,13438
234
236
  claude_mpm/services/agents/deployment/agent_environment_manager.py,sha256=Tx-fqnRmd-XV8goqUv3M6dtfthc98hrh7-Xcvs3QKYU,9936
235
237
  claude_mpm/services/agents/deployment/agent_filesystem_manager.py,sha256=dKDsweubspi-x0X97ah_Ffw1LRPWttD2JKtryrwhjhw,13004
@@ -238,7 +240,7 @@ claude_mpm/services/agents/deployment/agent_frontmatter_validator.py,sha256=gro-
238
240
  claude_mpm/services/agents/deployment/agent_lifecycle_manager.py,sha256=y0p7KMEvIL291Vv1j8xjikQZcJyw1IhpInJEervA9XY,40214
239
241
  claude_mpm/services/agents/deployment/agent_metrics_collector.py,sha256=avJ8LJesSDaQrgKJzCyRDMMZl5AgHWHgk4a1gpIMWbY,10186
240
242
  claude_mpm/services/agents/deployment/agent_restore_handler.py,sha256=IR3g6-kVB75Ew47E7Wg6UA6-juq6caSXEnmrpkOlfVU,3129
241
- claude_mpm/services/agents/deployment/agent_template_builder.py,sha256=dcA19zfGraQeGY_w3eULo0-972BlOGr6Jat_UzyYBr8,13833
243
+ claude_mpm/services/agents/deployment/agent_template_builder.py,sha256=FHAOeTfwrmCqe8TONUrBYTIrPbrBoI5uVt-yduGty0Y,15024
242
244
  claude_mpm/services/agents/deployment/agent_validator.py,sha256=SOjLoAQoUroa6Stu8CgU6Q40tqfMT90KWS7Fh6qqgOY,12540
243
245
  claude_mpm/services/agents/deployment/agent_version_manager.py,sha256=QH6LWmgBfT0EIgvV1W6ihCl18833Hg3I24MEVfuTYnI,10839
244
246
  claude_mpm/services/agents/deployment/agent_versioning.py,sha256=HVejWr4AAQq8wEP4wxAiCntG_PielWQPnVICmEfNQNs,1002
@@ -249,6 +251,7 @@ claude_mpm/services/agents/deployment/deployment_type_detector.py,sha256=Zq4BzJM
249
251
  claude_mpm/services/agents/deployment/interface_adapter.py,sha256=bZmO4vF8Dnt0Ea8SgpIMHXPs6kMubSBDA-rN6ZH8hGQ,8143
250
252
  claude_mpm/services/agents/deployment/lifecycle_health_checker.py,sha256=2dphAvYRABNlsvi3XfVwS8kvv-YURNEwPBVtCc1g3Zc,3164
251
253
  claude_mpm/services/agents/deployment/lifecycle_performance_tracker.py,sha256=lK_yg0uRL55opUoecOJBL83Tjj6Pu_z4-4EYWPeN6tM,4336
254
+ claude_mpm/services/agents/deployment/multi_source_deployment_service.py,sha256=8pCUbpBcXB0KUBVDKF971Ec4JmOVgguR3vb05Anpn9Q,19250
252
255
  claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py,sha256=3EUb6rDe7FooDLM8TxMgefM0UE90MGhy0PmhKQXvTSA,11892
253
256
  claude_mpm/services/agents/deployment/system_instructions_deployer.py,sha256=VTtpO880wU5Bo2kIOLdugScBRi5SjhAsd1tdJfOXSU8,4227
254
257
  claude_mpm/services/agents/deployment/config/__init__.py,sha256=dpyC_WlQWlaOne9VVF0KXzoEO0Davt02bjfk1AJv2jk,397
@@ -294,12 +297,11 @@ claude_mpm/services/agents/loading/framework_agent_loader.py,sha256=kKKQG1K9OGNs
294
297
  claude_mpm/services/agents/management/__init__.py,sha256=dZcFI9EBajH2KbCoNQWAFQ0zRlm-kJkqmKbBimt9xu0,234
295
298
  claude_mpm/services/agents/management/agent_capabilities_generator.py,sha256=2j5yoyCXhsK41Bpr8gDAS6jXKhTI_lyYPkTa2djPls4,7002
296
299
  claude_mpm/services/agents/management/agent_management_service.py,sha256=ek8qGMHqyAb2kks4GG0GpS123dl-zyhRas9pnn6fUy8,23027
297
- claude_mpm/services/agents/memory/__init__.py,sha256=AcO-bZajiUBjnp1UNNMJyKFR3F2CDTgn5b0NEjN9Oiw,667
298
- claude_mpm/services/agents/memory/agent_memory_manager.py,sha256=ITLrLTTvJcw5XOrHQOYhNgQsuqax6XsiTeSEv3zBi6M,23914
300
+ claude_mpm/services/agents/memory/__init__.py,sha256=V7Sgx3ISF--XN2pJzk_XduOHxWNxZ0I2H9xOTsV46K8,608
301
+ claude_mpm/services/agents/memory/agent_memory_manager.py,sha256=gQSUGd5LWRmqWYF5FksDbR0ho7IAwZBJCwVAx1jzTGA,54788
299
302
  claude_mpm/services/agents/memory/agent_persistence_service.py,sha256=mx67hEZtpMG-fom_qUvOL0U8HSWam1F55LJj4g4k3nw,2783
300
- claude_mpm/services/agents/memory/analyzer.py,sha256=dDpOquis1OjaHKr5IlHS125BpCFjxh8hng6kN-6eHFw,16973
301
- claude_mpm/services/agents/memory/content_manager.py,sha256=LifCY4VLFtWxwOPd8pKXWCTo2_p6xlGbHocSS9s6THo,13103
302
- claude_mpm/services/agents/memory/template_generator.py,sha256=7Lou4YLwwM-ZKHPs4PbRww5MOidJVdhoqffCfZrWkNk,17804
303
+ claude_mpm/services/agents/memory/content_manager.py,sha256=do1FvWS4ER_-XVRmu7OJ70SLeDsfPJOv8aZ0otMazAg,18728
304
+ claude_mpm/services/agents/memory/template_generator.py,sha256=hGYp6l8Wc7qjTgDNDUCwbsRWmSJXjfXWsfch26nVKiA,3845
303
305
  claude_mpm/services/agents/registry/__init__.py,sha256=88IdNug1aq52Vc-Uc2zQsbuOOvPawN-zFzQqoPmEVVQ,710
304
306
  claude_mpm/services/agents/registry/deployed_agent_discovery.py,sha256=76IFU9E27FAJqi71GODJscJlNz9qlJLv679r68ex-yQ,9869
305
307
  claude_mpm/services/agents/registry/modification_tracker.py,sha256=iSzt92HpXkkwigrM6yuq7J1wer43fhfWsnabFGB10e4,34053
@@ -354,7 +356,7 @@ claude_mpm/services/mcp_gateway/registry/tool_registry.py,sha256=rWlkYToIe_d4STr
354
356
  claude_mpm/services/mcp_gateway/server/__init__.py,sha256=w1gDtjRPsuDP6zT84ZnbxI20m6oq_SJlndLv3T5sRL4,294
355
357
  claude_mpm/services/mcp_gateway/server/mcp_gateway.py,sha256=cv9gx2gxdR3QI2J1N7F7PAbBbmZPP_l8NQBes509zdg,13757
356
358
  claude_mpm/services/mcp_gateway/server/stdio_handler.py,sha256=qO9V5W9Dhyi7SqnhXmjD4kcUuy46JF2gFM_huNH7SPw,11419
357
- claude_mpm/services/mcp_gateway/server/stdio_server.py,sha256=6z7ZrxEZMb9bmLVqpAlPmdSSQ6_eHt3-3Z8qqeoPrUc,30699
359
+ claude_mpm/services/mcp_gateway/server/stdio_server.py,sha256=y-bFn0Vtyx3_0SeIm9mG21Nq7yqvC2DMc_y-72e8_xc,26042
358
360
  claude_mpm/services/mcp_gateway/tools/__init__.py,sha256=YyWtIgU5m8Y-6JNQwd7HZBkzzBjxdLbJkU9jcp9mCv8,530
359
361
  claude_mpm/services/mcp_gateway/tools/base_adapter.py,sha256=0HMEx1ZlEWuyEHiQ-iDYKXgcnAi4jfQ19MitlNEpfqM,15890
360
362
  claude_mpm/services/mcp_gateway/tools/document_summarizer.py,sha256=PZCREg5Kdvj1b5RHF7KfsEW-eo49NHcKS4uLeSg9WvU,28324
@@ -416,9 +418,9 @@ claude_mpm/utils/subprocess_utils.py,sha256=e74VlIPozCljZss_0SwLO3J1ZuIKRT9FrrFi
416
418
  claude_mpm/validation/__init__.py,sha256=YZhwE3mhit-lslvRLuwfX82xJ_k4haZeKmh4IWaVwtk,156
417
419
  claude_mpm/validation/agent_validator.py,sha256=szbK9d29v_T6xE_KvW845WLKXbS_yYpXQscrSrSeldI,20937
418
420
  claude_mpm/validation/frontmatter_validator.py,sha256=Q_aTyjigfKZQG7eSwLtwMfd0h_eyS9FQAm59ZFf5VYA,7036
419
- claude_mpm-4.0.19.dist-info/licenses/LICENSE,sha256=lpaivOlPuBZW1ds05uQLJJswy8Rp_HMNieJEbFlqvLk,1072
420
- claude_mpm-4.0.19.dist-info/METADATA,sha256=GQYzhZo3VMzA-OnUVZ2mWuQEECfF0ierB2Yebyc5KIg,11883
421
- claude_mpm-4.0.19.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
422
- claude_mpm-4.0.19.dist-info/entry_points.txt,sha256=FDPZgz8JOvD-6iuXY2l9Zbo9zYVRuE4uz4Qr0vLeGOk,471
423
- claude_mpm-4.0.19.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
424
- claude_mpm-4.0.19.dist-info/RECORD,,
421
+ claude_mpm-4.0.20.dist-info/licenses/LICENSE,sha256=lpaivOlPuBZW1ds05uQLJJswy8Rp_HMNieJEbFlqvLk,1072
422
+ claude_mpm-4.0.20.dist-info/METADATA,sha256=yAryBq9lAiVzg-V8RYwICULf2jMQWzpryTxXSljsDPQ,11883
423
+ claude_mpm-4.0.20.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
424
+ claude_mpm-4.0.20.dist-info/entry_points.txt,sha256=FDPZgz8JOvD-6iuXY2l9Zbo9zYVRuE4uz4Qr0vLeGOk,471
425
+ claude_mpm-4.0.20.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
426
+ claude_mpm-4.0.20.dist-info/RECORD,,