claude-mpm 4.7.1__py3-none-any.whl → 4.7.3__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
- 4.7.1
1
+ 4.7.3
@@ -29,65 +29,117 @@ grep -r "describe\|it\(" --include="*.js" tests/
29
29
  3. Finally comprehensive test suite
30
30
  4. Stop on critical failures
31
31
 
32
- ## Test Process Management
32
+ ## ⚠️ CRITICAL: JavaScript Test Process Management
33
33
 
34
- When running tests in JavaScript/TypeScript projects:
34
+ **WARNING: Vitest and Jest watch modes cause persistent processes and memory leaks in agent operations.**
35
35
 
36
- ### 1. Always Use Non-Interactive Mode
36
+ ### Primary Directive: AVOID VITEST/JEST WATCH MODE AT ALL COSTS
37
37
 
38
- **CRITICAL**: Never use watch mode during agent operations as it causes memory leaks.
38
+ **Before running ANY JavaScript/TypeScript test:**
39
39
 
40
+ 1. **ALWAYS inspect package.json test configuration FIRST**
41
+ 2. **NEVER run tests without explicit CI flags or run commands**
42
+ 3. **MANDATORY process verification after EVERY test run**
43
+
44
+ ### Safe Test Execution Protocol
45
+
46
+ #### Step 1: Pre-Flight Check (MANDATORY)
40
47
  ```bash
41
- # CORRECT - CI-safe test execution
42
- CI=true npm test
43
- npx vitest run --reporter=verbose
44
- npx jest --ci --no-watch
45
-
46
- # WRONG - Causes memory leaks
47
- npm test # May trigger watch mode
48
- npm test -- --watch # Never terminates
49
- vitest # Default may be watch mode
48
+ # ALWAYS check package.json test script configuration FIRST
49
+ cat package.json | grep -A 3 '"test"'
50
+
51
+ # Look for dangerous configurations:
52
+ # ❌ "test": "vitest" # DANGER: Watch mode by default
53
+ # "test": "jest" # DANGER: May trigger watch
54
+ # ✅ "test": "vitest run" # SAFE: Explicit run mode
55
+ # ✅ "test": "jest --ci" # SAFE: CI mode
50
56
  ```
51
57
 
52
- ### 2. Verify Process Cleanup
53
-
54
- After running tests, always verify no orphaned processes remain:
58
+ #### Step 2: Safe Test Execution (USE THESE COMMANDS ONLY)
59
+ ```bash
60
+ # PRIMARY RECOMMENDED COMMANDS (use these by default):
61
+ CI=true npm test # Forces CI mode, prevents watch
62
+ npx vitest run --reporter=verbose # Explicit run mode with output
63
+ npx jest --ci --no-watch # Explicit CI mode, no watch
64
+
65
+ # NEVER USE THESE COMMANDS:
66
+ npm test # ❌ May trigger watch mode
67
+ vitest # ❌ Defaults to watch mode
68
+ npm test -- --watch # ❌ Explicitly starts watch mode
69
+ jest # ❌ May trigger watch mode
70
+ ```
55
71
 
72
+ #### Step 3: Post-Execution Verification (MANDATORY)
56
73
  ```bash
57
- # Check for hanging test processes
74
+ # ALWAYS verify process cleanup after tests
58
75
  ps aux | grep -E "(vitest|jest|node.*test)" | grep -v grep
59
76
 
60
- # Kill orphaned processes if found
61
- pkill -f "vitest" || pkill -f "jest"
77
+ # If ANY processes found, kill them immediately:
78
+ pkill -f "vitest" || true
79
+ pkill -f "jest" || true
80
+
81
+ # Verify cleanup succeeded:
82
+ ps aux | grep -E "(vitest|jest|node.*test)" | grep -v grep
83
+ # Should return NOTHING
62
84
  ```
63
85
 
