codingbuddy 5.2.0 → 5.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 (447) hide show
  1. package/dist/src/agent/agent-prompt.builder.js +135 -2
  2. package/dist/src/agent/agent-stack.loader.d.ts +3 -0
  3. package/dist/src/agent/agent-stack.loader.js +38 -0
  4. package/dist/src/agent/agent-stack.schema.d.ts +14 -0
  5. package/dist/src/agent/agent-stack.schema.js +19 -0
  6. package/dist/src/agent/agent-stack.service.d.ts +15 -0
  7. package/dist/src/agent/agent-stack.service.js +112 -0
  8. package/dist/src/agent/agent.module.js +5 -2
  9. package/dist/src/agent/agent.service.d.ts +8 -1
  10. package/dist/src/agent/agent.service.js +126 -40
  11. package/dist/src/agent/agent.types.d.ts +26 -46
  12. package/dist/src/agent/council-preset.service.d.ts +6 -0
  13. package/dist/src/agent/council-preset.service.js +46 -0
  14. package/dist/src/agent/council-preset.types.d.ts +6 -0
  15. package/dist/src/agent/council-preset.types.js +3 -0
  16. package/dist/src/agent/execution-plan.d.ts +8 -0
  17. package/dist/src/agent/execution-plan.js +73 -0
  18. package/dist/src/agent/execution-plan.types.d.ts +74 -0
  19. package/dist/src/agent/execution-plan.types.js +3 -0
  20. package/dist/src/agent/index.d.ts +8 -0
  21. package/dist/src/agent/index.js +8 -0
  22. package/dist/src/agent/teams-capability.service.d.ts +11 -0
  23. package/dist/src/agent/teams-capability.service.js +74 -0
  24. package/dist/src/agent/teams-capability.types.d.ts +6 -0
  25. package/dist/src/agent/teams-capability.types.js +3 -0
  26. package/dist/src/cli/cli.d.ts +4 -3
  27. package/dist/src/cli/cli.js +54 -0
  28. package/dist/src/cli/cli.types.d.ts +4 -0
  29. package/dist/src/cli/completion/completion.d.ts +16 -0
  30. package/dist/src/cli/completion/completion.js +276 -0
  31. package/dist/src/cli/completion/index.d.ts +2 -0
  32. package/dist/src/cli/completion/index.js +7 -0
  33. package/dist/src/cli/plugin/create-plugin.command.d.ts +21 -0
  34. package/dist/src/cli/plugin/create-plugin.command.js +151 -0
  35. package/dist/src/cli/run-tui.d.ts +1 -0
  36. package/dist/src/cli/run-tui.js +7 -1
  37. package/dist/src/collaboration/council-summary.service.d.ts +2 -0
  38. package/dist/src/collaboration/council-summary.service.js +114 -0
  39. package/dist/src/collaboration/council-summary.types.d.ts +24 -0
  40. package/dist/src/collaboration/council-summary.types.js +3 -0
  41. package/dist/src/collaboration/index.d.ts +2 -0
  42. package/dist/src/collaboration/index.js +3 -1
  43. package/dist/src/config/config.schema.d.ts +3 -0
  44. package/dist/src/config/config.schema.js +5 -0
  45. package/dist/src/keyword/keyword.types.d.ts +8 -0
  46. package/dist/src/mcp/handlers/agent.handler.d.ts +6 -1
  47. package/dist/src/mcp/handlers/agent.handler.js +81 -8
  48. package/dist/src/mcp/handlers/checklist-context.handler.d.ts +3 -1
  49. package/dist/src/mcp/handlers/checklist-context.handler.js +17 -2
  50. package/dist/src/mcp/handlers/discussion.handler.d.ts +3 -0
  51. package/dist/src/mcp/handlers/discussion.handler.js +22 -1
  52. package/dist/src/mcp/handlers/mode.handler.d.ts +9 -1
  53. package/dist/src/mcp/handlers/mode.handler.js +79 -2
  54. package/dist/src/mcp/handlers/quality-report.handler.d.ts +3 -1
  55. package/dist/src/mcp/handlers/quality-report.handler.js +20 -2
  56. package/dist/src/rules/rules.service.d.ts +6 -0
  57. package/dist/src/rules/rules.service.js +3 -0
  58. package/dist/src/rules/skill.schema.d.ts +5 -0
  59. package/dist/src/rules/skill.schema.js +36 -0
  60. package/dist/src/shared/rules-core.d.ts +5 -0
  61. package/dist/src/shared/rules-core.js +5 -0
  62. package/dist/src/shared/version.d.ts +1 -1
  63. package/dist/src/shared/version.js +1 -1
  64. package/dist/src/skill/i18n/keywords.js +921 -0
  65. package/dist/src/skill/skill-recommendation.service.d.ts +1 -0
  66. package/dist/src/skill/skill-recommendation.service.js +27 -1
  67. package/dist/src/skill/skill-recommendation.types.d.ts +5 -0
  68. package/dist/src/tui/events/hud-file-bridge.d.ts +4 -0
  69. package/dist/src/tui/events/hud-file-bridge.js +36 -0
  70. package/dist/src/tui-bundle.mjs +45 -3
  71. package/package.json +7 -2
  72. package/dist/api/mcp.js.map +0 -1
  73. package/dist/src/agent/agent-prompt.builder.js.map +0 -1
  74. package/dist/src/agent/agent-summary.utils.js.map +0 -1
  75. package/dist/src/agent/agent.module.js.map +0 -1
  76. package/dist/src/agent/agent.service.js.map +0 -1
  77. package/dist/src/agent/agent.types.js.map +0 -1
  78. package/dist/src/agent/index.js.map +0 -1
  79. package/dist/src/analyzer/analyzer.module.js.map +0 -1
  80. package/dist/src/analyzer/analyzer.service.js.map +0 -1
  81. package/dist/src/analyzer/analyzer.types.js.map +0 -1
  82. package/dist/src/analyzer/code.sampler.js.map +0 -1
  83. package/dist/src/analyzer/config.analyzer.js.map +0 -1
  84. package/dist/src/analyzer/conventions.analyzer.js.map +0 -1
  85. package/dist/src/analyzer/conventions.schemas.js.map +0 -1
  86. package/dist/src/analyzer/conventions.types.js.map +0 -1
  87. package/dist/src/analyzer/directory.analyzer.js.map +0 -1
  88. package/dist/src/analyzer/index.js.map +0 -1
  89. package/dist/src/analyzer/package.analyzer.js.map +0 -1
  90. package/dist/src/app.module.js.map +0 -1
  91. package/dist/src/checklist/checklist.module.js.map +0 -1
  92. package/dist/src/checklist/checklist.schema.js.map +0 -1
  93. package/dist/src/checklist/checklist.service.js.map +0 -1
  94. package/dist/src/checklist/checklist.types.js.map +0 -1
  95. package/dist/src/checklist/index.js.map +0 -1
  96. package/dist/src/cli/cli.js.map +0 -1
  97. package/dist/src/cli/cli.types.js.map +0 -1
  98. package/dist/src/cli/index.js.map +0 -1
  99. package/dist/src/cli/init/claude-settings.utils.js.map +0 -1
  100. package/dist/src/cli/init/config.generator.js.map +0 -1
  101. package/dist/src/cli/init/config.writer.js.map +0 -1
  102. package/dist/src/cli/init/gitignore.utils.js.map +0 -1
  103. package/dist/src/cli/init/index.js.map +0 -1
  104. package/dist/src/cli/init/init.command.js.map +0 -1
  105. package/dist/src/cli/init/init.constants.js.map +0 -1
  106. package/dist/src/cli/init/init.wizard.js.map +0 -1
  107. package/dist/src/cli/init/prompt.builder.js.map +0 -1
  108. package/dist/src/cli/init/prompts/agent-prompt.js.map +0 -1
  109. package/dist/src/cli/init/prompts/architecture-prompt.js.map +0 -1
  110. package/dist/src/cli/init/prompts/basic-prompt.js.map +0 -1
  111. package/dist/src/cli/init/prompts/conventions-prompt.js.map +0 -1
  112. package/dist/src/cli/init/prompts/index.js.map +0 -1
  113. package/dist/src/cli/init/prompts/language-prompt.js.map +0 -1
  114. package/dist/src/cli/init/prompts/model-prompt.js.map +0 -1
  115. package/dist/src/cli/init/prompts/tech-stack-prompt.js.map +0 -1
  116. package/dist/src/cli/init/prompts/test-strategy-prompt.js.map +0 -1
  117. package/dist/src/cli/init/summary/index.js.map +0 -1
  118. package/dist/src/cli/init/summary/summary.prompt.js.map +0 -1
  119. package/dist/src/cli/init/summary/summary.renderer.js.map +0 -1
  120. package/dist/src/cli/init/templates/config-renderer.js.map +0 -1
  121. package/dist/src/cli/init/templates/frameworks/default.template.js.map +0 -1
  122. package/dist/src/cli/init/templates/frameworks/express.template.js.map +0 -1
  123. package/dist/src/cli/init/templates/frameworks/index.js.map +0 -1
  124. package/dist/src/cli/init/templates/frameworks/nestjs.template.js.map +0 -1
  125. package/dist/src/cli/init/templates/frameworks/nextjs.template.js.map +0 -1
  126. package/dist/src/cli/init/templates/frameworks/node.template.js.map +0 -1
  127. package/dist/src/cli/init/templates/frameworks/react.template.js.map +0 -1
  128. package/dist/src/cli/init/templates/index.js.map +0 -1
  129. package/dist/src/cli/init/templates/template.renderer.js.map +0 -1
  130. package/dist/src/cli/init/templates/template.selector.js.map +0 -1
  131. package/dist/src/cli/init/templates/template.types.js.map +0 -1
  132. package/dist/src/cli/plugin/install.command.js.map +0 -1
  133. package/dist/src/cli/plugin/plugins.command.js.map +0 -1
  134. package/dist/src/cli/plugin/search.command.js.map +0 -1
  135. package/dist/src/cli/plugin/uninstall.command.js.map +0 -1
  136. package/dist/src/cli/plugin/update.command.js.map +0 -1
  137. package/dist/src/cli/restart-tui.js.map +0 -1
  138. package/dist/src/cli/run-tui.js.map +0 -1
  139. package/dist/src/cli/utils/console.js.map +0 -1
  140. package/dist/src/cli/utils/index.js.map +0 -1
  141. package/dist/src/collaboration/discussion-engine.js.map +0 -1
  142. package/dist/src/collaboration/index.js.map +0 -1
  143. package/dist/src/collaboration/opinion-adapter.js.map +0 -1
  144. package/dist/src/collaboration/terminal-formatter.js.map +0 -1
  145. package/dist/src/collaboration/types.js.map +0 -1
  146. package/dist/src/config/config-diff.service.js.map +0 -1
  147. package/dist/src/config/config.loader.js.map +0 -1
  148. package/dist/src/config/config.module.js.map +0 -1
  149. package/dist/src/config/config.schema.js.map +0 -1
  150. package/dist/src/config/config.service.js.map +0 -1
  151. package/dist/src/config/context.loader.js.map +0 -1
  152. package/dist/src/config/ignore.parser.js.map +0 -1
  153. package/dist/src/config/index.js.map +0 -1
  154. package/dist/src/context/briefing-loader.service.js.map +0 -1
  155. package/dist/src/context/briefing.service.js.map +0 -1
  156. package/dist/src/context/briefing.types.js.map +0 -1
  157. package/dist/src/context/context-archive.service.js.map +0 -1
  158. package/dist/src/context/context-archive.types.js.map +0 -1
  159. package/dist/src/context/context-document.service.js.map +0 -1
  160. package/dist/src/context/context-document.types.js.map +0 -1
  161. package/dist/src/context/context-parser.utils.js.map +0 -1
  162. package/dist/src/context/context-serializer.utils.js.map +0 -1
  163. package/dist/src/context/context.module.js.map +0 -1
  164. package/dist/src/context/context.service.js.map +0 -1
  165. package/dist/src/context/context.types.js.map +0 -1
  166. package/dist/src/context/index.js.map +0 -1
  167. package/dist/src/context/intent-patterns.js.map +0 -1
  168. package/dist/src/custom/custom.module.js.map +0 -1
  169. package/dist/src/custom/custom.service.js.map +0 -1
  170. package/dist/src/custom/custom.types.js.map +0 -1
  171. package/dist/src/custom/index.js.map +0 -1
  172. package/dist/src/diagnostic/diagnostic-log.service.js.map +0 -1
  173. package/dist/src/diagnostic/diagnostic.module.js.map +0 -1
  174. package/dist/src/diagnostic/diagnostic.types.js.map +0 -1
  175. package/dist/src/diagnostic/index.js.map +0 -1
  176. package/dist/src/impact/impact-event.service.js.map +0 -1
  177. package/dist/src/impact/impact-report.service.js.map +0 -1
  178. package/dist/src/impact/impact.module.js.map +0 -1
  179. package/dist/src/impact/impact.types.js.map +0 -1
  180. package/dist/src/impact/index.js.map +0 -1
  181. package/dist/src/keyword/activation-message.builder.js.map +0 -1
  182. package/dist/src/keyword/auto-executor.js.map +0 -1
  183. package/dist/src/keyword/auto-executor.types.js.map +0 -1
  184. package/dist/src/keyword/auto-formatter.js.map +0 -1
  185. package/dist/src/keyword/auto-prompt-builder.js.map +0 -1
  186. package/dist/src/keyword/complexity-classifier.js.map +0 -1
  187. package/dist/src/keyword/complexity-indicators.js.map +0 -1
  188. package/dist/src/keyword/diff-analyzer.js.map +0 -1
  189. package/dist/src/keyword/explicit-pattern-matcher.js.map +0 -1
  190. package/dist/src/keyword/index.js.map +0 -1
  191. package/dist/src/keyword/keyword.module.js.map +0 -1
  192. package/dist/src/keyword/keyword.service.js.map +0 -1
  193. package/dist/src/keyword/keyword.types.js.map +0 -1
  194. package/dist/src/keyword/patterns/agent.patterns.js.map +0 -1
  195. package/dist/src/keyword/patterns/ai-ml.patterns.js.map +0 -1
  196. package/dist/src/keyword/patterns/backend.patterns.js.map +0 -1
  197. package/dist/src/keyword/patterns/context.patterns.js.map +0 -1
  198. package/dist/src/keyword/patterns/data-science.patterns.js.map +0 -1
  199. package/dist/src/keyword/patterns/data.patterns.js.map +0 -1
  200. package/dist/src/keyword/patterns/devops.patterns.js.map +0 -1
  201. package/dist/src/keyword/patterns/explicit.patterns.js.map +0 -1
  202. package/dist/src/keyword/patterns/frontend.patterns.js.map +0 -1
  203. package/dist/src/keyword/patterns/index.js.map +0 -1
  204. package/dist/src/keyword/patterns/intent-pattern-checks.js.map +0 -1
  205. package/dist/src/keyword/patterns/intent-patterns.types.js.map +0 -1
  206. package/dist/src/keyword/patterns/meta-discussion.patterns.js.map +0 -1
  207. package/dist/src/keyword/patterns/mobile.patterns.js.map +0 -1
  208. package/dist/src/keyword/patterns/platform.patterns.js.map +0 -1
  209. package/dist/src/keyword/patterns/security.patterns.js.map +0 -1
  210. package/dist/src/keyword/patterns/systems.patterns.js.map +0 -1
  211. package/dist/src/keyword/patterns/test.patterns.js.map +0 -1
  212. package/dist/src/keyword/patterns/tooling.patterns.js.map +0 -1
  213. package/dist/src/keyword/primary-agent-resolver.js.map +0 -1
  214. package/dist/src/keyword/rule-filter.js.map +0 -1
  215. package/dist/src/keyword/srp-template.js.map +0 -1
  216. package/dist/src/keyword/strategies/__tests__/strategy-test.utils.js.map +0 -1
  217. package/dist/src/keyword/strategies/act-agent.strategy.js.map +0 -1
  218. package/dist/src/keyword/strategies/eval-agent.strategy.js.map +0 -1
  219. package/dist/src/keyword/strategies/index.js.map +0 -1
  220. package/dist/src/keyword/strategies/plan-agent.strategy.js.map +0 -1
  221. package/dist/src/keyword/strategies/resolution-strategy.interface.js.map +0 -1
  222. package/dist/src/keyword/taskmaestro-detector.js.map +0 -1
  223. package/dist/src/keyword/visual-data.builder.js.map +0 -1
  224. package/dist/src/main.js.map +0 -1
  225. package/dist/src/mcp/handlers/abstract-handler.js.map +0 -1
  226. package/dist/src/mcp/handlers/agent.handler.js.map +0 -1
  227. package/dist/src/mcp/handlers/base.handler.js.map +0 -1
  228. package/dist/src/mcp/handlers/briefing.handler.js.map +0 -1
  229. package/dist/src/mcp/handlers/checklist-context.handler.js.map +0 -1
  230. package/dist/src/mcp/handlers/config.handler.js.map +0 -1
  231. package/dist/src/mcp/handlers/context-archive.handler.js.map +0 -1
  232. package/dist/src/mcp/handlers/context-document.handler.js.map +0 -1
  233. package/dist/src/mcp/handlers/conventions.handler.js.map +0 -1
  234. package/dist/src/mcp/handlers/discussion.handler.js.map +0 -1
  235. package/dist/src/mcp/handlers/discussion.types.js.map +0 -1
  236. package/dist/src/mcp/handlers/impact.handler.js.map +0 -1
  237. package/dist/src/mcp/handlers/index.js.map +0 -1
  238. package/dist/src/mcp/handlers/mode.handler.js.map +0 -1
  239. package/dist/src/mcp/handlers/pipeline.handler.js.map +0 -1
  240. package/dist/src/mcp/handlers/plugin-validation.handler.js.map +0 -1
  241. package/dist/src/mcp/handlers/quality-report.handler.js.map +0 -1
  242. package/dist/src/mcp/handlers/release-check.handler.js.map +0 -1
  243. package/dist/src/mcp/handlers/resume.handler.js.map +0 -1
  244. package/dist/src/mcp/handlers/rule-impact.handler.js.map +0 -1
  245. package/dist/src/mcp/handlers/rule-insights.handler.js.map +0 -1
  246. package/dist/src/mcp/handlers/rules.handler.js.map +0 -1
  247. package/dist/src/mcp/handlers/skill.handler.js.map +0 -1
  248. package/dist/src/mcp/handlers/tui.handler.js.map +0 -1
  249. package/dist/src/mcp/mcp-serverless.js.map +0 -1
  250. package/dist/src/mcp/mcp.controller.js.map +0 -1
  251. package/dist/src/mcp/mcp.module.js.map +0 -1
  252. package/dist/src/mcp/mcp.service.js.map +0 -1
  253. package/dist/src/mcp/response.utils.js.map +0 -1
  254. package/dist/src/mcp/sse-auth.guard.js.map +0 -1
  255. package/dist/src/model/index.js.map +0 -1
  256. package/dist/src/model/model-resolver.service.js.map +0 -1
  257. package/dist/src/model/model.constants.js.map +0 -1
  258. package/dist/src/model/model.resolver.js.map +0 -1
  259. package/dist/src/model/model.types.js.map +0 -1
  260. package/dist/src/parallel-validation/extract-file-paths.js.map +0 -1
  261. package/dist/src/parallel-validation/index.js.map +0 -1
  262. package/dist/src/parallel-validation/overlap-matrix.js.map +0 -1
  263. package/dist/src/parallel-validation/parallel-validation.handler.js.map +0 -1
  264. package/dist/src/parallel-validation/parallel-validation.types.js.map +0 -1
  265. package/dist/src/parallel-validation/wave-splitter.js.map +0 -1
  266. package/dist/src/pipeline/index.js.map +0 -1
  267. package/dist/src/pipeline/pipeline.executors.js.map +0 -1
  268. package/dist/src/pipeline/pipeline.module.js.map +0 -1
  269. package/dist/src/pipeline/pipeline.service.js.map +0 -1
  270. package/dist/src/pipeline/pipeline.types.js.map +0 -1
  271. package/dist/src/plugin/plugin-installer.service.js.map +0 -1
  272. package/dist/src/plugin/plugin-manifest.schema.js.map +0 -1
  273. package/dist/src/plugin/plugin.module.js.map +0 -1
  274. package/dist/src/plugin/plugin.types.js.map +0 -1
  275. package/dist/src/plugin/registry-client.js.map +0 -1
  276. package/dist/src/rules/agent.schema.js.map +0 -1
  277. package/dist/src/rules/rule-event-collector.js.map +0 -1
  278. package/dist/src/rules/rule-event.types.js.map +0 -1
  279. package/dist/src/rules/rule-insights.service.js.map +0 -1
  280. package/dist/src/rules/rule-stats-writer.js.map +0 -1
  281. package/dist/src/rules/rule-tracker.js.map +0 -1
  282. package/dist/src/rules/rules-content.utils.js.map +0 -1
  283. package/dist/src/rules/rules.module.js.map +0 -1
  284. package/dist/src/rules/rules.service.js.map +0 -1
  285. package/dist/src/rules/rules.types.js.map +0 -1
  286. package/dist/src/rules/skill.schema.js.map +0 -1
  287. package/dist/src/shared/agent.utils.js.map +0 -1
  288. package/dist/src/shared/async.utils.js.map +0 -1
  289. package/dist/src/shared/client-type.js.map +0 -1
  290. package/dist/src/shared/error.utils.js.map +0 -1
  291. package/dist/src/shared/esm-import.js.map +0 -1
  292. package/dist/src/shared/event-bridge-reader.js.map +0 -1
  293. package/dist/src/shared/file.utils.js.map +0 -1
  294. package/dist/src/shared/filesystem.interface.js.map +0 -1
  295. package/dist/src/shared/format.utils.js.map +0 -1
  296. package/dist/src/shared/keyword-core.js.map +0 -1
  297. package/dist/src/shared/language.service.js.map +0 -1
  298. package/dist/src/shared/language.types.js.map +0 -1
  299. package/dist/src/shared/lru-cache.js.map +0 -1
  300. package/dist/src/shared/node-filesystem.service.js.map +0 -1
  301. package/dist/src/shared/path.utils.js.map +0 -1
  302. package/dist/src/shared/pattern-matcher.js.map +0 -1
  303. package/dist/src/shared/rules-core.js.map +0 -1
  304. package/dist/src/shared/security.utils.js.map +0 -1
  305. package/dist/src/shared/slug.utils.js.map +0 -1
  306. package/dist/src/shared/tui-bundle-path.js.map +0 -1
  307. package/dist/src/shared/validation.constants.js.map +0 -1
  308. package/dist/src/shared/verbosity.types.js.map +0 -1
  309. package/dist/src/shared/version.js.map +0 -1
  310. package/dist/src/shared/version.utils.js.map +0 -1
  311. package/dist/src/ship/file-specialist-mapper.js.map +0 -1
  312. package/dist/src/ship/quality-report.service.js.map +0 -1
  313. package/dist/src/ship/quality-report.types.js.map +0 -1
  314. package/dist/src/ship/ship.module.js.map +0 -1
  315. package/dist/src/skill/i18n/index.js.map +0 -1
  316. package/dist/src/skill/i18n/keywords.js.map +0 -1
  317. package/dist/src/skill/i18n/keywords.types.js.map +0 -1
  318. package/dist/src/skill/index.js.map +0 -1
  319. package/dist/src/skill/skill-content.utils.js.map +0 -1
  320. package/dist/src/skill/skill-recommendation.service.js.map +0 -1
  321. package/dist/src/skill/skill-recommendation.types.js.map +0 -1
  322. package/dist/src/skill/skill-triggers.js.map +0 -1
  323. package/dist/src/skill/skill.module.js.map +0 -1
  324. package/dist/src/state/index.js.map +0 -1
  325. package/dist/src/state/state.module.js.map +0 -1
  326. package/dist/src/state/state.service.js.map +0 -1
  327. package/dist/src/state/state.types.js.map +0 -1
  328. package/dist/src/tui/__perf__/memory-stability.spec.d.ts +0 -1
  329. package/dist/src/tui/__perf__/memory-stability.spec.js +0 -105
  330. package/dist/src/tui/__perf__/memory-stability.spec.js.map +0 -1
  331. package/dist/src/tui/__perf__/rendering-performance.spec.d.ts +0 -1
  332. package/dist/src/tui/__perf__/rendering-performance.spec.js +0 -163
  333. package/dist/src/tui/__perf__/rendering-performance.spec.js.map +0 -1
  334. package/dist/src/tui/cli-flags.js.map +0 -1
  335. package/dist/src/tui/components/ActModeScreen.js.map +0 -1
  336. package/dist/src/tui/components/ActivityVisualizer.js.map +0 -1
  337. package/dist/src/tui/components/ActivityVisualizer.spec.d.ts +0 -1
  338. package/dist/src/tui/components/ActivityVisualizer.spec.js +0 -91
  339. package/dist/src/tui/components/ActivityVisualizer.spec.js.map +0 -1
  340. package/dist/src/tui/components/AgentDiscussionPanel.js.map +0 -1
  341. package/dist/src/tui/components/AgentDiscussionPanel.spec.d.ts +0 -1
  342. package/dist/src/tui/components/AgentDiscussionPanel.spec.js +0 -229
  343. package/dist/src/tui/components/AgentDiscussionPanel.spec.js.map +0 -1
  344. package/dist/src/tui/components/ChecklistPanel.js.map +0 -1
  345. package/dist/src/tui/components/ChecklistPanel.spec.d.ts +0 -1
  346. package/dist/src/tui/components/ChecklistPanel.spec.js +0 -45
  347. package/dist/src/tui/components/ChecklistPanel.spec.js.map +0 -1
  348. package/dist/src/tui/components/ContextSection.js.map +0 -1
  349. package/dist/src/tui/components/EvalModeScreen.js.map +0 -1
  350. package/dist/src/tui/components/FlowMap.js.map +0 -1
  351. package/dist/src/tui/components/FlowMap.spec.d.ts +0 -1
  352. package/dist/src/tui/components/FlowMap.spec.js +0 -147
  353. package/dist/src/tui/components/FlowMap.spec.js.map +0 -1
  354. package/dist/src/tui/components/FocusedAgentPanel.js.map +0 -1
  355. package/dist/src/tui/components/FocusedAgentPanel.spec.d.ts +0 -1
  356. package/dist/src/tui/components/FocusedAgentPanel.spec.js +0 -183
  357. package/dist/src/tui/components/FocusedAgentPanel.spec.js.map +0 -1
  358. package/dist/src/tui/components/HeaderBar.js.map +0 -1
  359. package/dist/src/tui/components/HeaderBar.spec.d.ts +0 -1
  360. package/dist/src/tui/components/HeaderBar.spec.js +0 -96
  361. package/dist/src/tui/components/HeaderBar.spec.js.map +0 -1
  362. package/dist/src/tui/components/ModeScreenRouter.js.map +0 -1
  363. package/dist/src/tui/components/PlanModeScreen.js.map +0 -1
  364. package/dist/src/tui/components/SessionDashboard.js.map +0 -1
  365. package/dist/src/tui/components/SessionTabBar.js.map +0 -1
  366. package/dist/src/tui/components/SessionTabBar.spec.d.ts +0 -1
  367. package/dist/src/tui/components/SessionTabBar.spec.js +0 -59
  368. package/dist/src/tui/components/SessionTabBar.spec.js.map +0 -1
  369. package/dist/src/tui/components/StageHealthBar.js.map +0 -1
  370. package/dist/src/tui/components/StageHealthBar.spec.d.ts +0 -1
  371. package/dist/src/tui/components/StageHealthBar.spec.js +0 -99
  372. package/dist/src/tui/components/StageHealthBar.spec.js.map +0 -1
  373. package/dist/src/tui/components/act-screen.pure.js.map +0 -1
  374. package/dist/src/tui/components/activity-visualizer.pure.js.map +0 -1
  375. package/dist/src/tui/components/agent-discussion-panel.pure.js.map +0 -1
  376. package/dist/src/tui/components/checklist-panel.pure.js.map +0 -1
  377. package/dist/src/tui/components/context-section.pure.js.map +0 -1
  378. package/dist/src/tui/components/eval-screen.pure.js.map +0 -1
  379. package/dist/src/tui/components/flow-map.pure.js.map +0 -1
  380. package/dist/src/tui/components/focused-agent.pure.js.map +0 -1
  381. package/dist/src/tui/components/grid-layout.pure.js.map +0 -1
  382. package/dist/src/tui/components/index.js.map +0 -1
  383. package/dist/src/tui/components/live.pure.js.map +0 -1
  384. package/dist/src/tui/components/plan-screen.pure.js.map +0 -1
  385. package/dist/src/tui/components/session-dashboard.pure.js.map +0 -1
  386. package/dist/src/tui/components/session-tab-bar.pure.js.map +0 -1
  387. package/dist/src/tui/components/stage-health.pure.js.map +0 -1
  388. package/dist/src/tui/dashboard-app.js.map +0 -1
  389. package/dist/src/tui/dashboard-app.spec.d.ts +0 -1
  390. package/dist/src/tui/dashboard-app.spec.js +0 -158
  391. package/dist/src/tui/dashboard-app.spec.js.map +0 -1
  392. package/dist/src/tui/dashboard-types.js.map +0 -1
  393. package/dist/src/tui/ensure-tui-ready.js.map +0 -1
  394. package/dist/src/tui/eventbus-ui.integration.spec.d.ts +0 -1
  395. package/dist/src/tui/eventbus-ui.integration.spec.js +0 -577
  396. package/dist/src/tui/eventbus-ui.integration.spec.js.map +0 -1
  397. package/dist/src/tui/events/agent-metadata.service.js.map +0 -1
  398. package/dist/src/tui/events/agent-metadata.types.js.map +0 -1
  399. package/dist/src/tui/events/event-bus.js.map +0 -1
  400. package/dist/src/tui/events/events.module.js.map +0 -1
  401. package/dist/src/tui/events/hud-file-bridge.js.map +0 -1
  402. package/dist/src/tui/events/index.js.map +0 -1
  403. package/dist/src/tui/events/parse-agent.js.map +0 -1
  404. package/dist/src/tui/events/parse-tool-response.js.map +0 -1
  405. package/dist/src/tui/events/response-event-extractor.js.map +0 -1
  406. package/dist/src/tui/events/tui-interceptor.js.map +0 -1
  407. package/dist/src/tui/events/types.js.map +0 -1
  408. package/dist/src/tui/hooks/index.js.map +0 -1
  409. package/dist/src/tui/hooks/use-dashboard-state.js.map +0 -1
  410. package/dist/src/tui/hooks/use-focus-agent.js.map +0 -1
  411. package/dist/src/tui/hooks/use-multi-session-state.js.map +0 -1
  412. package/dist/src/tui/hooks/use-terminal-size.js.map +0 -1
  413. package/dist/src/tui/hooks/use-tick.js.map +0 -1
  414. package/dist/src/tui/hooks/use-tick.spec.d.ts +0 -1
  415. package/dist/src/tui/hooks/use-tick.spec.js +0 -70
  416. package/dist/src/tui/hooks/use-tick.spec.js.map +0 -1
  417. package/dist/src/tui/index.js.map +0 -1
  418. package/dist/src/tui/ipc/index.js.map +0 -1
  419. package/dist/src/tui/ipc/instance-registry.js.map +0 -1
  420. package/dist/src/tui/ipc/ipc-bridge.js.map +0 -1
  421. package/dist/src/tui/ipc/ipc-client.js.map +0 -1
  422. package/dist/src/tui/ipc/ipc-debug.js.map +0 -1
  423. package/dist/src/tui/ipc/ipc-server.js.map +0 -1
  424. package/dist/src/tui/ipc/ipc-state-cache.js.map +0 -1
  425. package/dist/src/tui/ipc/ipc.types.js.map +0 -1
  426. package/dist/src/tui/ipc/multi-session-manager.js.map +0 -1
  427. package/dist/src/tui/ipc/shutdown-manager.js.map +0 -1
  428. package/dist/src/tui/ipc/test-utils.js.map +0 -1
  429. package/dist/src/tui/ipc/tui-auto-launcher.js.map +0 -1
  430. package/dist/src/tui/multi-session-app.js.map +0 -1
  431. package/dist/src/tui/multi-session-app.spec.d.ts +0 -1
  432. package/dist/src/tui/multi-session-app.spec.js +0 -95
  433. package/dist/src/tui/multi-session-app.spec.js.map +0 -1
  434. package/dist/src/tui/testing/tui-test-utils.js.map +0 -1
  435. package/dist/src/tui/transport-tui.integration.spec.d.ts +0 -1
  436. package/dist/src/tui/transport-tui.integration.spec.js +0 -189
  437. package/dist/src/tui/transport-tui.integration.spec.js.map +0 -1
  438. package/dist/src/tui/tui-config.js.map +0 -1
  439. package/dist/src/tui/types.js.map +0 -1
  440. package/dist/src/tui/utils/color-buffer.js.map +0 -1
  441. package/dist/src/tui/utils/colors.js.map +0 -1
  442. package/dist/src/tui/utils/display-width.js.map +0 -1
  443. package/dist/src/tui/utils/edge-router.js.map +0 -1
  444. package/dist/src/tui/utils/icons.js.map +0 -1
  445. package/dist/src/tui/utils/index.js.map +0 -1
  446. package/dist/src/tui/utils/theme.js.map +0 -1
  447. package/dist/tsconfig.build.tsbuildinfo +0 -1
