claude-mpm 5.4.62__py3-none-any.whl → 5.4.71__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 (31) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/agents/CLAUDE_MPM_OUTPUT_STYLE.md +63 -241
  3. claude_mpm/agents/CLAUDE_MPM_TEACHER_OUTPUT_STYLE.md +107 -1928
  4. claude_mpm/agents/PM_INSTRUCTIONS.md +36 -9
  5. claude_mpm/cli/__init__.py +5 -1
  6. claude_mpm/cli/executor.py +1 -0
  7. claude_mpm/cli/parsers/base_parser.py +5 -0
  8. claude_mpm/cli/startup.py +58 -35
  9. claude_mpm/core/output_style_manager.py +5 -5
  10. claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-312.pyc +0 -0
  11. claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-312.pyc +0 -0
  12. claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-312.pyc +0 -0
  13. claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-312.pyc +0 -0
  14. claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-312.pyc +0 -0
  15. claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-312.pyc +0 -0
  16. claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-312.pyc +0 -0
  17. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-312.pyc +0 -0
  18. claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-312.pyc +0 -0
  19. claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-312.pyc +0 -0
  20. claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-312.pyc +0 -0
  21. claude_mpm/services/agents/startup_sync.py +5 -2
  22. claude_mpm/skills/bundled/pm/pm-teaching-mode/SKILL.md +657 -0
  23. claude_mpm/utils/agent_dependency_loader.py +99 -2
  24. claude_mpm/utils/robust_installer.py +35 -18
  25. {claude_mpm-5.4.62.dist-info → claude_mpm-5.4.71.dist-info}/METADATA +21 -15
  26. {claude_mpm-5.4.62.dist-info → claude_mpm-5.4.71.dist-info}/RECORD +31 -19
  27. {claude_mpm-5.4.62.dist-info → claude_mpm-5.4.71.dist-info}/WHEEL +0 -0
  28. {claude_mpm-5.4.62.dist-info → claude_mpm-5.4.71.dist-info}/entry_points.txt +0 -0
  29. {claude_mpm-5.4.62.dist-info → claude_mpm-5.4.71.dist-info}/licenses/LICENSE +0 -0
  30. {claude_mpm-5.4.62.dist-info → claude_mpm-5.4.71.dist-info}/licenses/LICENSE-FAQ.md +0 -0
  31. {claude_mpm-5.4.62.dist-info → claude_mpm-5.4.71.dist-info}/top_level.txt +0 -0
@@ -65,6 +65,7 @@ class AgentDependencyLoader:
65
65
  self.deployment_state_file = (
66
66
  Path.cwd() / ".claude" / "agents" / ".mpm_deployment_state"
67
67
  )
68
+ self.is_uv_tool = self._check_uv_tool_installation()
68
69
 
69
70
  def discover_deployed_agents(self) -> Dict[str, Path]:
70
71
  """
@@ -191,9 +192,42 @@ class AgentDependencyLoader:
191
192
  logger.debug(f"Loaded dependencies for {len(agent_dependencies)} agents")
192
193
  return agent_dependencies
193
194
 
195
+ def _check_uv_tool_installation(self) -> bool:
196
+ """
197
+ Check if running in UV tool environment (no pip available).
198
+
199
+ WHY: UV tool environments don't have pip installed. The executable
200
+ path typically contains ".local/share/uv/tools/" and the UV_TOOL_DIR
201
+ environment variable is set. In such environments, we need to use
202
+ 'uv pip' instead of 'python -m pip'.
203
+
204
+ Returns:
205
+ True if UV tool environment, False otherwise
206
+ """
207
+ import os
208
+
209
+ # Check UV_TOOL_DIR environment variable
210
+ uv_tool_dir = os.environ.get("UV_TOOL_DIR", "")
211
+ if uv_tool_dir and "claude-mpm" in uv_tool_dir:
212
+ logger.debug(f"UV tool environment detected via UV_TOOL_DIR: {uv_tool_dir}")
213
+ return True
214
+
215
+ # Check executable path for UV tool patterns
216
+ executable = sys.executable
217
+ if ".local/share/uv/tools/" in executable or "/uv/tools/" in executable:
218
+ logger.debug(
219
+ f"UV tool environment detected via executable path: {executable}"
220
+ )
221
+ return True
222
+
223
+ return False
224
+
194
225
  def check_python_dependency(self, package_spec: str) -> Tuple[bool, Optional[str]]:
195
226
  """
196
- Check if a Python package dependency is satisfied.
227
+ Check if a Python package dependency is satisfied in the TARGET environment.
228
+
229
+ WHY: UV tool environments use a separate Python installation. We must check
230
+ packages in the same environment where they would be installed/used.
197
231
 
198
232
  Args:
199
233
  package_spec: Package specification (e.g., "pandas>=2.0.0")
@@ -221,7 +255,70 @@ class AgentDependencyLoader:
221
255
  )
222
256
  return True, "optional-skipped"
223
257
 
