claude-mpm 4.14.0__py3-none-any.whl → 4.14.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.

Potentially problematic release.


This version of claude-mpm might be problematic. Click here for more details.

claude_mpm/VERSION CHANGED
@@ -1 +1 @@
1
- 4.14.0
1
+ 4.14.2
@@ -2,7 +2,7 @@
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",
5
+ "version": "2.0.0",
6
6
  "author": "Claude MPM",
7
7
  "authority": {
8
8
  "level": "deployment_manager",
@@ -15,6 +15,73 @@
15
15
  ]
16
16
  },
17
17
  "capabilities": {
18
+ "local_deploy_cli": {
19
+ "description": "Use claude-mpm local-deploy CLI for advanced process management",
20
+ "commands": {
21
+ "start": {
22
+ "syntax": "claude-mpm local-deploy start --command <cmd> [--port <port>] [--auto-restart] [--health-check <url>]",
23
+ "description": "Start a deployment with background process spawning, health monitoring, and auto-restart",
24
+ "example": "claude-mpm local-deploy start --command 'uvicorn main:app --reload' --port 8000 --auto-restart --health-check http://localhost:8000/health"
25
+ },
26
+ "status": {
27
+ "syntax": "claude-mpm local-deploy status <deployment-id>",
28
+ "description": "Get detailed deployment status including process info, health, and resource usage",
29
+ "provides": ["process_info", "health_status", "resource_usage", "uptime", "restart_count"]
30
+ },
31
+ "monitor": {
32
+ "syntax": "claude-mpm local-deploy monitor <deployment-id> [--refresh 2]",
33
+ "description": "Live dashboard with real-time updates of deployment metrics"
34
+ },
35
+ "health": {
36
+ "syntax": "claude-mpm local-deploy health <deployment-id>",
37
+ "description": "Run comprehensive health checks (HTTP endpoint, process responsive, resource limits)",
38
+ "checks": ["http_endpoint", "process_responsive", "resource_limits"]
39
+ },
40
+ "stop": {
41
+ "syntax": "claude-mpm local-deploy stop <deployment-id>",
42
+ "description": "Gracefully stop a deployment"
43
+ },
44
+ "restart": {
45
+ "syntax": "claude-mpm local-deploy restart <deployment-id>",
46
+ "description": "Restart a deployment with graceful shutdown"
47
+ },
48
+ "list": {
49
+ "syntax": "claude-mpm local-deploy list [--status running|stopped|crashed]",
50
+ "description": "List all deployments with optional status filtering"
51
+ },
52
+ "history": {
53
+ "syntax": "claude-mpm local-deploy history <deployment-id>",
54
+ "description": "View deployment restart history and crash logs"
55
+ },
56
+ "enable-auto-restart": {
57
+ "syntax": "claude-mpm local-deploy enable-auto-restart <deployment-id>",
58
+ "description": "Enable automatic restart on crashes with exponential backoff"
59
+ },
60
+ "disable-auto-restart": {
61
+ "syntax": "claude-mpm local-deploy disable-auto-restart <deployment-id>",
62
+ "description": "Disable automatic restart for a deployment"
63
+ }
64
+ },
65
+ "features": [
66
+ "background_process_spawning",
67
+ "automatic_health_monitoring",
68
+ "auto_restart_with_exponential_backoff",
69
+ "memory_leak_detection",
70
+ "log_pattern_monitoring",
71
+ "resource_usage_tracking",
72
+ "graceful_shutdown_handling"
73
+ ],
74
+ "integration_workflow": [
75
+ "detect_framework",
76
+ "build_start_command",
77
+ "execute_local_deploy_start",
78
+ "configure_health_endpoint",
79
+ "enable_auto_restart",
80
+ "verify_health_endpoint",
81
+ "monitor_initial_stability",
82
+ "report_deployment_url_and_status"
83
+ ]
84
+ },
18
85
  "port_allocation": {
19
86
  "description": "Deterministic hash-based port allocation for consistent project ports",
20
87
  "features": [
@@ -55,7 +122,12 @@
55
122
  "svelte",
56
123
  "nuxt",
57
124
  "gatsby",
58
- "vite"
125
+ "vite",
126
+ "express",
127
+ "nestjs",
128
+ "remix",
129
+ "sveltekit",
130
+ "astro"
59
131
  ],
60
132
  "python": [
61
133
  "django",
@@ -64,6 +136,23 @@
64
136
  "streamlit",
65
137
  "gradio"
66
138
  ],
139
+ "rust": [
140
+ "actix-web",
141
+ "rocket",
142
+ "axum",
143
+ "warp"
144
+ ],
145
+ "go": [
146
+ "gin",
147
+ "echo",
148
+ "fiber",
149
+ "net/http"
150
+ ],
151
+ "java": [
152
+ "spring-boot",
153
+ "tomcat",
154
+ "jetty"
155
+ ],
67
156
  "ruby": [
68
157
  "rails",
69
158
  "sinatra"
@@ -72,6 +161,10 @@
72
161
  "laravel",
73
162
  "symfony"
74
163
  ],
164
+ "dart": [
165
+ "flutter-web",
166
+ "shelf"
167
+ ],
75
168
  "static": [
76
169
  "hugo",
77
170
  "jekyll",
@@ -384,6 +477,204 @@
384
477
  "dev": "flask run",
385
478
  "prod": "gunicorn app:app"
386
479
  }
480
+ },
481
+ "python_fastapi": {
482
+ "files": [
483
+ "main.py",
484
+ "app.py"
485
+ ],
486
+ "requirements": [
487
+ "fastapi",
488
+ "uvicorn"
489
+ ],
490
+ "commands": {
491
+ "dev": "uvicorn main:app --reload --port {port}",
492
+ "prod": "uvicorn main:app --workers 4 --port {port}"
493
+ }
494
+ },
495
+ "nodejs_express": {
496
+ "files": [
497
+ "server.js",
498
+ "app.js",
499
+ "index.js"
500
+ ],
501
+ "package_json": [
502
+ "express"
503
+ ],
504
+ "commands": {
505
+ "dev": "nodemon server.js",
506
+ "prod": "node server.js"
507
+ }
508
+ },
509
+ "rust_actix": {
510
+ "files": [
511
+ "Cargo.toml",
512
+ "Cargo.lock",
513
+ "src/main.rs"
514
+ ],
515
+ "cargo_dependencies": [
516
+ "actix-web"
517
+ ],
518
+ "commands": {
519
+ "dev": "cargo run",
520
+ "watch": "cargo watch -x run",
521
+ "build": "cargo build --release",
522
+ "start": "./target/release/{app_name}"
523
+ }
524
+ },
525
+ "rust_rocket": {
526
+ "files": [
527
+ "Cargo.toml",
528
+ "Rocket.toml",
529
+ "src/main.rs"
530
+ ],
531
+ "cargo_dependencies": [
532
+ "rocket"
533
+ ],
534
+ "commands": {
535
+ "dev": "cargo run",
536
+ "watch": "cargo watch -x run",
537
+ "build": "cargo build --release",
538
+ "start": "./target/release/{app_name}"
539
+ }
540
+ },
541
+ "rust_axum": {
542
+ "files": [
543
+ "Cargo.toml",
544
+ "src/main.rs"
545
+ ],
546
+ "cargo_dependencies": [
547
+ "axum"
548
+ ],
549
+ "commands": {
550
+ "dev": "cargo run",
551
+ "watch": "cargo watch -x run",
552
+ "build": "cargo build --release",
553
+ "start": "./target/release/{app_name}"
554
+ }
555
+ },
556
+ "go_gin": {
557
+ "files": [
558
+ "go.mod",
559
+ "go.sum",
560
+ "main.go"
561
+ ],
562
+ "go_imports": [
563
+ "github.com/gin-gonic/gin"
564
+ ],
565
+ "commands": {
566
+ "dev": "go run .",
567
+ "watch": "air",
568
+ "build": "go build -o {app_name}",
569
+ "start": "./{app_name}"
570
+ }
571
+ },
572
+ "go_echo": {
573
+ "files": [
574
+ "go.mod",
575
+ "go.sum",
576
+ "main.go"
577
+ ],
578
+ "go_imports": [
579
+ "github.com/labstack/echo"
580
+ ],
581
+ "commands": {
582
+ "dev": "go run .",
583
+ "watch": "air",
584
+ "build": "go build -o {app_name}",
585
+ "start": "./{app_name}"
586
+ }
587
+ },
588
+ "go_fiber": {
589
+ "files": [
590
+ "go.mod",
591
+ "go.sum",
592
+ "main.go"
593
+ ],
594
+ "go_imports": [
595
+ "github.com/gofiber/fiber"
596
+ ],
597
+ "commands": {
598
+ "dev": "go run .",
599
+ "watch": "air",
600
+ "build": "go build -o {app_name}",
601
+ "start": "./{app_name}"
602
+ }
603
+ },
604
+ "java_spring_boot_maven": {
605
+ "files": [
606
+ "pom.xml",
607
+ "src/main/java",
608
+ "application.properties"
609
+ ],
610
+ "dependencies": [
611
+ "spring-boot"
612
+ ],
613
+ "commands": {
614
+ "dev": "mvn spring-boot:run",
615
+ "build": "mvn clean package",
616
+ "start": "java -jar target/{app_name}.jar"
617
+ }
618
+ },
619
+ "java_spring_boot_gradle": {
620
+ "files": [
621
+ "build.gradle",
622
+ "src/main/java",
623
+ "application.properties"
624
+ ],
625
+ "dependencies": [
626
+ "spring-boot"
627
+ ],
628
+ "commands": {
629
+ "dev": "gradle bootRun",
630
+ "build": "gradle clean build",
631
+ "start": "java -jar build/libs/{app_name}.jar"
632
+ }
633
+ },
634
+ "ruby_rails": {
635
+ "files": [
636
+ "Gemfile",
637
+ "Rakefile",
638
+ "config.ru",
639
+ "config/application.rb"
640
+ ],
641
+ "gemfile": [
642
+ "rails"
643
+ ],
644
+ "commands": {
645
+ "dev": "bundle exec rails server -p {port}",
646
+ "build": "bundle exec rails assets:precompile",
647
+ "start": "bundle exec puma -C config/puma.rb"
648
+ }
649
+ },
650
+ "php_laravel": {
651
+ "files": [
652
+ "artisan",
653
+ "composer.json",
654
+ "app/Http/Kernel.php"
655
+ ],
656
+ "composer": [
657
+ "laravel/framework"
658
+ ],
659
+ "commands": {
660
+ "dev": "php artisan serve --port={port}",
661
+ "prod": "php artisan serve --port={port} --env=production"
662
+ }
663
+ },
664
+ "dart_flutter_web": {
665
+ "files": [
666
+ "pubspec.yaml",
667
+ "lib/main.dart",
668
+ "web"
669
+ ],
670
+ "dependencies": [
671
+ "flutter"
672
+ ],
673
+ "commands": {
674
+ "dev": "flutter run -d web-server --web-port={port}",
675
+ "build": "flutter build web",
676
+ "start": "serve -s build/web -p {port}"
677
+ }
387
678
  }
388
679
  },
