claude-mpm 4.13.2__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.
Files changed (250) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/agents/BASE_ENGINEER.md +286 -0
  3. claude_mpm/agents/BASE_PM.md +48 -17
  4. claude_mpm/agents/OUTPUT_STYLE.md +329 -11
  5. claude_mpm/agents/PM_INSTRUCTIONS.md +227 -8
  6. claude_mpm/agents/agent_loader.py +17 -5
  7. claude_mpm/agents/frontmatter_validator.py +284 -253
  8. claude_mpm/agents/templates/agentic-coder-optimizer.json +9 -2
  9. claude_mpm/agents/templates/api_qa.json +7 -1
  10. claude_mpm/agents/templates/clerk-ops.json +8 -1
  11. claude_mpm/agents/templates/code_analyzer.json +4 -1
  12. claude_mpm/agents/templates/dart_engineer.json +11 -1
  13. claude_mpm/agents/templates/data_engineer.json +11 -1
  14. claude_mpm/agents/templates/documentation.json +6 -1
  15. claude_mpm/agents/templates/engineer.json +18 -1
  16. claude_mpm/agents/templates/gcp_ops_agent.json +8 -1
  17. claude_mpm/agents/templates/golang_engineer.json +11 -1
  18. claude_mpm/agents/templates/java_engineer.json +12 -2
  19. claude_mpm/agents/templates/local_ops_agent.json +1217 -6
  20. claude_mpm/agents/templates/nextjs_engineer.json +11 -1
  21. claude_mpm/agents/templates/ops.json +8 -1
  22. claude_mpm/agents/templates/php-engineer.json +11 -1
  23. claude_mpm/agents/templates/project_organizer.json +10 -3
  24. claude_mpm/agents/templates/prompt-engineer.json +5 -1
  25. claude_mpm/agents/templates/python_engineer.json +11 -1
  26. claude_mpm/agents/templates/qa.json +7 -1
  27. claude_mpm/agents/templates/react_engineer.json +11 -1
  28. claude_mpm/agents/templates/refactoring_engineer.json +8 -1
  29. claude_mpm/agents/templates/research.json +4 -1
  30. claude_mpm/agents/templates/ruby-engineer.json +11 -1
  31. claude_mpm/agents/templates/rust_engineer.json +11 -1
  32. claude_mpm/agents/templates/security.json +6 -1
  33. claude_mpm/agents/templates/svelte-engineer.json +225 -0
  34. claude_mpm/agents/templates/ticketing.json +6 -1
  35. claude_mpm/agents/templates/typescript_engineer.json +11 -1
  36. claude_mpm/agents/templates/vercel_ops_agent.json +8 -1
  37. claude_mpm/agents/templates/version_control.json +8 -1
  38. claude_mpm/agents/templates/web_qa.json +7 -1
  39. claude_mpm/agents/templates/web_ui.json +11 -1
  40. claude_mpm/cli/__init__.py +34 -706
  41. claude_mpm/cli/commands/agent_manager.py +25 -12
  42. claude_mpm/cli/commands/agent_state_manager.py +186 -0
  43. claude_mpm/cli/commands/agents.py +204 -148
  44. claude_mpm/cli/commands/aggregate.py +7 -3
  45. claude_mpm/cli/commands/analyze.py +9 -4
  46. claude_mpm/cli/commands/analyze_code.py +7 -2
  47. claude_mpm/cli/commands/auto_configure.py +7 -9
  48. claude_mpm/cli/commands/config.py +47 -13
  49. claude_mpm/cli/commands/configure.py +294 -1788
  50. claude_mpm/cli/commands/configure_agent_display.py +261 -0
  51. claude_mpm/cli/commands/configure_behavior_manager.py +204 -0
  52. claude_mpm/cli/commands/configure_hook_manager.py +225 -0
  53. claude_mpm/cli/commands/configure_models.py +18 -0
  54. claude_mpm/cli/commands/configure_navigation.py +167 -0
  55. claude_mpm/cli/commands/configure_paths.py +104 -0
  56. claude_mpm/cli/commands/configure_persistence.py +254 -0
  57. claude_mpm/cli/commands/configure_startup_manager.py +646 -0
  58. claude_mpm/cli/commands/configure_template_editor.py +497 -0
  59. claude_mpm/cli/commands/configure_validators.py +73 -0
  60. claude_mpm/cli/commands/local_deploy.py +537 -0
  61. claude_mpm/cli/commands/memory.py +54 -20
  62. claude_mpm/cli/commands/mpm_init.py +39 -25
  63. claude_mpm/cli/commands/mpm_init_handler.py +8 -3
  64. claude_mpm/cli/executor.py +202 -0
  65. claude_mpm/cli/helpers.py +105 -0
  66. claude_mpm/cli/interactive/__init__.py +3 -0
  67. claude_mpm/cli/interactive/skills_wizard.py +491 -0
  68. claude_mpm/cli/parsers/__init__.py +7 -1
  69. claude_mpm/cli/parsers/base_parser.py +98 -3
  70. claude_mpm/cli/parsers/local_deploy_parser.py +227 -0
  71. claude_mpm/cli/shared/output_formatters.py +28 -19
  72. claude_mpm/cli/startup.py +481 -0
  73. claude_mpm/cli/utils.py +52 -1
  74. claude_mpm/commands/mpm-help.md +3 -0
  75. claude_mpm/commands/mpm-version.md +113 -0
  76. claude_mpm/commands/mpm.md +1 -0
  77. claude_mpm/config/agent_config.py +2 -2
  78. claude_mpm/config/model_config.py +428 -0
  79. claude_mpm/core/base_service.py +13 -12
  80. claude_mpm/core/enums.py +452 -0
  81. claude_mpm/core/factories.py +1 -1
  82. claude_mpm/core/instruction_reinforcement_hook.py +2 -1
  83. claude_mpm/core/interactive_session.py +9 -3
  84. claude_mpm/core/logging_config.py +6 -2
  85. claude_mpm/core/oneshot_session.py +8 -4
  86. claude_mpm/core/optimized_agent_loader.py +3 -3
  87. claude_mpm/core/output_style_manager.py +12 -192
  88. claude_mpm/core/service_registry.py +5 -1
  89. claude_mpm/core/types.py +2 -9
  90. claude_mpm/core/typing_utils.py +7 -6
  91. claude_mpm/dashboard/static/js/dashboard.js +0 -14
  92. claude_mpm/dashboard/templates/index.html +3 -41
  93. claude_mpm/hooks/claude_hooks/response_tracking.py +35 -1
  94. claude_mpm/hooks/instruction_reinforcement.py +7 -2
  95. claude_mpm/models/resume_log.py +340 -0
  96. claude_mpm/services/agents/auto_config_manager.py +10 -11
  97. claude_mpm/services/agents/deployment/agent_configuration_manager.py +1 -1
  98. claude_mpm/services/agents/deployment/agent_record_service.py +1 -1
  99. claude_mpm/services/agents/deployment/agent_validator.py +17 -1
  100. claude_mpm/services/agents/deployment/async_agent_deployment.py +1 -1
  101. claude_mpm/services/agents/deployment/interface_adapter.py +3 -2
  102. claude_mpm/services/agents/deployment/local_template_deployment.py +1 -1
  103. claude_mpm/services/agents/deployment/pipeline/steps/agent_processing_step.py +7 -6
  104. claude_mpm/services/agents/deployment/pipeline/steps/base_step.py +7 -16
  105. claude_mpm/services/agents/deployment/pipeline/steps/configuration_step.py +4 -3
  106. claude_mpm/services/agents/deployment/pipeline/steps/target_directory_step.py +5 -3
  107. claude_mpm/services/agents/deployment/pipeline/steps/validation_step.py +6 -5
  108. claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +9 -6
  109. claude_mpm/services/agents/deployment/validation/__init__.py +3 -1
  110. claude_mpm/services/agents/deployment/validation/validation_result.py +1 -9
  111. claude_mpm/services/agents/local_template_manager.py +1 -1
  112. claude_mpm/services/agents/memory/agent_memory_manager.py +5 -2
  113. claude_mpm/services/agents/registry/modification_tracker.py +5 -2
  114. claude_mpm/services/command_handler_service.py +11 -5
  115. claude_mpm/services/core/interfaces/__init__.py +74 -2
  116. claude_mpm/services/core/interfaces/health.py +172 -0
  117. claude_mpm/services/core/interfaces/model.py +281 -0
  118. claude_mpm/services/core/interfaces/process.py +372 -0
  119. claude_mpm/services/core/interfaces/restart.py +307 -0
  120. claude_mpm/services/core/interfaces/stability.py +260 -0
  121. claude_mpm/services/core/models/__init__.py +33 -0
  122. claude_mpm/services/core/models/agent_config.py +12 -28
  123. claude_mpm/services/core/models/health.py +162 -0
  124. claude_mpm/services/core/models/process.py +235 -0
  125. claude_mpm/services/core/models/restart.py +302 -0
  126. claude_mpm/services/core/models/stability.py +264 -0
  127. claude_mpm/services/core/path_resolver.py +23 -7
  128. claude_mpm/services/diagnostics/__init__.py +2 -2
  129. claude_mpm/services/diagnostics/checks/agent_check.py +25 -24
  130. claude_mpm/services/diagnostics/checks/claude_code_check.py +24 -23
  131. claude_mpm/services/diagnostics/checks/common_issues_check.py +25 -24
  132. claude_mpm/services/diagnostics/checks/configuration_check.py +24 -23
  133. claude_mpm/services/diagnostics/checks/filesystem_check.py +18 -17
  134. claude_mpm/services/diagnostics/checks/installation_check.py +30 -29
  135. claude_mpm/services/diagnostics/checks/instructions_check.py +20 -19
  136. claude_mpm/services/diagnostics/checks/mcp_check.py +50 -36
  137. claude_mpm/services/diagnostics/checks/mcp_services_check.py +36 -31
  138. claude_mpm/services/diagnostics/checks/monitor_check.py +23 -22
  139. claude_mpm/services/diagnostics/checks/startup_log_check.py +9 -8
  140. claude_mpm/services/diagnostics/diagnostic_runner.py +6 -5
  141. claude_mpm/services/diagnostics/doctor_reporter.py +28 -25
  142. claude_mpm/services/diagnostics/models.py +19 -24
  143. claude_mpm/services/infrastructure/monitoring/__init__.py +1 -1
  144. claude_mpm/services/infrastructure/monitoring/aggregator.py +12 -12
  145. claude_mpm/services/infrastructure/monitoring/base.py +5 -13
  146. claude_mpm/services/infrastructure/monitoring/network.py +7 -6
  147. claude_mpm/services/infrastructure/monitoring/process.py +13 -12
  148. claude_mpm/services/infrastructure/monitoring/resources.py +7 -6
  149. claude_mpm/services/infrastructure/monitoring/service.py +16 -15
  150. claude_mpm/services/infrastructure/resume_log_generator.py +439 -0
  151. claude_mpm/services/local_ops/__init__.py +163 -0
  152. claude_mpm/services/local_ops/crash_detector.py +257 -0
  153. claude_mpm/services/local_ops/health_checks/__init__.py +28 -0
  154. claude_mpm/services/local_ops/health_checks/http_check.py +224 -0
  155. claude_mpm/services/local_ops/health_checks/process_check.py +236 -0
  156. claude_mpm/services/local_ops/health_checks/resource_check.py +255 -0
  157. claude_mpm/services/local_ops/health_manager.py +430 -0
  158. claude_mpm/services/local_ops/log_monitor.py +396 -0
  159. claude_mpm/services/local_ops/memory_leak_detector.py +294 -0
  160. claude_mpm/services/local_ops/process_manager.py +595 -0
  161. claude_mpm/services/local_ops/resource_monitor.py +331 -0
  162. claude_mpm/services/local_ops/restart_manager.py +401 -0
  163. claude_mpm/services/local_ops/restart_policy.py +387 -0
  164. claude_mpm/services/local_ops/state_manager.py +372 -0
  165. claude_mpm/services/local_ops/unified_manager.py +600 -0
  166. claude_mpm/services/mcp_config_manager.py +9 -4
  167. claude_mpm/services/mcp_gateway/core/__init__.py +1 -2
  168. claude_mpm/services/mcp_gateway/core/base.py +18 -31
  169. claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +71 -24
  170. claude_mpm/services/mcp_gateway/tools/health_check_tool.py +30 -28
  171. claude_mpm/services/memory_hook_service.py +4 -1
  172. claude_mpm/services/model/__init__.py +147 -0
  173. claude_mpm/services/model/base_provider.py +365 -0
  174. claude_mpm/services/model/claude_provider.py +412 -0
  175. claude_mpm/services/model/model_router.py +453 -0
  176. claude_mpm/services/model/ollama_provider.py +415 -0
  177. claude_mpm/services/monitor/daemon_manager.py +3 -2
  178. claude_mpm/services/monitor/handlers/dashboard.py +2 -1
  179. claude_mpm/services/monitor/handlers/hooks.py +2 -1
  180. claude_mpm/services/monitor/management/lifecycle.py +3 -2
  181. claude_mpm/services/monitor/server.py +2 -1
  182. claude_mpm/services/session_management_service.py +3 -2
  183. claude_mpm/services/session_manager.py +205 -1
  184. claude_mpm/services/shared/async_service_base.py +16 -27
  185. claude_mpm/services/shared/lifecycle_service_base.py +1 -14
  186. claude_mpm/services/socketio/handlers/__init__.py +5 -2
  187. claude_mpm/services/socketio/handlers/hook.py +13 -2
  188. claude_mpm/services/socketio/handlers/registry.py +4 -2
  189. claude_mpm/services/socketio/server/main.py +10 -8
  190. claude_mpm/services/subprocess_launcher_service.py +14 -5
  191. claude_mpm/services/unified/analyzer_strategies/code_analyzer.py +8 -7
  192. claude_mpm/services/unified/analyzer_strategies/dependency_analyzer.py +6 -5
  193. claude_mpm/services/unified/analyzer_strategies/performance_analyzer.py +8 -7
  194. claude_mpm/services/unified/analyzer_strategies/security_analyzer.py +7 -6
  195. claude_mpm/services/unified/analyzer_strategies/structure_analyzer.py +5 -4
  196. claude_mpm/services/unified/config_strategies/validation_strategy.py +13 -9
  197. claude_mpm/services/unified/deployment_strategies/cloud_strategies.py +10 -3
  198. claude_mpm/services/unified/deployment_strategies/local.py +6 -5
  199. claude_mpm/services/unified/deployment_strategies/utils.py +6 -5
  200. claude_mpm/services/unified/deployment_strategies/vercel.py +7 -6
  201. claude_mpm/services/unified/interfaces.py +3 -1
  202. claude_mpm/services/unified/unified_analyzer.py +14 -10
  203. claude_mpm/services/unified/unified_config.py +2 -1
  204. claude_mpm/services/unified/unified_deployment.py +9 -4
  205. claude_mpm/services/version_service.py +104 -1
  206. claude_mpm/skills/__init__.py +21 -0
  207. claude_mpm/skills/bundled/__init__.py +6 -0
  208. claude_mpm/skills/bundled/api-documentation.md +393 -0
  209. claude_mpm/skills/bundled/async-testing.md +571 -0
  210. claude_mpm/skills/bundled/code-review.md +143 -0
  211. claude_mpm/skills/bundled/database-migration.md +199 -0
  212. claude_mpm/skills/bundled/docker-containerization.md +194 -0
  213. claude_mpm/skills/bundled/express-local-dev.md +1429 -0
  214. claude_mpm/skills/bundled/fastapi-local-dev.md +1199 -0
  215. claude_mpm/skills/bundled/git-workflow.md +414 -0
  216. claude_mpm/skills/bundled/imagemagick.md +204 -0
  217. claude_mpm/skills/bundled/json-data-handling.md +223 -0
  218. claude_mpm/skills/bundled/nextjs-local-dev.md +807 -0
  219. claude_mpm/skills/bundled/pdf.md +141 -0
  220. claude_mpm/skills/bundled/performance-profiling.md +567 -0
  221. claude_mpm/skills/bundled/refactoring-patterns.md +180 -0
  222. claude_mpm/skills/bundled/security-scanning.md +327 -0
  223. claude_mpm/skills/bundled/systematic-debugging.md +473 -0
  224. claude_mpm/skills/bundled/test-driven-development.md +378 -0
  225. claude_mpm/skills/bundled/vite-local-dev.md +1061 -0
  226. claude_mpm/skills/bundled/web-performance-optimization.md +2305 -0
  227. claude_mpm/skills/bundled/xlsx.md +157 -0
  228. claude_mpm/skills/registry.py +286 -0
  229. claude_mpm/skills/skill_manager.py +310 -0
  230. claude_mpm/tools/code_tree_analyzer.py +177 -141
  231. claude_mpm/tools/code_tree_events.py +4 -2
  232. claude_mpm/utils/agent_dependency_loader.py +2 -2
  233. {claude_mpm-4.13.2.dist-info → claude_mpm-4.18.2.dist-info}/METADATA +117 -8
  234. {claude_mpm-4.13.2.dist-info → claude_mpm-4.18.2.dist-info}/RECORD +238 -174
  235. claude_mpm/dashboard/static/css/code-tree.css +0 -1639
  236. claude_mpm/dashboard/static/js/components/code-tree/tree-breadcrumb.js +0 -353
  237. claude_mpm/dashboard/static/js/components/code-tree/tree-constants.js +0 -235
  238. claude_mpm/dashboard/static/js/components/code-tree/tree-search.js +0 -409
  239. claude_mpm/dashboard/static/js/components/code-tree/tree-utils.js +0 -435
  240. claude_mpm/dashboard/static/js/components/code-tree.js +0 -5869
  241. claude_mpm/dashboard/static/js/components/code-viewer.js +0 -1386
  242. claude_mpm/hooks/claude_hooks/hook_handler_eventbus.py +0 -425
  243. claude_mpm/hooks/claude_hooks/hook_handler_original.py +0 -1041
  244. claude_mpm/hooks/claude_hooks/hook_handler_refactored.py +0 -347
  245. claude_mpm/services/agents/deployment/agent_lifecycle_manager_refactored.py +0 -575
  246. claude_mpm/services/project/analyzer_refactored.py +0 -450
  247. {claude_mpm-4.13.2.dist-info → claude_mpm-4.18.2.dist-info}/WHEEL +0 -0
  248. {claude_mpm-4.13.2.dist-info → claude_mpm-4.18.2.dist-info}/entry_points.txt +0 -0
  249. {claude_mpm-4.13.2.dist-info → claude_mpm-4.18.2.dist-info}/licenses/LICENSE +0 -0
  250. {claude_mpm-4.13.2.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": [
@@ -55,7 +131,12 @@
55
131
  "svelte",
56
132
  "nuxt",
57
133
  "gatsby",
58
- "vite"
134
+ "vite",
135
+ "express",
136
+ "nestjs",
137
+ "remix",
138
+ "sveltekit",
139
+ "astro"
59
140
  ],
