@windagency/valora 2.0.2 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (412) hide show
  1. package/README.md +40 -33
  2. package/data/agents/registry.json +3 -0
  3. package/data/commands/create-backlog.md +20 -8
  4. package/data/prompts/07_documentation/generate-backlog-artifacts.md +197 -0
  5. package/dist/cleanup/coordinator.d.ts.map +1 -1
  6. package/dist/cleanup/coordinator.js +1 -1
  7. package/dist/cleanup/coordinator.js.map +1 -1
  8. package/dist/cli/autocomplete.d.ts.map +1 -1
  9. package/dist/cli/autocomplete.js +2 -2
  10. package/dist/cli/autocomplete.js.map +1 -1
  11. package/dist/cli/command-executor.d.ts +1 -1
  12. package/dist/cli/command-executor.d.ts.map +1 -1
  13. package/dist/cli/command-executor.js +23 -6
  14. package/dist/cli/command-executor.js.map +1 -1
  15. package/dist/cli/command-templates.d.ts.map +1 -1
  16. package/dist/cli/command-templates.js +1 -1
  17. package/dist/cli/command-templates.js.map +1 -1
  18. package/dist/cli/command-validator.d.ts.map +1 -1
  19. package/dist/cli/command-validator.js +1 -1
  20. package/dist/cli/command-validator.js.map +1 -1
  21. package/dist/cli/commands/dashboard.d.ts.map +1 -1
  22. package/dist/cli/commands/dashboard.js +3 -3
  23. package/dist/cli/commands/dashboard.js.map +1 -1
  24. package/dist/cli/commands/doctor.d.ts.map +1 -1
  25. package/dist/cli/commands/doctor.js.map +1 -1
  26. package/dist/cli/commands/explore.d.ts.map +1 -1
  27. package/dist/cli/commands/explore.js +127 -28
  28. package/dist/cli/commands/explore.js.map +1 -1
  29. package/dist/cli/commands/init.d.ts.map +1 -1
  30. package/dist/cli/commands/init.js +1 -1
  31. package/dist/cli/commands/init.js.map +1 -1
  32. package/dist/cli/execution-coordinator.d.ts +20 -0
  33. package/dist/cli/execution-coordinator.d.ts.map +1 -1
  34. package/dist/cli/execution-coordinator.js +99 -14
  35. package/dist/cli/execution-coordinator.js.map +1 -1
  36. package/dist/cli/first-run-setup.d.ts.map +1 -1
  37. package/dist/cli/first-run-setup.js +2 -2
  38. package/dist/cli/first-run-setup.js.map +1 -1
  39. package/dist/cli/index.js +1 -1
  40. package/dist/cli/index.js.map +1 -1
  41. package/dist/cli/session-manager.d.ts +6 -0
  42. package/dist/cli/session-manager.d.ts.map +1 -1
  43. package/dist/cli/session-manager.js +31 -0
  44. package/dist/cli/session-manager.js.map +1 -1
  45. package/dist/config/loader.d.ts.map +1 -1
  46. package/dist/config/loader.js.map +1 -1
  47. package/dist/di/container.d.ts.map +1 -1
  48. package/dist/di/container.js +4 -1
  49. package/dist/di/container.js.map +1 -1
  50. package/dist/executor/agent-loader.d.ts.map +1 -1
  51. package/dist/executor/agent-loader.js +1 -1
  52. package/dist/executor/agent-loader.js.map +1 -1
  53. package/dist/executor/command-discovery.d.ts.map +1 -1
  54. package/dist/executor/command-discovery.js +1 -1
  55. package/dist/executor/command-discovery.js.map +1 -1
  56. package/dist/executor/dry-run-cache.d.ts.map +1 -1
  57. package/dist/executor/dry-run-cache.js.map +1 -1
  58. package/dist/executor/dry-run-strategy.d.ts.map +1 -1
  59. package/dist/executor/dry-run-strategy.js.map +1 -1
  60. package/dist/executor/hook-execution.service.d.ts.map +1 -1
  61. package/dist/executor/hook-execution.service.js +2 -2
  62. package/dist/executor/hook-execution.service.js.map +1 -1
  63. package/dist/executor/input-pre-resolver.d.ts.map +1 -1
  64. package/dist/executor/input-pre-resolver.js.map +1 -1
  65. package/dist/executor/pipeline-events.d.ts +1 -1
  66. package/dist/executor/pipeline-events.d.ts.map +1 -1
  67. package/dist/executor/pipeline-events.js.map +1 -1
  68. package/dist/executor/pipeline.d.ts +5 -0
  69. package/dist/executor/pipeline.d.ts.map +1 -1
  70. package/dist/executor/pipeline.js +22 -1
  71. package/dist/executor/pipeline.js.map +1 -1
  72. package/dist/executor/project-guidance-loader.d.ts.map +1 -1
  73. package/dist/executor/project-guidance-loader.js +1 -1
  74. package/dist/executor/project-guidance-loader.js.map +1 -1
  75. package/dist/executor/prompt-loader.d.ts.map +1 -1
  76. package/dist/executor/prompt-loader.js +1 -1
  77. package/dist/executor/prompt-loader.js.map +1 -1
  78. package/dist/executor/stage-executor.d.ts +42 -3
  79. package/dist/executor/stage-executor.d.ts.map +1 -1
  80. package/dist/executor/stage-executor.js +237 -22
  81. package/dist/executor/stage-executor.js.map +1 -1
  82. package/dist/executor/stage-output-cache.d.ts.map +1 -1
  83. package/dist/executor/stage-output-cache.js +1 -1
  84. package/dist/executor/stage-output-cache.js.map +1 -1
  85. package/dist/executor/tool-execution.service.d.ts.map +1 -1
  86. package/dist/executor/tool-execution.service.js +7 -2
  87. package/dist/executor/tool-execution.service.js.map +1 -1
  88. package/dist/executor/tools/dry-run-simulator.service.d.ts.map +1 -1
  89. package/dist/executor/tools/dry-run-simulator.service.js.map +1 -1
  90. package/dist/executor/tools/search-tools.service.d.ts.map +1 -1
  91. package/dist/executor/tools/search-tools.service.js +1 -1
  92. package/dist/executor/tools/search-tools.service.js.map +1 -1
  93. package/dist/executor/tools/session-tools.service.d.ts.map +1 -1
  94. package/dist/executor/tools/session-tools.service.js.map +1 -1
  95. package/dist/exploration/container-manager.d.ts.map +1 -1
  96. package/dist/exploration/container-manager.js +1 -1
  97. package/dist/exploration/container-manager.js.map +1 -1
  98. package/dist/exploration/dashboard-controls.d.ts +1 -1
  99. package/dist/exploration/dashboard-controls.d.ts.map +1 -1
  100. package/dist/exploration/dashboard-controls.js +6 -1
  101. package/dist/exploration/dashboard-controls.js.map +1 -1
  102. package/dist/exploration/dashboard-metrics.d.ts +1 -1
  103. package/dist/exploration/dashboard-metrics.d.ts.map +1 -1
  104. package/dist/exploration/dashboard-metrics.js.map +1 -1
  105. package/dist/exploration/dashboard-ui.d.ts +1 -1
  106. package/dist/exploration/dashboard-ui.d.ts.map +1 -1
  107. package/dist/exploration/dashboard-ui.js +5 -0
  108. package/dist/exploration/dashboard-ui.js.map +1 -1
  109. package/dist/exploration/execution-modes.d.ts +3 -5
  110. package/dist/exploration/execution-modes.d.ts.map +1 -1
  111. package/dist/exploration/execution-modes.js +66 -50
  112. package/dist/exploration/execution-modes.js.map +1 -1
  113. package/dist/exploration/exploration-events.d.ts +1 -1
  114. package/dist/exploration/exploration-events.d.ts.map +1 -1
  115. package/dist/exploration/exploration-events.js.map +1 -1
  116. package/dist/exploration/exploration-state.d.ts +4 -0
  117. package/dist/exploration/exploration-state.d.ts.map +1 -1
  118. package/dist/exploration/exploration-state.js +18 -0
  119. package/dist/exploration/exploration-state.js.map +1 -1
  120. package/dist/exploration/merge-orchestrator.d.ts.map +1 -1
  121. package/dist/exploration/merge-orchestrator.js +1 -1
  122. package/dist/exploration/merge-orchestrator.js.map +1 -1
  123. package/dist/exploration/orchestrator.d.ts +1 -0
  124. package/dist/exploration/orchestrator.d.ts.map +1 -1
  125. package/dist/exploration/orchestrator.js +9 -4
  126. package/dist/exploration/orchestrator.js.map +1 -1
  127. package/dist/exploration/resource-allocator.d.ts +4 -0
  128. package/dist/exploration/resource-allocator.d.ts.map +1 -1
  129. package/dist/exploration/resource-allocator.js +27 -1
  130. package/dist/exploration/resource-allocator.js.map +1 -1
  131. package/dist/exploration/result-comparator.d.ts.map +1 -1
  132. package/dist/exploration/result-comparator.js +3 -2
  133. package/dist/exploration/result-comparator.js.map +1 -1
  134. package/dist/exploration/safety-validator.d.ts.map +1 -1
  135. package/dist/exploration/safety-validator.js +3 -3
  136. package/dist/exploration/safety-validator.js.map +1 -1
  137. package/dist/exploration/shared-volume-manager.d.ts.map +1 -1
  138. package/dist/exploration/shared-volume-manager.js +1 -1
  139. package/dist/exploration/shared-volume-manager.js.map +1 -1
  140. package/dist/exploration/worktree-manager-secure.d.ts.map +1 -1
  141. package/dist/exploration/worktree-manager-secure.js +6 -4
  142. package/dist/exploration/worktree-manager-secure.js.map +1 -1
  143. package/dist/exploration/worktree-manager.d.ts.map +1 -1
  144. package/dist/exploration/worktree-manager.js +4 -2
  145. package/dist/exploration/worktree-manager.js.map +1 -1
  146. package/dist/llm/providers/anthropic.provider.d.ts.map +1 -1
  147. package/dist/llm/providers/anthropic.provider.js +2 -2
  148. package/dist/llm/providers/anthropic.provider.js.map +1 -1
  149. package/dist/llm/providers/google.provider.d.ts.map +1 -1
  150. package/dist/llm/providers/google.provider.js.map +1 -1
  151. package/dist/llm/providers/openai.provider.d.ts.map +1 -1
  152. package/dist/llm/providers/openai.provider.js +2 -2
  153. package/dist/llm/providers/openai.provider.js.map +1 -1
  154. package/dist/mcp/mcp-approval-cache.service.d.ts.map +1 -1
  155. package/dist/mcp/mcp-approval-cache.service.js +1 -1
  156. package/dist/mcp/mcp-approval-cache.service.js.map +1 -1
  157. package/dist/mcp/mcp-audit-logger.service.d.ts +11 -1
  158. package/dist/mcp/mcp-audit-logger.service.d.ts.map +1 -1
  159. package/dist/mcp/mcp-audit-logger.service.js +145 -1
  160. package/dist/mcp/mcp-audit-logger.service.js.map +1 -1
  161. package/dist/mcp/mcp-client-manager.service.d.ts.map +1 -1
  162. package/dist/mcp/mcp-client-manager.service.js +1 -3
  163. package/dist/mcp/mcp-client-manager.service.js.map +1 -1
  164. package/dist/mcp/sampling-service.d.ts.map +1 -1
  165. package/dist/mcp/sampling-service.js.map +1 -1
  166. package/dist/mcp/server-manager.d.ts +1 -1
  167. package/dist/mcp/server-manager.d.ts.map +1 -1
  168. package/dist/mcp/server-manager.js +1 -4
  169. package/dist/mcp/server-manager.js.map +1 -1
  170. package/dist/mcp/server.d.ts.map +1 -1
  171. package/dist/mcp/server.js +1 -1
  172. package/dist/mcp/server.js.map +1 -1
  173. package/dist/mcp/tool-mapping.service.d.ts +1 -1
  174. package/dist/mcp/tool-mapping.service.d.ts.map +1 -1
  175. package/dist/mcp/tool-mapping.service.js +1 -1
  176. package/dist/mcp/tool-mapping.service.js.map +1 -1
  177. package/dist/mcp/tool-registry.d.ts.map +1 -1
  178. package/dist/mcp/tool-registry.js.map +1 -1
  179. package/dist/output/logger.d.ts.map +1 -1
  180. package/dist/output/logger.js +12 -6
  181. package/dist/output/logger.js.map +1 -1
  182. package/dist/output/pipeline-emitter.d.ts +9 -1
  183. package/dist/output/pipeline-emitter.d.ts.map +1 -1
  184. package/dist/output/pipeline-emitter.js +20 -0
  185. package/dist/output/pipeline-emitter.js.map +1 -1
  186. package/dist/output/retention-manager.d.ts.map +1 -1
  187. package/dist/output/retention-manager.js +1 -1
  188. package/dist/output/retention-manager.js.map +1 -1
  189. package/dist/output/welcome-banner.d.ts.map +1 -1
  190. package/dist/output/welcome-banner.js +1 -0
  191. package/dist/output/welcome-banner.js.map +1 -1
  192. package/dist/package.json +8 -1
  193. package/dist/services/agent-capability-matcher.service.d.ts +11 -2
  194. package/dist/services/agent-capability-matcher.service.d.ts.map +1 -1
  195. package/dist/services/agent-capability-matcher.service.js +71 -40
  196. package/dist/services/agent-capability-matcher.service.js.map +1 -1
  197. package/dist/services/agent-capability-registry.service.d.ts.map +1 -1
  198. package/dist/services/agent-capability-registry.service.js +1 -1
  199. package/dist/services/agent-capability-registry.service.js.map +1 -1
  200. package/dist/services/agent-selection-analytics.service.d.ts +8 -0
  201. package/dist/services/agent-selection-analytics.service.d.ts.map +1 -1
  202. package/dist/services/agent-selection-analytics.service.js +17 -0
  203. package/dist/services/agent-selection-analytics.service.js.map +1 -1
  204. package/dist/services/context-analyzer.service.d.ts.map +1 -1
  205. package/dist/services/context-analyzer.service.js +1 -1
  206. package/dist/services/context-analyzer.service.js.map +1 -1
  207. package/dist/services/document-path-resolver.service.d.ts.map +1 -1
  208. package/dist/services/document-path-resolver.service.js +1 -1
  209. package/dist/services/document-path-resolver.service.js.map +1 -1
  210. package/dist/services/document-writer.service.d.ts.map +1 -1
  211. package/dist/services/document-writer.service.js +1 -1
  212. package/dist/services/document-writer.service.js.map +1 -1
  213. package/dist/services/dynamic-agent-resolver.service.d.ts +8 -1
  214. package/dist/services/dynamic-agent-resolver.service.d.ts.map +1 -1
  215. package/dist/services/dynamic-agent-resolver.service.js +51 -28
  216. package/dist/services/dynamic-agent-resolver.service.js.map +1 -1
  217. package/dist/services/git-stash-protection.service.d.ts.map +1 -1
  218. package/dist/services/git-stash-protection.service.js +1 -1
  219. package/dist/services/git-stash-protection.service.js.map +1 -1
  220. package/dist/services/idempotency-store.service.d.ts.map +1 -1
  221. package/dist/services/idempotency-store.service.js +1 -1
  222. package/dist/services/idempotency-store.service.js.map +1 -1
  223. package/dist/services/index.d.ts +1 -1
  224. package/dist/services/index.d.ts.map +1 -1
  225. package/dist/services/index.js +1 -1
  226. package/dist/services/index.js.map +1 -1
  227. package/dist/services/task-classifier.service.d.ts +22 -3
  228. package/dist/services/task-classifier.service.d.ts.map +1 -1
  229. package/dist/services/task-classifier.service.js +83 -44
  230. package/dist/services/task-classifier.service.js.map +1 -1
  231. package/dist/session/retention-manager.d.ts.map +1 -1
  232. package/dist/session/retention-manager.js +2 -2
  233. package/dist/session/retention-manager.js.map +1 -1
  234. package/dist/session/session-exporter.d.ts.map +1 -1
  235. package/dist/session/session-exporter.js +1 -1
  236. package/dist/session/session-exporter.js.map +1 -1
  237. package/dist/session/store.d.ts.map +1 -1
  238. package/dist/session/store.js +4 -3
  239. package/dist/session/store.js.map +1 -1
  240. package/dist/session/worktree-stats-tracker.d.ts +34 -0
  241. package/dist/session/worktree-stats-tracker.d.ts.map +1 -0
  242. package/dist/session/worktree-stats-tracker.js +116 -0
  243. package/dist/session/worktree-stats-tracker.js.map +1 -0
  244. package/dist/types/agent.types.d.ts +12 -2
  245. package/dist/types/agent.types.d.ts.map +1 -1
  246. package/dist/types/command.types.d.ts +14 -1
  247. package/dist/types/command.types.d.ts.map +1 -1
  248. package/dist/types/command.types.js.map +1 -1
  249. package/dist/types/exploration.types.d.ts +2 -1
  250. package/dist/types/exploration.types.d.ts.map +1 -1
  251. package/dist/types/mcp-client.types.d.ts +76 -0
  252. package/dist/types/mcp-client.types.d.ts.map +1 -1
  253. package/dist/types/pipeline.types.d.ts +19 -1
  254. package/dist/types/pipeline.types.d.ts.map +1 -1
  255. package/dist/types/pipeline.types.js +2 -0
  256. package/dist/types/pipeline.types.js.map +1 -1
  257. package/dist/types/session.types.d.ts +19 -0
  258. package/dist/types/session.types.d.ts.map +1 -1
  259. package/dist/ui/dashboard/components/header.d.ts +6 -0
  260. package/dist/ui/dashboard/components/header.d.ts.map +1 -0
  261. package/dist/ui/dashboard/components/header.js +10 -0
  262. package/dist/ui/dashboard/components/header.js.map +1 -0
  263. package/dist/ui/dashboard/components/help-bar.d.ts +11 -0
  264. package/dist/ui/dashboard/components/help-bar.d.ts.map +1 -0
  265. package/dist/ui/dashboard/components/help-bar.js +10 -0
  266. package/dist/ui/dashboard/components/help-bar.js.map +1 -0
  267. package/dist/ui/dashboard/components/tab-bar.d.ts +9 -0
  268. package/dist/ui/dashboard/components/tab-bar.d.ts.map +1 -0
  269. package/dist/ui/dashboard/components/tab-bar.js +20 -0
  270. package/dist/ui/dashboard/components/tab-bar.js.map +1 -0
  271. package/dist/ui/dashboard/detail-panels/command-history-panel.d.ts +9 -0
  272. package/dist/ui/dashboard/detail-panels/command-history-panel.d.ts.map +1 -0
  273. package/dist/ui/dashboard/detail-panels/command-history-panel.js +13 -0
  274. package/dist/ui/dashboard/detail-panels/command-history-panel.js.map +1 -0
  275. package/dist/ui/dashboard/detail-panels/exploration-info-panel.d.ts +9 -0
  276. package/dist/ui/dashboard/detail-panels/exploration-info-panel.d.ts.map +1 -0
  277. package/dist/ui/dashboard/detail-panels/exploration-info-panel.js +39 -0
  278. package/dist/ui/dashboard/detail-panels/exploration-info-panel.js.map +1 -0
  279. package/dist/ui/dashboard/detail-panels/optimization-panel.d.ts +9 -0
  280. package/dist/ui/dashboard/detail-panels/optimization-panel.d.ts.map +1 -0
  281. package/dist/ui/dashboard/detail-panels/optimization-panel.js +53 -0
  282. package/dist/ui/dashboard/detail-panels/optimization-panel.js.map +1 -0
  283. package/dist/ui/dashboard/detail-panels/quality-panel.d.ts +9 -0
  284. package/dist/ui/dashboard/detail-panels/quality-panel.d.ts.map +1 -0
  285. package/dist/ui/dashboard/detail-panels/quality-panel.js +90 -0
  286. package/dist/ui/dashboard/detail-panels/quality-panel.js.map +1 -0
  287. package/dist/ui/dashboard/detail-panels/running-task-panel.d.ts +9 -0
  288. package/dist/ui/dashboard/detail-panels/running-task-panel.d.ts.map +1 -0
  289. package/dist/ui/dashboard/detail-panels/running-task-panel.js +11 -0
  290. package/dist/ui/dashboard/detail-panels/running-task-panel.js.map +1 -0
  291. package/dist/ui/dashboard/detail-panels/session-info-panel.d.ts +9 -0
  292. package/dist/ui/dashboard/detail-panels/session-info-panel.d.ts.map +1 -0
  293. package/dist/ui/dashboard/detail-panels/session-info-panel.js +12 -0
  294. package/dist/ui/dashboard/detail-panels/session-info-panel.js.map +1 -0
  295. package/dist/ui/dashboard/detail-panels/token-usage-panel.d.ts +9 -0
  296. package/dist/ui/dashboard/detail-panels/token-usage-panel.d.ts.map +1 -0
  297. package/dist/ui/dashboard/detail-panels/token-usage-panel.js +23 -0
  298. package/dist/ui/dashboard/detail-panels/token-usage-panel.js.map +1 -0
  299. package/dist/ui/dashboard/detail-panels/tool-calls-panel.d.ts +9 -0
  300. package/dist/ui/dashboard/detail-panels/tool-calls-panel.d.ts.map +1 -0
  301. package/dist/ui/dashboard/detail-panels/tool-calls-panel.js +12 -0
  302. package/dist/ui/dashboard/detail-panels/tool-calls-panel.js.map +1 -0
  303. package/dist/ui/dashboard/detail-panels/worktree-stats-panel.d.ts +9 -0
  304. package/dist/ui/dashboard/detail-panels/worktree-stats-panel.d.ts.map +1 -0
  305. package/dist/ui/dashboard/detail-panels/worktree-stats-panel.js +20 -0
  306. package/dist/ui/dashboard/detail-panels/worktree-stats-panel.js.map +1 -0
  307. package/dist/ui/dashboard/hooks/use-dashboard-data.d.ts +11 -0
  308. package/dist/ui/dashboard/hooks/use-dashboard-data.d.ts.map +1 -0
  309. package/dist/ui/dashboard/hooks/use-dashboard-data.js +105 -0
  310. package/dist/ui/dashboard/hooks/use-dashboard-data.js.map +1 -0
  311. package/dist/ui/dashboard/hooks/use-metrics-data.d.ts +66 -0
  312. package/dist/ui/dashboard/hooks/use-metrics-data.d.ts.map +1 -0
  313. package/dist/ui/dashboard/hooks/use-metrics-data.js +224 -0
  314. package/dist/ui/dashboard/hooks/use-metrics-data.js.map +1 -0
  315. package/dist/ui/dashboard/hooks/use-navigation.d.ts +25 -0
  316. package/dist/ui/dashboard/hooks/use-navigation.d.ts.map +1 -0
  317. package/dist/ui/dashboard/hooks/use-navigation.js +70 -0
  318. package/dist/ui/dashboard/hooks/use-navigation.js.map +1 -0
  319. package/dist/ui/dashboard/index.d.ts +34 -0
  320. package/dist/ui/dashboard/index.d.ts.map +1 -0
  321. package/dist/ui/dashboard/index.js +39 -0
  322. package/dist/ui/dashboard/index.js.map +1 -0
  323. package/dist/ui/dashboard/panels/active-sessions-panel.d.ts +10 -0
  324. package/dist/ui/dashboard/panels/active-sessions-panel.d.ts.map +1 -0
  325. package/dist/ui/dashboard/panels/active-sessions-panel.js +24 -0
  326. package/dist/ui/dashboard/panels/active-sessions-panel.js.map +1 -0
  327. package/dist/ui/dashboard/panels/background-tasks-panel.d.ts +9 -0
  328. package/dist/ui/dashboard/panels/background-tasks-panel.d.ts.map +1 -0
  329. package/dist/ui/dashboard/panels/background-tasks-panel.js +19 -0
  330. package/dist/ui/dashboard/panels/background-tasks-panel.js.map +1 -0
  331. package/dist/ui/dashboard/panels/metrics-summary-panel.d.ts +9 -0
  332. package/dist/ui/dashboard/panels/metrics-summary-panel.d.ts.map +1 -0
  333. package/dist/ui/dashboard/panels/metrics-summary-panel.js +11 -0
  334. package/dist/ui/dashboard/panels/metrics-summary-panel.js.map +1 -0
  335. package/dist/ui/dashboard/panels/recent-commands-panel.d.ts +9 -0
  336. package/dist/ui/dashboard/panels/recent-commands-panel.d.ts.map +1 -0
  337. package/dist/ui/dashboard/panels/recent-commands-panel.js +15 -0
  338. package/dist/ui/dashboard/panels/recent-commands-panel.js.map +1 -0
  339. package/dist/ui/dashboard/panels/server-metrics-panel.d.ts +9 -0
  340. package/dist/ui/dashboard/panels/server-metrics-panel.d.ts.map +1 -0
  341. package/dist/ui/dashboard/panels/server-metrics-panel.js +11 -0
  342. package/dist/ui/dashboard/panels/server-metrics-panel.js.map +1 -0
  343. package/dist/ui/dashboard/panels/system-health-panel.d.ts +9 -0
  344. package/dist/ui/dashboard/panels/system-health-panel.d.ts.map +1 -0
  345. package/dist/ui/dashboard/panels/system-health-panel.js +13 -0
  346. package/dist/ui/dashboard/panels/system-health-panel.js.map +1 -0
  347. package/dist/ui/dashboard/panels/worktree-diagram-panel.d.ts +9 -0
  348. package/dist/ui/dashboard/panels/worktree-diagram-panel.d.ts.map +1 -0
  349. package/dist/ui/dashboard/panels/worktree-diagram-panel.js +25 -0
  350. package/dist/ui/dashboard/panels/worktree-diagram-panel.js.map +1 -0
  351. package/dist/ui/dashboard/types.d.ts +65 -0
  352. package/dist/ui/dashboard/types.d.ts.map +1 -0
  353. package/dist/ui/dashboard/types.js +5 -0
  354. package/dist/ui/dashboard/types.js.map +1 -0
  355. package/dist/ui/dashboard/utils/format-helpers.d.ts +28 -0
  356. package/dist/ui/dashboard/utils/format-helpers.d.ts.map +1 -0
  357. package/dist/ui/dashboard/utils/format-helpers.js +86 -0
  358. package/dist/ui/dashboard/utils/format-helpers.js.map +1 -0
  359. package/dist/ui/dashboard/views/agent-analytics-view.d.ts +9 -0
  360. package/dist/ui/dashboard/views/agent-analytics-view.d.ts.map +1 -0
  361. package/dist/ui/dashboard/views/agent-analytics-view.js +35 -0
  362. package/dist/ui/dashboard/views/agent-analytics-view.js.map +1 -0
  363. package/dist/ui/dashboard/views/audit-log-view.d.ts +9 -0
  364. package/dist/ui/dashboard/views/audit-log-view.d.ts.map +1 -0
  365. package/dist/ui/dashboard/views/audit-log-view.js +14 -0
  366. package/dist/ui/dashboard/views/audit-log-view.js.map +1 -0
  367. package/dist/ui/dashboard/views/cache-stats-view.d.ts +9 -0
  368. package/dist/ui/dashboard/views/cache-stats-view.d.ts.map +1 -0
  369. package/dist/ui/dashboard/views/cache-stats-view.js +13 -0
  370. package/dist/ui/dashboard/views/cache-stats-view.js.map +1 -0
  371. package/dist/ui/dashboard/views/dashboard-view.d.ts +10 -0
  372. package/dist/ui/dashboard/views/dashboard-view.d.ts.map +1 -0
  373. package/dist/ui/dashboard/views/dashboard-view.js +17 -0
  374. package/dist/ui/dashboard/views/dashboard-view.js.map +1 -0
  375. package/dist/ui/dashboard/views/performance-view.d.ts +9 -0
  376. package/dist/ui/dashboard/views/performance-view.d.ts.map +1 -0
  377. package/dist/ui/dashboard/views/performance-view.js +19 -0
  378. package/dist/ui/dashboard/views/performance-view.js.map +1 -0
  379. package/dist/ui/dashboard/views/session-details-view.d.ts +13 -0
  380. package/dist/ui/dashboard/views/session-details-view.d.ts.map +1 -0
  381. package/dist/ui/dashboard/views/session-details-view.js +70 -0
  382. package/dist/ui/dashboard/views/session-details-view.js.map +1 -0
  383. package/dist/ui/dashboard-tui.d.ts +4 -29
  384. package/dist/ui/dashboard-tui.d.ts.map +1 -1
  385. package/dist/ui/dashboard-tui.js +111 -328
  386. package/dist/ui/dashboard-tui.js.map +1 -1
  387. package/dist/ui/tui-adapter.d.ts.map +1 -1
  388. package/dist/ui/tui-adapter.js +0 -1
  389. package/dist/ui/tui-adapter.js.map +1 -1
  390. package/dist/utils/base-retention-manager.d.ts.map +1 -1
  391. package/dist/utils/base-retention-manager.js +1 -1
  392. package/dist/utils/base-retention-manager.js.map +1 -1
  393. package/dist/utils/domain-keyword-registry.d.ts.map +1 -1
  394. package/dist/utils/domain-keyword-registry.js +112 -84
  395. package/dist/utils/domain-keyword-registry.js.map +1 -1
  396. package/dist/utils/file-lock.d.ts.map +1 -1
  397. package/dist/utils/file-lock.js +1 -1
  398. package/dist/utils/file-lock.js.map +1 -1
  399. package/dist/utils/heap-profiler.d.ts.map +1 -1
  400. package/dist/utils/heap-profiler.js +1 -1
  401. package/dist/utils/heap-profiler.js.map +1 -1
  402. package/dist/utils/performance-profiler.d.ts.map +1 -1
  403. package/dist/utils/performance-profiler.js +2 -2
  404. package/dist/utils/performance-profiler.js.map +1 -1
  405. package/dist/utils/resource-monitor.d.ts.map +1 -1
  406. package/dist/utils/resource-monitor.js +1 -1
  407. package/dist/utils/resource-monitor.js.map +1 -1
  408. package/dist/utils/safe-exec.d.ts.map +1 -1
  409. package/dist/utils/safe-exec.js.map +1 -1
  410. package/dist/utils/tracing.d.ts.map +1 -1
  411. package/dist/utils/tracing.js.map +1 -1
  412. package/package.json +8 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-helpers.d.ts","sourceRoot":"","sources":["../../../../src/ui/dashboard/utils/format-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAiBnD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAQnD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAI3E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAWlF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAW7D;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAIpF"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Dashboard formatting utilities
