claude-mpm 0.3.0__py3-none-any.whl → 1.0.0__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.
@@ -156,6 +156,29 @@ Context:
156
156
  4. **Workload Balancing**: Distribute tasks across agents when possible
157
157
  5. **Specialization Depth**: Prefer specialist over generalist for complex tasks
158
158
 
159
+ ### Task Tool Agent Name Format
160
+ The Task tool accepts agent names in **both** formats for flexibility:
161
+
162
+ **TodoWrite Format (Capitalized)** → **Task Tool Format (lowercase-hyphenated)**
163
+ - `"Research"` → `"research"`
164
+ - `"Engineer"` → `"engineer"`
165
+ - `"QA"` → `"qa"`
166
+ - `"Documentation"` → `"documentation"`
167
+ - `"Security"` → `"security"`
168
+ - `"Ops"` → `"ops"`
169
+ - `"Version Control"` → `"version-control"`
170
+ - `"Data Engineer"` → `"data-engineer"`
171
+
172
+ **Both formats are valid** in the Task tool:
173
+ - ✅ `Task(description="Analyze patterns", subagent_type="Research")`
174
+ - ✅ `Task(description="Analyze patterns", subagent_type="research")`
175
+ - ✅ `Task(description="Update docs", subagent_type="Documentation")`
176
+ - ✅ `Task(description="Update docs", subagent_type="documentation")`
177
+ - ✅ `Task(description="Git operations", subagent_type="Version Control")`
178
+ - ✅ `Task(description="Git operations", subagent_type="version-control")`
179
+
180
+ **Agent Name Normalization**: When you receive a Task tool call with capitalized format (matching TodoWrite prefixes), automatically normalize it to the lowercase-hyphenated format internally for delegation.
181
+
159
182
  ## Advanced Verification & Error Handling
160
183
 
161
184
  ### Output Quality Gates
@@ -242,6 +242,55 @@ class AgentNameNormalizer:
242
242
  return False, f"Unknown agent '{agent}'. Valid agents: {', '.join(cls.CANONICAL_NAMES.values())}"
243
243
 
244
244
  return True, None
245
+
246
+ @classmethod
247
+ def to_task_format(cls, agent_name: str) -> str:
248
+ """
249
+ Convert agent name from TodoWrite format to Task tool format.
250
+
251
+ Args:
252
+ agent_name: The agent name in TodoWrite format (e.g., "Research", "Version Control")
253
+
254
+ Returns:
255
+ The agent name in Task tool format (e.g., "research", "version-control")
256
+
257
+ Examples:
258
+ "Research" → "research"
259
+ "Version Control" → "version-control"
260
+ "Data Engineer" → "data-engineer"
261
+ "QA" → "qa"
262
+ """
263
+ # First normalize to canonical form
264
+ normalized = cls.normalize(agent_name)
265
+ # Convert to lowercase and replace spaces with hyphens
266
+ return normalized.lower().replace(" ", "-")
267
+
268
+ @classmethod
269
+ def from_task_format(cls, task_format: str) -> str:
270
+ """
271
+ Convert agent name from Task tool format to TodoWrite format.
272
+
273
+ Args:
274
+ task_format: The agent name in Task tool format (e.g., "research", "version-control")
275
+
276
+ Returns:
277
+ The agent name in TodoWrite format (e.g., "Research", "Version Control")
278
+
279
+ Examples:
280
+ "research" → "Research"
281
+ "version-control" → "Version Control"
282
+ "data-engineer" → "Data Engineer"
283
+ "qa" → "QA"
284
+ """
285
+ # Replace hyphens with underscores for lookup
286
+ lookup_key = task_format.replace("-", "_")
287
+
288
+ # Check if it's a valid canonical key
289
+ if lookup_key in cls.CANONICAL_NAMES:
290
+ return cls.CANONICAL_NAMES[lookup_key]
291
+
292
+ # Try normalizing as-is
293
+ return cls.normalize(task_format)
245
294
 