224
- # Try to import and check version
258
+ # For UV tool environments, check via UV's Python
259
+ if self.is_uv_tool:
260
+ try:
261
+ verify_cmd = [
262
+ "uv",
263
+ "run",
264
+ "--no-project",
265
+ "python",
266
+ "-c",
267
+ f"import importlib.metadata; print(importlib.metadata.version('{package_name}'))",
268
+ ]
269
+ result = subprocess.run(
270
+ verify_cmd, capture_output=True, timeout=30, check=False
271
+ )
272
+ if result.returncode == 0:
273
+ version = result.stdout.decode().strip()
274
+ self.checked_packages.add(package_name)
275
+ if req.specifier.contains(version):
276
+ logger.debug(
277
+ f"Package {package_name} {version} satisfied in UV environment"
278
+ )
279
+ return True, version
280
+ logger.debug(
281
+ f"{package_name} {version} does not satisfy {req.specifier}"
282
+ )
283
+ return False, version
284
+ # Check alternatives for optional packages
285
+ if package_name in self.OPTIONAL_DB_PACKAGES:
286
+ for alternative in self.OPTIONAL_DB_PACKAGES[package_name]:
287
+ alt_cmd = [
288
+ "uv",
289
+ "run",
290
+ "--no-project",
291
+ "python",
292
+ "-c",
293
+ f"import importlib.metadata; print(importlib.metadata.version('{alternative}'))",
294
+ ]
295
+ alt_result = subprocess.run(
296
+ alt_cmd, capture_output=True, timeout=30, check=False
297
+ )
298
+ if alt_result.returncode == 0:
299
+ alt_version = alt_result.stdout.decode().strip()
300
+ logger.info(
301
+ f"Using {alternative} as alternative to {package_name}"
302
+ )
303
+ self.checked_packages.add(package_name)
304
+ return True, f"{alternative}:{alt_version}"
305
+ # If no alternatives work, mark as optional failure
306
+ self.optional_failed[package_name] = "No alternatives available"
307
+ logger.warning(
308
+ f"Optional package {package_name} not found, marking as optional"
309
+ )
310
+ return True, "optional-not-found"
311
+ return False, None
312
+ except subprocess.TimeoutExpired:
313
+ logger.warning(f"Timeout checking {package_name} in UV environment")
314
+ return False, None
315
+ except Exception as e:
316
+ logger.debug(
317
+ f"Error checking {package_name} in UV environment: {e}"
318
+ )
319
+ return False, None
320
+
321
+ # For normal Python, try to import and check version
225
322
  try:
226
323
  import importlib.metadata
227
324
 
@@ -478,42 +478,56 @@ class RobustPackageInstaller:
478
478
 
479
479
  def _verify_installation(self, package_spec: str) -> bool:
480
480
  """
481
- Verify that a package was successfully installed.
481
+ Verify that a package was successfully installed in the TARGET environment.
482
+
483
+ WHY: UV installs packages to its own Python environment, not the current process.
484
+ We must verify in the same environment where packages were installed.
482
485
 
483
486
  Args:
484
487
  package_spec: Package specification
485
488
 
486
489
  Returns:
487
- True if package is installed and importable
490
+ True if package is installed and importable in the target environment
488
491
  """
489
492
  package_name = self._extract_package_name(package_spec)
490
493
 
491
- # Convert package name to import name (e.g., tree-sitter-ruby -> tree_sitter_ruby)
492
- import_name = package_name.replace("-", "_")
493
-
494
494
  try:
495
- # Check if package is installed
495
+ if self.is_uv_tool:
496
+ # For UV tool, verify via UV's Python environment
497
+ verify_cmd = [
498
+ "uv",
499
+ "run",
500
+ "--no-project",
501
+ "python",
502
+ "-c",
503
+ f"import importlib.metadata; print(importlib.metadata.version('{package_name}'))",
504
+ ]
505
+ result = subprocess.run(
506
+ verify_cmd, capture_output=True, timeout=30, check=False
507
+ )
508
+ if result.returncode == 0:
509
+ logger.debug(
510
+ f"Package {package_name} verified in UV environment: {result.stdout.decode().strip()}"
511
+ )
512
+ return True
513
+ logger.debug(
514
+ f"Package {package_name} not found in UV environment: {result.stderr.decode().strip()}"
515
+ )
516
+ return False
517
+ # For normal Python, use importlib.metadata in current process
496
518
  import importlib.metadata
497
519
 
498
520
  try:
499
521
  version = importlib.metadata.version(package_name)
500
522
  logger.debug(f"Package {package_name} version {version} is installed")
501
-
502
- # For tree-sitter packages, don't try to import (they have C extensions)
503
- if package_name.startswith("tree-sitter-"):
504
- return True
505
-
506
- # Try to import the package
507
- try:
508
- __import__(import_name)
509
- return True
510
- except ImportError:
511
- # Some packages have different import names, that's OK
512
- return True
523
+ return True
513
524
 
514
525
  except importlib.metadata.PackageNotFoundError:
515
526
  return False
516
527
 
528
+ except subprocess.TimeoutExpired:
529
+ logger.warning(f"Verification timeout for {package_name}")
530
+ return False
517
531
  except ImportError:
518
532
  # Fallback for older Python versions
519
533
  try:
@@ -523,6 +537,9 @@ class RobustPackageInstaller:
523
537
  return True
524
538
  except pkg_resources.DistributionNotFound:
525
539
  return False
540
+ except Exception as e:
541
+ logger.debug(f"Verification error for {package_name}: {e}")
542
+ return False
526
543
 
527
544
  def _is_retryable_error(self, error: Optional[str]) -> bool:
528
545
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-mpm
3
- Version: 5.4.62
3
+ Version: 5.4.71
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
@@ -116,7 +116,7 @@ A powerful orchestration framework for **Claude Code (CLI)** that enables multi-
116
116
  > - Minimum: v1.0.92 (hooks support)
117
117
  > - Recommended: v2.0.30+ (latest features)
118
118
 
119
- > **Quick Start**: See [docs/user/getting-started.md](docs/user/getting-started.md) to get running in 5 minutes!
119
+ > **Quick Start**: See [docs/user/getting-started.md](docs/getting-started/README.md) to get running in 5 minutes!
120
120
 
121
121
  ## 🚀 What's New in v5.0
122
122
 
@@ -153,13 +153,16 @@ claude-mpm agent-source list
153
153
  **Agents** (47+ agents):
154
154
  - 🏢 System: `bobmatnyc/claude-mpm-agents` - Core agent templates
155
155
 
156
- **Skills** (hundreds of skills):
157
- - 🏢 System: `bobmatnyc/claude-mpm-skills` - Community skills
158
- - 🎯 Official: `anthropics/skills` - Anthropic's official skills (14+ skills)
156
+ **Skills** (17 bundled, optional external):
157
+ - 📦 **Bundled**: 17 skills included in core installation (no external repo)
158
+ - 🏢 **Optional**: `bobmatnyc/claude-mpm-skills` - Community skills (not enabled by default)
159
+ - 🔧 **Custom**: Add your own via `~/.claude/skills/` or `.claude/skills/`
159
160
 
160
161
  **What This Means:**
161
- - ✅ **Automatic Setup**: Everything deploys on first run
162
- - ✅ **Always Updated**: Git repositories sync on startup
162
+ - ✅ **Bundled Skills**: Work immediately, no external dependencies
163
+ - ✅ **Offline Support**: Core skills work without internet
164
+ - ✅ **Automatic Setup**: Agents deploy from Git on first run
165
+ - ✅ **Always Updated**: Agent repositories sync on startup
163
166
  - ✅ **Nested Support**: Repositories with subdirectories are automatically flattened
164
167
  - ✅ **Template Inheritance**: BASE-AGENT.md files cascade from parent directories
165
168
  - ✅ **Priority System**: Control which sources win when multiple repos provide the same agent/skill