60
141
  "python": [
61
142
  "django",
@@ -64,6 +145,23 @@
64
145
  "streamlit",
65
146
  "gradio"
66
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
+ ],
67
165
  "ruby": [
68
166
  "rails",
69
167
  "sinatra"
@@ -72,6 +170,10 @@
72
170
  "laravel",
73
171
  "symfony"
74
172
  ],
173
+ "dart": [
174
+ "flutter-web",
175
+ "shelf"
176
+ ],
75
177
  "static": [
76
178
  "hugo",
77
179
  "jekyll",
@@ -384,16 +486,223 @@
384
486
  "dev": "flask run",
385
487
  "prod": "gunicorn app:app"
386
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
+ }
387
687
  }
388
688
  },
389
689
  "deployment_strategies": {
390
690
  "production": {
391
691
  "nextjs": {
392
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
+ },
393
702
  "steps": [
394
703
  "npm install --production",
395
704
  "npm run build",
396
- "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"
397
706
  ],
398
707
  "health_check": "http://localhost:{port}",
399
708
  "environment": {
@@ -416,14 +725,148 @@
416
725
  "pm2 start gunicorn --name '{app_name}' -- app:app --bind 0.0.0.0:{port}"
417
726
  ],
418
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
+ }
419
855
  }
420
856
  },