3
+ */
4
+ /**
5
+ * Format duration with hours, minutes, seconds
6
+ */
7
+ export function formatDurationMs(ms) {
8
+ const totalSeconds = Math.floor(ms / 1000);
9
+ const hours = Math.floor(totalSeconds / 3600);
10
+ const minutes = Math.floor((totalSeconds % 3600) / 60);
11
+ const seconds = totalSeconds % 60;
12
+ const parts = [];
13
+ if (hours > 0) {
14
+ parts.push(`${hours}h`);
15
+ }
16
+ if (minutes > 0 || hours > 0) {
17
+ parts.push(`${minutes}m`);
18
+ }
19
+ parts.push(`${seconds}s`);
20
+ return parts.join(' ');
21
+ }
22
+ /**
23
+ * Format age (relative time)
24
+ */
25
+ export function formatAge(timestamp) {
26
+ const diff = Date.now() - new Date(timestamp).getTime();
27
+ const seconds = Math.floor(diff / 1000);
28
+ if (seconds < 60)
29
+ return 'just now';
30
+ if (seconds < 3600)
31
+ return `${Math.floor(seconds / 60)}m ago`;
32
+ if (seconds < 86400)
33
+ return `${Math.floor(seconds / 3600)}h ago`;
34
+ return `${Math.floor(seconds / 86400)}d ago`;
35
+ }
36
+ /**
37
+ * Get context usage color based on percentage
38
+ */
39
+ export function getContextColor(percent) {
40
+ if (percent > 80)
41
+ return 'red';
42
+ if (percent > 50)
43
+ return 'yellow';
44
+ return 'green';
45
+ }
46
+ /**
47
+ * Get status color for session status
48
+ */
49
+ export function getStatusColor(status) {
50
+ switch (status) {
51
+ case 'active':
52
+ return 'green';
53
+ case 'failed':
54
+ return 'red';
55
+ case 'paused':
56
+ return 'yellow';
57
+ default:
58
+ return 'gray';
59
+ }
60
+ }
61
+ /**
62
+ * Get worktree status icon
63
+ */
64
+ export function getWorktreeStatusIcon(status) {
65
+ switch (status) {
66
+ case 'completed':
67
+ return '\u2713';
68
+ case 'failed':
69
+ return '\u2717';
70
+ case 'running':
71
+ return '\u25b6';
72
+ default:
73
+ return '\u25cb';
74
+ }
75
+ }
76
+ /**
77
+ * Get exploration status color
78
+ */
79
+ export function getExplorationStatusColor(status) {
80
+ if (status === 'running')
81
+ return 'yellow';
82
+ if (status === 'completed')
83
+ return 'green';
84
+ return 'red';
85
+ }
86
+ //# sourceMappingURL=format-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-helpers.js","sourceRoot":"","sources":["../../../../src/ui/dashboard/utils/format-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAU;IAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,YAAY,GAAG,EAAE,CAAC;IAElC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC;IAC3B,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC;IAE1B,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,SAAiB;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;IACxD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IAExC,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,UAAU,CAAC;IACpC,IAAI,OAAO,GAAG,IAAI;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;IAC9D,IAAI,OAAO,GAAG,KAAK;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IACjE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,OAAe;IAC9C,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,KAAK,CAAC;IAC/B,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,QAAQ,CAAC;IAClC,OAAO,OAAO,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAc;IAC5C,QAAQ,MAAM,EAAE,CAAC;QAChB,KAAK,QAAQ;YACZ,OAAO,OAAO,CAAC;QAChB,KAAK,QAAQ;YACZ,OAAO,KAAK,CAAC;QACd,KAAK,QAAQ;YACZ,OAAO,QAAQ,CAAC;QACjB;YACC,OAAO,MAAM,CAAC;IAChB,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAe;IACpD,QAAQ,MAAM,EAAE,CAAC;QAChB,KAAK,WAAW;YACf,OAAO,QAAQ,CAAC;QACjB,KAAK,QAAQ;YACZ,OAAO,QAAQ,CAAC;QACjB,KAAK,SAAS;YACb,OAAO,QAAQ,CAAC;QACjB;YACC,OAAO,QAAQ,CAAC;IAClB,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAAc;IACvD,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC1C,IAAI,MAAM,KAAK,WAAW;QAAE,OAAO,OAAO,CAAC;IAC3C,OAAO,KAAK,CAAC;AACd,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Agent Analytics View - Agent selection data distributions and success metrics
3
+ */
4
+ import React from 'react';
5
+ import type { AgentAnalyticsData } from '../../dashboard/hooks/use-metrics-data.js';
6
+ export declare function AgentAnalyticsView({ data }: {
7
+ data: AgentAnalyticsData;
8
+ }): React.JSX.Element;
9
+ //# sourceMappingURL=agent-analytics-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-analytics-view.d.ts","sourceRoot":"","sources":["../../../../src/ui/dashboard/views/agent-analytics-view.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAS9E,wBAAgB,kBAAkB,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA4F5F"}
@@ -0,0 +1,35 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { getTUIAdapter } from '../../tui-adapter.interface.js';
3
+ const tui = getTUIAdapter();
4
+ // eslint-disable-next-line @typescript-eslint/naming-convention -- Box and Text are React components which require PascalCase
5
+ const { Box, Text } = tui;
6
+ // eslint-disable-next-line @typescript-eslint/naming-convention -- React components must use PascalCase
7
+ export function AgentAnalyticsView({ data }) {
8
+ if (!data.metrics || data.metrics.totalSelections === 0) {
9
+ return (_jsxs(Box, { borderColor: "white", borderStyle: "round", flexDirection: "column", paddingX: 1, children: [_jsx(Text, { bold: true, color: "cyan", children: "Agent Analytics" }), _jsx(Text, { dimColor: true, children: "No agent selection events recorded yet." })] }));
10
+ }
11
+ const { metrics, successMetrics } = data;
12
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(SummaryHeader, { metrics: metrics }), _jsxs(Box, { flexGrow: 1, marginTop: 1, children: [_jsxs(Box, { flexDirection: "column", width: "50%", children: [_jsxs(Box, { borderColor: "green", borderStyle: "round", flexDirection: "column", paddingX: 1, children: [_jsx(Text, { bold: true, color: "green", children: "Agent Distribution" }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: renderDistribution(metrics.agentDistribution, 'green') })] }), Object.keys(metrics.commandDistribution).length > 0 && (_jsxs(Box, { borderColor: "yellow", borderStyle: "round", flexDirection: "column", marginTop: 1, paddingX: 1, children: [_jsx(Text, { bold: true, color: "yellow", children: "Command Distribution" }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: renderDistribution(metrics.commandDistribution, 'yellow') })] }))] }), _jsxs(Box, { flexDirection: "column", marginLeft: 1, width: "50%", children: [Object.keys(metrics.reasonDistribution).length > 0 && (_jsxs(Box, { borderColor: "magenta", borderStyle: "round", flexDirection: "column", paddingX: 1, children: [_jsx(Text, { bold: true, color: "magenta", children: "Selection Reasons" }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: renderDistribution(metrics.reasonDistribution, 'magenta') })] })), successMetrics && (_jsxs(Box, { borderColor: "cyan", borderStyle: "round", flexDirection: "column", marginTop: 1, paddingX: 1, children: [_jsx(Text, { bold: true, color: "cyan", children: "Success Metrics (7d)" }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: "Accuracy: " }), _jsxs(Text, { bold: true, color: rateColor(successMetrics.accuracy, 0.85), children: [(successMetrics.accuracy * 100).toFixed(1), "%"] })] }), _jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: "Completion: " }), _jsxs(Text, { bold: true, color: rateColor(successMetrics.completionRate, 0.85), children: [(successMetrics.completionRate * 100).toFixed(1), "%"] })] }), _jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: "Satisfaction: " }), _jsxs(Text, { bold: true, color: rateColor(successMetrics.userSatisfaction, 0.8), children: [(successMetrics.userSatisfaction * 100).toFixed(1), "%"] })] })] }), successMetrics.insights.length > 0 && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { dimColor: true, children: "Insights:" }), successMetrics.insights.map((insight, index) => (_jsx(Text, { children: insight }, index)))] }))] }))] })] })] }));
13
+ }
14
+ function badRateColor(value, threshold) {
15
+ return value > threshold ? 'red' : 'green';
16
+ }
17
+ function rateColor(value, threshold) {
18
+ return value >= threshold ? 'green' : 'yellow';
19
+ }
20
+ function renderDistribution(distribution, color, maxBars = 8) {
21
+ const entries = Object.entries(distribution)
22
+ .sort(([, a], [, b]) => b - a)
23
+ .slice(0, maxBars);
24
+ const maxValue = entries.length > 0 ? Math.max(...entries.map(([, v]) => v)) : 1;
25
+ const barWidth = 20;
26
+ return entries.map(([name, value]) => {
27
+ const filled = Math.max(1, Math.floor((value / maxValue) * barWidth));
28
+ return (_jsxs(Box, { children: [_jsx(Text, { children: (name.length > 15 ? name.substring(0, 12) + '...' : name).padEnd(15) }), _jsx(Text, { color: color, children: '█'.repeat(filled) }), _jsx(Text, { dimColor: true, children: '░'.repeat(barWidth - filled) }), _jsxs(Text, { children: [" ", value] })] }, name));
29
+ });
30
+ }
31
+ // eslint-disable-next-line @typescript-eslint/naming-convention -- React components must use PascalCase
32
+ function SummaryHeader({ metrics }) {
33
+ return (_jsxs(Box, { borderColor: "cyan", borderStyle: "round", flexDirection: "column", paddingX: 1, children: [_jsx(Text, { bold: true, color: "cyan", children: "Agent Selection Summary (24h)" }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { dimColor: true, children: "Selections: " }), _jsx(Text, { bold: true, children: metrics.totalSelections }), _jsx(Text, { dimColor: true, children: " Avg Confidence: " }), _jsxs(Text, { bold: true, color: rateColor(metrics.averageConfidence, 0.85), children: [(metrics.averageConfidence * 100).toFixed(1), "%"] }), _jsx(Text, { dimColor: true, children: " Fallback: " }), _jsxs(Text, { bold: true, color: badRateColor(metrics.fallbackRate, 0.15), children: [(metrics.fallbackRate * 100).toFixed(1), "%"] }), _jsx(Text, { dimColor: true, children: " Override: " }), _jsxs(Text, { bold: true, color: badRateColor(metrics.manualOverrideRate, 0.2), children: [(metrics.manualOverrideRate * 100).toFixed(1), "%"] })] })] }));
34
+ }
35
+ //# sourceMappingURL=agent-analytics-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-analytics-view.js","sourceRoot":"","sources":["../../../../src/ui/dashboard/views/agent-analytics-view.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Audit Log View - MCP audit log viewer
3
+ */
4
+ import React from 'react';
5
+ import type { AuditData } from '../../dashboard/hooks/use-metrics-data.js';
6
+ export declare function AuditLogView({ data }: {
7
+ data: AuditData;
8
+ }): React.JSX.Element;
9
+ //# sourceMappingURL=audit-log-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-log-view.d.ts","sourceRoot":"","sources":["../../../../src/ui/dashboard/views/audit-log-view.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAUrE,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA+E7E"}
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { formatAge } from '../../dashboard/utils/format-helpers.js';
3
+ import { getTUIAdapter } from '../../tui-adapter.interface.js';
4
+ const tui = getTUIAdapter();
5
+ // eslint-disable-next-line @typescript-eslint/naming-convention -- Box and Text are React components which require PascalCase
6
+ const { Box, Text } = tui;
7
+ // eslint-disable-next-line @typescript-eslint/naming-convention -- React components must use PascalCase
8
+ export function AuditLogView({ data }) {
9
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { borderColor: "cyan", borderStyle: "round", flexDirection: "column", paddingX: 1, children: [_jsx(Text, { bold: true, color: "cyan", children: "MCP Audit Log" }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { dimColor: true, children: "Total Entries: " }), _jsx(Text, { bold: true, children: data.stats.totalEntries }), _jsx(Text, { dimColor: true, children: " Success Rate: " }), _jsxs(Text, { bold: true, color: data.stats.successRate >= 0.9 ? 'green' : 'yellow', children: [(data.stats.successRate * 100).toFixed(1), "%"] })] }), Object.keys(data.stats.byOperation).length > 0 && (_jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: "By Operation: " }), Object.entries(data.stats.byOperation).map(([op, count], index) => (_jsxs(Text, { children: [index > 0 ? ', ' : '', _jsx(Text, { color: "cyan", children: op }), ": ", count] }, op)))] })), Object.keys(data.stats.byServer).length > 0 && (_jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: "By Server: " }), Object.entries(data.stats.byServer).map(([server, count], index) => (_jsxs(Text, { children: [index > 0 ? ', ' : '', _jsx(Text, { color: "yellow", children: server }), ": ", count] }, server)))] }))] }), _jsxs(Box, { borderColor: "white", borderStyle: "round", flexDirection: "column", marginTop: 1, paddingX: 1, children: [_jsxs(Text, { bold: true, children: ["Recent Entries (", data.entries.length, ")"] }), data.entries.length === 0 ? (_jsx(Text, { dimColor: true, children: "No audit entries recorded" })) : (_jsx(Box, { flexDirection: "column", marginTop: 1, children: data.entries
10
+ .slice(-20)
11
+ .reverse()
12
+ .map((entry, index) => (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsx(Text, { bold: true, color: entry.success ? 'green' : 'red', children: entry.success ? '✓' : '✗' }), _jsxs(Text, { color: "cyan", children: [" ", entry.operation.padEnd(12)] }), _jsxs(Text, { color: "yellow", children: [' ', (entry.serverId.length > 15 ? entry.serverId.substring(0, 12) + '...' : entry.serverId).padEnd(15)] }), entry.toolName && _jsxs(Text, { children: [" ", entry.toolName] }), entry.duration_ms != null && _jsxs(Text, { dimColor: true, children: [" ", entry.duration_ms, "ms"] }), _jsxs(Text, { dimColor: true, children: [" ", formatAge(entry.timestamp.toISOString())] })] }), entry.error && (_jsx(Box, { children: _jsxs(Text, { color: "red", children: [" Error: ", entry.error] }) }))] }, index))) }))] })] }));
13
+ }
14
+ //# sourceMappingURL=audit-log-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-log-view.js","sourceRoot":"","sources":["../../../../src/ui/dashboard/views/audit-log-view.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Cache Stats View - Dry-run + stage output cache stats
3
+ */
4
+ import React from 'react';
5
+ import type { CacheData } from '../../dashboard/hooks/use-metrics-data.js';
6
+ export declare function CacheStatsView({ data }: {
7
+ data: CacheData;
8
+ }): React.JSX.Element;
9
+ //# sourceMappingURL=cache-stats-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-stats-view.d.ts","sourceRoot":"","sources":["../../../../src/ui/dashboard/views/cache-stats-view.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAUrE,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAsE/E"}
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { formatDurationMs } from '../../dashboard/utils/format-helpers.js';
3
+ import { getTUIAdapter } from '../../tui-adapter.interface.js';
4
+ const tui = getTUIAdapter();
5
+ // eslint-disable-next-line @typescript-eslint/naming-convention -- Box and Text are React components which require PascalCase
6
+ const { Box, Text } = tui;
7
+ // eslint-disable-next-line @typescript-eslint/naming-convention -- React components must use PascalCase
8
+ export function CacheStatsView({ data }) {
9
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { borderColor: "green", borderStyle: "round", flexDirection: "column", paddingX: 1, children: [_jsx(Text, { bold: true, color: "green", children: "Dry Run Cache" }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { dimColor: true, children: "Entries: " }), _jsx(Text, { bold: true, color: "cyan", children: data.dryRunCache.size }), _jsx(Text, { dimColor: true, children: " / 50 max" })] }), data.dryRunCache.entries.length > 0 ? (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [data.dryRunCache.entries.slice(0, 10).map((entry, index) => (_jsxs(Box, { children: [_jsx(Text, { color: "cyan", children: (entry.commandName.length > 25
10
+ ? entry.commandName.substring(0, 22) + '...'
11
+ : entry.commandName).padEnd(25) }), _jsxs(Text, { dimColor: true, children: [" age: ", formatDurationMs(entry.ageMs)] })] }, index))), data.dryRunCache.entries.length > 10 && (_jsxs(Text, { dimColor: true, children: ["...and ", data.dryRunCache.entries.length - 10, " more"] }))] })) : (_jsx(Text, { dimColor: true, children: "No cached entries" }))] }), _jsxs(Box, { borderColor: "yellow", borderStyle: "round", flexDirection: "column", marginTop: 1, paddingX: 1, children: [_jsx(Text, { bold: true, color: "yellow", children: "Stage Output Cache" }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { dimColor: true, children: "Entries: " }), _jsx(Text, { bold: true, color: "cyan", children: data.stageOutputCache.size }), _jsx(Text, { dimColor: true, children: " / 100 max" })] }), data.stageOutputCache.entries.length > 0 ? (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [data.stageOutputCache.entries.slice(0, 10).map((entry, index) => (_jsxs(Box, { children: [_jsx(Text, { color: "yellow", children: (entry.stageId.length > 20 ? entry.stageId.substring(0, 17) + '...' : entry.stageId).padEnd(20) }), _jsxs(Text, { dimColor: true, children: [" age: ", formatDurationMs(entry.ageMs)] }), entry.savedTime_ms > 0 && _jsxs(Text, { color: "green", children: [" saved: ", formatDurationMs(entry.savedTime_ms)] })] }, index))), data.stageOutputCache.entries.length > 10 && (_jsxs(Text, { dimColor: true, children: ["...and ", data.stageOutputCache.entries.length - 10, " more"] }))] })) : (_jsx(Text, { dimColor: true, children: "No cached entries" }))] })] }));
12
+ }
13
+ //# sourceMappingURL=cache-stats-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-stats-view.js","sourceRoot":"","sources":["../../../../src/ui/dashboard/views/cache-stats-view.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Dashboard View - Main overview two-column layout
3
+ */
4
+ import React from 'react';
5
+ import type { DashboardData } from '../../dashboard/types.js';
6
+ export declare function DashboardView({ data, selectedIndex }: {
7
+ data: DashboardData;
8
+ selectedIndex: number;
9
+ }): React.JSX.Element;
10
+ //# sourceMappingURL=dashboard-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard-view.d.ts","sourceRoot":"","sources":["../../../../src/ui/dashboard/views/dashboard-view.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAgBxD,wBAAgB,aAAa,CAAC,EAC7B,IAAI,EACJ,aAAa,EACb,EAAE;IACF,IAAI,EAAE,aAAa,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACtB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAgCpB"}
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ActiveSessionsPanel } from '../../dashboard/panels/active-sessions-panel.js';
3
+ import { BackgroundTasksPanel } from '../../dashboard/panels/background-tasks-panel.js';
4
+ import { MetricsSummaryPanel } from '../../dashboard/panels/metrics-summary-panel.js';
5
+ import { RecentCommandsPanel } from '../../dashboard/panels/recent-commands-panel.js';
6
+ import { MCPMetricsPanel } from '../../dashboard/panels/server-metrics-panel.js';
7
+ import { SystemHealthPanel } from '../../dashboard/panels/system-health-panel.js';
8
+ import { WorktreeDiagramPanel } from '../../dashboard/panels/worktree-diagram-panel.js';
9
+ import { getTUIAdapter } from '../../tui-adapter.interface.js';
10
+ const tui = getTUIAdapter();
11
+ // eslint-disable-next-line @typescript-eslint/naming-convention -- Box and Text are React components which require PascalCase
12
+ const { Box } = tui;
13
+ // eslint-disable-next-line @typescript-eslint/naming-convention -- React components must use PascalCase
14
+ export function DashboardView({ data, selectedIndex }) {
15
+ return (_jsxs(Box, { flexDirection: "column", children: [data.metricsSummary && (_jsx(Box, { marginBottom: 1, children: _jsx(MetricsSummaryPanel, { summary: data.metricsSummary }) })), _jsxs(Box, { flexGrow: 1, children: [_jsxs(Box, { flexDirection: "column", width: "65%", children: [_jsx(ActiveSessionsPanel, { selectedIndex: selectedIndex, sessions: data.activeSessions }), _jsx(Box, { marginTop: 1, children: _jsx(BackgroundTasksPanel, { tasks: data.backgroundTasks }) })] }), _jsxs(Box, { flexDirection: "column", marginLeft: 1, width: "35%", children: [_jsx(SystemHealthPanel, { health: data.systemHealth }), _jsx(Box, { marginTop: 1, children: _jsx(WorktreeDiagramPanel, { worktrees: data.worktrees }) }), data.mcpMetrics && (_jsx(Box, { marginTop: 1, children: _jsx(MCPMetricsPanel, { metrics: data.mcpMetrics }) })), _jsx(Box, { marginTop: 1, children: _jsx(RecentCommandsPanel, { commands: data.recentCommands }) })] })] })] }));
16
+ }
17
+ //# sourceMappingURL=dashboard-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard-view.js","sourceRoot":"","sources":["../../../../src/ui/dashboard/views/dashboard-view.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;AAC5B,8HAA8H;AAC9H,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;AAEpB,wGAAwG;AACxG,MAAM,UAAU,aAAa,CAAC,EAC7B,IAAI,EACJ,aAAa,EAIb;IACA,OAAO,CACN,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,IAAI,CAAC,cAAc,IAAI,CACvB,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YACnB,KAAC,mBAAmB,IAAC,OAAO,EAAE,IAAI,CAAC,cAAc,GAAI,GAChD,CACN,EACD,MAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,aACf,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,KAAK,EAAC,KAAK,aACtC,KAAC,mBAAmB,IAAC,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,GAAI,EACpF,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YAChB,KAAC,oBAAoB,IAAC,KAAK,EAAE,IAAI,CAAC,eAAe,GAAI,GAChD,IACD,EACN,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAC,KAAK,aACrD,KAAC,iBAAiB,IAAC,MAAM,EAAE,IAAI,CAAC,YAAY,GAAI,EAChD,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YAChB,KAAC,oBAAoB,IAAC,SAAS,EAAE,IAAI,CAAC,SAAS,GAAI,GAC9C,EACL,IAAI,CAAC,UAAU,IAAI,CACnB,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YAChB,KAAC,eAAe,IAAC,OAAO,EAAE,IAAI,CAAC,UAAU,GAAI,GACxC,CACN,EACD,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YAChB,KAAC,mBAAmB,IAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,GAAI,GACjD,IACD,IACD,IACD,CACN,CAAC;AACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Performance View - MetricsCollector data: counters, gauges, histograms
3
+ */
4
+ import React from 'react';
5
+ import type { PerformanceData } from '../../dashboard/hooks/use-metrics-data.js';
6
+ export declare function PerformanceView({ data }: {
7
+ data: PerformanceData;
8
+ }): React.JSX.Element;
9
+ //# sourceMappingURL=performance-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"performance-view.d.ts","sourceRoot":"","sources":["../../../../src/ui/dashboard/views/performance-view.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAU3E,wBAAgB,eAAe,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAwHtF"}
@@ -0,0 +1,19 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ResourceGauge, Sparkline } from '../../../exploration/dashboard-metrics.js';
3
+ import { getTUIAdapter } from '../../tui-adapter.interface.js';
4
+ const tui = getTUIAdapter();
5
+ // eslint-disable-next-line @typescript-eslint/naming-convention -- Box and Text are React components which require PascalCase
6
+ const { Box, Text } = tui;
7
+ // eslint-disable-next-line @typescript-eslint/naming-convention -- React components must use PascalCase
8
+ export function PerformanceView({ data }) {
9
+ const hasData = data.counters.length > 0 || data.gauges.length > 0 || data.histograms.length > 0;
10
+ if (!hasData) {
11
+ return (_jsxs(Box, { borderColor: "white", borderStyle: "round", flexDirection: "column", paddingX: 1, children: [_jsx(Text, { bold: true, color: "cyan", children: "Performance Metrics" }), _jsx(Text, { dimColor: true, children: "No metrics collected yet. Run some commands to generate metrics." })] }));
12
+ }
13
+ return (_jsx(Box, { flexDirection: "column", children: _jsxs(Box, { flexGrow: 1, children: [_jsxs(Box, { flexDirection: "column", width: "50%", children: [data.counters.length > 0 && (_jsxs(Box, { borderColor: "green", borderStyle: "round", flexDirection: "column", paddingX: 1, children: [_jsxs(Text, { bold: true, color: "green", children: ["Counters (", data.counters.length, ")"] }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [data.counters.slice(0, 15).map((counter, index) => (_jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: counter.name.padEnd(30) }), _jsx(Text, { bold: true, color: "cyan", children: counter.value })] }, index))), data.counters.length > 15 && _jsxs(Text, { dimColor: true, children: ["...and ", data.counters.length - 15, " more"] })] })] })), data.histograms.length > 0 && (_jsxs(Box, { borderColor: "yellow", borderStyle: "round", flexDirection: "column", marginTop: 1, paddingX: 1, children: [_jsxs(Text, { bold: true, color: "yellow", children: ["Histograms (", data.histograms.length, ")"] }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: data.histograms.slice(0, 5).map((histogram, index) => {
14
+ const bucketValues = Object.values(histogram.buckets);
15
+ const avg = histogram.count > 0 ? histogram.sum / histogram.count : 0;
16
+ return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsxs(Box, { children: [_jsx(Text, { bold: true, children: histogram.name }), _jsxs(Text, { dimColor: true, children: [' ', "(count: ", histogram.count, ", avg: ", avg.toFixed(1), ")"] })] }), bucketValues.length > 0 && (_jsx(Sparkline, { color: "yellow", data: bucketValues, height: 2, width: 25 }))] }, index));
17
+ }) })] }))] }), _jsxs(Box, { flexDirection: "column", marginLeft: 1, width: "50%", children: [data.gauges.length > 0 && (_jsxs(Box, { borderColor: "cyan", borderStyle: "round", flexDirection: "column", paddingX: 1, children: [_jsxs(Text, { bold: true, color: "cyan", children: ["Gauges (", data.gauges.length, ")"] }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [data.gauges.slice(0, 10).map((gauge, index) => (_jsx(Box, { marginBottom: index < data.gauges.length - 1 ? 0 : 0, children: _jsx(ResourceGauge, { label: gauge.name.length > 20 ? gauge.name.substring(0, 17) + '...' : gauge.name, max: Math.max(gauge.value * 1.5, 100), unit: "", value: gauge.value, width: 20 }) }, index))), data.gauges.length > 10 && _jsxs(Text, { dimColor: true, children: ["...and ", data.gauges.length - 10, " more"] })] })] })), data.snapshot && (_jsxs(Box, { borderColor: "white", borderStyle: "round", flexDirection: "column", marginTop: 1, paddingX: 1, children: [_jsx(Text, { bold: true, color: "white", children: "Snapshot Info" }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: "Uptime: " }), _jsxs(Text, { children: [(data.snapshot.uptime / 1000).toFixed(0), "s"] })] }), _jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: "Collection Time: " }), _jsxs(Text, { children: [data.snapshot.collectionDuration, "ms"] })] }), _jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: "Counters: " }), _jsx(Text, { children: data.snapshot.counters.length }), _jsx(Text, { dimColor: true, children: " Gauges: " }), _jsx(Text, { children: data.snapshot.gauges.length }), _jsx(Text, { dimColor: true, children: " Histograms: " }), _jsx(Text, { children: data.snapshot.histograms.length })] })] })] }))] })] }) }));
18
+ }
19
+ //# sourceMappingURL=performance-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"performance-view.js","sourceRoot":"","sources":["../../../../src/ui/dashboard/views/performance-view.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Session Details View - Enhanced with sub-tabs
3
+ */
4
+ import React from 'react';
5
+ import type { Session } from '../../../types/session.types.js';
6
+ import type { SessionSubTab } from '../../dashboard/types.js';
7
+ export declare function SessionDetailsView({ activeSubTab, onBack, onExit, session }: {
8
+ activeSubTab: SessionSubTab;
9
+ onBack: () => void;
10
+ onExit: () => void;
11
+ session: Session;
12
+ }): React.JSX.Element;
13
+ //# sourceMappingURL=session-details-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-details-view.d.ts","sourceRoot":"","sources":["../../../../src/ui/dashboard/views/session-details-view.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,KAAK,EAAE,OAAO,EAAsB,MAAM,qBAAqB,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AA0BxD,wBAAgB,kBAAkB,CAAC,EAClC,YAAY,EACZ,MAAM,EACN,MAAM,EACN,OAAO,EACP,EAAE;IACF,YAAY,EAAE,aAAa,CAAC;IAC5B,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CACjB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAsDpB"}
@@ -0,0 +1,70 @@
1
+ import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /**
3
+ * Session Details View - Enhanced with sub-tabs
4
+ */
5
+ import { useEffect, useState } from 'react';
6
+ import { getMCPAuditLogger } from '../../../mcp/mcp-audit-logger.service.js';
7
+ import { CommandHistoryPanel } from '../../dashboard/detail-panels/command-history-panel.js';
8
+ import { ExplorationInfoPanel } from '../../dashboard/detail-panels/exploration-info-panel.js';
9
+ import { OptimizationPanel } from '../../dashboard/detail-panels/optimization-panel.js';
10
+ import { QualityPanel } from '../../dashboard/detail-panels/quality-panel.js';
11
+ import { RunningTaskPanel } from '../../dashboard/detail-panels/running-task-panel.js';
12
+ import { SessionInfoPanel } from '../../dashboard/detail-panels/session-info-panel.js';
13
+ import { TokenUsagePanel } from '../../dashboard/detail-panels/token-usage-panel.js';
14
+ import { MCPSessionPanel } from '../../dashboard/detail-panels/tool-calls-panel.js';
15
+ import { WorktreeStatsPanel } from '../../dashboard/detail-panels/worktree-stats-panel.js';
16
+ import { getTUIAdapter } from '../../tui-adapter.interface.js';
17
+ const tui = getTUIAdapter();
18
+ // eslint-disable-next-line @typescript-eslint/naming-convention -- Box and Text are React components which require PascalCase
19
+ const { Box, Text } = tui;
20
+ const SUB_TAB_CONFIG = [
21
+ { label: 'Overview', tab: 'overview' },
22
+ { label: 'Optimisation', tab: 'optimization' },
23
+ { label: 'Quality', tab: 'quality' },
24
+ { label: 'Tokens', tab: 'tokens' }
25
+ ];
26
+ // eslint-disable-next-line @typescript-eslint/naming-convention -- React components must use PascalCase
27
+ export function SessionDetailsView({ activeSubTab, onBack, onExit, session }) {
28
+ const [, setTick] = useState(0);
29
+ useEffect(() => {
30
+ if (session.status !== 'active')
31
+ return;
32
+ const interval = setInterval(() => setTick((t) => t + 1), 1000);
33
+ return () => clearInterval(interval);
34
+ }, [session.status]);
35
+ tui.useInput((input, key) => {
36
+ if (key.escape || input === 'q') {
37
+ onBack();
38
+ }
39
+ else if (key.ctrl && input === 'c') {
40
+ onExit();
41
+ }
42
+ });
43
+ return (_jsxs(Box, { flexDirection: "column", paddingX: 1, children: [_jsx(Box, { borderColor: "cyan", borderStyle: "round", marginBottom: 1, paddingX: 1, children: _jsxs(Text, { bold: true, color: "cyan", children: ["Session Details: ", session.session_id] }) }), _jsxs(Box, { marginBottom: 1, children: [SUB_TAB_CONFIG.map((config) => {
44
+ const isActive = config.tab === activeSubTab;
45
+ return (_jsx(Box, { marginRight: 1, children: _jsxs(Text, { backgroundColor: isActive ? 'cyan' : undefined, bold: isActive, color: isActive ? 'black' : 'white', children: [' ', config.label, ' '] }) }, config.tab));
46
+ }), _jsx(Text, { dimColor: true, children: " ([/] switch)" })] }), _jsx(SubTabContent, { activeSubTab: activeSubTab, session: session }), _jsx(Box, { borderColor: "white", borderStyle: "round", paddingX: 1, children: _jsxs(Text, { dimColor: true, children: ["Press ", _jsx(Text, { color: "cyan", children: "[/]" }), " to switch sub-tabs, ", _jsx(Text, { color: "cyan", children: "q" }), " or", ' ', _jsx(Text, { color: "cyan", children: "Esc" }), " to go back"] }) })] }));
47
+ }
48
+ // eslint-disable-next-line @typescript-eslint/naming-convention -- React components must use PascalCase
49
+ function OverviewContent({ session }) {
50
+ const isRunning = session.status === 'active';
51
+ const elapsedMs = isRunning ? Date.now() - new Date(session.updated_at).getTime() : 0;
52
+ const worktreeStats = session.context?.['worktree_stats'];
53
+ const explorationId = session.context?.['exploration_id'];
54
+ const mcpMetrics = getMCPAuditLogger().getDashboardMetrics();
55
+ return (_jsxs(_Fragment, { children: [_jsx(SessionInfoPanel, { session: session }), isRunning && session.current_command && (_jsx(RunningTaskPanel, { command: session.current_command, elapsedMs: elapsedMs })), _jsx(ExplorationInfoPanel, { explorationId: explorationId, sessionId: session.session_id }), mcpMetrics.totalToolCalls > 0 && _jsx(MCPSessionPanel, { metrics: mcpMetrics }), _jsx(CommandHistoryPanel, { session: session }), worktreeStats && worktreeStats.total_created > 0 && _jsx(WorktreeStatsPanel, { stats: worktreeStats })] }));
56
+ }
57
+ // eslint-disable-next-line @typescript-eslint/naming-convention -- React components must use PascalCase
58
+ function SubTabContent({ activeSubTab, session }) {
59
+ switch (activeSubTab) {
60
+ case 'optimization':
61
+ return _jsx(OptimizationPanel, { session: session });
62
+ case 'quality':
63
+ return _jsx(QualityPanel, { session: session });
64
+ case 'tokens':
65
+ return _jsx(TokenUsagePanel, { session: session });
66
+ default:
67
+ return _jsx(OverviewContent, { session: session });
68
+ }
69
+ }
70
+ //# sourceMappingURL=session-details-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-details-view.js","sourceRoot":"","sources":["../../../../src/ui/dashboard/views/session-details-view.tsx"],"names":[],"mappings":"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"}
@@ -1,36 +1,11 @@
1
1
  /**
2
2
  * Dashboard TUI - Real-time dashboard for monitoring sessions and system health
3
3
  * Built with Ink (modern React-based TUI framework)
4
+ *
5
+ * Root shell that composes modular components from ./dashboard/
4
6
  */