246
295
 
247
296
  # Global instance for easy access
@@ -491,6 +491,13 @@ You have access to native subagents via the Task tool with subagent_type paramet
491
491
 
492
492
  Use these agents by calling: Task(description="task description", subagent_type="agent_name")
493
493
 
494
+ IMPORTANT: The Task tool accepts both naming formats:
495
+ - Capitalized format: "Research", "Engineer", "QA", "Version Control", "Data Engineer"
496
+ - Lowercase format: "research", "engineer", "qa", "version-control", "data-engineer"
497
+
498
+ Both formats work correctly. When you see capitalized names (matching TodoWrite prefixes),
499
+ automatically normalize them to lowercase-hyphenated format for the Task tool.
500
+
494
501
  Work efficiently and delegate appropriately to subagents when needed."""
495
502
 
496
503
 
@@ -141,10 +141,11 @@ class TodoAgentPrefixHook(BaseHook):
141
141
 
142
142
  def _has_agent_prefix(self, content: str) -> bool:
143
143
  """Check if content already has an agent prefix."""
144
+ import re
144
145
  content = content.strip()
145
- # Check if content has a valid agent prefix
146
- agent = agent_name_normalizer.extract_from_todo(content)
147
- return agent is not None
146
+ # Only check for [Agent] prefix at the beginning, not agent mentions in content
147
+ match = re.match(r'^\[([^\]]+)\]', content)
148
+ return match is not None
148
149
 
149
150
  def _suggest_agent(self, content: str) -> Optional[str]:
150
151
  """Suggest an appropriate agent based on content analysis."""
@@ -158,13 +159,13 @@ class TodoAgentPrefixHook(BaseHook):
158
159
 
159
160
  # Default suggestions based on common keywords
160
161
  if any(word in content_lower for word in ['code', 'implement', 'fix', 'bug']):
161
- return 'engineer'
162
+ return agent_name_normalizer.normalize('engineer')
162
163
  elif any(word in content_lower for word in ['test', 'validate', 'check']):
163
- return 'qa'
164
+ return agent_name_normalizer.normalize('qa')
164
165
  elif any(word in content_lower for word in ['doc', 'readme', 'guide']):
165
- return 'documentation'
166
+ return agent_name_normalizer.normalize('documentation')
166
167
  elif any(word in content_lower for word in ['research', 'investigate']):
167
- return 'research'
168
+ return agent_name_normalizer.normalize('research')
168
169
 
169
170
  return None
170
171
 
@@ -25,31 +25,56 @@ class TodoTaskToolsGenerator(BaseSectionGenerator):
25
25
  ### Agent Name Prefix System
26
26
 
27
27
  **Standard TodoWrite Entry Format:**
28
- - **Research tasks** → `Researcher: [task description]`
29
- - **Documentation tasks** → `Documentater: [task description]`
30
- - **Changelog tasks** → `Documentater: [changelog description]`
31
- - **QA tasks** → `QA: [task description]`
32
- - **DevOps tasks** → `Ops: [task description]`
33
- - **Security tasks** → `Security: [task description]`
34
- - **Version Control tasks** → `Versioner: [task description]`
35
- - **Version Management tasks** → `Versioner: [version management description]`
36
- - **Code Implementation tasks** → `Engineer: [implementation description]`
37
- - **Data Operations tasks** → `Data Engineer: [data management description]`
28
+ - **Research tasks** → `[Research] Analyze patterns and investigate implementation`
29
+ - **Documentation tasks** → `[Documentation] Update API reference and user guide`
30
+ - **Changelog tasks** → `[Documentation] Generate changelog for version 2.0`
31
+ - **QA tasks** → `[QA] Execute test suite and validate functionality`
32
+ - **DevOps tasks** → `[Ops] Configure deployment pipeline`
33
+ - **Security tasks** → `[Security] Perform vulnerability assessment`
34
+ - **Version Control tasks** → `[Version Control] Create feature branch and manage tags`
35
+ - **Version Management tasks** → `[Version Control] Apply semantic version bump`
36
+ - **Code Implementation tasks** → `[Engineer] Implement authentication system`
37
+ - **Data Operations tasks** → `[Data Engineer] Optimize database queries`
38
38
 
39
39
  ### Task Tool Subprocess Naming Conventions
40
40
 
41
- **Template Pattern:**
41
+ **Task Tool Usage Pattern:**
42
42
  ```
43
- **[Agent Nickname]**: [Specific task description with clear deliverables]
43
+ Task(description="[task description]", subagent_type="[agent-type]")
44
44
  ```
45
45
 
46
- **Examples of Proper Naming:**
47
- - ✅ **Documentationer**: Update framework/CLAUDE.md with Task Tool naming conventions
48
- - **QA**: Execute comprehensive test suite validation for merge readiness
49
- - **Versioner**: Create feature branch and sync with remote repository
50
- - **Researcher**: Investigate Next.js 14 performance optimization patterns
51
- - **Engineer**: Implement user authentication system with JWT tokens
52
- - **Data Engineer**: Configure PostgreSQL database and optimize query performance
46
+ **Valid subagent_type values (both formats accepted):**
47
+
48
+ **Lowercase-hyphenated format (traditional):**
49
+ - `subagent_type="research"` - For investigation and analysis
50
+ - `subagent_type="engineer"` - For coding and implementation
51
+ - `subagent_type="qa"` - For testing and quality assurance
52
+ - `subagent_type="documentation"` - For docs and guides
53
+ - `subagent_type="security"` - For security assessments
54
+ - `subagent_type="ops"` - For deployment and infrastructure
55
+ - `subagent_type="version-control"` - For git and version management
56
+ - `subagent_type="data-engineer"` - For data processing and APIs
57
+
58
+ **Capitalized format (matching TodoWrite prefixes - also accepted):**
59
+ - `subagent_type="Research"` - For investigation and analysis
60
+ - `subagent_type="Engineer"` - For coding and implementation
61
+ - `subagent_type="QA"` - For testing and quality assurance
62
+ - `subagent_type="Documentation"` - For docs and guides
63
+ - `subagent_type="Security"` - For security assessments
64
+ - `subagent_type="Ops"` - For deployment and infrastructure
65
+ - `subagent_type="Version Control"` - For git and version management
66
+ - `subagent_type="Data Engineer"` - For data processing and APIs
67
+
68
+ **Examples of Proper Task Tool Usage (both formats work):**
69
+ - ✅ `Task(description="Update framework documentation", subagent_type="documentation")`
70
+ - ✅ `Task(description="Execute test suite validation", subagent_type="qa")`
71
+ - ✅ `Task(description="Create feature branch and sync", subagent_type="version-control")`
72
+ - ✅ `Task(description="Investigate performance patterns", subagent_type="research")`
73
+ - ✅ `Task(description="Implement authentication system", subagent_type="engineer")`
74
+ - ✅ `Task(description="Configure database and optimize queries", subagent_type="data-engineer")`
75
+ - ✅ `Task(description="Analyze code patterns", subagent_type="Research")` (capitalized format)
76
+ - ✅ `Task(description="Update API docs", subagent_type="Documentation")` (capitalized format)
77
+ - ✅ `Task(description="Create release tags", subagent_type="Version Control")` (capitalized format)
53
78
 
54
79
  ### 🚨 MANDATORY: THREE SHORTCUT COMMANDS
55
80
 
@@ -72,18 +97,19 @@ class TodoTaskToolsGenerator(BaseSectionGenerator):
72
97
 
73
98
  **Example Integration:**
74
99
  ```
75
- TodoWrite: Create prefixed todos for "Push release"
76
- - ☐ Documentation Agent: Generate changelog and analyze version impact
77
- - ☐ QA Agent: Execute full test suite and quality validation
78
- - ☐ Data Engineer Agent: Validate data integrity and verify API connectivity
79
- - ☐ Version Control Agent: Apply semantic version bump and create release tags
80
-
81
- Task Tool → Documentation Agent: Generate changelog and analyze version impact
82
- Task Tool QA Agent: Execute full test suite and quality validation
83
- Task Tool Data Engineer Agent: Validate data integrity and verify API connectivity
84
- Task Tool Version Control Agent: Apply semantic version bump and create release tags
85
-
86
- Update TodoWrite status based on agent completions
100
+ # TodoWrite entries with proper agent prefixes:
101
+ - ☐ [Documentation] Generate changelog and analyze version impact
102
+ - ☐ [QA] Execute full test suite and quality validation
103
+ - ☐ [Data Engineer] Validate data integrity and verify API connectivity
104
+ - ☐ [Version Control] Apply semantic version bump and create release tags
105
+
106
+ # Corresponding Task Tool delegations:
107
+ Task(description="Generate changelog and analyze version impact", subagent_type="documentation")
108
+ Task(description="Execute full test suite and quality validation", subagent_type="qa")
109
+ Task(description="Validate data integrity and verify API connectivity", subagent_type="data-engineer")
110
+ Task(description="Apply semantic version bump and create release tags", subagent_type="version-control")
111
+
112
+ # Update TodoWrite status based on agent completions
87
113
  ```
88
114
 
89
115
  ---"""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-mpm
