claude-mpm 5.1.9__py3-none-any.whl → 5.4.48__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.

Files changed (248) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/__init__.py +4 -0
  3. claude_mpm/agents/BASE_AGENT.md +164 -0
  4. claude_mpm/agents/CLAUDE_MPM_TEACHER_OUTPUT_STYLE.md +1 -1
  5. claude_mpm/agents/MEMORY.md +1 -1
  6. claude_mpm/agents/PM_INSTRUCTIONS.md +843 -900
  7. claude_mpm/agents/WORKFLOW.md +5 -254
  8. claude_mpm/agents/agent_loader.py +13 -44
  9. claude_mpm/agents/base_agent.json +1 -1
  10. claude_mpm/agents/frontmatter_validator.py +2 -2
  11. claude_mpm/agents/templates/circuit-breakers.md +138 -1
  12. claude_mpm/cli/__main__.py +4 -0
  13. claude_mpm/cli/chrome_devtools_installer.py +175 -0
  14. claude_mpm/cli/commands/agent_state_manager.py +18 -27
  15. claude_mpm/cli/commands/agents.py +9 -40
  16. claude_mpm/cli/commands/auto_configure.py +210 -25
  17. claude_mpm/cli/commands/config.py +88 -2
  18. claude_mpm/cli/commands/configure.py +1098 -159
  19. claude_mpm/cli/commands/configure_agent_display.py +25 -6
  20. claude_mpm/cli/commands/mpm_init/core.py +225 -46
  21. claude_mpm/cli/commands/mpm_init/knowledge_extractor.py +481 -0
  22. claude_mpm/cli/commands/mpm_init/prompts.py +280 -0
  23. claude_mpm/cli/commands/postmortem.py +1 -1
  24. claude_mpm/cli/commands/profile.py +277 -0
  25. claude_mpm/cli/commands/skills.py +218 -197
  26. claude_mpm/cli/commands/summarize.py +413 -0
  27. claude_mpm/cli/executor.py +21 -3
  28. claude_mpm/cli/interactive/agent_wizard.py +2 -2
  29. claude_mpm/cli/parsers/agents_parser.py +0 -9
  30. claude_mpm/cli/parsers/auto_configure_parser.py +0 -138
  31. claude_mpm/cli/parsers/base_parser.py +12 -0
  32. claude_mpm/cli/parsers/config_parser.py +153 -83
  33. claude_mpm/cli/parsers/profile_parser.py +148 -0
  34. claude_mpm/cli/parsers/skills_parser.py +0 -5
  35. claude_mpm/cli/startup.py +876 -149
  36. claude_mpm/commands/mpm-config.md +28 -0
  37. claude_mpm/commands/mpm-doctor.md +9 -22
  38. claude_mpm/commands/mpm-help.md +5 -287
  39. claude_mpm/commands/mpm-init.md +81 -507
  40. claude_mpm/commands/mpm-monitor.md +15 -402
  41. claude_mpm/commands/mpm-organize.md +120 -0
  42. claude_mpm/commands/mpm-postmortem.md +6 -108
  43. claude_mpm/commands/mpm-session-resume.md +12 -363
  44. claude_mpm/commands/mpm-status.md +5 -69
  45. claude_mpm/commands/mpm-ticket-view.md +52 -495
  46. claude_mpm/commands/mpm-version.md +5 -107
  47. claude_mpm/config/agent_sources.py +27 -0
  48. claude_mpm/core/config.py +2 -4
  49. claude_mpm/core/framework/formatters/content_formatter.py +3 -13
  50. claude_mpm/core/framework/loaders/agent_loader.py +8 -5
  51. claude_mpm/core/framework/loaders/instruction_loader.py +52 -11
  52. claude_mpm/core/framework_loader.py +4 -2
  53. claude_mpm/core/logger.py +13 -0
  54. claude_mpm/core/optimized_startup.py +59 -0
  55. claude_mpm/core/shared/config_loader.py +1 -1
  56. claude_mpm/core/socketio_pool.py +3 -3
  57. claude_mpm/core/unified_agent_registry.py +5 -15
  58. claude_mpm/dashboard/static/svelte-build/_app/env.js +1 -0
  59. claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/0.B_FtCwCQ.css +1 -0
  60. claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/2.Cl_eSA4x.css +1 -0
  61. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BgChzWQ1.js +1 -0
  62. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CIXEwuWe.js +1 -0
  63. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CWc5urbQ.js +1 -0
  64. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DMkZpdF2.js +2 -0
  65. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DjhvlsAc.js +1 -0
  66. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/N4qtv3Hx.js +2 -0
  67. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/uj46x2Wr.js +1 -0
  68. claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/app.DTL5mJO-.js +2 -0
  69. claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/start.DzuEhzqh.js +1 -0
  70. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/0.CAGBuiOw.js +1 -0
  71. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/1.DFLC8jdE.js +1 -0
  72. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/2.DPvEihJJ.js +10 -0
  73. claude_mpm/dashboard/static/svelte-build/_app/version.json +1 -0
  74. claude_mpm/dashboard/static/svelte-build/favicon.svg +7 -0
  75. claude_mpm/dashboard/static/svelte-build/index.html +36 -0
  76. claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-311.pyc +0 -0
  77. claude_mpm/hooks/claude_hooks/__pycache__/correlation_manager.cpython-311.pyc +0 -0
  78. claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-311.pyc +0 -0
  79. claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-311.pyc +0 -0
  80. claude_mpm/hooks/claude_hooks/__pycache__/installer.cpython-311.pyc +0 -0
  81. claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-311.pyc +0 -0
  82. claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-311.pyc +0 -0
  83. claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-311.pyc +0 -0
  84. claude_mpm/hooks/claude_hooks/correlation_manager.py +60 -0
  85. claude_mpm/hooks/claude_hooks/event_handlers.py +211 -78
  86. claude_mpm/hooks/claude_hooks/hook_handler.py +155 -1
  87. claude_mpm/hooks/claude_hooks/installer.py +33 -10
  88. claude_mpm/hooks/claude_hooks/memory_integration.py +26 -9
  89. claude_mpm/hooks/claude_hooks/response_tracking.py +2 -3
  90. claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-311.pyc +0 -0
  91. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager.cpython-311.pyc +0 -0
  92. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-311.pyc +0 -0
  93. claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-311.pyc +0 -0
  94. claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-311.pyc +0 -0
  95. claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-311.pyc +0 -0
  96. claude_mpm/hooks/claude_hooks/services/connection_manager.py +30 -6
  97. claude_mpm/hooks/kuzu_memory_hook.py +5 -5
  98. claude_mpm/hooks/memory_integration_hook.py +46 -1
  99. claude_mpm/init.py +63 -19
  100. claude_mpm/models/git_repository.py +3 -3
  101. claude_mpm/scripts/claude-hook-handler.sh +58 -18
  102. claude_mpm/scripts/launch_monitor.py +93 -13
  103. claude_mpm/services/agents/agent_builder.py +3 -3
  104. claude_mpm/services/agents/agent_recommendation_service.py +278 -0
  105. claude_mpm/services/agents/agent_review_service.py +280 -0
  106. claude_mpm/services/agents/cache_git_manager.py +6 -6
  107. claude_mpm/services/agents/deployment/agent_deployment.py +29 -7
  108. claude_mpm/services/agents/deployment/agent_discovery_service.py +4 -5
  109. claude_mpm/services/agents/deployment/agent_format_converter.py +23 -13
  110. claude_mpm/services/agents/deployment/agent_template_builder.py +32 -20
  111. claude_mpm/services/agents/deployment/agents_directory_resolver.py +2 -2
  112. claude_mpm/services/agents/deployment/async_agent_deployment.py +31 -27
  113. claude_mpm/services/agents/deployment/local_template_deployment.py +3 -1
  114. claude_mpm/services/agents/deployment/multi_source_deployment_service.py +247 -35
  115. claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +392 -87
  116. claude_mpm/services/agents/git_source_manager.py +53 -4
  117. claude_mpm/services/agents/loading/base_agent_manager.py +1 -13
  118. claude_mpm/services/agents/recommender.py +5 -3
  119. claude_mpm/services/agents/single_tier_deployment_service.py +2 -2
  120. claude_mpm/services/agents/sources/git_source_sync_service.py +120 -7
  121. claude_mpm/services/agents/startup_sync.py +22 -2
  122. claude_mpm/services/agents/toolchain_detector.py +10 -6
  123. claude_mpm/services/analysis/__init__.py +11 -1
  124. claude_mpm/services/analysis/clone_detector.py +1030 -0
  125. claude_mpm/services/command_deployment_service.py +81 -10
  126. claude_mpm/services/diagnostics/checks/agent_check.py +2 -2
  127. claude_mpm/services/diagnostics/checks/agent_sources_check.py +1 -1
  128. claude_mpm/services/event_bus/config.py +3 -1
  129. claude_mpm/services/git/git_operations_service.py +101 -16
  130. claude_mpm/services/monitor/daemon.py +9 -2
  131. claude_mpm/services/monitor/daemon_manager.py +39 -3
  132. claude_mpm/services/monitor/management/lifecycle.py +8 -1
  133. claude_mpm/services/monitor/server.py +698 -22
  134. claude_mpm/services/pm_skills_deployer.py +711 -0
  135. claude_mpm/services/profile_manager.py +331 -0
  136. claude_mpm/services/self_upgrade_service.py +120 -12
  137. claude_mpm/services/skills/__init__.py +3 -0
  138. claude_mpm/services/skills/git_skill_source_manager.py +130 -2
  139. claude_mpm/services/skills/selective_skill_deployer.py +704 -0
  140. claude_mpm/services/skills/skill_to_agent_mapper.py +406 -0
  141. claude_mpm/services/skills_deployer.py +127 -9
  142. claude_mpm/services/socketio/dashboard_server.py +1 -0
  143. claude_mpm/services/socketio/event_normalizer.py +51 -6
  144. claude_mpm/services/socketio/server/core.py +386 -108
  145. claude_mpm/services/version_control/git_operations.py +103 -0
  146. claude_mpm/skills/skill_manager.py +92 -3
  147. claude_mpm/utils/agent_dependency_loader.py +14 -2
  148. claude_mpm/utils/agent_filters.py +17 -44
  149. claude_mpm/utils/migration.py +4 -4
  150. claude_mpm/utils/robust_installer.py +47 -3
  151. {claude_mpm-5.1.9.dist-info → claude_mpm-5.4.48.dist-info}/METADATA +53 -87
  152. {claude_mpm-5.1.9.dist-info → claude_mpm-5.4.48.dist-info}/RECORD +157 -197
  153. claude_mpm-5.4.48.dist-info/entry_points.txt +5 -0
  154. claude_mpm-5.4.48.dist-info/licenses/LICENSE +94 -0
  155. claude_mpm-5.4.48.dist-info/licenses/LICENSE-FAQ.md +153 -0
  156. claude_mpm/agents/BASE_AGENT_TEMPLATE.md +0 -292
  157. claude_mpm/agents/BASE_DOCUMENTATION.md +0 -53
  158. claude_mpm/agents/BASE_OPS.md +0 -219
  159. claude_mpm/agents/BASE_PM.md +0 -480
  160. claude_mpm/agents/BASE_PROMPT_ENGINEER.md +0 -787
  161. claude_mpm/agents/BASE_QA.md +0 -167
  162. claude_mpm/agents/BASE_RESEARCH.md +0 -53
  163. claude_mpm/agents/base_agent_loader.py +0 -601
  164. claude_mpm/cli/commands/agents_detect.py +0 -380
  165. claude_mpm/cli/commands/agents_recommend.py +0 -309
  166. claude_mpm/cli/ticket_cli.py +0 -35
  167. claude_mpm/commands/mpm-agents-auto-configure.md +0 -278
  168. claude_mpm/commands/mpm-agents-detect.md +0 -177
  169. claude_mpm/commands/mpm-agents-list.md +0 -131
  170. claude_mpm/commands/mpm-agents-recommend.md +0 -223
  171. claude_mpm/commands/mpm-config-view.md +0 -150
  172. claude_mpm/commands/mpm-ticket-organize.md +0 -304
  173. claude_mpm/dashboard/analysis_runner.py +0 -455
  174. claude_mpm/dashboard/index.html +0 -13
  175. claude_mpm/dashboard/open_dashboard.py +0 -66
  176. claude_mpm/dashboard/static/css/activity.css +0 -1958
  177. claude_mpm/dashboard/static/css/connection-status.css +0 -370
  178. claude_mpm/dashboard/static/css/dashboard.css +0 -4701
  179. claude_mpm/dashboard/static/js/components/activity-tree.js +0 -1871
  180. claude_mpm/dashboard/static/js/components/agent-hierarchy.js +0 -777
  181. claude_mpm/dashboard/static/js/components/agent-inference.js +0 -956
  182. claude_mpm/dashboard/static/js/components/build-tracker.js +0 -333
  183. claude_mpm/dashboard/static/js/components/code-simple.js +0 -857
  184. claude_mpm/dashboard/static/js/components/connection-debug.js +0 -654
  185. claude_mpm/dashboard/static/js/components/diff-viewer.js +0 -891
  186. claude_mpm/dashboard/static/js/components/event-processor.js +0 -542
  187. claude_mpm/dashboard/static/js/components/event-viewer.js +0 -1155
  188. claude_mpm/dashboard/static/js/components/export-manager.js +0 -368
  189. claude_mpm/dashboard/static/js/components/file-change-tracker.js +0 -443
  190. claude_mpm/dashboard/static/js/components/file-change-viewer.js +0 -690
  191. claude_mpm/dashboard/static/js/components/file-tool-tracker.js +0 -724
  192. claude_mpm/dashboard/static/js/components/file-viewer.js +0 -580
  193. claude_mpm/dashboard/static/js/components/hud-library-loader.js +0 -211
  194. claude_mpm/dashboard/static/js/components/hud-manager.js +0 -671
  195. claude_mpm/dashboard/static/js/components/hud-visualizer.js +0 -1718
  196. claude_mpm/dashboard/static/js/components/module-viewer.js +0 -2764
  197. claude_mpm/dashboard/static/js/components/session-manager.js +0 -579
  198. claude_mpm/dashboard/static/js/components/socket-manager.js +0 -368
  199. claude_mpm/dashboard/static/js/components/ui-state-manager.js +0 -749
  200. claude_mpm/dashboard/static/js/components/unified-data-viewer.js +0 -1824
  201. claude_mpm/dashboard/static/js/components/working-directory.js +0 -920
  202. claude_mpm/dashboard/static/js/connection-manager.js +0 -536
  203. claude_mpm/dashboard/static/js/dashboard.js +0 -1914
  204. claude_mpm/dashboard/static/js/extension-error-handler.js +0 -164
  205. claude_mpm/dashboard/static/js/socket-client.js +0 -1474
  206. claude_mpm/dashboard/static/js/tab-isolation-fix.js +0 -185
  207. claude_mpm/dashboard/static/socket.io.min.js +0 -7
  208. claude_mpm/dashboard/static/socket.io.v4.8.1.backup.js +0 -7
  209. claude_mpm/dashboard/templates/code_simple.html +0 -153
  210. claude_mpm/dashboard/templates/index.html +0 -606
  211. claude_mpm/dashboard/test_dashboard.html +0 -372
  212. claude_mpm/scripts/mcp_server.py +0 -75
  213. claude_mpm/scripts/mcp_wrapper.py +0 -39
  214. claude_mpm/services/mcp_gateway/__init__.py +0 -159
  215. claude_mpm/services/mcp_gateway/auto_configure.py +0 -369
  216. claude_mpm/services/mcp_gateway/config/__init__.py +0 -17
  217. claude_mpm/services/mcp_gateway/config/config_loader.py +0 -296
  218. claude_mpm/services/mcp_gateway/config/config_schema.py +0 -243
  219. claude_mpm/services/mcp_gateway/config/configuration.py +0 -429
  220. claude_mpm/services/mcp_gateway/core/__init__.py +0 -43
  221. claude_mpm/services/mcp_gateway/core/base.py +0 -312
  222. claude_mpm/services/mcp_gateway/core/exceptions.py +0 -253
  223. claude_mpm/services/mcp_gateway/core/interfaces.py +0 -443
  224. claude_mpm/services/mcp_gateway/core/process_pool.py +0 -977
  225. claude_mpm/services/mcp_gateway/core/singleton_manager.py +0 -315
  226. claude_mpm/services/mcp_gateway/core/startup_verification.py +0 -316
  227. claude_mpm/services/mcp_gateway/main.py +0 -589
  228. claude_mpm/services/mcp_gateway/registry/__init__.py +0 -12
  229. claude_mpm/services/mcp_gateway/registry/service_registry.py +0 -412
  230. claude_mpm/services/mcp_gateway/registry/tool_registry.py +0 -489
  231. claude_mpm/services/mcp_gateway/server/__init__.py +0 -15
  232. claude_mpm/services/mcp_gateway/server/mcp_gateway.py +0 -414
  233. claude_mpm/services/mcp_gateway/server/stdio_handler.py +0 -372
  234. claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -712
  235. claude_mpm/services/mcp_gateway/tools/__init__.py +0 -36
  236. claude_mpm/services/mcp_gateway/tools/base_adapter.py +0 -485
  237. claude_mpm/services/mcp_gateway/tools/document_summarizer.py +0 -789
  238. claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +0 -654
  239. claude_mpm/services/mcp_gateway/tools/health_check_tool.py +0 -456
  240. claude_mpm/services/mcp_gateway/tools/hello_world.py +0 -551
  241. claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +0 -555
  242. claude_mpm/services/mcp_gateway/utils/__init__.py +0 -14
  243. claude_mpm/services/mcp_gateway/utils/package_version_checker.py +0 -160
  244. claude_mpm/services/mcp_gateway/utils/update_preferences.py +0 -170
  245. claude_mpm-5.1.9.dist-info/entry_points.txt +0 -10
  246. claude_mpm-5.1.9.dist-info/licenses/LICENSE +0 -21
  247. {claude_mpm-5.1.9.dist-info → claude_mpm-5.4.48.dist-info}/WHEEL +0 -0
  248. {claude_mpm-5.1.9.dist-info → claude_mpm-5.4.48.dist-info}/top_level.txt +0 -0
