codingbuddy 5.2.0 → 5.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +9 -0
- package/dist/src/agent/index.js +9 -0
- package/dist/src/agent/stack-matcher.d.ts +13 -0
- package/dist/src/agent/stack-matcher.js +81 -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/cli/cli.d.ts +4 -3
- package/dist/src/cli/cli.js +54 -0
- package/dist/src/cli/cli.types.d.ts +4 -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/plugin/create-plugin.command.d.ts +21 -0
- package/dist/src/cli/plugin/create-plugin.command.js +151 -0
- package/dist/src/cli/run-tui.d.ts +1 -0
- package/dist/src/cli/run-tui.js +7 -1
- package/dist/src/config/config.schema.d.ts +3 -0
- package/dist/src/config/config.schema.js +5 -0
- package/dist/src/keyword/keyword.module.js +39 -2
- package/dist/src/keyword/keyword.service.d.ts +5 -0
- package/dist/src/keyword/keyword.service.js +90 -6
- package/dist/src/keyword/keyword.types.d.ts +30 -0
- package/dist/src/keyword/permission-forecast.d.ts +2 -0
- package/dist/src/keyword/permission-forecast.js +94 -0
- 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/checklist-context.handler.d.ts +3 -1
- package/dist/src/mcp/handlers/checklist-context.handler.js +17 -2
- package/dist/src/mcp/handlers/clarification-gate.d.ts +22 -0
- package/dist/src/mcp/handlers/clarification-gate.js +129 -0
- package/dist/src/mcp/handlers/council-scene.builder.d.ts +9 -0
- package/dist/src/mcp/handlers/council-scene.builder.js +115 -0
- package/dist/src/mcp/handlers/council-scene.types.d.ts +11 -0
- package/dist/src/mcp/handlers/council-scene.types.js +3 -0
- package/dist/src/mcp/handlers/discussion.handler.d.ts +4 -0
- package/dist/src/mcp/handlers/discussion.handler.js +45 -5
- package/dist/src/mcp/handlers/discussion.types.d.ts +12 -0
- package/dist/src/mcp/handlers/discussion.types.js +4 -1
- package/dist/src/mcp/handlers/execution-gate.d.ts +29 -0
- package/dist/src/mcp/handlers/execution-gate.js +49 -0
- package/dist/src/mcp/handlers/index.d.ts +1 -0
- package/dist/src/mcp/handlers/index.js +3 -1
- package/dist/src/mcp/handlers/mode.handler.d.ts +14 -1
- package/dist/src/mcp/handlers/mode.handler.js +205 -3
- package/dist/src/mcp/handlers/planning-contract.d.ts +2 -0
- package/dist/src/mcp/handlers/planning-contract.js +28 -0
- package/dist/src/mcp/handlers/planning-stage.d.ts +20 -0
- package/dist/src/mcp/handlers/planning-stage.js +58 -0
- package/dist/src/mcp/handlers/quality-report.handler.d.ts +3 -1
- package/dist/src/mcp/handlers/quality-report.handler.js +20 -2
- package/dist/src/mcp/handlers/review-pr.handler.d.ts +12 -0
- package/dist/src/mcp/handlers/review-pr.handler.js +81 -0
- package/dist/src/mcp/mcp.module.js +1 -0
- package/dist/src/rules/rules.service.d.ts +6 -0
- package/dist/src/rules/rules.service.js +3 -0
- package/dist/src/rules/skill.schema.d.ts +5 -0
- package/dist/src/rules/skill.schema.js +36 -0
- package/dist/src/shared/rules-core.d.ts +5 -0
- package/dist/src/shared/rules-core.js +5 -0
- package/dist/src/shared/version.d.ts +1 -1
- package/dist/src/shared/version.js +1 -1
- package/dist/src/ship/review-pr.service.d.ts +15 -0
- package/dist/src/ship/review-pr.service.js +136 -0
- package/dist/src/ship/review-pr.types.d.ts +21 -0
- package/dist/src/ship/review-pr.types.js +3 -0
- package/dist/src/ship/ship.module.js +5 -2
- package/dist/src/skill/i18n/keywords.js +921 -0
- package/dist/src/skill/skill-recommendation.service.d.ts +1 -0
- package/dist/src/skill/skill-recommendation.service.js +27 -1
- package/dist/src/skill/skill-recommendation.types.d.ts +5 -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-bundle.mjs +45 -3
- 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/plugin/install.command.js.map +0 -1
- package/dist/src/cli/plugin/plugins.command.js.map +0 -1
- package/dist/src/cli/plugin/search.command.js.map +0 -1
- package/dist/src/cli/plugin/uninstall.command.js.map +0 -1
- package/dist/src/cli/plugin/update.command.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/briefing-loader.service.js.map +0 -1
- package/dist/src/context/briefing.service.js.map +0 -1
- package/dist/src/context/briefing.types.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/briefing.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/quality-report.handler.js.map +0 -1
- package/dist/src/mcp/handlers/release-check.handler.js.map +0 -1
- package/dist/src/mcp/handlers/resume.handler.js.map +0 -1
- package/dist/src/mcp/handlers/rule-impact.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/plugin/plugin-installer.service.js.map +0 -1
- package/dist/src/plugin/plugin-manifest.schema.js.map +0 -1
- package/dist/src/plugin/plugin.module.js.map +0 -1
- package/dist/src/plugin/plugin.types.js.map +0 -1
- package/dist/src/plugin/registry-client.js.map +0 -1
- package/dist/src/rules/agent.schema.js.map +0 -1
- package/dist/src/rules/rule-event-collector.js.map +0 -1
- package/dist/src/rules/rule-event.types.js.map +0 -1
- package/dist/src/rules/rule-insights.service.js.map +0 -1
- package/dist/src/rules/rule-stats-writer.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/ship/file-specialist-mapper.js.map +0 -1
- package/dist/src/ship/quality-report.service.js.map +0 -1
- package/dist/src/ship/quality-report.types.js.map +0 -1
- package/dist/src/ship/ship.module.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 -163
- 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/testing/tui-test-utils.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
|
@@ -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
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface CreatePluginOptions {
|
|
2
|
+
name: string;
|
|
3
|
+
outputDir: string;
|
|
4
|
+
template: 'minimal' | 'full';
|
|
5
|
+
description?: string;
|
|
6
|
+
author?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface CreatePluginResult {
|
|
9
|
+
success: boolean;
|
|
10
|
+
pluginDir?: string;
|
|
11
|
+
error?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface TemplateContext {
|
|
14
|
+
name: string;
|
|
15
|
+
description: string;
|
|
16
|
+
author: string;
|
|
17
|
+
}
|
|
18
|
+
export declare function validatePluginName(name: string): boolean;
|
|
19
|
+
export declare function generateMinimalTemplate(ctx: TemplateContext): Record<string, string>;
|
|
20
|
+
export declare function generateFullTemplate(ctx: TemplateContext): Record<string, string>;
|
|
21
|
+
export declare function runCreatePlugin(options: CreatePluginOptions): Promise<CreatePluginResult>;
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validatePluginName = validatePluginName;
|
|
4
|
+
exports.generateMinimalTemplate = generateMinimalTemplate;
|
|
5
|
+
exports.generateFullTemplate = generateFullTemplate;
|
|
6
|
+
exports.runCreatePlugin = runCreatePlugin;
|
|
7
|
+
const fs = require("fs");
|
|
8
|
+
const path = require("path");
|
|
9
|
+
const child_process_1 = require("child_process");
|
|
10
|
+
const console_1 = require("../utils/console");
|
|
11
|
+
const PLUGIN_NAME_REGEX = /^[a-z][a-z0-9-]*$/;
|
|
12
|
+
function validatePluginName(name) {
|
|
13
|
+
return PLUGIN_NAME_REGEX.test(name);
|
|
14
|
+
}
|
|
15
|
+
function getDefaultAuthor() {
|
|
16
|
+
try {
|
|
17
|
+
return (0, child_process_1.execSync)('git config user.name', { encoding: 'utf-8' }).trim();
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return 'unknown';
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function generateMinimalTemplate(ctx) {
|
|
24
|
+
const manifest = {
|
|
25
|
+
name: ctx.name,
|
|
26
|
+
version: '1.0.0',
|
|
27
|
+
description: ctx.description,
|
|
28
|
+
author: ctx.author,
|
|
29
|
+
provides: {
|
|
30
|
+
agents: [],
|
|
31
|
+
rules: [],
|
|
32
|
+
skills: [],
|
|
33
|
+
checklists: [],
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
const readme = `# ${ctx.name}
|
|
37
|
+
|
|
38
|
+
${ctx.description}
|
|
39
|
+
|
|
40
|
+
## Installation
|
|
41
|
+
|
|
42
|
+
\`\`\`bash
|
|
43
|
+
codingbuddy install ./${ctx.name}
|
|
44
|
+
\`\`\`
|
|
45
|
+
|
|
46
|
+
## Author
|
|
47
|
+
|
|
48
|
+
${ctx.author}
|
|
49
|
+
`;
|
|
50
|
+
const gitignore = `node_modules/
|
|
51
|
+
dist/
|
|
52
|
+
.DS_Store
|
|
53
|
+
`;
|
|
54
|
+
return {
|
|
55
|
+
'plugin.json': JSON.stringify(manifest, null, 2),
|
|
56
|
+
'README.md': readme,
|
|
57
|
+
'.gitignore': gitignore,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function generateFullTemplate(ctx) {
|
|
61
|
+
const minimalFiles = generateMinimalTemplate(ctx);
|
|
62
|
+
const manifest = JSON.parse(minimalFiles['plugin.json']);
|
|
63
|
+
manifest.provides = {
|
|
64
|
+
agents: ['agents/example-agent.json'],
|
|
65
|
+
rules: ['rules/example-rule.md'],
|
|
66
|
+
skills: ['skills/example-skill.md'],
|
|
67
|
+
checklists: ['checklists/example-checklist.json'],
|
|
68
|
+
};
|
|
69
|
+
const exampleAgent = {
|
|
70
|
+
name: 'Example Agent',
|
|
71
|
+
description: `Example specialist agent for ${ctx.name}`,
|
|
72
|
+
role: {
|
|
73
|
+
title: 'Example Specialist',
|
|
74
|
+
expertise: ['example-domain'],
|
|
75
|
+
},
|
|
76
|
+
activation_message: {
|
|
77
|
+
formatted: '🤖 example-agent [Example Specialist]',
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
const exampleSkill = `# Example Skill
|
|
81
|
+
|
|
82
|
+
## Purpose
|
|
83
|
+
|
|
84
|
+
An example skill provided by ${ctx.name}.
|
|
85
|
+
|
|
86
|
+
## Instructions
|
|
87
|
+
|
|
88
|
+
Describe the skill instructions here.
|
|
89
|
+
`;
|
|
90
|
+
const exampleRule = `# Example Rule
|
|
91
|
+
|
|
92
|
+
## Description
|
|
93
|
+
|
|
94
|
+
An example rule provided by ${ctx.name}.
|
|
95
|
+
|
|
96
|
+
## Guidelines
|
|
97
|
+
|
|
98
|
+
- Guideline 1
|
|
99
|
+
- Guideline 2
|
|
100
|
+
`;
|
|
101
|
+
const exampleChecklist = {
|
|
102
|
+
name: 'Example Checklist',
|
|
103
|
+
description: `Example checklist from ${ctx.name}`,
|
|
104
|
+
items: [
|
|
105
|
+
{
|
|
106
|
+
id: 'example-1',
|
|
107
|
+
text: 'Check example condition',
|
|
108
|
+
severity: 'medium',
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
};
|
|
112
|
+
return {
|
|
113
|
+
...minimalFiles,
|
|
114
|
+
'plugin.json': JSON.stringify(manifest, null, 2),
|
|
115
|
+
'agents/example-agent.json': JSON.stringify(exampleAgent, null, 2),
|
|
116
|
+
'skills/example-skill.md': exampleSkill,
|
|
117
|
+
'rules/example-rule.md': exampleRule,
|
|
118
|
+
'checklists/example-checklist.json': JSON.stringify(exampleChecklist, null, 2),
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
async function runCreatePlugin(options) {
|
|
122
|
+
const console = (0, console_1.createConsoleUtils)();
|
|
123
|
+
if (!validatePluginName(options.name)) {
|
|
124
|
+
const msg = `Invalid plugin name "${options.name}". Must match /^[a-z][a-z0-9-]*$/`;
|
|
125
|
+
console.log.error(msg);
|
|
126
|
+
return { success: false, error: msg };
|
|
127
|
+
}
|
|
128
|
+
const pluginDir = path.join(options.outputDir, options.name);
|
|
129
|
+
if (fs.existsSync(pluginDir)) {
|
|
130
|
+
const msg = `Directory "${pluginDir}" already exists`;
|
|
131
|
+
console.log.error(msg);
|
|
132
|
+
return { success: false, error: msg };
|
|
133
|
+
}
|
|
134
|
+
const author = options.author ?? getDefaultAuthor();
|
|
135
|
+
const description = options.description ?? `A CodingBuddy plugin: ${options.name}`;
|
|
136
|
+
const ctx = {
|
|
137
|
+
name: options.name,
|
|
138
|
+
description,
|
|
139
|
+
author,
|
|
140
|
+
};
|
|
141
|
+
const files = options.template === 'full' ? generateFullTemplate(ctx) : generateMinimalTemplate(ctx);
|
|
142
|
+
console.log.step('🔧', `Scaffolding plugin "${options.name}" (${options.template} template)...`);
|
|
143
|
+
for (const [filePath, content] of Object.entries(files)) {
|
|
144
|
+
const fullPath = path.join(pluginDir, filePath);
|
|
145
|
+
fs.mkdirSync(path.dirname(fullPath), { recursive: true });
|
|
146
|
+
fs.writeFileSync(fullPath, content, 'utf-8');
|
|
147
|
+
}
|
|
148
|
+
console.log.success(`Plugin "${options.name}" created at ${pluginDir}`);
|
|
149
|
+
return { success: true, pluginDir };
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=create-plugin.command.js.map
|
package/dist/src/cli/run-tui.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveHudStateDir = resolveHudStateDir;
|
|
3
4
|
exports.runTui = runTui;
|
|
4
5
|
const path = require("node:path");
|
|
5
6
|
const os = require("node:os");
|
|
@@ -7,6 +8,11 @@ const ipc_types_1 = require("../tui/ipc/ipc.types");
|
|
|
7
8
|
const instance_registry_1 = require("../tui/ipc/instance-registry");
|
|
8
9
|
const restart_tui_1 = require("./restart-tui");
|
|
9
10
|
const CLIENT_SHUTDOWN_TIMEOUT_MS = 3000;
|
|
11
|
+
function resolveHudStateDir() {
|
|
12
|
+
return (process.env.CODINGBUDDY_HUD_STATE_DIR ??
|
|
13
|
+
process.env.CLAUDE_PLUGIN_DATA ??
|
|
14
|
+
path.join(os.homedir(), '.codingbuddy'));
|
|
15
|
+
}
|
|
10
16
|
async function runTui(options = {}) {
|
|
11
17
|
if (options.restart) {
|
|
12
18
|
const result = await (0, restart_tui_1.restartTui)();
|
|
@@ -46,7 +52,7 @@ async function runTui(options = {}) {
|
|
|
46
52
|
const { HudFileBridge } = await Promise.resolve().then(() => require('../tui/events'));
|
|
47
53
|
const sessions = manager.getSessions();
|
|
48
54
|
if (sessions.length > 0) {
|
|
49
|
-
const hudStatePath = path.join(
|
|
55
|
+
const hudStatePath = path.join(resolveHudStateDir(), 'hud-state.json');
|
|
50
56
|
const bridge = new HudFileBridge(sessions[0].eventBus, hudStatePath);
|
|
51
57
|
bridge.start();
|
|
52
58
|
hudBridge = bridge;
|
|
@@ -261,6 +261,9 @@ export declare const CodingBuddyConfigSchema: z.ZodObject<{
|
|
|
261
261
|
maxArrayItems: z.ZodDefault<z.ZodNumber>;
|
|
262
262
|
maxItemLength: z.ZodDefault<z.ZodNumber>;
|
|
263
263
|
}, z.core.$strip>>;
|
|
264
|
+
experimental: z.ZodOptional<z.ZodObject<{
|
|
265
|
+
teamsCoordination: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
|
|
266
|
+
}, z.core.$strip>>;
|
|
264
267
|
upstreamRepos: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
265
268
|
keyFiles: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
266
269
|
avoid: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
@@ -98,6 +98,11 @@ exports.CodingBuddyConfigSchema = zod_1.z.object({
|
|
|
98
98
|
auto: AutoConfigSchema.optional(),
|
|
99
99
|
release: ReleaseConfigSchema.optional(),
|
|
100
100
|
context: ContextConfigSchema.optional(),
|
|
101
|
+
experimental: zod_1.z
|
|
102
|
+
.object({
|
|
103
|
+
teamsCoordination: zod_1.z.boolean().default(false).optional(),
|
|
104
|
+
})
|
|
105
|
+
.optional(),
|
|
101
106
|
upstreamRepos: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(),
|
|
102
107
|
keyFiles: zod_1.z.array(zod_1.z.string()).optional(),
|
|
103
108
|
avoid: zod_1.z.array(zod_1.z.string()).optional(),
|
|
@@ -16,6 +16,7 @@ const skill_module_1 = require("../skill/skill.module");
|
|
|
16
16
|
const skill_recommendation_service_1 = require("../skill/skill-recommendation.service");
|
|
17
17
|
const agent_module_1 = require("../agent/agent.module");
|
|
18
18
|
const agent_service_1 = require("../agent/agent.service");
|
|
19
|
+
const agent_stack_service_1 = require("../agent/agent-stack.service");
|
|
19
20
|
const agent_utils_1 = require("../shared/agent.utils");
|
|
20
21
|
const client_type_1 = require("../shared/client-type");
|
|
21
22
|
const keyword_service_1 = require("./keyword.service");
|
|
@@ -30,7 +31,7 @@ exports.KeywordModule = KeywordModule = __decorate([
|
|
|
30
31
|
providers: [
|
|
31
32
|
{
|
|
32
33
|
provide: exports.KEYWORD_SERVICE,
|
|
33
|
-
useFactory: (rulesService, configService, skillRecommendationService, agentService) => {
|
|
34
|
+
useFactory: (rulesService, configService, skillRecommendationService, agentService, agentStackService) => {
|
|
34
35
|
const logger = new common_1.Logger('KeywordModule');
|
|
35
36
|
const loadConfig = async () => {
|
|
36
37
|
const content = await rulesService.getRuleContent('keyword-modes.json');
|
|
@@ -157,6 +158,35 @@ exports.KeywordModule = KeywordModule = __decorate([
|
|
|
157
158
|
return null;
|
|
158
159
|
}
|
|
159
160
|
};
|
|
161
|
+
const loadStacks = async () => {
|
|
162
|
+
try {
|
|
163
|
+
const summaries = await agentStackService.listStacks();
|
|
164
|
+
const results = [];
|
|
165
|
+
for (const summary of summaries) {
|
|
166
|
+
try {
|
|
167
|
+
const full = await agentStackService.resolveStack(summary.name);
|
|
168
|
+
results.push({
|
|
169
|
+
name: full.name,
|
|
170
|
+
category: full.category,
|
|
171
|
+
tags: full.tags,
|
|
172
|
+
specialist_agents: full.specialist_agents,
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
catch {
|
|
176
|
+
results.push({
|
|
177
|
+
name: summary.name,
|
|
178
|
+
category: summary.category,
|
|
179
|
+
tags: summary.tags ?? [],
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return results;
|
|
184
|
+
}
|
|
185
|
+
catch (error) {
|
|
186
|
+
logger.debug(`Failed to load agent stacks: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
187
|
+
return [];
|
|
188
|
+
}
|
|
189
|
+
};
|
|
160
190
|
const options = {
|
|
161
191
|
primaryAgentResolver,
|
|
162
192
|
loadAutoConfigFn: loadAutoConfig,
|
|
@@ -165,10 +195,17 @@ exports.KeywordModule = KeywordModule = __decorate([
|
|
|
165
195
|
loadAgentSystemPromptFn: loadAgentSystemPrompt,
|
|
166
196
|
getMaxIncludedSkillsFn: getMaxIncludedSkills,
|
|
167
197
|
getClientTypeFn: () => (0, client_type_1.resolveClientType)(configService.getClientName()),
|
|
198
|
+
loadStacksFn: loadStacks,
|
|
168
199
|
};
|
|
169
200
|
return new keyword_service_1.KeywordService(loadConfig, loadRule, loadAgent, options);
|
|
170
201
|
},
|
|
171
|
-
inject: [
|
|
202
|
+
inject: [
|
|
203
|
+
rules_service_1.RulesService,
|
|
204
|
+
config_service_1.ConfigService,
|
|
205
|
+
skill_recommendation_service_1.SkillRecommendationService,
|
|
206
|
+
agent_service_1.AgentService,
|
|
207
|
+
agent_stack_service_1.AgentStackService,
|
|
208
|
+
],
|
|
172
209
|
},
|
|
173
210
|
],
|
|
174
211
|
exports: [exports.KEYWORD_SERVICE],
|
|
@@ -2,6 +2,7 @@ import { type Mode, type RuleContent, type ParseModeResult, type KeywordModesCon
|
|
|
2
2
|
import { type VerbosityLevel } from '../shared/verbosity.types';
|
|
3
3
|
import { PrimaryAgentResolver } from './primary-agent-resolver';
|
|
4
4
|
import { type ClientType } from '../shared/client-type';
|
|
5
|
+
import { type StackMatchInput } from '../agent/stack-matcher';
|
|
5
6
|
export interface ParseModeOptions {
|
|
6
7
|
recommendedActAgent?: string;
|
|
7
8
|
context?: ResolutionContext;
|
|
@@ -19,6 +20,7 @@ export interface KeywordServiceOptions {
|
|
|
19
20
|
getMaxIncludedSkillsFn?: () => Promise<number | null>;
|
|
20
21
|
getClientTypeFn?: () => ClientType;
|
|
21
22
|
trackRuleUsageFn?: (ruleNames: string[]) => void;
|
|
23
|
+
loadStacksFn?: () => Promise<StackMatchInput[]>;
|
|
22
24
|
}
|
|
23
25
|
export interface SkillRecommendationInfo {
|
|
24
26
|
skillName: string;
|
|
@@ -54,6 +56,7 @@ export declare class KeywordService {
|
|
|
54
56
|
private readonly getMaxIncludedSkillsFn?;
|
|
55
57
|
private readonly getClientTypeFn?;
|
|
56
58
|
private readonly trackRuleUsageFn?;
|
|
59
|
+
private readonly loadStacksFn?;
|
|
57
60
|
private static readonly CONTEXT_SPECIALIST_PATTERNS;
|
|
58
61
|
constructor(loadConfigFn: () => Promise<KeywordModesConfig>, loadRuleFn: (path: string) => Promise<string>, loadAgentInfoFn?: ((agentName: string) => Promise<unknown>) | undefined, options?: KeywordServiceOptions);
|
|
59
62
|
parseMode(prompt: string, options?: ParseModeOptions): Promise<ParseModeResult>;
|
|
@@ -73,6 +76,8 @@ export declare class KeywordService {
|
|
|
73
76
|
private addAutoConfigToResult;
|
|
74
77
|
private addComplexityToResult;
|
|
75
78
|
private addIncludedSkillsToResult;
|
|
79
|
+
private enforceRequiredAgentSkills;
|
|
80
|
+
private extractRequiredSkillNames;
|
|
76
81
|
private getMaxIncludedSkills;
|
|
77
82
|
private loadSkillsInParallel;
|
|
78
83
|
private addIncludedAgentToResult;
|