3
- Version: 0.3.0
3
+ Version: 1.0.0
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
@@ -6,7 +6,7 @@ claude_mpm/cli_main.py,sha256=KCAe-ws73NrIg5qmFhPdZ1a4uoiaEZ-lldYzQ6KfnJg,306
6
6
  claude_mpm/constants.py,sha256=5AG5hgBxOC7gMNHDx0lAhS-FQ8gXhtGtqJ9Moj3S6ro,4044
7
7
  claude_mpm/init.py,sha256=gOreOf7BLXkT0_HrQk_As4Kz1OT_NJG_RG0i0hbY0z0,8088
8
8
  claude_mpm/agents/BASE_AGENT_TEMPLATE.md,sha256=TYgSd9jNBMWp4mAOBUl9dconX4RcGbvmMEScRy5uyko,3343
9
- claude_mpm/agents/INSTRUCTIONS.md,sha256=cBIYDYmoplY43N3lyf59-Zyl3hldcSla-SUtmY76jds,15430
9
+ claude_mpm/agents/INSTRUCTIONS.md,sha256=FuLq0cBjUjqByA9rdi1H_3SCt8xSjsTWM_VvnIQz2fg,16578
10
10
  claude_mpm/agents/__init__.py,sha256=DxJswRx5DpgJVZEY5JlZm5VJNb_CakV5Ch231r7nWlo,3292