@@ -98,6 +98,11 @@ exports.CodingBuddyConfigSchema = zod_1.z.object({
98
98
  auto: AutoConfigSchema.optional(),
99
99
  release: ReleaseConfigSchema.optional(),
100
100
  context: ContextConfigSchema.optional(),
101
+ experimental: zod_1.z
102
+ .object({
103
+ teamsCoordination: zod_1.z.boolean().default(false).optional(),
104
+ })
105
+ .optional(),
101
106
  upstreamRepos: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(),
102
107
  keyFiles: zod_1.z.array(zod_1.z.string()).optional(),
103
108
  avoid: zod_1.z.array(zod_1.z.string()).optional(),
@@ -1,4 +1,8 @@
1
1
  import type { DiffAnalysisResult } from './diff-analyzer';
2
+ import type { CouncilPreset } from '../agent/council-preset.types';
3
+ import type { CouncilSummary } from '../collaboration/council-summary.types';
4
+ import type { ExecutionPlan } from '../agent/execution-plan.types';
5
+ import type { TeamsCapabilityStatus } from '../agent/teams-capability.types';
2
6
  export declare const KEYWORDS: readonly ["PLAN", "ACT", "EVAL", "AUTO"];
3
7
  export type Mode = (typeof KEYWORDS)[number];
4
8
  export declare const MODE_AGENTS: readonly ["plan-mode", "act-mode", "eval-mode", "auto-mode"];
@@ -118,6 +122,10 @@ export interface ParseModeResult {
118
122
  taskmaestroInstallHint?: string;
119
123
  visual?: VisualData;
120
124
  diffAnalysis?: DiffAnalysisResult;
125
+ councilPreset?: CouncilPreset;
126
+ councilSummary?: CouncilSummary;
127
+ executionPlan?: ExecutionPlan;
128
+ teamsCapability?: TeamsCapabilityStatus;
121
129
  }
122
130
  export interface DispatchReadyParams {
123
131
  subagent_type: 'general-purpose';
@@ -2,16 +2,21 @@ import type { ToolDefinition } from './base.handler';
2
2
  import type { ToolResponse } from '../response.utils';
3
3
  import { AbstractHandler } from './abstract-handler';
4
4
  import { AgentService } from '../../agent/agent.service';
5
+ import { AgentStackService } from '../../agent/agent-stack.service';
5
6
  import { ImpactEventService } from '../../impact';
7
+ import { RuleEventCollector } from '../../rules/rule-event-collector';
6
8
  export declare class AgentHandler extends AbstractHandler {
7
9
  private readonly agentService;
10
+ private readonly agentStackService;
8
11
  private readonly impactEventService;
9
- constructor(agentService: AgentService, impactEventService: ImpactEventService);
12
+ private readonly ruleEventCollector;
13
+ constructor(agentService: AgentService, agentStackService: AgentStackService, impactEventService: ImpactEventService, ruleEventCollector: RuleEventCollector);
10
14
  protected getHandledTools(): string[];
11
15
  protected handleTool(toolName: string, args: Record<string, unknown> | undefined): Promise<ToolResponse>;
12
16
  getToolDefinitions(): ToolDefinition[];
13
17
  private handleDispatchAgents;
14
18
  private handleGetAgentSystemPrompt;
15
19
  private handlePrepareParallelAgents;
20
+ private handleListAgentStacks;
16
21
  private extractInlineAgents;
17
22
  }
@@ -13,18 +13,27 @@ exports.AgentHandler = void 0;
13
13
  const common_1 = require("@nestjs/common");
14
14
  const abstract_handler_1 = require("./abstract-handler");
15
15
  const agent_service_1 = require("../../agent/agent.service");
16
+ const agent_stack_service_1 = require("../../agent/agent-stack.service");
16
17
  const verbosity_types_1 = require("../../shared/verbosity.types");
17
18
  const response_utils_1 = require("../response.utils");
18
19
  const validation_constants_1 = require("../../shared/validation.constants");
19
20
  const impact_1 = require("../../impact");
21
+ const rule_event_collector_1 = require("../../rules/rule-event-collector");
20
22
  let AgentHandler = class AgentHandler extends abstract_handler_1.AbstractHandler {
21
- constructor(agentService, impactEventService) {
23
+ constructor(agentService, agentStackService, impactEventService, ruleEventCollector) {
22
24
  super();
23
25
  this.agentService = agentService;
26
+ this.agentStackService = agentStackService;
24
27
  this.impactEventService = impactEventService;
28
+ this.ruleEventCollector = ruleEventCollector;
25
29
  }
26
30
  getHandledTools() {
27
- return ['get_agent_system_prompt', 'prepare_parallel_agents', 'dispatch_agents'];
31
+ return [
32
+ 'get_agent_system_prompt',
33
+ 'prepare_parallel_agents',
34
+ 'dispatch_agents',
35
+ 'list_agent_stacks',
36
+ ];
28
37
  }
29
38
  async handleTool(toolName, args) {
30
39
  switch (toolName) {
@@ -34,6 +43,8 @@ let AgentHandler = class AgentHandler extends abstract_handler_1.AbstractHandler
34
43
  return this.handlePrepareParallelAgents(args);
35
44
  case 'dispatch_agents':
36
45
  return this.handleDispatchAgents(args);
46
+ case 'list_agent_stacks':
47
+ return this.handleListAgentStacks(args);
37
48
  default:
38
49
  return (0, response_utils_1.createErrorResponse)(`Unknown tool: ${toolName}`);
39
50
  }
@@ -144,8 +155,12 @@ let AgentHandler = class AgentHandler extends abstract_handler_1.AbstractHandler
144
155
  },
145
156
  executionStrategy: {
146
157
  type: 'string',
147
- enum: ['subagent', 'taskmaestro', 'teams'],
148
- description: 'Execution strategy for specialist agents. "subagent" (default) uses Claude Code Agent tool with run_in_background. "taskmaestro" returns tmux pane assignments for /taskmaestro skill. "teams" uses Claude Code native teams with shared TaskList coordination.',
158
+ enum: ['subagent', 'taskmaestro', 'teams', 'taskmaestro+teams'],
159
+ description: 'Execution strategy for specialist agents. "subagent" (default) uses Claude Code Agent tool with run_in_background. "taskmaestro" returns tmux pane assignments for /taskmaestro skill. "teams" uses Claude Code native teams with shared TaskList coordination. "taskmaestro+teams" uses TaskMaestro as outer transport with Teams as inner coordination.',
160
+ },
161
+ agentStack: {
162
+ type: 'string',
163
+ description: 'Agent stack name to resolve primary + specialists from a preset (e.g., "api-development"). Overrides primaryAgent and specialists when provided.',
149
164
  },
150
165
  inlineAgents: {
151
166
  type: 'object',
@@ -171,6 +186,19 @@ let AgentHandler = class AgentHandler extends abstract_handler_1.AbstractHandler
171
186
  required: ['mode'],
172
187
  },
173
188
  },
189
+ {
190
+ name: 'list_agent_stacks',
191
+ description: 'List available agent stack presets. Each stack defines a primary agent and specialist combination for common workflows.',
192
+ inputSchema: {
193
+ type: 'object',
194
+ properties: {
195
+ category: {
196
+ type: 'string',
197
+ description: 'Optional category filter (e.g., "development", "review", "data", "security")',
198
+ },
199
+ },
200
+ },
201
+ },
174
202
  ];
175
203
  }
176
204
  async handleDispatchAgents(args) {
@@ -180,13 +208,25 @@ let AgentHandler = class AgentHandler extends abstract_handler_1.AbstractHandler
180
208
  ? 'Missing required parameter: mode (PLAN, ACT, EVAL, or AUTO)'
181
209
  : `Invalid mode: ${mode}. Must be PLAN, ACT, EVAL, or AUTO`);
182
210
  }
183
- const primaryAgent = (0, validation_constants_1.extractOptionalString)(args, 'primaryAgent');
184
- const specialists = (0, validation_constants_1.extractStringArray)(args, 'specialists');
211
+ const agentStack = (0, validation_constants_1.extractOptionalString)(args, 'agentStack');
212
+ let primaryAgent = (0, validation_constants_1.extractOptionalString)(args, 'primaryAgent');
213
+ let specialists = (0, validation_constants_1.extractStringArray)(args, 'specialists');
185
214
  const targetFiles = (0, validation_constants_1.extractStringArray)(args, 'targetFiles');
186
215
  const taskDescription = (0, validation_constants_1.extractOptionalString)(args, 'taskDescription');
187
- const includeParallel = args?.includeParallel === true;
216
+ let includeParallel = args?.includeParallel === true;
188
217
  const executionStrategy = args?.executionStrategy ?? 'subagent';
189
218
  const inlineAgents = this.extractInlineAgents(args);
219
+ if (agentStack) {
220
+ try {
221
+ const stack = await this.agentStackService.resolveStack(agentStack);
222
+ primaryAgent = primaryAgent ?? stack.primary_agent;
223
+ specialists = specialists?.length ? specialists : stack.specialist_agents;
224
+ includeParallel = includeParallel || stack.specialist_agents.length > 0;
225
+ }
226
+ catch (error) {
227
+ return (0, response_utils_1.createErrorResponse)(`Failed to resolve agent stack: ${error instanceof Error ? error.message : 'Unknown error'}`);
228
+ }
229
+ }
190
230
  try {
191
231
  const result = await this.agentService.dispatchAgents({
192
232
  mode: mode,
@@ -218,6 +258,27 @@ let AgentHandler = class AgentHandler extends abstract_handler_1.AbstractHandler
218
258
  }
219
259
  catch {
220
260
  }
261
+ try {
262
+ const timestamp = new Date().toISOString();
263
+ if (primaryAgent) {
264
+ this.ruleEventCollector.record({
265
+ type: 'specialist_dispatched',
266
+ timestamp,
267
+ domain: primaryAgent,
268
+ });
269
+ }
270
+ if (result.parallelAgents) {
271
+ for (const agent of result.parallelAgents) {
272
+ this.ruleEventCollector.record({
273
+ type: 'specialist_dispatched',
274
+ timestamp,
275
+ domain: agent.name,
276
+ });
277
+ }
278
+ }
279
+ }
280
+ catch {
281
+ }
221
282
  return (0, response_utils_1.createJsonResponse)(result);
222
283
  }
223
284
  catch (error) {
@@ -283,6 +344,16 @@ let AgentHandler = class AgentHandler extends abstract_handler_1.AbstractHandler
283
344
  return (0, response_utils_1.createErrorResponse)(`Failed to prepare parallel agents: ${error instanceof Error ? error.message : 'Unknown error'}`);
284
345
  }
285
346
  }
347
+ async handleListAgentStacks(args) {
348
+ const category = (0, validation_constants_1.extractOptionalString)(args, 'category');
349
+ try {
350
+ const stacks = await this.agentStackService.listStacks(category);
351
+ return (0, response_utils_1.createJsonResponse)({ stacks });
352
+ }
353
+ catch (error) {
354
+ return (0, response_utils_1.createErrorResponse)(`Failed to list agent stacks: ${error instanceof Error ? error.message : 'Unknown error'}`);
355
+ }
356
+ }
286
357
  extractInlineAgents(args) {
287
358
  const raw = args?.inlineAgents;
288
359
  if (!(0, validation_constants_1.isRecordObject)(raw))
@@ -294,6 +365,8 @@ exports.AgentHandler = AgentHandler;
294
365
  exports.AgentHandler = AgentHandler = __decorate([
295
366
  (0, common_1.Injectable)(),
296
367
  __metadata("design:paramtypes", [agent_service_1.AgentService,
297
- impact_1.ImpactEventService])
368
+ agent_stack_service_1.AgentStackService,
369
+ impact_1.ImpactEventService,
370
+ rule_event_collector_1.RuleEventCollector])
298
371
  ], AgentHandler);
