claude-mpm 3.0.1__py3-none-any.whl → 3.1.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- claude_mpm/__init__.py +10 -1
- claude_mpm/agents/agent_loader.py +2 -1
- claude_mpm/cli.py +12 -2
- claude_mpm/core/simple_runner.py +40 -2
- claude_mpm/schemas/agent_schema.json +71 -83
- claude_mpm/schemas/agent_schema_documentation.md +181 -0
- claude_mpm/schemas/examples/standard_workflow.json +505 -0
- claude_mpm/schemas/ticket_workflow_documentation.md +482 -0
- claude_mpm/schemas/ticket_workflow_schema.json +590 -0
- claude_mpm/schemas/workflow_validator.py +411 -0
- {claude_mpm-3.0.1.dist-info → claude_mpm-3.1.1.dist-info}/METADATA +3 -1
- {claude_mpm-3.0.1.dist-info → claude_mpm-3.1.1.dist-info}/RECORD +16 -12
- claude_mpm/_version.py +0 -4
- {claude_mpm-3.0.1.dist-info → claude_mpm-3.1.1.dist-info}/WHEEL +0 -0
- {claude_mpm-3.0.1.dist-info → claude_mpm-3.1.1.dist-info}/entry_points.txt +0 -0
- {claude_mpm-3.0.1.dist-info → claude_mpm-3.1.1.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-3.0.1.dist-info → claude_mpm-3.1.1.dist-info}/top_level.txt +0 -0
claude_mpm/__init__.py
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
"""Claude MPM - Multi-Agent Project Manager."""
|
|
2
2
|
|
|
3
|
-
from
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
|
|
5
|
+
# Get version from VERSION file - single source of truth
|
|
6
|
+
version_file = Path(__file__).parent.parent.parent / "VERSION"
|
|
7
|
+
if version_file.exists():
|
|
8
|
+
__version__ = version_file.read_text().strip()
|
|
9
|
+
else:
|
|
10
|
+
# Default version if VERSION file is missing
|
|
11
|
+
__version__ = "0.0.0"
|
|
12
|
+
|
|
4
13
|
__author__ = "Claude MPM Team"
|
|
5
14
|
|
|
6
15
|
# Import main components
|
|
@@ -58,6 +58,7 @@ Usage Examples:
|
|
|
58
58
|
import json
|
|
59
59
|
import logging
|
|
60
60
|
import os
|
|
61
|
+
import time
|
|
61
62
|
import yaml
|
|
62
63
|
from pathlib import Path
|
|
63
64
|
from typing import Optional, Dict, Any, Tuple, Union, List
|
|
@@ -625,7 +626,7 @@ def _get_model_config(agent_name: str, complexity_analysis: Optional[Dict[str, A
|
|
|
625
626
|
model_config = {
|
|
626
627
|
"selection_method": "dynamic_complexity_based",
|
|
627
628
|
"complexity_score": complexity_score,
|
|
628
|
-
"complexity_level": complexity_analysis.get('complexity_level', ComplexityLevel.MEDIUM)
|
|
629
|
+
"complexity_level": complexity_analysis.get('complexity_level', ComplexityLevel.MEDIUM),
|
|
629
630
|
"optimal_prompt_size": complexity_analysis.get('optimal_prompt_size', (700, 1000)),
|
|
630
631
|
"default_model": default_model
|
|
631
632
|
}
|
claude_mpm/cli.py
CHANGED
|
@@ -8,15 +8,25 @@ from typing import Optional
|
|
|
8
8
|
|
|
9
9
|
try:
|
|
10
10
|
# Try relative imports first (when used as package)
|
|
11
|
-
from ._version import __version__
|
|
12
11
|
from .core.logger import get_logger, setup_logging
|
|
13
12
|
from .constants import CLICommands, CLIPrefix, AgentCommands, LogLevel, CLIFlags
|
|
14
13
|
except ImportError:
|
|
15
14
|
# Fall back to absolute imports (when run directly)
|
|
16
|
-
from claude_mpm._version import __version__
|
|
17
15
|
from core.logger import get_logger, setup_logging
|
|
18
16
|
from constants import CLICommands, CLIPrefix, AgentCommands, LogLevel, CLIFlags
|
|
19
17
|
|
|
18
|
+
# Get version from VERSION file - single source of truth
|
|
19
|
+
version_file = Path(__file__).parent.parent.parent / "VERSION"
|
|
20
|
+
if version_file.exists():
|
|
21
|
+
__version__ = version_file.read_text().strip()
|
|
22
|
+
else:
|
|
23
|
+
# Try to import from package as fallback
|
|
24
|
+
try:
|
|
25
|
+
from . import __version__
|
|
26
|
+
except ImportError:
|
|
27
|
+
# Default version if all else fails
|
|
28
|
+
__version__ = "0.0.0"
|
|
29
|
+
|
|
20
30
|
|
|
21
31
|
|
|
22
32
|
def _preprocess_args(argv: Optional[list] = None) -> list:
|
claude_mpm/core/simple_runner.py
CHANGED
|
@@ -194,6 +194,18 @@ class SimpleClaudeRunner:
|
|
|
194
194
|
for var in claude_vars_to_remove:
|
|
195
195
|
clean_env.pop(var, None)
|
|
196
196
|
|
|
197
|
+
# Set the correct working directory for Claude Code
|
|
198
|
+
# If CLAUDE_MPM_USER_PWD is set, use that as the working directory
|
|
199
|
+
if 'CLAUDE_MPM_USER_PWD' in clean_env:
|
|
200
|
+
user_pwd = clean_env['CLAUDE_MPM_USER_PWD']
|
|
201
|
+
clean_env['CLAUDE_WORKSPACE'] = user_pwd
|
|
202
|
+
# Also change to that directory before launching Claude
|
|
203
|
+
try:
|
|
204
|
+
os.chdir(user_pwd)
|
|
205
|
+
self.logger.info(f"Changed working directory to: {user_pwd}")
|
|
206
|
+
except Exception as e:
|
|
207
|
+
self.logger.warning(f"Could not change to user directory {user_pwd}: {e}")
|
|
208
|
+
|
|
197
209
|
print("Launching Claude...")
|
|
198
210
|
|
|
199
211
|
if self.project_logger:
|
|
@@ -225,7 +237,8 @@ class SimpleClaudeRunner:
|
|
|
225
237
|
})
|
|
226
238
|
# Fallback to subprocess
|
|
227
239
|
try:
|
|
228
|
-
|
|
240
|
+
# Use the same clean_env we prepared earlier
|
|
241
|
+
subprocess.run(cmd, stdin=None, stdout=None, stderr=None, env=clean_env)
|
|
229
242
|
if self.project_logger:
|
|
230
243
|
self.project_logger.log_system(
|
|
231
244
|
"Interactive session completed (subprocess fallback)",
|
|
@@ -296,6 +309,24 @@ class SimpleClaudeRunner:
|
|
|
296
309
|
cmd.insert(-2, system_prompt)
|
|
297
310
|
|
|
298
311
|
try:
|
|
312
|
+
# Set up environment with correct working directory
|
|
313
|
+
env = os.environ.copy()
|
|
314
|
+
|
|
315
|
+
# Set the correct working directory for Claude Code
|
|
316
|
+
if 'CLAUDE_MPM_USER_PWD' in env:
|
|
317
|
+
user_pwd = env['CLAUDE_MPM_USER_PWD']
|
|
318
|
+
env['CLAUDE_WORKSPACE'] = user_pwd
|
|
319
|
+
# Change to that directory before running Claude
|
|
320
|
+
try:
|
|
321
|
+
original_cwd = os.getcwd()
|
|
322
|
+
os.chdir(user_pwd)
|
|
323
|
+
self.logger.info(f"Changed working directory to: {user_pwd}")
|
|
324
|
+
except Exception as e:
|
|
325
|
+
self.logger.warning(f"Could not change to user directory {user_pwd}: {e}")
|
|
326
|
+
original_cwd = None
|
|
327
|
+
else:
|
|
328
|
+
original_cwd = None
|
|
329
|
+
|
|
299
330
|
# Run Claude
|
|
300
331
|
if self.project_logger:
|
|
301
332
|
self.project_logger.log_system(
|
|
@@ -304,7 +335,14 @@ class SimpleClaudeRunner:
|
|
|
304
335
|
component="session"
|
|
305
336
|
)
|
|
306
337
|
|
|
307
|
-
result = subprocess.run(cmd, capture_output=True, text=True)
|
|
338
|
+
result = subprocess.run(cmd, capture_output=True, text=True, env=env)
|
|
339
|
+
|
|
340
|
+
# Restore original directory if we changed it
|
|
341
|
+
if original_cwd:
|
|
342
|
+
try:
|
|
343
|
+
os.chdir(original_cwd)
|
|
344
|
+
except Exception:
|
|
345
|
+
pass
|
|
308
346
|
execution_time = time.time() - start_time
|
|
309
347
|
|
|
310
348
|
if result.returncode == 0:
|
|
@@ -5,30 +5,30 @@
|
|
|
5
5
|
"description": "Schema definition for Claude MPM agent templates. This schema enforces the structure and validation rules for all agent configurations in the Claude MPM system.",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"required": [
|
|
8
|
-
"schema_version",
|
|
9
|
-
"agent_id",
|
|
10
|
-
"agent_version",
|
|
11
|
-
"agent_type",
|
|
12
|
-
"metadata",
|
|
13
|
-
"capabilities",
|
|
14
|
-
"instructions"
|
|
8
|
+
"schema_version",
|
|
9
|
+
"agent_id",
|
|
10
|
+
"agent_version",
|
|
11
|
+
"agent_type",
|
|
12
|
+
"metadata",
|
|
13
|
+
"capabilities",
|
|
14
|
+
"instructions"
|
|
15
15
|
],
|
|
16
16
|
"properties": {
|
|
17
17
|
"schema_version": {
|
|
18
18
|
"type": "string",
|
|
19
|
-
"pattern": "^\\d+\\.\\d+\\.\\d+$",
|
|
19
|
+
"pattern": "^\\d+\\.\\d+\\.\\d+$",
|
|
20
20
|
"description": "Schema version for the agent template format. This ensures compatibility between the agent template and the schema validator. Must be updated when breaking changes are made to the schema.",
|
|
21
21
|
"examples": ["1.0.0", "1.2.0"]
|
|
22
22
|
},
|
|
23
23
|
"agent_id": {
|
|
24
24
|
"type": "string",
|
|
25
|
-
"pattern": "^[a-z][a-z0-9_]*$",
|
|
25
|
+
"pattern": "^[a-z][a-z0-9_]*$",
|
|
26
26
|
"description": "Unique agent identifier used for agent discovery and loading. This ID must be unique across all agents in the system and follows snake_case naming convention.",
|
|
27
27
|
"examples": ["research_agent", "engineer_agent", "qa_agent", "security_agent"]
|
|
28
28
|
},
|
|
29
29
|
"agent_version": {
|
|
30
30
|
"type": "string",
|
|
31
|
-
"pattern": "^\\d+\\.\\d+\\.\\d+$",
|
|
31
|
+
"pattern": "^\\d+\\.\\d+\\.\\d+$",
|
|
32
32
|
"description": "Semantic version of the agent template itself (not the schema). Increment major for breaking changes, minor for new features, patch for bug fixes.",
|
|
33
33
|
"examples": ["1.0.0", "2.1.3"]
|
|
34
34
|
},
|
|
@@ -36,35 +36,35 @@
|
|
|
36
36
|
"type": "string",
|
|
37
37
|
"description": "Type of agent that determines its primary function and default capabilities. This categorization helps in agent discovery and capability matching.",
|
|
38
38
|
"enum": [
|
|
39
|
-
"base",
|
|
40
|
-
"engineer",
|
|
41
|
-
"qa",
|
|
42
|
-
"documentation",
|
|
43
|
-
"research",
|
|
44
|
-
"security",
|
|
45
|
-
"ops",
|
|
46
|
-
"data_engineer",
|
|
47
|
-
"version_control"
|
|
39
|
+
"base",
|
|
40
|
+
"engineer",
|
|
41
|
+
"qa",
|
|
42
|
+
"documentation",
|
|
43
|
+
"research",
|
|
44
|
+
"security",
|
|
45
|
+
"ops",
|
|
46
|
+
"data_engineer",
|
|
47
|
+
"version_control"
|
|
48
48
|
]
|
|
49
49
|
},
|
|
50
50
|
"metadata": {
|
|
51
51
|
"type": "object",
|
|
52
52
|
"required": [
|
|
53
|
-
"name",
|
|
54
|
-
"description",
|
|
55
|
-
"tags"
|
|
53
|
+
"name",
|
|
54
|
+
"description",
|
|
55
|
+
"tags"
|
|
56
56
|
],
|
|
57
57
|
"properties": {
|
|
58
58
|
"name": {
|
|
59
59
|
"type": "string",
|
|
60
|
-
"minLength": 3,
|
|
61
|
-
"maxLength": 50,
|
|
60
|
+
"minLength": 3,
|
|
61
|
+
"maxLength": 50,
|
|
62
62
|
"description": "Human-readable agent name displayed in UI and logs. Should be concise but descriptive."
|
|
63
63
|
},
|
|
64
64
|
"description": {
|
|
65
65
|
"type": "string",
|
|
66
|
-
"minLength": 10,
|
|
67
|
-
"maxLength": 200,
|
|
66
|
+
"minLength": 10,
|
|
67
|
+
"maxLength": 200,
|
|
68
68
|
"description": "Brief description of agent purpose and capabilities. Used in agent selection and documentation."
|
|
69
69
|
},
|
|
70
70
|
"category": {
|
|
@@ -76,11 +76,11 @@
|
|
|
76
76
|
"type": "array",
|
|
77
77
|
"items": {
|
|
78
78
|
"type": "string",
|
|
79
|
-
"pattern": "^[a-z][a-z0-9-]*$"
|
|
79
|
+
"pattern": "^[a-z][a-z0-9-]*$"
|
|
80
80
|
},
|
|
81
|
-
"minItems": 1,
|
|
82
|
-
"maxItems": 10,
|
|
83
|
-
"uniqueItems": true,
|
|
81
|
+
"minItems": 1,
|
|
82
|
+
"maxItems": 10,
|
|
83
|
+
"uniqueItems": true,
|
|
84
84
|
"description": "Tags for agent discovery and categorization. Used by the agent registry for searching and filtering."
|
|
85
85
|
},
|
|
86
86
|
"author": {
|
|
@@ -102,24 +102,21 @@
|
|
|
102
102
|
"capabilities": {
|
|
103
103
|
"type": "object",
|
|
104
104
|
"required": [
|
|
105
|
-
"model",
|
|
106
|
-
"tools",
|
|
107
|
-
"resource_tier"
|
|
105
|
+
"model",
|
|
106
|
+
"tools",
|
|
107
|
+
"resource_tier"
|
|
108
108
|
],
|
|
109
109
|
"properties": {
|
|
110
110
|
"model": {
|
|
111
111
|
"type": "string",
|
|
112
112
|
"enum": [
|
|
113
|
-
// Haiku models - fastest, most cost-effective
|
|
114
113
|
"claude-3-haiku-20240307",
|
|
115
114
|
"claude-3-5-haiku-20241022",
|
|
116
|
-
// Sonnet models - balanced performance
|
|
117
115
|
"claude-3-sonnet-20240229",
|
|
118
116
|
"claude-3-5-sonnet-20241022",
|
|
119
117
|
"claude-3-5-sonnet-20240620",
|
|
120
118
|
"claude-sonnet-4-20250514",
|
|
121
119
|
"claude-4-sonnet-20250514",
|
|
122
|
-
// Opus models - highest capability
|
|
123
120
|
"claude-3-opus-20240229",
|
|
124
121
|
"claude-opus-4-20250514",
|
|
125
122
|
"claude-4-opus-20250514"
|
|
@@ -131,68 +128,61 @@
|
|
|
131
128
|
"items": {
|
|
132
129
|
"type": "string",
|
|
133
130
|
"enum": [
|
|
134
|
-
|
|
135
|
-
"
|
|
136
|
-
"
|
|
137
|
-
"
|
|
138
|
-
"
|
|
139
|
-
|
|
140
|
-
"
|
|
141
|
-
"
|
|
142
|
-
"
|
|
143
|
-
|
|
144
|
-
"
|
|
145
|
-
|
|
146
|
-
"
|
|
147
|
-
"
|
|
148
|
-
|
|
149
|
-
"
|
|
150
|
-
"
|
|
151
|
-
|
|
152
|
-
"
|
|
153
|
-
"
|
|
154
|
-
|
|
155
|
-
"git", // Git operations
|
|
156
|
-
"docker", // Docker commands
|
|
157
|
-
"kubectl", // Kubernetes operations
|
|
158
|
-
"terraform", // Infrastructure as code
|
|
159
|
-
"aws", // AWS CLI
|
|
160
|
-
"gcloud", // Google Cloud CLI
|
|
161
|
-
"azure" // Azure CLI
|
|
131
|
+
"Read",
|
|
132
|
+
"Write",
|
|
133
|
+
"Edit",
|
|
134
|
+
"MultiEdit",
|
|
135
|
+
"Grep",
|
|
136
|
+
"Glob",
|
|
137
|
+
"LS",
|
|
138
|
+
"Bash",
|
|
139
|
+
"WebSearch",
|
|
140
|
+
"WebFetch",
|
|
141
|
+
"NotebookRead",
|
|
142
|
+
"NotebookEdit",
|
|
143
|
+
"TodoWrite",
|
|
144
|
+
"ExitPlanMode",
|
|
145
|
+
"git",
|
|
146
|
+
"docker",
|
|
147
|
+
"kubectl",
|
|
148
|
+
"terraform",
|
|
149
|
+
"aws",
|
|
150
|
+
"gcloud",
|
|
151
|
+
"azure"
|
|
162
152
|
]
|
|
163
153
|
},
|
|
164
|
-
"uniqueItems": true,
|
|
154
|
+
"uniqueItems": true,
|
|
165
155
|
"description": "Available tools for the agent. Tools determine what operations the agent can perform."
|
|
166
156
|
},
|
|
167
157
|
"resource_tier": {
|
|
168
158
|
"type": "string",
|
|
169
159
|
"enum": [
|
|
170
|
-
"basic",
|
|
171
|
-
"standard",
|
|
172
|
-
"intensive",
|
|
173
|
-
"lightweight"
|
|
160
|
+
"basic",
|
|
161
|
+
"standard",
|
|
162
|
+
"intensive",
|
|
163
|
+
"lightweight"
|
|
174
164
|
],
|
|
175
165
|
"description": "Resource allocation tier that determines memory, CPU, and timeout limits. See definitions section for specific limits."
|
|
176
166
|
},
|
|
177
167
|
"max_tokens": {
|
|
178
168
|
"type": "integer",
|
|
179
|
-
"minimum": 1000,
|
|
180
|
-
"maximum": 200000,
|
|
181
|
-
"default": 8192,
|
|
169
|
+
"minimum": 1000,
|
|
170
|
+
"maximum": 200000,
|
|
171
|
+
"default": 8192,
|
|
182
172
|
"description": "Maximum tokens for response generation. Higher values allow longer responses but increase cost and latency."
|
|
183
173
|
},
|
|
184
174
|
"temperature": {
|
|
185
175
|
"type": "number",
|
|
186
|
-
"minimum": 0,
|
|
187
|
-
"maximum": 1,
|
|
188
|
-
"default": 0.7,
|
|
176
|
+
"minimum": 0,
|
|
177
|
+
"maximum": 1,
|
|
178
|
+
"default": 0.7,
|
|
189
179
|
"description": "Model temperature setting controlling response randomness. Lower values for consistency, higher for creativity."
|
|
190
180
|
},
|
|
191
181
|
"timeout": {
|
|
192
182
|
"type": "integer",
|
|
193
|
-
"minimum": 30,
|
|
194
|
-
"maximum": 3600,
|
|
195
|
-
"default": 300,
|
|
183
|
+
"minimum": 30,
|
|
184
|
+
"maximum": 3600,
|
|
185
|
+
"default": 300,
|
|
196
186
|
"description": "Operation timeout in seconds. Should align with resource_tier settings."
|
|
197
187
|
},
|
|
198
188
|
"memory_limit": {
|
|
@@ -241,8 +231,8 @@
|
|
|
241
231
|
},
|
|
242
232
|
"instructions": {
|
|
243
233
|
"type": "string",
|
|
244
|
-
"minLength": 100,
|
|
245
|
-
"maxLength": 8000,
|
|
234
|
+
"minLength": 100,
|
|
235
|
+
"maxLength": 8000,
|
|
246
236
|
"description": "Agent system instructions that define behavior, approach, and constraints. This becomes the agent's system prompt."
|
|
247
237
|
},
|
|
248
238
|
"knowledge": {
|
|
@@ -382,10 +372,8 @@
|
|
|
382
372
|
}
|
|
383
373
|
}
|
|
384
374
|
},
|
|
385
|
-
"additionalProperties": false,
|
|
375
|
+
"additionalProperties": false,
|
|
386
376
|
"definitions": {
|
|
387
|
-
// Resource tier definitions provide guidance for resource allocation
|
|
388
|
-
// These are not enforced by the schema but used by the runtime
|
|
389
377
|
"resource_tier_limits": {
|
|
390
378
|
"intensive": {
|
|
391
379
|
"memory_limit": {"min": 4096, "max": 8192},
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
# Agent Schema Documentation
|
|
2
|
+
|
|
3
|
+
This document preserves the inline documentation from the agent_schema.json file. The JSON Schema itself must remain comment-free for proper parsing.
|
|
4
|
+
|
|
5
|
+
## Schema Version 1.2.0
|
|
6
|
+
|
|
7
|
+
### Required Fields
|
|
8
|
+
|
|
9
|
+
- **schema_version**: Must match the schema version this agent was built for
|
|
10
|
+
- **agent_id**: Unique identifier for the agent type
|
|
11
|
+
- **agent_version**: Semantic version of this specific agent template
|
|
12
|
+
- **agent_type**: Categorizes the agent's primary function
|
|
13
|
+
- **metadata**: Human-readable information about the agent
|
|
14
|
+
- **capabilities**: Technical specifications and resource requirements
|
|
15
|
+
- **instructions**: System prompt that defines agent behavior
|
|
16
|
+
|
|
17
|
+
### Field Descriptions
|
|
18
|
+
|
|
19
|
+
#### schema_version
|
|
20
|
+
- **Pattern**: `^\d+\.\d+\.\d+$` (Enforces semantic versioning format X.Y.Z)
|
|
21
|
+
- **Description**: Schema version for the agent template format. This ensures compatibility between the agent template and the schema validator. Must be updated when breaking changes are made to the schema.
|
|
22
|
+
- **Examples**: "1.0.0", "1.2.0"
|
|
23
|
+
|
|
24
|
+
#### agent_id
|
|
25
|
+
- **Pattern**: `^[a-z][a-z0-9_]*$` (Must start with lowercase letter, followed by lowercase letters, numbers, or underscores)
|
|
26
|
+
- **Description**: Unique agent identifier used for agent discovery and loading. This ID must be unique across all agents in the system and follows snake_case naming convention.
|
|
27
|
+
- **Examples**: "research_agent", "engineer_agent", "qa_agent", "security_agent"
|
|
28
|
+
|
|
29
|
+
#### agent_version
|
|
30
|
+
- **Pattern**: `^\d+\.\d+\.\d+$` (Enforces semantic versioning for agent templates)
|
|
31
|
+
- **Description**: Semantic version of the agent template itself (not the schema). Increment major for breaking changes, minor for new features, patch for bug fixes.
|
|
32
|
+
- **Examples**: "1.0.0", "2.1.3"
|
|
33
|
+
|
|
34
|
+
#### agent_type
|
|
35
|
+
- **Description**: Type of agent that determines its primary function and default capabilities. This categorization helps in agent discovery and capability matching.
|
|
36
|
+
- **Enum values**:
|
|
37
|
+
- `base`: Generic agent with no specialization
|
|
38
|
+
- `engineer`: Code implementation and development
|
|
39
|
+
- `qa`: Quality assurance and testing
|
|
40
|
+
- `documentation`: Documentation creation and maintenance
|
|
41
|
+
- `research`: Code analysis and research
|
|
42
|
+
- `security`: Security analysis and vulnerability detection
|
|
43
|
+
- `ops`: Operations and infrastructure management
|
|
44
|
+
- `data_engineer`: Data pipeline and ETL development
|
|
45
|
+
- `version_control`: Git and version control operations
|
|
46
|
+
|
|
47
|
+
### Metadata Object
|
|
48
|
+
|
|
49
|
+
#### Required metadata fields:
|
|
50
|
+
- **name**: Human-readable name for UI display
|
|
51
|
+
- **description**: Brief explanation of agent's purpose
|
|
52
|
+
- **tags**: Searchable tags for agent discovery
|
|
53
|
+
|
|
54
|
+
#### Metadata field constraints:
|
|
55
|
+
- **name**:
|
|
56
|
+
- minLength: 3 (Minimum 3 characters for meaningful names)
|
|
57
|
+
- maxLength: 50 (Maximum 50 characters to prevent UI overflow)
|
|
58
|
+
- **description**:
|
|
59
|
+
- minLength: 10 (Minimum 10 characters to ensure meaningful descriptions)
|
|
60
|
+
- maxLength: 200 (Maximum 200 characters for conciseness)
|
|
61
|
+
- **tags**:
|
|
62
|
+
- Pattern: `^[a-z][a-z0-9-]*$` (Lowercase letters, numbers, and hyphens only)
|
|
63
|
+
- minItems: 1 (At least one tag required for discovery)
|
|
64
|
+
- maxItems: 10 (Maximum 10 tags to prevent over-tagging)
|
|
65
|
+
- uniqueItems: true (No duplicate tags allowed)
|
|
66
|
+
|
|
67
|
+
### Capabilities Object
|
|
68
|
+
|
|
69
|
+
#### Required capabilities fields:
|
|
70
|
+
- **model**: Claude model version to use
|
|
71
|
+
- **tools**: Array of allowed tools for the agent
|
|
72
|
+
- **resource_tier**: Resource allocation category
|
|
73
|
+
|
|
74
|
+
#### Model Options
|
|
75
|
+
Available Claude models grouped by performance tier:
|
|
76
|
+
|
|
77
|
+
**Haiku models** (fastest, most cost-effective):
|
|
78
|
+
- claude-3-haiku-20240307
|
|
79
|
+
- claude-3-5-haiku-20241022
|
|
80
|
+
|
|
81
|
+
**Sonnet models** (balanced performance):
|
|
82
|
+
- claude-3-sonnet-20240229
|
|
83
|
+
- claude-3-5-sonnet-20241022
|
|
84
|
+
- claude-3-5-sonnet-20240620
|
|
85
|
+
- claude-sonnet-4-20250514
|
|
86
|
+
- claude-4-sonnet-20250514
|
|
87
|
+
|
|
88
|
+
**Opus models** (highest capability):
|
|
89
|
+
- claude-3-opus-20240229
|
|
90
|
+
- claude-opus-4-20250514
|
|
91
|
+
- claude-4-opus-20250514
|
|
92
|
+
|
|
93
|
+
#### Available Tools
|
|
94
|
+
Tools are grouped by functionality:
|
|
95
|
+
|
|
96
|
+
**File operations**:
|
|
97
|
+
- `Read`: Read file contents
|
|
98
|
+
- `Write`: Write new files
|
|
99
|
+
- `Edit`: Edit existing files
|
|
100
|
+
- `MultiEdit`: Multiple edits in one operation
|
|
101
|
+
|
|
102
|
+
**Search and navigation**:
|
|
103
|
+
- `Grep`: Search file contents
|
|
104
|
+
- `Glob`: Find files by pattern
|
|
105
|
+
- `LS`: List directory contents
|
|
106
|
+
|
|
107
|
+
**System operations**:
|
|
108
|
+
- `Bash`: Execute shell commands
|
|
109
|
+
|
|
110
|
+
**Web operations**:
|
|
111
|
+
- `WebSearch`: Search the web
|
|
112
|
+
- `WebFetch`: Fetch web content
|
|
113
|
+
|
|
114
|
+
**Notebook operations**:
|
|
115
|
+
- `NotebookRead`: Read Jupyter notebooks
|
|
116
|
+
- `NotebookEdit`: Edit Jupyter notebooks
|
|
117
|
+
|
|
118
|
+
**Workflow operations**:
|
|
119
|
+
- `TodoWrite`: Manage task lists
|
|
120
|
+
- `ExitPlanMode`: Exit planning mode
|
|
121
|
+
|
|
122
|
+
**CLI tools** (future expansion):
|
|
123
|
+
- `git`: Git operations
|
|
124
|
+
- `docker`: Docker commands
|
|
125
|
+
- `kubectl`: Kubernetes operations
|
|
126
|
+
- `terraform`: Infrastructure as code
|
|
127
|
+
- `aws`: AWS CLI
|
|
128
|
+
- `gcloud`: Google Cloud CLI
|
|
129
|
+
- `azure`: Azure CLI
|
|
130
|
+
|
|
131
|
+
#### Resource Tiers
|
|
132
|
+
Resource allocation tiers determine memory, CPU, and timeout limits:
|
|
133
|
+
|
|
134
|
+
- **basic**: Default resources for simple tasks
|
|
135
|
+
- **standard**: Medium resources for typical operations
|
|
136
|
+
- **intensive**: High resources for complex tasks
|
|
137
|
+
- **lightweight**: Minimal resources for quick operations
|
|
138
|
+
|
|
139
|
+
#### Capability Constraints
|
|
140
|
+
|
|
141
|
+
**max_tokens**:
|
|
142
|
+
- minimum: 1000 (Minimum for meaningful responses)
|
|
143
|
+
- maximum: 200000 (Maximum supported by Claude models)
|
|
144
|
+
- default: 8192 (Default suitable for most tasks)
|
|
145
|
+
|
|
146
|
+
**temperature**:
|
|
147
|
+
- minimum: 0 (0 = deterministic, focused)
|
|
148
|
+
- maximum: 1 (1 = creative, varied)
|
|
149
|
+
- default: 0.7 (Balanced default)
|
|
150
|
+
|
|
151
|
+
**timeout**:
|
|
152
|
+
- minimum: 30 (Minimum 30 seconds for basic operations)
|
|
153
|
+
- maximum: 3600 (Maximum 1 hour for long-running tasks)
|
|
154
|
+
- default: 300 (Default 5 minutes)
|
|
155
|
+
|
|
156
|
+
### Instructions Field
|
|
157
|
+
- **minLength**: 100 (Minimum to ensure meaningful instructions)
|
|
158
|
+
- **maxLength**: 8000 (Maximum to fit within context limits)
|
|
159
|
+
- **Description**: Agent system instructions that define behavior, approach, and constraints. This becomes the agent's system prompt.
|
|
160
|
+
|
|
161
|
+
### Additional Properties
|
|
162
|
+
- **additionalProperties**: false (Strict validation - no extra properties allowed)
|
|
163
|
+
|
|
164
|
+
## Resource Tier Definitions
|
|
165
|
+
|
|
166
|
+
These definitions provide guidance for resource allocation (not enforced by schema but used by runtime):
|
|
167
|
+
|
|
168
|
+
### Intensive Tier
|
|
169
|
+
- memory_limit: 4096-8192 MB
|
|
170
|
+
- cpu_limit: 60-100%
|
|
171
|
+
- timeout: 600-3600 seconds
|
|
172
|
+
|
|
173
|
+
### Standard Tier
|
|
174
|
+
- memory_limit: 2048-4096 MB
|
|
175
|
+
- cpu_limit: 30-60%
|
|
176
|
+
- timeout: 300-1200 seconds
|
|
177
|
+
|
|
178
|
+
### Lightweight Tier
|
|
179
|
+
- memory_limit: 512-2048 MB
|
|
180
|
+
- cpu_limit: 10-30%
|
|
181
|
+
- timeout: 30-600 seconds
|