11
11
  claude_mpm/agents/agent_loader.py,sha256=RAAoIxM9DONMMIqyEhaU0nEiaZKYkEZpMP6humOBmU0,23669
12
12
  claude_mpm/agents/agent_loader_integration.py,sha256=z_DXxAIeuUD71HBYdxxvcFKoQYQxITLo8oAdN_M4LTA,7610
@@ -36,7 +36,7 @@ claude_mpm/cli_old/ticket_cli.py,sha256=oKIT2LR1tToHybwypRfsNdnYlwdRzjWyjlQN5lYw
36
36
  claude_mpm/config/__init__.py,sha256=p31JuaXLDHgIgoAbHApNvctN2IEZYq2MBkkXROdhbH8,105
37
37
  claude_mpm/config/hook_config.py,sha256=ehVAVHhn6ZBxrdWXqXB2M8jcAmqaWCnE9gVxuxR2UEs,1334
38
38
  claude_mpm/core/__init__.py,sha256=hE29BeE3qb8vC1-wiKjPh60WZebCwfo9UAUGM1zQnkc,1206
39
- claude_mpm/core/agent_name_normalizer.py,sha256=QLA4z7yt-xBvXzmgFOa0mBmaQY4d26jHXIhPewbyxoc,7520
39
+ claude_mpm/core/agent_name_normalizer.py,sha256=-X68oz3_74t9BRbHA54NEGyjy0xjTsGp_sCUHDtKp1s,9269
40
40
  claude_mpm/core/agent_registry.py,sha256=4MAfc7xDlrYWWkHmDMRmWE8q32teuCmIcud9D0I0dLo,20496