389
680
  "deployment_strategies": {
@@ -416,6 +707,133 @@
416
707
  "pm2 start gunicorn --name '{app_name}' -- app:app --bind 0.0.0.0:{port}"
417
708
  ],
418
709
  "health_check": "http://localhost:{port}/health"
710
+ },
711
+ "fastapi": {
712
+ "method": "local-deploy",
713
+ "steps": [
714
+ "pip install -r requirements.txt",
715
+ "claude-mpm local-deploy start --command 'uvicorn main:app --workers 4 --port {port}' --port {port} --auto-restart --health-check http://localhost:{port}/health"
716
+ ],
717
+ "health_check": "http://localhost:{port}/health",
718
+ "environment": {
719
+ "UVICORN_LOG_LEVEL": "info"
720
+ }
721
+ },
722
+ "rust_actix": {
723
+ "method": "local-deploy",
724
+ "steps": [
725
+ "cargo build --release",
726
+ "claude-mpm local-deploy start --command './target/release/{app_name}' --port {port} --auto-restart --health-check http://localhost:{port}/health"
727
+ ],
728
+ "health_check": "http://localhost:{port}/health",
729
+ "environment": {
730
+ "RUST_LOG": "info"
731
+ }
732
+ },
733
+ "rust_rocket": {
734
+ "method": "local-deploy",
735
+ "steps": [
736
+ "cargo build --release",
737
+ "claude-mpm local-deploy start --command './target/release/{app_name}' --port {port} --auto-restart --health-check http://localhost:{port}/health"
738
+ ],
739
+ "health_check": "http://localhost:{port}/health",
740
+ "environment": {
741
+ "RUST_LOG": "info",
742
+ "ROCKET_PORT": "{port}"
743
+ }
744
+ },
745
+ "rust_axum": {
746
+ "method": "local-deploy",
747
+ "steps": [
748
+ "cargo build --release",
749
+ "claude-mpm local-deploy start --command './target/release/{app_name}' --port {port} --auto-restart --health-check http://localhost:{port}/health"
750
+ ],
751
+ "health_check": "http://localhost:{port}/health",
752
+ "environment": {
753
+ "RUST_LOG": "info"
754
+ }
755
+ },
756
+ "go_gin": {
757
+ "method": "local-deploy",
758
+ "steps": [
759
+ "go build -o {app_name}",
760
+ "claude-mpm local-deploy start --command './{app_name}' --port {port} --auto-restart --health-check http://localhost:{port}/ping"
761
+ ],
762
+ "health_check": "http://localhost:{port}/ping",
763
+ "environment": {
764
+ "GO_ENV": "production"
765
+ }
766
+ },
767
+ "go_echo": {
768
+ "method": "local-deploy",
769
+ "steps": [
770
+ "go build -o {app_name}",
771
+ "claude-mpm local-deploy start --command './{app_name}' --port {port} --auto-restart --health-check http://localhost:{port}/health"
772
+ ],
773
+ "health_check": "http://localhost:{port}/health",
774
+ "environment": {
775
+ "GO_ENV": "production"
776
+ }
777
+ },
778
+ "go_fiber": {
779
+ "method": "local-deploy",
780
+ "steps": [
781
+ "go build -o {app_name}",
782
+ "claude-mpm local-deploy start --command './{app_name}' --port {port} --auto-restart --health-check http://localhost:{port}/health"
783
+ ],
784
+ "health_check": "http://localhost:{port}/health",
785
+ "environment": {
786
+ "GO_ENV": "production"
787
+ }
788
+ },
789
+ "java_spring_boot_maven": {
790
+ "method": "local-deploy",
791
+ "steps": [
792
+ "mvn clean package",
793
+ "claude-mpm local-deploy start --command 'java -jar target/{app_name}.jar' --port {port} --auto-restart --health-check http://localhost:{port}/actuator/health"
794
+ ],
795
+ "health_check": "http://localhost:{port}/actuator/health",
796
+ "environment": {
797
+ "SPRING_PROFILES_ACTIVE": "prod",
798
+ "JAVA_OPTS": "-Xmx512m -Xms256m"
799
+ }
800
+ },
801
+ "java_spring_boot_gradle": {
802
+ "method": "local-deploy",
803
+ "steps": [
804
+ "gradle clean build",
805
+ "claude-mpm local-deploy start --command 'java -jar build/libs/{app_name}.jar' --port {port} --auto-restart --health-check http://localhost:{port}/actuator/health"
806
+ ],
807
+ "health_check": "http://localhost:{port}/actuator/health",
808
+ "environment": {
809
+ "SPRING_PROFILES_ACTIVE": "prod",
810
+ "JAVA_OPTS": "-Xmx512m -Xms256m"
811
+ }
812
+ },
813
+ "ruby_rails": {
814
+ "method": "local-deploy",
815
+ "steps": [
816
+ "bundle install --deployment",
817
+ "bundle exec rails db:migrate",
818
+ "claude-mpm local-deploy start --command 'bundle exec puma -C config/puma.rb' --port {port} --auto-restart --health-check http://localhost:{port}/up"
819
+ ],
820
+ "health_check": "http://localhost:{port}/up",
821
+ "environment": {
822
+ "RAILS_ENV": "production",
823
+ "RAILS_LOG_TO_STDOUT": "1"
824
+ }
825
+ },
826
+ "php_laravel": {
827
+ "method": "local-deploy",
828
+ "steps": [
829
+ "composer install --optimize-autoloader --no-dev",
830
+ "php artisan migrate --force",
831
+ "claude-mpm local-deploy start --command 'php artisan serve --port={port} --env=production' --port {port} --auto-restart --health-check http://localhost:{port}/health"
832
+ ],
833
+ "health_check": "http://localhost:{port}/health",
834
+ "environment": {
835
+ "APP_ENV": "production"
836
+ }
419
837
  }
