claude-mpm 0.3.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.
Potentially problematic release.
This version of claude-mpm might be problematic. Click here for more details.
- claude_mpm/__init__.py +17 -0
- claude_mpm/__main__.py +14 -0
- claude_mpm/_version.py +32 -0
- claude_mpm/agents/BASE_AGENT_TEMPLATE.md +88 -0
- claude_mpm/agents/INSTRUCTIONS.md +375 -0
- claude_mpm/agents/__init__.py +118 -0
- claude_mpm/agents/agent_loader.py +621 -0
- claude_mpm/agents/agent_loader_integration.py +229 -0
- claude_mpm/agents/agents_metadata.py +204 -0
- claude_mpm/agents/base_agent.json +27 -0
- claude_mpm/agents/base_agent_loader.py +519 -0
- claude_mpm/agents/schema/agent_schema.json +160 -0
- claude_mpm/agents/system_agent_config.py +587 -0
- claude_mpm/agents/templates/__init__.py +101 -0
- claude_mpm/agents/templates/data_engineer_agent.json +46 -0
- claude_mpm/agents/templates/documentation_agent.json +45 -0
- claude_mpm/agents/templates/engineer_agent.json +49 -0
- claude_mpm/agents/templates/ops_agent.json +46 -0
- claude_mpm/agents/templates/qa_agent.json +45 -0
- claude_mpm/agents/templates/research_agent.json +49 -0
- claude_mpm/agents/templates/security_agent.json +46 -0
- claude_mpm/agents/templates/update-optimized-specialized-agents.json +374 -0
- claude_mpm/agents/templates/version_control_agent.json +46 -0
- claude_mpm/agents/test_fix_deployment/.claude-pm/config/project.json +6 -0
- claude_mpm/cli.py +655 -0
- claude_mpm/cli_main.py +13 -0
- claude_mpm/cli_module/__init__.py +15 -0
- claude_mpm/cli_module/args.py +222 -0
- claude_mpm/cli_module/commands.py +203 -0
- claude_mpm/cli_module/migration_example.py +183 -0
- claude_mpm/cli_module/refactoring_guide.md +253 -0
- claude_mpm/cli_old/__init__.py +1 -0
- claude_mpm/cli_old/ticket_cli.py +102 -0
- claude_mpm/config/__init__.py +5 -0
- claude_mpm/config/hook_config.py +42 -0
- claude_mpm/constants.py +150 -0
- claude_mpm/core/__init__.py +45 -0
- claude_mpm/core/agent_name_normalizer.py +248 -0
- claude_mpm/core/agent_registry.py +627 -0
- claude_mpm/core/agent_registry.py.bak +312 -0
- claude_mpm/core/agent_session_manager.py +273 -0
- claude_mpm/core/base_service.py +747 -0
- claude_mpm/core/base_service.py.bak +406 -0
- claude_mpm/core/config.py +334 -0
- claude_mpm/core/config_aliases.py +292 -0
- claude_mpm/core/container.py +347 -0
- claude_mpm/core/factories.py +281 -0
- claude_mpm/core/framework_loader.py +472 -0
- claude_mpm/core/injectable_service.py +206 -0
- claude_mpm/core/interfaces.py +539 -0
- claude_mpm/core/logger.py +468 -0
- claude_mpm/core/minimal_framework_loader.py +107 -0
- claude_mpm/core/mixins.py +150 -0
- claude_mpm/core/service_registry.py +299 -0
- claude_mpm/core/session_manager.py +190 -0
- claude_mpm/core/simple_runner.py +511 -0
- claude_mpm/core/tool_access_control.py +173 -0
- claude_mpm/hooks/README.md +243 -0
- claude_mpm/hooks/__init__.py +5 -0
- claude_mpm/hooks/base_hook.py +154 -0
- claude_mpm/hooks/builtin/__init__.py +1 -0
- claude_mpm/hooks/builtin/logging_hook_example.py +165 -0
- claude_mpm/hooks/builtin/post_delegation_hook_example.py +124 -0
- claude_mpm/hooks/builtin/pre_delegation_hook_example.py +125 -0
- claude_mpm/hooks/builtin/submit_hook_example.py +100 -0
- claude_mpm/hooks/builtin/ticket_extraction_hook_example.py +237 -0
- claude_mpm/hooks/builtin/todo_agent_prefix_hook.py +239 -0
- claude_mpm/hooks/builtin/workflow_start_hook.py +181 -0
- claude_mpm/hooks/hook_client.py +264 -0
- claude_mpm/hooks/hook_runner.py +370 -0
- claude_mpm/hooks/json_rpc_executor.py +259 -0
- claude_mpm/hooks/json_rpc_hook_client.py +319 -0
- claude_mpm/hooks/tool_call_interceptor.py +204 -0
- claude_mpm/init.py +246 -0
- claude_mpm/orchestration/SUBPROCESS_DESIGN.md +66 -0
- claude_mpm/orchestration/__init__.py +6 -0
- claude_mpm/orchestration/archive/direct_orchestrator.py +195 -0
- claude_mpm/orchestration/archive/factory.py +215 -0
- claude_mpm/orchestration/archive/hook_enabled_orchestrator.py +188 -0
- claude_mpm/orchestration/archive/hook_integration_example.py +178 -0
- claude_mpm/orchestration/archive/interactive_subprocess_orchestrator.py +826 -0
- claude_mpm/orchestration/archive/orchestrator.py +501 -0
- claude_mpm/orchestration/archive/pexpect_orchestrator.py +252 -0
- claude_mpm/orchestration/archive/pty_orchestrator.py +270 -0
- claude_mpm/orchestration/archive/simple_orchestrator.py +82 -0
- claude_mpm/orchestration/archive/subprocess_orchestrator.py +801 -0
- claude_mpm/orchestration/archive/system_prompt_orchestrator.py +278 -0
- claude_mpm/orchestration/archive/wrapper_orchestrator.py +187 -0
- claude_mpm/scripts/__init__.py +1 -0
- claude_mpm/scripts/ticket.py +269 -0
- claude_mpm/services/__init__.py +10 -0
- claude_mpm/services/agent_deployment.py +955 -0
- claude_mpm/services/agent_lifecycle_manager.py +948 -0
- claude_mpm/services/agent_management_service.py +596 -0
- claude_mpm/services/agent_modification_tracker.py +841 -0
- claude_mpm/services/agent_profile_loader.py +606 -0
- claude_mpm/services/agent_registry.py +677 -0
- claude_mpm/services/base_agent_manager.py +380 -0
- claude_mpm/services/framework_agent_loader.py +337 -0
- claude_mpm/services/framework_claude_md_generator/README.md +92 -0
- claude_mpm/services/framework_claude_md_generator/__init__.py +206 -0
- claude_mpm/services/framework_claude_md_generator/content_assembler.py +151 -0
- claude_mpm/services/framework_claude_md_generator/content_validator.py +126 -0
- claude_mpm/services/framework_claude_md_generator/deployment_manager.py +137 -0
- claude_mpm/services/framework_claude_md_generator/section_generators/__init__.py +106 -0
- claude_mpm/services/framework_claude_md_generator/section_generators/agents.py +582 -0
- claude_mpm/services/framework_claude_md_generator/section_generators/claude_pm_init.py +97 -0
- claude_mpm/services/framework_claude_md_generator/section_generators/core_responsibilities.py +27 -0
- claude_mpm/services/framework_claude_md_generator/section_generators/delegation_constraints.py +23 -0
- claude_mpm/services/framework_claude_md_generator/section_generators/environment_config.py +23 -0
- claude_mpm/services/framework_claude_md_generator/section_generators/footer.py +20 -0
- claude_mpm/services/framework_claude_md_generator/section_generators/header.py +26 -0
- claude_mpm/services/framework_claude_md_generator/section_generators/orchestration_principles.py +30 -0
- claude_mpm/services/framework_claude_md_generator/section_generators/role_designation.py +37 -0
- claude_mpm/services/framework_claude_md_generator/section_generators/subprocess_validation.py +111 -0
- claude_mpm/services/framework_claude_md_generator/section_generators/todo_task_tools.py +89 -0
- claude_mpm/services/framework_claude_md_generator/section_generators/troubleshooting.py +39 -0
- claude_mpm/services/framework_claude_md_generator/section_manager.py +106 -0
- claude_mpm/services/framework_claude_md_generator/version_manager.py +121 -0
- claude_mpm/services/framework_claude_md_generator.py +621 -0
- claude_mpm/services/hook_service.py +388 -0
- claude_mpm/services/hook_service_manager.py +223 -0
- claude_mpm/services/json_rpc_hook_manager.py +92 -0
- claude_mpm/services/parent_directory_manager/README.md +83 -0
- claude_mpm/services/parent_directory_manager/__init__.py +577 -0
- claude_mpm/services/parent_directory_manager/backup_manager.py +258 -0
- claude_mpm/services/parent_directory_manager/config_manager.py +210 -0
- claude_mpm/services/parent_directory_manager/deduplication_manager.py +279 -0
- claude_mpm/services/parent_directory_manager/framework_protector.py +143 -0
- claude_mpm/services/parent_directory_manager/operations.py +186 -0
- claude_mpm/services/parent_directory_manager/state_manager.py +624 -0
- claude_mpm/services/parent_directory_manager/template_deployer.py +579 -0
- claude_mpm/services/parent_directory_manager/validation_manager.py +378 -0
- claude_mpm/services/parent_directory_manager/version_control_helper.py +339 -0
- claude_mpm/services/parent_directory_manager/version_manager.py +222 -0
- claude_mpm/services/shared_prompt_cache.py +819 -0
- claude_mpm/services/ticket_manager.py +213 -0
- claude_mpm/services/ticket_manager_di.py +318 -0
- claude_mpm/services/ticketing_service_original.py +508 -0
- claude_mpm/services/version_control/VERSION +1 -0
- claude_mpm/services/version_control/__init__.py +70 -0
- claude_mpm/services/version_control/branch_strategy.py +670 -0
- claude_mpm/services/version_control/conflict_resolution.py +744 -0
- claude_mpm/services/version_control/git_operations.py +784 -0
- claude_mpm/services/version_control/semantic_versioning.py +703 -0
- claude_mpm/ui/__init__.py +1 -0
- claude_mpm/ui/rich_terminal_ui.py +295 -0
- claude_mpm/ui/terminal_ui.py +328 -0
- claude_mpm/utils/__init__.py +16 -0
- claude_mpm/utils/config_manager.py +468 -0
- claude_mpm/utils/import_migration_example.py +80 -0
- claude_mpm/utils/imports.py +182 -0
- claude_mpm/utils/path_operations.py +357 -0
- claude_mpm/utils/paths.py +289 -0
- claude_mpm-0.3.0.dist-info/METADATA +290 -0
- claude_mpm-0.3.0.dist-info/RECORD +159 -0
- claude_mpm-0.3.0.dist-info/WHEEL +5 -0
- claude_mpm-0.3.0.dist-info/entry_points.txt +4 -0
- claude_mpm-0.3.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Agent Loader Integration
|
|
4
|
+
========================
|
|
5
|
+
|
|
6
|
+
Integrates the new agent management service with the existing agent loader.
|
|
7
|
+
Provides backward compatibility while enabling advanced features.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
import logging
|
|
11
|
+
from typing import Optional, Dict, Any
|
|
12
|
+
|
|
13
|
+
from .agent_loader import (
|
|
14
|
+
load_agent_prompt_from_md,
|
|
15
|
+
get_agent_prompt,
|
|
16
|
+
AGENT_MAPPINGS,
|
|
17
|
+
FRAMEWORK_AGENT_ROLES_DIR
|
|
18
|
+
)
|
|
19
|
+
from ..services.agent_management_service import AgentManager
|
|
20
|
+
from ..models.agent_definition import AgentDefinition
|
|
21
|
+
|
|
22
|
+
logger = logging.getLogger(__name__)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class EnhancedAgentLoader:
|
|
26
|
+
"""Enhanced agent loader with management capabilities."""
|
|
27
|
+
|
|
28
|
+
def __init__(self):
|
|
29
|
+
"""Initialize enhanced loader."""
|
|
30
|
+
self.manager = AgentManager()
|
|
31
|
+
|
|
32
|
+
def get_agent_definition(self, agent_name: str) -> Optional[AgentDefinition]:
|
|
33
|
+
"""
|
|
34
|
+
Get full agent definition with structured data.
|
|
35
|
+
|
|
36
|
+
Args:
|
|
37
|
+
agent_name: Agent name (e.g., 'documentation', 'ticketing')
|
|
38
|
+
|
|
39
|
+
Returns:
|
|
40
|
+
AgentDefinition or None
|
|
41
|
+
"""
|
|
42
|
+
# Map from old naming to new naming if needed
|
|
43
|
+
md_filename = AGENT_MAPPINGS.get(agent_name, f"{agent_name}.md")
|
|
44
|
+
agent_file_name = md_filename.replace('.md', '')
|
|
45
|
+
|
|
46
|
+
return self.manager.read_agent(agent_file_name)
|
|
47
|
+
|
|
48
|
+
def get_agent_metadata(self, agent_name: str) -> Optional[Dict[str, Any]]:
|
|
49
|
+
"""
|
|
50
|
+
Get agent metadata only.
|
|
51
|
+
|
|
52
|
+
Args:
|
|
53
|
+
agent_name: Agent name
|
|
54
|
+
|
|
55
|
+
Returns:
|
|
56
|
+
Metadata dict or None
|
|
57
|
+
"""
|
|
58
|
+
agent_def = self.get_agent_definition(agent_name)
|
|
59
|
+
if not agent_def:
|
|
60
|
+
return None
|
|
61
|
+
|
|
62
|
+
return {
|
|
63
|
+
"name": agent_def.name,
|
|
64
|
+
"title": agent_def.title,
|
|
65
|
+
"version": agent_def.metadata.version,
|
|
66
|
+
"type": agent_def.metadata.type.value,
|
|
67
|
+
"model_preference": agent_def.metadata.model_preference,
|
|
68
|
+
"specializations": agent_def.metadata.specializations,
|
|
69
|
+
"last_updated": agent_def.metadata.last_updated.isoformat()
|
|
70
|
+
if agent_def.metadata.last_updated else None
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
def get_agent_capabilities(self, agent_name: str) -> Optional[Dict[str, Any]]:
|
|
74
|
+
"""
|
|
75
|
+
Get agent capabilities and permissions.
|
|
76
|
+
|
|
77
|
+
Args:
|
|
78
|
+
agent_name: Agent name
|
|
79
|
+
|
|
80
|
+
Returns:
|
|
81
|
+
Capabilities dict or None
|
|
82
|
+
"""
|
|
83
|
+
agent_def = self.get_agent_definition(agent_name)
|
|
84
|
+
if not agent_def:
|
|
85
|
+
return None
|
|
86
|
+
|
|
87
|
+
return {
|
|
88
|
+
"capabilities": agent_def.capabilities,
|
|
89
|
+
"authority": {
|
|
90
|
+
"write_access": agent_def.authority.exclusive_write_access,
|
|
91
|
+
"forbidden": agent_def.authority.forbidden_operations,
|
|
92
|
+
"read_access": agent_def.authority.read_access
|
|
93
|
+
},
|
|
94
|
+
"workflows": [w.name for w in agent_def.workflows],
|
|
95
|
+
"tools_available": bool(agent_def.tools_commands)
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
def get_agent_selection_criteria(self, agent_name: str) -> Optional[Dict[str, Any]]:
|
|
99
|
+
"""
|
|
100
|
+
Get agent selection criteria for routing.
|
|
101
|
+
|
|
102
|
+
Args:
|
|
103
|
+
agent_name: Agent name
|
|
104
|
+
|
|
105
|
+
Returns:
|
|
106
|
+
Selection criteria dict or None
|
|
107
|
+
"""
|
|
108
|
+
agent_def = self.get_agent_definition(agent_name)
|
|
109
|
+
if not agent_def:
|
|
110
|
+
return None
|
|
111
|
+
|
|
112
|
+
return {
|
|
113
|
+
"when_to_select": agent_def.when_to_use.get("select", []),
|
|
114
|
+
"when_not_to_select": agent_def.when_to_use.get("do_not_select", []),
|
|
115
|
+
"specializations": agent_def.metadata.specializations,
|
|
116
|
+
"dependencies": agent_def.dependencies,
|
|
117
|
+
"escalation_triggers": agent_def.escalation_triggers
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
def update_agent_version(self, agent_name: str) -> bool:
|
|
121
|
+
"""
|
|
122
|
+
Increment agent version (serial).
|
|
123
|
+
|
|
124
|
+
Args:
|
|
125
|
+
agent_name: Agent name
|
|
126
|
+
|
|
127
|
+
Returns:
|
|
128
|
+
True if updated, False otherwise
|
|
129
|
+
"""
|
|
130
|
+
# Map name
|
|
131
|
+
md_filename = AGENT_MAPPINGS.get(agent_name, f"{agent_name}.md")
|
|
132
|
+
agent_file_name = md_filename.replace('.md', '')
|
|
133
|
+
|
|
134
|
+
result = self.manager.update_agent(agent_file_name, {}, increment_version=True)
|
|
135
|
+
return result is not None
|
|
136
|
+
|
|
137
|
+
def refresh_agent_prompt(self, agent_name: str) -> str:
|
|
138
|
+
"""
|
|
139
|
+
Force refresh agent prompt from file.
|
|
140
|
+
|
|
141
|
+
Args:
|
|
142
|
+
agent_name: Agent name
|
|
143
|
+
|
|
144
|
+
Returns:
|
|
145
|
+
Agent prompt with base instructions
|
|
146
|
+
"""
|
|
147
|
+
# Use existing loader for backward compatibility
|
|
148
|
+
return get_agent_prompt(agent_name, force_reload=True)
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
# Global instance for convenience
|
|
152
|
+
_enhanced_loader = None
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
def get_enhanced_loader() -> EnhancedAgentLoader:
|
|
156
|
+
"""Get global enhanced loader instance."""
|
|
157
|
+
global _enhanced_loader
|
|
158
|
+
if _enhanced_loader is None:
|
|
159
|
+
_enhanced_loader = EnhancedAgentLoader()
|
|
160
|
+
return _enhanced_loader
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
# Convenience functions
|
|
164
|
+
def get_agent_full_definition(agent_name: str) -> Optional[AgentDefinition]:
|
|
165
|
+
"""Get complete agent definition."""
|
|
166
|
+
return get_enhanced_loader().get_agent_definition(agent_name)
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
def get_agent_version(agent_name: str) -> Optional[str]:
|
|
170
|
+
"""Get agent version."""
|
|
171
|
+
metadata = get_enhanced_loader().get_agent_metadata(agent_name)
|
|
172
|
+
return metadata["version"] if metadata else None
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
def check_agent_capability(agent_name: str, capability_keyword: str) -> bool:
|
|
176
|
+
"""Check if agent has a specific capability."""
|
|
177
|
+
caps = get_enhanced_loader().get_agent_capabilities(agent_name)
|
|
178
|
+
if not caps:
|
|
179
|
+
return False
|
|
180
|
+
|
|
181
|
+
# Check in capabilities list
|
|
182
|
+
for cap in caps["capabilities"]:
|
|
183
|
+
if capability_keyword.lower() in cap.lower():
|
|
184
|
+
return True
|
|
185
|
+
return False
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
def should_select_agent(agent_name: str, task_description: str) -> Dict[str, Any]:
|
|
189
|
+
"""
|
|
190
|
+
Determine if an agent should be selected for a task.
|
|
191
|
+
|
|
192
|
+
Args:
|
|
193
|
+
agent_name: Agent name
|
|
194
|
+
task_description: Task description
|
|
195
|
+
|
|
196
|
+
Returns:
|
|
197
|
+
Dict with selection recommendation and reasons
|
|
198
|
+
"""
|
|
199
|
+
criteria = get_enhanced_loader().get_agent_selection_criteria(agent_name)
|
|
200
|
+
if not criteria:
|
|
201
|
+
return {"should_select": False, "reason": "Agent not found"}
|
|
202
|
+
|
|
203
|
+
task_lower = task_description.lower()
|
|
204
|
+
|
|
205
|
+
# Check positive matches
|
|
206
|
+
positive_matches = []
|
|
207
|
+
for criterion in criteria["when_to_select"]:
|
|
208
|
+
# Extract keywords from criterion
|
|
209
|
+
if "Keywords:" in criterion:
|
|
210
|
+
keywords = criterion.split("Keywords:")[1].strip()
|
|
211
|
+
for keyword in keywords.split(','):
|
|
212
|
+
keyword = keyword.strip().strip('"').strip("'")
|
|
213
|
+
if keyword.lower() in task_lower:
|
|
214
|
+
positive_matches.append(f"Keyword match: {keyword}")
|
|
215
|
+
elif any(word in task_lower for word in criterion.lower().split()):
|
|
216
|
+
positive_matches.append(f"Criterion match: {criterion[:50]}...")
|
|
217
|
+
|
|
218
|
+
# Check negative matches
|
|
219
|
+
negative_matches = []
|
|
220
|
+
for criterion in criteria["when_not_to_select"]:
|
|
221
|
+
if any(word in task_lower for word in criterion.lower().split()[:5]):
|
|
222
|
+
negative_matches.append(f"Exclusion: {criterion[:50]}...")
|
|
223
|
+
|
|
224
|
+
return {
|
|
225
|
+
"should_select": len(positive_matches) > 0 and len(negative_matches) == 0,
|
|
226
|
+
"positive_matches": positive_matches,
|
|
227
|
+
"negative_matches": negative_matches,
|
|
228
|
+
"specializations": criteria["specializations"]
|
|
229
|
+
}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Agent Metadata Definitions
|
|
4
|
+
=========================
|
|
5
|
+
|
|
6
|
+
Preserves AGENT_CONFIG metadata for all agents.
|
|
7
|
+
This metadata is used for agent registration, capability tracking, and performance targets.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
# Documentation Agent Metadata
|
|
11
|
+
DOCUMENTATION_CONFIG = {
|
|
12
|
+
"name": "documentation_agent",
|
|
13
|
+
"version": "1.0.0",
|
|
14
|
+
"type": "core_agent",
|
|
15
|
+
"capabilities": [
|
|
16
|
+
"documentation_analysis",
|
|
17
|
+
"changelog_generation",
|
|
18
|
+
"release_notes",
|
|
19
|
+
"api_documentation",
|
|
20
|
+
"version_documentation",
|
|
21
|
+
"operational_docs",
|
|
22
|
+
"quality_assurance"
|
|
23
|
+
],
|
|
24
|
+
"primary_interface": "documentation_management",
|
|
25
|
+
"performance_targets": {
|
|
26
|
+
"changelog_generation": "5m",
|
|
27
|
+
"documentation_update": "24h",
|
|
28
|
+
"coverage_target": "90%"
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
# Version Control Agent Metadata
|
|
34
|
+
VERSION_CONTROL_CONFIG = {
|
|
35
|
+
"name": "version_control_agent",
|
|
36
|
+
"version": "2.0.0",
|
|
37
|
+
"type": "core_agent",
|
|
38
|
+
"capabilities": [
|
|
39
|
+
"git_operations",
|
|
40
|
+
"branch_management",
|
|
41
|
+
"merge_conflict_resolution",
|
|
42
|
+
"semantic_versioning",
|
|
43
|
+
"tag_management",
|
|
44
|
+
"release_coordination",
|
|
45
|
+
"version_file_updates"
|
|
46
|
+
],
|
|
47
|
+
"primary_interface": "git_cli",
|
|
48
|
+
"performance_targets": {
|
|
49
|
+
"branch_creation": "5s",
|
|
50
|
+
"merge_operation": "30s",
|
|
51
|
+
"version_bump": "10s",
|
|
52
|
+
"conflict_resolution": "5m"
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
# QA Agent Metadata
|
|
57
|
+
QA_CONFIG = {
|
|
58
|
+
"name": "qa_agent",
|
|
59
|
+
"version": "1.0.0",
|
|
60
|
+
"type": "core_agent",
|
|
61
|
+
"capabilities": [
|
|
62
|
+
"test_execution",
|
|
63
|
+
"quality_validation",
|
|
64
|
+
"coverage_analysis",
|
|
65
|
+
"performance_testing",
|
|
66
|
+
"security_testing",
|
|
67
|
+
"regression_testing",
|
|
68
|
+
"test_automation"
|
|
69
|
+
],
|
|
70
|
+
"primary_interface": "testing_framework",
|
|
71
|
+
"performance_targets": {
|
|
72
|
+
"unit_test_suite": "5m",
|
|
73
|
+
"integration_tests": "15m",
|
|
74
|
+
"full_test_suite": "30m",
|
|
75
|
+
"coverage_target": "80%"
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
# Research Agent Metadata
|
|
80
|
+
RESEARCH_CONFIG = {
|
|
81
|
+
"name": "research_agent",
|
|
82
|
+
"version": "1.0.0",
|
|
83
|
+
"type": "core_agent",
|
|
84
|
+
"capabilities": [
|
|
85
|
+
"technology_research",
|
|
86
|
+
"library_analysis",
|
|
87
|
+
"best_practices_research",
|
|
88
|
+
"performance_analysis",
|
|
89
|
+
"security_research",
|
|
90
|
+
"market_analysis",
|
|
91
|
+
"feasibility_studies"
|
|
92
|
+
],
|
|
93
|
+
"primary_interface": "research_tools",
|
|
94
|
+
"performance_targets": {
|
|
95
|
+
"quick_research": "15m",
|
|
96
|
+
"deep_analysis": "2h",
|
|
97
|
+
"comprehensive_report": "24h"
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
# Ops Agent Metadata
|
|
102
|
+
OPS_CONFIG = {
|
|
103
|
+
"name": "ops_agent",
|
|
104
|
+
"version": "1.0.0",
|
|
105
|
+
"type": "core_agent",
|
|
106
|
+
"capabilities": [
|
|
107
|
+
"deployment_automation",
|
|
108
|
+
"infrastructure_management",
|
|
109
|
+
"monitoring_setup",
|
|
110
|
+
"ci_cd_pipeline",
|
|
111
|
+
"containerization",
|
|
112
|
+
"cloud_services",
|
|
113
|
+
"performance_optimization"
|
|
114
|
+
],
|
|
115
|
+
"primary_interface": "deployment_tools",
|
|
116
|
+
"performance_targets": {
|
|
117
|
+
"deployment": "10m",
|
|
118
|
+
"rollback": "5m",
|
|
119
|
+
"infrastructure_update": "30m",
|
|
120
|
+
"monitoring_setup": "1h"
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
# Security Agent Metadata
|
|
125
|
+
SECURITY_CONFIG = {
|
|
126
|
+
"name": "security_agent",
|
|
127
|
+
"version": "1.0.0",
|
|
128
|
+
"type": "core_agent",
|
|
129
|
+
"capabilities": [
|
|
130
|
+
"vulnerability_assessment",
|
|
131
|
+
"security_audit",
|
|
132
|
+
"penetration_testing",
|
|
133
|
+
"code_security_review",
|
|
134
|
+
"dependency_scanning",
|
|
135
|
+
"security_patching",
|
|
136
|
+
"compliance_checking"
|
|
137
|
+
],
|
|
138
|
+
"primary_interface": "security_tools",
|
|
139
|
+
"performance_targets": {
|
|
140
|
+
"quick_scan": "10m",
|
|
141
|
+
"full_audit": "2h",
|
|
142
|
+
"penetration_test": "4h",
|
|
143
|
+
"dependency_scan": "30m"
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
# Engineer Agent Metadata
|
|
148
|
+
ENGINEER_CONFIG = {
|
|
149
|
+
"name": "engineer_agent",
|
|
150
|
+
"version": "1.0.0",
|
|
151
|
+
"type": "core_agent",
|
|
152
|
+
"capabilities": [
|
|
153
|
+
"code_implementation",
|
|
154
|
+
"feature_development",
|
|
155
|
+
"bug_fixing",
|
|
156
|
+
"code_refactoring",
|
|
157
|
+
"performance_optimization",
|
|
158
|
+
"api_development",
|
|
159
|
+
"database_design"
|
|
160
|
+
],
|
|
161
|
+
"primary_interface": "development_tools",
|
|
162
|
+
"performance_targets": {
|
|
163
|
+
"feature_implementation": "4h",
|
|
164
|
+
"bug_fix": "1h",
|
|
165
|
+
"code_review": "30m",
|
|
166
|
+
"refactoring": "2h"
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
# Data Engineer Agent Metadata
|
|
171
|
+
DATA_ENGINEER_CONFIG = {
|
|
172
|
+
"name": "data_engineer_agent",
|
|
173
|
+
"version": "1.0.0",
|
|
174
|
+
"type": "core_agent",
|
|
175
|
+
"capabilities": [
|
|
176
|
+
"data_store_management",
|
|
177
|
+
"ai_api_integration",
|
|
178
|
+
"data_pipeline_design",
|
|
179
|
+
"database_optimization",
|
|
180
|
+
"data_migration",
|
|
181
|
+
"api_key_management",
|
|
182
|
+
"data_analytics",
|
|
183
|
+
"schema_design"
|
|
184
|
+
],
|
|
185
|
+
"primary_interface": "data_management_tools",
|
|
186
|
+
"performance_targets": {
|
|
187
|
+
"pipeline_setup": "2h",
|
|
188
|
+
"data_migration": "4h",
|
|
189
|
+
"api_integration": "1h",
|
|
190
|
+
"schema_update": "30m"
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
# Aggregate all configs for easy access
|
|
195
|
+
ALL_AGENT_CONFIGS = {
|
|
196
|
+
"documentation": DOCUMENTATION_CONFIG,
|
|
197
|
+
"version_control": VERSION_CONTROL_CONFIG,
|
|
198
|
+
"qa": QA_CONFIG,
|
|
199
|
+
"research": RESEARCH_CONFIG,
|
|
200
|
+
"ops": OPS_CONFIG,
|
|
201
|
+
"security": SECURITY_CONFIG,
|
|
202
|
+
"engineer": ENGINEER_CONFIG,
|
|
203
|
+
"data_engineer": DATA_ENGINEER_CONFIG
|
|
204
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 2,
|
|
3
|
+
"agent_type": "base",
|
|
4
|
+
"narrative_fields": {
|
|
5
|
+
"instructions": "# Claude MPM Framework Agent\n\nYou are a specialized agent in the Claude MPM framework. Work collaboratively through PM orchestration to accomplish project objectives.\n\n## Core Principles\n- **Specialization Focus**: Execute only tasks within your domain expertise\n- **Quality First**: Meet acceptance criteria before reporting completion\n- **Clear Communication**: Report progress, blockers, and requirements explicitly\n- **Escalation Protocol**: Route security concerns to Security Agent; escalate authority exceeded\n\n## Task Execution Protocol\n1. **Acknowledge**: Confirm understanding of task, context, and acceptance criteria\n2. **Research Check**: If implementation details unclear, request PM delegate research first\n3. **Execute**: Perform work within specialization, maintaining audit trails\n4. **Validate**: Verify outputs meet acceptance criteria and quality standards\n5. **Report**: Provide structured completion report with deliverables and next steps\n\n## Framework Integration\n- **Hierarchy**: Operate within Project → User → System agent discovery\n- **Communication**: Use Task Tool subprocess for PM coordination\n- **Context Awareness**: Acknowledge current date/time in decisions\n- **Handoffs**: Follow structured protocols for inter-agent coordination\n- **Error Handling**: Implement graceful failure with clear error reporting\n\n## Quality Standards\n- Idempotent operations where possible\n- Comprehensive error handling and validation\n- Structured output formats for integration\n- Security-first approach for sensitive operations\n- Performance-conscious implementation choices"
|
|
6
|
+
},
|
|
7
|
+
"configuration_fields": {
|
|
8
|
+
"model": "claude-4-sonnet-20250514",
|
|
9
|
+
"file_access": "project",
|
|
10
|
+
"dangerous_tools": false,
|
|
11
|
+
"review_required": false,
|
|
12
|
+
"team": "mpm-framework",
|
|
13
|
+
"project": "claude-mpm",
|
|
14
|
+
"priority": "high",
|
|
15
|
+
"timeout": 300,
|
|
16
|
+
"memory_limit": 1024,
|
|
17
|
+
"context_isolation": "moderate",
|
|
18
|
+
"preserve_context": true
|
|
19
|
+
},
|
|
20
|
+
"metadata": {
|
|
21
|
+
"created": "2025-07-25",
|
|
22
|
+
"last_updated": "2025-07-25",
|
|
23
|
+
"optimization_level": "v2_claude4",
|
|
24
|
+
"token_efficiency": "optimized",
|
|
25
|
+
"compatibility": ["claude-4-sonnet", "claude-4-opus"]
|
|
26
|
+
}
|
|
27
|
+
}
|