codingbuddy 4.1.0 → 4.3.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 (362) hide show
  1. package/dist/src/agent/agent-summary.utils.d.ts +2 -1
  2. package/dist/src/analyzer/conventions.schemas.d.ts +0 -4
  3. package/dist/src/analyzer/conventions.schemas.js.map +1 -1
  4. package/dist/src/analyzer/conventions.types.d.ts +5 -7
  5. package/dist/src/analyzer/conventions.types.js.map +1 -1
  6. package/dist/src/analyzer/directory.analyzer.d.ts +1 -1
  7. package/dist/src/checklist/checklist.schema.d.ts +2 -1
  8. package/dist/src/cli/cli.d.ts +2 -3
  9. package/dist/src/cli/cli.js +4 -3
  10. package/dist/src/cli/cli.js.map +1 -1
  11. package/dist/src/cli/cli.types.d.ts +3 -0
  12. package/dist/src/cli/init/claude-settings.utils.d.ts +2 -1
  13. package/dist/src/cli/init/config.generator.d.ts +0 -2
  14. package/dist/src/cli/init/config.generator.js +0 -2
  15. package/dist/src/cli/init/config.generator.js.map +1 -1
  16. package/dist/src/cli/init/config.writer.d.ts +0 -1
  17. package/dist/src/cli/init/config.writer.js +0 -1
  18. package/dist/src/cli/init/config.writer.js.map +1 -1
  19. package/dist/src/cli/init/init.constants.js +1 -0
  20. package/dist/src/cli/init/init.constants.js.map +1 -1
  21. package/dist/src/cli/init/init.wizard.d.ts +2 -1
  22. package/dist/src/cli/init/prompts/agent-prompt.d.ts +1 -1
  23. package/dist/src/cli/restart-tui.d.ts +9 -0
  24. package/dist/src/cli/restart-tui.js +30 -0
  25. package/dist/src/cli/restart-tui.js.map +1 -0
  26. package/dist/src/cli/run-tui.d.ts +3 -3
  27. package/dist/src/cli/run-tui.js +32 -58
  28. package/dist/src/cli/run-tui.js.map +1 -1
  29. package/dist/src/config/config.loader.d.ts +0 -2
  30. package/dist/src/config/config.loader.js +0 -2
  31. package/dist/src/config/config.loader.js.map +1 -1
  32. package/dist/src/config/config.schema.d.ts +0 -16
  33. package/dist/src/config/config.schema.js +7 -7
  34. package/dist/src/config/config.schema.js.map +1 -1
  35. package/dist/src/context/context-document.types.d.ts +0 -8
  36. package/dist/src/context/context-document.types.js +9 -9
  37. package/dist/src/context/context-document.types.js.map +1 -1
  38. package/dist/src/context/context-parser.utils.d.ts +1 -9
  39. package/dist/src/context/context-parser.utils.js +0 -36
  40. package/dist/src/context/context-parser.utils.js.map +1 -1
  41. package/dist/src/keyword/keyword.service.js +5 -1
  42. package/dist/src/keyword/keyword.service.js.map +1 -1
  43. package/dist/src/keyword/keyword.types.d.ts +3 -7
  44. package/dist/src/keyword/keyword.types.js +31 -1
  45. package/dist/src/keyword/keyword.types.js.map +1 -1
  46. package/dist/src/keyword/patterns/backend.patterns.js +10 -0
  47. package/dist/src/keyword/patterns/backend.patterns.js.map +1 -1
  48. package/dist/src/keyword/patterns/context.patterns.js +1 -1
  49. package/dist/src/keyword/patterns/data-science.patterns.d.ts +2 -0
  50. package/dist/src/keyword/patterns/data-science.patterns.js +71 -0
  51. package/dist/src/keyword/patterns/data-science.patterns.js.map +1 -0
  52. package/dist/src/keyword/patterns/index.d.ts +3 -0
  53. package/dist/src/keyword/patterns/index.js +7 -1
  54. package/dist/src/keyword/patterns/index.js.map +1 -1
  55. package/dist/src/keyword/patterns/intent-pattern-checks.js +24 -0
  56. package/dist/src/keyword/patterns/intent-pattern-checks.js.map +1 -1
  57. package/dist/src/keyword/patterns/security.patterns.d.ts +2 -0
  58. package/dist/src/keyword/patterns/security.patterns.js +106 -0
  59. package/dist/src/keyword/patterns/security.patterns.js.map +1 -0
  60. package/dist/src/keyword/patterns/systems.patterns.d.ts +2 -0
  61. package/dist/src/keyword/patterns/systems.patterns.js +101 -0
  62. package/dist/src/keyword/patterns/systems.patterns.js.map +1 -0
  63. package/dist/src/keyword/patterns/test.patterns.d.ts +2 -0
  64. package/dist/src/keyword/patterns/test.patterns.js +71 -0
  65. package/dist/src/keyword/patterns/test.patterns.js.map +1 -0
  66. package/dist/src/keyword/srp-template.d.ts +0 -2
  67. package/dist/src/keyword/srp-template.js +0 -2
  68. package/dist/src/keyword/srp-template.js.map +1 -1
  69. package/dist/src/keyword/strategies/__tests__/strategy-test.utils.d.ts +1 -1
  70. package/dist/src/keyword/strategies/__tests__/strategy-test.utils.js +4 -0
  71. package/dist/src/keyword/strategies/__tests__/strategy-test.utils.js.map +1 -1
  72. package/dist/src/keyword/strategies/act-agent.strategy.js +2 -2
  73. package/dist/src/keyword/strategies/act-agent.strategy.js.map +1 -1
  74. package/dist/src/main.js +30 -9
  75. package/dist/src/main.js.map +1 -1
  76. package/dist/src/mcp/handlers/index.d.ts +1 -0
  77. package/dist/src/mcp/handlers/index.js +3 -1
  78. package/dist/src/mcp/handlers/index.js.map +1 -1
  79. package/dist/src/mcp/handlers/mode.handler.js +15 -1
  80. package/dist/src/mcp/handlers/mode.handler.js.map +1 -1
  81. package/dist/src/mcp/handlers/tui.handler.d.ts +8 -0
  82. package/dist/src/mcp/handlers/tui.handler.js +50 -0
  83. package/dist/src/mcp/handlers/tui.handler.js.map +1 -0
  84. package/dist/src/mcp/mcp.module.js +1 -0
  85. package/dist/src/mcp/mcp.module.js.map +1 -1
  86. package/dist/src/rules/rules.types.d.ts +3 -2
  87. package/dist/src/rules/skill.schema.d.ts +0 -5
  88. package/dist/src/rules/skill.schema.js +3 -3
  89. package/dist/src/rules/skill.schema.js.map +1 -1
  90. package/dist/src/shared/async.utils.d.ts +3 -2
  91. package/dist/src/shared/file.utils.d.ts +3 -2
  92. package/dist/src/shared/filesystem.interface.d.ts +0 -10
  93. package/dist/src/shared/filesystem.interface.js +1 -10
  94. package/dist/src/shared/filesystem.interface.js.map +1 -1
  95. package/dist/src/shared/keyword-core.d.ts +2 -1
  96. package/dist/src/shared/keyword-core.js +3 -1
  97. package/dist/src/shared/keyword-core.js.map +1 -1
  98. package/dist/src/shared/language.types.d.ts +2 -1
  99. package/dist/src/shared/lru-cache.d.ts +2 -6
  100. package/dist/src/shared/path.utils.d.ts +0 -1
  101. package/dist/src/shared/path.utils.js +0 -1
  102. package/dist/src/shared/path.utils.js.map +1 -1
  103. package/dist/src/shared/pattern-matcher.d.ts +2 -1
  104. package/dist/src/shared/rules-core.d.ts +3 -2
  105. package/dist/src/shared/security.utils.d.ts +4 -3
  106. package/dist/src/shared/validation.constants.d.ts +2 -3
  107. package/dist/src/shared/validation.constants.js +3 -3
  108. package/dist/src/shared/validation.constants.js.map +1 -1
  109. package/dist/src/shared/verbosity.types.d.ts +2 -1
  110. package/dist/src/shared/version.d.ts +1 -0
  111. package/dist/src/shared/version.js +5 -0
  112. package/dist/src/shared/version.js.map +1 -0
  113. package/dist/src/shared/version.utils.js +2 -14
  114. package/dist/src/shared/version.utils.js.map +1 -1
  115. package/dist/src/skill/skill-content.utils.d.ts +0 -1
  116. package/dist/src/skill/skill-content.utils.js +4 -4
  117. package/dist/src/skill/skill-content.utils.js.map +1 -1
  118. package/dist/src/tui/__perf__/memory-stability.spec.js +8 -8
  119. package/dist/src/tui/__perf__/memory-stability.spec.js.map +1 -1
  120. package/dist/src/tui/__perf__/rendering-performance.spec.js +13 -13
  121. package/dist/src/tui/__perf__/rendering-performance.spec.js.map +1 -1
  122. package/dist/src/tui/components/ActivityVisualizer.d.ts +14 -0
  123. package/dist/src/tui/components/ActivityVisualizer.js +21 -0
  124. package/dist/src/tui/components/ActivityVisualizer.js.map +1 -0
  125. package/dist/src/tui/components/ActivityVisualizer.spec.js +91 -0
  126. package/dist/src/tui/components/ActivityVisualizer.spec.js.map +1 -0
  127. package/dist/src/tui/components/ChecklistPanel.d.ts +10 -0
  128. package/dist/src/tui/components/ChecklistPanel.js +19 -0
  129. package/dist/src/tui/components/ChecklistPanel.js.map +1 -0
  130. package/dist/src/tui/components/ChecklistPanel.spec.js +45 -0
  131. package/dist/src/tui/components/ChecklistPanel.spec.js.map +1 -0
  132. package/dist/src/tui/components/ContextSection.d.ts +7 -0
  133. package/dist/src/tui/components/ContextSection.js +24 -0
  134. package/dist/src/tui/components/ContextSection.js.map +1 -0
  135. package/dist/src/tui/components/FlowMap.d.ts +12 -0
  136. package/dist/src/tui/components/FlowMap.js +55 -0
  137. package/dist/src/tui/components/FlowMap.js.map +1 -0
  138. package/dist/src/tui/components/FlowMap.spec.js +59 -0
  139. package/dist/src/tui/components/FlowMap.spec.js.map +1 -0
  140. package/dist/src/tui/components/FocusedAgentPanel.d.ts +13 -0
  141. package/dist/src/tui/components/FocusedAgentPanel.js +61 -0
  142. package/dist/src/tui/components/FocusedAgentPanel.js.map +1 -0
  143. package/dist/src/tui/components/FocusedAgentPanel.spec.js +109 -0
  144. package/dist/src/tui/components/FocusedAgentPanel.spec.js.map +1 -0
  145. package/dist/src/tui/components/HeaderBar.d.ts +11 -0
  146. package/dist/src/tui/components/HeaderBar.js +51 -0
  147. package/dist/src/tui/components/HeaderBar.js.map +1 -0
  148. package/dist/src/tui/components/HeaderBar.spec.js +78 -0
  149. package/dist/src/tui/components/HeaderBar.spec.js.map +1 -0
  150. package/dist/src/tui/components/SessionTabBar.d.ts +9 -0
  151. package/dist/src/tui/components/SessionTabBar.js +15 -0
  152. package/dist/src/tui/components/SessionTabBar.js.map +1 -0
  153. package/dist/src/tui/components/SessionTabBar.spec.js +59 -0
  154. package/dist/src/tui/components/SessionTabBar.spec.js.map +1 -0
  155. package/dist/src/tui/components/StageHealthBar.d.ts +12 -0
  156. package/dist/src/tui/components/StageHealthBar.js +69 -0
  157. package/dist/src/tui/components/StageHealthBar.js.map +1 -0
  158. package/dist/src/tui/components/StageHealthBar.spec.js +77 -0
  159. package/dist/src/tui/components/StageHealthBar.spec.js.map +1 -0
  160. package/dist/src/tui/components/activity-visualizer.pure.d.ts +4 -0
  161. package/dist/src/tui/components/activity-visualizer.pure.js +133 -0
  162. package/dist/src/tui/components/activity-visualizer.pure.js.map +1 -0
  163. package/dist/src/tui/components/checklist-panel.pure.d.ts +2 -0
  164. package/dist/src/tui/components/checklist-panel.pure.js +18 -0
  165. package/dist/src/tui/components/checklist-panel.pure.js.map +1 -0
  166. package/dist/src/tui/components/context-section.pure.d.ts +3 -0
  167. package/dist/src/tui/components/context-section.pure.js +38 -0
  168. package/dist/src/tui/components/context-section.pure.js.map +1 -0
  169. package/dist/src/tui/components/flow-map.pure.d.ts +26 -0
  170. package/dist/src/tui/components/flow-map.pure.js +354 -0
  171. package/dist/src/tui/components/flow-map.pure.js.map +1 -0
  172. package/dist/src/tui/components/focused-agent.pure.d.ts +9 -0
  173. package/dist/src/tui/components/focused-agent.pure.js +42 -0
  174. package/dist/src/tui/components/focused-agent.pure.js.map +1 -0
  175. package/dist/src/tui/components/grid-layout.pure.d.ts +2 -0
  176. package/dist/src/tui/components/grid-layout.pure.js +72 -0
  177. package/dist/src/tui/components/grid-layout.pure.js.map +1 -0
  178. package/dist/src/tui/components/header-bar.pure.d.ts +1 -0
  179. package/dist/src/tui/components/{header.pure.js → header-bar.pure.js} +1 -7
  180. package/dist/src/tui/components/header-bar.pure.js.map +1 -0
  181. package/dist/src/tui/components/index.d.ts +14 -15
  182. package/dist/src/tui/components/index.js +35 -49
  183. package/dist/src/tui/components/index.js.map +1 -1
  184. package/dist/src/tui/components/session-tab-bar.pure.d.ts +9 -0
  185. package/dist/src/tui/components/session-tab-bar.pure.js +45 -0
  186. package/dist/src/tui/components/session-tab-bar.pure.js.map +1 -0
  187. package/dist/src/tui/components/stage-health.pure.d.ts +5 -0
  188. package/dist/src/tui/components/stage-health.pure.js +63 -0
  189. package/dist/src/tui/components/stage-health.pure.js.map +1 -0
  190. package/dist/src/tui/dashboard-app.d.ts +9 -0
  191. package/dist/src/tui/dashboard-app.js +40 -0
  192. package/dist/src/tui/dashboard-app.js.map +1 -0
  193. package/dist/src/tui/dashboard-app.spec.js +144 -0
  194. package/dist/src/tui/dashboard-app.spec.js.map +1 -0
  195. package/dist/src/tui/dashboard-types.d.ts +94 -0
  196. package/dist/src/tui/dashboard-types.js +33 -0
  197. package/dist/src/tui/dashboard-types.js.map +1 -0
  198. package/dist/src/tui/eventbus-ui.integration.spec.js +133 -167
  199. package/dist/src/tui/eventbus-ui.integration.spec.js.map +1 -1
  200. package/dist/src/tui/events/event-bus.js +1 -1
  201. package/dist/src/tui/events/event-bus.js.map +1 -1
  202. package/dist/src/tui/events/index.d.ts +1 -1
  203. package/dist/src/tui/events/index.js.map +1 -1
  204. package/dist/src/tui/events/parse-agent.js +1 -26
  205. package/dist/src/tui/events/parse-agent.js.map +1 -1
  206. package/dist/src/tui/events/response-event-extractor.d.ts +16 -1
  207. package/dist/src/tui/events/response-event-extractor.js +181 -2
  208. package/dist/src/tui/events/response-event-extractor.js.map +1 -1
  209. package/dist/src/tui/events/tui-interceptor.d.ts +3 -0
  210. package/dist/src/tui/events/tui-interceptor.js +67 -7
  211. package/dist/src/tui/events/tui-interceptor.js.map +1 -1
  212. package/dist/src/tui/events/types.d.ts +46 -2
  213. package/dist/src/tui/events/types.js +6 -0
  214. package/dist/src/tui/events/types.js.map +1 -1
  215. package/dist/src/tui/hooks/index.d.ts +7 -4
  216. package/dist/src/tui/hooks/index.js +12 -7
  217. package/dist/src/tui/hooks/index.js.map +1 -1
  218. package/dist/src/tui/hooks/use-clock.js +3 -3
  219. package/dist/src/tui/hooks/use-clock.js.map +1 -1
  220. package/dist/src/tui/hooks/use-dashboard-state.d.ts +52 -0
  221. package/dist/src/tui/hooks/use-dashboard-state.js +299 -0
  222. package/dist/src/tui/hooks/use-dashboard-state.js.map +1 -0
  223. package/dist/src/tui/hooks/use-focus-agent.d.ts +2 -0
  224. package/dist/src/tui/hooks/use-focus-agent.js +26 -0
  225. package/dist/src/tui/hooks/use-focus-agent.js.map +1 -0
  226. package/dist/src/tui/hooks/use-multi-session-state.d.ts +16 -0
  227. package/dist/src/tui/hooks/use-multi-session-state.js +163 -0
  228. package/dist/src/tui/hooks/use-multi-session-state.js.map +1 -0
  229. package/dist/src/tui/hooks/use-terminal-size.d.ts +9 -0
  230. package/dist/src/tui/hooks/use-terminal-size.js +31 -0
  231. package/dist/src/tui/hooks/use-terminal-size.js.map +1 -0
  232. package/dist/src/tui/index.d.ts +12 -4
  233. package/dist/src/tui/index.js +18 -7
  234. package/dist/src/tui/index.js.map +1 -1
  235. package/dist/src/tui/ipc/index.d.ts +5 -2
  236. package/dist/src/tui/ipc/index.js +5 -5
  237. package/dist/src/tui/ipc/index.js.map +1 -1
  238. package/dist/src/tui/ipc/ipc-state-cache.d.ts +1 -0
  239. package/dist/src/tui/ipc/ipc-state-cache.js +7 -0
  240. package/dist/src/tui/ipc/ipc-state-cache.js.map +1 -1
  241. package/dist/src/tui/ipc/multi-session-manager.d.ts +39 -0
  242. package/dist/src/tui/ipc/multi-session-manager.js +143 -0
  243. package/dist/src/tui/ipc/multi-session-manager.js.map +1 -0
  244. package/dist/src/tui/ipc/tui-auto-launcher.d.ts +22 -0
  245. package/dist/src/tui/ipc/tui-auto-launcher.js +113 -0
  246. package/dist/src/tui/ipc/tui-auto-launcher.js.map +1 -0
  247. package/dist/src/tui/multi-session-app.d.ts +6 -0
  248. package/dist/src/tui/multi-session-app.js +60 -0
  249. package/dist/src/tui/multi-session-app.js.map +1 -0
  250. package/dist/src/tui/multi-session-app.spec.js +95 -0
  251. package/dist/src/tui/multi-session-app.spec.js.map +1 -0
  252. package/dist/src/tui/transport-tui.integration.spec.js +15 -15
  253. package/dist/src/tui/transport-tui.integration.spec.js.map +1 -1
  254. package/dist/src/tui/tui-config.d.ts +3 -2
  255. package/dist/src/tui/types.d.ts +1 -1
  256. package/dist/src/tui/types.js +3 -0
  257. package/dist/src/tui/types.js.map +1 -1
  258. package/dist/src/tui/utils/color-buffer.d.ts +31 -0
  259. package/dist/src/tui/utils/color-buffer.js +86 -0
  260. package/dist/src/tui/utils/color-buffer.js.map +1 -0
  261. package/dist/src/tui/utils/colors.js.map +1 -1
  262. package/dist/src/tui/utils/edge-router.d.ts +9 -0
  263. package/dist/src/tui/utils/edge-router.js +65 -0
  264. package/dist/src/tui/utils/edge-router.js.map +1 -0
  265. package/dist/src/tui/utils/index.d.ts +3 -1
  266. package/dist/src/tui/utils/index.js +21 -4
  267. package/dist/src/tui/utils/index.js.map +1 -1
  268. package/dist/src/tui/utils/theme.d.ts +50 -0
  269. package/dist/src/tui/utils/theme.js +128 -0
  270. package/dist/src/tui/utils/theme.js.map +1 -0
  271. package/dist/src/tui-bundle.mjs +6037 -0
  272. package/dist/tsconfig.build.tsbuildinfo +1 -1
  273. package/package.json +10 -10
  274. package/dist/src/shared/token-counter.d.ts +0 -13
  275. package/dist/src/shared/token-counter.js +0 -41
  276. package/dist/src/shared/token-counter.js.map +0 -1
  277. package/dist/src/tui/app.d.ts +0 -6
  278. package/dist/src/tui/app.js +0 -20
  279. package/dist/src/tui/app.js.map +0 -1
  280. package/dist/src/tui/app.spec.js +0 -226
  281. package/dist/src/tui/app.spec.js.map +0 -1
  282. package/dist/src/tui/components/AgentCard.d.ts +0 -6
  283. package/dist/src/tui/components/AgentCard.js +0 -18
  284. package/dist/src/tui/components/AgentCard.js.map +0 -1
  285. package/dist/src/tui/components/AgentCard.spec.js +0 -118
  286. package/dist/src/tui/components/AgentCard.spec.js.map +0 -1
  287. package/dist/src/tui/components/AgentGrid.d.ts +0 -7
  288. package/dist/src/tui/components/AgentGrid.js +0 -20
  289. package/dist/src/tui/components/AgentGrid.js.map +0 -1
  290. package/dist/src/tui/components/AgentGrid.spec.js +0 -52
  291. package/dist/src/tui/components/AgentGrid.spec.js.map +0 -1
  292. package/dist/src/tui/components/AgentTree.d.ts +0 -7
  293. package/dist/src/tui/components/AgentTree.js +0 -24
  294. package/dist/src/tui/components/AgentTree.js.map +0 -1
  295. package/dist/src/tui/components/AgentTree.spec.js +0 -146
  296. package/dist/src/tui/components/AgentTree.spec.js.map +0 -1
  297. package/dist/src/tui/components/CategoryRow.d.ts +0 -9
  298. package/dist/src/tui/components/CategoryRow.js +0 -15
  299. package/dist/src/tui/components/CategoryRow.js.map +0 -1
  300. package/dist/src/tui/components/CategoryRow.spec.js +0 -58
  301. package/dist/src/tui/components/CategoryRow.spec.js.map +0 -1
  302. package/dist/src/tui/components/Header.d.ts +0 -6
  303. package/dist/src/tui/components/Header.js +0 -18
  304. package/dist/src/tui/components/Header.js.map +0 -1
  305. package/dist/src/tui/components/Header.spec.js +0 -38
  306. package/dist/src/tui/components/Header.spec.js.map +0 -1
  307. package/dist/src/tui/components/ProgressBar.d.ts +0 -7
  308. package/dist/src/tui/components/ProgressBar.js +0 -12
  309. package/dist/src/tui/components/ProgressBar.js.map +0 -1
  310. package/dist/src/tui/components/ProgressBar.spec.js +0 -37
  311. package/dist/src/tui/components/ProgressBar.spec.js.map +0 -1
  312. package/dist/src/tui/components/StatusBar.d.ts +0 -8
  313. package/dist/src/tui/components/StatusBar.js +0 -29
  314. package/dist/src/tui/components/StatusBar.js.map +0 -1
  315. package/dist/src/tui/components/StatusBar.spec.js +0 -93
  316. package/dist/src/tui/components/StatusBar.spec.js.map +0 -1
  317. package/dist/src/tui/components/agent-card.pure.d.ts +0 -7
  318. package/dist/src/tui/components/agent-card.pure.js +0 -65
  319. package/dist/src/tui/components/agent-card.pure.js.map +0 -1
  320. package/dist/src/tui/components/agent-grid.pure.d.ts +0 -3
  321. package/dist/src/tui/components/agent-grid.pure.js +0 -35
  322. package/dist/src/tui/components/agent-grid.pure.js.map +0 -1
  323. package/dist/src/tui/components/agent-mini-card.pure.d.ts +0 -2
  324. package/dist/src/tui/components/agent-mini-card.pure.js +0 -17
  325. package/dist/src/tui/components/agent-mini-card.pure.js.map +0 -1
  326. package/dist/src/tui/components/agent-tree.pure.d.ts +0 -18
  327. package/dist/src/tui/components/agent-tree.pure.js +0 -41
  328. package/dist/src/tui/components/agent-tree.pure.js.map +0 -1
  329. package/dist/src/tui/components/category-row.pure.d.ts +0 -3
  330. package/dist/src/tui/components/category-row.pure.js +0 -26
  331. package/dist/src/tui/components/category-row.pure.js.map +0 -1
  332. package/dist/src/tui/components/header.pure.d.ts +0 -4
  333. package/dist/src/tui/components/header.pure.js.map +0 -1
  334. package/dist/src/tui/components/progress-bar.pure.d.ts +0 -2
  335. package/dist/src/tui/components/progress-bar.pure.js +0 -21
  336. package/dist/src/tui/components/progress-bar.pure.js.map +0 -1
  337. package/dist/src/tui/components/status-bar.pure.d.ts +0 -15
  338. package/dist/src/tui/components/status-bar.pure.js +0 -83
  339. package/dist/src/tui/components/status-bar.pure.js.map +0 -1
  340. package/dist/src/tui/hooks/use-agent-state.d.ts +0 -7
  341. package/dist/src/tui/hooks/use-agent-state.js +0 -13
  342. package/dist/src/tui/hooks/use-agent-state.js.map +0 -1
  343. package/dist/src/tui/hooks/use-agent-state.spec.js +0 -167
  344. package/dist/src/tui/hooks/use-agent-state.spec.js.map +0 -1
  345. package/dist/src/tui/hooks/use-event-bus.d.ts +0 -34
  346. package/dist/src/tui/hooks/use-event-bus.js +0 -91
  347. package/dist/src/tui/hooks/use-event-bus.js.map +0 -1
  348. package/dist/src/tui/hooks/use-event-bus.spec.d.ts +0 -1
  349. package/dist/src/tui/hooks/use-event-bus.spec.js +0 -362
  350. package/dist/src/tui/hooks/use-event-bus.spec.js.map +0 -1
  351. package/dist/src/tui/utils/constants.d.ts +0 -3
  352. package/dist/src/tui/utils/constants.js +0 -15
  353. package/dist/src/tui/utils/constants.js.map +0 -1
  354. /package/dist/src/tui/{app.spec.d.ts → components/ActivityVisualizer.spec.d.ts} +0 -0
  355. /package/dist/src/tui/components/{AgentCard.spec.d.ts → ChecklistPanel.spec.d.ts} +0 -0
  356. /package/dist/src/tui/components/{AgentGrid.spec.d.ts → FlowMap.spec.d.ts} +0 -0
  357. /package/dist/src/tui/components/{AgentTree.spec.d.ts → FocusedAgentPanel.spec.d.ts} +0 -0
  358. /package/dist/src/tui/components/{CategoryRow.spec.d.ts → HeaderBar.spec.d.ts} +0 -0
  359. /package/dist/src/tui/components/{Header.spec.d.ts → SessionTabBar.spec.d.ts} +0 -0
  360. /package/dist/src/tui/components/{ProgressBar.spec.d.ts → StageHealthBar.spec.d.ts} +0 -0
  361. /package/dist/src/tui/{components/StatusBar.spec.d.ts → dashboard-app.spec.d.ts} +0 -0
  362. /package/dist/src/tui/{hooks/use-agent-state.spec.d.ts → multi-session-app.spec.d.ts} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codingbuddy",
