codingbuddy 5.1.3 → 5.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -0
- package/dist/src/agent/agent-prompt.builder.js +135 -2
- package/dist/src/agent/agent-stack.loader.d.ts +3 -0
- package/dist/src/agent/agent-stack.loader.js +38 -0
- package/dist/src/agent/agent-stack.schema.d.ts +14 -0
- package/dist/src/agent/agent-stack.schema.js +19 -0
- package/dist/src/agent/agent-stack.service.d.ts +15 -0
- package/dist/src/agent/agent-stack.service.js +112 -0
- package/dist/src/agent/agent.module.js +5 -2
- package/dist/src/agent/agent.service.d.ts +8 -1
- package/dist/src/agent/agent.service.js +126 -40
- package/dist/src/agent/agent.types.d.ts +26 -46
- package/dist/src/agent/council-preset.service.d.ts +6 -0
- package/dist/src/agent/council-preset.service.js +46 -0
- package/dist/src/agent/council-preset.types.d.ts +6 -0
- package/dist/src/agent/council-preset.types.js +3 -0
- package/dist/src/agent/execution-plan.d.ts +8 -0
- package/dist/src/agent/execution-plan.js +73 -0
- package/dist/src/agent/execution-plan.types.d.ts +74 -0
- package/dist/src/agent/execution-plan.types.js +3 -0
- package/dist/src/agent/index.d.ts +8 -0
- package/dist/src/agent/index.js +8 -0
- package/dist/src/agent/teams-capability.service.d.ts +11 -0
- package/dist/src/agent/teams-capability.service.js +74 -0
- package/dist/src/agent/teams-capability.types.d.ts +6 -0
- package/dist/src/agent/teams-capability.types.js +3 -0
- package/dist/src/app.module.js +2 -0
- package/dist/src/cli/cli.d.ts +4 -3
- package/dist/src/cli/cli.js +172 -1
- package/dist/src/cli/cli.types.d.ts +18 -0
- package/dist/src/cli/completion/completion.d.ts +16 -0
- package/dist/src/cli/completion/completion.js +276 -0
- package/dist/src/cli/completion/index.d.ts +2 -0
- package/dist/src/cli/completion/index.js +7 -0
- package/dist/src/cli/init/init.constants.js +0 -1
- package/dist/src/cli/plugin/create-plugin.command.d.ts +21 -0
- package/dist/src/cli/plugin/create-plugin.command.js +151 -0
- package/dist/src/cli/plugin/install.command.d.ts +10 -0
- package/dist/src/cli/plugin/install.command.js +31 -0
- package/dist/src/cli/plugin/plugins.command.d.ts +9 -0
- package/dist/src/cli/plugin/plugins.command.js +51 -0
- package/dist/src/cli/plugin/search.command.d.ts +9 -0
- package/dist/src/cli/plugin/search.command.js +53 -0
- package/dist/src/cli/plugin/uninstall.command.d.ts +12 -0
- package/dist/src/cli/plugin/uninstall.command.js +79 -0
- package/dist/src/cli/plugin/update.command.d.ts +11 -0
- package/dist/src/cli/plugin/update.command.js +103 -0
- package/dist/src/cli/run-tui.d.ts +1 -0
- package/dist/src/cli/run-tui.js +7 -1
- package/dist/src/collaboration/council-summary.service.d.ts +2 -0
- package/dist/src/collaboration/council-summary.service.js +114 -0
- package/dist/src/collaboration/council-summary.types.d.ts +24 -0
- package/dist/src/collaboration/council-summary.types.js +3 -0
- package/dist/src/collaboration/index.d.ts +2 -0
- package/dist/src/collaboration/index.js +3 -1
- package/dist/src/config/config.schema.d.ts +3 -0
- package/dist/src/config/config.schema.js +5 -0
- package/dist/src/context/briefing-loader.service.d.ts +27 -0
- package/dist/src/context/briefing-loader.service.js +124 -0
- package/dist/src/context/briefing.service.d.ts +27 -0
- package/dist/src/context/briefing.service.js +181 -0
- package/dist/src/context/briefing.types.d.ts +13 -0
- package/dist/src/context/briefing.types.js +6 -0
- package/dist/src/context/context.module.js +16 -2
- package/dist/src/context/index.d.ts +2 -0
- package/dist/src/context/index.js +2 -0
- package/dist/src/keyword/keyword.types.d.ts +8 -0
- package/dist/src/main.js +0 -17
- package/dist/src/mcp/handlers/agent.handler.d.ts +6 -1
- package/dist/src/mcp/handlers/agent.handler.js +81 -8
- package/dist/src/mcp/handlers/briefing.handler.d.ts +12 -0
- package/dist/src/mcp/handlers/briefing.handler.js +71 -0
- package/dist/src/mcp/handlers/checklist-context.handler.d.ts +3 -1
- package/dist/src/mcp/handlers/checklist-context.handler.js +17 -2
- package/dist/src/mcp/handlers/discussion.handler.d.ts +3 -0
- package/dist/src/mcp/handlers/discussion.handler.js +22 -1
- package/dist/src/mcp/handlers/index.d.ts +4 -0
- package/dist/src/mcp/handlers/index.js +9 -1
- package/dist/src/mcp/handlers/mode.handler.d.ts +9 -1
- package/dist/src/mcp/handlers/mode.handler.js +79 -2
- package/dist/src/mcp/handlers/quality-report.handler.d.ts +14 -0
- package/dist/src/mcp/handlers/quality-report.handler.js +93 -0
- package/dist/src/mcp/handlers/resume.handler.d.ts +12 -0
- package/dist/src/mcp/handlers/resume.handler.js +63 -0
- package/dist/src/mcp/handlers/rule-impact.handler.d.ts +23 -0
- package/dist/src/mcp/handlers/rule-impact.handler.js +241 -0
- package/dist/src/mcp/handlers/skill.handler.js +2 -2
- package/dist/src/mcp/mcp.module.js +6 -0
- package/dist/src/plugin/plugin-installer.service.d.ts +41 -0
- package/dist/src/plugin/plugin-installer.service.js +183 -0
- package/dist/src/plugin/plugin-manifest.schema.d.ts +21 -0
- package/dist/src/plugin/plugin-manifest.schema.js +45 -0
- package/dist/src/plugin/plugin.module.d.ts +2 -0
- package/dist/src/plugin/plugin.module.js +17 -0
- package/dist/src/plugin/plugin.types.d.ts +7 -0
- package/dist/src/plugin/plugin.types.js +3 -0
- package/dist/src/plugin/registry-client.d.ts +24 -0
- package/dist/src/plugin/registry-client.js +45 -0
- package/dist/src/rules/rule-event-collector.d.ts +7 -0
- package/dist/src/rules/rule-event-collector.js +38 -0
- package/dist/src/rules/rule-event.types.d.ts +9 -0
- package/dist/src/rules/rule-event.types.js +10 -0
- package/dist/src/rules/rule-stats-writer.d.ts +23 -0
- package/dist/src/rules/rule-stats-writer.js +138 -0
- package/dist/src/rules/rules.module.js +4 -2
- package/dist/src/rules/rules.service.d.ts +8 -1
- package/dist/src/rules/rules.service.js +3 -0
- package/dist/src/rules/skill.schema.d.ts +10 -0
- package/dist/src/rules/skill.schema.js +42 -0
- package/dist/src/shared/rules-core.d.ts +7 -1
- package/dist/src/shared/rules-core.js +6 -0
- package/dist/src/shared/version.d.ts +1 -1
- package/dist/src/shared/version.js +1 -1
- package/dist/src/ship/file-specialist-mapper.d.ts +9 -0
- package/dist/src/ship/file-specialist-mapper.js +56 -0
- package/dist/src/ship/quality-report.service.d.ts +6 -0
- package/dist/src/ship/quality-report.service.js +56 -0
- package/dist/src/ship/quality-report.types.d.ts +20 -0
- package/dist/src/ship/quality-report.types.js +3 -0
- package/dist/src/ship/ship.module.d.ts +2 -0
- package/dist/src/ship/ship.module.js +21 -0
- package/dist/src/skill/i18n/keywords.js +921 -0
- package/dist/src/skill/skill-recommendation.service.d.ts +10 -2
- package/dist/src/skill/skill-recommendation.service.js +120 -16
- package/dist/src/skill/skill-recommendation.types.d.ts +5 -0
- package/dist/src/skill/skill.module.js +2 -0
- package/dist/src/tui/events/hud-file-bridge.d.ts +4 -0
- package/dist/src/tui/events/hud-file-bridge.js +36 -0
- package/dist/src/tui/testing/tui-test-utils.d.ts +2 -0
- package/dist/src/tui/testing/tui-test-utils.js +25 -0
- package/dist/src/tui-bundle.mjs +239 -36
- package/package.json +7 -2
- package/dist/api/mcp.js.map +0 -1
- package/dist/src/agent/agent-prompt.builder.js.map +0 -1
- package/dist/src/agent/agent-summary.utils.js.map +0 -1
- package/dist/src/agent/agent.module.js.map +0 -1
- package/dist/src/agent/agent.service.js.map +0 -1
- package/dist/src/agent/agent.types.js.map +0 -1
- package/dist/src/agent/index.js.map +0 -1
- package/dist/src/analyzer/analyzer.module.js.map +0 -1
- package/dist/src/analyzer/analyzer.service.js.map +0 -1
- package/dist/src/analyzer/analyzer.types.js.map +0 -1
- package/dist/src/analyzer/code.sampler.js.map +0 -1
- package/dist/src/analyzer/config.analyzer.js.map +0 -1
- package/dist/src/analyzer/conventions.analyzer.js.map +0 -1
- package/dist/src/analyzer/conventions.schemas.js.map +0 -1
- package/dist/src/analyzer/conventions.types.js.map +0 -1
- package/dist/src/analyzer/directory.analyzer.js.map +0 -1
- package/dist/src/analyzer/index.js.map +0 -1
- package/dist/src/analyzer/package.analyzer.js.map +0 -1
- package/dist/src/app.module.js.map +0 -1
- package/dist/src/checklist/checklist.module.js.map +0 -1
- package/dist/src/checklist/checklist.schema.js.map +0 -1
- package/dist/src/checklist/checklist.service.js.map +0 -1
- package/dist/src/checklist/checklist.types.js.map +0 -1
- package/dist/src/checklist/index.js.map +0 -1
- package/dist/src/cli/cli.js.map +0 -1
- package/dist/src/cli/cli.types.js.map +0 -1
- package/dist/src/cli/index.js.map +0 -1
- package/dist/src/cli/init/claude-settings.utils.js.map +0 -1
- package/dist/src/cli/init/config.generator.js.map +0 -1
- package/dist/src/cli/init/config.writer.js.map +0 -1
- package/dist/src/cli/init/gitignore.utils.js.map +0 -1
- package/dist/src/cli/init/index.js.map +0 -1
- package/dist/src/cli/init/init.command.js.map +0 -1
- package/dist/src/cli/init/init.constants.js.map +0 -1
- package/dist/src/cli/init/init.wizard.js.map +0 -1
- package/dist/src/cli/init/prompt.builder.js.map +0 -1
- package/dist/src/cli/init/prompts/agent-prompt.js.map +0 -1
- package/dist/src/cli/init/prompts/architecture-prompt.js.map +0 -1
- package/dist/src/cli/init/prompts/basic-prompt.js.map +0 -1
- package/dist/src/cli/init/prompts/conventions-prompt.js.map +0 -1
- package/dist/src/cli/init/prompts/index.js.map +0 -1
- package/dist/src/cli/init/prompts/language-prompt.js.map +0 -1
- package/dist/src/cli/init/prompts/model-prompt.js.map +0 -1
- package/dist/src/cli/init/prompts/tech-stack-prompt.js.map +0 -1
- package/dist/src/cli/init/prompts/test-strategy-prompt.js.map +0 -1
- package/dist/src/cli/init/summary/index.js.map +0 -1
- package/dist/src/cli/init/summary/summary.prompt.js.map +0 -1
- package/dist/src/cli/init/summary/summary.renderer.js.map +0 -1
- package/dist/src/cli/init/templates/config-renderer.js.map +0 -1
- package/dist/src/cli/init/templates/frameworks/default.template.js.map +0 -1
- package/dist/src/cli/init/templates/frameworks/express.template.js.map +0 -1
- package/dist/src/cli/init/templates/frameworks/index.js.map +0 -1
- package/dist/src/cli/init/templates/frameworks/nestjs.template.js.map +0 -1
- package/dist/src/cli/init/templates/frameworks/nextjs.template.js.map +0 -1
- package/dist/src/cli/init/templates/frameworks/node.template.js.map +0 -1
- package/dist/src/cli/init/templates/frameworks/react.template.js.map +0 -1
- package/dist/src/cli/init/templates/index.js.map +0 -1
- package/dist/src/cli/init/templates/template.renderer.js.map +0 -1
- package/dist/src/cli/init/templates/template.selector.js.map +0 -1
- package/dist/src/cli/init/templates/template.types.js.map +0 -1
- package/dist/src/cli/restart-tui.js.map +0 -1
- package/dist/src/cli/run-tui.js.map +0 -1
- package/dist/src/cli/utils/console.js.map +0 -1
- package/dist/src/cli/utils/index.js.map +0 -1
- package/dist/src/collaboration/discussion-engine.js.map +0 -1
- package/dist/src/collaboration/index.js.map +0 -1
- package/dist/src/collaboration/opinion-adapter.js.map +0 -1
- package/dist/src/collaboration/terminal-formatter.js.map +0 -1
- package/dist/src/collaboration/types.js.map +0 -1
- package/dist/src/config/config-diff.service.js.map +0 -1
- package/dist/src/config/config.loader.js.map +0 -1
- package/dist/src/config/config.module.js.map +0 -1
- package/dist/src/config/config.schema.js.map +0 -1
- package/dist/src/config/config.service.js.map +0 -1
- package/dist/src/config/context.loader.js.map +0 -1
- package/dist/src/config/ignore.parser.js.map +0 -1
- package/dist/src/config/index.js.map +0 -1
- package/dist/src/context/context-archive.service.js.map +0 -1
- package/dist/src/context/context-archive.types.js.map +0 -1
- package/dist/src/context/context-document.service.js.map +0 -1
- package/dist/src/context/context-document.types.js.map +0 -1
- package/dist/src/context/context-parser.utils.js.map +0 -1
- package/dist/src/context/context-serializer.utils.js.map +0 -1
- package/dist/src/context/context.module.js.map +0 -1
- package/dist/src/context/context.service.js.map +0 -1
- package/dist/src/context/context.types.js.map +0 -1
- package/dist/src/context/index.js.map +0 -1
- package/dist/src/context/intent-patterns.js.map +0 -1
- package/dist/src/custom/custom.module.js.map +0 -1
- package/dist/src/custom/custom.service.js.map +0 -1
- package/dist/src/custom/custom.types.js.map +0 -1
- package/dist/src/custom/index.js.map +0 -1
- package/dist/src/diagnostic/diagnostic-log.service.js.map +0 -1
- package/dist/src/diagnostic/diagnostic.module.js.map +0 -1
- package/dist/src/diagnostic/diagnostic.types.js.map +0 -1
- package/dist/src/diagnostic/index.js.map +0 -1
- package/dist/src/impact/impact-event.service.js.map +0 -1
- package/dist/src/impact/impact-report.service.js.map +0 -1
- package/dist/src/impact/impact.module.js.map +0 -1
- package/dist/src/impact/impact.types.js.map +0 -1
- package/dist/src/impact/index.js.map +0 -1
- package/dist/src/keyword/activation-message.builder.js.map +0 -1
- package/dist/src/keyword/auto-executor.js.map +0 -1
- package/dist/src/keyword/auto-executor.types.js.map +0 -1
- package/dist/src/keyword/auto-formatter.js.map +0 -1
- package/dist/src/keyword/auto-prompt-builder.js.map +0 -1
- package/dist/src/keyword/complexity-classifier.js.map +0 -1
- package/dist/src/keyword/complexity-indicators.js.map +0 -1
- package/dist/src/keyword/diff-analyzer.js.map +0 -1
- package/dist/src/keyword/explicit-pattern-matcher.js.map +0 -1
- package/dist/src/keyword/index.js.map +0 -1
- package/dist/src/keyword/keyword.module.js.map +0 -1
- package/dist/src/keyword/keyword.service.js.map +0 -1
- package/dist/src/keyword/keyword.types.js.map +0 -1
- package/dist/src/keyword/patterns/agent.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/ai-ml.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/backend.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/context.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/data-science.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/data.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/devops.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/explicit.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/frontend.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/index.js.map +0 -1
- package/dist/src/keyword/patterns/intent-pattern-checks.js.map +0 -1
- package/dist/src/keyword/patterns/intent-patterns.types.js.map +0 -1
- package/dist/src/keyword/patterns/meta-discussion.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/mobile.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/platform.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/security.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/systems.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/test.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/tooling.patterns.js.map +0 -1
- package/dist/src/keyword/primary-agent-resolver.js.map +0 -1
- package/dist/src/keyword/rule-filter.js.map +0 -1
- package/dist/src/keyword/srp-template.js.map +0 -1
- package/dist/src/keyword/strategies/__tests__/strategy-test.utils.js.map +0 -1
- package/dist/src/keyword/strategies/act-agent.strategy.js.map +0 -1
- package/dist/src/keyword/strategies/eval-agent.strategy.js.map +0 -1
- package/dist/src/keyword/strategies/index.js.map +0 -1
- package/dist/src/keyword/strategies/plan-agent.strategy.js.map +0 -1
- package/dist/src/keyword/strategies/resolution-strategy.interface.js.map +0 -1
- package/dist/src/keyword/taskmaestro-detector.js.map +0 -1
- package/dist/src/keyword/visual-data.builder.js.map +0 -1
- package/dist/src/main.js.map +0 -1
- package/dist/src/mcp/handlers/abstract-handler.js.map +0 -1
- package/dist/src/mcp/handlers/agent.handler.js.map +0 -1
- package/dist/src/mcp/handlers/base.handler.js.map +0 -1
- package/dist/src/mcp/handlers/checklist-context.handler.js.map +0 -1
- package/dist/src/mcp/handlers/config.handler.js.map +0 -1
- package/dist/src/mcp/handlers/context-archive.handler.js.map +0 -1
- package/dist/src/mcp/handlers/context-document.handler.js.map +0 -1
- package/dist/src/mcp/handlers/conventions.handler.js.map +0 -1
- package/dist/src/mcp/handlers/discussion.handler.js.map +0 -1
- package/dist/src/mcp/handlers/discussion.types.js.map +0 -1
- package/dist/src/mcp/handlers/impact.handler.js.map +0 -1
- package/dist/src/mcp/handlers/index.js.map +0 -1
- package/dist/src/mcp/handlers/mode.handler.js.map +0 -1
- package/dist/src/mcp/handlers/pipeline.handler.js.map +0 -1
- package/dist/src/mcp/handlers/plugin-validation.handler.js.map +0 -1
- package/dist/src/mcp/handlers/release-check.handler.js.map +0 -1
- package/dist/src/mcp/handlers/rule-insights.handler.js.map +0 -1
- package/dist/src/mcp/handlers/rules.handler.js.map +0 -1
- package/dist/src/mcp/handlers/skill.handler.js.map +0 -1
- package/dist/src/mcp/handlers/tui.handler.js.map +0 -1
- package/dist/src/mcp/mcp-serverless.js.map +0 -1
- package/dist/src/mcp/mcp.controller.js.map +0 -1
- package/dist/src/mcp/mcp.module.js.map +0 -1
- package/dist/src/mcp/mcp.service.js.map +0 -1
- package/dist/src/mcp/response.utils.js.map +0 -1
- package/dist/src/mcp/sse-auth.guard.js.map +0 -1
- package/dist/src/model/index.js.map +0 -1
- package/dist/src/model/model-resolver.service.js.map +0 -1
- package/dist/src/model/model.constants.js.map +0 -1
- package/dist/src/model/model.resolver.js.map +0 -1
- package/dist/src/model/model.types.js.map +0 -1
- package/dist/src/parallel-validation/extract-file-paths.js.map +0 -1
- package/dist/src/parallel-validation/index.js.map +0 -1
- package/dist/src/parallel-validation/overlap-matrix.js.map +0 -1
- package/dist/src/parallel-validation/parallel-validation.handler.js.map +0 -1
- package/dist/src/parallel-validation/parallel-validation.types.js.map +0 -1
- package/dist/src/parallel-validation/wave-splitter.js.map +0 -1
- package/dist/src/pipeline/index.js.map +0 -1
- package/dist/src/pipeline/pipeline.executors.js.map +0 -1
- package/dist/src/pipeline/pipeline.module.js.map +0 -1
- package/dist/src/pipeline/pipeline.service.js.map +0 -1
- package/dist/src/pipeline/pipeline.types.js.map +0 -1
- package/dist/src/rules/agent.schema.js.map +0 -1
- package/dist/src/rules/rule-insights.service.js.map +0 -1
- package/dist/src/rules/rule-tracker.js.map +0 -1
- package/dist/src/rules/rules-content.utils.js.map +0 -1
- package/dist/src/rules/rules.module.js.map +0 -1
- package/dist/src/rules/rules.service.js.map +0 -1
- package/dist/src/rules/rules.types.js.map +0 -1
- package/dist/src/rules/skill.schema.js.map +0 -1
- package/dist/src/shared/agent.utils.js.map +0 -1
- package/dist/src/shared/async.utils.js.map +0 -1
- package/dist/src/shared/client-type.js.map +0 -1
- package/dist/src/shared/error.utils.js.map +0 -1
- package/dist/src/shared/esm-import.js.map +0 -1
- package/dist/src/shared/event-bridge-reader.js.map +0 -1
- package/dist/src/shared/file.utils.js.map +0 -1
- package/dist/src/shared/filesystem.interface.js.map +0 -1
- package/dist/src/shared/format.utils.js.map +0 -1
- package/dist/src/shared/keyword-core.js.map +0 -1
- package/dist/src/shared/language.service.js.map +0 -1
- package/dist/src/shared/language.types.js.map +0 -1
- package/dist/src/shared/lru-cache.js.map +0 -1
- package/dist/src/shared/node-filesystem.service.js.map +0 -1
- package/dist/src/shared/path.utils.js.map +0 -1
- package/dist/src/shared/pattern-matcher.js.map +0 -1
- package/dist/src/shared/rules-core.js.map +0 -1
- package/dist/src/shared/security.utils.js.map +0 -1
- package/dist/src/shared/slug.utils.js.map +0 -1
- package/dist/src/shared/tui-bundle-path.js.map +0 -1
- package/dist/src/shared/validation.constants.js.map +0 -1
- package/dist/src/shared/verbosity.types.js.map +0 -1
- package/dist/src/shared/version.js.map +0 -1
- package/dist/src/shared/version.utils.js.map +0 -1
- package/dist/src/skill/i18n/index.js.map +0 -1
- package/dist/src/skill/i18n/keywords.js.map +0 -1
- package/dist/src/skill/i18n/keywords.types.js.map +0 -1
- package/dist/src/skill/index.js.map +0 -1
- package/dist/src/skill/skill-content.utils.js.map +0 -1
- package/dist/src/skill/skill-recommendation.service.js.map +0 -1
- package/dist/src/skill/skill-recommendation.types.js.map +0 -1
- package/dist/src/skill/skill-triggers.js.map +0 -1
- package/dist/src/skill/skill.module.js.map +0 -1
- package/dist/src/state/index.js.map +0 -1
- package/dist/src/state/state.module.js.map +0 -1
- package/dist/src/state/state.service.js.map +0 -1
- package/dist/src/state/state.types.js.map +0 -1
- package/dist/src/tui/__perf__/memory-stability.spec.d.ts +0 -1
- package/dist/src/tui/__perf__/memory-stability.spec.js +0 -105
- package/dist/src/tui/__perf__/memory-stability.spec.js.map +0 -1
- package/dist/src/tui/__perf__/rendering-performance.spec.d.ts +0 -1
- package/dist/src/tui/__perf__/rendering-performance.spec.js +0 -166
- package/dist/src/tui/__perf__/rendering-performance.spec.js.map +0 -1
- package/dist/src/tui/cli-flags.js.map +0 -1
- package/dist/src/tui/components/ActModeScreen.js.map +0 -1
- package/dist/src/tui/components/ActivityVisualizer.js.map +0 -1
- package/dist/src/tui/components/ActivityVisualizer.spec.d.ts +0 -1
- package/dist/src/tui/components/ActivityVisualizer.spec.js +0 -91
- package/dist/src/tui/components/ActivityVisualizer.spec.js.map +0 -1
- package/dist/src/tui/components/AgentDiscussionPanel.js.map +0 -1
- package/dist/src/tui/components/AgentDiscussionPanel.spec.d.ts +0 -1
- package/dist/src/tui/components/AgentDiscussionPanel.spec.js +0 -229
- package/dist/src/tui/components/AgentDiscussionPanel.spec.js.map +0 -1
- package/dist/src/tui/components/ChecklistPanel.js.map +0 -1
- package/dist/src/tui/components/ChecklistPanel.spec.d.ts +0 -1
- package/dist/src/tui/components/ChecklistPanel.spec.js +0 -45
- package/dist/src/tui/components/ChecklistPanel.spec.js.map +0 -1
- package/dist/src/tui/components/ContextSection.js.map +0 -1
- package/dist/src/tui/components/EvalModeScreen.js.map +0 -1
- package/dist/src/tui/components/FlowMap.js.map +0 -1
- package/dist/src/tui/components/FlowMap.spec.d.ts +0 -1
- package/dist/src/tui/components/FlowMap.spec.js +0 -147
- package/dist/src/tui/components/FlowMap.spec.js.map +0 -1
- package/dist/src/tui/components/FocusedAgentPanel.js.map +0 -1
- package/dist/src/tui/components/FocusedAgentPanel.spec.d.ts +0 -1
- package/dist/src/tui/components/FocusedAgentPanel.spec.js +0 -183
- package/dist/src/tui/components/FocusedAgentPanel.spec.js.map +0 -1
- package/dist/src/tui/components/HeaderBar.js.map +0 -1
- package/dist/src/tui/components/HeaderBar.spec.d.ts +0 -1
- package/dist/src/tui/components/HeaderBar.spec.js +0 -96
- package/dist/src/tui/components/HeaderBar.spec.js.map +0 -1
- package/dist/src/tui/components/ModeScreenRouter.js.map +0 -1
- package/dist/src/tui/components/PlanModeScreen.js.map +0 -1
- package/dist/src/tui/components/SessionDashboard.js.map +0 -1
- package/dist/src/tui/components/SessionTabBar.js.map +0 -1
- package/dist/src/tui/components/SessionTabBar.spec.d.ts +0 -1
- package/dist/src/tui/components/SessionTabBar.spec.js +0 -59
- package/dist/src/tui/components/SessionTabBar.spec.js.map +0 -1
- package/dist/src/tui/components/StageHealthBar.js.map +0 -1
- package/dist/src/tui/components/StageHealthBar.spec.d.ts +0 -1
- package/dist/src/tui/components/StageHealthBar.spec.js +0 -99
- package/dist/src/tui/components/StageHealthBar.spec.js.map +0 -1
- package/dist/src/tui/components/act-screen.pure.js.map +0 -1
- package/dist/src/tui/components/activity-visualizer.pure.js.map +0 -1
- package/dist/src/tui/components/agent-discussion-panel.pure.js.map +0 -1
- package/dist/src/tui/components/checklist-panel.pure.js.map +0 -1
- package/dist/src/tui/components/context-section.pure.js.map +0 -1
- package/dist/src/tui/components/eval-screen.pure.js.map +0 -1
- package/dist/src/tui/components/flow-map.pure.js.map +0 -1
- package/dist/src/tui/components/focused-agent.pure.js.map +0 -1
- package/dist/src/tui/components/grid-layout.pure.js.map +0 -1
- package/dist/src/tui/components/index.js.map +0 -1
- package/dist/src/tui/components/live.pure.js.map +0 -1
- package/dist/src/tui/components/plan-screen.pure.js.map +0 -1
- package/dist/src/tui/components/session-dashboard.pure.js.map +0 -1
- package/dist/src/tui/components/session-tab-bar.pure.js.map +0 -1
- package/dist/src/tui/components/stage-health.pure.js.map +0 -1
- package/dist/src/tui/dashboard-app.js.map +0 -1
- package/dist/src/tui/dashboard-app.spec.d.ts +0 -1
- package/dist/src/tui/dashboard-app.spec.js +0 -158
- package/dist/src/tui/dashboard-app.spec.js.map +0 -1
- package/dist/src/tui/dashboard-types.js.map +0 -1
- package/dist/src/tui/ensure-tui-ready.js.map +0 -1
- package/dist/src/tui/eventbus-ui.integration.spec.d.ts +0 -1
- package/dist/src/tui/eventbus-ui.integration.spec.js +0 -577
- package/dist/src/tui/eventbus-ui.integration.spec.js.map +0 -1
- package/dist/src/tui/events/agent-metadata.service.js.map +0 -1
- package/dist/src/tui/events/agent-metadata.types.js.map +0 -1
- package/dist/src/tui/events/event-bus.js.map +0 -1
- package/dist/src/tui/events/events.module.js.map +0 -1
- package/dist/src/tui/events/hud-file-bridge.js.map +0 -1
- package/dist/src/tui/events/index.js.map +0 -1
- package/dist/src/tui/events/parse-agent.js.map +0 -1
- package/dist/src/tui/events/parse-tool-response.js.map +0 -1
- package/dist/src/tui/events/response-event-extractor.js.map +0 -1
- package/dist/src/tui/events/tui-interceptor.js.map +0 -1
- package/dist/src/tui/events/types.js.map +0 -1
- package/dist/src/tui/hooks/index.js.map +0 -1
- package/dist/src/tui/hooks/use-dashboard-state.js.map +0 -1
- package/dist/src/tui/hooks/use-focus-agent.js.map +0 -1
- package/dist/src/tui/hooks/use-multi-session-state.js.map +0 -1
- package/dist/src/tui/hooks/use-terminal-size.js.map +0 -1
- package/dist/src/tui/hooks/use-tick.js.map +0 -1
- package/dist/src/tui/hooks/use-tick.spec.d.ts +0 -1
- package/dist/src/tui/hooks/use-tick.spec.js +0 -70
- package/dist/src/tui/hooks/use-tick.spec.js.map +0 -1
- package/dist/src/tui/index.js.map +0 -1
- package/dist/src/tui/ipc/index.js.map +0 -1
- package/dist/src/tui/ipc/instance-registry.js.map +0 -1
- package/dist/src/tui/ipc/ipc-bridge.js.map +0 -1
- package/dist/src/tui/ipc/ipc-client.js.map +0 -1
- package/dist/src/tui/ipc/ipc-debug.js.map +0 -1
- package/dist/src/tui/ipc/ipc-server.js.map +0 -1
- package/dist/src/tui/ipc/ipc-state-cache.js.map +0 -1
- package/dist/src/tui/ipc/ipc.types.js.map +0 -1
- package/dist/src/tui/ipc/multi-session-manager.js.map +0 -1
- package/dist/src/tui/ipc/shutdown-manager.js.map +0 -1
- package/dist/src/tui/ipc/test-utils.js.map +0 -1
- package/dist/src/tui/ipc/tui-auto-launcher.js.map +0 -1
- package/dist/src/tui/multi-session-app.js.map +0 -1
- package/dist/src/tui/multi-session-app.spec.d.ts +0 -1
- package/dist/src/tui/multi-session-app.spec.js +0 -95
- package/dist/src/tui/multi-session-app.spec.js.map +0 -1
- package/dist/src/tui/transport-tui.integration.spec.d.ts +0 -1
- package/dist/src/tui/transport-tui.integration.spec.js +0 -189
- package/dist/src/tui/transport-tui.integration.spec.js.map +0 -1
- package/dist/src/tui/tui-config.js.map +0 -1
- package/dist/src/tui/types.js.map +0 -1
- package/dist/src/tui/utils/color-buffer.js.map +0 -1
- package/dist/src/tui/utils/colors.js.map +0 -1
- package/dist/src/tui/utils/display-width.js.map +0 -1
- package/dist/src/tui/utils/edge-router.js.map +0 -1
- package/dist/src/tui/utils/icons.js.map +0 -1
- package/dist/src/tui/utils/index.js.map +0 -1
- package/dist/src/tui/utils/theme.js.map +0 -1
- package/dist/tsconfig.build.tsbuildinfo +0 -1
package/README.md
CHANGED
|
@@ -21,6 +21,11 @@ npx codingbuddy init
|
|
|
21
21
|
|---------|-------------|
|
|
22
22
|
| `codingbuddy init` | Analyze project and generate configuration |
|
|
23
23
|
| `codingbuddy mcp` | Start MCP server (stdio mode by default) |
|
|
24
|
+
| `codingbuddy install <source>` | Install plugin from git URL or registry |
|
|
25
|
+
| `codingbuddy search <query>` | Search plugins in registry |
|
|
26
|
+
| `codingbuddy plugins` | List installed plugins |
|
|
27
|
+
| `codingbuddy update [name]` | Update outdated plugins |
|
|
28
|
+
| `codingbuddy uninstall <name>` | Uninstall plugin |
|
|
24
29
|
| `codingbuddy --help` | Show help |
|
|
25
30
|
| `codingbuddy --version` | Show version |
|
|
26
31
|
|
|
@@ -45,6 +50,10 @@ npx codingbuddy init
|
|
|
45
50
|
| `get_code_conventions` | **🆕** Get project code conventions from config files (tsconfig, eslint, prettier, editorconfig, markdownlint) |
|
|
46
51
|
| `generate_checklist` | Generate contextual checklists including conventions domain |
|
|
47
52
|
| `analyze_task` | Comprehensive task analysis with risk assessment |
|
|
53
|
+
| `pr_quality_report` | Run specialist agents on changed files for PR quality |
|
|
54
|
+
| `create_briefing` | Capture session state for cross-session recovery |
|
|
55
|
+
| `resume_session` | Load previous session briefing |
|
|
56
|
+
| `get_rule_impact_report` | Rule effectiveness analytics |
|
|
48
57
|
|
|
49
58
|
### MCP Prompts
|
|
50
59
|
|
|
@@ -31,6 +31,40 @@ const MODE_TASK_PREFIXES = {
|
|
|
31
31
|
EVAL: 'review',
|
|
32
32
|
AUTO: 'autonomous execution',
|
|
33
33
|
};
|
|
34
|
+
const MAX_LIST_ITEMS = 10;
|
|
35
|
+
function trimList(items, maxItems = MAX_LIST_ITEMS) {
|
|
36
|
+
if (items.length <= maxItems)
|
|
37
|
+
return items;
|
|
38
|
+
const remaining = items.length - maxItems;
|
|
39
|
+
return [...items.slice(0, maxItems), `... and ${remaining} more`];
|
|
40
|
+
}
|
|
41
|
+
function renderValueAsText(value, sections, indent = '') {
|
|
42
|
+
if (Array.isArray(value)) {
|
|
43
|
+
for (const item of value) {
|
|
44
|
+
if (item && typeof item === 'object') {
|
|
45
|
+
renderValueAsText(item, sections, indent);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
sections.push(`${indent}- ${item}`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
else if (value && typeof value === 'object') {
|
|
53
|
+
for (const [key, val] of Object.entries(value)) {
|
|
54
|
+
if (Array.isArray(val)) {
|
|
55
|
+
sections.push(`${indent}- **${key}**:`);
|
|
56
|
+
renderValueAsText(val, sections, indent + ' ');
|
|
57
|
+
}
|
|
58
|
+
else if (val && typeof val === 'object') {
|
|
59
|
+
sections.push(`${indent}- **${key}**:`);
|
|
60
|
+
renderValueAsText(val, sections, indent + ' ');
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
sections.push(`${indent}- **${key}**: ${val}`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
34
68
|
function buildAgentSystemPrompt(agentProfile, context) {
|
|
35
69
|
const sections = [];
|
|
36
70
|
sections.push(`# ${agentProfile.name}`);
|
|
@@ -52,11 +86,110 @@ function buildAgentSystemPrompt(agentProfile, context) {
|
|
|
52
86
|
}
|
|
53
87
|
sections.push('');
|
|
54
88
|
}
|
|
89
|
+
const rawProfile = agentProfile;
|
|
90
|
+
const activation = rawProfile.activation;
|
|
91
|
+
const activationChecklist = activation?.mandatory_checklist;
|
|
92
|
+
if (activationChecklist &&
|
|
93
|
+
typeof activationChecklist === 'object' &&
|
|
94
|
+
!Array.isArray(activationChecklist)) {
|
|
95
|
+
sections.push('## Mandatory Checklist');
|
|
96
|
+
const items = [];
|
|
97
|
+
for (const [name, item] of Object.entries(activationChecklist)) {
|
|
98
|
+
if (item && typeof item === 'object' && 'rule' in item) {
|
|
99
|
+
items.push(`- [${name}] ${item.rule}`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
for (const line of trimList(items)) {
|
|
103
|
+
sections.push(line);
|
|
104
|
+
}
|
|
105
|
+
sections.push('');
|
|
106
|
+
}
|
|
107
|
+
else if (Array.isArray(rawProfile.mandatory_checklist) &&
|
|
108
|
+
rawProfile.mandatory_checklist.length) {
|
|
109
|
+
sections.push('## Mandatory Checklist');
|
|
110
|
+
const items = rawProfile.mandatory_checklist.map((item) => `- ${item}`);
|
|
111
|
+
for (const line of trimList(items)) {
|
|
112
|
+
sections.push(line);
|
|
113
|
+
}
|
|
114
|
+
sections.push('');
|
|
115
|
+
}
|
|
116
|
+
const comm = rawProfile.communication;
|
|
117
|
+
if (comm?.language) {
|
|
118
|
+
sections.push('## Communication');
|
|
119
|
+
sections.push(`IMPORTANT: Always respond in ${comm.language}.`);
|
|
120
|
+
sections.push('');
|
|
121
|
+
}
|
|
122
|
+
const skills = rawProfile.skills;
|
|
123
|
+
if (skills?.required?.length) {
|
|
124
|
+
sections.push('## Required Skills');
|
|
125
|
+
for (const s of skills.required) {
|
|
126
|
+
sections.push(`- **${s.name}**: ${s.purpose} (when: ${s.when})`);
|
|
127
|
+
}
|
|
128
|
+
sections.push('');
|
|
129
|
+
}
|
|
130
|
+
if (skills?.recommended?.length) {
|
|
131
|
+
sections.push('## Recommended Skills');
|
|
132
|
+
for (const s of skills.recommended) {
|
|
133
|
+
sections.push(`- **${s.name}**: ${s.purpose} (when: ${s.when})`);
|
|
134
|
+
}
|
|
135
|
+
sections.push('');
|
|
136
|
+
}
|
|
55
137
|
sections.push('## Current Mode');
|
|
56
138
|
sections.push(`Mode: ${context.mode}`);
|
|
57
139
|
sections.push('');
|
|
58
|
-
|
|
59
|
-
|
|
140
|
+
const modesObj = rawProfile.modes;
|
|
141
|
+
const modeKey = context.mode.toLowerCase();
|
|
142
|
+
const agentModeConfig = modesObj?.[modeKey];
|
|
143
|
+
if (agentModeConfig && typeof agentModeConfig === 'object') {
|
|
144
|
+
sections.push('## Mode-Specific Instructions');
|
|
145
|
+
renderValueAsText(agentModeConfig, sections);
|
|
146
|
+
sections.push('');
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
sections.push(MODE_INSTRUCTIONS[context.mode]);
|
|
150
|
+
sections.push('');
|
|
151
|
+
}
|
|
152
|
+
const verificationGuide = activation?.verification_guide ?? rawProfile.verification_guide;
|
|
153
|
+
if (Array.isArray(verificationGuide) && verificationGuide.length) {
|
|
154
|
+
sections.push('## Verification Guide');
|
|
155
|
+
const items = verificationGuide.map((step) => `- ${step}`);
|
|
156
|
+
for (const line of trimList(items)) {
|
|
157
|
+
sections.push(line);
|
|
158
|
+
}
|
|
159
|
+
sections.push('');
|
|
160
|
+
}
|
|
161
|
+
else if (verificationGuide && typeof verificationGuide === 'object') {
|
|
162
|
+
sections.push('## Verification Guide');
|
|
163
|
+
const items = [];
|
|
164
|
+
for (const [key, desc] of Object.entries(verificationGuide)) {
|
|
165
|
+
items.push(`- **${key}**: ${desc}`);
|
|
166
|
+
}
|
|
167
|
+
for (const line of trimList(items)) {
|
|
168
|
+
sections.push(line);
|
|
169
|
+
}
|
|
170
|
+
sections.push('');
|
|
171
|
+
}
|
|
172
|
+
const executionOrder = activation?.execution_order;
|
|
173
|
+
if (executionOrder && typeof executionOrder === 'object' && !Array.isArray(executionOrder)) {
|
|
174
|
+
sections.push('## Execution Order');
|
|
175
|
+
for (const [phase, steps] of Object.entries(executionOrder)) {
|
|
176
|
+
if (Array.isArray(steps) && steps.length) {
|
|
177
|
+
sections.push(`### ${phase}`);
|
|
178
|
+
for (const line of trimList(steps)) {
|
|
179
|
+
sections.push(line);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
sections.push('');
|
|
184
|
+
}
|
|
185
|
+
else if (Array.isArray(executionOrder) && executionOrder.length) {
|
|
186
|
+
sections.push('## Execution Order');
|
|
187
|
+
const items = executionOrder.map((step, i) => `${i + 1}. ${step}`);
|
|
188
|
+
for (const line of trimList(items)) {
|
|
189
|
+
sections.push(line);
|
|
190
|
+
}
|
|
191
|
+
sections.push('');
|
|
192
|
+
}
|
|
60
193
|
sections.push('## Task Context');
|
|
61
194
|
if (context.taskDescription) {
|
|
62
195
|
sections.push(`Task: ${context.taskDescription}`);
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.loadAgentStack = loadAgentStack;
|
|
4
|
+
exports.loadAgentStacks = loadAgentStacks;
|
|
5
|
+
const promises_1 = require("fs/promises");
|
|
6
|
+
const path_1 = require("path");
|
|
7
|
+
const agent_stack_schema_1 = require("./agent-stack.schema");
|
|
8
|
+
async function loadAgentStack(filePath) {
|
|
9
|
+
const raw = await (0, promises_1.readFile)(filePath, 'utf-8');
|
|
10
|
+
const data = JSON.parse(raw);
|
|
11
|
+
const result = agent_stack_schema_1.AgentStackSchema.safeParse(data);
|
|
12
|
+
if (!result.success) {
|
|
13
|
+
const errors = result.error.issues.map(i => `${i.path.join('.')}: ${i.message}`).join(', ');
|
|
14
|
+
throw new Error(`Invalid agent stack in ${filePath}: ${errors}`);
|
|
15
|
+
}
|
|
16
|
+
return result.data;
|
|
17
|
+
}
|
|
18
|
+
async function loadAgentStacks(dirPath) {
|
|
19
|
+
let entries;
|
|
20
|
+
try {
|
|
21
|
+
entries = await (0, promises_1.readdir)(dirPath, { withFileTypes: true });
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return [];
|
|
25
|
+
}
|
|
26
|
+
const jsonFiles = entries.filter(e => e.isFile() && e.name.endsWith('.json'));
|
|
27
|
+
const stacks = [];
|
|
28
|
+
for (const entry of jsonFiles) {
|
|
29
|
+
try {
|
|
30
|
+
const stack = await loadAgentStack((0, path_1.join)(dirPath, entry.name));
|
|
31
|
+
stacks.push(stack);
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return stacks;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=agent-stack.loader.js.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
2
|
+
export declare const AgentStackSchema: z.ZodObject<{
|
|
3
|
+
name: z.ZodString;
|
|
4
|
+
description: z.ZodString;
|
|
5
|
+
category: z.ZodString;
|
|
6
|
+
tags: z.ZodArray<z.ZodString>;
|
|
7
|
+
primary_agent: z.ZodString;
|
|
8
|
+
specialist_agents: z.ZodArray<z.ZodString>;
|
|
9
|
+
recommended_for: z.ZodOptional<z.ZodObject<{
|
|
10
|
+
file_patterns: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
11
|
+
modes: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
12
|
+
}, z.z.core.$strip>>;
|
|
13
|
+
}, z.z.core.$strip>;
|
|
14
|
+
export type ValidatedAgentStack = z.infer<typeof AgentStackSchema>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AgentStackSchema = void 0;
|
|
4
|
+
const z = require("zod");
|
|
5
|
+
exports.AgentStackSchema = z.object({
|
|
6
|
+
name: z.string(),
|
|
7
|
+
description: z.string(),
|
|
8
|
+
category: z.string(),
|
|
9
|
+
tags: z.array(z.string()),
|
|
10
|
+
primary_agent: z.string(),
|
|
11
|
+
specialist_agents: z.array(z.string()),
|
|
12
|
+
recommended_for: z
|
|
13
|
+
.object({
|
|
14
|
+
file_patterns: z.array(z.string()).optional(),
|
|
15
|
+
modes: z.array(z.string()).optional(),
|
|
16
|
+
})
|
|
17
|
+
.optional(),
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=agent-stack.schema.js.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { RulesService } from '../rules/rules.service';
|
|
2
|
+
import { ConfigService } from '../config/config.service';
|
|
3
|
+
import type { AgentStack, AgentStackSummary } from './agent.types';
|
|
4
|
+
export declare class AgentStackService {
|
|
5
|
+
private readonly rulesService;
|
|
6
|
+
private readonly configService;
|
|
7
|
+
private readonly logger;
|
|
8
|
+
constructor(rulesService: RulesService, configService: ConfigService);
|
|
9
|
+
listStacks(category?: string): Promise<AgentStackSummary[]>;
|
|
10
|
+
resolveStack(stackName: string): Promise<AgentStack>;
|
|
11
|
+
private loadStacksFromDir;
|
|
12
|
+
private loadStackFile;
|
|
13
|
+
private isValidStack;
|
|
14
|
+
private toSummary;
|
|
15
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var AgentStackService_1;
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.AgentStackService = void 0;
|
|
14
|
+
const common_1 = require("@nestjs/common");
|
|
15
|
+
const fs = require("fs/promises");
|
|
16
|
+
const path = require("path");
|
|
17
|
+
const rules_service_1 = require("../rules/rules.service");
|
|
18
|
+
const config_service_1 = require("../config/config.service");
|
|
19
|
+
const AGENT_STACKS_DIR = 'agent-stacks';
|
|
20
|
+
const CUSTOM_STACKS_DIR = '.codingbuddy/agent-stacks';
|
|
21
|
+
let AgentStackService = AgentStackService_1 = class AgentStackService {
|
|
22
|
+
constructor(rulesService, configService) {
|
|
23
|
+
this.rulesService = rulesService;
|
|
24
|
+
this.configService = configService;
|
|
25
|
+
this.logger = new common_1.Logger(AgentStackService_1.name);
|
|
26
|
+
}
|
|
27
|
+
async listStacks(category) {
|
|
28
|
+
const stackMap = new Map();
|
|
29
|
+
const defaultDir = path.join(this.rulesService.getRulesDir(), AGENT_STACKS_DIR);
|
|
30
|
+
const defaultStacks = await this.loadStacksFromDir(defaultDir);
|
|
31
|
+
for (const stack of defaultStacks) {
|
|
32
|
+
stackMap.set(stack.name, stack);
|
|
33
|
+
}
|
|
34
|
+
const customDir = path.join(this.configService.getProjectRoot(), CUSTOM_STACKS_DIR);
|
|
35
|
+
const customStacks = await this.loadStacksFromDir(customDir);
|
|
36
|
+
for (const stack of customStacks) {
|
|
37
|
+
stackMap.set(stack.name, stack);
|
|
38
|
+
}
|
|
39
|
+
let stacks = Array.from(stackMap.values());
|
|
40
|
+
if (category) {
|
|
41
|
+
stacks = stacks.filter(s => s.category === category);
|
|
42
|
+
}
|
|
43
|
+
return stacks.map(this.toSummary);
|
|
44
|
+
}
|
|
45
|
+
async resolveStack(stackName) {
|
|
46
|
+
const customDir = path.join(this.configService.getProjectRoot(), CUSTOM_STACKS_DIR);
|
|
47
|
+
const customStack = await this.loadStackFile(path.join(customDir, `${stackName}.json`));
|
|
48
|
+
if (customStack)
|
|
49
|
+
return customStack;
|
|
50
|
+
const defaultDir = path.join(this.rulesService.getRulesDir(), AGENT_STACKS_DIR);
|
|
51
|
+
const defaultStack = await this.loadStackFile(path.join(defaultDir, `${stackName}.json`));
|
|
52
|
+
if (defaultStack)
|
|
53
|
+
return defaultStack;
|
|
54
|
+
throw new Error(`Agent stack '${stackName}' not found`);
|
|
55
|
+
}
|
|
56
|
+
async loadStacksFromDir(dirPath) {
|
|
57
|
+
let entries;
|
|
58
|
+
try {
|
|
59
|
+
entries = (await fs.readdir(dirPath));
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return [];
|
|
63
|
+
}
|
|
64
|
+
const stacks = [];
|
|
65
|
+
for (const entry of entries) {
|
|
66
|
+
if (!entry.endsWith('.json'))
|
|
67
|
+
continue;
|
|
68
|
+
const stack = await this.loadStackFile(path.join(dirPath, entry));
|
|
69
|
+
if (stack)
|
|
70
|
+
stacks.push(stack);
|
|
71
|
+
}
|
|
72
|
+
return stacks;
|
|
73
|
+
}
|
|
74
|
+
async loadStackFile(filePath) {
|
|
75
|
+
try {
|
|
76
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
77
|
+
const parsed = JSON.parse(content);
|
|
78
|
+
if (!this.isValidStack(parsed)) {
|
|
79
|
+
this.logger.warn(`Invalid agent stack file (missing required fields): ${filePath}`);
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
return parsed;
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
isValidStack(obj) {
|
|
89
|
+
return (typeof obj.name === 'string' &&
|
|
90
|
+
typeof obj.description === 'string' &&
|
|
91
|
+
typeof obj.category === 'string' &&
|
|
92
|
+
typeof obj.primary_agent === 'string' &&
|
|
93
|
+
Array.isArray(obj.specialist_agents));
|
|
94
|
+
}
|
|
95
|
+
toSummary(stack) {
|
|
96
|
+
return {
|
|
97
|
+
name: stack.name,
|
|
98
|
+
description: stack.description,
|
|
99
|
+
category: stack.category,
|
|
100
|
+
primary_agent: stack.primary_agent,
|
|
101
|
+
specialist_count: stack.specialist_agents.length,
|
|
102
|
+
tags: stack.tags,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
exports.AgentStackService = AgentStackService;
|
|
107
|
+
exports.AgentStackService = AgentStackService = AgentStackService_1 = __decorate([
|
|
108
|
+
(0, common_1.Injectable)(),
|
|
109
|
+
__metadata("design:paramtypes", [rules_service_1.RulesService,
|
|
110
|
+
config_service_1.ConfigService])
|
|
111
|
+
], AgentStackService);
|
|
112
|
+
//# sourceMappingURL=agent-stack.service.js.map
|
|
@@ -9,6 +9,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
9
9
|
exports.AgentModule = void 0;
|
|
10
10
|
const common_1 = require("@nestjs/common");
|
|
11
11
|
const agent_service_1 = require("./agent.service");
|
|
12
|
+
const agent_stack_service_1 = require("./agent-stack.service");
|
|
13
|
+
const council_preset_service_1 = require("./council-preset.service");
|
|
14
|
+
const teams_capability_service_1 = require("./teams-capability.service");
|
|
12
15
|
const rules_module_1 = require("../rules/rules.module");
|
|
13
16
|
const custom_1 = require("../custom");
|
|
14
17
|
const config_module_1 = require("../config/config.module");
|
|
@@ -18,8 +21,8 @@ exports.AgentModule = AgentModule;
|
|
|
18
21
|
exports.AgentModule = AgentModule = __decorate([
|
|
19
22
|
(0, common_1.Module)({
|
|
20
23
|
imports: [rules_module_1.RulesModule, custom_1.CustomModule, config_module_1.CodingBuddyConfigModule],
|
|
21
|
-
providers: [agent_service_1.AgentService],
|
|
22
|
-
exports: [agent_service_1.AgentService],
|
|
24
|
+
providers: [agent_service_1.AgentService, agent_stack_service_1.AgentStackService, council_preset_service_1.CouncilPresetService, teams_capability_service_1.TeamsCapabilityService],
|
|
25
|
+
exports: [agent_service_1.AgentService, agent_stack_service_1.AgentStackService, council_preset_service_1.CouncilPresetService, teams_capability_service_1.TeamsCapabilityService],
|
|
23
26
|
})
|
|
24
27
|
], AgentModule);
|
|
25
28
|
//# sourceMappingURL=agent.module.js.map
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { RulesService } from '../rules/rules.service';
|
|
2
2
|
import { CustomService } from '../custom';
|
|
3
3
|
import { ConfigService } from '../config/config.service';
|
|
4
|
+
import { TeamsCapabilityService } from './teams-capability.service';
|
|
4
5
|
import type { Mode } from '../keyword/keyword.types';
|
|
5
6
|
import type { AgentProfile } from '../rules/rules.types';
|
|
6
7
|
import type { AgentContext, AgentSystemPrompt, InlineAgentDefinition, ParallelAgentSet, DispatchAgentsInput, DispatchResult } from './agent.types';
|
|
@@ -9,8 +10,9 @@ export declare class AgentService {
|
|
|
9
10
|
private readonly rulesService;
|
|
10
11
|
private readonly customService;
|
|
11
12
|
private readonly configService;
|
|
13
|
+
private readonly teamsCapability;
|
|
12
14
|
private readonly logger;
|
|
13
|
-
constructor(rulesService: RulesService, customService: CustomService, configService: ConfigService);
|
|
15
|
+
constructor(rulesService: RulesService, customService: CustomService, configService: ConfigService, teamsCapability: TeamsCapabilityService);
|
|
14
16
|
getAgentSystemPrompt(agentName: string, context: AgentContext, inlineAgents?: Record<string, InlineAgentDefinition>): Promise<AgentSystemPrompt>;
|
|
15
17
|
prepareParallelAgents(mode: Mode, specialists: string[], targetFiles?: string[], sharedContext?: string, verbosity?: VerbosityLevel, inlineAgents?: Record<string, InlineAgentDefinition>): Promise<ParallelAgentSet>;
|
|
16
18
|
private loadAgents;
|
|
@@ -19,8 +21,13 @@ export declare class AgentService {
|
|
|
19
21
|
getRecommendedAgents(modeDefaults: string[], files: string[]): string[];
|
|
20
22
|
private addFilePatternAgents;
|
|
21
23
|
dispatchAgents(input: DispatchAgentsInput): Promise<DispatchResult>;
|
|
24
|
+
private dispatchTaskmaestro;
|
|
25
|
+
private dispatchTeams;
|
|
26
|
+
private dispatchSubagent;
|
|
27
|
+
private dispatchComposable;
|
|
22
28
|
private buildTaskmaestroPrompt;
|
|
23
29
|
private buildTaskmaestroHint;
|
|
24
30
|
private buildTeamsHint;
|
|
31
|
+
private buildComposableHint;
|
|
25
32
|
resolveAgent(agentName: string, inlineAgents?: Record<string, InlineAgentDefinition>): Promise<AgentProfile>;
|
|
26
33
|
}
|
|
@@ -15,15 +15,18 @@ const common_1 = require("@nestjs/common");
|
|
|
15
15
|
const rules_service_1 = require("../rules/rules.service");
|
|
16
16
|
const custom_1 = require("../custom");
|
|
17
17
|
const config_service_1 = require("../config/config.service");
|
|
18
|
+
const teams_capability_service_1 = require("./teams-capability.service");
|
|
18
19
|
const agent_types_1 = require("./agent.types");
|
|
19
20
|
const agent_prompt_builder_1 = require("./agent-prompt.builder");
|
|
20
21
|
const agent_summary_utils_1 = require("./agent-summary.utils");
|
|
22
|
+
const execution_plan_1 = require("./execution-plan");
|
|
21
23
|
const verbosity_types_1 = require("../shared/verbosity.types");
|
|
22
24
|
let AgentService = AgentService_1 = class AgentService {
|
|
23
|
-
constructor(rulesService, customService, configService) {
|
|
25
|
+
constructor(rulesService, customService, configService, teamsCapability) {
|
|
24
26
|
this.rulesService = rulesService;
|
|
25
27
|
this.customService = customService;
|
|
26
28
|
this.configService = configService;
|
|
29
|
+
this.teamsCapability = teamsCapability;
|
|
27
30
|
this.logger = new common_1.Logger(AgentService_1.name);
|
|
28
31
|
}
|
|
29
32
|
async getAgentSystemPrompt(agentName, context, inlineAgents) {
|
|
@@ -146,48 +149,64 @@ let AgentService = AgentService_1 = class AgentService {
|
|
|
146
149
|
result.failedAgents = [...(result.failedAgents || []), { id: input.primaryAgent, reason }];
|
|
147
150
|
}
|
|
148
151
|
}
|
|
152
|
+
if (input.executionStrategy === 'taskmaestro+teams' && input.specialists?.length) {
|
|
153
|
+
return this.dispatchComposable(input, context, result);
|
|
154
|
+
}
|
|
149
155
|
if (input.executionStrategy === 'taskmaestro' && input.specialists?.length) {
|
|
150
|
-
|
|
151
|
-
const { agents, failedAgents } = await this.loadAgents(uniqueSpecialists, context, true, input.inlineAgents);
|
|
152
|
-
const assignments = agents.map(agent => ({
|
|
153
|
-
name: agent.id,
|
|
154
|
-
displayName: agent.displayName,
|
|
155
|
-
prompt: this.buildTaskmaestroPrompt(agent, input),
|
|
156
|
-
}));
|
|
157
|
-
return {
|
|
158
|
-
primaryAgent: result.primaryAgent,
|
|
159
|
-
taskmaestro: {
|
|
160
|
-
sessionName: `${(input.mode ?? 'eval').toLowerCase()}-specialists`,
|
|
161
|
-
paneCount: assignments.length,
|
|
162
|
-
assignments,
|
|
163
|
-
},
|
|
164
|
-
executionStrategy: 'taskmaestro',
|
|
165
|
-
executionHint: this.buildTaskmaestroHint(assignments.length),
|
|
166
|
-
failedAgents: failedAgents.length > 0 ? failedAgents : result.failedAgents,
|
|
167
|
-
};
|
|
156
|
+
return this.dispatchTaskmaestro(input, context, result);
|
|
168
157
|
}
|
|
169
158
|
if (input.executionStrategy === 'teams' && input.specialists?.length) {
|
|
170
|
-
|
|
171
|
-
const teamName = `${(input.mode ?? 'eval').toLowerCase()}-specialists`;
|
|
172
|
-
const { agents, failedAgents } = await this.loadAgents(uniqueSpecialists, context, true, input.inlineAgents);
|
|
173
|
-
const teammates = agents.map(agent => ({
|
|
174
|
-
name: agent.id,
|
|
175
|
-
subagent_type: 'general-purpose',
|
|
176
|
-
team_name: teamName,
|
|
177
|
-
prompt: agent.taskPrompt || `Perform ${agent.displayName} analysis in ${input.mode} mode`,
|
|
178
|
-
}));
|
|
179
|
-
return {
|
|
180
|
-
primaryAgent: result.primaryAgent,
|
|
181
|
-
teams: {
|
|
182
|
-
team_name: teamName,
|
|
183
|
-
description: `${input.mode} mode specialist team`,
|
|
184
|
-
teammates,
|
|
185
|
-
},
|
|
186
|
-
executionStrategy: 'teams',
|
|
187
|
-
executionHint: this.buildTeamsHint(teamName, teammates.length),
|
|
188
|
-
failedAgents: failedAgents.length > 0 ? failedAgents : result.failedAgents,
|
|
189
|
-
};
|
|
159
|
+
return this.dispatchTeams(input, context, result);
|
|
190
160
|
}
|
|
161
|
+
return this.dispatchSubagent(input, context, result);
|
|
162
|
+
}
|
|
163
|
+
async dispatchTaskmaestro(input, context, result) {
|
|
164
|
+
const uniqueSpecialists = Array.from(new Set(input.specialists));
|
|
165
|
+
const { agents, failedAgents } = await this.loadAgents(uniqueSpecialists, context, true, input.inlineAgents);
|
|
166
|
+
const assignments = agents.map(agent => ({
|
|
167
|
+
name: agent.id,
|
|
168
|
+
displayName: agent.displayName,
|
|
169
|
+
prompt: this.buildTaskmaestroPrompt(agent, input),
|
|
170
|
+
}));
|
|
171
|
+
const tmDispatch = {
|
|
172
|
+
sessionName: `${(input.mode ?? 'eval').toLowerCase()}-specialists`,
|
|
173
|
+
paneCount: assignments.length,
|
|
174
|
+
assignments,
|
|
175
|
+
};
|
|
176
|
+
return {
|
|
177
|
+
primaryAgent: result.primaryAgent,
|
|
178
|
+
taskmaestro: tmDispatch,
|
|
179
|
+
executionStrategy: 'taskmaestro',
|
|
180
|
+
executionHint: this.buildTaskmaestroHint(assignments.length),
|
|
181
|
+
executionPlan: (0, execution_plan_1.buildSimplePlan)((0, execution_plan_1.taskmaestroLayer)(tmDispatch)),
|
|
182
|
+
failedAgents: failedAgents.length > 0 ? failedAgents : result.failedAgents,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
async dispatchTeams(input, context, result) {
|
|
186
|
+
const uniqueSpecialists = Array.from(new Set(input.specialists));
|
|
187
|
+
const teamName = `${(input.mode ?? 'eval').toLowerCase()}-specialists`;
|
|
188
|
+
const { agents, failedAgents } = await this.loadAgents(uniqueSpecialists, context, true, input.inlineAgents);
|
|
189
|
+
const teammates = agents.map(agent => ({
|
|
190
|
+
name: agent.id,
|
|
191
|
+
subagent_type: 'general-purpose',
|
|
192
|
+
team_name: teamName,
|
|
193
|
+
prompt: agent.taskPrompt || `Perform ${agent.displayName} analysis in ${input.mode} mode`,
|
|
194
|
+
}));
|
|
195
|
+
const teamsConfig = {
|
|
196
|
+
team_name: teamName,
|
|
197
|
+
description: `${input.mode} mode specialist team`,
|
|
198
|
+
teammates,
|
|
199
|
+
};
|
|
200
|
+
return {
|
|
201
|
+
primaryAgent: result.primaryAgent,
|
|
202
|
+
teams: teamsConfig,
|
|
203
|
+
executionStrategy: 'teams',
|
|
204
|
+
executionHint: this.buildTeamsHint(teamName, teammates.length),
|
|
205
|
+
executionPlan: (0, execution_plan_1.buildSimplePlan)((0, execution_plan_1.teamsLayer)(teamsConfig)),
|
|
206
|
+
failedAgents: failedAgents.length > 0 ? failedAgents : result.failedAgents,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
async dispatchSubagent(input, context, result) {
|
|
191
210
|
if (input.includeParallel && input.specialists?.length) {
|
|
192
211
|
const uniqueSpecialists = Array.from(new Set(input.specialists));
|
|
193
212
|
const { agents, failedAgents } = await this.loadAgents(uniqueSpecialists, context, true, input.inlineAgents);
|
|
@@ -205,10 +224,63 @@ let AgentService = AgentService_1 = class AgentService {
|
|
|
205
224
|
if (failedAgents.length > 0) {
|
|
206
225
|
result.failedAgents = failedAgents;
|
|
207
226
|
}
|
|
227
|
+
result.executionPlan = (0, execution_plan_1.buildSimplePlan)((0, execution_plan_1.subagentLayer)(result.parallelAgents));
|
|
208
228
|
}
|
|
209
229
|
result.executionStrategy = 'subagent';
|
|
210
230
|
return result;
|
|
211
231
|
}
|
|
232
|
+
async dispatchComposable(input, context, result) {
|
|
233
|
+
const teamsAvailable = await this.teamsCapability.isAvailable();
|
|
234
|
+
if (!teamsAvailable) {
|
|
235
|
+
this.logger.debug('Teams capability disabled — falling back to pure TaskMaestro for composable dispatch');
|
|
236
|
+
return this.dispatchTaskmaestro(input, context, result);
|
|
237
|
+
}
|
|
238
|
+
const uniqueSpecialists = Array.from(new Set(input.specialists));
|
|
239
|
+
const teamName = `${(input.mode ?? 'eval').toLowerCase()}-specialists`;
|
|
240
|
+
const { agents, failedAgents } = await this.loadAgents(uniqueSpecialists, context, true, input.inlineAgents);
|
|
241
|
+
const assignments = agents.map(agent => ({
|
|
242
|
+
name: agent.id,
|
|
243
|
+
displayName: agent.displayName,
|
|
244
|
+
prompt: this.buildTaskmaestroPrompt(agent, input),
|
|
245
|
+
innerCoordination: {
|
|
246
|
+
type: 'teams',
|
|
247
|
+
teamSpec: {
|
|
248
|
+
team_name: teamName,
|
|
249
|
+
description: `${input.mode} mode specialist team (coordinated within TaskMaestro panes)`,
|
|
250
|
+
},
|
|
251
|
+
teammates: agents.map(a => ({
|
|
252
|
+
name: a.id,
|
|
253
|
+
subagent_type: 'general-purpose',
|
|
254
|
+
})),
|
|
255
|
+
},
|
|
256
|
+
}));
|
|
257
|
+
const tmDispatch = {
|
|
258
|
+
sessionName: teamName,
|
|
259
|
+
paneCount: assignments.length,
|
|
260
|
+
assignments,
|
|
261
|
+
};
|
|
262
|
+
const teammates = agents.map(agent => ({
|
|
263
|
+
name: agent.id,
|
|
264
|
+
subagent_type: 'general-purpose',
|
|
265
|
+
team_name: teamName,
|
|
266
|
+
prompt: agent.taskPrompt || `Perform ${agent.displayName} analysis in ${input.mode} mode`,
|
|
267
|
+
}));
|
|
268
|
+
const teamsConfig = {
|
|
269
|
+
team_name: teamName,
|
|
270
|
+
description: `${input.mode} mode specialist team (coordinated within TaskMaestro panes)`,
|
|
271
|
+
teammates,
|
|
272
|
+
};
|
|
273
|
+
const executionPlan = (0, execution_plan_1.buildNestedPlan)((0, execution_plan_1.taskmaestroLayer)(tmDispatch), (0, execution_plan_1.teamsLayer)(teamsConfig));
|
|
274
|
+
return {
|
|
275
|
+
primaryAgent: result.primaryAgent,
|
|
276
|
+
taskmaestro: tmDispatch,
|
|
277
|
+
teams: teamsConfig,
|
|
278
|
+
executionStrategy: 'taskmaestro+teams',
|
|
279
|
+
executionHint: this.buildComposableHint(teamName, assignments.length),
|
|
280
|
+
executionPlan,
|
|
281
|
+
failedAgents: failedAgents.length > 0 ? failedAgents : result.failedAgents,
|
|
282
|
+
};
|
|
283
|
+
}
|
|
212
284
|
buildTaskmaestroPrompt(agent, input) {
|
|
213
285
|
const taskContext = input.taskDescription ? `\n\n**Task:** ${input.taskDescription}` : '';
|
|
214
286
|
const fileContext = input.targetFiles?.length
|
|
@@ -241,6 +313,19 @@ When done, provide a summary of all findings.`;
|
|
|
241
313
|
4. Monitor via TaskList — teammates coordinate via shared task list
|
|
242
314
|
5. Collect results when all teammates go idle
|
|
243
315
|
6. Shutdown teammates via SendMessage with shutdown_request`;
|
|
316
|
+
}
|
|
317
|
+
buildComposableHint(teamName, paneCount) {
|
|
318
|
+
return `Composable execution (TaskMaestro + Teams):
|
|
319
|
+
Outer — TaskMaestro manages ${paneCount} tmux pane(s):
|
|
320
|
+
1. /taskmaestro start --panes ${paneCount}
|
|
321
|
+
2. Assign each pane its specialist prompt
|
|
322
|
+
Inner — Teams coordinates within panes:
|
|
323
|
+
1. Each pane worker uses TeamCreate: { team_name: "${teamName}" }
|
|
324
|
+
2. Workers share task list for coordination
|
|
325
|
+
3. Monitor via TaskList and /taskmaestro status
|
|
326
|
+
Teardown:
|
|
327
|
+
1. Shutdown teammates via SendMessage with shutdown_request
|
|
328
|
+
2. /taskmaestro stop all`;
|
|
244
329
|
}
|
|
245
330
|
async resolveAgent(agentName, inlineAgents) {
|
|
246
331
|
if (inlineAgents?.[agentName]) {
|
|
@@ -279,6 +364,7 @@ exports.AgentService = AgentService = AgentService_1 = __decorate([
|
|
|
279
364
|
(0, common_1.Injectable)(),
|
|
280
365
|
__metadata("design:paramtypes", [rules_service_1.RulesService,
|
|
281
366
|
custom_1.CustomService,
|
|
282
|
-
config_service_1.ConfigService
|
|
367
|
+
config_service_1.ConfigService,
|
|
368
|
+
teams_capability_service_1.TeamsCapabilityService])
|
|
283
369
|
], AgentService);
|
|
284
370
|
//# sourceMappingURL=agent.service.js.map
|