421
857
  "development": {
422
858
  "nextjs": {
423
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
+ },
424
867
  "steps": [
425
868
  "npm install",
426
- "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"
427
870
  ],
428
871
  "environment": {
429
872
  "NODE_ENV": "development"
@@ -435,6 +878,132 @@
435
878
  "npm install",
436
879
  "pm2 start npm --name '{app_name}-dev' -- start"
437
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
438
1007
  }
439
1008
  },
440
1009
  "docker": {
@@ -482,6 +1051,425 @@
482
1051
  "action": "increase_memory_limit"
483
1052
  }
484
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
+ },
485
1473
  "security": {
486
1474
  "port_exposure": "localhost_only",
487
1475
  "process_isolation": "user_level",
@@ -582,6 +1570,106 @@
582
1570
  "analyze_crash_pattern",
583
1571
  "suggest_fixes"
584
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
+ ]
585
1673
  }
586
1674
  ],
587
1675
  "usage_guide": {
@@ -618,12 +1706,135 @@
618
1706
  "state_file_corruption": "Delete .claude-mpm/deployment-state.json to reset (will lose tracking)"
619
1707
  }
620
1708
  },
621
- "agent_version": "1.0.2",
1709
+ "agent_version": "2.0.1",
622
1710
  "knowledge": {
623
1711
  "best_practices": [
624
1712
  "Review file commit history before modifications: git log --oneline -5 <file_path>",
625
1713
  "Write succinct commit messages explaining WHAT changed and WHY",
626
1714
  "Follow conventional commits format: feat/fix/docs/refactor/perf/test/chore"
627
1715
  ]
628
- }
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
+ ]
629
1840
  }