claude-mpm 5.4.36__py3-none-any.whl → 5.4.59__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.
Potentially problematic release.
This version of claude-mpm might be problematic. Click here for more details.
- claude_mpm/VERSION +1 -1
- claude_mpm/agents/PM_INSTRUCTIONS.md +489 -177
- claude_mpm/agents/base_agent.json +1 -1
- claude_mpm/agents/frontmatter_validator.py +2 -2
- claude_mpm/cli/commands/configure_agent_display.py +12 -0
- claude_mpm/cli/commands/mpm_init/core.py +72 -0
- claude_mpm/cli/commands/profile.py +276 -0
- claude_mpm/cli/commands/skills.py +14 -18
- claude_mpm/cli/executor.py +10 -0
- claude_mpm/cli/parsers/base_parser.py +7 -0
- claude_mpm/cli/parsers/profile_parser.py +147 -0
- claude_mpm/cli/parsers/skills_parser.py +0 -6
- claude_mpm/cli/startup.py +433 -147
- claude_mpm/commands/mpm-config.md +13 -250
- claude_mpm/commands/mpm-doctor.md +9 -22
- claude_mpm/commands/mpm-help.md +5 -206
- claude_mpm/commands/mpm-init.md +81 -507
- claude_mpm/commands/mpm-monitor.md +15 -402
- claude_mpm/commands/mpm-organize.md +61 -441
- claude_mpm/commands/mpm-postmortem.md +6 -108
- claude_mpm/commands/mpm-session-resume.md +12 -363
- claude_mpm/commands/mpm-status.md +5 -69
- claude_mpm/commands/mpm-ticket-view.md +52 -495
- claude_mpm/commands/mpm-version.md +5 -107
- claude_mpm/core/optimized_startup.py +61 -0
- claude_mpm/core/shared/config_loader.py +3 -1
- claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/0.DWzvg0-y.css +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/2.ThTw9_ym.css +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{CWc5urbQ.js → 4TdZjIqw.js} +1 -1
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/5shd3_w0.js +24 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/B0uc0UOD.js +36 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/B7RN905-.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/B7xVLGWV.js +2 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BIF9m_hv.js +61 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BKjSRqUr.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BPYeabCQ.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BQaXIfA_.js +331 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{uj46x2Wr.js → BSNlmTZj.js} +1 -1
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Be7GpZd6.js +7 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Bh0LDWpI.js +145 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BofRWZRR.js +10 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BovzEFCE.js +30 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/C30mlcqg.js +165 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/C4B-KCzX.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/C4JcI4KD.js +122 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CBBdVcY8.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CDuw-vjf.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/C_Usid8X.js +15 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Cfqx1Qun.js +10 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CiIAseT4.js +128 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CmKTTxBW.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CnA0NrzZ.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Cs_tUR18.js +24 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Cu_Erd72.js +261 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CyWMqx4W.js +43 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CzZX-COe.js +220 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CzeYkLYB.js +65 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/D3k0OPJN.js +4 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/D9lljYKQ.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DGkLK5U1.js +267 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DI7hHRFL.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DLVjFsZ3.js +139 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DUrLdbGD.js +89 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DVp1hx9R.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DY1XQ8fi.js +2 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DZX00Y4g.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Da0KfYnO.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DaimHw_p.js +68 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Dfy6j1xT.js +323 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Dhb8PKl3.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Dle-35c7.js +64 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DmxopI1J.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DwBR2MJi.js +60 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/GYwsonyD.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Gi6I4Gst.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{DjhvlsAc.js → NqQ1dWOy.js} +1 -1
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/RJiighC3.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{N4qtv3Hx.js → Vzk33B_K.js} +1 -1
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/ZGh7QtNv.js +7 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/bT1r9zLR.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/bTOqqlTd.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/eNVUfhuA.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/iEWssX7S.js +162 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/sQeU3Y1z.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/uuIeMWc-.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/app.D6-I5TpK.js +2 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/start.NWzMBYRp.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/{0.CAGBuiOw.js → 0.m1gL8KXf.js} +1 -1
- claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/1.CgNOuw-d.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/2.C0GcWctS.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/version.json +1 -1
- claude_mpm/dashboard/static/svelte-build/index.html +10 -10
- claude_mpm/dashboard-svelte/node_modules/katex/src/fonts/generate_fonts.py +58 -0
- claude_mpm/dashboard-svelte/node_modules/katex/src/metrics/extract_tfms.py +114 -0
- claude_mpm/dashboard-svelte/node_modules/katex/src/metrics/extract_ttfs.py +122 -0
- claude_mpm/dashboard-svelte/node_modules/katex/src/metrics/format_json.py +28 -0
- claude_mpm/dashboard-svelte/node_modules/katex/src/metrics/parse_tfm.py +211 -0
- claude_mpm/hooks/kuzu_memory_hook.py +5 -5
- claude_mpm/init.py +276 -0
- claude_mpm/scripts/start_activity_logging.py +0 -0
- claude_mpm/services/agents/agent_builder.py +3 -3
- claude_mpm/services/agents/deployment/agent_deployment.py +22 -0
- claude_mpm/services/agents/deployment/agent_discovery_service.py +3 -1
- claude_mpm/services/agents/deployment/agent_format_converter.py +25 -13
- claude_mpm/services/agents/deployment/agent_template_builder.py +29 -17
- claude_mpm/services/agents/deployment/async_agent_deployment.py +31 -27
- claude_mpm/services/agents/deployment/local_template_deployment.py +3 -1
- claude_mpm/services/agents/deployment/multi_source_deployment_service.py +149 -4
- claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +47 -26
- claude_mpm/services/agents/git_source_manager.py +21 -2
- claude_mpm/services/agents/sources/git_source_sync_service.py +116 -5
- claude_mpm/services/monitor/management/lifecycle.py +7 -1
- claude_mpm/services/pm_skills_deployer.py +711 -0
- claude_mpm/services/profile_manager.py +337 -0
- claude_mpm/services/skills/git_skill_source_manager.py +148 -11
- claude_mpm/services/skills/selective_skill_deployer.py +97 -48
- claude_mpm/services/skills_deployer.py +161 -65
- claude_mpm/skills/bundled/security-scanning.md +112 -0
- claude_mpm/skills/skill_manager.py +98 -3
- claude_mpm/templates/.pre-commit-config.yaml +112 -0
- {claude_mpm-5.4.36.dist-info → claude_mpm-5.4.59.dist-info}/METADATA +3 -2
- {claude_mpm-5.4.36.dist-info → claude_mpm-5.4.59.dist-info}/RECORD +126 -67
- claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/0.B_FtCwCQ.css +0 -1
- claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/2.Cl_eSA4x.css +0 -1
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BgChzWQ1.js +0 -1
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CIXEwuWe.js +0 -1
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DMkZpdF2.js +0 -2
- claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/app.DTL5mJO-.js +0 -2
- claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/start.DzuEhzqh.js +0 -1
- claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/1.DFLC8jdE.js +0 -1
- claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/2.DPvEihJJ.js +0 -10
- claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager.cpython-311.pyc +0 -0
- {claude_mpm-5.4.36.dist-info → claude_mpm-5.4.59.dist-info}/WHEEL +0 -0
- {claude_mpm-5.4.36.dist-info → claude_mpm-5.4.59.dist-info}/entry_points.txt +0 -0
- {claude_mpm-5.4.36.dist-info → claude_mpm-5.4.59.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-5.4.36.dist-info → claude_mpm-5.4.59.dist-info}/licenses/LICENSE-FAQ.md +0 -0
- {claude_mpm-5.4.36.dist-info → claude_mpm-5.4.59.dist-info}/top_level.txt +0 -0
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
import json
|
|
4
4
|
from pathlib import Path
|
|
5
|
-
from typing import Dict, List, Optional
|
|
5
|
+
from typing import Any, Dict, List, Optional
|
|
6
|
+
|
|
7
|
+
import yaml
|
|
6
8
|
|
|
7
9
|
from claude_mpm.core.logging_utils import get_logger
|
|
8
10
|
|
|
@@ -56,12 +58,81 @@ class SkillManager:
|
|
|
56
58
|
if mapping_count > 0:
|
|
57
59
|
logger.info(f"Loaded skill mappings for {mapping_count} agents")
|
|
58
60
|
|
|
61
|
+
def _get_pm_skills(
|
|
62
|
+
self, project_dir: Optional[Path] = None
|
|
63
|
+
) -> List[Dict[str, Any]]:
|
|
64
|
+
"""Load PM skills from project's .claude-mpm/skills/pm/ directory.
|
|
65
|
+
|
|
66
|
+
PM skills are special required skills deployed per-project,
|
|
67
|
+
NOT fetched from the skills repository.
|
|
68
|
+
|
|
69
|
+
Args:
|
|
70
|
+
project_dir: Project directory. Defaults to current working directory.
|
|
71
|
+
|
|
72
|
+
Returns:
|
|
73
|
+
List of PM skill dictionaries with metadata
|
|
74
|
+
"""
|
|
75
|
+
if project_dir is None:
|
|
76
|
+
project_dir = Path.cwd()
|
|
77
|
+
|
|
78
|
+
pm_skills_dir = project_dir / ".claude-mpm" / "skills" / "pm"
|
|
79
|
+
|
|
80
|
+
if not pm_skills_dir.exists():
|
|
81
|
+
logger.debug("PM skills directory not found")
|
|
82
|
+
return []
|
|
83
|
+
|
|
84
|
+
skills = []
|
|
85
|
+
for skill_dir in pm_skills_dir.iterdir():
|
|
86
|
+
if skill_dir.is_dir():
|
|
87
|
+
skill_file = skill_dir / "SKILL.md"
|
|
88
|
+
if skill_file.exists():
|
|
89
|
+
skill = self._load_pm_skill(skill_file)
|
|
90
|
+
if skill:
|
|
91
|
+
skills.append(skill)
|
|
92
|
+
|
|
93
|
+
if skills:
|
|
94
|
+
logger.debug(f"Loaded {len(skills)} PM skills from {pm_skills_dir}")
|
|
95
|
+
|
|
96
|
+
return skills
|
|
97
|
+
|
|
98
|
+
def _load_pm_skill(self, skill_file: Path) -> Optional[Dict[str, Any]]:
|
|
99
|
+
"""Load a single PM skill from SKILL.md file.
|
|
100
|
+
|
|
101
|
+
Args:
|
|
102
|
+
skill_file: Path to SKILL.md file
|
|
103
|
+
|
|
104
|
+
Returns:
|
|
105
|
+
Dictionary with skill metadata and content, or None if failed
|
|
106
|
+
"""
|
|
107
|
+
try:
|
|
108
|
+
content = skill_file.read_text(encoding="utf-8")
|
|
109
|
+
|
|
110
|
+
# Parse YAML frontmatter
|
|
111
|
+
if content.startswith("---"):
|
|
112
|
+
parts = content.split("---", 2)
|
|
113
|
+
if len(parts) >= 3:
|
|
114
|
+
metadata = yaml.safe_load(parts[1])
|
|
115
|
+
body = parts[2].strip()
|
|
116
|
+
|
|
117
|
+
return {
|
|
118
|
+
"name": metadata.get("name", skill_file.parent.name),
|
|
119
|
+
"version": metadata.get("version", "1.0.0"),
|
|
120
|
+
"description": metadata.get("description", ""),
|
|
121
|
+
"when_to_use": metadata.get("when_to_use", ""),
|
|
122
|
+
"content": body,
|
|
123
|
+
"is_pm_skill": True,
|
|
124
|
+
}
|
|
125
|
+
except Exception as e:
|
|
126
|
+
logger.warning(f"Failed to load PM skill {skill_file}: {e}")
|
|
127
|
+
|
|
128
|
+
return None
|
|
129
|
+
|
|
59
130
|
def get_agent_skills(self, agent_type: str) -> List[Skill]:
|
|
60
131
|
"""
|
|
61
|
-
Get all skills for an agent (bundled + discovered).
|
|
132
|
+
Get all skills for an agent (bundled + discovered + PM skills if PM agent).
|
|
62
133
|
|
|
63
134
|
Args:
|
|
64
|
-
agent_type: Agent type/ID (e.g., 'engineer', 'python_engineer')
|
|
135
|
+
agent_type: Agent type/ID (e.g., 'engineer', 'python_engineer', 'pm')
|
|
65
136
|
|
|
66
137
|
Returns:
|
|
67
138
|
List of Skill objects for this agent
|
|
@@ -86,6 +157,30 @@ class SkillManager:
|
|
|
86
157
|
if skill not in skills:
|
|
87
158
|
skills.append(skill)
|
|
88
159
|
|
|
160
|
+
# Add PM skills for PM agent only
|
|
161
|
+
if agent_type.lower() in ("pm", "project-manager", "project_manager"):
|
|
162
|
+
pm_skill_dicts = self._get_pm_skills()
|
|
163
|
+
for pm_skill_dict in pm_skill_dicts:
|
|
164
|
+
# Convert PM skill dict to Skill object
|
|
165
|
+
pm_skill = Skill(
|
|
166
|
+
name=pm_skill_dict["name"],
|
|
167
|
+
path=Path.cwd()
|
|
168
|
+
/ ".claude-mpm"
|
|
169
|
+
/ "skills"
|
|
170
|
+
/ "pm"
|
|
171
|
+
/ pm_skill_dict["name"],
|
|
172
|
+
content=pm_skill_dict["content"],
|
|
173
|
+
source="pm", # Special source type for PM skills
|
|
174
|
+
version=pm_skill_dict["version"],
|
|
175
|
+
skill_id=pm_skill_dict["name"],
|
|
176
|
+
description=pm_skill_dict["description"],
|
|
177
|
+
agent_types=["pm", "project-manager", "project_manager"],
|
|
178
|
+
)
|
|
179
|
+
skills.append(pm_skill)
|
|
180
|
+
|
|
181
|
+
if pm_skill_dicts:
|
|
182
|
+
logger.debug(f"Added {len(pm_skill_dicts)} PM skills for PM agent")
|
|
183
|
+
|
|
89
184
|
return skills
|
|
90
185
|
|
|
91
186
|
def enhance_agent_prompt(
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# Pre-commit hooks configuration for claude-mpm
|
|
2
|
+
# See https://pre-commit.com for more information
|
|
3
|
+
# See https://pre-commit.com/hooks.html for more hooks
|
|
4
|
+
|
|
5
|
+
repos:
|
|
6
|
+
# Standard pre-commit hooks
|
|
7
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
8
|
+
rev: v4.5.0
|
|
9
|
+
hooks:
|
|
10
|
+
- id: trailing-whitespace
|
|
11
|
+
exclude: ^(.*\.md|.*\.txt)$
|
|
12
|
+
- id: end-of-file-fixer
|
|
13
|
+
exclude: ^(.*\.md|.*\.txt)$
|
|
14
|
+
- id: check-yaml
|
|
15
|
+
args: ['--unsafe'] # Allow custom YAML tags
|
|
16
|
+
- id: check-json
|
|
17
|
+
- id: check-toml
|
|
18
|
+
- id: check-merge-conflict
|
|
19
|
+
- id: check-added-large-files
|
|
20
|
+
args: ['--maxkb=1000']
|
|
21
|
+
- id: check-case-conflict
|
|
22
|
+
- id: check-executables-have-shebangs
|
|
23
|
+
- id: check-shebang-scripts-are-executable
|
|
24
|
+
- id: mixed-line-ending
|
|
25
|
+
args: ['--fix=lf']
|
|
26
|
+
|
|
27
|
+
# Ruff - replaces black, isort, flake8, pyupgrade (10-200x faster)
|
|
28
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
29
|
+
rev: v0.8.4 # Use latest version
|
|
30
|
+
hooks:
|
|
31
|
+
# Run the linter
|
|
32
|
+
- id: ruff
|
|
33
|
+
args: [--fix]
|
|
34
|
+
# Run the formatter
|
|
35
|
+
- id: ruff-format
|
|
36
|
+
|
|
37
|
+
# Type checking with mypy
|
|
38
|
+
- repo: https://github.com/pre-commit/mirrors-mypy
|
|
39
|
+
rev: v1.8.0
|
|
40
|
+
hooks:
|
|
41
|
+
- id: mypy
|
|
42
|
+
additional_dependencies: [types-PyYAML, types-requests]
|
|
43
|
+
args: ['--config-file=mypy.ini']
|
|
44
|
+
exclude: ^(venv/|\.venv/|env/|\.env/|build/|dist/|\.git/|tests/.*\.py|scripts/.*\.py)
|
|
45
|
+
|
|
46
|
+
# Security scanning with bandit
|
|
47
|
+
- repo: https://github.com/pycqa/bandit
|
|
48
|
+
rev: 1.7.5
|
|
49
|
+
hooks:
|
|
50
|
+
- id: bandit
|
|
51
|
+
args: ['-r', '-f', 'json']
|
|
52
|
+
exclude: ^(venv/|\.venv/|env/|\.env/|build/|dist/|\.git/|tests/.*\.py)
|
|
53
|
+
|
|
54
|
+
# Secret detection with detect-secrets
|
|
55
|
+
- repo: https://github.com/Yelp/detect-secrets
|
|
56
|
+
rev: v1.5.0
|
|
57
|
+
hooks:
|
|
58
|
+
- id: detect-secrets
|
|
59
|
+
args: ['--baseline', '.secrets.baseline']
|
|
60
|
+
exclude: |
|
|
61
|
+
(?x)^(
|
|
62
|
+
venv/.*|
|
|
63
|
+
\.venv/.*|
|
|
64
|
+
node_modules/.*|
|
|
65
|
+
\.git/.*|
|
|
66
|
+
__pycache__/.*|
|
|
67
|
+
.*\.lock|
|
|
68
|
+
.*package-lock\.json|
|
|
69
|
+
.*\.pyc
|
|
70
|
+
)$
|
|
71
|
+
|
|
72
|
+
# Documentation linting
|
|
73
|
+
- repo: https://github.com/pycqa/doc8
|
|
74
|
+
rev: v1.1.1
|
|
75
|
+
hooks:
|
|
76
|
+
- id: doc8
|
|
77
|
+
args: ['--max-line-length=88']
|
|
78
|
+
files: \.rst$
|
|
79
|
+
|
|
80
|
+
# Commitizen for conventional commits
|
|
81
|
+
- repo: https://github.com/commitizen-tools/commitizen
|
|
82
|
+
rev: v3.13.0
|
|
83
|
+
hooks:
|
|
84
|
+
- id: commitizen
|
|
85
|
+
stages: [commit-msg]
|
|
86
|
+
|
|
87
|
+
# Configuration for specific file types
|
|
88
|
+
exclude: |
|
|
89
|
+
(?x)^(
|
|
90
|
+
venv/.*|
|
|
91
|
+
\.venv/.*|
|
|
92
|
+
env/.*|
|
|
93
|
+
\.env/.*|
|
|
94
|
+
build/.*|
|
|
95
|
+
dist/.*|
|
|
96
|
+
\.git/.*|
|
|
97
|
+
__pycache__/.*|
|
|
98
|
+
.*\.pyc|
|
|
99
|
+
.*\.pyo|
|
|
100
|
+
.*\.egg-info/.*|
|
|
101
|
+
\.coverage|
|
|
102
|
+
\.pytest_cache/.*|
|
|
103
|
+
\.mypy_cache/.*|
|
|
104
|
+
node_modules/.*|
|
|
105
|
+
\.DS_Store|
|
|
106
|
+
\.vscode/.*|
|
|
107
|
+
\.idea/.*
|
|
108
|
+
)$
|
|
109
|
+
|
|
110
|
+
# Global settings
|
|
111
|
+
default_stages: [pre-commit]
|
|
112
|
+
fail_fast: false
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: claude-mpm
|
|
3
|
-
Version: 5.4.
|
|
3
|
+
Version: 5.4.59
|
|
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
|
|
@@ -49,7 +49,6 @@ Requires-Dist: rich>=13.0.0
|
|
|
49
49
|
Requires-Dist: questionary>=2.0.0
|
|
50
50
|
Requires-Dist: pyee>=13.0.0
|
|
51
51
|
Requires-Dist: pathspec>=0.11.0
|
|
52
|
-
Requires-Dist: kuzu-memory>=1.1.5
|
|
53
52
|
Provides-Extra: mcp
|
|
54
53
|
Requires-Dist: mcp>=0.1.0; extra == "mcp"
|
|
55
54
|
Requires-Dist: mcp-vector-search>=0.1.0; extra == "mcp"
|
|
@@ -101,6 +100,8 @@ Requires-Dist: pymongo>=4.5.0; extra == "data-processing"
|
|
|
101
100
|
Requires-Dist: redis>=5.0.0; extra == "data-processing"
|
|
102
101
|
Requires-Dist: beautifulsoup4>=4.12.0; extra == "data-processing"
|
|
103
102
|
Requires-Dist: jsonschema>=4.19.0; extra == "data-processing"
|
|
103
|
+
Provides-Extra: memory
|
|
104
|
+
Requires-Dist: kuzu-memory>=1.1.5; extra == "memory"
|
|
104
105
|
Dynamic: license-file
|
|
105
106
|
|
|
106
107
|
# Claude MPM - Multi-Agent Project Manager
|