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
@@ -28,6 +28,58 @@ function parseArgs(args) {
28
28
  const restart = args.includes('--restart');
29
29
  return { command: 'tui', options: { ...options, restart } };
30
30
  }
31
+ if (command === 'install') {
32
+ const installSource = args[1];
33
+ const installForce = args.includes('--force') || args.includes('-f');
34
+ return {
35
+ command: 'install',
36
+ options: { ...options, installSource, installForce },
37
+ };
38
+ }
39
+ if (command === 'plugins') {
40
+ return { command: 'plugins', options };
41
+ }
42
+ if (command === 'search') {
43
+ const searchQuery = args.slice(1).join(' ');
44
+ return {
45
+ command: 'search',
46
+ options: { ...options, searchQuery },
47
+ };
48
+ }
49
+ if (command === 'uninstall') {
50
+ const uninstallName = args[1];
51
+ const uninstallYes = args.includes('--yes') || args.includes('-y');
52
+ return {
53
+ command: 'uninstall',
54
+ options: { ...options, uninstallName, uninstallYes },
55
+ };
56
+ }
57
+ if (command === 'update') {
58
+ const updatePluginName = args[1];
59
+ return {
60
+ command: 'update',
61
+ options: { ...options, updatePluginName },
62
+ };
63
+ }
64
+ if (command === 'create-plugin') {
65
+ const createPluginName = args[1];
66
+ let createPluginTemplate;
67
+ const templateIdx = args.indexOf('--template');
68
+ if (templateIdx !== -1) {
69
+ createPluginTemplate = args[templateIdx + 1];
70
+ }
71
+ return {
72
+ command: 'create-plugin',
73
+ options: { ...options, createPluginName, createPluginTemplate },
74
+ };
75
+ }
76
+ if (command === 'completion') {
77
+ const shell = args[1];
78
+ return {
79
+ command: 'completion',
80
+ options: { ...options, shell },
81
+ };
82
+ }
31
83
  if (command !== 'init') {
32
84
  return { command: 'help', options };
33
85
  }
@@ -54,14 +106,21 @@ CodingBuddy CLI - AI-powered project configuration generator
54
106
 
55
107
  Usage:
56
108
  codingbuddy init [path] [options] Initialize configuration
109
+ codingbuddy install <git-url> Install a plugin from git repository
110
+ codingbuddy search <query> Search plugins in the registry
111
+ codingbuddy plugins List installed plugins
112
+ codingbuddy update [name] Check and update outdated plugins
113
+ codingbuddy uninstall <name> Uninstall a plugin
57
114
  codingbuddy mcp Start MCP server (stdio mode)
58
115
  codingbuddy tui Monitor agent execution in real-time
59
116
  codingbuddy tui --restart Restart TUI client (fixes blank screen)
117
+ codingbuddy create-plugin <name> Scaffold a new plugin project
118
+ codingbuddy completion <shell> Generate shell completions (bash, zsh, fish)
60
119
  codingbuddy --help Show this help
61
120
  codingbuddy --version Show version
62
121
 
63
122
  Options:
64
- --force, -f Overwrite existing config
123
+ --force, -f Overwrite existing config / force install
65
124
  --yes, -y Accept detected defaults (quick setup)
66
125
  --api-key <key> Anthropic API key (or set ANTHROPIC_API_KEY env)
67
126
 
@@ -69,6 +128,15 @@ Examples:
69
128
  codingbuddy init Initialize in current directory
70
129
  codingbuddy init ./my-project Initialize in specific directory
71
130
  codingbuddy init --force Overwrite existing config
131
+ codingbuddy install github:user/repo Install a community plugin
132
+ codingbuddy search nextjs Search for Next.js plugins
133
+ codingbuddy plugins List all installed plugins
134
+ codingbuddy update Check all plugins for updates
135
+ codingbuddy update my-plugin Update a specific plugin
136
+ codingbuddy uninstall my-plugin Remove a plugin
137
+ codingbuddy uninstall my-plugin -y Remove without confirmation
138
+ codingbuddy create-plugin my-plugin Scaffold minimal plugin
139
+ codingbuddy create-plugin my-plugin --template full Scaffold with examples
72
140
  codingbuddy mcp Start MCP server for AI assistants
73
141
 
74
142
  Note:
@@ -116,6 +184,109 @@ async function main(args = process.argv.slice(2)) {
116
184
  await runTui({ restart: options.restart ?? false });
117
185
  break;
118
186
  }
