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 CHANGED
@@ -1,6 +1,15 @@
1
1
  """Claude MPM - Multi-Agent Project Manager."""
2
2
 
3
- from ._version import __version__
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).value,
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:
@@ -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
- subprocess.run(cmd, stdin=None, stdout=None, stderr=None)
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", // Required: Must match the schema version this agent was built for
9
- "agent_id", // Required: Unique identifier for the agent type
10
- "agent_version", // Required: Semantic version of this specific agent template
11
- "agent_type", // Required: Categorizes the agent's primary function
12
- "metadata", // Required: Human-readable information about the agent
13
- "capabilities", // Required: Technical specifications and resource requirements
14
- "instructions" // Required: System prompt that defines agent behavior
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+$", // Enforces semantic versioning format (X.Y.Z)
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_]*$", // Must start with lowercase letter, followed by lowercase letters, numbers, or underscores
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+$", // Enforces semantic versioning for agent templates
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", // Generic agent with no specialization
40
- "engineer", // Code implementation and development
41
- "qa", // Quality assurance and testing
42
- "documentation", // Documentation creation and maintenance
43
- "research", // Code analysis and research
44
- "security", // Security analysis and vulnerability detection
45
- "ops", // Operations and infrastructure management
46
- "data_engineer", // Data pipeline and ETL development
47
- "version_control" // Git and version control operations
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", // Human-readable name for UI display
54
- "description", // Brief explanation of agent's purpose
55
- "tags" // Searchable tags for agent discovery
53
+ "name",
54
+ "description",
55
+ "tags"
56
56
  ],
57
57
  "properties": {
58
58
  "name": {
59
59
  "type": "string",
60
- "minLength": 3, // Minimum 3 characters for meaningful names
61
- "maxLength": 50, // Maximum 50 characters to prevent UI overflow
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, // Minimum 10 characters to ensure meaningful descriptions
67
- "maxLength": 200, // Maximum 200 characters for conciseness
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-]*$" // Lowercase letters, numbers, and hyphens only
79
+ "pattern": "^[a-z][a-z0-9-]*$"
80
80
  },
81
- "minItems": 1, // At least one tag required for discovery
82
- "maxItems": 10, // Maximum 10 tags to prevent over-tagging
83
- "uniqueItems": true, // No duplicate tags allowed
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", // Claude model version to use
106
- "tools", // Array of allowed tools for the agent
107
- "resource_tier" // Resource allocation category
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
- // File operations
135
- "Read", // Read file contents
136
- "Write", // Write new files
137
- "Edit", // Edit existing files
138
- "MultiEdit", // Multiple edits in one operation
139
- // Search and navigation
140
- "Grep", // Search file contents
141
- "Glob", // Find files by pattern
142
- "LS", // List directory contents
143
- // System operations
144
- "Bash", // Execute shell commands
145
- // Web operations
146
- "WebSearch", // Search the web
147
- "WebFetch", // Fetch web content
148
- // Notebook operations
149
- "NotebookRead", // Read Jupyter notebooks
150
- "NotebookEdit", // Edit Jupyter notebooks
151
- // Workflow operations
152
- "TodoWrite", // Manage task lists
153
- "ExitPlanMode", // Exit planning mode
154
- // CLI tools (future expansion)
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, // Each tool can only be listed once
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", // Default resources for simple tasks
171
- "standard", // Medium resources for typical operations
172
- "intensive", // High resources for complex tasks
173
- "lightweight" // Minimal resources for quick operations
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, // Minimum for meaningful responses
180
- "maximum": 200000, // Maximum supported by Claude models
181
- "default": 8192, // Default suitable for most tasks
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, // 0 = deterministic, focused
187
- "maximum": 1, // 1 = creative, varied
188
- "default": 0.7, // Balanced default
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, // Minimum 30 seconds for basic operations
194
- "maximum": 3600, // Maximum 1 hour for long-running tasks
195
- "default": 300, // Default 5 minutes
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, // Minimum to ensure meaningful instructions
245
- "maxLength": 8000, // Maximum to fit within context limits
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, // Strict validation - no extra properties allowed
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