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.
- package/README.md +9 -0
- package/dist/src/agent/agent-prompt.builder.js +135 -2
- package/dist/src/agent/agent-stack.loader.d.ts +3 -0
- package/dist/src/agent/agent-stack.loader.js +38 -0
- package/dist/src/agent/agent-stack.schema.d.ts +14 -0
- package/dist/src/agent/agent-stack.schema.js +19 -0
- package/dist/src/agent/agent-stack.service.d.ts +15 -0
- package/dist/src/agent/agent-stack.service.js +112 -0
- package/dist/src/agent/agent.module.js +5 -2
- package/dist/src/agent/agent.service.d.ts +8 -1
- package/dist/src/agent/agent.service.js +126 -40
- package/dist/src/agent/agent.types.d.ts +26 -46
- package/dist/src/agent/council-preset.service.d.ts +6 -0
- package/dist/src/agent/council-preset.service.js +46 -0
- package/dist/src/agent/council-preset.types.d.ts +6 -0
- package/dist/src/agent/council-preset.types.js +3 -0
- package/dist/src/agent/execution-plan.d.ts +8 -0
- package/dist/src/agent/execution-plan.js +73 -0
- package/dist/src/agent/execution-plan.types.d.ts +74 -0
- package/dist/src/agent/execution-plan.types.js +3 -0
- package/dist/src/agent/index.d.ts +8 -0
- package/dist/src/agent/index.js +8 -0
- package/dist/src/agent/teams-capability.service.d.ts +11 -0
- package/dist/src/agent/teams-capability.service.js +74 -0
- package/dist/src/agent/teams-capability.types.d.ts +6 -0
- package/dist/src/agent/teams-capability.types.js +3 -0
- package/dist/src/app.module.js +2 -0
- package/dist/src/cli/cli.d.ts +4 -3
- package/dist/src/cli/cli.js +172 -1
- package/dist/src/cli/cli.types.d.ts +18 -0
- package/dist/src/cli/completion/completion.d.ts +16 -0
- package/dist/src/cli/completion/completion.js +276 -0
- package/dist/src/cli/completion/index.d.ts +2 -0
- package/dist/src/cli/completion/index.js +7 -0
- package/dist/src/cli/init/init.constants.js +0 -1
- package/dist/src/cli/plugin/create-plugin.command.d.ts +21 -0
- package/dist/src/cli/plugin/create-plugin.command.js +151 -0
- package/dist/src/cli/plugin/install.command.d.ts +10 -0
- package/dist/src/cli/plugin/install.command.js +31 -0
- package/dist/src/cli/plugin/plugins.command.d.ts +9 -0
- package/dist/src/cli/plugin/plugins.command.js +51 -0
- package/dist/src/cli/plugin/search.command.d.ts +9 -0
- package/dist/src/cli/plugin/search.command.js +53 -0
- package/dist/src/cli/plugin/uninstall.command.d.ts +12 -0
- package/dist/src/cli/plugin/uninstall.command.js +79 -0
- package/dist/src/cli/plugin/update.command.d.ts +11 -0
- package/dist/src/cli/plugin/update.command.js +103 -0
- package/dist/src/cli/run-tui.d.ts +1 -0
- package/dist/src/cli/run-tui.js +7 -1
- package/dist/src/collaboration/council-summary.service.d.ts +2 -0
- package/dist/src/collaboration/council-summary.service.js +114 -0
- package/dist/src/collaboration/council-summary.types.d.ts +24 -0
- package/dist/src/collaboration/council-summary.types.js +3 -0
- package/dist/src/collaboration/index.d.ts +2 -0
- package/dist/src/collaboration/index.js +3 -1
- package/dist/src/config/config.schema.d.ts +3 -0
- package/dist/src/config/config.schema.js +5 -0
- package/dist/src/context/briefing-loader.service.d.ts +27 -0
- package/dist/src/context/briefing-loader.service.js +124 -0
- package/dist/src/context/briefing.service.d.ts +27 -0
- package/dist/src/context/briefing.service.js +181 -0
- package/dist/src/context/briefing.types.d.ts +13 -0
- package/dist/src/context/briefing.types.js +6 -0
- package/dist/src/context/context.module.js +16 -2
- package/dist/src/context/index.d.ts +2 -0
- package/dist/src/context/index.js +2 -0
- package/dist/src/keyword/keyword.types.d.ts +8 -0
- package/dist/src/main.js +0 -17
- package/dist/src/mcp/handlers/agent.handler.d.ts +6 -1
- package/dist/src/mcp/handlers/agent.handler.js +81 -8
- package/dist/src/mcp/handlers/briefing.handler.d.ts +12 -0
- package/dist/src/mcp/handlers/briefing.handler.js +71 -0
- package/dist/src/mcp/handlers/checklist-context.handler.d.ts +3 -1
- package/dist/src/mcp/handlers/checklist-context.handler.js +17 -2
- package/dist/src/mcp/handlers/discussion.handler.d.ts +3 -0
- package/dist/src/mcp/handlers/discussion.handler.js +22 -1
- package/dist/src/mcp/handlers/index.d.ts +4 -0
- package/dist/src/mcp/handlers/index.js +9 -1
- package/dist/src/mcp/handlers/mode.handler.d.ts +9 -1
- package/dist/src/mcp/handlers/mode.handler.js +79 -2
- package/dist/src/mcp/handlers/quality-report.handler.d.ts +14 -0
- package/dist/src/mcp/handlers/quality-report.handler.js +93 -0
- package/dist/src/mcp/handlers/resume.handler.d.ts +12 -0
- package/dist/src/mcp/handlers/resume.handler.js +63 -0
- package/dist/src/mcp/handlers/rule-impact.handler.d.ts +23 -0
- package/dist/src/mcp/handlers/rule-impact.handler.js +241 -0
- package/dist/src/mcp/handlers/skill.handler.js +2 -2
- package/dist/src/mcp/mcp.module.js +6 -0
- package/dist/src/plugin/plugin-installer.service.d.ts +41 -0
- package/dist/src/plugin/plugin-installer.service.js +183 -0
- package/dist/src/plugin/plugin-manifest.schema.d.ts +21 -0
- package/dist/src/plugin/plugin-manifest.schema.js +45 -0
- package/dist/src/plugin/plugin.module.d.ts +2 -0
- package/dist/src/plugin/plugin.module.js +17 -0
- package/dist/src/plugin/plugin.types.d.ts +7 -0
- package/dist/src/plugin/plugin.types.js +3 -0
- package/dist/src/plugin/registry-client.d.ts +24 -0
- package/dist/src/plugin/registry-client.js +45 -0
- package/dist/src/rules/rule-event-collector.d.ts +7 -0
- package/dist/src/rules/rule-event-collector.js +38 -0
- package/dist/src/rules/rule-event.types.d.ts +9 -0
- package/dist/src/rules/rule-event.types.js +10 -0
- package/dist/src/rules/rule-stats-writer.d.ts +23 -0
- package/dist/src/rules/rule-stats-writer.js +138 -0
- package/dist/src/rules/rules.module.js +4 -2
- package/dist/src/rules/rules.service.d.ts +8 -1
- package/dist/src/rules/rules.service.js +3 -0
- package/dist/src/rules/skill.schema.d.ts +10 -0
- package/dist/src/rules/skill.schema.js +42 -0
- package/dist/src/shared/rules-core.d.ts +7 -1
- package/dist/src/shared/rules-core.js +6 -0
- package/dist/src/shared/version.d.ts +1 -1
- package/dist/src/shared/version.js +1 -1
- package/dist/src/ship/file-specialist-mapper.d.ts +9 -0
- package/dist/src/ship/file-specialist-mapper.js +56 -0
- package/dist/src/ship/quality-report.service.d.ts +6 -0
- package/dist/src/ship/quality-report.service.js +56 -0
- package/dist/src/ship/quality-report.types.d.ts +20 -0
- package/dist/src/ship/quality-report.types.js +3 -0
- package/dist/src/ship/ship.module.d.ts +2 -0
- package/dist/src/ship/ship.module.js +21 -0
- package/dist/src/skill/i18n/keywords.js +921 -0
- package/dist/src/skill/skill-recommendation.service.d.ts +10 -2
- package/dist/src/skill/skill-recommendation.service.js +120 -16
- package/dist/src/skill/skill-recommendation.types.d.ts +5 -0
- package/dist/src/skill/skill.module.js +2 -0
- package/dist/src/tui/events/hud-file-bridge.d.ts +4 -0
- package/dist/src/tui/events/hud-file-bridge.js +36 -0
- package/dist/src/tui/testing/tui-test-utils.d.ts +2 -0
- package/dist/src/tui/testing/tui-test-utils.js +25 -0
- package/dist/src/tui-bundle.mjs +239 -36
- package/package.json +7 -2
- package/dist/api/mcp.js.map +0 -1
- package/dist/src/agent/agent-prompt.builder.js.map +0 -1
- package/dist/src/agent/agent-summary.utils.js.map +0 -1
- package/dist/src/agent/agent.module.js.map +0 -1
- package/dist/src/agent/agent.service.js.map +0 -1
- package/dist/src/agent/agent.types.js.map +0 -1
- package/dist/src/agent/index.js.map +0 -1
- package/dist/src/analyzer/analyzer.module.js.map +0 -1
- package/dist/src/analyzer/analyzer.service.js.map +0 -1
- package/dist/src/analyzer/analyzer.types.js.map +0 -1
- package/dist/src/analyzer/code.sampler.js.map +0 -1
- package/dist/src/analyzer/config.analyzer.js.map +0 -1
- package/dist/src/analyzer/conventions.analyzer.js.map +0 -1
- package/dist/src/analyzer/conventions.schemas.js.map +0 -1
- package/dist/src/analyzer/conventions.types.js.map +0 -1
- package/dist/src/analyzer/directory.analyzer.js.map +0 -1
- package/dist/src/analyzer/index.js.map +0 -1
- package/dist/src/analyzer/package.analyzer.js.map +0 -1
- package/dist/src/app.module.js.map +0 -1
- package/dist/src/checklist/checklist.module.js.map +0 -1
- package/dist/src/checklist/checklist.schema.js.map +0 -1
- package/dist/src/checklist/checklist.service.js.map +0 -1
- package/dist/src/checklist/checklist.types.js.map +0 -1
- package/dist/src/checklist/index.js.map +0 -1
- package/dist/src/cli/cli.js.map +0 -1
- package/dist/src/cli/cli.types.js.map +0 -1
- package/dist/src/cli/index.js.map +0 -1
- package/dist/src/cli/init/claude-settings.utils.js.map +0 -1
- package/dist/src/cli/init/config.generator.js.map +0 -1
- package/dist/src/cli/init/config.writer.js.map +0 -1
- package/dist/src/cli/init/gitignore.utils.js.map +0 -1
- package/dist/src/cli/init/index.js.map +0 -1
- package/dist/src/cli/init/init.command.js.map +0 -1
- package/dist/src/cli/init/init.constants.js.map +0 -1
- package/dist/src/cli/init/init.wizard.js.map +0 -1
- package/dist/src/cli/init/prompt.builder.js.map +0 -1
- package/dist/src/cli/init/prompts/agent-prompt.js.map +0 -1
- package/dist/src/cli/init/prompts/architecture-prompt.js.map +0 -1
- package/dist/src/cli/init/prompts/basic-prompt.js.map +0 -1
- package/dist/src/cli/init/prompts/conventions-prompt.js.map +0 -1
- package/dist/src/cli/init/prompts/index.js.map +0 -1
- package/dist/src/cli/init/prompts/language-prompt.js.map +0 -1
- package/dist/src/cli/init/prompts/model-prompt.js.map +0 -1
- package/dist/src/cli/init/prompts/tech-stack-prompt.js.map +0 -1
- package/dist/src/cli/init/prompts/test-strategy-prompt.js.map +0 -1
- package/dist/src/cli/init/summary/index.js.map +0 -1
- package/dist/src/cli/init/summary/summary.prompt.js.map +0 -1
- package/dist/src/cli/init/summary/summary.renderer.js.map +0 -1
- package/dist/src/cli/init/templates/config-renderer.js.map +0 -1
- package/dist/src/cli/init/templates/frameworks/default.template.js.map +0 -1
- package/dist/src/cli/init/templates/frameworks/express.template.js.map +0 -1
- package/dist/src/cli/init/templates/frameworks/index.js.map +0 -1
- package/dist/src/cli/init/templates/frameworks/nestjs.template.js.map +0 -1
- package/dist/src/cli/init/templates/frameworks/nextjs.template.js.map +0 -1
- package/dist/src/cli/init/templates/frameworks/node.template.js.map +0 -1
- package/dist/src/cli/init/templates/frameworks/react.template.js.map +0 -1
- package/dist/src/cli/init/templates/index.js.map +0 -1
- package/dist/src/cli/init/templates/template.renderer.js.map +0 -1
- package/dist/src/cli/init/templates/template.selector.js.map +0 -1
- package/dist/src/cli/init/templates/template.types.js.map +0 -1
- package/dist/src/cli/restart-tui.js.map +0 -1
- package/dist/src/cli/run-tui.js.map +0 -1
- package/dist/src/cli/utils/console.js.map +0 -1
- package/dist/src/cli/utils/index.js.map +0 -1
- package/dist/src/collaboration/discussion-engine.js.map +0 -1
- package/dist/src/collaboration/index.js.map +0 -1
- package/dist/src/collaboration/opinion-adapter.js.map +0 -1
- package/dist/src/collaboration/terminal-formatter.js.map +0 -1
- package/dist/src/collaboration/types.js.map +0 -1
- package/dist/src/config/config-diff.service.js.map +0 -1
- package/dist/src/config/config.loader.js.map +0 -1
- package/dist/src/config/config.module.js.map +0 -1
- package/dist/src/config/config.schema.js.map +0 -1
- package/dist/src/config/config.service.js.map +0 -1
- package/dist/src/config/context.loader.js.map +0 -1
- package/dist/src/config/ignore.parser.js.map +0 -1
- package/dist/src/config/index.js.map +0 -1
- package/dist/src/context/context-archive.service.js.map +0 -1
- package/dist/src/context/context-archive.types.js.map +0 -1
- package/dist/src/context/context-document.service.js.map +0 -1
- package/dist/src/context/context-document.types.js.map +0 -1
- package/dist/src/context/context-parser.utils.js.map +0 -1
- package/dist/src/context/context-serializer.utils.js.map +0 -1
- package/dist/src/context/context.module.js.map +0 -1
- package/dist/src/context/context.service.js.map +0 -1
- package/dist/src/context/context.types.js.map +0 -1
- package/dist/src/context/index.js.map +0 -1
- package/dist/src/context/intent-patterns.js.map +0 -1
- package/dist/src/custom/custom.module.js.map +0 -1
- package/dist/src/custom/custom.service.js.map +0 -1
- package/dist/src/custom/custom.types.js.map +0 -1
- package/dist/src/custom/index.js.map +0 -1
- package/dist/src/diagnostic/diagnostic-log.service.js.map +0 -1
- package/dist/src/diagnostic/diagnostic.module.js.map +0 -1
- package/dist/src/diagnostic/diagnostic.types.js.map +0 -1
- package/dist/src/diagnostic/index.js.map +0 -1
- package/dist/src/impact/impact-event.service.js.map +0 -1
- package/dist/src/impact/impact-report.service.js.map +0 -1
- package/dist/src/impact/impact.module.js.map +0 -1
- package/dist/src/impact/impact.types.js.map +0 -1
- package/dist/src/impact/index.js.map +0 -1
- package/dist/src/keyword/activation-message.builder.js.map +0 -1
- package/dist/src/keyword/auto-executor.js.map +0 -1
- package/dist/src/keyword/auto-executor.types.js.map +0 -1
- package/dist/src/keyword/auto-formatter.js.map +0 -1
- package/dist/src/keyword/auto-prompt-builder.js.map +0 -1
- package/dist/src/keyword/complexity-classifier.js.map +0 -1
- package/dist/src/keyword/complexity-indicators.js.map +0 -1
- package/dist/src/keyword/diff-analyzer.js.map +0 -1
- package/dist/src/keyword/explicit-pattern-matcher.js.map +0 -1
- package/dist/src/keyword/index.js.map +0 -1
- package/dist/src/keyword/keyword.module.js.map +0 -1
- package/dist/src/keyword/keyword.service.js.map +0 -1
- package/dist/src/keyword/keyword.types.js.map +0 -1
- package/dist/src/keyword/patterns/agent.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/ai-ml.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/backend.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/context.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/data-science.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/data.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/devops.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/explicit.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/frontend.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/index.js.map +0 -1
- package/dist/src/keyword/patterns/intent-pattern-checks.js.map +0 -1
- package/dist/src/keyword/patterns/intent-patterns.types.js.map +0 -1
- package/dist/src/keyword/patterns/meta-discussion.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/mobile.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/platform.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/security.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/systems.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/test.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/tooling.patterns.js.map +0 -1
- package/dist/src/keyword/primary-agent-resolver.js.map +0 -1
- package/dist/src/keyword/rule-filter.js.map +0 -1
- package/dist/src/keyword/srp-template.js.map +0 -1
- package/dist/src/keyword/strategies/__tests__/strategy-test.utils.js.map +0 -1
- package/dist/src/keyword/strategies/act-agent.strategy.js.map +0 -1
- package/dist/src/keyword/strategies/eval-agent.strategy.js.map +0 -1
- package/dist/src/keyword/strategies/index.js.map +0 -1
- package/dist/src/keyword/strategies/plan-agent.strategy.js.map +0 -1
- package/dist/src/keyword/strategies/resolution-strategy.interface.js.map +0 -1
- package/dist/src/keyword/taskmaestro-detector.js.map +0 -1
- package/dist/src/keyword/visual-data.builder.js.map +0 -1
- package/dist/src/main.js.map +0 -1
- package/dist/src/mcp/handlers/abstract-handler.js.map +0 -1
- package/dist/src/mcp/handlers/agent.handler.js.map +0 -1
- package/dist/src/mcp/handlers/base.handler.js.map +0 -1
- package/dist/src/mcp/handlers/checklist-context.handler.js.map +0 -1
- package/dist/src/mcp/handlers/config.handler.js.map +0 -1
- package/dist/src/mcp/handlers/context-archive.handler.js.map +0 -1
- package/dist/src/mcp/handlers/context-document.handler.js.map +0 -1
- package/dist/src/mcp/handlers/conventions.handler.js.map +0 -1
- package/dist/src/mcp/handlers/discussion.handler.js.map +0 -1
- package/dist/src/mcp/handlers/discussion.types.js.map +0 -1
- package/dist/src/mcp/handlers/impact.handler.js.map +0 -1
- package/dist/src/mcp/handlers/index.js.map +0 -1
- package/dist/src/mcp/handlers/mode.handler.js.map +0 -1
- package/dist/src/mcp/handlers/pipeline.handler.js.map +0 -1
- package/dist/src/mcp/handlers/plugin-validation.handler.js.map +0 -1
- package/dist/src/mcp/handlers/release-check.handler.js.map +0 -1
- package/dist/src/mcp/handlers/rule-insights.handler.js.map +0 -1
- package/dist/src/mcp/handlers/rules.handler.js.map +0 -1
- package/dist/src/mcp/handlers/skill.handler.js.map +0 -1
- package/dist/src/mcp/handlers/tui.handler.js.map +0 -1
- package/dist/src/mcp/mcp-serverless.js.map +0 -1
- package/dist/src/mcp/mcp.controller.js.map +0 -1
- package/dist/src/mcp/mcp.module.js.map +0 -1
- package/dist/src/mcp/mcp.service.js.map +0 -1
- package/dist/src/mcp/response.utils.js.map +0 -1
- package/dist/src/mcp/sse-auth.guard.js.map +0 -1
- package/dist/src/model/index.js.map +0 -1
- package/dist/src/model/model-resolver.service.js.map +0 -1
- package/dist/src/model/model.constants.js.map +0 -1
- package/dist/src/model/model.resolver.js.map +0 -1
- package/dist/src/model/model.types.js.map +0 -1
- package/dist/src/parallel-validation/extract-file-paths.js.map +0 -1
- package/dist/src/parallel-validation/index.js.map +0 -1
- package/dist/src/parallel-validation/overlap-matrix.js.map +0 -1
- package/dist/src/parallel-validation/parallel-validation.handler.js.map +0 -1
- package/dist/src/parallel-validation/parallel-validation.types.js.map +0 -1
- package/dist/src/parallel-validation/wave-splitter.js.map +0 -1
- package/dist/src/pipeline/index.js.map +0 -1
- package/dist/src/pipeline/pipeline.executors.js.map +0 -1
- package/dist/src/pipeline/pipeline.module.js.map +0 -1
- package/dist/src/pipeline/pipeline.service.js.map +0 -1
- package/dist/src/pipeline/pipeline.types.js.map +0 -1
- package/dist/src/rules/agent.schema.js.map +0 -1
- package/dist/src/rules/rule-insights.service.js.map +0 -1
- package/dist/src/rules/rule-tracker.js.map +0 -1
- package/dist/src/rules/rules-content.utils.js.map +0 -1
- package/dist/src/rules/rules.module.js.map +0 -1
- package/dist/src/rules/rules.service.js.map +0 -1
- package/dist/src/rules/rules.types.js.map +0 -1
- package/dist/src/rules/skill.schema.js.map +0 -1
- package/dist/src/shared/agent.utils.js.map +0 -1
- package/dist/src/shared/async.utils.js.map +0 -1
- package/dist/src/shared/client-type.js.map +0 -1
- package/dist/src/shared/error.utils.js.map +0 -1
- package/dist/src/shared/esm-import.js.map +0 -1
- package/dist/src/shared/event-bridge-reader.js.map +0 -1
- package/dist/src/shared/file.utils.js.map +0 -1
- package/dist/src/shared/filesystem.interface.js.map +0 -1
- package/dist/src/shared/format.utils.js.map +0 -1
- package/dist/src/shared/keyword-core.js.map +0 -1
- package/dist/src/shared/language.service.js.map +0 -1
- package/dist/src/shared/language.types.js.map +0 -1
- package/dist/src/shared/lru-cache.js.map +0 -1
- package/dist/src/shared/node-filesystem.service.js.map +0 -1
- package/dist/src/shared/path.utils.js.map +0 -1
- package/dist/src/shared/pattern-matcher.js.map +0 -1
- package/dist/src/shared/rules-core.js.map +0 -1
- package/dist/src/shared/security.utils.js.map +0 -1
- package/dist/src/shared/slug.utils.js.map +0 -1
- package/dist/src/shared/tui-bundle-path.js.map +0 -1
- package/dist/src/shared/validation.constants.js.map +0 -1
- package/dist/src/shared/verbosity.types.js.map +0 -1
- package/dist/src/shared/version.js.map +0 -1
- package/dist/src/shared/version.utils.js.map +0 -1
- package/dist/src/skill/i18n/index.js.map +0 -1
- package/dist/src/skill/i18n/keywords.js.map +0 -1
- package/dist/src/skill/i18n/keywords.types.js.map +0 -1
- package/dist/src/skill/index.js.map +0 -1
- package/dist/src/skill/skill-content.utils.js.map +0 -1
- package/dist/src/skill/skill-recommendation.service.js.map +0 -1
- package/dist/src/skill/skill-recommendation.types.js.map +0 -1
- package/dist/src/skill/skill-triggers.js.map +0 -1
- package/dist/src/skill/skill.module.js.map +0 -1
- package/dist/src/state/index.js.map +0 -1
- package/dist/src/state/state.module.js.map +0 -1
- package/dist/src/state/state.service.js.map +0 -1
- package/dist/src/state/state.types.js.map +0 -1
- package/dist/src/tui/__perf__/memory-stability.spec.d.ts +0 -1
- package/dist/src/tui/__perf__/memory-stability.spec.js +0 -105
- package/dist/src/tui/__perf__/memory-stability.spec.js.map +0 -1
- package/dist/src/tui/__perf__/rendering-performance.spec.d.ts +0 -1
- package/dist/src/tui/__perf__/rendering-performance.spec.js +0 -166
- package/dist/src/tui/__perf__/rendering-performance.spec.js.map +0 -1
- package/dist/src/tui/cli-flags.js.map +0 -1
- package/dist/src/tui/components/ActModeScreen.js.map +0 -1
- package/dist/src/tui/components/ActivityVisualizer.js.map +0 -1
- package/dist/src/tui/components/ActivityVisualizer.spec.d.ts +0 -1
- package/dist/src/tui/components/ActivityVisualizer.spec.js +0 -91
- package/dist/src/tui/components/ActivityVisualizer.spec.js.map +0 -1
- package/dist/src/tui/components/AgentDiscussionPanel.js.map +0 -1
- package/dist/src/tui/components/AgentDiscussionPanel.spec.d.ts +0 -1
- package/dist/src/tui/components/AgentDiscussionPanel.spec.js +0 -229
- package/dist/src/tui/components/AgentDiscussionPanel.spec.js.map +0 -1
- package/dist/src/tui/components/ChecklistPanel.js.map +0 -1
- package/dist/src/tui/components/ChecklistPanel.spec.d.ts +0 -1
- package/dist/src/tui/components/ChecklistPanel.spec.js +0 -45
- package/dist/src/tui/components/ChecklistPanel.spec.js.map +0 -1
- package/dist/src/tui/components/ContextSection.js.map +0 -1
- package/dist/src/tui/components/EvalModeScreen.js.map +0 -1
- package/dist/src/tui/components/FlowMap.js.map +0 -1
- package/dist/src/tui/components/FlowMap.spec.d.ts +0 -1
- package/dist/src/tui/components/FlowMap.spec.js +0 -147
- package/dist/src/tui/components/FlowMap.spec.js.map +0 -1
- package/dist/src/tui/components/FocusedAgentPanel.js.map +0 -1
- package/dist/src/tui/components/FocusedAgentPanel.spec.d.ts +0 -1
- package/dist/src/tui/components/FocusedAgentPanel.spec.js +0 -183
- package/dist/src/tui/components/FocusedAgentPanel.spec.js.map +0 -1
- package/dist/src/tui/components/HeaderBar.js.map +0 -1
- package/dist/src/tui/components/HeaderBar.spec.d.ts +0 -1
- package/dist/src/tui/components/HeaderBar.spec.js +0 -96
- package/dist/src/tui/components/HeaderBar.spec.js.map +0 -1
- package/dist/src/tui/components/ModeScreenRouter.js.map +0 -1
- package/dist/src/tui/components/PlanModeScreen.js.map +0 -1
- package/dist/src/tui/components/SessionDashboard.js.map +0 -1
- package/dist/src/tui/components/SessionTabBar.js.map +0 -1
- package/dist/src/tui/components/SessionTabBar.spec.d.ts +0 -1
- package/dist/src/tui/components/SessionTabBar.spec.js +0 -59
- package/dist/src/tui/components/SessionTabBar.spec.js.map +0 -1
- package/dist/src/tui/components/StageHealthBar.js.map +0 -1
- package/dist/src/tui/components/StageHealthBar.spec.d.ts +0 -1
- package/dist/src/tui/components/StageHealthBar.spec.js +0 -99
- package/dist/src/tui/components/StageHealthBar.spec.js.map +0 -1
- package/dist/src/tui/components/act-screen.pure.js.map +0 -1
- package/dist/src/tui/components/activity-visualizer.pure.js.map +0 -1
- package/dist/src/tui/components/agent-discussion-panel.pure.js.map +0 -1
- package/dist/src/tui/components/checklist-panel.pure.js.map +0 -1
- package/dist/src/tui/components/context-section.pure.js.map +0 -1
- package/dist/src/tui/components/eval-screen.pure.js.map +0 -1
- package/dist/src/tui/components/flow-map.pure.js.map +0 -1
- package/dist/src/tui/components/focused-agent.pure.js.map +0 -1
- package/dist/src/tui/components/grid-layout.pure.js.map +0 -1
- package/dist/src/tui/components/index.js.map +0 -1
- package/dist/src/tui/components/live.pure.js.map +0 -1
- package/dist/src/tui/components/plan-screen.pure.js.map +0 -1
- package/dist/src/tui/components/session-dashboard.pure.js.map +0 -1
- package/dist/src/tui/components/session-tab-bar.pure.js.map +0 -1
- package/dist/src/tui/components/stage-health.pure.js.map +0 -1
- package/dist/src/tui/dashboard-app.js.map +0 -1
- package/dist/src/tui/dashboard-app.spec.d.ts +0 -1
- package/dist/src/tui/dashboard-app.spec.js +0 -158
- package/dist/src/tui/dashboard-app.spec.js.map +0 -1
- package/dist/src/tui/dashboard-types.js.map +0 -1
- package/dist/src/tui/ensure-tui-ready.js.map +0 -1
- package/dist/src/tui/eventbus-ui.integration.spec.d.ts +0 -1
- package/dist/src/tui/eventbus-ui.integration.spec.js +0 -577
- package/dist/src/tui/eventbus-ui.integration.spec.js.map +0 -1
- package/dist/src/tui/events/agent-metadata.service.js.map +0 -1
- package/dist/src/tui/events/agent-metadata.types.js.map +0 -1
- package/dist/src/tui/events/event-bus.js.map +0 -1
- package/dist/src/tui/events/events.module.js.map +0 -1
- package/dist/src/tui/events/hud-file-bridge.js.map +0 -1
- package/dist/src/tui/events/index.js.map +0 -1
- package/dist/src/tui/events/parse-agent.js.map +0 -1
- package/dist/src/tui/events/parse-tool-response.js.map +0 -1
- package/dist/src/tui/events/response-event-extractor.js.map +0 -1
- package/dist/src/tui/events/tui-interceptor.js.map +0 -1
- package/dist/src/tui/events/types.js.map +0 -1
- package/dist/src/tui/hooks/index.js.map +0 -1
- package/dist/src/tui/hooks/use-dashboard-state.js.map +0 -1
- package/dist/src/tui/hooks/use-focus-agent.js.map +0 -1
- package/dist/src/tui/hooks/use-multi-session-state.js.map +0 -1
- package/dist/src/tui/hooks/use-terminal-size.js.map +0 -1
- package/dist/src/tui/hooks/use-tick.js.map +0 -1
- package/dist/src/tui/hooks/use-tick.spec.d.ts +0 -1
- package/dist/src/tui/hooks/use-tick.spec.js +0 -70
- package/dist/src/tui/hooks/use-tick.spec.js.map +0 -1
- package/dist/src/tui/index.js.map +0 -1
- package/dist/src/tui/ipc/index.js.map +0 -1
- package/dist/src/tui/ipc/instance-registry.js.map +0 -1
- package/dist/src/tui/ipc/ipc-bridge.js.map +0 -1
- package/dist/src/tui/ipc/ipc-client.js.map +0 -1
- package/dist/src/tui/ipc/ipc-debug.js.map +0 -1
- package/dist/src/tui/ipc/ipc-server.js.map +0 -1
- package/dist/src/tui/ipc/ipc-state-cache.js.map +0 -1
- package/dist/src/tui/ipc/ipc.types.js.map +0 -1
- package/dist/src/tui/ipc/multi-session-manager.js.map +0 -1
- package/dist/src/tui/ipc/shutdown-manager.js.map +0 -1
- package/dist/src/tui/ipc/test-utils.js.map +0 -1
- package/dist/src/tui/ipc/tui-auto-launcher.js.map +0 -1
- package/dist/src/tui/multi-session-app.js.map +0 -1
- package/dist/src/tui/multi-session-app.spec.d.ts +0 -1
- package/dist/src/tui/multi-session-app.spec.js +0 -95
- package/dist/src/tui/multi-session-app.spec.js.map +0 -1
- package/dist/src/tui/transport-tui.integration.spec.d.ts +0 -1
- package/dist/src/tui/transport-tui.integration.spec.js +0 -189
- package/dist/src/tui/transport-tui.integration.spec.js.map +0 -1
- package/dist/src/tui/tui-config.js.map +0 -1
- package/dist/src/tui/types.js.map +0 -1
- package/dist/src/tui/utils/color-buffer.js.map +0 -1
- package/dist/src/tui/utils/colors.js.map +0 -1
- package/dist/src/tui/utils/display-width.js.map +0 -1
- package/dist/src/tui/utils/edge-router.js.map +0 -1
- package/dist/src/tui/utils/icons.js.map +0 -1
- package/dist/src/tui/utils/index.js.map +0 -1
- package/dist/src/tui/utils/theme.js.map +0 -1
- package/dist/tsconfig.build.tsbuildinfo +0 -1
package/dist/src/cli/cli.js
CHANGED
|
@@ -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,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>;
|