codingbuddy 5.2.0 → 5.4.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 (472) 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 +9 -0
  21. package/dist/src/agent/index.js +9 -0
  22. package/dist/src/agent/stack-matcher.d.ts +13 -0
  23. package/dist/src/agent/stack-matcher.js +81 -0
  24. package/dist/src/agent/teams-capability.service.d.ts +11 -0
  25. package/dist/src/agent/teams-capability.service.js +74 -0
  26. package/dist/src/agent/teams-capability.types.d.ts +6 -0
  27. package/dist/src/agent/teams-capability.types.js +3 -0
  28. package/dist/src/cli/cli.d.ts +4 -3
  29. package/dist/src/cli/cli.js +54 -0
  30. package/dist/src/cli/cli.types.d.ts +4 -0
  31. package/dist/src/cli/completion/completion.d.ts +16 -0
  32. package/dist/src/cli/completion/completion.js +276 -0
  33. package/dist/src/cli/completion/index.d.ts +2 -0
  34. package/dist/src/cli/completion/index.js +7 -0
  35. package/dist/src/cli/plugin/create-plugin.command.d.ts +21 -0
  36. package/dist/src/cli/plugin/create-plugin.command.js +151 -0
  37. package/dist/src/cli/run-tui.d.ts +1 -0
  38. package/dist/src/cli/run-tui.js +7 -1
  39. package/dist/src/config/config.schema.d.ts +3 -0
  40. package/dist/src/config/config.schema.js +5 -0
  41. package/dist/src/keyword/keyword.module.js +39 -2
  42. package/dist/src/keyword/keyword.service.d.ts +5 -0
  43. package/dist/src/keyword/keyword.service.js +90 -6
  44. package/dist/src/keyword/keyword.types.d.ts +30 -0
  45. package/dist/src/keyword/permission-forecast.d.ts +2 -0
  46. package/dist/src/keyword/permission-forecast.js +94 -0
  47. package/dist/src/mcp/handlers/agent.handler.d.ts +6 -1
  48. package/dist/src/mcp/handlers/agent.handler.js +81 -8
  49. package/dist/src/mcp/handlers/checklist-context.handler.d.ts +3 -1
  50. package/dist/src/mcp/handlers/checklist-context.handler.js +17 -2
  51. package/dist/src/mcp/handlers/clarification-gate.d.ts +22 -0
  52. package/dist/src/mcp/handlers/clarification-gate.js +129 -0
  53. package/dist/src/mcp/handlers/council-scene.builder.d.ts +9 -0
  54. package/dist/src/mcp/handlers/council-scene.builder.js +115 -0
  55. package/dist/src/mcp/handlers/council-scene.types.d.ts +11 -0
  56. package/dist/src/mcp/handlers/council-scene.types.js +3 -0
  57. package/dist/src/mcp/handlers/discussion.handler.d.ts +4 -0
  58. package/dist/src/mcp/handlers/discussion.handler.js +45 -5
  59. package/dist/src/mcp/handlers/discussion.types.d.ts +12 -0
  60. package/dist/src/mcp/handlers/discussion.types.js +4 -1
  61. package/dist/src/mcp/handlers/execution-gate.d.ts +29 -0
  62. package/dist/src/mcp/handlers/execution-gate.js +49 -0
  63. package/dist/src/mcp/handlers/index.d.ts +1 -0
  64. package/dist/src/mcp/handlers/index.js +3 -1
  65. package/dist/src/mcp/handlers/mode.handler.d.ts +14 -1
  66. package/dist/src/mcp/handlers/mode.handler.js +205 -3
  67. package/dist/src/mcp/handlers/planning-contract.d.ts +2 -0
  68. package/dist/src/mcp/handlers/planning-contract.js +28 -0
  69. package/dist/src/mcp/handlers/planning-stage.d.ts +20 -0
  70. package/dist/src/mcp/handlers/planning-stage.js +58 -0
  71. package/dist/src/mcp/handlers/quality-report.handler.d.ts +3 -1
  72. package/dist/src/mcp/handlers/quality-report.handler.js +20 -2
  73. package/dist/src/mcp/handlers/review-pr.handler.d.ts +12 -0
  74. package/dist/src/mcp/handlers/review-pr.handler.js +81 -0
  75. package/dist/src/mcp/mcp.module.js +1 -0
  76. package/dist/src/rules/rules.service.d.ts +6 -0
  77. package/dist/src/rules/rules.service.js +3 -0
  78. package/dist/src/rules/skill.schema.d.ts +5 -0
  79. package/dist/src/rules/skill.schema.js +36 -0
  80. package/dist/src/shared/rules-core.d.ts +5 -0
  81. package/dist/src/shared/rules-core.js +5 -0
  82. package/dist/src/shared/version.d.ts +1 -1
  83. package/dist/src/shared/version.js +1 -1
  84. package/dist/src/ship/review-pr.service.d.ts +15 -0
  85. package/dist/src/ship/review-pr.service.js +136 -0
  86. package/dist/src/ship/review-pr.types.d.ts +21 -0
  87. package/dist/src/ship/review-pr.types.js +3 -0
  88. package/dist/src/ship/ship.module.js +5 -2
  89. package/dist/src/skill/i18n/keywords.js +921 -0
  90. package/dist/src/skill/skill-recommendation.service.d.ts +1 -0
  91. package/dist/src/skill/skill-recommendation.service.js +27 -1
  92. package/dist/src/skill/skill-recommendation.types.d.ts +5 -0
  93. package/dist/src/tui/events/hud-file-bridge.d.ts +4 -0
  94. package/dist/src/tui/events/hud-file-bridge.js +36 -0
  95. package/dist/src/tui-bundle.mjs +45 -3
  96. package/package.json +7 -2
  97. package/dist/api/mcp.js.map +0 -1
  98. package/dist/src/agent/agent-prompt.builder.js.map +0 -1
  99. package/dist/src/agent/agent-summary.utils.js.map +0 -1
  100. package/dist/src/agent/agent.module.js.map +0 -1
  101. package/dist/src/agent/agent.service.js.map +0 -1
  102. package/dist/src/agent/agent.types.js.map +0 -1
  103. package/dist/src/agent/index.js.map +0 -1
  104. package/dist/src/analyzer/analyzer.module.js.map +0 -1
  105. package/dist/src/analyzer/analyzer.service.js.map +0 -1
  106. package/dist/src/analyzer/analyzer.types.js.map +0 -1
  107. package/dist/src/analyzer/code.sampler.js.map +0 -1
  108. package/dist/src/analyzer/config.analyzer.js.map +0 -1
  109. package/dist/src/analyzer/conventions.analyzer.js.map +0 -1
  110. package/dist/src/analyzer/conventions.schemas.js.map +0 -1
  111. package/dist/src/analyzer/conventions.types.js.map +0 -1
  112. package/dist/src/analyzer/directory.analyzer.js.map +0 -1
  113. package/dist/src/analyzer/index.js.map +0 -1
  114. package/dist/src/analyzer/package.analyzer.js.map +0 -1
  115. package/dist/src/app.module.js.map +0 -1
  116. package/dist/src/checklist/checklist.module.js.map +0 -1
  117. package/dist/src/checklist/checklist.schema.js.map +0 -1
  118. package/dist/src/checklist/checklist.service.js.map +0 -1
  119. package/dist/src/checklist/checklist.types.js.map +0 -1
  120. package/dist/src/checklist/index.js.map +0 -1
  121. package/dist/src/cli/cli.js.map +0 -1
  122. package/dist/src/cli/cli.types.js.map +0 -1
  123. package/dist/src/cli/index.js.map +0 -1
  124. package/dist/src/cli/init/claude-settings.utils.js.map +0 -1
  125. package/dist/src/cli/init/config.generator.js.map +0 -1
  126. package/dist/src/cli/init/config.writer.js.map +0 -1
  127. package/dist/src/cli/init/gitignore.utils.js.map +0 -1
  128. package/dist/src/cli/init/index.js.map +0 -1
  129. package/dist/src/cli/init/init.command.js.map +0 -1
  130. package/dist/src/cli/init/init.constants.js.map +0 -1
  131. package/dist/src/cli/init/init.wizard.js.map +0 -1
  132. package/dist/src/cli/init/prompt.builder.js.map +0 -1
  133. package/dist/src/cli/init/prompts/agent-prompt.js.map +0 -1
  134. package/dist/src/cli/init/prompts/architecture-prompt.js.map +0 -1
  135. package/dist/src/cli/init/prompts/basic-prompt.js.map +0 -1
  136. package/dist/src/cli/init/prompts/conventions-prompt.js.map +0 -1
  137. package/dist/src/cli/init/prompts/index.js.map +0 -1
  138. package/dist/src/cli/init/prompts/language-prompt.js.map +0 -1
  139. package/dist/src/cli/init/prompts/model-prompt.js.map +0 -1
  140. package/dist/src/cli/init/prompts/tech-stack-prompt.js.map +0 -1
  141. package/dist/src/cli/init/prompts/test-strategy-prompt.js.map +0 -1
  142. package/dist/src/cli/init/summary/index.js.map +0 -1
  143. package/dist/src/cli/init/summary/summary.prompt.js.map +0 -1
  144. package/dist/src/cli/init/summary/summary.renderer.js.map +0 -1
  145. package/dist/src/cli/init/templates/config-renderer.js.map +0 -1
  146. package/dist/src/cli/init/templates/frameworks/default.template.js.map +0 -1
  147. package/dist/src/cli/init/templates/frameworks/express.template.js.map +0 -1
  148. package/dist/src/cli/init/templates/frameworks/index.js.map +0 -1
  149. package/dist/src/cli/init/templates/frameworks/nestjs.template.js.map +0 -1
  150. package/dist/src/cli/init/templates/frameworks/nextjs.template.js.map +0 -1
  151. package/dist/src/cli/init/templates/frameworks/node.template.js.map +0 -1
  152. package/dist/src/cli/init/templates/frameworks/react.template.js.map +0 -1
  153. package/dist/src/cli/init/templates/index.js.map +0 -1
  154. package/dist/src/cli/init/templates/template.renderer.js.map +0 -1
  155. package/dist/src/cli/init/templates/template.selector.js.map +0 -1
  156. package/dist/src/cli/init/templates/template.types.js.map +0 -1
  157. package/dist/src/cli/plugin/install.command.js.map +0 -1
  158. package/dist/src/cli/plugin/plugins.command.js.map +0 -1
  159. package/dist/src/cli/plugin/search.command.js.map +0 -1
  160. package/dist/src/cli/plugin/uninstall.command.js.map +0 -1
  161. package/dist/src/cli/plugin/update.command.js.map +0 -1
  162. package/dist/src/cli/restart-tui.js.map +0 -1
  163. package/dist/src/cli/run-tui.js.map +0 -1
  164. package/dist/src/cli/utils/console.js.map +0 -1
  165. package/dist/src/cli/utils/index.js.map +0 -1
  166. package/dist/src/collaboration/discussion-engine.js.map +0 -1
  167. package/dist/src/collaboration/index.js.map +0 -1
  168. package/dist/src/collaboration/opinion-adapter.js.map +0 -1
  169. package/dist/src/collaboration/terminal-formatter.js.map +0 -1
  170. package/dist/src/collaboration/types.js.map +0 -1
  171. package/dist/src/config/config-diff.service.js.map +0 -1
  172. package/dist/src/config/config.loader.js.map +0 -1
  173. package/dist/src/config/config.module.js.map +0 -1
  174. package/dist/src/config/config.schema.js.map +0 -1
  175. package/dist/src/config/config.service.js.map +0 -1
  176. package/dist/src/config/context.loader.js.map +0 -1
  177. package/dist/src/config/ignore.parser.js.map +0 -1
  178. package/dist/src/config/index.js.map +0 -1
  179. package/dist/src/context/briefing-loader.service.js.map +0 -1
  180. package/dist/src/context/briefing.service.js.map +0 -1
  181. package/dist/src/context/briefing.types.js.map +0 -1
  182. package/dist/src/context/context-archive.service.js.map +0 -1
  183. package/dist/src/context/context-archive.types.js.map +0 -1
  184. package/dist/src/context/context-document.service.js.map +0 -1
  185. package/dist/src/context/context-document.types.js.map +0 -1
  186. package/dist/src/context/context-parser.utils.js.map +0 -1
  187. package/dist/src/context/context-serializer.utils.js.map +0 -1
  188. package/dist/src/context/context.module.js.map +0 -1
  189. package/dist/src/context/context.service.js.map +0 -1
  190. package/dist/src/context/context.types.js.map +0 -1
  191. package/dist/src/context/index.js.map +0 -1
  192. package/dist/src/context/intent-patterns.js.map +0 -1
  193. package/dist/src/custom/custom.module.js.map +0 -1
  194. package/dist/src/custom/custom.service.js.map +0 -1
  195. package/dist/src/custom/custom.types.js.map +0 -1
  196. package/dist/src/custom/index.js.map +0 -1
  197. package/dist/src/diagnostic/diagnostic-log.service.js.map +0 -1
  198. package/dist/src/diagnostic/diagnostic.module.js.map +0 -1
  199. package/dist/src/diagnostic/diagnostic.types.js.map +0 -1
  200. package/dist/src/diagnostic/index.js.map +0 -1
  201. package/dist/src/impact/impact-event.service.js.map +0 -1
  202. package/dist/src/impact/impact-report.service.js.map +0 -1
  203. package/dist/src/impact/impact.module.js.map +0 -1
  204. package/dist/src/impact/impact.types.js.map +0 -1
  205. package/dist/src/impact/index.js.map +0 -1
  206. package/dist/src/keyword/activation-message.builder.js.map +0 -1
  207. package/dist/src/keyword/auto-executor.js.map +0 -1
  208. package/dist/src/keyword/auto-executor.types.js.map +0 -1
  209. package/dist/src/keyword/auto-formatter.js.map +0 -1
  210. package/dist/src/keyword/auto-prompt-builder.js.map +0 -1
  211. package/dist/src/keyword/complexity-classifier.js.map +0 -1
  212. package/dist/src/keyword/complexity-indicators.js.map +0 -1
  213. package/dist/src/keyword/diff-analyzer.js.map +0 -1
  214. package/dist/src/keyword/explicit-pattern-matcher.js.map +0 -1
  215. package/dist/src/keyword/index.js.map +0 -1
  216. package/dist/src/keyword/keyword.module.js.map +0 -1
  217. package/dist/src/keyword/keyword.service.js.map +0 -1
  218. package/dist/src/keyword/keyword.types.js.map +0 -1
  219. package/dist/src/keyword/patterns/agent.patterns.js.map +0 -1
  220. package/dist/src/keyword/patterns/ai-ml.patterns.js.map +0 -1
  221. package/dist/src/keyword/patterns/backend.patterns.js.map +0 -1
  222. package/dist/src/keyword/patterns/context.patterns.js.map +0 -1
  223. package/dist/src/keyword/patterns/data-science.patterns.js.map +0 -1
  224. package/dist/src/keyword/patterns/data.patterns.js.map +0 -1
  225. package/dist/src/keyword/patterns/devops.patterns.js.map +0 -1
  226. package/dist/src/keyword/patterns/explicit.patterns.js.map +0 -1
  227. package/dist/src/keyword/patterns/frontend.patterns.js.map +0 -1
  228. package/dist/src/keyword/patterns/index.js.map +0 -1
  229. package/dist/src/keyword/patterns/intent-pattern-checks.js.map +0 -1
  230. package/dist/src/keyword/patterns/intent-patterns.types.js.map +0 -1
  231. package/dist/src/keyword/patterns/meta-discussion.patterns.js.map +0 -1
  232. package/dist/src/keyword/patterns/mobile.patterns.js.map +0 -1
  233. package/dist/src/keyword/patterns/platform.patterns.js.map +0 -1
  234. package/dist/src/keyword/patterns/security.patterns.js.map +0 -1
  235. package/dist/src/keyword/patterns/systems.patterns.js.map +0 -1
  236. package/dist/src/keyword/patterns/test.patterns.js.map +0 -1
  237. package/dist/src/keyword/patterns/tooling.patterns.js.map +0 -1
  238. package/dist/src/keyword/primary-agent-resolver.js.map +0 -1
  239. package/dist/src/keyword/rule-filter.js.map +0 -1
  240. package/dist/src/keyword/srp-template.js.map +0 -1
  241. package/dist/src/keyword/strategies/__tests__/strategy-test.utils.js.map +0 -1
  242. package/dist/src/keyword/strategies/act-agent.strategy.js.map +0 -1
  243. package/dist/src/keyword/strategies/eval-agent.strategy.js.map +0 -1
  244. package/dist/src/keyword/strategies/index.js.map +0 -1
  245. package/dist/src/keyword/strategies/plan-agent.strategy.js.map +0 -1
  246. package/dist/src/keyword/strategies/resolution-strategy.interface.js.map +0 -1
  247. package/dist/src/keyword/taskmaestro-detector.js.map +0 -1
  248. package/dist/src/keyword/visual-data.builder.js.map +0 -1
  249. package/dist/src/main.js.map +0 -1
  250. package/dist/src/mcp/handlers/abstract-handler.js.map +0 -1
  251. package/dist/src/mcp/handlers/agent.handler.js.map +0 -1
  252. package/dist/src/mcp/handlers/base.handler.js.map +0 -1
  253. package/dist/src/mcp/handlers/briefing.handler.js.map +0 -1
  254. package/dist/src/mcp/handlers/checklist-context.handler.js.map +0 -1
  255. package/dist/src/mcp/handlers/config.handler.js.map +0 -1
  256. package/dist/src/mcp/handlers/context-archive.handler.js.map +0 -1
  257. package/dist/src/mcp/handlers/context-document.handler.js.map +0 -1
  258. package/dist/src/mcp/handlers/conventions.handler.js.map +0 -1
  259. package/dist/src/mcp/handlers/discussion.handler.js.map +0 -1
  260. package/dist/src/mcp/handlers/discussion.types.js.map +0 -1
  261. package/dist/src/mcp/handlers/impact.handler.js.map +0 -1
  262. package/dist/src/mcp/handlers/index.js.map +0 -1
  263. package/dist/src/mcp/handlers/mode.handler.js.map +0 -1
  264. package/dist/src/mcp/handlers/pipeline.handler.js.map +0 -1
  265. package/dist/src/mcp/handlers/plugin-validation.handler.js.map +0 -1
  266. package/dist/src/mcp/handlers/quality-report.handler.js.map +0 -1
  267. package/dist/src/mcp/handlers/release-check.handler.js.map +0 -1
  268. package/dist/src/mcp/handlers/resume.handler.js.map +0 -1
  269. package/dist/src/mcp/handlers/rule-impact.handler.js.map +0 -1
  270. package/dist/src/mcp/handlers/rule-insights.handler.js.map +0 -1
  271. package/dist/src/mcp/handlers/rules.handler.js.map +0 -1
  272. package/dist/src/mcp/handlers/skill.handler.js.map +0 -1
  273. package/dist/src/mcp/handlers/tui.handler.js.map +0 -1
  274. package/dist/src/mcp/mcp-serverless.js.map +0 -1
  275. package/dist/src/mcp/mcp.controller.js.map +0 -1
  276. package/dist/src/mcp/mcp.module.js.map +0 -1
  277. package/dist/src/mcp/mcp.service.js.map +0 -1
  278. package/dist/src/mcp/response.utils.js.map +0 -1
  279. package/dist/src/mcp/sse-auth.guard.js.map +0 -1
  280. package/dist/src/model/index.js.map +0 -1
  281. package/dist/src/model/model-resolver.service.js.map +0 -1
  282. package/dist/src/model/model.constants.js.map +0 -1
  283. package/dist/src/model/model.resolver.js.map +0 -1
  284. package/dist/src/model/model.types.js.map +0 -1
  285. package/dist/src/parallel-validation/extract-file-paths.js.map +0 -1
  286. package/dist/src/parallel-validation/index.js.map +0 -1
  287. package/dist/src/parallel-validation/overlap-matrix.js.map +0 -1
  288. package/dist/src/parallel-validation/parallel-validation.handler.js.map +0 -1
  289. package/dist/src/parallel-validation/parallel-validation.types.js.map +0 -1
  290. package/dist/src/parallel-validation/wave-splitter.js.map +0 -1
  291. package/dist/src/pipeline/index.js.map +0 -1
  292. package/dist/src/pipeline/pipeline.executors.js.map +0 -1
  293. package/dist/src/pipeline/pipeline.module.js.map +0 -1
  294. package/dist/src/pipeline/pipeline.service.js.map +0 -1
  295. package/dist/src/pipeline/pipeline.types.js.map +0 -1
  296. package/dist/src/plugin/plugin-installer.service.js.map +0 -1
  297. package/dist/src/plugin/plugin-manifest.schema.js.map +0 -1
  298. package/dist/src/plugin/plugin.module.js.map +0 -1
  299. package/dist/src/plugin/plugin.types.js.map +0 -1
  300. package/dist/src/plugin/registry-client.js.map +0 -1
  301. package/dist/src/rules/agent.schema.js.map +0 -1
  302. package/dist/src/rules/rule-event-collector.js.map +0 -1
  303. package/dist/src/rules/rule-event.types.js.map +0 -1
  304. package/dist/src/rules/rule-insights.service.js.map +0 -1
  305. package/dist/src/rules/rule-stats-writer.js.map +0 -1
  306. package/dist/src/rules/rule-tracker.js.map +0 -1
  307. package/dist/src/rules/rules-content.utils.js.map +0 -1
  308. package/dist/src/rules/rules.module.js.map +0 -1
  309. package/dist/src/rules/rules.service.js.map +0 -1
  310. package/dist/src/rules/rules.types.js.map +0 -1
  311. package/dist/src/rules/skill.schema.js.map +0 -1
  312. package/dist/src/shared/agent.utils.js.map +0 -1
  313. package/dist/src/shared/async.utils.js.map +0 -1
  314. package/dist/src/shared/client-type.js.map +0 -1
  315. package/dist/src/shared/error.utils.js.map +0 -1
  316. package/dist/src/shared/esm-import.js.map +0 -1
  317. package/dist/src/shared/event-bridge-reader.js.map +0 -1
  318. package/dist/src/shared/file.utils.js.map +0 -1
  319. package/dist/src/shared/filesystem.interface.js.map +0 -1
  320. package/dist/src/shared/format.utils.js.map +0 -1
  321. package/dist/src/shared/keyword-core.js.map +0 -1
  322. package/dist/src/shared/language.service.js.map +0 -1
  323. package/dist/src/shared/language.types.js.map +0 -1
  324. package/dist/src/shared/lru-cache.js.map +0 -1
  325. package/dist/src/shared/node-filesystem.service.js.map +0 -1
  326. package/dist/src/shared/path.utils.js.map +0 -1
  327. package/dist/src/shared/pattern-matcher.js.map +0 -1
  328. package/dist/src/shared/rules-core.js.map +0 -1
  329. package/dist/src/shared/security.utils.js.map +0 -1
  330. package/dist/src/shared/slug.utils.js.map +0 -1
  331. package/dist/src/shared/tui-bundle-path.js.map +0 -1
  332. package/dist/src/shared/validation.constants.js.map +0 -1
  333. package/dist/src/shared/verbosity.types.js.map +0 -1
  334. package/dist/src/shared/version.js.map +0 -1
  335. package/dist/src/shared/version.utils.js.map +0 -1
  336. package/dist/src/ship/file-specialist-mapper.js.map +0 -1
  337. package/dist/src/ship/quality-report.service.js.map +0 -1
  338. package/dist/src/ship/quality-report.types.js.map +0 -1
  339. package/dist/src/ship/ship.module.js.map +0 -1
  340. package/dist/src/skill/i18n/index.js.map +0 -1
  341. package/dist/src/skill/i18n/keywords.js.map +0 -1
  342. package/dist/src/skill/i18n/keywords.types.js.map +0 -1
  343. package/dist/src/skill/index.js.map +0 -1
  344. package/dist/src/skill/skill-content.utils.js.map +0 -1
  345. package/dist/src/skill/skill-recommendation.service.js.map +0 -1
  346. package/dist/src/skill/skill-recommendation.types.js.map +0 -1
  347. package/dist/src/skill/skill-triggers.js.map +0 -1
  348. package/dist/src/skill/skill.module.js.map +0 -1
  349. package/dist/src/state/index.js.map +0 -1
  350. package/dist/src/state/state.module.js.map +0 -1
  351. package/dist/src/state/state.service.js.map +0 -1
  352. package/dist/src/state/state.types.js.map +0 -1
  353. package/dist/src/tui/__perf__/memory-stability.spec.d.ts +0 -1
  354. package/dist/src/tui/__perf__/memory-stability.spec.js +0 -105
  355. package/dist/src/tui/__perf__/memory-stability.spec.js.map +0 -1
  356. package/dist/src/tui/__perf__/rendering-performance.spec.d.ts +0 -1
  357. package/dist/src/tui/__perf__/rendering-performance.spec.js +0 -163
  358. package/dist/src/tui/__perf__/rendering-performance.spec.js.map +0 -1
  359. package/dist/src/tui/cli-flags.js.map +0 -1
  360. package/dist/src/tui/components/ActModeScreen.js.map +0 -1
  361. package/dist/src/tui/components/ActivityVisualizer.js.map +0 -1
  362. package/dist/src/tui/components/ActivityVisualizer.spec.d.ts +0 -1
  363. package/dist/src/tui/components/ActivityVisualizer.spec.js +0 -91
  364. package/dist/src/tui/components/ActivityVisualizer.spec.js.map +0 -1
  365. package/dist/src/tui/components/AgentDiscussionPanel.js.map +0 -1
  366. package/dist/src/tui/components/AgentDiscussionPanel.spec.d.ts +0 -1
  367. package/dist/src/tui/components/AgentDiscussionPanel.spec.js +0 -229
  368. package/dist/src/tui/components/AgentDiscussionPanel.spec.js.map +0 -1
  369. package/dist/src/tui/components/ChecklistPanel.js.map +0 -1
  370. package/dist/src/tui/components/ChecklistPanel.spec.d.ts +0 -1
  371. package/dist/src/tui/components/ChecklistPanel.spec.js +0 -45
  372. package/dist/src/tui/components/ChecklistPanel.spec.js.map +0 -1
  373. package/dist/src/tui/components/ContextSection.js.map +0 -1
  374. package/dist/src/tui/components/EvalModeScreen.js.map +0 -1
  375. package/dist/src/tui/components/FlowMap.js.map +0 -1
  376. package/dist/src/tui/components/FlowMap.spec.d.ts +0 -1
  377. package/dist/src/tui/components/FlowMap.spec.js +0 -147
  378. package/dist/src/tui/components/FlowMap.spec.js.map +0 -1
  379. package/dist/src/tui/components/FocusedAgentPanel.js.map +0 -1
  380. package/dist/src/tui/components/FocusedAgentPanel.spec.d.ts +0 -1
  381. package/dist/src/tui/components/FocusedAgentPanel.spec.js +0 -183
  382. package/dist/src/tui/components/FocusedAgentPanel.spec.js.map +0 -1
  383. package/dist/src/tui/components/HeaderBar.js.map +0 -1
  384. package/dist/src/tui/components/HeaderBar.spec.d.ts +0 -1
  385. package/dist/src/tui/components/HeaderBar.spec.js +0 -96
  386. package/dist/src/tui/components/HeaderBar.spec.js.map +0 -1
  387. package/dist/src/tui/components/ModeScreenRouter.js.map +0 -1
  388. package/dist/src/tui/components/PlanModeScreen.js.map +0 -1
  389. package/dist/src/tui/components/SessionDashboard.js.map +0 -1
  390. package/dist/src/tui/components/SessionTabBar.js.map +0 -1
  391. package/dist/src/tui/components/SessionTabBar.spec.d.ts +0 -1
  392. package/dist/src/tui/components/SessionTabBar.spec.js +0 -59
  393. package/dist/src/tui/components/SessionTabBar.spec.js.map +0 -1
  394. package/dist/src/tui/components/StageHealthBar.js.map +0 -1
  395. package/dist/src/tui/components/StageHealthBar.spec.d.ts +0 -1
  396. package/dist/src/tui/components/StageHealthBar.spec.js +0 -99
  397. package/dist/src/tui/components/StageHealthBar.spec.js.map +0 -1
  398. package/dist/src/tui/components/act-screen.pure.js.map +0 -1
  399. package/dist/src/tui/components/activity-visualizer.pure.js.map +0 -1
  400. package/dist/src/tui/components/agent-discussion-panel.pure.js.map +0 -1
  401. package/dist/src/tui/components/checklist-panel.pure.js.map +0 -1
  402. package/dist/src/tui/components/context-section.pure.js.map +0 -1
  403. package/dist/src/tui/components/eval-screen.pure.js.map +0 -1
  404. package/dist/src/tui/components/flow-map.pure.js.map +0 -1
  405. package/dist/src/tui/components/focused-agent.pure.js.map +0 -1
  406. package/dist/src/tui/components/grid-layout.pure.js.map +0 -1
  407. package/dist/src/tui/components/index.js.map +0 -1
  408. package/dist/src/tui/components/live.pure.js.map +0 -1
  409. package/dist/src/tui/components/plan-screen.pure.js.map +0 -1
  410. package/dist/src/tui/components/session-dashboard.pure.js.map +0 -1
  411. package/dist/src/tui/components/session-tab-bar.pure.js.map +0 -1
  412. package/dist/src/tui/components/stage-health.pure.js.map +0 -1
  413. package/dist/src/tui/dashboard-app.js.map +0 -1
  414. package/dist/src/tui/dashboard-app.spec.d.ts +0 -1
  415. package/dist/src/tui/dashboard-app.spec.js +0 -158
  416. package/dist/src/tui/dashboard-app.spec.js.map +0 -1
  417. package/dist/src/tui/dashboard-types.js.map +0 -1
  418. package/dist/src/tui/ensure-tui-ready.js.map +0 -1
  419. package/dist/src/tui/eventbus-ui.integration.spec.d.ts +0 -1
  420. package/dist/src/tui/eventbus-ui.integration.spec.js +0 -577
  421. package/dist/src/tui/eventbus-ui.integration.spec.js.map +0 -1
  422. package/dist/src/tui/events/agent-metadata.service.js.map +0 -1
  423. package/dist/src/tui/events/agent-metadata.types.js.map +0 -1
  424. package/dist/src/tui/events/event-bus.js.map +0 -1
  425. package/dist/src/tui/events/events.module.js.map +0 -1
  426. package/dist/src/tui/events/hud-file-bridge.js.map +0 -1
  427. package/dist/src/tui/events/index.js.map +0 -1
  428. package/dist/src/tui/events/parse-agent.js.map +0 -1
  429. package/dist/src/tui/events/parse-tool-response.js.map +0 -1
  430. package/dist/src/tui/events/response-event-extractor.js.map +0 -1
  431. package/dist/src/tui/events/tui-interceptor.js.map +0 -1
  432. package/dist/src/tui/events/types.js.map +0 -1
  433. package/dist/src/tui/hooks/index.js.map +0 -1
  434. package/dist/src/tui/hooks/use-dashboard-state.js.map +0 -1
  435. package/dist/src/tui/hooks/use-focus-agent.js.map +0 -1
  436. package/dist/src/tui/hooks/use-multi-session-state.js.map +0 -1
  437. package/dist/src/tui/hooks/use-terminal-size.js.map +0 -1
  438. package/dist/src/tui/hooks/use-tick.js.map +0 -1
  439. package/dist/src/tui/hooks/use-tick.spec.d.ts +0 -1
  440. package/dist/src/tui/hooks/use-tick.spec.js +0 -70
  441. package/dist/src/tui/hooks/use-tick.spec.js.map +0 -1
  442. package/dist/src/tui/index.js.map +0 -1
  443. package/dist/src/tui/ipc/index.js.map +0 -1
  444. package/dist/src/tui/ipc/instance-registry.js.map +0 -1
  445. package/dist/src/tui/ipc/ipc-bridge.js.map +0 -1
  446. package/dist/src/tui/ipc/ipc-client.js.map +0 -1
  447. package/dist/src/tui/ipc/ipc-debug.js.map +0 -1
  448. package/dist/src/tui/ipc/ipc-server.js.map +0 -1
  449. package/dist/src/tui/ipc/ipc-state-cache.js.map +0 -1
  450. package/dist/src/tui/ipc/ipc.types.js.map +0 -1
  451. package/dist/src/tui/ipc/multi-session-manager.js.map +0 -1
  452. package/dist/src/tui/ipc/shutdown-manager.js.map +0 -1
  453. package/dist/src/tui/ipc/test-utils.js.map +0 -1
  454. package/dist/src/tui/ipc/tui-auto-launcher.js.map +0 -1
  455. package/dist/src/tui/multi-session-app.js.map +0 -1
  456. package/dist/src/tui/multi-session-app.spec.d.ts +0 -1
  457. package/dist/src/tui/multi-session-app.spec.js +0 -95
  458. package/dist/src/tui/multi-session-app.spec.js.map +0 -1
  459. package/dist/src/tui/testing/tui-test-utils.js.map +0 -1
  460. package/dist/src/tui/transport-tui.integration.spec.d.ts +0 -1
  461. package/dist/src/tui/transport-tui.integration.spec.js +0 -189
  462. package/dist/src/tui/transport-tui.integration.spec.js.map +0 -1
  463. package/dist/src/tui/tui-config.js.map +0 -1
  464. package/dist/src/tui/types.js.map +0 -1
  465. package/dist/src/tui/utils/color-buffer.js.map +0 -1
  466. package/dist/src/tui/utils/colors.js.map +0 -1
  467. package/dist/src/tui/utils/display-width.js.map +0 -1
  468. package/dist/src/tui/utils/edge-router.js.map +0 -1
  469. package/dist/src/tui/utils/icons.js.map +0 -1
  470. package/dist/src/tui/utils/index.js.map +0 -1
  471. package/dist/src/tui/utils/theme.js.map +0 -1
  472. package/dist/tsconfig.build.tsbuildinfo +0 -1
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CLARIFICATION_TOPICS = exports.MIN_PROMPT_LENGTH = exports.DEFAULT_QUESTION_BUDGET = void 0;
4
+ exports.hasOverridePhrase = hasOverridePhrase;
5
+ exports.hasVagueIntent = hasVagueIntent;
6
+ exports.hasTechnicalReference = hasTechnicalReference;
7
+ exports.evaluateClarification = evaluateClarification;
8
+ exports.DEFAULT_QUESTION_BUDGET = 3;
9
+ exports.MIN_PROMPT_LENGTH = 20;
10
+ const OVERRIDE_PHRASE_PATTERNS = [
11
+ /\bjust\s+do\s+it\b/i,
12
+ /\buse\s+your\s+(?:judg(?:e)?ment|best\s+guess|discretion)\b/i,
13
+ /\bgo\s+ahead\b/i,
14
+ /\bmake\s+assumptions?\b/i,
15
+ /\bassume\s+(?:whatever|defaults?|reasonable)\b/i,
16
+ /알아서\s*(?:해|진행|처리)/,
17
+ /그냥\s*(?:해|진행)/,
18
+ /임의로\s*(?:해|진행)/,
19
+ ];
20
+ const VAGUE_INTENT_PATTERNS = [
21
+ /\bimprove\b/i,
22
+ /\b(?:make\s+it\s+)?better\b/i,
23
+ /\benhance\b/i,
24
+ /\boptimi[sz]e\b/i,
25
+ /\brefactor\b/i,
26
+ /\bclean\s*up\b/i,
27
+ /\btweak\b/i,
28
+ /\bfix\s+(?:stuff|things|issues?)\b/i,
29
+ /개선/,
30
+ /향상/,
31
+ /최적화/,
32
+ /정리/,
33
+ /개량/,
34
+ ];
35
+ const TECHNICAL_REFERENCE_PATTERNS = [
36
+ /\.(?:ts|tsx|js|jsx|mjs|cjs|py|go|rs|java|kt|swift|rb|php|c|cpp|h|hpp|cs|md|mdx|json|ya?ml|toml|sql|sh|bash|zsh|vue|svelte|html|css|scss|sass|less)\b/i,
37
+ /(?:^|[\s([`"'])[\w.-]+\/[\w.\-/]+/,
38
+ /\b[a-zA-Z_][\w]*\(/,
39
+ /\b[A-Z][a-zA-Z0-9]*[A-Z][a-zA-Z0-9]+\b/,
40
+ /\b[a-z][a-z0-9]+[A-Z][a-zA-Z0-9]+\b/,
41
+ /\b[a-z]+_[a-z][a-z0-9_]*\b/,
42
+ /`[^`]+`/,
43
+ ];
44
+ function hasOverridePhrase(prompt) {
45
+ return OVERRIDE_PHRASE_PATTERNS.some(pattern => pattern.test(prompt));
46
+ }
47
+ function hasVagueIntent(prompt) {
48
+ return VAGUE_INTENT_PATTERNS.some(pattern => pattern.test(prompt));
49
+ }
50
+ function hasTechnicalReference(prompt) {
51
+ return TECHNICAL_REFERENCE_PATTERNS.some(pattern => pattern.test(prompt));
52
+ }
53
+ exports.CLARIFICATION_TOPICS = {
54
+ VAGUE_INTENT: 'vague-intent',
55
+ TARGET_ARTIFACT: 'target-artifact',
56
+ REQUEST_SCOPE: 'request-scope',
57
+ };
58
+ const TOPIC_PRIORITY = [
59
+ exports.CLARIFICATION_TOPICS.VAGUE_INTENT,
60
+ exports.CLARIFICATION_TOPICS.TARGET_ARTIFACT,
61
+ exports.CLARIFICATION_TOPICS.REQUEST_SCOPE,
62
+ ];
63
+ function buildNextQuestion(topics) {
64
+ if (topics.includes(exports.CLARIFICATION_TOPICS.VAGUE_INTENT)) {
65
+ return 'What concrete change are you targeting — which behavior, file, or metric should differ after this task?';
66
+ }
67
+ if (topics.includes(exports.CLARIFICATION_TOPICS.TARGET_ARTIFACT)) {
68
+ return 'Which file, function, module, or component should this change apply to?';
69
+ }
70
+ if (topics.includes(exports.CLARIFICATION_TOPICS.REQUEST_SCOPE)) {
71
+ return 'Can you describe the goal, inputs, and expected outcome in a bit more detail?';
72
+ }
73
+ return 'Can you clarify the scope and success criteria of this request?';
74
+ }
75
+ function sortTopicsByPriority(topics) {
76
+ return TOPIC_PRIORITY.filter(topic => topics.has(topic));
77
+ }
78
+ function evaluateClarification(prompt, options = {}) {
79
+ const budget = options.questionBudget ?? exports.DEFAULT_QUESTION_BUDGET;
80
+ const trimmed = (prompt ?? '').trim();
81
+ if (budget <= 0) {
82
+ return {
83
+ clarificationNeeded: false,
84
+ planReady: true,
85
+ questionBudget: 0,
86
+ assumptionNote: 'Clarification budget exhausted. Proceeding with explicit assumptions — state each assumption clearly in the plan using "assuming …" language so the user can correct course.',
87
+ };
88
+ }
89
+ if (hasOverridePhrase(trimmed)) {
90
+ return {
91
+ clarificationNeeded: false,
92
+ planReady: true,
93
+ questionBudget: budget,
94
+ };
95
+ }
96
+ const hasTech = hasTechnicalReference(trimmed);
97
+ if (hasTech) {
98
+ return {
99
+ clarificationNeeded: false,
100
+ planReady: true,
101
+ questionBudget: budget,
102
+ };
103
+ }
104
+ const topics = new Set();
105
+ if (hasVagueIntent(trimmed)) {
106
+ topics.add(exports.CLARIFICATION_TOPICS.VAGUE_INTENT);
107
+ topics.add(exports.CLARIFICATION_TOPICS.TARGET_ARTIFACT);
108
+ }
109
+ if (trimmed.length > 0 && trimmed.length < exports.MIN_PROMPT_LENGTH) {
110
+ topics.add(exports.CLARIFICATION_TOPICS.REQUEST_SCOPE);
111
+ topics.add(exports.CLARIFICATION_TOPICS.TARGET_ARTIFACT);
112
+ }
113
+ if (topics.size === 0) {
114
+ return {
115
+ clarificationNeeded: false,
116
+ planReady: true,
117
+ questionBudget: budget,
118
+ };
119
+ }
120
+ const orderedTopics = sortTopicsByPriority(topics);
121
+ return {
122
+ clarificationNeeded: true,
123
+ planReady: false,
124
+ questionBudget: budget - 1,
125
+ nextQuestion: buildNextQuestion(orderedTopics),
126
+ clarificationTopics: orderedTopics,
127
+ };
128
+ }
129
+ //# sourceMappingURL=clarification-gate.js.map
@@ -0,0 +1,9 @@
1
+ import type { CouncilScene } from './council-scene.types';
2
+ import type { CouncilPreset } from '../../agent/council-preset.types';
3
+ import type { Mode, VisualData } from '../../keyword/keyword.types';
4
+ export interface CouncilSceneFallback {
5
+ delegatesTo?: string;
6
+ specialists?: string[];
7
+ }
8
+ export declare function buildCouncilSceneInstructions(councilScene?: CouncilScene): string | undefined;
9
+ export declare function buildCouncilScene(mode: Mode, councilPreset: CouncilPreset | undefined, visual: VisualData | undefined, fallback?: CouncilSceneFallback): CouncilScene | undefined;
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildCouncilSceneInstructions = buildCouncilSceneInstructions;
4
+ exports.buildCouncilScene = buildCouncilScene;
5
+ const DEFAULT_FACE = '●‿●';
6
+ const MODERATOR_COPY = {
7
+ PLAN: 'Council assembled — let us design this together.',
8
+ EVAL: 'Review council convened — specialists are ready.',
9
+ AUTO: 'Autonomous council activated — full cycle begins.',
10
+ };
11
+ function buildCouncilSceneInstructions(councilScene) {
12
+ if (!councilScene?.enabled || !councilScene.cast?.length) {
13
+ return undefined;
14
+ }
15
+ const castLines = councilScene.cast.map(m => `${m.face} ${m.name} [${m.role}]`).join('\n');
16
+ return (`\n\n📋 COUNCIL SCENE — Render this at the start of your first response, ` +
17
+ `right after the mode header:\n\n` +
18
+ `${councilScene.moderatorCopy}\n${castLines}\n\n` +
19
+ `Then proceed with your normal ${councilScene.format || 'standard'} mode response.`);
20
+ }
21
+ function buildCouncilScene(mode, councilPreset, visual, fallback) {
22
+ if (mode === 'ACT') {
23
+ return undefined;
24
+ }
25
+ const moderatorCopy = MODERATOR_COPY[mode];
26
+ if (!moderatorCopy) {
27
+ return undefined;
28
+ }
29
+ const cast = buildCast(councilPreset, visual, fallback);
30
+ if (cast.length === 0) {
31
+ return undefined;
32
+ }
33
+ return {
34
+ enabled: true,
35
+ cast,
36
+ moderatorCopy,
37
+ format: 'tiny-actor-grid',
38
+ };
39
+ }
40
+ function buildCast(councilPreset, visual, fallback) {
41
+ const faceLookup = new Map();
42
+ if (visual?.agents) {
43
+ for (const agent of visual.agents) {
44
+ faceLookup.set(agent.name, agent.face);
45
+ const slug = agent.name.toLowerCase().replace(/\s+/g, '-');
46
+ faceLookup.set(slug, agent.face);
47
+ }
48
+ }
49
+ if (councilPreset) {
50
+ return buildCastFromPreset(councilPreset, faceLookup);
51
+ }
52
+ if (visual?.agents?.length) {
53
+ return buildCastFromVisual(visual.agents);
54
+ }
55
+ if (fallback?.delegatesTo) {
56
+ return buildCastFromFallback(fallback, faceLookup);
57
+ }
58
+ return [];
59
+ }
60
+ function buildCastFromPreset(preset, faceLookup) {
61
+ const cast = [];
62
+ cast.push({
63
+ name: preset.primary,
64
+ role: 'primary',
65
+ face: faceLookup.get(preset.primary) ?? DEFAULT_FACE,
66
+ });
67
+ for (const specialist of preset.specialists) {
68
+ cast.push({
69
+ name: specialist,
70
+ role: 'specialist',
71
+ face: faceLookup.get(specialist) ?? DEFAULT_FACE,
72
+ });
73
+ }
74
+ return cast;
75
+ }
76
+ function buildCastFromVisual(agents) {
77
+ const [first, ...rest] = agents;
78
+ const cast = [];
79
+ if (first) {
80
+ cast.push({
81
+ name: first.name,
82
+ role: 'primary',
83
+ face: first.face || DEFAULT_FACE,
84
+ });
85
+ }
86
+ for (const agent of rest) {
87
+ cast.push({
88
+ name: agent.name,
89
+ role: 'specialist',
90
+ face: agent.face || DEFAULT_FACE,
91
+ });
92
+ }
93
+ return cast;
94
+ }
95
+ function buildCastFromFallback(fallback, faceLookup) {
96
+ const cast = [];
97
+ if (fallback.delegatesTo) {
98
+ cast.push({
99
+ name: fallback.delegatesTo,
100
+ role: 'primary',
101
+ face: faceLookup.get(fallback.delegatesTo) ?? DEFAULT_FACE,
102
+ });
103
+ }
104
+ if (fallback.specialists) {
105
+ for (const specialist of fallback.specialists) {
106
+ cast.push({
107
+ name: specialist,
108
+ role: 'specialist',
109
+ face: faceLookup.get(specialist) ?? DEFAULT_FACE,
110
+ });
111
+ }
112
+ }
113
+ return cast;
114
+ }
115
+ //# sourceMappingURL=council-scene.builder.js.map
@@ -0,0 +1,11 @@
1
+ export interface CouncilSceneCastMember {
2
+ name: string;
3
+ role: 'primary' | 'specialist';
4
+ face: string;
5
+ }
6
+ export interface CouncilScene {
7
+ enabled: boolean;
8
+ cast: CouncilSceneCastMember[];
9
+ moderatorCopy: string;
10
+ format: 'tiny-actor-grid';
11
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=council-scene.types.js.map
@@ -1,11 +1,15 @@
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[];
8
11
  private handleAgentDiscussion;
12
+ private isExperimentalEnabled;
9
13
  private collectOpinions;
10
14
  private generateOpinion;
11
15
  private detectConsensus;
@@ -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
  }
@@ -39,9 +47,12 @@ let DiscussionHandler = class DiscussionHandler extends abstract_handler_1.Abstr
39
47
  return [
40
48
  {
41
49
  name: 'agent_discussion',
42
- description: 'Conduct a structured discussion among specialist agents on a given topic. ' +
43
- 'Collects opinions from each specialist, detects consensus or disagreement, ' +
44
- 'and returns a structured summary with severity assessments.',
50
+ description: '[EXPERIMENTAL disabled by default] Produces templated synthesis of ' +
51
+ 'specialist opinions, not real specialist execution. The output does ' +
52
+ 'not reflect collective intelligence from live agents; treat it as a ' +
53
+ 'placeholder until the rebuild lands. Enable by setting ' +
54
+ `${discussion_types_1.EXPERIMENTAL_DISCUSSION_ENV}=1. When disabled, the tool returns ` +
55
+ '{disabled: true} without invoking synthesis.',
45
56
  inputSchema: {
46
57
  type: 'object',
47
58
  properties: {
@@ -66,6 +77,14 @@ let DiscussionHandler = class DiscussionHandler extends abstract_handler_1.Abstr
66
77
  ];
67
78
  }
68
79
  async handleAgentDiscussion(args) {
80
+ if (!this.isExperimentalEnabled()) {
81
+ const disabled = {
82
+ disabled: true,
83
+ reason: discussion_types_1.DISABLED_DISCUSSION_REASON,
84
+ experimentalFlag: discussion_types_1.EXPERIMENTAL_DISCUSSION_ENV,
85
+ };
86
+ return (0, response_utils_1.createJsonResponse)(disabled);
87
+ }
69
88
  const topic = (0, validation_constants_1.extractRequiredString)(args, 'topic');
70
89
  if (topic === null) {
71
90
  return (0, response_utils_1.createErrorResponse)('Missing required parameter: topic');
@@ -79,7 +98,7 @@ let DiscussionHandler = class DiscussionHandler extends abstract_handler_1.Abstr
79
98
  const consensus = this.detectConsensus(opinions);
80
99
  const maxSeverity = this.computeMaxSeverity(opinions);
81
100
  const summary = this.generateSummary(topic, opinions, consensus);
82
- const result = {
101
+ const base = {
83
102
  topic,
84
103
  specialists,
85
104
  opinions,
@@ -87,8 +106,28 @@ let DiscussionHandler = class DiscussionHandler extends abstract_handler_1.Abstr
87
106
  summary,
88
107
  maxSeverity,
89
108
  };
109
+ const result = {
110
+ ...base,
111
+ experimental: true,
112
+ warning: discussion_types_1.EXPERIMENTAL_DISCUSSION_WARNING,
113
+ };
114
+ try {
115
+ const timestamp = new Date().toISOString();
116
+ for (const specialist of specialists) {
117
+ this.ruleEventCollector.record({
118
+ type: 'specialist_dispatched',
119
+ timestamp,
120
+ domain: specialist,
121
+ });
122
+ }
123
+ }
124
+ catch {
125
+ }
90
126
  return (0, response_utils_1.createJsonResponse)(result);
91
127
  }
128
+ isExperimentalEnabled() {
129
+ return process.env[discussion_types_1.EXPERIMENTAL_DISCUSSION_ENV] === '1';
130
+ }
92
131
  collectOpinions(topic, specialists, context) {
93
132
  return specialists.map(agent => this.generateOpinion(agent, topic, context));
94
133
  }
@@ -163,6 +202,7 @@ let DiscussionHandler = class DiscussionHandler extends abstract_handler_1.Abstr
163
202
  };
164
203
  exports.DiscussionHandler = DiscussionHandler;
165
204
  exports.DiscussionHandler = DiscussionHandler = __decorate([
166
- (0, common_1.Injectable)()
205
+ (0, common_1.Injectable)(),
206
+ __metadata("design:paramtypes", [rule_event_collector_1.RuleEventCollector])
167
207
  ], DiscussionHandler);
168
208
  //# sourceMappingURL=discussion.handler.js.map
@@ -16,3 +16,15 @@ export interface DiscussionResult {
16
16
  maxSeverity: OpinionSeverity;
17
17
  }
18
18
  export declare const VALID_SEVERITIES: readonly OpinionSeverity[];
19
+ export declare const EXPERIMENTAL_DISCUSSION_ENV = "CODINGBUDDY_EXPERIMENTAL_DISCUSSION";
20
+ export declare const EXPERIMENTAL_DISCUSSION_WARNING = "\u26A0\uFE0F experimental \u2014 templated synthesis, not real specialist execution";
21
+ export declare const DISABLED_DISCUSSION_REASON = "templated synthesis not aligned with collective intelligence promise";
22
+ export interface DisabledDiscussionResult {
23
+ disabled: true;
24
+ reason: string;
25
+ experimentalFlag: string;
26
+ }
27
+ export interface ExperimentalDiscussionResult extends DiscussionResult {
28
+ experimental: true;
29
+ warning: string;
30
+ }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.VALID_SEVERITIES = void 0;
3
+ exports.DISABLED_DISCUSSION_REASON = exports.EXPERIMENTAL_DISCUSSION_WARNING = exports.EXPERIMENTAL_DISCUSSION_ENV = exports.VALID_SEVERITIES = void 0;
4
4
  exports.VALID_SEVERITIES = [
5
5
  'info',
6
6
  'low',
@@ -8,4 +8,7 @@ exports.VALID_SEVERITIES = [
8
8
  'high',
9
9
  'critical',
10
10
  ];
11
+ exports.EXPERIMENTAL_DISCUSSION_ENV = 'CODINGBUDDY_EXPERIMENTAL_DISCUSSION';
12
+ exports.EXPERIMENTAL_DISCUSSION_WARNING = '\u26a0\ufe0f experimental — templated synthesis, not real specialist execution';
13
+ exports.DISABLED_DISCUSSION_REASON = 'templated synthesis not aligned with collective intelligence promise';
11
14
  //# sourceMappingURL=discussion.types.js.map
@@ -0,0 +1,29 @@
1
+ import type { ClarificationMetadata } from './clarification-gate';
2
+ import type { PlanningStageMetadata } from './planning-stage';
3
+ export interface ExecutionGate {
4
+ gated: boolean;
5
+ reason: string;
6
+ unblockCondition?: string;
7
+ deferredSpecialists?: string[];
8
+ }
9
+ export interface ExecutionGateInput {
10
+ clarification: ClarificationMetadata;
11
+ planningStage?: PlanningStageMetadata;
12
+ specialists?: string[];
13
+ }
14
+ export declare function evaluateExecutionGate(input: ExecutionGateInput): ExecutionGate;
15
+ interface GatedParallelRecommendation {
16
+ specialists: string[];
17
+ hint: string;
18
+ dispatch?: string;
19
+ suggestedStack?: string;
20
+ stackBased?: boolean;
21
+ }
22
+ export interface GatedResponseFields<D = unknown, E = unknown> {
23
+ dispatchReady?: D;
24
+ parallelAgentsRecommendation?: GatedParallelRecommendation;
25
+ executionPlan?: E;
26
+ }
27
+ export type SuppressedResponseFields<D = unknown, E = unknown> = GatedResponseFields<D, E>;
28
+ export declare function suppressDispatchWhileGated<D, E>(gate: ExecutionGate | undefined, fields: GatedResponseFields<D, E>): SuppressedResponseFields<D, E>;
29
+ export {};
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.evaluateExecutionGate = evaluateExecutionGate;
4
+ exports.suppressDispatchWhileGated = suppressDispatchWhileGated;
5
+ const GATED_STAGES = new Set(['discover', 'design']);
6
+ function evaluateExecutionGate(input) {
7
+ const { clarification, planningStage, specialists } = input;
8
+ if (clarification.planReady) {
9
+ return {
10
+ gated: false,
11
+ reason: 'Request is clear — full specialist dispatch permitted.',
12
+ };
13
+ }
14
+ if (clarification.clarificationNeeded) {
15
+ return buildGatedResult('Request is ambiguous — specialist dispatch deferred until clarification is resolved.', 'Resolve clarification questions or provide an explicit override (e.g., "just do it").', specialists);
16
+ }
17
+ if (planningStage && GATED_STAGES.has(planningStage.currentStage)) {
18
+ const stageName = planningStage.currentStage;
19
+ return buildGatedResult(`Currently in ${stageName} stage — specialist dispatch deferred until plan stage.`, stageName === 'discover'
20
+ ? 'Confirm direction to proceed through Design to Plan.'
21
+ : 'Confirm approach to proceed to Plan.', specialists);
22
+ }
23
+ return {
24
+ gated: false,
25
+ reason: 'Execution permitted — no gating conditions active.',
26
+ };
27
+ }
28
+ function suppressDispatchWhileGated(gate, fields) {
29
+ if (!gate || !gate.gated) {
30
+ return fields;
31
+ }
32
+ const result = {};
33
+ if (fields.parallelAgentsRecommendation) {
34
+ result.parallelAgentsRecommendation = {
35
+ ...fields.parallelAgentsRecommendation,
36
+ dispatch: 'deferred',
37
+ };
38
+ }
39
+ return result;
40
+ }
41
+ function buildGatedResult(reason, unblockCondition, specialists) {
42
+ return {
43
+ gated: true,
44
+ reason,
45
+ unblockCondition,
46
+ ...(specialists?.length && { deferredSpecialists: [...specialists] }),
47
+ };
48
+ }
49
+ //# sourceMappingURL=execution-gate.js.map
@@ -20,4 +20,5 @@ export { QualityReportHandler } from './quality-report.handler';
20
20
  export { BriefingHandler } from './briefing.handler';
21
21
  export { ResumeHandler } from './resume.handler';
22
22
  export { RuleImpactHandler } from './rule-impact.handler';
23
+ export { ReviewPrHandler } from './review-pr.handler';
23
24
  export declare const TOOL_HANDLERS = "TOOL_HANDLERS";
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TOOL_HANDLERS = exports.RuleImpactHandler = exports.ResumeHandler = exports.BriefingHandler = exports.QualityReportHandler = exports.ReleaseCheckHandler = exports.PluginValidationHandler = exports.ImpactHandler = exports.RuleInsightsHandler = exports.ContextArchiveHandler = exports.PipelineHandler = exports.ParallelValidationHandler = exports.DiscussionHandler = exports.TuiHandler = exports.ContextDocumentHandler = exports.ConventionsHandler = exports.ChecklistContextHandler = exports.ModeHandler = exports.AgentHandler = exports.SkillHandler = exports.ConfigHandler = exports.RulesHandler = void 0;
3
+ exports.TOOL_HANDLERS = exports.ReviewPrHandler = exports.RuleImpactHandler = exports.ResumeHandler = exports.BriefingHandler = exports.QualityReportHandler = exports.ReleaseCheckHandler = exports.PluginValidationHandler = exports.ImpactHandler = exports.RuleInsightsHandler = exports.ContextArchiveHandler = exports.PipelineHandler = exports.ParallelValidationHandler = exports.DiscussionHandler = exports.TuiHandler = exports.ContextDocumentHandler = exports.ConventionsHandler = exports.ChecklistContextHandler = exports.ModeHandler = exports.AgentHandler = exports.SkillHandler = exports.ConfigHandler = exports.RulesHandler = void 0;
4
4
  var rules_handler_1 = require("./rules.handler");
5
5
  Object.defineProperty(exports, "RulesHandler", { enumerable: true, get: function () { return rules_handler_1.RulesHandler; } });
6
6
  var config_handler_1 = require("./config.handler");
@@ -43,5 +43,7 @@ var resume_handler_1 = require("./resume.handler");
43
43
  Object.defineProperty(exports, "ResumeHandler", { enumerable: true, get: function () { return resume_handler_1.ResumeHandler; } });
44
44
  var rule_impact_handler_1 = require("./rule-impact.handler");
45
45
  Object.defineProperty(exports, "RuleImpactHandler", { enumerable: true, get: function () { return rule_impact_handler_1.RuleImpactHandler; } });
46
+ var review_pr_handler_1 = require("./review-pr.handler");
47
+ Object.defineProperty(exports, "ReviewPrHandler", { enumerable: true, get: function () { return review_pr_handler_1.ReviewPrHandler; } });
46
48
  exports.TOOL_HANDLERS = 'TOOL_HANDLERS';
47
49
  //# sourceMappingURL=index.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>;
@@ -30,7 +36,14 @@ export declare class ModeHandler extends AbstractHandler {
30
36
  private buildDispatchReady;
31
37
  private buildDeepThinkingInstructions;
32
38
  private buildPlanReviewGate;
39
+ private buildClarificationMetadata;
40
+ private buildExecutionGate;
41
+ private buildClarificationFirstInstructions;
42
+ private buildPlanningStageMetadata;
33
43
  private buildAgentDiscussion;
44
+ private buildReviewContext;
34
45
  private buildVisual;
46
+ private resolveTeamsCapability;
47
+ private buildExecutionPlan;
35
48
  private persistModeState;
36
49
  }