41
41
  claude_mpm/core/agent_registry.py.bak,sha256=cXB0yqhonE1XsXmWcdwyNuvv8yddK_PyZILDCmwCZ_Q,10161
42
42
  claude_mpm/core/agent_session_manager.py,sha256=6alXQr4gnMR-unT4J1ryEtTxJqQolA0-NgPQN6X3lqY,11212
@@ -54,7 +54,7 @@ claude_mpm/core/minimal_framework_loader.py,sha256=liYS4IyuW_aFK7yhRDZwTwT-3q09f
54
54
  claude_mpm/core/mixins.py,sha256=rTEH-7FDpNiLB8oo6mSb0CLarJklv4fDJw1xM-gr5wI,5599
55
55
  claude_mpm/core/service_registry.py,sha256=rRJDidqVU3DmGRuEWcb3-hhK2gxVe7MCFDPNOh7XlbY,10790
56
56
  claude_mpm/core/session_manager.py,sha256=3rO4KGZp8Qd_cUw6OWv4jyxGCUaL_MNPgCCpnwQt12A,6581
57
- claude_mpm/core/simple_runner.py,sha256=c7oAftT5HHWhHP1cNIw3p81sxwprAPdVNwY-l_wegks,20515
57
+ claude_mpm/core/simple_runner.py,sha256=cEaA5fzU8itTIcEF6Zy84S5ZBgKkkAd7IqPEC0YiP64,20914
58
58
  claude_mpm/core/tool_access_control.py,sha256=htZbDhC8s7D7BVqfmk0BwRrYJnlnUAk8_NeJKOaeNlg,6632
59
59
  claude_mpm/hooks/README.md,sha256=lsvGzw9g8Lf0VfRcqoGNGpAZEQSmpE0C8DksZ4nvDso,8030
60
60
  claude_mpm/hooks/__init__.py,sha256=Y3JJ_mEtvRP07r_gXkju4c0s18bjIXGH1uAbhSw1ES0,166
@@ -70,7 +70,7 @@ claude_mpm/hooks/builtin/post_delegation_hook_example.py,sha256=54OJKRgjdXH8A2LH
70
70
  claude_mpm/hooks/builtin/pre_delegation_hook_example.py,sha256=JOAdDm46be_ol7uSmnQaE0jQS8SsiuGei80Auj3sdL8,4692
71
71
  claude_mpm/hooks/builtin/submit_hook_example.py,sha256=x7-yIF_QYe9uwCezeVDA_HdDTLu6uQfbTgZ12pdC4xo,3431
72
72
  claude_mpm/hooks/builtin/ticket_extraction_hook_example.py,sha256=4wNhS2tFUXgdcvepefUvi818Tt8kKnPQQJVxqINGeys,9237
73
- claude_mpm/hooks/builtin/todo_agent_prefix_hook.py,sha256=RJDWZRvCvZWls93MmsPDaDMa7AIjzIC67Q0wtXV3fXc,10053
73
+ claude_mpm/hooks/builtin/todo_agent_prefix_hook.py,sha256=v_4w2vcZIt0bkZxqdHmgtN79yHZ1gviuhhBws0FHpIQ,10226
74
74
  claude_mpm/hooks/builtin/workflow_start_hook.py,sha256=EQrtYD9qLMLSYPl3oQinEheZAJ2i5EO_h2jhhR8lmt0,7490