64
- ### 3. Package.json Best Practices
86
+ ### Why This Matters
87
+
88
+ **Vitest/Jest watch mode creates persistent processes that:**
89
+ - Consume memory indefinitely (memory leak)
90
+ - Prevent agent completion (hanging processes)
91
+ - Cause resource exhaustion in multi-test scenarios
92
+ - Require manual intervention to terminate
93
+ - Make automated testing workflows impossible
94
+
95
+ ### Alternative Testing Strategies
96
+
97
+ **When testing is needed, prefer these approaches (in order):**
98
+
99
+ 1. **Static Analysis First**: Use grep/glob to discover test patterns
100
+ 2. **Selective Testing**: Run specific test files, not entire suites
101
+ 3. **API Testing**: Test backend endpoints directly with curl/fetch
102
+ 4. **Manual Review**: Review test code without executing
103
+ 5. **If Tests Must Run**: Use CI=true prefix and mandatory verification
104
+
105
+ ### Package.json Configuration Recommendations
106
+
107
+ **ALWAYS verify test scripts are agent-safe:**
108
+ ```json
109
+ {
110
+ "scripts": {
111
+ "test": "vitest run", // ✅ SAFE: Explicit run mode
112
+ "test:ci": "CI=true vitest run", // ✅ SAFE: CI mode
113
+ "test:watch": "vitest", // ✅ OK: Separate watch command
114
+ "test": "vitest" // ❌ DANGEROUS: Watch by default
115
+ }
116
+ }
117
+ ```
65
118
 
66
- Before running any test command:
67
- - **Always check package.json** test script configuration
68
- - Verify if test script uses watch mode by default
69
- - Use explicit `--run` or `--ci` flags when uncertain
119
+ ### Emergency Process Cleanup
70
120
 
121
+ **If you suspect orphaned processes:**
71
122
  ```bash
72
- # Check test configuration first
73
- cat package.json | grep -A 2 '"test"'
123
+ # List all node/test processes
124
+ ps aux | grep -E "(node|vitest|jest)" | grep -v grep
74
125
 
75
- # If watch mode detected, override with:
76
- CI=true npm test
77
- # OR use run flag explicitly:
78
- npx vitest run
126
+ # Nuclear option - kill all node processes (USE WITH CAUTION)
127
+ pkill -9 node
128
+
129
+ # Verify cleanup
130
+ ps aux | grep -E "(vitest|jest|node.*test)" | grep -v grep
79
131
  ```
80
132
 
81
- ### 4. Common Pitfalls to Avoid
133
+ ### Testing Workflow Checklist
82
134
 
83
- - Running `npm test` when package.json has watch mode as default
84
- - Not waiting for test completion before continuing
85
- - Not checking for orphaned test processes
86
- - Assuming test commands are CI-safe without verification
87
- - Always check package.json configuration first
88
- - Use CI=true or explicit --run/--ci flags
89
- - Verify process termination after tests
90
- - Monitor for hanging processes between test runs
135
+ - [ ] Inspected package.json test configuration
136
+ - [ ] Identified watch mode risks
137
+ - [ ] Used CI=true or explicit --run flags
138
+ - [ ] Test command completed (not hanging)
139
+ - [ ] Verified no orphaned processes remain
140
+ - [ ] Cleaned up any detected processes
141
+ - [ ] Documented test results
142
+ - [ ] Ready to proceed to next task
91
143
 
92
144
  ### Error Reporting
93
145
  - Group similar failures together
@@ -504,7 +504,7 @@ class FrameworkLoader:
504
504
  metadata["instructions_length"] = len(instructions)
505
505
 
506
506
  if loop.is_running():