3
- "version": "4.1.0",
3
+ "version": "4.3.0",
4
4
  "description": "Multi-AI Rules MCP Server - One source of truth for AI coding rules across all AI assistants",
5
5
  "author": "JeremyDev87",
6
6
  "license": "MIT",
@@ -41,11 +41,13 @@
41
41
  },
42
42
  "scripts": {
43
43
  "prepublishOnly": "yarn build && chmod +x dist/src/main.js dist/src/cli/cli.js",
44
- "build": "yarn tsc -p tsconfig.build.json",
44
+ "build": "yarn tsc -p tsconfig.build.json && node scripts/build-tui.js",
45
45
  "build:tui": "node scripts/build-tui.js",
46
46
  "start": "node dist/src/main.js",
47
47
  "start:dev": "yarn ts-node src/main.ts",
48
- "start:tui": "yarn build && yarn build:tui && MCP_TRANSPORT=sse node dist/src/main.js --tui",
48
+ "start:tui": "yarn build && node dist/src/cli/cli.js tui",
49
+ "start:sse:tui": "yarn build && MCP_TRANSPORT=sse node dist/src/main.js --tui",
50
+ "tui": "node dist/src/cli/cli.js tui",
49
51
  "test": "yarn vitest run",
50
52
  "test:watch": "yarn vitest",
51
53
  "test:coverage": "yarn vitest run --coverage",
@@ -68,12 +70,11 @@
68
70
  "@nestjs/config": "4.0.2",
69
71
  "@nestjs/core": "11.1.9",
70
72
  "@nestjs/platform-express": "11.1.9",
71
- "codingbuddy-rules": "4.1.0",
73
+ "chalk": "5.4.1",
74
+ "codingbuddy-rules": "4.3.0",
72
75
  "eventemitter2": "6.4.9",
73
76
  "ink": "6.7.0",
74
- "ink-gradient": "4.0.0",
75
- "ink-spinner": "5.0.0",
76
- "minimatch": "10.1.1",
77
+ "minimatch": "10.2.1",
77
78
  "react": "19.2.4",
78
79
  "reflect-metadata": "0.2.2",
79
80
  "rxjs": "7.8.2",
@@ -82,20 +83,19 @@
82
83
  },