@@ -1,370 +0,0 @@
1
- /**
2
- * Enhanced Connection Status Styles
3
- * Provides visual feedback for connection state and quality
4
- */
5
-
6
- /* Connection Status Badge Enhancements */
7
- .status-badge {
8
- display: inline-flex;
9
- align-items: center;
10
- gap: 6px;
11
- padding: 6px 12px;
12
- border-radius: 20px;
13
- font-size: 13px;
14
- font-weight: 600;
15
- transition: all 0.3s ease;
16
- position: relative;
17
- overflow: hidden;
18
- }
19
-
20
- .status-badge span {
21
- display: inline-block;
22
- animation: pulse 2s infinite;
23
- }
24
-
25
- /* Connection States */
26
- .status-connecting {
27
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
28
- color: white;
29
- }
30
-
31
- .status-connecting span {
32
- animation: spin 1s linear infinite;
33
- }
34
-
35
- .status-connected {
36
- background: linear-gradient(135deg, #667eea 0%, #4299e1 100%);
37
- color: white;
38
- box-shadow: 0 2px 10px rgba(66, 153, 225, 0.3);
39
- }
40
-
41
- .status-connected span {
42
- color: #68d391;
43
- animation: pulse-connected 2s infinite;
44
- }
45
-
46
- .status-reconnecting {
47
- background: linear-gradient(135deg, #f6d365 0%, #fda085 100%);
48
- color: #744210;
49
- }
50
-
51
- .status-reconnecting span {
52
- animation: spin 1s linear infinite;
53
- }
54
-
55
- .status-disconnected {
56
- background: linear-gradient(135deg, #e3e3e3 0%, #b8b8b8 100%);
57
- color: #4a5568;
58
- }
59
-
60
- .status-stale {
61
- background: linear-gradient(135deg, #ffeaa7 0%, #fdcb6e 100%);
62
- color: #744210;
63
- }
64
-
65
- .status-stale::after {
66
- content: '';
67
- position: absolute;
68
- top: 0;
69
- left: -100%;
70
- width: 100%;
71
- height: 100%;
72
- background: linear-gradient(90deg, transparent, rgba(255,255,255,0.3), transparent);
73
- animation: shimmer 2s infinite;
74
- }
75
-
76
- .status-failed {
77
- background: linear-gradient(135deg, #fc5c7d 0%, #fc5c7d 100%);
78
- color: white;
79
- }
80
-
81
- /* Connection Quality Indicator */
82
- .connection-quality {
83
- display: flex;
84
- align-items: center;
85
- gap: 8px;
86
- padding: 4px 8px;
87
- background: #f7fafc;
88
- border-radius: 8px;
89
- font-size: 12px;
90
- }
91
-
92
- .quality-bar {
93
- width: 60px;
94
- height: 6px;
95
- background: #e2e8f0;
96
- border-radius: 3px;
97
- overflow: hidden;
98
- position: relative;
99
- }
100
-
101
- .quality-fill {
102
- height: 100%;
103
- transition: width 0.3s ease, background 0.3s ease;
104
- border-radius: 3px;
105
- }
106
-
107
- .quality-good .quality-fill {
108
- background: linear-gradient(90deg, #68d391, #48bb78);
109
- }
110
-
111
- .quality-moderate .quality-fill {
112
- background: linear-gradient(90deg, #f6d365, #fda085);
113
- }
114
-
115
- .quality-poor .quality-fill {
116
- background: linear-gradient(90deg, #fc5c7d, #fc5c7d);
117
- }
118
-
119
- .quality-text {
120
- color: #4a5568;
121
- font-weight: 500;
122
- }
123
-
124
- /* Latency Display */
125
- .connection-latency {
126
- display: inline-flex;
127
- align-items: center;
128
- padding: 2px 6px;
129
- border-radius: 4px;
130
- font-size: 11px;
131
- font-weight: 600;
132
- font-family: 'SF Mono', Monaco, monospace;
133
- }
134
-
135
- .latency-good {
136
- background: #c6f6d5;
137
- color: #22543d;
138
- }
139
-
140
- .latency-moderate {
141
- background: #fed7aa;
142
- color: #7c2d12;
143
- }
144
-
145
- .latency-poor {
146
- background: #fed7d7;
147
- color: #742a2a;
148
- }
149
-
150
- /* Connection Metrics Panel */
151
- .connection-metrics {
152
- background: white;
153
- border-radius: 12px;
154
- padding: 16px;
155
- box-shadow: 0 2px 8px rgba(0,0,0,0.08);
156
- margin-top: 16px;
157
- }
158
-
159
- .metrics-grid {
160
- display: grid;
161
- grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
162
- gap: 12px;
163
- }
164
-
165
- .metric-item {
166
- text-align: center;
167
- padding: 8px;
168
- background: #f7fafc;
169
- border-radius: 8px;
170
- }
171
-
172
- .metric-value {
173
- font-size: 20px;
174
- font-weight: 700;
175
- color: #2d3748;
176
- display: block;
177
- }
178
-
179
- .metric-label {
180
- font-size: 11px;
181
- color: #718096;
182
- text-transform: uppercase;
183
- letter-spacing: 0.5px;
184
- margin-top: 4px;
185
- }
186
-
187
- /* Notification Area */
188
- .connection-notifications {
189
- position: fixed;
190
- top: 20px;
191
- right: 20px;
192
- z-index: 1000;
193
- max-width: 320px;
194
- }
195
-
196
- .notification {
197
- background: white;
198
- padding: 12px 16px;
199
- border-radius: 8px;
200
- box-shadow: 0 4px 12px rgba(0,0,0,0.15);
201
- margin-bottom: 8px;
202
- font-size: 14px;
203
- opacity: 1;
204
- transition: opacity 0.3s ease, transform 0.3s ease;
205
- animation: slideIn 0.3s ease;
206
- border-left: 4px solid;
207
- }
208
-
209
- .notification-info {
210
- border-left-color: #4299e1;
211
- }
212
-
213
- .notification-success {
214
- border-left-color: #48bb78;
215
- background: #f0fff4;
216
- }
217
-
218
- .notification-warning {
219
- border-left-color: #ed8936;
220
- background: #fffdf7;
221
- }
222
-
223
- .notification-error {
224
- border-left-color: #f56565;
225
- background: #fff5f5;
226
- }
227
-
228
- /* Connection Health Badge */
229
- .connection-health {
230
- display: inline-flex;
231
- align-items: center;
232
- gap: 6px;
233
- padding: 4px 8px;
234
- background: #f7fafc;
235
- border-radius: 6px;
236
- font-size: 12px;
237
- }
238
-
239
- .health-indicator {
240
- width: 8px;
241
- height: 8px;
242
- border-radius: 50%;
243
- animation: pulse 2s infinite;
244
- }
245
-
246
- .health-excellent {
247
- background: #48bb78;
248
- box-shadow: 0 0 0 2px rgba(72, 187, 120, 0.3);
249
- }
250
-
251
- .health-good {
252
- background: #38b2ac;
253
- box-shadow: 0 0 0 2px rgba(56, 178, 172, 0.3);
254
- }
255
-
256
- .health-fair {
257
- background: #ed8936;
258
- box-shadow: 0 0 0 2px rgba(237, 137, 54, 0.3);
259
- }
260
-
261
- .health-poor {
262
- background: #f56565;
263
- box-shadow: 0 0 0 2px rgba(245, 101, 101, 0.3);
264
- }
265
-
266
- /* Animations */
267
- @keyframes pulse {
268
- 0%, 100% {
269
- opacity: 1;
270
- }
271
- 50% {
272
- opacity: 0.5;
273
- }
274
- }
275
-
276
- @keyframes pulse-connected {
277
- 0%, 100% {
278
- transform: scale(1);
279
- opacity: 1;
280
- }
281
- 50% {
282
- transform: scale(1.2);
283
- opacity: 0.8;
284
- }
285
- }
286
-
287
- @keyframes spin {
288
- from {
289
- transform: rotate(0deg);
290
- }
291
- to {
292
- transform: rotate(360deg);
293
- }
294
- }
295
-
296
- @keyframes shimmer {
297
- to {
298
- left: 100%;
299
- }
300
- }
301
-
302
- @keyframes slideIn {
303
- from {
304
- transform: translateX(100%);
305
- opacity: 0;
306
- }
307
- to {
308
- transform: translateX(0);
309
- opacity: 1;
310
- }
311
- }
312
-
313
- /* Responsive Design */
314
- @media (max-width: 768px) {
315
- .connection-notifications {
316
- right: 10px;
317
- left: 10px;
318
- max-width: none;
319
- }
320
-
321
- .connection-metrics {
322
- padding: 12px;
323
- }
324
-
325
- .metrics-grid {
326
- grid-template-columns: repeat(2, 1fr);
327
- }
328
- }
329
-
330
- /* Dark Mode Support */
331
- @media (prefers-color-scheme: dark) {
332
- .connection-quality {
333
- background: #2d3748;
334
- }
335
-
336
- .quality-bar {
337
- background: #4a5568;
338
- }
339
-
340
- .quality-text {
341
- color: #cbd5e0;
342
- }
343
-
344
- .connection-metrics {
345
- background: #2d3748;
346
- box-shadow: 0 2px 8px rgba(0,0,0,0.3);
347
- }
348
-
349
- .metric-item {
350
- background: #1a202c;
351
- }
352
-
353
- .metric-value {
354
- color: #e2e8f0;
355
- }
356
-
357
- .metric-label {
358
- color: #a0aec0;
359
- }
360
-
361
- .notification {
362
- background: #2d3748;
363
- color: #e2e8f0;
364
- box-shadow: 0 4px 12px rgba(0,0,0,0.3);
365
- }
366
-
367
- .connection-health {
368
- background: #2d3748;
369
- }
370
- }