420
838
  },
421
839
  "development": {
@@ -435,6 +853,132 @@
435
853
  "npm install",
436
854
  "pm2 start npm --name '{app_name}-dev' -- start"
437
855
  ]
856
+ },
857
+ "fastapi": {
858
+ "method": "local-deploy",
859
+ "steps": [
860
+ "pip install -r requirements.txt",
861
+ "claude-mpm local-deploy start --command 'uvicorn main:app --reload --port {port}' --port {port} --auto-restart --health-check http://localhost:{port}/docs"
862
+ ],
863
+ "environment": {
864
+ "ENVIRONMENT": "development",
865
+ "DEBUG": "True"
866
+ }
867
+ },
868
+ "express": {
869
+ "method": "local-deploy",
870
+ "steps": [
871
+ "npm install",
872
+ "claude-mpm local-deploy start --command 'nodemon server.js' --port {port} --auto-restart --health-check http://localhost:{port}/health"
873
+ ],
874
+ "environment": {
875
+ "NODE_ENV": "development"
876
+ }
877
+ },
878
+ "rust_actix": {
879
+ "method": "local-deploy",
880
+ "steps": [
881
+ "claude-mpm local-deploy start --command 'cargo watch -x run' --port {port} --auto-restart --health-check http://localhost:{port}/health"
882
+ ],
883
+ "environment": {
884
+ "RUST_LOG": "debug"
885
+ }
886
+ },
887
+ "rust_rocket": {
888
+ "method": "local-deploy",
889
+ "steps": [
890
+ "claude-mpm local-deploy start --command 'cargo watch -x run' --port {port} --auto-restart --health-check http://localhost:{port}/health"
891
+ ],
892
+ "environment": {
893
+ "RUST_LOG": "debug"
894
+ }
895
+ },
896
+ "rust_axum": {
897
+ "method": "local-deploy",
898
+ "steps": [
899
+ "claude-mpm local-deploy start --command 'cargo watch -x run' --port {port} --auto-restart --health-check http://localhost:{port}/health"
900
+ ],
901
+ "environment": {
902
+ "RUST_LOG": "debug"
903
+ }
904
+ },
905
+ "go_gin": {
906
+ "method": "local-deploy",
907
+ "steps": [
908
+ "claude-mpm local-deploy start --command 'air' --port {port} --auto-restart --health-check http://localhost:{port}/ping",
909
+ "fallback: go run ."
910
+ ],
911
+ "environment": {
912
+ "GO_ENV": "development"
913
+ }
914
+ },
915
+ "go_echo": {
916
+ "method": "local-deploy",
917
+ "steps": [
918
+ "claude-mpm local-deploy start --command 'air' --port {port} --auto-restart --health-check http://localhost:{port}/health",
919
+ "fallback: go run ."
920
+ ],
921
+ "environment": {
922
+ "GO_ENV": "development"
923
+ }
924
+ },
925
+ "go_fiber": {
926
+ "method": "local-deploy",
927
+ "steps": [
928
+ "claude-mpm local-deploy start --command 'air' --port {port} --auto-restart --health-check http://localhost:{port}/health",
929
+ "fallback: go run ."
930
+ ],
931
+ "environment": {
932
+ "GO_ENV": "development"
933
+ }
934
+ },
935
+ "java_spring_boot_maven": {
936
+ "method": "local-deploy",
937
+ "steps": [
938
+ "claude-mpm local-deploy start --command 'mvn spring-boot:run' --port {port} --auto-restart --health-check http://localhost:{port}/actuator/health"
939
+ ],
940
+ "environment": {
941
+ "SPRING_PROFILES_ACTIVE": "dev",
942
+ "LOGGING_LEVEL_ROOT": "DEBUG"
943
+ }
944
+ },
945
+ "java_spring_boot_gradle": {
946
+ "method": "local-deploy",
947
+ "steps": [
948
+ "claude-mpm local-deploy start --command 'gradle bootRun' --port {port} --auto-restart --health-check http://localhost:{port}/actuator/health"
949
+ ],
950
+ "environment": {
951
+ "SPRING_PROFILES_ACTIVE": "dev",
952
+ "LOGGING_LEVEL_ROOT": "DEBUG"
953
+ }
954
+ },
955
+ "ruby_rails": {
956
+ "method": "local-deploy",
957
+ "steps": [
958
+ "bundle install",
959
+ "claude-mpm local-deploy start --command 'bundle exec rails server -p {port}' --port {port} --auto-restart --health-check http://localhost:{port}/up"
960
+ ],
961
+ "environment": {
962
+ "RAILS_ENV": "development"
963
+ }
964
+ },
965
+ "php_laravel": {
966
+ "method": "local-deploy",
967
+ "steps": [
968
+ "composer install",
969
+ "claude-mpm local-deploy start --command 'php artisan serve --port={port}' --port {port} --auto-restart --health-check http://localhost:{port}/health"
970
+ ],
971
+ "environment": {
972
+ "APP_ENV": "local"
973
+ }
974
+ },
975
+ "dart_flutter_web": {
976
+ "method": "local-deploy",
977
+ "steps": [
978
+ "flutter pub get",
979
+ "claude-mpm local-deploy start --command 'flutter run -d web-server --web-port={port}' --port {port} --auto-restart"
980
+ ],
981
+ "hot_reload": true
438
982
  }
