claude-mpm 3.3.0__py3-none-any.whl → 3.4.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.
Files changed (58) hide show
  1. claude_mpm/agents/templates/data_engineer.json +1 -1
  2. claude_mpm/agents/templates/documentation.json +1 -1
  3. claude_mpm/agents/templates/engineer.json +1 -1
  4. claude_mpm/agents/templates/ops.json +1 -1
  5. claude_mpm/agents/templates/pm.json +1 -1
  6. claude_mpm/agents/templates/qa.json +1 -1
  7. claude_mpm/agents/templates/research.json +1 -1
  8. claude_mpm/agents/templates/security.json +1 -1
  9. claude_mpm/agents/templates/test_integration.json +112 -0
  10. claude_mpm/agents/templates/version_control.json +1 -1
  11. claude_mpm/cli/commands/memory.py +749 -26
  12. claude_mpm/cli/commands/run.py +115 -14
  13. claude_mpm/cli/parser.py +89 -1
  14. claude_mpm/constants.py +6 -0
  15. claude_mpm/core/claude_runner.py +74 -11
  16. claude_mpm/core/config.py +1 -1
  17. claude_mpm/core/session_manager.py +46 -0
  18. claude_mpm/core/simple_runner.py +74 -11
  19. claude_mpm/hooks/builtin/mpm_command_hook.py +5 -5
  20. claude_mpm/hooks/claude_hooks/hook_handler.py +213 -30
  21. claude_mpm/hooks/claude_hooks/hook_wrapper.sh +9 -2
  22. claude_mpm/hooks/memory_integration_hook.py +51 -5
  23. claude_mpm/services/__init__.py +23 -5
  24. claude_mpm/services/agent_memory_manager.py +800 -71
  25. claude_mpm/services/memory_builder.py +823 -0
  26. claude_mpm/services/memory_optimizer.py +619 -0
  27. claude_mpm/services/memory_router.py +445 -0
  28. claude_mpm/services/project_analyzer.py +771 -0
  29. claude_mpm/services/socketio_server.py +649 -45
  30. claude_mpm/services/version_control/git_operations.py +26 -0
  31. claude_mpm-3.4.0.dist-info/METADATA +183 -0
  32. {claude_mpm-3.3.0.dist-info → claude_mpm-3.4.0.dist-info}/RECORD +36 -52
  33. claude_mpm/agents/agent-template.yaml +0 -83
  34. claude_mpm/agents/templates/test-integration-agent.md +0 -34
  35. claude_mpm/agents/test_fix_deployment/.claude-pm/config/project.json +0 -6
  36. claude_mpm/cli/README.md +0 -109
  37. claude_mpm/cli_module/refactoring_guide.md +0 -253
  38. claude_mpm/core/agent_registry.py.bak +0 -312
  39. claude_mpm/core/base_service.py.bak +0 -406
  40. claude_mpm/core/websocket_handler.py +0 -233
  41. claude_mpm/hooks/README.md +0 -97
  42. claude_mpm/orchestration/SUBPROCESS_DESIGN.md +0 -66
  43. claude_mpm/schemas/README_SECURITY.md +0 -92
  44. claude_mpm/schemas/agent_schema.json +0 -395
  45. claude_mpm/schemas/agent_schema_documentation.md +0 -181
  46. claude_mpm/schemas/agent_schema_security_notes.md +0 -165
  47. claude_mpm/schemas/examples/standard_workflow.json +0 -505
  48. claude_mpm/schemas/ticket_workflow_documentation.md +0 -482
  49. claude_mpm/schemas/ticket_workflow_schema.json +0 -590
  50. claude_mpm/services/framework_claude_md_generator/README.md +0 -92
  51. claude_mpm/services/parent_directory_manager/README.md +0 -83
  52. claude_mpm/services/version_control/VERSION +0 -1
  53. claude_mpm/services/websocket_server.py +0 -376
  54. claude_mpm-3.3.0.dist-info/METADATA +0 -432
  55. {claude_mpm-3.3.0.dist-info → claude_mpm-3.4.0.dist-info}/WHEEL +0 -0
  56. {claude_mpm-3.3.0.dist-info → claude_mpm-3.4.0.dist-info}/entry_points.txt +0 -0
  57. {claude_mpm-3.3.0.dist-info → claude_mpm-3.4.0.dist-info}/licenses/LICENSE +0 -0
  58. {claude_mpm-3.3.0.dist-info → claude_mpm-3.4.0.dist-info}/top_level.txt +0 -0