187
+ case 'search': {
188
+ const { runSearch } = await Promise.resolve().then(() => require('./plugin/search.command'));
189
+ if (!options.searchQuery) {
190
+ process.stderr.write('Error: Missing query. Usage: codingbuddy search <query>\n');
191
+ process.exitCode = 1;
192
+ break;
193
+ }
194
+ const searchResult = await runSearch({ query: options.searchQuery });
195
+ if (!searchResult.success) {
196
+ process.exitCode = 1;
197
+ }
198
+ break;
199
+ }
200
+ case 'install': {
201
+ const { runInstall } = await Promise.resolve().then(() => require('./plugin/install.command'));
202
+ if (!options.installSource) {
203
+ process.stderr.write('Error: Missing git URL. Usage: codingbuddy install <git-url>\n');
204
+ process.exitCode = 1;
205
+ break;
206
+ }
207
+ const installResult = await runInstall({
208
+ source: options.installSource,
209
+ projectRoot: options.projectRoot ?? process.cwd(),
210
+ force: options.installForce ?? false,
211
+ });
212
+ if (!installResult.success) {
213
+ process.exitCode = 1;
214
+ }
215
+ break;
216
+ }
217
+ case 'plugins': {
218
+ const { runPlugins } = await Promise.resolve().then(() => require('./plugin/plugins.command'));
219
+ const pluginsResult = runPlugins({
220
+ projectRoot: options.projectRoot ?? process.cwd(),
221
+ });
222
+ if (!pluginsResult.success) {
223
+ process.exitCode = 1;
224
+ }
225
+ break;
226
+ }
227
+ case 'uninstall': {
228
+ const { runUninstall } = await Promise.resolve().then(() => require('./plugin/uninstall.command'));
229
+ if (!options.uninstallName) {
230
+ process.stderr.write('Error: Missing plugin name. Usage: codingbuddy uninstall <name>\n');
231
+ process.exitCode = 1;
232
+ break;
233
+ }
234
+ const uninstallResult = runUninstall({
235
+ pluginName: options.uninstallName,
236
+ projectRoot: options.projectRoot ?? process.cwd(),
237
+ yes: options.uninstallYes ?? false,
238
+ });
239
+ if (!uninstallResult.success && !uninstallResult.confirmationRequired) {
240
+ process.exitCode = 1;
241
+ }
242
+ if (uninstallResult.confirmationRequired) {
243
+ process.stderr.write('Confirmation required. Use --yes or -y to skip.\n');
244
+ process.exitCode = 1;
245
+ }
246
+ break;
247
+ }
248
+ case 'update': {
249
+ const { runUpdate } = await Promise.resolve().then(() => require('./plugin/update.command'));
250
+ const updateResult = await runUpdate({
251
+ projectRoot: options.projectRoot ?? process.cwd(),
252
+ pluginName: options.updatePluginName,
253
+ });
254
+ if (!updateResult.success) {
255
+ process.exitCode = 1;
256
+ }
257
+ break;
258
+ }
259
+ case 'create-plugin': {
260
+ const { runCreatePlugin } = await Promise.resolve().then(() => require('./plugin/create-plugin.command'));
261
+ if (!options.createPluginName) {
262
+ process.stderr.write('Error: Missing plugin name. Usage: codingbuddy create-plugin <name> [--template minimal|full]\n');
263
+ process.exitCode = 1;
264
+ break;
265
+ }
266
+ const template = options.createPluginTemplate === 'full' ? 'full' : 'minimal';
267
+ const createResult = await runCreatePlugin({
268
+ name: options.createPluginName,
269
+ outputDir: process.cwd(),
270
+ template,
271
+ });
272
+ if (!createResult.success) {
273
+ process.exitCode = 1;
274
+ }
275
+ break;
276
+ }
277
+ case 'completion': {
278
+ const { runCompletion } = await Promise.resolve().then(() => require('./completion'));
279
+ if (!options.shell) {
280
+ process.stderr.write('Error: Missing shell type. Usage: codingbuddy completion <bash|zsh|fish>\n');
281
+ process.exitCode = 1;
282
+ break;
283
+ }
284
+ const completionResult = runCompletion({ shell: options.shell });
285
+ if (!completionResult.success) {
286
+ process.exitCode = 1;
287
+ }
288
+ break;
289
+ }
119
290
  case 'init': {
120
291
  const result = await (0, init_1.runInit)(options);
121
292
  if (!result.success) {
@@ -15,4 +15,22 @@ export interface InitResult {
15
15
  export interface TuiOptions {
16
16
  restart: boolean;
17
17
  }
18
+ export interface InstallOptions {
19
+ installSource?: string;
20
+ installForce?: boolean;
21
+ }
22
+ export interface UninstallOptions {
23
+ uninstallName?: string;
24
+ uninstallYes?: boolean;
25
+ }
26
+ export interface SearchOptions {
27
+ searchQuery?: string;
28
+ }
29
+ export interface UpdateOptions {
30
+ updatePluginName?: string;
31
+ }
32
+ export interface CreatePluginOptions {
33
+ createPluginName?: string;
34
+ createPluginTemplate?: string;
35
+ }
18
36
  export type LogLevel = 'info' | 'success' | 'warn' | 'error';
@@ -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
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CODINGBUDDY_GITIGNORE_ENTRIES = exports.CLAUDE_SETTINGS_ENV_ENTRIES = void 0;
4
4
  exports.CLAUDE_SETTINGS_ENV_ENTRIES = {
5
5
  ENABLE_TOOL_SEARCH: 'false',
6
- CODINGBUDDY_AUTO_TUI: '1',
7
6
  };
8
7
  exports.CODINGBUDDY_GITIGNORE_ENTRIES = [
9
8
  {
@@ -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>;