439
983
  },
440
984
  "docker": {
@@ -482,6 +1026,302 @@
482
1026
  "action": "increase_memory_limit"
483
1027
  }
484
1028
  },
1029
+ "best_practices": {
1030
+ "port_selection": {
1031
+ "description": "Recommended default ports by language and framework",
1032
+ "nodejs": {
1033
+ "default_ports": [3000, 3001, 3002],
1034
+ "frameworks": {
1035
+ "express": 3000,
1036
+ "nextjs": 3000,
1037
+ "nestjs": 3000
1038
+ }
1039
+ },
1040
+ "python": {
1041
+ "default_ports": [8000, 5000, 8080],
1042
+ "frameworks": {
1043
+ "fastapi": 8000,
1044
+ "django": 8000,
1045
+ "flask": 5000
1046
+ }
1047
+ },
1048
+ "rust": {
1049
+ "default_ports": [8080, 3000],
1050
+ "frameworks": {
1051
+ "actix-web": 8080,
1052
+ "rocket": 8000,
1053
+ "axum": 3000
1054
+ }
1055
+ },
1056
+ "go": {
1057
+ "default_ports": [8080, 8000],
1058
+ "frameworks": {
1059
+ "gin": 8080,
1060
+ "echo": 1323,
1061
+ "fiber": 3000
1062
+ }
1063
+ },
1064
+ "java": {
1065
+ "default_ports": [8080, 8443],
1066
+ "frameworks": {
1067
+ "spring-boot": 8080,
1068
+ "tomcat": 8080
1069
+ }
1070
+ },
1071
+ "ruby": {
1072
+ "default_ports": [3000, 9292],
1073
+ "frameworks": {
1074
+ "rails": 3000,
1075
+ "sinatra": 4567
1076
+ }
1077
+ },
1078
+ "php": {
1079
+ "default_ports": [8000, 8080],
1080
+ "frameworks": {
1081
+ "laravel": 8000,
1082
+ "symfony": 8000
1083
+ }
1084
+ },
1085
+ "dart": {
1086
+ "default_ports": [8080],
1087
+ "frameworks": {
1088
+ "flutter-web": 8080,
1089
+ "shelf": 8080
1090
+ }
1091
+ }
1092
+ },
1093
+ "health_checks": {
1094
+ "description": "Framework-specific health check endpoints",
1095
+ "python_fastapi": {
1096
+ "primary": "/health",
1097
+ "alternatives": ["/docs", "/openapi.json"],
1098
+ "expected_status": 200,
1099
+ "timeout": 5
1100
+ },
1101
+ "python_django": {
1102
+ "primary": "/health",
1103
+ "alternatives": ["/admin"],
1104
+ "expected_status": 200,
1105
+ "timeout": 5
1106
+ },
1107
+ "nodejs_express": {
1108
+ "primary": "/health",
1109
+ "alternatives": ["/ping", "/ready"],
1110
+ "expected_status": 200,
1111
+ "timeout": 5
1112
+ },
1113
+ "rust_actix": {
1114
+ "primary": "/health",
1115
+ "expected_status": 200,
1116
+ "timeout": 5
1117
+ },
1118
+ "rust_rocket": {
1119
+ "primary": "/health",
1120
+ "expected_status": 200,
1121
+ "timeout": 5
1122
+ },
1123
+ "rust_axum": {
1124
+ "primary": "/health",
1125
+ "expected_status": 200,
1126
+ "timeout": 5
1127
+ },
1128
+ "go_gin": {
1129
+ "primary": "/ping",
1130
+ "alternatives": ["/health"],
1131
+ "expected_status": 200,
1132
+ "timeout": 5
1133
+ },
1134
+ "go_echo": {
1135
+ "primary": "/health",
1136
+ "expected_status": 200,
1137
+ "timeout": 5
1138
+ },
1139
+ "go_fiber": {
1140
+ "primary": "/health",
1141
+ "expected_status": 200,
1142
+ "timeout": 5
1143
+ },
1144
+ "java_spring_boot": {
1145
+ "primary": "/actuator/health",
1146
+ "alternatives": ["/actuator/info"],
1147
+ "expected_status": 200,
1148
+ "timeout": 10,
1149
+ "management_port": 8081
1150
+ },
1151
+ "ruby_rails": {
1152
+ "primary": "/up",
1153
+ "alternatives": ["/health"],
1154
+ "expected_status": 200,
1155
+ "timeout": 5
1156
+ },
1157
+ "php_laravel": {
1158
+ "primary": "/health",
1159
+ "alternatives": ["/api/health"],
1160
+ "expected_status": 200,
1161
+ "timeout": 5
1162
+ },
1163
+ "recommendation": {
1164
+ "endpoint": "Always configure /health endpoint",
1165
+ "check_interval": "30 seconds recommended",
1166
+ "timeout": "5 seconds maximum",
1167
+ "retry_attempts": 3
1168
+ }
1169
+ },
1170
+ "auto_restart": {
1171
+ "description": "Auto-restart configuration best practices",
1172
+ "enabled": true,
1173
+ "max_attempts": 5,
1174
+ "backoff_strategy": "exponential (2s, 4s, 8s, 16s, 32s)",
1175
+ "circuit_breaker": {
1176
+ "enabled": true,
1177
+ "threshold": 3,
1178
+ "window_seconds": 300,
1179
+ "reset_seconds": 600
1180
+ },
1181
+ "recommendation": "Enable auto-restart for all production deployments"
1182
+ },
1183
+ "log_monitoring": {
1184
+ "description": "Framework-specific log patterns to monitor",
1185
+ "python": {
1186
+ "error_patterns": ["ERROR", "CRITICAL", "Exception", "Traceback", "Failed to"],
1187
+ "action": "Trigger auto-restart on critical patterns"
1188
+ },
1189
+ "nodejs": {
1190
+ "error_patterns": ["ERROR", "Error:", "Exception", "Unhandled", "ECONNREFUSED"],
1191
+ "action": "Trigger auto-restart on critical patterns"
1192
+ },
1193
+ "rust": {
1194
+ "error_patterns": ["ERROR", "FATAL", "panic", "thread .* panicked"],
1195
+ "action": "Trigger auto-restart on critical patterns"
1196
+ },
1197
+ "go": {
1198
+ "error_patterns": ["ERROR", "FATAL", "panic:", "runtime error"],
1199
+ "action": "Trigger auto-restart on critical patterns"
1200
+ },
1201
+ "java": {
1202
+ "error_patterns": ["ERROR", "SEVERE", "Exception", "java.lang.", "OutOfMemoryError"],
1203
+ "action": "Trigger auto-restart on critical patterns"
1204
+ },
1205
+ "ruby": {
1206
+ "error_patterns": ["ERROR", "FATAL", "Exception"],
1207
+ "action": "Trigger auto-restart on critical patterns"
1208
+ },
1209
+ "php": {
1210
+ "error_patterns": ["Fatal error", "Parse error", "Exception"],
1211
+ "action": "Trigger auto-restart on critical patterns"
1212
+ },
1213
+ "enabled": true
1214
+ },
1215
+ "graceful_shutdown": {
1216
+ "description": "Graceful shutdown patterns by language",
1217
+ "nodejs": {
1218
+ "signal": "SIGTERM",
1219
+ "timeout": 10,
1220
+ "pattern": "process.on('SIGTERM', gracefulShutdown)"
1221
+ },
1222
+ "python": {
1223
+ "signal": "SIGTERM",
1224
+ "timeout": 30,
1225
+ "pattern": "signal.signal(signal.SIGTERM, shutdown_handler)"
1226
+ },
1227
+ "rust": {
1228
+ "signal": "SIGTERM",
1229
+ "timeout": 10,
1230
+ "pattern": "tokio::signal::ctrl_c() or signal handlers"
1231
+ },
1232
+ "go": {
1233
+ "signal": "SIGTERM",
1234
+ "timeout": 10,
1235
+ "pattern": "signal.Notify(quit, syscall.SIGTERM)"
1236
+ },
1237
+ "java": {
1238
+ "signal": "SIGTERM",
1239
+ "timeout": 30,
1240
+ "pattern": "server.shutdown=graceful in application.properties"
1241
+ },
1242
+ "ruby": {
1243
+ "signal": "SIGTERM",
1244
+ "timeout": 30,
1245
+ "pattern": "Puma graceful shutdown via config"
1246
+ },
1247
+ "php": {
1248
+ "signal": "SIGTERM",
1249
+ "timeout": 10,
1250
+ "pattern": "PHP-FPM graceful shutdown"
1251
+ },
1252
+ "recommendation": "Always implement graceful shutdown handlers"
1253
+ },
1254
+ "environment_configuration": {
1255
+ "description": "Environment variable patterns by framework",
1256
+ "development": {
1257
+ "python_fastapi": {
1258
+ "ENVIRONMENT": "development",
1259
+ "DEBUG": "True",
1260
+ "LOG_LEVEL": "debug",
1261
+ "RELOAD": "true"
1262
+ },
1263
+ "nodejs_express": {
1264
+ "NODE_ENV": "development",
1265
+ "DEBUG": "*"
1266
+ },
1267
+ "rust": {
1268
+ "RUST_LOG": "debug"
1269
+ },
1270
+ "go": {
1271
+ "GO_ENV": "development"
1272
+ },
1273
+ "java_spring_boot": {
1274
+ "SPRING_PROFILES_ACTIVE": "dev",
1275
+ "LOGGING_LEVEL_ROOT": "DEBUG"
1276
+ },
1277
+ "ruby_rails": {
1278
+ "RAILS_ENV": "development"
1279
+ },
1280
+ "php_laravel": {
1281
+ "APP_ENV": "local",
1282
+ "APP_DEBUG": "true"
1283
+ }
1284
+ },
1285
+ "production": {
1286
+ "python_fastapi": {
1287
+ "ENVIRONMENT": "production",
1288
+ "DEBUG": "False",
1289
+ "LOG_LEVEL": "info",
1290
+ "WORKERS": "4"
1291
+ },
1292
+ "nodejs_express": {
1293
+ "NODE_ENV": "production"
1294
+ },
1295
+ "rust": {
1296
+ "RUST_LOG": "info"
1297
+ },
1298
+ "go": {
1299
+ "GO_ENV": "production"
1300
+ },
1301
+ "java_spring_boot": {
1302
+ "SPRING_PROFILES_ACTIVE": "prod",
1303
+ "LOGGING_LEVEL_ROOT": "INFO",
1304
+ "JAVA_OPTS": "-Xmx512m -Xms256m"
1305
+ },
1306
+ "ruby_rails": {
1307
+ "RAILS_ENV": "production",
1308
+ "RAILS_LOG_TO_STDOUT": "1"
1309
+ },
1310
+ "php_laravel": {
1311
+ "APP_ENV": "production",
1312
+ "APP_DEBUG": "false"
1313
+ }
1314
+ }
1315
+ },
1316
+ "resource_monitoring": {
1317
+ "description": "Resource thresholds for health monitoring",
1318
+ "cpu_threshold": 80.0,
1319
+ "memory_threshold_mb": 500,
1320
+ "fd_threshold_percent": 0.8,
1321
+ "check_interval": 30,
1322
+ "alert_on_sustained_high_usage": true
1323
+ }
1324
+ },
485
1325
  "security": {
486
1326
  "port_exposure": "localhost_only",
487
1327
  "process_isolation": "user_level",
@@ -582,6 +1422,106 @@
582
1422
  "analyze_crash_pattern",
583
1423
  "suggest_fixes"
584
1424
  ]
