codingbuddy 5.1.3 → 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 (483) hide show
  1. package/README.md +9 -0
  2. package/dist/src/agent/agent-prompt.builder.js +135 -2
  3. package/dist/src/agent/agent-stack.loader.d.ts +3 -0
  4. package/dist/src/agent/agent-stack.loader.js +38 -0
  5. package/dist/src/agent/agent-stack.schema.d.ts +14 -0
  6. package/dist/src/agent/agent-stack.schema.js +19 -0
  7. package/dist/src/agent/agent-stack.service.d.ts +15 -0
  8. package/dist/src/agent/agent-stack.service.js +112 -0
  9. package/dist/src/agent/agent.module.js +5 -2
  10. package/dist/src/agent/agent.service.d.ts +8 -1
  11. package/dist/src/agent/agent.service.js +126 -40
  12. package/dist/src/agent/agent.types.d.ts +26 -46
  13. package/dist/src/agent/council-preset.service.d.ts +6 -0
  14. package/dist/src/agent/council-preset.service.js +46 -0
  15. package/dist/src/agent/council-preset.types.d.ts +6 -0
  16. package/dist/src/agent/council-preset.types.js +3 -0
  17. package/dist/src/agent/execution-plan.d.ts +8 -0
  18. package/dist/src/agent/execution-plan.js +73 -0
  19. package/dist/src/agent/execution-plan.types.d.ts +74 -0
  20. package/dist/src/agent/execution-plan.types.js +3 -0
  21. package/dist/src/agent/index.d.ts +8 -0
  22. package/dist/src/agent/index.js +8 -0
  23. package/dist/src/agent/teams-capability.service.d.ts +11 -0
  24. package/dist/src/agent/teams-capability.service.js +74 -0
  25. package/dist/src/agent/teams-capability.types.d.ts +6 -0
  26. package/dist/src/agent/teams-capability.types.js +3 -0
  27. package/dist/src/app.module.js +2 -0
  28. package/dist/src/cli/cli.d.ts +4 -3
  29. package/dist/src/cli/cli.js +172 -1
  30. package/dist/src/cli/cli.types.d.ts +18 -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/init/init.constants.js +0 -1
  36. package/dist/src/cli/plugin/create-plugin.command.d.ts +21 -0
  37. package/dist/src/cli/plugin/create-plugin.command.js +151 -0
  38. package/dist/src/cli/plugin/install.command.d.ts +10 -0
  39. package/dist/src/cli/plugin/install.command.js +31 -0
  40. package/dist/src/cli/plugin/plugins.command.d.ts +9 -0
  41. package/dist/src/cli/plugin/plugins.command.js +51 -0
  42. package/dist/src/cli/plugin/search.command.d.ts +9 -0
  43. package/dist/src/cli/plugin/search.command.js +53 -0
  44. package/dist/src/cli/plugin/uninstall.command.d.ts +12 -0
  45. package/dist/src/cli/plugin/uninstall.command.js +79 -0
  46. package/dist/src/cli/plugin/update.command.d.ts +11 -0
  47. package/dist/src/cli/plugin/update.command.js +103 -0
  48. package/dist/src/cli/run-tui.d.ts +1 -0
  49. package/dist/src/cli/run-tui.js +7 -1
  50. package/dist/src/collaboration/council-summary.service.d.ts +2 -0
  51. package/dist/src/collaboration/council-summary.service.js +114 -0
  52. package/dist/src/collaboration/council-summary.types.d.ts +24 -0
  53. package/dist/src/collaboration/council-summary.types.js +3 -0
  54. package/dist/src/collaboration/index.d.ts +2 -0
  55. package/dist/src/collaboration/index.js +3 -1
  56. package/dist/src/config/config.schema.d.ts +3 -0
  57. package/dist/src/config/config.schema.js +5 -0
  58. package/dist/src/context/briefing-loader.service.d.ts +27 -0
  59. package/dist/src/context/briefing-loader.service.js +124 -0
  60. package/dist/src/context/briefing.service.d.ts +27 -0
  61. package/dist/src/context/briefing.service.js +181 -0
  62. package/dist/src/context/briefing.types.d.ts +13 -0
  63. package/dist/src/context/briefing.types.js +6 -0
  64. package/dist/src/context/context.module.js +16 -2
  65. package/dist/src/context/index.d.ts +2 -0
  66. package/dist/src/context/index.js +2 -0
  67. package/dist/src/keyword/keyword.types.d.ts +8 -0
  68. package/dist/src/main.js +0 -17
  69. package/dist/src/mcp/handlers/agent.handler.d.ts +6 -1
  70. package/dist/src/mcp/handlers/agent.handler.js +81 -8
  71. package/dist/src/mcp/handlers/briefing.handler.d.ts +12 -0
  72. package/dist/src/mcp/handlers/briefing.handler.js +71 -0
  73. package/dist/src/mcp/handlers/checklist-context.handler.d.ts +3 -1
  74. package/dist/src/mcp/handlers/checklist-context.handler.js +17 -2
  75. package/dist/src/mcp/handlers/discussion.handler.d.ts +3 -0
  76. package/dist/src/mcp/handlers/discussion.handler.js +22 -1
  77. package/dist/src/mcp/handlers/index.d.ts +4 -0
  78. package/dist/src/mcp/handlers/index.js +9 -1
  79. package/dist/src/mcp/handlers/mode.handler.d.ts +9 -1
  80. package/dist/src/mcp/handlers/mode.handler.js +79 -2
  81. package/dist/src/mcp/handlers/quality-report.handler.d.ts +14 -0
  82. package/dist/src/mcp/handlers/quality-report.handler.js +93 -0
  83. package/dist/src/mcp/handlers/resume.handler.d.ts +12 -0
  84. package/dist/src/mcp/handlers/resume.handler.js +63 -0
  85. package/dist/src/mcp/handlers/rule-impact.handler.d.ts +23 -0
  86. package/dist/src/mcp/handlers/rule-impact.handler.js +241 -0
  87. package/dist/src/mcp/handlers/skill.handler.js +2 -2
  88. package/dist/src/mcp/mcp.module.js +6 -0
  89. package/dist/src/plugin/plugin-installer.service.d.ts +41 -0
  90. package/dist/src/plugin/plugin-installer.service.js +183 -0
  91. package/dist/src/plugin/plugin-manifest.schema.d.ts +21 -0
  92. package/dist/src/plugin/plugin-manifest.schema.js +45 -0
  93. package/dist/src/plugin/plugin.module.d.ts +2 -0
  94. package/dist/src/plugin/plugin.module.js +17 -0
  95. package/dist/src/plugin/plugin.types.d.ts +7 -0
  96. package/dist/src/plugin/plugin.types.js +3 -0
  97. package/dist/src/plugin/registry-client.d.ts +24 -0
  98. package/dist/src/plugin/registry-client.js +45 -0
  99. package/dist/src/rules/rule-event-collector.d.ts +7 -0
  100. package/dist/src/rules/rule-event-collector.js +38 -0
  101. package/dist/src/rules/rule-event.types.d.ts +9 -0
  102. package/dist/src/rules/rule-event.types.js +10 -0
  103. package/dist/src/rules/rule-stats-writer.d.ts +23 -0
  104. package/dist/src/rules/rule-stats-writer.js +138 -0
  105. package/dist/src/rules/rules.module.js +4 -2
  106. package/dist/src/rules/rules.service.d.ts +8 -1
  107. package/dist/src/rules/rules.service.js +3 -0
  108. package/dist/src/rules/skill.schema.d.ts +10 -0
  109. package/dist/src/rules/skill.schema.js +42 -0
  110. package/dist/src/shared/rules-core.d.ts +7 -1
  111. package/dist/src/shared/rules-core.js +6 -0
  112. package/dist/src/shared/version.d.ts +1 -1
  113. package/dist/src/shared/version.js +1 -1
  114. package/dist/src/ship/file-specialist-mapper.d.ts +9 -0
  115. package/dist/src/ship/file-specialist-mapper.js +56 -0
  116. package/dist/src/ship/quality-report.service.d.ts +6 -0
  117. package/dist/src/ship/quality-report.service.js +56 -0
  118. package/dist/src/ship/quality-report.types.d.ts +20 -0
  119. package/dist/src/ship/quality-report.types.js +3 -0
  120. package/dist/src/ship/ship.module.d.ts +2 -0
  121. package/dist/src/ship/ship.module.js +21 -0
  122. package/dist/src/skill/i18n/keywords.js +921 -0
  123. package/dist/src/skill/skill-recommendation.service.d.ts +10 -2
  124. package/dist/src/skill/skill-recommendation.service.js +120 -16
  125. package/dist/src/skill/skill-recommendation.types.d.ts +5 -0
  126. package/dist/src/skill/skill.module.js +2 -0
  127. package/dist/src/tui/events/hud-file-bridge.d.ts +4 -0
  128. package/dist/src/tui/events/hud-file-bridge.js +36 -0
  129. package/dist/src/tui/testing/tui-test-utils.d.ts +2 -0
  130. package/dist/src/tui/testing/tui-test-utils.js +25 -0
  131. package/dist/src/tui-bundle.mjs +239 -36
  132. package/package.json +7 -2
  133. package/dist/api/mcp.js.map +0 -1
  134. package/dist/src/agent/agent-prompt.builder.js.map +0 -1
  135. package/dist/src/agent/agent-summary.utils.js.map +0 -1
  136. package/dist/src/agent/agent.module.js.map +0 -1
  137. package/dist/src/agent/agent.service.js.map +0 -1
  138. package/dist/src/agent/agent.types.js.map +0 -1
  139. package/dist/src/agent/index.js.map +0 -1
  140. package/dist/src/analyzer/analyzer.module.js.map +0 -1
  141. package/dist/src/analyzer/analyzer.service.js.map +0 -1
  142. package/dist/src/analyzer/analyzer.types.js.map +0 -1
  143. package/dist/src/analyzer/code.sampler.js.map +0 -1
  144. package/dist/src/analyzer/config.analyzer.js.map +0 -1
  145. package/dist/src/analyzer/conventions.analyzer.js.map +0 -1
  146. package/dist/src/analyzer/conventions.schemas.js.map +0 -1
  147. package/dist/src/analyzer/conventions.types.js.map +0 -1
  148. package/dist/src/analyzer/directory.analyzer.js.map +0 -1
  149. package/dist/src/analyzer/index.js.map +0 -1
  150. package/dist/src/analyzer/package.analyzer.js.map +0 -1
  151. package/dist/src/app.module.js.map +0 -1
  152. package/dist/src/checklist/checklist.module.js.map +0 -1
  153. package/dist/src/checklist/checklist.schema.js.map +0 -1
  154. package/dist/src/checklist/checklist.service.js.map +0 -1
  155. package/dist/src/checklist/checklist.types.js.map +0 -1
  156. package/dist/src/checklist/index.js.map +0 -1
  157. package/dist/src/cli/cli.js.map +0 -1
  158. package/dist/src/cli/cli.types.js.map +0 -1
  159. package/dist/src/cli/index.js.map +0 -1
  160. package/dist/src/cli/init/claude-settings.utils.js.map +0 -1
  161. package/dist/src/cli/init/config.generator.js.map +0 -1
  162. package/dist/src/cli/init/config.writer.js.map +0 -1
  163. package/dist/src/cli/init/gitignore.utils.js.map +0 -1
  164. package/dist/src/cli/init/index.js.map +0 -1
  165. package/dist/src/cli/init/init.command.js.map +0 -1
  166. package/dist/src/cli/init/init.constants.js.map +0 -1
  167. package/dist/src/cli/init/init.wizard.js.map +0 -1
  168. package/dist/src/cli/init/prompt.builder.js.map +0 -1
  169. package/dist/src/cli/init/prompts/agent-prompt.js.map +0 -1
  170. package/dist/src/cli/init/prompts/architecture-prompt.js.map +0 -1
  171. package/dist/src/cli/init/prompts/basic-prompt.js.map +0 -1
  172. package/dist/src/cli/init/prompts/conventions-prompt.js.map +0 -1
  173. package/dist/src/cli/init/prompts/index.js.map +0 -1
  174. package/dist/src/cli/init/prompts/language-prompt.js.map +0 -1
  175. package/dist/src/cli/init/prompts/model-prompt.js.map +0 -1
  176. package/dist/src/cli/init/prompts/tech-stack-prompt.js.map +0 -1
  177. package/dist/src/cli/init/prompts/test-strategy-prompt.js.map +0 -1
  178. package/dist/src/cli/init/summary/index.js.map +0 -1
  179. package/dist/src/cli/init/summary/summary.prompt.js.map +0 -1
  180. package/dist/src/cli/init/summary/summary.renderer.js.map +0 -1
  181. package/dist/src/cli/init/templates/config-renderer.js.map +0 -1
  182. package/dist/src/cli/init/templates/frameworks/default.template.js.map +0 -1
  183. package/dist/src/cli/init/templates/frameworks/express.template.js.map +0 -1
  184. package/dist/src/cli/init/templates/frameworks/index.js.map +0 -1
  185. package/dist/src/cli/init/templates/frameworks/nestjs.template.js.map +0 -1
  186. package/dist/src/cli/init/templates/frameworks/nextjs.template.js.map +0 -1
  187. package/dist/src/cli/init/templates/frameworks/node.template.js.map +0 -1
  188. package/dist/src/cli/init/templates/frameworks/react.template.js.map +0 -1
  189. package/dist/src/cli/init/templates/index.js.map +0 -1
  190. package/dist/src/cli/init/templates/template.renderer.js.map +0 -1
  191. package/dist/src/cli/init/templates/template.selector.js.map +0 -1
  192. package/dist/src/cli/init/templates/template.types.js.map +0 -1
  193. package/dist/src/cli/restart-tui.js.map +0 -1
  194. package/dist/src/cli/run-tui.js.map +0 -1
  195. package/dist/src/cli/utils/console.js.map +0 -1
  196. package/dist/src/cli/utils/index.js.map +0 -1
  197. package/dist/src/collaboration/discussion-engine.js.map +0 -1
  198. package/dist/src/collaboration/index.js.map +0 -1
  199. package/dist/src/collaboration/opinion-adapter.js.map +0 -1
  200. package/dist/src/collaboration/terminal-formatter.js.map +0 -1
  201. package/dist/src/collaboration/types.js.map +0 -1
  202. package/dist/src/config/config-diff.service.js.map +0 -1
  203. package/dist/src/config/config.loader.js.map +0 -1
  204. package/dist/src/config/config.module.js.map +0 -1
  205. package/dist/src/config/config.schema.js.map +0 -1
  206. package/dist/src/config/config.service.js.map +0 -1
  207. package/dist/src/config/context.loader.js.map +0 -1
  208. package/dist/src/config/ignore.parser.js.map +0 -1
  209. package/dist/src/config/index.js.map +0 -1
  210. package/dist/src/context/context-archive.service.js.map +0 -1
  211. package/dist/src/context/context-archive.types.js.map +0 -1
  212. package/dist/src/context/context-document.service.js.map +0 -1
  213. package/dist/src/context/context-document.types.js.map +0 -1
  214. package/dist/src/context/context-parser.utils.js.map +0 -1
  215. package/dist/src/context/context-serializer.utils.js.map +0 -1
  216. package/dist/src/context/context.module.js.map +0 -1
  217. package/dist/src/context/context.service.js.map +0 -1
  218. package/dist/src/context/context.types.js.map +0 -1
  219. package/dist/src/context/index.js.map +0 -1
  220. package/dist/src/context/intent-patterns.js.map +0 -1
  221. package/dist/src/custom/custom.module.js.map +0 -1
  222. package/dist/src/custom/custom.service.js.map +0 -1
  223. package/dist/src/custom/custom.types.js.map +0 -1
  224. package/dist/src/custom/index.js.map +0 -1
  225. package/dist/src/diagnostic/diagnostic-log.service.js.map +0 -1
  226. package/dist/src/diagnostic/diagnostic.module.js.map +0 -1
  227. package/dist/src/diagnostic/diagnostic.types.js.map +0 -1
  228. package/dist/src/diagnostic/index.js.map +0 -1
  229. package/dist/src/impact/impact-event.service.js.map +0 -1
  230. package/dist/src/impact/impact-report.service.js.map +0 -1
  231. package/dist/src/impact/impact.module.js.map +0 -1
  232. package/dist/src/impact/impact.types.js.map +0 -1
  233. package/dist/src/impact/index.js.map +0 -1
  234. package/dist/src/keyword/activation-message.builder.js.map +0 -1
  235. package/dist/src/keyword/auto-executor.js.map +0 -1
  236. package/dist/src/keyword/auto-executor.types.js.map +0 -1
  237. package/dist/src/keyword/auto-formatter.js.map +0 -1
  238. package/dist/src/keyword/auto-prompt-builder.js.map +0 -1
  239. package/dist/src/keyword/complexity-classifier.js.map +0 -1
  240. package/dist/src/keyword/complexity-indicators.js.map +0 -1
  241. package/dist/src/keyword/diff-analyzer.js.map +0 -1
  242. package/dist/src/keyword/explicit-pattern-matcher.js.map +0 -1
  243. package/dist/src/keyword/index.js.map +0 -1
  244. package/dist/src/keyword/keyword.module.js.map +0 -1
  245. package/dist/src/keyword/keyword.service.js.map +0 -1
  246. package/dist/src/keyword/keyword.types.js.map +0 -1
  247. package/dist/src/keyword/patterns/agent.patterns.js.map +0 -1
  248. package/dist/src/keyword/patterns/ai-ml.patterns.js.map +0 -1
  249. package/dist/src/keyword/patterns/backend.patterns.js.map +0 -1
  250. package/dist/src/keyword/patterns/context.patterns.js.map +0 -1
  251. package/dist/src/keyword/patterns/data-science.patterns.js.map +0 -1
  252. package/dist/src/keyword/patterns/data.patterns.js.map +0 -1
  253. package/dist/src/keyword/patterns/devops.patterns.js.map +0 -1
  254. package/dist/src/keyword/patterns/explicit.patterns.js.map +0 -1
  255. package/dist/src/keyword/patterns/frontend.patterns.js.map +0 -1
  256. package/dist/src/keyword/patterns/index.js.map +0 -1
  257. package/dist/src/keyword/patterns/intent-pattern-checks.js.map +0 -1
  258. package/dist/src/keyword/patterns/intent-patterns.types.js.map +0 -1
  259. package/dist/src/keyword/patterns/meta-discussion.patterns.js.map +0 -1
  260. package/dist/src/keyword/patterns/mobile.patterns.js.map +0 -1
  261. package/dist/src/keyword/patterns/platform.patterns.js.map +0 -1
  262. package/dist/src/keyword/patterns/security.patterns.js.map +0 -1
  263. package/dist/src/keyword/patterns/systems.patterns.js.map +0 -1
  264. package/dist/src/keyword/patterns/test.patterns.js.map +0 -1
  265. package/dist/src/keyword/patterns/tooling.patterns.js.map +0 -1
  266. package/dist/src/keyword/primary-agent-resolver.js.map +0 -1
  267. package/dist/src/keyword/rule-filter.js.map +0 -1
  268. package/dist/src/keyword/srp-template.js.map +0 -1
  269. package/dist/src/keyword/strategies/__tests__/strategy-test.utils.js.map +0 -1
  270. package/dist/src/keyword/strategies/act-agent.strategy.js.map +0 -1
  271. package/dist/src/keyword/strategies/eval-agent.strategy.js.map +0 -1
  272. package/dist/src/keyword/strategies/index.js.map +0 -1
  273. package/dist/src/keyword/strategies/plan-agent.strategy.js.map +0 -1
  274. package/dist/src/keyword/strategies/resolution-strategy.interface.js.map +0 -1
  275. package/dist/src/keyword/taskmaestro-detector.js.map +0 -1
  276. package/dist/src/keyword/visual-data.builder.js.map +0 -1
  277. package/dist/src/main.js.map +0 -1
  278. package/dist/src/mcp/handlers/abstract-handler.js.map +0 -1
  279. package/dist/src/mcp/handlers/agent.handler.js.map +0 -1
  280. package/dist/src/mcp/handlers/base.handler.js.map +0 -1
  281. package/dist/src/mcp/handlers/checklist-context.handler.js.map +0 -1
  282. package/dist/src/mcp/handlers/config.handler.js.map +0 -1
  283. package/dist/src/mcp/handlers/context-archive.handler.js.map +0 -1
  284. package/dist/src/mcp/handlers/context-document.handler.js.map +0 -1
  285. package/dist/src/mcp/handlers/conventions.handler.js.map +0 -1
  286. package/dist/src/mcp/handlers/discussion.handler.js.map +0 -1
  287. package/dist/src/mcp/handlers/discussion.types.js.map +0 -1
  288. package/dist/src/mcp/handlers/impact.handler.js.map +0 -1
  289. package/dist/src/mcp/handlers/index.js.map +0 -1
  290. package/dist/src/mcp/handlers/mode.handler.js.map +0 -1
  291. package/dist/src/mcp/handlers/pipeline.handler.js.map +0 -1
  292. package/dist/src/mcp/handlers/plugin-validation.handler.js.map +0 -1
  293. package/dist/src/mcp/handlers/release-check.handler.js.map +0 -1
  294. package/dist/src/mcp/handlers/rule-insights.handler.js.map +0 -1
  295. package/dist/src/mcp/handlers/rules.handler.js.map +0 -1
  296. package/dist/src/mcp/handlers/skill.handler.js.map +0 -1
  297. package/dist/src/mcp/handlers/tui.handler.js.map +0 -1
  298. package/dist/src/mcp/mcp-serverless.js.map +0 -1
  299. package/dist/src/mcp/mcp.controller.js.map +0 -1
  300. package/dist/src/mcp/mcp.module.js.map +0 -1
  301. package/dist/src/mcp/mcp.service.js.map +0 -1
  302. package/dist/src/mcp/response.utils.js.map +0 -1
  303. package/dist/src/mcp/sse-auth.guard.js.map +0 -1
  304. package/dist/src/model/index.js.map +0 -1
  305. package/dist/src/model/model-resolver.service.js.map +0 -1
  306. package/dist/src/model/model.constants.js.map +0 -1
  307. package/dist/src/model/model.resolver.js.map +0 -1
  308. package/dist/src/model/model.types.js.map +0 -1
  309. package/dist/src/parallel-validation/extract-file-paths.js.map +0 -1
  310. package/dist/src/parallel-validation/index.js.map +0 -1
  311. package/dist/src/parallel-validation/overlap-matrix.js.map +0 -1
  312. package/dist/src/parallel-validation/parallel-validation.handler.js.map +0 -1
  313. package/dist/src/parallel-validation/parallel-validation.types.js.map +0 -1
  314. package/dist/src/parallel-validation/wave-splitter.js.map +0 -1
  315. package/dist/src/pipeline/index.js.map +0 -1
  316. package/dist/src/pipeline/pipeline.executors.js.map +0 -1
  317. package/dist/src/pipeline/pipeline.module.js.map +0 -1
  318. package/dist/src/pipeline/pipeline.service.js.map +0 -1
  319. package/dist/src/pipeline/pipeline.types.js.map +0 -1
  320. package/dist/src/rules/agent.schema.js.map +0 -1
  321. package/dist/src/rules/rule-insights.service.js.map +0 -1
  322. package/dist/src/rules/rule-tracker.js.map +0 -1
  323. package/dist/src/rules/rules-content.utils.js.map +0 -1
  324. package/dist/src/rules/rules.module.js.map +0 -1
  325. package/dist/src/rules/rules.service.js.map +0 -1
  326. package/dist/src/rules/rules.types.js.map +0 -1
  327. package/dist/src/rules/skill.schema.js.map +0 -1
  328. package/dist/src/shared/agent.utils.js.map +0 -1
  329. package/dist/src/shared/async.utils.js.map +0 -1
  330. package/dist/src/shared/client-type.js.map +0 -1
  331. package/dist/src/shared/error.utils.js.map +0 -1
  332. package/dist/src/shared/esm-import.js.map +0 -1
  333. package/dist/src/shared/event-bridge-reader.js.map +0 -1
  334. package/dist/src/shared/file.utils.js.map +0 -1
  335. package/dist/src/shared/filesystem.interface.js.map +0 -1
  336. package/dist/src/shared/format.utils.js.map +0 -1
  337. package/dist/src/shared/keyword-core.js.map +0 -1
  338. package/dist/src/shared/language.service.js.map +0 -1
  339. package/dist/src/shared/language.types.js.map +0 -1
  340. package/dist/src/shared/lru-cache.js.map +0 -1
  341. package/dist/src/shared/node-filesystem.service.js.map +0 -1
  342. package/dist/src/shared/path.utils.js.map +0 -1
  343. package/dist/src/shared/pattern-matcher.js.map +0 -1
  344. package/dist/src/shared/rules-core.js.map +0 -1
  345. package/dist/src/shared/security.utils.js.map +0 -1
  346. package/dist/src/shared/slug.utils.js.map +0 -1
  347. package/dist/src/shared/tui-bundle-path.js.map +0 -1
  348. package/dist/src/shared/validation.constants.js.map +0 -1
  349. package/dist/src/shared/verbosity.types.js.map +0 -1
  350. package/dist/src/shared/version.js.map +0 -1
  351. package/dist/src/shared/version.utils.js.map +0 -1
  352. package/dist/src/skill/i18n/index.js.map +0 -1
  353. package/dist/src/skill/i18n/keywords.js.map +0 -1
  354. package/dist/src/skill/i18n/keywords.types.js.map +0 -1
  355. package/dist/src/skill/index.js.map +0 -1
  356. package/dist/src/skill/skill-content.utils.js.map +0 -1
  357. package/dist/src/skill/skill-recommendation.service.js.map +0 -1
  358. package/dist/src/skill/skill-recommendation.types.js.map +0 -1
  359. package/dist/src/skill/skill-triggers.js.map +0 -1
  360. package/dist/src/skill/skill.module.js.map +0 -1
  361. package/dist/src/state/index.js.map +0 -1
  362. package/dist/src/state/state.module.js.map +0 -1
  363. package/dist/src/state/state.service.js.map +0 -1
  364. package/dist/src/state/state.types.js.map +0 -1
  365. package/dist/src/tui/__perf__/memory-stability.spec.d.ts +0 -1
  366. package/dist/src/tui/__perf__/memory-stability.spec.js +0 -105
  367. package/dist/src/tui/__perf__/memory-stability.spec.js.map +0 -1
  368. package/dist/src/tui/__perf__/rendering-performance.spec.d.ts +0 -1
  369. package/dist/src/tui/__perf__/rendering-performance.spec.js +0 -166
  370. package/dist/src/tui/__perf__/rendering-performance.spec.js.map +0 -1
  371. package/dist/src/tui/cli-flags.js.map +0 -1
  372. package/dist/src/tui/components/ActModeScreen.js.map +0 -1
  373. package/dist/src/tui/components/ActivityVisualizer.js.map +0 -1
  374. package/dist/src/tui/components/ActivityVisualizer.spec.d.ts +0 -1
  375. package/dist/src/tui/components/ActivityVisualizer.spec.js +0 -91
  376. package/dist/src/tui/components/ActivityVisualizer.spec.js.map +0 -1
  377. package/dist/src/tui/components/AgentDiscussionPanel.js.map +0 -1
  378. package/dist/src/tui/components/AgentDiscussionPanel.spec.d.ts +0 -1
  379. package/dist/src/tui/components/AgentDiscussionPanel.spec.js +0 -229
  380. package/dist/src/tui/components/AgentDiscussionPanel.spec.js.map +0 -1
  381. package/dist/src/tui/components/ChecklistPanel.js.map +0 -1
  382. package/dist/src/tui/components/ChecklistPanel.spec.d.ts +0 -1
  383. package/dist/src/tui/components/ChecklistPanel.spec.js +0 -45
  384. package/dist/src/tui/components/ChecklistPanel.spec.js.map +0 -1
  385. package/dist/src/tui/components/ContextSection.js.map +0 -1
  386. package/dist/src/tui/components/EvalModeScreen.js.map +0 -1
  387. package/dist/src/tui/components/FlowMap.js.map +0 -1
  388. package/dist/src/tui/components/FlowMap.spec.d.ts +0 -1
  389. package/dist/src/tui/components/FlowMap.spec.js +0 -147
  390. package/dist/src/tui/components/FlowMap.spec.js.map +0 -1
  391. package/dist/src/tui/components/FocusedAgentPanel.js.map +0 -1
  392. package/dist/src/tui/components/FocusedAgentPanel.spec.d.ts +0 -1
  393. package/dist/src/tui/components/FocusedAgentPanel.spec.js +0 -183
  394. package/dist/src/tui/components/FocusedAgentPanel.spec.js.map +0 -1
  395. package/dist/src/tui/components/HeaderBar.js.map +0 -1
  396. package/dist/src/tui/components/HeaderBar.spec.d.ts +0 -1
  397. package/dist/src/tui/components/HeaderBar.spec.js +0 -96
  398. package/dist/src/tui/components/HeaderBar.spec.js.map +0 -1
  399. package/dist/src/tui/components/ModeScreenRouter.js.map +0 -1
  400. package/dist/src/tui/components/PlanModeScreen.js.map +0 -1
  401. package/dist/src/tui/components/SessionDashboard.js.map +0 -1
  402. package/dist/src/tui/components/SessionTabBar.js.map +0 -1
  403. package/dist/src/tui/components/SessionTabBar.spec.d.ts +0 -1
  404. package/dist/src/tui/components/SessionTabBar.spec.js +0 -59
  405. package/dist/src/tui/components/SessionTabBar.spec.js.map +0 -1
  406. package/dist/src/tui/components/StageHealthBar.js.map +0 -1
  407. package/dist/src/tui/components/StageHealthBar.spec.d.ts +0 -1
  408. package/dist/src/tui/components/StageHealthBar.spec.js +0 -99
  409. package/dist/src/tui/components/StageHealthBar.spec.js.map +0 -1
  410. package/dist/src/tui/components/act-screen.pure.js.map +0 -1
  411. package/dist/src/tui/components/activity-visualizer.pure.js.map +0 -1
  412. package/dist/src/tui/components/agent-discussion-panel.pure.js.map +0 -1
  413. package/dist/src/tui/components/checklist-panel.pure.js.map +0 -1
  414. package/dist/src/tui/components/context-section.pure.js.map +0 -1
  415. package/dist/src/tui/components/eval-screen.pure.js.map +0 -1
  416. package/dist/src/tui/components/flow-map.pure.js.map +0 -1
  417. package/dist/src/tui/components/focused-agent.pure.js.map +0 -1
  418. package/dist/src/tui/components/grid-layout.pure.js.map +0 -1
  419. package/dist/src/tui/components/index.js.map +0 -1
  420. package/dist/src/tui/components/live.pure.js.map +0 -1
  421. package/dist/src/tui/components/plan-screen.pure.js.map +0 -1
  422. package/dist/src/tui/components/session-dashboard.pure.js.map +0 -1
  423. package/dist/src/tui/components/session-tab-bar.pure.js.map +0 -1
  424. package/dist/src/tui/components/stage-health.pure.js.map +0 -1
  425. package/dist/src/tui/dashboard-app.js.map +0 -1
  426. package/dist/src/tui/dashboard-app.spec.d.ts +0 -1
  427. package/dist/src/tui/dashboard-app.spec.js +0 -158
  428. package/dist/src/tui/dashboard-app.spec.js.map +0 -1
  429. package/dist/src/tui/dashboard-types.js.map +0 -1
  430. package/dist/src/tui/ensure-tui-ready.js.map +0 -1
  431. package/dist/src/tui/eventbus-ui.integration.spec.d.ts +0 -1
  432. package/dist/src/tui/eventbus-ui.integration.spec.js +0 -577
  433. package/dist/src/tui/eventbus-ui.integration.spec.js.map +0 -1
  434. package/dist/src/tui/events/agent-metadata.service.js.map +0 -1
  435. package/dist/src/tui/events/agent-metadata.types.js.map +0 -1
  436. package/dist/src/tui/events/event-bus.js.map +0 -1
  437. package/dist/src/tui/events/events.module.js.map +0 -1
  438. package/dist/src/tui/events/hud-file-bridge.js.map +0 -1
  439. package/dist/src/tui/events/index.js.map +0 -1
  440. package/dist/src/tui/events/parse-agent.js.map +0 -1
  441. package/dist/src/tui/events/parse-tool-response.js.map +0 -1
  442. package/dist/src/tui/events/response-event-extractor.js.map +0 -1
  443. package/dist/src/tui/events/tui-interceptor.js.map +0 -1
  444. package/dist/src/tui/events/types.js.map +0 -1
  445. package/dist/src/tui/hooks/index.js.map +0 -1
  446. package/dist/src/tui/hooks/use-dashboard-state.js.map +0 -1
  447. package/dist/src/tui/hooks/use-focus-agent.js.map +0 -1
  448. package/dist/src/tui/hooks/use-multi-session-state.js.map +0 -1
  449. package/dist/src/tui/hooks/use-terminal-size.js.map +0 -1
  450. package/dist/src/tui/hooks/use-tick.js.map +0 -1
  451. package/dist/src/tui/hooks/use-tick.spec.d.ts +0 -1
  452. package/dist/src/tui/hooks/use-tick.spec.js +0 -70
  453. package/dist/src/tui/hooks/use-tick.spec.js.map +0 -1
  454. package/dist/src/tui/index.js.map +0 -1
  455. package/dist/src/tui/ipc/index.js.map +0 -1
  456. package/dist/src/tui/ipc/instance-registry.js.map +0 -1
  457. package/dist/src/tui/ipc/ipc-bridge.js.map +0 -1
  458. package/dist/src/tui/ipc/ipc-client.js.map +0 -1
  459. package/dist/src/tui/ipc/ipc-debug.js.map +0 -1
  460. package/dist/src/tui/ipc/ipc-server.js.map +0 -1
  461. package/dist/src/tui/ipc/ipc-state-cache.js.map +0 -1
  462. package/dist/src/tui/ipc/ipc.types.js.map +0 -1
  463. package/dist/src/tui/ipc/multi-session-manager.js.map +0 -1
  464. package/dist/src/tui/ipc/shutdown-manager.js.map +0 -1
  465. package/dist/src/tui/ipc/test-utils.js.map +0 -1
  466. package/dist/src/tui/ipc/tui-auto-launcher.js.map +0 -1
  467. package/dist/src/tui/multi-session-app.js.map +0 -1
  468. package/dist/src/tui/multi-session-app.spec.d.ts +0 -1
  469. package/dist/src/tui/multi-session-app.spec.js +0 -95
  470. package/dist/src/tui/multi-session-app.spec.js.map +0 -1
  471. package/dist/src/tui/transport-tui.integration.spec.d.ts +0 -1
  472. package/dist/src/tui/transport-tui.integration.spec.js +0 -189
  473. package/dist/src/tui/transport-tui.integration.spec.js.map +0 -1
  474. package/dist/src/tui/tui-config.js.map +0 -1
  475. package/dist/src/tui/types.js.map +0 -1
  476. package/dist/src/tui/utils/color-buffer.js.map +0 -1
  477. package/dist/src/tui/utils/colors.js.map +0 -1
  478. package/dist/src/tui/utils/display-width.js.map +0 -1
  479. package/dist/src/tui/utils/edge-router.js.map +0 -1
  480. package/dist/src/tui/utils/icons.js.map +0 -1
  481. package/dist/src/tui/utils/index.js.map +0 -1
  482. package/dist/src/tui/utils/theme.js.map +0 -1
  483. package/dist/tsconfig.build.tsbuildinfo +0 -1
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
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
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
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
+ };
11
+ var QualityReportHandler_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.QualityReportHandler = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ const abstract_handler_1 = require("./abstract-handler");
16
+ const quality_report_service_1 = require("../../ship/quality-report.service");
17
+ const response_utils_1 = require("../response.utils");
18
+ const validation_constants_1 = require("../../shared/validation.constants");
19
+ const rule_event_collector_1 = require("../../rules/rule-event-collector");
20
+ let QualityReportHandler = QualityReportHandler_1 = class QualityReportHandler extends abstract_handler_1.AbstractHandler {
21
+ constructor(qualityReportService, ruleEventCollector) {
22
+ super();
23
+ this.qualityReportService = qualityReportService;
24
+ this.ruleEventCollector = ruleEventCollector;
25
+ this.logger = new common_1.Logger(QualityReportHandler_1.name);
26
+ }
27
+ getHandledTools() {
28
+ return ['pr_quality_report'];
29
+ }
30
+ async handleTool(_toolName, args) {
31
+ try {
32
+ const changedFiles = (0, validation_constants_1.extractStringArray)(args, 'changedFiles');
33
+ if (!changedFiles || changedFiles.length === 0) {
34
+ return (0, response_utils_1.createJsonResponse)(await this.qualityReportService.generateReport({ changedFiles: [] }));
35
+ }
36
+ const timeout = typeof args?.timeout === 'number' && args.timeout > 0 ? args.timeout : 30000;
37
+ const result = await this.qualityReportService.generateReport({
38
+ changedFiles,
39
+ timeout,
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
+ }
56
+ return (0, response_utils_1.createJsonResponse)(result);
57
+ }
58
+ catch (error) {
59
+ this.logger.error(`Quality report failed: ${error}`);
60
+ return (0, response_utils_1.createErrorResponse)(`Quality report failed: ${error instanceof Error ? error.message : String(error)}`);
61
+ }
62
+ }
63
+ getToolDefinitions() {
64
+ return [
65
+ {
66
+ name: 'pr_quality_report',
67
+ description: 'Run specialist agents on changed files and generate a Quality Report for PR description',
68
+ inputSchema: {
69
+ type: 'object',
70
+ properties: {
71
+ changedFiles: {
72
+ type: 'array',
73
+ items: { type: 'string' },
74
+ description: 'List of changed file paths to analyze',
75
+ },
76
+ timeout: {
77
+ type: 'number',
78
+ description: 'Timeout in milliseconds (default: 30000)',
79
+ },
80
+ },
81
+ required: ['changedFiles'],
82
+ },
83
+ },
84
+ ];
85
+ }
86
+ };
87
+ exports.QualityReportHandler = QualityReportHandler;
88
+ exports.QualityReportHandler = QualityReportHandler = QualityReportHandler_1 = __decorate([
89
+ (0, common_1.Injectable)(),
90
+ __metadata("design:paramtypes", [quality_report_service_1.QualityReportService,
91
+ rule_event_collector_1.RuleEventCollector])
92
+ ], QualityReportHandler);
93
+ //# sourceMappingURL=quality-report.handler.js.map
@@ -0,0 +1,12 @@
1
+ import type { ToolDefinition } from './base.handler';
2
+ import type { ToolResponse } from '../response.utils';
3
+ import { AbstractHandler } from './abstract-handler';
4
+ import { BriefingLoaderService } from '../../context/briefing-loader.service';
5
+ export declare class ResumeHandler extends AbstractHandler {
6
+ private readonly briefingLoaderService;
7
+ private readonly logger;
8
+ constructor(briefingLoaderService: BriefingLoaderService);
9
+ protected getHandledTools(): string[];
10
+ protected handleTool(_toolName: string, args: Record<string, unknown> | undefined): Promise<ToolResponse>;
11
+ getToolDefinitions(): ToolDefinition[];
12
+ }
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
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
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
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
+ };
11
+ var ResumeHandler_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.ResumeHandler = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ const abstract_handler_1 = require("./abstract-handler");
16
+ const briefing_loader_service_1 = require("../../context/briefing-loader.service");
17
+ const response_utils_1 = require("../response.utils");
18
+ const validation_constants_1 = require("../../shared/validation.constants");
19
+ let ResumeHandler = ResumeHandler_1 = class ResumeHandler extends abstract_handler_1.AbstractHandler {
20
+ constructor(briefingLoaderService) {
21
+ super();
22
+ this.briefingLoaderService = briefingLoaderService;
23
+ this.logger = new common_1.Logger(ResumeHandler_1.name);
24
+ }
25
+ getHandledTools() {
26
+ return ['resume_session'];
27
+ }
28
+ async handleTool(_toolName, args) {
29
+ try {
30
+ const briefingPath = (0, validation_constants_1.extractOptionalString)(args, 'briefingPath');
31
+ const result = await this.briefingLoaderService.restoreContext(briefingPath);
32
+ return (0, response_utils_1.createJsonResponse)(result);
33
+ }
34
+ catch (error) {
35
+ this.logger.error(`Session resume failed: ${error}`);
36
+ return (0, response_utils_1.createErrorResponse)(`Session resume failed: ${error instanceof Error ? error.message : String(error)}`);
37
+ }
38
+ }
39
+ getToolDefinitions() {
40
+ return [
41
+ {
42
+ name: 'resume_session',
43
+ description: 'Load a previous session briefing to restore context and continue work',
44
+ inputSchema: {
45
+ type: 'object',
46
+ properties: {
47
+ briefingPath: {
48
+ type: 'string',
49
+ description: 'Path to a specific briefing file. If omitted, loads the most recent briefing from docs/codingbuddy/briefings/',
50
+ },
51
+ },
52
+ required: [],
53
+ },
54
+ },
55
+ ];
56
+ }
57
+ };
58
+ exports.ResumeHandler = ResumeHandler;
59
+ exports.ResumeHandler = ResumeHandler = ResumeHandler_1 = __decorate([
60
+ (0, common_1.Injectable)(),
61
+ __metadata("design:paramtypes", [briefing_loader_service_1.BriefingLoaderService])
62
+ ], ResumeHandler);
63
+ //# sourceMappingURL=resume.handler.js.map
@@ -0,0 +1,23 @@
1
+ import { AbstractHandler } from './abstract-handler';
2
+ import type { ToolDefinition } from './base.handler';
3
+ import type { ToolResponse } from '../response.utils';
4
+ import { RuleInsightsService } from '../../rules/rule-insights.service';
5
+ import { RulesService } from '../../rules/rules.service';
6
+ export declare class RuleImpactHandler extends AbstractHandler {
7
+ private readonly insightsService;
8
+ private readonly rulesService;
9
+ constructor(insightsService: RuleInsightsService, rulesService: RulesService);
10
+ protected getHandledTools(): string[];
11
+ protected handleTool(_toolName: string, args: Record<string, unknown> | undefined): Promise<ToolResponse>;
12
+ getToolDefinitions(): ToolDefinition[];
13
+ private extractPeriod;
14
+ private getAllRuleNames;
15
+ private formatReport;
16
+ private appendSummary;
17
+ private appendTopRules;
18
+ private appendDomainCoverage;
19
+ private appendUnusedRules;
20
+ private appendTrends;
21
+ private appendSuggestions;
22
+ private inferDomain;
23
+ }
@@ -0,0 +1,241 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
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
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
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
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.RuleImpactHandler = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const path_1 = require("path");
15
+ const abstract_handler_1 = require("./abstract-handler");
16
+ const rule_insights_service_1 = require("../../rules/rule-insights.service");
17
+ const rule_tracker_1 = require("../../rules/rule-tracker");
18
+ const rules_service_1 = require("../../rules/rules.service");
19
+ const validation_constants_1 = require("../../shared/validation.constants");
20
+ const DEFAULT_STATS_PATH = (0, path_1.join)(process.cwd(), 'docs', 'codingbuddy', 'rule-stats.json');
21
+ const MINUTES_PER_VIOLATION = 15;
22
+ const MINUTES_PER_CHECK = 5;
23
+ const VALID_PERIODS = new Set(['week', 'month', 'all']);
24
+ let RuleImpactHandler = class RuleImpactHandler extends abstract_handler_1.AbstractHandler {
25
+ constructor(insightsService, rulesService) {
26
+ super();
27
+ this.insightsService = insightsService;
28
+ this.rulesService = rulesService;
29
+ }
30
+ getHandledTools() {
31
+ return ['get_rule_impact_report'];
32
+ }
33
+ async handleTool(_toolName, args) {
34
+ const statsPath = (0, validation_constants_1.extractOptionalString)(args, 'statsPath') ?? DEFAULT_STATS_PATH;
35
+ const period = this.extractPeriod(args);
36
+ let stats = {};
37
+ try {
38
+ const tracker = await rule_tracker_1.RuleTracker.fromFile(statsPath);
39
+ stats = tracker.getStats();
40
+ }
41
+ catch {
42
+ }
43
+ const allRuleNames = await this.getAllRuleNames();
44
+ const insights = this.insightsService.generateInsights(stats, allRuleNames);
45
+ if (insights.summary.totalRulesTracked === 0) {
46
+ return {
47
+ content: [
48
+ {
49
+ type: 'text',
50
+ text: 'No data collected yet. Run some sessions to populate stats.',
51
+ },
52
+ ],
53
+ };
54
+ }
55
+ const report = this.formatReport(insights, period);
56
+ return {
57
+ content: [{ type: 'text', text: report }],
58
+ };
59
+ }
60
+ getToolDefinitions() {
61
+ return [
62
+ {
63
+ name: 'get_rule_impact_report',
64
+ description: 'Generate a formatted markdown impact report showing rule effectiveness: top rules by usage, unused rules, domain coverage, estimated time saved, and trend analysis',
65
+ inputSchema: {
66
+ type: 'object',
67
+ properties: {
68
+ period: {
69
+ type: 'string',
70
+ description: 'Report period: "week", "month", or "all" (default: "all")',
71
+ enum: ['week', 'month', 'all'],
72
+ },
73
+ statsPath: {
74
+ type: 'string',
75
+ description: 'Path to rule-stats.json file. Defaults to docs/codingbuddy/rule-stats.json',
76
+ },
77
+ },
78
+ required: [],
79
+ },
80
+ },
81
+ ];
82
+ }
83
+ extractPeriod(args) {
84
+ const raw = (0, validation_constants_1.extractOptionalString)(args, 'period');
85
+ if (raw && VALID_PERIODS.has(raw))
86
+ return raw;
87
+ return 'all';
88
+ }
89
+ async getAllRuleNames() {
90
+ try {
91
+ const results = await this.rulesService.searchRules('*');
92
+ return results.map(r => r.file.replace(/^rules\//, '').replace(/\.md$/, ''));
93
+ }
94
+ catch {
95
+ return [];
96
+ }
97
+ }
98
+ formatReport(insights, period) {
99
+ const lines = [];
100
+ lines.push('# Rule Impact Report');
101
+ lines.push('');
102
+ lines.push(`> Period: **${period}** | Generated: ${new Date(insights.generatedAt).toISOString()}`);
103
+ lines.push('');
104
+ this.appendSummary(lines, insights);
105
+ this.appendTopRules(lines, insights);
106
+ this.appendDomainCoverage(lines, insights);
107
+ this.appendUnusedRules(lines, insights);
108
+ this.appendTrends(lines, insights);
109
+ this.appendSuggestions(lines, insights);
110
+ return lines.join('\n');
111
+ }
112
+ appendSummary(lines, insights) {
113
+ const { summary } = insights;
114
+ const timeSavedMin = summary.totalUsageCount * MINUTES_PER_VIOLATION +
115
+ summary.totalRulesTracked * MINUTES_PER_CHECK;
116
+ const timeSavedHours = (timeSavedMin / 60).toFixed(1);
117
+ lines.push('## Summary');
118
+ lines.push('');
119
+ lines.push(`| Metric | Value |`);
120
+ lines.push(`| --- | --- |`);
121
+ lines.push(`| Total Rule Applications | ${summary.totalUsageCount} |`);
122
+ lines.push(`| Rules Tracked | ${summary.totalRulesTracked} |`);
123
+ lines.push(`| Active Rules (last 7d) | ${summary.activeRules} |`);
124
+ lines.push(`| Stale Rules (>30d) | ${summary.staleRules} |`);
125
+ lines.push(`| **Estimated Time Saved** | **~${timeSavedHours} hours** (~${timeSavedMin} min) |`);
126
+ lines.push('');
127
+ }
128
+ appendTopRules(lines, insights) {
129
+ lines.push('## Top Rules');
130
+ lines.push('');
131
+ if (insights.topRules.length === 0) {
132
+ lines.push('_No rule usage data yet._');
133
+ lines.push('');
134
+ return;
135
+ }
136
+ lines.push('| Rule | Applications | Classification |');
137
+ lines.push('| --- | ---: | --- |');
138
+ for (const rule of insights.topRules) {
139
+ const badge = rule.classification === 'high'
140
+ ? '**HIGH**'
141
+ : rule.classification === 'medium'
142
+ ? 'medium'
143
+ : 'low';
144
+ lines.push(`| ${rule.name} | ${rule.count} | ${badge} |`);
145
+ }
146
+ lines.push('');
147
+ }
148
+ appendDomainCoverage(lines, insights) {
149
+ lines.push('## Domain Coverage');
150
+ lines.push('');
151
+ const domainMap = new Map();
152
+ for (const rule of insights.topRules) {
153
+ const domain = this.inferDomain(rule.name);
154
+ const entry = domainMap.get(domain) ?? { checks: 0, rules: [] };
155
+ entry.checks += rule.count;
156
+ entry.rules.push(rule.name);
157
+ domainMap.set(domain, entry);
158
+ }
159
+ if (domainMap.size === 0) {
160
+ lines.push('_No domain coverage data yet._');
161
+ lines.push('');
162
+ return;
163
+ }
164
+ lines.push('| Domain | Checks | Rules |');
165
+ lines.push('| --- | ---: | --- |');
166
+ const sorted = [...domainMap.entries()].sort((a, b) => b[1].checks - a[1].checks);
167
+ for (const [domain, data] of sorted) {
168
+ lines.push(`| ${domain} | ${data.checks} | ${data.rules.join(', ')} |`);
169
+ }
170
+ lines.push('');
171
+ }
172
+ appendUnusedRules(lines, insights) {
173
+ lines.push('## Unused Rules');
174
+ lines.push('');
175
+ if (insights.unusedRules.length === 0) {
176
+ lines.push('All rules are actively used.');
177
+ lines.push('');
178
+ return;
179
+ }
180
+ lines.push(`${insights.unusedRules.length} rule(s) with 0 applications — consider removing or promoting:`);
181
+ lines.push('');
182
+ for (const rule of insights.unusedRules) {
183
+ lines.push(`- \`${rule}\``);
184
+ }
185
+ lines.push('');
186
+ }
187
+ appendTrends(lines, insights) {
188
+ lines.push('## Trend');
189
+ lines.push('');
190
+ const { trends } = insights;
191
+ if (trends.recentlyActive.length > 0) {
192
+ lines.push(`**Recently Active:** ${trends.recentlyActive.join(', ')}`);
193
+ lines.push('');
194
+ }
195
+ if (trends.emerging.length > 0) {
196
+ lines.push(`**Emerging:** ${trends.emerging.join(', ')}`);
197
+ lines.push('');
198
+ }
199
+ if (trends.declining.length > 0) {
200
+ lines.push(`**Declining:** ${trends.declining.join(', ')}`);
201
+ lines.push('');
202
+ }
203
+ if (trends.recentlyActive.length === 0 &&
204
+ trends.emerging.length === 0 &&
205
+ trends.declining.length === 0) {
206
+ lines.push('_No trend data available._');
207
+ lines.push('');
208
+ }
209
+ }
210
+ appendSuggestions(lines, insights) {
211
+ if (insights.suggestions.length === 0)
212
+ return;
213
+ lines.push('## Suggestions');
214
+ lines.push('');
215
+ for (const s of insights.suggestions) {
216
+ lines.push(`- ${s}`);
217
+ }
218
+ lines.push('');
219
+ }
220
+ inferDomain(ruleName) {
221
+ const lower = ruleName.toLowerCase();
222
+ if (lower.includes('security') || lower.includes('auth'))
223
+ return 'security';
224
+ if (lower.includes('test') || lower.includes('tdd'))
225
+ return 'testing';
226
+ if (lower.includes('perf') || lower.includes('bundle'))
227
+ return 'performance';
228
+ if (lower.includes('access') || lower.includes('a11y') || lower.includes('aria'))
229
+ return 'accessibility';
230
+ if (lower.includes('seo') || lower.includes('meta'))
231
+ return 'seo';
232
+ return 'general';
233
+ }
234
+ };
235
+ exports.RuleImpactHandler = RuleImpactHandler;
236
+ exports.RuleImpactHandler = RuleImpactHandler = __decorate([
237
+ (0, common_1.Injectable)(),
238
+ __metadata("design:paramtypes", [rule_insights_service_1.RuleInsightsService,
239
+ rules_service_1.RulesService])
240
+ ], RuleImpactHandler);
241
+ //# sourceMappingURL=rule-impact.handler.js.map
@@ -107,7 +107,7 @@ let SkillHandler = class SkillHandler extends abstract_handler_1.AbstractHandler
107
107
  return (0, response_utils_1.createErrorResponse)(`Failed to recommend skills: ${error instanceof Error ? error.message : 'Unknown error'}`);
108
108
  }
109
109
  }