299
372
  //# sourceMappingURL=agent.handler.js.map
@@ -4,11 +4,13 @@ import { AbstractHandler } from './abstract-handler';
4
4
  import { ChecklistService } from '../../checklist/checklist.service';
5
5
  import { ContextService } from '../../context/context.service';
6
6
  import { ImpactEventService } from '../../impact';
7
+ import { RuleEventCollector } from '../../rules/rule-event-collector';
7
8
  export declare class ChecklistContextHandler extends AbstractHandler {
8
9
  private readonly checklistService;
9
10
  private readonly contextService;
10
11
  private readonly impactEventService;
11
- constructor(checklistService: ChecklistService, contextService: ContextService, impactEventService: ImpactEventService);
12
+ private readonly ruleEventCollector;
13
+ constructor(checklistService: ChecklistService, contextService: ContextService, impactEventService: ImpactEventService, ruleEventCollector: RuleEventCollector);
12
14
  protected getHandledTools(): string[];
13
15
  protected handleTool(toolName: string, args: Record<string, unknown> | undefined): Promise<ToolResponse>;
14
16
  getToolDefinitions(): ToolDefinition[];
@@ -17,6 +17,7 @@ const context_service_1 = require("../../context/context.service");
17
17
  const response_utils_1 = require("../response.utils");
18
18
  const validation_constants_1 = require("../../shared/validation.constants");
19
19
  const impact_1 = require("../../impact");
20
+ const rule_event_collector_1 = require("../../rules/rule-event-collector");
20
21
  const VALID_CHECKLIST_DOMAINS = [
21
22
  'security',
22
23
  'accessibility',
@@ -26,11 +27,12 @@ const VALID_CHECKLIST_DOMAINS = [
26
27
  'seo',
27
28
  ];
28
29
  let ChecklistContextHandler = class ChecklistContextHandler extends abstract_handler_1.AbstractHandler {
29
- constructor(checklistService, contextService, impactEventService) {
30
+ constructor(checklistService, contextService, impactEventService, ruleEventCollector) {
30
31
  super();
31
32
  this.checklistService = checklistService;
32
33
  this.contextService = contextService;
33
34
  this.impactEventService = impactEventService;
35
+ this.ruleEventCollector = ruleEventCollector;
34
36
  }
35
37
  getHandledTools() {
36
38
  return ['generate_checklist', 'analyze_task'];
@@ -120,6 +122,18 @@ let ChecklistContextHandler = class ChecklistContextHandler extends abstract_han
120
122
  }
121
123
  catch {
122
124
  }
125
+ try {
126
+ const timestamp = new Date().toISOString();
127
+ for (const domain of domains ?? []) {
128
+ this.ruleEventCollector.record({
129
+ type: 'checklist_generated',
130
+ timestamp,
131
+ domain,
132
+ });
133
+ }
134
+ }
135
+ catch {
136
+ }
123
137
  return (0, response_utils_1.createJsonResponse)(result);
124
138
  }
125
139
  catch (error) {
@@ -152,6 +166,7 @@ exports.ChecklistContextHandler = ChecklistContextHandler = __decorate([
152
166
  (0, common_1.Injectable)(),
153
167
  __metadata("design:paramtypes", [checklist_service_1.ChecklistService,
154
168
  context_service_1.ContextService,
155
- impact_1.ImpactEventService])
169
+ impact_1.ImpactEventService,
170
+ rule_event_collector_1.RuleEventCollector])
156
171
  ], ChecklistContextHandler);
157
172
  //# sourceMappingURL=checklist-context.handler.js.map
@@ -1,7 +1,10 @@
1
1
  import type { ToolDefinition } from './base.handler';
2
2
  import type { ToolResponse } from '../response.utils';
3
3
  import { AbstractHandler } from './abstract-handler';
4
+ import { RuleEventCollector } from '../../rules/rule-event-collector';
4
5
  export declare class DiscussionHandler extends AbstractHandler {
6
+ private readonly ruleEventCollector;
7
+ constructor(ruleEventCollector: RuleEventCollector);
5
8
  protected getHandledTools(): string[];
6
9
  protected handleTool(toolName: string, args: Record<string, unknown> | undefined): Promise<ToolResponse>;
7
10
  getToolDefinitions(): ToolDefinition[];
@@ -5,6 +5,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
7
  };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
8
11
  Object.defineProperty(exports, "__esModule", { value: true });
9
12
  exports.DiscussionHandler = void 0;
10
13
  const common_1 = require("@nestjs/common");
@@ -12,6 +15,7 @@ const abstract_handler_1 = require("./abstract-handler");
12
15
  const response_utils_1 = require("../response.utils");
13
16
  const validation_constants_1 = require("../../shared/validation.constants");
14
17
  const discussion_types_1 = require("./discussion.types");
18
+ const rule_event_collector_1 = require("../../rules/rule-event-collector");
15
19
  const SPECIALIST_DOMAINS = {
16
20
  'security-specialist': { domain: 'security', defaultSeverity: 'high' },
17
21
  'performance-specialist': { domain: 'performance', defaultSeverity: 'medium' },
@@ -24,6 +28,10 @@ const SPECIALIST_DOMAINS = {
24
28
  };
25
29
  const SEVERITY_ORDER = ['info', 'low', 'medium', 'high', 'critical'];
26
30
  let DiscussionHandler = class DiscussionHandler extends abstract_handler_1.AbstractHandler {
31
+ constructor(ruleEventCollector) {
32
+ super();
33
+ this.ruleEventCollector = ruleEventCollector;
34
+ }
27
35
  getHandledTools() {
28
36
  return ['agent_discussion'];
29
37
  }
@@ -87,6 +95,18 @@ let DiscussionHandler = class DiscussionHandler extends abstract_handler_1.Abstr
87
95
  summary,
88
96
  maxSeverity,
89
97
  };
98
+ try {
99
+ const timestamp = new Date().toISOString();
100
+ for (const specialist of specialists) {
101
+ this.ruleEventCollector.record({
102
+ type: 'specialist_dispatched',
103
+ timestamp,
104
+ domain: specialist,
105
+ });
106
+ }
107
+ }
108
+ catch {
109
+ }
90
110
  return (0, response_utils_1.createJsonResponse)(result);
91
111
  }
92
112
  collectOpinions(topic, specialists, context) {
@@ -163,6 +183,7 @@ let DiscussionHandler = class DiscussionHandler extends abstract_handler_1.Abstr
163
183
  };
164
184
  exports.DiscussionHandler = DiscussionHandler;
165
185
  exports.DiscussionHandler = DiscussionHandler = __decorate([
166
- (0, common_1.Injectable)()
186
+ (0, common_1.Injectable)(),
187
+ __metadata("design:paramtypes", [rule_event_collector_1.RuleEventCollector])
167
188
  ], DiscussionHandler);
168
189
  //# sourceMappingURL=discussion.handler.js.map
@@ -9,7 +9,10 @@ import { StateService } from '../../state/state.service';
9
9
  import { ContextDocumentService } from '../../context/context-document.service';
10
10
  import { DiagnosticLogService } from '../../diagnostic/diagnostic-log.service';
11
11
  import { AgentService } from '../../agent/agent.service';
12
+ import { CouncilPresetService } from '../../agent/council-preset.service';
13
+ import { TeamsCapabilityService } from '../../agent/teams-capability.service';
12
14
  import { ImpactEventService } from '../../impact';
15
+ import { RuleEventCollector } from '../../rules/rule-event-collector';
13
16
  export declare class ModeHandler extends AbstractHandler {
14
17
  private readonly keywordService;
15
18
  private readonly configService;
@@ -19,9 +22,12 @@ export declare class ModeHandler extends AbstractHandler {
19
22
  private readonly contextDocService;
20
23
  private readonly diagnosticLogService;
21
24
  private readonly agentService;
25
+ private readonly councilPresetService;
26
+ private readonly teamsCapabilityService;
22
27
  private readonly impactEventService;
28
+ private readonly ruleEventCollector;
23
29
  private readonly logger;
24
- constructor(keywordService: KeywordService, configService: ConfigService, languageService: LanguageService, modelResolverService: ModelResolverService, stateService: StateService, contextDocService: ContextDocumentService, diagnosticLogService: DiagnosticLogService, agentService: AgentService, impactEventService: ImpactEventService);
30
+ constructor(keywordService: KeywordService, configService: ConfigService, languageService: LanguageService, modelResolverService: ModelResolverService, stateService: StateService, contextDocService: ContextDocumentService, diagnosticLogService: DiagnosticLogService, agentService: AgentService, councilPresetService: CouncilPresetService, teamsCapabilityService: TeamsCapabilityService, impactEventService: ImpactEventService, ruleEventCollector: RuleEventCollector);
25
31
  protected getHandledTools(): string[];
26
32
  getToolDefinitions(): ToolDefinition[];
27
33
  protected handleTool(toolName: string, args: Record<string, unknown> | undefined): Promise<ToolResponse>;
@@ -32,5 +38,7 @@ export declare class ModeHandler extends AbstractHandler {
32
38
  private buildPlanReviewGate;
33
39
  private buildAgentDiscussion;
34
40
  private buildVisual;
41
+ private resolveTeamsCapability;
42
+ private buildExecutionPlan;
35
43
  private persistModeState;
36
44
  }
@@ -33,10 +33,14 @@ const keyword_types_2 = require("../../keyword/keyword.types");
33
33
  const visual_data_builder_1 = require("../../keyword/visual-data.builder");
34
34
  const verbosity_types_1 = require("../../shared/verbosity.types");
35
35
  const agent_service_1 = require("../../agent/agent.service");
36
+ const council_preset_service_1 = require("../../agent/council-preset.service");
37
+ const teams_capability_service_1 = require("../../agent/teams-capability.service");
38
+ const execution_plan_1 = require("../../agent/execution-plan");
36
39
  const impact_1 = require("../../impact");
40
+ const rule_event_collector_1 = require("../../rules/rule-event-collector");
37
41
  const CONTEXT_TITLE_MAX_LENGTH = 50;
38
42
  let ModeHandler = ModeHandler_1 = class ModeHandler extends abstract_handler_1.AbstractHandler {
39
- constructor(keywordService, configService, languageService, modelResolverService, stateService, contextDocService, diagnosticLogService, agentService, impactEventService) {
43
+ constructor(keywordService, configService, languageService, modelResolverService, stateService, contextDocService, diagnosticLogService, agentService, councilPresetService, teamsCapabilityService, impactEventService, ruleEventCollector) {
40
44
  super();
41
45
  this.keywordService = keywordService;
42
46
  this.configService = configService;
@@ -46,7 +50,10 @@ let ModeHandler = ModeHandler_1 = class ModeHandler extends abstract_handler_1.A
46
50
  this.contextDocService = contextDocService;
47
51
  this.diagnosticLogService = diagnosticLogService;
48
52
  this.agentService = agentService;
53
+ this.councilPresetService = councilPresetService;
54
+ this.teamsCapabilityService = teamsCapabilityService;
49
55
  this.impactEventService = impactEventService;
56
+ this.ruleEventCollector = ruleEventCollector;
50
57
  this.logger = new common_1.Logger(ModeHandler_1.name);
51
58
  }
52
59
  getHandledTools() {
@@ -143,6 +150,9 @@ let ModeHandler = ModeHandler_1 = class ModeHandler extends abstract_handler_1.A
143
150
  const deepThinkingInstructions = this.buildDeepThinkingInstructions(result.mode);
144
151
  const planReviewGate = this.buildPlanReviewGate(result.mode, settings?.ai?.planReviewGate);
145
152
  const agentDiscussion = this.buildAgentDiscussion(result.mode, settings?.ai?.agentDiscussion);
153
+ const councilPreset = this.councilPresetService.resolvePreset(result.mode) ?? undefined;
154
+ const teamsCapability = await this.resolveTeamsCapability();
155
+ const executionPlan = this.buildExecutionPlan(dispatchReady, teamsCapability);
146
156
  const visual = await this.buildVisual(result.mode, result.delegates_to, result.parallelAgentsRecommendation?.specialists, settings?.eco);
147
157
  const response = (0, response_utils_1.createJsonResponse)({
148
158
  ...result,
@@ -154,6 +164,9 @@ let ModeHandler = ModeHandler_1 = class ModeHandler extends abstract_handler_1.A
154
164
  ...(planReviewGate && { planReviewGate }),
155
165
  ...(agentDiscussion && { agentDiscussion }),
156
166
  ...(visual && { visual }),
167
+ ...(councilPreset && { councilPreset }),
168
+ ...(executionPlan && { executionPlan: (0, execution_plan_1.serializeExecutionPlan)(executionPlan) }),
169
+ ...(teamsCapability && { teamsCapability }),
157
170
  ...contextResult,
158
171
  ...(projectRootWarning && { projectRootWarning }),
159
172
  });
@@ -165,6 +178,16 @@ let ModeHandler = ModeHandler_1 = class ModeHandler extends abstract_handler_1.A
165
178
  }
166
179
  catch {
167
180
  }
181
+ try {
182
+ this.ruleEventCollector.record({
183
+ type: 'mode_activated',
184
+ timestamp: new Date().toISOString(),
185
+ rule: result.mode,
186
+ details: { agent: result.agent },
187
+ });
188
+ }
189
+ catch {
190
+ }
168
191
  return response;
169
192
  }
170
193
  catch (error) {
@@ -353,6 +376,57 @@ let ModeHandler = ModeHandler_1 = class ModeHandler extends abstract_handler_1.A
353
376
  return undefined;
354
377
  }
355
378
  }
379
+ async resolveTeamsCapability() {
380
+ try {
381
+ return await this.teamsCapabilityService.getStatus();
382
+ }
383
+ catch (error) {
384
+ this.logger.warn(`Failed to resolve Teams capability: ${error instanceof Error ? error.message : 'Unknown error'}`);
385
+ return undefined;
386
+ }
387
+ }
388
+ buildExecutionPlan(dispatchReady, teamsCapability) {
389
+ if (!dispatchReady) {
390
+ return undefined;
391
+ }
392
+ const agents = [];
393
+ if (dispatchReady.primaryAgent) {
394
+ agents.push({
395
+ name: dispatchReady.primaryAgent.name,
396
+ displayName: dispatchReady.primaryAgent.displayName,
397
+ description: dispatchReady.primaryAgent.description,
398
+ dispatchParams: dispatchReady.primaryAgent.dispatchParams,
399
+ });
400
+ }
401
+ if (dispatchReady.parallelAgents?.length) {
402
+ for (const agent of dispatchReady.parallelAgents) {
403
+ agents.push({
404
+ name: agent.name,
405
+ displayName: agent.displayName,
406
+ description: agent.description,
407
+ dispatchParams: agent.dispatchParams,
408
+ });
409
+ }
410
+ }
411
+ if (agents.length === 0) {
412
+ return undefined;
413
+ }
414
+ const outer = (0, execution_plan_1.subagentLayer)(agents);
415
+ if (teamsCapability?.available) {
416
+ const inner = (0, execution_plan_1.teamsLayer)({
417
+ team_name: 'auto',
418
+ description: 'Auto-generated Teams coordination layer',
419
+ teammates: agents.map(a => ({
420
+ name: a.name,
421
+ subagent_type: 'general-purpose',
422
+ team_name: 'auto',
423
+ prompt: a.description,
424
+ })),
425
+ });
426
+ return (0, execution_plan_1.buildNestedPlan)(outer, inner);
427
+ }
428
+ return (0, execution_plan_1.buildSimplePlan)(outer);
429
+ }
356
430
  async persistModeState(mode) {
357
431
  try {
358
432
  await this.stateService.updateLastMode(mode);
@@ -375,6 +449,9 @@ exports.ModeHandler = ModeHandler = ModeHandler_1 = __decorate([
375
449
  context_document_service_1.ContextDocumentService,
376
450
  diagnostic_log_service_1.DiagnosticLogService,
377
451
  agent_service_1.AgentService,
378
- impact_1.ImpactEventService])
452
+ council_preset_service_1.CouncilPresetService,
453
+ teams_capability_service_1.TeamsCapabilityService,
454
+ impact_1.ImpactEventService,
455
+ rule_event_collector_1.RuleEventCollector])
379
456
  ], ModeHandler);
380
457
  //# sourceMappingURL=mode.handler.js.map
@@ -2,10 +2,12 @@ import type { ToolDefinition } from './base.handler';
2
2
  import type { ToolResponse } from '../response.utils';
3
3
  import { AbstractHandler } from './abstract-handler';
4
4
  import { QualityReportService } from '../../ship/quality-report.service';
5
+ import { RuleEventCollector } from '../../rules/rule-event-collector';
5
6
  export declare class QualityReportHandler extends AbstractHandler {
6
7
  private readonly qualityReportService;
8
+ private readonly ruleEventCollector;
7
9
  private readonly logger;
8
- constructor(qualityReportService: QualityReportService);
10
+ constructor(qualityReportService: QualityReportService, ruleEventCollector: RuleEventCollector);
9
11
  protected getHandledTools(): string[];
10
12
  protected handleTool(_toolName: string, args: Record<string, unknown> | undefined): Promise<ToolResponse>;
11
13
  getToolDefinitions(): ToolDefinition[];
@@ -16,10 +16,12 @@ const abstract_handler_1 = require("./abstract-handler");
16
16
  const quality_report_service_1 = require("../../ship/quality-report.service");
17
17
  const response_utils_1 = require("../response.utils");
18
18
  const validation_constants_1 = require("../../shared/validation.constants");
19
+ const rule_event_collector_1 = require("../../rules/rule-event-collector");
19
20
  let QualityReportHandler = QualityReportHandler_1 = class QualityReportHandler extends abstract_handler_1.AbstractHandler {
20
- constructor(qualityReportService) {
21
+ constructor(qualityReportService, ruleEventCollector) {
21
22
  super();
22
23
  this.qualityReportService = qualityReportService;
24
+ this.ruleEventCollector = ruleEventCollector;
23
25
  this.logger = new common_1.Logger(QualityReportHandler_1.name);
24
26
  }
25
27
  getHandledTools() {
@@ -36,6 +38,21 @@ let QualityReportHandler = QualityReportHandler_1 = class QualityReportHandler e
36
38
  changedFiles,
37
39
  timeout,
38
40
  });
41
+ try {
42
+ const domains = result.domains;
43
+ if (domains?.length) {
44
+ const timestamp = new Date().toISOString();
45
+ for (const d of domains) {
46
+ this.ruleEventCollector.record({
47
+ type: 'specialist_dispatched',
48
+ timestamp,
49
+ domain: d.domain,
50
+ });
51
+ }
52
+ }
53
+ }
54
+ catch {
55
+ }
39
56
  return (0, response_utils_1.createJsonResponse)(result);
40
57
  }
41
58
  catch (error) {
@@ -70,6 +87,7 @@ let QualityReportHandler = QualityReportHandler_1 = class QualityReportHandler e
70
87
  exports.QualityReportHandler = QualityReportHandler;
71
88
  exports.QualityReportHandler = QualityReportHandler = QualityReportHandler_1 = __decorate([
72
89
  (0, common_1.Injectable)(),
73
- __metadata("design:paramtypes", [quality_report_service_1.QualityReportService])
90
+ __metadata("design:paramtypes", [quality_report_service_1.QualityReportService,
91
+ rule_event_collector_1.RuleEventCollector])
74
92
  ], QualityReportHandler);
75
93
  //# sourceMappingURL=quality-report.handler.js.map
@@ -11,6 +11,7 @@ export declare class RulesService {
11
11
  getRuleContent(relativePath: string): Promise<string>;
12
12
  listAgents(): Promise<string[]>;
13
13
  private sortAgentsByPriority;
14
+ getRulesDir(): string;
14
15
  isModeAgent(agentName: string): boolean;
15
16
  getAgent(name: string): Promise<AgentProfile>;
16
17
  searchRules(query: string): Promise<SearchResult[]>;
@@ -18,6 +19,11 @@ export declare class RulesService {
18
19
  name: string;
19
20
  description: string;
20
21
  triggers?: SkillFrontmatterTrigger[];
22
+ userInvocable?: boolean;
23
+ disableModelInvocation?: boolean;
24
+ context?: string;
25
+ agent?: string;
26
+ allowedTools?: string[];
21
27
  }>>;
22
28
  getSkill(name: string): Promise<Skill>;
23
29
  }
@@ -82,6 +82,9 @@ let RulesService = RulesService_1 = class RulesService {
82
82
  const sortedModeAgents = keyword_types_1.MODE_AGENTS.filter(agent => foundModeAgents.includes(agent));
83
83
  return [...sortedModeAgents, ...otherAgents.sort()];
84
84
  }
85
+ getRulesDir() {
86
+ return this.rulesDir;
87
+ }
85
88
  isModeAgent(agentName) {
86
89
  return keyword_types_1.MODE_AGENTS.includes(agentName);
87
90
  }
@@ -13,5 +13,10 @@ export interface Skill {
13
13
  content: string;
14
14
  path: string;
15
15
  triggers?: SkillFrontmatterTrigger[];
16
+ userInvocable?: boolean;
17
+ disableModelInvocation?: boolean;
18
+ context?: string;
19
+ agent?: string;
20
+ allowedTools?: string[];
16
21
  }
17
22
  export declare function parseSkill(content: string, filePath: string): Skill;