1425
+ },
1426
+ {
1427
+ "user": "Deploy my FastAPI app with auto-restart",
1428
+ "response": "I'll deploy your FastAPI application with uvicorn and enable auto-restart for production stability...",
1429
+ "actions": [
1430
+ "detect_fastapi_framework",
1431
+ "install_dependencies",
1432
+ "execute_local_deploy_with_uvicorn",
1433
+ "configure_health_check_at_/health",
1434
+ "enable_auto_restart",
1435
+ "verify_endpoint_responds",
1436
+ "report_deployment_url"
1437
+ ]
1438
+ },
1439
+ {
1440
+ "user": "Start my Rust Actix-web app in dev mode",
1441
+ "response": "I'll start your Actix-web application with cargo watch for hot reloading...",
1442
+ "actions": [
1443
+ "detect_rust_actix",
1444
+ "execute_cargo_watch",
1445
+ "configure_health_check_at_/health",
1446
+ "monitor_compilation",
1447
+ "verify_server_running",
1448
+ "report_deployment_url"
1449
+ ]
1450
+ },
1451
+ {
1452
+ "user": "Deploy my Go Gin app to production",
1453
+ "response": "I'll build and deploy your Go Gin application with auto-restart enabled...",
1454
+ "actions": [
1455
+ "detect_go_gin",
1456
+ "build_go_binary",
1457
+ "execute_local_deploy_start",
1458
+ "configure_health_check_at_/ping",
1459
+ "enable_auto_restart",
1460
+ "verify_endpoint_responds",
1461
+ "report_deployment_url"
1462
+ ]
1463
+ },
1464
+ {
1465
+ "user": "Run my Spring Boot app in development",
1466
+ "response": "I'll start your Spring Boot application with Maven in development mode...",
1467
+ "actions": [
1468
+ "detect_spring_boot",
1469
+ "execute_mvn_spring_boot_run",
1470
+ "configure_health_check_at_/actuator/health",
1471
+ "wait_for_startup",
1472
+ "verify_actuator_endpoint",
1473
+ "report_deployment_url"
1474
+ ]
1475
+ },
1476
+ {
1477
+ "user": "Deploy my Rails app with Puma",
1478
+ "response": "I'll deploy your Rails application with Puma and enable auto-restart...",
1479
+ "actions": [
1480
+ "detect_rails",
1481
+ "bundle_install",
1482
+ "run_migrations",
1483
+ "execute_local_deploy_with_puma",
1484
+ "configure_health_check_at_/up",
1485
+ "enable_auto_restart",
1486
+ "verify_endpoint_responds",
1487
+ "report_deployment_url"
1488
+ ]
1489
+ },
1490
+ {
1491
+ "user": "Start my Laravel app locally",
1492
+ "response": "I'll start your Laravel application with php artisan serve...",
1493
+ "actions": [
1494
+ "detect_laravel",
1495
+ "composer_install",
1496
+ "run_migrations",
1497
+ "execute_local_deploy_artisan_serve",
1498
+ "configure_health_check_at_/health",
1499
+ "verify_endpoint_responds",
1500
+ "report_deployment_url"
1501
+ ]
1502
+ },
1503
+ {
1504
+ "user": "Deploy my Express.js API",
1505
+ "response": "I'll deploy your Express.js API with nodemon for development...",
1506
+ "actions": [
1507
+ "detect_express",
1508
+ "npm_install",
1509
+ "execute_local_deploy_with_nodemon",
1510
+ "configure_health_check_at_/health",
1511
+ "enable_auto_restart",
1512
+ "verify_endpoint_responds",
1513
+ "report_deployment_url"
1514
+ ]
1515
+ },
1516
+ {
1517
+ "user": "Check health of all deployments",
1518
+ "response": "I'll check the health status of all active deployments...",
1519
+ "actions": [
1520
+ "list_all_deployments",
1521
+ "check_health_for_each",
1522
+ "report_health_status",
1523
+ "identify_unhealthy_services"
1524
+ ]
585
1525
  }
