bc-code-intelligence-mcp 1.5.9 → 1.6.1
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/LICENSE +20 -20
- package/README.md +165 -165
- package/dist/config/config-loader.js +6 -6
- package/dist/config/config-loader.js.map +1 -1
- package/dist/index.d.ts +9 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +93 -211
- package/dist/index.js.map +1 -1
- package/dist/layers/base-layer.d.ts +6 -6
- package/dist/layers/base-layer.d.ts.map +1 -1
- package/dist/layers/base-layer.js +15 -15
- package/dist/layers/base-layer.js.map +1 -1
- package/dist/layers/embedded-layer.d.ts +2 -2
- package/dist/layers/embedded-layer.d.ts.map +1 -1
- package/dist/layers/embedded-layer.js +59 -43
- package/dist/layers/embedded-layer.js.map +1 -1
- package/dist/layers/git-layer.d.ts +4 -2
- package/dist/layers/git-layer.d.ts.map +1 -1
- package/dist/layers/git-layer.js +70 -23
- package/dist/layers/git-layer.js.map +1 -1
- package/dist/layers/project-layer.d.ts +2 -2
- package/dist/layers/project-layer.d.ts.map +1 -1
- package/dist/layers/project-layer.js +58 -44
- package/dist/layers/project-layer.js.map +1 -1
- package/dist/services/code-analysis-service.d.ts +100 -2
- package/dist/services/code-analysis-service.d.ts.map +1 -1
- package/dist/services/code-analysis-service.js +274 -8
- package/dist/services/code-analysis-service.js.map +1 -1
- package/dist/services/knowledge-service.d.ts.map +1 -1
- package/dist/services/knowledge-service.js.map +1 -1
- package/dist/services/methodology-service.d.ts +34 -2
- package/dist/services/methodology-service.d.ts.map +1 -1
- package/dist/services/methodology-service.js +284 -29
- package/dist/services/methodology-service.js.map +1 -1
- package/dist/services/multi-content-layer-service.d.ts +5 -0
- package/dist/services/multi-content-layer-service.d.ts.map +1 -1
- package/dist/services/multi-content-layer-service.js +57 -9
- package/dist/services/multi-content-layer-service.js.map +1 -1
- package/dist/services/relevance-index-service.d.ts +95 -0
- package/dist/services/relevance-index-service.d.ts.map +1 -0
- package/dist/services/relevance-index-service.js +321 -0
- package/dist/services/relevance-index-service.js.map +1 -0
- package/dist/services/specialist-loader.d.ts +1 -0
- package/dist/services/specialist-loader.d.ts.map +1 -1
- package/dist/services/specialist-loader.js +1 -0
- package/dist/services/specialist-loader.js.map +1 -1
- package/dist/services/workflow-service.d.ts +12 -0
- package/dist/services/workflow-service.d.ts.map +1 -1
- package/dist/services/workflow-service.js +30 -0
- package/dist/services/workflow-service.js.map +1 -1
- package/dist/services/{enhanced-prompt-service.d.ts → workflow-specialist-router.d.ts} +41 -4
- package/dist/services/workflow-specialist-router.d.ts.map +1 -0
- package/dist/services/{enhanced-prompt-service.js → workflow-specialist-router.js} +150 -24
- package/dist/services/workflow-specialist-router.js.map +1 -0
- package/dist/services/workflow-v2/index.d.ts +6 -0
- package/dist/services/workflow-v2/index.d.ts.map +1 -0
- package/dist/services/workflow-v2/index.js +6 -0
- package/dist/services/workflow-v2/index.js.map +1 -0
- package/dist/services/workflow-v2/workflow-definitions.d.ts +53 -0
- package/dist/services/workflow-v2/workflow-definitions.d.ts.map +1 -0
- package/dist/services/workflow-v2/workflow-definitions.js +722 -0
- package/dist/services/workflow-v2/workflow-definitions.js.map +1 -0
- package/dist/services/workflow-v2/workflow-session-manager.d.ts +140 -0
- package/dist/services/workflow-v2/workflow-session-manager.d.ts.map +1 -0
- package/dist/services/workflow-v2/workflow-session-manager.js +820 -0
- package/dist/services/workflow-v2/workflow-session-manager.js.map +1 -0
- package/dist/tools/{workspace-tools.d.ts → _shared/workspace-constants.d.ts} +4 -51
- package/dist/tools/_shared/workspace-constants.d.ts.map +1 -0
- package/dist/tools/_shared/workspace-constants.js +53 -0
- package/dist/tools/_shared/workspace-constants.js.map +1 -0
- package/dist/tools/analyze_al_code/handler.d.ts +12 -0
- package/dist/tools/analyze_al_code/handler.d.ts.map +1 -0
- package/dist/tools/analyze_al_code/handler.js +312 -0
- package/dist/tools/analyze_al_code/handler.js.map +1 -0
- package/dist/tools/analyze_al_code/schema.d.ts +8 -0
- package/dist/tools/analyze_al_code/schema.d.ts.map +1 -0
- package/dist/tools/analyze_al_code/schema.js +54 -0
- package/dist/tools/analyze_al_code/schema.js.map +1 -0
- package/dist/tools/ask_bc_expert/handler.d.ts +21 -0
- package/dist/tools/ask_bc_expert/handler.d.ts.map +1 -0
- package/dist/tools/ask_bc_expert/handler.js +118 -0
- package/dist/tools/ask_bc_expert/handler.js.map +1 -0
- package/dist/tools/ask_bc_expert/schema.d.ts +8 -0
- package/dist/tools/ask_bc_expert/schema.d.ts.map +1 -0
- package/dist/tools/ask_bc_expert/schema.js +33 -0
- package/dist/tools/ask_bc_expert/schema.js.map +1 -0
- package/dist/tools/create_layer_content/handler.d.ts +17 -0
- package/dist/tools/create_layer_content/handler.d.ts.map +1 -0
- package/dist/tools/create_layer_content/handler.js +248 -0
- package/dist/tools/create_layer_content/handler.js.map +1 -0
- package/dist/tools/create_layer_content/schema.d.ts +9 -0
- package/dist/tools/create_layer_content/schema.d.ts.map +1 -0
- package/dist/tools/create_layer_content/schema.js +42 -0
- package/dist/tools/create_layer_content/schema.js.map +1 -0
- package/dist/tools/debug/diagnose_git_layer/handler.d.ts +6 -0
- package/dist/tools/debug/diagnose_git_layer/handler.d.ts.map +1 -0
- package/dist/tools/debug/diagnose_git_layer/handler.js +286 -0
- package/dist/tools/debug/diagnose_git_layer/handler.js.map +1 -0
- package/dist/tools/debug/diagnose_git_layer/schema.d.ts +6 -0
- package/dist/tools/debug/diagnose_git_layer/schema.d.ts.map +1 -0
- package/dist/tools/debug/diagnose_git_layer/schema.js +35 -0
- package/dist/tools/debug/diagnose_git_layer/schema.js.map +1 -0
- package/dist/tools/debug/diagnose_local_layer/handler.d.ts +6 -0
- package/dist/tools/debug/diagnose_local_layer/handler.d.ts.map +1 -0
- package/dist/tools/debug/diagnose_local_layer/handler.js +285 -0
- package/dist/tools/debug/diagnose_local_layer/handler.js.map +1 -0
- package/dist/tools/debug/diagnose_local_layer/schema.d.ts +6 -0
- package/dist/tools/debug/diagnose_local_layer/schema.d.ts.map +1 -0
- package/dist/tools/debug/diagnose_local_layer/schema.js +16 -0
- package/dist/tools/debug/diagnose_local_layer/schema.js.map +1 -0
- package/dist/tools/debug/get_layer_diagnostics/handler.d.ts +7 -0
- package/dist/tools/debug/get_layer_diagnostics/handler.d.ts.map +1 -0
- package/dist/tools/debug/get_layer_diagnostics/handler.js +46 -0
- package/dist/tools/debug/get_layer_diagnostics/handler.js.map +1 -0
- package/dist/tools/debug/get_layer_diagnostics/schema.d.ts +6 -0
- package/dist/tools/debug/get_layer_diagnostics/schema.d.ts.map +1 -0
- package/dist/tools/debug/get_layer_diagnostics/schema.js +20 -0
- package/dist/tools/debug/get_layer_diagnostics/schema.js.map +1 -0
- package/dist/tools/debug/reload_layers/handler.d.ts +8 -0
- package/dist/tools/debug/reload_layers/handler.d.ts.map +1 -0
- package/dist/tools/debug/reload_layers/handler.js +83 -0
- package/dist/tools/debug/reload_layers/handler.js.map +1 -0
- package/dist/tools/debug/reload_layers/schema.d.ts +6 -0
- package/dist/tools/debug/reload_layers/schema.d.ts.map +1 -0
- package/dist/tools/debug/reload_layers/schema.js +20 -0
- package/dist/tools/debug/reload_layers/schema.js.map +1 -0
- package/dist/tools/debug/test_azure_devops_pat/handler.d.ts +6 -0
- package/dist/tools/debug/test_azure_devops_pat/handler.d.ts.map +1 -0
- package/dist/tools/debug/test_azure_devops_pat/handler.js +16 -0
- package/dist/tools/debug/test_azure_devops_pat/handler.js.map +1 -0
- package/dist/tools/debug/test_azure_devops_pat/schema.d.ts +6 -0
- package/dist/tools/debug/test_azure_devops_pat/schema.d.ts.map +1 -0
- package/dist/tools/debug/test_azure_devops_pat/schema.js +27 -0
- package/dist/tools/debug/test_azure_devops_pat/schema.js.map +1 -0
- package/dist/tools/debug/validate_layer_config/handler.d.ts +6 -0
- package/dist/tools/debug/validate_layer_config/handler.d.ts.map +1 -0
- package/dist/tools/debug/validate_layer_config/handler.js +17 -0
- package/dist/tools/debug/validate_layer_config/handler.js.map +1 -0
- package/dist/tools/debug/validate_layer_config/schema.d.ts +6 -0
- package/dist/tools/debug/validate_layer_config/schema.d.ts.map +1 -0
- package/dist/tools/debug/validate_layer_config/schema.js +21 -0
- package/dist/tools/debug/validate_layer_config/schema.js.map +1 -0
- package/dist/tools/find_bc_knowledge/handler.d.ts +21 -0
- package/dist/tools/find_bc_knowledge/handler.d.ts.map +1 -0
- package/dist/tools/find_bc_knowledge/handler.js +71 -0
- package/dist/tools/find_bc_knowledge/handler.js.map +1 -0
- package/dist/tools/find_bc_knowledge/schema.d.ts +8 -0
- package/dist/tools/find_bc_knowledge/schema.d.ts.map +1 -0
- package/dist/tools/find_bc_knowledge/schema.js +35 -0
- package/dist/tools/find_bc_knowledge/schema.js.map +1 -0
- package/dist/tools/get_bc_topic/handler.d.ts +12 -0
- package/dist/tools/get_bc_topic/handler.d.ts.map +1 -0
- package/dist/tools/get_bc_topic/handler.js +35 -0
- package/dist/tools/get_bc_topic/handler.js.map +1 -0
- package/dist/tools/get_bc_topic/schema.d.ts +8 -0
- package/dist/tools/get_bc_topic/schema.d.ts.map +1 -0
- package/dist/tools/get_bc_topic/schema.js +29 -0
- package/dist/tools/get_bc_topic/schema.js.map +1 -0
- package/dist/tools/get_codelens_mappings/handler.d.ts +8 -0
- package/dist/tools/get_codelens_mappings/handler.d.ts.map +1 -0
- package/dist/tools/get_codelens_mappings/handler.js +79 -0
- package/dist/tools/get_codelens_mappings/handler.js.map +1 -0
- package/dist/tools/get_codelens_mappings/schema.d.ts +9 -0
- package/dist/tools/get_codelens_mappings/schema.d.ts.map +1 -0
- package/dist/tools/get_codelens_mappings/schema.js +16 -0
- package/dist/tools/get_codelens_mappings/schema.js.map +1 -0
- package/dist/tools/get_workspace_info/handler.d.ts +16 -0
- package/dist/tools/get_workspace_info/handler.d.ts.map +1 -0
- package/dist/tools/get_workspace_info/handler.js +36 -0
- package/dist/tools/get_workspace_info/handler.js.map +1 -0
- package/dist/tools/get_workspace_info/schema.d.ts +8 -0
- package/dist/tools/get_workspace_info/schema.d.ts.map +1 -0
- package/dist/tools/get_workspace_info/schema.js +15 -0
- package/dist/tools/get_workspace_info/schema.js.map +1 -0
- package/dist/tools/handlers.d.ts +48 -0
- package/dist/tools/handlers.d.ts.map +1 -0
- package/dist/tools/handlers.js +81 -0
- package/dist/tools/handlers.js.map +1 -0
- package/dist/tools/index.d.ts +132 -38
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +184 -52
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/list_prompts/handler.d.ts +11 -0
- package/dist/tools/list_prompts/handler.d.ts.map +1 -0
- package/dist/tools/list_prompts/handler.js +102 -0
- package/dist/tools/list_prompts/handler.js.map +1 -0
- package/dist/tools/list_prompts/schema.d.ts +9 -0
- package/dist/tools/list_prompts/schema.d.ts.map +1 -0
- package/dist/tools/list_prompts/schema.js +28 -0
- package/dist/tools/list_prompts/schema.js.map +1 -0
- package/dist/tools/list_specialists/handler.d.ts +12 -0
- package/dist/tools/list_specialists/handler.d.ts.map +1 -0
- package/dist/tools/list_specialists/handler.js +68 -0
- package/dist/tools/list_specialists/handler.js.map +1 -0
- package/dist/tools/list_specialists/schema.d.ts +8 -0
- package/dist/tools/list_specialists/schema.d.ts.map +1 -0
- package/dist/tools/list_specialists/schema.js +24 -0
- package/dist/tools/list_specialists/schema.js.map +1 -0
- package/dist/tools/scaffold_layer_repo/handler.d.ts +15 -0
- package/dist/tools/scaffold_layer_repo/handler.d.ts.map +1 -0
- package/dist/tools/scaffold_layer_repo/handler.js +410 -0
- package/dist/tools/scaffold_layer_repo/handler.js.map +1 -0
- package/dist/tools/scaffold_layer_repo/schema.d.ts +9 -0
- package/dist/tools/scaffold_layer_repo/schema.d.ts.map +1 -0
- package/dist/tools/scaffold_layer_repo/schema.js +35 -0
- package/dist/tools/scaffold_layer_repo/schema.js.map +1 -0
- package/dist/tools/set_workspace_info/handler.d.ts +22 -0
- package/dist/tools/set_workspace_info/handler.d.ts.map +1 -0
- package/dist/tools/set_workspace_info/handler.js +60 -0
- package/dist/tools/set_workspace_info/handler.js.map +1 -0
- package/dist/tools/set_workspace_info/schema.d.ts +8 -0
- package/dist/tools/set_workspace_info/schema.d.ts.map +1 -0
- package/dist/tools/set_workspace_info/schema.js +25 -0
- package/dist/tools/set_workspace_info/schema.js.map +1 -0
- package/dist/tools/validate_layer_repo/handler.d.ts +10 -0
- package/dist/tools/validate_layer_repo/handler.d.ts.map +1 -0
- package/dist/tools/validate_layer_repo/handler.js +148 -0
- package/dist/tools/validate_layer_repo/handler.js.map +1 -0
- package/dist/tools/validate_layer_repo/schema.d.ts +9 -0
- package/dist/tools/validate_layer_repo/schema.d.ts.map +1 -0
- package/dist/tools/validate_layer_repo/schema.js +21 -0
- package/dist/tools/validate_layer_repo/schema.js.map +1 -0
- package/dist/tools/workflow_batch/handler.d.ts +21 -0
- package/dist/tools/workflow_batch/handler.d.ts.map +1 -0
- package/dist/tools/workflow_batch/handler.js +304 -0
- package/dist/tools/workflow_batch/handler.js.map +1 -0
- package/dist/tools/workflow_batch/schema.d.ts +8 -0
- package/dist/tools/workflow_batch/schema.d.ts.map +1 -0
- package/dist/tools/workflow_batch/schema.js +76 -0
- package/dist/tools/workflow_batch/schema.js.map +1 -0
- package/dist/tools/workflow_cancel/handler.d.ts +21 -0
- package/dist/tools/workflow_cancel/handler.d.ts.map +1 -0
- package/dist/tools/workflow_cancel/handler.js +157 -0
- package/dist/tools/workflow_cancel/handler.js.map +1 -0
- package/dist/tools/workflow_cancel/schema.d.ts +8 -0
- package/dist/tools/workflow_cancel/schema.d.ts.map +1 -0
- package/dist/tools/workflow_cancel/schema.js +34 -0
- package/dist/tools/workflow_cancel/schema.js.map +1 -0
- package/dist/tools/workflow_complete/handler.d.ts +21 -0
- package/dist/tools/workflow_complete/handler.d.ts.map +1 -0
- package/dist/tools/workflow_complete/handler.js +124 -0
- package/dist/tools/workflow_complete/handler.js.map +1 -0
- package/dist/tools/workflow_complete/schema.d.ts +8 -0
- package/dist/tools/workflow_complete/schema.d.ts.map +1 -0
- package/dist/tools/workflow_complete/schema.js +45 -0
- package/dist/tools/workflow_complete/schema.js.map +1 -0
- package/dist/tools/workflow_list/handler.d.ts +19 -0
- package/dist/tools/workflow_list/handler.d.ts.map +1 -0
- package/dist/tools/workflow_list/handler.js +58 -0
- package/dist/tools/workflow_list/handler.js.map +1 -0
- package/dist/tools/workflow_list/schema.d.ts +8 -0
- package/dist/tools/workflow_list/schema.d.ts.map +1 -0
- package/dist/tools/workflow_list/schema.js +26 -0
- package/dist/tools/workflow_list/schema.js.map +1 -0
- package/dist/tools/workflow_next/handler.d.ts +21 -0
- package/dist/tools/workflow_next/handler.d.ts.map +1 -0
- package/dist/tools/workflow_next/handler.js +90 -0
- package/dist/tools/workflow_next/handler.js.map +1 -0
- package/dist/tools/workflow_next/schema.d.ts +8 -0
- package/dist/tools/workflow_next/schema.d.ts.map +1 -0
- package/dist/tools/workflow_next/schema.js +28 -0
- package/dist/tools/workflow_next/schema.js.map +1 -0
- package/dist/tools/workflow_progress/handler.d.ts +21 -0
- package/dist/tools/workflow_progress/handler.d.ts.map +1 -0
- package/dist/tools/workflow_progress/handler.js +147 -0
- package/dist/tools/workflow_progress/handler.js.map +1 -0
- package/dist/tools/workflow_progress/schema.d.ts +8 -0
- package/dist/tools/workflow_progress/schema.d.ts.map +1 -0
- package/dist/tools/workflow_progress/schema.js +111 -0
- package/dist/tools/workflow_progress/schema.js.map +1 -0
- package/dist/tools/workflow_start/handler.d.ts +21 -0
- package/dist/tools/workflow_start/handler.d.ts.map +1 -0
- package/dist/tools/workflow_start/handler.js +133 -0
- package/dist/tools/workflow_start/handler.js.map +1 -0
- package/dist/tools/workflow_start/schema.d.ts +8 -0
- package/dist/tools/workflow_start/schema.d.ts.map +1 -0
- package/dist/tools/workflow_start/schema.js +102 -0
- package/dist/tools/workflow_start/schema.js.map +1 -0
- package/dist/tools/workflow_status/handler.d.ts +21 -0
- package/dist/tools/workflow_status/handler.d.ts.map +1 -0
- package/dist/tools/workflow_status/handler.js +107 -0
- package/dist/tools/workflow_status/handler.js.map +1 -0
- package/dist/tools/workflow_status/schema.d.ts +8 -0
- package/dist/tools/workflow_status/schema.d.ts.map +1 -0
- package/dist/tools/workflow_status/schema.js +33 -0
- package/dist/tools/workflow_status/schema.js.map +1 -0
- package/dist/types/bc-knowledge.d.ts +64 -13
- package/dist/types/bc-knowledge.d.ts.map +1 -1
- package/dist/types/bc-knowledge.js +15 -0
- package/dist/types/bc-knowledge.js.map +1 -1
- package/dist/types/enhanced-layer-types.d.ts +3 -3
- package/dist/types/enhanced-layer-types.d.ts.map +1 -1
- package/dist/types/workflow-v2-types.d.ts +577 -0
- package/dist/types/workflow-v2-types.d.ts.map +1 -0
- package/dist/types/workflow-v2-types.js +10 -0
- package/dist/types/workflow-v2-types.js.map +1 -0
- package/embedded-knowledge/.github/ISSUE_TEMPLATE/bug-report.md +23 -23
- package/embedded-knowledge/.github/ISSUE_TEMPLATE/content-improvement.md +23 -23
- package/embedded-knowledge/.github/ISSUE_TEMPLATE/knowledge-request.md +29 -29
- package/embedded-knowledge/AGENTS.md +177 -177
- package/embedded-knowledge/CONTRIBUTING.md +57 -57
- package/embedded-knowledge/LICENSE +20 -20
- package/embedded-knowledge/README.md +31 -31
- package/embedded-knowledge/codelens-mappings.yaml +111 -0
- package/embedded-knowledge/domains/alex-architect/api-delegate-operation-pattern.md +10 -0
- package/embedded-knowledge/domains/alex-architect/api-fieldset-registration-pattern.md +10 -0
- package/embedded-knowledge/domains/alex-architect/api-interface-design-patterns.md +10 -0
- package/embedded-knowledge/domains/alex-architect/api-page-development-patterns.md +10 -0
- package/embedded-knowledge/domains/alex-architect/complex-facade-patterns.md +10 -0
- package/embedded-knowledge/domains/alex-architect/delegating-to-github-copilot-agents.md +10 -0
- package/embedded-knowledge/domains/alex-architect/facade-pattern-al-implementation.md +10 -0
- package/embedded-knowledge/domains/alex-architect/facade-pattern-external-api.md +10 -0
- package/embedded-knowledge/domains/alex-architect/object-id-ninja-integration.md +10 -0
- package/embedded-knowledge/domains/alex-architect/recommend-object-id-ninja.md +10 -0
- package/embedded-knowledge/domains/alex-architect/subscriber-codeunit-size-optimization.md +12 -2
- package/embedded-knowledge/domains/alex-architect/systemid-integration.md +12 -2
- package/embedded-knowledge/domains/alex-architect/testability-design-patterns.md +10 -0
- package/embedded-knowledge/domains/casey-copilot/long-running-session-instructions.md +10 -0
- package/embedded-knowledge/domains/chris-config/configuration-file-discovery.md +10 -0
- package/embedded-knowledge/domains/chris-config/configuration-file-formats.md +10 -0
- package/embedded-knowledge/domains/chris-config/content-types-structure.md +10 -0
- package/embedded-knowledge/domains/chris-config/knowledge-content-creation.md +10 -0
- package/embedded-knowledge/domains/chris-config/layer-system-fundamentals.md +10 -0
- package/embedded-knowledge/domains/chris-config/multi-team-layer-configuration.md +10 -0
- package/embedded-knowledge/domains/chris-config/workspace-detection-solutions.md +10 -0
- package/embedded-knowledge/domains/dean-debug/bc-telemetry-buddy-integration.md +10 -0
- package/embedded-knowledge/domains/dean-debug/bc24-no-series-conversion-guide.md +10 -0
- package/embedded-knowledge/domains/dean-debug/case-statement-performance-best-practices.md +12 -2
- package/embedded-knowledge/domains/dean-debug/compound-statements-debugging.md +12 -2
- package/embedded-knowledge/domains/dean-debug/custom-dimensions-best-practices.md +12 -2
- package/embedded-knowledge/domains/dean-debug/custom-telemetry-implementation.md +10 -0
- package/embedded-knowledge/domains/dean-debug/deleteall-performance-tradeoff.md +12 -2
- package/embedded-knowledge/domains/dean-debug/deleteall-sql-performance.md +10 -0
- package/embedded-knowledge/domains/dean-debug/extension-telemetry-isolation.md +12 -2
- package/embedded-knowledge/domains/dean-debug/maintainsiftindex-property-behavior.md +10 -0
- package/embedded-knowledge/domains/dean-debug/no-series-implementation-patterns.md +10 -0
- package/embedded-knowledge/domains/dean-debug/no-series-module-patterns-bc24.md +10 -0
- package/embedded-knowledge/domains/dean-debug/no-series-validation-module-bc24.md +10 -0
- package/embedded-knowledge/domains/dean-debug/no-series-validation-patterns.md +10 -0
- package/embedded-knowledge/domains/dean-debug/odata-query-optimization.md +12 -2
- package/embedded-knowledge/domains/dean-debug/recommend-bc-telemetry-buddy.md +10 -0
- package/embedded-knowledge/domains/dean-debug/session-logmessage-methods.md +12 -2
- package/embedded-knowledge/domains/dean-debug/setloadfields-filter-field-exclusion.md +12 -2
- package/embedded-knowledge/domains/dean-debug/setloadfields-performance-impact.md +10 -0
- package/embedded-knowledge/domains/dean-debug/setloadfields-performance-optimization.md +10 -0
- package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-case-statements.md +12 -2
- package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-filters.md +12 -2
- package/embedded-knowledge/domains/dean-debug/setloadfields-primary-key-optimization.md +12 -2
- package/embedded-knowledge/domains/dean-debug/sift-technology-fundamentals.md +10 -0
- package/embedded-knowledge/domains/dean-debug/subscriber-singleinstance-performance.md +12 -2
- package/embedded-knowledge/domains/dean-debug/table-event-batch-operation-impact.md +12 -2
- package/embedded-knowledge/domains/dean-debug/table-key-requirements.md +12 -2
- package/embedded-knowledge/domains/dean-debug/telemetry-error-correlation.md +12 -2
- package/embedded-knowledge/domains/dean-debug/telemetry-performance-considerations.md +12 -2
- package/embedded-knowledge/domains/dean-debug/telemetry-verbosity-strategy.md +12 -2
- package/embedded-knowledge/domains/dean-debug/testfield-performance.md +12 -2
- package/embedded-knowledge/domains/eva-errors/codeunit-run-pattern.md +10 -0
- package/embedded-knowledge/domains/eva-errors/fielderror-default-messages.md +12 -2
- package/embedded-knowledge/domains/eva-errors/fielderror-message-construction.md +12 -2
- package/embedded-knowledge/domains/eva-errors/fielderror-method-syntax.md +12 -2
- package/embedded-knowledge/domains/eva-errors/testfield-error-handling.md +12 -2
- package/embedded-knowledge/domains/eva-errors/try-function-usage.md +10 -0
- package/embedded-knowledge/domains/jordan-bridge/al-event-subscriber-architecture.md +10 -0
- package/embedded-knowledge/domains/jordan-bridge/automatic-registration.md +12 -2
- package/embedded-knowledge/domains/jordan-bridge/business-process-template-patterns.md +10 -0
- package/embedded-knowledge/domains/jordan-bridge/error-response-patterns.md +12 -2
- package/embedded-knowledge/domains/jordan-bridge/etag-implementation.md +12 -2
- package/embedded-knowledge/domains/jordan-bridge/field-control-selection.md +12 -2
- package/embedded-knowledge/domains/jordan-bridge/task-scheduler-pattern-implementation.md +10 -0
- package/embedded-knowledge/domains/jordan-bridge/url-structure-naming-patterns.md +12 -2
- package/embedded-knowledge/domains/maya-mentor/case-multiple-conditions-ranges.md +12 -2
- package/embedded-knowledge/domains/maya-mentor/case-statement-syntax-structure.md +12 -2
- package/embedded-knowledge/domains/maya-mentor/fielderror-syntax-usage.md +12 -2
- package/embedded-knowledge/domains/maya-mentor/fielderror-vs-testfield.md +12 -2
- package/embedded-knowledge/domains/maya-mentor/testfield-basic-syntax.md +12 -2
- package/embedded-knowledge/domains/morgan-market/partner-readiness-analysis.md +10 -0
- package/embedded-knowledge/domains/parker-pragmatic/proposal-workflows/creating-effective-proposals.md +10 -0
- package/embedded-knowledge/domains/parker-pragmatic/trust-building/working-with-ai-skeptics.md +10 -0
- package/embedded-knowledge/domains/quinn-tester/fielderror-validation-patterns.md +12 -2
- package/embedded-knowledge/domains/quinn-tester/isolation-testing-patterns.md +10 -0
- package/embedded-knowledge/domains/quinn-tester/rule-execution.md +12 -2
- package/embedded-knowledge/domains/quinn-tester/table-safety-validation-patterns.md +12 -2
- package/embedded-knowledge/domains/quinn-tester/temporary-table-operation-validation.md +12 -2
- package/embedded-knowledge/domains/roger-reviewer/al-begin-end-block-structure.md +10 -0
- package/embedded-knowledge/domains/roger-reviewer/al-binary-operator-spacing.md +10 -0
- package/embedded-knowledge/domains/roger-reviewer/al-blank-line-organization.md +10 -0
- package/embedded-knowledge/domains/roger-reviewer/al-case-action-formatting.md +10 -0
- package/embedded-knowledge/domains/roger-reviewer/al-code-spacing-conventions.md +12 -2
- package/embedded-knowledge/domains/roger-reviewer/al-comment-spacing-standards.md +10 -0
- package/embedded-knowledge/domains/roger-reviewer/al-end-else-pairing.md +10 -0
- package/embedded-knowledge/domains/roger-reviewer/al-keyword-indentation-rules.md +10 -0
- package/embedded-knowledge/domains/roger-reviewer/al-line-start-keyword-positioning.md +10 -0
- package/embedded-knowledge/domains/roger-reviewer/al-separate-if-else-formatting.md +10 -0
- package/embedded-knowledge/domains/roger-reviewer/al-standard-abbreviations.md +10 -0
- package/embedded-knowledge/domains/roger-reviewer/al-statement-per-line-rule.md +10 -0
- package/embedded-knowledge/domains/roger-reviewer/al-unnecessary-else-elimination.md +10 -0
- package/embedded-knowledge/domains/roger-reviewer/al-variable-declaration-order.md +10 -0
- package/embedded-knowledge/domains/roger-reviewer/al-variable-naming-conventions.md +10 -0
- package/embedded-knowledge/domains/roger-reviewer/begin-block-statement-clarity.md +10 -0
- package/embedded-knowledge/domains/roger-reviewer/begin-end-positioning-patterns.md +10 -0
- package/embedded-knowledge/domains/roger-reviewer/binary-operator-line-positioning.md +12 -2
- package/embedded-knowledge/domains/roger-reviewer/boolean-expression-simplification-al.md +10 -0
- package/embedded-knowledge/domains/roger-reviewer/case-statement-error-handling-troubleshooting.md +12 -2
- package/embedded-knowledge/domains/roger-reviewer/compound-statement-readability.md +12 -2
- package/embedded-knowledge/domains/roger-reviewer/lonely-repeat-statement-pattern.md +10 -0
- package/embedded-knowledge/domains/roger-reviewer/testability-code-smells.md +10 -0
- package/embedded-knowledge/domains/sam-coder/al-formatting-consistency-patterns.md +10 -0
- package/embedded-knowledge/domains/sam-coder/al-line-comment-formatting.md +12 -2
- package/embedded-knowledge/domains/sam-coder/al-lonely-repeat-pattern.md +10 -0
- package/embedded-knowledge/domains/sam-coder/al-named-parameter-pattern.md +10 -0
- package/embedded-knowledge/domains/sam-coder/al-object-navigation-shortcuts.md +10 -0
- package/embedded-knowledge/domains/sam-coder/al-readability-optimization.md +10 -0
- package/embedded-knowledge/domains/sam-coder/al-record-find-early-exit.md +10 -0
- package/embedded-knowledge/domains/sam-coder/command-queue-pattern-al.md +10 -0
- package/embedded-knowledge/domains/sam-coder/deleteall-alternative-implementation.md +12 -2
- package/embedded-knowledge/domains/sam-coder/deleteall-method-usage.md +10 -0
- package/embedded-knowledge/domains/sam-coder/deleteall-trigger-execution.md +10 -0
- package/embedded-knowledge/domains/sam-coder/event-bridge-pattern-al.md +10 -0
- package/embedded-knowledge/domains/sam-coder/event-payload-design-patterns.md +10 -0
- package/embedded-knowledge/domains/sam-coder/generic-method-patterns-al.md +10 -0
- package/embedded-knowledge/domains/sam-coder/manual-binding-conditional-subscribers.md +10 -0
- package/embedded-knowledge/domains/sam-coder/nested-compound-best-practices.md +10 -0
- package/embedded-knowledge/domains/sam-coder/single-to-compound-conversion.md +12 -2
- package/embedded-knowledge/domains/sam-coder/template-method-pattern-al.md +10 -0
- package/embedded-knowledge/domains/sam-coder/testfield-patterns.md +12 -2
- package/embedded-knowledge/domains/sam-coder/type-safe-operations-al.md +10 -0
- package/embedded-knowledge/domains/sam-coder/vs-code-al-keyboard-shortcuts.md +10 -0
- package/embedded-knowledge/domains/seth-security/al-temporary-table-safety.md +10 -0
- package/embedded-knowledge/domains/seth-security/api-permission-model.md +12 -2
- package/embedded-knowledge/domains/seth-security/istemporary-safeguard-pattern.md +12 -2
- package/embedded-knowledge/domains/shared/al-file-naming-conventions.md +155 -145
- package/embedded-knowledge/domains/taylor-docs/al-xml-documentation-structure.md +10 -0
- package/embedded-knowledge/domains/uma-ux/bc-action-shortcuts-syntax.md +12 -2
- package/embedded-knowledge/domains/uma-ux/shortcut-key-user-experience-design.md +12 -2
- package/embedded-knowledge/scripts/frontmatter_validator.ps1 +330 -0
- package/embedded-knowledge/specialists/sam-coder.md +29 -20
- package/embedded-knowledge/workflows/bc-version-upgrade.yaml +160 -0
- package/embedded-knowledge/workflows/code-review.yaml +148 -0
- package/embedded-knowledge/workflows/error-to-errorinfo-migration.yaml +137 -0
- package/embedded-knowledge/workflows/onboarding.yaml +124 -0
- package/embedded-knowledge/workflows/performance-audit.yaml +148 -0
- package/embedded-knowledge/workflows/proposal-review.yaml +117 -0
- package/embedded-knowledge/workflows/security-audit.yaml +139 -0
- package/package.json +83 -81
- package/dist/cache/cache-manager.d.ts +0 -95
- package/dist/cache/cache-manager.d.ts.map +0 -1
- package/dist/cache/cache-manager.js +0 -328
- package/dist/cache/cache-manager.js.map +0 -1
- package/dist/cli/bc-code-intel-cli.d.ts +0 -9
- package/dist/cli/bc-code-intel-cli.d.ts.map +0 -1
- package/dist/cli/bc-code-intel-cli.js +0 -440
- package/dist/cli/bc-code-intel-cli.js.map +0 -1
- package/dist/config/test-config-loader.d.ts +0 -10
- package/dist/config/test-config-loader.d.ts.map +0 -1
- package/dist/config/test-config-loader.js +0 -135
- package/dist/config/test-config-loader.js.map +0 -1
- package/dist/config/test-enhanced-layer-service.d.ts +0 -7
- package/dist/config/test-enhanced-layer-service.d.ts.map +0 -1
- package/dist/config/test-enhanced-layer-service.js +0 -104
- package/dist/config/test-enhanced-layer-service.js.map +0 -1
- package/dist/config/test-git-layer.d.ts +0 -7
- package/dist/config/test-git-layer.d.ts.map +0 -1
- package/dist/config/test-git-layer.js +0 -68
- package/dist/config/test-git-layer.js.map +0 -1
- package/dist/dev/hot-reload.d.ts +0 -91
- package/dist/dev/hot-reload.d.ts.map +0 -1
- package/dist/dev/hot-reload.js +0 -358
- package/dist/dev/hot-reload.js.map +0 -1
- package/dist/layers/layer-service.d.ts +0 -135
- package/dist/layers/layer-service.d.ts.map +0 -1
- package/dist/layers/layer-service.js +0 -586
- package/dist/layers/layer-service.js.map +0 -1
- package/dist/monitoring/production-monitor.d.ts +0 -148
- package/dist/monitoring/production-monitor.d.ts.map +0 -1
- package/dist/monitoring/production-monitor.js +0 -463
- package/dist/monitoring/production-monitor.js.map +0 -1
- package/dist/performance/performance-monitor.d.ts +0 -99
- package/dist/performance/performance-monitor.d.ts.map +0 -1
- package/dist/performance/performance-monitor.js +0 -253
- package/dist/performance/performance-monitor.js.map +0 -1
- package/dist/sdk/bc-code-intel-client.d.ts +0 -175
- package/dist/sdk/bc-code-intel-client.d.ts.map +0 -1
- package/dist/sdk/bc-code-intel-client.js +0 -380
- package/dist/sdk/bc-code-intel-client.js.map +0 -1
- package/dist/search/intelligent-search.d.ts +0 -97
- package/dist/search/intelligent-search.d.ts.map +0 -1
- package/dist/search/intelligent-search.js +0 -358
- package/dist/search/intelligent-search.js.map +0 -1
- package/dist/security/access-control.d.ts +0 -110
- package/dist/security/access-control.d.ts.map +0 -1
- package/dist/security/access-control.js +0 -353
- package/dist/security/access-control.js.map +0 -1
- package/dist/services/enhanced-prompt-service.d.ts.map +0 -1
- package/dist/services/enhanced-prompt-service.js.map +0 -1
- package/dist/services/roleplay-engine.d.ts +0 -161
- package/dist/services/roleplay-engine.d.ts.map +0 -1
- package/dist/services/roleplay-engine.js +0 -994
- package/dist/services/roleplay-engine.js.map +0 -1
- package/dist/setup/post-install.d.ts +0 -12
- package/dist/setup/post-install.d.ts.map +0 -1
- package/dist/setup/post-install.js +0 -81
- package/dist/setup/post-install.js.map +0 -1
- package/dist/streamlined-handlers.d.ts +0 -87
- package/dist/streamlined-handlers.d.ts.map +0 -1
- package/dist/streamlined-handlers.js +0 -685
- package/dist/streamlined-handlers.js.map +0 -1
- package/dist/test-enhanced-mcp-server.d.ts +0 -7
- package/dist/test-enhanced-mcp-server.d.ts.map +0 -1
- package/dist/test-enhanced-mcp-server.js +0 -177
- package/dist/test-enhanced-mcp-server.js.map +0 -1
- package/dist/tools/config-diagnostic-tools.d.ts +0 -234
- package/dist/tools/config-diagnostic-tools.d.ts.map +0 -1
- package/dist/tools/config-diagnostic-tools.js +0 -887
- package/dist/tools/config-diagnostic-tools.js.map +0 -1
- package/dist/tools/core-tools.d.ts +0 -26
- package/dist/tools/core-tools.d.ts.map +0 -1
- package/dist/tools/core-tools.js +0 -245
- package/dist/tools/core-tools.js.map +0 -1
- package/dist/tools/handoff-tools.d.ts +0 -37
- package/dist/tools/handoff-tools.d.ts.map +0 -1
- package/dist/tools/handoff-tools.js +0 -265
- package/dist/tools/handoff-tools.js.map +0 -1
- package/dist/tools/onboarding-tools.d.ts +0 -43
- package/dist/tools/onboarding-tools.d.ts.map +0 -1
- package/dist/tools/onboarding-tools.js +0 -353
- package/dist/tools/onboarding-tools.js.map +0 -1
- package/dist/tools/specialist-discovery-tools.d.ts +0 -27
- package/dist/tools/specialist-discovery-tools.d.ts.map +0 -1
- package/dist/tools/specialist-discovery-tools.js +0 -281
- package/dist/tools/specialist-discovery-tools.js.map +0 -1
- package/dist/tools/specialist-tools.d.ts +0 -43
- package/dist/tools/specialist-tools.d.ts.map +0 -1
- package/dist/tools/specialist-tools.js +0 -378
- package/dist/tools/specialist-tools.js.map +0 -1
- package/dist/tools/workspace-tools.d.ts.map +0 -1
- package/dist/tools/workspace-tools.js +0 -188
- package/dist/tools/workspace-tools.js.map +0 -1
- package/dist/types/roleplay-types.d.ts +0 -156
- package/dist/types/roleplay-types.d.ts.map +0 -1
- package/dist/types/roleplay-types.js +0 -8
- package/dist/types/roleplay-types.js.map +0 -1
- package/dist/utils/path-utils.d.ts +0 -5
- package/dist/utils/path-utils.d.ts.map +0 -1
- package/dist/utils/path-utils.js +0 -14
- package/dist/utils/path-utils.js.map +0 -1
- package/dist/workflows/domain-workflows.d.ts +0 -8
- package/dist/workflows/domain-workflows.d.ts.map +0 -1
- package/dist/workflows/domain-workflows.js +0 -360
- package/dist/workflows/domain-workflows.js.map +0 -1
- package/embedded-knowledge/methodologies/index.json +0 -81
- package/embedded-knowledge/methodologies/phases/analysis-full.md +0 -208
- package/embedded-knowledge/methodologies/phases/analysis-quick.md +0 -44
- package/embedded-knowledge/methodologies/phases/analysis.md +0 -182
- package/embedded-knowledge/methodologies/phases/execution-validation-full.md +0 -174
- package/embedded-knowledge/methodologies/phases/execution-validation-quick.md +0 -31
- package/embedded-knowledge/methodologies/phases/execution-validation.md +0 -174
- package/embedded-knowledge/methodologies/phases/performance-full.md +0 -211
- package/embedded-knowledge/methodologies/phases/performance-quick.md +0 -32
- package/embedded-knowledge/methodologies/phases/performance.md +0 -211
- package/embedded-knowledge/methodologies/phases/verification-full.md +0 -162
- package/embedded-knowledge/methodologies/phases/verification-quick.md +0 -48
- package/embedded-knowledge/methodologies/phases/verification.md +0 -146
- package/embedded-knowledge/methodologies/workflow-enforcement.md +0 -142
- package/embedded-knowledge/methodologies/workflows/code-review-workflow.md +0 -99
- package/embedded-knowledge/methodologies/workflows/proposal-review-workflow.md +0 -535
|
@@ -1,378 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP Tools for BC Specialist Interactions
|
|
3
|
-
*
|
|
4
|
-
* Provides a focused set of tools for AI-assisted Business Central development
|
|
5
|
-
* through personality-driven specialist consultations.
|
|
6
|
-
*/
|
|
7
|
-
import { BCSpecialistRoleplayEngine } from '../services/roleplay-engine.js';
|
|
8
|
-
import { z } from 'zod';
|
|
9
|
-
// Input validation schemas
|
|
10
|
-
const SuggestSpecialistSchema = z.object({
|
|
11
|
-
question: z.string().min(10, 'Question must be at least 10 characters'),
|
|
12
|
-
context: z.string().optional().describe('Additional context about the problem')
|
|
13
|
-
});
|
|
14
|
-
const GetSpecialistAdviceSchema = z.object({
|
|
15
|
-
specialist_id: z.string().min(1, 'Specialist ID is required'),
|
|
16
|
-
message: z.string().min(1, 'Message is required'),
|
|
17
|
-
session_id: z.string().optional().describe('Session ID for multi-turn conversations'),
|
|
18
|
-
problem_context: z.string().optional().describe('Overall problem being solved')
|
|
19
|
-
});
|
|
20
|
-
const ListSpecialistsSchema = z.object({
|
|
21
|
-
domain: z.string().optional().describe('Filter by domain (e.g., performance, security)'),
|
|
22
|
-
expertise: z.string().optional().describe('Filter by expertise area')
|
|
23
|
-
});
|
|
24
|
-
export class SpecialistTools {
|
|
25
|
-
layerService;
|
|
26
|
-
sessionManager;
|
|
27
|
-
knowledgeService;
|
|
28
|
-
roleplayEngine;
|
|
29
|
-
constructor(layerService, sessionManager, knowledgeService) {
|
|
30
|
-
this.layerService = layerService;
|
|
31
|
-
this.sessionManager = sessionManager;
|
|
32
|
-
this.knowledgeService = knowledgeService;
|
|
33
|
-
this.roleplayEngine = new BCSpecialistRoleplayEngine(layerService, knowledgeService);
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Get all specialist tool definitions for MCP registration
|
|
37
|
-
*/
|
|
38
|
-
getToolDefinitions() {
|
|
39
|
-
return [
|
|
40
|
-
{
|
|
41
|
-
name: 'suggest_specialist',
|
|
42
|
-
description: 'Find the most appropriate BC specialist for your question. IMPORTANT: When user wants to "talk to" or "chat with" a specific specialist, use get_specialist_advice directly instead. This tool is for discovering which specialist to use when unsure.',
|
|
43
|
-
inputSchema: {
|
|
44
|
-
type: 'object',
|
|
45
|
-
properties: {
|
|
46
|
-
question: {
|
|
47
|
-
type: 'string',
|
|
48
|
-
description: 'Your question or problem description',
|
|
49
|
-
minLength: 10
|
|
50
|
-
},
|
|
51
|
-
context: {
|
|
52
|
-
type: 'string',
|
|
53
|
-
description: 'Additional context about your project or situation (optional)'
|
|
54
|
-
}
|
|
55
|
-
},
|
|
56
|
-
required: ['question']
|
|
57
|
-
}
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
name: 'get_specialist_advice',
|
|
61
|
-
description: `Connect directly with a BC specialist who responds authentically as themselves. CRITICAL FOR AGENTS: Respond AS the specialist, not as an AI describing roleplay. No menus, no explanations - dive straight into the specialist persona and expertise. Perfect for "Talk to Sam", "Chat with Dean", etc.
|
|
62
|
-
|
|
63
|
-
⚠️ **MANDATORY KNOWLEDGE LOOKUP**: Before generating ANY BC development advice or code, ALWAYS search the knowledge base first using find_bc_knowledge. The knowledge base contains authoritative BC standards, patterns, and conventions that override general AI training. Never rely solely on training data for BC development guidance.
|
|
64
|
-
|
|
65
|
-
Example: find_bc_knowledge({ query: "AL file naming conventions" }) before writing AL code.
|
|
66
|
-
|
|
67
|
-
🔧 **AL/BC Platform Constraints**: All specialist advice MUST respect Business Central and AL language limitations:
|
|
68
|
-
• Security specialists: Focus on AL permission objects, user groups, BC security framework - NOT external auth systems
|
|
69
|
-
• UX specialists: Work within AL page/report constraints - BC controls rendering, NOT custom CSS/HTML
|
|
70
|
-
• Performance specialists: AL optimization patterns, table design, BC server constraints - NOT generic frameworks
|
|
71
|
-
• API specialists: BC API pages, web services, AL integration - NOT generic REST frameworks
|
|
72
|
-
• All specialists: Prioritize AL language capabilities and BC platform limitations over generic programming`,
|
|
73
|
-
inputSchema: {
|
|
74
|
-
type: 'object',
|
|
75
|
-
properties: {
|
|
76
|
-
specialist_id: {
|
|
77
|
-
type: 'string',
|
|
78
|
-
description: 'ID of the specialist (e.g., dean-debug, alex-architect)',
|
|
79
|
-
minLength: 1
|
|
80
|
-
},
|
|
81
|
-
message: {
|
|
82
|
-
type: 'string',
|
|
83
|
-
description: 'Your question or message to the specialist',
|
|
84
|
-
minLength: 1
|
|
85
|
-
},
|
|
86
|
-
session_id: {
|
|
87
|
-
type: 'string',
|
|
88
|
-
description: 'Session ID for ongoing conversations (optional - will create new session if not provided)'
|
|
89
|
-
},
|
|
90
|
-
problem_context: {
|
|
91
|
-
type: 'string',
|
|
92
|
-
description: 'Overall problem context to help the specialist understand the bigger picture (optional)'
|
|
93
|
-
}
|
|
94
|
-
},
|
|
95
|
-
required: ['specialist_id', 'message']
|
|
96
|
-
}
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'list_specialists',
|
|
100
|
-
description: 'Discover available BC specialists and their expertise areas. Useful for understanding the team capabilities.',
|
|
101
|
-
inputSchema: {
|
|
102
|
-
type: 'object',
|
|
103
|
-
properties: {
|
|
104
|
-
domain: {
|
|
105
|
-
type: 'string',
|
|
106
|
-
description: 'Filter by domain (e.g., performance, security, api-design) - optional'
|
|
107
|
-
},
|
|
108
|
-
expertise: {
|
|
109
|
-
type: 'string',
|
|
110
|
-
description: 'Filter by expertise area (e.g., caching, authentication) - optional'
|
|
111
|
-
}
|
|
112
|
-
},
|
|
113
|
-
required: []
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
];
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Handle specialist tool calls
|
|
120
|
-
*/
|
|
121
|
-
async handleToolCall(request) {
|
|
122
|
-
try {
|
|
123
|
-
switch (request.params.name) {
|
|
124
|
-
case 'suggest_specialist':
|
|
125
|
-
return await this.handleSuggestSpecialist(request);
|
|
126
|
-
case 'get_specialist_advice':
|
|
127
|
-
return await this.handleGetSpecialistAdvice(request);
|
|
128
|
-
case 'list_specialists':
|
|
129
|
-
return await this.handleListSpecialists(request);
|
|
130
|
-
default:
|
|
131
|
-
return {
|
|
132
|
-
content: [{
|
|
133
|
-
type: 'text',
|
|
134
|
-
text: `Unknown specialist tool: ${request.params.name}`
|
|
135
|
-
}],
|
|
136
|
-
isError: true
|
|
137
|
-
};
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
catch (error) {
|
|
141
|
-
return {
|
|
142
|
-
content: [{
|
|
143
|
-
type: 'text',
|
|
144
|
-
text: `Error in ${request.params.name}: ${error instanceof Error ? error.message : 'Unknown error'}`
|
|
145
|
-
}],
|
|
146
|
-
isError: true
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Find the best specialist for a question
|
|
152
|
-
*/
|
|
153
|
-
async handleSuggestSpecialist(request) {
|
|
154
|
-
const validated = SuggestSpecialistSchema.parse(request.params.arguments);
|
|
155
|
-
// Create basic session context for suggestion
|
|
156
|
-
const sessionContext = validated.context ? {
|
|
157
|
-
problem: validated.context,
|
|
158
|
-
solutions: [],
|
|
159
|
-
recommendations: [],
|
|
160
|
-
nextSteps: [],
|
|
161
|
-
userPreferences: {}
|
|
162
|
-
} : undefined;
|
|
163
|
-
const suggestions = await this.roleplayEngine.suggestSpecialist(validated.question, sessionContext);
|
|
164
|
-
if (suggestions.length === 0) {
|
|
165
|
-
return {
|
|
166
|
-
content: [{
|
|
167
|
-
type: 'text',
|
|
168
|
-
text: '🤔 No specialists found for this question. Try rephrasing or providing more context about your BC development challenge.'
|
|
169
|
-
}]
|
|
170
|
-
};
|
|
171
|
-
}
|
|
172
|
-
// Format suggestions with personality
|
|
173
|
-
let response = `🎯 **Specialist Recommendations for your question:**\n\n`;
|
|
174
|
-
for (let i = 0; i < suggestions.length; i++) {
|
|
175
|
-
const suggestion = suggestions[i];
|
|
176
|
-
const specialist = await this.layerService.getSpecialist(suggestion.specialist_id);
|
|
177
|
-
if (specialist) {
|
|
178
|
-
const confidence = Math.round(suggestion.confidence * 100);
|
|
179
|
-
response += `**${i + 1}. ${specialist.title}** (${suggestion.specialist_id}) - ${confidence}% match\n`;
|
|
180
|
-
response += `${specialist.persona.greeting}\n`;
|
|
181
|
-
response += `💡 **Why ${specialist.title}:** ${suggestion.reasoning}\n`;
|
|
182
|
-
response += `🔧 **Expertise:** ${specialist.expertise.primary.join(', ')}\n\n`;
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
response += `💬 **Next step:** Use \`get_specialist_advice\` with your chosen specialist_id to start the conversation!`;
|
|
186
|
-
return {
|
|
187
|
-
content: [{ type: 'text', text: response }]
|
|
188
|
-
};
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* Get advice from a specialist with automatic session management
|
|
192
|
-
*/
|
|
193
|
-
async handleGetSpecialistAdvice(request) {
|
|
194
|
-
const validated = GetSpecialistAdviceSchema.parse(request.params.arguments);
|
|
195
|
-
// Try exact ID match first
|
|
196
|
-
let specialist = await this.layerService.getSpecialist(validated.specialist_id);
|
|
197
|
-
// If not found, try fuzzy matching
|
|
198
|
-
if (!specialist) {
|
|
199
|
-
specialist = await this.findSpecialistByFuzzyName(validated.specialist_id);
|
|
200
|
-
}
|
|
201
|
-
if (!specialist) {
|
|
202
|
-
return {
|
|
203
|
-
content: [{
|
|
204
|
-
type: 'text',
|
|
205
|
-
text: `❌ Specialist '${validated.specialist_id}' not found. Tried exact ID match and fuzzy name matching. Use 'list_specialists' to see available experts.`
|
|
206
|
-
}],
|
|
207
|
-
isError: true
|
|
208
|
-
};
|
|
209
|
-
}
|
|
210
|
-
// Handle session management
|
|
211
|
-
let sessionId = validated.session_id;
|
|
212
|
-
let session;
|
|
213
|
-
if (sessionId) {
|
|
214
|
-
// Get existing session with auto-recovery
|
|
215
|
-
session = await this.sessionManager.getSession(sessionId);
|
|
216
|
-
if (!session) {
|
|
217
|
-
// Auto-recover: create new session instead of failing
|
|
218
|
-
console.warn(`Session '${sessionId}' not found. Creating recovery session.`);
|
|
219
|
-
session = await this.sessionManager.startSession(validated.specialist_id, 'default-user', `Recovery session. Original session ${sessionId} was lost. Context: ${validated.problem_context || validated.message}`);
|
|
220
|
-
sessionId = session.sessionId;
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
else {
|
|
224
|
-
// Create new session
|
|
225
|
-
session = await this.sessionManager.startSession(validated.specialist_id, 'default-user', // TODO: Get actual user ID from context
|
|
226
|
-
validated.problem_context || validated.message);
|
|
227
|
-
sessionId = session.sessionId;
|
|
228
|
-
}
|
|
229
|
-
// Determine if this is a new session or handoff requiring introduction
|
|
230
|
-
const isNewSession = !validated.session_id || session.messages.length === 0;
|
|
231
|
-
const isHandoff = validated.session_id && session.context.current_specialist !== validated.specialist_id;
|
|
232
|
-
// Generate specialist response using conversation history
|
|
233
|
-
const roleplayContext = {
|
|
234
|
-
specialist,
|
|
235
|
-
userMessage: validated.message,
|
|
236
|
-
session: session.context,
|
|
237
|
-
conversationHistory: session.messages.map(m => ({
|
|
238
|
-
role: m.type === 'user' ? 'user' : 'assistant',
|
|
239
|
-
content: m.content,
|
|
240
|
-
timestamp: m.timestamp
|
|
241
|
-
})),
|
|
242
|
-
requiresIntroduction: isNewSession || isHandoff
|
|
243
|
-
};
|
|
244
|
-
const response = await this.roleplayEngine.generateResponse(roleplayContext);
|
|
245
|
-
// Add user and specialist messages to session
|
|
246
|
-
await this.sessionManager.continueSession(sessionId, validated.message);
|
|
247
|
-
// Update session with specialist response - we'll add this via continueSession flow
|
|
248
|
-
const updatedSession = await this.sessionManager.getSession(sessionId);
|
|
249
|
-
// Update context if provided
|
|
250
|
-
if (response.context_updates && updatedSession) {
|
|
251
|
-
await this.sessionManager.updateContext(sessionId, response.context_updates);
|
|
252
|
-
}
|
|
253
|
-
// Return agent roleplay instructions (NOT formatted user response)
|
|
254
|
-
let agentInstructions = '';
|
|
255
|
-
// **CRITICAL**: Include full specialist markdown content as instructions
|
|
256
|
-
agentInstructions += `SPECIALIST DEFINITION AND INSTRUCTIONS:\n\n`;
|
|
257
|
-
agentInstructions += specialist.content; // Full markdown content including Phase 0, workflows, etc.
|
|
258
|
-
agentInstructions += `\n\n${'='.repeat(80)}\n\n`;
|
|
259
|
-
agentInstructions += `CURRENT CONTEXT:\n\n`;
|
|
260
|
-
agentInstructions += response.content;
|
|
261
|
-
// Add knowledge context for the agent
|
|
262
|
-
if (response.topics_referenced.length > 0) {
|
|
263
|
-
agentInstructions += `\n\nKNOWLEDGE CONTEXT FOR RESPONSE:\n`;
|
|
264
|
-
agentInstructions += `- Referenced Topics: ${response.topics_referenced.join(', ')}\n`;
|
|
265
|
-
agentInstructions += `- Use this knowledge to provide specific, accurate guidance\n`;
|
|
266
|
-
}
|
|
267
|
-
// Add handoff guidance for the agent
|
|
268
|
-
if (response.suggested_handoffs && response.suggested_handoffs.length > 0) {
|
|
269
|
-
agentInstructions += `\n\nHANDOFF GUIDANCE:\n`;
|
|
270
|
-
for (const handoff of response.suggested_handoffs) {
|
|
271
|
-
const handoffSpecialist = await this.layerService.getSpecialist(handoff.specialist_id);
|
|
272
|
-
if (handoffSpecialist) {
|
|
273
|
-
agentInstructions += `- If user needs ${handoff.reason}, suggest consulting ${handoffSpecialist.title}\n`;
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
agentInstructions += `\n\nRemember: You ARE ${specialist.title}. Respond directly as this character, not as an AI assistant.`;
|
|
278
|
-
// Add recommendations as agent guidance
|
|
279
|
-
if (response.recommendations_added && response.recommendations_added.length > 0) {
|
|
280
|
-
agentInstructions += `\n\nRECOMMENDATIONS TO INCLUDE:\n`;
|
|
281
|
-
response.recommendations_added.forEach((rec, i) => {
|
|
282
|
-
agentInstructions += `${i + 1}. ${rec}\n`;
|
|
283
|
-
});
|
|
284
|
-
}
|
|
285
|
-
return {
|
|
286
|
-
content: [{ type: 'text', text: agentInstructions }]
|
|
287
|
-
};
|
|
288
|
-
}
|
|
289
|
-
/**
|
|
290
|
-
* List available specialists with filtering
|
|
291
|
-
*/
|
|
292
|
-
async handleListSpecialists(request) {
|
|
293
|
-
const validated = ListSpecialistsSchema.parse(request.params.arguments || {});
|
|
294
|
-
const specialists = await this.layerService.getAllSpecialists();
|
|
295
|
-
// Apply filters
|
|
296
|
-
let filteredSpecialists = specialists;
|
|
297
|
-
if (validated.domain) {
|
|
298
|
-
filteredSpecialists = specialists.filter(s => s.domains.some(d => d.toLowerCase().includes(validated.domain.toLowerCase())));
|
|
299
|
-
}
|
|
300
|
-
if (validated.expertise) {
|
|
301
|
-
filteredSpecialists = filteredSpecialists.filter(s => [...s.expertise.primary, ...s.expertise.secondary].some(e => e.toLowerCase().includes(validated.expertise.toLowerCase())));
|
|
302
|
-
}
|
|
303
|
-
if (filteredSpecialists.length === 0) {
|
|
304
|
-
return {
|
|
305
|
-
content: [{
|
|
306
|
-
type: 'text',
|
|
307
|
-
text: '❌ No specialists found matching your criteria. Try different filters or remove them to see all specialists.'
|
|
308
|
-
}]
|
|
309
|
-
};
|
|
310
|
-
}
|
|
311
|
-
// Group by domain for better organization
|
|
312
|
-
const specialistsByDomain = new Map();
|
|
313
|
-
filteredSpecialists.forEach(specialist => {
|
|
314
|
-
specialist.domains.forEach(domain => {
|
|
315
|
-
if (!specialistsByDomain.has(domain)) {
|
|
316
|
-
specialistsByDomain.set(domain, []);
|
|
317
|
-
}
|
|
318
|
-
if (!specialistsByDomain.get(domain).includes(specialist)) {
|
|
319
|
-
specialistsByDomain.get(domain).push(specialist);
|
|
320
|
-
}
|
|
321
|
-
});
|
|
322
|
-
});
|
|
323
|
-
let response = `👥 **BC Code Intelligence Specialists** ${validated.domain || validated.expertise ? '(filtered)' : ''}\n\n`;
|
|
324
|
-
// Show specialists organized by domain
|
|
325
|
-
for (const [domain, domainSpecialists] of specialistsByDomain.entries()) {
|
|
326
|
-
response += `## 🏷️ ${domain.charAt(0).toUpperCase() + domain.slice(1)}\n\n`;
|
|
327
|
-
for (const specialist of domainSpecialists) {
|
|
328
|
-
response += `**${specialist.title}** (\`${specialist.specialist_id}\`)\n`;
|
|
329
|
-
response += `💬 ${specialist.persona.greeting}\n`;
|
|
330
|
-
response += `🎯 **Primary Expertise:** ${specialist.expertise.primary.join(', ')}\n`;
|
|
331
|
-
if (specialist.expertise.secondary.length > 0) {
|
|
332
|
-
response += `🔧 **Also helps with:** ${specialist.expertise.secondary.slice(0, 3).join(', ')}\n`;
|
|
333
|
-
}
|
|
334
|
-
response += `\n`;
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
response += `\n💡 **Getting Started:**\n`;
|
|
338
|
-
response += `• Use \`suggest_specialist\` with your question to get personalized recommendations\n`;
|
|
339
|
-
response += `• Use \`get_specialist_advice\` with a specialist_id to start a conversation\n`;
|
|
340
|
-
response += `• Sessions are automatically managed for multi-turn conversations`;
|
|
341
|
-
// Check if workspace is configured - company/project specialists might be missing
|
|
342
|
-
const layersInfo = this.layerService.getLayers();
|
|
343
|
-
const hasProjectOrCompanyLayers = layersInfo.some(layer => layer.name.includes('company') || layer.name.includes('project') || layer.name.includes('team'));
|
|
344
|
-
if (!hasProjectOrCompanyLayers) {
|
|
345
|
-
response += `\n\n⚠️ **Note:** Only embedded specialists shown. Company/project specialists require \`set_workspace_info\` to load custom layers.`;
|
|
346
|
-
}
|
|
347
|
-
return {
|
|
348
|
-
content: [{ type: 'text', text: response }]
|
|
349
|
-
};
|
|
350
|
-
}
|
|
351
|
-
/**
|
|
352
|
-
* Find specialist by partial/fuzzy name matching
|
|
353
|
-
* Handles cases like "Sam" -> "sam-coder", "Dean" -> "dean-debug", etc.
|
|
354
|
-
*/
|
|
355
|
-
async findSpecialistByFuzzyName(partialName) {
|
|
356
|
-
const allSpecialists = await this.layerService.getAllSpecialists();
|
|
357
|
-
const searchTerm = partialName.toLowerCase().trim();
|
|
358
|
-
// First try exact specialist_id match (case insensitive)
|
|
359
|
-
let match = allSpecialists.find(specialist => specialist.specialist_id.toLowerCase() === searchTerm);
|
|
360
|
-
if (match)
|
|
361
|
-
return match;
|
|
362
|
-
// Try partial match in specialist_id
|
|
363
|
-
match = allSpecialists.find(specialist => specialist.specialist_id.toLowerCase().includes(searchTerm));
|
|
364
|
-
if (match)
|
|
365
|
-
return match;
|
|
366
|
-
// Try matching first part of specialist_id (before the dash)
|
|
367
|
-
match = allSpecialists.find(specialist => {
|
|
368
|
-
const firstName = specialist.specialist_id.split('-')[0].toLowerCase();
|
|
369
|
-
return firstName === searchTerm;
|
|
370
|
-
});
|
|
371
|
-
if (match)
|
|
372
|
-
return match;
|
|
373
|
-
// Try matching in title
|
|
374
|
-
match = allSpecialists.find(specialist => specialist.title?.toLowerCase().includes(searchTerm));
|
|
375
|
-
return match || null;
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
//# sourceMappingURL=specialist-tools.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"specialist-tools.js","sourceRoot":"","sources":["../../src/tools/specialist-tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAE5E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,2BAA2B;AAC3B,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,yCAAyC,CAAC;IACvE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;CAChF,CAAC,CAAC;AAEH,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,2BAA2B,CAAC;IAC7D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,qBAAqB,CAAC;IACjD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IACrF,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;CAChF,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;IACxF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;CACtE,CAAC,CAAC;AAEH,MAAM,OAAO,eAAe;IAIP;IACA;IACA;IALX,cAAc,CAA6B;IAEnD,YACmB,YAAsC,EACtC,cAAwC,EACxC,gBAAkC;QAFlC,iBAAY,GAAZ,YAAY,CAA0B;QACtC,mBAAc,GAAd,cAAc,CAA0B;QACxC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAEnD,IAAI,CAAC,cAAc,GAAG,IAAI,0BAA0B,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;IACvF,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO;YACL;gBACE,IAAI,EAAE,oBAAoB;gBAC1B,WAAW,EAAE,wPAAwP;gBACrQ,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,QAAQ,EAAE;4BACR,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,sCAAsC;4BACnD,SAAS,EAAE,EAAE;yBACd;wBACD,OAAO,EAAE;4BACP,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,+DAA+D;yBAC7E;qBACF;oBACD,QAAQ,EAAE,CAAC,UAAU,CAAC;iBACvB;aACF;YACD;gBACE,IAAI,EAAE,uBAAuB;gBAC7B,WAAW,EAAE;;;;;;;;;;;4GAWuF;gBACpG,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,aAAa,EAAE;4BACb,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,yDAAyD;4BACtE,SAAS,EAAE,CAAC;yBACb;wBACD,OAAO,EAAE;4BACP,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,4CAA4C;4BACzD,SAAS,EAAE,CAAC;yBACb;wBACD,UAAU,EAAE;4BACV,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,2FAA2F;yBACzG;wBACD,eAAe,EAAE;4BACf,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,yFAAyF;yBACvG;qBACF;oBACD,QAAQ,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC;iBACvC;aACF;YACD;gBACE,IAAI,EAAE,kBAAkB;gBACxB,WAAW,EAAE,8GAA8G;gBAC3H,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,MAAM,EAAE;4BACN,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,uEAAuE;yBACrF;wBACD,SAAS,EAAE;4BACT,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,qEAAqE;yBACnF;qBACF;oBACD,QAAQ,EAAE,EAAE;iBACb;aACF;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,OAAwB;QAC3C,IAAI,CAAC;YACH,QAAQ,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC5B,KAAK,oBAAoB;oBACvB,OAAO,MAAM,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;gBACrD,KAAK,uBAAuB;oBAC1B,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;gBACvD,KAAK,kBAAkB;oBACrB,OAAO,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;gBACnD;oBACE,OAAO;wBACL,OAAO,EAAE,CAAC;gCACR,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,4BAA4B,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE;6BACxD,CAAC;wBACF,OAAO,EAAE,IAAI;qBACd,CAAC;YACN,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,YAAY,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE;qBACrG,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,uBAAuB,CAAC,OAAwB;QAC5D,MAAM,SAAS,GAAG,uBAAuB,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAE1E,8CAA8C;QAC9C,MAAM,cAAc,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YACzC,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,SAAS,EAAE,EAAE;YACb,eAAe,EAAE,EAAE;YACnB,SAAS,EAAE,EAAE;YACb,eAAe,EAAE,EAAE;SACpB,CAAC,CAAC,CAAC,SAAS,CAAC;QAEd,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAC7D,SAAS,CAAC,QAAQ,EAClB,cAAc,CACf,CAAC;QAEF,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,0HAA0H;qBACjI,CAAC;aACH,CAAC;QACJ,CAAC;QAED,sCAAsC;QACtC,IAAI,QAAQ,GAAG,0DAA0D,CAAC;QAE1E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YAEnF,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC;gBAC3D,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,KAAK,OAAO,UAAU,CAAC,aAAa,OAAO,UAAU,WAAW,CAAC;gBACvG,QAAQ,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC;gBAC/C,QAAQ,IAAI,YAAY,UAAU,CAAC,KAAK,OAAO,UAAU,CAAC,SAAS,IAAI,CAAC;gBACxE,QAAQ,IAAI,qBAAqB,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YACjF,CAAC;QACH,CAAC;QAED,QAAQ,IAAI,2GAA2G,CAAC;QAExH,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;SAC5C,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,yBAAyB,CAAC,OAAwB;QAC9D,MAAM,SAAS,GAAG,yBAAyB,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAE5E,2BAA2B;QAC3B,IAAI,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAEhF,mCAAmC;QACnC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,UAAU,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAC7E,CAAC;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,iBAAiB,SAAS,CAAC,aAAa,6GAA6G;qBAC5J,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,4BAA4B;QAC5B,IAAI,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC;QACrC,IAAI,OAAO,CAAC;QAEZ,IAAI,SAAS,EAAE,CAAC;YACd,0CAA0C;YAC1C,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAC1D,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,sDAAsD;gBACtD,OAAO,CAAC,IAAI,CAAC,YAAY,SAAS,yCAAyC,CAAC,CAAC;gBAC7E,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,CAC9C,SAAS,CAAC,aAAa,EACvB,cAAc,EACd,sCAAsC,SAAS,uBAAuB,SAAS,CAAC,eAAe,IAAI,SAAS,CAAC,OAAO,EAAE,CACvH,CAAC;gBACF,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YAChC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,qBAAqB;YACrB,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,CAC9C,SAAS,CAAC,aAAa,EACvB,cAAc,EAAE,wCAAwC;YACxD,SAAS,CAAC,eAAe,IAAI,SAAS,CAAC,OAAO,CAC/C,CAAC;YACF,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QAChC,CAAC;QAED,uEAAuE;QACvE,MAAM,YAAY,GAAG,CAAC,SAAS,CAAC,UAAU,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;QAC5E,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,kBAAkB,KAAK,SAAS,CAAC,aAAa,CAAC;QAEzG,0DAA0D;QAC1D,MAAM,eAAe,GAAG;YACtB,UAAU;YACV,WAAW,EAAE,SAAS,CAAC,OAAO;YAC9B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,mBAAmB,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC9C,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW;gBAC9C,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,SAAS,EAAE,CAAC,CAAC,SAAS;aACvB,CAAC,CAAC;YACH,oBAAoB,EAAE,YAAY,IAAI,SAAS;SAChD,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;QAE7E,8CAA8C;QAC9C,MAAM,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;QAExE,oFAAoF;QACpF,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAEvE,6BAA6B;QAC7B,IAAI,QAAQ,CAAC,eAAe,IAAI,cAAc,EAAE,CAAC;YAC/C,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;QAC/E,CAAC;QAED,mEAAmE;QACnE,IAAI,iBAAiB,GAAG,EAAE,CAAC;QAE3B,yEAAyE;QACzE,iBAAiB,IAAI,6CAA6C,CAAC;QACnE,iBAAiB,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,2DAA2D;QACpG,iBAAiB,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC;QACjD,iBAAiB,IAAI,sBAAsB,CAAC;QAC5C,iBAAiB,IAAI,QAAQ,CAAC,OAAO,CAAC;QAEtC,sCAAsC;QACtC,IAAI,QAAQ,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,iBAAiB,IAAI,uCAAuC,CAAC;YAC7D,iBAAiB,IAAI,wBAAwB,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACvF,iBAAiB,IAAI,+DAA+D,CAAC;QACvF,CAAC;QAED,qCAAqC;QACrC,IAAI,QAAQ,CAAC,kBAAkB,IAAI,QAAQ,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1E,iBAAiB,IAAI,yBAAyB,CAAC;YAC/C,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,kBAAkB,EAAE,CAAC;gBAClD,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;gBACvF,IAAI,iBAAiB,EAAE,CAAC;oBACtB,iBAAiB,IAAI,mBAAmB,OAAO,CAAC,MAAM,wBAAwB,iBAAiB,CAAC,KAAK,IAAI,CAAC;gBAC5G,CAAC;YACH,CAAC;QACH,CAAC;QAED,iBAAiB,IAAI,yBAAyB,UAAU,CAAC,KAAK,+DAA+D,CAAC;QAE9H,wCAAwC;QACxC,IAAI,QAAQ,CAAC,qBAAqB,IAAI,QAAQ,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChF,iBAAiB,IAAI,mCAAmC,CAAC;YACzD,QAAQ,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;gBAChD,iBAAiB,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;YAC5C,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;SACrD,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,qBAAqB,CAAC,OAAwB;QAC1D,MAAM,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QAE9E,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC;QAEhE,gBAAgB;QAChB,IAAI,mBAAmB,GAAG,WAAW,CAAC;QAEtC,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YACrB,mBAAmB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC3C,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAC/E,CAAC;QACJ,CAAC;QAED,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;YACxB,mBAAmB,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACnD,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAC1D,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAU,CAAC,WAAW,EAAE,CAAC,CAC7D,CACF,CAAC;QACJ,CAAC;QAED,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,6GAA6G;qBACpH,CAAC;aACH,CAAC;QACJ,CAAC;QAED,0CAA0C;QAC1C,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAsC,CAAC;QAE1E,mBAAmB,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YACvC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBAClC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBACrC,mBAAmB,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBACtC,CAAC;gBACD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC3D,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,QAAQ,GAAG,2CAA2C,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;QAE5H,uCAAuC;QACvC,KAAK,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,IAAI,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC;YACxE,QAAQ,IAAI,UAAU,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;YAE7E,KAAK,MAAM,UAAU,IAAI,iBAAiB,EAAE,CAAC;gBAC3C,QAAQ,IAAI,KAAK,UAAU,CAAC,KAAK,SAAS,UAAU,CAAC,aAAa,OAAO,CAAC;gBAC1E,QAAQ,IAAI,MAAM,UAAU,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC;gBAClD,QAAQ,IAAI,6BAA6B,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBACrF,IAAI,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC9C,QAAQ,IAAI,2BAA2B,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBACnG,CAAC;gBACD,QAAQ,IAAI,IAAI,CAAC;YACnB,CAAC;QACH,CAAC;QAED,QAAQ,IAAI,6BAA6B,CAAC;QAC1C,QAAQ,IAAI,uFAAuF,CAAC;QACpG,QAAQ,IAAI,gFAAgF,CAAC;QAC7F,QAAQ,IAAI,mEAAmE,CAAC;QAEhF,kFAAkF;QAClF,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;QACjD,MAAM,yBAAyB,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CACxD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAChG,CAAC;QAEF,IAAI,CAAC,yBAAyB,EAAE,CAAC;YAC/B,QAAQ,IAAI,qIAAqI,CAAC;QACpJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;SAC5C,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,yBAAyB,CAAC,WAAmB;QACzD,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC;QACnE,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;QAEpD,yDAAyD;QACzD,IAAI,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAC3C,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,UAAU,CACtD,CAAC;QAEF,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;QAExB,qCAAqC;QACrC,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CACvC,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAC5D,CAAC;QAEF,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;QAExB,6DAA6D;QAC7D,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACvC,MAAM,SAAS,GAAG,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YACvE,OAAO,SAAS,KAAK,UAAU,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;QAExB,wBAAwB;QACxB,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CACvC,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CACrD,CAAC;QAEF,OAAO,KAAK,IAAI,IAAI,CAAC;IACvB,CAAC;CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-tools.d.ts","sourceRoot":"","sources":["../../src/tools/workspace-tools.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAErE;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;;;;CAYhB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;CAiCtB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,MAAM,OAAO,aAAa,CAAC;AAE1D,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAChI,gBAAgB,EAAE,MAAM,aAAa,CAAC;CACvC;AAED,qBAAa,cAAc;IACb,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,qBAAqB;IAElD,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA4CZ,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC;YAe9C,sBAAsB;YAwDtB,sBAAsB;CA4BrC"}
|
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Workspace management tools
|
|
3
|
-
* Handles workspace root configuration and MCP ecosystem awareness
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Known Business Central MCP servers and their capabilities
|
|
7
|
-
*/
|
|
8
|
-
export const KNOWN_BC_MCPS = {
|
|
9
|
-
// AL & Business Central MCPs
|
|
10
|
-
'bc-code-intelligence-mcp': 'BC development knowledge with 14 specialist AI personas',
|
|
11
|
-
'al-dependency-mcp-server': 'AL workspace symbol and dependency analysis from .app files',
|
|
12
|
-
'serena-mcp': 'Multi-language LSP-based coding assistant with AL Language Server support',
|
|
13
|
-
'al-objid-mcp-server': 'AL object ID collision prevention and management (Object ID Ninja)',
|
|
14
|
-
'bc-telemetry-buddy': 'BC telemetry collection, KQL query generation, and performance analysis',
|
|
15
|
-
// DevOps & Productivity MCPs
|
|
16
|
-
'azure-devops-mcp': 'Azure DevOps integration (work items, repos, pipelines, wiki)',
|
|
17
|
-
'clockify-mcp': 'Clockify time tracking and project management integration',
|
|
18
|
-
'nab-al-tools-mcp': 'XLIFF/XLF translation tooling for AL projects'
|
|
19
|
-
};
|
|
20
|
-
/**
|
|
21
|
-
* Map of signature tools to their MCP server
|
|
22
|
-
* Use this to discover which MCP servers are available by checking for these tools
|
|
23
|
-
*/
|
|
24
|
-
export const MCP_TOOL_SIGNATURES = {
|
|
25
|
-
// BC Telemetry Buddy
|
|
26
|
-
'search_telemetry_traces': 'bc-telemetry-buddy',
|
|
27
|
-
'generate_kql_query': 'bc-telemetry-buddy',
|
|
28
|
-
'analyze_performance_traces': 'bc-telemetry-buddy',
|
|
29
|
-
// AL Object ID Ninja
|
|
30
|
-
'reserve_object_ids': 'al-objid-mcp-server',
|
|
31
|
-
'check_object_id_collision': 'al-objid-mcp-server',
|
|
32
|
-
'get_next_object_id': 'al-objid-mcp-server',
|
|
33
|
-
// AL Dependency MCP Server
|
|
34
|
-
'analyze_dependencies': 'al-dependency-mcp-server',
|
|
35
|
-
'get_workspace_symbols': 'al-dependency-mcp-server',
|
|
36
|
-
'find_references': 'al-dependency-mcp-server',
|
|
37
|
-
// Serena MCP
|
|
38
|
-
'get_lsp_diagnostics': 'serena-mcp',
|
|
39
|
-
'format_document': 'serena-mcp',
|
|
40
|
-
'get_code_actions': 'serena-mcp',
|
|
41
|
-
// Azure DevOps MCP
|
|
42
|
-
'create_work_item': 'azure-devops-mcp',
|
|
43
|
-
'query_work_items': 'azure-devops-mcp',
|
|
44
|
-
'get_pipeline_runs': 'azure-devops-mcp',
|
|
45
|
-
// Clockify MCP
|
|
46
|
-
'track_time_entry': 'clockify-mcp',
|
|
47
|
-
'get_time_entries': 'clockify-mcp',
|
|
48
|
-
// NAB AL Tools MCP
|
|
49
|
-
'translate_xliff': 'nab-al-tools-mcp',
|
|
50
|
-
'export_translations': 'nab-al-tools-mcp'
|
|
51
|
-
};
|
|
52
|
-
export class WorkspaceTools {
|
|
53
|
-
context;
|
|
54
|
-
constructor(context) {
|
|
55
|
-
this.context = context;
|
|
56
|
-
}
|
|
57
|
-
getToolDefinitions() {
|
|
58
|
-
return [
|
|
59
|
-
{
|
|
60
|
-
name: 'set_workspace_info',
|
|
61
|
-
description: `Set workspace root directory and list of available MCP servers discovered from your tool inventory.
|
|
62
|
-
|
|
63
|
-
CRITICAL: You MUST discover available BC MCP servers by examining the tools available in your MCP context:
|
|
64
|
-
- If you see 'search_telemetry_traces' → include "bc-telemetry-buddy"
|
|
65
|
-
- If you see 'reserve_object_ids' → include "al-objid-mcp-server"
|
|
66
|
-
- If you see 'analyze_dependencies' → include "al-dependency-mcp-server"
|
|
67
|
-
- If you see 'get_lsp_diagnostics' → include "serena-mcp"
|
|
68
|
-
- If you see 'create_work_item' → include "azure-devops-mcp"
|
|
69
|
-
- If you see 'track_time_entry' → include "clockify-mcp"
|
|
70
|
-
- If you see 'translate_xliff' → include "nab-al-tools-mcp"
|
|
71
|
-
|
|
72
|
-
This enables specialists to provide ecosystem-aware recommendations and tool delegation. Call this before other tools if you need project-specific knowledge layers or ecosystem-aware guidance.`,
|
|
73
|
-
inputSchema: {
|
|
74
|
-
type: 'object',
|
|
75
|
-
properties: {
|
|
76
|
-
workspace_root: {
|
|
77
|
-
type: 'string',
|
|
78
|
-
description: 'Absolute path to the workspace/project root directory (e.g., C:/projects/my-bc-app or /home/user/projects/my-bc-app)'
|
|
79
|
-
},
|
|
80
|
-
available_mcps: {
|
|
81
|
-
type: 'array',
|
|
82
|
-
items: { type: 'string' },
|
|
83
|
-
description: 'List of MCP server IDs discovered by examining available tools in your MCP context (e.g., ["bc-telemetry-buddy", "al-objid-mcp-server"]). REQUIRED - check which tools are available and infer the MCP servers from them.'
|
|
84
|
-
}
|
|
85
|
-
},
|
|
86
|
-
required: ['workspace_root', 'available_mcps']
|
|
87
|
-
}
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
name: 'get_workspace_info',
|
|
91
|
-
description: 'Get the currently configured workspace root directory and available MCP servers, if any.',
|
|
92
|
-
inputSchema: {
|
|
93
|
-
type: 'object',
|
|
94
|
-
properties: {},
|
|
95
|
-
required: []
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
];
|
|
99
|
-
}
|
|
100
|
-
async handleToolCall(request) {
|
|
101
|
-
const { name, arguments: args } = request.params;
|
|
102
|
-
switch (name) {
|
|
103
|
-
case 'set_workspace_info':
|
|
104
|
-
return await this.handleSetWorkspaceInfo(args);
|
|
105
|
-
case 'get_workspace_info':
|
|
106
|
-
return await this.handleGetWorkspaceInfo();
|
|
107
|
-
default:
|
|
108
|
-
throw new Error(`Unknown workspace tool: ${name}`);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
async handleSetWorkspaceInfo(args) {
|
|
112
|
-
const { workspace_root, available_mcps } = args;
|
|
113
|
-
if (!workspace_root) {
|
|
114
|
-
return {
|
|
115
|
-
content: [{
|
|
116
|
-
type: 'text',
|
|
117
|
-
text: JSON.stringify({
|
|
118
|
-
success: false,
|
|
119
|
-
error: 'workspace_root is required'
|
|
120
|
-
}, null, 2)
|
|
121
|
-
}]
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
if (available_mcps === undefined) {
|
|
125
|
-
return {
|
|
126
|
-
content: [{
|
|
127
|
-
type: 'text',
|
|
128
|
-
text: JSON.stringify({
|
|
129
|
-
success: false,
|
|
130
|
-
error: 'available_mcps is required'
|
|
131
|
-
}, null, 2)
|
|
132
|
-
}]
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
// Validate and categorize MCPs
|
|
136
|
-
const knownMcps = available_mcps.filter(mcp => mcp in KNOWN_BC_MCPS);
|
|
137
|
-
const unknownMcps = available_mcps.filter(mcp => !(mcp in KNOWN_BC_MCPS));
|
|
138
|
-
const result = await this.context.setWorkspaceInfo(workspace_root, available_mcps);
|
|
139
|
-
return {
|
|
140
|
-
content: [{
|
|
141
|
-
type: 'text',
|
|
142
|
-
text: JSON.stringify({
|
|
143
|
-
success: result.success,
|
|
144
|
-
message: result.message,
|
|
145
|
-
reloaded: result.reloaded,
|
|
146
|
-
workspace_root,
|
|
147
|
-
mcp_ecosystem: {
|
|
148
|
-
total_available: available_mcps.length,
|
|
149
|
-
known_bc_mcps: knownMcps.length,
|
|
150
|
-
unknown_mcps: unknownMcps.length,
|
|
151
|
-
known: knownMcps.map(id => ({
|
|
152
|
-
id,
|
|
153
|
-
description: KNOWN_BC_MCPS[id]
|
|
154
|
-
})),
|
|
155
|
-
unknown: unknownMcps
|
|
156
|
-
}
|
|
157
|
-
}, null, 2)
|
|
158
|
-
}]
|
|
159
|
-
};
|
|
160
|
-
}
|
|
161
|
-
async handleGetWorkspaceInfo() {
|
|
162
|
-
const info = this.context.getWorkspaceInfo();
|
|
163
|
-
const knownMcps = info.available_mcps.filter(mcp => mcp in KNOWN_BC_MCPS);
|
|
164
|
-
const unknownMcps = info.available_mcps.filter(mcp => !(mcp in KNOWN_BC_MCPS));
|
|
165
|
-
return {
|
|
166
|
-
content: [{
|
|
167
|
-
type: 'text',
|
|
168
|
-
text: JSON.stringify({
|
|
169
|
-
workspace_root: info.workspace_root,
|
|
170
|
-
is_set: info.workspace_root !== null,
|
|
171
|
-
available_mcps: info.available_mcps,
|
|
172
|
-
mcp_ecosystem: {
|
|
173
|
-
total_available: info.available_mcps.length,
|
|
174
|
-
known_bc_mcps: knownMcps.map(id => ({
|
|
175
|
-
id,
|
|
176
|
-
description: KNOWN_BC_MCPS[id]
|
|
177
|
-
})),
|
|
178
|
-
unknown_mcps: unknownMcps
|
|
179
|
-
},
|
|
180
|
-
message: info.workspace_root
|
|
181
|
-
? `Workspace root: ${info.workspace_root}${info.available_mcps.length > 0 ? ` | Available MCPs: ${info.available_mcps.length}` : ''}`
|
|
182
|
-
: 'No workspace configured. Use set_workspace_info to configure project-local layers and MCP ecosystem.'
|
|
183
|
-
}, null, 2)
|
|
184
|
-
}]
|
|
185
|
-
};
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
//# sourceMappingURL=workspace-tools.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-tools.js","sourceRoot":"","sources":["../../src/tools/workspace-tools.ts"],"names":[],"mappings":"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"}
|