codingbuddy 5.2.0 → 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/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/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/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/keyword/keyword.types.d.ts +8 -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/discussion.handler.d.ts +3 -0
- package/dist/src/mcp/handlers/discussion.handler.js +22 -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 +3 -1
- package/dist/src/mcp/handlers/quality-report.handler.js +20 -2
- 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/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,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;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateCouncilSummary = generateCouncilSummary;
|
|
4
|
+
function generateCouncilSummary(inputs) {
|
|
5
|
+
const opinions = [];
|
|
6
|
+
const failedAgents = [];
|
|
7
|
+
for (const input of inputs) {
|
|
8
|
+
if (input.opinion !== null) {
|
|
9
|
+
opinions.push(input.opinion);
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
failedAgents.push(input.agentName);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
const partialFailure = failedAgents.length > 0;
|
|
16
|
+
const consensus = detectConsensus(opinions);
|
|
17
|
+
const disagreements = detectDisagreements(opinions);
|
|
18
|
+
const blockingRisks = extractBlockingRisks(opinions);
|
|
19
|
+
const nextStep = determineNextStep(opinions, failedAgents, blockingRisks);
|
|
20
|
+
return {
|
|
21
|
+
opinions,
|
|
22
|
+
failedAgents,
|
|
23
|
+
consensus,
|
|
24
|
+
disagreements,
|
|
25
|
+
blockingRisks,
|
|
26
|
+
nextStep,
|
|
27
|
+
partialFailure,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function detectConsensus(opinions) {
|
|
31
|
+
if (opinions.length === 0)
|
|
32
|
+
return [];
|
|
33
|
+
const points = [];
|
|
34
|
+
const stances = new Set(opinions.map(o => o.stance));
|
|
35
|
+
if (stances.size === 1) {
|
|
36
|
+
const stance = opinions[0].stance;
|
|
37
|
+
points.push(`All specialists ${stanceVerb(stance)}`);
|
|
38
|
+
}
|
|
39
|
+
const sharedChanges = findSharedSuggestedChanges(opinions);
|
|
40
|
+
for (const change of sharedChanges) {
|
|
41
|
+
points.push(`Shared recommendation: ${change}`);
|
|
42
|
+
}
|
|
43
|
+
return points;
|
|
44
|
+
}
|
|
45
|
+
function findSharedSuggestedChanges(opinions) {
|
|
46
|
+
const changeCounts = new Map();
|
|
47
|
+
for (const opinion of opinions) {
|
|
48
|
+
for (const change of opinion.suggestedChanges) {
|
|
49
|
+
changeCounts.set(change, (changeCounts.get(change) ?? 0) + 1);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
const shared = [];
|
|
53
|
+
for (const [change, count] of changeCounts) {
|
|
54
|
+
if (count >= 2) {
|
|
55
|
+
shared.push(change);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return shared;
|
|
59
|
+
}
|
|
60
|
+
function stanceVerb(stance) {
|
|
61
|
+
switch (stance) {
|
|
62
|
+
case 'approve':
|
|
63
|
+
return 'approve';
|
|
64
|
+
case 'concern':
|
|
65
|
+
return 'express concerns';
|
|
66
|
+
case 'reject':
|
|
67
|
+
return 'reject';
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function detectDisagreements(opinions) {
|
|
71
|
+
if (opinions.length < 2)
|
|
72
|
+
return [];
|
|
73
|
+
const stances = new Set(opinions.map(o => o.stance));
|
|
74
|
+
if (stances.size <= 1)
|
|
75
|
+
return [];
|
|
76
|
+
const positions = opinions.map(o => ({
|
|
77
|
+
agentName: o.agentName,
|
|
78
|
+
stance: o.stance,
|
|
79
|
+
reasoning: o.reasoning,
|
|
80
|
+
}));
|
|
81
|
+
return [
|
|
82
|
+
{
|
|
83
|
+
topic: 'Overall assessment',
|
|
84
|
+
positions,
|
|
85
|
+
},
|
|
86
|
+
];
|
|
87
|
+
}
|
|
88
|
+
function extractBlockingRisks(opinions) {
|
|
89
|
+
return opinions.filter(o => o.stance === 'reject').map(o => `${o.agentName}: ${o.reasoning}`);
|
|
90
|
+
}
|
|
91
|
+
function determineNextStep(opinions, failedAgents, blockingRisks) {
|
|
92
|
+
if (opinions.length === 0 && failedAgents.length === 0) {
|
|
93
|
+
return 'No specialist input available. Run specialist analysis first.';
|
|
94
|
+
}
|
|
95
|
+
if (opinions.length === 0 && failedAgents.length > 0) {
|
|
96
|
+
return `Re-run failed specialists (${failedAgents.join(', ')}) to obtain analysis.`;
|
|
97
|
+
}
|
|
98
|
+
if (blockingRisks.length > 0) {
|
|
99
|
+
return `Address ${blockingRisks.length} blocking risk(s) before proceeding.`;
|
|
100
|
+
}
|
|
101
|
+
const concerns = opinions.filter(o => o.stance === 'concern');
|
|
102
|
+
const parts = [];
|
|
103
|
+
if (failedAgents.length > 0) {
|
|
104
|
+
parts.push(`re-run failed specialists (${failedAgents.join(', ')})`);
|
|
105
|
+
}
|
|
106
|
+
if (concerns.length > 0) {
|
|
107
|
+
parts.push(`review ${concerns.length} concern(s)`);
|
|
108
|
+
}
|
|
109
|
+
if (parts.length > 0) {
|
|
110
|
+
return `Proceed with caution: ${parts.join(', ')}.`;
|
|
111
|
+
}
|
|
112
|
+
return 'Proceed with implementation — all specialists approve.';
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=council-summary.service.js.map
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { AgentOpinion, Stance } from './types';
|
|
2
|
+
export interface CouncilInput {
|
|
3
|
+
readonly agentName: string;
|
|
4
|
+
readonly opinion: AgentOpinion | null;
|
|
5
|
+
readonly error?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface DisagreementPosition {
|
|
8
|
+
readonly agentName: string;
|
|
9
|
+
readonly stance: Stance;
|
|
10
|
+
readonly reasoning: string;
|
|
11
|
+
}
|
|
12
|
+
export interface Disagreement {
|
|
13
|
+
readonly topic: string;
|
|
14
|
+
readonly positions: readonly DisagreementPosition[];
|
|
15
|
+
}
|
|
16
|
+
export interface CouncilSummary {
|
|
17
|
+
readonly opinions: readonly AgentOpinion[];
|
|
18
|
+
readonly failedAgents: readonly string[];
|
|
19
|
+
readonly consensus: readonly string[];
|
|
20
|
+
readonly disagreements: readonly Disagreement[];
|
|
21
|
+
readonly blockingRisks: readonly string[];
|
|
22
|
+
readonly nextStep: string;
|
|
23
|
+
readonly partialFailure: boolean;
|
|
24
|
+
}
|
|
@@ -3,3 +3,5 @@ export { STANCES, STANCE_ICONS, createAgentOpinion, createCrossReview, createDis
|
|
|
3
3
|
export { DiscussionEngine } from './discussion-engine';
|
|
4
4
|
export { formatOpinion, formatCrossReview, formatConsensus, formatDiscussionRound, } from './terminal-formatter';
|
|
5
5
|
export { mapSeverityToStance, convertSpecialistResult, convertSpecialistResults, type FindingSeverity, type SpecialistFinding, type SpecialistResult, } from './opinion-adapter';
|
|
6
|
+
export type { CouncilInput, CouncilSummary, Disagreement, DisagreementPosition, } from './council-summary.types';
|
|
7
|
+
export { generateCouncilSummary } from './council-summary.service';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.convertSpecialistResults = exports.convertSpecialistResult = exports.mapSeverityToStance = exports.formatDiscussionRound = exports.formatConsensus = exports.formatCrossReview = exports.formatOpinion = exports.DiscussionEngine = exports.calculateConsensus = exports.createDiscussionRound = exports.createCrossReview = exports.createAgentOpinion = exports.STANCE_ICONS = exports.STANCES = void 0;
|
|
3
|
+
exports.generateCouncilSummary = exports.convertSpecialistResults = exports.convertSpecialistResult = exports.mapSeverityToStance = exports.formatDiscussionRound = exports.formatConsensus = exports.formatCrossReview = exports.formatOpinion = exports.DiscussionEngine = exports.calculateConsensus = exports.createDiscussionRound = exports.createCrossReview = exports.createAgentOpinion = exports.STANCE_ICONS = exports.STANCES = void 0;
|
|
4
4
|
var types_1 = require("./types");
|
|
5
5
|
Object.defineProperty(exports, "STANCES", { enumerable: true, get: function () { return types_1.STANCES; } });
|
|
6
6
|
Object.defineProperty(exports, "STANCE_ICONS", { enumerable: true, get: function () { return types_1.STANCE_ICONS; } });
|
|
@@ -19,4 +19,6 @@ var opinion_adapter_1 = require("./opinion-adapter");
|
|
|
19
19
|
Object.defineProperty(exports, "mapSeverityToStance", { enumerable: true, get: function () { return opinion_adapter_1.mapSeverityToStance; } });
|
|
20
20
|
Object.defineProperty(exports, "convertSpecialistResult", { enumerable: true, get: function () { return opinion_adapter_1.convertSpecialistResult; } });
|
|
21
21
|
Object.defineProperty(exports, "convertSpecialistResults", { enumerable: true, get: function () { return opinion_adapter_1.convertSpecialistResults; } });
|
|
22
|
+
var council_summary_service_1 = require("./council-summary.service");
|
|
23
|
+
Object.defineProperty(exports, "generateCouncilSummary", { enumerable: true, get: function () { return council_summary_service_1.generateCouncilSummary; } });
|
|
22
24
|
//# sourceMappingURL=index.js.map
|
|
@@ -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>>;
|