586
1526
  ],
587
1527
  "usage_guide": {
@@ -618,12 +1558,104 @@
618
1558
  "state_file_corruption": "Delete .claude-mpm/deployment-state.json to reset (will lose tracking)"
619
1559
  }
620
1560
  },
621
- "agent_version": "1.0.2",
1561
+ "agent_version": "2.0.0",
622
1562
  "knowledge": {
623
1563
  "best_practices": [
624
1564
  "Review file commit history before modifications: git log --oneline -5 <file_path>",
625
1565
  "Write succinct commit messages explaining WHAT changed and WHY",
626
1566
  "Follow conventional commits format: feat/fix/docs/refactor/perf/test/chore"
627
1567
  ]
1568
+ },
1569
+ "tool_use_patterns": {
1570
+ "framework_detection": {
1571
+ "description": "Detect the framework before deployment",
1572
+ "workflow": [
1573
+ "Check for framework-specific files (Cargo.toml, go.mod, pom.xml, package.json, etc.)",
1574
+ "Read configuration files to identify dependencies",
1575
+ "Match against detection_patterns to determine framework",
1576
+ "Select appropriate deployment strategy based on framework"
1577
+ ]
1578
+ },
1579
+ "deployment_workflow": {
1580
+ "description": "Standard deployment workflow for all frameworks",
1581
+ "steps": [
1582
+ "1. Detect framework using detection_patterns",
1583
+ "2. Choose deployment mode (development or production)",
1584
+ "3. Install dependencies if needed",
1585
+ "4. Build application if production mode",
1586
+ "5. Execute local-deploy start command with appropriate flags",
1587
+ "6. Configure health check endpoint based on framework",
1588
+ "7. Enable auto-restart for production deployments",
1589
+ "8. Verify endpoint responds before reporting success",
1590
+ "9. Report deployment URL with health status"
1591
+ ]
1592
+ },
1593
+ "health_check_configuration": {
1594
+ "description": "Configure health checks based on framework",
1595
+ "examples": {
1596
+ "fastapi": "claude-mpm local-deploy start --command 'uvicorn main:app --reload' --port 8000 --auto-restart --health-check http://localhost:8000/health",
1597
+ "spring_boot": "claude-mpm local-deploy start --command 'mvn spring-boot:run' --port 8080 --auto-restart --health-check http://localhost:8080/actuator/health",
1598
+ "gin": "claude-mpm local-deploy start --command './app' --port 8080 --auto-restart --health-check http://localhost:8080/ping",
1599
+ "actix": "claude-mpm local-deploy start --command 'cargo run' --port 8080 --auto-restart --health-check http://localhost:8080/health"
1600
+ }
1601
+ },
1602
+ "auto_restart_patterns": {
1603
+ "description": "Enable auto-restart for production stability",
1604
+ "when_to_use": [
1605
+ "Production deployments",
1606
+ "Long-running services",
1607
+ "APIs with high availability requirements",
1608
+ "Services that may encounter transient failures"
1609
+ ],
1610
+ "configuration": {
1611
+ "max_attempts": 5,
1612
+ "backoff_strategy": "exponential",
1613
+ "circuit_breaker_enabled": true
1614
+ }
1615
+ },
1616
+ "log_monitoring_setup": {
1617
+ "description": "Configure log monitoring for automatic issue detection",
1618
+ "python_example": "Monitor for: ERROR, CRITICAL, Exception, Traceback",
1619
+ "rust_example": "Monitor for: ERROR, FATAL, panic, thread .* panicked",
1620
+ "go_example": "Monitor for: ERROR, FATAL, panic:, runtime error",
1621
+ "java_example": "Monitor for: ERROR, SEVERE, Exception, OutOfMemoryError"
1622
+ },
1623
+ "multi_language_support": {
1624
+ "description": "Support for multiple programming languages and frameworks",
1625
+ "languages": {
1626
+ "python": ["FastAPI", "Django", "Flask"],
1627
+ "nodejs": ["Express", "Next.js", "NestJS"],
1628
+ "rust": ["Actix-web", "Rocket", "Axum"],
1629
+ "go": ["Gin", "Echo", "Fiber"],
1630
+ "java": ["Spring Boot"],
1631
+ "ruby": ["Rails"],
1632
+ "php": ["Laravel"],
1633
+ "dart": ["Flutter Web"]
1634
+ },
1635
+ "detection_priority": [
1636
+ "1. Check for language-specific lock files (Cargo.lock, go.sum, pom.xml)",
1637
+ "2. Check for framework-specific config files",
1638
+ "3. Check for main entry points (main.rs, main.go, server.js)",
1639
+ "4. Read dependencies to identify framework"
1640
+ ]
1641
+ },
1642
+ "troubleshooting_patterns": {
1643
+ "port_conflicts": {
1644
+ "detection": "EADDRINUSE or 'port already in use'",
1645
+ "action": "Use hash-based port allocation with linear probing to find available port",
1646
+ "never": "Kill existing process without verification"
1647
+ },
1648
+ "build_failures": {
1649
+ "rust": "Check Cargo.toml dependencies and run 'cargo check'",
1650
+ "go": "Check go.mod and run 'go mod tidy'",
1651
+ "java": "Check pom.xml or build.gradle and run dependency resolution",
1652
+ "nodejs": "Check package.json and run 'npm install'"
1653
+ },
1654
+ "health_check_failures": {
1655
+ "action": "Wait for application startup (up to 30 seconds for Java, 10 seconds for others)",
1656
+ "retry": "Retry health check 3 times with backoff",
1657
+ "report": "Show startup logs if health check fails"
1658
+ }
1659
+ }
628
1660
  }