83
84
  "devDependencies": {
84
85
  "@eslint/js": "9.39.2",
85
- "@nestjs/cli": "11.0.14",
86
- "@nestjs/schematics": "11.0.9",
87
86
  "@types/express": "5.0.6",
88
87
  "@types/node": "25.0.3",
89
88
  "@types/react": "19.2.14",
90
89
  "@vercel/node": "5.5.16",
91
90
  "@vitest/coverage-v8": "4.0.16",
91
+ "esbuild": "^0.27.0",
92
92
  "eslint": "9.39.2",
93
93
  "eslint-config-prettier": "10.1.8",
94
94
  "ink-testing-library": "^4.0.0",
95
95
  "madge": "8.0.0",
96
+ "memfs": "^3.4.1",
96
97
  "prettier": "3.7.4",
97
98
  "ts-node": "10.9.2",
98
- "tsx": "^4.21.0",
99
99
  "typescript": "5.9.3",
100
100
  "typescript-eslint": "8.50.0",
101
101
  "vitest": "4.0.16"
@@ -1,13 +0,0 @@
1
- export interface TokenMetrics {
2
- componentName: string;
3
- byteSize: number;
4
- estimatedTokens: number;
5
- timestamp: Date;
6
- }
7
- export interface TokenBreakdown {
8
- total: number;
9
- breakdown: Record<string, number>;
10
- }
11
- export declare function estimateTokens(content: string): number;
12
- export declare function measureResponse<T>(componentName: string, data: T): TokenMetrics;
13
- export declare function calculateTotalTokens(metrics: TokenMetrics[]): TokenBreakdown;
@@ -1,41 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.estimateTokens = estimateTokens;
4
- exports.measureResponse = measureResponse;
5
- exports.calculateTotalTokens = calculateTotalTokens;
6
- function estimateTokens(content) {
7
- if (!content || content.length === 0) {
8
- return 0;
9
- }
10
- const cjkRegex = /[\u3040-\u30ff\u3400-\u4dbf\u4e00-\u9fff\uac00-\ud7af]/g;
11
- const cjkMatches = content.match(cjkRegex);
12
- const cjkCount = cjkMatches ? cjkMatches.length : 0;
13
- const nonCjkCount = content.length - cjkCount;
14
- const cjkTokens = Math.ceil(cjkCount / 2);
15
- const nonCjkTokens = Math.ceil(nonCjkCount / 4);
16
- return cjkTokens + nonCjkTokens;
17
- }
18
- function measureResponse(componentName, data) {
19
- const serialized = JSON.stringify(data);
20
- const byteSize = Buffer.byteLength(serialized, 'utf8');
21
- const estimatedTokens = estimateTokens(serialized);
22
- return {
23
- componentName,
24
- byteSize,
25
- estimatedTokens,
26
- timestamp: new Date(),
27
- };
28
- }
29
- function calculateTotalTokens(metrics) {
30
- const breakdown = {};
31
- let total = 0;
32
- for (const metric of metrics) {
33
- breakdown[metric.componentName] = metric.estimatedTokens;
34
- total += metric.estimatedTokens;
35
- }
36
- return {
37
- total,
38
- breakdown,
39
- };
40
- }
41
- //# sourceMappingURL=token-counter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"token-counter.js","sourceRoot":"","sources":["../../../src/shared/token-counter.ts"],"names":[],"mappings":";;AAsCA,wCAkBC;AAeD,0CAWC;AAoBD,oDAaC;AA7ED,SAAgB,cAAc,CAAC,OAAe;IAC5C,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,CAAC;IACX,CAAC;IAGD,MAAM,QAAQ,GAAG,yDAAyD,CAAC;IAC3E,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAGpD,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC;IAG9C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;IAEhD,OAAO,SAAS,GAAG,YAAY,CAAC;AAClC,CAAC;AAeD,SAAgB,eAAe,CAAI,aAAqB,EAAE,IAAO;IAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACvD,MAAM,eAAe,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IAEnD,OAAO;QACL,aAAa;QACb,QAAQ;QACR,eAAe;QACf,SAAS,EAAE,IAAI,IAAI,EAAE;KACtB,CAAC;AACJ,CAAC;AAoBD,SAAgB,oBAAoB,CAAC,OAAuB;IAC1D,MAAM,SAAS,GAA2B,EAAE,CAAC;IAC7C,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC;QACzD,KAAK,IAAI,MAAM,CAAC,eAAe,CAAC;IAClC,CAAC;IAED,OAAO;QACL,KAAK;QACL,SAAS;KACV,CAAC;AACJ,CAAC"}
@@ -1,6 +0,0 @@
1
- import React from 'react';
2
- import type { TuiEventBus } from './events';
3
- export interface AppProps {
4
- eventBus?: TuiEventBus;
5
- }
6
- export declare function App({ eventBus }: AppProps): React.ReactElement;
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.App = App;
4
- const react_1 = require("react");
5
- const ink_1 = require("ink");
6
- const hooks_1 = require("./hooks");
7
- const use_agent_state_1 = require("./hooks/use-agent-state");
8
- const components_1 = require("./components");
9
- function App({ eventBus }) {
10
- const { mode, agents, skills, allAgents } = (0, hooks_1.useEventBus)(eventBus);
11
- const { primaryAgent, activeAgents } = (0, use_agent_state_1.useAgentState)(agents);
12
- const parallelAgents = activeAgents.filter(a => !a.isPrimary);
13
- const activeAgentIds = new Set(agents.filter(a => a.status === 'running').map(a => a.id));
14
- return (react_1.default.createElement(ink_1.Box, { flexDirection: "column" },
15
- react_1.default.createElement(components_1.Header, { mode: mode }),
16
- react_1.default.createElement(components_1.AgentTree, { primaryAgent: primaryAgent, parallelAgents: parallelAgents }),
17
- react_1.default.createElement(components_1.AgentGrid, { allAgents: allAgents, activeAgentIds: activeAgentIds }),
18
- react_1.default.createElement(components_1.StatusBar, { agents: agents, skills: skills })));
19
- }
20
- //# sourceMappingURL=app.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/tui/app.tsx"],"names":[],"mappings":";;AAWA,kBAcC;AAzBD,iCAA0B;AAC1B,6BAA0B;AAE1B,mCAAsC;AACtC,6DAAwD;AACxD,6CAAuE;AAMvE,SAAgB,GAAG,CAAC,EAAE,QAAQ,EAAY;IACxC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,mBAAW,EAAC,QAAQ,CAAC,CAAC;IAClE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,IAAA,+BAAa,EAAC,MAAM,CAAC,CAAC;IAC7D,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC9D,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAE1F,OAAO,CACL,8BAAC,SAAG,IAAC,aAAa,EAAC,QAAQ;QACzB,8BAAC,mBAAM,IAAC,IAAI,EAAE,IAAI,GAAI;QACtB,8BAAC,sBAAS,IAAC,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,GAAI;QACzE,8BAAC,sBAAS,IAAC,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,GAAI;QACnE,8BAAC,sBAAS,IAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAI,CACzC,CACP,CAAC;AACJ,CAAC"}
@@ -1,226 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const react_1 = require("react");
4
- const vitest_1 = require("vitest");
5
- const ink_testing_library_1 = require("ink-testing-library");
6
- const app_1 = require("./app");
7
- const events_1 = require("./events");
8
- vitest_1.vi.mock('./utils/icons', async (importOriginal) => {
9
- const actual = await importOriginal();
10
- return {
11
- ...actual,
12
- isNerdFontEnabled: () => false,
13
- };
14
- });
15
- const tick = () => new Promise(resolve => setTimeout(resolve, 0));
16
- (0, vitest_1.describe)('tui/App', () => {
17
- (0, vitest_1.it)('should render the application title', () => {
18
- const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, null));
19
- (0, vitest_1.expect)(lastFrame()).toContain('CODINGBUDDY');
20
- });
21
- (0, vitest_1.it)('should render without errors', () => {
22
- (0, vitest_1.expect)(() => (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, null))).not.toThrow();
23
- });
24
- (0, vitest_1.it)('should accept eventBus prop without errors', () => {
25
- const eventBus = new events_1.TuiEventBus();
26
- (0, vitest_1.expect)(() => (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }))).not.toThrow();
27
- });
28
- (0, vitest_1.it)('should display mode when eventBus emits MODE_CHANGED', async () => {
29
- const eventBus = new events_1.TuiEventBus();
30
- const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
31
- eventBus.emit(events_1.TUI_EVENTS.MODE_CHANGED, { from: null, to: 'PLAN' });
32
- await tick();
33
- (0, vitest_1.expect)(lastFrame()).toContain('PLAN');
34
- });
35
- (0, vitest_1.it)('should render AgentTree when agents are activated', async () => {
36
- const eventBus = new events_1.TuiEventBus();
37
- const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
38
- eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
39
- agentId: 'p1',
40
- name: 'solution-architect',
41
- role: 'primary',
42
- isPrimary: true,
43
- });
44
- await tick();
45
- eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
46
- agentId: 's1',
47
- name: 'security-specialist',
48
- role: 'specialist',
49
- isPrimary: false,
50
- });
51
- eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
52
- agentId: 's2',
53
- name: 'test-strategy-specialist',
54
- role: 'specialist',
55
- isPrimary: false,
56
- });
57
- await tick();
58
- const frame = lastFrame() ?? '';
59
- (0, vitest_1.expect)(frame).toContain('soluti');
60
- (0, vitest_1.expect)(frame).toContain('securi');
61
- (0, vitest_1.expect)(frame).toContain('test-s');
62
- });
63
- (0, vitest_1.it)('should show active count in StatusBar after AGENT_ACTIVATED', async () => {
64
- const eventBus = new events_1.TuiEventBus();
65
- const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
66
- eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
67
- agentId: 'a1',
68
- name: 'security-specialist',
69
- role: 'specialist',
70
- isPrimary: false,
71
- });
72
- eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
73
- agentId: 'a2',
74
- name: 'test-strategy-specialist',
75
- role: 'specialist',
76
- isPrimary: false,
77
- });
78
- await tick();
79
- (0, vitest_1.expect)(lastFrame()).toContain('2 active');
80
- });
81
- (0, vitest_1.it)('should render AgentGrid categories when AGENTS_LOADED emitted', async () => {
82
- const eventBus = new events_1.TuiEventBus();
83
- const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
84
- const agents = [
85
- {
86
- id: 'security-specialist',
87
- name: 'security-specialist',
88
- description: 'Security analysis',
89
- category: 'Security',
90
- icon: '🔒',
91
- expertise: ['security'],
92
- },
93
- {
94
- id: 'test-strategy-specialist',
95
- name: 'test-strategy-specialist',
96
- description: 'Test strategy',
97
- category: 'Testing',
98
- icon: '🧪',
99
- expertise: ['testing'],
100
- },
101
- ];
102
- eventBus.emit(events_1.TUI_EVENTS.AGENTS_LOADED, { agents });
103
- await tick();
104
- const frame = lastFrame() ?? '';
105
- (0, vitest_1.expect)(frame).toContain('Security');
106
- (0, vitest_1.expect)(frame).toContain('Testing');
107
- });
108
- (0, vitest_1.it)('should reflect agent deactivation after AGENT_DEACTIVATED', async () => {
109
- const eventBus = new events_1.TuiEventBus();
110
- const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
111
- eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
112
- agentId: 'a1',
113
- name: 'security-specialist',
114
- role: 'specialist',
115
- isPrimary: true,
116
- });
117
- await tick();
118
- (0, vitest_1.expect)(lastFrame()).toContain('1 active');
119
- eventBus.emit(events_1.TUI_EVENTS.AGENT_DEACTIVATED, {
120
- agentId: 'a1',
121
- reason: 'completed',
122
- durationMs: 1000,
123
- });
124
- await tick();
125
- (0, vitest_1.expect)(lastFrame()).toContain('0 active');
126
- });
127
- (0, vitest_1.it)('should display skill names in StatusBar after SKILL_RECOMMENDED', async () => {
128
- const eventBus = new events_1.TuiEventBus();
129
- const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
130
- eventBus.emit(events_1.TUI_EVENTS.SKILL_RECOMMENDED, {
131
- skillName: 'brainstorming',
132
- reason: 'creative work detected',
133
- });
134
- await tick();
135
- (0, vitest_1.expect)(lastFrame()).toContain('brainstorming');
136
- });
137
- (0, vitest_1.it)('should handle full workflow: mode change → agents → deactivation', async () => {
138
- const eventBus = new events_1.TuiEventBus();
139
- const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
140
- eventBus.emit(events_1.TUI_EVENTS.MODE_CHANGED, { from: null, to: 'PLAN' });
141
- await tick();
142
- (0, vitest_1.expect)(lastFrame()).toContain('PLAN');
143
- eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
144
- agentId: 'p1',
145
- name: 'solution-architect',
146
- role: 'primary',
147
- isPrimary: true,
148
- });
149
- await tick();
150
- (0, vitest_1.expect)(lastFrame()).toContain('1 active');
151
- eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
152
- agentId: 's1',
153
- name: 'security-specialist',
154
- role: 'specialist',
155
- isPrimary: false,
156
- });
157
- eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
158
- agentId: 's2',
159
- name: 'test-strategy-specialist',
160
- role: 'specialist',
161
- isPrimary: false,
162
- });
163
- await tick();
164
- (0, vitest_1.expect)(lastFrame()).toContain('3 active');
165
- eventBus.emit(events_1.TUI_EVENTS.AGENT_DEACTIVATED, {
166
- agentId: 's1',
167
- reason: 'completed',
168
- durationMs: 500,
169
- });
170
- eventBus.emit(events_1.TUI_EVENTS.AGENT_DEACTIVATED, {
171
- agentId: 's2',
172
- reason: 'completed',
173
- durationMs: 700,
174
- });
175
- await tick();
176
- (0, vitest_1.expect)(lastFrame()).toContain('1 active');
177
- (0, vitest_1.expect)(lastFrame()).toContain('PLAN');
178
- });
179
- });
180
- (0, vitest_1.describe)('tui/App responsive layout', () => {
181
- (0, vitest_1.it)('should render without crash with many agents in single category', async () => {
182
- const eventBus = new events_1.TuiEventBus();
183
- const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
184
- eventBus.emit(events_1.TUI_EVENTS.AGENTS_LOADED, {
185
- agents: Array.from({ length: 12 }, (_, i) => ({
186
- id: `agent-${i}`,
187
- name: `agent-${i}`,
188
- description: `Agent ${i}`,
189
- category: 'Security',
190
- icon: '🔒',
191
- expertise: ['test'],
192
- })),
193
- });
194
- await tick();
195
- (0, vitest_1.expect)(lastFrame()).toBeDefined();
196
- (0, vitest_1.expect)(lastFrame()).toContain('Security');
197
- });
198
- (0, vitest_1.it)('should render without crash with many agents across categories', async () => {
199
- const eventBus = new events_1.TuiEventBus();
200
- const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
201
- const categories = [
202
- 'Security',
203
- 'Testing',
204
- 'Architecture',
205
- 'Frontend',
206
- 'Backend',
207
- ];
208
- const agents = categories.flatMap(category => Array.from({ length: 3 }, (_, i) => ({
209
- id: `${category.toLowerCase()}-${i}`,
210
- name: `${category.toLowerCase()}-agent-${i}`,
211
- description: `${category} agent ${i}`,
212
- category,
213
- icon: '🔧',
214
- expertise: [category.toLowerCase()],
215
- })));
216
- eventBus.emit(events_1.TUI_EVENTS.AGENTS_LOADED, { agents });
217
- await tick();
218
- const frame = lastFrame() ?? '';
219
- (0, vitest_1.expect)(frame).toContain('Security');
220
- (0, vitest_1.expect)(frame).toContain('Testing');
221
- (0, vitest_1.expect)(frame).toContain('Architecture');
222
- (0, vitest_1.expect)(frame).toContain('Frontend');
223
- (0, vitest_1.expect)(frame).toContain('Backend');
224
- });
225
- });
226
- //# sourceMappingURL=app.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"app.spec.js","sourceRoot":"","sources":["../../../src/tui/app.spec.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import React from 'react';
2
- import type { AgentState } from '../types';
3
- export interface AgentCardProps {
4
- agent: AgentState;
5
- }
6
- export declare function AgentCard({ agent }: AgentCardProps): React.ReactElement;
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AgentCard = AgentCard;
4
- const react_1 = require("react");
5
- const ink_1 = require("ink");
6
- const icons_1 = require("../utils/icons");
7
- const colors_1 = require("../utils/colors");
8
- const agent_card_pure_1 = require("./agent-card.pure");
9
- function AgentCard({ agent }) {
10
- const icon = (0, icons_1.getAgentIcon)(agent.name);
11
- const displayIcon = (0, agent_card_pure_1.resolveIcon)(agent.status, icon);
12
- const progress = (0, agent_card_pure_1.resolveProgress)(agent.status, agent.progress);
13
- const statusLabel = (0, agent_card_pure_1.buildStatusLabel)(agent.status);
14
- const line = (0, agent_card_pure_1.buildInlineCard)(displayIcon, agent.name, progress, statusLabel);
15
- const color = (0, colors_1.getStatusColor)(agent.status);
16
- return react_1.default.createElement(ink_1.Text, { color: color }, line);
17
- }
18
- //# sourceMappingURL=AgentCard.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AgentCard.js","sourceRoot":"","sources":["../../../../src/tui/components/AgentCard.tsx"],"names":[],"mappings":";;AAWA,8BASC;AApBD,iCAA0B;AAC1B,6BAA2B;AAE3B,0CAA8C;AAC9C,4CAAiD;AACjD,uDAAoG;AAMpG,SAAgB,SAAS,CAAC,EAAE,KAAK,EAAkB;IACjD,MAAM,IAAI,GAAG,IAAA,oBAAY,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,WAAW,GAAG,IAAA,6BAAW,EAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,IAAA,iCAAe,EAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/D,MAAM,WAAW,GAAG,IAAA,kCAAgB,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,IAAA,iCAAe,EAAC,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC7E,MAAM,KAAK,GAAG,IAAA,uBAAc,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAE3C,OAAO,8BAAC,UAAI,IAAC,KAAK,EAAE,KAAK,IAAG,IAAI,CAAQ,CAAC;AAC3C,CAAC"}
@@ -1,118 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const react_1 = require("react");
4
- const vitest_1 = require("vitest");
5
- const ink_testing_library_1 = require("ink-testing-library");
6
- const AgentCard_1 = require("./AgentCard");
7
- const types_1 = require("../types");
8
- vitest_1.vi.mock('../utils/icons', async (importOriginal) => {
9
- const actual = await importOriginal();
10
- return {
11
- ...actual,
12
- isNerdFontEnabled: () => false,
13
- };
14
- });
15
- (0, vitest_1.describe)('tui/components/AgentCard', () => {
16
- (0, vitest_1.it)('should render inline format with name, percentage, and status', () => {
17
- const agent = (0, types_1.createDefaultAgentState)({
18
- id: '1',
19
- name: 'test-agent',
20
- role: 'specialist',
21
- status: 'running',
22
- progress: 50,
23
- });
24
- const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(AgentCard_1.AgentCard, { agent: agent }));
25
- const output = lastFrame() ?? '';
26
- (0, vitest_1.expect)(output).toContain('test-agent');
27
- (0, vitest_1.expect)(output).toContain('50%');
28
- (0, vitest_1.expect)(output).toContain('Running');
29
- (0, vitest_1.expect)(output).not.toContain('\u256D');
30
- (0, vitest_1.expect)(output).not.toContain('\u2570');
31
- });
32
- (0, vitest_1.it)('should render agent icon', () => {
33
- const agent = (0, types_1.createDefaultAgentState)({
34
- id: '1',
35
- name: 'test-strategy-specialist',
36
- role: 'specialist',
37
- });
38
- const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(AgentCard_1.AgentCard, { agent: agent }));
39
- (0, vitest_1.expect)(lastFrame()).toContain('[Ts]');
40
- });
41
- (0, vitest_1.it)('should render idle state with empty progress bar', () => {
42
- const agent = (0, types_1.createDefaultAgentState)({
43
- id: '1',
44
- name: 'security-specialist',
45
- role: 'specialist',
46
- status: 'idle',
47
- });
48
- const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(AgentCard_1.AgentCard, { agent: agent }));
49
- const output = lastFrame() ?? '';
50
- (0, vitest_1.expect)(output).toContain('\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591');
51
- (0, vitest_1.expect)(output).toContain('Idle');
52
- (0, vitest_1.expect)(output).toContain('0%');
53
- });
54
- (0, vitest_1.it)('should render running state with progress bar and percentage', () => {
55
- const agent = (0, types_1.createDefaultAgentState)({
56
- id: '1',
57
- name: 'security-specialist',
58
- role: 'specialist',
59
- status: 'running',
60
- progress: 50,
61
- });
62
- const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(AgentCard_1.AgentCard, { agent: agent }));
63
- const output = lastFrame() ?? '';
64
- (0, vitest_1.expect)(output).toContain('Running');
65
- (0, vitest_1.expect)(output).toContain('50%');
66
- (0, vitest_1.expect)(output).toContain('\u2593');
67
- });
68
- (0, vitest_1.it)('should render completed state with full progress bar', () => {
69
- const agent = (0, types_1.createDefaultAgentState)({
70
- id: '1',
71
- name: 'security-specialist',
72
- role: 'specialist',
73
- status: 'completed',
74
- progress: 60,
75
- });
76
- const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(AgentCard_1.AgentCard, { agent: agent }));
77
- const output = lastFrame() ?? '';
78
- (0, vitest_1.expect)(output).toContain('\u2593\u2593\u2593\u2593\u2593\u2593\u2593\u2593\u2593\u2593');
79
- (0, vitest_1.expect)(output).toContain('Done');
80
- (0, vitest_1.expect)(output).toContain('100%');
81
- (0, vitest_1.expect)(output).toContain('\u2713');
82
- });
83
- (0, vitest_1.it)('should render failed state', () => {
84
- const agent = (0, types_1.createDefaultAgentState)({
85
- id: '1',
86
- name: 'security-specialist',
87
- role: 'specialist',
88
- status: 'failed',
89
- progress: 30,
90
- });
91
- const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(AgentCard_1.AgentCard, { agent: agent }));
92
- const output = lastFrame() ?? '';
93
- (0, vitest_1.expect)(output).toContain('Failed');
94
- (0, vitest_1.expect)(output).toContain('\u2717');
95
- (0, vitest_1.expect)(output).toContain('30%');
96
- });
97
- (0, vitest_1.it)('should render default icon for unknown agent name', () => {
98
- const agent = (0, types_1.createDefaultAgentState)({
99
- id: '1',
100
- name: 'unknown-agent',
101
- role: 'specialist',
102
- });
103
- const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(AgentCard_1.AgentCard, { agent: agent }));
104
- (0, vitest_1.expect)(lastFrame()).toContain('[?]');
105
- });
106
- (0, vitest_1.it)('should abbreviate long agent names with ellipsis', () => {
107
- const agent = (0, types_1.createDefaultAgentState)({
108
- id: '1',
109
- name: 'a-very-long-agent-name-that-exceeds-column-width',
110
- role: 'specialist',
111
- });
112
- const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(AgentCard_1.AgentCard, { agent: agent }));
113
- const frame = lastFrame() ?? '';
114
- (0, vitest_1.expect)(frame).toContain('\u2026');
115
- (0, vitest_1.expect)(frame).not.toContain('a-very-long-agent-name-that-exceeds-column-width');
116
- });
117
- });
118
- //# sourceMappingURL=AgentCard.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AgentCard.spec.js","sourceRoot":"","sources":["../../../../src/tui/components/AgentCard.spec.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import React from 'react';
2
- import type { AgentMetadata } from '../events';
3
- export interface AgentGridProps {
4
- allAgents: AgentMetadata[];
5
- activeAgentIds: Set<string>;
6
- }
7
- export declare function AgentGrid({ allAgents, activeAgentIds, }: AgentGridProps): React.ReactElement | null;
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AgentGrid = AgentGrid;
4
- const react_1 = require("react");
5
- const ink_1 = require("ink");
6
- const events_1 = require("../events");
7
- const CategoryRow_1 = require("./CategoryRow");
8
- const agent_grid_pure_1 = require("./agent-grid.pure");
9
- function AgentGrid({ allAgents, activeAgentIds, }) {
10
- const { sortedCategories, agentsByCategory } = (0, react_1.useMemo)(() => {
11
- const grouped = (0, agent_grid_pure_1.groupByCategory)(allAgents);
12
- const categories = Array.from(grouped.keys());
13
- const sorted = (0, agent_grid_pure_1.sortCategoriesByActivity)(categories, activeAgentIds, grouped);
14
- return { sortedCategories: sorted, agentsByCategory: grouped };
15
- }, [allAgents, activeAgentIds]);
16
- if (allAgents.length === 0)
17
- return null;
18
- return (react_1.default.createElement(ink_1.Box, { flexDirection: "column" }, sortedCategories.map(category => (react_1.default.createElement(CategoryRow_1.CategoryRow, { key: category, category: category, agents: agentsByCategory.get(category) ?? [], activeAgentIds: activeAgentIds, icon: events_1.AGENT_ICONS[category] })))));
19
- }
20
- //# sourceMappingURL=AgentGrid.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AgentGrid.js","sourceRoot":"","sources":["../../../../src/tui/components/AgentGrid.tsx"],"names":[],"mappings":";;AAYA,8BA0BC;AAtCD,iCAAuC;AACvC,6BAA0B;AAE1B,sCAAwC;AACxC,+CAA4C;AAC5C,uDAA8E;AAO9E,SAAgB,SAAS,CAAC,EACxB,SAAS,EACT,cAAc,GACC;IACf,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QAC1D,MAAM,OAAO,GAAG,IAAA,iCAAe,EAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAA,0CAAwB,EAAC,UAAU,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC;IACjE,CAAC,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC;IAEhC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAExC,OAAO,CACL,8BAAC,SAAG,IAAC,aAAa,EAAC,QAAQ,IACxB,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAChC,8BAAC,yBAAW,IACV,GAAG,EAAE,QAAQ,EACb,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,EAC5C,cAAc,EAAE,cAAc,EAC9B,IAAI,EAAE,oBAAW,CAAC,QAAQ,CAAC,GAC3B,CACH,CAAC,CACE,CACP,CAAC;AACJ,CAAC"}