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,4701 +0,0 @@
1
- /* Claude MPM Dashboard Styles */
2
-
3
- /* Reset and Base Styles */
4
- * {
5
- margin: 0;
6
- padding: 0;
7
- box-sizing: border-box;
8
- }
9
-
10
- body {
11
- font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
12
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
13
- min-height: 100vh;
14
- color: #333;
15
- }
16
-
17
- .container {
18
- max-width: 1800px;
19
- margin: 0 auto;
20
- padding: 15px;
21
- padding-bottom: 20px; /* Increased space for footer with more breathing room */
22
- }
23
-
24
- /* Sessions Tab Styles */
25
- .sessions-container {
26
- padding: 15px;
27
- }
28
-
29
- .sessions-stats {
30
- display: grid;
31
- grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
32
- gap: 15px;
33
- margin-bottom: 20px;
34
- }
35
-
36
- .stat-card {
37
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
38
- color: white;
39
- padding: 20px;
40
- border-radius: 10px;
41
- text-align: center;
42
- box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
43
- transition: transform 0.3s ease;
44
- }
45
-
46
- .stat-card:hover {
47
- transform: translateY(-2px);
48
- box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15);
49
- }
50
-
51
- .stat-value {
52
- font-size: 28px;
53
- font-weight: bold;
54
- margin-bottom: 5px;
55
- }
56
-
57
- .stat-label {
58
- font-size: 12px;
59
- opacity: 0.9;
60
- text-transform: uppercase;
61
- letter-spacing: 0.5px;
62
- }
63
-
64
- /* System Tab Styles */
65
- .system-dashboard {
66
- padding: 20px;
67
- background: #f8f9fa;
68
- border-radius: 8px;
69
- }
70
-
71
- .system-section {
72
- background: white;
73
- border-radius: 8px;
74
- padding: 20px;
75
- margin-bottom: 20px;
76
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
77
- }
78
-
79
- .system-section h3 {
80
- margin: 0 0 15px 0;
81
- color: #2d3748;
82
- font-size: 18px;
83
- border-bottom: 2px solid #e2e8f0;
84
- padding-bottom: 10px;
85
- }
86
-
87
- .system-grid {
88
- display: grid;
89
- gap: 15px;
90
- }
91
-
92
- .system-card {
93
- background: #f7fafc;
94
- border: 1px solid #e2e8f0;
95
- border-radius: 6px;
96
- padding: 15px;
97
- }
98
-
99
- .system-metric {
100
- display: flex;
101
- justify-content: space-between;
102
- align-items: center;
103
- padding: 8px 0;
104
- border-bottom: 1px solid #e2e8f0;
105
- }
106
-
107
- .system-metric:last-child {
108
- border-bottom: none;
109
- }
110
-
111
- .system-label {
112
- color: #718096;
113
- font-size: 14px;
114
- font-weight: 500;
115
- }
116
-
117
- .system-value {
118
- color: #2d3748;
119
- font-size: 14px;
120
- font-weight: 600;
121
- font-family: 'Monaco', 'Consolas', monospace;
122
- }
123
-
124
- .system-value.error {
125
- color: #f56565;
126
- }
127
-
128
- .system-value.warning {
129
- color: #ed8936;
130
- }
131
-
132
- .system-value.success {
133
- color: #48bb78;
134
- }
135
-
136
- .event-stats-grid {
137
- display: grid;
138
- grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
139
- gap: 10px;
140
- }
141
-
142
- .event-stat-item {
143
- background: #f7fafc;
144
- border: 1px solid #e2e8f0;
145
- border-radius: 6px;
146
- padding: 12px;
147
- display: flex;
148
- justify-content: space-between;
149
- align-items: center;
150
- }
151
-
152
- .event-stat-type {
153
- color: #4a5568;
154
- font-size: 13px;
155
- font-weight: 500;
156
- }
157
-
158
- .event-stat-count {
159
- background: #667eea;
160
- color: white;
161
- padding: 4px 10px;
162
- border-radius: 12px;
163
- font-size: 12px;
164
- font-weight: 600;
165
- }
166
-
167
- /* Session Card Styles */
168
- .session-card {
169
- background: white;
170
- border-radius: 8px;
171
- padding: 15px;
172
- margin-bottom: 10px;
173
- border-left: 4px solid #667eea;
174
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
175
- transition: all 0.2s ease;
176
- }
177
-
178
- .session-card:hover {
179
- box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
180
- transform: translateX(2px);
181
- }
182
-
183
- .session-card.active {
184
- border-left-color: #48bb78;
185
- background: linear-gradient(to right, #f0fff4, white);
186
- }
187
-
188
- .session-card.completed {
189
- border-left-color: #cbd5e0;
190
- opacity: 0.8;
191
- }
192
-
193
- .session-header {
194
- display: flex;
195
- justify-content: space-between;
196
- align-items: center;
197
- margin-bottom: 10px;
198
- }
199
-
200
- .session-id {
201
- font-family: 'Monaco', 'Consolas', monospace;
202
- font-size: 12px;
203
- color: #718096;
204
- }
205
-
206
- .session-status {
207
- padding: 3px 8px;
208
- border-radius: 12px;
209
- font-size: 11px;
210
- font-weight: 600;
211
- text-transform: uppercase;
212
- }
213
-
214
- .session-status.active {
215
- background: #c6f6d5;
216
- color: #22543d;
217
- }
218
-
219
- .session-status.completed {
220
- background: #e2e8f0;
221
- color: #4a5568;
222
- }
223
-
224
- .session-metrics {
225
- display: grid;
226
- grid-template-columns: repeat(3, 1fr);
227
- gap: 10px;
228
- margin-top: 10px;
229
- }
230
-
231
- .session-metric {
232
- text-align: center;
233
- }
234
-
235
- .session-metric-value {
236
- font-size: 16px;
237
- font-weight: 600;
238
- color: #2d3748;
239
- }
240
-
241
- .session-metric-label {
242
- font-size: 11px;
243
- color: #a0aec0;
244
- text-transform: uppercase;
245
- }
246
-
247
- /* Footer Styles */
248
- .footer {
249
- position: fixed;
250
- bottom: 0;
251
- left: 0;
252
- right: 0;
253
- background: rgba(30, 41, 59, 0.95);
254
- backdrop-filter: blur(10px);
255
- color: #e2e8f0;
256
- padding: 12px 15px;
257
- border-top: 1px solid rgba(255, 255, 255, 0.1);
258
- z-index: 1000;
259
- }
260
-
261
- .footer-content {
262
- max-width: 1800px;
263
- margin: 0 auto;
264
- display: flex;
265
- align-items: center;
266
- justify-content: center;
267
- gap: 10px;
268
- font-size: 13px;
269
- }
270
-
271
- .footer-item {
272
- display: flex;
273
- align-items: center;
274
- gap: 8px;
275
- }
276
-
277
- .footer-label {
278
- color: #94a3b8;
279
- font-weight: 500;
280
- }
281
-
282
- /* Analysis status in footer */
283
- #footer-analysis-container {
284
- display: flex;
285
- align-items: center;
286
- }
287
-
288
- .analysis-progress {
289
- color: #3b82f6;
290
- font-weight: 500;
291
- white-space: nowrap;
292
- overflow: hidden;
293
- text-overflow: ellipsis;
294
- max-width: 400px;
295
- display: inline-block;
296
- }
297
-
298
- @keyframes pulse {
299
- 0% { opacity: 1; }
300
- 50% { opacity: 0.6; }
301
- 100% { opacity: 1; }
302
- }
303
-
304
- .footer-value {
305
- color: #e2e8f0;
306
- font-family: 'Monaco', 'Consolas', monospace;
307
- font-size: 12px;
308
- }
309
-
310
- .footer-divider {
311
- color: #475569;
312
- }
313
-
314
- /* Header Styles */
315
- .header {
316
- background: rgba(255, 255, 255, 0.95);
317
- border-radius: 12px;
318
- padding: 15px 15px;
319
- margin-bottom: 15px;
320
- box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
321
- backdrop-filter: blur(10px);
322
- }
323
-
324
- .header-top {
325
- display: flex;
326
- justify-content: space-between;
327
- align-items: center;
328
- gap: 20px;
329
- flex-wrap: wrap;
330
- }
331
-
332
- .header-left {
333
- display: flex;
334
- align-items: center;
335
- gap: 10px;
336
- flex: 1;
337
- }
338
-
339
- .header h1 {
340
- color: #4a5568;
341
- font-size: 20px;
342
- margin: 0;
343
- font-weight: 600;
344
- }
345
-
346
- .header-row {
347
- display: flex;
348
- align-items: center;
349
- gap: 10px;
350
- min-height: 36px;
351
- }
352
-
353
- .header-row:first-child {
354
- justify-content: space-between;
355
- }
356
-
357
- .header-row + .header-row {
358
- margin-top: 12px;
359
- padding-top: 12px;
360
- border-top: 1px solid #e2e8f0;
361
- }
362
-
363
- .header-title {
364
- display: flex;
365
- align-items: center;
366
- gap: 6px;
367
- }
368
-
369
- /* Control Styles */
370
- .connection-controls {
371
- display: flex;
372
- gap: 8px;
373
- align-items: center;
374
- }
375
-
376
- /* Main Controls Row */
377
- .main-controls {
378
- justify-content: space-between;
379
- }
380
-
381
- .connection-toggle {
382
- display: flex;
383
- align-items: center;
384
- }
385
-
386
- /* Connection Controls Row */
387
- .connection-controls-row {
388
- transition: all 0.3s ease;
389
- overflow: hidden;
390
- max-height: 0;
391
- opacity: 0;
392
- padding-top: 0;
393
- padding-bottom: 0;
394
- margin-top: 0;
395
- border-top: 1px solid transparent;
396
- }
397
-
398
- .connection-controls-row.show {
399
- max-height: 80px;
400
- opacity: 1;
401
- padding-top: 12px;
402
- padding-bottom: 12px;
403
- margin-top: 12px;
404
- border-top: 1px solid #e2e8f0;
405
- }
406
-
407
- .filter-group {
408
- display: flex;
409
- gap: 8px;
410
- align-items: center;
411
- flex: 1;
412
- max-width: 400px;
413
- }
414
-
415
- .action-buttons {
416
- display: flex;
417
- gap: 8px;
418
- align-items: center;
419
- }
420
-
421
- .session-group {
422
- display: flex;
423
- align-items: center;
424
- gap: 8px;
425
- }
426
-
427
- .working-dir-group {
428
- display: flex;
429
- align-items: center;
430
- gap: 10px;
431
- }
432
-
433
- .working-dir-display {
434
- display: flex;
435
- align-items: center;
436
- gap: 5px;
437
- background: #f8f9fa;
438
- padding: 5px 10px;
439
- border-radius: 6px;
440
- border: 1px solid #e2e8f0;
441
- }
442
-
443
- .working-dir-path {
444
- font-family: monospace;
445
- font-size: 12px;
446
- color: #2d3748;
447
- max-width: 300px;
448
- overflow: hidden;
449
- text-overflow: ellipsis;
450
- white-space: nowrap;
451
- cursor: pointer;
452
- }
453
-
454
- .working-dir-path:hover {
455
- color: #3182ce;
456
- text-decoration: underline;
457
- }
458
-
459
- /* Directory Viewer Overlay Styles */
460
- .directory-viewer-overlay {
461
- position: fixed;
462
- background: white;
463
- border-radius: 8px;
464
- box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15);
465
- border: 1px solid #e2e8f0;
466
- z-index: 1001;
467
- overflow: hidden;
468
- }
469
-
470
- .directory-viewer-content {
471
- display: flex;
472
- flex-direction: column;
473
- max-height: 400px;
474
- }
475
-
476
- .directory-viewer-header {
477
- display: flex;
478
- justify-content: space-between;
479
- align-items: center;
480
- padding: 12px 15px;
481
- background: #f8f9fa;
482
- border-bottom: 1px solid #e2e8f0;
483
- }
484
-
485
- .directory-viewer-title {
486
- margin: 0;
487
- font-size: 14px;
488
- font-weight: 600;
489
- color: #2d3748;
490
- }
491
-
492
- .directory-viewer-header .close-btn {
493
- background: none;
494
- border: none;
495
- font-size: 16px;
496
- cursor: pointer;
497
- color: #718096;
498
- padding: 4px;
499
- border-radius: 4px;
500
- transition: all 0.2s;
501
- }
502
-
503
- .directory-viewer-header .close-btn:hover {
504
- background: #e2e8f0;
505
- color: #2d3748;
506
- }
507
-
508
- .directory-viewer-body {
509
- flex: 1;
510
- overflow-y: auto;
511
- padding: 8px;
512
- max-height: 300px;
513
- }
514
-
515
- .directory-viewer-body .file-item {
516
- display: flex;
517
- align-items: center;
518
- gap: 8px;
519
- padding: 6px 8px;
520
- border-radius: 4px;
521
- cursor: pointer;
522
- transition: background-color 0.2s;
523
- font-size: 12px;
524
- }
525
-
526
- .directory-viewer-body .file-item:hover {
527
- background: #f8f9fa;
528
- }
529
-
530
- .directory-viewer-body .file-item.directory-item:hover {
531
- background: #e6fffa;
532
- }
533
-
534
- .directory-viewer-body .file-icon {
535
- min-width: 16px;
536
- font-size: 14px;
537
- }
538
-
539
- .directory-viewer-body .file-name {
540
- flex: 1;
541
- font-family: monospace;
542
- color: #2d3748;
543
- word-break: break-all;
544
- }
545
-
546
- .directory-viewer-body .file-type {
547
- font-size: 10px;
548
- color: #718096;
549
- text-transform: uppercase;
550
- }
551
-
552
- .directory-viewer-body .no-files,
553
- .directory-viewer-body .loading-indicator {
554
- text-align: center;
555
- color: #718096;
556
- padding: 20px;
557
- font-style: italic;
558
- }
559
-
560
- .directory-viewer-body .directory-error {
561
- display: flex;
562
- align-items: center;
563
- gap: 8px;
564
- padding: 15px;
565
- color: #e53e3e;
566
- background: #fed7d7;
567
- border-radius: 4px;
568
- margin: 8px;
569
- }
570
-
571
- .directory-viewer-footer {
572
- padding: 8px 15px;
573
- background: #f8f9fa;
574
- border-top: 1px solid #e2e8f0;
575
- font-size: 11px;
576
- color: #718096;
577
- text-align: center;
578
- }
579
-
580
- .btn-icon {
581
- background: none;
582
- border: none;
583
- cursor: pointer;
584
- font-size: 16px;
585
- padding: 2px;
586
- border-radius: 4px;
587
- transition: background-color 0.2s;
588
- }
589
-
590
- .btn-icon:hover {
591
- background: rgba(0, 0, 0, 0.1);
592
- }
593
-
594
- .session-select {
595
- width: 300px;
596
- font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;
597
- font-size: 11px;
598
- }
599
-
600
- label {
601
- font-size: 12px;
602
- font-weight: 600;
603
- color: #4a5568;
604
- white-space: nowrap;
605
- }
606
-
607
- .info-group {
608
- display: flex;
609
- gap: 6px;
610
- margin-left: auto;
611
- font-size: 12px;
612
- color: #718096;
613
- background: #f7fafc;
614
- padding: 6px 6px;
615
- border-radius: 6px;
616
- }
617
-
618
- .info-group span {
619
- white-space: nowrap;
620
- }
621
-
622
- .info-separator {
623
- color: #cbd5e0;
624
- }
625
-
626
- /* Status Badge Styles */
627
- .status-badge {
628
- padding: 4px 12px;
629
- border-radius: 12px;
630
- font-size: 12px;
631
- font-weight: 600;
632
- display: inline-flex;
633
- align-items: center;
634
- gap: 4px;
635
- white-space: nowrap;
636
- }
637
-
638
- .status-connected {
639
- background: #d4f8e8;
640
- color: #22543d;
641
- }
642
-
643
- .status-disconnected {
644
- background: #fed7d7;
645
- color: #742a2a;
646
- }
647
-
648
- .status-connecting {
649
- background: #feebc8;
650
- color: #7b341e;
651
- }
652
-
653
- /* Status classes for tools and operations */
654
- .status-success {
655
- background: #c6f6d5;
656
- color: #22543d;
657
- padding: 2px 6px;
658
- border-radius: 4px;
659
- font-size: 11px;
660
- font-weight: 500;
661
- }
662
-
663
- .status-pending {
664
- background: #f3f4f6;
665
- color: #4b5563;
666
- padding: 2px 6px;
667
- border-radius: 4px;
668
- font-size: 11px;
669
- font-weight: 500;
670
- }
671
-
672
- /* Agent confidence levels */
673
- .agent-confidence {
674
- padding: 2px 6px;
675
- border-radius: 4px;
676
- font-size: 10px;
677
- font-weight: 600;
678
- text-transform: uppercase;
679
- }
680
-
681
- .agent-confidence.definitive {
682
- background: #c6f6d5;
683
- color: #22543d;
684
- }
685
-
686
- .agent-confidence.high {
687
- background: #bee3f8;
688
- color: #1a365d;
689
- }
690
-
691
- .agent-confidence.medium {
692
- background: #feebc8;
693
- color: #7b341e;
694
- }
695
-
696
- .agent-confidence.low,
697
- .agent-confidence.default,
698
- .agent-confidence.unknown {
699
- background: #e2e8f0;
700
- color: #4a5568;
701
- }
702
-
703
- /* Agent type styling */
704
- .agent-type {
705
- font-size: 12px;
706
- padding: 2px 6px;
707
- border-radius: 4px;
708
- background: #edf2f7;
709
- color: #4a5568;
710
- font-weight: 500;
711
- }
712
-
713
- /* Tool status styling */
714
- .tool-status {
715
- font-size: 11px;
716
- font-weight: 500;
717
- }
718
-
719
- /* Metrics Widget */
720
- .metrics-widget {
721
- display: flex;
722
- gap: 10px;
723
- align-items: center;
724
- background: #f7fafc;
725
- padding: 8px 8px;
726
- border-radius: 8px;
727
- }
728
-
729
- .metric-mini {
730
- text-align: center;
731
- }
732
-
733
- .metric-mini-value {
734
- font-size: 16px;
735
- font-weight: bold;
736
- color: #4299e1;
737
- line-height: 1.2;
738
- }
739
-
740
- .metric-mini-label {
741
- font-size: 10px;
742
- color: #718096;
743
- text-transform: uppercase;
744
- letter-spacing: 0.5px;
745
- margin-top: 2px;
746
- }
747
-
748
- .connection-info {
749
- display: flex;
750
- gap: 8px;
751
- font-size: 12px;
752
- color: #718096;
753
- }
754
-
755
- .connection-info span {
756
- white-space: nowrap;
757
- }
758
-
759
- /* Form Controls */
760
- input, select, button {
761
- padding: 6px 10px;
762
- border: 1px solid #e2e8f0;
763
- border-radius: 6px;
764
- font-size: 12px;
765
- transition: all 0.2s;
766
- }
767
-
768
- #port-input {
769
- width: 50px;
770
- text-align: center;
771
- }
772
-
773
- #search-input {
774
- flex: 1;
775
- min-width: 150px;
776
- }
777
-
778
- input:focus, select:focus {
779
- outline: none;
780
- border-color: #4299e1;
781
- box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.1);
782
- }
783
-
784
- /* Button Styles */
785
- button {
786
- background: #4299e1;
787
- color: white;
788
- border: none;
789
- cursor: pointer;
790
- font-weight: 500;
791
- padding: 6px 14px;
792
- font-size: 12px;
793
- white-space: nowrap;
794
- }
795
-
796
- button:hover {
797
- background: #3182ce;
798
- transform: translateY(-1px);
799
- }
800
-
801
- button:active {
802
- transform: translateY(0);
803
- }
804
-
805
- .btn-secondary {
806
- background: #718096;
807
- }
808
-
809
- .btn-secondary:hover {
810
- background: #4a5568;
811
- }
812
-
813
- .btn-success {
814
- background: #48bb78;
815
- }
816
-
817
- .btn-success:hover {
818
- background: #38a169;
819
- }
820
-
821
- /* Events Container */
822
- .events-wrapper {
823
- background: rgba(255, 255, 255, 0.95);
824
- border-radius: 12px;
825
- padding: 10px;
826
- box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
827
- height: calc(100vh - 230px); /* Adjusted for increased padding and footer clearance */
828
- min-height: 400px;
829
- display: flex;
830
- flex-direction: column;
831
- }
832
-
833
- /* Tab Navigation */
834
- .tab-nav {
835
- display: flex;
836
- gap: 5px;
837
- margin-bottom: 0;
838
- border-bottom: 2px solid #e2e8f0;
839
- }
840
-
841
- .tab-filters {
842
- padding: 10px 8px;
843
- background: #f8f9fa;
844
- border-bottom: 1px solid #e2e8f0;
845
- display: flex;
846
- gap: 5px;
847
- align-items: center;
848
- position: sticky;
849
- top: 0;
850
- z-index: 100;
851
- }
852
-
853
- .tab-filters input {
854
- flex: 1;
855
- min-width: 200px;
856
- }
857
-
858
- .tab-filters select {
859
- min-width: 120px;
860
- }
861
-
862
- .tab-filters label {
863
- font-size: 12px;
864
- font-weight: 600;
865
- color: #4a5568;
866
- white-space: nowrap;
867
- }
868
-
869
- .tab-button {
870
- display: inline-block;
871
- padding: 10px 10px;
872
- background: none;
873
- border: none;
874
- border-bottom: 3px solid transparent;
875
- cursor: pointer;
876
- font-size: 14px;
877
- font-weight: 500;
878
- color: #64748b;
879
- text-decoration: none;
880
- transition: all 0.2s;
881
- }
882
-
883
- .tab-button:hover {
884
- color: #475569;
885
- background: rgba(0, 0, 0, 0.02);
886
- }
887
-
888
- /* BULLETPROOF TAB STYLING - High specificity to prevent conflicts */
889
- .tab-button.active {
890
- color: #3b82f6 !important;
891
- border-bottom-color: #3b82f6 !important;
892
- border-bottom-width: 2px !important;
893
- border-bottom-style: solid !important;
894
- }
895
-
896
- /* Ensure inactive tabs are definitely inactive */
897
- .tab-button:not(.active) {
898
- color: #64748b !important;
899
- border-bottom-color: transparent !important;
900
- }
901
-
902
- /* Fix for Activity tab text displaying vertically - ensure horizontal text */
903
- .tab-button[data-tab="activity"] {
904
- writing-mode: horizontal-tb !important;
905
- text-orientation: mixed !important;
906
- transform: none !important;
907
- }
908
-
909
- .tab-content {
910
- flex: 1;
911
- display: none !important; /* Force hide by default */
912
- overflow: hidden;
913
- height: 100%;
914
- min-height: 0;
915
- }
916
-
917
- /* BULLETPROOF: Only show active tab content */
918
- .tab-content.active {
919
- display: flex !important;
920
- flex-direction: column !important;
921
- }
922
-
923
- /* Extra defensive rule: Hide ALL non-active tab content */
924
- .tab-content:not(.active) {
925
- display: none !important;
926
- visibility: hidden !important;
927
- }
928
-
929
- /* Split Container Layout */
930
- .split-container {
931
- display: flex;
932
- gap: 8px;
933
- flex: 1;
934
- overflow: hidden;
935
- height: 100%;
936
- min-height: 0;
937
- }
938
-
939
- .module-viewer {
940
- width: 40%;
941
- display: flex;
942
- flex-direction: column;
943
- border: 1px solid #e2e8f0;
944
- border-radius: 6px;
945
- background: #f8f9fa;
946
- overflow: hidden;
947
- height: 100%;
948
- min-height: 0;
949
- max-height: 100%;
950
- }
951
-
952
- .events-container {
953
- flex: 1;
954
- display: flex;
955
- flex-direction: column;
956
- border: 1px solid #e2e8f0;
957
- border-radius: 6px;
958
- background: #f8f9fa;
959
- overflow: hidden;
960
- height: 100%;
961
- min-height: 0;
962
- max-height: 100%;
963
- }
964
-
965
- /* Module Viewer */
966
- .module-header {
967
- display: flex;
968
- justify-content: space-between;
969
- align-items: center;
970
- padding: 10px 8px;
971
- border-bottom: 1px solid #e2e8f0;
972
- background: white;
973
- }
974
-
975
- .module-header h4 {
976
- margin: 0;
977
- font-size: 14px;
978
- color: #4a5568;
979
- font-weight: 600;
980
- }
981
-
982
- /* Updated layout for module viewer - single scrollable pane */
983
- .module-panes {
984
- display: flex;
985
- flex-direction: column;
986
- flex: 1;
987
- overflow: hidden;
988
- height: 100%;
989
- min-height: 0;
990
- max-height: 100%;
991
- }
992
-
993
- .module-data-pane {
994
- flex: 1;
995
- display: flex;
996
- flex-direction: column;
997
- overflow: hidden;
998
- height: 100%;
999
- min-height: 0;
1000
- max-height: 100%;
1001
- }
1002
-
1003
- .module-json-pane {
1004
- flex: 0 0 120px;
1005
- display: flex;
1006
- flex-direction: column;
1007
- overflow: hidden;
1008
- min-height: 80px;
1009
- max-height: 120px;
1010
- border-top: 1px solid #e2e8f0;
1011
- }
1012
-
1013
- .module-data-header,
1014
- .module-json-header {
1015
- display: flex;
1016
- justify-content: space-between;
1017
- align-items: center;
1018
- padding: 8px 8px;
1019
- border-bottom: 1px solid #e2e8f0;
1020
- background: #f8f9fa;
1021
- font-size: 12px;
1022
- }
1023
-
1024
- .module-data-header h5,
1025
- .module-json-header h5 {
1026
- margin: 0;
1027
- font-size: 12px;
1028
- color: #4a5568;
1029
- font-weight: 600;
1030
- }
1031
-
1032
- .module-data-content {
1033
- flex: 1;
1034
- overflow-y: auto;
1035
- padding: 8px;
1036
- background: white;
1037
- height: 100%;
1038
- min-height: 0;
1039
- max-height: 100%;
1040
- scrollbar-width: thin;
1041
- scrollbar-color: #cbd5e0 #f7fafc;
1042
- }
1043
-
1044
- .module-data-content::-webkit-scrollbar {
1045
- width: 6px;
1046
- }
1047
-
1048
- .module-data-content::-webkit-scrollbar-track {
1049
- background: #f7fafc;
1050
- }
1051
-
1052
- .module-data-content::-webkit-scrollbar-thumb {
1053
- background: #cbd5e0;
1054
- border-radius: 3px;
1055
- }
1056
-
1057
- .module-data-content::-webkit-scrollbar-thumb:hover {
1058
- background: #a0aec0;
1059
- }
1060
-
1061
- .module-json-content {
1062
- flex: 1;
1063
- overflow-y: auto;
1064
- padding: 8px;
1065
- background: #f8fafc;
1066
- font-family: 'Monaco', 'Consolas', 'Courier New', monospace;
1067
- font-size: 12px;
1068
- line-height: 1.5;
1069
- height: 100%;
1070
- min-height: 0;
1071
- }
1072
-
1073
- /* Contextual Header */
1074
- .contextual-header {
1075
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
1076
- color: white;
1077
- padding: 12px 8px;
1078
- margin-bottom: 15px;
1079
- border-radius: 8px;
1080
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
1081
- }
1082
-
1083
- .contextual-header-text {
1084
- margin: 0;
1085
- font-size: 14px;
1086
- font-weight: 600;
1087
- text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
1088
- height: 100%;
1089
- min-height: 0;
1090
- }
1091
-
1092
- .module-json-content {
1093
- background: #f8fafc;
1094
- font-family: 'Monaco', 'Consolas', 'Courier New', monospace;
1095
- font-size: 12px;
1096
- line-height: 1.5;
1097
- }
1098
-
1099
- /* Legacy support - remove old module-content class */
1100
- .module-content {
1101
- flex: 1;
1102
- overflow-y: auto;
1103
- padding: 8px;
1104
- background: white;
1105
- height: 100%;
1106
- min-height: 0;
1107
- }
1108
-
1109
- .module-empty {
1110
- text-align: center;
1111
- color: #718096;
1112
- padding: 40px;
1113
- font-style: italic;
1114
- }
1115
-
1116
- .module-hint {
1117
- color: #94a3b8;
1118
- font-size: 12px;
1119
- margin-top: 8px;
1120
- }
1121
-
1122
- /* Events List */
1123
- .events-list {
1124
- flex: 1;
1125
- overflow-y: auto;
1126
- padding: 5px;
1127
- background: white;
1128
- height: 100%;
1129
- min-height: 0;
1130
- }
1131
-
1132
- /* Other List Containers */
1133
- .agents-list,
1134
- .tools-list,
1135
- .files-list {
1136
- flex: 1;
1137
- overflow-y: auto;
1138
- padding: 5px;
1139
- background: white;
1140
- height: 100%;
1141
- min-height: 0;
1142
- }
1143
-
1144
- .no-events,
1145
- .no-agents,
1146
- .no-tools,
1147
- .no-files {
1148
- text-align: center;
1149
- color: #718096;
1150
- padding: 40px;
1151
- font-style: italic;
1152
- }
1153
-
1154
- /* Event Items */
1155
- .event-item {
1156
- background: white;
1157
- border-radius: 6px;
1158
- padding: 6px;
1159
- margin-bottom: 8px;
1160
- border-left: 4px solid #4299e1;
1161
- cursor: pointer;
1162
- transition: all 0.2s;
1163
- }
1164
-
1165
- /* Single-row event items */
1166
- .event-item.single-row {
1167
- padding: 8px 6px;
1168
- display: flex;
1169
- align-items: center;
1170
- justify-content: space-between;
1171
- min-height: 40px;
1172
- }
1173
-
1174
- .event-single-row-content {
1175
- font-size: 13px;
1176
- color: #2d3748;
1177
- line-height: 1.4;
1178
- font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;
1179
- word-break: break-all;
1180
- flex: 1;
1181
- display: flex;
1182
- justify-content: space-between;
1183
- align-items: center;
1184
- }
1185
-
1186
- .event-content-main {
1187
- flex: 1;
1188
- white-space: nowrap;
1189
- overflow: hidden;
1190
- text-overflow: ellipsis;
1191
- margin-right: 12px;
1192
- }
1193
-
1194
- .event-timestamp {
1195
- color: #64748b;
1196
- font-size: 12px;
1197
- white-space: nowrap;
1198
- margin-left: auto;
1199
- font-weight: 500;
1200
- }
1201
-
1202
- /* Other Item Types */
1203
- .agent-item,
1204
- .tool-item,
1205
- .file-item {
1206
- background: white;
1207
- border-radius: 6px;
1208
- padding: 6px;
1209
- margin-bottom: 8px;
1210
- border-left: 4px solid #4299e1;
1211
- cursor: pointer;
1212
- transition: all 0.2s;
1213
- }
1214
-
1215
- .agent-item:hover,
1216
- .tool-item:hover,
1217
- .file-item:hover {
1218
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
1219
- transform: translateX(2px);
1220
- }
1221
-
1222
- .event-item:hover {
1223
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
1224
- transform: translateX(2px);
1225
- }
1226
-
1227
- .event-item.single-row:hover {
1228
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
1229
- transform: translateX(2px);
1230
- }
1231
-
1232
- .event-item.selected {
1233
- background: #e3f2fd;
1234
- border-left: 4px solid #2196f3;
1235
- padding-left: 16px;
1236
- box-shadow: 0 2px 12px rgba(33, 150, 243, 0.2);
1237
- }
1238
-
1239
- /* Selected state for all card types - unified styling */
1240
- .event-item.selected,
1241
- .agent-item.selected,
1242
- .tool-item.selected,
1243
- .file-item.selected {
1244
- background: #e3f2fd !important;
1245
- border-left: 4px solid #2196f3 !important;
1246
- box-shadow: 0 2px 12px rgba(33, 150, 243, 0.2) !important;
1247
- transform: translateX(4px) !important;
1248
- }
1249
-
1250
- /* Single-row selected state */
1251
- .event-item.single-row.selected {
1252
- background: #e3f2fd !important;
1253
- border-left: 4px solid #2196f3 !important;
1254
- box-shadow: 0 2px 12px rgba(33, 150, 243, 0.2) !important;
1255
- transform: translateX(4px) !important;
1256
- }
1257
-
1258
- .event-item .event-data strong {
1259
- color: #475569;
1260
- font-weight: 600;
1261
- }
1262
-
1263
- .event-header {
1264
- display: flex;
1265
- justify-content: space-between;
1266
- align-items: center;
1267
- margin-bottom: 5px;
1268
- }
1269
-
1270
- .event-type {
1271
- font-weight: 600;
1272
- color: #2d3748;
1273
- }
1274
-
1275
- .event-timestamp {
1276
- font-size: 12px;
1277
- color: #718096;
1278
- }
1279
-
1280
- .event-data {
1281
- font-size: 14px;
1282
- color: #4a5568;
1283
- margin-top: 5px;
1284
- }
1285
-
1286
- /* Event Type Colors */
1287
- .event-session {
1288
- background: white;
1289
- border-left-color: #48bb78;
1290
- }
1291
-
1292
- .event-claude {
1293
- background: white;
1294
- border-left-color: #ed8936;
1295
- }
1296
-
1297
- .event-agent {
1298
- background: white;
1299
- border-left-color: #9f7aea;
1300
- }
1301
-
1302
- .event-hook {
1303
- background: white;
1304
- border-left-color: #38b2ac;
1305
- }
1306
-
1307
- .event-todo {
1308
- background: white;
1309
- border-left-color: #e53e3e;
1310
- }
1311
-
1312
- .event-memory {
1313
- background: white;
1314
- border-left-color: #d69e2e;
1315
- }
1316
-
1317
- .event-log {
1318
- background: white;
1319
- border-left-color: #718096;
1320
- }
1321
-
1322
- /* File Path Display */
1323
- .file-path {
1324
- font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;
1325
- font-size: 13px;
1326
- color: #2d3748;
1327
- word-break: break-all;
1328
- }
1329
-
1330
- .file-agent {
1331
- font-size: 12px;
1332
- color: #718096;
1333
- margin-left: 8px;
1334
- font-style: italic;
1335
- }
1336
-
1337
- /* Event Class Sections */
1338
- .event-class-section {
1339
- margin-bottom: 20px;
1340
- }
1341
-
1342
- .event-class-header {
1343
- font-weight: 600;
1344
- color: #2d3748;
1345
- font-size: 14px;
1346
- margin-bottom: 15px;
1347
- padding: 10px;
1348
- background: #f7fafc;
1349
- border-radius: 6px;
1350
- border-left: 4px solid #4299e1;
1351
- display: flex;
1352
- align-items: center;
1353
- gap: 8px;
1354
- }
1355
-
1356
- .event-class-icon {
1357
- font-size: 16px;
1358
- }
1359
-
1360
- /* Event Detail Cards */
1361
- .event-detail-card {
1362
- background: white;
1363
- border: 1px solid #e2e8f0;
1364
- border-radius: 6px;
1365
- margin-bottom: 10px;
1366
- overflow: hidden;
1367
- }
1368
-
1369
- .event-detail-header {
1370
- background: #f7fafc;
1371
- padding: 8px 12px;
1372
- border-bottom: 1px solid #e2e8f0;
1373
- display: flex;
1374
- justify-content: space-between;
1375
- align-items: center;
1376
- }
1377
-
1378
- .event-detail-title {
1379
- font-weight: 600;
1380
- color: #2d3748;
1381
- font-size: 13px;
1382
- }
1383
-
1384
- .event-detail-time {
1385
- font-size: 11px;
1386
- color: #718096;
1387
- }
1388
-
1389
- .event-detail-content {
1390
- padding: 12px;
1391
- }
1392
-
1393
- .event-property {
1394
- display: flex;
1395
- margin-bottom: 6px;
1396
- font-size: 12px;
1397
- }
1398
-
1399
- .event-property:last-child {
1400
- margin-bottom: 0;
1401
- }
1402
-
1403
- .event-property-key {
1404
- font-weight: 600;
1405
- color: #4a5568;
1406
- margin-right: 8px;
1407
- min-width: 80px;
1408
- }
1409
-
1410
- .event-property-value {
1411
- color: #2d3748;
1412
- word-wrap: break-word;
1413
- flex: 1;
1414
- }
1415
-
1416
- /* JSON Display */
1417
- .json-section {
1418
- margin-top: 20px;
1419
- border-top: 1px solid #e2e8f0;
1420
- padding-top: 15px;
1421
- }
1422
-
1423
- .json-header {
1424
- margin-bottom: 10px;
1425
- }
1426
-
1427
- .json-header h4 {
1428
- margin: 0;
1429
- color: #1e293b;
1430
- font-size: 14px;
1431
- font-weight: 600;
1432
- }
1433
-
1434
- /* Collapsible JSON Section */
1435
- .collapsible-json-section {
1436
- margin-top: 20px;
1437
- border-top: 1px solid #e2e8f0;
1438
- padding-top: 0;
1439
- }
1440
-
1441
- .json-toggle-header {
1442
- background: linear-gradient(135deg, #f7fafc 0%, #edf2f7 100%);
1443
- border: 1px solid #e2e8f0;
1444
- border-radius: 8px;
1445
- padding: 12px 16px;
1446
- cursor: pointer;
1447
- display: flex;
1448
- align-items: center;
1449
- justify-content: space-between;
1450
- transition: all 0.2s ease;
1451
- margin-bottom: 0;
1452
- user-select: none;
1453
- position: relative;
1454
- }
1455
-
1456
- /* Sticky toggle active state - shows when JSON is expanded globally */
1457
- .json-toggle-header[aria-expanded="true"] {
1458
- background: linear-gradient(135deg, #e6f3ff 0%, #d4e9ff 100%);
1459
- border-color: #4299e1;
1460
- }
1461
-
1462
- .json-toggle-header[aria-expanded="true"] .json-toggle-text::after {
1463
- content: ' (Sticky)';
1464
- font-size: 11px;
1465
- color: #4299e1;
1466
- font-weight: normal;
1467
- opacity: 0.8;
1468
- }
1469
-
1470
- .json-toggle-header:hover {
1471
- background: linear-gradient(135deg, #edf2f7 0%, #e2e8f0 100%);
1472
- transform: translateY(-1px);
1473
- box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
1474
- }
1475
-
1476
- .json-toggle-header[aria-expanded="true"]:hover {
1477
- background: linear-gradient(135deg, #d4e9ff 0%, #b8dcff 100%);
1478
- }
1479
-
1480
- .json-toggle-header:active {
1481
- transform: translateY(0);
1482
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
1483
- }
1484
-
1485
- .json-toggle-header:focus {
1486
- outline: 2px solid #4299e1;
1487
- outline-offset: 2px;
1488
- }
1489
-
1490
- .json-toggle-text {
1491
- font-size: 14px;
1492
- font-weight: 600;
1493
- color: #4a5568;
1494
- display: flex;
1495
- align-items: center;
1496
- gap: 8px;
1497
- }
1498
-
1499
- .json-toggle-text::before {
1500
- content: '🔍';
1501
- font-size: 16px;
1502
- }
1503
-
1504
- .json-toggle-arrow {
1505
- font-size: 14px;
1506
- font-weight: bold;
1507
- color: #4a5568;
1508
- transition: transform 0.2s ease;
1509
- }
1510
-
1511
- .json-content-collapsible {
1512
- border: 1px solid #e2e8f0;
1513
- border-top: none;
1514
- border-radius: 0 0 8px 8px;
1515
- overflow: hidden;
1516
- transition: all 0.3s ease;
1517
- }
1518
-
1519
- .json-content-collapsible[aria-hidden="false"] {
1520
- animation: slideDown 0.3s ease;
1521
- }
1522
-
1523
- @keyframes slideDown {
1524
- from {
1525
- opacity: 0;
1526
- max-height: 0;
1527
- }
1528
- to {
1529
- opacity: 1;
1530
- max-height: 500px;
1531
- }
1532
- }
1533
-
1534
- .json-display {
1535
- background: #f8fafc;
1536
- border-radius: 0;
1537
- padding: 16px;
1538
- overflow-x: auto;
1539
- font-family: 'Monaco', 'Consolas', 'Courier New', monospace;
1540
- font-size: 12px;
1541
- line-height: 1.5;
1542
- color: #1e293b;
1543
- max-height: 400px;
1544
- overflow-y: auto;
1545
- margin: 0;
1546
- border: none;
1547
- position: relative;
1548
- }
1549
-
1550
- .json-display pre {
1551
- margin: 0;
1552
- padding: 0;
1553
- white-space: pre-wrap;
1554
- word-wrap: break-word;
1555
- }
1556
-
1557
- /* Copy button for JSON content */
1558
- .json-display::before {
1559
- content: '📋';
1560
- position: absolute;
1561
- top: 8px;
1562
- right: 8px;
1563
- background: rgba(255, 255, 255, 0.9);
1564
- border: 1px solid #e2e8f0;
1565
- border-radius: 4px;
1566
- padding: 4px 8px;
1567
- font-size: 14px;
1568
- cursor: pointer;
1569
- opacity: 0;
1570
- transition: opacity 0.2s ease;
1571
- z-index: 10;
1572
- }
1573
-
1574
- .json-display:hover::before {
1575
- opacity: 1;
1576
- }
1577
-
1578
- /* Structured Data View */
1579
- .structured-view-section {
1580
- margin-bottom: 20px;
1581
- }
1582
-
1583
- .structured-view-header {
1584
- margin-bottom: 15px;
1585
- padding-bottom: 8px;
1586
- border-bottom: 1px solid #e2e8f0;
1587
- }
1588
-
1589
- .structured-view-header h4 {
1590
- margin: 0;
1591
- color: #1e293b;
1592
- font-size: 14px;
1593
- font-weight: 600;
1594
- }
1595
-
1596
- .structured-data {
1597
- background: #f8fafc;
1598
- border: 1px solid #e2e8f0;
1599
- border-radius: 6px;
1600
- padding: 12px;
1601
- }
1602
-
1603
- /* AST Data Viewer Items */
1604
- .ast-data-viewer-item {
1605
- border-bottom: 1px solid #f1f5f9;
1606
- padding: 12px 16px;
1607
- cursor: pointer;
1608
- transition: background-color 0.2s;
1609
- background: white;
1610
- margin-bottom: 2px;
1611
- border-radius: 4px;
1612
- }
1613
-
1614
- .ast-data-viewer-item:hover {
1615
- background: #f8fafc;
1616
- }
1617
-
1618
- .ast-data-viewer-item:last-child {
1619
- border-bottom: none;
1620
- }
1621
-
1622
- .ast-data-viewer-item.selected {
1623
- background: #ebf8ff;
1624
- border-left: 3px solid #3182ce;
1625
- }
1626
-
1627
- .ast-data-item-header {
1628
- display: flex;
1629
- align-items: center;
1630
- justify-content: space-between;
1631
- margin-bottom: 4px;
1632
- }
1633
-
1634
- .ast-data-item-name {
1635
- font-weight: 600;
1636
- color: #2d3748;
1637
- font-size: 14px;
1638
- display: flex;
1639
- align-items: center;
1640
- gap: 6px;
1641
- }
1642
-
1643
- .ast-data-item-type {
1644
- font-size: 11px;
1645
- padding: 2px 6px;
1646
- border-radius: 10px;
1647
- background: #e2e8f0;
1648
- color: #4a5568;
1649
- text-transform: uppercase;
1650
- font-weight: 500;
1651
- }
1652
-
1653
- .ast-data-item-type.class { background: #fed7d7; color: #c53030; }
1654
- .ast-data-item-type.function { background: #c6f6d5; color: #2f855a; }
1655
- .ast-data-item-type.method { background: #bee3f8; color: #2b6cb0; }
1656
- .ast-data-item-type.variable { background: #feebc8; color: #c05621; }
1657
- .ast-data-item-type.import { background: #e9d8fd; color: #6b46c1; }
1658
-
1659
- .ast-data-item-details {
1660
- font-size: 12px;
1661
- color: #718096;
1662
- line-height: 1.4;
1663
- }
1664
-
1665
- .ast-data-item-line {
1666
- font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
1667
- background: #f7fafc;
1668
- padding: 2px 4px;
1669
- border-radius: 3px;
1670
- margin-right: 8px;
1671
- }
1672
-
1673
- .ast-data-item-complexity {
1674
- display: inline-flex;
1675
- align-items: center;
1676
- gap: 4px;
1677
- }
1678
-
1679
- .ast-complexity-indicator {
1680
- width: 8px;
1681
- height: 8px;
1682
- border-radius: 50%;
1683
- background: #e2e8f0;
1684
- }
1685
-
1686
- .ast-complexity-indicator.low { background: #48bb78; }
1687
- .ast-complexity-indicator.medium { background: #ed8936; }
1688
- .ast-complexity-indicator.high { background: #e53e3e; }
1689
-
1690
- .ast-data-placeholder {
1691
- display: flex;
1692
- flex-direction: column;
1693
- align-items: center;
1694
- justify-content: center;
1695
- height: 200px;
1696
- color: #a0aec0;
1697
- text-align: center;
1698
- padding: 20px;
1699
- }
1700
-
1701
- .ast-placeholder-icon {
1702
- font-size: 48px;
1703
- margin-bottom: 12px;
1704
- opacity: 0.5;
1705
- }
1706
-
1707
- .ast-placeholder-text {
1708
- font-size: 14px;
1709
- line-height: 1.5;
1710
- }
1711
-
1712
- /* Hierarchical Source Viewer */
1713
- .source-viewer {
1714
- font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
1715
- font-size: 12px;
1716
- line-height: 1.4;
1717
- background: #f8fafc;
1718
- border-radius: 6px;
1719
- overflow: hidden;
1720
- }
1721
-
1722
- .source-viewer-header {
1723
- background: #e2e8f0;
1724
- padding: 8px 12px;
1725
- border-bottom: 1px solid #cbd5e0;
1726
- font-weight: 600;
1727
- color: #2d3748;
1728
- display: flex;
1729
- align-items: center;
1730
- justify-content: space-between;
1731
- }
1732
-
1733
- .source-viewer-controls {
1734
- display: flex;
1735
- gap: 4px;
1736
- }
1737
-
1738
- .source-control-btn {
1739
- background: none;
1740
- border: none;
1741
- padding: 2px 6px;
1742
- border-radius: 3px;
1743
- cursor: pointer;
1744
- font-size: 11px;
1745
- color: #718096;
1746
- transition: all 0.2s;
1747
- }
1748
-
1749
- .source-control-btn:hover {
1750
- background: #cbd5e0;
1751
- color: #4a5568;
1752
- }
1753
-
1754
- .source-viewer-content {
1755
- max-height: 600px;
1756
- overflow-y: auto;
1757
- background: white;
1758
- }
1759
-
1760
- /* Source Lines */
1761
- .source-line {
1762
- display: flex;
1763
- align-items: flex-start;
1764
- padding: 2px 0;
1765
- border-left: 3px solid transparent;
1766
- transition: all 0.2s;
1767
- }
1768
-
1769
- .source-line:hover {
1770
- background: #f7fafc;
1771
- }
1772
-
1773
- .source-line.highlighted {
1774
- background: #ebf8ff;
1775
- border-left-color: #3182ce;
1776
- }
1777
-
1778
- .source-line.collapsible {
1779
- cursor: pointer;
1780
- }
1781
-
1782
- .source-line.collapsible:hover {
1783
- background: #edf2f7;
1784
- }
1785
-
1786
- .line-number {
1787
- width: 40px;
1788
- text-align: right;
1789
- color: #a0aec0;
1790
- padding-right: 8px;
1791
- user-select: none;
1792
- flex-shrink: 0;
1793
- }
1794
-
1795
- .line-content {
1796
- flex: 1;
1797
- padding-right: 12px;
1798
- white-space: pre;
1799
- overflow-x: auto;
1800
- }
1801
-
1802
- .collapse-indicator {
1803
- width: 16px;
1804
- text-align: center;
1805
- color: #718096;
1806
- cursor: pointer;
1807
- user-select: none;
1808
- flex-shrink: 0;
1809
- }
1810
-
1811
- .collapse-indicator:hover {
1812
- color: #4a5568;
1813
- }
1814
-
1815
- .collapse-indicator.expanded::before {
1816
- content: '▼';
1817
- }
1818
-
1819
- .collapse-indicator.collapsed::before {
1820
- content: '▶';
1821
- }
1822
-
1823
- .collapse-indicator.none::before {
1824
- content: '';
1825
- }
1826
-
1827
- /* Collapsed Content */
1828
- .collapsed-content {
1829
- display: none;
1830
- }
1831
-
1832
- .collapsed-placeholder {
1833
- color: #a0aec0;
1834
- font-style: italic;
1835
- padding-left: 16px;
1836
- }
1837
-
1838
- /* Syntax Highlighting */
1839
- .source-line .keyword {
1840
- color: #805ad5;
1841
- font-weight: 600;
1842
- }
1843
-
1844
- .source-line .string {
1845
- color: #38a169;
1846
- }
1847
-
1848
- .source-line .comment {
1849
- color: #718096;
1850
- font-style: italic;
1851
- }
1852
-
1853
- .source-line .function-def {
1854
- color: #3182ce;
1855
- font-weight: 600;
1856
- }
1857
-
1858
- .source-line .class-def {
1859
- color: #d69e2e;
1860
- font-weight: 600;
1861
- }
1862
-
1863
- .source-line .decorator {
1864
- color: #805ad5;
1865
- }
1866
-
1867
- /* AST Integration */
1868
- .source-line.ast-element {
1869
- position: relative;
1870
- }
1871
-
1872
- .source-line.ast-element::after {
1873
- content: '';
1874
- position: absolute;
1875
- right: 8px;
1876
- top: 50%;
1877
- transform: translateY(-50%);
1878
- width: 6px;
1879
- height: 6px;
1880
- border-radius: 50%;
1881
- background: #48bb78;
1882
- }
1883
-
1884
- .source-line.ast-element.selected::after {
1885
- background: #3182ce;
1886
- box-shadow: 0 0 0 2px rgba(49, 130, 206, 0.3);
1887
- }
1888
-
1889
- .structured-field {
1890
- margin-bottom: 8px;
1891
- font-size: 13px;
1892
- line-height: 1.4;
1893
- color: #4a5568;
1894
- }
1895
-
1896
- .structured-field:last-child {
1897
- margin-bottom: 0;
1898
- }
1899
-
1900
- .structured-field strong {
1901
- color: #2d3748;
1902
- font-weight: 600;
1903
- margin-right: 8px;
1904
- }
1905
-
1906
- /* Todo Checklist */
1907
- .todo-checklist {
1908
- margin-top: 15px;
1909
- background: #f8fafc;
1910
- border: 1px solid #e2e8f0;
1911
- border-radius: 6px;
1912
- padding: 12px;
1913
- }
1914
-
1915
- .todo-checklist-header {
1916
- font-weight: 600;
1917
- color: #2d3748;
1918
- margin-bottom: 10px;
1919
- font-size: 13px;
1920
- border-bottom: 1px solid #e2e8f0;
1921
- padding-bottom: 8px;
1922
- }
1923
-
1924
- .todo-item {
1925
- display: flex;
1926
- align-items: flex-start;
1927
- gap: 8px;
1928
- margin-bottom: 6px;
1929
- padding: 6px 8px;
1930
- border-radius: 4px;
1931
- transition: background-color 0.2s;
1932
- }
1933
-
1934
- .todo-item:hover {
1935
- background: rgba(0, 0, 0, 0.02);
1936
- }
1937
-
1938
- .todo-item:last-child {
1939
- margin-bottom: 0;
1940
- }
1941
-
1942
- .todo-status {
1943
- font-size: 14px;
1944
- line-height: 1.4;
1945
- min-width: 16px;
1946
- display: inline-block;
1947
- }
1948
-
1949
- .todo-content {
1950
- flex: 1;
1951
- font-size: 12px;
1952
- line-height: 1.4;
1953
- color: #4a5568;
1954
- word-wrap: break-word;
1955
- }
1956
-
1957
- .todo-completed .todo-content {
1958
- color: #68d391;
1959
- text-decoration: line-through;
1960
- }
1961
-
1962
- .todo-in-progress .todo-content {
1963
- color: #4299e1;
1964
- font-weight: 500;
1965
- }
1966
-
1967
- .todo-pending .todo-content {
1968
- color: #4a5568;
1969
- }
1970
-
1971
- /* Modal Styles */
1972
- .modal {
1973
- display: none;
1974
- position: fixed;
1975
- z-index: 1000;
1976
- left: 0;
1977
- top: 0;
1978
- width: 100%;
1979
- height: 100%;
1980
- background-color: rgba(0, 0, 0, 0.5);
1981
- align-items: center;
1982
- justify-content: center;
1983
- }
1984
-
1985
- .modal-content {
1986
- background-color: white;
1987
- margin: 5% auto;
1988
- padding: 20px;
1989
- border-radius: 12px;
1990
- width: 80%;
1991
- max-width: 800px;
1992
- max-height: 80%;
1993
- overflow-y: auto;
1994
- }
1995
-
1996
- .close {
1997
- color: #aaa;
1998
- float: right;
1999
- font-size: 28px;
2000
- font-weight: bold;
2001
- cursor: pointer;
2002
- }
2003
-
2004
- .close:hover {
2005
- color: #000;
2006
- }
2007
-
2008
- /* Code Display */
2009
- pre {
2010
- background: #f8f9fa;
2011
- padding: 15px;
2012
- border-radius: 6px;
2013
- overflow-x: auto;
2014
- font-size: 12px;
2015
- line-height: 1.4;
2016
- }
2017
-
2018
- /* Git Diff Modal Styles */
2019
- .git-diff-modal {
2020
- z-index: 1001; /* Higher than regular modals */
2021
- }
2022
-
2023
- .modal-content.git-diff-content {
2024
- width: 95vw;
2025
- height: 95vh;
2026
- max-width: none;
2027
- max-height: none;
2028
- margin: 2.5vh auto;
2029
- padding: 0;
2030
- display: flex;
2031
- flex-direction: column;
2032
- background: #ffffff;
2033
- border-radius: 8px;
2034
- box-shadow: 0 25px 50px rgba(0, 0, 0, 0.3);
2035
- }
2036
-
2037
- .git-diff-header {
2038
- display: flex;
2039
- align-items: center;
2040
- justify-content: space-between;
2041
- padding: 20px 24px;
2042
- border-bottom: 1px solid #e2e8f0;
2043
- background: #f8fafc;
2044
- border-radius: 8px 8px 0 0;
2045
- min-height: 60px;
2046
- flex-shrink: 0; /* Prevent header from shrinking */
2047
- }
2048
-
2049
- .git-diff-title {
2050
- display: flex;
2051
- align-items: center;
2052
- gap: 12px;
2053
- margin: 0;
2054
- font-size: 20px;
2055
- font-weight: 600;
2056
- color: #2d3748;
2057
- }
2058
-
2059
- .git-diff-icon {
2060
- font-size: 24px;
2061
- }
2062
-
2063
- /* Styles for tracked/untracked file indicators */
2064
- .git-diff-icon.tracked-file {
2065
- opacity: 1;
2066
- filter: none;
2067
- }
2068
-
2069
- .git-diff-icon.untracked-file {
2070
- opacity: 0.8;
2071
- position: relative;
2072
- }
2073
-
2074
- .git-diff-icon.untracked-file:hover {
2075
- opacity: 1;
2076
- }
2077
-
2078
- /* Add visual emphasis for untracked files */
2079
- .git-diff-icon.untracked-file::after {
2080
- content: '';
2081
- position: absolute;
2082
- top: 0;
2083
- left: 0;
2084
- right: 0;
2085
- bottom: 0;
2086
- background: rgba(255, 0, 0, 0.1);
2087
- border-radius: 3px;
2088
- pointer-events: none;
2089
- }
2090
-
2091
- .git-diff-meta {
2092
- display: flex;
2093
- flex-direction: column;
2094
- gap: 4px;
2095
- flex: 1;
2096
- margin-left: 20px;
2097
- }
2098
-
2099
- .git-diff-file-path {
2100
- font-family: 'Monaco', 'Consolas', monospace;
2101
- font-size: 14px;
2102
- font-weight: 600;
2103
- color: #4a5568;
2104
- word-break: break-all;
2105
- }
2106
-
2107
- .git-diff-timestamp {
2108
- font-size: 12px;
2109
- color: #718096;
2110
- }
2111
-
2112
- .git-diff-close {
2113
- background: none;
2114
- border: none;
2115
- font-size: 24px;
2116
- cursor: pointer;
2117
- color: #a0aec0;
2118
- padding: 8px;
2119
- border-radius: 4px;
2120
- transition: all 0.2s ease;
2121
- display: flex;
2122
- align-items: center;
2123
- justify-content: center;
2124
- width: 40px;
2125
- height: 40px;
2126
- }
2127
-
2128
- .git-diff-close:hover {
2129
- background: #fed7d7;
2130
- color: #e53e3e;
2131
- }
2132
-
2133
- .git-diff-body {
2134
- flex: 1;
2135
- display: flex;
2136
- flex-direction: column;
2137
- overflow: hidden;
2138
- min-height: 0; /* Important for flexbox scrolling */
2139
- position: relative; /* Establish positioning context */
2140
- }
2141
-
2142
- .git-diff-loading {
2143
- display: flex;
2144
- flex-direction: column;
2145
- align-items: center;
2146
- justify-content: center;
2147
- flex: 1;
2148
- gap: 16px;
2149
- color: #4a5568;
2150
- font-size: 14px;
2151
- }
2152
-
2153
- .loading-spinner {
2154
- width: 40px;
2155
- height: 40px;
2156
- border: 3px solid #e2e8f0;
2157
- border-top: 3px solid #4299e1;
2158
- border-radius: 50%;
2159
- animation: spin 1s linear infinite;
2160
- }
2161
-
2162
- @keyframes spin {
2163
- 0% { transform: rotate(0deg); }
2164
- 100% { transform: rotate(360deg); }
2165
- }
2166
-
2167
- .git-diff-error {
2168
- padding: 24px;
2169
- text-align: center;
2170
- display: flex;
2171
- flex-direction: column;
2172
- align-items: center;
2173
- gap: 16px;
2174
- }
2175
-
2176
- .error-icon {
2177
- font-size: 48px;
2178
- }
2179
-
2180
- .error-message {
2181
- font-size: 16px;
2182
- color: #e53e3e;
2183
- font-weight: 500;
2184
- margin-bottom: 8px;
2185
- }
2186
-
2187
- .error-suggestions {
2188
- background: #fef5e7;
2189
- border: 1px solid #f6e05e;
2190
- border-radius: 6px;
2191
- padding: 16px;
2192
- color: #744210;
2193
- font-size: 14px;
2194
- max-width: 500px;
2195
- }
2196
-
2197
- .error-suggestions h4 {
2198
- margin: 0 0 8px 0;
2199
- color: #744210;
2200
- font-size: 14px;
2201
- }
2202
-
2203
- .error-suggestions ul {
2204
- margin: 0;
2205
- padding-left: 20px;
2206
- }
2207
-
2208
- .error-suggestions li {
2209
- margin-bottom: 4px;
2210
- }
2211
-
2212
- .git-diff-content-area {
2213
- flex: 1;
2214
- display: flex;
2215
- flex-direction: column;
2216
- overflow: hidden;
2217
- min-height: 0; /* Important for flexbox scrolling */
2218
- height: 100%;
2219
- max-height: calc(100% - 80px); /* Account for header */
2220
- }
2221
-
2222
- .git-diff-toolbar {
2223
- display: flex;
2224
- justify-content: space-between;
2225
- align-items: center;
2226
- padding: 12px 24px;
2227
- background: #f7fafc;
2228
- flex-shrink: 0; /* Prevent toolbar from shrinking */
2229
- border-bottom: 1px solid #e2e8f0;
2230
- }
2231
-
2232
- .git-diff-info {
2233
- display: flex;
2234
- gap: 20px;
2235
- font-size: 12px;
2236
- color: #4a5568;
2237
- font-family: 'Monaco', 'Consolas', monospace;
2238
- }
2239
-
2240
- .commit-hash {
2241
- color: #805ad5;
2242
- font-weight: 600;
2243
- }
2244
-
2245
- .diff-method {
2246
- color: #38a169;
2247
- }
2248
-
2249
- .git-diff-actions {
2250
- display: flex;
2251
- gap: 8px;
2252
- }
2253
-
2254
- .git-diff-copy {
2255
- background: #4299e1;
2256
- color: white;
2257
- border: none;
2258
- padding: 6px 12px;
2259
- border-radius: 4px;
2260
- font-size: 12px;
2261
- cursor: pointer;
2262
- transition: background-color 0.2s ease;
2263
- display: flex;
2264
- align-items: center;
2265
- gap: 4px;
2266
- }
2267
-
2268
- .git-diff-copy:hover {
2269
- background: #3182ce;
2270
- }
2271
-
2272
- .git-diff-scroll-wrapper {
2273
- flex: 1;
2274
- overflow: auto !important;
2275
- overflow-y: scroll !important;
2276
- min-height: 0;
2277
- position: relative;
2278
- height: 100%;
2279
- max-height: calc(100vh - 300px); /* Account for header, toolbar, margins */
2280
- }
2281
-
2282
- .git-diff-display {
2283
- margin: 0;
2284
- background: #1a202c;
2285
- color: #e2e8f0;
2286
- padding: 0;
2287
- border-radius: 0;
2288
- overflow: visible;
2289
- font-family: 'Monaco', 'Consolas', 'Liberation Mono', 'Courier New', monospace;
2290
- font-size: 13px;
2291
- line-height: 1.5;
2292
- min-height: min-content;
2293
- }
2294
-
2295
- .git-diff-code {
2296
- display: block;
2297
- padding: 20px;
2298
- margin: 0;
2299
- white-space: pre;
2300
- overflow-wrap: normal;
2301
- color: #e2e8f0;
2302
- }
2303
-
2304
- /* Git diff syntax highlighting */
2305
- .git-diff-code .diff-header {
2306
- color: #fbb6ce;
2307
- font-weight: bold;
2308
- }
2309
-
2310
- .git-diff-code .diff-meta {
2311
- color: #bee3f8;
2312
- }
2313
-
2314
- .git-diff-code .diff-addition {
2315
- background-color: rgba(72, 187, 120, 0.2);
2316
- color: #68d391;
2317
- }
2318
-
2319
- .git-diff-code .diff-deletion {
2320
- background-color: rgba(245, 101, 101, 0.2);
2321
- color: #fc8181;
2322
- }
2323
-
2324
- .git-diff-code .diff-context {
2325
- color: #e2e8f0;
2326
- }
2327
-
2328
- /* Git Diff Button Styles */
2329
- .git-diff-action {
2330
- margin-top: 16px;
2331
- padding-top: 16px;
2332
- border-top: 1px solid #e2e8f0;
2333
- display: flex;
2334
- justify-content: center;
2335
- }
2336
-
2337
- .git-diff-button {
2338
- background: linear-gradient(135deg, #4299e1 0%, #3182ce 100%);
2339
- color: white;
2340
- border: none;
2341
- padding: 10px 20px;
2342
- border-radius: 6px;
2343
- font-size: 13px;
2344
- font-weight: 500;
2345
- cursor: pointer;
2346
- transition: all 0.2s ease;
2347
- display: flex;
2348
- align-items: center;
2349
- gap: 8px;
2350
- box-shadow: 0 2px 4px rgba(66, 153, 225, 0.3);
2351
- }
2352
-
2353
- .git-diff-button:hover {
2354
- background: linear-gradient(135deg, #3182ce 0%, #2c5282 100%);
2355
- transform: translateY(-1px);
2356
- box-shadow: 0 4px 8px rgba(66, 153, 225, 0.4);
2357
- }
2358
-
2359
- .git-diff-button:active {
2360
- transform: translateY(0);
2361
- box-shadow: 0 2px 4px rgba(66, 153, 225, 0.3);
2362
- }
2363
-
2364
-
2365
- button:disabled {
2366
- opacity: 0.5;
2367
- cursor: not-allowed;
2368
- background: #a0aec0;
2369
- }
2370
-
2371
- button:disabled:hover {
2372
- transform: none;
2373
- background: #a0aec0;
2374
- }
2375
-
2376
- /* Responsive Design */
2377
- @media (max-width: 1200px) {
2378
- .split-container {
2379
- flex-direction: column;
2380
- }
2381
-
2382
- .module-viewer {
2383
- width: 100%;
2384
- height: 250px;
2385
- }
2386
-
2387
- /* Single-row content adjustments for smaller screens */
2388
- .event-single-row-content {
2389
- font-size: 12px;
2390
- word-break: break-word;
2391
- overflow-wrap: break-word;
2392
- }
2393
- }
2394
-
2395
- @media (max-width: 768px) {
2396
- .container {
2397
- padding: 10px;
2398
- padding-bottom: 15px;
2399
- }
2400
-
2401
- .header-row {
2402
- flex-direction: column;
2403
- align-items: stretch;
2404
- gap: 10px;
2405
- }
2406
-
2407
- .filter-group {
2408
- max-width: none;
2409
- }
2410
-
2411
- .modal-content {
2412
- width: 95%;
2413
- margin: 10% auto;
2414
- }
2415
- }
2416
-
2417
- /* File Viewer Modal Styles */
2418
- .file-viewer-modal {
2419
- z-index: 1001; /* Higher than regular modals */
2420
- }
2421
-
2422
- .modal-content.file-viewer-content {
2423
- width: 95vw;
2424
- height: 95vh;
2425
- max-width: none;
2426
- max-height: none;
2427
- margin: 2.5vh auto;
2428
- padding: 0;
2429
- display: flex;
2430
- flex-direction: column;
2431
- background: #ffffff;
2432
- border-radius: 8px;
2433
- overflow: hidden;
2434
- }
2435
-
2436
- .file-viewer-header {
2437
- display: flex;
2438
- align-items: center;
2439
- justify-content: space-between;
2440
- padding: 20px 24px;
2441
- border-bottom: 1px solid #e2e8f0;
2442
- background: #f8fafc;
2443
- border-radius: 8px 8px 0 0;
2444
- min-height: 60px;
2445
- flex-shrink: 0; /* Prevent header from shrinking */
2446
- }
2447
-
2448
- .file-viewer-title {
2449
- display: flex;
2450
- align-items: center;
2451
- gap: 12px;
2452
- margin: 0;
2453
- font-size: 20px;
2454
- font-weight: 600;
2455
- color: #2d3748;
2456
- }
2457
-
2458
- .file-viewer-icon {
2459
- font-size: 24px;
2460
- }
2461
-
2462
- .file-viewer-meta {
2463
- display: flex;
2464
- flex-direction: column;
2465
- gap: 4px;
2466
- flex: 1;
2467
- margin-left: 20px;
2468
- }
2469
-
2470
- .file-viewer-file-path {
2471
- font-family: 'Monaco', 'Consolas', monospace;
2472
- font-size: 14px;
2473
- font-weight: 600;
2474
- color: #4a5568;
2475
- word-break: break-all;
2476
- }
2477
-
2478
- .file-viewer-file-size {
2479
- font-size: 12px;
2480
- color: #718096;
2481
- }
2482
-
2483
- .file-viewer-close {
2484
- background: none;
2485
- border: none;
2486
- font-size: 24px;
2487
- cursor: pointer;
2488
- color: #a0aec0;
2489
- padding: 8px;
2490
- border-radius: 4px;
2491
- transition: all 0.2s ease;
2492
- display: flex;
2493
- align-items: center;
2494
- justify-content: center;
2495
- }
2496
-
2497
- .file-viewer-close:hover {
2498
- background: #fed7d7;
2499
- color: #e53e3e;
2500
- }
2501
-
2502
- .file-viewer-body {
2503
- flex: 1;
2504
- display: flex;
2505
- flex-direction: column;
2506
- overflow: hidden;
2507
- min-height: 0; /* Important for flexbox scrolling */
2508
- position: relative; /* Establish positioning context */
2509
- }
2510
-
2511
- .file-viewer-loading {
2512
- display: flex;
2513
- flex-direction: column;
2514
- align-items: center;
2515
- justify-content: center;
2516
- flex: 1;
2517
- gap: 16px;
2518
- color: #4a5568;
2519
- font-size: 14px;
2520
- }
2521
-
2522
- .file-viewer-error {
2523
- padding: 24px;
2524
- text-align: center;
2525
- display: flex;
2526
- flex-direction: column;
2527
- align-items: center;
2528
- gap: 16px;
2529
- }
2530
-
2531
- .file-viewer-content-area {
2532
- flex: 1;
2533
- display: flex;
2534
- flex-direction: column;
2535
- overflow: hidden;
2536
- min-height: 0; /* Important for flexbox scrolling */
2537
- height: 100%;
2538
- max-height: calc(100% - 80px); /* Account for header */
2539
- }
2540
-
2541
- .file-viewer-toolbar {
2542
- display: flex;
2543
- justify-content: space-between;
2544
- align-items: center;
2545
- padding: 12px 24px;
2546
- background: #f7fafc;
2547
- flex-shrink: 0; /* Prevent toolbar from shrinking */
2548
- border-bottom: 1px solid #e2e8f0;
2549
- }
2550
-
2551
- .file-viewer-info {
2552
- display: flex;
2553
- gap: 20px;
2554
- font-size: 12px;
2555
- color: #4a5568;
2556
- font-family: 'Monaco', 'Consolas', monospace;
2557
- }
2558
-
2559
- .file-extension {
2560
- color: #805ad5;
2561
- font-weight: 600;
2562
- }
2563
-
2564
- .file-encoding {
2565
- color: #38a169;
2566
- font-weight: 600;
2567
- }
2568
-
2569
- .file-viewer-actions {
2570
- display: flex;
2571
- gap: 8px;
2572
- }
2573
-
2574
- .file-content-copy {
2575
- background: #4299e1;
2576
- color: white;
2577
- border: none;
2578
- padding: 6px 12px;
2579
- border-radius: 4px;
2580
- font-size: 12px;
2581
- cursor: pointer;
2582
- transition: background-color 0.2s ease;
2583
- display: flex;
2584
- align-items: center;
2585
- gap: 4px;
2586
- }
2587
-
2588
- .file-content-copy:hover {
2589
- background: #3182ce;
2590
- }
2591
-
2592
- .file-viewer-scroll-wrapper {
2593
- flex: 1;
2594
- overflow: auto !important;
2595
- overflow-y: scroll !important;
2596
- min-height: 0;
2597
- position: relative;
2598
- height: 100%;
2599
- max-height: calc(100vh - 300px); /* Account for header, toolbar, margins */
2600
- }
2601
-
2602
- .file-content-display {
2603
- margin: 0;
2604
- background: #1a202c;
2605
- color: #e2e8f0;
2606
- padding: 0;
2607
- border-radius: 0;
2608
- overflow: visible;
2609
- font-family: 'Monaco', 'Consolas', 'Liberation Mono', 'Courier New', monospace;
2610
- font-size: 13px;
2611
- line-height: 1.5;
2612
- min-height: min-content;
2613
- }
2614
-
2615
- .file-content-code {
2616
- display: block;
2617
- padding: 20px;
2618
- margin: 0;
2619
- white-space: pre;
2620
- overflow-wrap: normal;
2621
- color: #e2e8f0;
2622
- }
2623
-
2624
- /* File content syntax highlighting - Prism.js integration */
2625
- .file-content-display code[class*="language-"],
2626
- .file-content-display pre[class*="language-"] {
2627
- color: #e2e8f0;
2628
- background: none;
2629
- font-family: 'Monaco', 'Consolas', 'Liberation Mono', 'Courier New', monospace;
2630
- font-size: 13px;
2631
- line-height: 1.5;
2632
- direction: ltr;
2633
- text-align: left;
2634
- white-space: pre;
2635
- word-spacing: normal;
2636
- word-break: normal;
2637
- word-wrap: normal;
2638
- -moz-tab-size: 4;
2639
- -o-tab-size: 4;
2640
- tab-size: 4;
2641
- -webkit-hyphens: none;
2642
- -moz-hyphens: none;
2643
- -ms-hyphens: none;
2644
- hyphens: none;
2645
- }
2646
-
2647
- /* Prism line numbers integration */
2648
- .file-content-display .line-numbers-rows {
2649
- border-right: 1px solid #44475a;
2650
- padding-right: 0.5em;
2651
- }
2652
-
2653
- .file-content-display .line-numbers .line-numbers-rows > span:before {
2654
- color: #6272a4;
2655
- }
2656
-
2657
- /* File content syntax highlighting - fallback colors */
2658
- .file-content-code .keyword {
2659
- color: #ff79c6;
2660
- font-weight: 600;
2661
- }
2662
-
2663
- /* Search Viewer Modal Styles */
2664
- .search-viewer-modal {
2665
- z-index: 1001; /* Higher than regular modals */
2666
- }
2667
-
2668
- .modal-content.search-viewer-content {
2669
- width: 80vw;
2670
- height: 80vh;
2671
- max-width: 1200px;
2672
- max-height: 800px;
2673
- margin: 10vh auto;
2674
- padding: 0;
2675
- display: flex;
2676
- flex-direction: column;
2677
- background: #ffffff;
2678
- border-radius: 8px;
2679
- overflow: hidden;
2680
- }
2681
-
2682
- .search-viewer-header {
2683
- display: flex;
2684
- align-items: center;
2685
- justify-content: space-between;
2686
- padding: 20px 24px;
2687
- border-bottom: 1px solid #e2e8f0;
2688
- background: #f8fafc;
2689
- border-radius: 8px 8px 0 0;
2690
- min-height: 60px;
2691
- flex-shrink: 0;
2692
- }
2693
-
2694
- .search-viewer-title {
2695
- display: flex;
2696
- align-items: center;
2697
- gap: 12px;
2698
- margin: 0;
2699
- font-size: 20px;
2700
- font-weight: 600;
2701
- color: #2d3748;
2702
- }
2703
-
2704
- .search-viewer-icon {
2705
- font-size: 24px;
2706
- }
2707
-
2708
- .search-viewer-close {
2709
- background: none;
2710
- border: none;
2711
- font-size: 24px;
2712
- cursor: pointer;
2713
- color: #a0aec0;
2714
- padding: 8px;
2715
- border-radius: 4px;
2716
- transition: all 0.2s ease;
2717
- display: flex;
2718
- align-items: center;
2719
- justify-content: center;
2720
- }
2721
-
2722
- .search-viewer-close:hover {
2723
- background: #fed7d7;
2724
- color: #e53e3e;
2725
- }
2726
-
2727
- .search-viewer-body {
2728
- flex: 1;
2729
- display: flex;
2730
- flex-direction: column;
2731
- overflow-y: auto;
2732
- padding: 20px;
2733
- gap: 20px;
2734
- }
2735
-
2736
- .search-params-section,
2737
- .search-results-section {
2738
- background: #f8fafc;
2739
- border: 1px solid #e2e8f0;
2740
- border-radius: 6px;
2741
- padding: 16px;
2742
- }
2743
-
2744
- .search-params-section h3,
2745
- .search-results-section h3 {
2746
- margin: 0 0 12px 0;
2747
- font-size: 16px;
2748
- font-weight: 600;
2749
- color: #2d3748;
2750
- }
2751
-
2752
- .search-params-display {
2753
- background: #1a202c;
2754
- color: #e2e8f0;
2755
- padding: 12px;
2756
- border-radius: 4px;
2757
- font-family: 'Monaco', 'Consolas', monospace;
2758
- font-size: 13px;
2759
- overflow-x: auto;
2760
- white-space: pre;
2761
- }
2762
-
2763
- .search-results-display {
2764
- max-height: 400px;
2765
- overflow-y: auto;
2766
- }
2767
-
2768
- .search-results-text,
2769
- .search-results-json {
2770
- background: #1a202c;
2771
- color: #e2e8f0;
2772
- padding: 12px;
2773
- border-radius: 4px;
2774
- font-family: 'Monaco', 'Consolas', monospace;
2775
- font-size: 13px;
2776
- overflow-x: auto;
2777
- white-space: pre-wrap;
2778
- word-break: break-word;
2779
- }
2780
-
2781
- .search-results-list {
2782
- list-style: none;
2783
- padding: 0;
2784
- margin: 0;
2785
- }
2786
-
2787
- .search-results-list li {
2788
- background: white;
2789
- border: 1px solid #e2e8f0;
2790
- border-radius: 4px;
2791
- padding: 8px 12px;
2792
- margin-bottom: 8px;
2793
- }
2794
-
2795
- .search-results-list li pre {
2796
- margin: 0;
2797
- background: #1a202c;
2798
- color: #e2e8f0;
2799
- padding: 8px;
2800
- border-radius: 4px;
2801
- font-family: 'Monaco', 'Consolas', monospace;
2802
- font-size: 12px;
2803
- overflow-x: auto;
2804
- }
2805
-
2806
- /* Button for viewing search details */
2807
- .btn-view-search {
2808
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
2809
- color: white;
2810
- border: none;
2811
- padding: 10px 20px;
2812
- border-radius: 6px;
2813
- font-size: 14px;
2814
- font-weight: 500;
2815
- cursor: pointer;
2816
- transition: all 0.3s ease;
2817
- display: inline-flex;
2818
- align-items: center;
2819
- gap: 8px;
2820
- }
2821
-
2822
- .btn-view-search:hover {
2823
- transform: translateY(-2px);
2824
- box-shadow: 0 4px 12px rgba(102, 126, 234, 0.4);
2825
- }
2826
-
2827
- .search-view-action {
2828
- margin-top: 20px;
2829
- display: flex;
2830
- justify-content: center;
2831
- }
2832
-
2833
- .file-content-code .comment {
2834
- color: #6272a4;
2835
- font-style: italic;
2836
- }
2837
-
2838
- .file-content-code .string {
2839
- color: #f1fa8c;
2840
- }
2841
-
2842
- .file-content-code .number,
2843
- .source-line .number {
2844
- color: #bd93f9;
2845
- }
2846
-
2847
- .file-content-code .property {
2848
- color: #50fa7b;
2849
- }
2850
-
2851
- .file-content-code .value {
2852
- color: #8be9fd;
2853
- }
2854
-
2855
- /* JSON-specific syntax highlighting */
2856
- .file-content-code .json-key,
2857
- .source-line .json-key {
2858
- color: #8be9fd;
2859
- font-weight: 600;
2860
- }
2861
-
2862
- .file-content-code .literal,
2863
- .source-line .literal {
2864
- color: #ff79c6;
2865
- font-weight: 600;
2866
- }
2867
-
2868
- .file-content-code .selector {
2869
- color: #ff79c6;
2870
- }
2871
-
2872
- .file-content-code .tag {
2873
- color: #ff79c6;
2874
- }
2875
-
2876
- .file-content-code .attribute {
2877
- color: #50fa7b;
2878
- }
2879
-
2880
- .file-content-code .header {
2881
- color: #ff79c6;
2882
- font-weight: bold;
2883
- }
2884
-
2885
- .file-content-code .header-text {
2886
- color: #f8f8f2;
2887
- font-weight: normal;
2888
- }
2889
-
2890
- .file-content-code .bold {
2891
- color: #f8f8f2;
2892
- font-weight: bold;
2893
- }
2894
-
2895
- .file-content-code .italic {
2896
- color: #f8f8f2;
2897
- font-style: italic;
2898
- }
2899
-
2900
- .file-content-code .code {
2901
- background: rgba(68, 71, 90, 0.5);
2902
- color: #f1fa8c;
2903
- padding: 2px 4px;
2904
- border-radius: 3px;
2905
- }
2906
-
2907
- .file-content-code .list-marker {
2908
- color: #ff79c6;
2909
- }
2910
-
2911
- .file-content-code .line-number {
2912
- color: #6272a4;
2913
- user-select: none;
2914
- margin-right: 1em;
2915
- border-right: 1px solid #44475a;
2916
- padding-right: 0.5em;
2917
- display: inline-block;
2918
- min-width: 3em;
2919
- text-align: right;
2920
- }
2921
-
2922
- /* Git Tracking Control Styles */
2923
- .git-track-status {
2924
- margin-top: 8px;
2925
- font-size: 14px;
2926
- }
2927
-
2928
- .untracked-file-notice,
2929
- .tracked-file-notice,
2930
- .tracking-file-notice,
2931
- .tracking-error-notice {
2932
- display: flex;
2933
- align-items: center;
2934
- gap: 8px;
2935
- padding: 8px 12px;
2936
- border-radius: 6px;
2937
- margin-top: 8px;
2938
- }
2939
-
2940
- .untracked-file-notice {
2941
- background: #fef5e7;
2942
- border: 1px solid #f6e05e;
2943
- color: #744210;
2944
- }
2945
-
2946
- .tracked-file-notice {
2947
- background: #f0fff4;
2948
- border: 1px solid #9ae6b4;
2949
- color: #22543d;
2950
- }
2951
-
2952
- .tracking-file-notice {
2953
- background: #ebf8ff;
2954
- border: 1px solid #90cdf4;
2955
- color: #2c5282;
2956
- }
2957
-
2958
- .tracking-error-notice {
2959
- background: #fed7d7;
2960
- border: 1px solid #fc8181;
2961
- color: #742a2a;
2962
- }
2963
-
2964
- .track-file-button {
2965
- background: linear-gradient(135deg, #48bb78 0%, #38a169 100%);
2966
- color: white;
2967
- border: none;
2968
- padding: 6px 12px;
2969
- border-radius: 4px;
2970
- font-size: 12px;
2971
- font-weight: 500;
2972
- cursor: pointer;
2973
- transition: all 0.2s ease;
2974
- display: flex;
2975
- align-items: center;
2976
- gap: 4px;
2977
- margin-left: auto;
2978
- }
2979
-
2980
- .track-file-button:hover {
2981
- background: linear-gradient(135deg, #38a169 0%, #2f855a 100%);
2982
- transform: translateY(-1px);
2983
- box-shadow: 0 4px 8px rgba(72, 187, 120, 0.4);
2984
- }
2985
-
2986
- .track-file-button:active {
2987
- transform: translateY(0);
2988
- box-shadow: 0 2px 4px rgba(72, 187, 120, 0.3);
2989
- }
2990
-
2991
- .untracked-icon,
2992
- .tracked-icon,
2993
- .loading-icon,
2994
- .error-icon {
2995
- font-size: 16px;
2996
- flex-shrink: 0;
2997
- }
2998
-
2999
- .untracked-text,
3000
- .tracked-text,
3001
- .loading-text,
3002
- .error-text {
3003
- flex: 1;
3004
- font-size: 13px;
3005
- font-weight: 500;
3006
- }
3007
-
3008
- .git-icon {
3009
- font-size: 14px;
3010
- }
3011
-
3012
- /* File viewer icon styling */
3013
- .file-viewer-icon {
3014
- transition: all 0.2s ease;
3015
- }
3016
-
3017
- .file-viewer-icon:hover {
3018
- transform: scale(1.1);
3019
- opacity: 0.8;
3020
- }
3021
-
3022
- /* Enhanced File Operations Styles */
3023
- .single-file-header {
3024
- background: linear-gradient(135deg, #f7fafc 0%, #edf2f7 100%);
3025
- border-left: 4px solid #4299e1;
3026
- border-radius: 6px 6px 0 0;
3027
- }
3028
-
3029
- .file-type-badge {
3030
- background: #e2e8f0;
3031
- color: #4a5568;
3032
- font-size: 11px;
3033
- padding: 2px 6px;
3034
- border-radius: 10px;
3035
- font-weight: 500;
3036
- text-transform: uppercase;
3037
- letter-spacing: 0.5px;
3038
- }
3039
-
3040
- .clickable-file-path {
3041
- cursor: pointer;
3042
- transition: all 0.2s ease;
3043
- border-radius: 4px;
3044
- padding: 2px 4px;
3045
- margin: -2px -4px;
3046
- }
3047
-
3048
- .clickable-file-path:hover {
3049
- background: #bee3f8;
3050
- color: #2b6cb0;
3051
- transform: translateX(2px);
3052
- }
3053
-
3054
- .file-actions {
3055
- margin-top: 12px;
3056
- display: flex;
3057
- gap: 8px;
3058
- flex-wrap: wrap;
3059
- }
3060
-
3061
- .single-file-actions {
3062
- margin-top: 16px;
3063
- padding: 12px;
3064
- background: #f7fafc;
3065
- border-radius: 6px;
3066
- border: 1px solid #e2e8f0;
3067
- }
3068
-
3069
- .file-action-btn {
3070
- background: #4299e1;
3071
- color: white;
3072
- border: none;
3073
- padding: 8px 12px;
3074
- border-radius: 6px;
3075
- font-size: 13px;
3076
- font-weight: 500;
3077
- cursor: pointer;
3078
- transition: all 0.2s ease;
3079
- display: flex;
3080
- align-items: center;
3081
- gap: 6px;
3082
- text-decoration: none;
3083
- white-space: nowrap;
3084
- }
3085
-
3086
- .file-action-btn:hover {
3087
- background: #3182ce;
3088
- transform: translateY(-1px);
3089
- box-shadow: 0 4px 12px rgba(66, 153, 225, 0.3);
3090
- }
3091
-
3092
- .file-action-btn:active {
3093
- transform: translateY(0);
3094
- box-shadow: 0 2px 6px rgba(66, 153, 225, 0.3);
3095
- }
3096
-
3097
- .file-action-btn.primary-action {
3098
- background: linear-gradient(135deg, #4299e1 0%, #3182ce 100%);
3099
- padding: 10px 16px;
3100
- font-size: 14px;
3101
- font-weight: 600;
3102
- box-shadow: 0 2px 8px rgba(66, 153, 225, 0.2);
3103
- }
3104
-
3105
- .file-action-btn.primary-action:hover {
3106
- background: linear-gradient(135deg, #3182ce 0%, #2c5282 100%);
3107
- box-shadow: 0 4px 16px rgba(66, 153, 225, 0.4);
3108
- }
3109
-
3110
- .inline-preview-btn {
3111
- background: #48bb78;
3112
- border: 1px solid #38a169;
3113
- }
3114
-
3115
- .inline-preview-btn:hover {
3116
- background: #38a169;
3117
- border-color: #2f855a;
3118
- }
3119
-
3120
- /* Inline Preview Styles */
3121
- .inline-preview-container {
3122
- margin-top: 16px;
3123
- border: 1px solid #e2e8f0;
3124
- border-radius: 6px;
3125
- overflow: hidden;
3126
- background: white;
3127
- animation: slideDown 0.3s ease-out;
3128
- }
3129
-
3130
- @keyframes slideDown {
3131
- from {
3132
- opacity: 0;
3133
- max-height: 0;
3134
- margin-top: 0;
3135
- }
3136
- to {
3137
- opacity: 1;
3138
- max-height: 500px;
3139
- margin-top: 16px;
3140
- }
3141
- }
3142
-
3143
- .inline-preview-header {
3144
- background: #f7fafc;
3145
- padding: 8px 12px;
3146
- border-bottom: 1px solid #e2e8f0;
3147
- display: flex;
3148
- align-items: center;
3149
- gap: 8px;
3150
- font-size: 12px;
3151
- }
3152
-
3153
- .preview-label {
3154
- color: #4a5568;
3155
- font-weight: 600;
3156
- }
3157
-
3158
- .preview-file {
3159
- color: #2d3748;
3160
- font-family: 'Monaco', 'Consolas', monospace;
3161
- background: #e2e8f0;
3162
- padding: 2px 6px;
3163
- border-radius: 3px;
3164
- flex: 1;
3165
- min-width: 0;
3166
- white-space: nowrap;
3167
- overflow: hidden;
3168
- text-overflow: ellipsis;
3169
- }
3170
-
3171
- .inline-preview-content {
3172
- padding: 12px;
3173
- max-height: 300px;
3174
- overflow-y: auto;
3175
- font-family: 'Monaco', 'Consolas', monospace;
3176
- font-size: 12px;
3177
- line-height: 1.5;
3178
- background: #fafafa;
3179
- }
3180
-
3181
- .preview-note {
3182
- color: #718096;
3183
- font-style: italic;
3184
- text-align: center;
3185
- padding: 20px;
3186
- background: #f7fafc;
3187
- border: 2px dashed #cbd5e0;
3188
- border-radius: 6px;
3189
- }
3190
-
3191
- .inline-preview-loading {
3192
- padding: 20px;
3193
- text-align: center;
3194
- color: #4a5568;
3195
- font-style: italic;
3196
- }
3197
-
3198
- .inline-preview-error {
3199
- padding: 12px;
3200
- background: #fed7d7;
3201
- color: #c53030;
3202
- border-radius: 4px;
3203
- font-size: 12px;
3204
- }
3205
-
3206
- /* File Icon Enhancements */
3207
- .unified-viewer-header h6 {
3208
- display: flex;
3209
- align-items: center;
3210
- gap: 8px;
3211
- }
3212
-
3213
- /* Enhanced File Type Icons */
3214
- .unified-viewer-header .file-type-badge {
3215
- margin-left: auto;
3216
- }
3217
-
3218
- /* File Path Click Animation */
3219
- .clickable-file-path {
3220
- position: relative;
3221
- }
3222
-
3223
- .clickable-file-path::before {
3224
- content: '👁️';
3225
- position: absolute;
3226
- right: -20px;
3227
- opacity: 0;
3228
- transition: opacity 0.2s ease;
3229
- font-size: 12px;
3230
- top: 50%;
3231
- transform: translateY(-50%);
3232
- }
3233
-
3234
- .clickable-file-path:hover::before {
3235
- opacity: 0.7;
3236
- }
3237
-
3238
- /* Responsive Design */
3239
- @media (max-width: 768px) {
3240
- .file-actions {
3241
- flex-direction: column;
3242
- }
3243
-
3244
- .file-action-btn {
3245
- justify-content: center;
3246
- width: 100%;
3247
- }
3248
-
3249
- .single-file-actions {
3250
- padding: 8px;
3251
- }
3252
-
3253
- .inline-preview-content {
3254
- font-size: 11px;
3255
- padding: 8px;
3256
- }
3257
- }
3258
-
3259
- /* Hover Effects for File Operations */
3260
- .unified-viewer-content:hover .clickable-file-path {
3261
- background: rgba(190, 227, 248, 0.3);
3262
- }
3263
-
3264
- .single-file-header:hover {
3265
- background: linear-gradient(135deg, #edf2f7 0%, #e2e8f0 100%);
3266
- }
3267
-
3268
- /* Accessibility */
3269
- .file-action-btn:focus {
3270
- outline: 2px solid #4299e1;
3271
- outline-offset: 2px;
3272
- }
3273
-
3274
- .clickable-file-path:focus {
3275
- outline: 2px solid #4299e1;
3276
- outline-offset: 1px;
3277
- }
3278
-
3279
- /* Agent-specific view styles */
3280
- .agent-overview-section,
3281
- .agent-prompt-section,
3282
- .agent-todos-section,
3283
- .agent-tools-section {
3284
- margin-bottom: 20px;
3285
- }
3286
-
3287
- .agent-prompt {
3288
- border: 1px solid #e2e8f0;
3289
- background: #f8fafc;
3290
- border-radius: 6px;
3291
- padding: 10px;
3292
- font-family: 'Monaco', 'Consolas', monospace;
3293
- font-size: 12px;
3294
- line-height: 1.4;
3295
- white-space: pre-wrap;
3296
- max-height: 300px;
3297
- overflow-y: auto;
3298
- }
3299
-
3300
- .agent-todos-section .todo-checklist {
3301
- background: #ffffff;
3302
- border-radius: 8px;
3303
- padding: 12px;
3304
- border: 1px solid #e2e8f0;
3305
- }
3306
-
3307
- .agent-todos-section .todo-item {
3308
- display: flex;
3309
- align-items: center;
3310
- gap: 10px;
3311
- padding: 8px 0;
3312
- border-bottom: 1px solid #f1f5f9;
3313
- }
3314
-
3315
- .agent-todos-section .todo-item:last-child {
3316
- border-bottom: none;
3317
- }
3318
-
3319
- .agent-todos-section .todo-timestamp {
3320
- font-size: 11px;
3321
- color: #64748b;
3322
- margin-left: auto;
3323
- font-family: 'Monaco', 'Consolas', monospace;
3324
- }
3325
-
3326
- .tools-list {
3327
- background: #ffffff;
3328
- border-radius: 8px;
3329
- padding: 12px;
3330
- border: 1px solid #e2e8f0;
3331
- }
3332
-
3333
- .tool-call-item {
3334
- padding: 10px 0;
3335
- border-bottom: 1px solid #f1f5f9;
3336
- }
3337
-
3338
- .tool-call-item:last-child {
3339
- border-bottom: none;
3340
- }
3341
-
3342
- .tool-call-header {
3343
- display: flex;
3344
- align-items: center;
3345
- gap: 12px;
3346
- margin-bottom: 4px;
3347
- }
3348
-
3349
- .tool-name {
3350
- font-weight: 600;
3351
- color: #374151;
3352
- font-size: 14px;
3353
- }
3354
-
3355
- .tool-phase {
3356
- font-size: 11px;
3357
- padding: 2px 6px;
3358
- border-radius: 4px;
3359
- font-weight: 500;
3360
- text-transform: uppercase;
3361
- }
3362
-
3363
- .tool-phase.pre_tool {
3364
- background: #f0f9ff;
3365
- color: #0369a1;
3366
- border: 1px solid #bae6fd;
3367
- }
3368
-
3369
- .tool-phase.post_tool {
3370
- background: #d1fae5;
3371
- color: #065f46;
3372
- border: 1px solid #a7f3d0;
3373
- }
3374
-
3375
- .tool-timestamp {
3376
- font-size: 11px;
3377
- color: #64748b;
3378
- font-family: 'Monaco', 'Consolas', monospace;
3379
- margin-left: auto;
3380
- }
3381
-
3382
- .tool-success.success {
3383
- color: #059669;
3384
- font-weight: bold;
3385
- }
3386
-
3387
- .tool-success.failed {
3388
- color: #dc2626;
3389
- font-weight: bold;
3390
- }
3391
-
3392
- .tool-call-details {
3393
- display: flex;
3394
- align-items: center;
3395
- gap: 15px;
3396
- font-size: 12px;
3397
- color: #64748b;
3398
- margin-left: 24px;
3399
- }
3400
-
3401
- /* Consolidated Tool Status Styles */
3402
- .tool-status-indicator {
3403
- display: flex;
3404
- align-items: center;
3405
- gap: 6px;
3406
- font-size: 12px;
3407
- font-weight: 500;
3408
- padding: 2px 8px;
3409
- border-radius: 12px;
3410
- background: #f1f5f9;
3411
- color: #475569;
3412
- }
3413
-
3414
- .tool-status-indicator.status-success {
3415
- background: #dcfce7;
3416
- color: #166534;
3417
- }
3418
-
3419
- .tool-status-indicator.status-failed {
3420
- background: #fef2f2;
3421
- color: #dc2626;
3422
- }
3423
-
3424
- .tool-status-indicator.status-blocked {
3425
- background: #fef2f2;
3426
- color: #dc2626;
3427
- border: 1px solid #fecaca;
3428
- }
3429
-
3430
- .tool-status-indicator.status-running {
3431
- background: #e0f2fe;
3432
- color: #0369a1;
3433
- }
3434
-
3435
- .tool-completed {
3436
- font-style: italic;
3437
- color: #64748b;
3438
- }
3439
-
3440
- .tool-agent {
3441
- font-size: 11px;
3442
- font-weight: 500;
3443
- color: #6366f1;
3444
- background: #eef2ff;
3445
- padding: 2px 6px;
3446
- border-radius: 8px;
3447
- text-transform: uppercase;
3448
- letter-spacing: 0.5px;
3449
- }
3450
-
3451
- .tool-target {
3452
- font-family: 'Monaco', 'Consolas', monospace;
3453
- background: #f1f5f9;
3454
- padding: 2px 6px;
3455
- border-radius: 3px;
3456
- }
3457
-
3458
- .tool-duration {
3459
- font-family: 'Monaco', 'Consolas', monospace;
3460
- color: #7c3aed;
3461
- }
3462
-
3463
- /* Tool Result Section Styles */
3464
- .tool-result-section {
3465
- margin-top: 16px;
3466
- border-top: 1px solid #e2e8f0;
3467
- padding-top: 16px;
3468
- }
3469
-
3470
- .tool-result-content {
3471
- margin-top: 12px;
3472
- }
3473
-
3474
- .tool-result-status {
3475
- display: flex;
3476
- align-items: center;
3477
- gap: 8px;
3478
- padding: 8px 12px;
3479
- border-radius: 6px;
3480
- font-weight: 500;
3481
- margin-bottom: 12px;
3482
- }
3483
-
3484
- .tool-result-status.tool-success {
3485
- background: #dcfce7;
3486
- color: #166534;
3487
- border: 1px solid #bbf7d0;
3488
- }
3489
-
3490
- .tool-result-status.tool-failure {
3491
- background: #fef2f2;
3492
- color: #991b1b;
3493
- border: 1px solid #fecaca;
3494
- }
3495
-
3496
- .tool-result-status.tool-blocked {
3497
- background: #fff1f2;
3498
- color: #be123c;
3499
- border: 1px solid #fecdd3;
3500
- }
3501
-
3502
- .tool-result-status.tool-running {
3503
- background: #f0f9ff;
3504
- color: #0369a1;
3505
- border: 1px solid #bae6fd;
3506
- }
3507
-
3508
- .tool-result-icon {
3509
- font-size: 16px;
3510
- }
3511
-
3512
- .tool-result-text {
3513
- font-weight: 600;
3514
- }
3515
-
3516
- .tool-exit-code {
3517
- margin-left: auto;
3518
- font-family: 'Monaco', 'Consolas', monospace;
3519
- font-size: 12px;
3520
- padding: 2px 6px;
3521
- background: rgba(0, 0, 0, 0.05);
3522
- border-radius: 3px;
3523
- }
3524
-
3525
- .tool-result-output,
3526
- .tool-result-error,
3527
- .tool-result-other {
3528
- margin-bottom: 12px;
3529
- }
3530
-
3531
- .tool-result-label {
3532
- font-weight: 600;
3533
- color: #374151;
3534
- margin-bottom: 6px;
3535
- display: flex;
3536
- align-items: center;
3537
- gap: 6px;
3538
- font-size: 14px;
3539
- }
3540
-
3541
- .tool-result-preview {
3542
- background: #f8fafc;
3543
- border: 1px solid #e2e8f0;
3544
- border-radius: 6px;
3545
- padding: 12px;
3546
- max-height: 300px;
3547
- overflow-y: auto;
3548
- }
3549
-
3550
- .tool-result-preview.error-preview {
3551
- background: #fef2f2;
3552
- border-color: #fecaca;
3553
- }
3554
-
3555
- .tool-result-preview pre {
3556
- margin: 0;
3557
- font-family: 'Monaco', 'Consolas', 'Menlo', monospace;
3558
- font-size: 12px;
3559
- line-height: 1.4;
3560
- white-space: pre-wrap;
3561
- word-wrap: break-word;
3562
- }
3563
-
3564
- .tool-result-meta {
3565
- font-size: 11px;
3566
- color: #6b7280;
3567
- margin-top: 4px;
3568
- font-style: italic;
3569
- }
3570
-
3571
- /* Clickable File Path Styles */
3572
- .clickable-file-path {
3573
- color: #3b82f6;
3574
- cursor: pointer;
3575
- text-decoration: none;
3576
- font-family: 'Monaco', 'Consolas', 'Menlo', monospace;
3577
- font-size: 13px;
3578
- font-weight: 500;
3579
- border-radius: 4px;
3580
- padding: 2px 6px;
3581
- transition: all 0.2s ease;
3582
- display: inline-block;
3583
- background: rgba(59, 130, 246, 0.1);
3584
- border: 1px solid rgba(59, 130, 246, 0.2);
3585
- }
3586
-
3587
- .clickable-file-path:hover {
3588
- color: #1d4ed8;
3589
- background: rgba(59, 130, 246, 0.15);
3590
- border-color: rgba(59, 130, 246, 0.3);
3591
- text-decoration: underline;
3592
- transform: translateY(-1px);
3593
- box-shadow: 0 2px 4px rgba(59, 130, 246, 0.2);
3594
- }
3595
-
3596
- .clickable-file-path:active {
3597
- transform: translateY(0);
3598
- box-shadow: 0 1px 2px rgba(59, 130, 246, 0.3);
3599
- background: rgba(59, 130, 246, 0.2);
3600
- }
3601
-
3602
- /* Special styling for file path in file-path-display context */
3603
- .file-path-display .clickable-file-path {
3604
- font-size: 14px;
3605
- padding: 4px 8px;
3606
- margin-left: 8px;
3607
- }
3608
-
3609
- /* Ensure clickable file paths stand out in event property values */
3610
- .event-property-value .clickable-file-path {
3611
- margin: 0;
3612
- background: rgba(59, 130, 246, 0.08);
3613
- border: 1px solid rgba(59, 130, 246, 0.15);
3614
- }
3615
-
3616
- .event-property-value .clickable-file-path:hover {
3617
- background: rgba(59, 130, 246, 0.12);
3618
- border-color: rgba(59, 130, 246, 0.25);
3619
- }
3620
-
3621
- /* Inline Edit Diff Viewer Styles */
3622
- .inline-edit-diff-viewer {
3623
- margin-top: 8px;
3624
- border-top: 1px solid #e2e8f0;
3625
- background: #f8f9fa;
3626
- }
3627
-
3628
- .diff-toggle-header {
3629
- display: flex;
3630
- align-items: center;
3631
- gap: 6px;
3632
- padding: 8px 12px;
3633
- cursor: pointer;
3634
- transition: background-color 0.2s;
3635
- user-select: none;
3636
- font-size: 12px;
3637
- color: #4a5568;
3638
- }
3639
-
3640
- .diff-toggle-header:hover {
3641
- background: #e2e8f0;
3642
- }
3643
-
3644
- .diff-toggle-icon {
3645
- font-size: 14px;
3646
- }
3647
-
3648
- .diff-toggle-text {
3649
- flex: 1;
3650
- font-weight: 500;
3651
- }
3652
-
3653
- .diff-toggle-arrow {
3654
- font-size: 10px;
3655
- color: #718096;
3656
- transition: transform 0.2s;
3657
- }
3658
-
3659
- .diff-content-container {
3660
- border-top: 1px solid #e2e8f0;
3661
- background: white;
3662
- }
3663
-
3664
- .edit-diff-section {
3665
- padding: 8px;
3666
- }
3667
-
3668
- .edit-diff-header {
3669
- font-size: 11px;
3670
- font-weight: 600;
3671
- color: #4a5568;
3672
- margin-bottom: 6px;
3673
- padding: 4px 8px;
3674
- background: #f1f5f9;
3675
- border-radius: 4px;
3676
- }
3677
-
3678
- .diff-container {
3679
- font-family: 'Monaco', 'Consolas', 'Menlo', monospace;
3680
- font-size: 11px;
3681
- line-height: 1.4;
3682
- background: #1a202c;
3683
- border-radius: 4px;
3684
- overflow-x: auto;
3685
- max-height: 200px;
3686
- overflow-y: auto;
3687
- }
3688
-
3689
- .diff-line {
3690
- padding: 2px 8px;
3691
- white-space: pre;
3692
- word-break: break-all;
3693
- }
3694
-
3695
- .diff-line.diff-added {
3696
- background: rgba(16, 185, 129, 0.1);
3697
- color: #10b981;
3698
- }
3699
-
3700
- .diff-line.diff-removed {
3701
- background: rgba(239, 68, 68, 0.1);
3702
- color: #ef4444;
3703
- }
3704
-
3705
- .diff-line.diff-unchanged {
3706
- color: #9ca3af;
3707
- background: transparent;
3708
- }
3709
-
3710
- /* Event item adjustments to accommodate diff viewers */
3711
- .event-item.single-row {
3712
- flex-direction: column;
3713
- align-items: stretch;
3714
- }
3715
-
3716
- .event-single-row-content {
3717
- display: flex;
3718
- align-items: center;
3719
- justify-content: space-between;
3720
- min-height: 32px;
3721
- }
3722
-
3723
- /* Responsive adjustments for diff viewers */
3724
- @media (max-width: 768px) {
3725
- .diff-container {
3726
- font-size: 10px;
3727
- max-height: 150px;
3728
- }
3729
-
3730
- .inline-edit-diff-viewer {
3731
- margin-left: -12px;
3732
- margin-right: -12px;
3733
- }
3734
-
3735
- .directory-viewer-overlay {
3736
- left: 10px !important;
3737
- right: 10px !important;
3738
- min-width: auto !important;
3739
- max-width: none !important;
3740
- }
3741
- }
3742
-
3743
-
3744
- /* Version Display Styles */
3745
- .version-display {
3746
- display: inline-flex;
3747
- align-items: center;
3748
- gap: 10px;
3749
- margin-left: 20px;
3750
- padding: 4px 12px;
3751
- background: rgba(255, 255, 255, 0.1);
3752
- border-radius: 20px;
3753
- font-size: 12px;
3754
- color: rgba(255, 255, 255, 0.9);
3755
- cursor: pointer;
3756
- transition: all 0.2s ease;
3757
- }
3758
-
3759
- .version-display:hover {
3760
- background: rgba(255, 255, 255, 0.15);
3761
- transform: translateY(-1px);
3762
- }
3763
-
3764
- .version-item {
3765
- display: flex;
3766
- align-items: center;
3767
- gap: 5px;
3768
- }
3769
-
3770
- .version-label {
3771
- font-weight: 600;
3772
- opacity: 0.8;
3773
- text-transform: uppercase;
3774
- font-size: 10px;
3775
- letter-spacing: 0.5px;
3776
- }
3777
-
3778
- .version-value {
3779
- font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;
3780
- font-size: 11px;
3781
- color: #4ade80;
3782
- }
3783
-
3784
- .version-separator {
3785
- color: rgba(255, 255, 255, 0.3);
3786
- margin: 0 5px;
3787
- }
3788
-
3789
- /* Monitor version special styling */
3790
- .monitor-version .version-value {
3791
- color: #60a5fa;
3792
- }
3793
-
3794
- /* Version Modal Styles */
3795
- .version-modal {
3796
- position: fixed;
3797
- top: 0;
3798
- left: 0;
3799
- right: 0;
3800
- bottom: 0;
3801
- background: rgba(0, 0, 0, 0.8);
3802
- display: flex;
3803
- align-items: center;
3804
- justify-content: center;
3805
- z-index: 10000;
3806
- animation: fadeIn 0.2s ease;
3807
- }
3808
-
3809
- .version-modal-content {
3810
- background: white;
3811
- border-radius: 12px;
3812
- padding: 24px;
3813
- max-width: 500px;
3814
- width: 90%;
3815
- box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
3816
- animation: slideUp 0.3s ease;
3817
- }
3818
-
3819
- .version-modal-content h3 {
3820
- margin-bottom: 16px;
3821
- color: #1e293b;
3822
- font-size: 18px;
3823
- font-weight: 600;
3824
- }
3825
-
3826
- .version-modal-content pre {
3827
- background: #f1f5f9;
3828
- border-radius: 8px;
3829
- padding: 16px;
3830
- font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;
3831
- font-size: 13px;
3832
- line-height: 1.5;
3833
- color: #334155;
3834
- margin-bottom: 16px;
3835
- overflow-x: auto;
3836
- }
3837
-
3838
- .version-modal-content button {
3839
- background: #4299e1;
3840
- color: white;
3841
- border: none;
3842
- padding: 8px 16px;
3843
- border-radius: 6px;
3844
- cursor: pointer;
3845
- font-size: 14px;
3846
- font-weight: 500;
3847
- transition: background 0.2s ease;
3848
- }
3849
-
3850
- .version-modal-content button:hover {
3851
- background: #3182ce;
3852
- }
3853
-
3854
- /* Animations */
3855
- @keyframes fadeIn {
3856
- from {
3857
- opacity: 0;
3858
- }
3859
- to {
3860
- opacity: 1;
3861
- }
3862
- }
3863
-
3864
- @keyframes slideUp {
3865
- from {
3866
- transform: translateY(20px);
3867
- opacity: 0;
3868
- }
3869
- to {
3870
- transform: translateY(0);
3871
- opacity: 1;
3872
- }
3873
- }
3874
-
3875
- /* Responsive adjustments for version display */
3876
- @media (max-width: 1200px) {
3877
- .version-display {
3878
- margin-left: 10px;
3879
- font-size: 11px;
3880
- }
3881
-
3882
- .version-label {
3883
- display: none;
3884
- }
3885
-
3886
- .version-separator {
3887
- margin: 0 3px;
3888
- }
3889
- }
3890
-
3891
- @media (max-width: 768px) {
3892
- .version-display {
3893
- position: absolute;
3894
- top: 100%;
3895
- left: 0;
3896
- margin-top: 5px;
3897
- margin-left: 0;
3898
- background: rgba(0, 0, 0, 0.5);
3899
- }
3900
- }
3901
-
3902
- /* Agent Hierarchy Tree Styles */
3903
- .agent-hierarchy {
3904
- font-family: 'Segoe UI', system-ui, -apple-system, sans-serif;
3905
- background: white;
3906
- border-radius: 8px;
3907
- padding: 12px;
3908
- }
3909
-
3910
- .agent-hierarchy-empty {
3911
- text-align: center;
3912
- padding: 40px;
3913
- color: #718096;
3914
- font-style: italic;
3915
- }
3916
-
3917
- .agent-node {
3918
- margin-bottom: 2px;
3919
- transition: all 0.2s ease;
3920
- }
3921
-
3922
- .agent-node-header {
3923
- display: flex;
3924
- align-items: center;
3925
- padding: 8px 12px;
3926
- background: #f7fafc;
3927
- border-radius: 6px;
3928
- cursor: pointer;
3929
- transition: all 0.2s ease;
3930
- border-left: 3px solid transparent;
3931
- }
3932
-
3933
- .agent-node-header:hover {
3934
- background: #edf2f7;
3935
- transform: translateX(2px);
3936
- }
3937
-
3938
- .agent-node-selected .agent-node-header {
3939
- background: #e6f3ff;
3940
- border-left-color: #4299e1;
3941
- }
3942
-
3943
- /* Indentation for hierarchy levels */
3944
- .agent-node-level-0 {
3945
- margin-left: 0;
3946
- }
3947
-
3948
- .agent-node-level-1 {
3949
- margin-left: 24px;
3950
- }
3951
-
3952
- .agent-node-level-2 {
3953
- margin-left: 48px;
3954
- }
3955
-
3956
- .agent-node-level-3 {
3957
- margin-left: 72px;
3958
- }
3959
-
3960
- /* Node elements */
3961
- .agent-node-expand {
3962
- width: 16px;
3963
- font-size: 10px;
3964
- color: #718096;
3965
- flex-shrink: 0;
3966
- }
3967
-
3968
- .agent-node-icon {
3969
- font-size: 18px;
3970
- margin: 0 8px;
3971
- flex-shrink: 0;
3972
- }
3973
-
3974
- .agent-node-name {
3975
- flex: 1;
3976
- font-weight: 500;
3977
- color: #2d3748;
3978
- font-size: 14px;
3979
- }
3980
-
3981
- .agent-node-stats {
3982
- display: flex;
3983
- align-items: center;
3984
- gap: 12px;
3985
- margin-left: auto;
3986
- }
3987
-
3988
- .agent-event-count {
3989
- color: #718096;
3990
- font-size: 12px;
3991
- background: #f7fafc;
3992
- padding: 2px 8px;
3993
- border-radius: 12px;
3994
- }
3995
-
3996
- .agent-status {
3997
- font-size: 11px;
3998
- padding: 2px 8px;
3999
- border-radius: 12px;
4000
- font-weight: 500;
4001
- text-transform: uppercase;
4002
- }
4003
-
4004
- /* Status colors */
4005
- .agent-status-active .agent-status {
4006
- background: #c6f6d5;
4007
- color: #22543d;
4008
- }
4009
-
4010
- .agent-status-completed .agent-status {
4011
- background: #e2e8f0;
4012
- color: #4a5568;
4013
- }
4014
-
4015
- .agent-status-pending .agent-status {
4016
- background: #fef5e7;
4017
- color: #744210;
4018
- }
4019
-
4020
- /* Implied/Inferred PM and Agent Styles */
4021
- .agent-status-inferred .agent-status {
4022
- background: #f0e5ff;
4023
- color: #6b46c1;
4024
- font-style: italic;
4025
- }
4026
-
4027
- .agent-node-implied .agent-node-header {
4028
- border-left-style: dashed !important;
4029
- opacity: 0.9;
4030
- background: linear-gradient(135deg, rgba(107, 70, 193, 0.05) 0%, rgba(107, 70, 193, 0.1) 100%);
4031
- }
4032
-
4033
- .agent-node-implied.agent-node-level-0 .agent-node-header {
4034
- border-left-color: #6b46c1;
4035
- background: linear-gradient(135deg, rgba(107, 70, 193, 0.08) 0%, rgba(139, 92, 246, 0.08) 100%);
4036
- }
4037
-
4038
- .agent-node-implied .agent-node-name {
4039
- font-style: italic;
4040
- }
4041
-
4042
- .agent-node-implied .agent-node-icon {
4043
- opacity: 0.8;
4044
- }
4045
-
4046
- /* Tooltip styling for implied nodes */
4047
- .agent-node-implied[title]:hover::after {
4048
- content: attr(title);
4049
- position: absolute;
4050
- top: 100%;
4051
- left: 50px;
4052
- background: rgba(30, 41, 59, 0.95);
4053
- color: white;
4054
- padding: 6px 10px;
4055
- border-radius: 4px;
4056
- font-size: 12px;
4057
- white-space: nowrap;
4058
- z-index: 1000;
4059
- pointer-events: none;
4060
- margin-top: 4px;
4061
- }
4062
-
4063
- /* PM node styling */
4064
- .agent-node-level-0 .agent-node-header {
4065
- background: linear-gradient(135deg, #667eea15 0%, #764ba215 100%);
4066
- border-left-width: 4px;
4067
- border-left-color: #667eea;
4068
- font-weight: 600;
4069
- }
4070
-
4071
- .agent-node-level-0 .agent-node-name {
4072
- font-size: 15px;
4073
- color: #1a202c;
4074
- }
4075
-
4076
- /* Node details */
4077
- .agent-node-details {
4078
- margin: 4px 0 8px 44px;
4079
- padding: 8px 12px;
4080
- background: #f8fafc;
4081
- border-radius: 4px;
4082
- font-size: 12px;
4083
- color: #4a5568;
4084
- animation: slideDown 0.2s ease;
4085
- }
4086
-
4087
- .agent-delegation-context {
4088
- margin-bottom: 6px;
4089
- line-height: 1.4;
4090
- }
4091
-
4092
- .agent-delegation-context strong {
4093
- color: #2d3748;
4094
- font-weight: 600;
4095
- }
4096
-
4097
- .agent-timing {
4098
- display: flex;
4099
- align-items: center;
4100
- gap: 8px;
4101
- color: #718096;
4102
- font-size: 11px;
4103
- }
4104
-
4105
- .agent-duration {
4106
- color: #4299e1;
4107
- font-weight: 500;
4108
- }
4109
-
4110
- /* Children container */
4111
- .agent-node-children {
4112
- margin-top: 4px;
4113
- border-left: 1px dashed #cbd5e0;
4114
- margin-left: 20px;
4115
- padding-left: 4px;
4116
- animation: fadeIn 0.2s ease;
4117
- }
4118
-
4119
- /* Hierarchy control buttons */
4120
- .hierarchy-controls {
4121
- display: flex;
4122
- gap: 8px;
4123
- margin-left: auto;
4124
- }
4125
-
4126
- .hierarchy-btn {
4127
- padding: 6px 12px;
4128
- font-size: 12px;
4129
- border: 1px solid #cbd5e0;
4130
- background: white;
4131
- border-radius: 4px;
4132
- cursor: pointer;
4133
- transition: all 0.2s ease;
4134
- color: #4a5568;
4135
- font-weight: 500;
4136
- }
4137
-
4138
- .hierarchy-btn:hover {
4139
- background: #f7fafc;
4140
- border-color: #a0aec0;
4141
- transform: translateY(-1px);
4142
- }
4143
-
4144
- .hierarchy-btn:active {
4145
- transform: translateY(0);
4146
- }
4147
-
4148
- /* Animations */
4149
- @keyframes slideDown {
4150
- from {
4151
- opacity: 0;
4152
- transform: translateY(-10px);
4153
- }
4154
- to {
4155
- opacity: 1;
4156
- transform: translateY(0);
4157
- }
4158
- }
4159
-
4160
- @keyframes fadeIn {
4161
- from {
4162
- opacity: 0;
4163
- }
4164
- to {
4165
- opacity: 1;
4166
- }
4167
- }
4168
-
4169
- /* Responsive adjustments */
4170
- @media (max-width: 768px) {
4171
- .agent-node-level-1 {
4172
- margin-left: 16px;
4173
- }
4174
-
4175
- .agent-node-level-2 {
4176
- margin-left: 32px;
4177
- }
4178
-
4179
- .agent-node-level-3 {
4180
- margin-left: 48px;
4181
- }
4182
-
4183
- .agent-node-children {
4184
- margin-left: 12px;
4185
- }
4186
-
4187
- .agent-node-details {
4188
- margin-left: 28px;
4189
- }
4190
- }
4191
-
4192
-
4193
- /* Flat Agent View Styles */
4194
- .agent-events-flat {
4195
- display: flex;
4196
- flex-direction: column;
4197
- gap: 8px;
4198
- }
4199
-
4200
- .agent-event-item {
4201
- background: white;
4202
- border-radius: 6px;
4203
- padding: 12px;
4204
- margin-bottom: 4px;
4205
- border-left: 4px solid #4299e1;
4206
- cursor: pointer;
4207
- transition: all 0.2s;
4208
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
4209
- }
4210
-
4211
- .agent-event-item:hover {
4212
- box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
4213
- transform: translateY(-1px);
4214
- background: #f8fafc;
4215
- }
4216
-
4217
- .agent-event-header {
4218
- display: grid;
4219
- grid-template-columns: auto 1fr auto auto;
4220
- gap: 12px;
4221
- align-items: center;
4222
- }
4223
-
4224
- .agent-event-time {
4225
- font-family: "SF Mono", Monaco, "Cascadia Code", monospace;
4226
- font-size: 12px;
4227
- color: #718096;
4228
- background: #edf2f7;
4229
- padding: 4px 8px;
4230
- border-radius: 4px;
4231
- min-width: 80px;
4232
- text-align: center;
4233
- }
4234
-
4235
- .agent-event-agent {
4236
- font-weight: 600;
4237
- color: #2d3748;
4238
- display: flex;
4239
- align-items: center;
4240
- gap: 6px;
4241
- }
4242
-
4243
- .agent-event-action {
4244
- font-size: 13px;
4245
- color: #4a5568;
4246
- display: flex;
4247
- align-items: center;
4248
- gap: 4px;
4249
- }
4250
-
4251
- .agent-event-status {
4252
- font-size: 12px;
4253
- padding: 2px 6px;
4254
- border-radius: 3px;
4255
- font-weight: 500;
4256
- }
4257
-
4258
- .status-active {
4259
- background: #c6f6d5;
4260
- color: #22543d;
4261
- }
4262
-
4263
- .status-completed {
4264
- background: #bee3f8;
4265
- color: #2c5282;
4266
- }
4267
-
4268
- .status-error {
4269
- background: #fed7d7;
4270
- color: #742a2a;
4271
- }
4272
-
4273
- .status-pending {
4274
- background: #f3f4f6;
4275
- color: #4b5563;
4276
- }
4277
-
4278
- .agent-event-details {
4279
- margin-top: 8px;
4280
- padding-left: 16px;
4281
- font-size: 12px;
4282
- color: #4a5568;
4283
- font-family: "SF Mono", Monaco, "Cascadia Code", monospace;
4284
- background: #f7fafc;
4285
- padding: 8px 12px;
4286
- border-radius: 4px;
4287
- border-left: 3px solid #cbd5e0;
4288
- }
4289
-
4290
- /* Mobile responsive for flat view */
4291
- @media (max-width: 768px) {
4292
- .agent-event-header {
4293
- grid-template-columns: 1fr;
4294
- gap: 6px;
4295
- }
4296
-
4297
- .agent-event-time {
4298
- justify-self: start;
4299
- min-width: auto;
4300
- }
4301
-
4302
- .agent-event-agent {
4303
- font-size: 14px;
4304
- }
4305
-
4306
- .agent-event-action {
4307
- font-size: 12px;
4308
- }
4309
-
4310
- .agent-event-status {
4311
- justify-self: end;
4312
- }
4313
- }
4314
-
4315
- /* Unified Data Viewer Styles */
4316
- .unified-viewer-header {
4317
- display: flex;
4318
- justify-content: space-between;
4319
- align-items: center;
4320
- margin-bottom: 16px;
4321
- padding-bottom: 8px;
4322
- border-bottom: 2px solid #e2e8f0;
4323
- }
4324
-
4325
- .unified-viewer-header h6 {
4326
- margin: 0;
4327
- color: #2d3748;
4328
- font-size: 16px;
4329
- font-weight: 600;
4330
- display: flex;
4331
- align-items: center;
4332
- gap: 8px;
4333
- }
4334
-
4335
- .unified-viewer-timestamp {
4336
- font-family: "SF Mono", Monaco, "Cascadia Code", monospace;
4337
- font-size: 12px;
4338
- color: #718096;
4339
- background: #edf2f7;
4340
- padding: 4px 8px;
4341
- border-radius: 4px;
4342
- }
4343
-
4344
- .unified-viewer-status {
4345
- font-size: 12px;
4346
- padding: 4px 8px;
4347
- border-radius: 4px;
4348
- font-weight: 500;
4349
- }
4350
-
4351
- .unified-viewer-count {
4352
- font-size: 12px;
4353
- color: #4a5568;
4354
- background: #e2e8f0;
4355
- padding: 2px 6px;
4356
- border-radius: 3px;
4357
- }
4358
-
4359
- .unified-viewer-content {
4360
- color: #4a5568;
4361
- line-height: 1.5;
4362
- }
4363
-
4364
- .detail-row {
4365
- display: flex;
4366
- align-items: flex-start;
4367
- margin-bottom: 12px;
4368
- gap: 12px;
4369
- }
4370
-
4371
- .detail-label {
4372
- font-weight: 600;
4373
- color: #2d3748;
4374
- min-width: 120px;
4375
- flex-shrink: 0;
4376
- }
4377
-
4378
- .detail-value {
4379
- flex: 1;
4380
- word-break: break-word;
4381
- }
4382
-
4383
- .detail-section {
4384
- margin-top: 20px;
4385
- padding-top: 16px;
4386
- border-top: 1px solid #e2e8f0;
4387
- }
4388
-
4389
- .detail-section-title {
4390
- display: block;
4391
- font-weight: 600;
4392
- color: #2d3748;
4393
- margin-bottom: 12px;
4394
- font-size: 14px;
4395
- }
4396
-
4397
- /* Tool and parameter display */
4398
- .tools-list {
4399
- display: flex;
4400
- flex-direction: column;
4401
- gap: 8px;
4402
- }
4403
-
4404
- .tool-summary {
4405
- display: flex;
4406
- align-items: center;
4407
- gap: 8px;
4408
- padding: 8px 12px;
4409
- background: #f7fafc;
4410
- border-radius: 6px;
4411
- border-left: 3px solid #cbd5e0;
4412
- }
4413
-
4414
- .tool-icon {
4415
- font-size: 14px;
4416
- }
4417
-
4418
- .tool-name {
4419
- font-weight: 500;
4420
- flex: 1;
4421
- }
4422
-
4423
- .tool-status {
4424
- font-size: 11px;
4425
- padding: 2px 6px;
4426
- border-radius: 3px;
4427
- text-transform: uppercase;
4428
- font-weight: 600;
4429
- }
4430
-
4431
- .params-list {
4432
- display: flex;
4433
- flex-direction: column;
4434
- gap: 12px;
4435
- }
4436
-
4437
- .param-item {
4438
- background: #f7fafc;
4439
- padding: 12px;
4440
- border-radius: 6px;
4441
- border-left: 3px solid #cbd5e0;
4442
- }
4443
-
4444
- .param-key {
4445
- font-weight: 600;
4446
- color: #2d3748;
4447
- margin-bottom: 4px;
4448
- font-size: 13px;
4449
- }
4450
-
4451
- .param-value {
4452
- color: #4a5568;
4453
- }
4454
-
4455
- .param-text-short {
4456
- font-family: "SF Mono", Monaco, "Cascadia Code", monospace;
4457
- font-size: 12px;
4458
- background: #edf2f7;
4459
- padding: 2px 4px;
4460
- border-radius: 3px;
4461
- }
4462
-
4463
- .param-text {
4464
- font-family: "SF Mono", Monaco, "Cascadia Code", monospace;
4465
- font-size: 12px;
4466
- background: #edf2f7;
4467
- padding: 8px;
4468
- border-radius: 4px;
4469
- white-space: pre-wrap;
4470
- word-wrap: break-word;
4471
- max-height: 200px;
4472
- overflow-y: auto;
4473
- }
4474
-
4475
- .param-text-long {
4476
- font-family: "SF Mono", Monaco, "Cascadia Code", monospace;
4477
- font-size: 12px;
4478
- background: #edf2f7;
4479
- padding: 8px;
4480
- border-radius: 4px;
4481
- white-space: pre-wrap;
4482
- word-wrap: break-word;
4483
- max-height: 300px;
4484
- overflow-y: auto;
4485
- }
4486
-
4487
- .param-json {
4488
- font-family: "SF Mono", Monaco, "Cascadia Code", monospace;
4489
- font-size: 11px;
4490
- background: #1a202c;
4491
- color: #e2e8f0;
4492
- padding: 12px;
4493
- border-radius: 6px;
4494
- white-space: pre-wrap;
4495
- word-wrap: break-word;
4496
- max-height: 400px;
4497
- overflow-y: auto;
4498
- }
4499
-
4500
- .param-error {
4501
- color: #e53e3e;
4502
- font-style: italic;
4503
- }
4504
-
4505
- /* Todo display */
4506
- .todo-summary {
4507
- display: flex;
4508
- gap: 12px;
4509
- margin-bottom: 16px;
4510
- }
4511
-
4512
- .status-count {
4513
- padding: 4px 8px;
4514
- border-radius: 4px;
4515
- font-size: 12px;
4516
- font-weight: 500;
4517
- }
4518
-
4519
- .status-count.completed {
4520
- background: #c6f6d5;
4521
- color: #22543d;
4522
- }
4523
-
4524
- .status-count.in_progress {
4525
- background: #fbb6ce;
4526
- color: #702459;
4527
- }
4528
-
4529
- .status-count.pending {
4530
- background: #f3f4f6;
4531
- color: #4b5563;
4532
- }
4533
-
4534
- .todo-list {
4535
- display: flex;
4536
- flex-direction: column;
4537
- gap: 8px;
4538
- }
4539
-
4540
- .todo-item {
4541
- display: flex;
4542
- align-items: flex-start;
4543
- gap: 8px;
4544
- padding: 8px 12px;
4545
- background: #f7fafc;
4546
- border-radius: 6px;
4547
- border-left: 3px solid #cbd5e0;
4548
- }
4549
-
4550
- .todo-item.completed {
4551
- border-left-color: #38a169;
4552
- background: #f0fff4;
4553
- }
4554
-
4555
- .todo-item.in_progress {
4556
- border-left-color: #d53f8c;
4557
- background: #fef5e7;
4558
- }
4559
-
4560
- .todo-item.pending {
4561
- border-left-color: #9ca3af;
4562
- background: #f9fafb;
4563
- }
4564
-
4565
- .todo-icon {
4566
- font-size: 14px;
4567
- flex-shrink: 0;
4568
- margin-top: 1px;
4569
- }
4570
-
4571
- .todo-content {
4572
- flex: 1;
4573
- font-size: 13px;
4574
- line-height: 1.4;
4575
- }
4576
-
4577
- .todo-status {
4578
- font-size: 11px;
4579
- padding: 2px 6px;
4580
- border-radius: 3px;
4581
- text-transform: capitalize;
4582
- font-weight: 500;
4583
- flex-shrink: 0;
4584
- }
4585
-
4586
- /* Instruction display */
4587
- .instruction-text {
4588
- background: #f7fafc;
4589
- padding: 12px;
4590
- border-radius: 6px;
4591
- border-left: 3px solid #4299e1;
4592
- font-family: "SF Mono", Monaco, "Cascadia Code", monospace;
4593
- font-size: 12px;
4594
- white-space: pre-wrap;
4595
- word-wrap: break-word;
4596
- max-height: 300px;
4597
- overflow-y: auto;
4598
- }
4599
-
4600
- /* Operations display */
4601
- .operations-list {
4602
- display: flex;
4603
- flex-direction: column;
4604
- gap: 8px;
4605
- }
4606
-
4607
- .operation-item {
4608
- display: flex;
4609
- justify-content: space-between;
4610
- align-items: center;
4611
- padding: 8px 12px;
4612
- background: #f7fafc;
4613
- border-radius: 6px;
4614
- border-left: 3px solid #cbd5e0;
4615
- }
4616
-
4617
- .operation-type {
4618
- font-weight: 500;
4619
- color: #2d3748;
4620
- }
4621
-
4622
- .operation-timestamp {
4623
- font-family: "SF Mono", Monaco, "Cascadia Code", monospace;
4624
- font-size: 11px;
4625
- color: #718096;
4626
- }
4627
-
4628
- /* Hook details */
4629
- .prompt-text {
4630
- background: #f7fafc;
4631
- padding: 12px;
4632
- border-radius: 6px;
4633
- border-left: 3px solid #4299e1;
4634
- font-family: "SF Mono", Monaco, "Cascadia Code", monospace;
4635
- font-size: 12px;
4636
- white-space: pre-wrap;
4637
- word-wrap: break-word;
4638
- max-height: 200px;
4639
- overflow-y: auto;
4640
- }
4641
-
4642
- /* Event data JSON display */
4643
- .event-data-json {
4644
- font-family: "SF Mono", Monaco, "Cascadia Code", monospace;
4645
- font-size: 11px;
4646
- background: #1a202c;
4647
- color: #e2e8f0;
4648
- padding: 12px;
4649
- border-radius: 6px;
4650
- white-space: pre-wrap;
4651
- word-wrap: break-word;
4652
- max-height: 400px;
4653
- overflow-y: auto;
4654
- }
4655
-
4656
- /* Tool result display */
4657
- .tool-result {
4658
- font-family: "SF Mono", Monaco, "Cascadia Code", monospace;
4659
- font-size: 11px;
4660
- background: #1a202c;
4661
- color: #e2e8f0;
4662
- padding: 12px;
4663
- border-radius: 6px;
4664
- white-space: pre-wrap;
4665
- word-wrap: break-word;
4666
- max-height: 400px;
4667
- overflow-y: auto;
4668
- }
4669
-
4670
- /* No data states */
4671
- .no-todos {
4672
- text-align: center;
4673
- color: #718096;
4674
- font-style: italic;
4675
- padding: 20px;
4676
- }
4677
-
4678
- .no-params {
4679
- text-align: center;
4680
- color: #718096;
4681
- font-style: italic;
4682
- padding: 12px;
4683
- }
4684
-
4685
- /* Responsive adjustments */
4686
- @media (max-width: 768px) {
4687
- .unified-viewer-header {
4688
- flex-direction: column;
4689
- align-items: flex-start;
4690
- gap: 8px;
4691
- }
4692
-
4693
- .detail-row {
4694
- flex-direction: column;
4695
- gap: 4px;
4696
- }
4697
-
4698
- .detail-label {
4699
- min-width: auto;
4700
- }
4701
- }