629
1661
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-mpm
3
- Version: 4.14.0
3
+ Version: 4.14.2
4
4
  Summary: Claude Multi-Agent Project Manager - Orchestrate Claude with agent delegation and ticket tracking
5
5
  Author-email: Bob Matsuoka <bob@matsuoka.com>
6
6
  Maintainer: Claude MPM Team
@@ -1,5 +1,5 @@
1
1
  claude_mpm/BUILD_NUMBER,sha256=9JfxhnDtr-8l3kCP2U5TVXSErptHoga8m7XA8zqgGOc,4
2
- claude_mpm/VERSION,sha256=EsbNzYeGHvP0ZGb62vJDP5N02JE01T8kfdSU_SmCX9U,7
2
+ claude_mpm/VERSION,sha256=rbLlIbQiWCgMPTPwuqeiHsgsiTRD_NG0Tr2g6Sr13S0,7
3
3
  claude_mpm/__init__.py,sha256=UCw6j9e_tZQ3kJtTqmdfNv7MHyw9nD1jkj80WurwM2g,2064
4
4
  claude_mpm/__main__.py,sha256=Ro5UBWBoQaSAIoSqWAr7zkbLyvi4sSy28WShqAhKJG0,723
5
5
  claude_mpm/constants.py,sha256=sLjJF6Kw7H4V9WWeaEYltM-77TgXqzEMX5vx4ukM5-0,5977
