codingbuddy 4.0.0 → 4.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 (434) hide show
  1. package/README.md +3 -3
  2. package/dist/api/mcp.js +1 -2
  3. package/dist/api/mcp.js.map +1 -1
  4. package/dist/src/agent/agent-prompt.builder.js.map +1 -1
  5. package/dist/src/agent/agent.service.d.ts +2 -1
  6. package/dist/src/agent/agent.service.js +49 -0
  7. package/dist/src/agent/agent.service.js.map +1 -1
  8. package/dist/src/agent/agent.types.d.ts +26 -0
  9. package/dist/src/agent/agent.types.js +2 -10
  10. package/dist/src/agent/agent.types.js.map +1 -1
  11. package/dist/src/analyzer/analyzer.service.js +2 -4
  12. package/dist/src/analyzer/analyzer.service.js.map +1 -1
  13. package/dist/src/analyzer/code.sampler.js +4 -9
  14. package/dist/src/analyzer/code.sampler.js.map +1 -1
  15. package/dist/src/analyzer/config.analyzer.js +3 -13
  16. package/dist/src/analyzer/config.analyzer.js.map +1 -1
  17. package/dist/src/analyzer/conventions.analyzer.js +3 -11
  18. package/dist/src/analyzer/conventions.analyzer.js.map +1 -1
  19. package/dist/src/analyzer/conventions.types.js.map +1 -1
  20. package/dist/src/analyzer/directory.analyzer.js +5 -23
  21. package/dist/src/analyzer/directory.analyzer.js.map +1 -1
  22. package/dist/src/analyzer/package.analyzer.js +1 -3
  23. package/dist/src/analyzer/package.analyzer.js.map +1 -1
  24. package/dist/src/app.module.js +2 -0
  25. package/dist/src/app.module.js.map +1 -1
  26. package/dist/src/checklist/checklist.schema.js.map +1 -1
  27. package/dist/src/checklist/checklist.service.js.map +1 -1
  28. package/dist/src/checklist/checklist.types.js +1 -6
  29. package/dist/src/checklist/checklist.types.js.map +1 -1
  30. package/dist/src/cli/cli.d.ts +1 -1
  31. package/dist/src/cli/cli.js +9 -0
  32. package/dist/src/cli/cli.js.map +1 -1
  33. package/dist/src/cli/init/claude-settings.utils.d.ts +13 -0
  34. package/dist/src/cli/init/claude-settings.utils.js +74 -0
  35. package/dist/src/cli/init/claude-settings.utils.js.map +1 -0
  36. package/dist/src/cli/init/config.generator.js.map +1 -1
  37. package/dist/src/cli/init/config.writer.js.map +1 -1
  38. package/dist/src/cli/init/index.d.ts +2 -2
  39. package/dist/src/cli/init/index.js.map +1 -1
  40. package/dist/src/cli/init/init.command.js +13 -8
  41. package/dist/src/cli/init/init.command.js.map +1 -1
  42. package/dist/src/cli/init/init.constants.d.ts +1 -0
  43. package/dist/src/cli/init/init.constants.js +11 -2
  44. package/dist/src/cli/init/init.constants.js.map +1 -1
  45. package/dist/src/cli/init/init.wizard.js +3 -8
  46. package/dist/src/cli/init/init.wizard.js.map +1 -1
  47. package/dist/src/cli/init/prompt.builder.js.map +1 -1
  48. package/dist/src/cli/init/prompts/basic-prompt.js.map +1 -1
  49. package/dist/src/cli/init/prompts/index.d.ts +3 -3
  50. package/dist/src/cli/init/prompts/index.js.map +1 -1
  51. package/dist/src/cli/init/prompts/language-prompt.js +1 -3
  52. package/dist/src/cli/init/prompts/language-prompt.js.map +1 -1
  53. package/dist/src/cli/init/prompts/model-prompt.js.map +1 -1
  54. package/dist/src/cli/init/prompts/tech-stack-prompt.js.map +1 -1
  55. package/dist/src/cli/init/prompts/test-strategy-prompt.js.map +1 -1
  56. package/dist/src/cli/init/summary/index.d.ts +1 -1
  57. package/dist/src/cli/init/summary/index.js.map +1 -1
  58. package/dist/src/cli/init/templates/config-renderer.js.map +1 -1
  59. package/dist/src/cli/init/templates/index.d.ts +1 -1
  60. package/dist/src/cli/init/templates/index.js.map +1 -1
  61. package/dist/src/cli/init/templates/template.renderer.js.map +1 -1
  62. package/dist/src/cli/init/templates/template.selector.js.map +1 -1
  63. package/dist/src/cli/run-tui.d.ts +3 -0
  64. package/dist/src/cli/run-tui.js +105 -0
  65. package/dist/src/cli/run-tui.js.map +1 -0
  66. package/dist/src/config/config-diff.service.js +6 -7
  67. package/dist/src/config/config-diff.service.js.map +1 -1
  68. package/dist/src/config/config.loader.js +1 -3
  69. package/dist/src/config/config.loader.js.map +1 -1
  70. package/dist/src/config/config.schema.js +1 -3
  71. package/dist/src/config/config.schema.js.map +1 -1
  72. package/dist/src/config/config.service.js +1 -4
  73. package/dist/src/config/config.service.js.map +1 -1
  74. package/dist/src/config/context.loader.js.map +1 -1
  75. package/dist/src/config/ignore.parser.js.map +1 -1
  76. package/dist/src/config/index.d.ts +2 -2
  77. package/dist/src/config/index.js.map +1 -1
  78. package/dist/src/context/context-document.service.js +3 -1
  79. package/dist/src/context/context-document.service.js.map +1 -1
  80. package/dist/src/context/context-document.types.d.ts +2 -0
  81. package/dist/src/context/context-document.types.js +2 -8
  82. package/dist/src/context/context-document.types.js.map +1 -1
  83. package/dist/src/context/context-parser.utils.js +7 -8
  84. package/dist/src/context/context-parser.utils.js.map +1 -1
  85. package/dist/src/context/context-serializer.utils.js +1 -2
  86. package/dist/src/context/context-serializer.utils.js.map +1 -1
  87. package/dist/src/context/context.service.js +4 -16
  88. package/dist/src/context/context.service.js.map +1 -1
  89. package/dist/src/context/context.types.js +3 -17
  90. package/dist/src/context/context.types.js.map +1 -1
  91. package/dist/src/custom/custom.service.js.map +1 -1
  92. package/dist/src/diagnostic/diagnostic-log.service.js +1 -3
  93. package/dist/src/diagnostic/diagnostic-log.service.js.map +1 -1
  94. package/dist/src/keyword/activation-message.builder.js +2 -6
  95. package/dist/src/keyword/activation-message.builder.js.map +1 -1
  96. package/dist/src/keyword/auto-executor.js +1 -3
  97. package/dist/src/keyword/auto-executor.js.map +1 -1
  98. package/dist/src/keyword/auto-executor.types.js.map +1 -1
  99. package/dist/src/keyword/auto-formatter.js +2 -3
  100. package/dist/src/keyword/auto-formatter.js.map +1 -1
  101. package/dist/src/keyword/auto-prompt-builder.js +1 -3
  102. package/dist/src/keyword/auto-prompt-builder.js.map +1 -1
  103. package/dist/src/keyword/complexity-classifier.js +3 -7
  104. package/dist/src/keyword/complexity-classifier.js.map +1 -1
  105. package/dist/src/keyword/complexity-indicators.js.map +1 -1
  106. package/dist/src/keyword/keyword.module.js +1 -6
  107. package/dist/src/keyword/keyword.module.js.map +1 -1
  108. package/dist/src/keyword/keyword.service.d.ts +1 -0
  109. package/dist/src/keyword/keyword.service.js +24 -25
  110. package/dist/src/keyword/keyword.service.js.map +1 -1
  111. package/dist/src/keyword/keyword.types.d.ts +17 -0
  112. package/dist/src/keyword/keyword.types.js +2 -10
  113. package/dist/src/keyword/keyword.types.js.map +1 -1
  114. package/dist/src/keyword/patterns/devops.patterns.d.ts +2 -0
  115. package/dist/src/keyword/patterns/devops.patterns.js +56 -0
  116. package/dist/src/keyword/patterns/devops.patterns.js.map +1 -0
  117. package/dist/src/keyword/patterns/frontend.patterns.d.ts +2 -0
  118. package/dist/src/keyword/patterns/frontend.patterns.js +76 -0
  119. package/dist/src/keyword/patterns/frontend.patterns.js.map +1 -0
  120. package/dist/src/keyword/patterns/index.d.ts +1 -1
  121. package/dist/src/keyword/patterns/index.js.map +1 -1
  122. package/dist/src/keyword/patterns/intent-pattern-checks.js +12 -0
  123. package/dist/src/keyword/patterns/intent-pattern-checks.js.map +1 -1
  124. package/dist/src/keyword/primary-agent-resolver.d.ts +1 -1
  125. package/dist/src/keyword/primary-agent-resolver.js +2 -1
  126. package/dist/src/keyword/primary-agent-resolver.js.map +1 -1
  127. package/dist/src/keyword/rule-filter.js.map +1 -1
  128. package/dist/src/keyword/srp-template.js.map +1 -1
  129. package/dist/src/keyword/strategies/__tests__/strategy-test.utils.js.map +1 -1
  130. package/dist/src/keyword/strategies/act-agent.strategy.js +14 -5
  131. package/dist/src/keyword/strategies/act-agent.strategy.js.map +1 -1
  132. package/dist/src/keyword/strategies/eval-agent.strategy.js.map +1 -1
  133. package/dist/src/keyword/strategies/plan-agent.strategy.js.map +1 -1
  134. package/dist/src/keyword/strategies/resolution-strategy.interface.d.ts +1 -0
  135. package/dist/src/main.js +153 -1
  136. package/dist/src/main.js.map +1 -1
  137. package/dist/src/mcp/handlers/agent.handler.d.ts +1 -0
  138. package/dist/src/mcp/handlers/agent.handler.js +78 -5
  139. package/dist/src/mcp/handlers/agent.handler.js.map +1 -1
  140. package/dist/src/mcp/handlers/config.handler.js.map +1 -1
  141. package/dist/src/mcp/handlers/context-document.handler.js +13 -20
  142. package/dist/src/mcp/handlers/context-document.handler.js.map +1 -1
  143. package/dist/src/mcp/handlers/conventions.handler.js.map +1 -1
  144. package/dist/src/mcp/handlers/mode.handler.d.ts +4 -1
  145. package/dist/src/mcp/handlers/mode.handler.js +58 -5
  146. package/dist/src/mcp/handlers/mode.handler.js.map +1 -1
  147. package/dist/src/mcp/handlers/skill.handler.js +1 -3
  148. package/dist/src/mcp/handlers/skill.handler.js.map +1 -1
  149. package/dist/src/mcp/mcp-serverless.d.ts +1 -13
  150. package/dist/src/mcp/mcp-serverless.js +24 -206
  151. package/dist/src/mcp/mcp-serverless.js.map +1 -1
  152. package/dist/src/mcp/mcp.controller.d.ts +6 -2
  153. package/dist/src/mcp/mcp.controller.js +38 -9
  154. package/dist/src/mcp/mcp.controller.js.map +1 -1
  155. package/dist/src/mcp/mcp.module.js +2 -0
  156. package/dist/src/mcp/mcp.module.js.map +1 -1
  157. package/dist/src/mcp/mcp.service.d.ts +7 -1
  158. package/dist/src/mcp/mcp.service.js +55 -24
  159. package/dist/src/mcp/mcp.service.js.map +1 -1
  160. package/dist/src/mcp/sse-auth.guard.d.ts +6 -0
  161. package/dist/src/mcp/sse-auth.guard.js +53 -0
  162. package/dist/src/mcp/sse-auth.guard.js.map +1 -0
  163. package/dist/src/model/model.resolver.js.map +1 -1
  164. package/dist/src/rules/agent.schema.js.map +1 -1
  165. package/dist/src/rules/rules-content.utils.js.map +1 -1
  166. package/dist/src/rules/rules.service.d.ts +1 -3
  167. package/dist/src/rules/rules.service.js +43 -102
  168. package/dist/src/rules/rules.service.js.map +1 -1
  169. package/dist/src/rules/skill.schema.js.map +1 -1
  170. package/dist/src/shared/async.utils.js.map +1 -1
  171. package/dist/src/shared/esm-import.d.ts +1 -0
  172. package/dist/src/shared/esm-import.js +17 -0
  173. package/dist/src/shared/esm-import.js.map +1 -0
  174. package/dist/src/shared/file.utils.js +1 -2
  175. package/dist/src/shared/file.utils.js.map +1 -1
  176. package/dist/src/shared/format.utils.js.map +1 -1
  177. package/dist/src/shared/keyword-core.d.ts +9 -0
  178. package/dist/src/shared/keyword-core.js +95 -0
  179. package/dist/src/shared/keyword-core.js.map +1 -0
  180. package/dist/src/shared/language.service.js.map +1 -1
  181. package/dist/src/shared/path.utils.js +1 -2
  182. package/dist/src/shared/path.utils.js.map +1 -1
  183. package/dist/src/shared/pattern-matcher.js.map +1 -1
  184. package/dist/src/shared/rules-core.d.ts +27 -0
  185. package/dist/src/shared/rules-core.js +167 -0
  186. package/dist/src/shared/rules-core.js.map +1 -0
  187. package/dist/src/shared/security.utils.js +1 -2
  188. package/dist/src/shared/security.utils.js.map +1 -1
  189. package/dist/src/shared/slug.utils.js.map +1 -1
  190. package/dist/src/shared/token-counter.js.map +1 -1
  191. package/dist/src/shared/tui-bundle-path.d.ts +1 -0
  192. package/dist/src/shared/tui-bundle-path.js +8 -0
  193. package/dist/src/shared/tui-bundle-path.js.map +1 -0
  194. package/dist/src/shared/validation.constants.d.ts +1 -0
  195. package/dist/src/shared/validation.constants.js +6 -3
  196. package/dist/src/shared/validation.constants.js.map +1 -1
  197. package/dist/src/shared/verbosity.types.js +1 -2
  198. package/dist/src/shared/verbosity.types.js.map +1 -1
  199. package/dist/src/skill/i18n/keywords.js +44 -318
  200. package/dist/src/skill/i18n/keywords.js.map +1 -1
  201. package/dist/src/skill/i18n/keywords.types.js.map +1 -1
  202. package/dist/src/skill/skill-content.utils.js +1 -3
  203. package/dist/src/skill/skill-content.utils.js.map +1 -1
  204. package/dist/src/skill/skill-recommendation.service.js.map +1 -1
  205. package/dist/src/skill/skill-triggers.js.map +1 -1
  206. package/dist/src/state/state.service.js.map +1 -1
  207. package/dist/src/tui/__perf__/memory-stability.spec.d.ts +1 -0
  208. package/dist/src/tui/__perf__/memory-stability.spec.js +105 -0
  209. package/dist/src/tui/__perf__/memory-stability.spec.js.map +1 -0
  210. package/dist/src/tui/__perf__/rendering-performance.spec.d.ts +1 -0
  211. package/dist/src/tui/__perf__/rendering-performance.spec.js +166 -0
  212. package/dist/src/tui/__perf__/rendering-performance.spec.js.map +1 -0
  213. package/dist/src/tui/app.d.ts +6 -0
  214. package/dist/src/tui/app.js +20 -0
  215. package/dist/src/tui/app.js.map +1 -0
  216. package/dist/src/tui/app.spec.d.ts +1 -0
  217. package/dist/src/tui/app.spec.js +226 -0
  218. package/dist/src/tui/app.spec.js.map +1 -0
  219. package/dist/src/tui/cli-flags.d.ts +1 -0
  220. package/dist/src/tui/cli-flags.js +7 -0
  221. package/dist/src/tui/cli-flags.js.map +1 -0
  222. package/dist/src/tui/components/AgentCard.d.ts +6 -0
  223. package/dist/src/tui/components/AgentCard.js +18 -0
  224. package/dist/src/tui/components/AgentCard.js.map +1 -0
  225. package/dist/src/tui/components/AgentCard.spec.d.ts +1 -0
  226. package/dist/src/tui/components/AgentCard.spec.js +118 -0
  227. package/dist/src/tui/components/AgentCard.spec.js.map +1 -0
  228. package/dist/src/tui/components/AgentGrid.d.ts +7 -0
  229. package/dist/src/tui/components/AgentGrid.js +20 -0
  230. package/dist/src/tui/components/AgentGrid.js.map +1 -0
  231. package/dist/src/tui/components/AgentGrid.spec.d.ts +1 -0
  232. package/dist/src/tui/components/AgentGrid.spec.js +52 -0
  233. package/dist/src/tui/components/AgentGrid.spec.js.map +1 -0
  234. package/dist/src/tui/components/AgentTree.d.ts +7 -0
  235. package/dist/src/tui/components/AgentTree.js +24 -0
  236. package/dist/src/tui/components/AgentTree.js.map +1 -0
  237. package/dist/src/tui/components/AgentTree.spec.d.ts +1 -0
  238. package/dist/src/tui/components/AgentTree.spec.js +146 -0
  239. package/dist/src/tui/components/AgentTree.spec.js.map +1 -0
  240. package/dist/src/tui/components/CategoryRow.d.ts +9 -0
  241. package/dist/src/tui/components/CategoryRow.js +15 -0
  242. package/dist/src/tui/components/CategoryRow.js.map +1 -0
  243. package/dist/src/tui/components/CategoryRow.spec.d.ts +1 -0
  244. package/dist/src/tui/components/CategoryRow.spec.js +58 -0
  245. package/dist/src/tui/components/CategoryRow.spec.js.map +1 -0
  246. package/dist/src/tui/components/Header.d.ts +6 -0
  247. package/dist/src/tui/components/Header.js +18 -0
  248. package/dist/src/tui/components/Header.js.map +1 -0
  249. package/dist/src/tui/components/Header.spec.d.ts +1 -0
  250. package/dist/src/tui/components/Header.spec.js +38 -0
  251. package/dist/src/tui/components/Header.spec.js.map +1 -0
  252. package/dist/src/tui/components/ProgressBar.d.ts +7 -0
  253. package/dist/src/tui/components/ProgressBar.js +12 -0
  254. package/dist/src/tui/components/ProgressBar.js.map +1 -0
  255. package/dist/src/tui/components/ProgressBar.spec.d.ts +1 -0
  256. package/dist/src/tui/components/ProgressBar.spec.js +37 -0
  257. package/dist/src/tui/components/ProgressBar.spec.js.map +1 -0
  258. package/dist/src/tui/components/StatusBar.d.ts +8 -0
  259. package/dist/src/tui/components/StatusBar.js +29 -0
  260. package/dist/src/tui/components/StatusBar.js.map +1 -0
  261. package/dist/src/tui/components/StatusBar.spec.d.ts +1 -0
  262. package/dist/src/tui/components/StatusBar.spec.js +93 -0
  263. package/dist/src/tui/components/StatusBar.spec.js.map +1 -0
  264. package/dist/src/tui/components/agent-card.pure.d.ts +7 -0
  265. package/dist/src/tui/components/agent-card.pure.js +65 -0
  266. package/dist/src/tui/components/agent-card.pure.js.map +1 -0
  267. package/dist/src/tui/components/agent-grid.pure.d.ts +3 -0
  268. package/dist/src/tui/components/agent-grid.pure.js +35 -0
  269. package/dist/src/tui/components/agent-grid.pure.js.map +1 -0
  270. package/dist/src/tui/components/agent-mini-card.pure.d.ts +2 -0
  271. package/dist/src/tui/components/agent-mini-card.pure.js +17 -0
  272. package/dist/src/tui/components/agent-mini-card.pure.js.map +1 -0
  273. package/dist/src/tui/components/agent-tree.pure.d.ts +18 -0
  274. package/dist/src/tui/components/agent-tree.pure.js +41 -0
  275. package/dist/src/tui/components/agent-tree.pure.js.map +1 -0
  276. package/dist/src/tui/components/category-row.pure.d.ts +3 -0
  277. package/dist/src/tui/components/category-row.pure.js +26 -0
  278. package/dist/src/tui/components/category-row.pure.js.map +1 -0
  279. package/dist/src/tui/components/header.pure.d.ts +4 -0
  280. package/dist/src/tui/components/header.pure.js +15 -0
  281. package/dist/src/tui/components/header.pure.js.map +1 -0
  282. package/dist/src/tui/components/index.d.ts +15 -0
  283. package/dist/src/tui/components/index.js +52 -0
  284. package/dist/src/tui/components/index.js.map +1 -0
  285. package/dist/src/tui/components/progress-bar.pure.d.ts +2 -0
  286. package/dist/src/tui/components/progress-bar.pure.js +21 -0
  287. package/dist/src/tui/components/progress-bar.pure.js.map +1 -0
  288. package/dist/src/tui/components/status-bar.pure.d.ts +15 -0
  289. package/dist/src/tui/components/status-bar.pure.js +83 -0
  290. package/dist/src/tui/components/status-bar.pure.js.map +1 -0
  291. package/dist/src/tui/ensure-tui-ready.d.ts +3 -0
  292. package/dist/src/tui/ensure-tui-ready.js +39 -0
  293. package/dist/src/tui/ensure-tui-ready.js.map +1 -0
  294. package/dist/src/tui/eventbus-ui.integration.spec.d.ts +1 -0
  295. package/dist/src/tui/eventbus-ui.integration.spec.js +608 -0
  296. package/dist/src/tui/eventbus-ui.integration.spec.js.map +1 -0
  297. package/dist/src/tui/events/agent-metadata.service.d.ts +16 -0
  298. package/dist/src/tui/events/agent-metadata.service.js +80 -0
  299. package/dist/src/tui/events/agent-metadata.service.js.map +1 -0
  300. package/dist/src/tui/events/agent-metadata.types.d.ts +11 -0
  301. package/dist/src/tui/events/agent-metadata.types.js +59 -0
  302. package/dist/src/tui/events/agent-metadata.types.js.map +1 -0
  303. package/dist/src/tui/events/event-bus.d.ts +13 -0
  304. package/dist/src/tui/events/event-bus.js +42 -0
  305. package/dist/src/tui/events/event-bus.js.map +1 -0
  306. package/dist/src/tui/events/events.module.d.ts +2 -0
  307. package/dist/src/tui/events/events.module.js +25 -0
  308. package/dist/src/tui/events/events.module.js.map +1 -0
  309. package/dist/src/tui/events/index.d.ts +7 -0
  310. package/dist/src/tui/events/index.js +19 -0
  311. package/dist/src/tui/events/index.js.map +1 -0
  312. package/dist/src/tui/events/parse-agent.d.ts +2 -0
  313. package/dist/src/tui/events/parse-agent.js +84 -0
  314. package/dist/src/tui/events/parse-agent.js.map +1 -0
  315. package/dist/src/tui/events/parse-tool-response.d.ts +1 -0
  316. package/dist/src/tui/events/parse-tool-response.js +24 -0
  317. package/dist/src/tui/events/parse-tool-response.js.map +1 -0
  318. package/dist/src/tui/events/response-event-extractor.d.ts +12 -0
  319. package/dist/src/tui/events/response-event-extractor.js +71 -0
  320. package/dist/src/tui/events/response-event-extractor.js.map +1 -0
  321. package/dist/src/tui/events/tui-interceptor.d.ts +13 -0
  322. package/dist/src/tui/events/tui-interceptor.js +100 -0
  323. package/dist/src/tui/events/tui-interceptor.js.map +1 -0
  324. package/dist/src/tui/events/types.d.ts +51 -0
  325. package/dist/src/tui/events/types.js +13 -0
  326. package/dist/src/tui/events/types.js.map +1 -0
  327. package/dist/src/tui/hooks/index.d.ts +5 -0
  328. package/dist/src/tui/hooks/index.js +12 -0
  329. package/dist/src/tui/hooks/index.js.map +1 -0
  330. package/dist/src/tui/hooks/use-agent-state.d.ts +7 -0
  331. package/dist/src/tui/hooks/use-agent-state.js +13 -0
  332. package/dist/src/tui/hooks/use-agent-state.js.map +1 -0
  333. package/dist/src/tui/hooks/use-agent-state.spec.d.ts +1 -0
  334. package/dist/src/tui/hooks/use-agent-state.spec.js +167 -0
  335. package/dist/src/tui/hooks/use-agent-state.spec.js.map +1 -0
  336. package/dist/src/tui/hooks/use-clock.d.ts +1 -0
  337. package/dist/src/tui/hooks/use-clock.js +16 -0
  338. package/dist/src/tui/hooks/use-clock.js.map +1 -0
  339. package/dist/src/tui/hooks/use-clock.spec.d.ts +1 -0
  340. package/dist/src/tui/hooks/use-clock.spec.js +43 -0
  341. package/dist/src/tui/hooks/use-clock.spec.js.map +1 -0
  342. package/dist/src/tui/hooks/use-event-bus.d.ts +34 -0
  343. package/dist/src/tui/hooks/use-event-bus.js +91 -0
  344. package/dist/src/tui/hooks/use-event-bus.js.map +1 -0
  345. package/dist/src/tui/hooks/use-event-bus.spec.d.ts +1 -0
  346. package/dist/src/tui/hooks/use-event-bus.spec.js +362 -0
  347. package/dist/src/tui/hooks/use-event-bus.spec.js.map +1 -0
  348. package/dist/src/tui/index.d.ts +12 -0
  349. package/dist/src/tui/index.js +32 -0
  350. package/dist/src/tui/index.js.map +1 -0
  351. package/dist/src/tui/ipc/index.d.ts +9 -0
  352. package/dist/src/tui/ipc/index.js +24 -0
  353. package/dist/src/tui/ipc/index.js.map +1 -0
  354. package/dist/src/tui/ipc/instance-registry.d.ts +12 -0
  355. package/dist/src/tui/ipc/instance-registry.js +81 -0
  356. package/dist/src/tui/ipc/instance-registry.js.map +1 -0
  357. package/dist/src/tui/ipc/ipc-bridge.d.ts +11 -0
  358. package/dist/src/tui/ipc/ipc-bridge.js +33 -0
  359. package/dist/src/tui/ipc/ipc-bridge.js.map +1 -0
  360. package/dist/src/tui/ipc/ipc-client.d.ts +21 -0
  361. package/dist/src/tui/ipc/ipc-client.js +102 -0
  362. package/dist/src/tui/ipc/ipc-client.js.map +1 -0
  363. package/dist/src/tui/ipc/ipc-debug.d.ts +1 -0
  364. package/dist/src/tui/ipc/ipc-debug.js +11 -0
  365. package/dist/src/tui/ipc/ipc-debug.js.map +1 -0
  366. package/dist/src/tui/ipc/ipc-server.d.ts +15 -0
  367. package/dist/src/tui/ipc/ipc-server.js +98 -0
  368. package/dist/src/tui/ipc/ipc-server.js.map +1 -0
  369. package/dist/src/tui/ipc/ipc-state-cache.d.ts +16 -0
  370. package/dist/src/tui/ipc/ipc-state-cache.js +62 -0
  371. package/dist/src/tui/ipc/ipc-state-cache.js.map +1 -0
  372. package/dist/src/tui/ipc/ipc.types.d.ts +19 -0
  373. package/dist/src/tui/ipc/ipc.types.js +45 -0
  374. package/dist/src/tui/ipc/ipc.types.js.map +1 -0
  375. package/dist/src/tui/ipc/shutdown-manager.d.ts +7 -0
  376. package/dist/src/tui/ipc/shutdown-manager.js +32 -0
  377. package/dist/src/tui/ipc/shutdown-manager.js.map +1 -0
  378. package/dist/src/tui/ipc/test-utils.d.ts +2 -0
  379. package/dist/src/tui/ipc/test-utils.js +20 -0
  380. package/dist/src/tui/ipc/test-utils.js.map +1 -0
  381. package/dist/src/tui/transport-tui.integration.spec.d.ts +1 -0
  382. package/dist/src/tui/transport-tui.integration.spec.js +189 -0
  383. package/dist/src/tui/transport-tui.integration.spec.js.map +1 -0
  384. package/dist/src/tui/tui-config.d.ts +11 -0
  385. package/dist/src/tui/tui-config.js +32 -0
  386. package/dist/src/tui/tui-config.js.map +1 -0
  387. package/dist/src/tui/types.d.ts +22 -0
  388. package/dist/src/tui/types.js +34 -0
  389. package/dist/src/tui/types.js.map +1 -0
  390. package/dist/src/tui/utils/colors.d.ts +5 -0
  391. package/dist/src/tui/utils/colors.js +35 -0
  392. package/dist/src/tui/utils/colors.js.map +1 -0
  393. package/dist/src/tui/utils/constants.d.ts +3 -0
  394. package/dist/src/tui/utils/constants.js +15 -0
  395. package/dist/src/tui/utils/constants.js.map +1 -0
  396. package/dist/src/tui/utils/display-width.d.ts +3 -0
  397. package/dist/src/tui/utils/display-width.js +45 -0
  398. package/dist/src/tui/utils/display-width.js.map +1 -0
  399. package/dist/src/tui/utils/icons.d.ts +7 -0
  400. package/dist/src/tui/utils/icons.js +49 -0
  401. package/dist/src/tui/utils/icons.js.map +1 -0
  402. package/dist/src/tui/utils/index.d.ts +4 -0
  403. package/dist/src/tui/utils/index.js +19 -0
  404. package/dist/src/tui/utils/index.js.map +1 -0
  405. package/dist/tsconfig.build.tsbuildinfo +1 -1
  406. package/package.json +14 -4
  407. package/dist/src/mcp/handlers/session.handler.d.ts +0 -15
  408. package/dist/src/mcp/handlers/session.handler.js +0 -238
  409. package/dist/src/mcp/handlers/session.handler.js.map +0 -1
  410. package/dist/src/session/__tests__/session-test.utils.d.ts +0 -5
  411. package/dist/src/session/__tests__/session-test.utils.js +0 -59
  412. package/dist/src/session/__tests__/session-test.utils.js.map +0 -1
  413. package/dist/src/session/index.d.ts +0 -3
  414. package/dist/src/session/index.js +0 -8
  415. package/dist/src/session/index.js.map +0 -1
  416. package/dist/src/session/session.cache.d.ts +0 -19
  417. package/dist/src/session/session.cache.js +0 -83
  418. package/dist/src/session/session.cache.js.map +0 -1
  419. package/dist/src/session/session.module.d.ts +0 -2
  420. package/dist/src/session/session.module.js +0 -23
  421. package/dist/src/session/session.module.js.map +0 -1
  422. package/dist/src/session/session.parser.d.ts +0 -22
  423. package/dist/src/session/session.parser.js +0 -273
  424. package/dist/src/session/session.parser.js.map +0 -1
  425. package/dist/src/session/session.serializer.d.ts +0 -6
  426. package/dist/src/session/session.serializer.js +0 -84
  427. package/dist/src/session/session.serializer.js.map +0 -1
  428. package/dist/src/session/session.service.d.ts +0 -24
  429. package/dist/src/session/session.service.js +0 -309
  430. package/dist/src/session/session.service.js.map +0 -1
  431. package/dist/src/session/session.types.d.ts +0 -52
  432. package/dist/src/session/session.types.js +0 -3
  433. package/dist/src/session/session.types.js.map +0 -1
  434. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1,608 @@
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)('EventBus ↔ UI Integration', () => {
17
+ (0, vitest_1.describe)('Agent 활성화 → AgentCard 상태 변화', () => {
18
+ (0, vitest_1.it)('should show primary agent name in AgentTree when AGENT_ACTIVATED with isPrimary=true', async () => {
19
+ const eventBus = new events_1.TuiEventBus();
20
+ const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
21
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
22
+ agentId: 'arch-1',
23
+ name: 'solution-architect',
24
+ role: 'primary',
25
+ isPrimary: true,
26
+ });
27
+ await tick();
28
+ const frame = lastFrame() ?? '';
29
+ (0, vitest_1.expect)(frame).toContain('soluti');
30
+ (0, vitest_1.expect)(frame).toContain('1 active');
31
+ });
32
+ (0, vitest_1.it)('should show multiple parallel agents in AgentTree when specialists activated', async () => {
33
+ const eventBus = new events_1.TuiEventBus();
34
+ const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
35
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
36
+ agentId: 'p1',
37
+ name: 'solution-architect',
38
+ role: 'primary',
39
+ isPrimary: true,
40
+ });
41
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
42
+ agentId: 's1',
43
+ name: 'security-specialist',
44
+ role: 'specialist',
45
+ isPrimary: false,
46
+ });
47
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
48
+ agentId: 's2',
49
+ name: 'performance-specialist',
50
+ role: 'specialist',
51
+ isPrimary: false,
52
+ });
53
+ await tick();
54
+ const frame = lastFrame() ?? '';
55
+ (0, vitest_1.expect)(frame).toContain('securi');
56
+ (0, vitest_1.expect)(frame).toContain('perfor');
57
+ (0, vitest_1.expect)(frame).toContain('3 active');
58
+ });
59
+ });
60
+ (0, vitest_1.describe)('Agent 비활성화 → AgentCard Idle 전환', () => {
61
+ (0, vitest_1.it)('should decrease active count when agent deactivated with reason=completed', async () => {
62
+ const eventBus = new events_1.TuiEventBus();
63
+ const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
64
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
65
+ agentId: 'a1',
66
+ name: 'security-specialist',
67
+ role: 'specialist',
68
+ isPrimary: false,
69
+ });
70
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
71
+ agentId: 'a2',
72
+ name: 'test-strategy-specialist',
73
+ role: 'specialist',
74
+ isPrimary: false,
75
+ });
76
+ await tick();
77
+ (0, vitest_1.expect)(lastFrame()).toContain('2 active');
78
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_DEACTIVATED, {
79
+ agentId: 'a1',
80
+ reason: 'completed',
81
+ durationMs: 1200,
82
+ });
83
+ await tick();
84
+ (0, vitest_1.expect)(lastFrame()).toContain('1 active');
85
+ });
86
+ (0, vitest_1.it)('should decrease active count when agent deactivated with reason=error', async () => {
87
+ const eventBus = new events_1.TuiEventBus();
88
+ const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
89
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
90
+ agentId: 'a1',
91
+ name: 'security-specialist',
92
+ role: 'specialist',
93
+ isPrimary: true,
94
+ });
95
+ await tick();
96
+ (0, vitest_1.expect)(lastFrame()).toContain('1 active');
97
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_DEACTIVATED, {
98
+ agentId: 'a1',
99
+ reason: 'error',
100
+ durationMs: 500,
101
+ });
102
+ await tick();
103
+ (0, vitest_1.expect)(lastFrame()).toContain('0 active');
104
+ });
105
+ (0, vitest_1.it)('should clear AgentTree primary slot when primary agent deactivated', async () => {
106
+ const eventBus = new events_1.TuiEventBus();
107
+ const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
108
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
109
+ agentId: 'p1',
110
+ name: 'solution-architect',
111
+ role: 'primary',
112
+ isPrimary: true,
113
+ });
114
+ await tick();
115
+ (0, vitest_1.expect)(lastFrame()).toContain('soluti');
116
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_DEACTIVATED, {
117
+ agentId: 'p1',
118
+ reason: 'completed',
119
+ durationMs: 2000,
120
+ });
121
+ await tick();
122
+ const frame = lastFrame() ?? '';
123
+ (0, vitest_1.expect)(frame).toContain('0 active');
124
+ });
125
+ });
126
+ (0, vitest_1.describe)('Mode 변경 → Header 업데이트', () => {
127
+ (0, vitest_1.it)('should display ACT in Header when mode changes from PLAN to ACT', 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.MODE_CHANGED, { from: 'PLAN', to: 'ACT' });
131
+ await tick();
132
+ (0, vitest_1.expect)(lastFrame()).toContain('ACT');
133
+ });
134
+ (0, vitest_1.it)('should display EVAL in Header when mode changes from ACT to EVAL', async () => {
135
+ const eventBus = new events_1.TuiEventBus();
136
+ const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
137
+ eventBus.emit(events_1.TUI_EVENTS.MODE_CHANGED, { from: null, to: 'ACT' });
138
+ await tick();
139
+ eventBus.emit(events_1.TUI_EVENTS.MODE_CHANGED, { from: 'ACT', to: 'EVAL' });
140
+ await tick();
141
+ const frame = lastFrame() ?? '';
142
+ (0, vitest_1.expect)(frame).toContain('EVAL');
143
+ });
144
+ (0, vitest_1.it)('should reflect only the latest mode after rapid consecutive changes', async () => {
145
+ const eventBus = new events_1.TuiEventBus();
146
+ const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
147
+ eventBus.emit(events_1.TUI_EVENTS.MODE_CHANGED, { from: null, to: 'PLAN' });
148
+ eventBus.emit(events_1.TUI_EVENTS.MODE_CHANGED, { from: 'PLAN', to: 'ACT' });
149
+ eventBus.emit(events_1.TUI_EVENTS.MODE_CHANGED, { from: 'ACT', to: 'AUTO' });
150
+ await tick();
151
+ (0, vitest_1.expect)(lastFrame()).toContain('AUTO');
152
+ });
153
+ });
154
+ (0, vitest_1.describe)('Parallel 시작/완료 → AgentTree 업데이트', () => {
155
+ (0, vitest_1.it)('should show specialists in AgentTree after PARALLEL_STARTED + individual activations', async () => {
156
+ const eventBus = new events_1.TuiEventBus();
157
+ const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
158
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
159
+ agentId: 'p1',
160
+ name: 'solution-architect',
161
+ role: 'primary',
162
+ isPrimary: true,
163
+ });
164
+ eventBus.emit(events_1.TUI_EVENTS.PARALLEL_STARTED, {
165
+ specialists: ['security-specialist', 'test-strategy-specialist'],
166
+ mode: 'PLAN',
167
+ });
168
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
169
+ agentId: 'sec-1',
170
+ name: 'security-specialist',
171
+ role: 'specialist',
172
+ isPrimary: false,
173
+ });
174
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
175
+ agentId: 'test-1',
176
+ name: 'test-strategy-specialist',
177
+ role: 'specialist',
178
+ isPrimary: false,
179
+ });
180
+ await tick();
181
+ const frame = lastFrame() ?? '';
182
+ (0, vitest_1.expect)(frame).toContain('securi');
183
+ (0, vitest_1.expect)(frame).toContain('test-s');
184
+ (0, vitest_1.expect)(frame).toContain('3 active');
185
+ });
186
+ (0, vitest_1.it)('should clear specialists from AgentTree after individual deactivations + PARALLEL_COMPLETED', async () => {
187
+ const eventBus = new events_1.TuiEventBus();
188
+ const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
189
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
190
+ agentId: 'p1',
191
+ name: 'solution-architect',
192
+ role: 'primary',
193
+ isPrimary: true,
194
+ });
195
+ eventBus.emit(events_1.TUI_EVENTS.PARALLEL_STARTED, {
196
+ specialists: ['security-specialist', 'test-strategy-specialist'],
197
+ mode: 'PLAN',
198
+ });
199
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
200
+ agentId: 'sec-1',
201
+ name: 'security-specialist',
202
+ role: 'specialist',
203
+ isPrimary: false,
204
+ });
205
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
206
+ agentId: 'test-1',
207
+ name: 'test-strategy-specialist',
208
+ role: 'specialist',
209
+ isPrimary: false,
210
+ });
211
+ await tick();
212
+ (0, vitest_1.expect)(lastFrame()).toContain('3 active');
213
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_DEACTIVATED, {
214
+ agentId: 'sec-1',
215
+ reason: 'completed',
216
+ durationMs: 800,
217
+ });
218
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_DEACTIVATED, {
219
+ agentId: 'test-1',
220
+ reason: 'completed',
221
+ durationMs: 1200,
222
+ });
223
+ eventBus.emit(events_1.TUI_EVENTS.PARALLEL_COMPLETED, {
224
+ specialists: ['security-specialist', 'test-strategy-specialist'],
225
+ results: {
226
+ 'security-specialist': 'No issues found',
227
+ 'test-strategy-specialist': 'Tests designed',
228
+ },
229
+ });
230
+ await tick();
231
+ (0, vitest_1.expect)(lastFrame()).toContain('1 active');
232
+ });
233
+ (0, vitest_1.it)('should handle full parallel lifecycle: start → activate → deactivate → complete', async () => {
234
+ const eventBus = new events_1.TuiEventBus();
235
+ const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
236
+ eventBus.emit(events_1.TUI_EVENTS.MODE_CHANGED, { from: null, to: 'PLAN' });
237
+ await tick();
238
+ (0, vitest_1.expect)(lastFrame()).toContain('PLAN');
239
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
240
+ agentId: 'p1',
241
+ name: 'solution-architect',
242
+ role: 'primary',
243
+ isPrimary: true,
244
+ });
245
+ await tick();
246
+ (0, vitest_1.expect)(lastFrame()).toContain('1 active');
247
+ eventBus.emit(events_1.TUI_EVENTS.PARALLEL_STARTED, {
248
+ specialists: ['security-specialist', 'accessibility-specialist', 'performance-specialist'],
249
+ mode: 'PLAN',
250
+ });
251
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
252
+ agentId: 'sec-1',
253
+ name: 'security-specialist',
254
+ role: 'specialist',
255
+ isPrimary: false,
256
+ });
257
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
258
+ agentId: 'acc-1',
259
+ name: 'accessibility-specialist',
260
+ role: 'specialist',
261
+ isPrimary: false,
262
+ });
263
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
264
+ agentId: 'perf-1',
265
+ name: 'performance-specialist',
266
+ role: 'specialist',
267
+ isPrimary: false,
268
+ });
269
+ await tick();
270
+ (0, vitest_1.expect)(lastFrame()).toContain('4 active');
271
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_DEACTIVATED, {
272
+ agentId: 'sec-1',
273
+ reason: 'completed',
274
+ durationMs: 500,
275
+ });
276
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_DEACTIVATED, {
277
+ agentId: 'acc-1',
278
+ reason: 'completed',
279
+ durationMs: 700,
280
+ });
281
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_DEACTIVATED, {
282
+ agentId: 'perf-1',
283
+ reason: 'completed',
284
+ durationMs: 900,
285
+ });
286
+ eventBus.emit(events_1.TUI_EVENTS.PARALLEL_COMPLETED, {
287
+ specialists: ['security-specialist', 'accessibility-specialist', 'performance-specialist'],
288
+ results: {
289
+ 'security-specialist': 'done',
290
+ 'accessibility-specialist': 'done',
291
+ 'performance-specialist': 'done',
292
+ },
293
+ });
294
+ await tick();
295
+ const frame = lastFrame() ?? '';
296
+ (0, vitest_1.expect)(frame).toContain('1 active');
297
+ (0, vitest_1.expect)(frame).toContain('PLAN');
298
+ });
299
+ });
300
+ (0, vitest_1.describe)('Skill 추천 → StatusBar 업데이트', () => {
301
+ (0, vitest_1.it)('should display all skill names when multiple skills recommended sequentially', async () => {
302
+ const eventBus = new events_1.TuiEventBus();
303
+ const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
304
+ eventBus.emit(events_1.TUI_EVENTS.SKILL_RECOMMENDED, {
305
+ skillName: 'brainstorming',
306
+ reason: 'creative work',
307
+ });
308
+ eventBus.emit(events_1.TUI_EVENTS.SKILL_RECOMMENDED, {
309
+ skillName: 'test-driven-development',
310
+ reason: 'TDD cycle',
311
+ });
312
+ await tick();
313
+ const frame = lastFrame() ?? '';
314
+ (0, vitest_1.expect)(frame).toContain('brainstorming');
315
+ (0, vitest_1.expect)(frame).toContain('test-driven-development');
316
+ });
317
+ (0, vitest_1.it)('should handle skill recommendation alongside agent activation', async () => {
318
+ const eventBus = new events_1.TuiEventBus();
319
+ const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
320
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
321
+ agentId: 'a1',
322
+ name: 'security-specialist',
323
+ role: 'specialist',
324
+ isPrimary: true,
325
+ });
326
+ eventBus.emit(events_1.TUI_EVENTS.SKILL_RECOMMENDED, {
327
+ skillName: 'systematic-debugging',
328
+ reason: 'bug detected',
329
+ });
330
+ await tick();
331
+ const frame = lastFrame() ?? '';
332
+ (0, vitest_1.expect)(frame).toContain('1 active');
333
+ (0, vitest_1.expect)(frame).toContain('systematic-debugging');
334
+ });
335
+ });
336
+ (0, vitest_1.describe)('이벤트 버퍼링 (TUI 시작 전 이벤트)', () => {
337
+ (0, vitest_1.it)('should NOT reflect MODE_CHANGED emitted before App mount', async () => {
338
+ const eventBus = new events_1.TuiEventBus();
339
+ eventBus.emit(events_1.TUI_EVENTS.MODE_CHANGED, { from: null, to: 'ACT' });
340
+ const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
341
+ await tick();
342
+ const frame = lastFrame() ?? '';
343
+ (0, vitest_1.expect)(frame).not.toContain('ACT');
344
+ });
345
+ (0, vitest_1.it)('should NOT reflect AGENT_ACTIVATED emitted before App mount', async () => {
346
+ const eventBus = new events_1.TuiEventBus();
347
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
348
+ agentId: 'a1',
349
+ name: 'security-specialist',
350
+ role: 'specialist',
351
+ isPrimary: true,
352
+ });
353
+ const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
354
+ await tick();
355
+ (0, vitest_1.expect)(lastFrame()).toContain('0 active');
356
+ });
357
+ (0, vitest_1.it)('should sync state via re-emitting events after App mount', async () => {
358
+ const eventBus = new events_1.TuiEventBus();
359
+ eventBus.emit(events_1.TUI_EVENTS.MODE_CHANGED, { from: null, to: 'PLAN' });
360
+ const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
361
+ await tick();
362
+ eventBus.emit(events_1.TUI_EVENTS.MODE_CHANGED, { from: null, to: 'PLAN' });
363
+ eventBus.emit(events_1.TUI_EVENTS.AGENTS_LOADED, {
364
+ agents: [
365
+ {
366
+ id: 'security-specialist',
367
+ name: 'security-specialist',
368
+ description: 'Security analysis',
369
+ category: 'Security',
370
+ icon: '🔒',
371
+ expertise: ['security'],
372
+ },
373
+ ],
374
+ });
375
+ await tick();
376
+ const frame = lastFrame() ?? '';
377
+ (0, vitest_1.expect)(frame).toContain('PLAN');
378
+ (0, vitest_1.expect)(frame).toContain('Security');
379
+ });
380
+ });
381
+ (0, vitest_1.describe)('복합 시나리오 통합 테스트', () => {
382
+ (0, vitest_1.it)('should handle real workflow: mode → agents → parallel → skills → completion', async () => {
383
+ const eventBus = new events_1.TuiEventBus();
384
+ const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
385
+ const agents = [
386
+ {
387
+ id: 'security-specialist',
388
+ name: 'security-specialist',
389
+ description: 'Security',
390
+ category: 'Security',
391
+ icon: '🔒',
392
+ expertise: ['security'],
393
+ },
394
+ {
395
+ id: 'test-strategy-specialist',
396
+ name: 'test-strategy-specialist',
397
+ description: 'Testing',
398
+ category: 'Testing',
399
+ icon: '🧪',
400
+ expertise: ['testing'],
401
+ },
402
+ {
403
+ id: 'architecture-specialist',
404
+ name: 'architecture-specialist',
405
+ description: 'Architecture',
406
+ category: 'Architecture',
407
+ icon: '🏛️',
408
+ expertise: ['architecture'],
409
+ },
410
+ ];
411
+ eventBus.emit(events_1.TUI_EVENTS.AGENTS_LOADED, { agents });
412
+ await tick();
413
+ eventBus.emit(events_1.TUI_EVENTS.MODE_CHANGED, { from: null, to: 'PLAN' });
414
+ await tick();
415
+ (0, vitest_1.expect)(lastFrame()).toContain('PLAN');
416
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
417
+ agentId: 'arch-1',
418
+ name: 'architecture-specialist',
419
+ role: 'primary',
420
+ isPrimary: true,
421
+ });
422
+ await tick();
423
+ (0, vitest_1.expect)(lastFrame()).toContain('1 active');
424
+ eventBus.emit(events_1.TUI_EVENTS.SKILL_RECOMMENDED, {
425
+ skillName: 'brainstorming',
426
+ reason: 'planning phase',
427
+ });
428
+ await tick();
429
+ (0, vitest_1.expect)(lastFrame()).toContain('brainstorming');
430
+ eventBus.emit(events_1.TUI_EVENTS.PARALLEL_STARTED, {
431
+ specialists: ['security-specialist', 'test-strategy-specialist'],
432
+ mode: 'PLAN',
433
+ });
434
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
435
+ agentId: 'sec-1',
436
+ name: 'security-specialist',
437
+ role: 'specialist',
438
+ isPrimary: false,
439
+ });
440
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
441
+ agentId: 'test-1',
442
+ name: 'test-strategy-specialist',
443
+ role: 'specialist',
444
+ isPrimary: false,
445
+ });
446
+ await tick();
447
+ (0, vitest_1.expect)(lastFrame()).toContain('3 active');
448
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_DEACTIVATED, {
449
+ agentId: 'sec-1',
450
+ reason: 'completed',
451
+ durationMs: 600,
452
+ });
453
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_DEACTIVATED, {
454
+ agentId: 'test-1',
455
+ reason: 'completed',
456
+ durationMs: 800,
457
+ });
458
+ eventBus.emit(events_1.TUI_EVENTS.PARALLEL_COMPLETED, {
459
+ specialists: ['security-specialist', 'test-strategy-specialist'],
460
+ results: {
461
+ 'security-specialist': 'ok',
462
+ 'test-strategy-specialist': 'ok',
463
+ },
464
+ });
465
+ await tick();
466
+ const frame = lastFrame() ?? '';
467
+ (0, vitest_1.expect)(frame).toContain('PLAN');
468
+ (0, vitest_1.expect)(frame).toContain('1 active');
469
+ (0, vitest_1.expect)(frame).toContain('brainstorming');
470
+ (0, vitest_1.expect)(frame).toContain('Security');
471
+ (0, vitest_1.expect)(frame).toContain('Testing');
472
+ });
473
+ (0, vitest_1.it)('should handle error scenario: activate → error deactivation → re-activate', async () => {
474
+ const eventBus = new events_1.TuiEventBus();
475
+ const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
476
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
477
+ agentId: 'a1',
478
+ name: 'security-specialist',
479
+ role: 'specialist',
480
+ isPrimary: true,
481
+ });
482
+ await tick();
483
+ (0, vitest_1.expect)(lastFrame()).toContain('1 active');
484
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_DEACTIVATED, {
485
+ agentId: 'a1',
486
+ reason: 'error',
487
+ durationMs: 300,
488
+ });
489
+ await tick();
490
+ (0, vitest_1.expect)(lastFrame()).toContain('0 active');
491
+ eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
492
+ agentId: 'a1',
493
+ name: 'security-specialist',
494
+ role: 'specialist',
495
+ isPrimary: true,
496
+ });
497
+ await tick();
498
+ (0, vitest_1.expect)(lastFrame()).toContain('1 active');
499
+ });
500
+ });
501
+ (0, vitest_1.describe)('Interceptor → EventBus → UI 통합 (semantic events)', () => {
502
+ (0, vitest_1.it)('should update Header mode when parse_mode tool is intercepted', async () => {
503
+ const eventBus = new events_1.TuiEventBus();
504
+ const interceptor = new events_1.TuiInterceptor(eventBus);
505
+ interceptor.enable();
506
+ const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
507
+ await tick();
508
+ await interceptor.intercept('parse_mode', { prompt: 'PLAN design auth feature' }, async () => ({
509
+ content: [
510
+ {
511
+ type: 'text',
512
+ text: JSON.stringify({
513
+ mode: 'PLAN',
514
+ originalPrompt: 'design auth feature',
515
+ }),
516
+ },
517
+ ],
518
+ }));
519
+ await new Promise(resolve => setImmediate(resolve));
520
+ await tick();
521
+ (0, vitest_1.expect)(lastFrame()).toContain('PLAN');
522
+ });
523
+ (0, vitest_1.it)('should show skills in StatusBar when parse_mode returns included_skills', async () => {
524
+ const eventBus = new events_1.TuiEventBus();
525
+ const interceptor = new events_1.TuiInterceptor(eventBus);
526
+ interceptor.enable();
527
+ const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
528
+ await tick();
529
+ await interceptor.intercept('parse_mode', { prompt: 'PLAN something' }, async () => ({
530
+ content: [
531
+ {
532
+ type: 'text',
533
+ text: JSON.stringify({
534
+ mode: 'PLAN',
535
+ included_skills: [
536
+ { name: 'brainstorming', reason: 'creative work' },
537
+ { name: 'writing-plans', reason: 'multi-step task' },
538
+ ],
539
+ }),
540
+ },
541
+ ],
542
+ }));
543
+ await new Promise(resolve => setImmediate(resolve));
544
+ await tick();
545
+ const frame = lastFrame() ?? '';
546
+ (0, vitest_1.expect)(frame).toContain('PLAN');
547
+ (0, vitest_1.expect)(frame).toContain('brainstorming');
548
+ (0, vitest_1.expect)(frame).toContain('writing-plans');
549
+ });
550
+ (0, vitest_1.it)('should show agent activation for mapped general tools like search_rules', async () => {
551
+ const eventBus = new events_1.TuiEventBus();
552
+ const interceptor = new events_1.TuiInterceptor(eventBus);
553
+ interceptor.enable();
554
+ const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
555
+ await tick();
556
+ await interceptor.intercept('search_rules', { query: 'test' }, async () => ({
557
+ content: [{ type: 'text', text: '{"results":[]}' }],
558
+ }));
559
+ await new Promise(resolve => setImmediate(resolve));
560
+ await tick();
561
+ const frame = lastFrame() ?? '';
562
+ (0, vitest_1.expect)(frame).toContain('0 active');
563
+ });
564
+ (0, vitest_1.it)('should handle full interceptor workflow: parse_mode + parallel agents', async () => {
565
+ const eventBus = new events_1.TuiEventBus();
566
+ const interceptor = new events_1.TuiInterceptor(eventBus);
567
+ interceptor.enable();
568
+ const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
569
+ await tick();
570
+ await interceptor.intercept('parse_mode', { prompt: 'EVAL review code' }, async () => ({
571
+ content: [
572
+ {
573
+ type: 'text',
574
+ text: JSON.stringify({
575
+ mode: 'EVAL',
576
+ included_skills: [{ name: 'systematic-debugging', reason: 'bug' }],
577
+ }),
578
+ },
579
+ ],
580
+ }));
581
+ await new Promise(resolve => setImmediate(resolve));
582
+ await tick();
583
+ let frame = lastFrame() ?? '';
584
+ (0, vitest_1.expect)(frame).toContain('EVAL');
585
+ (0, vitest_1.expect)(frame).toContain('systematic-debugging');
586
+ await interceptor.intercept('prepare_parallel_agents', { specialists: ['security', 'perf'], mode: 'EVAL' }, async () => ({
587
+ content: [
588
+ {
589
+ type: 'text',
590
+ text: JSON.stringify({
591
+ agents: [
592
+ { agentName: 'security-specialist' },
593
+ { agentName: 'performance-specialist' },
594
+ ],
595
+ mode: 'EVAL',
596
+ }),
597
+ },
598
+ ],
599
+ }));
600
+ await new Promise(resolve => setImmediate(resolve));
601
+ await tick();
602
+ frame = lastFrame() ?? '';
603
+ (0, vitest_1.expect)(frame).toContain('EVAL');
604
+ (0, vitest_1.expect)(frame).toContain('systematic-debugging');
605
+ });
606
+ });
607
+ });
608
+ //# sourceMappingURL=eventbus-ui.integration.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventbus-ui.integration.spec.js","sourceRoot":"","sources":["../../../src/tui/eventbus-ui.integration.spec.tsx"],"names":[],"mappings":"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"}