75
75
  claude_mpm/orchestration/SUBPROCESS_DESIGN.md,sha256=YwToiT1_NXblv1XIWhWPNc2uKzDvqY2E_Nix8qK7qk0,2136
76
76
  claude_mpm/orchestration/__init__.py,sha256=C-cwldtfBCgV19mKnJa5U1XiKw1rAZvx-kK61nIdcao,205
@@ -123,7 +123,7 @@ claude_mpm/services/framework_claude_md_generator/section_generators/header.py,s
123
123
  claude_mpm/services/framework_claude_md_generator/section_generators/orchestration_principles.py,sha256=fKdCMvu95m7kXx6SIDzz0d6z9uvOc8EWLCZCwHANNdA,1829
124
124
  claude_mpm/services/framework_claude_md_generator/section_generators/role_designation.py,sha256=aYBHykUbsgUz7XYUNR-J3nQjIevFHvUQNBO0L1GqlTw,1468
125
125
  claude_mpm/services/framework_claude_md_generator/section_generators/subprocess_validation.py,sha256=eqj2nNXtOZ8KkMyINpkU-JLDfXHY81MpKhf_qmnZdUc,4117
126
- claude_mpm/services/framework_claude_md_generator/section_generators/todo_task_tools.py,sha256=kLgudlwoL0p2pinHnladTP-uQthBao_KmR52duvtYJ4,3963
126
+ claude_mpm/services/framework_claude_md_generator/section_generators/todo_task_tools.py,sha256=W6PaLGxCISqFQCku7yCIz-lN81FHZjSq4c2KnnO9AeI,5719
127
127
  claude_mpm/services/framework_claude_md_generator/section_generators/troubleshooting.py,sha256=o0oD7RuBSeLF4S8NCVH9lMLmQWQ57JrAm-j1BeTb0uM,1887
128
128
  claude_mpm/services/parent_directory_manager/README.md,sha256=VEdJXvxsoCA-kuBWJ_t-RZf-jU_oB43_7Inw9V6AFFk,2909
129
129
  claude_mpm/services/parent_directory_manager/__init__.py,sha256=IonvPwRV-JP58qHQGzuLxGHh83pB4SgLTzsRYbejSUQ,22889
@@ -152,8 +152,8 @@ claude_mpm/utils/import_migration_example.py,sha256=W4a4XH3FY_VBB00BB8Lae2aRPM02
152
152
  claude_mpm/utils/imports.py,sha256=wX-SOXUHbemx01MHRGQpVwajzXH6qYdQkYNFCIbb2mw,6851
153
153
  claude_mpm/utils/path_operations.py,sha256=6pLMnAWBVzHkgp6JyQHmHbGD-dWn-nX21yV4E_eT-kM,11614
154
154
  claude_mpm/utils/paths.py,sha256=Xv0SZWdZRkRjN9e6clBcA165ya00GNQxt7SwMz51tfA,10153
155
- claude_mpm-0.3.0.dist-info/METADATA,sha256=GPamifCu72Ep3mYGN47C3BR8BijeR7ojZbkN10O4OSQ,8792
156
- claude_mpm-0.3.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
157
- claude_mpm-0.3.0.dist-info/entry_points.txt,sha256=PknO31um7d8bt6GjOiVeYpdJpjND0_C1z-LQfY6UfiU,142
158
- claude_mpm-0.3.0.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
159
- claude_mpm-0.3.0.dist-info/RECORD,,
155
+ claude_mpm-1.0.0.dist-info/METADATA,sha256=s8VhjuHma1JWq9S1G6iq7eNfxD6__qDFbCF6aqZOw4c,8792
156
+ claude_mpm-1.0.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
157
+ claude_mpm-1.0.0.dist-info/entry_points.txt,sha256=PknO31um7d8bt6GjOiVeYpdJpjND0_C1z-LQfY6UfiU,142
158
+ claude_mpm-1.0.0.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
159
+ claude_mpm-1.0.0.dist-info/RECORD,,