claude-mpm 4.7.4__py3-none-any.whl → 4.18.2__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/VERSION +1 -1
- claude_mpm/agents/BASE_AGENT_TEMPLATE.md +118 -0
- claude_mpm/agents/BASE_ENGINEER.md +286 -0
- claude_mpm/agents/BASE_PM.md +106 -1
- claude_mpm/agents/OUTPUT_STYLE.md +329 -11
- claude_mpm/agents/PM_INSTRUCTIONS.md +397 -459
- claude_mpm/agents/agent_loader.py +17 -5
- claude_mpm/agents/frontmatter_validator.py +284 -253
- claude_mpm/agents/templates/README.md +465 -0
- claude_mpm/agents/templates/agent-manager.json +4 -1
- claude_mpm/agents/templates/agentic-coder-optimizer.json +13 -3
- claude_mpm/agents/templates/api_qa.json +11 -2
- claude_mpm/agents/templates/circuit_breakers.md +638 -0
- claude_mpm/agents/templates/clerk-ops.json +12 -2
- claude_mpm/agents/templates/code_analyzer.json +8 -2
- claude_mpm/agents/templates/content-agent.json +358 -0
- claude_mpm/agents/templates/dart_engineer.json +15 -2
- claude_mpm/agents/templates/data_engineer.json +15 -2
- claude_mpm/agents/templates/documentation.json +10 -2
- claude_mpm/agents/templates/engineer.json +21 -1
- claude_mpm/agents/templates/gcp_ops_agent.json +12 -2
- claude_mpm/agents/templates/git_file_tracking.md +584 -0
- claude_mpm/agents/templates/golang_engineer.json +270 -0
- claude_mpm/agents/templates/imagemagick.json +4 -1
- claude_mpm/agents/templates/java_engineer.json +346 -0
- claude_mpm/agents/templates/local_ops_agent.json +1227 -6
- claude_mpm/agents/templates/memory_manager.json +4 -1
- claude_mpm/agents/templates/nextjs_engineer.json +141 -133
- claude_mpm/agents/templates/ops.json +12 -2
- claude_mpm/agents/templates/php-engineer.json +270 -174
- claude_mpm/agents/templates/pm_examples.md +474 -0
- claude_mpm/agents/templates/pm_red_flags.md +240 -0
- claude_mpm/agents/templates/product_owner.json +338 -0
- claude_mpm/agents/templates/project_organizer.json +14 -4
- claude_mpm/agents/templates/prompt-engineer.json +13 -2
- claude_mpm/agents/templates/python_engineer.json +174 -81
- claude_mpm/agents/templates/qa.json +11 -2
- claude_mpm/agents/templates/react_engineer.json +16 -3
- claude_mpm/agents/templates/refactoring_engineer.json +12 -2
- claude_mpm/agents/templates/research.json +34 -21
- claude_mpm/agents/templates/response_format.md +583 -0
- claude_mpm/agents/templates/ruby-engineer.json +129 -192
- claude_mpm/agents/templates/rust_engineer.json +270 -0
- claude_mpm/agents/templates/security.json +10 -2
- claude_mpm/agents/templates/svelte-engineer.json +225 -0
- claude_mpm/agents/templates/ticketing.json +10 -2
- claude_mpm/agents/templates/typescript_engineer.json +116 -125
- claude_mpm/agents/templates/validation_templates.md +312 -0
- claude_mpm/agents/templates/vercel_ops_agent.json +12 -2
- claude_mpm/agents/templates/version_control.json +12 -2
- claude_mpm/agents/templates/web_qa.json +11 -2
- claude_mpm/agents/templates/web_ui.json +15 -2
- claude_mpm/cli/__init__.py +34 -614
- claude_mpm/cli/commands/agent_manager.py +25 -12
- claude_mpm/cli/commands/agent_state_manager.py +186 -0
- claude_mpm/cli/commands/agents.py +235 -148
- claude_mpm/cli/commands/agents_detect.py +380 -0
- claude_mpm/cli/commands/agents_recommend.py +309 -0
- claude_mpm/cli/commands/aggregate.py +7 -3
- claude_mpm/cli/commands/analyze.py +9 -4
- claude_mpm/cli/commands/analyze_code.py +7 -2
- claude_mpm/cli/commands/auto_configure.py +570 -0
- claude_mpm/cli/commands/config.py +47 -13
- claude_mpm/cli/commands/configure.py +419 -1571
- claude_mpm/cli/commands/configure_agent_display.py +261 -0
- claude_mpm/cli/commands/configure_behavior_manager.py +204 -0
- claude_mpm/cli/commands/configure_hook_manager.py +225 -0
- claude_mpm/cli/commands/configure_models.py +18 -0
- claude_mpm/cli/commands/configure_navigation.py +167 -0
- claude_mpm/cli/commands/configure_paths.py +104 -0
- claude_mpm/cli/commands/configure_persistence.py +254 -0
- claude_mpm/cli/commands/configure_startup_manager.py +646 -0
- claude_mpm/cli/commands/configure_template_editor.py +497 -0
- claude_mpm/cli/commands/configure_validators.py +73 -0
- claude_mpm/cli/commands/local_deploy.py +537 -0
- claude_mpm/cli/commands/memory.py +54 -20
- claude_mpm/cli/commands/mpm_init.py +585 -196
- claude_mpm/cli/commands/mpm_init_handler.py +37 -3
- claude_mpm/cli/commands/search.py +170 -4
- claude_mpm/cli/commands/upgrade.py +152 -0
- claude_mpm/cli/executor.py +202 -0
- claude_mpm/cli/helpers.py +105 -0
- claude_mpm/cli/interactive/__init__.py +3 -0
- claude_mpm/cli/interactive/skills_wizard.py +491 -0
- claude_mpm/cli/parsers/__init__.py +7 -1
- claude_mpm/cli/parsers/agents_parser.py +9 -0
- claude_mpm/cli/parsers/auto_configure_parser.py +245 -0
- claude_mpm/cli/parsers/base_parser.py +110 -3
- claude_mpm/cli/parsers/local_deploy_parser.py +227 -0
- claude_mpm/cli/parsers/mpm_init_parser.py +65 -5
- claude_mpm/cli/shared/output_formatters.py +28 -19
- claude_mpm/cli/startup.py +481 -0
- claude_mpm/cli/utils.py +52 -1
- claude_mpm/commands/mpm-agents-detect.md +168 -0
- claude_mpm/commands/mpm-agents-recommend.md +214 -0
- claude_mpm/commands/mpm-agents.md +75 -1
- claude_mpm/commands/mpm-auto-configure.md +217 -0
- claude_mpm/commands/mpm-help.md +163 -0
- claude_mpm/commands/mpm-init.md +148 -3
- claude_mpm/commands/mpm-version.md +113 -0
- claude_mpm/commands/mpm.md +1 -0
- claude_mpm/config/agent_config.py +2 -2
- claude_mpm/config/model_config.py +428 -0
- claude_mpm/constants.py +1 -0
- claude_mpm/core/base_service.py +13 -12
- claude_mpm/core/enums.py +452 -0
- claude_mpm/core/factories.py +1 -1
- claude_mpm/core/instruction_reinforcement_hook.py +2 -1
- claude_mpm/core/interactive_session.py +9 -3
- claude_mpm/core/log_manager.py +2 -0
- claude_mpm/core/logging_config.py +6 -2
- claude_mpm/core/oneshot_session.py +8 -4
- claude_mpm/core/optimized_agent_loader.py +3 -3
- claude_mpm/core/output_style_manager.py +12 -192
- claude_mpm/core/service_registry.py +5 -1
- claude_mpm/core/types.py +2 -9
- claude_mpm/core/typing_utils.py +7 -6
- claude_mpm/dashboard/static/js/dashboard.js +0 -14
- claude_mpm/dashboard/templates/index.html +3 -41
- claude_mpm/hooks/__init__.py +20 -0
- claude_mpm/hooks/claude_hooks/event_handlers.py +4 -2
- claude_mpm/hooks/claude_hooks/response_tracking.py +35 -1
- claude_mpm/hooks/claude_hooks/services/connection_manager_http.py +23 -2
- claude_mpm/hooks/failure_learning/__init__.py +60 -0
- claude_mpm/hooks/failure_learning/failure_detection_hook.py +235 -0
- claude_mpm/hooks/failure_learning/fix_detection_hook.py +217 -0
- claude_mpm/hooks/failure_learning/learning_extraction_hook.py +286 -0
- claude_mpm/hooks/instruction_reinforcement.py +7 -2
- claude_mpm/hooks/kuzu_enrichment_hook.py +263 -0
- claude_mpm/hooks/kuzu_memory_hook.py +37 -12
- claude_mpm/hooks/kuzu_response_hook.py +183 -0
- claude_mpm/models/resume_log.py +340 -0
- claude_mpm/services/agents/__init__.py +18 -5
- claude_mpm/services/agents/auto_config_manager.py +796 -0
- claude_mpm/services/agents/deployment/agent_configuration_manager.py +1 -1
- claude_mpm/services/agents/deployment/agent_record_service.py +1 -1
- claude_mpm/services/agents/deployment/agent_validator.py +17 -1
- claude_mpm/services/agents/deployment/async_agent_deployment.py +1 -1
- claude_mpm/services/agents/deployment/interface_adapter.py +3 -2
- claude_mpm/services/agents/deployment/local_template_deployment.py +1 -1
- claude_mpm/services/agents/deployment/pipeline/steps/agent_processing_step.py +7 -6
- claude_mpm/services/agents/deployment/pipeline/steps/base_step.py +7 -16
- claude_mpm/services/agents/deployment/pipeline/steps/configuration_step.py +4 -3
- claude_mpm/services/agents/deployment/pipeline/steps/target_directory_step.py +5 -3
- claude_mpm/services/agents/deployment/pipeline/steps/validation_step.py +6 -5
- claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +9 -6
- claude_mpm/services/agents/deployment/validation/__init__.py +3 -1
- claude_mpm/services/agents/deployment/validation/validation_result.py +1 -9
- claude_mpm/services/agents/local_template_manager.py +1 -1
- claude_mpm/services/agents/memory/agent_memory_manager.py +5 -2
- claude_mpm/services/agents/observers.py +547 -0
- claude_mpm/services/agents/recommender.py +568 -0
- claude_mpm/services/agents/registry/modification_tracker.py +5 -2
- claude_mpm/services/command_handler_service.py +11 -5
- claude_mpm/services/core/__init__.py +33 -1
- claude_mpm/services/core/interfaces/__init__.py +90 -3
- claude_mpm/services/core/interfaces/agent.py +184 -0
- claude_mpm/services/core/interfaces/health.py +172 -0
- claude_mpm/services/core/interfaces/model.py +281 -0
- claude_mpm/services/core/interfaces/process.py +372 -0
- claude_mpm/services/core/interfaces/project.py +121 -0
- claude_mpm/services/core/interfaces/restart.py +307 -0
- claude_mpm/services/core/interfaces/stability.py +260 -0
- claude_mpm/services/core/memory_manager.py +11 -24
- claude_mpm/services/core/models/__init__.py +79 -0
- claude_mpm/services/core/models/agent_config.py +381 -0
- claude_mpm/services/core/models/health.py +162 -0
- claude_mpm/services/core/models/process.py +235 -0
- claude_mpm/services/core/models/restart.py +302 -0
- claude_mpm/services/core/models/stability.py +264 -0
- claude_mpm/services/core/models/toolchain.py +306 -0
- claude_mpm/services/core/path_resolver.py +23 -7
- claude_mpm/services/diagnostics/__init__.py +2 -2
- claude_mpm/services/diagnostics/checks/agent_check.py +25 -24
- claude_mpm/services/diagnostics/checks/claude_code_check.py +24 -23
- claude_mpm/services/diagnostics/checks/common_issues_check.py +25 -24
- claude_mpm/services/diagnostics/checks/configuration_check.py +24 -23
- claude_mpm/services/diagnostics/checks/filesystem_check.py +18 -17
- claude_mpm/services/diagnostics/checks/installation_check.py +30 -29
- claude_mpm/services/diagnostics/checks/instructions_check.py +20 -19
- claude_mpm/services/diagnostics/checks/mcp_check.py +50 -36
- claude_mpm/services/diagnostics/checks/mcp_services_check.py +38 -33
- claude_mpm/services/diagnostics/checks/monitor_check.py +23 -22
- claude_mpm/services/diagnostics/checks/startup_log_check.py +9 -8
- claude_mpm/services/diagnostics/diagnostic_runner.py +6 -5
- claude_mpm/services/diagnostics/doctor_reporter.py +28 -25
- claude_mpm/services/diagnostics/models.py +19 -24
- claude_mpm/services/infrastructure/monitoring/__init__.py +1 -1
- claude_mpm/services/infrastructure/monitoring/aggregator.py +12 -12
- claude_mpm/services/infrastructure/monitoring/base.py +5 -13
- claude_mpm/services/infrastructure/monitoring/network.py +7 -6
- claude_mpm/services/infrastructure/monitoring/process.py +13 -12
- claude_mpm/services/infrastructure/monitoring/resources.py +7 -6
- claude_mpm/services/infrastructure/monitoring/service.py +16 -15
- claude_mpm/services/infrastructure/resume_log_generator.py +439 -0
- claude_mpm/services/local_ops/__init__.py +163 -0
- claude_mpm/services/local_ops/crash_detector.py +257 -0
- claude_mpm/services/local_ops/health_checks/__init__.py +28 -0
- claude_mpm/services/local_ops/health_checks/http_check.py +224 -0
- claude_mpm/services/local_ops/health_checks/process_check.py +236 -0
- claude_mpm/services/local_ops/health_checks/resource_check.py +255 -0
- claude_mpm/services/local_ops/health_manager.py +430 -0
- claude_mpm/services/local_ops/log_monitor.py +396 -0
- claude_mpm/services/local_ops/memory_leak_detector.py +294 -0
- claude_mpm/services/local_ops/process_manager.py +595 -0
- claude_mpm/services/local_ops/resource_monitor.py +331 -0
- claude_mpm/services/local_ops/restart_manager.py +401 -0
- claude_mpm/services/local_ops/restart_policy.py +387 -0
- claude_mpm/services/local_ops/state_manager.py +372 -0
- claude_mpm/services/local_ops/unified_manager.py +600 -0
- claude_mpm/services/mcp_config_manager.py +9 -4
- claude_mpm/services/mcp_gateway/core/__init__.py +1 -2
- claude_mpm/services/mcp_gateway/core/base.py +18 -31
- claude_mpm/services/mcp_gateway/main.py +30 -0
- claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +206 -32
- claude_mpm/services/mcp_gateway/tools/health_check_tool.py +30 -28
- claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +25 -5
- claude_mpm/services/mcp_service_verifier.py +1 -1
- claude_mpm/services/memory/failure_tracker.py +563 -0
- claude_mpm/services/memory_hook_service.py +165 -4
- claude_mpm/services/model/__init__.py +147 -0
- claude_mpm/services/model/base_provider.py +365 -0
- claude_mpm/services/model/claude_provider.py +412 -0
- claude_mpm/services/model/model_router.py +453 -0
- claude_mpm/services/model/ollama_provider.py +415 -0
- claude_mpm/services/monitor/daemon_manager.py +3 -2
- claude_mpm/services/monitor/handlers/dashboard.py +2 -1
- claude_mpm/services/monitor/handlers/hooks.py +2 -1
- claude_mpm/services/monitor/management/lifecycle.py +3 -2
- claude_mpm/services/monitor/server.py +2 -1
- claude_mpm/services/project/__init__.py +23 -0
- claude_mpm/services/project/detection_strategies.py +719 -0
- claude_mpm/services/project/toolchain_analyzer.py +581 -0
- claude_mpm/services/self_upgrade_service.py +342 -0
- claude_mpm/services/session_management_service.py +3 -2
- claude_mpm/services/session_manager.py +205 -1
- claude_mpm/services/shared/async_service_base.py +16 -27
- claude_mpm/services/shared/lifecycle_service_base.py +1 -14
- claude_mpm/services/socketio/handlers/__init__.py +5 -2
- claude_mpm/services/socketio/handlers/hook.py +13 -2
- claude_mpm/services/socketio/handlers/registry.py +4 -2
- claude_mpm/services/socketio/server/main.py +10 -8
- claude_mpm/services/subprocess_launcher_service.py +14 -5
- claude_mpm/services/unified/analyzer_strategies/code_analyzer.py +8 -7
- claude_mpm/services/unified/analyzer_strategies/dependency_analyzer.py +6 -5
- claude_mpm/services/unified/analyzer_strategies/performance_analyzer.py +8 -7
- claude_mpm/services/unified/analyzer_strategies/security_analyzer.py +7 -6
- claude_mpm/services/unified/analyzer_strategies/structure_analyzer.py +5 -4
- claude_mpm/services/unified/config_strategies/validation_strategy.py +13 -9
- claude_mpm/services/unified/deployment_strategies/cloud_strategies.py +10 -3
- claude_mpm/services/unified/deployment_strategies/local.py +6 -5
- claude_mpm/services/unified/deployment_strategies/utils.py +6 -5
- claude_mpm/services/unified/deployment_strategies/vercel.py +7 -6
- claude_mpm/services/unified/interfaces.py +3 -1
- claude_mpm/services/unified/unified_analyzer.py +14 -10
- claude_mpm/services/unified/unified_config.py +2 -1
- claude_mpm/services/unified/unified_deployment.py +9 -4
- claude_mpm/services/version_service.py +104 -1
- claude_mpm/skills/__init__.py +21 -0
- claude_mpm/skills/bundled/__init__.py +6 -0
- claude_mpm/skills/bundled/api-documentation.md +393 -0
- claude_mpm/skills/bundled/async-testing.md +571 -0
- claude_mpm/skills/bundled/code-review.md +143 -0
- claude_mpm/skills/bundled/database-migration.md +199 -0
- claude_mpm/skills/bundled/docker-containerization.md +194 -0
- claude_mpm/skills/bundled/express-local-dev.md +1429 -0
- claude_mpm/skills/bundled/fastapi-local-dev.md +1199 -0
- claude_mpm/skills/bundled/git-workflow.md +414 -0
- claude_mpm/skills/bundled/imagemagick.md +204 -0
- claude_mpm/skills/bundled/json-data-handling.md +223 -0
- claude_mpm/skills/bundled/nextjs-local-dev.md +807 -0
- claude_mpm/skills/bundled/pdf.md +141 -0
- claude_mpm/skills/bundled/performance-profiling.md +567 -0
- claude_mpm/skills/bundled/refactoring-patterns.md +180 -0
- claude_mpm/skills/bundled/security-scanning.md +327 -0
- claude_mpm/skills/bundled/systematic-debugging.md +473 -0
- claude_mpm/skills/bundled/test-driven-development.md +378 -0
- claude_mpm/skills/bundled/vite-local-dev.md +1061 -0
- claude_mpm/skills/bundled/web-performance-optimization.md +2305 -0
- claude_mpm/skills/bundled/xlsx.md +157 -0
- claude_mpm/skills/registry.py +286 -0
- claude_mpm/skills/skill_manager.py +310 -0
- claude_mpm/storage/state_storage.py +15 -15
- claude_mpm/tools/code_tree_analyzer.py +177 -141
- claude_mpm/tools/code_tree_events.py +4 -2
- claude_mpm/utils/agent_dependency_loader.py +40 -20
- claude_mpm/utils/display_helper.py +260 -0
- claude_mpm/utils/git_analyzer.py +407 -0
- claude_mpm/utils/robust_installer.py +73 -19
- {claude_mpm-4.7.4.dist-info → claude_mpm-4.18.2.dist-info}/METADATA +129 -12
- {claude_mpm-4.7.4.dist-info → claude_mpm-4.18.2.dist-info}/RECORD +295 -193
- claude_mpm/dashboard/static/css/code-tree.css +0 -1639
- claude_mpm/dashboard/static/index-hub-backup.html +0 -713
- claude_mpm/dashboard/static/js/components/code-tree/tree-breadcrumb.js +0 -353
- claude_mpm/dashboard/static/js/components/code-tree/tree-constants.js +0 -235
- claude_mpm/dashboard/static/js/components/code-tree/tree-search.js +0 -409
- claude_mpm/dashboard/static/js/components/code-tree/tree-utils.js +0 -435
- claude_mpm/dashboard/static/js/components/code-tree.js +0 -5869
- claude_mpm/dashboard/static/js/components/code-viewer.js +0 -1386
- claude_mpm/hooks/claude_hooks/hook_handler_eventbus.py +0 -425
- claude_mpm/hooks/claude_hooks/hook_handler_original.py +0 -1041
- claude_mpm/hooks/claude_hooks/hook_handler_refactored.py +0 -347
- claude_mpm/services/agents/deployment/agent_lifecycle_manager_refactored.py +0 -575
- claude_mpm/services/project/analyzer_refactored.py +0 -450
- {claude_mpm-4.7.4.dist-info → claude_mpm-4.18.2.dist-info}/WHEEL +0 -0
- {claude_mpm-4.7.4.dist-info → claude_mpm-4.18.2.dist-info}/entry_points.txt +0 -0
- {claude_mpm-4.7.4.dist-info → claude_mpm-4.18.2.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.7.4.dist-info → claude_mpm-4.18.2.dist-info}/top_level.txt +0 -0
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
"name": "local-ops",
|
|
3
3
|
"display_name": "Local Operations Agent",
|
|
4
4
|
"description": "Specialized agent for managing local development deployments with focus on maintaining single stable instances, protecting existing services, and never interfering with other projects or Claude Code services",
|
|
5
|
-
"version": "1.0.2",
|
|
6
5
|
"author": "Claude MPM",
|
|
7
6
|
"authority": {
|
|
8
7
|
"level": "deployment_manager",
|
|
@@ -15,6 +14,83 @@
|
|
|
15
14
|
]
|
|
16
15
|
},
|
|
17
16
|
"capabilities": {
|
|
17
|
+
"local_deploy_cli": {
|
|
18
|
+
"description": "Use claude-mpm local-deploy CLI for advanced process management",
|
|
19
|
+
"commands": {
|
|
20
|
+
"start": {
|
|
21
|
+
"syntax": "claude-mpm local-deploy start --command <cmd> [--port <port>] [--auto-restart] [--health-check <url>]",
|
|
22
|
+
"description": "Start a deployment with background process spawning, health monitoring, and auto-restart",
|
|
23
|
+
"example": "claude-mpm local-deploy start --command 'uvicorn main:app --reload' --port 8000 --auto-restart --health-check http://localhost:8000/health"
|
|
24
|
+
},
|
|
25
|
+
"status": {
|
|
26
|
+
"syntax": "claude-mpm local-deploy status <deployment-id>",
|
|
27
|
+
"description": "Get detailed deployment status including process info, health, and resource usage",
|
|
28
|
+
"provides": [
|
|
29
|
+
"process_info",
|
|
30
|
+
"health_status",
|
|
31
|
+
"resource_usage",
|
|
32
|
+
"uptime",
|
|
33
|
+
"restart_count"
|
|
34
|
+
]
|
|
35
|
+
},
|
|
36
|
+
"monitor": {
|
|
37
|
+
"syntax": "claude-mpm local-deploy monitor <deployment-id> [--refresh 2]",
|
|
38
|
+
"description": "Live dashboard with real-time updates of deployment metrics"
|
|
39
|
+
},
|
|
40
|
+
"health": {
|
|
41
|
+
"syntax": "claude-mpm local-deploy health <deployment-id>",
|
|
42
|
+
"description": "Run comprehensive health checks (HTTP endpoint, process responsive, resource limits)",
|
|
43
|
+
"checks": [
|
|
44
|
+
"http_endpoint",
|
|
45
|
+
"process_responsive",
|
|
46
|
+
"resource_limits"
|
|
47
|
+
]
|
|
48
|
+
},
|
|
49
|
+
"stop": {
|
|
50
|
+
"syntax": "claude-mpm local-deploy stop <deployment-id>",
|
|
51
|
+
"description": "Gracefully stop a deployment"
|
|
52
|
+
},
|
|
53
|
+
"restart": {
|
|
54
|
+
"syntax": "claude-mpm local-deploy restart <deployment-id>",
|
|
55
|
+
"description": "Restart a deployment with graceful shutdown"
|
|
56
|
+
},
|
|
57
|
+
"list": {
|
|
58
|
+
"syntax": "claude-mpm local-deploy list [--status running|stopped|crashed]",
|
|
59
|
+
"description": "List all deployments with optional status filtering"
|
|
60
|
+
},
|
|
61
|
+
"history": {
|
|
62
|
+
"syntax": "claude-mpm local-deploy history <deployment-id>",
|
|
63
|
+
"description": "View deployment restart history and crash logs"
|
|
64
|
+
},
|
|
65
|
+
"enable-auto-restart": {
|
|
66
|
+
"syntax": "claude-mpm local-deploy enable-auto-restart <deployment-id>",
|
|
67
|
+
"description": "Enable automatic restart on crashes with exponential backoff"
|
|
68
|
+
},
|
|
69
|
+
"disable-auto-restart": {
|
|
70
|
+
"syntax": "claude-mpm local-deploy disable-auto-restart <deployment-id>",
|
|
71
|
+
"description": "Disable automatic restart for a deployment"
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
"features": [
|
|
75
|
+
"background_process_spawning",
|
|
76
|
+
"automatic_health_monitoring",
|
|
77
|
+
"auto_restart_with_exponential_backoff",
|
|
78
|
+
"memory_leak_detection",
|
|
79
|
+
"log_pattern_monitoring",
|
|
80
|
+
"resource_usage_tracking",
|
|
81
|
+
"graceful_shutdown_handling"
|
|
82
|
+
],
|
|
83
|
+
"integration_workflow": [
|
|
84
|
+
"detect_framework",
|
|
85
|
+
"build_start_command",
|
|
86
|
+
"execute_local_deploy_start",
|
|
87
|
+
"configure_health_endpoint",
|
|
88
|
+
"enable_auto_restart",
|
|
89
|
+
"verify_health_endpoint",
|
|
90
|
+
"monitor_initial_stability",
|
|
91
|
+
"report_deployment_url_and_status"
|
|
92
|
+
]
|
|
93
|
+
},
|
|
18
94
|
"port_allocation": {
|
|
19
95
|
"description": "Deterministic hash-based port allocation for consistent project ports",
|
|
20
96
|
"features": [
|
|
@@ -24,7 +100,10 @@
|
|
|
24
100
|
"persistent_state_tracking",
|
|
25
101
|
"environment_variable_override"
|
|
26
102
|
],
|
|
27
|
-
"port_range": [
|
|
103
|
+
"port_range": [
|
|
104
|
+
3000,
|
|
105
|
+
3999
|
|
106
|
+
],
|
|
28
107
|
"environment_override": "PROJECT_PORT"
|
|
29
108
|
},
|
|
30
109
|
"orphan_detection": {
|
|
@@ -52,7 +131,12 @@
|
|
|
52
131
|
"svelte",
|
|
53
132
|
"nuxt",
|
|
54
133
|
"gatsby",
|
|
55
|
-
"vite"
|
|
134
|
+
"vite",
|
|
135
|
+
"express",
|
|
136
|
+
"nestjs",
|
|
137
|
+
"remix",
|
|
138
|
+
"sveltekit",
|
|
139
|
+
"astro"
|
|
56
140
|
],
|
|
57
141
|
"python": [
|
|
58
142
|
"django",
|
|
@@ -61,6 +145,23 @@
|
|
|
61
145
|
"streamlit",
|
|
62
146
|
"gradio"
|
|
63
147
|
],
|
|
148
|
+
"rust": [
|
|
149
|
+
"actix-web",
|
|
150
|
+
"rocket",
|
|
151
|
+
"axum",
|
|
152
|
+
"warp"
|
|
153
|
+
],
|
|
154
|
+
"go": [
|
|
155
|
+
"gin",
|
|
156
|
+
"echo",
|
|
157
|
+
"fiber",
|
|
158
|
+
"net/http"
|
|
159
|
+
],
|
|
160
|
+
"java": [
|
|
161
|
+
"spring-boot",
|
|
162
|
+
"tomcat",
|
|
163
|
+
"jetty"
|
|
164
|
+
],
|
|
64
165
|
"ruby": [
|
|
65
166
|
"rails",
|
|
66
167
|
"sinatra"
|
|
@@ -69,6 +170,10 @@
|
|
|
69
170
|
"laravel",
|
|
70
171
|
"symfony"
|
|
71
172
|
],
|
|
173
|
+
"dart": [
|
|
174
|
+
"flutter-web",
|
|
175
|
+
"shelf"
|
|
176
|
+
],
|
|
72
177
|
"static": [
|
|
73
178
|
"hugo",
|
|
74
179
|
"jekyll",
|
|
@@ -381,16 +486,223 @@
|
|
|
381
486
|
"dev": "flask run",
|
|
382
487
|
"prod": "gunicorn app:app"
|
|
383
488
|
}
|
|
489
|
+
},
|
|
490
|
+
"python_fastapi": {
|
|
491
|
+
"files": [
|
|
492
|
+
"main.py",
|
|
493
|
+
"app.py"
|
|
494
|
+
],
|
|
495
|
+
"requirements": [
|
|
496
|
+
"fastapi",
|
|
497
|
+
"uvicorn"
|
|
498
|
+
],
|
|
499
|
+
"commands": {
|
|
500
|
+
"dev": "uvicorn main:app --reload --port {port}",
|
|
501
|
+
"prod": "uvicorn main:app --workers 4 --port {port}"
|
|
502
|
+
}
|
|
503
|
+
},
|
|
504
|
+
"nodejs_express": {
|
|
505
|
+
"files": [
|
|
506
|
+
"server.js",
|
|
507
|
+
"app.js",
|
|
508
|
+
"index.js"
|
|
509
|
+
],
|
|
510
|
+
"package_json": [
|
|
511
|
+
"express"
|
|
512
|
+
],
|
|
513
|
+
"commands": {
|
|
514
|
+
"dev": "nodemon server.js",
|
|
515
|
+
"prod": "node server.js"
|
|
516
|
+
}
|
|
517
|
+
},
|
|
518
|
+
"rust_actix": {
|
|
519
|
+
"files": [
|
|
520
|
+
"Cargo.toml",
|
|
521
|
+
"Cargo.lock",
|
|
522
|
+
"src/main.rs"
|
|
523
|
+
],
|
|
524
|
+
"cargo_dependencies": [
|
|
525
|
+
"actix-web"
|
|
526
|
+
],
|
|
527
|
+
"commands": {
|
|
528
|
+
"dev": "cargo run",
|
|
529
|
+
"watch": "cargo watch -x run",
|
|
530
|
+
"build": "cargo build --release",
|
|
531
|
+
"start": "./target/release/{app_name}"
|
|
532
|
+
}
|
|
533
|
+
},
|
|
534
|
+
"rust_rocket": {
|
|
535
|
+
"files": [
|
|
536
|
+
"Cargo.toml",
|
|
537
|
+
"Rocket.toml",
|
|
538
|
+
"src/main.rs"
|
|
539
|
+
],
|
|
540
|
+
"cargo_dependencies": [
|
|
541
|
+
"rocket"
|
|
542
|
+
],
|
|
543
|
+
"commands": {
|
|
544
|
+
"dev": "cargo run",
|
|
545
|
+
"watch": "cargo watch -x run",
|
|
546
|
+
"build": "cargo build --release",
|
|
547
|
+
"start": "./target/release/{app_name}"
|
|
548
|
+
}
|
|
549
|
+
},
|
|
550
|
+
"rust_axum": {
|
|
551
|
+
"files": [
|
|
552
|
+
"Cargo.toml",
|
|
553
|
+
"src/main.rs"
|
|
554
|
+
],
|
|
555
|
+
"cargo_dependencies": [
|
|
556
|
+
"axum"
|
|
557
|
+
],
|
|
558
|
+
"commands": {
|
|
559
|
+
"dev": "cargo run",
|
|
560
|
+
"watch": "cargo watch -x run",
|
|
561
|
+
"build": "cargo build --release",
|
|
562
|
+
"start": "./target/release/{app_name}"
|
|
563
|
+
}
|
|
564
|
+
},
|
|
565
|
+
"go_gin": {
|
|
566
|
+
"files": [
|
|
567
|
+
"go.mod",
|
|
568
|
+
"go.sum",
|
|
569
|
+
"main.go"
|
|
570
|
+
],
|
|
571
|
+
"go_imports": [
|
|
572
|
+
"github.com/gin-gonic/gin"
|
|
573
|
+
],
|
|
574
|
+
"commands": {
|
|
575
|
+
"dev": "go run .",
|
|
576
|
+
"watch": "air",
|
|
577
|
+
"build": "go build -o {app_name}",
|
|
578
|
+
"start": "./{app_name}"
|
|
579
|
+
}
|
|
580
|
+
},
|
|
581
|
+
"go_echo": {
|
|
582
|
+
"files": [
|
|
583
|
+
"go.mod",
|
|
584
|
+
"go.sum",
|
|
585
|
+
"main.go"
|
|
586
|
+
],
|
|
587
|
+
"go_imports": [
|
|
588
|
+
"github.com/labstack/echo"
|
|
589
|
+
],
|
|
590
|
+
"commands": {
|
|
591
|
+
"dev": "go run .",
|
|
592
|
+
"watch": "air",
|
|
593
|
+
"build": "go build -o {app_name}",
|
|
594
|
+
"start": "./{app_name}"
|
|
595
|
+
}
|
|
596
|
+
},
|
|
597
|
+
"go_fiber": {
|
|
598
|
+
"files": [
|
|
599
|
+
"go.mod",
|
|
600
|
+
"go.sum",
|
|
601
|
+
"main.go"
|
|
602
|
+
],
|
|
603
|
+
"go_imports": [
|
|
604
|
+
"github.com/gofiber/fiber"
|
|
605
|
+
],
|
|
606
|
+
"commands": {
|
|
607
|
+
"dev": "go run .",
|
|
608
|
+
"watch": "air",
|
|
609
|
+
"build": "go build -o {app_name}",
|
|
610
|
+
"start": "./{app_name}"
|
|
611
|
+
}
|
|
612
|
+
},
|
|
613
|
+
"java_spring_boot_maven": {
|
|
614
|
+
"files": [
|
|
615
|
+
"pom.xml",
|
|
616
|
+
"src/main/java",
|
|
617
|
+
"application.properties"
|
|
618
|
+
],
|
|
619
|
+
"dependencies": [
|
|
620
|
+
"spring-boot"
|
|
621
|
+
],
|
|
622
|
+
"commands": {
|
|
623
|
+
"dev": "mvn spring-boot:run",
|
|
624
|
+
"build": "mvn clean package",
|
|
625
|
+
"start": "java -jar target/{app_name}.jar"
|
|
626
|
+
}
|
|
627
|
+
},
|
|
628
|
+
"java_spring_boot_gradle": {
|
|
629
|
+
"files": [
|
|
630
|
+
"build.gradle",
|
|
631
|
+
"src/main/java",
|
|
632
|
+
"application.properties"
|
|
633
|
+
],
|
|
634
|
+
"dependencies": [
|
|
635
|
+
"spring-boot"
|
|
636
|
+
],
|
|
637
|
+
"commands": {
|
|
638
|
+
"dev": "gradle bootRun",
|
|
639
|
+
"build": "gradle clean build",
|
|
640
|
+
"start": "java -jar build/libs/{app_name}.jar"
|
|
641
|
+
}
|
|
642
|
+
},
|
|
643
|
+
"ruby_rails": {
|
|
644
|
+
"files": [
|
|
645
|
+
"Gemfile",
|
|
646
|
+
"Rakefile",
|
|
647
|
+
"config.ru",
|
|
648
|
+
"config/application.rb"
|
|
649
|
+
],
|
|
650
|
+
"gemfile": [
|
|
651
|
+
"rails"
|
|
652
|
+
],
|
|
653
|
+
"commands": {
|
|
654
|
+
"dev": "bundle exec rails server -p {port}",
|
|
655
|
+
"build": "bundle exec rails assets:precompile",
|
|
656
|
+
"start": "bundle exec puma -C config/puma.rb"
|
|
657
|
+
}
|
|
658
|
+
},
|
|
659
|
+
"php_laravel": {
|
|
660
|
+
"files": [
|
|
661
|
+
"artisan",
|
|
662
|
+
"composer.json",
|
|
663
|
+
"app/Http/Kernel.php"
|
|
664
|
+
],
|
|
665
|
+
"composer": [
|
|
666
|
+
"laravel/framework"
|
|
667
|
+
],
|
|
668
|
+
"commands": {
|
|
669
|
+
"dev": "php artisan serve --port={port}",
|
|
670
|
+
"prod": "php artisan serve --port={port} --env=production"
|
|
671
|
+
}
|
|
672
|
+
},
|
|
673
|
+
"dart_flutter_web": {
|
|
674
|
+
"files": [
|
|
675
|
+
"pubspec.yaml",
|
|
676
|
+
"lib/main.dart",
|
|
677
|
+
"web"
|
|
678
|
+
],
|
|
679
|
+
"dependencies": [
|
|
680
|
+
"flutter"
|
|
681
|
+
],
|
|
682
|
+
"commands": {
|
|
683
|
+
"dev": "flutter run -d web-server --web-port={port}",
|
|
684
|
+
"build": "flutter build web",
|
|
685
|
+
"start": "serve -s build/web -p {port}"
|
|
686
|
+
}
|
|
384
687
|
}
|
|
385
688
|
},
|
|
386
689
|
"deployment_strategies": {
|
|
387
690
|
"production": {
|
|
388
691
|
"nextjs": {
|
|
389
692
|
"method": "pm2",
|
|
693
|
+
"pm2_options": {
|
|
694
|
+
"max_memory_restart": "2G",
|
|
695
|
+
"max_restarts": 10,
|
|
696
|
+
"min_uptime": 3000,
|
|
697
|
+
"autorestart": true,
|
|
698
|
+
"kill_timeout": 5000,
|
|
699
|
+
"listen_timeout": 8000,
|
|
700
|
+
"shutdown_with_message": true
|
|
701
|
+
},
|
|
390
702
|
"steps": [
|
|
391
703
|
"npm install --production",
|
|
392
704
|
"npm run build",
|
|
393
|
-
"pm2 start npm --name '{app_name}' -- start"
|
|
705
|
+
"pm2 start npm --name '{app_name}' -- start --max-memory-restart 2G --max-restarts 10 --min-uptime 3000"
|
|
394
706
|
],
|
|
395
707
|
"health_check": "http://localhost:{port}",
|
|
396
708
|
"environment": {
|
|
@@ -413,14 +725,148 @@
|
|
|
413
725
|
"pm2 start gunicorn --name '{app_name}' -- app:app --bind 0.0.0.0:{port}"
|
|
414
726
|
],
|
|
415
727
|
"health_check": "http://localhost:{port}/health"
|
|
728
|
+
},
|
|
729
|
+
"fastapi": {
|
|
730
|
+
"method": "local-deploy",
|
|
731
|
+
"steps": [
|
|
732
|
+
"pip install -r requirements.txt",
|
|
733
|
+
"claude-mpm local-deploy start --command 'uvicorn main:app --workers 4 --port {port}' --port {port} --auto-restart --health-check http://localhost:{port}/health"
|
|
734
|
+
],
|
|
735
|
+
"health_check": "http://localhost:{port}/health",
|
|
736
|
+
"environment": {
|
|
737
|
+
"UVICORN_LOG_LEVEL": "info"
|
|
738
|
+
}
|
|
739
|
+
},
|
|
740
|
+
"rust_actix": {
|
|
741
|
+
"method": "local-deploy",
|
|
742
|
+
"steps": [
|
|
743
|
+
"cargo build --release",
|
|
744
|
+
"claude-mpm local-deploy start --command './target/release/{app_name}' --port {port} --auto-restart --health-check http://localhost:{port}/health"
|
|
745
|
+
],
|
|
746
|
+
"health_check": "http://localhost:{port}/health",
|
|
747
|
+
"environment": {
|
|
748
|
+
"RUST_LOG": "info"
|
|
749
|
+
}
|
|
750
|
+
},
|
|
751
|
+
"rust_rocket": {
|
|
752
|
+
"method": "local-deploy",
|
|
753
|
+
"steps": [
|
|
754
|
+
"cargo build --release",
|
|
755
|
+
"claude-mpm local-deploy start --command './target/release/{app_name}' --port {port} --auto-restart --health-check http://localhost:{port}/health"
|
|
756
|
+
],
|
|
757
|
+
"health_check": "http://localhost:{port}/health",
|
|
758
|
+
"environment": {
|
|
759
|
+
"RUST_LOG": "info",
|
|
760
|
+
"ROCKET_PORT": "{port}"
|
|
761
|
+
}
|
|
762
|
+
},
|
|
763
|
+
"rust_axum": {
|
|
764
|
+
"method": "local-deploy",
|
|
765
|
+
"steps": [
|
|
766
|
+
"cargo build --release",
|
|
767
|
+
"claude-mpm local-deploy start --command './target/release/{app_name}' --port {port} --auto-restart --health-check http://localhost:{port}/health"
|
|
768
|
+
],
|
|
769
|
+
"health_check": "http://localhost:{port}/health",
|
|
770
|
+
"environment": {
|
|
771
|
+
"RUST_LOG": "info"
|
|
772
|
+
}
|
|
773
|
+
},
|
|
774
|
+
"go_gin": {
|
|
775
|
+
"method": "local-deploy",
|
|
776
|
+
"steps": [
|
|
777
|
+
"go build -o {app_name}",
|
|
778
|
+
"claude-mpm local-deploy start --command './{app_name}' --port {port} --auto-restart --health-check http://localhost:{port}/ping"
|
|
779
|
+
],
|
|
780
|
+
"health_check": "http://localhost:{port}/ping",
|
|
781
|
+
"environment": {
|
|
782
|
+
"GO_ENV": "production"
|
|
783
|
+
}
|
|
784
|
+
},
|
|
785
|
+
"go_echo": {
|
|
786
|
+
"method": "local-deploy",
|
|
787
|
+
"steps": [
|
|
788
|
+
"go build -o {app_name}",
|
|
789
|
+
"claude-mpm local-deploy start --command './{app_name}' --port {port} --auto-restart --health-check http://localhost:{port}/health"
|
|
790
|
+
],
|
|
791
|
+
"health_check": "http://localhost:{port}/health",
|
|
792
|
+
"environment": {
|
|
793
|
+
"GO_ENV": "production"
|
|
794
|
+
}
|
|
795
|
+
},
|
|
796
|
+
"go_fiber": {
|
|
797
|
+
"method": "local-deploy",
|
|
798
|
+
"steps": [
|
|
799
|
+
"go build -o {app_name}",
|
|
800
|
+
"claude-mpm local-deploy start --command './{app_name}' --port {port} --auto-restart --health-check http://localhost:{port}/health"
|
|
801
|
+
],
|
|
802
|
+
"health_check": "http://localhost:{port}/health",
|
|
803
|
+
"environment": {
|
|
804
|
+
"GO_ENV": "production"
|
|
805
|
+
}
|
|
806
|
+
},
|
|
807
|
+
"java_spring_boot_maven": {
|
|
808
|
+
"method": "local-deploy",
|
|
809
|
+
"steps": [
|
|
810
|
+
"mvn clean package",
|
|
811
|
+
"claude-mpm local-deploy start --command 'java -jar target/{app_name}.jar' --port {port} --auto-restart --health-check http://localhost:{port}/actuator/health"
|
|
812
|
+
],
|
|
813
|
+
"health_check": "http://localhost:{port}/actuator/health",
|
|
814
|
+
"environment": {
|
|
815
|
+
"SPRING_PROFILES_ACTIVE": "prod",
|
|
816
|
+
"JAVA_OPTS": "-Xmx512m -Xms256m"
|
|
817
|
+
}
|
|
818
|
+
},
|
|
819
|
+
"java_spring_boot_gradle": {
|
|
820
|
+
"method": "local-deploy",
|
|
821
|
+
"steps": [
|
|
822
|
+
"gradle clean build",
|
|
823
|
+
"claude-mpm local-deploy start --command 'java -jar build/libs/{app_name}.jar' --port {port} --auto-restart --health-check http://localhost:{port}/actuator/health"
|
|
824
|
+
],
|
|
825
|
+
"health_check": "http://localhost:{port}/actuator/health",
|
|
826
|
+
"environment": {
|
|
827
|
+
"SPRING_PROFILES_ACTIVE": "prod",
|
|
828
|
+
"JAVA_OPTS": "-Xmx512m -Xms256m"
|
|
829
|
+
}
|
|
830
|
+
},
|
|
831
|
+
"ruby_rails": {
|
|
832
|
+
"method": "local-deploy",
|
|
833
|
+
"steps": [
|
|
834
|
+
"bundle install --deployment",
|
|
835
|
+
"bundle exec rails db:migrate",
|
|
836
|
+
"claude-mpm local-deploy start --command 'bundle exec puma -C config/puma.rb' --port {port} --auto-restart --health-check http://localhost:{port}/up"
|
|
837
|
+
],
|
|
838
|
+
"health_check": "http://localhost:{port}/up",
|
|
839
|
+
"environment": {
|
|
840
|
+
"RAILS_ENV": "production",
|
|
841
|
+
"RAILS_LOG_TO_STDOUT": "1"
|
|
842
|
+
}
|
|
843
|
+
},
|
|
844
|
+
"php_laravel": {
|
|
845
|
+
"method": "local-deploy",
|
|
846
|
+
"steps": [
|
|
847
|
+
"composer install --optimize-autoloader --no-dev",
|
|
848
|
+
"php artisan migrate --force",
|
|
849
|
+
"claude-mpm local-deploy start --command 'php artisan serve --port={port} --env=production' --port {port} --auto-restart --health-check http://localhost:{port}/health"
|
|
850
|
+
],
|
|
851
|
+
"health_check": "http://localhost:{port}/health",
|
|
852
|
+
"environment": {
|
|
853
|
+
"APP_ENV": "production"
|
|
854
|
+
}
|
|
416
855
|
}
|
|
417
856
|
},
|
|
418
857
|
"development": {
|
|
419
858
|
"nextjs": {
|
|
420
859
|
"method": "pm2",
|
|
860
|
+
"pm2_options": {
|
|
861
|
+
"max_memory_restart": "2G",
|
|
862
|
+
"max_restarts": 10,
|
|
863
|
+
"min_uptime": 3000,
|
|
864
|
+
"autorestart": true,
|
|
865
|
+
"watch": true
|
|
866
|
+
},
|
|
421
867
|
"steps": [
|
|
422
868
|
"npm install",
|
|
423
|
-
"pm2 start npm --name '{app_name}-dev' -- run dev"
|
|
869
|
+
"pm2 start npm --name '{app_name}-dev' -- run dev --max-memory-restart 2G --max-restarts 10 --min-uptime 3000 --watch"
|
|
424
870
|
],
|
|
425
871
|
"environment": {
|
|
426
872
|
"NODE_ENV": "development"
|
|
@@ -432,6 +878,132 @@
|
|
|
432
878
|
"npm install",
|
|
433
879
|
"pm2 start npm --name '{app_name}-dev' -- start"
|
|
434
880
|
]
|
|
881
|
+
},
|
|
882
|
+
"fastapi": {
|
|
883
|
+
"method": "local-deploy",
|
|
884
|
+
"steps": [
|
|
885
|
+
"pip install -r requirements.txt",
|
|
886
|
+
"claude-mpm local-deploy start --command 'uvicorn main:app --reload --port {port}' --port {port} --auto-restart --health-check http://localhost:{port}/docs"
|
|
887
|
+
],
|
|
888
|
+
"environment": {
|
|
889
|
+
"ENVIRONMENT": "development",
|
|
890
|
+
"DEBUG": "True"
|
|
891
|
+
}
|
|
892
|
+
},
|
|
893
|
+
"express": {
|
|
894
|
+
"method": "local-deploy",
|
|
895
|
+
"steps": [
|
|
896
|
+
"npm install",
|
|
897
|
+
"claude-mpm local-deploy start --command 'nodemon server.js' --port {port} --auto-restart --health-check http://localhost:{port}/health"
|
|
898
|
+
],
|
|
899
|
+
"environment": {
|
|
900
|
+
"NODE_ENV": "development"
|
|
901
|
+
}
|
|
902
|
+
},
|
|
903
|
+
"rust_actix": {
|
|
904
|
+
"method": "local-deploy",
|
|
905
|
+
"steps": [
|
|
906
|
+
"claude-mpm local-deploy start --command 'cargo watch -x run' --port {port} --auto-restart --health-check http://localhost:{port}/health"
|
|
907
|
+
],
|
|
908
|
+
"environment": {
|
|
909
|
+
"RUST_LOG": "debug"
|
|
910
|
+
}
|
|
911
|
+
},
|
|
912
|
+
"rust_rocket": {
|
|
913
|
+
"method": "local-deploy",
|
|
914
|
+
"steps": [
|
|
915
|
+
"claude-mpm local-deploy start --command 'cargo watch -x run' --port {port} --auto-restart --health-check http://localhost:{port}/health"
|
|
916
|
+
],
|
|
917
|
+
"environment": {
|
|
918
|
+
"RUST_LOG": "debug"
|
|
919
|
+
}
|
|
920
|
+
},
|
|
921
|
+
"rust_axum": {
|
|
922
|
+
"method": "local-deploy",
|
|
923
|
+
"steps": [
|
|
924
|
+
"claude-mpm local-deploy start --command 'cargo watch -x run' --port {port} --auto-restart --health-check http://localhost:{port}/health"
|
|
925
|
+
],
|
|
926
|
+
"environment": {
|
|
927
|
+
"RUST_LOG": "debug"
|
|
928
|
+
}
|
|
929
|
+
},
|
|
930
|
+
"go_gin": {
|
|
931
|
+
"method": "local-deploy",
|
|
932
|
+
"steps": [
|
|
933
|
+
"claude-mpm local-deploy start --command 'air' --port {port} --auto-restart --health-check http://localhost:{port}/ping",
|
|
934
|
+
"fallback: go run ."
|
|
935
|
+
],
|
|
936
|
+
"environment": {
|
|
937
|
+
"GO_ENV": "development"
|
|
938
|
+
}
|
|
939
|
+
},
|
|
940
|
+
"go_echo": {
|
|
941
|
+
"method": "local-deploy",
|
|
942
|
+
"steps": [
|
|
943
|
+
"claude-mpm local-deploy start --command 'air' --port {port} --auto-restart --health-check http://localhost:{port}/health",
|
|
944
|
+
"fallback: go run ."
|
|
945
|
+
],
|
|
946
|
+
"environment": {
|
|
947
|
+
"GO_ENV": "development"
|
|
948
|
+
}
|
|
949
|
+
},
|
|
950
|
+
"go_fiber": {
|
|
951
|
+
"method": "local-deploy",
|
|
952
|
+
"steps": [
|
|
953
|
+
"claude-mpm local-deploy start --command 'air' --port {port} --auto-restart --health-check http://localhost:{port}/health",
|
|
954
|
+
"fallback: go run ."
|
|
955
|
+
],
|
|
956
|
+
"environment": {
|
|
957
|
+
"GO_ENV": "development"
|
|
958
|
+
}
|
|
959
|
+
},
|
|
960
|
+
"java_spring_boot_maven": {
|
|
961
|
+
"method": "local-deploy",
|
|
962
|
+
"steps": [
|
|
963
|
+
"claude-mpm local-deploy start --command 'mvn spring-boot:run' --port {port} --auto-restart --health-check http://localhost:{port}/actuator/health"
|
|
964
|
+
],
|
|
965
|
+
"environment": {
|
|
966
|
+
"SPRING_PROFILES_ACTIVE": "dev",
|
|
967
|
+
"LOGGING_LEVEL_ROOT": "DEBUG"
|
|
968
|
+
}
|
|
969
|
+
},
|
|
970
|
+
"java_spring_boot_gradle": {
|
|
971
|
+
"method": "local-deploy",
|
|
972
|
+
"steps": [
|
|
973
|
+
"claude-mpm local-deploy start --command 'gradle bootRun' --port {port} --auto-restart --health-check http://localhost:{port}/actuator/health"
|
|
974
|
+
],
|
|
975
|
+
"environment": {
|
|
976
|
+
"SPRING_PROFILES_ACTIVE": "dev",
|
|
977
|
+
"LOGGING_LEVEL_ROOT": "DEBUG"
|
|
978
|
+
}
|
|
979
|
+
},
|
|
980
|
+
"ruby_rails": {
|
|
981
|
+
"method": "local-deploy",
|
|
982
|
+
"steps": [
|
|
983
|
+
"bundle install",
|
|
984
|
+
"claude-mpm local-deploy start --command 'bundle exec rails server -p {port}' --port {port} --auto-restart --health-check http://localhost:{port}/up"
|
|
985
|
+
],
|
|
986
|
+
"environment": {
|
|
987
|
+
"RAILS_ENV": "development"
|
|
988
|
+
}
|
|
989
|
+
},
|
|
990
|
+
"php_laravel": {
|
|
991
|
+
"method": "local-deploy",
|
|
992
|
+
"steps": [
|
|
993
|
+
"composer install",
|
|
994
|
+
"claude-mpm local-deploy start --command 'php artisan serve --port={port}' --port {port} --auto-restart --health-check http://localhost:{port}/health"
|
|
995
|
+
],
|
|
996
|
+
"environment": {
|
|
997
|
+
"APP_ENV": "local"
|
|
998
|
+
}
|
|
999
|
+
},
|
|
1000
|
+
"dart_flutter_web": {
|
|
1001
|
+
"method": "local-deploy",
|
|
1002
|
+
"steps": [
|
|
1003
|
+
"flutter pub get",
|
|
1004
|
+
"claude-mpm local-deploy start --command 'flutter run -d web-server --web-port={port}' --port {port} --auto-restart"
|
|
1005
|
+
],
|
|
1006
|
+
"hot_reload": true
|
|
435
1007
|
}
|
|
436
1008
|
},
|
|
437
1009
|
"docker": {
|
|
@@ -479,6 +1051,425 @@
|
|
|
479
1051
|
"action": "increase_memory_limit"
|
|
480
1052
|
}
|
|
481
1053
|
},
|
|
1054
|
+
"health_checks": {
|
|
1055
|
+
"nextjs": {
|
|
1056
|
+
"primary_endpoints": [
|
|
1057
|
+
"/api/health",
|
|
1058
|
+
"/"
|
|
1059
|
+
],
|
|
1060
|
+
"build_artifacts": [
|
|
1061
|
+
".next/BUILD_ID",
|
|
1062
|
+
".next/routes-manifest.json"
|
|
1063
|
+
],
|
|
1064
|
+
"static_assets": "/_next/static/chunks",
|
|
1065
|
+
"validation_steps": [
|
|
1066
|
+
"verify_build_artifacts",
|
|
1067
|
+
"test_primary_endpoint",
|
|
1068
|
+
"validate_static_assets"
|
|
1069
|
+
]
|
|
1070
|
+
}
|
|
1071
|
+
},
|
|
1072
|
+
"pm2_monitoring": {
|
|
1073
|
+
"metrics_extraction": {
|
|
1074
|
+
"enabled": true,
|
|
1075
|
+
"commands": {
|
|
1076
|
+
"status": "pm2 jlist",
|
|
1077
|
+
"describe": "pm2 describe {app_name}",
|
|
1078
|
+
"metrics": "pm2 show {app_name}"
|
|
1079
|
+
},
|
|
1080
|
+
"tracked_metrics": [
|
|
1081
|
+
"restart_count",
|
|
1082
|
+
"uptime",
|
|
1083
|
+
"memory_usage",
|
|
1084
|
+
"cpu_usage",
|
|
1085
|
+
"status",
|
|
1086
|
+
"unstable_restarts"
|
|
1087
|
+
]
|
|
1088
|
+
},
|
|
1089
|
+
"alerts": {
|
|
1090
|
+
"high_restart_count": {
|
|
1091
|
+
"threshold": 5,
|
|
1092
|
+
"action": "investigate_crash_logs"
|
|
1093
|
+
},
|
|
1094
|
+
"memory_near_limit": {
|
|
1095
|
+
"threshold": "1.8G",
|
|
1096
|
+
"action": "preemptive_restart_warning"
|
|
1097
|
+
}
|
|
1098
|
+
}
|
|
1099
|
+
},
|
|
1100
|
+
"best_practices": {
|
|
1101
|
+
"port_selection": {
|
|
1102
|
+
"description": "Recommended default ports by language and framework",
|
|
1103
|
+
"nodejs": {
|
|
1104
|
+
"default_ports": [
|
|
1105
|
+
3000,
|
|
1106
|
+
3001,
|
|
1107
|
+
3002
|
|
1108
|
+
],
|
|
1109
|
+
"frameworks": {
|
|
1110
|
+
"express": 3000,
|
|
1111
|
+
"nextjs": 3000,
|
|
1112
|
+
"nestjs": 3000
|
|
1113
|
+
}
|
|
1114
|
+
},
|
|
1115
|
+
"python": {
|
|
1116
|
+
"default_ports": [
|
|
1117
|
+
8000,
|
|
1118
|
+
5000,
|
|
1119
|
+
8080
|
|
1120
|
+
],
|
|
1121
|
+
"frameworks": {
|
|
1122
|
+
"fastapi": 8000,
|
|
1123
|
+
"django": 8000,
|
|
1124
|
+
"flask": 5000
|
|
1125
|
+
}
|
|
1126
|
+
},
|
|
1127
|
+
"rust": {
|
|
1128
|
+
"default_ports": [
|
|
1129
|
+
8080,
|
|
1130
|
+
3000
|
|
1131
|
+
],
|
|
1132
|
+
"frameworks": {
|
|
1133
|
+
"actix-web": 8080,
|
|
1134
|
+
"rocket": 8000,
|
|
1135
|
+
"axum": 3000
|
|
1136
|
+
}
|
|
1137
|
+
},
|
|
1138
|
+
"go": {
|
|
1139
|
+
"default_ports": [
|
|
1140
|
+
8080,
|
|
1141
|
+
8000
|
|
1142
|
+
],
|
|
1143
|
+
"frameworks": {
|
|
1144
|
+
"gin": 8080,
|
|
1145
|
+
"echo": 1323,
|
|
1146
|
+
"fiber": 3000
|
|
1147
|
+
}
|
|
1148
|
+
},
|
|
1149
|
+
"java": {
|
|
1150
|
+
"default_ports": [
|
|
1151
|
+
8080,
|
|
1152
|
+
8443
|
|
1153
|
+
],
|
|
1154
|
+
"frameworks": {
|
|
1155
|
+
"spring-boot": 8080,
|
|
1156
|
+
"tomcat": 8080
|
|
1157
|
+
}
|
|
1158
|
+
},
|
|
1159
|
+
"ruby": {
|
|
1160
|
+
"default_ports": [
|
|
1161
|
+
3000,
|
|
1162
|
+
9292
|
|
1163
|
+
],
|
|
1164
|
+
"frameworks": {
|
|
1165
|
+
"rails": 3000,
|
|
1166
|
+
"sinatra": 4567
|
|
1167
|
+
}
|
|
1168
|
+
},
|
|
1169
|
+
"php": {
|
|
1170
|
+
"default_ports": [
|
|
1171
|
+
8000,
|
|
1172
|
+
8080
|
|
1173
|
+
],
|
|
1174
|
+
"frameworks": {
|
|
1175
|
+
"laravel": 8000,
|
|
1176
|
+
"symfony": 8000
|
|
1177
|
+
}
|
|
1178
|
+
},
|
|
1179
|
+
"dart": {
|
|
1180
|
+
"default_ports": [
|
|
1181
|
+
8080
|
|
1182
|
+
],
|
|
1183
|
+
"frameworks": {
|
|
1184
|
+
"flutter-web": 8080,
|
|
1185
|
+
"shelf": 8080
|
|
1186
|
+
}
|
|
1187
|
+
}
|
|
1188
|
+
},
|
|
1189
|
+
"health_checks": {
|
|
1190
|
+
"description": "Framework-specific health check endpoints",
|
|
1191
|
+
"python_fastapi": {
|
|
1192
|
+
"primary": "/health",
|
|
1193
|
+
"alternatives": [
|
|
1194
|
+
"/docs",
|
|
1195
|
+
"/openapi.json"
|
|
1196
|
+
],
|
|
1197
|
+
"expected_status": 200,
|
|
1198
|
+
"timeout": 5
|
|
1199
|
+
},
|
|
1200
|
+
"python_django": {
|
|
1201
|
+
"primary": "/health",
|
|
1202
|
+
"alternatives": [
|
|
1203
|
+
"/admin"
|
|
1204
|
+
],
|
|
1205
|
+
"expected_status": 200,
|
|
1206
|
+
"timeout": 5
|
|
1207
|
+
},
|
|
1208
|
+
"nodejs_express": {
|
|
1209
|
+
"primary": "/health",
|
|
1210
|
+
"alternatives": [
|
|
1211
|
+
"/ping",
|
|
1212
|
+
"/ready"
|
|
1213
|
+
],
|
|
1214
|
+
"expected_status": 200,
|
|
1215
|
+
"timeout": 5
|
|
1216
|
+
},
|
|
1217
|
+
"rust_actix": {
|
|
1218
|
+
"primary": "/health",
|
|
1219
|
+
"expected_status": 200,
|
|
1220
|
+
"timeout": 5
|
|
1221
|
+
},
|
|
1222
|
+
"rust_rocket": {
|
|
1223
|
+
"primary": "/health",
|
|
1224
|
+
"expected_status": 200,
|
|
1225
|
+
"timeout": 5
|
|
1226
|
+
},
|
|
1227
|
+
"rust_axum": {
|
|
1228
|
+
"primary": "/health",
|
|
1229
|
+
"expected_status": 200,
|
|
1230
|
+
"timeout": 5
|
|
1231
|
+
},
|
|
1232
|
+
"go_gin": {
|
|
1233
|
+
"primary": "/ping",
|
|
1234
|
+
"alternatives": [
|
|
1235
|
+
"/health"
|
|
1236
|
+
],
|
|
1237
|
+
"expected_status": 200,
|
|
1238
|
+
"timeout": 5
|
|
1239
|
+
},
|
|
1240
|
+
"go_echo": {
|
|
1241
|
+
"primary": "/health",
|
|
1242
|
+
"expected_status": 200,
|
|
1243
|
+
"timeout": 5
|
|
1244
|
+
},
|
|
1245
|
+
"go_fiber": {
|
|
1246
|
+
"primary": "/health",
|
|
1247
|
+
"expected_status": 200,
|
|
1248
|
+
"timeout": 5
|
|
1249
|
+
},
|
|
1250
|
+
"java_spring_boot": {
|
|
1251
|
+
"primary": "/actuator/health",
|
|
1252
|
+
"alternatives": [
|
|
1253
|
+
"/actuator/info"
|
|
1254
|
+
],
|
|
1255
|
+
"expected_status": 200,
|
|
1256
|
+
"timeout": 10,
|
|
1257
|
+
"management_port": 8081
|
|
1258
|
+
},
|
|
1259
|
+
"ruby_rails": {
|
|
1260
|
+
"primary": "/up",
|
|
1261
|
+
"alternatives": [
|
|
1262
|
+
"/health"
|
|
1263
|
+
],
|
|
1264
|
+
"expected_status": 200,
|
|
1265
|
+
"timeout": 5
|
|
1266
|
+
},
|
|
1267
|
+
"php_laravel": {
|
|
1268
|
+
"primary": "/health",
|
|
1269
|
+
"alternatives": [
|
|
1270
|
+
"/api/health"
|
|
1271
|
+
],
|
|
1272
|
+
"expected_status": 200,
|
|
1273
|
+
"timeout": 5
|
|
1274
|
+
},
|
|
1275
|
+
"recommendation": {
|
|
1276
|
+
"endpoint": "Always configure /health endpoint",
|
|
1277
|
+
"check_interval": "30 seconds recommended",
|
|
1278
|
+
"timeout": "5 seconds maximum",
|
|
1279
|
+
"retry_attempts": 3
|
|
1280
|
+
}
|
|
1281
|
+
},
|
|
1282
|
+
"auto_restart": {
|
|
1283
|
+
"description": "Auto-restart configuration best practices",
|
|
1284
|
+
"enabled": true,
|
|
1285
|
+
"max_attempts": 5,
|
|
1286
|
+
"backoff_strategy": "exponential (2s, 4s, 8s, 16s, 32s)",
|
|
1287
|
+
"circuit_breaker": {
|
|
1288
|
+
"enabled": true,
|
|
1289
|
+
"threshold": 3,
|
|
1290
|
+
"window_seconds": 300,
|
|
1291
|
+
"reset_seconds": 600
|
|
1292
|
+
},
|
|
1293
|
+
"recommendation": "Enable auto-restart for all production deployments"
|
|
1294
|
+
},
|
|
1295
|
+
"log_monitoring": {
|
|
1296
|
+
"description": "Framework-specific log patterns to monitor",
|
|
1297
|
+
"python": {
|
|
1298
|
+
"error_patterns": [
|
|
1299
|
+
"ERROR",
|
|
1300
|
+
"CRITICAL",
|
|
1301
|
+
"Exception",
|
|
1302
|
+
"Traceback",
|
|
1303
|
+
"Failed to"
|
|
1304
|
+
],
|
|
1305
|
+
"action": "Trigger auto-restart on critical patterns"
|
|
1306
|
+
},
|
|
1307
|
+
"nodejs": {
|
|
1308
|
+
"error_patterns": [
|
|
1309
|
+
"ERROR",
|
|
1310
|
+
"Error:",
|
|
1311
|
+
"Exception",
|
|
1312
|
+
"Unhandled",
|
|
1313
|
+
"ECONNREFUSED"
|
|
1314
|
+
],
|
|
1315
|
+
"action": "Trigger auto-restart on critical patterns"
|
|
1316
|
+
},
|
|
1317
|
+
"rust": {
|
|
1318
|
+
"error_patterns": [
|
|
1319
|
+
"ERROR",
|
|
1320
|
+
"FATAL",
|
|
1321
|
+
"panic",
|
|
1322
|
+
"thread .* panicked"
|
|
1323
|
+
],
|
|
1324
|
+
"action": "Trigger auto-restart on critical patterns"
|
|
1325
|
+
},
|
|
1326
|
+
"go": {
|
|
1327
|
+
"error_patterns": [
|
|
1328
|
+
"ERROR",
|
|
1329
|
+
"FATAL",
|
|
1330
|
+
"panic:",
|
|
1331
|
+
"runtime error"
|
|
1332
|
+
],
|
|
1333
|
+
"action": "Trigger auto-restart on critical patterns"
|
|
1334
|
+
},
|
|
1335
|
+
"java": {
|
|
1336
|
+
"error_patterns": [
|
|
1337
|
+
"ERROR",
|
|
1338
|
+
"SEVERE",
|
|
1339
|
+
"Exception",
|
|
1340
|
+
"java.lang.",
|
|
1341
|
+
"OutOfMemoryError"
|
|
1342
|
+
],
|
|
1343
|
+
"action": "Trigger auto-restart on critical patterns"
|
|
1344
|
+
},
|
|
1345
|
+
"ruby": {
|
|
1346
|
+
"error_patterns": [
|
|
1347
|
+
"ERROR",
|
|
1348
|
+
"FATAL",
|
|
1349
|
+
"Exception"
|
|
1350
|
+
],
|
|
1351
|
+
"action": "Trigger auto-restart on critical patterns"
|
|
1352
|
+
},
|
|
1353
|
+
"php": {
|
|
1354
|
+
"error_patterns": [
|
|
1355
|
+
"Fatal error",
|
|
1356
|
+
"Parse error",
|
|
1357
|
+
"Exception"
|
|
1358
|
+
],
|
|
1359
|
+
"action": "Trigger auto-restart on critical patterns"
|
|
1360
|
+
},
|
|
1361
|
+
"enabled": true
|
|
1362
|
+
},
|
|
1363
|
+
"graceful_shutdown": {
|
|
1364
|
+
"description": "Graceful shutdown patterns by language",
|
|
1365
|
+
"nodejs": {
|
|
1366
|
+
"signal": "SIGTERM",
|
|
1367
|
+
"timeout": 10,
|
|
1368
|
+
"pattern": "process.on('SIGTERM', gracefulShutdown)"
|
|
1369
|
+
},
|
|
1370
|
+
"python": {
|
|
1371
|
+
"signal": "SIGTERM",
|
|
1372
|
+
"timeout": 30,
|
|
1373
|
+
"pattern": "signal.signal(signal.SIGTERM, shutdown_handler)"
|
|
1374
|
+
},
|
|
1375
|
+
"rust": {
|
|
1376
|
+
"signal": "SIGTERM",
|
|
1377
|
+
"timeout": 10,
|
|
1378
|
+
"pattern": "tokio::signal::ctrl_c() or signal handlers"
|
|
1379
|
+
},
|
|
1380
|
+
"go": {
|
|
1381
|
+
"signal": "SIGTERM",
|
|
1382
|
+
"timeout": 10,
|
|
1383
|
+
"pattern": "signal.Notify(quit, syscall.SIGTERM)"
|
|
1384
|
+
},
|
|
1385
|
+
"java": {
|
|
1386
|
+
"signal": "SIGTERM",
|
|
1387
|
+
"timeout": 30,
|
|
1388
|
+
"pattern": "server.shutdown=graceful in application.properties"
|
|
1389
|
+
},
|
|
1390
|
+
"ruby": {
|
|
1391
|
+
"signal": "SIGTERM",
|
|
1392
|
+
"timeout": 30,
|
|
1393
|
+
"pattern": "Puma graceful shutdown via config"
|
|
1394
|
+
},
|
|
1395
|
+
"php": {
|
|
1396
|
+
"signal": "SIGTERM",
|
|
1397
|
+
"timeout": 10,
|
|
1398
|
+
"pattern": "PHP-FPM graceful shutdown"
|
|
1399
|
+
},
|
|
1400
|
+
"recommendation": "Always implement graceful shutdown handlers"
|
|
1401
|
+
},
|
|
1402
|
+
"environment_configuration": {
|
|
1403
|
+
"description": "Environment variable patterns by framework",
|
|
1404
|
+
"development": {
|
|
1405
|
+
"python_fastapi": {
|
|
1406
|
+
"ENVIRONMENT": "development",
|
|
1407
|
+
"DEBUG": "True",
|
|
1408
|
+
"LOG_LEVEL": "debug",
|
|
1409
|
+
"RELOAD": "true"
|
|
1410
|
+
},
|
|
1411
|
+
"nodejs_express": {
|
|
1412
|
+
"NODE_ENV": "development",
|
|
1413
|
+
"DEBUG": "*"
|
|
1414
|
+
},
|
|
1415
|
+
"rust": {
|
|
1416
|
+
"RUST_LOG": "debug"
|
|
1417
|
+
},
|
|
1418
|
+
"go": {
|
|
1419
|
+
"GO_ENV": "development"
|
|
1420
|
+
},
|
|
1421
|
+
"java_spring_boot": {
|
|
1422
|
+
"SPRING_PROFILES_ACTIVE": "dev",
|
|
1423
|
+
"LOGGING_LEVEL_ROOT": "DEBUG"
|
|
1424
|
+
},
|
|
1425
|
+
"ruby_rails": {
|
|
1426
|
+
"RAILS_ENV": "development"
|
|
1427
|
+
},
|
|
1428
|
+
"php_laravel": {
|
|
1429
|
+
"APP_ENV": "local",
|
|
1430
|
+
"APP_DEBUG": "true"
|
|
1431
|
+
}
|
|
1432
|
+
},
|
|
1433
|
+
"production": {
|
|
1434
|
+
"python_fastapi": {
|
|
1435
|
+
"ENVIRONMENT": "production",
|
|
1436
|
+
"DEBUG": "False",
|
|
1437
|
+
"LOG_LEVEL": "info",
|
|
1438
|
+
"WORKERS": "4"
|
|
1439
|
+
},
|
|
1440
|
+
"nodejs_express": {
|
|
1441
|
+
"NODE_ENV": "production"
|
|
1442
|
+
},
|
|
1443
|
+
"rust": {
|
|
1444
|
+
"RUST_LOG": "info"
|
|
1445
|
+
},
|
|
1446
|
+
"go": {
|
|
1447
|
+
"GO_ENV": "production"
|
|
1448
|
+
},
|
|
1449
|
+
"java_spring_boot": {
|
|
1450
|
+
"SPRING_PROFILES_ACTIVE": "prod",
|
|
1451
|
+
"LOGGING_LEVEL_ROOT": "INFO",
|
|
1452
|
+
"JAVA_OPTS": "-Xmx512m -Xms256m"
|
|
1453
|
+
},
|
|
1454
|
+
"ruby_rails": {
|
|
1455
|
+
"RAILS_ENV": "production",
|
|
1456
|
+
"RAILS_LOG_TO_STDOUT": "1"
|
|
1457
|
+
},
|
|
1458
|
+
"php_laravel": {
|
|
1459
|
+
"APP_ENV": "production",
|
|
1460
|
+
"APP_DEBUG": "false"
|
|
1461
|
+
}
|
|
1462
|
+
}
|
|
1463
|
+
},
|
|
1464
|
+
"resource_monitoring": {
|
|
1465
|
+
"description": "Resource thresholds for health monitoring",
|
|
1466
|
+
"cpu_threshold": 80.0,
|
|
1467
|
+
"memory_threshold_mb": 500,
|
|
1468
|
+
"fd_threshold_percent": 0.8,
|
|
1469
|
+
"check_interval": 30,
|
|
1470
|
+
"alert_on_sustained_high_usage": true
|
|
1471
|
+
}
|
|
1472
|
+
},
|
|
482
1473
|
"security": {
|
|
483
1474
|
"port_exposure": "localhost_only",
|
|
484
1475
|
"process_isolation": "user_level",
|
|
@@ -579,6 +1570,106 @@
|
|
|
579
1570
|
"analyze_crash_pattern",
|
|
580
1571
|
"suggest_fixes"
|
|
581
1572
|
]
|
|
1573
|
+
},
|
|
1574
|
+
{
|
|
1575
|
+
"user": "Deploy my FastAPI app with auto-restart",
|
|
1576
|
+
"response": "I'll deploy your FastAPI application with uvicorn and enable auto-restart for production stability...",
|
|
1577
|
+
"actions": [
|
|
1578
|
+
"detect_fastapi_framework",
|
|
1579
|
+
"install_dependencies",
|
|
1580
|
+
"execute_local_deploy_with_uvicorn",
|
|
1581
|
+
"configure_health_check_at_/health",
|
|
1582
|
+
"enable_auto_restart",
|
|
1583
|
+
"verify_endpoint_responds",
|
|
1584
|
+
"report_deployment_url"
|
|
1585
|
+
]
|
|
1586
|
+
},
|
|
1587
|
+
{
|
|
1588
|
+
"user": "Start my Rust Actix-web app in dev mode",
|
|
1589
|
+
"response": "I'll start your Actix-web application with cargo watch for hot reloading...",
|
|
1590
|
+
"actions": [
|
|
1591
|
+
"detect_rust_actix",
|
|
1592
|
+
"execute_cargo_watch",
|
|
1593
|
+
"configure_health_check_at_/health",
|
|
1594
|
+
"monitor_compilation",
|
|
1595
|
+
"verify_server_running",
|
|
1596
|
+
"report_deployment_url"
|
|
1597
|
+
]
|
|
1598
|
+
},
|
|
1599
|
+
{
|
|
1600
|
+
"user": "Deploy my Go Gin app to production",
|
|
1601
|
+
"response": "I'll build and deploy your Go Gin application with auto-restart enabled...",
|
|
1602
|
+
"actions": [
|
|
1603
|
+
"detect_go_gin",
|
|
1604
|
+
"build_go_binary",
|
|
1605
|
+
"execute_local_deploy_start",
|
|
1606
|
+
"configure_health_check_at_/ping",
|
|
1607
|
+
"enable_auto_restart",
|
|
1608
|
+
"verify_endpoint_responds",
|
|
1609
|
+
"report_deployment_url"
|
|
1610
|
+
]
|
|
1611
|
+
},
|
|
1612
|
+
{
|
|
1613
|
+
"user": "Run my Spring Boot app in development",
|
|
1614
|
+
"response": "I'll start your Spring Boot application with Maven in development mode...",
|
|
1615
|
+
"actions": [
|
|
1616
|
+
"detect_spring_boot",
|
|
1617
|
+
"execute_mvn_spring_boot_run",
|
|
1618
|
+
"configure_health_check_at_/actuator/health",
|
|
1619
|
+
"wait_for_startup",
|
|
1620
|
+
"verify_actuator_endpoint",
|
|
1621
|
+
"report_deployment_url"
|
|
1622
|
+
]
|
|
1623
|
+
},
|
|
1624
|
+
{
|
|
1625
|
+
"user": "Deploy my Rails app with Puma",
|
|
1626
|
+
"response": "I'll deploy your Rails application with Puma and enable auto-restart...",
|
|
1627
|
+
"actions": [
|
|
1628
|
+
"detect_rails",
|
|
1629
|
+
"bundle_install",
|
|
1630
|
+
"run_migrations",
|
|
1631
|
+
"execute_local_deploy_with_puma",
|
|
1632
|
+
"configure_health_check_at_/up",
|
|
1633
|
+
"enable_auto_restart",
|
|
1634
|
+
"verify_endpoint_responds",
|
|
1635
|
+
"report_deployment_url"
|
|
1636
|
+
]
|
|
1637
|
+
},
|
|
1638
|
+
{
|
|
1639
|
+
"user": "Start my Laravel app locally",
|
|
1640
|
+
"response": "I'll start your Laravel application with php artisan serve...",
|
|
1641
|
+
"actions": [
|
|
1642
|
+
"detect_laravel",
|
|
1643
|
+
"composer_install",
|
|
1644
|
+
"run_migrations",
|
|
1645
|
+
"execute_local_deploy_artisan_serve",
|
|
1646
|
+
"configure_health_check_at_/health",
|
|
1647
|
+
"verify_endpoint_responds",
|
|
1648
|
+
"report_deployment_url"
|
|
1649
|
+
]
|
|
1650
|
+
},
|
|
1651
|
+
{
|
|
1652
|
+
"user": "Deploy my Express.js API",
|
|
1653
|
+
"response": "I'll deploy your Express.js API with nodemon for development...",
|
|
1654
|
+
"actions": [
|
|
1655
|
+
"detect_express",
|
|
1656
|
+
"npm_install",
|
|
1657
|
+
"execute_local_deploy_with_nodemon",
|
|
1658
|
+
"configure_health_check_at_/health",
|
|
1659
|
+
"enable_auto_restart",
|
|
1660
|
+
"verify_endpoint_responds",
|
|
1661
|
+
"report_deployment_url"
|
|
1662
|
+
]
|
|
1663
|
+
},
|
|
1664
|
+
{
|
|
1665
|
+
"user": "Check health of all deployments",
|
|
1666
|
+
"response": "I'll check the health status of all active deployments...",
|
|
1667
|
+
"actions": [
|
|
1668
|
+
"list_all_deployments",
|
|
1669
|
+
"check_health_for_each",
|
|
1670
|
+
"report_health_status",
|
|
1671
|
+
"identify_unhealthy_services"
|
|
1672
|
+
]
|
|
582
1673
|
}
|
|
583
1674
|
],
|
|
584
1675
|
"usage_guide": {
|
|
@@ -615,5 +1706,135 @@
|
|
|
615
1706
|
"state_file_corruption": "Delete .claude-mpm/deployment-state.json to reset (will lose tracking)"
|
|
616
1707
|
}
|
|
617
1708
|
},
|
|
618
|
-
"agent_version": "
|
|
1709
|
+
"agent_version": "2.0.1",
|
|
1710
|
+
"knowledge": {
|
|
1711
|
+
"best_practices": [
|
|
1712
|
+
"Review file commit history before modifications: git log --oneline -5 <file_path>",
|
|
1713
|
+
"Write succinct commit messages explaining WHAT changed and WHY",
|
|
1714
|
+
"Follow conventional commits format: feat/fix/docs/refactor/perf/test/chore"
|
|
1715
|
+
]
|
|
1716
|
+
},
|
|
1717
|
+
"tool_use_patterns": {
|
|
1718
|
+
"framework_detection": {
|
|
1719
|
+
"description": "Detect the framework before deployment",
|
|
1720
|
+
"workflow": [
|
|
1721
|
+
"Check for framework-specific files (Cargo.toml, go.mod, pom.xml, package.json, etc.)",
|
|
1722
|
+
"Read configuration files to identify dependencies",
|
|
1723
|
+
"Match against detection_patterns to determine framework",
|
|
1724
|
+
"Select appropriate deployment strategy based on framework"
|
|
1725
|
+
]
|
|
1726
|
+
},
|
|
1727
|
+
"deployment_workflow": {
|
|
1728
|
+
"description": "Standard deployment workflow for all frameworks",
|
|
1729
|
+
"steps": [
|
|
1730
|
+
"1. Detect framework using detection_patterns",
|
|
1731
|
+
"2. Choose deployment mode (development or production)",
|
|
1732
|
+
"3. Install dependencies if needed",
|
|
1733
|
+
"4. Build application if production mode",
|
|
1734
|
+
"5. Execute local-deploy start command with appropriate flags",
|
|
1735
|
+
"6. Configure health check endpoint based on framework",
|
|
1736
|
+
"7. Enable auto-restart for production deployments",
|
|
1737
|
+
"8. Verify endpoint responds before reporting success",
|
|
1738
|
+
"9. Report deployment URL with health status"
|
|
1739
|
+
]
|
|
1740
|
+
},
|
|
1741
|
+
"health_check_configuration": {
|
|
1742
|
+
"description": "Configure health checks based on framework",
|
|
1743
|
+
"examples": {
|
|
1744
|
+
"fastapi": "claude-mpm local-deploy start --command 'uvicorn main:app --reload' --port 8000 --auto-restart --health-check http://localhost:8000/health",
|
|
1745
|
+
"spring_boot": "claude-mpm local-deploy start --command 'mvn spring-boot:run' --port 8080 --auto-restart --health-check http://localhost:8080/actuator/health",
|
|
1746
|
+
"gin": "claude-mpm local-deploy start --command './app' --port 8080 --auto-restart --health-check http://localhost:8080/ping",
|
|
1747
|
+
"actix": "claude-mpm local-deploy start --command 'cargo run' --port 8080 --auto-restart --health-check http://localhost:8080/health"
|
|
1748
|
+
}
|
|
1749
|
+
},
|
|
1750
|
+
"auto_restart_patterns": {
|
|
1751
|
+
"description": "Enable auto-restart for production stability",
|
|
1752
|
+
"when_to_use": [
|
|
1753
|
+
"Production deployments",
|
|
1754
|
+
"Long-running services",
|
|
1755
|
+
"APIs with high availability requirements",
|
|
1756
|
+
"Services that may encounter transient failures"
|
|
1757
|
+
],
|
|
1758
|
+
"configuration": {
|
|
1759
|
+
"max_attempts": 5,
|
|
1760
|
+
"backoff_strategy": "exponential",
|
|
1761
|
+
"circuit_breaker_enabled": true
|
|
1762
|
+
}
|
|
1763
|
+
},
|
|
1764
|
+
"log_monitoring_setup": {
|
|
1765
|
+
"description": "Configure log monitoring for automatic issue detection",
|
|
1766
|
+
"python_example": "Monitor for: ERROR, CRITICAL, Exception, Traceback",
|
|
1767
|
+
"rust_example": "Monitor for: ERROR, FATAL, panic, thread .* panicked",
|
|
1768
|
+
"go_example": "Monitor for: ERROR, FATAL, panic:, runtime error",
|
|
1769
|
+
"java_example": "Monitor for: ERROR, SEVERE, Exception, OutOfMemoryError"
|
|
1770
|
+
},
|
|
1771
|
+
"multi_language_support": {
|
|
1772
|
+
"description": "Support for multiple programming languages and frameworks",
|
|
1773
|
+
"languages": {
|
|
1774
|
+
"python": [
|
|
1775
|
+
"FastAPI",
|
|
1776
|
+
"Django",
|
|
1777
|
+
"Flask"
|
|
1778
|
+
],
|
|
1779
|
+
"nodejs": [
|
|
1780
|
+
"Express",
|
|
1781
|
+
"Next.js",
|
|
1782
|
+
"NestJS"
|
|
1783
|
+
],
|
|
1784
|
+
"rust": [
|
|
1785
|
+
"Actix-web",
|
|
1786
|
+
"Rocket",
|
|
1787
|
+
"Axum"
|
|
1788
|
+
],
|
|
1789
|
+
"go": [
|
|
1790
|
+
"Gin",
|
|
1791
|
+
"Echo",
|
|
1792
|
+
"Fiber"
|
|
1793
|
+
],
|
|
1794
|
+
"java": [
|
|
1795
|
+
"Spring Boot"
|
|
1796
|
+
],
|
|
1797
|
+
"ruby": [
|
|
1798
|
+
"Rails"
|
|
1799
|
+
],
|
|
1800
|
+
"php": [
|
|
1801
|
+
"Laravel"
|
|
1802
|
+
],
|
|
1803
|
+
"dart": [
|
|
1804
|
+
"Flutter Web"
|
|
1805
|
+
]
|
|
1806
|
+
},
|
|
1807
|
+
"detection_priority": [
|
|
1808
|
+
"1. Check for language-specific lock files (Cargo.lock, go.sum, pom.xml)",
|
|
1809
|
+
"2. Check for framework-specific config files",
|
|
1810
|
+
"3. Check for main entry points (main.rs, main.go, server.js)",
|
|
1811
|
+
"4. Read dependencies to identify framework"
|
|
1812
|
+
]
|
|
1813
|
+
},
|
|
1814
|
+
"troubleshooting_patterns": {
|
|
1815
|
+
"port_conflicts": {
|
|
1816
|
+
"detection": "EADDRINUSE or 'port already in use'",
|
|
1817
|
+
"action": "Use hash-based port allocation with linear probing to find available port",
|
|
1818
|
+
"never": "Kill existing process without verification"
|
|
1819
|
+
},
|
|
1820
|
+
"build_failures": {
|
|
1821
|
+
"rust": "Check Cargo.toml dependencies and run 'cargo check'",
|
|
1822
|
+
"go": "Check go.mod and run 'go mod tidy'",
|
|
1823
|
+
"java": "Check pom.xml or build.gradle and run dependency resolution",
|
|
1824
|
+
"nodejs": "Check package.json and run 'npm install'"
|
|
1825
|
+
},
|
|
1826
|
+
"health_check_failures": {
|
|
1827
|
+
"action": "Wait for application startup (up to 30 seconds for Java, 10 seconds for others)",
|
|
1828
|
+
"retry": "Retry health check 3 times with backoff",
|
|
1829
|
+
"report": "Show startup logs if health check fails"
|
|
1830
|
+
}
|
|
1831
|
+
}
|
|
1832
|
+
},
|
|
1833
|
+
"skills": [
|
|
1834
|
+
"docker-containerization",
|
|
1835
|
+
"database-migration",
|
|
1836
|
+
"security-scanning",
|
|
1837
|
+
"git-workflow",
|
|
1838
|
+
"systematic-debugging"
|
|
1839
|
+
]
|
|
619
1840
|
}
|