5
- import type { SessionSummary } from '../types/session.types.js';
6
- /**
7
- * Format duration with hours, minutes, seconds, milliseconds when applicable
8
- */
9
- export interface BackgroundTask {
10
- id: string;
11
- name: string;
12
- progress: number;
13
- startedAt?: string;
14
- status: 'completed' | 'failed' | 'running';
15
- }
16
- export interface DashboardData {
17
- activeSessions: SessionSummary[];
18
- backgroundTasks: BackgroundTask[];
19
- recentCommands: RecentCommand[];
20
- systemHealth: SystemHealth;
21
- }
22
- export interface RecentCommand {
23
- agent: string;
24
- command: string;
25
- status: 'failed' | 'running' | 'success';
26
- timestamp: string;
27
- }
28
- export interface SystemHealth {
29
- apiStatus: 'degraded' | 'healthy' | 'offline';
30
- diskUsage: string;
31
- sessionsCount: number;
32
- uptime: number;
33
- }
7
+ export type { BackgroundTask, DashboardData, RecentCommand, SystemHealth, WorktreeDiagramEntry } from './dashboard/types.js';
8
+ export { formatDurationMs } from './dashboard/utils/format-helpers.js';
34
9
  /**
35
10
  * Start the dashboard
36
11
  */
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-tui.d.ts","sourceRoot":"","sources":["../../src/ui/dashboard-tui.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAW,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAYnE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;CAC3C;AAED,MAAM,WAAW,aAAa;IAC7B,cAAc,EAAE,cAAc,EAAE,CAAC;IACjC,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,YAAY,EAAE,YAAY,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IACzC,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC5B,SAAS,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CACf;AAwtBD;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAkBrC"}
1
+ {"version":3,"file":"dashboard-tui.d.ts","sourceRoot":"","sources":["../../src/ui/dashboard-tui.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAuBH,YAAY,EACX,cAAc,EACd,aAAa,EACb,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAqNpE;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAgBrC"}