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,16 @@
1
+ export declare const COMMANDS: readonly ["init", "install", "search", "plugins", "update", "uninstall", "mcp", "tui", "completion"];
2
+ export declare const GLOBAL_FLAGS: readonly ["--help", "--version"];
3
+ export declare const COMMAND_FLAGS: Record<string, readonly string[]>;
4
+ export declare function getPluginNames(projectRoot: string): string[];
5
+ export declare function generateBashCompletion(): string;
6
+ export declare function generateZshCompletion(): string;
7
+ export declare function generateFishCompletion(): string;
8
+ export declare function generateCompletion(shell: string): string | null;
9
+ export interface CompletionOptions {
10
+ shell: string;
11
+ }
12
+ export interface CompletionResult {
13
+ success: boolean;
14
+ error?: string;
15
+ }
16
+ export declare function runCompletion(options: CompletionOptions): CompletionResult;
@@ -0,0 +1,276 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.COMMAND_FLAGS = exports.GLOBAL_FLAGS = exports.COMMANDS = void 0;
4
+ exports.getPluginNames = getPluginNames;
5
+ exports.generateBashCompletion = generateBashCompletion;
6
+ exports.generateZshCompletion = generateZshCompletion;
7
+ exports.generateFishCompletion = generateFishCompletion;
8
+ exports.generateCompletion = generateCompletion;
9
+ exports.runCompletion = runCompletion;
10
+ const fs_1 = require("fs");
11
+ const path_1 = require("path");
12
+ exports.COMMANDS = [
13
+ 'init',
14
+ 'install',
15
+ 'search',
16
+ 'plugins',
17
+ 'update',
18
+ 'uninstall',
19
+ 'mcp',
20
+ 'tui',
21
+ 'completion',
22
+ ];
23
+ exports.GLOBAL_FLAGS = ['--help', '--version'];
24
+ exports.COMMAND_FLAGS = {
25
+ init: ['--force', '--yes', '--api-key'],
26
+ install: ['--force'],
27
+ uninstall: ['--yes'],
28
+ tui: ['--restart'],
29
+ completion: ['bash', 'zsh', 'fish'],
30
+ };
31
+ const COMMAND_DESCRIPTIONS = {
32
+ init: 'Initialize configuration',
33
+ install: 'Install a plugin from git repository',
34
+ search: 'Search plugins in the registry',
35
+ plugins: 'List installed plugins',
36
+ update: 'Check and update outdated plugins',
37
+ uninstall: 'Uninstall a plugin',
38
+ mcp: 'Start MCP server (stdio mode)',
39
+ tui: 'Monitor agent execution in real-time',
40
+ completion: 'Generate shell completion script',
41
+ };
42
+ function getPluginNames(projectRoot) {
43
+ const pluginsPath = (0, path_1.join)(projectRoot, '.codingbuddy', 'plugins.json');
44
+ if (!(0, fs_1.existsSync)(pluginsPath)) {
45
+ return [];
46
+ }
47
+ try {
48
+ const raw = (0, fs_1.readFileSync)(pluginsPath, 'utf-8');
49
+ const data = JSON.parse(raw);
50
+ return (data.plugins ?? []).map(p => p.name);
51
+ }
52
+ catch {
53
+ return [];
54
+ }
55
+ }
56
+ function generateBashCompletion() {
57
+ const cmds = exports.COMMANDS.join(' ');
58
+ const globalFlags = exports.GLOBAL_FLAGS.join(' ');
59
+ const initFlags = (exports.COMMAND_FLAGS.init ?? []).join(' ');
60
+ const installFlags = (exports.COMMAND_FLAGS.install ?? []).join(' ');
61
+ const uninstallFlags = (exports.COMMAND_FLAGS.uninstall ?? []).join(' ');
62
+ const tuiFlags = (exports.COMMAND_FLAGS.tui ?? []).join(' ');
63
+ return `#!/bin/bash
64
+ # codingbuddy bash completion
65
+ # Install: codingbuddy completion bash >> ~/.bashrc
66
+ # or: codingbuddy completion bash > /etc/bash_completion.d/codingbuddy
67
+
68
+ _codingbuddy_get_plugin_names() {
69
+ local plugins_file=".codingbuddy/plugins.json"
70
+ if [[ -f "$plugins_file" ]]; then
71
+ grep -o '"name"[[:space:]]*:[[:space:]]*"[^"]*"' "$plugins_file" | sed 's/"name"[[:space:]]*:[[:space:]]*"\\([^"]*\\)"/\\1/'
72
+ fi
73
+ }
74
+
75
+ _codingbuddy_completions() {
76
+ local cur prev commands
77
+ cur="\${COMP_WORDS[COMP_CWORD]}"
78
+ prev="\${COMP_WORDS[COMP_CWORD-1]}"
79
+ commands="${cmds}"
80
+
81
+ # Complete commands at position 1
82
+ if [[ \${COMP_CWORD} -eq 1 ]]; then
83
+ COMPREPLY=( $(compgen -W "$commands ${globalFlags}" -- "$cur") )
84
+ return
85
+ fi
86
+
87
+ # Complete based on command
88
+ case "\${COMP_WORDS[1]}" in
89
+ init)
90
+ COMPREPLY=( $(compgen -W "${initFlags}" -- "$cur") )
91
+ ;;
92
+ install)
93
+ COMPREPLY=( $(compgen -W "${installFlags}" -- "$cur") )
94
+ ;;
95
+ uninstall)
96
+ if [[ \${COMP_CWORD} -eq 2 ]]; then
97
+ local plugins=$(_codingbuddy_get_plugin_names)
98
+ COMPREPLY=( $(compgen -W "$plugins ${uninstallFlags}" -- "$cur") )
99
+ else
100
+ COMPREPLY=( $(compgen -W "${uninstallFlags}" -- "$cur") )
101
+ fi
102
+ ;;
103
+ update)
104
+ if [[ \${COMP_CWORD} -eq 2 ]]; then
105
+ local plugins=$(_codingbuddy_get_plugin_names)
106
+ COMPREPLY=( $(compgen -W "$plugins" -- "$cur") )
107
+ fi
108
+ ;;
109
+ tui)
110
+ COMPREPLY=( $(compgen -W "${tuiFlags}" -- "$cur") )
111
+ ;;
112
+ completion)
113
+ COMPREPLY=( $(compgen -W "bash zsh fish" -- "$cur") )
114
+ ;;
115
+ esac
116
+ }
117
+
118
+ complete -F _codingbuddy_completions codingbuddy
119
+ `;
120
+ }
121
+ function generateZshCompletion() {
122
+ const cmdEntries = exports.COMMANDS.map(cmd => ` '${cmd}:${COMMAND_DESCRIPTIONS[cmd] ?? cmd}'`).join('\n');
123
+ const initFlags = (exports.COMMAND_FLAGS.init ?? [])
124
+ .map(f => ` '${f}[${f === '--force' ? 'Overwrite existing config' : f === '--yes' ? 'Accept defaults' : 'Anthropic API key'}]'`)
125
+ .join('\n');
126
+ const installFlags = (exports.COMMAND_FLAGS.install ?? [])
127
+ .map(f => ` '${f}[Force install]'`)
128
+ .join('\n');
129
+ const uninstallFlags = (exports.COMMAND_FLAGS.uninstall ?? [])
130
+ .map(f => ` '${f}[Skip confirmation]'`)
131
+ .join('\n');
132
+ return `#compdef codingbuddy
133
+ # codingbuddy zsh completion
134
+ # Install: codingbuddy completion zsh > ~/.zsh/completions/_codingbuddy
135
+ # then add to ~/.zshrc: fpath=(~/.zsh/completions $fpath)
136
+
137
+ _codingbuddy_get_plugin_names() {
138
+ local plugins_file=".codingbuddy/plugins.json"
139
+ if [[ -f "$plugins_file" ]]; then
140
+ grep -o '"name"[[:space:]]*:[[:space:]]*"[^"]*"' "$plugins_file" | sed 's/"name"[[:space:]]*:[[:space:]]*"\\([^"]*\\)"/\\1/'
141
+ fi
142
+ }
143
+
144
+ _codingbuddy() {
145
+ local -a commands
146
+ commands=(
147
+ ${cmdEntries}
148
+ )
149
+
150
+ _arguments -C \\
151
+ '1:command:->command' \\
152
+ '*::arg:->args'
153
+
154
+ case "$state" in
155
+ command)
156
+ _describe 'command' commands
157
+ compadd -- --help --version
158
+ ;;
159
+ args)
160
+ case "\${words[1]}" in
161
+ init)
162
+ _arguments \\
163
+ ${initFlags}
164
+ ;;
165
+ install)
166
+ _arguments \\
167
+ ${installFlags}
168
+ ;;
169
+ uninstall)
170
+ if (( CURRENT == 2 )); then
171
+ local -a plugins
172
+ plugins=(\${(f)"$(_codingbuddy_get_plugin_names)"})
173
+ compadd -a plugins
174
+ fi
175
+ _arguments \\
176
+ ${uninstallFlags}
177
+ ;;
178
+ update)
179
+ if (( CURRENT == 2 )); then
180
+ local -a plugins
181
+ plugins=(\${(f)"$(_codingbuddy_get_plugin_names)"})
182
+ compadd -a plugins
183
+ fi
184
+ ;;
185
+ tui)
186
+ _arguments \\
187
+ '--restart[Restart TUI client]'
188
+ ;;
189
+ completion)
190
+ compadd bash zsh fish
191
+ ;;
192
+ esac
193
+ ;;
194
+ esac
195
+ }
196
+
197
+ _codingbuddy "$@"
198
+ `;
199
+ }
200
+ function generateFishCompletion() {
201
+ const noSubcommandCond = '__fish_seen_subcommand_from init install search plugins update uninstall mcp tui completion';
202
+ const lines = [
203
+ '# codingbuddy fish completion',
204
+ '# Install: codingbuddy completion fish > ~/.config/fish/completions/codingbuddy.fish',
205
+ '',
206
+ '# Helper: get plugin names from plugins.json',
207
+ 'function __codingbuddy_plugin_names',
208
+ ' set -l plugins_file ".codingbuddy/plugins.json"',
209
+ ' if test -f $plugins_file',
210
+ ' string match -rg \'"name"\\s*:\\s*"([^"]*)"\' < $plugins_file',
211
+ ' end',
212
+ 'end',
213
+ '',
214
+ '# Disable file completions by default',
215
+ 'complete -c codingbuddy -f',
216
+ '',
217
+ '# Commands (only when no subcommand given)',
218
+ ];
219
+ for (const cmd of exports.COMMANDS) {
220
+ const desc = COMMAND_DESCRIPTIONS[cmd] ?? cmd;
221
+ lines.push(`complete -c codingbuddy -n "not ${noSubcommandCond}" -a "${cmd}" -d "${desc}"`);
222
+ }
223
+ lines.push('');
224
+ lines.push('# Global flags');
225
+ lines.push(`complete -c codingbuddy -n "not ${noSubcommandCond}" -l help -d "Show help"`);
226
+ lines.push(`complete -c codingbuddy -n "not ${noSubcommandCond}" -l version -d "Show version"`);
227
+ lines.push('');
228
+ lines.push('# init flags');
229
+ lines.push('complete -c codingbuddy -n "__fish_seen_subcommand_from init" -l force -s f -d "Overwrite existing config"');
230
+ lines.push('complete -c codingbuddy -n "__fish_seen_subcommand_from init" -l yes -s y -d "Accept defaults"');
231
+ lines.push('complete -c codingbuddy -n "__fish_seen_subcommand_from init" -l api-key -d "Anthropic API key"');
232
+ lines.push('');
233
+ lines.push('# install flags');
234
+ lines.push('complete -c codingbuddy -n "__fish_seen_subcommand_from install" -l force -s f -d "Force install"');
235
+ lines.push('');
236
+ lines.push('# uninstall - dynamic plugin names + flags');
237
+ lines.push('complete -c codingbuddy -n "__fish_seen_subcommand_from uninstall" -a "(__codingbuddy_plugin_names)" -d "Plugin name"');
238
+ lines.push('complete -c codingbuddy -n "__fish_seen_subcommand_from uninstall" -l yes -s y -d "Skip confirmation"');
239
+ lines.push('');
240
+ lines.push('# update - dynamic plugin names');
241
+ lines.push('complete -c codingbuddy -n "__fish_seen_subcommand_from update" -a "(__codingbuddy_plugin_names)" -d "Plugin name"');
242
+ lines.push('');
243
+ lines.push('# tui flags');
244
+ lines.push('complete -c codingbuddy -n "__fish_seen_subcommand_from tui" -l restart -d "Restart TUI client"');
245
+ lines.push('');
246
+ lines.push('# completion subcommands');
247
+ lines.push('complete -c codingbuddy -n "__fish_seen_subcommand_from completion" -a "bash zsh fish" -d "Shell type"');
248
+ lines.push('');
249
+ return lines.join('\n');
250
+ }
251
+ function generateCompletion(shell) {
252
+ switch (shell) {
253
+ case 'bash':
254
+ return generateBashCompletion();
255
+ case 'zsh':
256
+ return generateZshCompletion();
257
+ case 'fish':
258
+ return generateFishCompletion();
259
+ default:
260
+ return null;
261
+ }
262
+ }
263
+ function runCompletion(options) {
264
+ if (!options.shell) {
265
+ process.stderr.write('Error: Missing shell type. Usage: codingbuddy completion <bash|zsh|fish>\n');
266
+ return { success: false, error: 'Missing shell type' };
267
+ }
268
+ const script = generateCompletion(options.shell);
269
+ if (!script) {
270
+ process.stderr.write(`Error: Unsupported shell "${options.shell}". Supported: bash, zsh, fish\n`);
271
+ return { success: false, error: `Unsupported shell: ${options.shell}` };
272
+ }
273
+ process.stdout.write(script);
274
+ return { success: true };
275
+ }
276
+ //# sourceMappingURL=completion.js.map
@@ -0,0 +1,2 @@
1
+ export { runCompletion, generateCompletion } from './completion';
2
+ export type { CompletionOptions, CompletionResult } from './completion';
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateCompletion = exports.runCompletion = void 0;
4
+ var completion_1 = require("./completion");
5
+ Object.defineProperty(exports, "runCompletion", { enumerable: true, get: function () { return completion_1.runCompletion; } });
6
+ Object.defineProperty(exports, "generateCompletion", { enumerable: true, get: function () { return completion_1.generateCompletion; } });
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,21 @@
1
+ export interface CreatePluginOptions {
2
+ name: string;
3
+ outputDir: string;
4
+ template: 'minimal' | 'full';
5
+ description?: string;
6
+ author?: string;
7
+ }
8
+ export interface CreatePluginResult {
9
+ success: boolean;
10
+ pluginDir?: string;
11
+ error?: string;
12
+ }
13
+ export interface TemplateContext {
14
+ name: string;
15
+ description: string;
16
+ author: string;
17
+ }
18
+ export declare function validatePluginName(name: string): boolean;
19
+ export declare function generateMinimalTemplate(ctx: TemplateContext): Record<string, string>;
20
+ export declare function generateFullTemplate(ctx: TemplateContext): Record<string, string>;
21
+ export declare function runCreatePlugin(options: CreatePluginOptions): Promise<CreatePluginResult>;
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validatePluginName = validatePluginName;
4
+ exports.generateMinimalTemplate = generateMinimalTemplate;
5
+ exports.generateFullTemplate = generateFullTemplate;
6
+ exports.runCreatePlugin = runCreatePlugin;
7
+ const fs = require("fs");
8
+ const path = require("path");
9
+ const child_process_1 = require("child_process");
10
+ const console_1 = require("../utils/console");
11
+ const PLUGIN_NAME_REGEX = /^[a-z][a-z0-9-]*$/;
12
+ function validatePluginName(name) {
13
+ return PLUGIN_NAME_REGEX.test(name);
14
+ }
15
+ function getDefaultAuthor() {
16
+ try {
17
+ return (0, child_process_1.execSync)('git config user.name', { encoding: 'utf-8' }).trim();
18
+ }
19
+ catch {
20
+ return 'unknown';
21
+ }
22
+ }
23
+ function generateMinimalTemplate(ctx) {
24
+ const manifest = {
25
+ name: ctx.name,
26
+ version: '1.0.0',
27
+ description: ctx.description,
28
+ author: ctx.author,
29
+ provides: {
30
+ agents: [],
31
+ rules: [],
32
+ skills: [],
33
+ checklists: [],
34
+ },
35
+ };
36
+ const readme = `# ${ctx.name}
37
+
38
+ ${ctx.description}
39
+
40
+ ## Installation
41
+
42
+ \`\`\`bash
43
+ codingbuddy install ./${ctx.name}
44
+ \`\`\`
45
+
46
+ ## Author
47
+
48
+ ${ctx.author}
49
+ `;
50
+ const gitignore = `node_modules/
51
+ dist/
52
+ .DS_Store
53
+ `;
54
+ return {
55
+ 'plugin.json': JSON.stringify(manifest, null, 2),
56
+ 'README.md': readme,
57
+ '.gitignore': gitignore,
58
+ };
59
+ }
60
+ function generateFullTemplate(ctx) {
61
+ const minimalFiles = generateMinimalTemplate(ctx);
62
+ const manifest = JSON.parse(minimalFiles['plugin.json']);
63
+ manifest.provides = {
64
+ agents: ['agents/example-agent.json'],
65
+ rules: ['rules/example-rule.md'],
66
+ skills: ['skills/example-skill.md'],
67
+ checklists: ['checklists/example-checklist.json'],
68
+ };
69
+ const exampleAgent = {
70
+ name: 'Example Agent',
71
+ description: `Example specialist agent for ${ctx.name}`,
72
+ role: {
73
+ title: 'Example Specialist',
74
+ expertise: ['example-domain'],
75
+ },
76
+ activation_message: {
77
+ formatted: '🤖 example-agent [Example Specialist]',
78
+ },
79
+ };
80
+ const exampleSkill = `# Example Skill
81
+
82
+ ## Purpose
83
+
84
+ An example skill provided by ${ctx.name}.
85
+
86
+ ## Instructions
87
+
88
+ Describe the skill instructions here.
89
+ `;
90
+ const exampleRule = `# Example Rule
91
+
92
+ ## Description
93
+
94
+ An example rule provided by ${ctx.name}.
95
+
96
+ ## Guidelines
97
+
98
+ - Guideline 1
99
+ - Guideline 2
100
+ `;
101
+ const exampleChecklist = {
102
+ name: 'Example Checklist',
103
+ description: `Example checklist from ${ctx.name}`,
104
+ items: [
105
+ {
106
+ id: 'example-1',
107
+ text: 'Check example condition',
108
+ severity: 'medium',
109
+ },
110
+ ],
111
+ };
112
+ return {
113
+ ...minimalFiles,
114
+ 'plugin.json': JSON.stringify(manifest, null, 2),
115
+ 'agents/example-agent.json': JSON.stringify(exampleAgent, null, 2),
116
+ 'skills/example-skill.md': exampleSkill,
117
+ 'rules/example-rule.md': exampleRule,
118
+ 'checklists/example-checklist.json': JSON.stringify(exampleChecklist, null, 2),
119
+ };
120
+ }
121
+ async function runCreatePlugin(options) {
122
+ const console = (0, console_1.createConsoleUtils)();
123
+ if (!validatePluginName(options.name)) {
124
+ const msg = `Invalid plugin name "${options.name}". Must match /^[a-z][a-z0-9-]*$/`;
125
+ console.log.error(msg);
126
+ return { success: false, error: msg };
127
+ }
128
+ const pluginDir = path.join(options.outputDir, options.name);
129
+ if (fs.existsSync(pluginDir)) {
130
+ const msg = `Directory "${pluginDir}" already exists`;
131
+ console.log.error(msg);
132
+ return { success: false, error: msg };
133
+ }
134
+ const author = options.author ?? getDefaultAuthor();
135
+ const description = options.description ?? `A CodingBuddy plugin: ${options.name}`;
136
+ const ctx = {
137
+ name: options.name,
138
+ description,
139
+ author,
140
+ };
141
+ const files = options.template === 'full' ? generateFullTemplate(ctx) : generateMinimalTemplate(ctx);
142
+ console.log.step('🔧', `Scaffolding plugin "${options.name}" (${options.template} template)...`);
143
+ for (const [filePath, content] of Object.entries(files)) {
144
+ const fullPath = path.join(pluginDir, filePath);
145
+ fs.mkdirSync(path.dirname(fullPath), { recursive: true });
146
+ fs.writeFileSync(fullPath, content, 'utf-8');
147
+ }
148
+ console.log.success(`Plugin "${options.name}" created at ${pluginDir}`);
149
+ return { success: true, pluginDir };
150
+ }
151
+ //# sourceMappingURL=create-plugin.command.js.map
@@ -1,3 +1,4 @@
1
+ export declare function resolveHudStateDir(): string;
1
2
  export declare function runTui(options?: {
2
3
  restart?: boolean;
3
4
  }): Promise<void>;
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveHudStateDir = resolveHudStateDir;
3
4
  exports.runTui = runTui;