@@ -1,97 +0,0 @@
1
- # Claude Code Hooks System
2
-
3
- This directory contains the Claude Code hook integration for claude-mpm.
4
-
5
- ## Overview
6
-
7
- The hook system allows claude-mpm to intercept and handle commands typed in Claude Code, particularly the `/mpm` commands.
8
-
9
- ## Structure
10
-
11
- ```
12
- hooks/
13
- ├── claude_hooks/ # Claude Code hook implementation
14
- │ ├── hook_handler.py # Main Python handler that processes events
15
- │ └── hook_wrapper.sh # Shell wrapper script (this is what gets installed in ~/.claude/settings.json)
16
- └── builtin/ # Legacy internal hooks (deprecated)
17
- ```
18
-
19
- ## Claude Code Hooks
20
-
21
- The Claude Code hooks are the primary integration point between claude-mpm and Claude Code. They allow:
22
-
23
- - Intercepting `/mpm` commands before they reach the LLM
24
- - Providing custom responses and actions
25
- - Blocking LLM processing when appropriate
26
-
27
- ### Installation
28
-
29
- To install the Claude Code hooks:
30
-
31
- ```bash
32
- python scripts/install_hooks.py
33
- ```
34
-
35
- This will:
36
- 1. Create/update `~/.claude/settings.json` with hook configuration
37
- 2. Point to the `hook_wrapper.sh` script
38
- 3. Copy any custom commands to `~/.claude/commands/`
39
-
40
- ### How It Works
41
-
42
- 1. When you type in Claude Code, it triggers hook events
43
- 2. Claude Code calls `hook_wrapper.sh` (the path in `~/.claude/settings.json`)
44
- 3. The wrapper script:
45
- - Detects if it's running from a local dev environment, npm, or PyPI installation
46
- - Activates the appropriate Python environment
47
- - Runs `hook_handler.py` with the event data
48
- 4. The handler processes various event types:
49
- - **UserPromptSubmit**: Checks if the prompt starts with `/mpm` and handles commands
50
- - **PreToolUse**: Logs tool usage before execution
51
- - **PostToolUse**: Logs tool results after execution
52
- - **Stop**: Logs when a session or task stops
53
- - **SubagentStop**: Logs when a subagent completes with agent type and ID
54
- 5. For `/mpm` commands, it returns exit code 2 to block LLM processing
55
- 6. All events are logged to project-specific log files in `.claude-mpm/logs/`
56
-
57
- ### Available Commands
58
-
59
- - `/mpm` - Show help and available commands
60
- - `/mpm status` - Show claude-mpm status and environment
61
- - `/mpm help` - Show detailed help
62
-
63
- ### Debugging
64
-
65
- To enable debug logging for hooks:
66
-
67
- ```bash
68
- export CLAUDE_MPM_LOG_LEVEL=DEBUG
69
- ```
70
-
71
- Then run Claude Code from that terminal. Hook events will be logged to `~/.claude-mpm/logs/`.
72
-
73
- ## Legacy Hook System (Deprecated)
74
-
75
- The `builtin/` directory contains the old internal hook system that was designed for JSON-RPC based hooks. This system is deprecated and will be removed in a future version. All hook functionality is now handled through the Claude Code hooks.
76
-
77
- ## Development
78
-
79
- To add new `/mpm` commands:
80
-
81
- 1. Edit `hook_handler.py` to handle the new command
82
- 2. Update the help text in the `handle_mpm_help()` function
83
- 3. Test by running Claude Code with the new command
84
-
85
- ## Exit Codes
86
-
87
- The hook system uses specific exit codes:
88
-
89
- - `0` - Success, continue normal processing
90
- - `2` - Block LLM processing (command was handled)
91
- - Other - Error occurred
92
-
93
- ## Environment Variables
94
-
95
- - `CLAUDE_MPM_LOG_LEVEL` - Set to DEBUG for detailed logging
96
- - `HOOK_EVENT_TYPE` - Set by Claude Code (UserPromptSubmit, PreToolUse, PostToolUse)
97
- - `HOOK_DATA` - JSON data from Claude Code with event details
@@ -1,66 +0,0 @@
1
- # Subprocess Orchestration Design
2
-
3
- ## Problem
4
- Claude's `--print` mode times out when generating code or using tools, making subprocess orchestration in non-interactive mode impractical.
5
-
6
- ## Findings
7
-
8
- ### Interactive Mode (Working)
9
- - Claude uses built-in Task tool
10
- - Creates real subprocesses with ~11.4k tokens each
11
- - Runs in parallel with independent timing
12
- - Each subprocess gets framework context
13
-
14
- ### Non-Interactive Mode Issues
15
- - `claude --print` works for simple queries (e.g., "What is 2+2?" in ~4s)
16
- - Times out for any code generation or complex tasks
17
- - Debug shows Claude is working but tool usage adds overhead
18
- - Requires `--dangerously-skip-permissions` flag to run
19
-
20
- ## Alternative Approaches
21
-
22
- ### 1. Use Claude's Conversation API
23
- Instead of `--print`, use conversation management:
24
- ```bash
25
- # Start conversation
26
- claude --model opus -c "conversation_id" < prompt.txt
27
-
28
- # Continue conversation
29
- claude --continue conversation_id < next_prompt.txt
30
- ```
31
-
32
- ### 2. Use Interactive Mode with Expect
33
- Use expect/pexpect to control interactive Claude sessions programmatically.
34
-
35
- ### 3. Mock Subprocess Mode
36
- For testing/development:
37
- - Detect delegations in PM response
38
- - Show subprocess-like output
39
- - But don't actually create subprocesses
40
-
41
- ### 4. Direct API Integration
42
- Skip CLI entirely and use Claude's API directly (if available).
43
-
44
- ## Implementation Status
45
-
46
- ### Completed
47
- 1. ✅ SubprocessOrchestrator class with full functionality
48
- 2. ✅ Delegation detection for multiple formats
49
- 3. ✅ Parallel subprocess execution framework
50
- 4. ✅ Agent-specific prompt generation
51
- 5. ✅ CLI integration via `--subprocess` flag
52
- 6. ✅ Fixed command flags for permissions
53
-
54
- ### Current Status
55
- - Implementation is complete but blocked by Claude CLI limitations
56
- - Use interactive mode for real subprocess orchestration
57
- - Keep implementation for future when Claude print mode improves
58
-
59
- ## Delegation Detection Patterns
60
-
61
- The PM uses these formats:
62
- - `**Engineer Agent**: Create a function...`
63
- - `**QA**: Write tests for...`
64
- - `I'll delegate this to the Engineer agent...`
65
-
66
- We can parse these and show subprocess-style output even without real subprocesses.
@@ -1,92 +0,0 @@
1
- # Agent Schema Security Guide
2
-
3
- ## Critical Security Notice
4
-
5
- **This schema is a SECURITY BOUNDARY.** Any changes to agent_schema.json must be carefully reviewed for security implications.
6
-
7
- ## Security Controls in agent_schema.json
8
-
9
- ### 1. Field Validation
10
- - **agent_id**: Pattern `^[a-z][a-z0-9_]*$` prevents path traversal and command injection
11
- - **version fields**: Semantic versioning pattern prevents version injection
12
- - **enums**: All enums are allowlists preventing arbitrary values
13
-
14
- ### 2. Size Limits
15
- - **instructions**: 8000 char max prevents memory exhaustion
16
- - **name**: 50 char max prevents UI breaking
17
- - **description**: 200 char max prevents storage abuse
18
- - **tags**: max 10 items prevents array bombing
19
-
20
- ### 3. Resource Limits by Tier
21
- ```
22
- intensive: memory: 4096-8192MB, cpu: 60-100%, timeout: 600-3600s
23
- standard: memory: 2048-4096MB, cpu: 30-60%, timeout: 300-1200s
24
- lightweight: memory: 512-2048MB, cpu: 10-30%, timeout: 30-600s
25
- ```
26
-
27
- ### 4. Tool Security Matrix
28
-
29
- | Tool Combination | Risk Level | Security Impact |
30
- |-----------------|------------|-----------------|
31
- | Bash + Write | CRITICAL | Arbitrary code execution |
32
- | docker + kubectl | HIGH | Container escape potential |
33
- | aws + gcloud + azure | HIGH | Multi-cloud attack surface |
34
- | WebFetch + Write | MEDIUM | Data exfiltration risk |
35
- | Read + network_access | MEDIUM | Information disclosure |
36
-
37
- ### 5. Required Security Reviews
38
-
39
- Any PR modifying agent_schema.json MUST include:
40
- 1. Security impact assessment
41
- 2. Validation that no new fields bypass security controls
42
- 3. Test cases for new validation rules
43
- 4. Update to this security guide if needed
44
-
45
- ### 6. Security Checklist for Schema Changes
46
-
47
- - [ ] No new fields allow arbitrary string input without validation
48
- - [ ] All new arrays have maxItems limits
49
- - [ ] All new strings have maxLength limits
50
- - [ ] New enum values are reviewed for security impact
51
- - [ ] Resource limits maintain tier boundaries
52
- - [ ] No new fields can bypass additionalProperties: false
53
- - [ ] Pattern validations prevent injection attacks
54
- - [ ] Default values follow principle of least privilege
55
-
56
- ## Common Security Mistakes to Avoid
57
-
58
- 1. **Never** add fields that accept arbitrary file paths without validation
59
- 2. **Never** increase resource limits without security review
60
- 3. **Never** add tools that bypass the enum list
61
- 4. **Never** remove pattern validation from ID fields
62
- 5. **Never** set additionalProperties to true
63
- 6. **Always** default network_access to false
64
- 7. **Always** validate new tool combinations for security impact
65
-
66
- ## Security Testing
67
-
68
- Run these tests after any schema change:
69
- ```bash
70
- # Validate schema structure
71
- python scripts/validate_agent_schema.py
72
-
73
- # Test security boundaries
74
- python tests/test_agent_security_boundaries.py
75
-
76
- # Check for injection vulnerabilities
77
- python tests/test_agent_validation_security.py
78
- ```
79
-
80
- ## Incident Response
81
-
82
- If a security vulnerability is found in the schema:
83
- 1. Immediately add validation in agent_validator.py as a hotfix
84
- 2. Update schema to prevent the vulnerability
85
- 3. Audit all existing agents for exploitation
86
- 4. Document the vulnerability and fix in security log
87
-
88
- ## Security Contacts
89
-
90
- - Security reviews: security-team@company.com
91
- - Vulnerability reports: security@company.com
92
- - Emergency response: security-oncall@company.com
@@ -1,395 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "version": "1.2.0",
4
- "title": "Claude MPM Agent Schema",
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
- "type": "object",
7
- "required": [
8
- "schema_version",
9
- "agent_id",
10
- "agent_version",
11
- "agent_type",
12
- "metadata",
13
- "capabilities",
14
- "instructions"
15
- ],
16
- "properties": {
17
- "schema_version": {
18
- "type": "string",
19
- "pattern": "^\\d+\\.\\d+\\.\\d+$",
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
- "examples": ["1.0.0", "1.2.0"]
22
- },
23
- "agent_id": {
24
- "type": "string",
25
- "pattern": "^[a-z][a-z0-9_]*$",
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
- "type": "string",
31
- "pattern": "^\\d+\\.\\d+\\.\\d+$",
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
- "examples": ["1.0.0", "2.1.3"]
34
- },
35
- "agent_type": {
36
- "type": "string",
37
- "description": "Type of agent that determines its primary function and default capabilities. This categorization helps in agent discovery and capability matching.",
38
- "enum": [
39
- "base",
40
- "engineer",
41
- "qa",
42
- "documentation",
43
- "research",
44
- "security",
45
- "ops",
46
- "data_engineer",
47
- "version_control"
48
- ]
49
- },
50
- "metadata": {
51
- "type": "object",
52
- "required": [
53
- "name",
54
- "description",
55
- "tags"
56
- ],
57
- "properties": {
58
- "name": {
59
- "type": "string",
60
- "minLength": 3,
61
- "maxLength": 50,
62
- "description": "Human-readable agent name displayed in UI and logs. Should be concise but descriptive."
63
- },
64
- "description": {
65
- "type": "string",
66
- "minLength": 10,
67
- "maxLength": 200,
68
- "description": "Brief description of agent purpose and capabilities. Used in agent selection and documentation."
69
- },
70
- "category": {
71
- "type": "string",
72
- "enum": ["engineering", "research", "quality", "operations", "specialized"],
73
- "description": "Agent category for organization"
74
- },
75
- "tags": {
76
- "type": "array",
77
- "items": {
78
- "type": "string",
79
- "pattern": "^[a-z][a-z0-9-]*$"
80
- },
81
- "minItems": 1,
82
- "maxItems": 10,
83
- "uniqueItems": true,
84
- "description": "Tags for agent discovery and categorization. Used by the agent registry for searching and filtering."
85
- },
86
- "author": {
87
- "type": "string",
88
- "description": "Agent template author"
89
- },
90
- "created_at": {
91
- "type": "string",
92
- "format": "date-time",
93
- "description": "Creation timestamp"
94
- },
95
- "updated_at": {
96
- "type": "string",
97
- "format": "date-time",
98
- "description": "Last update timestamp"
99
- }
100
- }
101
- },
102
- "capabilities": {
103
- "type": "object",
104
- "required": [
105
- "model",
106
- "tools",
107
- "resource_tier"
108
- ],
109
- "properties": {
110
- "model": {
111
- "type": "string",
112
- "enum": [
113
- "claude-3-haiku-20240307",
114
- "claude-3-5-haiku-20241022",
115
- "claude-3-sonnet-20240229",
116
- "claude-3-5-sonnet-20241022",
117
- "claude-3-5-sonnet-20240620",
118
- "claude-sonnet-4-20250514",
119
- "claude-4-sonnet-20250514",
120
- "claude-3-opus-20240229",
121
- "claude-opus-4-20250514",
122
- "claude-4-opus-20250514"
123
- ],
124
- "description": "Claude model to use for this agent. Choose based on task complexity and performance requirements."
125
- },
126
- "tools": {
127
- "type": "array",
128
- "items": {
129
- "type": "string",
130
- "enum": [
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"
152
- ]
153
- },
154
- "uniqueItems": true,
155
- "description": "Available tools for the agent. Tools determine what operations the agent can perform."
156
- },
157
- "resource_tier": {
158
- "type": "string",
159
- "enum": [
160
- "basic",
161
- "standard",
162
- "intensive",
163
- "lightweight"
164
- ],
165
- "description": "Resource allocation tier that determines memory, CPU, and timeout limits. See definitions section for specific limits."
166
- },
167
- "max_tokens": {
168
- "type": "integer",
169
- "minimum": 1000,
170
- "maximum": 200000,
171
- "default": 8192,
172
- "description": "Maximum tokens for response generation. Higher values allow longer responses but increase cost and latency."
173
- },
174
- "temperature": {
175
- "type": "number",
176
- "minimum": 0,
177
- "maximum": 1,
178
- "default": 0.7,
179
- "description": "Model temperature setting controlling response randomness. Lower values for consistency, higher for creativity."
180
- },
181
- "timeout": {
182
- "type": "integer",
183
- "minimum": 30,
184
- "maximum": 3600,
185
- "default": 300,
186
- "description": "Operation timeout in seconds. Should align with resource_tier settings."
187
- },
188
- "memory_limit": {
189
- "type": "integer",
190
- "minimum": 512,
191
- "maximum": 8192,
192
- "description": "Memory limit in MB (for resource tier)"
193
- },
194
- "cpu_limit": {
195
- "type": "integer",
196
- "minimum": 10,
197
- "maximum": 100,
198
- "description": "CPU limit percentage (for resource tier)"
199
- },
200
- "network_access": {
201
- "type": "boolean",
202
- "default": false,
203
- "description": "Whether agent needs network access"
204
- },
205
- "file_access": {
206
- "type": "object",
207
- "properties": {
208
- "read_paths": {
209
- "type": "array",
210
- "items": {"type": "string"},
211
- "description": "Allowed read paths"
212
- },
213
- "write_paths": {
214
- "type": "array",
215
- "items": {"type": "string"},
216
- "description": "Allowed write paths"
217
- }
218
- }
219
- },
220
- "allowed_tools": {
221
- "type": "array",
222
- "items": {"type": "string"},
223
- "description": "Glob patterns for allowed file paths. Restricts which files the agent can access (e.g., 'tests/**' for test files only)."
224
- },
225
- "disallowed_tools": {
226
- "type": "array",
227
- "items": {"type": "string"},
228
- "description": "Tool names to explicitly disallow, overriding the tools array. Use for security restrictions (e.g., 'Bash' to prevent shell access)."
229
- }
230
- }
231
- },
232
- "instructions": {
233
- "type": "string",
234
- "minLength": 100,
235
- "maxLength": 8000,
236
- "description": "Agent system instructions that define behavior, approach, and constraints. This becomes the agent's system prompt."
237
- },
238
- "knowledge": {
239
- "type": "object",
240
- "description": "Agent-specific knowledge and context",
241
- "properties": {
242
- "domain_expertise": {
243
- "type": "array",
244
- "items": {"type": "string"},
245
- "description": "Areas of expertise"
246
- },
247
- "best_practices": {
248
- "type": "array",
249
- "items": {"type": "string"},
250
- "description": "Best practices the agent follows"
251
- },
252
- "constraints": {
253
- "type": "array",
254
- "items": {"type": "string"},
255
- "description": "Operating constraints"
256
- },
257
- "examples": {
258
- "type": "array",
259
- "items": {
260
- "type": "object",
261
- "properties": {
262
- "scenario": {"type": "string"},
263
- "approach": {"type": "string"}
264
- }
265
- },
266
- "description": "Example scenarios and approaches"
267
- }
268
- }
269
- },
270
- "interactions": {
271
- "type": "object",
272
- "description": "Agent interaction patterns",
273
- "properties": {
274
- "input_format": {
275
- "type": "object",
276
- "properties": {
277
- "required_fields": {
278
- "type": "array",
279
- "items": {"type": "string"}
280
- },
281
- "optional_fields": {
282
- "type": "array",
283
- "items": {"type": "string"}
284
- }
285
- }
286
- },
287
- "output_format": {
288
- "type": "object",
289
- "properties": {
290
- "structure": {
291
- "type": "string",
292
- "enum": ["markdown", "json", "structured", "free-form"]
293
- },
294
- "includes": {
295
- "type": "array",
296
- "items": {"type": "string"}
297
- }
298
- }
299
- },
300
- "handoff_agents": {
301
- "type": "array",
302
- "items": {"type": "string"},
303
- "description": "Agents this agent can hand off to"
304
- },
305
- "triggers": {
306
- "type": "array",
307
- "items": {
308
- "type": "object",
309
- "properties": {
310
- "condition": {"type": "string"},
311
- "action": {"type": "string"}
312
- }
313
- },
314
- "description": "Conditions that trigger specific actions"
315
- }
316
- }
317
- },
318
- "testing": {
319
- "type": "object",
320
- "description": "Testing configuration for the agent",
321
- "properties": {
322
- "test_cases": {
323
- "type": "array",
324
- "items": {
325
- "type": "object",
326
- "required": ["input", "expected_behavior"],
327
- "properties": {
328
- "name": {"type": "string"},
329
- "input": {"type": "string"},
330
- "expected_behavior": {"type": "string"},
331
- "validation_criteria": {
332
- "type": "array",
333
- "items": {"type": "string"}
334
- }
335
- }
336
- }
337
- },
338
- "performance_benchmarks": {
339
- "type": "object",
340
- "properties": {
341
- "response_time": {"type": "integer"},
342
- "token_usage": {"type": "integer"},
343
- "success_rate": {"type": "number"}
344
- }
345
- }
346
- }
347
- },
348
- "hooks": {
349
- "type": "object",
350
- "description": "Hook configurations for extensibility",
351
- "properties": {
352
- "pre_execution": {
353
- "type": "array",
354
- "items": {
355
- "type": "object",
356
- "properties": {
357
- "name": {"type": "string"},
358
- "enabled": {"type": "boolean"}
359
- }
360
- }
361
- },
362
- "post_execution": {
363
- "type": "array",
364
- "items": {
365
- "type": "object",
366
- "properties": {
367
- "name": {"type": "string"},
368
- "enabled": {"type": "boolean"}
369
- }
370
- }
371
- }
372
- }
373
- }
374
- },
375
- "additionalProperties": false,
376
- "definitions": {
377
- "resource_tier_limits": {
378
- "intensive": {
379
- "memory_limit": {"min": 4096, "max": 8192},
380
- "cpu_limit": {"min": 60, "max": 100},
381
- "timeout": {"min": 600, "max": 3600}
382
- },
383
- "standard": {
384
- "memory_limit": {"min": 2048, "max": 4096},
385
- "cpu_limit": {"min": 30, "max": 60},
386
- "timeout": {"min": 300, "max": 1200}
387
- },
388
- "lightweight": {
389
- "memory_limit": {"min": 512, "max": 2048},
390
- "cpu_limit": {"min": 10, "max": 30},
391
- "timeout": {"min": 30, "max": 600}
392
- }
393
- }
394
- }
395
- }