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.
Files changed (308) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/agents/BASE_AGENT_TEMPLATE.md +118 -0
  3. claude_mpm/agents/BASE_ENGINEER.md +286 -0
  4. claude_mpm/agents/BASE_PM.md +106 -1
  5. claude_mpm/agents/OUTPUT_STYLE.md +329 -11
  6. claude_mpm/agents/PM_INSTRUCTIONS.md +397 -459
  7. claude_mpm/agents/agent_loader.py +17 -5
  8. claude_mpm/agents/frontmatter_validator.py +284 -253
  9. claude_mpm/agents/templates/README.md +465 -0
  10. claude_mpm/agents/templates/agent-manager.json +4 -1
  11. claude_mpm/agents/templates/agentic-coder-optimizer.json +13 -3
  12. claude_mpm/agents/templates/api_qa.json +11 -2
  13. claude_mpm/agents/templates/circuit_breakers.md +638 -0
  14. claude_mpm/agents/templates/clerk-ops.json +12 -2
  15. claude_mpm/agents/templates/code_analyzer.json +8 -2
  16. claude_mpm/agents/templates/content-agent.json +358 -0
  17. claude_mpm/agents/templates/dart_engineer.json +15 -2
  18. claude_mpm/agents/templates/data_engineer.json +15 -2
  19. claude_mpm/agents/templates/documentation.json +10 -2
  20. claude_mpm/agents/templates/engineer.json +21 -1
  21. claude_mpm/agents/templates/gcp_ops_agent.json +12 -2
  22. claude_mpm/agents/templates/git_file_tracking.md +584 -0
  23. claude_mpm/agents/templates/golang_engineer.json +270 -0
  24. claude_mpm/agents/templates/imagemagick.json +4 -1
  25. claude_mpm/agents/templates/java_engineer.json +346 -0
  26. claude_mpm/agents/templates/local_ops_agent.json +1227 -6
  27. claude_mpm/agents/templates/memory_manager.json +4 -1
  28. claude_mpm/agents/templates/nextjs_engineer.json +141 -133
  29. claude_mpm/agents/templates/ops.json +12 -2
  30. claude_mpm/agents/templates/php-engineer.json +270 -174
  31. claude_mpm/agents/templates/pm_examples.md +474 -0
  32. claude_mpm/agents/templates/pm_red_flags.md +240 -0
  33. claude_mpm/agents/templates/product_owner.json +338 -0
  34. claude_mpm/agents/templates/project_organizer.json +14 -4
  35. claude_mpm/agents/templates/prompt-engineer.json +13 -2
  36. claude_mpm/agents/templates/python_engineer.json +174 -81
  37. claude_mpm/agents/templates/qa.json +11 -2
  38. claude_mpm/agents/templates/react_engineer.json +16 -3
  39. claude_mpm/agents/templates/refactoring_engineer.json +12 -2
  40. claude_mpm/agents/templates/research.json +34 -21
  41. claude_mpm/agents/templates/response_format.md +583 -0
  42. claude_mpm/agents/templates/ruby-engineer.json +129 -192
  43. claude_mpm/agents/templates/rust_engineer.json +270 -0
  44. claude_mpm/agents/templates/security.json +10 -2
  45. claude_mpm/agents/templates/svelte-engineer.json +225 -0
  46. claude_mpm/agents/templates/ticketing.json +10 -2
  47. claude_mpm/agents/templates/typescript_engineer.json +116 -125
  48. claude_mpm/agents/templates/validation_templates.md +312 -0
  49. claude_mpm/agents/templates/vercel_ops_agent.json +12 -2
  50. claude_mpm/agents/templates/version_control.json +12 -2
  51. claude_mpm/agents/templates/web_qa.json +11 -2
  52. claude_mpm/agents/templates/web_ui.json +15 -2
  53. claude_mpm/cli/__init__.py +34 -614
  54. claude_mpm/cli/commands/agent_manager.py +25 -12
  55. claude_mpm/cli/commands/agent_state_manager.py +186 -0
  56. claude_mpm/cli/commands/agents.py +235 -148
  57. claude_mpm/cli/commands/agents_detect.py +380 -0
  58. claude_mpm/cli/commands/agents_recommend.py +309 -0
  59. claude_mpm/cli/commands/aggregate.py +7 -3
  60. claude_mpm/cli/commands/analyze.py +9 -4
  61. claude_mpm/cli/commands/analyze_code.py +7 -2
  62. claude_mpm/cli/commands/auto_configure.py +570 -0
  63. claude_mpm/cli/commands/config.py +47 -13
  64. claude_mpm/cli/commands/configure.py +419 -1571
  65. claude_mpm/cli/commands/configure_agent_display.py +261 -0
  66. claude_mpm/cli/commands/configure_behavior_manager.py +204 -0
  67. claude_mpm/cli/commands/configure_hook_manager.py +225 -0
  68. claude_mpm/cli/commands/configure_models.py +18 -0
  69. claude_mpm/cli/commands/configure_navigation.py +167 -0
  70. claude_mpm/cli/commands/configure_paths.py +104 -0
  71. claude_mpm/cli/commands/configure_persistence.py +254 -0
  72. claude_mpm/cli/commands/configure_startup_manager.py +646 -0
  73. claude_mpm/cli/commands/configure_template_editor.py +497 -0
  74. claude_mpm/cli/commands/configure_validators.py +73 -0
  75. claude_mpm/cli/commands/local_deploy.py +537 -0
  76. claude_mpm/cli/commands/memory.py +54 -20
  77. claude_mpm/cli/commands/mpm_init.py +585 -196
  78. claude_mpm/cli/commands/mpm_init_handler.py +37 -3
  79. claude_mpm/cli/commands/search.py +170 -4
  80. claude_mpm/cli/commands/upgrade.py +152 -0
  81. claude_mpm/cli/executor.py +202 -0
  82. claude_mpm/cli/helpers.py +105 -0
  83. claude_mpm/cli/interactive/__init__.py +3 -0
  84. claude_mpm/cli/interactive/skills_wizard.py +491 -0
  85. claude_mpm/cli/parsers/__init__.py +7 -1
  86. claude_mpm/cli/parsers/agents_parser.py +9 -0
  87. claude_mpm/cli/parsers/auto_configure_parser.py +245 -0
  88. claude_mpm/cli/parsers/base_parser.py +110 -3
  89. claude_mpm/cli/parsers/local_deploy_parser.py +227 -0
  90. claude_mpm/cli/parsers/mpm_init_parser.py +65 -5
  91. claude_mpm/cli/shared/output_formatters.py +28 -19
  92. claude_mpm/cli/startup.py +481 -0
  93. claude_mpm/cli/utils.py +52 -1
  94. claude_mpm/commands/mpm-agents-detect.md +168 -0
  95. claude_mpm/commands/mpm-agents-recommend.md +214 -0
  96. claude_mpm/commands/mpm-agents.md +75 -1
  97. claude_mpm/commands/mpm-auto-configure.md +217 -0
  98. claude_mpm/commands/mpm-help.md +163 -0
  99. claude_mpm/commands/mpm-init.md +148 -3
  100. claude_mpm/commands/mpm-version.md +113 -0
  101. claude_mpm/commands/mpm.md +1 -0
  102. claude_mpm/config/agent_config.py +2 -2
  103. claude_mpm/config/model_config.py +428 -0
  104. claude_mpm/constants.py +1 -0
  105. claude_mpm/core/base_service.py +13 -12
  106. claude_mpm/core/enums.py +452 -0
  107. claude_mpm/core/factories.py +1 -1
  108. claude_mpm/core/instruction_reinforcement_hook.py +2 -1
  109. claude_mpm/core/interactive_session.py +9 -3
  110. claude_mpm/core/log_manager.py +2 -0
  111. claude_mpm/core/logging_config.py +6 -2
  112. claude_mpm/core/oneshot_session.py +8 -4
  113. claude_mpm/core/optimized_agent_loader.py +3 -3
  114. claude_mpm/core/output_style_manager.py +12 -192
  115. claude_mpm/core/service_registry.py +5 -1
  116. claude_mpm/core/types.py +2 -9
  117. claude_mpm/core/typing_utils.py +7 -6
  118. claude_mpm/dashboard/static/js/dashboard.js +0 -14
  119. claude_mpm/dashboard/templates/index.html +3 -41
  120. claude_mpm/hooks/__init__.py +20 -0
  121. claude_mpm/hooks/claude_hooks/event_handlers.py +4 -2
  122. claude_mpm/hooks/claude_hooks/response_tracking.py +35 -1
  123. claude_mpm/hooks/claude_hooks/services/connection_manager_http.py +23 -2
  124. claude_mpm/hooks/failure_learning/__init__.py +60 -0
  125. claude_mpm/hooks/failure_learning/failure_detection_hook.py +235 -0
  126. claude_mpm/hooks/failure_learning/fix_detection_hook.py +217 -0
  127. claude_mpm/hooks/failure_learning/learning_extraction_hook.py +286 -0
  128. claude_mpm/hooks/instruction_reinforcement.py +7 -2
  129. claude_mpm/hooks/kuzu_enrichment_hook.py +263 -0
  130. claude_mpm/hooks/kuzu_memory_hook.py +37 -12
  131. claude_mpm/hooks/kuzu_response_hook.py +183 -0
  132. claude_mpm/models/resume_log.py +340 -0
  133. claude_mpm/services/agents/__init__.py +18 -5
  134. claude_mpm/services/agents/auto_config_manager.py +796 -0
  135. claude_mpm/services/agents/deployment/agent_configuration_manager.py +1 -1
  136. claude_mpm/services/agents/deployment/agent_record_service.py +1 -1
  137. claude_mpm/services/agents/deployment/agent_validator.py +17 -1
  138. claude_mpm/services/agents/deployment/async_agent_deployment.py +1 -1
  139. claude_mpm/services/agents/deployment/interface_adapter.py +3 -2
  140. claude_mpm/services/agents/deployment/local_template_deployment.py +1 -1
  141. claude_mpm/services/agents/deployment/pipeline/steps/agent_processing_step.py +7 -6
  142. claude_mpm/services/agents/deployment/pipeline/steps/base_step.py +7 -16
  143. claude_mpm/services/agents/deployment/pipeline/steps/configuration_step.py +4 -3
  144. claude_mpm/services/agents/deployment/pipeline/steps/target_directory_step.py +5 -3
  145. claude_mpm/services/agents/deployment/pipeline/steps/validation_step.py +6 -5
  146. claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +9 -6
  147. claude_mpm/services/agents/deployment/validation/__init__.py +3 -1
  148. claude_mpm/services/agents/deployment/validation/validation_result.py +1 -9
  149. claude_mpm/services/agents/local_template_manager.py +1 -1
  150. claude_mpm/services/agents/memory/agent_memory_manager.py +5 -2
  151. claude_mpm/services/agents/observers.py +547 -0
  152. claude_mpm/services/agents/recommender.py +568 -0
  153. claude_mpm/services/agents/registry/modification_tracker.py +5 -2
  154. claude_mpm/services/command_handler_service.py +11 -5
  155. claude_mpm/services/core/__init__.py +33 -1
  156. claude_mpm/services/core/interfaces/__init__.py +90 -3
  157. claude_mpm/services/core/interfaces/agent.py +184 -0
  158. claude_mpm/services/core/interfaces/health.py +172 -0
  159. claude_mpm/services/core/interfaces/model.py +281 -0
  160. claude_mpm/services/core/interfaces/process.py +372 -0
  161. claude_mpm/services/core/interfaces/project.py +121 -0
  162. claude_mpm/services/core/interfaces/restart.py +307 -0
  163. claude_mpm/services/core/interfaces/stability.py +260 -0
  164. claude_mpm/services/core/memory_manager.py +11 -24
  165. claude_mpm/services/core/models/__init__.py +79 -0
  166. claude_mpm/services/core/models/agent_config.py +381 -0
  167. claude_mpm/services/core/models/health.py +162 -0
  168. claude_mpm/services/core/models/process.py +235 -0
  169. claude_mpm/services/core/models/restart.py +302 -0
  170. claude_mpm/services/core/models/stability.py +264 -0
  171. claude_mpm/services/core/models/toolchain.py +306 -0
  172. claude_mpm/services/core/path_resolver.py +23 -7
  173. claude_mpm/services/diagnostics/__init__.py +2 -2
  174. claude_mpm/services/diagnostics/checks/agent_check.py +25 -24
  175. claude_mpm/services/diagnostics/checks/claude_code_check.py +24 -23
  176. claude_mpm/services/diagnostics/checks/common_issues_check.py +25 -24
  177. claude_mpm/services/diagnostics/checks/configuration_check.py +24 -23
  178. claude_mpm/services/diagnostics/checks/filesystem_check.py +18 -17
  179. claude_mpm/services/diagnostics/checks/installation_check.py +30 -29
  180. claude_mpm/services/diagnostics/checks/instructions_check.py +20 -19
  181. claude_mpm/services/diagnostics/checks/mcp_check.py +50 -36
  182. claude_mpm/services/diagnostics/checks/mcp_services_check.py +38 -33
  183. claude_mpm/services/diagnostics/checks/monitor_check.py +23 -22
  184. claude_mpm/services/diagnostics/checks/startup_log_check.py +9 -8
  185. claude_mpm/services/diagnostics/diagnostic_runner.py +6 -5
  186. claude_mpm/services/diagnostics/doctor_reporter.py +28 -25
  187. claude_mpm/services/diagnostics/models.py +19 -24
  188. claude_mpm/services/infrastructure/monitoring/__init__.py +1 -1
  189. claude_mpm/services/infrastructure/monitoring/aggregator.py +12 -12
  190. claude_mpm/services/infrastructure/monitoring/base.py +5 -13
  191. claude_mpm/services/infrastructure/monitoring/network.py +7 -6
  192. claude_mpm/services/infrastructure/monitoring/process.py +13 -12
  193. claude_mpm/services/infrastructure/monitoring/resources.py +7 -6
  194. claude_mpm/services/infrastructure/monitoring/service.py +16 -15
  195. claude_mpm/services/infrastructure/resume_log_generator.py +439 -0
  196. claude_mpm/services/local_ops/__init__.py +163 -0
  197. claude_mpm/services/local_ops/crash_detector.py +257 -0
  198. claude_mpm/services/local_ops/health_checks/__init__.py +28 -0
  199. claude_mpm/services/local_ops/health_checks/http_check.py +224 -0
  200. claude_mpm/services/local_ops/health_checks/process_check.py +236 -0
  201. claude_mpm/services/local_ops/health_checks/resource_check.py +255 -0
  202. claude_mpm/services/local_ops/health_manager.py +430 -0
  203. claude_mpm/services/local_ops/log_monitor.py +396 -0
  204. claude_mpm/services/local_ops/memory_leak_detector.py +294 -0
  205. claude_mpm/services/local_ops/process_manager.py +595 -0
  206. claude_mpm/services/local_ops/resource_monitor.py +331 -0
  207. claude_mpm/services/local_ops/restart_manager.py +401 -0
  208. claude_mpm/services/local_ops/restart_policy.py +387 -0
  209. claude_mpm/services/local_ops/state_manager.py +372 -0
  210. claude_mpm/services/local_ops/unified_manager.py +600 -0
  211. claude_mpm/services/mcp_config_manager.py +9 -4
  212. claude_mpm/services/mcp_gateway/core/__init__.py +1 -2
  213. claude_mpm/services/mcp_gateway/core/base.py +18 -31
  214. claude_mpm/services/mcp_gateway/main.py +30 -0
  215. claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +206 -32
  216. claude_mpm/services/mcp_gateway/tools/health_check_tool.py +30 -28
  217. claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +25 -5
  218. claude_mpm/services/mcp_service_verifier.py +1 -1
  219. claude_mpm/services/memory/failure_tracker.py +563 -0
  220. claude_mpm/services/memory_hook_service.py +165 -4
  221. claude_mpm/services/model/__init__.py +147 -0
  222. claude_mpm/services/model/base_provider.py +365 -0
  223. claude_mpm/services/model/claude_provider.py +412 -0
  224. claude_mpm/services/model/model_router.py +453 -0
  225. claude_mpm/services/model/ollama_provider.py +415 -0
  226. claude_mpm/services/monitor/daemon_manager.py +3 -2
  227. claude_mpm/services/monitor/handlers/dashboard.py +2 -1
  228. claude_mpm/services/monitor/handlers/hooks.py +2 -1
  229. claude_mpm/services/monitor/management/lifecycle.py +3 -2
  230. claude_mpm/services/monitor/server.py +2 -1
  231. claude_mpm/services/project/__init__.py +23 -0
  232. claude_mpm/services/project/detection_strategies.py +719 -0
  233. claude_mpm/services/project/toolchain_analyzer.py +581 -0
  234. claude_mpm/services/self_upgrade_service.py +342 -0
  235. claude_mpm/services/session_management_service.py +3 -2
  236. claude_mpm/services/session_manager.py +205 -1
  237. claude_mpm/services/shared/async_service_base.py +16 -27
  238. claude_mpm/services/shared/lifecycle_service_base.py +1 -14
  239. claude_mpm/services/socketio/handlers/__init__.py +5 -2
  240. claude_mpm/services/socketio/handlers/hook.py +13 -2
  241. claude_mpm/services/socketio/handlers/registry.py +4 -2
  242. claude_mpm/services/socketio/server/main.py +10 -8
  243. claude_mpm/services/subprocess_launcher_service.py +14 -5
  244. claude_mpm/services/unified/analyzer_strategies/code_analyzer.py +8 -7
  245. claude_mpm/services/unified/analyzer_strategies/dependency_analyzer.py +6 -5
  246. claude_mpm/services/unified/analyzer_strategies/performance_analyzer.py +8 -7
  247. claude_mpm/services/unified/analyzer_strategies/security_analyzer.py +7 -6
  248. claude_mpm/services/unified/analyzer_strategies/structure_analyzer.py +5 -4
  249. claude_mpm/services/unified/config_strategies/validation_strategy.py +13 -9
  250. claude_mpm/services/unified/deployment_strategies/cloud_strategies.py +10 -3
  251. claude_mpm/services/unified/deployment_strategies/local.py +6 -5
  252. claude_mpm/services/unified/deployment_strategies/utils.py +6 -5
  253. claude_mpm/services/unified/deployment_strategies/vercel.py +7 -6
  254. claude_mpm/services/unified/interfaces.py +3 -1
  255. claude_mpm/services/unified/unified_analyzer.py +14 -10
  256. claude_mpm/services/unified/unified_config.py +2 -1
  257. claude_mpm/services/unified/unified_deployment.py +9 -4
  258. claude_mpm/services/version_service.py +104 -1
  259. claude_mpm/skills/__init__.py +21 -0
  260. claude_mpm/skills/bundled/__init__.py +6 -0
  261. claude_mpm/skills/bundled/api-documentation.md +393 -0
  262. claude_mpm/skills/bundled/async-testing.md +571 -0
  263. claude_mpm/skills/bundled/code-review.md +143 -0
  264. claude_mpm/skills/bundled/database-migration.md +199 -0
  265. claude_mpm/skills/bundled/docker-containerization.md +194 -0
  266. claude_mpm/skills/bundled/express-local-dev.md +1429 -0
  267. claude_mpm/skills/bundled/fastapi-local-dev.md +1199 -0
  268. claude_mpm/skills/bundled/git-workflow.md +414 -0
  269. claude_mpm/skills/bundled/imagemagick.md +204 -0
  270. claude_mpm/skills/bundled/json-data-handling.md +223 -0
  271. claude_mpm/skills/bundled/nextjs-local-dev.md +807 -0
  272. claude_mpm/skills/bundled/pdf.md +141 -0
  273. claude_mpm/skills/bundled/performance-profiling.md +567 -0
  274. claude_mpm/skills/bundled/refactoring-patterns.md +180 -0
  275. claude_mpm/skills/bundled/security-scanning.md +327 -0
  276. claude_mpm/skills/bundled/systematic-debugging.md +473 -0
  277. claude_mpm/skills/bundled/test-driven-development.md +378 -0
  278. claude_mpm/skills/bundled/vite-local-dev.md +1061 -0
  279. claude_mpm/skills/bundled/web-performance-optimization.md +2305 -0
  280. claude_mpm/skills/bundled/xlsx.md +157 -0
  281. claude_mpm/skills/registry.py +286 -0
  282. claude_mpm/skills/skill_manager.py +310 -0
  283. claude_mpm/storage/state_storage.py +15 -15
  284. claude_mpm/tools/code_tree_analyzer.py +177 -141
  285. claude_mpm/tools/code_tree_events.py +4 -2
  286. claude_mpm/utils/agent_dependency_loader.py +40 -20
  287. claude_mpm/utils/display_helper.py +260 -0
  288. claude_mpm/utils/git_analyzer.py +407 -0
  289. claude_mpm/utils/robust_installer.py +73 -19
  290. {claude_mpm-4.7.4.dist-info → claude_mpm-4.18.2.dist-info}/METADATA +129 -12
  291. {claude_mpm-4.7.4.dist-info → claude_mpm-4.18.2.dist-info}/RECORD +295 -193
  292. claude_mpm/dashboard/static/css/code-tree.css +0 -1639
  293. claude_mpm/dashboard/static/index-hub-backup.html +0 -713
  294. claude_mpm/dashboard/static/js/components/code-tree/tree-breadcrumb.js +0 -353
  295. claude_mpm/dashboard/static/js/components/code-tree/tree-constants.js +0 -235
  296. claude_mpm/dashboard/static/js/components/code-tree/tree-search.js +0 -409
  297. claude_mpm/dashboard/static/js/components/code-tree/tree-utils.js +0 -435
  298. claude_mpm/dashboard/static/js/components/code-tree.js +0 -5869
  299. claude_mpm/dashboard/static/js/components/code-viewer.js +0 -1386
  300. claude_mpm/hooks/claude_hooks/hook_handler_eventbus.py +0 -425
  301. claude_mpm/hooks/claude_hooks/hook_handler_original.py +0 -1041
  302. claude_mpm/hooks/claude_hooks/hook_handler_refactored.py +0 -347
  303. claude_mpm/services/agents/deployment/agent_lifecycle_manager_refactored.py +0 -575
  304. claude_mpm/services/project/analyzer_refactored.py +0 -450
  305. {claude_mpm-4.7.4.dist-info → claude_mpm-4.18.2.dist-info}/WHEEL +0 -0
  306. {claude_mpm-4.7.4.dist-info → claude_mpm-4.18.2.dist-info}/entry_points.txt +0 -0
  307. {claude_mpm-4.7.4.dist-info → claude_mpm-4.18.2.dist-info}/licenses/LICENSE +0 -0
  308. {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": [3000, 3999],
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": "1.0.2"
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
  }