codingbuddy 5.2.0 → 5.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/agent/agent-prompt.builder.js +135 -2
- package/dist/src/agent/agent-stack.loader.d.ts +3 -0
- package/dist/src/agent/agent-stack.loader.js +38 -0
- package/dist/src/agent/agent-stack.schema.d.ts +14 -0
- package/dist/src/agent/agent-stack.schema.js +19 -0
- package/dist/src/agent/agent-stack.service.d.ts +15 -0
- package/dist/src/agent/agent-stack.service.js +112 -0
- package/dist/src/agent/agent.module.js +5 -2
- package/dist/src/agent/agent.service.d.ts +8 -1
- package/dist/src/agent/agent.service.js +126 -40
- package/dist/src/agent/agent.types.d.ts +26 -46
- package/dist/src/agent/council-preset.service.d.ts +6 -0
- package/dist/src/agent/council-preset.service.js +46 -0
- package/dist/src/agent/council-preset.types.d.ts +6 -0
- package/dist/src/agent/council-preset.types.js +3 -0
- package/dist/src/agent/execution-plan.d.ts +8 -0
- package/dist/src/agent/execution-plan.js +73 -0
- package/dist/src/agent/execution-plan.types.d.ts +74 -0
- package/dist/src/agent/execution-plan.types.js +3 -0
- package/dist/src/agent/index.d.ts +9 -0
- package/dist/src/agent/index.js +9 -0
- package/dist/src/agent/stack-matcher.d.ts +13 -0
- package/dist/src/agent/stack-matcher.js +81 -0
- package/dist/src/agent/teams-capability.service.d.ts +11 -0
- package/dist/src/agent/teams-capability.service.js +74 -0
- package/dist/src/agent/teams-capability.types.d.ts +6 -0
- package/dist/src/agent/teams-capability.types.js +3 -0
- package/dist/src/cli/cli.d.ts +4 -3
- package/dist/src/cli/cli.js +54 -0
- package/dist/src/cli/cli.types.d.ts +4 -0
- package/dist/src/cli/completion/completion.d.ts +16 -0
- package/dist/src/cli/completion/completion.js +276 -0
- package/dist/src/cli/completion/index.d.ts +2 -0
- package/dist/src/cli/completion/index.js +7 -0
- package/dist/src/cli/plugin/create-plugin.command.d.ts +21 -0
- package/dist/src/cli/plugin/create-plugin.command.js +151 -0
- package/dist/src/cli/run-tui.d.ts +1 -0
- package/dist/src/cli/run-tui.js +7 -1
- package/dist/src/config/config.schema.d.ts +3 -0
- package/dist/src/config/config.schema.js +5 -0
- package/dist/src/keyword/keyword.module.js +39 -2
- package/dist/src/keyword/keyword.service.d.ts +5 -0
- package/dist/src/keyword/keyword.service.js +90 -6
- package/dist/src/keyword/keyword.types.d.ts +30 -0
- package/dist/src/keyword/permission-forecast.d.ts +2 -0
- package/dist/src/keyword/permission-forecast.js +94 -0
- package/dist/src/mcp/handlers/agent.handler.d.ts +6 -1
- package/dist/src/mcp/handlers/agent.handler.js +81 -8
- package/dist/src/mcp/handlers/checklist-context.handler.d.ts +3 -1
- package/dist/src/mcp/handlers/checklist-context.handler.js +17 -2
- package/dist/src/mcp/handlers/clarification-gate.d.ts +22 -0
- package/dist/src/mcp/handlers/clarification-gate.js +129 -0
- package/dist/src/mcp/handlers/council-scene.builder.d.ts +9 -0
- package/dist/src/mcp/handlers/council-scene.builder.js +115 -0
- package/dist/src/mcp/handlers/council-scene.types.d.ts +11 -0
- package/dist/src/mcp/handlers/council-scene.types.js +3 -0
- package/dist/src/mcp/handlers/discussion.handler.d.ts +4 -0
- package/dist/src/mcp/handlers/discussion.handler.js +45 -5
- package/dist/src/mcp/handlers/discussion.types.d.ts +12 -0
- package/dist/src/mcp/handlers/discussion.types.js +4 -1
- package/dist/src/mcp/handlers/execution-gate.d.ts +29 -0
- package/dist/src/mcp/handlers/execution-gate.js +49 -0
- package/dist/src/mcp/handlers/index.d.ts +1 -0
- package/dist/src/mcp/handlers/index.js +3 -1
- package/dist/src/mcp/handlers/mode.handler.d.ts +14 -1
- package/dist/src/mcp/handlers/mode.handler.js +205 -3
- package/dist/src/mcp/handlers/planning-contract.d.ts +2 -0
- package/dist/src/mcp/handlers/planning-contract.js +28 -0
- package/dist/src/mcp/handlers/planning-stage.d.ts +20 -0
- package/dist/src/mcp/handlers/planning-stage.js +58 -0
- package/dist/src/mcp/handlers/quality-report.handler.d.ts +3 -1
- package/dist/src/mcp/handlers/quality-report.handler.js +20 -2
- package/dist/src/mcp/handlers/review-pr.handler.d.ts +12 -0
- package/dist/src/mcp/handlers/review-pr.handler.js +81 -0
- package/dist/src/mcp/mcp.module.js +1 -0
- package/dist/src/rules/rules.service.d.ts +6 -0
- package/dist/src/rules/rules.service.js +3 -0
- package/dist/src/rules/skill.schema.d.ts +5 -0
- package/dist/src/rules/skill.schema.js +36 -0
- package/dist/src/shared/rules-core.d.ts +5 -0
- package/dist/src/shared/rules-core.js +5 -0
- package/dist/src/shared/version.d.ts +1 -1
- package/dist/src/shared/version.js +1 -1
- package/dist/src/ship/review-pr.service.d.ts +15 -0
- package/dist/src/ship/review-pr.service.js +136 -0
- package/dist/src/ship/review-pr.types.d.ts +21 -0
- package/dist/src/ship/review-pr.types.js +3 -0
- package/dist/src/ship/ship.module.js +5 -2
- package/dist/src/skill/i18n/keywords.js +921 -0
- package/dist/src/skill/skill-recommendation.service.d.ts +1 -0
- package/dist/src/skill/skill-recommendation.service.js +27 -1
- package/dist/src/skill/skill-recommendation.types.d.ts +5 -0
- package/dist/src/tui/events/hud-file-bridge.d.ts +4 -0
- package/dist/src/tui/events/hud-file-bridge.js +36 -0
- package/dist/src/tui-bundle.mjs +45 -3
- package/package.json +7 -2
- package/dist/api/mcp.js.map +0 -1
- package/dist/src/agent/agent-prompt.builder.js.map +0 -1
- package/dist/src/agent/agent-summary.utils.js.map +0 -1
- package/dist/src/agent/agent.module.js.map +0 -1
- package/dist/src/agent/agent.service.js.map +0 -1
- package/dist/src/agent/agent.types.js.map +0 -1
- package/dist/src/agent/index.js.map +0 -1
- package/dist/src/analyzer/analyzer.module.js.map +0 -1
- package/dist/src/analyzer/analyzer.service.js.map +0 -1
- package/dist/src/analyzer/analyzer.types.js.map +0 -1
- package/dist/src/analyzer/code.sampler.js.map +0 -1
- package/dist/src/analyzer/config.analyzer.js.map +0 -1
- package/dist/src/analyzer/conventions.analyzer.js.map +0 -1
- package/dist/src/analyzer/conventions.schemas.js.map +0 -1
- package/dist/src/analyzer/conventions.types.js.map +0 -1
- package/dist/src/analyzer/directory.analyzer.js.map +0 -1
- package/dist/src/analyzer/index.js.map +0 -1
- package/dist/src/analyzer/package.analyzer.js.map +0 -1
- package/dist/src/app.module.js.map +0 -1
- package/dist/src/checklist/checklist.module.js.map +0 -1
- package/dist/src/checklist/checklist.schema.js.map +0 -1
- package/dist/src/checklist/checklist.service.js.map +0 -1
- package/dist/src/checklist/checklist.types.js.map +0 -1
- package/dist/src/checklist/index.js.map +0 -1
- package/dist/src/cli/cli.js.map +0 -1
- package/dist/src/cli/cli.types.js.map +0 -1
- package/dist/src/cli/index.js.map +0 -1
- package/dist/src/cli/init/claude-settings.utils.js.map +0 -1
- package/dist/src/cli/init/config.generator.js.map +0 -1
- package/dist/src/cli/init/config.writer.js.map +0 -1
- package/dist/src/cli/init/gitignore.utils.js.map +0 -1
- package/dist/src/cli/init/index.js.map +0 -1
- package/dist/src/cli/init/init.command.js.map +0 -1
- package/dist/src/cli/init/init.constants.js.map +0 -1
- package/dist/src/cli/init/init.wizard.js.map +0 -1
- package/dist/src/cli/init/prompt.builder.js.map +0 -1
- package/dist/src/cli/init/prompts/agent-prompt.js.map +0 -1
- package/dist/src/cli/init/prompts/architecture-prompt.js.map +0 -1
- package/dist/src/cli/init/prompts/basic-prompt.js.map +0 -1
- package/dist/src/cli/init/prompts/conventions-prompt.js.map +0 -1
- package/dist/src/cli/init/prompts/index.js.map +0 -1
- package/dist/src/cli/init/prompts/language-prompt.js.map +0 -1
- package/dist/src/cli/init/prompts/model-prompt.js.map +0 -1
- package/dist/src/cli/init/prompts/tech-stack-prompt.js.map +0 -1
- package/dist/src/cli/init/prompts/test-strategy-prompt.js.map +0 -1
- package/dist/src/cli/init/summary/index.js.map +0 -1
- package/dist/src/cli/init/summary/summary.prompt.js.map +0 -1
- package/dist/src/cli/init/summary/summary.renderer.js.map +0 -1
- package/dist/src/cli/init/templates/config-renderer.js.map +0 -1
- package/dist/src/cli/init/templates/frameworks/default.template.js.map +0 -1
- package/dist/src/cli/init/templates/frameworks/express.template.js.map +0 -1
- package/dist/src/cli/init/templates/frameworks/index.js.map +0 -1
- package/dist/src/cli/init/templates/frameworks/nestjs.template.js.map +0 -1
- package/dist/src/cli/init/templates/frameworks/nextjs.template.js.map +0 -1
- package/dist/src/cli/init/templates/frameworks/node.template.js.map +0 -1
- package/dist/src/cli/init/templates/frameworks/react.template.js.map +0 -1
- package/dist/src/cli/init/templates/index.js.map +0 -1
- package/dist/src/cli/init/templates/template.renderer.js.map +0 -1
- package/dist/src/cli/init/templates/template.selector.js.map +0 -1
- package/dist/src/cli/init/templates/template.types.js.map +0 -1
- package/dist/src/cli/plugin/install.command.js.map +0 -1
- package/dist/src/cli/plugin/plugins.command.js.map +0 -1
- package/dist/src/cli/plugin/search.command.js.map +0 -1
- package/dist/src/cli/plugin/uninstall.command.js.map +0 -1
- package/dist/src/cli/plugin/update.command.js.map +0 -1
- package/dist/src/cli/restart-tui.js.map +0 -1
- package/dist/src/cli/run-tui.js.map +0 -1
- package/dist/src/cli/utils/console.js.map +0 -1
- package/dist/src/cli/utils/index.js.map +0 -1
- package/dist/src/collaboration/discussion-engine.js.map +0 -1
- package/dist/src/collaboration/index.js.map +0 -1
- package/dist/src/collaboration/opinion-adapter.js.map +0 -1
- package/dist/src/collaboration/terminal-formatter.js.map +0 -1
- package/dist/src/collaboration/types.js.map +0 -1
- package/dist/src/config/config-diff.service.js.map +0 -1
- package/dist/src/config/config.loader.js.map +0 -1
- package/dist/src/config/config.module.js.map +0 -1
- package/dist/src/config/config.schema.js.map +0 -1
- package/dist/src/config/config.service.js.map +0 -1
- package/dist/src/config/context.loader.js.map +0 -1
- package/dist/src/config/ignore.parser.js.map +0 -1
- package/dist/src/config/index.js.map +0 -1
- package/dist/src/context/briefing-loader.service.js.map +0 -1
- package/dist/src/context/briefing.service.js.map +0 -1
- package/dist/src/context/briefing.types.js.map +0 -1
- package/dist/src/context/context-archive.service.js.map +0 -1
- package/dist/src/context/context-archive.types.js.map +0 -1
- package/dist/src/context/context-document.service.js.map +0 -1
- package/dist/src/context/context-document.types.js.map +0 -1
- package/dist/src/context/context-parser.utils.js.map +0 -1
- package/dist/src/context/context-serializer.utils.js.map +0 -1
- package/dist/src/context/context.module.js.map +0 -1
- package/dist/src/context/context.service.js.map +0 -1
- package/dist/src/context/context.types.js.map +0 -1
- package/dist/src/context/index.js.map +0 -1
- package/dist/src/context/intent-patterns.js.map +0 -1
- package/dist/src/custom/custom.module.js.map +0 -1
- package/dist/src/custom/custom.service.js.map +0 -1
- package/dist/src/custom/custom.types.js.map +0 -1
- package/dist/src/custom/index.js.map +0 -1
- package/dist/src/diagnostic/diagnostic-log.service.js.map +0 -1
- package/dist/src/diagnostic/diagnostic.module.js.map +0 -1
- package/dist/src/diagnostic/diagnostic.types.js.map +0 -1
- package/dist/src/diagnostic/index.js.map +0 -1
- package/dist/src/impact/impact-event.service.js.map +0 -1
- package/dist/src/impact/impact-report.service.js.map +0 -1
- package/dist/src/impact/impact.module.js.map +0 -1
- package/dist/src/impact/impact.types.js.map +0 -1
- package/dist/src/impact/index.js.map +0 -1
- package/dist/src/keyword/activation-message.builder.js.map +0 -1
- package/dist/src/keyword/auto-executor.js.map +0 -1
- package/dist/src/keyword/auto-executor.types.js.map +0 -1
- package/dist/src/keyword/auto-formatter.js.map +0 -1
- package/dist/src/keyword/auto-prompt-builder.js.map +0 -1
- package/dist/src/keyword/complexity-classifier.js.map +0 -1
- package/dist/src/keyword/complexity-indicators.js.map +0 -1
- package/dist/src/keyword/diff-analyzer.js.map +0 -1
- package/dist/src/keyword/explicit-pattern-matcher.js.map +0 -1
- package/dist/src/keyword/index.js.map +0 -1
- package/dist/src/keyword/keyword.module.js.map +0 -1
- package/dist/src/keyword/keyword.service.js.map +0 -1
- package/dist/src/keyword/keyword.types.js.map +0 -1
- package/dist/src/keyword/patterns/agent.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/ai-ml.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/backend.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/context.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/data-science.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/data.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/devops.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/explicit.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/frontend.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/index.js.map +0 -1
- package/dist/src/keyword/patterns/intent-pattern-checks.js.map +0 -1
- package/dist/src/keyword/patterns/intent-patterns.types.js.map +0 -1
- package/dist/src/keyword/patterns/meta-discussion.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/mobile.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/platform.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/security.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/systems.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/test.patterns.js.map +0 -1
- package/dist/src/keyword/patterns/tooling.patterns.js.map +0 -1
- package/dist/src/keyword/primary-agent-resolver.js.map +0 -1
- package/dist/src/keyword/rule-filter.js.map +0 -1
- package/dist/src/keyword/srp-template.js.map +0 -1
- package/dist/src/keyword/strategies/__tests__/strategy-test.utils.js.map +0 -1
- package/dist/src/keyword/strategies/act-agent.strategy.js.map +0 -1
- package/dist/src/keyword/strategies/eval-agent.strategy.js.map +0 -1
- package/dist/src/keyword/strategies/index.js.map +0 -1
- package/dist/src/keyword/strategies/plan-agent.strategy.js.map +0 -1
- package/dist/src/keyword/strategies/resolution-strategy.interface.js.map +0 -1
- package/dist/src/keyword/taskmaestro-detector.js.map +0 -1
- package/dist/src/keyword/visual-data.builder.js.map +0 -1
- package/dist/src/main.js.map +0 -1
- package/dist/src/mcp/handlers/abstract-handler.js.map +0 -1
- package/dist/src/mcp/handlers/agent.handler.js.map +0 -1
- package/dist/src/mcp/handlers/base.handler.js.map +0 -1
- package/dist/src/mcp/handlers/briefing.handler.js.map +0 -1
- package/dist/src/mcp/handlers/checklist-context.handler.js.map +0 -1
- package/dist/src/mcp/handlers/config.handler.js.map +0 -1
- package/dist/src/mcp/handlers/context-archive.handler.js.map +0 -1
- package/dist/src/mcp/handlers/context-document.handler.js.map +0 -1
- package/dist/src/mcp/handlers/conventions.handler.js.map +0 -1
- package/dist/src/mcp/handlers/discussion.handler.js.map +0 -1
- package/dist/src/mcp/handlers/discussion.types.js.map +0 -1
- package/dist/src/mcp/handlers/impact.handler.js.map +0 -1
- package/dist/src/mcp/handlers/index.js.map +0 -1
- package/dist/src/mcp/handlers/mode.handler.js.map +0 -1
- package/dist/src/mcp/handlers/pipeline.handler.js.map +0 -1
- package/dist/src/mcp/handlers/plugin-validation.handler.js.map +0 -1
- package/dist/src/mcp/handlers/quality-report.handler.js.map +0 -1
- package/dist/src/mcp/handlers/release-check.handler.js.map +0 -1
- package/dist/src/mcp/handlers/resume.handler.js.map +0 -1
- package/dist/src/mcp/handlers/rule-impact.handler.js.map +0 -1
- package/dist/src/mcp/handlers/rule-insights.handler.js.map +0 -1
- package/dist/src/mcp/handlers/rules.handler.js.map +0 -1
- package/dist/src/mcp/handlers/skill.handler.js.map +0 -1
- package/dist/src/mcp/handlers/tui.handler.js.map +0 -1
- package/dist/src/mcp/mcp-serverless.js.map +0 -1
- package/dist/src/mcp/mcp.controller.js.map +0 -1
- package/dist/src/mcp/mcp.module.js.map +0 -1
- package/dist/src/mcp/mcp.service.js.map +0 -1
- package/dist/src/mcp/response.utils.js.map +0 -1
- package/dist/src/mcp/sse-auth.guard.js.map +0 -1
- package/dist/src/model/index.js.map +0 -1
- package/dist/src/model/model-resolver.service.js.map +0 -1
- package/dist/src/model/model.constants.js.map +0 -1
- package/dist/src/model/model.resolver.js.map +0 -1
- package/dist/src/model/model.types.js.map +0 -1
- package/dist/src/parallel-validation/extract-file-paths.js.map +0 -1
- package/dist/src/parallel-validation/index.js.map +0 -1
- package/dist/src/parallel-validation/overlap-matrix.js.map +0 -1
- package/dist/src/parallel-validation/parallel-validation.handler.js.map +0 -1
- package/dist/src/parallel-validation/parallel-validation.types.js.map +0 -1
- package/dist/src/parallel-validation/wave-splitter.js.map +0 -1
- package/dist/src/pipeline/index.js.map +0 -1
- package/dist/src/pipeline/pipeline.executors.js.map +0 -1
- package/dist/src/pipeline/pipeline.module.js.map +0 -1
- package/dist/src/pipeline/pipeline.service.js.map +0 -1
- package/dist/src/pipeline/pipeline.types.js.map +0 -1
- package/dist/src/plugin/plugin-installer.service.js.map +0 -1
- package/dist/src/plugin/plugin-manifest.schema.js.map +0 -1
- package/dist/src/plugin/plugin.module.js.map +0 -1
- package/dist/src/plugin/plugin.types.js.map +0 -1
- package/dist/src/plugin/registry-client.js.map +0 -1
- package/dist/src/rules/agent.schema.js.map +0 -1
- package/dist/src/rules/rule-event-collector.js.map +0 -1
- package/dist/src/rules/rule-event.types.js.map +0 -1
- package/dist/src/rules/rule-insights.service.js.map +0 -1
- package/dist/src/rules/rule-stats-writer.js.map +0 -1
- package/dist/src/rules/rule-tracker.js.map +0 -1
- package/dist/src/rules/rules-content.utils.js.map +0 -1
- package/dist/src/rules/rules.module.js.map +0 -1
- package/dist/src/rules/rules.service.js.map +0 -1
- package/dist/src/rules/rules.types.js.map +0 -1
- package/dist/src/rules/skill.schema.js.map +0 -1
- package/dist/src/shared/agent.utils.js.map +0 -1
- package/dist/src/shared/async.utils.js.map +0 -1
- package/dist/src/shared/client-type.js.map +0 -1
- package/dist/src/shared/error.utils.js.map +0 -1
- package/dist/src/shared/esm-import.js.map +0 -1
- package/dist/src/shared/event-bridge-reader.js.map +0 -1
- package/dist/src/shared/file.utils.js.map +0 -1
- package/dist/src/shared/filesystem.interface.js.map +0 -1
- package/dist/src/shared/format.utils.js.map +0 -1
- package/dist/src/shared/keyword-core.js.map +0 -1
- package/dist/src/shared/language.service.js.map +0 -1
- package/dist/src/shared/language.types.js.map +0 -1
- package/dist/src/shared/lru-cache.js.map +0 -1
- package/dist/src/shared/node-filesystem.service.js.map +0 -1
- package/dist/src/shared/path.utils.js.map +0 -1
- package/dist/src/shared/pattern-matcher.js.map +0 -1
- package/dist/src/shared/rules-core.js.map +0 -1
- package/dist/src/shared/security.utils.js.map +0 -1
- package/dist/src/shared/slug.utils.js.map +0 -1
- package/dist/src/shared/tui-bundle-path.js.map +0 -1
- package/dist/src/shared/validation.constants.js.map +0 -1
- package/dist/src/shared/verbosity.types.js.map +0 -1
- package/dist/src/shared/version.js.map +0 -1
- package/dist/src/shared/version.utils.js.map +0 -1
- package/dist/src/ship/file-specialist-mapper.js.map +0 -1
- package/dist/src/ship/quality-report.service.js.map +0 -1
- package/dist/src/ship/quality-report.types.js.map +0 -1
- package/dist/src/ship/ship.module.js.map +0 -1
- package/dist/src/skill/i18n/index.js.map +0 -1
- package/dist/src/skill/i18n/keywords.js.map +0 -1
- package/dist/src/skill/i18n/keywords.types.js.map +0 -1
- package/dist/src/skill/index.js.map +0 -1
- package/dist/src/skill/skill-content.utils.js.map +0 -1
- package/dist/src/skill/skill-recommendation.service.js.map +0 -1
- package/dist/src/skill/skill-recommendation.types.js.map +0 -1
- package/dist/src/skill/skill-triggers.js.map +0 -1
- package/dist/src/skill/skill.module.js.map +0 -1
- package/dist/src/state/index.js.map +0 -1
- package/dist/src/state/state.module.js.map +0 -1
- package/dist/src/state/state.service.js.map +0 -1
- package/dist/src/state/state.types.js.map +0 -1
- package/dist/src/tui/__perf__/memory-stability.spec.d.ts +0 -1
- package/dist/src/tui/__perf__/memory-stability.spec.js +0 -105
- package/dist/src/tui/__perf__/memory-stability.spec.js.map +0 -1
- package/dist/src/tui/__perf__/rendering-performance.spec.d.ts +0 -1
- package/dist/src/tui/__perf__/rendering-performance.spec.js +0 -163
- package/dist/src/tui/__perf__/rendering-performance.spec.js.map +0 -1
- package/dist/src/tui/cli-flags.js.map +0 -1
- package/dist/src/tui/components/ActModeScreen.js.map +0 -1
- package/dist/src/tui/components/ActivityVisualizer.js.map +0 -1
- package/dist/src/tui/components/ActivityVisualizer.spec.d.ts +0 -1
- package/dist/src/tui/components/ActivityVisualizer.spec.js +0 -91
- package/dist/src/tui/components/ActivityVisualizer.spec.js.map +0 -1
- package/dist/src/tui/components/AgentDiscussionPanel.js.map +0 -1
- package/dist/src/tui/components/AgentDiscussionPanel.spec.d.ts +0 -1
- package/dist/src/tui/components/AgentDiscussionPanel.spec.js +0 -229
- package/dist/src/tui/components/AgentDiscussionPanel.spec.js.map +0 -1
- package/dist/src/tui/components/ChecklistPanel.js.map +0 -1
- package/dist/src/tui/components/ChecklistPanel.spec.d.ts +0 -1
- package/dist/src/tui/components/ChecklistPanel.spec.js +0 -45
- package/dist/src/tui/components/ChecklistPanel.spec.js.map +0 -1
- package/dist/src/tui/components/ContextSection.js.map +0 -1
- package/dist/src/tui/components/EvalModeScreen.js.map +0 -1
- package/dist/src/tui/components/FlowMap.js.map +0 -1
- package/dist/src/tui/components/FlowMap.spec.d.ts +0 -1
- package/dist/src/tui/components/FlowMap.spec.js +0 -147
- package/dist/src/tui/components/FlowMap.spec.js.map +0 -1
- package/dist/src/tui/components/FocusedAgentPanel.js.map +0 -1
- package/dist/src/tui/components/FocusedAgentPanel.spec.d.ts +0 -1
- package/dist/src/tui/components/FocusedAgentPanel.spec.js +0 -183
- package/dist/src/tui/components/FocusedAgentPanel.spec.js.map +0 -1
- package/dist/src/tui/components/HeaderBar.js.map +0 -1
- package/dist/src/tui/components/HeaderBar.spec.d.ts +0 -1
- package/dist/src/tui/components/HeaderBar.spec.js +0 -96
- package/dist/src/tui/components/HeaderBar.spec.js.map +0 -1
- package/dist/src/tui/components/ModeScreenRouter.js.map +0 -1
- package/dist/src/tui/components/PlanModeScreen.js.map +0 -1
- package/dist/src/tui/components/SessionDashboard.js.map +0 -1
- package/dist/src/tui/components/SessionTabBar.js.map +0 -1
- package/dist/src/tui/components/SessionTabBar.spec.d.ts +0 -1
- package/dist/src/tui/components/SessionTabBar.spec.js +0 -59
- package/dist/src/tui/components/SessionTabBar.spec.js.map +0 -1
- package/dist/src/tui/components/StageHealthBar.js.map +0 -1
- package/dist/src/tui/components/StageHealthBar.spec.d.ts +0 -1
- package/dist/src/tui/components/StageHealthBar.spec.js +0 -99
- package/dist/src/tui/components/StageHealthBar.spec.js.map +0 -1
- package/dist/src/tui/components/act-screen.pure.js.map +0 -1
- package/dist/src/tui/components/activity-visualizer.pure.js.map +0 -1
- package/dist/src/tui/components/agent-discussion-panel.pure.js.map +0 -1
- package/dist/src/tui/components/checklist-panel.pure.js.map +0 -1
- package/dist/src/tui/components/context-section.pure.js.map +0 -1
- package/dist/src/tui/components/eval-screen.pure.js.map +0 -1
- package/dist/src/tui/components/flow-map.pure.js.map +0 -1
- package/dist/src/tui/components/focused-agent.pure.js.map +0 -1
- package/dist/src/tui/components/grid-layout.pure.js.map +0 -1
- package/dist/src/tui/components/index.js.map +0 -1
- package/dist/src/tui/components/live.pure.js.map +0 -1
- package/dist/src/tui/components/plan-screen.pure.js.map +0 -1
- package/dist/src/tui/components/session-dashboard.pure.js.map +0 -1
- package/dist/src/tui/components/session-tab-bar.pure.js.map +0 -1
- package/dist/src/tui/components/stage-health.pure.js.map +0 -1
- package/dist/src/tui/dashboard-app.js.map +0 -1
- package/dist/src/tui/dashboard-app.spec.d.ts +0 -1
- package/dist/src/tui/dashboard-app.spec.js +0 -158
- package/dist/src/tui/dashboard-app.spec.js.map +0 -1
- package/dist/src/tui/dashboard-types.js.map +0 -1
- package/dist/src/tui/ensure-tui-ready.js.map +0 -1
- package/dist/src/tui/eventbus-ui.integration.spec.d.ts +0 -1
- package/dist/src/tui/eventbus-ui.integration.spec.js +0 -577
- package/dist/src/tui/eventbus-ui.integration.spec.js.map +0 -1
- package/dist/src/tui/events/agent-metadata.service.js.map +0 -1
- package/dist/src/tui/events/agent-metadata.types.js.map +0 -1
- package/dist/src/tui/events/event-bus.js.map +0 -1
- package/dist/src/tui/events/events.module.js.map +0 -1
- package/dist/src/tui/events/hud-file-bridge.js.map +0 -1
- package/dist/src/tui/events/index.js.map +0 -1
- package/dist/src/tui/events/parse-agent.js.map +0 -1
- package/dist/src/tui/events/parse-tool-response.js.map +0 -1
- package/dist/src/tui/events/response-event-extractor.js.map +0 -1
- package/dist/src/tui/events/tui-interceptor.js.map +0 -1
- package/dist/src/tui/events/types.js.map +0 -1
- package/dist/src/tui/hooks/index.js.map +0 -1
- package/dist/src/tui/hooks/use-dashboard-state.js.map +0 -1
- package/dist/src/tui/hooks/use-focus-agent.js.map +0 -1
- package/dist/src/tui/hooks/use-multi-session-state.js.map +0 -1
- package/dist/src/tui/hooks/use-terminal-size.js.map +0 -1
- package/dist/src/tui/hooks/use-tick.js.map +0 -1
- package/dist/src/tui/hooks/use-tick.spec.d.ts +0 -1
- package/dist/src/tui/hooks/use-tick.spec.js +0 -70
- package/dist/src/tui/hooks/use-tick.spec.js.map +0 -1
- package/dist/src/tui/index.js.map +0 -1
- package/dist/src/tui/ipc/index.js.map +0 -1
- package/dist/src/tui/ipc/instance-registry.js.map +0 -1
- package/dist/src/tui/ipc/ipc-bridge.js.map +0 -1
- package/dist/src/tui/ipc/ipc-client.js.map +0 -1
- package/dist/src/tui/ipc/ipc-debug.js.map +0 -1
- package/dist/src/tui/ipc/ipc-server.js.map +0 -1
- package/dist/src/tui/ipc/ipc-state-cache.js.map +0 -1
- package/dist/src/tui/ipc/ipc.types.js.map +0 -1
- package/dist/src/tui/ipc/multi-session-manager.js.map +0 -1
- package/dist/src/tui/ipc/shutdown-manager.js.map +0 -1
- package/dist/src/tui/ipc/test-utils.js.map +0 -1
- package/dist/src/tui/ipc/tui-auto-launcher.js.map +0 -1
- package/dist/src/tui/multi-session-app.js.map +0 -1
- package/dist/src/tui/multi-session-app.spec.d.ts +0 -1
- package/dist/src/tui/multi-session-app.spec.js +0 -95
- package/dist/src/tui/multi-session-app.spec.js.map +0 -1
- package/dist/src/tui/testing/tui-test-utils.js.map +0 -1
- package/dist/src/tui/transport-tui.integration.spec.d.ts +0 -1
- package/dist/src/tui/transport-tui.integration.spec.js +0 -189
- package/dist/src/tui/transport-tui.integration.spec.js.map +0 -1
- package/dist/src/tui/tui-config.js.map +0 -1
- package/dist/src/tui/types.js.map +0 -1
- package/dist/src/tui/utils/color-buffer.js.map +0 -1
- package/dist/src/tui/utils/colors.js.map +0 -1
- package/dist/src/tui/utils/display-width.js.map +0 -1
- package/dist/src/tui/utils/edge-router.js.map +0 -1
- package/dist/src/tui/utils/icons.js.map +0 -1
- package/dist/src/tui/utils/index.js.map +0 -1
- package/dist/src/tui/utils/theme.js.map +0 -1
- package/dist/tsconfig.build.tsbuildinfo +0 -1
|
@@ -33,10 +33,18 @@ const keyword_types_2 = require("../../keyword/keyword.types");
|
|
|
33
33
|
const visual_data_builder_1 = require("../../keyword/visual-data.builder");
|
|
34
34
|
const verbosity_types_1 = require("../../shared/verbosity.types");
|
|
35
35
|
const agent_service_1 = require("../../agent/agent.service");
|
|
36
|
+
const council_preset_service_1 = require("../../agent/council-preset.service");
|
|
37
|
+
const teams_capability_service_1 = require("../../agent/teams-capability.service");
|
|
38
|
+
const execution_plan_1 = require("../../agent/execution-plan");
|
|
36
39
|
const impact_1 = require("../../impact");
|
|
40
|
+
const rule_event_collector_1 = require("../../rules/rule-event-collector");
|
|
41
|
+
const clarification_gate_1 = require("./clarification-gate");
|
|
42
|
+
const planning_stage_1 = require("./planning-stage");
|
|
43
|
+
const execution_gate_1 = require("./execution-gate");
|
|
44
|
+
const council_scene_builder_1 = require("./council-scene.builder");
|
|
37
45
|
const CONTEXT_TITLE_MAX_LENGTH = 50;
|
|
38
46
|
let ModeHandler = ModeHandler_1 = class ModeHandler extends abstract_handler_1.AbstractHandler {
|
|
39
|
-
constructor(keywordService, configService, languageService, modelResolverService, stateService, contextDocService, diagnosticLogService, agentService, impactEventService) {
|
|
47
|
+
constructor(keywordService, configService, languageService, modelResolverService, stateService, contextDocService, diagnosticLogService, agentService, councilPresetService, teamsCapabilityService, impactEventService, ruleEventCollector) {
|
|
40
48
|
super();
|
|
41
49
|
this.keywordService = keywordService;
|
|
42
50
|
this.configService = configService;
|
|
@@ -46,7 +54,10 @@ let ModeHandler = ModeHandler_1 = class ModeHandler extends abstract_handler_1.A
|
|
|
46
54
|
this.contextDocService = contextDocService;
|
|
47
55
|
this.diagnosticLogService = diagnosticLogService;
|
|
48
56
|
this.agentService = agentService;
|
|
57
|
+
this.councilPresetService = councilPresetService;
|
|
58
|
+
this.teamsCapabilityService = teamsCapabilityService;
|
|
49
59
|
this.impactEventService = impactEventService;
|
|
60
|
+
this.ruleEventCollector = ruleEventCollector;
|
|
50
61
|
this.logger = new common_1.Logger(ModeHandler_1.name);
|
|
51
62
|
}
|
|
52
63
|
getHandledTools() {
|
|
@@ -73,6 +84,15 @@ let ModeHandler = ModeHandler_1 = class ModeHandler extends abstract_handler_1.A
|
|
|
73
84
|
enum: ['minimal', 'standard', 'full'],
|
|
74
85
|
description: 'Control response detail level. minimal: metadata only; standard: truncated content (default); full: complete content',
|
|
75
86
|
},
|
|
87
|
+
question_budget: {
|
|
88
|
+
type: 'number',
|
|
89
|
+
description: 'Clarification Gate budget (#1371). Maximum clarification questions remaining in this session. Defaults to 3 on the first call; pass the `questionBudget` returned from the previous PLAN response to decrement across rounds. When 0, the gate proceeds to planning with explicit assumptions.',
|
|
90
|
+
},
|
|
91
|
+
planning_stage: {
|
|
92
|
+
type: 'string',
|
|
93
|
+
enum: ['discover', 'design', 'plan'],
|
|
94
|
+
description: 'Staged planning hint (#1372). Overrides automatic stage routing when the caller knows which stage to enter. Use "design" after the user confirms direction from Discover, or "plan" after the user confirms the approach from Design.',
|
|
95
|
+
},
|
|
76
96
|
},
|
|
77
97
|
required: ['prompt'],
|
|
78
98
|
},
|
|
@@ -87,6 +107,15 @@ let ModeHandler = ModeHandler_1 = class ModeHandler extends abstract_handler_1.A
|
|
|
87
107
|
const recommendedAgent = (0, validation_constants_1.extractRequiredString)(args, 'recommended_agent') ?? undefined;
|
|
88
108
|
const rawVerbosity = (0, validation_constants_1.extractRequiredString)(args, 'verbosity') ?? 'standard';
|
|
89
109
|
const verbosity = (0, verbosity_types_1.isValidVerbosity)(rawVerbosity) ? rawVerbosity : 'standard';
|
|
110
|
+
const rawQuestionBudget = args?.['question_budget'];
|
|
111
|
+
const questionBudget = typeof rawQuestionBudget === 'number' && Number.isFinite(rawQuestionBudget)
|
|
112
|
+
? rawQuestionBudget
|
|
113
|
+
: undefined;
|
|
114
|
+
const VALID_STAGES = new Set(['discover', 'design', 'plan']);
|
|
115
|
+
const rawPlanningStage = (0, validation_constants_1.extractRequiredString)(args, 'planning_stage') ?? undefined;
|
|
116
|
+
const planningStageHint = rawPlanningStage && VALID_STAGES.has(rawPlanningStage)
|
|
117
|
+
? rawPlanningStage
|
|
118
|
+
: undefined;
|
|
90
119
|
try {
|
|
91
120
|
await this.configService.reload();
|
|
92
121
|
let resolvedRecommendedAgent = recommendedAgent;
|
|
@@ -143,17 +172,53 @@ let ModeHandler = ModeHandler_1 = class ModeHandler extends abstract_handler_1.A
|
|
|
143
172
|
const deepThinkingInstructions = this.buildDeepThinkingInstructions(result.mode);
|
|
144
173
|
const planReviewGate = this.buildPlanReviewGate(result.mode, settings?.ai?.planReviewGate);
|
|
145
174
|
const agentDiscussion = this.buildAgentDiscussion(result.mode, settings?.ai?.agentDiscussion);
|
|
175
|
+
const reviewContext = this.buildReviewContext(result.mode, result.originalPrompt);
|
|
176
|
+
const councilPreset = this.councilPresetService.resolvePreset(result.mode) ?? undefined;
|
|
177
|
+
const teamsCapability = await this.resolveTeamsCapability();
|
|
178
|
+
const executionPlan = this.buildExecutionPlan(dispatchReady, teamsCapability);
|
|
146
179
|
const visual = await this.buildVisual(result.mode, result.delegates_to, result.parallelAgentsRecommendation?.specialists, settings?.eco);
|
|
180
|
+
const councilScene = (0, council_scene_builder_1.buildCouncilScene)(result.mode, councilPreset ?? undefined, visual, {
|
|
181
|
+
delegatesTo: result.delegates_to,
|
|
182
|
+
specialists: result.parallelAgentsRecommendation?.specialists,
|
|
183
|
+
});
|
|
184
|
+
const councilRenderInstructions = (0, council_scene_builder_1.buildCouncilSceneInstructions)(councilScene);
|
|
185
|
+
if (councilRenderInstructions) {
|
|
186
|
+
result.instructions += councilRenderInstructions;
|
|
187
|
+
}
|
|
188
|
+
const clarification = this.buildClarificationMetadata(result.mode, result.originalPrompt, questionBudget);
|
|
189
|
+
const clarificationInstructions = this.buildClarificationFirstInstructions(clarification);
|
|
190
|
+
const planningStage = this.buildPlanningStageMetadata(result.mode, clarification, planningStageHint);
|
|
191
|
+
const executionGate = this.buildExecutionGate(result.mode, clarification, planningStage, result.parallelAgentsRecommendation?.specialists);
|
|
192
|
+
const serializedExecutionPlan = executionPlan
|
|
193
|
+
? (0, execution_plan_1.serializeExecutionPlan)(executionPlan)
|
|
194
|
+
: undefined;
|
|
195
|
+
const gatedFields = (0, execution_gate_1.suppressDispatchWhileGated)(executionGate, {
|
|
196
|
+
dispatchReady,
|
|
197
|
+
parallelAgentsRecommendation: result.parallelAgentsRecommendation,
|
|
198
|
+
executionPlan: serializedExecutionPlan,
|
|
199
|
+
});
|
|
147
200
|
const response = (0, response_utils_1.createJsonResponse)({
|
|
148
201
|
...result,
|
|
202
|
+
...(clarificationInstructions !== undefined && { instructions: clarificationInstructions }),
|
|
149
203
|
language,
|
|
150
204
|
languageInstruction: languageInstructionResult.instruction,
|
|
151
205
|
resolvedModel,
|
|
152
|
-
...(
|
|
206
|
+
...(gatedFields.parallelAgentsRecommendation !== undefined && {
|
|
207
|
+
parallelAgentsRecommendation: gatedFields.parallelAgentsRecommendation,
|
|
208
|
+
}),
|
|
209
|
+
...(gatedFields.dispatchReady && { dispatchReady: gatedFields.dispatchReady }),
|
|
153
210
|
...(deepThinkingInstructions && { deepThinkingInstructions }),
|
|
154
211
|
...(planReviewGate && { planReviewGate }),
|
|
155
212
|
...(agentDiscussion && { agentDiscussion }),
|
|
213
|
+
...(reviewContext && { reviewContext }),
|
|
156
214
|
...(visual && { visual }),
|
|
215
|
+
...(councilPreset && { councilPreset }),
|
|
216
|
+
...(councilScene && { councilScene }),
|
|
217
|
+
...(gatedFields.executionPlan && { executionPlan: gatedFields.executionPlan }),
|
|
218
|
+
...(teamsCapability && { teamsCapability }),
|
|
219
|
+
...(clarification && clarification),
|
|
220
|
+
...(planningStage && { planningStage }),
|
|
221
|
+
...(executionGate && { executionGate }),
|
|
157
222
|
...contextResult,
|
|
158
223
|
...(projectRootWarning && { projectRootWarning }),
|
|
159
224
|
});
|
|
@@ -165,6 +230,16 @@ let ModeHandler = ModeHandler_1 = class ModeHandler extends abstract_handler_1.A
|
|
|
165
230
|
}
|
|
166
231
|
catch {
|
|
167
232
|
}
|
|
233
|
+
try {
|
|
234
|
+
this.ruleEventCollector.record({
|
|
235
|
+
type: 'mode_activated',
|
|
236
|
+
timestamp: new Date().toISOString(),
|
|
237
|
+
rule: result.mode,
|
|
238
|
+
details: { agent: result.agent },
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
catch {
|
|
242
|
+
}
|
|
168
243
|
return response;
|
|
169
244
|
}
|
|
170
245
|
catch (error) {
|
|
@@ -309,6 +384,55 @@ let ModeHandler = ModeHandler_1 = class ModeHandler extends abstract_handler_1.A
|
|
|
309
384
|
dispatch: 'recommend',
|
|
310
385
|
};
|
|
311
386
|
}
|
|
387
|
+
buildClarificationMetadata(mode, originalPrompt, questionBudget) {
|
|
388
|
+
if (mode !== 'PLAN' && mode !== 'AUTO') {
|
|
389
|
+
return undefined;
|
|
390
|
+
}
|
|
391
|
+
return (0, clarification_gate_1.evaluateClarification)(originalPrompt, {
|
|
392
|
+
...(questionBudget !== undefined && { questionBudget }),
|
|
393
|
+
});
|
|
394
|
+
}
|
|
395
|
+
buildExecutionGate(mode, clarification, planningStage, specialists) {
|
|
396
|
+
if (mode !== 'PLAN' && mode !== 'AUTO') {
|
|
397
|
+
return undefined;
|
|
398
|
+
}
|
|
399
|
+
if (!clarification) {
|
|
400
|
+
return undefined;
|
|
401
|
+
}
|
|
402
|
+
return (0, execution_gate_1.evaluateExecutionGate)({
|
|
403
|
+
clarification,
|
|
404
|
+
planningStage,
|
|
405
|
+
specialists,
|
|
406
|
+
});
|
|
407
|
+
}
|
|
408
|
+
buildClarificationFirstInstructions(clarification) {
|
|
409
|
+
if (!clarification?.clarificationNeeded) {
|
|
410
|
+
return undefined;
|
|
411
|
+
}
|
|
412
|
+
const question = clarification.nextQuestion ??
|
|
413
|
+
'Can you clarify the scope and success criteria of this request?';
|
|
414
|
+
const budget = clarification.questionBudget ?? 0;
|
|
415
|
+
return ('🔴 CLARIFICATION REQUIRED — DO NOT PLAN.\n\n' +
|
|
416
|
+
'The request is ambiguous. You MUST:\n' +
|
|
417
|
+
'1. Ask EXACTLY the question below and STOP.\n' +
|
|
418
|
+
'2. Do NOT output any implementation plan, architecture, or code.\n' +
|
|
419
|
+
"3. Wait for the user's response before continuing.\n\n" +
|
|
420
|
+
`❓ Ask this: "${question}"\n\n` +
|
|
421
|
+
`Remaining question budget: ${budget}\n\n` +
|
|
422
|
+
'After the user answers, call parse_mode again with the clarified prompt ' +
|
|
423
|
+
`and question_budget=${budget} to continue.`);
|
|
424
|
+
}
|
|
425
|
+
buildPlanningStageMetadata(mode, clarification, stageHint) {
|
|
426
|
+
if (mode !== 'PLAN' && mode !== 'AUTO') {
|
|
427
|
+
return undefined;
|
|
428
|
+
}
|
|
429
|
+
if (!clarification) {
|
|
430
|
+
return undefined;
|
|
431
|
+
}
|
|
432
|
+
return (0, planning_stage_1.resolvePlanningStage)(clarification, {
|
|
433
|
+
...(stageHint && { stageHint }),
|
|
434
|
+
});
|
|
435
|
+
}
|
|
312
436
|
buildAgentDiscussion(mode, configValue) {
|
|
313
437
|
if (mode !== 'EVAL') {
|
|
314
438
|
return undefined;
|
|
@@ -320,6 +444,30 @@ let ModeHandler = ModeHandler_1 = class ModeHandler extends abstract_handler_1.A
|
|
|
320
444
|
includeConsensus: true,
|
|
321
445
|
};
|
|
322
446
|
}
|
|
447
|
+
buildReviewContext(mode, originalPrompt) {
|
|
448
|
+
if (mode !== 'EVAL') {
|
|
449
|
+
return undefined;
|
|
450
|
+
}
|
|
451
|
+
const prMatch = originalPrompt.match(/(?:PR\s*#?(\d+)|pull\s*request\s*#?(\d+))/i);
|
|
452
|
+
if (!prMatch) {
|
|
453
|
+
return undefined;
|
|
454
|
+
}
|
|
455
|
+
const prNumber = parseInt(prMatch[1] ?? prMatch[2], 10);
|
|
456
|
+
if (isNaN(prNumber)) {
|
|
457
|
+
return undefined;
|
|
458
|
+
}
|
|
459
|
+
const issueMatch = originalPrompt.match(/issue\s*#?(\d+)/i);
|
|
460
|
+
const issueNumber = issueMatch ? parseInt(issueMatch[1], 10) : undefined;
|
|
461
|
+
const hintParams = issueNumber
|
|
462
|
+
? `pr_number: ${prNumber}, issue_number: ${issueNumber}`
|
|
463
|
+
: `pr_number: ${prNumber}`;
|
|
464
|
+
return {
|
|
465
|
+
detected: true,
|
|
466
|
+
pr_number: prNumber,
|
|
467
|
+
...(issueNumber && { issue_number: issueNumber }),
|
|
468
|
+
hint: `Call review_pr({ ${hintParams} }) to get structured review data including diff, checklists, and specialist recommendations.`,
|
|
469
|
+
};
|
|
470
|
+
}
|
|
323
471
|
async buildVisual(mode, delegatesTo, specialists, eco) {
|
|
324
472
|
try {
|
|
325
473
|
const modeAgentName = `${mode.toLowerCase()}-mode`;
|
|
@@ -353,6 +501,57 @@ let ModeHandler = ModeHandler_1 = class ModeHandler extends abstract_handler_1.A
|
|
|
353
501
|
return undefined;
|
|
354
502
|
}
|
|
355
503
|
}
|
|
504
|
+
async resolveTeamsCapability() {
|
|
505
|
+
try {
|
|
506
|
+
return await this.teamsCapabilityService.getStatus();
|
|
507
|
+
}
|
|
508
|
+
catch (error) {
|
|
509
|
+
this.logger.warn(`Failed to resolve Teams capability: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
510
|
+
return undefined;
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
buildExecutionPlan(dispatchReady, teamsCapability) {
|
|
514
|
+
if (!dispatchReady) {
|
|
515
|
+
return undefined;
|
|
516
|
+
}
|
|
517
|
+
const agents = [];
|
|
518
|
+
if (dispatchReady.primaryAgent) {
|
|
519
|
+
agents.push({
|
|
520
|
+
name: dispatchReady.primaryAgent.name,
|
|
521
|
+
displayName: dispatchReady.primaryAgent.displayName,
|
|
522
|
+
description: dispatchReady.primaryAgent.description,
|
|
523
|
+
dispatchParams: dispatchReady.primaryAgent.dispatchParams,
|
|
524
|
+
});
|
|
525
|
+
}
|
|
526
|
+
if (dispatchReady.parallelAgents?.length) {
|
|
527
|
+
for (const agent of dispatchReady.parallelAgents) {
|
|
528
|
+
agents.push({
|
|
529
|
+
name: agent.name,
|
|
530
|
+
displayName: agent.displayName,
|
|
531
|
+
description: agent.description,
|
|
532
|
+
dispatchParams: agent.dispatchParams,
|
|
533
|
+
});
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
if (agents.length === 0) {
|
|
537
|
+
return undefined;
|
|
538
|
+
}
|
|
539
|
+
const outer = (0, execution_plan_1.subagentLayer)(agents);
|
|
540
|
+
if (teamsCapability?.available) {
|
|
541
|
+
const inner = (0, execution_plan_1.teamsLayer)({
|
|
542
|
+
team_name: 'auto',
|
|
543
|
+
description: 'Auto-generated Teams coordination layer',
|
|
544
|
+
teammates: agents.map(a => ({
|
|
545
|
+
name: a.name,
|
|
546
|
+
subagent_type: 'general-purpose',
|
|
547
|
+
team_name: 'auto',
|
|
548
|
+
prompt: a.description,
|
|
549
|
+
})),
|
|
550
|
+
});
|
|
551
|
+
return (0, execution_plan_1.buildNestedPlan)(outer, inner);
|
|
552
|
+
}
|
|
553
|
+
return (0, execution_plan_1.buildSimplePlan)(outer);
|
|
554
|
+
}
|
|
356
555
|
async persistModeState(mode) {
|
|
357
556
|
try {
|
|
358
557
|
await this.stateService.updateLastMode(mode);
|
|
@@ -375,6 +574,9 @@ exports.ModeHandler = ModeHandler = ModeHandler_1 = __decorate([
|
|
|
375
574
|
context_document_service_1.ContextDocumentService,
|
|
376
575
|
diagnostic_log_service_1.DiagnosticLogService,
|
|
377
576
|
agent_service_1.AgentService,
|
|
378
|
-
|
|
577
|
+
council_preset_service_1.CouncilPresetService,
|
|
578
|
+
teams_capability_service_1.TeamsCapabilityService,
|
|
579
|
+
impact_1.ImpactEventService,
|
|
580
|
+
rule_event_collector_1.RuleEventCollector])
|
|
379
581
|
], ModeHandler);
|
|
380
582
|
//# sourceMappingURL=mode.handler.js.map
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PLANNING_CONTRACT = void 0;
|
|
4
|
+
exports.resolvePlanningContract = resolvePlanningContract;
|
|
5
|
+
exports.PLANNING_CONTRACT = [
|
|
6
|
+
'Ask one clarifying question at a time — do not batch questions.',
|
|
7
|
+
'Wait for user confirmation before advancing to the next planning stage.',
|
|
8
|
+
'Use the recommended skill for the current stage (brainstorming for discover, writing-plans for plan).',
|
|
9
|
+
'Present 2-3 alternative approaches with trade-offs before settling on a direction.',
|
|
10
|
+
'Break implementation into bite-sized tasks (2-5 minutes each).',
|
|
11
|
+
];
|
|
12
|
+
const PLANNING_AGENT_IDS = new Set([
|
|
13
|
+
'technical-planner',
|
|
14
|
+
'solution-architect',
|
|
15
|
+
'plan-mode',
|
|
16
|
+
'auto-mode',
|
|
17
|
+
]);
|
|
18
|
+
const PLANNING_MODES = new Set(['PLAN', 'AUTO']);
|
|
19
|
+
function resolvePlanningContract(mode, agentId) {
|
|
20
|
+
if (!PLANNING_MODES.has(mode.toUpperCase())) {
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
if (agentId && PLANNING_AGENT_IDS.has(agentId)) {
|
|
24
|
+
return exports.PLANNING_CONTRACT;
|
|
25
|
+
}
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=planning-contract.js.map
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ClarificationMetadata } from './clarification-gate';
|
|
2
|
+
export type PlanningStage = 'discover' | 'design' | 'plan';
|
|
3
|
+
export interface StageProgression {
|
|
4
|
+
completedStages: PlanningStage[];
|
|
5
|
+
currentStage: PlanningStage;
|
|
6
|
+
remainingStages: PlanningStage[];
|
|
7
|
+
}
|
|
8
|
+
export interface PlanningStageMetadata {
|
|
9
|
+
currentStage: PlanningStage;
|
|
10
|
+
stageDescription: string;
|
|
11
|
+
nextStage?: 'design' | 'plan';
|
|
12
|
+
stageTransitionHint?: string;
|
|
13
|
+
recommendedAgent?: string;
|
|
14
|
+
recommendedSkill?: string;
|
|
15
|
+
stageProgression?: StageProgression;
|
|
16
|
+
}
|
|
17
|
+
export interface PlanningStageOptions {
|
|
18
|
+
stageHint?: PlanningStage;
|
|
19
|
+
}
|
|
20
|
+
export declare function resolvePlanningStage(clarification: ClarificationMetadata, options?: PlanningStageOptions): PlanningStageMetadata;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolvePlanningStage = resolvePlanningStage;
|
|
4
|
+
const STAGE_DESCRIPTIONS = {
|
|
5
|
+
discover: 'Discover: Surface questions, constraints, and the option space before committing to an approach.',
|
|
6
|
+
design: 'Design: Synthesize candidate approaches, compare trade-offs, and identify open risks.',
|
|
7
|
+
plan: 'Plan: Produce a concrete, step-by-step implementation plan.',
|
|
8
|
+
};
|
|
9
|
+
const STAGE_TRANSITION_HINTS = {
|
|
10
|
+
discover: 'Answer the clarification question(s) or confirm the direction to proceed to Design.',
|
|
11
|
+
design: 'Confirm the preferred approach to proceed to the concrete implementation Plan.',
|
|
12
|
+
};
|
|
13
|
+
const STAGE_AGENTS = {
|
|
14
|
+
discover: 'solution-architect',
|
|
15
|
+
design: 'solution-architect',
|
|
16
|
+
plan: 'technical-planner',
|
|
17
|
+
};
|
|
18
|
+
const STAGE_SKILLS = {
|
|
19
|
+
discover: 'brainstorming',
|
|
20
|
+
design: undefined,
|
|
21
|
+
plan: 'writing-plans',
|
|
22
|
+
};
|
|
23
|
+
function resolvePlanningStage(clarification, options = {}) {
|
|
24
|
+
const stage = resolveStage(clarification, options);
|
|
25
|
+
return {
|
|
26
|
+
currentStage: stage,
|
|
27
|
+
stageDescription: STAGE_DESCRIPTIONS[stage],
|
|
28
|
+
...(stage !== 'plan' && { nextStage: getNextStage(stage) }),
|
|
29
|
+
...(stage !== 'plan' && {
|
|
30
|
+
stageTransitionHint: STAGE_TRANSITION_HINTS[stage],
|
|
31
|
+
}),
|
|
32
|
+
recommendedAgent: STAGE_AGENTS[stage],
|
|
33
|
+
...(STAGE_SKILLS[stage] && { recommendedSkill: STAGE_SKILLS[stage] }),
|
|
34
|
+
stageProgression: buildStageProgression(stage),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function resolveStage(clarification, options) {
|
|
38
|
+
if (options.stageHint) {
|
|
39
|
+
return options.stageHint;
|
|
40
|
+
}
|
|
41
|
+
if (clarification.clarificationNeeded) {
|
|
42
|
+
return 'discover';
|
|
43
|
+
}
|
|
44
|
+
return 'discover';
|
|
45
|
+
}
|
|
46
|
+
function getNextStage(stage) {
|
|
47
|
+
return stage === 'discover' ? 'design' : 'plan';
|
|
48
|
+
}
|
|
49
|
+
const ALL_STAGES = ['discover', 'design', 'plan'];
|
|
50
|
+
function buildStageProgression(currentStage) {
|
|
51
|
+
const currentIndex = ALL_STAGES.indexOf(currentStage);
|
|
52
|
+
return {
|
|
53
|
+
completedStages: ALL_STAGES.slice(0, currentIndex),
|
|
54
|
+
currentStage,
|
|
55
|
+
remainingStages: ALL_STAGES.slice(currentIndex + 1),
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=planning-stage.js.map
|
|
@@ -2,10 +2,12 @@ import type { ToolDefinition } from './base.handler';
|
|
|
2
2
|
import type { ToolResponse } from '../response.utils';
|
|
3
3
|
import { AbstractHandler } from './abstract-handler';
|
|
4
4
|
import { QualityReportService } from '../../ship/quality-report.service';
|
|
5
|
+
import { RuleEventCollector } from '../../rules/rule-event-collector';
|
|
5
6
|
export declare class QualityReportHandler extends AbstractHandler {
|
|
6
7
|
private readonly qualityReportService;
|
|
8
|
+
private readonly ruleEventCollector;
|
|
7
9
|
private readonly logger;
|
|
8
|
-
constructor(qualityReportService: QualityReportService);
|
|
10
|
+
constructor(qualityReportService: QualityReportService, ruleEventCollector: RuleEventCollector);
|
|
9
11
|
protected getHandledTools(): string[];
|
|
10
12
|
protected handleTool(_toolName: string, args: Record<string, unknown> | undefined): Promise<ToolResponse>;
|
|
11
13
|
getToolDefinitions(): ToolDefinition[];
|
|
@@ -16,10 +16,12 @@ const abstract_handler_1 = require("./abstract-handler");
|
|
|
16
16
|
const quality_report_service_1 = require("../../ship/quality-report.service");
|
|
17
17
|
const response_utils_1 = require("../response.utils");
|
|
18
18
|
const validation_constants_1 = require("../../shared/validation.constants");
|
|
19
|
+
const rule_event_collector_1 = require("../../rules/rule-event-collector");
|
|
19
20
|
let QualityReportHandler = QualityReportHandler_1 = class QualityReportHandler extends abstract_handler_1.AbstractHandler {
|
|
20
|
-
constructor(qualityReportService) {
|
|
21
|
+
constructor(qualityReportService, ruleEventCollector) {
|
|
21
22
|
super();
|
|
22
23
|
this.qualityReportService = qualityReportService;
|
|
24
|
+
this.ruleEventCollector = ruleEventCollector;
|
|
23
25
|
this.logger = new common_1.Logger(QualityReportHandler_1.name);
|
|
24
26
|
}
|
|
25
27
|
getHandledTools() {
|
|
@@ -36,6 +38,21 @@ let QualityReportHandler = QualityReportHandler_1 = class QualityReportHandler e
|
|
|
36
38
|
changedFiles,
|
|
37
39
|
timeout,
|
|
38
40
|
});
|
|
41
|
+
try {
|
|
42
|
+
const domains = result.domains;
|
|
43
|
+
if (domains?.length) {
|
|
44
|
+
const timestamp = new Date().toISOString();
|
|
45
|
+
for (const d of domains) {
|
|
46
|
+
this.ruleEventCollector.record({
|
|
47
|
+
type: 'specialist_dispatched',
|
|
48
|
+
timestamp,
|
|
49
|
+
domain: d.domain,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
}
|
|
39
56
|
return (0, response_utils_1.createJsonResponse)(result);
|
|
40
57
|
}
|
|
41
58
|
catch (error) {
|
|
@@ -70,6 +87,7 @@ let QualityReportHandler = QualityReportHandler_1 = class QualityReportHandler e
|
|
|
70
87
|
exports.QualityReportHandler = QualityReportHandler;
|
|
71
88
|
exports.QualityReportHandler = QualityReportHandler = QualityReportHandler_1 = __decorate([
|
|
72
89
|
(0, common_1.Injectable)(),
|
|
73
|
-
__metadata("design:paramtypes", [quality_report_service_1.QualityReportService
|
|
90
|
+
__metadata("design:paramtypes", [quality_report_service_1.QualityReportService,
|
|
91
|
+
rule_event_collector_1.RuleEventCollector])
|
|
74
92
|
], QualityReportHandler);
|
|
75
93
|
//# sourceMappingURL=quality-report.handler.js.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ToolDefinition } from './base.handler';
|
|
2
|
+
import type { ToolResponse } from '../response.utils';
|
|
3
|
+
import { AbstractHandler } from './abstract-handler';
|
|
4
|
+
import { ReviewPrService } from '../../ship/review-pr.service';
|
|
5
|
+
export declare class ReviewPrHandler extends AbstractHandler {
|
|
6
|
+
private readonly reviewPrService;
|
|
7
|
+
private readonly logger;
|
|
8
|
+
constructor(reviewPrService: ReviewPrService);
|
|
9
|
+
protected getHandledTools(): string[];
|
|
10
|
+
protected handleTool(_toolName: string, args: Record<string, unknown> | undefined): Promise<ToolResponse>;
|
|
11
|
+
getToolDefinitions(): ToolDefinition[];
|
|
12
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
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 ReviewPrHandler_1;
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.ReviewPrHandler = void 0;
|
|
14
|
+
const common_1 = require("@nestjs/common");
|
|
15
|
+
const abstract_handler_1 = require("./abstract-handler");
|
|
16
|
+
const review_pr_service_1 = require("../../ship/review-pr.service");
|
|
17
|
+
const response_utils_1 = require("../response.utils");
|
|
18
|
+
let ReviewPrHandler = ReviewPrHandler_1 = class ReviewPrHandler extends abstract_handler_1.AbstractHandler {
|
|
19
|
+
constructor(reviewPrService) {
|
|
20
|
+
super();
|
|
21
|
+
this.reviewPrService = reviewPrService;
|
|
22
|
+
this.logger = new common_1.Logger(ReviewPrHandler_1.name);
|
|
23
|
+
}
|
|
24
|
+
getHandledTools() {
|
|
25
|
+
return ['review_pr'];
|
|
26
|
+
}
|
|
27
|
+
async handleTool(_toolName, args) {
|
|
28
|
+
try {
|
|
29
|
+
const prNumber = args?.pr_number;
|
|
30
|
+
if (typeof prNumber !== 'number' || !Number.isFinite(prNumber) || prNumber <= 0) {
|
|
31
|
+
return (0, response_utils_1.createErrorResponse)('pr_number is required and must be a positive number');
|
|
32
|
+
}
|
|
33
|
+
const issueNumber = typeof args?.issue_number === 'number' && args.issue_number > 0
|
|
34
|
+
? args.issue_number
|
|
35
|
+
: undefined;
|
|
36
|
+
const timeout = typeof args?.timeout === 'number' && args.timeout > 0 ? args.timeout : 30000;
|
|
37
|
+
const result = await this.reviewPrService.reviewPr({
|
|
38
|
+
prNumber,
|
|
39
|
+
issueNumber,
|
|
40
|
+
timeout,
|
|
41
|
+
});
|
|
42
|
+
return (0, response_utils_1.createJsonResponse)(result);
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
this.logger.error(`review_pr failed: ${error}`);
|
|
46
|
+
return (0, response_utils_1.createErrorResponse)(`review_pr failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
getToolDefinitions() {
|
|
50
|
+
return [
|
|
51
|
+
{
|
|
52
|
+
name: 'review_pr',
|
|
53
|
+
description: 'Fetch PR metadata, diff, checklists, and specialist recommendations for EVAL-mode PR review. Returns structured data for comprehensive code review.',
|
|
54
|
+
inputSchema: {
|
|
55
|
+
type: 'object',
|
|
56
|
+
properties: {
|
|
57
|
+
pr_number: {
|
|
58
|
+
type: 'number',
|
|
59
|
+
description: 'PR number to review',
|
|
60
|
+
},
|
|
61
|
+
issue_number: {
|
|
62
|
+
type: 'number',
|
|
63
|
+
description: 'Optional linked issue number for spec compliance check',
|
|
64
|
+
},
|
|
65
|
+
timeout: {
|
|
66
|
+
type: 'number',
|
|
67
|
+
description: 'Timeout in milliseconds (default: 30000)',
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
required: ['pr_number'],
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
];
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
exports.ReviewPrHandler = ReviewPrHandler;
|
|
77
|
+
exports.ReviewPrHandler = ReviewPrHandler = ReviewPrHandler_1 = __decorate([
|
|
78
|
+
(0, common_1.Injectable)(),
|
|
79
|
+
__metadata("design:paramtypes", [review_pr_service_1.ReviewPrService])
|
|
80
|
+
], ReviewPrHandler);
|
|
81
|
+
//# sourceMappingURL=review-pr.handler.js.map
|
|
@@ -11,6 +11,7 @@ export declare class RulesService {
|
|
|
11
11
|
getRuleContent(relativePath: string): Promise<string>;
|
|
12
12
|
listAgents(): Promise<string[]>;
|
|
13
13
|
private sortAgentsByPriority;
|
|
14
|
+
getRulesDir(): string;
|
|
14
15
|
isModeAgent(agentName: string): boolean;
|
|
15
16
|
getAgent(name: string): Promise<AgentProfile>;
|
|
16
17
|
searchRules(query: string): Promise<SearchResult[]>;
|
|
@@ -18,6 +19,11 @@ export declare class RulesService {
|
|
|
18
19
|
name: string;
|
|
19
20
|
description: string;
|
|
20
21
|
triggers?: SkillFrontmatterTrigger[];
|
|
22
|
+
userInvocable?: boolean;
|
|
23
|
+
disableModelInvocation?: boolean;
|
|
24
|
+
context?: string;
|
|
25
|
+
agent?: string;
|
|
26
|
+
allowedTools?: string[];
|
|
21
27
|
}>>;
|
|
22
28
|
getSkill(name: string): Promise<Skill>;
|
|
23
29
|
}
|
|
@@ -82,6 +82,9 @@ let RulesService = RulesService_1 = class RulesService {
|
|
|
82
82
|
const sortedModeAgents = keyword_types_1.MODE_AGENTS.filter(agent => foundModeAgents.includes(agent));
|
|
83
83
|
return [...sortedModeAgents, ...otherAgents.sort()];
|
|
84
84
|
}
|
|
85
|
+
getRulesDir() {
|
|
86
|
+
return this.rulesDir;
|
|
87
|
+
}
|
|
85
88
|
isModeAgent(agentName) {
|
|
86
89
|
return keyword_types_1.MODE_AGENTS.includes(agentName);
|
|
87
90
|
}
|
|
@@ -13,5 +13,10 @@ export interface Skill {
|
|
|
13
13
|
content: string;
|
|
14
14
|
path: string;
|
|
15
15
|
triggers?: SkillFrontmatterTrigger[];
|
|
16
|
+
userInvocable?: boolean;
|
|
17
|
+
disableModelInvocation?: boolean;
|
|
18
|
+
context?: string;
|
|
19
|
+
agent?: string;
|
|
20
|
+
allowedTools?: string[];
|
|
16
21
|
}
|
|
17
22
|
export declare function parseSkill(content: string, filePath: string): Skill;
|
|
@@ -13,6 +13,30 @@ class SkillSchemaError extends Error {
|
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
exports.SkillSchemaError = SkillSchemaError;
|
|
16
|
+
function splitAllowedTools(s) {
|
|
17
|
+
const result = [];
|
|
18
|
+
let current = '';
|
|
19
|
+
let depth = 0;
|
|
20
|
+
for (const ch of s) {
|
|
21
|
+
if (ch === '(')
|
|
22
|
+
depth++;
|
|
23
|
+
else if (ch === ')')
|
|
24
|
+
depth--;
|
|
25
|
+
if (ch === ',' && depth === 0) {
|
|
26
|
+
const trimmed = current.trim();
|
|
27
|
+
if (trimmed)
|
|
28
|
+
result.push(trimmed);
|
|
29
|
+
current = '';
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
current += ch;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const trimmed = current.trim();
|
|
36
|
+
if (trimmed)
|
|
37
|
+
result.push(trimmed);
|
|
38
|
+
return result;
|
|
39
|
+
}
|
|
16
40
|
const SkillFrontmatterTriggerSchema = z.object({
|
|
17
41
|
pattern: z.string().min(1),
|
|
18
42
|
confidence: z.enum(['high', 'medium', 'low']),
|
|
@@ -24,6 +48,13 @@ const SkillFrontmatterSchema = z.object({
|
|
|
24
48
|
.regex(/^[a-z0-9-]+$/, 'Skill name must be lowercase alphanumeric with hyphens only'),
|
|
25
49
|
description: z.string().min(1).max(500),
|
|
26
50
|
triggers: z.array(SkillFrontmatterTriggerSchema).optional(),
|
|
51
|
+
'user-invocable': z.boolean().optional(),
|
|
52
|
+
'disable-model-invocation': z.boolean().optional(),
|
|
53
|
+
context: z.string().optional(),
|
|
54
|
+
agent: z.string().optional(),
|
|
55
|
+
'allowed-tools': z
|
|
56
|
+
.union([z.array(z.string()), z.string().transform(s => splitAllowedTools(s))])
|
|
57
|
+
.optional(),
|
|
27
58
|
});
|
|
28
59
|
const FRONTMATTER_REGEX = /^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/;
|
|
29
60
|
function parseFrontmatter(content) {
|
|
@@ -65,6 +96,11 @@ function parseSkill(content, filePath) {
|
|
|
65
96
|
content: body,
|
|
66
97
|
path: filePath,
|
|
67
98
|
triggers: result.data.triggers,
|
|
99
|
+
userInvocable: result.data['user-invocable'],
|
|
100
|
+
disableModelInvocation: result.data['disable-model-invocation'],
|
|
101
|
+
context: result.data.context,
|
|
102
|
+
agent: result.data.agent,
|
|
103
|
+
allowedTools: result.data['allowed-tools'],
|
|
68
104
|
};
|
|
69
105
|
}
|
|
70
106
|
//# sourceMappingURL=skill.schema.js.map
|