@@ -201,12 +204,13 @@ See [docs/features/hierarchical-base-agents.md](docs/features/hierarchical-base-
201
204
 
202
205
  ### 🎯 Skills System
203
206
 
204
- - **Hundreds of Skills**: Comprehensive skill library from curated repositories
205
- - **Official Skills**: 14+ skills from Anthropic's official repository
207
+ - **17 Bundled Skills**: Production-ready skills included in core installation (no external repo required)
208
+ - **Custom Skills**: Add your own project-specific or user-level skills locally
206
209
  - **Three-Tier Organization**: Bundled/user/project skills with priority resolution
207
210
  - **Auto-Linking**: Skills automatically linked to relevant agents
208
211
  - **Interactive Configuration**: Skills wizard via `claude-mpm configure`
209
212
  - **Version Tracking**: Semantic versioning for all skills
213
+ - **Community Contributions**: Submit PRs to add skills to the bundled collection
210
214
 
211
215
  ### 🔌 Advanced Integration
212
216
 
@@ -283,21 +287,23 @@ claude-mpm doctor
283
287
 
284
288
  # Verify Git repositories are synced
285
289
  ls ~/.claude/agents/ # Should show 47+ agents
286
- ls ~/.claude/skills/ # Should show hundreds of skills
290
+
291
+ # Bundled skills are in Python package (always available)
292
+ # Custom skills go in ~/.claude/skills/ or .claude/skills/
287
293
 
288
294
  # Check agent sources
289
295
  claude-mpm agent-source list
290
296
 
291
- # Check skill sources
297
+ # Check skill sources (only if you've added external sources)
292
298
  claude-mpm skill-source list
293
299
  ```
294
300
 
295
301
  **What You Should See:**
296
302
  - ✅ 47+ agents deployed to `~/.claude/agents/`
297
- - ✅ Hundreds of skills deployed to `~/.claude/skills/`
298
- - ✅ Two agent sources configured (system + official)
299
- - ✅ Two skill sources configured (system + official)
300
- - ✅ Progress bars showing sync and deployment phases
303
+ - ✅ 17 bundled skills (in Python package, no separate deployment needed)
304
+ - ✅ Agent sources configured (system repositories)
305
+ - ✅ Skill sources empty by default (bundled skills only)
306
+ - ✅ Progress bars showing sync and deployment phases for agents
301
307
 
302
308
  **💡 Optional Dependencies**:
303
309
  - `[monitor]` - Full monitoring dashboard with Socket.IO and async web server components
@@ -1,5 +1,5 @@
1
1
  claude_mpm/BUILD_NUMBER,sha256=9JfxhnDtr-8l3kCP2U5TVXSErptHoga8m7XA8zqgGOc,4
2
- claude_mpm/VERSION,sha256=hNyTEi4XylpgzE9xcAlKvhiWTo0kkKFJx1aoPbweaJ4,7
2
+ claude_mpm/VERSION,sha256=QoOyA6jrOQzU3ZyWxgg9_V2pQvTXI7aXIojmHZFOkTw,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=CU7v8LZT-cFCNNLZU4dpaMD-4c3ib16v8fVE620wUjk,6761
@@ -7,10 +7,10 @@ claude_mpm/init.py,sha256=7aQpqUrWwSckpNXvBrfGOeGYLl92b1Z-NipoXJRc0f4,26401
7
7
  claude_mpm/ticket_wrapper.py,sha256=qe5xY579t7_7fK5nyeAfHN_fr7CXdeOD3jfXEc8-7yo,828
8
8
  claude_mpm/agents/BASE_AGENT.md,sha256=UWvKX5S5L2l68F_sn54otC_HDX5kTt8G4ionUcTVpGo,5645
9
9
  claude_mpm/agents/BASE_ENGINEER.md,sha256=I7BusSGQfuV0uSkRBro51qzCzagUEPrXnndIElypPJk,24434
10
- claude_mpm/agents/CLAUDE_MPM_OUTPUT_STYLE.md,sha256=bBmup61VKuohq19VEJI2EPRRkHKZLjcaGbyMMLwng8Y,12149
11
- claude_mpm/agents/CLAUDE_MPM_TEACHER_OUTPUT_STYLE.md,sha256=Tb_3F8qI-lH-4MijxQykmH4UYPx8wmRALR5KuE7pZOA,58771
10
+ claude_mpm/agents/CLAUDE_MPM_OUTPUT_STYLE.md,sha256=PmiEOcAcDVOPtCwiCPhNGWb8GVDnniftQO7MIi8yBWU,4174
11
+ claude_mpm/agents/CLAUDE_MPM_TEACHER_OUTPUT_STYLE.md,sha256=vneNW5vHjfKsRIukkuGbAnvnyp_-EC3qpFzHDdsMOwc,4796
12
12
  claude_mpm/agents/MEMORY.md,sha256=V1mGx5oEaLdN9AYLX3Xetslmr2Ja6vnLPATeEoR6bvw,3303
13
- claude_mpm/agents/PM_INSTRUCTIONS.md,sha256=2GZ0DS-9D3u9Vj_Ebh2V0PBQxegQGkDUhD1TS3LMmkA,56852
13
+ claude_mpm/agents/PM_INSTRUCTIONS.md,sha256=VZo7U_3m2MFjQOlk_xdB-uIy9q2zo6nOT3KsiN2_xJc,58162
14
14
  claude_mpm/agents/WORKFLOW.md,sha256=BD5V5wNgz4C2gHPn4ekRmj4i7nn56s1ZF8YnhWBPkFw,3331
15
15
  claude_mpm/agents/__init__.py,sha256=3cCQh2Hf_-2F9XDT5In533Bw7oKuGIqZvOdBW7af6dY,3403
16
16
  claude_mpm/agents/agent-template.yaml,sha256=mRlz5Yd0SmknTeoJWgFkZXzEF5T7OmGBJGs2-KPT93k,1969
@@ -35,13 +35,13 @@ claude_mpm/agents/templates/structured-questions-examples.md,sha256=Pmy4XM3on9wj
35
35
  claude_mpm/agents/templates/ticket-completeness-examples.md,sha256=m7EzpXwpEJKXOKD0-9cZN6K-ZtsFHPr0nm0LaY4s0Eg,5288
36
36
  claude_mpm/agents/templates/ticketing-examples.md,sha256=T2bAR9yr4H8BN2LdgeieV7c4wtZpouLu_C3LOHXRmKk,8066
37
37
  claude_mpm/agents/templates/validation-templates.md,sha256=Y4_D7dphQaKigZWqKWvJ4jVu3N-eA5OOSr8f59Q0LUM,13148
38
- claude_mpm/cli/__init__.py,sha256=JU_sLmqtAoqAwSrCdOCbeFM4Z6-M6jNL8D-vGO4eZrI,4311
38
+ claude_mpm/cli/__init__.py,sha256=j5x0uyJ4bRrKY1V4626cQI66OZsBzRz6JN26gQBxYSQ,4568
39
39
  claude_mpm/cli/__main__.py,sha256=KSy-J-vbTM2yXHOjsBJNZ60I2CJ2i5QP5zxsZV7-cjo,997
40
40
  claude_mpm/cli/chrome_devtools_installer.py,sha256=efA_ZX1iR3oaJi3222079BQw6DEG8KYr2HVGtgVj2Gs,5637
41
- claude_mpm/cli/executor.py,sha256=cetKiY2YS4XETUBXmfySdHYloI_M_lBJUFViRQ9TcS4,10544
41
+ claude_mpm/cli/executor.py,sha256=1MQdNPNoIewSR1q8nXjJuES3zKEi_IqVcZQzt9bsxw8,10601
42
42
  claude_mpm/cli/helpers.py,sha256=CypEhw0tbNH6_GzVTaQdi4w7ThCWO43Ep92YbJzPR4I,3638
43
43
  claude_mpm/cli/parser.py,sha256=Vqx9n-6Xo1uNhXR4rThmgWpZXTr0nOtkgDf3oMS9b0g,5855
44
- claude_mpm/cli/startup.py,sha256=gvysoMfNaTPxC_-ooi_5zXFOfzPiNA4Wk0bPyeEsGRE,73259
44
+ claude_mpm/cli/startup.py,sha256=EJcx1Fyta93Vj22_vmVCZZpegSs-FKLileVApn7AaEA,74370
45
45
  claude_mpm/cli/startup_display.py,sha256=R_QIamjfdaY5o_VxpIeymyYj1Qde2B9hPXy1P-KmUKI,14972
46
46
  claude_mpm/cli/startup_logging.py,sha256=RTuyd6CbhiFQz7Z07LDDhK_ZAnZfuJ9B0NghVSntHFI,29390
47
47
  claude_mpm/cli/utils.py,sha256=FSMPftBZM8MeUyTtiB63Lz7oFOgkzwTetQs58RbRb_Q,8785
@@ -118,7 +118,7 @@ claude_mpm/cli/parsers/agents_parser.py,sha256=lJ_9M1IRHoNU9-WLXLqinxEmDk1rRL6Eh
118
118
  claude_mpm/cli/parsers/analyze_code_parser.py,sha256=cpJSMFbc3mqB4qrMBIEZiikzPekC2IQX-cjt9U2fHW4,5356
119
119
  claude_mpm/cli/parsers/analyze_parser.py,sha256=E00Ao0zwzbJPchs_AJt-aoQ7LQEtJPXRCNQ6Piivb4o,3908
120
120
  claude_mpm/cli/parsers/auto_configure_parser.py,sha256=CZOk_nJZrNtRo8WnYWQKdfXywq6l6ZLMHU7U9hA7A_4,3699
121
- claude_mpm/cli/parsers/base_parser.py,sha256=jOo6dEOoDE4FXHN7XeLAsoO7IVrp0P9WiljNpleilMg,19878
121
+ claude_mpm/cli/parsers/base_parser.py,sha256=uyNDetdxV5WPH2Xmv8NqYS8NNw0LATpH5Z8iCrdpXWg,20053
122
122
  claude_mpm/cli/parsers/config_parser.py,sha256=i8kv6XWhftzZlEBruAl58Fl6IcyeOb7QVkfPeEayjCk,6255
123
123
  claude_mpm/cli/parsers/configure_parser.py,sha256=t3cwAQX3BfljDDRJH3i0LplpRprw5jdKcI9Uy3M8xtE,4382
124
124
  claude_mpm/cli/parsers/dashboard_parser.py,sha256=JBCM6v_iZhADr_Fwtk_d3up9AOod1avMab-vkNE61gE,3460
@@ -203,7 +203,7 @@ claude_mpm/core/mixins.py,sha256=vmZ7Nu2ZOnKjbhN07Ixk4noIej9nsJiknrp-Sclfu0A,534
203
203
  claude_mpm/core/oneshot_session.py,sha256=nA86Zk7W3Rh_yIhPuegFL7Xgc9S63vQ_MqfLk52doV0,21994
204
204
  claude_mpm/core/optimized_agent_loader.py,sha256=yevEwTZWzVeZYEJhV3czD45OU7ukJIaJos4MGnFP7YQ,15857
205
205
  claude_mpm/core/optimized_startup.py,sha256=U5I4f7PNYXCBOLbCkbWT2V2sv01T8iWP2Bw-f928Q9M,17927
206
- claude_mpm/core/output_style_manager.py,sha256=WQuKn-N0x029NHACRvD-2iamMXHNcRzuSbCag7bSwT4,17025
206
+ claude_mpm/core/output_style_manager.py,sha256=5jKurbBlQQXSlXhugGC3pNGg09gZhOXnATb4dQ_I_Jk,17056
207
207
  claude_mpm/core/pm_hook_interceptor.py,sha256=92C8TrpK-XVQD8BiXbqs8lSCX72PU0KZG5oAjhf8GOQ,11197
208
208
  claude_mpm/core/service_registry.py,sha256=QpmAMWCov8XXaxQwE7WiNbgv6u_CRjpKPB64kLYvZKk,11722
209
209
  claude_mpm/core/session_manager.py,sha256=iEDZWKBYHSu001nFX8vFvH33RvQOW0eIgomWhFM53sw,12078
@@ -336,13 +336,19 @@ claude_mpm/hooks/claude_hooks/memory_integration.py,sha256=73w7A5-3s5i1oYdkbEgw7
336
336
  claude_mpm/hooks/claude_hooks/response_tracking.py,sha256=bz_8csYxxUZ3k_SI6q9uvtE7wfH-T15v_jpP2nq45nk,16896
337
337
  claude_mpm/hooks/claude_hooks/tool_analysis.py,sha256=3_o2PP9D7wEMwLriCtIBOw0cj2fSZfepN7lI4P1meSQ,7862
338
338
  claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-311.pyc,sha256=EGpgXqhPM0iRRZtCqHaLVQ6wDH42OH_M7Gt5GiFLyro,346
339
+ claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-312.pyc,sha256=RdPlaoNPDoSlTFV36Ku4vxs7xYqh7t2038D4pyULy-g,322
339
340
  claude_mpm/hooks/claude_hooks/__pycache__/correlation_manager.cpython-311.pyc,sha256=SQX5iiP9bQZkLL-cj_2tlGH7lpAzarO0mYal7btj3tc,3521
340
341
  claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-311.pyc,sha256=T9FMRyRjvHTRJm0LXosba7MezdUVw6I-nt_KP--LTwA,35923
342
+ claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-312.pyc,sha256=-ayyVTxDW5_BVD2TD14e4zDteH0l_mXIcyEG8AQCERg,32006
341
343
  claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-311.pyc,sha256=AsvVXkge1Pio3jgnS-zNbPt9brySB8ZeVPSn7VvuKjs,29654
344
+ claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-312.pyc,sha256=heIj2o28Pw6QF5zgZBAebUInR8nxi6Ezdlfau9p-WJQ,27040
342
345
  claude_mpm/hooks/claude_hooks/__pycache__/installer.cpython-311.pyc,sha256=9mpAKY4gNcbU5VvZ5tGbf2UM0uIEWdreKSUvVr_BKcM,33917
343
346
  claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-311.pyc,sha256=YbwauQDKSGvXkT1972faalJLuxwyvq328DYQhkCnel0,10513
347
+ claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-312.pyc,sha256=K-FbzUxbOffBSol-RUZkyFr9k1Ktg0HRdykSKbAn0NI,9489
344
348
  claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-311.pyc,sha256=0xWsBZ63F-akLopSiRi36-hmhh1v9R5aKFBM0z93Jd0,16730
349
+ claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-312.pyc,sha256=QZDMBrRbhD5lnm1sDcONSU5s5qsrcRme-vQOGUD5J3U,14632
345
350
  claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-311.pyc,sha256=ZjcNfNY5Ht6FhalPeh7M7OzMffcey5iF4AVjDDg9kak,10694
351
+ claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-312.pyc,sha256=T98zonvVkllflFNw_pptXXAXbDrIgeBfY6aXvSY8el8,9071
346
352
  claude_mpm/hooks/claude_hooks/services/__init__.py,sha256=OIYOKsUNw1BHYawOCp-KFK5kmQKuj92cCqCEPO0nwo0,585
347
353
  claude_mpm/hooks/claude_hooks/services/connection_manager.py,sha256=l-aKzxwK-PWKL3TO1Iiu0sfSbj6Y9JMBOm3pgAiUYZc,9378
348
354
  claude_mpm/hooks/claude_hooks/services/connection_manager_http.py,sha256=n14k1byOBbviu0nFab3q0gb7p6eMqGO8hS0b7Gt2JRg,10262
@@ -350,10 +356,15 @@ claude_mpm/hooks/claude_hooks/services/duplicate_detector.py,sha256=Fh9LmEMsVmQM
350
356
  claude_mpm/hooks/claude_hooks/services/state_manager.py,sha256=QB0JPJQThTVg0TGRO3Dc_3y3bac-hkulgMqqzo_71ng,11189
351
357
  claude_mpm/hooks/claude_hooks/services/subagent_processor.py,sha256=f7a_vgo_kuG9MalDTka2UPXwDyCkqNgCvG8i1hp0oRo,15263
352
358
  claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-311.pyc,sha256=xBfLBSqnpcKfcQBWfh7xUm454g1lq1LvbO7SxGvcOPc,644
359
+ claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-312.pyc,sha256=75pkmoqE7CeBOc2ZHTYfgSR-mtVjKrcKaOA6PxFGW64,565
353
360
  claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-311.pyc,sha256=bvZ_QcuI0j125Ebv8RzeWUh1BkuRTUfufGi0NV7HjuY,12359
361
+ claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-312.pyc,sha256=HEBjsWvdkCpV8X4UyDsKhm0HXpstuHnObck_Yr-QQBA,11177
354
362
  claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-311.pyc,sha256=Yy_REAUhJCiFjOhxeDb4v0qyEvEbUtCmXD9PAz40dhw,5321
363
+ claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-312.pyc,sha256=ef_Tx9Uv1CvS18tC_PXmGVvIoMDsRnEUhKRUZaUdGBw,4751
355
364
  claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-311.pyc,sha256=TPkEc-Zi3oNS5dCXBpGbSZwg_8RQvzNzd4pVx9B3WeM,12364
365
+ claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-312.pyc,sha256=uDZ1o2NYu0e2-sXxHovFOy28cklRaMOOX4vkLTRDjq0,11477
356
366
  claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-311.pyc,sha256=YjWbj0qXMjew5bZCgvHWrb3dxp3BQZkpuOqsXgu4Wis,15045
367
+ claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-312.pyc,sha256=c2Y-gHruenFjPNTimrkiSUvXamZayjpMinAKIppzMoM,13611
357
368
  claude_mpm/hooks/failure_learning/__init__.py,sha256=iJ80AKFHiT8DjIH2a72DQVJvL6nAFrizNA2yTKwZ4rw,1805
358
369
  claude_mpm/hooks/failure_learning/failure_detection_hook.py,sha256=KENoB5N-dBm5hb0SxeIZtCvNKbmG2BKHOJSrSO-3Z_I,7500
359
370
  claude_mpm/hooks/failure_learning/fix_detection_hook.py,sha256=XUk1bnBVLdfhQ9AMQSvGsTSeFQsKsVud2wbWX-Jjor8,7164
@@ -421,7 +432,7 @@ claude_mpm/services/agents/local_template_manager.py,sha256=v1vlukIVEpiw5u11KseJ
421
432
  claude_mpm/services/agents/observers.py,sha256=2OUEMc2TzHrME2AHHnBmquWmbhGEMTNpTc08sIoHno0,18484
422
433
  claude_mpm/services/agents/recommender.py,sha256=TC8iLNi_uP0byj8w9jXHhl0PYn0JDfAgRMjbTgSwafE,23756
423
434
  claude_mpm/services/agents/single_tier_deployment_service.py,sha256=PDkTJmtBdNMzvdlONzUgQ53ymAFTqOsL06vg4NuqpnQ,25396
424
- claude_mpm/services/agents/startup_sync.py,sha256=0Rhz4qRH55LsGcRp_qPjNvsnsfKkisw8avZ3Ht_EaqQ,9189
435
+ claude_mpm/services/agents/startup_sync.py,sha256=VoTSFtYF-BZZSCzoeAF6LpQ-tq3BjE4Ua-N9sdRikak,9310
425
436
  claude_mpm/services/agents/toolchain_detector.py,sha256=eGzMprsD1M7DXHGN0RhhUz3diITbiXtHZw0uK7rZ6Nk,16854
426
437
  claude_mpm/services/agents/deployment/__init__.py,sha256=iprW-Ww3LBtWu9pVFjAX45_CswfSqnPMoG0QoFPd1Dg,539
427
438
  claude_mpm/services/agents/deployment/agent_config_provider.py,sha256=gtQcbGr0GspZYplbeRkGXd3BAXl3_pWhKSsbfiSVTww,15234
@@ -874,6 +885,7 @@ claude_mpm/skills/bundled/php/espocrm-development/references/testing-debugging.m
874
885
  claude_mpm/skills/bundled/pm/pm-delegation-patterns/SKILL.md,sha256=kdFyy5T_70vw5XpGexlXr18VdQWIFD59A8pLmmcWiVA,5388
875
886
  claude_mpm/skills/bundled/pm/pm-git-file-tracking/SKILL.md,sha256=bnmO9Wzoe0AYJ72yKBO_FqtxsfjIkYhUHlosPRrYgTM,3607
876
887
  claude_mpm/skills/bundled/pm/pm-pr-workflow/SKILL.md,sha256=HSeVxw_znHqiPA95gpHnPKavNkSgSLTKuVaHqV976Ao,3369
888
+ claude_mpm/skills/bundled/pm/pm-teaching-mode/SKILL.md,sha256=nGyyxFlTi3o-iwPTpN_5AWNXzE8e27r-drgqAeqeJoM,17707
877
889
  claude_mpm/skills/bundled/pm/pm-ticketing-integration/SKILL.md,sha256=bPQZuMztenS5jEHidliwzYULAmH-L72iA4_sH28O1WU,4458
878
890
  claude_mpm/skills/bundled/pm/pm-verification-protocols/SKILL.md,sha256=ROTcT_tpXzHIli-1BT0FSGzMycU7c7GVif4eE98lr2A,6620
879
891
  claude_mpm/skills/bundled/react/flexlayout-react.md,sha256=uJF_kNuqerR5PXTAcO7H6WwAsI16IdSy5R8iIgGzRec,18327
@@ -947,7 +959,7 @@ claude_mpm/tools/code_tree_analyzer/models.py,sha256=jZ63GOGivZFImbqKfg12fUAo1n5
947
959
  claude_mpm/tools/code_tree_analyzer/multilang_analyzer.py,sha256=A7MC11_WFc-e5P6Klazh0QJN2kGzq-PmhrqOU6Q1fj0,8386
948
960
  claude_mpm/tools/code_tree_analyzer/python_analyzer.py,sha256=iJsda_pFgXIY36oaqglPuc_vUo8APIpqwW30TUJfgls,11314
949
961
  claude_mpm/utils/__init__.py,sha256=rkxNE0tDfKEN2lr2LLBuToNSvkF-yjF38607eUXL1vk,353
950
- claude_mpm/utils/agent_dependency_loader.py,sha256=nFiD6M_QEDdMAJrKic15qiN8Cq-LlGgMjKzvGofQzi0,39780
962
+ claude_mpm/utils/agent_dependency_loader.py,sha256=984o7ccgzto3WLXKIF3xBzaheF0K518sgzi4_wGVvWo,44464
951
963
  claude_mpm/utils/agent_filters.py,sha256=mSuMrroTnIhNisUF4xR7ghwQmrHq5B2-hq6rjWBVkC0,9475
952
964
  claude_mpm/utils/common.py,sha256=6hcs3Y6lx596Oj4H3CEQId-NIn8XEZJw1Ud3GAKwXKA,14341
953
965
  claude_mpm/utils/config_manager.py,sha256=iWsPM0uo31Ela-XhFe9DIw3RuVxJf94_yFQ1HkibAlY,15876
@@ -969,17 +981,17 @@ claude_mpm/utils/log_cleanup.py,sha256=go_axmP7FqdDX5tspd-D-B10a1PpY51K5X_xMQMRD
969
981
  claude_mpm/utils/migration.py,sha256=ugJAW_OOxLsV3sEv0Il2gb2QfnqnLwVD9SjhgppPQYo,12802
970
982
  claude_mpm/utils/path_operations.py,sha256=gvd6Ye5rMFxIKnFzWwIL6jYy8wGkjSH3onYAan6zXkA,10869
971
983
  claude_mpm/utils/progress.py,sha256=tSalO95Xv6YsGT4_uxNYvGT3qz6D3bsDDsflP-ZZnbI,14084
972
- claude_mpm/utils/robust_installer.py,sha256=fVoWe6aTtx-4en3E7nqOKQy1FXhn0mVPNRG2RuzdpnU,28913
984
+ claude_mpm/utils/robust_installer.py,sha256=KiSA_EhzyxYCiFHScQX3fNmloLfgXvytoCUFm-VExqQ,29805
973
985
  claude_mpm/utils/session_logging.py,sha256=_6eoyCvVKhu2OhgRzC5FvMfFnD9et75lzCqARbd_i-k,3059
974
986
  claude_mpm/utils/structured_questions.py,sha256=GoPr8UOe2vsAfJbNXS5y8E1wjp8zGHE1pDbg8H2Lv7M,20611
975
987
  claude_mpm/utils/subprocess_utils.py,sha256=D0izRT8anjiUb_JG72zlJR_JAw1cDkb7kalNmfX9KlM,10443
976
988
  claude_mpm/validation/__init__.py,sha256=YZhwE3mhit-lslvRLuwfX82xJ_k4haZeKmh4IWaVwtk,156
977
989
  claude_mpm/validation/agent_validator.py,sha256=GprtAvu80VyMXcKGsK_VhYiXWA6BjKHv7O6HKx0AB9w,20917
978
990
  claude_mpm/validation/frontmatter_validator.py,sha256=YpJlYNNYcV8u6hIOi3_jaRsDnzhbcQpjCBE6eyBKaFY,7076
979
- claude_mpm-5.4.62.dist-info/licenses/LICENSE,sha256=ca3y_Rk4aPrbF6f62z8Ht5MJM9OAvbGlHvEDcj9vUQ4,3867
980
- claude_mpm-5.4.62.dist-info/licenses/LICENSE-FAQ.md,sha256=TxfEkXVCK98RzDOer09puc7JVCP_q_bN4dHtZKHCMcM,5104
981
- claude_mpm-5.4.62.dist-info/METADATA,sha256=vSCcqlq55qvwZANdQ56__og-cryNZF5sCw7qMIwDuFw,37997
982
- claude_mpm-5.4.62.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
983
- claude_mpm-5.4.62.dist-info/entry_points.txt,sha256=n-Uk4vwHPpuvu-g_I7-GHORzTnN_m6iyOsoLveKKD0E,228
984
- claude_mpm-5.4.62.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
985
- claude_mpm-5.4.62.dist-info/RECORD,,
991
+ claude_mpm-5.4.71.dist-info/licenses/LICENSE,sha256=ca3y_Rk4aPrbF6f62z8Ht5MJM9OAvbGlHvEDcj9vUQ4,3867
992
+ claude_mpm-5.4.71.dist-info/licenses/LICENSE-FAQ.md,sha256=TxfEkXVCK98RzDOer09puc7JVCP_q_bN4dHtZKHCMcM,5104
993
+ claude_mpm-5.4.71.dist-info/METADATA,sha256=PO3aPf52VteUlRuQNadXUABvmN39DJV1G512UZx6wB0,38503
994
+ claude_mpm-5.4.71.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
995
+ claude_mpm-5.4.71.dist-info/entry_points.txt,sha256=n-Uk4vwHPpuvu-g_I7-GHORzTnN_m6iyOsoLveKKD0E,228
996
+ claude_mpm-5.4.71.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
997
+ claude_mpm-5.4.71.dist-info/RECORD,,