@@ -46,7 +46,7 @@ claude_mpm/agents/templates/git_file_tracking.md,sha256=r8qckL8pS2nIvZAImFgbjAzp
46
46
  claude_mpm/agents/templates/golang_engineer.json,sha256=6ONJV8hs257AYiHdG1ZKz7p1iCP9NpSpno5QTS_1kzw,12686
47
47
  claude_mpm/agents/templates/imagemagick.json,sha256=dZRlUWgOjYsms93CnXshoO5w1o73uUJgcqUcnAMFDy0,17994
48
48
  claude_mpm/agents/templates/java_engineer.json,sha256=cdVOoxOCEPZdMv0EApLjvojnOW4xe6hOxL-J5u4ho1A,50068
49
- claude_mpm/agents/templates/local_ops_agent.json,sha256=pOrN6Dt8uWcefAIJ23lBI1-6RHuqTmWB3UzbHpLWGIc,17412
49
+ claude_mpm/agents/templates/local_ops_agent.json,sha256=xmogxjgfBtfRAATSfMn--ytP0OV70lqezeCIgkUFVHk,50367
50
50
  claude_mpm/agents/templates/memory_manager.json,sha256=dQJzrXuxpSUmS99854St14tyAlS70OKqMoGbOrQ9wi4,12980
51
51
  claude_mpm/agents/templates/nextjs_engineer.json,sha256=4bXN4IkxgXvRoVyS0NPDa-cZ-LozbT3sCOD_0v47rEE,18444
52
52
  claude_mpm/agents/templates/ops.json,sha256=S7TkcvaHFw7SJLYKwwm8eCvK0iMbvcHv7KTDBm7vvjc,11159
@@ -854,9 +854,9 @@ claude_mpm/utils/subprocess_utils.py,sha256=D0izRT8anjiUb_JG72zlJR_JAw1cDkb7kalN
854
854
  claude_mpm/validation/__init__.py,sha256=YZhwE3mhit-lslvRLuwfX82xJ_k4haZeKmh4IWaVwtk,156
855
855
  claude_mpm/validation/agent_validator.py,sha256=GprtAvu80VyMXcKGsK_VhYiXWA6BjKHv7O6HKx0AB9w,20917
856
856
  claude_mpm/validation/frontmatter_validator.py,sha256=YpJlYNNYcV8u6hIOi3_jaRsDnzhbcQpjCBE6eyBKaFY,7076
857
- claude_mpm-4.14.0.dist-info/licenses/LICENSE,sha256=lpaivOlPuBZW1ds05uQLJJswy8Rp_HMNieJEbFlqvLk,1072
858
- claude_mpm-4.14.0.dist-info/METADATA,sha256=L28lbbRPKyA6pa5TC_vZhqbq1Sn2fH2G-YtSjOGzepM,17967
859
- claude_mpm-4.14.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
860
- claude_mpm-4.14.0.dist-info/entry_points.txt,sha256=Vlw3GNi-OtTpKSrez04iNrPmxNxYDpIWxmJCxiZ5Tx8,526
861
- claude_mpm-4.14.0.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
862
- claude_mpm-4.14.0.dist-info/RECORD,,
857
+ claude_mpm-4.14.2.dist-info/licenses/LICENSE,sha256=lpaivOlPuBZW1ds05uQLJJswy8Rp_HMNieJEbFlqvLk,1072
858
+ claude_mpm-4.14.2.dist-info/METADATA,sha256=Df7_gDbERLNbITmqxjLckk7YBJ8JMa50aG31QyxXxss,17967
859
+ claude_mpm-4.14.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
860
+ claude_mpm-4.14.2.dist-info/entry_points.txt,sha256=Vlw3GNi-OtTpKSrez04iNrPmxNxYDpIWxmJCxiZ5Tx8,526
861
+ claude_mpm-4.14.2.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
862
+ claude_mpm-4.14.2.dist-info/RECORD,,