507
- _task = asyncio.create_task( # noqa: RUF006
507
+ _task = asyncio.create_task(
508
508
  log_manager.log_prompt("system_prompt", instructions, metadata)
509
509
  ) # Fire-and-forget logging
510
510
  else:
@@ -285,7 +285,7 @@ class EventHandlers:
285
285
  # Log the agent prompt asynchronously
286
286
  try:
287
287
  loop = asyncio.get_running_loop()
288
- _task = asyncio.create_task( # noqa: RUF006
288
+ _task = asyncio.create_task(
289
289
  log_manager.log_prompt(
290
290
  f"agent_{agent_type}", prompt_content, metadata
291
291
  )
@@ -224,7 +224,7 @@ class MCPServiceRegistry(ManagerBase):
224
224
  try:
225
225
  import asyncio
226
226
 
227
- _task = asyncio.create_task(instance.stop()) # noqa: RUF006
227
+ _task = asyncio.create_task(instance.stop())
228
228
  # Fire-and-forget shutdown during unregister
229
229
  except Exception as e:
230
230
  self.logger.warning(
@@ -336,7 +336,7 @@ class MCPServiceRegistry(ManagerBase):
336
336
  try:
337
337
  import asyncio
338
338
 
339
- _task = asyncio.create_task(instance.stop()) # noqa: RUF006
339
+ _task = asyncio.create_task(instance.stop())
340
340
  # Fire-and-forget shutdown during clear
341
341
  except Exception as e:
342
342
  self.logger.warning(f"Error stopping service: {e}")
@@ -216,7 +216,7 @@ class ToolRegistry(BaseMCPService, IMCPToolRegistry):
216
216
 
217
217
  # Shutdown adapter (outside lock to avoid deadlock)
218
218
  try:
219
- _task = asyncio.create_task(adapter.shutdown()) # noqa: RUF006
219
+ _task = asyncio.create_task(adapter.shutdown())
220
220
  # Fire-and-forget shutdown during tool unregister
221
221
  except Exception as e:
222
222
  self.log_warning(f"Error shutting down tool adapter {tool_name}: {e}")
@@ -194,7 +194,7 @@ class SharedPromptCache(BaseService):
194
194
  with cls._lock:
195
195
  if cls._instance is not None:
196
196
  if cls._instance.running:
197
- _task = asyncio.create_task(cls._instance.stop()) # noqa: RUF006
197
+ _task = asyncio.create_task(cls._instance.stop())
198
198
  # Fire-and-forget cleanup task during test reset
199
199
  cls._instance = None
200
200
 
@@ -237,7 +237,7 @@ class HookHandler:
237
237
  )
238
238
 
239
239
  # Remove from active sessions after a delay (5 minutes)
240
- _task = asyncio.create_task( # noqa: RUF006
240
+ _task = asyncio.create_task(
241
241
  self._cleanup_session(session_id, delay=300)
242
242
  ) # Fire-and-forget cleanup task
243
243
 
@@ -99,7 +99,11 @@ class ConfigServiceBase(LoggerMixin, ABC):
99
99
  raise ValueError(f"Required configuration value missing: {full_key}")
100
100
 
101
101
  # Type validation
102
- if config_type is not None and value is not None and not isinstance(value, config_type):
102
+ if (
103
+ config_type is not None
104
+ and value is not None
105
+ and not isinstance(value, config_type)
106
+ ):
103
107
  try:
104
108
  # Try to convert
105
109
  if config_type == bool and isinstance(value, str):
@@ -109,9 +113,9 @@ class ConfigServiceBase(LoggerMixin, ABC):
109
113
  else:
110
114
  value = config_type(value)
111
115
  except (ValueError, TypeError) as e:
112
- raise ValueError(
113
- f"Invalid type for {full_key}: expected {config_type.__name__}, got {type(value).__name__}"
114
- ) from e
116
+ raise ValueError(
117
+ f"Invalid type for {full_key}: expected {config_type.__name__}, got {type(value).__name__}"
118
+ ) from e
115
119
 
116
120
  # Cache the processed value
117
121
  self._config_cache[full_key] = value
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-mpm
3
- Version: 4.7.1
3
+ Version: 4.7.3
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=GzVqLslg-bPT8hfb5Xck_QMoC9BeGrhLOMrNrrOkVjg,6
2
+ claude_mpm/VERSION,sha256=i5wzhntPMY1zms8T1VLFSSgDlf3W5lzl65wykXeMg1Q,6
3
3
  claude_mpm/__init__.py,sha256=UCw6j9e_tZQ3kJtTqmdfNv7MHyw9nD1jkj80WurwM2g,2064
4
4
  claude_mpm/__main__.py,sha256=Ro5UBWBoQaSAIoSqWAr7zkbLyvi4sSy28WShqAhKJG0,723
5
5
  claude_mpm/constants.py,sha256=cChN3myrAcF3jC-6DvHnBFTEnwlDk-TAsIXPvUZr_yw,5953
@@ -11,7 +11,7 @@ claude_mpm/agents/BASE_ENGINEER.md,sha256=V637uK7cZazlc3aagAhY4G0WCuGtruLKbhuAbK
11
11
  claude_mpm/agents/BASE_OPS.md,sha256=azAjZTrj77IZIBgZxX2hcjPOQMznV0v6B4ZWNUhAT9g,7636
12
12
  claude_mpm/agents/BASE_PM.md,sha256=0n8b45wdRMb9ODLd8tiUu7fBP-UR33Bj0LS-AzHLXNE,3960
13
13
  claude_mpm/agents/BASE_PROMPT_ENGINEER.md,sha256=DHw7KXA6Nw7RfTyQiY06B_hH6ng2meimhgUKpQp08MM,21736
14
- claude_mpm/agents/BASE_QA.md,sha256=GU-aChWprKxBh1Kv6BR9lvFLFwz38DkQfIIQXi5zUL4,3230
14
+ claude_mpm/agents/BASE_QA.md,sha256=YtaYJSjWDfmFS3B6PtNvog4L54_w5K1rvpV0yqLhP20,5347
15
15
  claude_mpm/agents/BASE_RESEARCH.md,sha256=2DZhDd5XxWWtsyNTBIwvtNWBu1JpFy5R5SAZDHh0otU,1690
16
16
  claude_mpm/agents/INSTRUCTIONS_OLD_DEPRECATED.md,sha256=zQZhrhVq9NLCtSjVX-aC0xcgueemSuPhKyv0SjEOyIQ,25852
17
17
  claude_mpm/agents/MEMORY.md,sha256=KbRwY_RYdOvTvFC2DD-ATfwjHkQWJ5PIjlGws_7RmjI,3307
@@ -163,7 +163,7 @@ claude_mpm/core/error_handler.py,sha256=fqTstzmWaidfiVm-IvPGBRCjDwqBbQgjofyP31Ek
163
163
  claude_mpm/core/exceptions.py,sha256=vrEJGpgThvqRRD6qsNkmaQcYAoUMQSNuHUOnNFJcEGg,19628
164
164
  claude_mpm/core/factories.py,sha256=vtlwkbpxeWzqgPRGO1ehnMOzddLCHWTeiKa8halV_dU,7271
165
165
  claude_mpm/core/file_utils.py,sha256=ycbmSl4JflNGG3qcEnCLDeRYV1nceHn2SJVfGO8x1Qg,19937
166
- claude_mpm/core/framework_loader.py,sha256=p6Ic6O9O-UZMBK58f5nW_b5vCHSuDmCsK5IccP9dy5o,20899
166
+ claude_mpm/core/framework_loader.py,sha256=uOI5rulOfJDz-gy1egJUwxO6z2LaxhGfJcjMQk1TanU,20883
167
167
  claude_mpm/core/hook_manager.py,sha256=Cq3vwYW7-ffKw_HSFqtv1RJTxs8YUpD_qeTiWvua3lk,11152
168
168
  claude_mpm/core/hook_performance_config.py,sha256=e7a7oFctkRhA3aPXMO5Wavr-E6ku7ikLxMzPU7P1-yg,5779
169
169
  claude_mpm/core/injectable_service.py,sha256=9N4mHt6a_PwoP0pQo-QhVTnXLJlgDCCOg358d0jPEs4,7384
@@ -377,7 +377,7 @@ claude_mpm/hooks/tool_call_interceptor.py,sha256=tYUBJHjbtaI5-HSWcz0aeUW0CaiQPyp
377
377
  claude_mpm/hooks/validation_hooks.py,sha256=i5uOaXifItwJfIdjjLCxAwrkKdkmo2Qa4qMc5-dwsKw,6465
378
378
  claude_mpm/hooks/claude_hooks/__init__.py,sha256=b4mud_g3S-3itHY_Dzpbb_SmdMEcJwtUU8fTcqpLqqs,130
379
379
  claude_mpm/hooks/claude_hooks/connection_pool.py,sha256=vpi-XbVf61GWhh85tHBzubbOgbJly_I-5-QmsleND2M,8658
380
- claude_mpm/hooks/claude_hooks/event_handlers.py,sha256=_8O5A5BB515IKqkbm87X_yBDlqKP5CEYH5MsqvNUWTs,30553
380
+ claude_mpm/hooks/claude_hooks/event_handlers.py,sha256=4-w7TMmMH0Fjs9ZaOhHC9IPjAVVWA397ukOnd280x08,30537
381
381
  claude_mpm/hooks/claude_hooks/hook_handler.py,sha256=XYLsrKJTGNBq_uV46-zxVM044Xcp_I2qy14HQvPgcJ0,20257
382
382
  claude_mpm/hooks/claude_hooks/hook_handler_eventbus.py,sha256=BsqXATHOXFGiLPtFMZUWA2Y8oj3JQWdK5O326YfDEqA,14880
383
383
  claude_mpm/hooks/claude_hooks/hook_handler_original.py,sha256=g9M6VOMZASPkQtdbt9ic7FCD7aVlf7LyCSonkBTIFBY,43138
@@ -633,8 +633,8 @@ claude_mpm/services/mcp_gateway/core/process_pool.py,sha256=RCBX6qdJEOtYKBH__cWa
633
633
  claude_mpm/services/mcp_gateway/core/singleton_manager.py,sha256=777BFoq0oi6FdniWJZwstH-gkzP4AQPj-UQD_MzMcy4,9422
634
634
  claude_mpm/services/mcp_gateway/core/startup_verification.py,sha256=YpgsikMwTfK_yCQ4bXLIhtEqypdZJLorkgREo4gwIDY,10872
635
635
  claude_mpm/services/mcp_gateway/registry/__init__.py,sha256=6qjyfcCgW7sd_S82gY7G4DPZp3nL7tMHzyaxiz3G2Zc,195
636
- claude_mpm/services/mcp_gateway/registry/service_registry.py,sha256=i950H8swZCU2buz3HR_dr4ZahJc9njeXc95WJa8iQik,13857
637
- claude_mpm/services/mcp_gateway/registry/tool_registry.py,sha256=uZLP78mXwqUyOqlp2ybj4sY8GxbsCQ2S7ea6xdEOaWc,16117
636
+ claude_mpm/services/mcp_gateway/registry/service_registry.py,sha256=JdJaEkm-IRAEoflwx8Ymt9lAMkLprPg0p-jHEYDjT8s,13825
637
+ claude_mpm/services/mcp_gateway/registry/tool_registry.py,sha256=_WDb-uu0_6HX9bSkwOnJJHF6mJ8k2UQq6Fc4q6UWOT4,16101
638
638
  claude_mpm/services/mcp_gateway/server/__init__.py,sha256=4OsKf4Eit4O8geWs-UNjVYqQ6GRwEh6frWnFXpK1ooI,294
639
639
  claude_mpm/services/mcp_gateway/server/mcp_gateway.py,sha256=fIwGCTRwzQh5YRoBptBFL-em2ZcgXiCuhrbFUWLsOdQ,13573
640
640
  claude_mpm/services/mcp_gateway/server/stdio_handler.py,sha256=KXbLTt5SkMTvt8ckEKb_wjQb6WW-hoY_3rbwWNPNbRo,11427
@@ -655,7 +655,7 @@ claude_mpm/services/memory/indexed_memory.py,sha256=I_8syn60APW2sY3CgYxLps0yjdjf
655
655
  claude_mpm/services/memory/optimizer.py,sha256=19zNaQG5UsQ6BLW9zo_44mIyXf1M7a_HdE9PdG_duyQ,22967
656
656
  claude_mpm/services/memory/router.py,sha256=c92j-7SXF254gvW-DvQ8OzvWKLdhklDndikNdjxBYMQ,31060
657
657
  claude_mpm/services/memory/cache/__init__.py,sha256=6M6-P8ParyxX8vOgp_IxHgLMvacrQHPnXeZIvwJKtw8,351
658
- claude_mpm/services/memory/cache/shared_prompt_cache.py,sha256=Mp3W7JrAqVrQLtGB-3Weq8aEnht0ymBCgwS53yhpgrY,28797
658
+ claude_mpm/services/memory/cache/shared_prompt_cache.py,sha256=sFw-50bNS8_d5mNYQyemuDa9zf3DNlqdpMPscW33MxE,28781
659
659
  claude_mpm/services/memory/cache/simple_cache.py,sha256=rePUw7poI2CM6l9ZuVgBqtsIkQpa_s0ugjXR3Kbgujg,10249
660
660
  claude_mpm/services/monitor/__init__.py,sha256=X7gxSLUm9Fg_zEsX6LtCHP2ipF0qj6Emkun20h2So7g,745
661
661
  claude_mpm/services/monitor/daemon.py,sha256=nfOYeAxQHtxlRYx8bv6S9g1P0ofUsfK8RnxJQ5i96FY,25934
@@ -666,7 +666,7 @@ claude_mpm/services/monitor/handlers/__init__.py,sha256=jgPIf4IJVERm_tAeD9834tfx
666
666
  claude_mpm/services/monitor/handlers/code_analysis.py,sha256=3na63aagO8DN3Z2e9c_VpStkd3-NTpA4c58b9G_Bv-Y,11404
667
667
  claude_mpm/services/monitor/handlers/dashboard.py,sha256=uGBhb-6RG6u4WLipUXgdx7RCW-vb_qek5dIfHIwAC7o,9805
668
668
  claude_mpm/services/monitor/handlers/file.py,sha256=BBeSy3BfUMFj5tTjXnhHT2TQYHmgiyQYSYR0XOcZnDg,9760
669
- claude_mpm/services/monitor/handlers/hooks.py,sha256=GJoSZsWEFLbHTmD5_c70EvYLp0weDk97aJT9DhdM1kY,17575
669
+ claude_mpm/services/monitor/handlers/hooks.py,sha256=L4UTvUFLCw-FWE6TXW9BcuxCyiWdzl2f60OJbc5uLnc,17559
670
670
  claude_mpm/services/monitor/management/__init__.py,sha256=mxaEFRgvvgV85gUpXu_DsnHtywihdP14EisvISAVZuQ,525
671
671
  claude_mpm/services/monitor/management/health.py,sha256=Wm92Cli_4cWD6B89KX_CdpAvvevuEaGB8Ah59ILhFww,3772
672
672
  claude_mpm/services/monitor/management/lifecycle.py,sha256=ZkRRPvP2XvKvIySRG5A8eNByTdrbQyao2eULX3bUYjo,27344
@@ -685,7 +685,7 @@ claude_mpm/services/project/project_organizer.py,sha256=9uAHI5MISum7YKNibRwH2jxb
685
685
  claude_mpm/services/project/registry.py,sha256=izNHLAhWcxJKWK1hQ557eOrvBlxxVuqJcxZOQ1wvYe8,24342
686
686
  claude_mpm/services/shared/__init__.py,sha256=9sL2GHHGg8-lboHTZ8mzIfhcCWiFCQyWbpC27jkBRI0,597
687
687
  claude_mpm/services/shared/async_service_base.py,sha256=46Z-ATX5N0FhugNsF6byJ42frs4Rw5ZWfhw3Paf2788,7010
688
- claude_mpm/services/shared/config_service_base.py,sha256=ClTiA5-yfdJEcD7OTn1BcaqsQX1g3dFZTkmwyv3sBns,10088
688
+ claude_mpm/services/shared/config_service_base.py,sha256=YJewpCTXV6VkJsRiDkxL3MWa-8Lj04AQREBqnFk_Ws8,10124
689
689
  claude_mpm/services/shared/lifecycle_service_base.py,sha256=WiAUJ5_k-2dYkDRMbJl7qymhtj-KfSt8Ev6jD_pxrbc,10124
690
690
  claude_mpm/services/shared/manager_base.py,sha256=kmjhpVqgfYC1N4YQnPAilCfdrSpAh9Qz7wcQ602L4x4,9296
691
691
  claude_mpm/services/shared/service_factory.py,sha256=9yvnD62urrNQCGmtk_3OcR5tVUCnoS6wHkaI5PK34mg,9891
@@ -783,9 +783,9 @@ claude_mpm/utils/subprocess_utils.py,sha256=D0izRT8anjiUb_JG72zlJR_JAw1cDkb7kalN
783
783
  claude_mpm/validation/__init__.py,sha256=YZhwE3mhit-lslvRLuwfX82xJ_k4haZeKmh4IWaVwtk,156
784
784
  claude_mpm/validation/agent_validator.py,sha256=GprtAvu80VyMXcKGsK_VhYiXWA6BjKHv7O6HKx0AB9w,20917
785
785
  claude_mpm/validation/frontmatter_validator.py,sha256=YpJlYNNYcV8u6hIOi3_jaRsDnzhbcQpjCBE6eyBKaFY,7076
786
- claude_mpm-4.7.1.dist-info/licenses/LICENSE,sha256=lpaivOlPuBZW1ds05uQLJJswy8Rp_HMNieJEbFlqvLk,1072
787
- claude_mpm-4.7.1.dist-info/METADATA,sha256=YZOZcCX8xTIoepQc9hsc6yEKgYNcO_KN7LdDCpoP7fM,17517
788
- claude_mpm-4.7.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
789
- claude_mpm-4.7.1.dist-info/entry_points.txt,sha256=Vlw3GNi-OtTpKSrez04iNrPmxNxYDpIWxmJCxiZ5Tx8,526
790
- claude_mpm-4.7.1.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
791
- claude_mpm-4.7.1.dist-info/RECORD,,
786
+ claude_mpm-4.7.3.dist-info/licenses/LICENSE,sha256=lpaivOlPuBZW1ds05uQLJJswy8Rp_HMNieJEbFlqvLk,1072
787
+ claude_mpm-4.7.3.dist-info/METADATA,sha256=iAW3vLlCDS6H2eagLtPZ-JAsidq9Sv-BCd-3Ls3x8GU,17517
788
+ claude_mpm-4.7.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
789
+ claude_mpm-4.7.3.dist-info/entry_points.txt,sha256=Vlw3GNi-OtTpKSrez04iNrPmxNxYDpIWxmJCxiZ5Tx8,526
790
+ claude_mpm-4.7.3.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
791
+ claude_mpm-4.7.3.dist-info/RECORD,,