110
- handleListSkills(args) {
110
+ async handleListSkills(args) {
111
111
  try {
112
112
  const options = {};
113
113
  if (typeof args?.minPriority === 'number') {
@@ -116,7 +116,7 @@ let SkillHandler = class SkillHandler extends abstract_handler_1.AbstractHandler
116
116
  if (typeof args?.maxPriority === 'number') {
117
117
  options.maxPriority = args.maxPriority;
118
118
  }
119
- const result = this.skillRecommendationService.listSkills(options);
119
+ const result = await this.skillRecommendationService.listSkills(options);
120
120
  return (0, response_utils_1.createJsonResponse)(result);
121
121
  }
122
122
  catch (error) {
@@ -22,6 +22,7 @@ const diagnostic_module_1 = require("../diagnostic/diagnostic.module");
22
22
  const events_1 = require("../tui/events");
23
23
  const pipeline_module_1 = require("../pipeline/pipeline.module");
24
24
  const impact_1 = require("../impact");
25
+ const ship_module_1 = require("../ship/ship.module");
25
26
  const skill_recommendation_service_1 = require("../skill/skill-recommendation.service");
26
27
  const language_service_1 = require("../shared/language.service");
27
28
  const model_1 = require("../model");
@@ -44,6 +45,10 @@ const handlers = [
44
45
  handlers_1.ImpactHandler,
45
46
  handlers_1.PluginValidationHandler,
46
47
  handlers_1.ReleaseCheckHandler,
48
+ handlers_1.QualityReportHandler,
49
+ handlers_1.BriefingHandler,
50
+ handlers_1.ResumeHandler,
51
+ handlers_1.RuleImpactHandler,
47
52
  ];
48
53
  let McpModule = class McpModule {
49
54
  };
@@ -63,6 +68,7 @@ exports.McpModule = McpModule = __decorate([
63
68
  events_1.TuiEventsModule,
64
69
  pipeline_module_1.PipelineModule,
65
70
  impact_1.ImpactModule,
71
+ ship_module_1.ShipModule,
66
72
  ],
67
73
  controllers: [mcp_controller_1.McpController],
68
74
  providers: [
@@ -0,0 +1,41 @@
1
+ export interface InstallOptions {
2
+ source: string;
3
+ targetRoot: string;
4
+ force: boolean;
5
+ version?: string;
6
+ }
7
+ export interface ResolvedSource {
8
+ source: string;
9
+ version?: string;
10
+ }
11
+ export interface InstallResult {
12
+ success: boolean;
13
+ pluginName?: string;
14
+ summary?: string;
15
+ error?: string;
16
+ }
17
+ export interface PluginRecord {
18
+ name: string;
19
+ version: string;
20
+ source: string;
21
+ installedAt: string;
22
+ provides: {
23
+ agents: string[];
24
+ rules: string[];
25
+ skills: string[];
26
+ checklists: string[];
27
+ };
28
+ }
29
+ export declare class PluginInstallerService {
30
+ resolveSource(nameOrUrl: string): Promise<ResolvedSource>;
31
+ private parseNameVersion;
32
+ resolveGitUrl(source: string): string;
33
+ install(options: InstallOptions): Promise<InstallResult>;
34
+ private isCompatible;
35
+ private compareVersions;
36
+ private detectConflicts;
37
+ private copyAssets;
38
+ private recordInstallation;
39
+ private cleanup;
40
+ private fail;
41
+ }