4
5
  const path = require("node:path");
5
6
  const os = require("node:os");
@@ -7,6 +8,11 @@ const ipc_types_1 = require("../tui/ipc/ipc.types");
7
8
  const instance_registry_1 = require("../tui/ipc/instance-registry");
8
9
  const restart_tui_1 = require("./restart-tui");
9
10
  const CLIENT_SHUTDOWN_TIMEOUT_MS = 3000;
11
+ function resolveHudStateDir() {
12
+ return (process.env.CODINGBUDDY_HUD_STATE_DIR ??
13
+ process.env.CLAUDE_PLUGIN_DATA ??
14
+ path.join(os.homedir(), '.codingbuddy'));
15
+ }
10
16
  async function runTui(options = {}) {
11
17
  if (options.restart) {
12
18
  const result = await (0, restart_tui_1.restartTui)();
@@ -46,7 +52,7 @@ async function runTui(options = {}) {
46
52
  const { HudFileBridge } = await Promise.resolve().then(() => require('../tui/events'));
47
53
  const sessions = manager.getSessions();
48
54
  if (sessions.length > 0) {
49
- const hudStatePath = path.join(process.env.CODINGBUDDY_HUD_STATE_DIR ?? path.join(os.homedir(), '.codingbuddy'), 'hud-state.json');
55
+ const hudStatePath = path.join(resolveHudStateDir(), 'hud-state.json');
50
56
  const bridge = new HudFileBridge(sessions[0].eventBus, hudStatePath);
51
57
  bridge.start();
52
58
  hudBridge = bridge;
@@ -261,6 +261,9 @@ export declare const CodingBuddyConfigSchema: z.ZodObject<{
261
261
  maxArrayItems: z.ZodDefault<z.ZodNumber>;
262
262
  maxItemLength: z.ZodDefault<z.ZodNumber>;
263
263
  }, z.core.$strip>>;
264
+ experimental: z.ZodOptional<z.ZodObject<{
265
+ teamsCoordination: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
266
+ }, z.core.$strip>>;
264
267
  upstreamRepos: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
265
268
  keyFiles: z.ZodOptional<z.ZodArray<z.ZodString>>;
266
269
  avoid: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -98,6 +98,11 @@ exports.CodingBuddyConfigSchema = zod_1.z.object({
98
98
  auto: AutoConfigSchema.optional(),
99
99
  release: ReleaseConfigSchema.optional(),
100
100
  context: ContextConfigSchema.optional(),
101
+ experimental: zod_1.z
102
+ .object({
103
+ teamsCoordination: zod_1.z.boolean().default(false).optional(),
104
+ })
105
+ .optional(),
101
106
  upstreamRepos: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(),
102
107
  keyFiles: zod_1.z.array(zod_1.z.string()).optional(),
103
108
  avoid: zod_1.z.array(zod_1.z.string()).optional(),
@@ -16,6 +16,7 @@ const skill_module_1 = require("../skill/skill.module");
16
16
  const skill_recommendation_service_1 = require("../skill/skill-recommendation.service");
17
17
  const agent_module_1 = require("../agent/agent.module");
18
18
  const agent_service_1 = require("../agent/agent.service");
19
+ const agent_stack_service_1 = require("../agent/agent-stack.service");
19
20
  const agent_utils_1 = require("../shared/agent.utils");
20
21
  const client_type_1 = require("../shared/client-type");
21
22
  const keyword_service_1 = require("./keyword.service");
@@ -30,7 +31,7 @@ exports.KeywordModule = KeywordModule = __decorate([
30
31
  providers: [
31
32
  {
32
33
  provide: exports.KEYWORD_SERVICE,
33
- useFactory: (rulesService, configService, skillRecommendationService, agentService) => {
34
+ useFactory: (rulesService, configService, skillRecommendationService, agentService, agentStackService) => {
34
35
  const logger = new common_1.Logger('KeywordModule');
35
36
  const loadConfig = async () => {
36
37
  const content = await rulesService.getRuleContent('keyword-modes.json');
@@ -157,6 +158,35 @@ exports.KeywordModule = KeywordModule = __decorate([
157
158
  return null;
158
159
  }
159
160
  };
161
+ const loadStacks = async () => {
162
+ try {
163
+ const summaries = await agentStackService.listStacks();
164
+ const results = [];
165
+ for (const summary of summaries) {
166
+ try {
167
+ const full = await agentStackService.resolveStack(summary.name);
168
+ results.push({
169
+ name: full.name,
170
+ category: full.category,
171
+ tags: full.tags,
172
+ specialist_agents: full.specialist_agents,
173
+ });
174
+ }
175
+ catch {
176
+ results.push({
177
+ name: summary.name,
178
+ category: summary.category,
179
+ tags: summary.tags ?? [],
180
+ });
181
+ }
182
+ }
183
+ return results;
184
+ }
185
+ catch (error) {
186
+ logger.debug(`Failed to load agent stacks: ${error instanceof Error ? error.message : 'Unknown error'}`);
187
+ return [];
188
+ }
189
+ };
160
190
  const options = {
161
191
  primaryAgentResolver,
162
192
  loadAutoConfigFn: loadAutoConfig,
@@ -165,10 +195,17 @@ exports.KeywordModule = KeywordModule = __decorate([
165
195
  loadAgentSystemPromptFn: loadAgentSystemPrompt,
166
196
  getMaxIncludedSkillsFn: getMaxIncludedSkills,
167
197
  getClientTypeFn: () => (0, client_type_1.resolveClientType)(configService.getClientName()),
198
+ loadStacksFn: loadStacks,
168
199
  };
169
200
  return new keyword_service_1.KeywordService(loadConfig, loadRule, loadAgent, options);
170
201
  },
171
- inject: [rules_service_1.RulesService, config_service_1.ConfigService, skill_recommendation_service_1.SkillRecommendationService, agent_service_1.AgentService],
202
+ inject: [
203
+ rules_service_1.RulesService,
204
+ config_service_1.ConfigService,
205
+ skill_recommendation_service_1.SkillRecommendationService,
206
+ agent_service_1.AgentService,
207
+ agent_stack_service_1.AgentStackService,
208
+ ],
172
209
  },
173
210
  ],
174
211
  exports: [exports.KEYWORD_SERVICE],
@@ -2,6 +2,7 @@ import { type Mode, type RuleContent, type ParseModeResult, type KeywordModesCon
2
2
  import { type VerbosityLevel } from '../shared/verbosity.types';
3
3
  import { PrimaryAgentResolver } from './primary-agent-resolver';
4
4
  import { type ClientType } from '../shared/client-type';
5
+ import { type StackMatchInput } from '../agent/stack-matcher';
5
6
  export interface ParseModeOptions {
6
7
  recommendedActAgent?: string;
7
8
  context?: ResolutionContext;
@@ -19,6 +20,7 @@ export interface KeywordServiceOptions {
19
20
  getMaxIncludedSkillsFn?: () => Promise<number | null>;
20
21
  getClientTypeFn?: () => ClientType;
21
22
  trackRuleUsageFn?: (ruleNames: string[]) => void;
23
+ loadStacksFn?: () => Promise<StackMatchInput[]>;
22
24
  }
23
25
  export interface SkillRecommendationInfo {
24
26
  skillName: string;
@@ -54,6 +56,7 @@ export declare class KeywordService {
54
56
  private readonly getMaxIncludedSkillsFn?;
55
57
  private readonly getClientTypeFn?;
56
58
  private readonly trackRuleUsageFn?;
59
+ private readonly loadStacksFn?;
57
60
  private static readonly CONTEXT_SPECIALIST_PATTERNS;
58
61
  constructor(loadConfigFn: () => Promise<KeywordModesConfig>, loadRuleFn: (path: string) => Promise<string>, loadAgentInfoFn?: ((agentName: string) => Promise<unknown>) | undefined, options?: KeywordServiceOptions);
59
62
  parseMode(prompt: string, options?: ParseModeOptions): Promise<ParseModeResult>;
@@ -73,6 +76,8 @@ export declare class KeywordService {
73
76
  private addAutoConfigToResult;
74
77
  private addComplexityToResult;
75
78
  private addIncludedSkillsToResult;
79
+ private enforceRequiredAgentSkills;
80
+ private extractRequiredSkillNames;
76
81
  private getMaxIncludedSkills;
77
82
  private loadSkillsInParallel;
78
83
  private addIncludedAgentToResult;